on main help sign in
chore(golden): rerecord vhs
commit651abb48aecf6a46e0557dd69d0ad1f399b2de9e authorKieran Klukas <kieran@dunkirk.sh> dateTue 12 May 2026, 10:50 (5 months ago) parentefb3b03
13 files changed+3233−4054
internal/agent/testdata/TestCoderAgent/glm-5.1/bash_tool.yaml+261−503 internal/agent/testdata/TestCoderAgent/glm-5.1/download_tool.yaml+145−125 internal/agent/testdata/TestCoderAgent/glm-5.1/fetch_tool.yaml+309−228 internal/agent/testdata/TestCoderAgent/glm-5.1/glob_tool.yaml+129−107 internal/agent/testdata/TestCoderAgent/glm-5.1/grep_tool.yaml+163−157 internal/agent/testdata/TestCoderAgent/glm-5.1/ls_tool.yaml+173−119 internal/agent/testdata/TestCoderAgent/glm-5.1/multiedit_tool.yaml+541−749 internal/agent/testdata/TestCoderAgent/glm-5.1/parallel_tool_calls.yaml+183−395 internal/agent/testdata/TestCoderAgent/glm-5.1/read_a_file.yaml+243−111 internal/agent/testdata/TestCoderAgent/glm-5.1/simple_test.yaml+64−258 internal/agent/testdata/TestCoderAgent/glm-5.1/sourcegraph_tool.yaml+526−814 internal/agent/testdata/TestCoderAgent/glm-5.1/update_a_file.yaml+326−264 internal/agent/testdata/TestCoderAgent/glm-5.1/write_tool.yaml+170−224
internal/agent/testdata/TestCoderAgent/glm-5.1/bash_tool.yaml+261−503
@@ -25,653 +25,465 @@ interactions:
2525 content_length: -1
2626 uncompressed: true
2727 body: |+
28− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
2929
30− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"User"},"finish_reason":null}]}
3131
32− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" wants"},"finish_reason":null}]}
3333
34− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
3535
36− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summar"},"finish_reason":null}]}
3737
38− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"izing"},"finish_reason":null}]}
3939
40− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
4141
42− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
4343
44− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
4545
46− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" bash"},"finish_reason":null}]}
4747
48− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
4949
50− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
50+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" create"},"finish_reason":null}]}
5151
52− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
52+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
5353
54− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":\n\n"},"finish_reason":null}]}
54+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
5555
56− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
56+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" named"},"finish_reason":null}]}
5757
58− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" bash"},"finish_reason":null}]}
58+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" test"},"finish_reason":null}]}
5959
60− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ..."},"finish_reason":null}]}
60+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
6161
62− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
62+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
6363
64− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" They"},"finish_reason":null}]}
64+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
6565
66− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" want"},"finish_reason":null}]}
66+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
6767
68− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
68+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"hello"},"finish_reason":null}]}
6969
70− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
70+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" bash"},"finish_reason":null}]}
7171
72− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summar"},"finish_reason":null}]}
72+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'."},"finish_reason":null}]}
7373
74− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"izing"},"finish_reason":null}]}
74+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" do"},"finish_reason":null}]}
7575
76− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
76+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" not"},"finish_reason":null}]}
7777
78− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Must"},"finish_reason":null}]}
78+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" print"},"finish_reason":null}]}
7979
80− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
80+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" its"},"finish_reason":null}]}
8181
82− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c="},"finish_reason":null}]}
82+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" timestamp"},"finish_reason":null}]}
8383
84− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
84+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
8585
86− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
86+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Should"},"finish_reason":null}]}
8787
88− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
88+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
8989
90− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
90+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
9191
92− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
92+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
9393
94− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
94+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ≤"},"finish_reason":null}]}
9595
96− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
96+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
9797
98− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
98+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
9999
100− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
100+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
101101
102− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
102+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
103103
104− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
104+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
105105
106− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
106+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
107107
108− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Should"},"finish_reason":null}]}
108+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
109109
110− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
110+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
111111
112− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
112+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"/"},"finish_reason":null}]}
113113
114− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
114+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"col"},"finish_reason":null}]}
115115
116− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
116+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
117117
118− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
118+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
119119
120− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
120+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
121121
122− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
122+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
123123
124− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
124+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" English"},"finish_reason":null}]}
125125
126− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
126+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
127127
128− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
128+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Maybe"},"finish_reason":null}]}
129129
130− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Create"},"finish_reason":null}]}
130+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
131131
132− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" test"},"finish_reason":null}]}
132+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"B"},"finish_reason":null}]}
133133
134− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
134+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ash"},"finish_reason":null}]}
135135
136− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
136+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" create"},"finish_reason":null}]}
137137
138− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" hello"},"finish_reason":null}]}
138+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" test"},"finish_reason":null}]}
139139
140− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" bash"},"finish_reason":null}]}
140+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
141141
142− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" using"},"finish_reason":null}]}
142+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
143143
144− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" bash"},"finish_reason":null}]}
144+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" hello"},"finish_reason":null}]}
145145
146− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
146+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" bash"},"finish_reason":null}]}
147147
148− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
148+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
149149
150− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
150+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
151151
152− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
152+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
153153
154− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" maybe"},"finish_reason":null}]}
154+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
155155
156− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
156+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
157157
158− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"44"},"finish_reason":null}]}
158+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
159159
160− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
160+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"B"},"finish_reason":null}]}
161161
162− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
162+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ash"},"finish_reason":null}]}
163163
164− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
164+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" create"},"finish_reason":null}]}
165165
166− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
166+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" test"},"finish_reason":null}]}
167167
168− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
168+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
169169
170− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Create"},"finish_reason":null}]}
170+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
171171
172− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" test"},"finish_reason":null}]}
172+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" hello"},"finish_reason":null}]}
173173
174− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
174+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" bash"},"finish_reason":null}]}
175175
176− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
176+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
177177
178− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" hello"},"finish_reason":null}]}
178+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
179179
180− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" bash"},"finish_reason":null}]}
180+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
181181
182− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" using"},"finish_reason":null}]}
182+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" let's"},"finish_reason":null}]}
183183
184− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" bash"},"finish_reason":null}]}
184+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
185185
186− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
186+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
187187
188− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
188+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Bash"},"finish_reason":null}]}
189189
190− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
190+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
191191
192− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"41"},"finish_reason":null}]}
192+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
193193
194− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
194+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
195195
196− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" including"},"finish_reason":null}]}
196+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" +"},"finish_reason":null}]}
197197
198− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" spaces"},"finish_reason":null}]}
198+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
199199
200− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"?"},"finish_reason":null}]}
200+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
201201
202− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
202+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
203203
204− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
204+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" =\u003e"},"finish_reason":null}]}
205205
206− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
206+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
207207
208− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" C"},"finish_reason":null}]}
208+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
209209
210− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
210+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" create"},"finish_reason":null}]}
211211
212− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
212+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
213213
214− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
214+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
215215
216− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"r"},"finish_reason":null}]}
216+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
217217
218− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
218+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" =\u003e"},"finish_reason":null}]}
219219
220− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
220+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
221221
222− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
222+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
223223
224− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"a"},"finish_reason":null}]}
224+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
225225
226− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
226+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
227227
228− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
228+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"12"},"finish_reason":null}]}
229229
230− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
230+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
231231
232− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
232+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" test"},"finish_reason":null}]}
233233
234− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
234+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
235235
236− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
236+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
237237
238− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
238+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"8"},"finish_reason":null}]}
239239
240− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
240+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
241241
242− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
242+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" =\u003e"},"finish_reason":null}]}
243243
244− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" t"},"finish_reason":null}]}
244+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"20"},"finish_reason":null}]}
245245
246− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"8"},"finish_reason":null}]}
246+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
247247
248− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
248+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
249249
250− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"9"},"finish_reason":null}]}
250+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
251251
252− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"s"},"finish_reason":null}]}
252+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"21"},"finish_reason":null}]}
253253
254− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"10"},"finish_reason":null}]}
254+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
255255
256− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
256+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
257257
258− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
258+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
259259
260− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
260+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
261261
262− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"12"},"finish_reason":null}]}
262+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")=\u003e"},"finish_reason":null}]}
263263
264− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
264+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"25"},"finish_reason":null}]}
265265
266− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"13"},"finish_reason":null}]}
266+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
267267
268− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"x"},"finish_reason":null}]}
268+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
269269
270− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"14"},"finish_reason":null}]}
270+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
271271
272− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
272+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"26"},"finish_reason":null}]}
273273
274− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"15"},"finish_reason":null}]}
274+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
275275
276− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
276+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" hello"},"finish_reason":null}]}
277277
278− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
278+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
279279
280− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"16"},"finish_reason":null}]}
280+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
281281
282− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
282+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")=\u003e"},"finish_reason":null}]}
283283
284− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"w"},"finish_reason":null}]}
284+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"31"},"finish_reason":null}]}
285285
286− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"17"},"finish_reason":null}]}
286+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
287287
288− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"i"},"finish_reason":null}]}
288+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
289289
290− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
290+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
291291
292− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
292+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"32"},"finish_reason":null}]}
293293
294− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"19"},"finish_reason":null}]}
294+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
295295
296− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"h"},"finish_reason":null}]}
296+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" bash"},"finish_reason":null}]}
297297
298− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"20"},"finish_reason":null}]}
298+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
299299
300− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
300+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
301301
302− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
302+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")=\u003e"},"finish_reason":null}]}
303303
304− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"21"},"finish_reason":null}]}
304+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"36"},"finish_reason":null}]}
305305
306− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
306+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
307307
308− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"h"},"finish_reason":null}]}
308+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
309309
310− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"22"},"finish_reason":null}]}
310+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
311311
312− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
312+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"37"},"finish_reason":null}]}
313313
314− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"23"},"finish_reason":null}]}
314+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
315315
316− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"l"},"finish_reason":null}]}
316+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
317317
318− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"24"},"finish_reason":null}]}
318+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
319319
320− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"l"},"finish_reason":null}]}
320+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
321321
322− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"25"},"finish_reason":null}]}
322+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")=\u003e"},"finish_reason":null}]}
323323
324− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"o"},"finish_reason":null}]}
324+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"44"},"finish_reason":null}]}
325325
326− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"26"},"finish_reason":null}]}
326+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
327327
328− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
328+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
329329
330− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
330+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
331331
332− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"27"},"finish_reason":null}]}
332+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"44"},"finish_reason":null}]}
333333
334− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")b"},"finish_reason":null}]}
334+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
335335
336− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"28"},"finish_reason":null}]}
336+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
337337
338− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"a"},"finish_reason":null}]}
338+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" okay"},"finish_reason":null}]}
339339
340− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"29"},"finish_reason":null}]}
340+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
341341
342− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"s"},"finish_reason":null}]}
342+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" No"},"finish_reason":null}]}
343343
344− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"30"},"finish_reason":null}]}
344+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
345345
346− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"h"},"finish_reason":null}]}
346+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
347347
348− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"31"},"finish_reason":null}]}
348+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
349349
350− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
350+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
351351
352− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
352+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"B"},"finish_reason":null}]}
353353
354− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"32"},"finish_reason":null}]}
354+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"ash"},"finish_reason":null}]}
355355
356− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
356+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" create"},"finish_reason":null}]}
357357
358− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"u"},"finish_reason":null}]}
358+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" test"},"finish_reason":null}]}
359359
360− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"33"},"finish_reason":null}]}
360+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".txt"},"finish_reason":null}]}
361361
362− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"s"},"finish_reason":null}]}
362+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" with"},"finish_reason":null}]}
363363
364− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
364+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" hello"},"finish_reason":null}]}
365365
366− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"i"},"finish_reason":null}]}
366+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" bash"},"finish_reason":null}]}
367367
368− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"35"},"finish_reason":null}]}
368+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" content"},"finish_reason":null}]}
369369
370− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"n"},"finish_reason":null}]}
370+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
371371
372− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"36"},"finish_reason":null}]}
372+ data: {"id":"chatcmpl-faa1080788595f33fa9510f3","object":"chat.completion.chunk","created":1778597310,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":31,"completion_tokens":180,"total_tokens":403,"prompt_tokens_details":{"cached_tokens":192}}}
373373
374− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"g"},"finish_reason":null}]}
375−
376− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"37"},"finish_reason":null}]}
377−
378− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
379−
380− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
381−
382− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"38"},"finish_reason":null}]}
383−
384− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")b"},"finish_reason":null}]}
385−
386− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"39"},"finish_reason":null}]}
387−
388− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"a"},"finish_reason":null}]}
389−
390− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"40"},"finish_reason":null}]}
391−
392− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"s"},"finish_reason":null}]}
393−
394− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"41"},"finish_reason":null}]}
395−
396− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"h"},"finish_reason":null}]}
397−
398− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"42"},"finish_reason":null}]}
399−
400− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
401−
402− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
403−
404− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
405−
406− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"42"},"finish_reason":null}]}
407−
408− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
409−
410− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
411−
412− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" okay"},"finish_reason":null}]}
413−
414− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
415−
416− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Alternatively"},"finish_reason":null}]}
417−
418− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
419−
420− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"B"},"finish_reason":null}]}
421−
422− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ash"},"finish_reason":null}]}
423−
424− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" command"},"finish_reason":null}]}
425−
426− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
427−
428− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" create"},"finish_reason":null}]}
429−
430− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" test"},"finish_reason":null}]}
431−
432− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
433−
434− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
435−
436− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" hello"},"finish_reason":null}]}
437−
438− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
439−
440− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
441−
442− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
443−
444− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" B"},"finish_reason":null}]}
445−
446− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
447−
448− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
449−
450− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")a"},"finish_reason":null}]}
451−
452− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
453−
454− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"s"},"finish_reason":null}]}
455−
456− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
457−
458− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"h"},"finish_reason":null}]}
459−
460− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
461−
462− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
463−
464− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
465−
466− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
467−
468− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")c"},"finish_reason":null}]}
469−
470− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
471−
472− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"o"},"finish_reason":null}]}
473−
474− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
475−
476− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"m"},"finish_reason":null}]}
477−
478− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"8"},"finish_reason":null}]}
479−
480− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"m"},"finish_reason":null}]}
481−
482− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"9"},"finish_reason":null}]}
483−
484− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"a"},"finish_reason":null}]}
485−
486− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"10"},"finish_reason":null}]}
487−
488− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"n"},"finish_reason":null}]}
489−
490− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
491−
492− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"d"},"finish_reason":null}]}
493−
494− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"12"},"finish_reason":null}]}
495−
496− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
497−
498− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
499−
500− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"13"},"finish_reason":null}]}
501−
502− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")t"},"finish_reason":null}]}
503−
504− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"14"},"finish_reason":null}]}
505−
506− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"o"},"finish_reason":null}]}
507−
508− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"15"},"finish_reason":null}]}
509−
510− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
511−
512− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
513−
514− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"16"},"finish_reason":null}]}
515−
516− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")c"},"finish_reason":null}]}
517−
518− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"17"},"finish_reason":null}]}
519−
520− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"r"},"finish_reason":null}]}
521−
522− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
523−
524− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
525−
526− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"19"},"finish_reason":null}]}
527−
528− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"a"},"finish_reason":null}]}
529−
530− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"20"},"finish_reason":null}]}
531−
532− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
533−
534− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"21"},"finish_reason":null}]}
535−
536− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
537−
538− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"22"},"finish_reason":null}]}
539−
540− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
541−
542− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
543−
544− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"23"},"finish_reason":null}]}
545−
546− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")t"},"finish_reason":null}]}
547−
548− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"24"},"finish_reason":null}]}
549−
550− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
551−
552− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"25"},"finish_reason":null}]}
553−
554− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"s"},"finish_reason":null}]}
555−
556− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"26"},"finish_reason":null}]}
557−
558− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
559−
560− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"27"},"finish_reason":null}]}
561−
562− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
563−
564− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"28"},"finish_reason":null}]}
565−
566− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
567−
568− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"29"},"finish_reason":null}]}
569−
570− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"x"},"finish_reason":null}]}
571−
572− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"30"},"finish_reason":null}]}
573−
574− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
575−
576− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"31"},"finish_reason":null}]}
577−
578− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
579−
580− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
581−
582− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"32"},"finish_reason":null}]}
583−
584− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
585−
586− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"w"},"finish_reason":null}]}
587−
588− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"33"},"finish_reason":null}]}
589−
590− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"i"},"finish_reason":null}]}
591−
592− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
374+ data: [DONE]
593375
594− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
376+ headers:
377+ Content-Type:
378+ - text/event-stream
379+ status: 200 OK
380+ code: 200
381+ duration: 894.7825ms
382+- id: 1
383+ request:
384+ proto: HTTP/1.1
385+ proto_major: 1
386+ proto_minor: 1
387+ content_length: 33684
388+ host: ""
389+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
390+ headers:
391+ Accept:
392+ - application/json
393+ Content-Type:
394+ - application/json
395+ User-Agent:
396+ - Charm-Crush/devel (https://charm.land/crush)
397+ url: https://hyper.charm.land/v1/chat/completions
398+ method: POST
399+ response:
400+ proto: HTTP/2.0
401+ proto_major: 2
402+ proto_minor: 0
403+ content_length: -1
404+ uncompressed: true
405+ body: |+
406+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
595407
596− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"35"},"finish_reason":null}]}
408+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"Create"},"finish_reason":null}]}
597409
598− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"h"},"finish_reason":null}]}
410+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
599411
600− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"36"},"finish_reason":null}]}
412+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" file with"},"finish_reason":null}]}
601413
602− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
414+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" echo"},"finish_reason":null}]}
603415
604− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
416+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
605417
606− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"37"},"finish_reason":null}]}
418+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" suppress"},"finish_reason":null}]}
607419
608− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
420+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" timestamp"},"finish_reason":null}]}
609421
610− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"h"},"finish_reason":null}]}
422+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" printing"},"finish_reason":null}]}
611423
612− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"38"},"finish_reason":null}]}
424+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
613425
614− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
426+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_b10ffb78b6e844ce91c60f38","type":"function","index":0,"function":{"name":"bash","arguments":""}}]},"finish_reason":null}]}
615427
616− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"39"},"finish_reason":null}]}
428+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":""}}]},"finish_reason":null}]}
617429
618− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"l"},"finish_reason":null}]}
430+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
619431
620− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"40"},"finish_reason":null}]}
432+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"command\": "}}]},"finish_reason":null}]}
621433
622− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"l"},"finish_reason":null}]}
434+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"printf"}}]},"finish_reason":null}]}
623435
624− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"41"},"finish_reason":null}]}
436+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" '%"}}]},"finish_reason":null}]}
625437
626− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"o"},"finish_reason":null}]}
438+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"s' '"}}]},"finish_reason":null}]}
627439
628− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"42"},"finish_reason":null}]}
440+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"hello bash"}}]},"finish_reason":null}]}
629441
630− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
442+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"' \u003e /"}}]},"finish_reason":null}]}
631443
632− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
444+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"tmp"}}]},"finish_reason":null}]}
633445
634− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
446+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/c"}}]},"finish_reason":null}]}
635447
636− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"42"},"finish_reason":null}]}
448+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush"}}]},"finish_reason":null}]}
637449
638− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" as"},"finish_reason":null}]}
450+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-test"}}]},"finish_reason":null}]}
639451
640− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" well"},"finish_reason":null}]}
452+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/Test"}}]},"finish_reason":null}]}
641453
642− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
454+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Coder"}}]},"finish_reason":null}]}
643455
644− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"I'll"},"finish_reason":null}]}
456+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Agent"}}]},"finish_reason":null}]}
645457
646− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" output"},"finish_reason":null}]}
458+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/glm"}}]},"finish_reason":null}]}
647459
648− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
460+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-5"}}]},"finish_reason":null}]}
649461
650− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
462+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".1/bash"}}]},"finish_reason":null}]}
651463
652− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
464+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_tool"}}]},"finish_reason":null}]}
653465
654− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
466+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/test.txt"}}]},"finish_reason":null}]}
655467
656− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Create"},"finish_reason":null}]}
468+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\", "}}]},"finish_reason":null}]}
657469
658− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" test"},"finish_reason":null}]}
470+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"description\": "}}]},"finish_reason":null}]}
659471
660− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".txt"},"finish_reason":null}]}
472+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"Create test"}}]},"finish_reason":null}]}
661473
662− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" with"},"finish_reason":null}]}
474+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".txt with"}}]},"finish_reason":null}]}
663475
664− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" hello"},"finish_reason":null}]}
476+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" content '"}}]},"finish_reason":null}]}
665477
666− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" bash"},"finish_reason":null}]}
478+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"hello bash"}}]},"finish_reason":null}]}
667479
668− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" using"},"finish_reason":null}]}
480+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"'\""}}]},"finish_reason":null}]}
669481
670− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" bash"},"finish_reason":null}]}
482+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
671483
672− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
484+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
673485
674− data: {"id":"chatcmpl-650a484f7e728d276d8dcf52","object":"chat.completion.chunk","created":1778531330,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":159,"completion_tokens":331,"total_tokens":554,"prompt_tokens_details":{"cached_tokens":64}}}
486+ data: {"id":"chatcmpl-53fb4d1a2d0399cfc29f411b","object":"chat.completion.chunk","created":1778597313,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":711,"completion_tokens":61,"total_tokens":7812,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":10}}}
675487
676488 data: [DONE]
677489
@@ -680,15 +492,15 @@ interactions:
680492 - text/event-stream
681493 status: 200 OK
682494 code: 200
683− duration: 673.269083ms
684−- id: 1
495+ duration: 4.316007375s
496+- id: 2
685497 request:
686498 proto: HTTP/1.1
687499 proto_major: 1
688500 proto_minor: 1
689− content_length: 33702
501+ content_length: 34150
690502 host: ""
691− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
503+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_b10ffb78b6e844ce91c60f38\",\"function\":{\"arguments\":\"{\\\"command\\\": \\\"printf '%s' '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\",\"reasoning_content\":\"Create a file with echo and suppress timestamp printing.\"},{\"content\":\"no output\",\"tool_call_id\":\"call_b10ffb78b6e844ce91c60f38\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
692504 headers:
693505 Accept:
694506 - application/json
@@ -705,81 +517,27 @@ interactions:
705517 content_length: -1
706518 uncompressed: true
707519 body: |+
708− data: {"id":"chatcmpl-1081c0a55b263b53ea093783","object":"chat.completion.chunk","created":1778531333,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
709−
710− data: {"id":"chatcmpl-1081c0a55b263b53ea093783","object":"chat.completion.chunk","created":1778531333,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"Simple"},"finish_reason":null}]}
711−
712− data: {"id":"chatcmpl-1081c0a55b263b53ea093783","object":"chat.completion.chunk","created":1778531333,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" task"},"finish_reason":null}]}
713−
714− data: {"id":"chatcmpl-1081c0a55b263b53ea093783","object":"chat.completion.chunk","created":1778531333,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" -"},"finish_reason":null}]}
715−
716− data: {"id":"chatcmpl-1081c0a55b263b53ea093783","object":"chat.completion.chunk","created":1778531333,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" create"},"finish_reason":null}]}
717−
718− data: {"id":"chatcmpl-1081c0a55b263b53ea093783","object":"chat.completion.chunk","created":1778531333,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
719−
720− data: {"id":"chatcmpl-1081c0a55b263b53ea093783","object":"chat.completion.chunk","created":1778531333,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
721−
722− data: {"id":"chatcmpl-1081c0a55b263b53ea093783","object":"chat.completion.chunk","created":1778531333,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
520+ data: {"id":"chatcmpl-666738f4afd28160e089b9b7","object":"chat.completion.chunk","created":1778597325,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
723521
724− data: {"id":"chatcmpl-1081c0a55b263b53ea093783","object":"chat.completion.chunk","created":1778531333,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" specific"},"finish_reason":null}]}
522+ data: {"id":"chatcmpl-666738f4afd28160e089b9b7","object":"chat.completion.chunk","created":1778597325,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Done"},"finish_reason":null}]}
725523
726− data: {"id":"chatcmpl-1081c0a55b263b53ea093783","object":"chat.completion.chunk","created":1778531333,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
524+ data: {"id":"chatcmpl-666738f4afd28160e089b9b7","object":"chat.completion.chunk","created":1778597325,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":". Created"},"finish_reason":null}]}
727525
728− data: {"id":"chatcmpl-1081c0a55b263b53ea093783","object":"chat.completion.chunk","created":1778531333,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" using"},"finish_reason":null}]}
526+ data: {"id":"chatcmpl-666738f4afd28160e089b9b7","object":"chat.completion.chunk","created":1778597325,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `test"},"finish_reason":null}]}
729527
730− data: {"id":"chatcmpl-1081c0a55b263b53ea093783","object":"chat.completion.chunk","created":1778531333,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" bash"},"finish_reason":null}]}
528+ data: {"id":"chatcmpl-666738f4afd28160e089b9b7","object":"chat.completion.chunk","created":1778597325,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".txt"},"finish_reason":null}]}
731529
732− data: {"id":"chatcmpl-1081c0a55b263b53ea093783","object":"chat.completion.chunk","created":1778531333,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
530+ data: {"id":"chatcmpl-666738f4afd28160e089b9b7","object":"chat.completion.chunk","created":1778597325,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` with content"},"finish_reason":null}]}
733531
734− data: {"id":"chatcmpl-1081c0a55b263b53ea093783","object":"chat.completion.chunk","created":1778531333,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_7f2241cfbe924278a12d1b36","type":"function","index":0,"function":{"name":"bash","arguments":""}}]},"finish_reason":null}]}
735−
736− data: {"id":"chatcmpl-1081c0a55b263b53ea093783","object":"chat.completion.chunk","created":1778531333,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"command\":\"printf 'hello bash' \u003e /tmp/crush-test/TestCoderAgent/glm-5.1/bash_tool/test.txt\",\"description\":\"Create test.txt with content\"}"}}]},"finish_reason":null}]}
737−
738− data: {"id":"chatcmpl-1081c0a55b263b53ea093783","object":"chat.completion.chunk","created":1778531333,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
739−
740− data: {"id":"chatcmpl-1081c0a55b263b53ea093783","object":"chat.completion.chunk","created":1778531333,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":709,"completion_tokens":56,"total_tokens":7805,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":12}}}
741−
742− data: [DONE]
743−
744− headers:
745− Content-Type:
746− - text/event-stream
747− status: 200 OK
748− code: 200
749− duration: 4.460808291s
750−- id: 2
751− request:
752− proto: HTTP/1.1
753− proto_major: 1
754− proto_minor: 1
755− content_length: 34152
756− host: ""
757− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_7f2241cfbe924278a12d1b36\",\"function\":{\"arguments\":\"{\\\"command\\\":\\\"printf 'hello bash' > /tmp/crush-test/TestCoderAgent/glm-5.1/bash_tool/test.txt\\\",\\\"description\\\":\\\"Create test.txt with content\\\"}\",\"name\":\"bash\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"Simple task - create a file with specific content using bash.\"},{\"content\":\"no output\",\"tool_call_id\":\"call_7f2241cfbe924278a12d1b36\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
758− headers:
759− Accept:
760− - application/json
761− Content-Type:
762− - application/json
763− User-Agent:
764− - Charm-Crush/devel (https://charm.land/crush)
765− url: https://hyper.charm.land/v1/chat/completions
766− method: POST
767− response:
768− proto: HTTP/2.0
769− proto_major: 2
770− proto_minor: 0
771− content_length: -1
772− uncompressed: true
773− body: |+
774− data: {"id":"chatcmpl-f4248787fc756107ff1b9951","object":"chat.completion.chunk","created":1778531337,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
532+ data: {"id":"chatcmpl-666738f4afd28160e089b9b7","object":"chat.completion.chunk","created":1778597325,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
775533
776− data: {"id":"chatcmpl-f4248787fc756107ff1b9951","object":"chat.completion.chunk","created":1778531337,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Done"},"finish_reason":null}]}
534+ data: {"id":"chatcmpl-666738f4afd28160e089b9b7","object":"chat.completion.chunk","created":1778597325,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"hello bash"},"finish_reason":null}]}
777535
778− data: {"id":"chatcmpl-f4248787fc756107ff1b9951","object":"chat.completion.chunk","created":1778531337,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"."},"finish_reason":null}]}
536+ data: {"id":"chatcmpl-666738f4afd28160e089b9b7","object":"chat.completion.chunk","created":1778597325,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`."},"finish_reason":null}]}
779537
780− data: {"id":"chatcmpl-f4248787fc756107ff1b9951","object":"chat.completion.chunk","created":1778531337,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
538+ data: {"id":"chatcmpl-666738f4afd28160e089b9b7","object":"chat.completion.chunk","created":1778597325,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
781539
782− data: {"id":"chatcmpl-f4248787fc756107ff1b9951","object":"chat.completion.chunk","created":1778531337,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":55,"completion_tokens":4,"total_tokens":7803,"prompt_tokens_details":{"cached_tokens":7744}}}
540+ data: {"id":"chatcmpl-666738f4afd28160e089b9b7","object":"chat.completion.chunk","created":1778597325,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":768,"completion_tokens":15,"total_tokens":7823,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":14}}}
783541
784542 data: [DONE]
785543
@@ -788,4 +546,4 @@ interactions:
788546 - text/event-stream
789547 status: 200 OK
790548 code: 200
791− duration: 3.593616667s
549+ duration: 10.298101916s
internal/agent/testdata/TestCoderAgent/glm-5.1/download_tool.yaml+145−125
@@ -25,149 +25,151 @@ interactions:
2525 content_length: -1
2626 uncompressed: true
2727 body: |+
28− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
2929
30− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"User"},"finish_reason":null}]}
3131
32− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" wants"},"finish_reason":null}]}
3333
34− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" asks"},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
3535
36− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
3737
38− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
3939
40− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summar"},"finish_reason":null}]}
4141
42− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ising"},"finish_reason":null}]}
4343
44− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
4545
46− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" request"},"finish_reason":null}]}
4747
48− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
4949
50− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
50+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" download"},"finish_reason":null}]}
5151
52− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
52+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
5353
54− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
54+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
5555
56− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
56+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
5757
58− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" download"},"finish_reason":null}]}
58+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
5959
60− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
60+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" URL"},"finish_reason":null}]}
6161
62− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
62+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
6363
64− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
64+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" save"},"finish_reason":null}]}
6565
66− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" https"},"finish_reason":null}]}
66+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" as"},"finish_reason":null}]}
6767
68− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"://"},"finish_reason":null}]}
68+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" example"},"finish_reason":null}]}
6969
70− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"example"},"finish_reason":null}]}
70+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
7171
72− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"-files"},"finish_reason":null}]}
72+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
7373
74− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".online"},"finish_reason":null}]}
74+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
7575
76− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"-con"},"finish_reason":null}]}
76+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c="},"finish_reason":null}]}
7777
78− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"vert"},"finish_reason":null}]}
78+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
7979
80− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".com"},"finish_reason":null}]}
80+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
8181
82− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"/document"},"finish_reason":null}]}
82+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
8383
84− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"/t"},"finish_reason":null}]}
84+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
8585
86− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"xt"},"finish_reason":null}]}
86+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
8787
88− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"/example"},"finish_reason":null}]}
88+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
8989
90− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
90+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
9191
92− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
92+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
9393
94− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" save"},"finish_reason":null}]}
94+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
9595
96− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" it"},"finish_reason":null}]}
96+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Possible"},"finish_reason":null}]}
9797
98− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" as"},"finish_reason":null}]}
98+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
9999
100− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" example"},"finish_reason":null}]}
100+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
101101
102− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
102+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Download"},"finish_reason":null}]}
103103
104− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
104+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
105105
106− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
106+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" save"},"finish_reason":null}]}
107107
108− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
108+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" example"},"finish_reason":null}]}
109109
110− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summar"},"finish_reason":null}]}
110+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
111111
112− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"izing"},"finish_reason":null}]}
112+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
113113
114− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
114+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" URL"},"finish_reason":null}]}
115115
116− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
116+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\n\n"},"finish_reason":null}]}
117117
118− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
118+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Count"},"finish_reason":null}]}
119119
120− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Download"},"finish_reason":null}]}
120+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" length"},"finish_reason":null}]}
121121
122− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
122+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
123123
124− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" save"},"finish_reason":null}]}
124+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
125125
126− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" example"},"finish_reason":null}]}
126+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Download"},"finish_reason":null}]}
127127
128− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
128+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
129129
130− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
130+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" save"},"finish_reason":null}]}
131131
132− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" No"},"finish_reason":null}]}
132+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" example"},"finish_reason":null}]}
133133
134− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
134+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
135135
136− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
136+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
137137
138− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
138+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" URL"},"finish_reason":null}]}
139139
140− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
140+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
141141
142− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
142+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
143143
144− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
144+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
145145
146− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
146+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"38"},"finish_reason":null}]}
147147
148− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That"},"finish_reason":null}]}
148+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
149149
150− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" works"},"finish_reason":null}]}
150+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
151151
152− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
152+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
153153
154− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Download"},"finish_reason":null}]}
154+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
155155
156− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" and"},"finish_reason":null}]}
156+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Download"},"finish_reason":null}]}
157157
158− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" save"},"finish_reason":null}]}
158+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" and"},"finish_reason":null}]}
159159
160− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" example"},"finish_reason":null}]}
160+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" save"},"finish_reason":null}]}
161161
162− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".txt"},"finish_reason":null}]}
162+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" example"},"finish_reason":null}]}
163163
164− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" from"},"finish_reason":null}]}
164+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".txt"},"finish_reason":null}]}
165165
166− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" URL"},"finish_reason":null}]}
166+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" from"},"finish_reason":null}]}
167167
168− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
168+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" URL"},"finish_reason":null}]}
169169
170− data: {"id":"chatcmpl-034ba4e14fa916b947290ce3","object":"chat.completion.chunk","created":1778531338,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":34,"completion_tokens":79,"total_tokens":305,"prompt_tokens_details":{"cached_tokens":192}}}
170+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
171+
172+ data: {"id":"chatcmpl-bd9d5eec2073c3b874b87534","object":"chat.completion.chunk","created":1778597326,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":34,"completion_tokens":80,"total_tokens":306,"prompt_tokens_details":{"cached_tokens":192}}}
171173
172174 data: [DONE]
173175
@@ -176,15 +178,15 @@ interactions:
176178 - text/event-stream
177179 status: 200 OK
178180 code: 200
179− duration: 729.058542ms
181+ duration: 650.606625ms
180182- id: 1
181183 request:
182184 proto: HTTP/1.1
183185 proto_major: 1
184186 proto_minor: 1
185− content_length: 33727
187+ content_length: 33709
186188 host: ""
187− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
188190 headers:
189191 Accept:
190192 - application/json
@@ -201,51 +203,81 @@ interactions:
201203 content_length: -1
202204 uncompressed: true
203205 body: |+
204− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
206+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
207+
208+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
209+
210+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
211+
212+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" wants me"},"finish_reason":null}]}
213+
214+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" to download a"},"finish_reason":null}]}
215+
216+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" file from"},"finish_reason":null}]}
217+
218+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" a URL and"},"finish_reason":null}]}
219+
220+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" save it"},"finish_reason":null}]}
221+
222+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" as"},"finish_reason":null}]}
223+
224+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" example.txt"},"finish_reason":null}]}
225+
226+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":". I"},"finish_reason":null}]}
205227
206− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
228+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"'ll"},"finish_reason":null}]}
207229
208− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
230+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" use the download"},"finish_reason":null}]}
209231
210− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" wants"},"finish_reason":null}]}
232+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" tool."},"finish_reason":null}]}
211233
212− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" me"},"finish_reason":null}]}
234+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_e0dedf0a68a44c4b82324ef5","type":"function","index":0,"function":{"name":"download","arguments":""}}]},"finish_reason":null}]}
213235
214− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
236+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":""}}]},"finish_reason":null}]}
215237
216− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" download"},"finish_reason":null}]}
238+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
217239
218− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
240+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"file_path\": \"/tmp/c"}}]},"finish_reason":null}]}
219241
220− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
242+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush-test"}}]},"finish_reason":null}]}
221243
222− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
244+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/Test"}}]},"finish_reason":null}]}
223245
224− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
246+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Coder"}}]},"finish_reason":null}]}
225247
226− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" URL"},"finish_reason":null}]}
248+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Agent"}}]},"finish_reason":null}]}
227249
228− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
250+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/glm"}}]},"finish_reason":null}]}
229251
230− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" save"},"finish_reason":null}]}
252+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-5"}}]},"finish_reason":null}]}
231253
232− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" it"},"finish_reason":null}]}
254+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"."}}]},"finish_reason":null}]}
233255
234− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" as"},"finish_reason":null}]}
256+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"1/download_tool"}}]},"finish_reason":null}]}
235257
236− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" example"},"finish_reason":null}]}
258+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/example.txt\""}}]},"finish_reason":null}]}
237259
238− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":".txt"},"finish_reason":null}]}
260+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":", \"url\": "}}]},"finish_reason":null}]}
239261
240− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
262+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"https://example"}}]},"finish_reason":null}]}
241263
242− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_69fca2f9cfa648fe9f3931ac","type":"function","index":0,"function":{"name":"download","arguments":""}}]},"finish_reason":null}]}
264+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-files"}}]},"finish_reason":null}]}
243265
244− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"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\"}"}}]},"finish_reason":null}]}
266+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".online-"}}]},"finish_reason":null}]}
245267
246− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
268+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"convert.com/document"}}]},"finish_reason":null}]}
247269
248− data: {"id":"chatcmpl-499e2503229da3d88b9c022a","object":"chat.completion.chunk","created":1778531342,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":712,"completion_tokens":64,"total_tokens":7816,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":18}}}
270+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/t"}}]},"finish_reason":null}]}
271+
272+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"xt/example"}}]},"finish_reason":null}]}
273+
274+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".txt\""}}]},"finish_reason":null}]}
275+
276+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
277+
278+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
279+
280+ data: {"id":"chatcmpl-2f5df543a92ea1ec4fec95f9","object":"chat.completion.chunk","created":1778597330,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":7754,"completion_tokens":71,"total_tokens":7825,"completion_tokens_details":{"reasoning_tokens":25}}}
249281
250282 data: [DONE]
251283
@@ -254,7 +286,7 @@ interactions:
254286 - text/event-stream
255287 status: 200 OK
256288 code: 200
257− duration: 4.592158791s
289+ duration: 3.815614s
258290- id: 2
259291 request:
260292 proto: HTTP/1.1
@@ -300,15 +332,15 @@ interactions:
300332 - text/plain; charset=UTF-8
301333 status: 200 OK
302334 code: 200
303− duration: 1.478046333s
335+ duration: 1.644283791s
304336- id: 3
305337 request:
306338 proto: HTTP/1.1
307339 proto_major: 1
308340 proto_minor: 1
309− content_length: 34293
341+ content_length: 34306
310342 host: ""
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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_69fca2f9cfa648fe9f3931ac\",\"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\",\"reasoning_content\":\"The user wants me to download a file from a URL and save it as example.txt.\"},{\"content\":\"Successfully downloaded 2574 bytes to example.txt (Content-Type: text/plain; charset=UTF-8)\",\"tool_call_id\":\"call_69fca2f9cfa648fe9f3931ac\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
343+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_e0dedf0a68a44c4b82324ef5\",\"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\",\"reasoning_content\":\"The user wants me to download a file from a URL and save it as example.txt. I'll use the download tool.\"},{\"content\":\"Successfully downloaded 2574 bytes to example.txt (Content-Type: text/plain; charset=UTF-8)\",\"tool_call_id\":\"call_e0dedf0a68a44c4b82324ef5\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
312344 headers:
313345 Accept:
314346 - application/json
@@ -325,37 +357,25 @@ interactions:
325357 content_length: -1
326358 uncompressed: true
327359 body: |+
328− data: {"id":"chatcmpl-2118dc47b1bfa07c37b7982b","object":"chat.completion.chunk","created":1778531347,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
329−
330− data: {"id":"chatcmpl-2118dc47b1bfa07c37b7982b","object":"chat.completion.chunk","created":1778531347,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Download"},"finish_reason":null}]}
331−
332− data: {"id":"chatcmpl-2118dc47b1bfa07c37b7982b","object":"chat.completion.chunk","created":1778531347,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ed"},"finish_reason":null}]}
333−
334− data: {"id":"chatcmpl-2118dc47b1bfa07c37b7982b","object":"chat.completion.chunk","created":1778531347,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}]}
335−
336− data: {"id":"chatcmpl-2118dc47b1bfa07c37b7982b","object":"chat.completion.chunk","created":1778531347,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
337−
338− data: {"id":"chatcmpl-2118dc47b1bfa07c37b7982b","object":"chat.completion.chunk","created":1778531347,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"example"},"finish_reason":null}]}
339−
340− data: {"id":"chatcmpl-2118dc47b1bfa07c37b7982b","object":"chat.completion.chunk","created":1778531347,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".txt"},"finish_reason":null}]}
360+ data: {"id":"chatcmpl-a4f7722193027bafe61d2c96","object":"chat.completion.chunk","created":1778597336,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
341361
342− data: {"id":"chatcmpl-2118dc47b1bfa07c37b7982b","object":"chat.completion.chunk","created":1778531347,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
362+ data: {"id":"chatcmpl-a4f7722193027bafe61d2c96","object":"chat.completion.chunk","created":1778597336,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Download"},"finish_reason":null}]}
343363
344− data: {"id":"chatcmpl-2118dc47b1bfa07c37b7982b","object":"chat.completion.chunk","created":1778531347,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" ("},"finish_reason":null}]}
364+ data: {"id":"chatcmpl-a4f7722193027bafe61d2c96","object":"chat.completion.chunk","created":1778597336,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ed to"},"finish_reason":null}]}
345365
346− data: {"id":"chatcmpl-2118dc47b1bfa07c37b7982b","object":"chat.completion.chunk","created":1778531347,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"25"},"finish_reason":null}]}
366+ data: {"id":"chatcmpl-a4f7722193027bafe61d2c96","object":"chat.completion.chunk","created":1778597336,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `example"},"finish_reason":null}]}
347367
348− data: {"id":"chatcmpl-2118dc47b1bfa07c37b7982b","object":"chat.completion.chunk","created":1778531347,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"7"},"finish_reason":null}]}
368+ data: {"id":"chatcmpl-a4f7722193027bafe61d2c96","object":"chat.completion.chunk","created":1778597336,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".txt"},"finish_reason":null}]}
349369
350− data: {"id":"chatcmpl-2118dc47b1bfa07c37b7982b","object":"chat.completion.chunk","created":1778531347,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"4"},"finish_reason":null}]}
370+ data: {"id":"chatcmpl-a4f7722193027bafe61d2c96","object":"chat.completion.chunk","created":1778597336,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` (25"},"finish_reason":null}]}
351371
352− data: {"id":"chatcmpl-2118dc47b1bfa07c37b7982b","object":"chat.completion.chunk","created":1778531347,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" bytes"},"finish_reason":null}]}
372+ data: {"id":"chatcmpl-a4f7722193027bafe61d2c96","object":"chat.completion.chunk","created":1778597336,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"74"},"finish_reason":null}]}
353373
354− data: {"id":"chatcmpl-2118dc47b1bfa07c37b7982b","object":"chat.completion.chunk","created":1778531347,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":")."},"finish_reason":null}]}
374+ data: {"id":"chatcmpl-a4f7722193027bafe61d2c96","object":"chat.completion.chunk","created":1778597336,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" bytes)."},"finish_reason":null}]}
355375
356− data: {"id":"chatcmpl-2118dc47b1bfa07c37b7982b","object":"chat.completion.chunk","created":1778531347,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
376+ data: {"id":"chatcmpl-a4f7722193027bafe61d2c96","object":"chat.completion.chunk","created":1778597336,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
357377
358− data: {"id":"chatcmpl-2118dc47b1bfa07c37b7982b","object":"chat.completion.chunk","created":1778531347,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":80,"completion_tokens":15,"total_tokens":7839,"prompt_tokens_details":{"cached_tokens":7744}}}
378+ data: {"id":"chatcmpl-a4f7722193027bafe61d2c96","object":"chat.completion.chunk","created":1778597336,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":7826,"completion_tokens":15,"total_tokens":7841,"completion_tokens_details":{"reasoning_tokens":14}}}
359379
360380 data: [DONE]
361381
@@ -364,4 +384,4 @@ interactions:
364384 - text/event-stream
365385 status: 200 OK
366386 code: 200
367− duration: 3.538359917s
387+ duration: 3.863408666s
internal/agent/testdata/TestCoderAgent/glm-5.1/fetch_tool.yaml+309−228
@@ -25,330 +25,367 @@ interactions:
2525 content_length: -1
2626 uncompressed: true
2727 body: |+
28− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
2929
30− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"User"},"finish_reason":null}]}
3131
32− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" system"},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" asks"},"finish_reason":null}]}
3333
34− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" says"},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
3535
36− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
3737
38− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
3939
40− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"You"},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
4141
42− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" will"},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
4343
44− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" generate"},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
4545
46− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
4747
48− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
4949
50− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
50+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
5151
52− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" based"},"finish_reason":null}]}
52+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
5353
54− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" on"},"finish_reason":null}]}
54+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
5555
56− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
56+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" fetch"},"finish_reason":null}]}
5757
58− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" first"},"finish_reason":null}]}
58+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
5959
60− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" message"},"finish_reason":null}]}
60+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
6161
62− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
62+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
6363
64− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
64+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" https"},"finish_reason":null}]}
6565
66− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" begins"},"finish_reason":null}]}
66+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"://"},"finish_reason":null}]}
6767
68− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
68+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"..."},"finish_reason":null}]}
6969
70− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" conversation"},"finish_reason":null}]}
70+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
7171
72− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
72+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" tell"},"finish_reason":null}]}
7373
74− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\""},"finish_reason":null}]}
74+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" me"},"finish_reason":null}]}
7575
76− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
76+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" if"},"finish_reason":null}]}
7777
78− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" we"},"finish_reason":null}]}
78+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" it"},"finish_reason":null}]}
7979
80− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
80+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" contains"},"finish_reason":null}]}
8181
82− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
82+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
8383
84− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" produce"},"finish_reason":null}]}
84+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" word"},"finish_reason":null}]}
8585
86− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
86+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
8787
88− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
88+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"John"},"finish_reason":null}]}
8989
90− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summar"},"finish_reason":null}]}
90+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Doe"},"finish_reason":null}]}
9191
92− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"izing"},"finish_reason":null}]}
92+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
9393
94− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
94+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
9595
96− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user's"},"finish_reason":null}]}
96+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" They"},"finish_reason":null}]}
9797
98− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" message"},"finish_reason":null}]}
98+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" want"},"finish_reason":null}]}
9999
100− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
100+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
101101
102− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
102+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
103103
104− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
104+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
105105
106− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
106+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
107107
108− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
108+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" instruction"},"finish_reason":null}]}
109109
110− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
110+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
111111
112− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
112+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Must"},"finish_reason":null}]}
113113
114− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Max"},"finish_reason":null}]}
114+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
115115
116− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
116+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c="},"finish_reason":null}]}
117117
118− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
118+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
119119
120− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
120+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
121121
122− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
122+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
123123
124− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" One"},"finish_reason":null}]}
124+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
125125
126− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
126+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
127127
128− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
128+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
129129
130− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
130+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
131131
132− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
132+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
133133
134− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
134+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
135135
136− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
136+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" colon"},"finish_reason":null}]}
137137
138− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
138+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
139139
140− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
140+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Summ"},"finish_reason":null}]}
141141
142− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"User"},"finish_reason":null}]}
142+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ar"},"finish_reason":null}]}
143143
144− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
144+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ize"},"finish_reason":null}]}
145145
146− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
146+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
147147
148− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
148+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
149149
150− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
150+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Check"},"finish_reason":null}]}
151151
152− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
152+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" example"},"finish_reason":null}]}
153153
154− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
154+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" HTML"},"finish_reason":null}]}
155155
156− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
156+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
157157
158− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
158+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
159159
160− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
160+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"John"},"finish_reason":null}]}
161161
162− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
162+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Doe"},"finish_reason":null}]}
163163
164− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
164+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
165165
166− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" fetch"},"finish_reason":null}]}
166+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
167167
168− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
168+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
169169
170− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
170+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
171171
172− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
172+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
173173
174− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" https"},"finish_reason":null}]}
174+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
175175
176− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"://"},"finish_reason":null}]}
176+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
177177
178− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"example"},"finish_reason":null}]}
178+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Return"},"finish_reason":null}]}
179179
180− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"-files"},"finish_reason":null}]}
180+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
181181
182− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".online"},"finish_reason":null}]}
182+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
183183
184− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"-con"},"finish_reason":null}]}
184+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Check"},"finish_reason":null}]}
185185
186− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"vert"},"finish_reason":null}]}
186+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" example"},"finish_reason":null}]}
187187
188− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".com"},"finish_reason":null}]}
188+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" HTML"},"finish_reason":null}]}
189189
190− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"/"},"finish_reason":null}]}
190+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" for"},"finish_reason":null}]}
191191
192− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"website"},"finish_reason":null}]}
192+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" John"},"finish_reason":null}]}
193193
194− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"/html"},"finish_reason":null}]}
194+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Doe"},"finish_reason":null}]}
195195
196− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"/example"},"finish_reason":null}]}
196+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" presence"},"finish_reason":null}]}
197197
198− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".html"},"finish_reason":null}]}
198+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
199199
200− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
200+ data: {"id":"chatcmpl-b39d5513375460df26bd477e","object":"chat.completion.chunk","created":1778597337,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":39,"completion_tokens":94,"total_tokens":325,"prompt_tokens_details":{"cached_tokens":192}}}
201201
202− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" tell"},"finish_reason":null}]}
203−
204− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" me"},"finish_reason":null}]}
205−
206− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" if"},"finish_reason":null}]}
207−
208− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" it"},"finish_reason":null}]}
209−
210− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" contains"},"finish_reason":null}]}
211−
212− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
213−
214− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" word"},"finish_reason":null}]}
215−
216− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
217−
218− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"John"},"finish_reason":null}]}
219−
220− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Doe"},"finish_reason":null}]}
221−
222− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
223−
224− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"\n\n"},"finish_reason":null}]}
225−
226− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"We"},"finish_reason":null}]}
227−
228− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
229−
230− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
231−
232− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" produce"},"finish_reason":null}]}
233−
234− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
235−
236− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summar"},"finish_reason":null}]}
237−
238− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"izing"},"finish_reason":null}]}
239−
240− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
241−
242− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
202+ data: [DONE]
243203
244− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Perhaps"},"finish_reason":null}]}
204+ headers:
205+ Content-Type:
206+ - text/event-stream
207+ status: 200 OK
208+ code: 200
209+ duration: 497.991709ms
210+- id: 1
211+ request:
212+ proto: HTTP/1.1
213+ proto_major: 1
214+ proto_minor: 1
215+ content_length: 33727
216+ host: ""
217+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
218+ headers:
219+ Accept:
220+ - application/json
221+ Content-Type:
222+ - application/json
223+ User-Agent:
224+ - Charm-Crush/devel (https://charm.land/crush)
225+ url: https://hyper.charm.land/v1/chat/completions
226+ method: POST
227+ response:
228+ proto: HTTP/2.0
229+ proto_major: 2
230+ proto_minor: 0
231+ content_length: -1
232+ uncompressed: true
233+ body: |+
234+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
245235
246− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
236+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
247237
248− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
238+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
249239
250− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Check"},"finish_reason":null}]}
240+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" wants me to"},"finish_reason":null}]}
251241
252− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" HTML"},"finish_reason":null}]}
242+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" fetch content"},"finish_reason":null}]}
253243
254− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
244+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" from a URL"},"finish_reason":null}]}
255245
256− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" presence"},"finish_reason":null}]}
246+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" and check"},"finish_reason":null}]}
257247
258− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" of"},"finish_reason":null}]}
248+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" if it"},"finish_reason":null}]}
259249
260− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" John"},"finish_reason":null}]}
250+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" contains the"},"finish_reason":null}]}
261251
262− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Doe"},"finish_reason":null}]}
252+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" word '"},"finish_reason":null}]}
263253
264− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
254+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"John Doe"},"finish_reason":null}]}
265255
266− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
256+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"'. Let"},"finish_reason":null}]}
267257
268− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
258+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" me use"},"finish_reason":null}]}
269259
270− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
260+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
271261
272− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
262+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" fetch tool"},"finish_reason":null}]}
273263
274− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Check"},"finish_reason":null}]}
264+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
275265
276− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" HTML"},"finish_reason":null}]}
266+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_74e206507d5046e8a4b0aa5e","type":"function","index":0,"function":{"name":"fetch","arguments":""}}]},"finish_reason":null}]}
277267
278− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
268+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":""}}]},"finish_reason":null}]}
279269
280− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" presence"},"finish_reason":null}]}
270+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
281271
282− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" of"},"finish_reason":null}]}
272+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"format\": "}}]},"finish_reason":null}]}
283273
284− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" John"},"finish_reason":null}]}
274+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"text"}}]},"finish_reason":null}]}
285275
286− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Doe"},"finish_reason":null}]}
276+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\", "}}]},"finish_reason":null}]}
287277
288− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
278+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"url\": "}}]},"finish_reason":null}]}
289279
290− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
280+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"https://example"}}]},"finish_reason":null}]}
291281
292− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
282+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-files"}}]},"finish_reason":null}]}
293283
294− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
284+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".online"}}]},"finish_reason":null}]}
295285
296− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
286+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-"}}]},"finish_reason":null}]}
297287
298− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
288+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"convert.com"}}]},"finish_reason":null}]}
299289
300− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
290+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/website"}}]},"finish_reason":null}]}
301291
302− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" fine"},"finish_reason":null}]}
292+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/html"}}]},"finish_reason":null}]}
303293
304− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
294+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/example.html\""}}]},"finish_reason":null}]}
305295
306− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" No"},"finish_reason":null}]}
296+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
307297
308− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
298+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
309299
310− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
300+ data: {"id":"chatcmpl-74057d7e93cd8897f7724da7","object":"chat.completion.chunk","created":1778597340,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":721,"completion_tokens":57,"total_tokens":7818,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":28}}}
311301
312− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" One"},"finish_reason":null}]}
302+ data: [DONE]
313303
314− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
304+ headers:
305+ Content-Type:
306+ - text/event-stream
307+ status: 200 OK
308+ code: 200
309+ duration: 3.373965084s
310+- id: 2
311+ request:
312+ proto: HTTP/1.1
313+ proto_major: 1
314+ proto_minor: 1
315+ content_length: 0
316+ host: example-files.online-convert.com
317+ headers:
318+ User-Agent:
319+ - crush/1.0
320+ url: https://example-files.online-convert.com/website/html/example.html
321+ method: GET
322+ response:
323+ proto: HTTP/2.0
324+ proto_major: 2
325+ proto_minor: 0
326+ content_length: -1
327+ uncompressed: true
328+ body: |-
329+ <!DOCTYPE html>
315330
316− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
331+ <html>
332+ <body>
317333
318− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Check"},"finish_reason":null}]}
334+ <h1>HTML test file</h1>
319335
320− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" HTML"},"finish_reason":null}]}
336+ <p>Purpose: Provide example of this file type<br>
337+ Document file type: HTML<br>
338+ Version: 1.0<br>
339+ Remark:</p>
321340
322− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" for"},"finish_reason":null}]}
341+ <p><img align="right" style="height:5.0551cm;width:7.62cm;" src="data:image/*;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gADKv/bAEMABQMEBAQDBQQEBAUFBQYHDAgHBwcHDwsLCQwRDxISEQ8RERMWHBcTFBoVEREYIRgaHR0fHx8TFyIkIh4kHB4fHv/bAEMBBQUFBwYHDggIDh4UERQeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHv/CABEIAY8CWAMBEQACEQEDEQH/xAAcAAACAwEBAQEAAAAAAAAAAAADBAABAgUGBwj/xAAZAQADAQEBAAAAAAAAAAAAAAAAAQIDBAX/2gAMAwEAAhADEAAAAfTw/R3PYecCwoIFhAg4ECDgoECBBwUFAg4FjicZBQLHE4FNQIECIsIOBBwIECBAgQIECBAgQIECBAgQOXpPwfTHlZikum9ShN2FpZb1KyPDKYB1aPu/NfW6F3hukQIKggWOBAg7CBAgQKCCgQIOwtVApqBAtOBTUCIscCDgQIECBAgQIECBAgQIECBAgQIEDj6z4bTP5djKyYqZYBMBVGlUEFpAm6DSF6qhfofg173VDtDLigg7CBY4ETscCBAgQcFAgQIOBAgoECBAgQIOBAgQIECBAgQIECBAgQIECBAgQIEBSpbmvlHZj4znngyxsyPUmWYDaMsEPaWGySl7raWA+4cO/uuvLDHmaC0QdhBwIOBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAzJjF3ohSG0W6cCBSLZASa57n5pefq1Xy5xz80k6GzI7RAyG5JQFvcKmDdYZAGP7p5W/re/Im0MTXRRCoECBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgYFy4nmcVXjb0vWiL2wrmY470gOY9b53q5eJmfJ6Zc3V0hdukDAYDqqQWZG3tFoXuojakiWWwtgdfe/H3DrDHae90kiIOBAgQIECBAgQIECBAgQIECBAgQIECBAgQIECBAgQICRPLxCukcbqAHPS9yQjHPb0A5ZkL3IUuJ0LznbHkezPArkTutIyzcmGxhaLaJIJtiZlMQ16oYfTOCullZ+2fomh1BQcCBAgQIECBAgQIECBAgQIECBAgQIECBAgQIFBYJpJ5vECXI+Zz1GkrrVuZC22SeEvToWVztoO76eFcq8jTTSSuq+Yexks0NsbAtkksMhY4kNmkRF0xFW0Jn3HwOjWoHon2/bPWpQIEHAgQIECBAgQIECBAgQIECBAgQIECBQWAw5aXFxe6nz0zjK2uatZUPYUc5wOjN+N9XP0nFXRm/O753lXE6sO9w05Gi1Lcu2egxPnPq8/lexYGNlBtGkJ3ZZnYqC0SUvpbCVNqOvqXk6+f649/y36n0o9G1YREHAgQIECBAgQIECBAgQIECBAgUGUc1IqfPa4sAqnz7W+eltIPnbMBuWlhnt8jaOjx36Lnvi9U97kfL6k0Mmb4O8clRi27N5Zy+ife+ZXK6I+RezhQAdWLI9osMARSJvclAC6OFoBT+veHt53oPVyes6p73VJQ0FBpOBAgQIECBAgQIECBAgQIEBAS2Z5rJhThPH0nh9GfW5NENoaxp3KtTamkriQ1nu8WvG6pWue35mvbzpmV2sWj0M3O+D2Z8W4czrJfczDtdKWDQ+Ee3yrtLVWGaQWVhvSUFh1QhunJkoKgN39s8HfxXdnun6jmr0XpR6/UCpRT7DcCBAgQIECBAgYCgIEDn5gbSqXLg4Ii40JMCNJbRzd5StK1CtwWb63LqpqlalW0KpNNN8j9TxdKmgaF2OVstNxXlt8ROGS6dA0OjkjLX0UHz3vx+Y+pnuZoKKsMiYmF6ugsHEUxVvAxj+r+Nt5Hsn0GB6zlsXqx9E6F47lOXR9B6UynAgUJUDAUfPS1QWTzkBKRpaQcnko0iFSCzm7R2OXXyvdhkMoyJyK4vRCdyxFGg1KQ2ZZFbLT7fE+tyaej59iwcHrh7lOznSep5vXFa25ARDcp6NSrSaLy3bj899DKkAquhlmWZDbwJO9CSWDIK1WwC2Mf1DyNdF9fNER2euO/1x8w5Z8/sfQCjaz05qAumtiFG1sg40GpzoLczA1ztY4fVHV5r63NoOoTs5+mfV59PE+nhBp2P5Pq4VwejNPQ0qYibQJvQ1qREO5V6HzdOdvfW5b7eK0jrYtmV5rrnz2yelNQunkKVp0sm6Hyv18PM9chpnhdPDFPSqYjppgo8yCqIkVlDWdWj7t4O/O2bcoqrh7Q3M+S68VrXoo0RqOzb6U2zlpwd8O3zaaT52swFbjz/AE59vn0hPD3n0PHvwurF/BmmywJUvI+nizm0tDu8tK3FI525aZIVhgehrUaQ7k/T8OvMa7GO3b510sCWIOeNrPnuivQ4NqE1muH0nb5qfK8f3YeC9OMh1cMrlL6VzNdY0J2RLIEmYzA8OmpX3LwenzHSblA0TchkvFd+O0tM02259Zjujc+Y7ef0/Du/jfmu3H1XFvaPDejzN51YubrPpeHbyHoYuZNnOvT8Ovh/T51dU7kczZuZMTkyfO2NQhtlRgdjE1AIn6HgsksuOvqeZ8vU6cu8svLdYEfa5r6cpKpR0NJ+u538z9jHy3VFD7fLgG2vTWug1WR6FgZpkbYnTUZ7K+w+H1c7YW1OpgolzN15jryS1REunlTqOyrcm/O9eDUV0MNPJ9/P0MdfWcGni/R5yQZt5S7PLr5zqyU1kkOCHQKjAst7g0GGxuR1StJiGCix2i0nMz13lag3rGRM9+lOSu+ep05eh1sNe9zy9lPku3JetfU8j8j34+L9CF7DRPQyzQ10iLEvbocGVK0to0k1Mhdej4+n02FaT9Zzvzu88baPNdeXL3GoNC62KfL7c6agQ3XZ5dObtPI6M+9xaeR9Dn3NuwIXOU1NYFRpPDNJUMNBYnLcTWsyKww1tUCh3KRthZ7fyNe3z6EenH3z5pfcyy5us8no1e5n28NOjK9ThPzP0cObpp9B848l2z839bMspvOOnjkrpS9VzddaCARJqJMktpdSjTNFdnm6PTc99jJ9XI0HluufMdfPxOk6WKNLJKfl9EruY7eK9DD1XDsJsTg0vxPpc2RmSG2pRYDYROJWzcrAaSzTwMFA29KTxOHUA8SJgXfc4X2sdUtdHsMwVr2OfNS5811X2+OulMdfHbrZT8g9/l6/F0dvOPGehnwOkw29lm9nGRJ6Vz9doEAkp2IsWRjplhWj6N53cWZ7WT0giXz/ANHDnbTydzoZElZaeg7EaB1fD6cjTRZYnMDn7SNhpIMLBUERaMNQdpROhU3pFC0hPRs5zTNIPCWtsQlCom7k+vzaNzv0scyzHmunUsHazTKv0eEfFvcxw6w8g0K3dpv55vZZAqsNL1VjoBuiJMRI6ZEZbyj2PD1eo5WyNVthhFPy31efFI8KgwLTOvlWdXx+nOg0UJrSFrKE9ml6dDyECgxRB7ict0KnR4VqbBLSnM5YiV7q5ccDKHLHVEmupzo0dDuefWxXO10JD62V+e68TOPMdT5u0N5Qlpcb6eUGmDZxzddIJa7HVWjLOhjmzKptS2vV5D6b5PZ6HCK0adNiJ8H34A0lalhtzOV6CIelrbHH6k7nK93tLI9KMNtShDKkvVElZaDTGPSUAbdjNEsxK9u07FgQarIyKMqvQ8j7vNqhq/N9OJI6PWcNEQCzDprBL9OPE1npZbeV9DneyktMoucKCpIAL2xuhVW0tociSIT0pK9Cwqa+veL1eK7M/qHDpwdAgLXPiu/ILz0IqAMcimpDtobQlsqAbA1RJjLbuUq3RpinWB4ZBEkyG017NI3KFS0nlJe6jImGntL0vEu9xa9XOwXXM1x4eunfxe4XnuiutguXtXE7OcDXWz1qsPS88kTDovH7Msi9AGxU16rDpuINKblKU1qrINxKd3+gPB6/Jbz6fBed2H5a+kfPvSwA0eEQAtW21DaQnsKbTtC1MiBksymM1y97LKw3BjZaWkQdBBbQKjLNyhjHVQWkDbfzn0nBSzOpnt0504OufK0l7Pb0MLyO7T0wItOZ0Y9bmfpsYBUYEyMlHjt63KTp5FkFdLg3YVJMTKd0aU9nCd3z9dPtPidHk+rLh9B9J83VcnyHoZcPonna0/lJEjZpbROQ+jOnJ6pG5qpJIfNK6MTCJo6B5MNwY2tIsKTyyC2jDKS0jLBuiJQYwNMnzeBu536/m2422XE1XocN9Si5wuTweyGYNquzGGGsoYTYYJnF2vyW+jUZgbPI9EMxJJCI2ltKh8Lp15mt/WvI35tM5VPP0fM/PdGfl+3FPR7kDTbylWxiToRoj0ArgdQSUzm9NI2xXSVjEobqwGBErHaQ26FtPDUAkyN1AgM5oNVTWs1orpZDMVztb1MdPLoQ1XSxxyBcktQvodFY7JyM0jdFJ8je1JjArA8okoklhaKb0gbEtdONvfX49vRRYlPcyfq+J+L9DLzHXnwulsSujjClUxL0M8tfdL3LEQvobkwzQIa1gNpYqtBkKRoIIQ4BpQ6IjSVhgeabOStlyudd9HOSKmYSOlkk6+euIBdE855vRbWOeKTMZMyx08oclNtFk4lyAWkaRpGh5qhtXKynlkbBpfW49/b47oUupmZzzR1fz71cVNEnTdiS5gKZ5bk1yutBqGIVOYC10ZAKAsodsgQIiA9nPc55Zhef6b5mrwFo2gbI2fOdhgAlRkH2eYp1yth7PTUrOqA83cdOxzcqmuj0ZQNjtq5KH1w4RA0Wy0BdZowFjy3FI6q3Q7v0/lvr461deg5ha0+jx/ZHgPVzMktQSEBt6KezfP6WprnsF6TeciqoAKB07Rh1oUSoZEvScmSGlgsLK5etZDSVjGzLbOc0PSS9VaRSjxTE1z9M3s9lbjY13j2Vo1x47okwEpxrcgQIn2oYKnmtUA24KgiMU7DLdN5ZV39U8XUmY1jaDAaijng9k+F9WdNDZ0uaOZtT8N/O1tBTaVtJXoaicMy6w0rVFRhuxWlGzxPWylV1QAc6QeURIqII0IQ+dtoFgnVBobios3y9I7mOvE2x9BlZebkBttg0PlyN5PVBRtxSzWhQQwEwTLC0sN03uZgyJbqqSsn6J5nUu65ab830sWLR+J9LLzvbivToUQvQzA1Fbuk94Tow1oKSjekNDxMNSanMqnSQavna6dXCTSmc88t6RpEHTNTK93EeX7NQVWkCbMjrTomDqfPrPsZ6dLiy4nZJ0954HgPFbpOTW0Wg7Bo5WqABFImySbSiVhpLSI2Nv1PFu0ll2TDX0Odq2fI/d509JBTIlcrlb07kn82a3jWVGlaLDKCB0Mo6cKoxJK2OI2q5W98bo07nPBoRogsoieh4EO2bJUMFnmuvXm66aSw2zK7E7JNFHz7nqS28MhrM22uefncyZUYoLD6KdUYQZPDnkVIwjRoLDcqmZCwGjNP0PJs3pfXyovPoppQ9J+WezkvRYNRIUufq24OtjYtldLm6IbMg9nPX580dK6UjeWdJaKsMo5utcvo16OOZw6XNlpOgyA7dgTNET52p5vs15utmlaRhvqzqqSJt9qRTePKSM76Ox3jwihZuMYVOQs0RrKOtNceoCLNFp7lbRiix0IYaSby73uePX515nWPN9q5PVIqZUk6ZZQ2QLkezoli3RGEujE1I1lmRLg9G3Th9TMuI3E0LIU2VBYEOjR/mzgqHQcrqt/nncLNHJ6HwujTV7Uo51vDbk31Cl1D2UDbbx59yktt38KPnzAGOg5TEoYjjEBWgWAAkokq28BinTLHamhety9TgrLl7R5bueHOgNKbiTJJUxU24T0IGi1RhpmIirq5QzC29Q3eLbeU7iWsM5KieUqCAj06M8+WWwW8t8/p0exyJmgWAoB09BLrzehgpkTuS6BR8canTm7Ppc2XRww5vTsS6NyYLN2GLo0Io2ZZmue89NyVluU6lWOkrCBB5a+nT6XiNs0CeJrmho1LYLraTUsTXSiOjhn0MYyy0jSERpG4JS2OmaRhu2apRFy8SZEFgqNojcZEgU95xEqosLZhuN3peLqoE+voNlCNXy9n2uLL0PFgrocz0ujo+dzibMC9B0aTMmeJwlAtGEUGnUZiiqMJYogei5uh6X0VWkufcDSFaBYAWBFk0wBOkQBi0FBTIKkUzAWERAtoVFCkuwGywzRhimwEVWz5NtOVOW7THowykOjes0TTSlak58frr0/Bj1ObLSOR6/S15nNytRhGx4F0c2aWwAYkdPLIMbnNVGDSlOU7pjmfa83ayCSgNSFZlhNy6SeVVIwXoQWhCXJXa0gYs6PSUSCLAZooVBbKHbMpSqW1sOlI9F7ywJMv5h5cpRupnUGUDDQSUGq4Xo9SNV2+Xn8r6Gvb4cWMstjnoda/BybTgg3o/jI2OFGBKswhpUOwNIsOyqJtLdAUh3Xp+IoZUQWkWmOhiWNzodyQMi03tFgNoydp4pZZmFTLZhqwHJtlN5FQWzOlA66S1W+LMikxWxhS2ONZZHR4NW+dTSo5+mvc5sfDer0eo4Mety58Tq33rZ8MFyNSw6U3nNA0gsgqmh7oyioNN2AmZT3bxRpvrcMRlixSjBo2y5e0QcCCpqmrVbag9ySXdFIV0DwVCtl0bHUgmshcvVAbBMazJoc6yE1GRlVWBYS3mgsPWT3L2CbtxZ+J9fo6mE9XllfRdCZ2MeQBtHY3EMy2SjhQYayyDiA0jBnM0LMlNUPoYPTeWgkkAg4EQIVWsp6HEWy7dyqRYVYCnaRIW5YaIFyYlFblmpImOgSNAPR6DaNiFRmZHUg0WU+b1XUo+SayTMvVNDaeJ075vXq8uTs5NIqXbMSJ66dDCIkynUlUVAKzSdtYHsKZmiDwTE38HCYGEstVIZu6Y1O2x0qTpBmDalK043TUh0jUog6RoebYkihUlNUINqRWqeUhWRkFtMqNS6FhkaFQDa09qA0vMniFNdUurfu8GDWWVDKnED0a22nQwjKJKZbxQTEgqBbok0sCTA5FXRlES6ud6hbSwFNUMyBNRmUEp22EVoELSVUaHQSFGVSpsg8hQbkieGhpXQJloKiwwhLSSy4zUlURupMUK6gtKtta3GJNobVu9HuPkaxlvKilmVq7JXeXMp1NVc5DcIedVSMhS1cllHhYp2TJWx/QeTpZ0epeBaQKDba1SFSBgNESRZg6Tku0ElqXKlqhHyZkLVOwzYhcrUuhlTQ10rb0gbBBVraMJFTsekCJCyIplgCkEU0oLkLYNKqqPnAmB0eWhVpzem+W11+aGJWNE4pTumuZdTOaVMyoAlVUKtkmRNYp+w598uNZplt/OytjSCzYLCDSfWhJBUhNYQaXdBhpuGZqmVmk9JeKAK6YhbSkOUSWVgEiBEyDtnSjQtCtIYDhDZWiVmVtDKnIlxDchpAEOluWUcqlrY6EaDJc7SstMKQtLU2FK9UaZewHsjUkFdMQfQefqEkvTlRaYKkjTmd8zSBBUI5W5Ct6HSBVKikbVN4oOjqF5boWsy6KRaoNSNBG8Erk2A2jzRiqRqjUD5dphZKRpeUpY5NCENGQy0FFo0601iQ7oFI2D1aSqQi5umfM1lO5ktfQ5u1xynpZIg0wXM+y+b2WhhsTU0aaTQ8SiFYEuLIDtXQLIplysCRqbRcrOzXs2SMKGUCgFzGSXkF7Q2syYUdWNKFlmKecVQ2WXQJFSa1eXJIo1K8qXCnLM2uK2hW6J3LyBEZYuIgytlRkDJlmmVVoxQokraWU+1z2Gk+XvVFTC0KFhNnQFAzTECqKawy8jNFSpQqp2PdNElNxikIBEsqj027epZJBAETpQlMlkb1SUSwgBIdEXOlripWdBOwaQhdTOzxWNEGpa570jNkkzSoeNFlm8zAtSc/WblZZdOM3AdU1dWMTn2ePQRhGCDbIiBQW2SQ2hlOmh5EsIGEXJQSgUh9TMGEKwhUtDMB9AchLC2AyekbbiQaMooRLLGLIu1kOcpqRJyJK4eQaK1Seza9NLSXMqbAYssRqTzW2bsUlbzQ6XLuUiRC26zopE001T1Ne2fShjL2lRkRnMZsIPEF0bZkAyasprMI91z8pPTUueapFT7GdtSH0By1SU2uvrRJdCtuxXD0zKeAPRgAQGowmW0GQjFoDM0LLLQJAs0AJSwgrLQ3dDzBSjDFqpnSdpxjWTX0ORnFEwMpETWaU0ilXq9dZA3obTGgaLQfQXgkiwsAGkwx26pKQE0Y4M0kMgmjFKck0zViWaZ1ekUA4VWXRcuQnd6zJoMJ4yJZdsea1bK0nDimI1TGhmigSiT00YWszmaT0imQTScTOnmweQvsNJ5DW9XjIoAZyxTMyMFkf/xAAvEAACAgIBBAIBBAICAwADAAABAgADBBESBRMhIhQxECMyQUIGFTNQICRAMDRD/9oACAEBAAEFAk413YOS+Sf+56lkUU4vV7BbmWHY+ogMYQmKdwAb8cixmmM8bLedz7lIze3XR1J68apkH/b9Qyq8d/8AKs7Zt82M2i/2CSrGag8DftZ9jZXc4+fAhH46ZfkrUluUyUtY3/bPkVJfP8iyu4M7PycqvwYx3AQYYQJ9wLFIBOubH1CgzwBvysM/x+57x8qifMx9qdj/AKckCCxDGcCdzcVtj/yXJrN7dQoXN6z1M2dVyOs0jo/Uc2zNvJ2PG/yTD4iNuH7b7P0CI/2IT+OkU9mjExnRzZgY0wcj5NX/AErsFGTmqiLdzGPaNkrunij2Xoq2ZjozZi9w5QMW68xWs4ZXUe5RZZlVXWX8rCeU36mfQ8zfqZ9Qia8/QX1hi/beCVG21G/HO5kqyeU6Diu9iBQP+luuCEcVmW4VDcvZssIrWxwz3rs9zIqWhRFVGl7dpsbI52ZXHHutyKXj4PT7KsvoxVPIhOp9JE+vG/AhJg+/3M0b6/uvgkiMwjaP4658t8pccVtR/trLunVtVT/0BOvxkXis3Z1dbr1BDXde14XdQewvYX/9l7e1BljjbyttpS+17Ssp7lItyONmJlIcvLyKbJ3Paq1tU2I0zKkyqsjGsx3bxG+mjGbM14bXGr6ZtERGOz7M7CIC0NZjzJV7EfIopXF+Tk59NHB//sJAEsYIj5irQ2cblq6iahlZVr2o5cXBZWheXsUoW727upYa6q+VgsL0lg3bUOK5h5S9u1gbadVl8ghURHnlFqazmlL24/XXdsnexvwYF8D7J1DKzofx6zfjXkytuRsMP3n2C6ZHxd9HxuwmDh//AEk6BYAZmSKLKMjuU5uUPjHqjLY/U2dcjN02IS7dTsZL8rT42LWtVtjhAl4VedTpjn9ZmDXEr2EwsVWoRK6+q0RO0q41FZTMxsZQx5yoPeUUVhaczu4Nd1uThG+f5WGfpbHx/VvEX6cz7BWaXlv2/up8AnR+05AaMXc6n08OcvFrpr6Dm44x1zzVKrOcBBMB/wDksyVWzNyVWd+wvk5HK03mhsy69cqm1rMutq0fJYItCCqZCrmUrZW60uarc1+Mwr37gzEqqa8mDK4WjmchOdcry9Wh1VGbcx3pFXXq6g3aVJVee5V7Y+Pd2q6NvejpY3UMZrsS6p6XbWh5PnevO9AtAIBG0X/bPLGlfD+Jz8tKr676c285GTg24uDk5mVY64GJfcqIEGTZ26sbJ7tn/wCN2CLWwdPw+QOAv0+R1Go0nqT1UZeY3ySLt57IXW+vhbwLrdUz9RNYeu5d5VzvK2eV3fqW37sy70sXmNd8cRa3NCXONTxsVbAmTzQ4gfihUvVaptrGPdXm1NQ3yUMDKlVCJXAPiJvuirIFYqtDz/Kr8awn9yryPP2UaLaMRfewefuE+
342+ qIIqIIXEYw6iEq96h+m9Qq7V/T+nLffdxI6M3Ufk18+PVsk8Me0DqGNYLav/CnIqtVLFf8AGXbxF1vGd5O3nZXrTcUGPmM729RCuuV+lZb+pkOtZu4vXyQ2bZFzH/UvftU4d6Ke/Mitu+pAXkd0MgPNTdZZ5VjuwkDY5D9+LYi4/TCWNV5OSMlVzc7W8IholFqU77AvYZFtKnkO49g3zdTctdlQRscWTLzHxa/8tai78Bp9yinwlXCFq+VpUsSImoCSdaioTFHlt7bU6hW3+sbDJlmRbjlr2Mx+pVVCzNp7HUcmzmLBOk5r9izqLjqC5vm7MaZGU70NYXqxbTYL83ibbDGyvTHyFCvkJ3qbzq+4K9p/WevjRZYOOTVyr4cqnarhmXV0tY697uzkJSjlUt5WZOxav1FPFWfkressACqfIMxAWvrtFVwzGa1We3JsqLTAp+PLbbe/ZYr4r0pRkGytcagXdqtv08axVmX2aIulbJt50dXXt3+TCPXEUG5trH5WMq1SxTyHifQJ9juINR3mzNecjHSxlycRqUupvdu3W14rvlddGJis/wAe7ZrXAF9lWWwuyBfzXEZymZfwxabm2hIma6IL85Frw15UXUZIs7jXZF3Ki7CSqynKZUvVuXT6MuyWZhtbp96kmrlk3W1/E7hBKDtAAvaeSh9S0einU8mbVRX7Qzzx+oCBMNtPR27Ma+oLXjjvV912gv3LbBk4td1rjqLsl2J+tY3KtBtMZHPC7JfIGItaJ22uPXL6Tj7MP1jlCHtIlhZUbxOTT+xJM4+qCHyx+vuJ+3IsVOn1Khyc07ycnqrqcFbON+ZjXhqslH+5XkNL67GGI/tWrmvqj2CtbSkyXLWMifH3vFVuUD6Zq9Z2W17JTbwxWZrL8BmOM/crnd41dOt1bZfWca4gWMEMsI7eP4dm9YdifxswtuA+oPsdcdjiNEL5mOr/ABjyvr6bltUC6Ui7/wBrK1TU93CwdcNzW0r2q6eIuoZ6kx2TdtI+dTkLW+GeLf5QjV9YJ2S3musdlqnU2gGLWjGxPFeiN6h+qvobMO9rWda9fkpkovTwbMAVWtV05EFu6bs1lx689r676WRreKkUXnSbNmHbaBk9u2vMxjj3Ydym/OULj0hnGHZaxr02E5DZ2Rk96rpifIzOp1MnUMRlanM02Of+NSdVO0t4lljNK/LNowa4cgsc+zbcmDlr+x3B5Opjj9RS6xxxvtTkpsIAptSl1dRi9+58k9zMoUW3XOPkZyr8f5fEsbrMrExqkq6li5GNVba97JAhgLJO5ueSpFgD7aJ4mjtl4z6TH8knU2ODvuYB7B6Jfbk5nQhfyHEvm497XZvP49tvOp04rWW7dW+SuOVcZqsmzqALYGAbK8hXGVR00VVV0Y7r1PIf44W8VWZV/M4tvx1usN13zHWM/Kb5H6VN6dtHyYF3YFKv/wD1fWuQEc+eXod7s8MPLMvMcPdz5wkSlKLGpmTbj2hjwGOqvn2WdpHsmS7V2144GIx+Ph9Po7avqzH6o71HBLLZhvYZ/lOcyD+i8jKvexttLFQC3ucndzA/qnkudSshiQOFfgMPFSklyEOXRdXb0yxP9b0zvZGQ9zd/VijqaYl5zCDOfqmhRQgZhxLcuMwA75GboVo6LfXkcS1x7qXoLOoXAU5Dg2WkcteiHct/eG9f5niOTsERdQN48mMdr6kMfCk6rMsiLE3otqLvlZerirqSKLrBlytkanpdZdVNlb2K/Puta9Jr71pXWN4iOa16tmNm5WEBF6riKOs5xzbG8SsFmqbTDuaNmozOQ33E8HwYiDhOHOENKieNkx+oYYpo/wBfi14eSLWLWfJaotkZODlplZX6L8VYOAoT9xtYvW/mu1gj3rYjaFpvctZfZsWebbPVeOo2wE+rfMO9ACb1PGifYajs05GbjiINl040pPoMPU+BX4q/db/b+1myen2ObL6EtnTXZMU36dAd3v8A+9jDXUMsrThrkIcTqFIfpqVl3bIbn/Wxm2x3EOjUG5WdwzQEJJhZYFGuIMb6UeF8Hk29+qGWP4w8RfkZOOHsCLTjW8WxkyGFVfL4prFbV+968WezjXD7BB7VhQHFfaYrB7EleacgW/49iLvlxJprMb2dvDHfEctaOyfZ/Efy24dzxtPEuMBiAmKPaz3jECKAJs8FY6GjFRar6MjVqZPDJybPSm5uNitldRoqV+r9WrQv1Z/9d1DO602Zi2g10QeQ3hu2QyU8AjHk54qCxLfWp5m2nnaxRuftBMV/H84JYWJ8bFqx8db17drLZXdVXc+WjZFeTXOO1O4QzV8e3NiKAZeqqD4bG1ojZ8RnPFlHKz/kH7XAErQNLh7KNVp4WocpxE+7PZSs1FU8vEu8xKxyduM5+qnZbyd+iBnNHTtmvpOAyZnSV1jKVyDvu143O6qoYWZ0ptdRyLEweqrcz9R/yusNV02xExkppzem4+KXl1PamRh2XWfFeqqwxBG+j6xz42IzQaiMNosZhpmjNsoBCZZR8XERslp0xmswqudltDOLMay1q8+98q7mRWbF7NOiB++orE0strV0uqULXvjYIm4fsHccGaHBzsU6142SJuJ9nQdtbYxFHcrT35ebHIKaIZzp9z+F+z5iruY2P2pgebcsKuTbbwsztZy5aj5NWUK7czjemFZtuoVocZcg475WXfkRSZlXW0Nh98Gq8CLkbOUU+OTt38QbJc+XUmfU8kqjEhVWBvViY0VNzjocyCzaj4lDCyymvFGDbbfjmdWauzBbRPcFjBN2V+UsUqaGaKeUL6AbkR+FgXbJ+6w7jn9MRG/TLbLEa35rInL3U+5MB8b9d+PMUwnUaN4m/BPrhEi62znSlpFS39zHakXW9UruxK78kPioFe1a6K8OstXM8M2T1GzSIeErq4BKK1Tt9qKP1fHNjzHDuWX0PWFbcCy1wB66T7H0FJPEgFGJSgxaZkgKSV31K+ykZ+RzTFrsvfA3/qspuVnUDe+ay+rIRKG0ncbV9ZeukcYn7mUcCCjHZm9Dt7AAVDs37/VJhAnjt/2Jn9laLFaN+7fjfgk/gft8weYftfIb9tbCPcxnfLDBtX5D9RPxurdRN1Fa7x7f0Jm3gLj8Di24iFbKrLL7K0rlVzkm31tbRrrBCJZoOtcxu0g6tZxr2dKbOHEmJUTEpgr0FTU4TgBNTRmYbQ6kiZ/UsdcG7iTX8GvFGXVmjDwqsJck4mPS3F1RluK468k5pOQYgMJUVMLNu6L5jKVqrYBWbcQcTZoP/DfZ3+D6z+B9eeI1Cfx/XyI0b8eYRuU+I6lmNYmtsiK07VdcSwc+pn2qLHFs5FsZdZGwtHI1j9WwWVMqYm4rtvu7Deaq2tEQlovpZbgNfk24YocpBVAogEA/G59w/X0Mqo2IcV1BpMx6rP8AXV4jlOldK+NmWWKWzehvbLqcipK1NcbTulyva9Siysztpo+Ba3Kqr7sCkOuns/dz8nyP4/vNT+PsaGo37T4B+nHgbEP1oTX4fcTxUojsOJPtjkJFvbud1iLvdk7QovZRG8UZxauml+QO5a1lq0KFTyZjUnfG2IXptVtFiDYzskyjyv1+dTUImtn6hM3snxH1qrGq+Tjvj1UNkDGGPZkNdkA3Rse/jc+R3W9o9HFMVF3aRupwLQNTkONgCms8ST6E+7/SzctA3/Y/jxOO/wAHcx8ay5/iY9Q44/HPx1rA8D2jHyq+pPsda23b+hr1ABniEgTHavtWILKeya4/tRbezWZDlq01uhvKcSihSPpS5QhxP0ydVgr4t0BXcvGz8ctTluMST55MSR5hB15EO4fJs6dca8JESq2gPmW6WqvJuFld/Kdbx1YZCgWmwynirXgpAvNQgMrLLLa9z6g8H+eX4B8WRYdQ/ncr9nNr7yMqxIL7BPkbPjc8weRyWEoY59mPhuUr2JoGIIltcd+3Uba2uTzU/H5V6+gIU0EvD6oOKoG2dbJQ8QOMEp2BUQC7Lq0e3GED8ek5LOXIn64wKYU8CoGU2f8AtGlQbSqrjsMg5dLmVUc1z8psah1cRVbSLY7MjGtKtPWIVPD9kt2APJizxyB1LYPxs7g8QfVR4kOWWzW+2zRqbmgxbIMMmfDBi4dfIYlUGOgllHud8mPlmhEQOGtrDE1hsc1cTiqObclZU+RXXWKha3sG5OBshROPGC3iyKWbxz3HfY4sx8AtZ5AMIh8Q+YFnGaH4I3OE7VZNtnbpyM4319Kt3e+Oplo7M6xmY7hjp91MQS632jktntTrl3GE0tku8TwSymDTRvs72VLj4B7K4s7FcGPXs1CdkS1NDme5X+pKkGuIn8TUK/jUZC0fiiP5JPGFp/WtbJsGqvRGKxZ7SwyKWjrXar1ukRStU149tJUJR5HY4MW9mHJWq83UshSs7K6jRR51PWa8gfk/dPUOFrZKvYcU2PTQwsIAl27cTNQq2q7FCpusstl/6qnesd/LD2VdxgIzJyP2v7m+128q1UCuyFmhNTU0JmoQo8yj0QH3GzAJr8H6348fi30TIs7n4Jh8x+4Ex9ctKlON6M9jtkp9b9ydz2NI8EHxXYY9oLJ9VuTLOatyJgJMya3avzGXcUfjRMAXexs75RtQsZmDYw7Aa8KoVK6L28fq+MZ1jqPZx2stsTysRACieLe41ntNPWKn5oW0WO46vyYaixKu5K0CzMPvR7jiBAJxmh+MoBgmw6KxlK+Qs1CDNRiFNY8aH4zGUV2JXtvsH9MeQxaYRLJlMa7McmcFWwE9zXtK2O98o0JIAILC0CUWKZZd5L2CV2kxf+NwFgnIfhfv6J3NKRsTYnmJ3MiurHqZMAaqfqN9eR1O178h0d0C6DjQZ2RqlTXe8F1eIsCDS6MaLQHsC4QgwawwGgBMv/n6c+5ubE1OJhpJnx4uOgnAar9ciEGcYSJlH2QrqchM5laHGvaJh3avXtjn7dxpiWPXb1Otbciqg6rHclygWhRAsyKyDik8SPB+1X2VTrjxV11BuceMa1tc/B+gNfjYE5Q+RsfhjqeddTSvF6UMkb6zffVLMi5379pi3WArkssGWpFl9ZCWrOIEXFusPxbawJsA+Sa1JARgaVedpoUcH4/I9Oq4AVuVFR2ABNichOUJhMf/APY3DPcD9SZD/qV7AbZLJ5I8oqM1+QNXrfY/ZaW4TNKMN6VYebE7aOy0y9g5xCli8Jm1nhiLyrdNR6tRgUlGwNNFCgrxZXTlT2zO157R0KmE7LTstO0TDVqdudozs+ezM3p+Pm4WV/jTAN/jmSXu6LYhbpWQIcDKE+PYIKDDjbi4tgZcflKFtrnNtaDMEq2Ernr+Nzc2fyRAuppYNfn6hsQQ2tyDWT9TfGwjg0OOhgpUTtTtTtTtwouyiiJ6wPye3zUzHv3WbmW4ZQfTo9df4yNmrp/3b5i6Q7RjtYpXYHnflvrRgXYm/K7nifyTOcFimG4aFsbrHtV1AmLnJHyMa2GrAefBVp/ri0bpgh6f7f65t/68iN00z4yh/ijfxUnxfPxzyNMarUFeoVmjCPxqcfwfvx+CkKCBYVnjlYV2e1z7djEY8VdRgOKaI7YEZK9cRLe9y7eQtdbi+u81oBWHVRpel7GPsRtEYKlZkORC5i2tP1DBy3URsj25ahsm2M8zmRGs8h5y3AZ4355OFK1lTGbybRGZGa3jxAiWskGUS3y35/Lr0MuDKM+S7TlbGNgNjOYrcWLzkBN1zlXP04wTWpoCNP5M3+W5TnZzL2KLMljChsNOMeVePWs46YeDxG+IUqFhnHZK7nGPxWWBFtuocjGUGtxxbALfGOydOa8McqrNtO344ARLP15/YNCf0jyYMDy9o3svneiQQwhcgrszR0rMGcLCzzlbOVkaxp3n0bjGIed2C0Tkm0evTmucq4Hrn3CPULBsTW4RZDyi/RSaAh3yMP51PE+5pJ2lBux7WNbsrDJpndDQ6actEkzluE7mx+C25kULdX8GtExBbe70c4OXLpI5Y/Ebrs5ZYfjbw0ebkibIfxOJIpWeVgr8mkxUVSUhQAiceQ4JOCwKY1QM4kn+f54mcG35ELNAWIX8HxPG9/jepyWCA6inY3PE1DzWK02sH2xnOHZh5Qb/AAYdEI5A/iX41VjaZFDNFLTuPsspclYHaBmgYwGa84qkjjM1OGZ0hgrZ1q004ldddKpVvRY9pAbEBi/86/uX2iJ4/G/O2MMEZgINgA6mtQT12VM0NzztvpSVm/x/B3Dz0Nzc+/xr8eIIRGXg3IwQ6hHj6A0Zx3BuaP48w7m/JMdm0HmwQDqOpZvO3r5TsQK5l9WSIxsxwHcxL0MD8ozkBzYZnDUxWIvydXWLapWrgx5acbM/jGc94cWipFUJNzztuM5rvxGE8T1M1o+fwGM5RuUUHR+vEb1gc68kedQjxwJnBSERVniczOREbzEBn6m13rcGtDzOP49jGDb+oZ5Ijo5gVpwnHjGQMOLcdsDz87gnHcKeeBlitLVcl8ZTGouRa8h0C5HMZjBqcduMxl1HQFuyY6hjt1nd02I7hFLGWWEBbY1ilUZJ4hIDcjqu4tDZyRCIvgKZyn1CRGpMSsxajOB32LOS02bNNvEBu4VYTiNtXHrENYgA0RqGfwD+AZ9zXkLqanHwPoDU34biAIGMPLSMonIGE+PGrA5ZQ80YAZ/JIn8HuRlE4GfrrDXf3DVkS3FlioteIDDz5IwB7qxbQWJG8x1SmjJRK6ybRx5GuqVVoHtLcvaA7LbhHnfGG9CeSzuid7YazbbGg1Lzs0a7dU7aQVmMNQDaHt7sCQ64u4EVQ7tjsxWsQUAKUG7KKmD4w4mllIpEWpd9lQGoEVVjpxlrBZ3yZjOLCyeGqG9VwLsdkxq9Mp2G+gq6Ktvi2uB0RNDlpZx8keGTz2js1wpDVuHGBi43F3DbVPaynYC21rb8ucrGdXYWU3R8jUozW71+Qa6mzneJkjnW3g6Dhk4bVoRsabXDhNmFmWOLBP1FhyreSZFgYZLSrLnyhDmcm+UA7ZVUvtpMVqzLKqyi0MtJpvsnx7mjV3GV12CKjtLV4xW8PyVV3yyqn2BqGkkdpSPjr26scIpRw2+RSkPDjuk7T8ez7PjAwYq8Th6rqR1nbRwKE4fBWfCPL4y82wp8JtnGtllNnKyhkIx3MekzsGWUPOFomn0qMZ2WMso8DHUG/AQmrpw5WYPIt0z1HT3Qph2ayKTK+6JyuDG1wKchhFzFE71bTuVid1YxBDuQqUDhdhh0XEs43YorWnH9LEKHttzfFGrannaZ1aphBUQfqJsRWs1yujWWSxrd87I9lkay3QuteDIKlrixN7grkEz5Hhb9myxGHNIbmSLlyzK2q38ibWheyLa3BL3Ba+wk5T8a8gyvME+WpKWnmMu0lc4BbMtCoyKuPfqMZ6GZTTys+KZWmLxb4yvyx96x9BadcKp262laUa7aidtJbi45jYdXbfCv4NiZagrchtxxv4aPH6dduzDvQfqBVe0FMlxLchtaCNVapmiVX2hBjK7x15BFbYrBYKunrO3rLF6lWW0gsF4vUm3NMegmWUWRap29EVGdtyV5acvBZxZlJgQ9vg4h8BT4Ybg3OVZchwF7hNIbTBlbj4FZ2a5XVxKan1CSYDCDNe4sXhzHELsGkGK3kG0qVsE2YWE5QMYCdAx28QE7DusGRaJ32iZU7mNrhjGdigl8INLMA8r8ARsbGlqAxKhEBWIyzcZVn036YPJNBk3xVgyQ1OXaptGl2nx9Ds84aDOy4SpWKrTuWVaQ4+41REXal0O9ExFsgV+2Md2NeP7/AAhv4uocNImKhBxgJRUvcsSsscfxZSeTUkyyoqvHU4blg4zY06+P7kMsQv3NttKeddmItcHMXc4zT0M9NWBSFRYavH8lBvU7ZKcLAzqwm/HLibCzRbXRa77Fny3WfOsIbMsj2IYSgZjqbTWwFDAwmWJziVhE4ieJ/P8AJ5Qc43gBR+AfHiMEVdAzhGqWdhDDj+TSixVG+KwlQKyCPUz+PWBUK8RtaVVrKkMFQWGsRKxtqQScdNtQsuwuRTArC3Ybg04VgdqfZ8RouL5qx+DoocWYoY1YFqFMUOhx63luMhBwxwXC1Y2ITDhAPbhKwtwF7teJyl+ERHxbQDWdbBCLLBucTGExbRTZeA2WSrRUt3ch06eiqTLU3KxoQEmcvHKEnXOERjo1ly1g5L7ouzrKe5ImWchrMyyq6m4244ZzOQ2x1LLSK6rTvlxbQIX1O/cQ/gxWO/48b8M2vPvDORAWDg9ngLyjqlilBBWFD8N9yvXfEGSGPdVYMmrmxBDPpGcFE4y7nxM+Rcr12MbIF2bAK3sx6ngw61Awv00wuMvwmAbBfl8ezka+MA3Fn8/w3rE2JoleJ5HYJfVpLmOjmtCSuhrUA4rrc4+LGXXCmo8a7KuYrCupG9tHqFkFSQj2dwsdxFO0Phix0hYMfrfsGBDEGCKTtH2Wcw7ChvDuAe7uLYrkSh3J5tsHlOC9yyoPSuMssrMfHa2VVcFtrDVUVwV8X8cWHlRuW0WLaLSro6CPdQZXol6E5lG2oO1IsVjqcp//xAAoEQACAQQCAQQBBQEAAAAAAAAAARECEBIhIDEDEzBBUUAiMkJQYXH/2gAIAQMBAT8BpeoQ6IUv+6bg/wCezHCLf4NJMqa6X4kEe1H5NTg8jm65K88In/pA0l7EEEcYII/pW4tW/g37PxabIYhdWxd4II/pYtv2JMtlTlmWvZiyuuD0oGOv+odQtCYtjVk7MQ0dm1+GrLo/4JYr+oxEjES2NWiSBX6G0QjHi/eg6KpfY4+P6aBK8jZWpFSx9FOiqrZTWpGSKz2PT4LgxWavJNoG4P8ASf6GBuDITtA9IyKUR8E9xboT0LSln+lNJJF2pKuE8GuKGrvY4PjQ/wA2SSl/ZnvQnJ5CtSkU0w9WmBMj5KarUpJCGUjQ0kZCdmK3k6uhivNvgdkhido2NIUMdP5SX2dFQ5TE5cihaKtFOuh/qOyllWtlFbMkJlFUVGxLV/i1ZBT/AKLb4PY7PV4Iv8HZEDYrQM7E0iR2Y1H4EWkmENiRVBKHtiZXopZXVJIuiUxtEk6FbvZTuk3BDtJJVozKahVwZHZFvJF4u2J3m0XaO0VKGY2/7ZL7K/vlPJnV09Wq0PomTor7JhFFRMDUsVkioTjiikVquiRIqaR+5kQJbHTZDYzy2i1VQ6/o3ApFPyPm1I6btW6JEPs+B9GOpOyk+SLyhMqq3ZrVqlOiJWhjq4KlmWzu77PnkmU1EaEK6hWaNlIhklbtJW9HYoRkyljVkhWXCTK1UM6Q9WpHsmSgqqhCdmOtQUqUNMUtj0yjeyp7MtCqM5KGRLKoIu3N3d8o0hShuabIY2rriiu9QqRIRCt0SMm7OxKBjrJMvoh3xk+RHk6OmVM+B9aFb+RXJS9Wp6GLopZkoKrvg+/ZcxopKRqBC2NCOyIHpCIMXatbu3sVSEzJopq+B3qHbLjFmTeYtT9FRXTBQyvopUlDKeh/uKqpKFLPIv1FPQ7Pom3xzj2PG9nTKaSrezybKVA9lIiZZUKoStUmtjGSdmJpEoWh2kY7QJC0Ips0PRM8UaqKlKKDs8aSMf1QNwhOGVOSlwPbM3xfuTBIhU/YipfJJ/EqcFDtTvoqeyIGMpTZJXV8HzarSOhNigSQ6SIEPQhkjEh07J0K9VKY+xrjRMlQiSTLY2fIyT55Md1xYrMiyqFWiU+rfxIIKXCKXqRMdqqpZMIfkQ3NmNSOCBQKzNjdsoJGIyRKQnN3TU2OmHabpiZl92yJG9kz+AzLY7TZnwK6FVJ/E7NlKlHZBUypaPHTLK6pdkhIYxRbohjZNm7QrQQYkHXCqT4sh2Q4918lZ2jixWRXq1LhCezs+CikpiSpxVoqrlFWldEjqGrq+uMEWQzuzklyNffN2d4srtlJVZ65OyMhEEW+bLZgNaKlBT0KyKao0eN7PIUlSlDduieKRAlZqyEJDs+jfdurL/SqqebRUotI+T5xaRiHydqFDGVDclDtMDdn
343+ +jZU5KZk8jacDJjmneTsdkZE30N3q6t0SPhPF3XOObFxYiRfq0YbkqphFB2NqRaGoqPN8IRS4ZVVLJJ4tWpRsdpJk0OokpsxsSs5KnaR3dkiIumPbvH4jFamR1PE8lUlHdo2V1Cr+yrdQjFQMi82pRocEkk3kki1MWkaJUH7hKCqDZ0ZXiyHx7F7y4spZJI+ilk4lbkp7u+xbY6dkQVuFAyCOGQ6iSSbwQdEyQKoyFZoppgY6CGhnRAhWizshEfhofd0MxIgq+yizeytFOmNjrUnkluB8Hd8YbIOrQQQIXeydGVnaru0lTE7pjHxYrK/V2x1MyZSzs1x+eKK18j6UiYzyfuK3oRV0NbK+ybzwdoIMbwQaFZCF1eSSq0DFZCUDXNWXF6IkVJiiOMM3wdkpKf9Kqf0iTVqm3UV9W/iLbK3L4Mnihk3i0XiRXWxiR0aGOy3ZWqHxV44VbvJkh1o9RHqHqHqMyYqrq0wNp7H0JzZ9lXRUeH6GlRLJvHFSzZ3dLjkjIbYtEjKR0ogqdodkrIWjsfFEwOozH5R+RmRkUsgeipkEcHZRZHZFpSHtFP2JzsaPgdJRqo83CbJWggj2JJvP0JikVmObtHVoGLZVx6E8iom8EFNu9D65NcKVHD5P4j0hEHwNi7PL0TeCLRd8I5wNCIgo0jJFVaRkdkjdoGhM6GK0EwMoKuiCDE0QUo18kor4pDV1sVn2MRQipSxDZ2VEiWVJVS4J4T7ejRq7py2OkQ20OqeED4RfI29mY3anoxb6H42RA2SbN2Q+uNC0O6E0YNjpaZiYoWirsT2eRFD0Pu3hejzVSrsqi8EDENEXghGiDRBVoq3eEQjEwYqWNcJJs2SMgmk9Wkfkx6KvIZHfJdXSRC+xLRKkbQqoMiiqkfkTFUrShVqRnj7O2KmDzeP+St4qvg8q0K0lVpsySSWSSSSSSS7Jj2OSX9D8h6iM0SjJDqRKKql8DqMiTIknnL5wQQavk0MghkWgxZToqWlAtQxnjUCoxt5erU9lamn2GQQRZEEGJqzEz1DIyG0zGg9M9IfjPTZ6bPSPSMTA9MwMSCCCPfl26s7dnQ5+DYojZ6i6Kn8iSWzyVbt5HeNcYu7RJFpEjQiUSjRpnqL6PUX0eqvofk/wzMzMdZmjMzMiWbG39E/4T/hJ+k0aIXKCCBR8mNBjR8D8dMH7WOqTsgi0Wi8Cpb6KVqHatPsXR5CSHEiWuEfp4TaUhMeyCTQyBUWX0SyaiWSzJmTJMryjRokm8EEXj2keo0N5EMzMyeORI6v8F5IFW5K64FU1atEEfoxF0VLer5agnhBBAyLxaSUIkk3+PPNOBEX9PV5JJJMhXqXxajorRSpZ5KtmRmybRqy5RZ+4n7qMSOEcI4zBKZF9MaIEiBQYSQdCZM28T+Cv9p4+mzZN0P9qtHsz+DBjxg2hSd8ZGRxTg0QSNzaLwQYkM3SzJfRVR9Hpv4PTqPHRVS9jUqDyVr9qslwqXRA7rhJIuMo2YmJiYMxMWQQQYjRPFMbnsmy5a4Q3x7IN8JNmTPUZmLyQeqz1GU1v5PgeyLKGYmOyqpySafOLNcG7aIRCIItBA7MSkwMTAxMEemYmJCMDEhEQMkWyLQJEcIIZDIvF4MboyPUZJkShQJoSgiTEdJiJEFSEyTIlDdm5JvBkzJmYqz1D1DMzQ6kyV8kIxfwQ2Y1EMhkDuiqkgxkxMdGJDsqTEgxHQYGAqYIIRgjBGCMEYDoMB0GDMSBoiyTItMm0ZSKRDdlbExGiGSSZE2xMBUlVAqR0mOx0DpYkx0mLVkJsljqY2yWSySWeoTI6hVGRkSrSSOoyMjIyZmx1MzYqzMVcirMmKsdRmZIlGh4iVI4P0kUkISRCYqaTEgdCMUYMwZiyGKTITkhDpIun7EDQ0NEEEGJiOkggVOpMSLYkEDR1x6skdMkQ1ZGzvhlokSkxJN2kl8JMmSxMyM2ZHqGVJFJgj0x+M9MwGJWVoI5RaCCCCBJkEaMR0nQ7JMxMBUmBgYGBgJDRiYmI6TEgizVmhWVOjGCBMd9CRgOkxMSOWTQq2eoeqeozv8AIggj2oIIIIIIIMTEdBgOgdAqTEgxQqDFDSY6TAwMTExHSYDoMSLJEEWWirvj2QL3XK6JbHIuDZv8mSbST7UDpMTAwMCqgwMCPcifej2J9vL2OyCB0kezPs//xAAvEQACAgEEAQQCAQMEAwEAAAAAAQIRIQMQEjFBBBMiUSBhMhRQcSMwQlIzQIGR/9oACAECAQE/AZvUUuUT5eV/etOLuzUkn0Xs2XsxvajH4xhKaU4yFFccsSr+8acOSYo8IX9llC/Fkd7/AA0pyvHQ+aFfn+7cXV7VwhS8ltKt3+FjR42vd7J8dU5oTvr+0tpdn9Tp/Y9SKVkdaM/4i/Nqh0sF1VCrkcnxpj/Nr8V+F+7PjdGnp8EZGq/s8p0ThLVyShIklFWiE4KfJo5xnC0ajnCNoetqS7Ia8nL5kp020aevKLyxa0V2S1VqUrKb287Pbzve72Yhfg9JpmnqTjJciPyz/Z21FWyOvCrRq6vHA9ZceKJ63wVkNWN46IJxuuifqFGPEeszlfZSKLckK07P6vVTNL10ZYnge3nZ/j1svzhqRl8hOUpYPT6SUbsV1n+x2rolq0S11GzU9Y28Dm5dEtSTXyI/xsUVLJ7OcDlxVDSRxKTZDT8k9P4WQTOIxxNLVcH2R1FJWvxrdiW0kLH46fbTIxnytEKlghHiv7A2lklqtGnJvA/mx/F5JSH3k04pypmrDycWacZfyiUuKvsem+xaf2Tj9E9Hk6gRjSXI1JciOmPB2SqrLVnpI1C/wvbvZ/7OhHjboi2N+5KmQXCNf+3KVGnLkS6Fbya2fjEjCTjUjWVHp0pRs03U2jVnyQ7bs9rk8jjKLon/ABoysCdZQ/VyeZE9ScnaPTa3iQ5Meo1LDPcm1TIriyVROxcWuzU4wgThnB6F/wCpuh72W9vA9l+GlrVhkNWUnZNz05cjS1+XY1W9f+rOfEnO8obclZpSq2Q4zh8iUVGFIlyksmm2yc+bqRBvSeR2nZNclSNON4NXRjWOx6DlI4JIencMGpE44Hp4s6ES5PwaM21TOV4OJJ18UfvbBp0pqQpqXW3W1lWVs2Lo72v8OLizSioqzUjLVRpwrDNCPFWxuzohLkr/APQnNQOSHKiMm20ceVkpJs0eQ4yvApNLI4ySo0G334JRNOCQ0iccChjohCSyyvo4O+TOColUVbNTXtVAecmlXZqK3gcR2huUSL5dHFoy2NvJ/wCR5FhnEo9IprPjZuihsQ3gi972reSsj/PJpO40yeu4ql2K0aafH47aut8qR6SWaZJV/sPG/POCE4sjqW6HJocG3Qm6ohciDcW7FdDzTNJYIrlI1tO8I4fZCa42PJRO/BT4pEYjVCPB4NeMm/0a8VF0jjUTg2sGnjBrp3kU/s/l0R+KJIQxOmNHveDTjzs9HabW1bSmOV9GRbP89KSeo5M55Pa5ZGvBoa0liQ9SKMTlYovo5yo0tWxajciM3yyS1PlgcmnknJpnu3Gz3W2c3aOSyipVY4kIsj/E5XNiWaISppnLNs+V2jTi54Ip8cnDyUTklgccYNPKHs8s6YnYu8D21mlA48oktBKJKHFWiE6NSfuZF0JPwR1LVnckibVlWTiQuQ+iLPTy5Rsss1H8TvtiwWxPfwL8LIT42ODbtn8T+XRFuBKbnIS5o7eCTSI4IOjVqyC5SJwXY/2aVt0R0W2auJUQnCqOKjEjU4/s1ZOLUUaWY0ySrUSJ6S7Fo8TWg1k5/ChRlzso5/Ki8CVMcSA9sslgX4ayuJqclg9xt0TdHCsnFlcXkcYpGkrVGp8Vg7P+WBqmKHt5JSbYnTs9LpyUrK2mmKJERjbosf4SIq5FusEFatkdC8k2ukQ05x+Ryg1dmVZwItdDJNeDRS5IcbIR7ZyfLkX8sjW0JfB2aXC8E43OzpGv/LkhVI428mtDDFCXLJC6E2eSfQkP8KPI/wAGzVkudHFJ8ma0byj+RfGOBJyQlXZoVVkvkcsKI2uySfYpfAlp2uROLZ6POlskSn8hTTwRZyoTHvLse3Lbg4/I96kTdRwPXbwRVo0rm+8GiotcWNUqLJR2cU8kbUrNLV5Kn2akHTo0pfLJJqJqRSJYmRxp0yEKeDWlwhg0J/A1cM0m1KjyPslFEbGyiWFtbsoQsflZqPA5ebFmPYsOxeY0c1fQqrBqKKp/ZHEG0S+PQsR5CtywLT8nxUcktSTZ6fVhN+3JEYKGIjHIpSOJhFpiHtZ5JCKKNVcka8VGC+zWa8CNNxSyaff2yMc2i8jqyRRFmYXRpyrURqU40NcKNebkS1E9LkRXPI4ckQhRqx5//CMeKPZUsijR0djK2vBytHgR2IrOyytro5YEa8pTeDjy7eSPODrab+KFHkRicbWSWpT/AEiK5vJOSl10J0zRhzNZJqzUweg0E/8AUPO0sIQpMjQkihiHgTyMsbFk09RSRqx+eSdJYKtCNFzj0aZWR/yJSxsiRDuim45JQvIo4HB1RpJt8SCxREvIyP5v6Kz+LJfQhsYkPoWk4uz+mZw4YkSTujUddlWrIP7ZKNGpb8EU+kLrJVs0NL2o0a0s0P02oz02j7So7HhElY6FESW72b25UYJIQ9F+CXPUdEtPjhlKrOkQ1ocUQ+S5FkXZLoUcFHGxQp2R6ye2qwRgjgRjkzshkd3+CKKENilke1nZL+R0t0a6wR1K7NSNuzi30h/TM8US/wDHZBXIWm8yZpS4zsnOlgjppJWeSK2ZLojQ9qLLENjKWzEieq6ryKbVl8mLsoaXI5WsDwjKVEc4Oi8Fik7zukOhd79MYhO9nuhbLZkdpYGxYP2fofY0dEsonpfEcKjggvBOJ/HTRKVaWRSUYuj0sfe0qmQ9KtOXNsird7MRZysaFst62Y9qHE/wTpozJjdUh/oXyeSHt/RFw6RfkR0zveDbETL2oTF1smN0Q6H2Mbos8HaHs3jaA54OysjEeSTonr/Q/V6iNP1X/cm7jaLXEc/olJyXL/8ATWXwVDUtTT/ZOP8ApPiegllo14SlPPRLUlo6iroc/ouyM6WTlf4ooSMjQxFbPbnykkNRj8TUpSwdRs7ySrCiaOmtNZ7Kzg4u6JnaxvGdEZtjEx7UIvIiR4FsxO0IQ3glLBQkPAkJbPZs1dS8I1HQotYPbtGk3p4fRp9cWT0SCccM1VhJGg3zPbWpcUaejHT6JC04zqTJOI9on+RD2T35F2MW3I7OIlZykim2e4oqhmiqn1Z+jjxwXSJCd5JI6ErKr8GzxYvsXd7NZKEUSRWB9bMrd/lqdChTJRuQ4rsvgaHHUdMWlU+RqyadEdZ8qaJx5fE0XUD00e5DyTnyMoedmIuhSsaGyK8mR7XtaHMcyGdtNWacaeSc1FWjU/nkjD/sjRqMLQn5LJrJRGVSpknY+hSyXaFtyobtifxPBRZ5/BoY0L/Ze0kKJwNWL40j2nOrNLQSlyJPNF/JohpVK2Sk4ytdi1mnchakYxuyM3Mao/zu87N32aS2dWWOQ5nMbORz306GiOjLnkz4KnKVIei4fJmprOZp85uoiuOBrihzZhlPyWh2IhteSRVDZHZb9/70yLo5bN0cnIpo0brJJfIZfIcLlZxTfyJJRdEJ2/0T2X4NUe5SPcs5HMssvbs6LEQmkz3bPcOSHqpGr6nnGttL1ij2iOpGT7G7wdI4UhSxQ0cntBVIkRE7IlCx/uIe97Il2XvLPQ4KjgvJBj5WOLNN/Jo012OObJRSIQjBku6LGWSQ2PZdbssra6Hk4lMoQ54wSt9kY8icYohV5FODdsio0uOynmibYl9ElaL8M8kHaySyeTwIe0X/ALE9RRR7kpHKX2ac7w91+GL2seNq+yV3RGVPI5WWacPjYnnbUTLdkpbcdsjGYL3o41+V7JHuoeo+yOpascnZKij0uo00iDtHHySzgjXR0WPPRCfhnY9q3X5vCOP2R00zhE9v8siFtIvZxfZFW2cWlQ+iCaiLvarRWSV3na9myxnRZaLLLZkpnHeyxM8E7ZyKZGSvI5Hp9P3XYmnkbG0uhyzZztDE8l2R+x7+Nl+cslUfs5JCnE91HvHvHutnus9xi1MboRgsWGcjtbSlxVjny6NJ0LGSUh7WPL/BMyKIyxIyiyyyzkc9qTwOH2ONdbRVnpdGadiyjI8EIds44JdFWK4uxbJ7ouh6p7p7jPcZzOZGRWCfxJSL3ssZYmkXYihLZtEXkl9beCSuIuUHZFpk9mY28khbYQpDYns2XtY3+HD6OBVLI3bwdEe8I0nikO4lseUR+LLJr6F0Rkf42QxF0N8mWWWWWWaUvAyfywNY2svfHkb2jkhGtq2VeDqQnbseRpUP9FYojgmvP4se/kVIssb2syyivwgPKL+xtJn9JL+SNDRcpfLoUYx6Oy/ob+xNGDDJKhQsSoVCGOdDdmmibr8tPA+slpGq8De9kVZPsvbTTvAm/rbzsiWMkVgkWchvaUvidb0SiOxYLGI7GdF7qi9qKJUicpxfyOas9iMockelgoRItI5CdiVkm+jh9FUNlik09uQ3JktWVbWafRqQbY9OQ4tFlnI9weo2KRK3Cyy0Xtor4tsnd7cWaUWsi1YobsSKOKGhPA3ZOVIh0Ms03yVE48XW9jLsTssuxYEtnvX40aUZSkx6T6aPS6UX2iOnFLBwicUPTs9tigyUXs9SMTnGQooRY2WSkqLRyge7FEtVIlrI91Epb2y9ote272r9lL/sVH/sacPj2SaTLRHUo5WQlE5Jikjkhzij3ot0hvBpvkxw5M0ouOGat2cj0+pmj1K8lnIi7JFovZSOR7hzPcR7h7iPcR7h7p7h7iPdFr5tD9XQvWoXrIi9TBnvwPcRzOdHuI9xIm4yK/Ym10zlL7OUvs5PZlljkzmLUZbYl+xpnHahQkxaf7OEfsqB8THhC15Loeo32chM5ltlsyRdGpXFURw0yRopx7I3yEeqb20sTR6n+AjLEtnuxb2WKDZwYtM9uJ7YtM9tHCZVbUXI9ySPeYtdn9Qe9Z7p7h7h7hzOZys5HKy2Wyy97ZkX0PazkWci/wBEbFGV1RJKBy/Q7kKFEkixp38T5FtR+WBTg2TdUyVt4P4MR6r+RxZFUzV+UCMShmBvGzssaQoDge2jicSq25Fosf7LgXAcoikjkjDKEcWUzJyMHxMb19CTKZTMmS9r/CyPHyVAUdNuhaEa6HUGS1ZPoblLsSREyPvajlRyHI01OT+JG+NS7IyNVNOyLwepa5FnG1ZdoSos7JL4bXskKhVR/wDS6HRZaKKK2TbwihbYOJQkzhW1GRispl/osb2UmJo/wWXtSH+cb7I+tku0P1OnqLOCXdopnKjkyy7KOJwxgo5x/wCpH1HFYRHXk3bNWah/EhquxZR6v+SM9slB8EkSm1FDdlIZ43aLFJbUvI9qdmRZOTOSItDnteyaLS3b3rfLHaEjAxijgriVGSOO1mTO9FDIzonT62ZHVcSk8kkURizjNnBp5HDicKeRy+jJ/km6wZfRoP4I9XC0maelcsk7nPs4OXkcJJDs6wONRTe1bdii9pZKKONnMljoqs/lZ2Vve172hTG7GzkdlCVlFlikvJxLaLOW6KscdkkzjtZaHQpfQtVo5qyGvGj2ueUxaOSWm0NyE7ZDVaNCdmqrg7NNcU2LrKMWeRT+jman8EZRYpllPwZOTR7jExtj6wUyvsSyV9FFFbeS8lMVDp7pisl+ziKRgohFDRyZdjR+ijKLHQ1szoUkizFnRGbRyVmGUPBx8lstkXZbFNw7FrxkNIlop9HstGgmpE1aNbU8I9xjmJ7cUay6Q68HDJwd2jspNJjR0XbJadE1WBJLopeDychv6ORzVF0ORyORzRyTGJWNmBf5JOzwNnJCFJocmz/BlmUNotHLd7N7ccDRx35LyjHjaxbdFi1Z/Z/Uz85Pd0/MRa8V0hepkuha7k+iE3eTU6PjVjXkplYEjQi5ais1Fc7YlXRKeaLY00NZMdFIUeXReKP5dj0ZLJTHFj5HYhMZHIztF4L25NCdiH2cjls8l0cyyy2i2zkNkSrHpko0VYxOhSOTLMHR2VQyzsSGKRYpHM5o5MU2mLVHr2qOaPdfQpo/05dijokIxgrHG0T0rdi0T2voejKTyOB7NK0JcWKT8HJ+dlPIpjny/keBJPoi4tlJjSSIpEo0cBQY4WcTgxQoz4JT8HgtDkmckckf4LplZGh4EOJdEZUc2jlZaY8DeBYRaYpUczkc8DkdsS+zwcX4G2KTXZa7FJPJcWUc6FJnIWomXEuI3RzFOh6zI+oklRP1DZH1HFUf1bs/q7P6pC1c9kuDFGLyLTTZPR+j+nZ7c0ODOJHBGNnIUrPj5OZJ5wJ4FLBeRT5DaRzyX4OyI0cTihRVlIVGBlJYH1RRwHDBkWmziOJwwe2PSwLTOBwwe2cRwON4Irjgfe1UU0sHF9iXxyMspkcbUUzg2cWUzySsr7LHKVnN3YpR8iemfGsMjOXhi9Q1hi9XpoXqNNlwKg/JLRjeBaI/tHL6FcmQkNros8D+y/A2hJvO0UXQ5Wy7Ofgcs0OVrblksQ2rLPBz8DaF0YrZyRaeBfssbRzxRG3tyJSpn8mKIlZJYMFjGySFJLByQqFKy4iyI/wddl2UdngQ4opeCkMdngoasqkQbSwxymkLGB5ZG1kTVn/I/Y55GYLViaY45wVITvbJRwsoksEUhujl5IzOX0Sn42jMUqVCyWNPkcjlyR2SuhF5HgchsTLFqOzJL4ili2KmJxQ+iviJeRzQmmOOSuPQtSzk/ApF1ghPA5NdHJnMUxpUWULLLycDoTFta6HRJpJDrimLGTlHwWVZKPxEvsaV4KOxp+CKZOorIopo5JYRH7MVkaQ0nSPb+x6VdHFnF9k4oUSMUcskZJdlR8DiYRxTViXyFHLJRyJHFC43RwyPTOFIp+Cvs5DlmkL7OV4YrXQ5ZoSzkTocnIlFkVZ0zKySdlj5idZG8GWsC62X0OchSORyXRyIzrJKV5Lzgq+yUei/+I8yyPTWaEhvwSZztHJknjBFjiS6wJX2T/Rxoj8TimOKPb8mo2kfJ1JHInKXgvAsOh/BnEyuzHK0J4ZI7Gznk5NrbyOJlDeBypW0RZxUisUOb6G7icV4OOCsiS2t9bckmakLH1Y5YyQaIN0S/kLkN/IV3krkS0Zxdjk0OdM9476EzwJ2ONDsj0cbY39nLiJ54scbXI45H8RdmThgbTdHWdnjAir25JPBz5dmpNil8UkcvkONZKtkUryf8qZIk02UsMcUsDRG1knpuKMFqycl5OVidkZjnkbwRlgdWPUz0c80z9C7Mt52vNDi4lWPORdDbSIpcbFG0OC05P6KMEpSXQ1aOdNJmnNHuQHlkkvJLTRFf8SK5LAousnNn//EAD0QAAEDAwIEBAQDBwQCAgMAAAEAAhESITEDQRAiUWETMnGBBEKRoSAjMxRSYrHB0fAwUHLhQPEkgkNTov/aAAgBAQAGPwInQ0GvGwolE+GWMEjGf961fF1I5cA83snag1vHn5qYXftwuunC/CIhYRQ3/BqO+Gmnt1Vf7RS52zh5VOoZec3/AN40KngfmX9IKZoUGjzS19nDZGBA7qI+vG4XbgBw3VKssTx/Oc2ok2Qd4LWzsVztAH+7DRc9ocRNzw1W6g0maulq0gTzEQhp676mt8oP98q+FMq6iBx6qV2UK8qEOLTq7kuiMXQ584hRX9kD1/2i5Vjw5YP+g/RmHNMLwjqjCc9sgMB0xZE6eqBrBojqjqPaAd49FJMu7rfhcwuvDCwrYUKFCz+BpzquEX/uvzACPXCeatMSZIFySvEooE2n/ZpKNF3IvMuPVOdEU9lzOBnsuynmCDaDdQXQULn2XlgzuUeoWq34dmqXjlsLyn/E6jdQDMum56ok5zYpxMyrFfyR67cBxuOESr8LrC7FdBxoax+hSM9Vqfnu1KRdoz/mU74jWJl253VLflt/s0FAaYZ
344+ UTdeDTci6paDy4JTHz1IHVFj4dVMdkGDlDTHqmDU1QI2UTpFs5LkaXY3BQEhUzcBVNbphrjNskozcHZQPh3afdrinanw2r4gA8scyjCi6ldOF1ZqzxiVEKwRqVxPqsLEcHabnHww20YWlpOlxLuRsbkDKjSc7QAhrj0ynVuc4udMuz/sN+Eb59l/CiYvsE6mBawQnmi9tlVVX/TsqMyLXunMzOE7xByRPW6rLSG01ZyVa1N4PRGewmnFkXS1zcWXh60kjdObQGgiagdwiw6YkYnZWG0KmGT6J4o3Ra7T/AON4+6OnqtI6LGAu6kqyuPQK6mUCrBHha3DsrkBZlaeo1jSbh1rgeyZ4h02Os1sprCQNPfrHSfVDxTVfl/8ANk8C44Cmeb0QAm1z6IF7OReNzRFkaWiBzeb7qSRHopAg7XRjzHKDQ11ZE+qqc1ocy/pZM0td93/NiP8AtPGi6dNgz9lp6Qnb3VDBfYkpzNR51JdU4Hqq/ig5zG+RvX/JTzpioF3LZAsdB690dSJ6ohojuiGiXYsmsNPdw5lekOi10xj2arIZvwlEqqVhbEngeOFJ4dlnhpg/Eu0oIa9oMx3Rh2vqt9f87ollLmG4gz6eiHiOLqR/5MqSUyry5KLjYgSmubJnaFph48o+pWrItVPq1RpkmRYlVNtt5kNKRQTLb4Wg8vIaOVzk8N3mJN/8/si256lYce4Xj+HqCTFhYpr3utYNMfzlDVgA10OtaF+aW+GcojQmggB0n/Oih2mxzQfMUH6LLHMbd1AaKqTMD/OipHha2jFTGuErS1dPTax+XgJ1RgKmnaOi5wC52G3RJ+Gc+oxZ2E/k1q2WpDYhUamk9ojJGU17b0vva6hRHDNuGLqdlni4jj24QF42gbuMFpOUGP0y0kTXt6Jnw+g5w1PmR8ZjiBaW/VeUt7FQD/4zWDd0FeG0828KjUIDZt6J1UxTBlef5II77KdO8Mqj90Jr3/vgqll7S6padi5syGm4TdTRfJN4cuTz6e5Geyc0QWxuJCrdMjztOV4gLmyZNXQo1/puEKTzEbFF8gH/AI4RGq0lp8wk3jdFrnzE7Zuq4FO5jCogBTt0RPh8vVAczQwQUC0w9xqI6qvmJ74TJuB0XjEjxPEMRtfCc1jp1Jk7yqtWT6oNruFq6elBOoIMmmU7T1Glrm5C7q6pCgqFT3UkIyowtuFvMrlSpai2pupzjem2yOnqFrRTBc01WU+K7VB2DITdXS1HBrnHPT+yr1tR7ZyMKAqttynNFo/1C5xiEHDfiCJ8yeXOFM2R8EkvcOVBz3QXRFu6DxLA93zHCaXP8Rr3ThC7iZ2OEARVe0pxbLnMbYdVW8h3LfpK/KuzU53AIQXZ32RjY9ZUZ6ShJcNSfluiPEhvllBgLxTjoVzOrrzKbpsAtgo9+qoAR8RtT9hkLw5OmP5f5ZeDXBgn1gSLJrfmOTCb5T1lZ9pTwGNg8roVD6XNnkJQbAMKwbsFpsaW8tnKwEOdZQCfZRPMLQqTdO0iyNZkfmWv2XVdkYhEzJXdY4QrK6mLcbcK2TpnxAGua4Y9uyr07sIH3/woarx+UG22koaeo1rNo2hQTyeV3/S/MInsntu0YIIz6fZMc2wd5zmeia9osR+Eua6wVuDIOSmbEqubYQb4kXyhL3Uz90XGKZ+y1GNJdeZheJmr7oCo5Bp62QwGgymcrQ0CqIQBEAkGYtZPbyQwchb0ToaGzfzIBvunl4FR8pRpDmOq807KlzxFAMxhOPzQpkpr3PpIdmJWpqAWuQFsoPVCeitwN4duvEf8u25VDtMvYWx6J3iMc0mwluU4g1APlt9lGmzm3k3TvCcA+PLCPjB0AU826y8g90IZe4uopDabnuVap3qjOLTZRMJrmFlW0rTbDQ974wtDVZT4lw8dMKTss24eaVLyFOJUYhciCgKJupqt+DQ+GY/TY4CXST0g290w+K3VbLa6nCwQnQc1hgBwsFqk87XOlrSMiyYH6jGsj/LrxGvkbwpIDm1yCTMjsjqAQH5A2XhabCBGZTAHBw8MgGqxK8RuHXTSDjmVc6lhek0pwbM99wqjt9kzQHmiE01O5THqogy3v/VN0wKKxMl9lEyfLBTNuaOqaRZodDuq1KpdeBf6LRi8u5/VN1OUdqlqNMfvae26GnoP8rPN1TWuc4ajMyPME14h7HiPZEtHLtfCLdioTXiIndCtoAjEWkhEudP9eF1PVWyoLl34i4HqifDlrhaCmu7wpe8chAEnLl+bJkfu2XhlgsYDkaPlF2kL81oM2cnNaJ03C3ZapjGoYU6lnbqabK57ppNFFWI3XKcDByjBbBHMvC5cT34irCAayypLYVp9UY+yjqgVMwuX0VyoCvwYHfDjUaG3dVFukLk0gWvk29fVMA1JIJpINN+l0zFRNp6JrH6Dh4cuLR/JPljm6T2ht8qIqcByc0ghUOFLh3VZfQxvljJTYZGoTtgpwDqIEC+ULieicWmHGyLT1zG6bSNsprth9kHN8xN4TX1c9yjqDzNaHRGeqP8AEU5jnRpvbMVYT9bX5hMNLtkNTScdvVajxYkZOD3VNc8vzYwnQQ2Meiex7cNyFUKaXaOXDJiydpGlxbZocfL1j7IIPDr7iMLzQEXE83miETGykXhWyvRQb/0XMrcOilHBkLSJpHnhEyRfPRO06ZJfLk3Te0mnEKp5Deko6ui9gcoLQ0CbdU2A4WvJRcSaKi4DurkFxgRPUpzn3gpwZaB0R0XNF30kLne8kuk3VOg4W5v7J2i506rHL1UxZT4YBUNA9lN2k9ln8E8ZJVlzXVbdSJAAJ7qrV1NSLHHX09kPh9F7Q145bJga1usZ89J6Kp2lGpIhhcb+v0+yOgHVudvWI9O/ont8HULNMRNJgBMMiIt6pw8o2ug8ahIFjnomhlXZc97S0npv/RanlplAh1+srSY2q9iPsnaR1GDm3bmyaQbVxm2AgHNpEB1Nle4bklaY0wItcj+6nU8gcWXyE5kvxA7KKR4mIIR0nM+Q+ipcCwd02h47wmGXdM7KNOagDYBTUS6N1aR6otaNuNMhGSUEB91iTw6ozwwoTXgtbFjBunaFYmndeHqNpkwSUKo8SfKDdeHqRS1s4gG6FMC8AZB9EG6XzbpjKi2TCpbNPdP+KNfh6bIH8XVMDhDyPoVD3VVGSQiQcgeyGhLSU5hLT1Ty+BXDh6IcAJ+iqMT0UyQenRTJsquFhHAwFZqwhK7FavwrSJoIq/iC1XkQKLtYcWRrLvF09Qlj8z1/l905zm1umcxBVDG11Nbzm1MLTo+H036hfahmf8/sjrMfqUzHN/nZNcbGPoq7OE9FDkAwc2Qm6fQyZ2Tg4+aJk2sqmN/KPRadceI7c9eqe7TeKtMA5k9/6fRPkw1ralEgADHsuZu04+yc5jJuMJ3iGXVIu1STAqt8yfHzXTnnzFnM6FV84PWbKpzgDu1AAYwrwQj1TqrwbIqBZEWXf0UBS4rorLMKx4dFlAU1GcL8vTgHYst1Rd4NEZ7pumZNUpnxVf5jmxHdNcdSdQCZphQ/BWq1zgXM3Wnow4Uec5jZU6hjQrhlvutP4RrCdJnO7+gT9V7Q0R0wixoM/KWqrTeHGASRsiQOctk7lN+P+H+IcQLWBaWp2prPL3RueAsiT5VN5UkrJI9VkqyuqZXRSVZvDCdcBxJaZwtd8OOkDLbzHb/OieXtoM3luO33QBH0tMJp0Ifpnzu3Tg93gaRsIPMeyjWbcW9FU10jBUmaUO2VdpQcDJBlaXiCBlzeyvIIdyhomUHU6ZDj8sQtYVGC2Baye2zjdr9rL9mN2tMkrw3OHMyKomCnRz9DhOn6uipfLGpzC+8KuebfZDTEi0EIzF8oznuUN0dlcXUKl3us2RMcI4CFAChAKUYsOHO0eX7IeG0nSfg5uhaHD/0jT1WqaQA3maPVXJIOyMAQvE0XEhwpf3TtU6lWrqEAtheI5pAZhHV1XF2s7MfyCIiqR9U3Gmx2G2EJ+lMsc4DIhSbdEfgWAUOAJtdeqjoqpbDVdDludlU0AKHGVEK/Cd11UG3DsoIU0uu3bYf4FqaWkY1Hx/O/2Wv4msSzDR72Tm+GKKOU/X/pUtJmmm59UNR+pQ7xAwibT1hTH5brD0CpAzhAEumZUjPqqQSYKveUG4AXieI2B1XIaTVlpsvDtNN5tJ9U2rzdVp6gJLmtiZz1QfUXXmDhOc20nZCZ6mVFTY+6tK7KO6uhhTP0RUwi4CFvK5iQouo6cLYVULdVbIRwB91QZEK/IM0gZK8f4c/nNyN/+00+aVqvGXOsqXWR8PTDgen9l4YHIwqjxP0xuvFP6bL4ViabKtjXQAjqPAaMADZO1aqoPJIi3X7LUqMjsMqoMLdNotPCVAuoj3K5c9SsT68cK6zbhMEKAogq8FPa9r7zbK8R0tvXTlw/yVOjpuazaR2TpOmNHNW//WydW99Gae/9Vqcj3SSQ6e6f8I7n1GdUAORyaC6HC2VUDgdUL/8ASDYB904B8MORsgwhhbvKDmlCpxtaSruqbHVDzduipOFzC6yZQJMHqrShwxdWUyiuqgk43VhZYUyvZEHKwgggFKpRj2QMGeiscp7WxSdzkIhtj6qLAtNMFfmG8IPY8tdlazhl0Sho0gT3ytWSKoikg3Wj8Np/NDDzdokdU/TDiIabtdGyhanhOIa4U+oVgu3AKzJQ2UkhSXQoGVJcjGFiFZyssrmAIVuDdV1b9LYgxB6pggGGHm62hDTbSxzQL95VT3RIEw7cA/8ASBmYJaR/JCvSOqXB1ib7wU/xdM+LJmU0co9UdTvhVtkndcsH3RnEqLI0r+JWvAULZXlRHuoaiDwARCwjSpUKPwD7ojifop22VlS1VduHdScbotc6YwQchTNuilwcQ+yqALnNIKZqNcBK1nU8rIrA+i0iLtZpy+BhaenTnVA82fZV/CPcx3zMcLL9nZo0k/qH+Sbc/mD7LcqxRBmVBV1bHC4WfwXCxwgwiiuZHSeZmLwj42q5tQqhP1W6moNHU06aa8d1qtcDqF3scc381qv+H0pc+HCrYqfGcTOakXarDp38xCp+duFa0bqAZ9kfNdRg7oSZ7qp3twcSjGymPoolABSOANgY2WTZGFuj3R7Ke67KMyo4QVO/ZSqjiFaeMqEBBnCHjazWCNroitzjNro/sY5wRyk+uE9muyk6eQVzVVVlaeiSC1O+GfNJM6B29F8TqHFWPdOaCTpltJ/hXw9f8UL4fVObtzlPGkY1PS6cXso1GNLg/wCq5wQ2MrTkHmtZN1NIZy6IUubLt42XXgV/0uizwvwucqB+CQtZ9Tqyw8zcr9o80Wk9Ux2tykDGNk/QrbVLiZtM7LSZ87nFz7c0bLW1PjQ5uk3fr6ojTB09CrkYdu6BeBU0Qg4WcRN0A2ZQ8RGaU0H3CvunGlbQunAyroSpjhdExwsrblWwhFkLXXUKrYIuVleFE8Ar7qlASVVqNHifKOiDnRGLqHlzQ2wAEEpp/hGfRDWbbXZ283ZaWsPI4iU68XTiHc4Mg9CtZzrVG/ZUinSbkVdVpa2u1z2gcg6o1vcRVIGwUiZ7L9n0XUigMdG+5VLjOmM3Xlv6qHBEcwIEwoZMcDwniFKvP4tRzmwwXJ/oiBBsHQHZ62+i8NmroghvlkQv2iJs242dKd8U/LIF/ey1QNR+jFLz/Ft9LqtplodlVyBzRBT2xyb3QkZtZFt+oMqmUGxBRlG+Twyp2XZyLcIN3CpvbhCuhdCCgeGeB47R+IphIwqtyLQgJ5j1K8LVPM3yGdui1PEwHEBuIR17sGoeS609JjqsSnueHWGdpleIypzqI1G9QvHb8xuOykzcSL5C0NGZDdO/YlQRIdlAA8zuq5uYnM7otaKm7IWinYInnP8AEoIq2VGk18yg7YZRUlUg/hvdWCvwxwYwu/KdYncH+y1PDLNP5QALvEj/AD6oseRDGl0o+BqM8QkCp2B6eya34fUa9jpr/wDS1dLW1LeUUzT6KmUYwDlGm7uh3TBYON0NRudzKufqjBv0RFBq6IzEKduEtsgPNuvXusxdFG/ArutipiUVdZ4eytAX9vwXKgZUKZQl0QVCD9QmOgMLWa3mdpOFV55evf8A9JugGBzQaw7cTePum6lPzQmvPMx/nCGhpOnxBc9AvCfLWDFI5j7oN0NSwOHHCcwMlwyooqIPVU4jdBxKLdb15Vy27kqDFOYCL7dlDOW9lAEg/RZWT/oWHCl2FhNGgfzMtFVXa5TT8TpmTe/2amO1aiXA42T/AIXSGo3TaagQ6LY6L957RNRT3azZ1NQe89VULE7wi0vE4Uh3ZR4dQDuieGfbCFiroQbI3nsrYPUoEytlCNV1ffhEKe3H1WEDwwunAKFkyuivfhPZYsrIrYH1VTvsUHaUh3UHmWm0fIIEes/1VLQbGyA1LNpn7ItdblKYwHm3lCjV832TneJyjN1DoqOEScyndsL9R1S69SgQ2RCjUZIRF4GVALm6Y/e/ooMOP+jcqytCl1gi4ils7LXLeah7DzZtKbynn2Re4g7NRbXTPvH+QqtHXOpHWOZDxNBw0+4Q1NwhDqZ+yLs04RfXZ3Uoiah0BV246KcgdV1hBWwUBNkDhQrohBZHDupU4WUJ4Z4ZVj9l24Quii+VPfhayLnwehUwHLlym9wnBruf+ia7H5dytL4kkvfg/wDFNO7sKHJobVSE3YD6qTkruncu1k4NbAOLIgggbKanEeq5YBOSrslvYImc8Mfg347rPEDW1OSMhBnw5Ba4Gk9Te8rxX2LzFPcBMr0QxpOe3/tUMaXMLgM7IaGhFG5q/wAlPd8QCNSdzKuGvBVRt2CtcfcI1gEKkeXYIODyPUozzNUNV13CCiF0X91dWhbcMrC2UIfK395R4XiT87nKP2fTjrCrYbdCtlhRK77K8EKV0UI9EbK6FN4Um/VQyGmSpcbpjqjmPohpvpiIhM5pg7rCM9VZNkTCMC6EWI7oFrjJ7pri3OYV3e6/quWZBRjHdXVltwzwgLHHZYVfLk2CiGkgmDOJXht0zcTV09051mgiwRbqMIeLGVT4ZH8Q2T9RmlU5xtQyTKa0iG9kGE3FrfMg/f8AdlAtbn6IdUL8zeinUAaN1Om+fZcwlFW+/By78cLC2WQroVY3Qa2QwfREdVU6SofzNRgyF5SrxKx9DwyeG0o3RsrlOc21Ny3sowN033Nl4hHsVYeUq/mqTScVKW36pwIibqJzugF3XRRLbbqPNdfyVsK5XM0TN5XLhXVirnhhZ/Fqabntp6JrtLSaH2EgbKpwhwGFqO//ABxAndaR0XtqDL3XiNfOxtfuvCvU8chVNVUX7oOLhG1lzefIkJrZAkQiMok/Vfv+qEQFT9iFC5hTG62hEKCFccM8Mq6wqoQzCppLipn24ZC5nqZKGy8qwFUEBmVe6CEFNdpzIVovef7qmq8ZQnBVJs20qcXRYAMzdQ4X7oFA7BSsrKh0eyNXlXKOwC6LlVrnhA/Bgq6lXVuGEQ0vaR0P9FU7Te6DgPP+QslkRDZyjvMTbsm/K+cjdVPcRpgWCZpuh5nzlAkS0N8wRDXc0bGJXZuExm0SHKBzepV8ItyodfdD8sjupaqlO6lZXKAgagHb+iu6V5VNAWAsBQrp0GEz0/0B0WEbKnKupn2UTEqimBT91PubIzYlOF8rNPdU1X2enAwUFuryoARfF+i6NHdWaSgC0G/RCGtvkAI0u3xGFvT1W3CLlYUqy3U3XThe5TQ/TpO56po1G+TrheJo6raTNcL8wF7JhrwKVLnNuOW2E6qoWipu/wBEX6hL3AwZurEj0QLSCZgyuUWcg6IItZSJUvJVQwplBhv7qgNg9VufXgLOQsUAGiSuv4i4brqVVJRj8N0KRnhZFxICmkW3ByppU5VsrmcVbAP2KoIMuORkKDPuib+YoSFIVo+it1UmeFnFOgO7ISKeDnxPplCR/dXblXN8o3K3Vzw24WV1up3W6jt907T1A39yHDHdR8jpuTsgZJIm/T/O6LH8jxgOwm/sr/zOlOB7qdRzpJ33XK4T0UunuEXNm+EbYsoLCugW97wugKnlUzErzT2yrqSsIKfxXJXKOA/CauisuvCHOiV+rb0WV2USt14bsEGIVNRFgjJRpFyqT1ys8A3ZR0UQiR9ED7qk5jKkyoY76rz7bFRG6vurSpPCarcIjhM8MLZOM6LGjzATfKc7Q1HEjcYTZNfXpHZP0eXTg4QdS6G7A8vsi0Cm8mSvM2nHohb7oGgwM91W0uDuiJdmUJtPdNqRIlZDlmBbAVzyZJVFLz1MqsGsLHAiypALvQKHNcI6tQ4Y4XPCxVO9+N1hBrfMbK3FrKbnDkTCDvDn0UGJKlWK09RpvUhqadg5sokRZWyEDuArKwTXYlOdZTKhHN15TlSPoUIYugi8qR7r0woFhPDCvx/7XRZVrKZWlqPePEa9okHDs/3QOl8Q/Tr2DoBWmGar8yHVXVT9VznRklecqQ5Xa0g5CgsIPZXbM7Iw0TsgSUCwR3Uuv6LcIrJWA1RCNirNKs37qXaLKupThTvuEJV1t+JppP04YJUjSn3X6Qn/AJIGkSLZQbawWArlc14wFVruMD5VGlpORe5qa5umejvVMOlpuALbyjqG/aE0fvXCtlQ3Eyi8WUSK+iwqxtkKTw7qVMSvMp3WEA3bhOVjjafdZXVX4WAWAh8PqMhoxTkFDwtYub6KC+rui0vEq1J91+kuZhHCwV2OV2u+ii5b0XkKk6Q+i/SZPov02fRYb9Fjhn8FwsKwWFjhdZUN0ie6/T+6wF5oV3fZQVb8WEYMDcJwaIjuntWjaDCHhtPKfMs44PeBJ6rCcIGEQFFle6xdUutCss1KBwwr24QGlXBWVt+DurhW1LdwvML9QgJE+qh4a4dSjFQ9CuUv+yu63opDr7ChbIeVecKovaFHiM91d7YRpepABW31WR9VfhgLCtZdeOVMn0hb/iheSr/7Llu6MLzPaIQq1NVysHfVSVapWJK6HurOTmsaXNImymRO4Q/eZhCryny2TwW56J26OIldVBjCqJ7LbgN90T4c3num7KOGOHmXmUyo3WVld1mPRWK5iFSx31UfsOkP/qpd8GPqob8LHuo8CnvKqplW02lX0Gwo8Mhv/JY1Pqra7vdq/VaT6Lzaf0X6eiZU+BpIf/GYpOkCOitogLmZ7r5vovK9bqQSs/VZPDH4MKygtEeqNen9EKGz1UDlai7Up9ipbC3hXbwjjKueEmyqa6C43g4TOYVlstCiKXizwchPaDiVYbr0TnSIatTs5QSsSrQizO67KbLqFUDZXKkP9ipplbhAQSB2Vmr5Sr0z2WRCJBCikBXiR3W6vKyV53KK1doV246FX0wv015EeUhbheYrzOleeF+oVZ6u7hNS8ytCyoXbhgfgyuqhchj0XKZ9Soc1eZbqSrH7KygDHCG1Hh+mxUvJscrkJq2uqtQkNbYKrxI1NnK9jKPqohPqIGm2wT9NhsVUAuyMghGAIWB9Vj7qJBKNI9VcE+uF8gV5+iu08PLK2XlEqaIRxdTXT7KSPeMrPDdZIUrBWFjj3480BZWJV1dTdQjdcsunhaVM8Lqyhcw4xHooc2/C91aWFQunCQLLnj1K81j0RNoHVSYWVCynuiznSODx1Mp7D6on5sNQqAJN3Iva0SqS22VMKWrU0zeLqbThXUrHDC8oA9VeVHVRg+i2lXCxPCIhWiFjhleYo3UrtwyvNxzwlYUSsq5Uy4ysGVvxwVhW244444cvC6vhCl0dlhXsvMQsgKltTmnN0xpZMjZTNDe6pvI6qCVIVnRKa687rTI9CmVYYZIQOHDNliPdOt7re+UYdJ9FquLRNgaViFBhWPC024b8LFyu3CsrSqYiFMK/DBKvxlTB4YQUhZwoKkKalZY44jheVIlQs8fNwHHz2XVQVZc1lylXCsrgfggK4CpLQ72V9Onuwova8PbtC5mk9bKArdcoO6FVPMueV5rqS8BTUqhCFr7wE5wvU4mFixHRQhMKS8yhNR
345+ WV5ldoRr5BNpUVIDr2WV3VwCOJXSVhWR5TEKA3G6kBEEHCmkxxxMFY4CGqwXfjFlZZUrCxwhAQOGVsVzDjZsrooZqhAFREK6wsrKwrrk1nt+6/Va71aiRrUzlSPjNWerXwi9+tqvPUuUaZJlG11STdAEmrop8sLlpgrmblQ3flCDIa2O2Vlg9Cv1Ai0CQd1D6sohoPqQptK6In5QpLgfVAtssfgwrrlCmmEMdFsoWFfKdnopU2UATPRXiygGyvkKqqFeIUjdWN1ABjqqqd1i+6EqZOeAV8KcXVMGevGysYV+PVWAUBpK8qqjhER+DC6LPDsrKQgYhVO6qAboUOx2RLbjuqXyYH3VxUT1VPfCiITZLW9yrauk6P3SgC+I//AFiEATc2BVwHKbkHZeULlaPRCOWFm3QrkwV5bq6nZeYKNlJ9kLLmyuq8uVcWUUKbjZQZVtWJC/K1cSjzNuNldRRedkQ4HCEYRcDKBpXlGE2oWROnzTgBc0B4KuZVweii0I0n3VVSILNlBtJQANuqvdYhZgqA66DlzC2V6qlSFtCiOAsCFiy8p7q0uuQv0o9UQWLorOhYBV9PdeRYsrg+yMMMlVObCljs9UMoirm2XLGo2lWDB7Ig6d9iEXcxjsqSFcx3K5nK6mVFo4Y4AOCnSpDjcoitvQTsrOUuyjO1kwUmFO5Kq2mJVUWQJCE7qkmFIKypqV3FXJhDMcBJTYJMcDLeFxwMtyrLddVzArdVTCsUI90KiVY2Vt1zGymbFHdSBeFZWApUuEKWGZUaguvMFdDCk2PD9OQppMkoGuFfUlWeIV6SEQGtEYVqT0VTm36roo09RGIKhc7DCBfpKdPlIQIwcq3MbqXB09IUUOuue4XlRzH2RDbQpAmUahVCpptshygcy99kOkKEWzcqwB7KSy6uyvZOgkL2RF6e6OfRZjdBGV2Rf3hO5ouoOysJWcq2F3z7KyhXV0W0ogG4VVWVTGVBGy5tlIVMKkrNlZTMLKiVkLzD0VjlegRjZBwd2VIcvNwusK3HzFeY/Vb8MrPDmbKpoAlRMLKOELB0JrnaYMHoubTH0VBNlqd168ewXXdVl1lMI2KwuVEwqryu+yHVEzEprT1yusfdGR9kICxhfNdWlAYKmAmgTKqE5EWUhrr3hUkYyhby/dWwrKstlOE+nAwhie4XLjNlUApPXhOyu2eMzeYWFFoTd0YiBlQJ9kIbvlRgBZwjayuCsWUMss3UyQoF0Q04UWUAifwcy5TsskLzFSoEK8fRQcDdegQugetlVKsYWFuI3VOVj8AxCwFfjJXv+EBzQnd7rvsu6wveJQNN/RWyhZRCtwcWbq7fdcq7oiF1WFO65QCjFpCdkgmVqVeUiyFbADgoRAEKwFwj/wDyvzF2IhEeJUCIupi4yu3RWsUFjlnKmtVBAhV0qobKWFB2yxhZVRKvKHAOIBCkb3vdEzsjWYTII9VSLQqXWvuoBUTjhddUVZXKyrHKh6sp3UMg8qYNMCXH6BDw4pmJRbMXjmBt7pmqMvamuAPRBFymQLq7TzZCieBE/MpR+vCxWFG/Gb2WeN27qVmIUZ4QVywphBYlHlMArsosIRaXBSDPRSTlWejeVy9UTuufTtseqiKUbLAuj4gGdliAPsiA6QU5sjsut1aDdGGqSCY+6a0HsoV+vCD1Vt1Sbq6zZdUOhyrJnNH73dAEy4ZUr0Qa3HAAG+ynMIUaLeybUwESqaQ0Ysmx/hQjAK9kQoUFSnJjqYVFzummcpzpzsp4SrqFdQhFwpypXcKTpq7VARHcwoMKC2ytZHTxKP3Ui6DpDbyR1Tmt1TRNlS72KLDBDeqd+6VdAqSvEYfZQ4Whcwvsr39ke6r6oQ6AFdyMLPZdl//EACoQAQACAgIBBAIDAQEBAQEBAAEAESExQVFhcYGRobHwwdHh8RBQQCAw/9oACAEBAAE/IasUqtA1oe1lvQ2KLDXP/wBrAVvYtsYMLmaGb2p36QgHheCG+fP8RRYAsYZaJBAcJnMMoV8qhkPxGln5KitW6nMY7vUwbTxAtRx/42LlWqFaXCuP49dzNG93Fv1/zO4zbv7Jjrr/AOxmCQBayyekd9PJxtiWuiODhMMwvJC0KhBTXNxafyQF5vtKUH5gszC0xXfuOxwwVzNLTKnDmPFkNsS9YmYOdmNYzRVb4i0Rol/iJWhLO/8A6z+1ko1X9zjEIi0FOQs1j2m9xc5Pdl7s7VUgWLvqFUrriog4Hh1KNmO5jA1qEWN8mpT0sXlW4VTZ5jC4OI4TmXSXBECnUYuJleGHgFZO83vzEE5OoXcEq4XtAN0LP/K/8r/4h+A947hYHdwov5EqnS8f/wACP/rIAVHnA391H1Ia+cf3MgZxpYjjOcv1CpiBvl+Y2Ae6gP4i3dM3kyrLVXiOBr5h4IutYdwR0/E5YSjp31FbwLYhWvcFBNBz3P7uZLaoMypStw+YtT+cTFufrHicyVnB24PbNwwEp8OBzibeRAWcf/HUehu6hYTC7WZ0RvS1mkazQK0gVlK2ZuYwydbmZ7oJlnUNKXBcS5DTy8YhC/qvUwpWppd1DX0zKlqcP7mBhwIHXi1Ysm0Scqo9lzKuZdJQfcOTLfZlFJIN2t1FbtPE0tmKPZHsKLmXCjzLFfhRAZKXu5w6dTp68xl7IXoWcEq6pmpxMrpS6Bwuvj5htoUrXYqwfPDxFq+IsL+CgMyiIGg4/wDjFMFjSzyga216SuKW0aPECrAXsLWb94Hzegp063GpqWfrjE3+GzkTgf8AYKQcvXjOf3UetsylSqq/mX4LWTZa/qZZ8V9/v3ArchmyIDnNw5Fzgeg0w+8SdQcRv1meRtqJvxORldVqDbURq38RdtEItZawNt8EvQr2yo3SLYGpwMstsLziCthPqHBn0lcB6PEFlukJVePUej5IlOYN1gmkZr9ZUyB3uAaMjRHloCtztdadfZLc44n4Y/8AggLVcQR03Ae+wg6XaoWvX99mPV7wJOwudjK23UgxQthUz/AzOs2DJyLKPEyQ4rVbiq9f6lWtotWVD8SswIPaxj37hCikIP138S0ANF3ly524hKcyGddQrHGuZjqVFyHQMV6fcsFZWT2Mq3xWDwcy4yGAKwBFZReveGsebXX4pELt+47lLeAkOgDY4iELt6GXJXjXMwmBqoVyRZvESqpmA5L4mUKmIrK4CtBeogNBt5liymCrRaUMBABiFeC2WbFf08+JXDFmDvJ+N4IKfPQyC5cgDrslisZeG6/L4x/+u/8Ay5FH/in0Fqz07l1H5lPB2isNe+JmRRtHWdscLMBqac48YmJIACmORWtspJIPw5+5XHu0P6EIVizMc5rzNxRH5/N1MWat83Rb6nMHO45gwO4/FJ8/czlwam8Q/plRRzKDi9wvBC2e2ff6gdFHY3+B9Q3e00q3VZ/fo5cmTjTfpC8UF8uJUwytmgvQfupkNmF9cf1Kr3VuYV352R58EF4PxMs8ulu68RWLAS1wGviCqHNymBFKsuvMA7wEtq8QQOniVebqYW1HhtC3ArMe8IPMWhKEs5V1/wCFHhgEFv8A48y5kjeSK1vTTcE/xo2bXPbvBxApcAPC5/yGCv8A9BOtBcG0BQIfUwU64IFccRfHcNmnp+RfiUzug8CfDKajXvwUHHH3Lc7yrbkz/U1yAJcLH5/iOxSkZVefllvpYNvvqVgNCcQymferz+EIiFUv4ZXjDwGMShqKliG78OMMFqApv1fvt66Ds8U+bqNzYIULuvjzA7ogzTY/e3pxCVmmJbzl+YRaW1bQ8ZfvE4LZYF6peSkxvVE/nfqc5qNmNvKUv9tQ6lyUnjqFA7tarVrUtW7jLf524mbHTUGN214/5kmd3Cocq59OueZbowdt+kEtqJdFPxLKOpgeBqOyXcttYZlBQkqlacph4xpWiKYTivM3lVTEGLiGd7tjvLMPWvzLrVsYbuziLyNIydMuvm/Sp30b1gt/KpTf+3K6fTRHrq0EzjKv3+YBvSHS5iwCm6YtFsBUOP8A8Nl1ef8A2+xdFr9/iIN8UlZMkuzKmVeEEBtVnLXNzVmHhN0vbzXwxHbql6bp95gtoHAZ7jMC3CF3VeMNTnqEod79oSQE8TnPP/JYVSHIqU7dv35jY21cJlv3qUFNnGXp7l2lU+XIcYzfyQdbwmKviMRr4Qz/AF6RunVSlt6xKADXNWeqEEdrDRf1FeFsCfJ9VEQmcjlPNvHHzLWpBTSm3iHphwazXtKABOI9/qD7uo4wq/x+7sXLVjxa1Ephk6muSXZjK26flEuMzSmXfvqXlTebVXoS5owAS7CmdYJsHxvEWkVUZuLWYdw3JKjjD4iWyj3UqQz2LL6hQ+0uAq0CFGgxFolpPEttXngnkk7mLdOQ2HEywXUxJDXgbYXnkPz1KqKdgfPl+pfZwvIZ05z/AMi7FmuaYvH6riCwZ5MreOOPjzKqy+vQ4LqblFz1R/8A6HAAvLFjwP8A2iwulJWn/INLPkTH6zKSGpfefknJDD8XrUUncAyK+TfXxEuUUPEvnkzfeZqiOcCPT2iyAxqsRKdaxf6QOpAs9g+aumXigkI7M4/dwi1Vt0e/H4mRzVbvpP3iZ2wOeiwrxKO7UNj/ALuVIOHqe8BMoOxN78c817QN7g6WmNwvnAe8Fr7C2kzfxC1K43yjZ9OsxW1FdVDaxqWXRa9OhDdXWGCmQ9RBMCj9GpmJb25lmRSVmKrUK4wFH2xKc5JfB93qYq816RvYQC6yzKwNG2h/NxELkVRfm3l/qYlUjXEx9x2/OGt1+1HVKc06f+zovN/s8srq5cwMGOUEWBkM8y5XowTGuMS8e1gGPETX3cB7bqMStHnmUSRTS7lVADvzMdNU8TZpNk3hLhA9gId4XQ0z/syJad+bvphf3ObV1k+b9I7VBYY2OKMl4+YjRhtujpHn0wVCcx4tTsu4BW33QhbVybel1Xk7ZSgxBbZcv/xaF6gnLEu91yeIRlnqWdwTZjp4jgDZ3X1UK7NnTOZWiy5Tq+fDqFdzazeWTzy46lYO0X3V9QeS0D4VfiEWN0VotdcvmLTyJXJw1v8AEs7JDwZWv3+5TC46yw5/L/sSRaHYOP368wTbXcBKXd+cwbuAsnOzj9xOXeK9/wB5v5lRRKGjikcVN7Ebyq4lbYn7DRY9dS5FXezZL+W3xNVuNL9xKhDABxcvoWHFnpGMfB/fSVA8PaXXGepr45gCDaK2RYdGlq9DqXkZyqsh36X7hEOl6/HNU9blpKu8d9/mCGV2zYFXJTrfRfENPdkrSzREYunvWfPtHhqocEsblasH6pWJYE6BVg/SUSpWRil7iKmglmeOpbI8j1q/dgfqjWNc50Ns6Sxbwpc6DtjUopXbhiLfJLa7CwP9lY9IJYi0oGK1d7hcWbKXmUeqKTRZhvjzLDApRnmMaxrjNQGH8wtIADj1H3AcKy6AN35+eIXcpCOS9V8ZxBROfBSADwtfrAYhocNPq7lOCqwLQw63p+5a2YOHNsPWE7gxznE8gP0mJCFoZ1o+YbnAvefQv6gAfML0XcLl1eS6P5jJABZl33AOZaM8lZ/2VURuDdqu8VGAlqbXJr5mi9+GeT/MrRIaFq3XPD/kUn5t8cfL+4y8ZEGr4uvqET2RTnfyQSsKp2cF+rLcDcyjntANqPR1vqqIeshVK4c55amw4OoPB7u3cxIFRvd0Erzx9RWIsiXyf3FOyW03gXhyVHnRuDZ98s5WhEvxOYlmNS5NcWRL4sff/kZxxZhwGD7qKxhyMJu1d8wUxhL0Gz+IFm1q6lNhZnFShuA8c2QB02QrLXeJQFe29KjNyHoesot0Y7vP8SvQKOAcV6OfUiQoyBy+0Idiht9fniZgrBnDdI9VLCEqHIl5mmZYdLus7zHWnCXV518y8uwJttv6PSZ1lFtYrS5KUfZL+QJrSvLxn8RANA0YG46RbjbEfRSzdPGZVlcEptdkwn2aZb+Qcz1QXPHOeIa9p3uVYFXCT0ihp1gJhDquJt8smb4ekUFIq2ljgO4l+BfAuAS7oczN9FCl7Ln3TiDmBT4Ne0dk4LNYN0vzxMm2W7wcs+3krEQSRrppk6vnWMS5vSG2TTiq9PxGjKEQLswnEzEpeU3XqyxMgRXoLJxItppAJvWPM9ev9i6sC3TpfxBsFlnqdV4/7cFZFmxoOcf8+oAXSKZ9WP3UtDeUH/Ijg2xur4/J8yx2g788Pa9HiWinUhQXDg0Cjpu/qvHUKj1aBOLzxAESk5cub+9cRHAFYhnpXvnvU7is07wX3KTwW3TS0fLX1AY5Hgav4+oyFgi6ALZ5qpsAVgUD+jE0BaxMyrzsD1hMfIqXT2tAVmj8E54wzV3RD0NftxG0HqmBYS7L7zDEr04rE1RafVI4PTklC9UBpllGUGsTD8zUdwDlqn+XEoW69lXDE3yzam/eoh3CYS02ezAVNNDVPlPb5IajNJe+Kv8AuVtmMvlUrUOw1+MzJiNyy1rxOM8bGn+iekQcVcXklzwj0NTeApesmbm1oKlv7X3FDBG26bwOu/aKTCNXns9v3p7D6qRajxIe3DIMVdF4URZm+v1cam055ZaVgIOC2eYCH1HZTcs2azqKxnnD9w4QsaYOPEyI2ArdN3o9fE3+AUMjpfs9bl7tqOg235U77ISXlEFXrveU3/i1dM2m7vmxy84etS42CxxRaFp4Mu8RZgV1nWHmUKzGDvp6Q12TPCb1ncpTP0Da/TUodwadVm9/5MMdmiZaYrfaLNpZu06/H3mOp38CTrHVlHOHHn+oAJvS9Ax/eYaH1lSzk9LGMdIwINymGZRLvi7+f3ZA1OyG+U9UwIoCMld9f1HFS6F7KdbE/EsC1q8rxSYiqBrp2Mns3jvXctDJlAkUg6Di3Zv1rHtcFEOdY/hFlrKLBQZ+SVYtbpXFMYKstPSAaaYrk/E2Hm7IbeqrFkEwqDjmf73i1wNToK2xQtYbV3HvYGPeY5m2TiJdHGNR9BEGsOe4FUtfTUKlQ7BuvS7YzpUL+s/8gFOJeBLr8sqwrU++mKgoBVm1+NJCn2oE/gtwXK2wMNcXBACiJWO/xMaC+8F7WWa3byMor6lhqF4Lc63lfFHuovfO3xHGSst2hWi/3UwWXImq88wVsG8i/wBx9SqUsqu6V84YiCq8y4po1K0te7Rhf6KuZ5Y5GYoBtngIiSJ72+ssbHHMqrgdmrvxwRCXoRo9nEuS5zDmGYrApfpLz2JZ0fLkzjTBtAW0vr5MK+3pGhJhaBv4AIpyJWGTv0y48e0dy4rAxU86c9yqkxTrNa03VHVZephlFk2eG/VKA2fptmviAnYIbaPc2XFUfdUp5rxHe5yt9hz379xo21RSlaymGOd2UyMbBzULxdCi1t6OPWYROOZeG+owv9a7i9Mt1MulVklfcdZcV4XvPsSXN5gVjVHxASljFZ0fyQAjWipRmse8EViha2+fPpDpSklNPZzp7xBX1kpfkN23o+5duDaFFH6swMcH+wBnkcj8ytNp1nEFC6B/MtOY76myZGJYvvxXLxKa62eQStseHiMjC3TCG2xl6mOyxfIcwuzp2rAWq9o0CL3QKX4g6I9yV4GE2KGWPG/a5bdKp6pqt6x9wKSIcYYMmpxbL/EzgoLJc2i2Kfc4MBbV5r3eZcXAupYsSC56sfge8aK4r7vZwWL7EUSF8nljJNCOg1O51IUbSvV3HM3dlmbPN/ca3Nv9AOGYpsXdMst44qeJLctBZNuxjzgJWMxdLKWgcAqoqwUPMVquPmOBh3OMKmZSlXTMyL3puDpbhhNQhi1Tnekli+G9b+u5eDWyjL8gP+pWQ+DQ6DrP0hpGZbXC+Sn6gbayQrb3wY1OMLYKGV0lKWqON75+ZQgRWOIE1jq+fEqYdtHL4hrUO1wzRTbsfcGBu7plftx3KW2DYOvqeTrxO6YmjmzOGKEeGLIjT34/iUkTyk8t5cVxwxe+umyrH3lC1ZbVkxvO/sikadNvbxlxAyLTpWlZdsYNgwWrAY9f3oCtDcBPNygjM/kdDiKKAJwlat4LsjiWBO5XRScbqKr0LCFW9uKmYazpxBxfvT4mTNXy6Gcy95qW2vyTne0KADPvctyTVpUOdW8Q4QSBbabo8QFvIjrr0JZVqM1nt7ys+iAR19fEwYcmAVeDnBiNbaHPWZbUfUGjj4mkIzaXcZs5/WLMDTyvBfsTjKqAdnqYgU8CmMvGOS6jPQ28q68EAMuxEPZBKyFtoXWnMDG6m4H1XUUHFv0f3LeLvzXGvBUsHjw8wUANRy+09N4K2w4LtdOIfTvdX9x5y3vEKRjbcRxPMsFPEBotbSYzCdRWN5zftfSAiuGiNwS/KLMNGOuhBNaYz2svQL6S6E8kxf2c/MuXxy87PWMTM4sANmXl9e06mCOdDZowinUvLBEQtdD61/Mxdh2VFz+Gqi3f54Z3BYBxZTEXljTQbmRBOfPpqOv6ujjq3HLOUAvMD1VfEIQmqmYDnpVsISbc8CcV7eeI/ESs3cLaY4g3dC7D+jB/sxuLg19ovYJZorvmCxYGMfTr0mTVDiJLOFSh3BbXVsks8HrFyTL03OmiNAqjiwZ5jlps83HZBVWc3KTVlw+8PgAqUmN3LsiuTc7Gnqcc8lmFeepln3VzEb0FkuNN9XiVufeUELgaJcTmGao0CoJt18QIDTYOfdnbx1mplKb3jbCbyMuuMy0plS1ZAZALvbjMUgQDWtu32WAATgNm5lE2PZV/bEIKyomLwcxBbCxT2z1Az3xi9fKvvFiWVDK7D0hgzFI+Rer7hGsgu88/viUomSrLmgvNsPEYVrmV3iuiFf4L8Sw/mYgtrleomeVlluxKuyStkNy7VVXDwXRriY/YbgHr7lIKPJzMGyDrxHTbW5l3j936yntA3Zjjv8JZF8ohfQOMH38lBgipWhf8F8d8UCqgwzRbxmjT6zalHDZYvHLAORPbfhfWNVwUpvvU6cwWp/WVvbFEw9r9e5UR8WbTipugylqXVvEF7NsFzfrzqNbvFswPKDQEqvHLJaVcywhAs6frGuj21a9xJU8DcLyNDUfIa2zE5JXNy1KxA+DEPg4hitWMTCkvpiXUbmDmzdBEXUQErVOYK3W8MRwDL5TlcMcZ3uB1dqFDLsiiYYq2qTHmZNMagV0u+pVVSuzLatbYYgpBCGAMt6VQdDmRNntJyLQ2bvHzmVwA6AYv+5xfBW6rEpNyoVvBf3mIo4VnAJv96lLBKqNsMR2+hKZPAY7HU099u76jF63fGIXLuYyNY+hqHirm13CGqaYzct69iJhfEqdfNOIWwDWm4ZJJ7yxSHcobfrMai94/EUWY8cymOE+5nOBxMzazcpz26lMQGBlNputYnTMcVGC0mkyrPLPH9JBloWhQoEreaH8pDVELNAhwYzq/MzQzfUArV0c6mJRbF4LmkqPD9l3mzFlXjz5YKN8mc49bmsBVdudXLYtGzT8QVBsU1X9yzYDXRmWtSthEQRze2VKt3Xq9xIZu272TcOwkdQ0JSOoymlaeZax5JQWQ6yqX2Ke5bK+rhBQN7viWyXzMJ4a9ZaKVXHa91wWzNm+IllWWUABxXvL1K1eahpV5bwajT15lUaw8oNZpeZyYLmNM7lqbuDzlgWAr4RDi17RDsUxG7lsyQN6c+CW1noN+0yvscMmR+Klik9KYrmNeTRni7PzDuUZeD0i8pFHRxmJslIHVW94m6oOTJop9RlgFCULyyY/dvOCJb6uhYKc+v1CldPJesH2iKDaoay18n4ghTgGWNOg61Cf0kZQZL3KBZ2MoBL0uEGLatWUugealyrTxMhq1mGzXcox9MB5W4ERwPJEFX8RpPoQ6VYDHrHQvO4LcOKxKbiwCoymvj6LiugyFru7ru9+Z5qDE6e3nz4lIiBgG5E9csdT16RCctPV3mvfMANTQ1vIP5nHMOE7374iCdiZrnM4gho17mJUbrdnJxWq6e4ApLrqtfuJZErk2/wCxcCYLGb+42gavmAULeMkChWERd+FanQcpJmOjymbZQzq6z4guC
346+ UaUShcmVm4u7fM3Vs34nGY4dwNAXuAJygEd9rhddaSjcYJm1zEP/ZaIXWcwumGfCFwGbutRVXVjzLvY3FO1fx+3F5MN3OZ3a1LPFeYJ2bpzPnOk/vi41rkWzOOOL8SjZI6VWs+2/wCIum2E51Uprgc2cn/JnwYqYUgOruUOfhc0iVfLpCcBO7Hs/evMb2DlVwYA/mVnt1oKNj6b+YA23KWp/UcgJVAIqnxOTRc+ufSU7ylnv6b5gNwK2g8VmevjcFcyzJC+aj6EjwSq8R6I9ytuv8SzbfmY+XmWgZOqjP5E6I8MqxeI2TXRF3yempgscbJhTJAxONebz4gpnhVTsub8vPcq4CC5Qpv137nEYY7grHDB818QODjDMLq1+OyP1krIaPDl0fUFMWu9CvLBaFRVXUu2pW7XR9dTKj5bZiFE1zTEWFlpzuq71OCL8V9QB+DPiJx5oXj8yncorO5aYRWaj4Zrl4mWLjqWlGd6gMDTqAN4L1MgZO0iyjHMXljqEqrZQSuO5uFcBT3EdAYH8RqVA4zMwlGaJ4xR9Y87a1AGEuzm4JuTxzE8+OoVUb/MbYg3BxGQMXVVHQwnIj/3Mu05KzXQd/3HwzNUH78zZKq3lahz5z9TCzMxgTl58xF+7xyY3G6iKZI7YnP7EXwufK398RnheeD4C5X+5mxlwcvzKCTQSmejiXSltcI2jg1KqPlSWACbZB4ghhblt7RiXe2jiXI6AX/zmWGw56jwtxXcpSvcQWSZFbUtG5sbmEB9Zze+qiWpbgjdD5hvC/8AiXfiWFFSvRO373+t5iUuCqgosW1/JjhY6TWOze4yAwuTkHoZ3v5nP6uBpt8ufRzLWNo8EAV5C5gZ4Do3/MRMLRkD29oFLpkIw1xMba5FZx+/UqRUYgrsQtol64HY3G5Djiu5lqqrJFeH095faycQAtmHGgsaYDMtcAELgwTMuqxYc46jC7c9R6IvRwiREqWgNcQ0ZBMe827F6lC5xUqa/SLCLvsi2i1UOzQcyg4PRlYr/sVlD8wUpr1r8yxX3uJkzcKVnYd7noTXZuO7k3/BH0C4QcFmvf8ASsytG8Tj34hsc0Zbz7YZbBFvX6wTDq8L+5YKwQGz51AuC8y1yuoAwCRb5i/xxqAJmA7WfoIeRwj3/sHqOBo3mN63clBWI+jn1zCsodr/AIlYgH1TB3kKLfmds6yvqLXJZdS7W+5xKXx3MQh6QMrleI0DS1ohvz5Z2Bm/KieC295VvEqK7TDcEbBj98wkeWBvljeszevvGbhWrHXMAagmZxnfu+19TIWz8RvpcbSFVtKb4Wb4KolXQLRpB29z5m3JfBBVlUYBQKaWgIu3FfERHI4pNoM4qHZYbld/tTSAXJm6x1mEHoP+xdLb6QsVUOcQR6YesLq87jvfRqLYcLlvmErTujEwrV1zHZeYC6C3sy8NRlxqAXgaYqpu9SgTS+otn6SnnMgXhjAV7EbDm05SwUqpeI5YbZapmIocwF3dqzKFnOSAoG69IUlyACNC8ZWEXThyGE49ZU1voyaC8Ghebg1Mbeo0dcPb4FjJKa35l7Vsnd0+s4KYHPL8/MQM6DoR22MFY8y3z50Vs+sRneB2KxHaDYZE0A8soi7vRzFs1rRqwHi7ztY6iVVC+T/ENYvCRR5V/rEKl3dYPv8AeMkMawQyQiql223yzgJTxFoTDiHqZuZYohPQaipjBLgCtS0Nt3KSPkc5ZOFe/SANMNSpqx9MfDCGeUobv6TcFbzAXK5WZuaQcdF59DNfHjHE/wDSxwzcFN1/VjsZnWHG2HKaL58/OZ/04iuSERcz6lrc7pNv9lKWPXfpFqoK5ZSAp3Ag1KzL9zAHBcDwQAkcwtZb8xK39ZhShSQ4QA5IvqPzLYBBl7LDA2NsFu/UlfNbUFebAO5yAHiWCp6ZqYsO+4LSZw8xrAy1uFgvxUZdMd+IuLO3EorTY9ooBsrzKC3mEuaK2vcxum1XDNpQ7Yl2LMNRgDdvSXwFTPJHo5ZjZFNvVXiEVRaXC1DUU9ve/EbegVfml/vUW7Pd5rEF0d0Cjeo3cDJzmRUH3Z9CW4GZLBl+JqWBq37I0FwKq5wVN/7Ql96WZruNgH3ecXuFyJrw14+9x/qI5fT2l+/ElpDKshsYlJqiKAViJ7sQGaJnUlzQjSIz55m2D15nM+3MF3oC+D6YsJyRKQK70GXEupDrxivi6PuXfqNF1xn9695Uc8F+z1uL4uMYlet/vXMPlxRaWhx/cwdlunEQjvMLWk2mcKmJQjwFGf6i0goHgP7xMbGrSnA5I8vE1IJc8RCDWPxNhYHEC4PXqY8gcQs8rq4RwGsdy8njuHWHoRVF8UFmqzyy8LR8JyNnUEzPReZVmLY9JwFvOJStc7xxFh+UAsRDuf1KWLBN8pXTimcQDT3jeo4XJXuZb/6hfeU0Py3dxDqt58xjY/WUjT4IgEH1FjSmWuIS40Bx9zk5abzA2ygDaOP7IW44g9ip4auFc5/fMtjscXupWtwEphsCxW8/L/ks56upk2WyRlmWwzBLT0IkKIOWnzGM7g0Yzu3ZG2aKvy2TJZ8v4j3GeIBGFo25DiVNVHMqAmsehOk8pWj4czk1EstszkVYg+b1jdWfmFxQ6pFlzg+oyvuTNZB4cnxLvsKMuHH0+5TLkAKdFTGcr7e8v/ZkUuDrVq575mI6NGDxjF/0xFKh5auJXl2hOJvozjNJx+IC7er/AN/MqiCrJnHmBkw5/B+ZlfQnB+JeJTZm4VnaojfgsTqd1nS8w2cluPWZY+mIX1Y80miU8w5DyVmWgTIcJH0PSHYqb1Ql4fZhWVblGCOWeRD8VqXvDGdn9ksDtvi9HqWxPulZVtt1LDQHQsyXl8owiJ/TdRoGabKqVTjW66mdBh5mrri8VcMQ0OUJVyxlgg4UgdIZ/mFjkAIVxkwrrJ/kgH0AU7IbOQaxrBqJXpGOPgRv4VHROm8XKxJ0tikewC5eM6awudHVPH91EbfeFmMKgS8DuYA5TDx3uUNtmymYatEXHKYNWi1V71KZi7cZYbKL9ZsiSlpMBkV9REuy4+qWaiBN5ha6riOdP92w9S1kNGWsPFd/MeutVDaHLbVVrPZE1oWwfatZ6lcRwFjXJ6/xMypGihPV1FehqtBil3W+OombVnmb/nTybfx9w6xfCyilk5UNr2m2GFvj4mMXHEXCh6rnHi9QJUyp3BQ6nV43AkzgpuoYcKt1G3pHczBx5xcpkF/iWGU1y4ipxaNGU9FSxzfjthcKC+Zh6Fy3RcpCBgdPEsBb75uLFE6si680uMf9lDfWGuJZQCDWVqY6Lpf5iE16hjXFrNoi8VKRrwRqp6HmaOhmBLX6ziK8gd1LqLXQ28mNzBGl4jkwpa+w37MtOV3mIr8qqeBx/Uu6QFGDmDBb6QqTXpAgFyEQ1Y4W4iClpjeYiVjCrgiv3RN4BoDVw62ci4/fMw20dvuClmHbeMyh3X55mX4otk+ZpI6sDp16z3b1MF2MHm2ze2hilDoNzcuT1iN1O1Mm3EBu66uX3PAoWav3vPXvLtMowPo8fxuWANNeWqx8ygDbAGW1zn/kDRiW0WjH6xKbls0xlEm0YMfmA3p6uVTA8ZUWjENAFscSaQ+/348RKCh5qbyHUIo1cvDn/spvvckoG2JZ/IhHszBi1oNxDmxCA7hzecxMmvjmaYToi2U1BTIPSPKxzxKrIbgQ1u/EXLDiYo3pLZawKa6lgGoFMEqMWCoD1lWqCJWizYP3CA8sqtQ17Xqf11MNMHTCCZLVygOrZNAoHGCH0ObjDWMN0yw+EFf0GUULZg5u/wDJyJg3mWtFCz4xA2luV5Y1md+sB0vNxDoOuoyvj8sSwtwBSbxcKtUeHRMYcs8fEPENLLauKUgUep5ic8r6r2ZWGFPUFxW56JdCm/WZBF1cq0NDmV5tY+ctjzVAMjMbJQx4/wDAhxj4Uy3gRpWLjvxwrjWia6llM4yXT0f8nJ2sWaur9Hy6uDZbHRP9Sqmazq9EQUZVWU1w/MqgGGShKszz/UEKxEsROSg+T+I7Crhyz1BJQFls/qA3LD6D/Ud9EX0yqLgcbgb77mV4qYVWxKM54shOdcg4lYtg8sLuD01OagxjiITBmR26hfCsfMHnBKgyhvsIt/GQx2ntDpa8QcKbMHpKXChxm2YQ3leecSjtjWkBchAjgnoUwMbz3HlFFltmBG3gJibj6wQUA/TOoJXEqlYK4hjhHBdweuvnqP8AkbPHsSqZBswvQZ5hDe8GxqOmDsLUzg6w3YxgeV/iLaAJgwpELmyLTEYFdpqBWgQ9LjZXRyNNTOcy/wBRcA12BXmXVhfoDzMpzGHzGWwPDc5SznbwEtBS65yygWa95ll3LcoHa1wou1XiC6LPWDk9TiVgIXdv3+/5N1G9KPPUrR0cCi3kqUAXUKfUs5vdf2ZUuxSnr+7jVNt6U7ZNsP8AM2fRXDpuWLjdJp9v3UKNdWsyCzezwwlLDgC4NGTaSqll3jmF3EXew4LlzG1xlL3i3KGmLY64fMNKhL/d/wCRbaOL1+IcCgmUQWrtl82LrqZc/wDgCsZmTuYOZQCw8ROjlhqXoeJnl/4DrMBxHGag9yZJQeECnZ8RtcZRKvOpcsJhAdHAxhqU4vUaxS/hE18moHqzC33vxABjcsP8/wCQ5yxmuUCSKoviDfHeKleGddTaHoMJgXz6NVLUI9tsTPRUPSSm2KZOuH2ZdLMLA0zWbCkOIAoDxThDYWCH7YcKC/uFRauXfUJK+hnccGtgNZvz1DMqkyiC8tR7rxUcG219kSqjSJ49ksEC8nAjz8w0e8rPqa675lw2GOAvfEoZVROm996i0+EbBut9Y6lgs6HQYflHucFrAc6gCZnpB6oUfc8RkT8D/IaVD1ZZkprqAnJkHnzCyWtDTLgX7w1irK1/coxR4JMyrOYPVLPDUxAQNYqBUD2lAla4JTCddxYXmezP1iHDv0jARQDRNt1rM38du6fqpUanpmyFEbXm/eCGAWa6gehtZojRM9fSbkAyZsyRnGrVZZIChlljbobziak0cUiZ+JQfAusRQLCLTMXS4Jj1vs+4lt6o3opfMEmxu+nj8RBEK4ekxKLE2I+G4qlraiGmUIobzECsVm/3eItGBeqZ8XDrxcM/4ZsTOxE6b0fMbDLyM5F8RuPMclqLrFymJdd8SxwvW5i3UNgfc9eiKOG/UraqcXKLzNQwsv5z/Nw6V1Re1B8j+5mgI5+xk/mIQFt7D33Kz1plgelY/dRGjQFmNRabk0Xl1fELAKYbTuHoMapPlEVQ1bEDciVgsXqVSw4mEJKEvR3AZ0ZKhuTKGnjPUFKqxNkAWC9T/sNM+4cyOvoFepKw+ka91EAGhKF63SLHNY7WH5hiavuK7luIT0HvE1cMzF8C/EFDQwYKvA3EOC4jn4mRu+rA0EX9isYpxf73AFGNlwaLqpY1bjxFPVDghwqtvFy7QNirmDwGYDJoMVKbtLjxK1PiDyikux79zUBoG2Y6CrPpKKVBUwg1YTkYb9IBhtTTbZD3LYmgKuYCuTeZdcGzEXF3hy2QEsT1M1uSiGfb2gKVmWkSTQ7EbMnMa7mXIL1UKiN/MsOJLAZ8Rw/uNGs93Cmh6MpFW9+0AGSqeBCFg2jbOH6zENDAsqsY1fzuO2DL48a9LvMxaQZCxQXglyN+cxp5EDDOSgFse8z2OeR3CXJbFxUNwG8JuVA1WWomwOzlFsLezEODX58y6wldR7VjvcBjd4zcPa81VQ5R9QJTXOEolkcsL/UTiDpT8woNJjWomwT+YBCe0uMULiIMy6mXuD0P+RbmJcSLmD1N1NxzhUVIiHrZf6hyAh7x4gPNmICMtcDUqsKaE6qQBz6wKzuLqqjss+I11c2er8kaGZTKnXUEh0t4Ma8cMl08ykQK6NyzA1CK7TFFfMLmoeqobwc4Bf6QKg3x3KmgCULG/CHDM1mziXt9tPiD2teaJSXklZge2XnMIae6Hhv0jcYLxLOCaBMy+7fgm1SOlDNaNVZEG7+SFTlb1ODY8Rvb3UyeDnE2JPqIUPlruAplAWiesSm4XgUJ7J+PMX7ZDpGI7GusnMdxK2QwfNTQDwhcwtTTaDofpIbN0qEXdomUR8jAuB81lFsP0EMI0vioPxMdp/EaNpOM38zeIdmR4gdEAeXqYOPiokUhqUBfrK4weCVJPyxL2QDLexT9kWmvTFwpr+1CuJyhiAYV7yv6zSqfaHh8wINhFEoMRTSvMtRcaAyXqAmh0XF70usRDcQ16y2AbNLNYma55Sve88SkQaFjUfEWdVesxNcJWkjaUHbEDAxzNa0NzBXTQ1iFobOHmI2EDoxUpQEruUbG76qc1ZgFAAG32jkT81OChxmcD48zwAQr38RFZxEMZYF0CN1xK8qMRYh4mo3ZrYnZTziko+ojXvMo/q8wINRObfzMz7y4y7nqEfArx/e5UFhd7xNTX0WfMsocMWpDMF8MXKr+jNzNkZ5mdwdkdnLlpOERhMRvidIPEpd0OaUODe4ZNexmZzKbdSjgQVijptHTH4QM6agdTY5gBdC+kG9bgCy9fMylsvVMizyC69IHU3pVzM8BrthFteH+88ccQ1sFUWyo7PvMeFSykVV8yvQ8bhO6oKpe3mBgYmV3DHHew+j1LiKB/t8wuGFXw6lW04gQxuo5iYai1bLTEcQBbl3Mzh7S4ZtNEqWsDTOZdh0iZTHppe9waQPi5mNb/iXKtscRPQ9ZfuhjV7i7bc1FGT0lFmmpY6/MMmdm4FhY25jfJfAStA+Op82m1ivANSANKj+/eYHUtcPiVNnmsvmo6jdd2SsqK2dyvtO1YHw3SkKK7EeCYi2OMaS5sh0UrQBi6jmGrW9H9zLAeP8AssiNbS/4jI9GKOJhbp9WGtejDF9NL1GXHwRdn6zKFjRKOaV5Rzn2Jwq9wvResGb3LOErqZrIPpC3gQMzBiFA4sPqbxa4/XDoucxIj2LEstcjK5Eru9wqYShupOpbgYYmp34xMgbgzuo0HxqUIIDlxxBZR5PMX9MA6THoThWqm42VTok/eY9jWEUjBsysy9AxAxGjbFRb/fMbM77gRU8N8wzMm7vMfIpuXfvAto9zEK1NGrnYsRup7EWmemIMUuKLmnFyVLYvOXUuw9YalA83GKmCWjOYAR8y4lujgruOME43GFYmbYH2DxnbSazDxh2xs1QHJDaHrE5He0qU73DAMo3dqXKWesV2+sdYhwRJRd3UaTLfiOcQXU0eYIsXu1B0Y6KYeaPWHYeu4NwfMtchObgvYjakJr8wCoX2slF1SQOop0A+sRMspy/cDb8o1YfZLcsAalRfnnS4MTBqFmWPEBYC4cvBjwR8RxkqEVsczGoeXEDlRxM1VGHiA4d+GKrp6S/7lrdtApjqoOrCPreY+S11br16qXC4NG/R7JmtzV5lBzj+MMRk5hPclnS/tzeQ3Yyi2is3mcXhxBY0uMS6oqZS2GdANXz+o/g3CJnpMyXy3AlAWoMxgM3tjkra4uMWuzs/qYih6EtVe5FWpToKlZ4JVRRw5QNktCeV+jcdwgyvq6mNhMWbdyw8owRq2fQiQprW7noBLAaUU9wsLpr0lsqaiZDwj0r4gNc/EarwIhir7xCYhiUCLcGZIE+GWlsrHFI9K3BakPpAbs+Y1WIOQhbtrHmAKsZ1mZ1iaLEeV1+IJeCbWmJchYzaEk+UOFJGwyt6S+sOaDECNnpGXMjHKwxKg9EQOaA0pO5dyiFoh4qc02R+14uYRfFSluXTMETy7NX71K9gempysUK85nI9Q/feHWlnuR/FtF5gSEG92eI3KxpmNBpzdxUTX3DxACK7lgVqyFqLOpvCTB5DhhTh0xq5kvrxqPF5+sHJksEXMZFgyUvlmVCt9RW0Ubb3KeL1jUGB8QFZQ9cQO2aqWs/UllKSscVG6481AVudQz9Y1sZeobGjp3LdGolgA+ko4pnym+4KrvE7EUYXZL6U3NGT7Sh6F6haxnL81dZjBYcxlwr/AD5k06/iCm34lqbuULl9pyPlMmXwheL+I5N+MwEGsvWcnLKs39SvNCM0s7P0EwC7NsyuVkA5D5TCYDNN+8QjTsnlDqncuGEmd4hlNN4IxZnN83oZbceHzBr8ixF8hgtG4IoPmDUMbzcxdTIpxH3yKT8kvWtv4ILw6U2QIeUpZcSBF2i4rvHi2YsnByqvaCeJs6RT0FA3UfI38XOdHJGrJK7jTBTDsHKUYvPc4Wh3AotpeGmD+BcBX8yCR9Jas7VXcuzkZMFR2Es3l4qXToNziMSZDH3nI4g2RHrUBob9JSAPaDarNcx99uO7WWwmx7Tt3pH+bIvkbbzENEdTip61OYqepmLGvSKbqDEtVr7Swu37JZ8MyuqrmGTCBysoKU9amlHtDDm5bkHmOxn0gN7yRvQtepVpTyikts5lDjrRLkFeJiTxS3q+IcrPpKrbEcSiVglRctUaxL95QpT5gEBsaMswFRSB+HD9Tp0Az6JwxBittIBK1GW9ZBsI1HeKCFNg+DgnscqdXGUiMcRvAbMFb/qFQ13GA+Y6nkKpTrzlwvpboqOGxW5mMNoVHe5vj1gZUn3l4APU5ArfmVU6FkDCPkJbTNMsaofDq5lWx7XmCcfYIUq1Oe5gTBKMNxJVmzM6rfXEVoGzxqYBoeiBF82XOIBLutPMGbAFa4qOZXKC2tc6uWZLu9BD1l4EHjE1LXHPMMUkv4mJ9vELcmAKuvVgXdbq7gLT1VKqjFN+I5a0mSKfMsPIfqYPa95mflWZSpnNy9i67UgVZXmMzWMBi0jSwnzMaYhaBI3zFTKrD4HoqaqvmZVXcYhsG3uKctEG0K5bwPUsq8PE4VOI0JZeaTJg3MljcNDWMyqAckUh55HIuZRJeXUskDTHrCwUp1KF5uMCsVnuFM3glRQWrcSjn5DMfIBH3Ix95sPSAEVoq5R2C5EoTUwuoIst4DUoWPVeYp6D5zLBmjuziHrgxlmNC8OHiDi2XGIdGHxNiFnhhkfbic4e6MSn08QUcN/MuPkOdftwEA+CNaPIjsK5jBuyahXrygVzgCxL1BcVj0pgTSL5SXCcB6pUaeB2QHwEoJbZdbMzEb1cz4OhAL7RZv8ACGWFV9IK1k2pdVAWtbtCgsG15lxV0eWqXMN1nOopYaZ1KtSmCxIy7CaTsfmcHUvaGef/ABYChVHmDgOKxEDNBxKOQRYNo1Aiw9Govlw5I57F1DQpfaL2Wc4izVZijX7ltquWqrnpDEphRXpUtKarxA54PUQOvFROfW6mACNkNR2toDUA83FMXoZPcpUPVylnbJgNQWR4HKMZI9XHiUTL4xML1USxCZYrtWozU1wD5gL3kD+Y6qC82GYKzyjFS03mLWU+EV6oRMmRW4DW5b0Je92y6mTiOZs/wSupd7c5mered4cfv6Q6bRM4jlb4tDvJ1cHGdjiZCynEZAKCi8TU1S6iDQPP2xZrjtjGZjrLIwRYmt6gTrMu4Qy5a6PmYSnVVfiGtwOSoKAeBzKNh5NR8Kbq6l+K8O5cNHbf7zKcC3+UgSEC7F4iXtQKeqMxK+VUyFbZTErVA28ENKXSTXUS5CWdb5QShFi1FhN8OyI1phe5kjPuxgmtAzAFHcABDvwxU9cDX6QxQWbl0nF4ZblCs4hQaVswazxvzMCFXd3cBzC/UPl/5wdrQ4EMU4B45ZY2mdPf+YFUgGAY7I8k1KZ3zDhfh1OVFcxqZ8NRj5GFDsPmfX7l0hFeHXEFuB4gPnq4mEGZLw3CAoHnaPo0lqq/WGqKSbbl0izOTxKTfbyfUWKGtUzXhQyQJgzxPoDxLKCty4pxDAiPEKbs1/M3eRPn+4S5bpdK+ZeUXZfJKCODb5v9YJ0ywC+F/hiBFZeuPPzGvQleP25hM2js9ShTtsi1gi3WkqFKKFjzWoHgV1fiPO6OY9N7H6iXqzH0LuOopQuAqmL4lActYmUCjwS8CAD9+JrZd7gCGsVxAVKndbYUA11LGg1Nrhc8xFYIDSJRy3GSrHrG
347+ bB5wpDxtvWMos1H4Tq5+ebiVydwdS1qpeXtq9zQGFX3DIMS3MMZfKX6Ww3uVjT0mCBcO4bUnxDoLK15jbTfUxKS8rLHWnGtzOMr3xAFxGwXNMww/AS+7MI5Yt9TUob4nOkd4Y0wC7YtTv2TxAXGUCBwCMWBhxiNeZsL1BKzrBvMwR71M1y01M06HUwHYHnZKs6lyrWqmplMcBiWoGVXpnE6R1A9FmGKjCg3eEM4e+hGgXJLVilyTRE6OoFQDbe/3EMEc4Ps/fiWZt7trGFnzG1g3Xx++JRCobc+IztoorcQMi6FavEsDHPicS26PM5ANcIgq0PbUJ8FPWo+l01xrzMQqjL464PiHLKTB8/5MoCMF1Ou5XfrLZjPJmWJn0vTAqRbXHrKEXFsn0jkUdQ5xnVy0JVL/ABKFqqKzFtgNY3ChLBCSTyxFnlJiA5OBuKQF6S2TREXDdX1DronIxbmW13BbDAzzOoy3dYqdIOo1bZgwgE97fmN6+iuWXR42zFmOxcIRx17wkMpFvmJrSzyTiC+YpyIGrjqK+ajAUHvF3ph7GzMzeIo1h66gFmPyS1t48TJjLhXqWUA8NRIZCHO4YHAY1TGWGuPiW9OfSWEvGJF4woOTP9/UTgllqjepl3Sz6zIQpUxADg3mMzjQ+J14r8oW0mO9Eoo8tfvc5NekXaitNXtiAIjdkMgqujmZASnL5nAqH+Jf0ZzrOo7IPJ4gvy0jhR0MX8i83KE0V9ZZRUKC9yo9KmICWdEZUTnNQxFTMkb0cEXWjgalFTISr4Oz/FTlL4X5zEZi2/5hvgKqUxPX21E0eHZyTKF1in8QUUXQfJAeZ5MU693fct8F4HiAVbVmRYJ33LDlFh4mFQHcAt1uaJVsOCN4Lo+4jUFELOJQsXbSruJVVdc941rqmESwH1L8vmK5XLGuKtmebisx9g8KZYYjpjSh60HJYzKhtyqCMMfqAXb3SjNaWvMBlNurjbEm/wDI0lCLE737w6qmSj0lBncKhTO5uKQMU1u/McUB8RG3SEaDlpqIGspn4giwpgOLlRl8vDPrFzIM63PJy4mgNrECzhd5+YZ1GeY6UYnKo20a81AmlKR2t6HxEJzOonBg/wCTGhp9IdsH9xzFOmIwqgr4iQumUrMUqB6RrIagbHL8plgy2r3mU4bfNjL9jL8TGHGT3RpaKtismcXSOb/MxtaQEipySzUxkXuOl4nHiUFqvGfMSHAdXEsGDEE2Y4qZAPn0jMcUqIhoMv77xhBbEe7ikZo8X+sPAHkJydH2OYujFo5SepSPrvHvFOOG6al/CF0jK4LmM5msoHSURT7hX9Sha/ulbFbx1MK3qwikKwOXH6x04rvHM2CvfERzP5m3fNPiBkJbnGuYAMwm4u0VxzEZdEeVUQgcjv8AfSVLANX3L2nNfcYUfeEhewq6l10uXfKNh/A/v8xrUlUOdf7OLTbOfT3iIfFhq6xslzaDDk+fxGtVrqIaSkM8pzHVXn0iDfiypdqFsXTGh4Oo4PrusStGK6yOovNc9xh0KvSLAsuj+4CqB2PtEEwy2F/vMr98uXEw/UL9n73LnqlJb3v0oZhBh4xW8PVnMVH+pjYLtyl/19yxEvrM84xVZs8ykEI9ElRmjR3/AJM5bAxZKEav994Fi5ZLO81AGYzpGLk40m+oAt4I1GqeZm2IVcjjmI7oZlagdoVFLO2YNVfkjQK2RKURQwbrV8Sh3cLi01VmdD6+koCVqVWgXXmJNniK9abphdzdW+25RYaiMomL/Wv7lna6cwBQnHUxCktQLiGBMaKCO3IzA9tlrXjH+y2C+We416C9CGzJGnPLmZTkrfctvIL7hKDEOVcTBczrtcr7Ib9v9llqF26mJrBftqWLAtrYsNYYtHvUqKQ6rSv4YV4DKr3/AH2lWpqj1mmG/wCFyrNnH9RH2Alg3sFe8OYeW4lYWZ1KhSMbLlVjozBnCPKZnaq3m8xy0CUxGo0F4LlFQX6RyW/7w+ZJWj0YJUYYVaA7ArHmYrkPZeWIBxgfME6viHd4lJA26jGk1PaFFC4BeIkurEzzn+5RvaUkK2YH4iFlrxFGHFzggc54mWFHZ4L18ZhPIPaAK+FcOoKVBhYCUm4I4RJDdRFBMVHoFJhCb096hVCxq9YiuGnBGTkDxKNb4CsQpqZ1EPBKjtLsuKys2PEcE0ghBaN9SxziFIoOI1V66b0yi10ul+pmbXoXfH+xjDkHPp9QdsNjdNMTEELdn9qVwe469PaJ2DYQdjeZhstY9ZSE92/E3Tr3cwvchRqq6hdT9v25cZFKqPbV6YECf3OmDWohzpFQt0rif//aAAwDAQACAAMAAAAQ23f7aS3/APm3+NCS1QBmnJJJJJJJJJJ7NPnQ1y09En+vYASJ14U6K1b15JJJJJJJJJJJk8d4lUwsyg/lQck7YE7JK02nJJJJJJJJJJJJCLgRi2eIrFj9Pm/JJJJJJJJJJJJJJJJMhHJNJq46qX3heBXITnJJJJJJJJJJJJJJJJJJwYv2w7824D4mQgi+3Gk5JJJJJJJJJJJJJJJJJL3llgVsUOH5cMit7hCUHJJJJJJJJJJJJJJJICNP7n1oQWC1SaaxvdM6Oca5JJJJJJJJJJIIBFT0WEUFWL/H24pe9zPoppcIPJJJJJJJJJJAqNqP+Ty28rpja5errope0ByZ/wCCSSSSSSSSCQcLDItSbh/M7af+0RFWsNolpp0txmSSSSSCSdJnt6hrzjj4k6NZsk/qNvbpcDK18xLsCVEMPMoNSZGUs+Ylr9slSWWjADJ4GuCU/gP1RGE8xIb4GR00oC/EfermKMHG4yNUd0uQFDWlxniJVuanBGVi45A4nsvJHebnONGiBDhQj5vQPoBJi5/+efv3dy8Dd3p5OSLm5lrr4hJG8Y+zPZ7dOvPpEJaFG+pMWY5iq0MtVisDooCJkJW+DIOWfyvG9NDi2Go2RCUqNmFS7WWAMHmGRfTv9tX8KShCuLgEDisKbjCvGBAJfbuaHg8KmnRhWMYVmVbDu2Z+iYsPxLlFh41pIXuFfJ2UwhAvD45ZFzCnWS64d73mWW/bKjH3csEYyVTMwIPmdAN5BUsUGsYclNP+eDNBD+zM9ZdijfkzePg3qlzGvpGnzo1ja1etdpC2zJ/IiJbdfhPRWSmw/tHy/GDTuRdwDaWf2gnGdchRPdrPEmCO1/XryGo05QfTu5V8UKg4MLA0nnMOfTNXYOeGofjDPkdQQUdQKtH6Io+8Jw3S9JSvjGxH9AdelN+XsBbZm5pj57zAevuiL8YWh8BnQHt/mzQxK4nBCOeIGmQYeRbV8SCHPuoQ+Tg7RfKmT42NwIRrfclEmLCJNJe8U6DPMXrOfx/CBJxmMNjybb87eymySkmk2xawY/CWQM1No9SOZy7RgB0HpjhzItk0IWPzylRRqvrJbeuWeI2QRI76+npB1abgjYWMZDInM/XrK3K1VeuvSAq7+u5tMnYryI1FhqU9ekVgA/xOMlpxt0pI+8cd5FWNuULvxSYJ27UPLGOA5NWoJermOUhBDTNBHt0+2DLKl7dh3tidvxyOK7B2Z10Jx4VNXxMecOHRR9Up37GzyUgXjtdtQTKMuIuDicC3v9kl20vvxUxXcfae7USdYLfpHhYCVJHiHNEldWj+ziFuBEYP4ltLFfyNg6gKGHeCv43UYMPwaeQ+gDF6BQ0Yh2CIMPP5obB1b8wWkapKxs6Em2cL0faAPuB1aqW99zGhvP8AO4XTOuM9EBVoNY7Nq42kVMuSVpJxEb9uKEEhzwWcmDj20DFAcWl/A1vjq2X6Qp/w3/8A8upbyDLc0dGz92brEXmdzEU9H+UvPAZv/np6pMkmwsNlOXLMlQcsKYMC097tihazB2IzbO3W3o3VZ97/ADbb2r6gebY2TNVQ8RDR9RhJlj6dcTpQOjkj2UuKkXbO9lsI8NyGnQ1HhSisH9zKgt9euTLEIkubmc8jjq/bQ1RfbZrqeCpDI2igxKJvtF78IfFprT4Sa/mV9amVFKOSp3co/tZILZfmxKgYXU7caQo5MKL8PgVkupVL6WcG7gwbZ5oCLd8ghdQQHtVpN+Ea8bgGw6duOuprQj3ryiBMc5i1rnCu2v8AttO7xfMFMUCY/VMYM1IVvaJAFw2c2t6ZcrAMHQWNa78DFBeh/XOG4VWPeTvjpziZ6nBE7Wt+y2FwgaU1M5g/AXZdjinxszXyHsXHUSjagM1JHCM//8QAJBEBAQEBAQEBAQEAAgMBAQEAAQARITFBEFFhIHFAUIGRsaH/2gAIAQMBAT8QzaZ27t3/AIZZ/wAT8yyyz8yz/gG2WfgR+b/wyyyyz/xTGtov8QdvfzWyTJbqfgS7kCn48tzo/wCrMezjHn5v/AP+OWWWP7llkQxM2Wfi/ufjP/IESY/kcIN/CdgtvZOP5Tsn0vGxrb+IGTPOwnvZssg/cj9GWWfjqxYgz/jlllllln/kisfxOqHGbz8OTp+dvJf5IpAw9v8AF1YZGDkD/vYtp8kxz81a/GWf+j1f5YPbf+Z1kgxJwu8/br1b7Ly/7uZ+ZHZo8uDb7yR9uPzLlsB3+zPBsTP/AOWOC/YP/Srl/GeO3a1rZQwuj5aOZYEOcgp0htdATpuT128Zht125Htt1tY52e9l2DSTnI6Q8tS19/EOmcRZwk6yq6x/6VdcLQ4W/tsdscFqYzmXTdjJrAfJwh7OLfxLnkk8kv8Abe8s/G8vYPw0I/sPY87+B/LGNPbZW42C5PpOAQP/AEWxPI2bYRow66Pk4bCRcnnYZi2u30XALKXdtjd6R8P4PYex7D+2H4DtxCd4XDYwOwbywcsxK2AdgXV8vfLbbf8Azdu4Ovko62kgu3+LapYXCTfJG9ewlXgJzh9sxyDQu/jeIi+lryB8IAcs3sI7FLMs7kO8leEn9sWA9mez/lq8sfJ/hCwg386dclTimPbf/K2eGyLI42+vxINTdy4cgUwJDPL4QJsrZo7KY7IM/DwhzGJW7kjMmewYSU5PraxXmDLsNlDXt9tlJsbE9Gzg30IDF5bK9RjywYWRtn9tnkP/AIm9C94Tak5xLEloJDUExYJZ7VkaQgxkHbAxfZGEq9lHSRLv9kNtv8tyH4nWymX9hDIsCOqEZto2wkEcg7L4gE1h/lpibzJcIU1ZqwIbqBHljdJPtq+txRsYRNz8Voz/AMA1Ok7MnAv2xxlA/wBnsLlA4ekC7duRe3mmMNPLs1ncJ4xvlJl5Jog9vSNMjDsHxgfJWZN7hPkn2BdvGEdA2CyS5HkuToNt5kXL38xzsHeyvlq3qAstCdBeSwBd/PdjnyLJncf/AGHf+C5GjY/PfLvyHYOdscWIbaf2E0S72Z1IQWHiQsZ4nwQHX2PhPjM6NhdtvTIs/BvIhvtj7MxjyTBJIW4sZ4T5FtxMeQO3OXXkuli/yfiOEZC8hvGRHcgiaWTmsJGWbBZJgLRu729vvt3yFGSv/wBs5lgX9uGoZx7KNLg5ATpJ4jM4DHEJ0bxgidsTkoA2ZnIKweuMQGzmuW4R5YNvo2sYLrFmfj/qdiM2E9JFwhKWxuMW8l07+FPCx8lJyTtj7K0+TL2/29csXlz0wHfZUhwtDbd0sDGx9l2EMtmPY52w+XIel/8Ag/gwU1nrvJw4wUNt3PxOHJgbE0WCsF3+SU/23/kwNKw4Y1zJvZEF5f8A+aQMiaW5IOTrGkO2hGry4eRr7eTuRZpAdP8AZppZyf2Txum/zYOSr5Y+wPs5mxuQtvMYYXrICffYJzYEgXHt0eWfYdICe8nnS1kPcLcv8W4/kE6cLDhaTsnyYbb2FuGxhiKHZOoYVQLDjb4K3mMWYAtOsIyNWaoyCe2jixRb2Fpb5fb+L5fY/BP7G32SW9ul7NF+IPdmJn2bhhgrI5228h3IGc9ZHCGcYbsh5G+SbYMs5NEckHhPAkG6tjyxfYMYYwP7GH2RHn+27ZBZ9n3lyGFoeM27D42DXJowCdt+/GHT+w6SXffJO3XX215kGN7X4Ps2U37DmyYYSR3lmcQcvDsKW3cubeIsIuJ+aW/bhM9lFPsB26A+28P8l8No79lj2z62ul4VgXL6S8uIZO9hONnBn2MSplo2PV11hA2Ndlrc8IFbW33uknVtZ38cedmjfJ4y7D3klqPSX3YcNuTB3bmoCMr8xr/YuLT/AIzekYYW6bBZzJyGQ87by1+28i6wSa9gPsZluR5XmPIpk4XG/wBlup/liyTYfsOIDr+Tp26LY5ZBsIeyeLY57Lh/Y/iV63PGP0tHZQ5HYvEu2PkdZkstOkxrIWAir2XVlwsrHIm8k3Z0iD5cOwWfkMNmDyOsuGR0WRs9TLMyOr/UkcP33n48Zf5Jr+PLpBIL2Hy8y/L1dMJY+yh2+hInLEH+2kudS7jCOJsMZck3jAWjLeRrYDJxDe7DesA+ywtsJGJ1uRAPWH268nC9N6Luwd/MJDudj6v+5X7dMsxy7Mg47aey17acMriZiPfwPx8jsjPtkkBmw5NPIWL+r1sbl7BXbc1JfbOR5aAn4l0M/BcewQoueW+paYWyL/51o5J2JO2EOTA9vWe+FnjI9nyRcCF/9h12+CT2MLD5ITsTO7I3bMT/ALaBY5YONiTuXXGBsjf5uP8As3l7OEZffzcb7ct3lmWI8n+/g8ssBLyWpB3J2zyWMLs3yHZC4QYLt05cz+xEV62N3LiwWbeYvAkmH2ezx7azn50gSDs4EhbYxOWKwPJ7MC/hzeQwyQcgxI5EHJk0H84QfZWzOlw9uZdMctdv7tyPO3sOtjETWx8t2U1S3C4kn23JATx5bPZwXXL1OInmrA8iL2xeH7ITJ6LpYB5DTkCV4wb3+MMBLaP9hHbCDYXhurlt9s326WvMsrFeS52TPkIbcLiCeKIFz8D2+2In+Tx5OrklsOnLP7aGyYjGMMsbcOWfmsHbthcy9gnztqll4l5POR3CG+zxgF2As7JB9kXXkQNgewCDtk8kYS2wNJdxbA19uFiubIvhIzsNWr7b3JPrHZwgiLNbhILUQ7GSzpMN+wXWQQfIH1v9mOJe5Yi1a+W/22VbeNuxdb/+y5sv287a3Zk7BFk7+E/F1yDslpsewgh24se5EHbLa6WQL2Uv4g6W/thrPlyiQNfJ8Xya4vkmLSVlmetvYdjzWE+WEsq7PWQMhN2TYW2iTwmdHIGan+Whyd62ucvkT7aexrjHvbB1jj+CF+dnwvvZ9hOMocCwyxlt9jz8+SfJJI8sss/sez7Z9lwjpZ9jrB3z8AnswQNhqX1S8Q49sEEMicPiaiQzy2S3D+OWXFq27P1bvkAMJzKnbS88ltp9sLbpIMnmQkj3KLCxf7Yjp1tEnqW/JNPYGdeXbR5E9J5KLZ3khm3rIN8iyLNvt62dlg2+29nLrsS9vsOez2wnLGDsnokXLa5aAju7e7D6WGkxmXAGTnPIyoWwN2PYwSfqRbW/qEs8WxkUtsvC8T5yVMtN/q+hPY3XIMdnBYDsRvOv4XS8TsuXZGJ43/U+QW/nnC3Pz7esAsMm/I/235dnUsXeocnrDS9YRswkrtzn+Jq9vNsgMR3+w+lki/iLGkeF8uYMn2X8ltkrdbh7KSn4N+Wa9t2EdYT1vVgMJjGPFgLVtN/kF6iCuF8ZDLTbj5bRzz8JZyOfg2aGX/f4c2H/AC1Ucv8AYCVEavZ6tgfZYNORoyEesv23Ls0Z1BHp/FvmTzP9kp0mx+Du7DUnT/Z1DHJxyN2WZY8t20xP6szySDnYExGZGtj7BfJhiMVyXmy97Go6ch//AG76XRkh4wd5YefZFrAvJ/Gy38WbOyfknI/AywNI9mBnLlkOT8s/tx8s7bMAg2M257dZakgYpyNgLkWbloJPmdfYRjeZ5L1sgJxeQ/kCMuPJM9uWCR8tZO7Zvtj+3PD84HC0Pb+15g7toE9LF+T5L9QJ2VgzI68n8Fg28/siZauJ/wAnkdNuMO8kt+Rot/yXXk9dG4ZHJ53YAJkH+PlwufCEvlrbWPJ7B/IQ7BW3IS5bxFmMoFmtyHGB/wBJS7D/AGVY3KCk4HLf5LBIIDwyB43ZHyRPbZeXhYcJcqXiBaffJC5M9jEOWLycNZMuS2Z3JGyeJfG2/ssPy6cixlha2JsFdvgXgltr5I9bxbzsnfxh9ufhyy+X/dh5ZtgyBW2vl9y+S5EuNX5hK5DCZQ1C8sjy18uewDpPsz+pxYfZzYAJX5Kv2w+tw5MJnZye9FpzJozef/Iq9vJaQ+pUlZk9jrIkbDxjA7ljmtyekFodbZ231+TGz8YsTzyeodqt9gJAnWD7OfLr5Z3PxH8s+QZyM8R3qwI2cyxt/ib+2gLYe/lryJ0bDcQRj7ay8hpe/PxQPJxeWrZJnn6I8sHkR5/Y8oekaZG8eyt9n/FtOSfYL17IexJkdcntjO3PJjCVgEQxIPYC/gNWnyxZARFjzkcsuTtrYNy8I65J/kHPITQwLZT8g5yA5sYOSVW1vLxvsHecInPt5PLA9tNtiQyQPLztoS/bDNbQtxsKMYFZtmfb5UB26lOfhAOstuxo7ccbPMt52863XSDdl/lweWtNZkv2FY5F5i96Svj8BfydN/ixfWAXVbYltEt7ssjmt8di5YhtZH0nsSJ0QOCZvBHFOBY4/kYH9gILoggSenLPkw+2XIcdv9YH9s7yC6Y0sHJCbk/yW/bjsNWIzf5S0mQ+2iX7APJyQHrA+Qt5P9hMgJf9IEBYGBYhmn2z7Lr92xnkzYv4AwPsDCcb+RDrD5u3WH1uIX9EIyXrKwX3be5+FlZYxu2osv8ALi3I1y4DIbRcvPLp7f4/AVr+XT5Gp/iOY8IbBu2xLgcvlAHEh4f7beMhB+yxuwOqHOSm2eMI+3f2YLbD+NrYXftsMZYWBaY13bH9smH8sdjgG0z+DVj9tnPwX2Q6eLtA0ZfXsHS9nZcGySw2xBeeyG8vDWLd8jPIkQ/qJnwg70jVvZmCUXksvo2t4w7P29KWbD4xr7Lns7cnytfZe7t7zZw+2Pjatjk5t/pklllhYTz8PZJI5cYOzpI+ZCDM2MfDL+pD2Osh8XSCSeOu2vjlhg8nNNyrbNwm5uzp2JBZIZDblnYZdhQebsmdnMr2H6/Bt0j4To2FtInn7FqWcmA3Je8I3xJNzOTlsd8YH9tv8n+BL7AkfEYdZmY+kcX/AE/L8LCwsiyBb/A3H12WQhvPZTV7bONiOsgvUm/gPxlhOpyIH0s7l4nS6DPEtNsj4WlzGdjWThs/kkWMnprALjyZ6g/J1w8sHt6wu2XNIE8gsJcPzf6WFo9vXl16Wn8lP5H0mKLN/wBpee2b4wvsRf8AZLLP2wsiz8RLtkfxhvb0R8PJJ5YzGA2Eu7+aW/y0GJY3ctfRIcC7jYuezO7CJy2d/OcD1h5WEULLFce/g/y1Lr2wfZ8QR5OuWfL07GmFtDyCJh05ClW/Vj/buWPy7Cw/v2du2J8tbsWfbT8cfIJct3s6tmdh/sPZLRDeTi8kH21tGxhz23H1cQvYH40hHyID6LMlpmQbgkrz8hHkI4zOMjuNlvsYEdie+QL7Jeljk86x/kxvkj9/Mflkk9nLc/BM/E/ljZjCZ208jjsq/bn2bl1y1/JRZbPfzjJ2OxEg/Ht9C+WcNzbQeXSynfthJYn229G49kR+Lt24W2zGm9WwOxjluM9/A8PzUGWfz8JRgMuvINgbiQjw/HI1lAnX8X8cLdvS/wCidH8y3cfizvsQl5InZf1OzYNvIbEBeMC2X8RfskxRg5CD8H/Uo9t0gz9NQTyQQmwxjA4+JTsV8LiXLW1EL3fx+7D3W13JgBC3tw4QhxhJcmc+/g3saPwSj2Zz8NBkatSnz8BfyQ8hjKH9MfJT7cbD5Oxkh5bIDeShIhwsE2wzIgLxkueW9i+SNIjc5bzsushWYhbVbVeWiWH94/pYfS8oSvSH8JDk5qytt75aXwSWMYvL8jfrD2ZSEfCN3Czl3eyaz1YbNm5HJwOEmHL+MIezo5bWFj8phdEiJ7BpYtHZK3J
348+ 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
349+ 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
350+ RIpJHx8fi55IgaQTRPnOSonFvDznGUQCbC38c4imAdInEwGd+KTfxlHqWXaXIoOqa2n8azjOiE+36/jDLDW+hoG6COo0mVuSIr5o2UHCI6cAYWSFF3jSR2kNW0+cXLPZLBvheCibJ3tY0TAdjZ1sWpzXu4lZr3huyuHh/GBytEQFhdUG0yn5ySuYoiq7HTPCpreafOilE0IpU2vETY4ugM0rt4iTZX3OOzBBBO6iSsl1fcwADQMEgbuLe2aXVyrc0V3m7wPett4aCkK7KFxKgosdtBwgbooH0N4IW26o1jpeAxG9BeA8ZsXQYHp5MWEpS/8+8GMi2YNE3PP5yBKDY3+fjLzNEkvXGMQ8BGVdveCiPsbH66/Ll00seD8ZNk9U8o95NSKgOtc/wA4SUBRw/J/GEPDR2EeKg+HvCnk6M2Fn+XKKLQQ1/T3nAdRvkO80fRZTB5ChWr4aZTgHRilmb0MIQBwdcSmhEpsLCwABamKHuuxKKHsLHnsbg2KBnBQaSTwKTpMEtPpniovBWvVR4TFBmgS05KxeW6vOGfJAyIhfZfenWscgOtQ6EHB/uzsJRqi5bcPPN/eNOoLKuu+OPOEofSKoEIIXzvr4zv3BIuBJ/maBmLTJRAUQrUt0QWuAxLhNZVgLQMDUOERxGBqMdHQyKqDrnbFOKWR75wBqAaF3uNhZzEUcSg6Gy94nR4ovRU3o20o6w5RjFE7VgpVPwTBQRSZAgbEKXynUwjQK5g0FqVHXNRw/AIjm3YQu/HeNAA+gLrU1APO68txNYogOQ3bv+fOUGvKx+wPrFZZIWy+zi6584F2wrQaWc7/AN/ObrFiukmn1/7cvuigoFZreOOoJbQHvDKwVckHYJxEcW6zkNjvvrCwpDQ2fC3uzj1izGqELa974yJug7rYeJkNirIr/Q/1g5vUhQNrrmG8FJKIXYcfeARZu6DOtZKQQhB4cn65OucE2Axzq3W85t10HXvI8miJ2Km9DpP5xk2k6MKa2olMKh6gfo5HCoWYHb8ibqJdg6lAWcpx8PG8vSZbo28A5F8g4NmXtpLxWhbx3C44b5IiJOLLBXnp5xZEreGypXdmCDLvKesTnIloBV5pJ3i4TQImzc3ouYL1UgYF2CEwiANWW1CmX/jMI7Dq/OuMAyWCOQQ07E64scuVoEgYqWxXDovEx9iYLB2PwP7yYY2u50kDQmjgbpu0CZdwI+pP85sZAKIqvDeO+cIvRWKmrB5Xn5xQUBJGNujaHluQhI5PLm/XDmhEUTCOJ5/Qd4gUKtT9sJBKlFfjxi2ORAcfjJw4bPO5gBRIGQ53ve8bxMjvO9beOd4hFbwreo5yNqKCH1i7t1eQ+uOsAo6nCnzvDDpyLCJGRrc0wHuvfVm+YjR3Fm0bjiHLo5OwfAa5OV1otGEGCQQCCKUCjvjFrQFjGinajHSoNrMVlOXQBdDMCuyqDCwoIL5zuOF0A1hATbIJuNbyzCFFXlQ3R9CcdX1ne8F6pVgrDROfO8gP2SsBeeS3VvHdyUgcR0HUEh1PRryWGOUMislQu1dHaTGCNUKi13A7GKe9AqG2dwyAgPJAeNaiPWojWgTIoRFJp2J5As08jVODbXQ+McK6ZAVXQNobiug3hdcxnEjrQe8VWq4A4Q4BVTgQ4/Lm5k7DP2A2LS3cuuAViA3zBwpQ1GtoeDJzVYFet+PN2f7RHW0cBCeX5/7iCIUIcM656v1lLqptvXifeUT7C07fjrAAfEYDbr+84gA2k0p7m8vlF0qvFtvfGI2EGo6HRNjOPvBUlN+5H/fdxo2awoD3vX4xtgQKrs3r+/rE49PI/riJNCFhfUzrYS7C3eIDKQSrLWH4yYahKh6b8Y8kLBo7Hf8AOFXEU/kf494qFG3VEv3xlXgSDuP91grQFZq8EkN+pMUrWdw5nk6a4kTK7+PEwSkRsG3aiuDnZnZyCQhqceZjypLPRlBr1rfGWHzXNxyzjv3Mo2W4uNgWCk15vZRk8OoeD4Nr194EDi7S2VoM43xvK8BTRaNIoOk1XxxnFGiIlOGwrQA4GanLQKxmwqvYhxvWcL6AQa2gvYemspzQY9REJwScRbd48skQ7IdGkS2lLhHxjFSC7nABfLvEscBiRQ3Ma2mqodO8b6OC6idJzX5wJi61LHdCzWsLA2uip+GFEkhE6RwDxiMORBN/Aa+DDOMW/GIxqVTSe8sesvgXr++MfqFIWxOLzhVk1AR061cq+RjBEn3/AG4esIUAGrOsfVFjojnvjN/yQWuieMQts4LJVG1YwaKSVabjVp5QFhG6Ba7Ma7SWXZqQTlvaaMTzmpXXYkQaVgptjaGVKDgA4BjXesYUMGJ7hW8S+SOjcGgOtWgaQU5cSOlo5yQIMR04W7T3iyRDZKcr08teXnHZHVQaIcBVeEpzvJJyugPCrbOfXOpiLY6faTfH8NnO8bDLLsXXWz5tmucL0CLd0K6YSROH04nWNF3fJJunv5y14KRHAp2S9Vy7REkeZUzkLJ0c4sTsex46k5fbgd4z1rfBV91hlWVXKT3BLz34/N7eBKSBMIHECr5nnnn3iqruopWxerq7wbiOiQ7N34cSUsnG6xPnFlfCG33r4wUYRFGx4X3373jAiAEDX++bhuJzo8TxvATsAVcpP519GTO2tVE4U9yfeKIgBeSs0H1MI+4MDR7/ADkMEMTjwluGOgBuI6hynaYZ0JeH1+cORK0nB/d44X5Th4qet5eoKutQ6+dePOWzwC8nmuXriZ31t/lMkibVqUCvL4MdgZ0SGuP2GCsCIi0P3o/jFgoKRle33vAS2+MEuV49cZPv1sITQgrLC+8bIq2ned3hGOw86kTU15KaCKz5+6zpC7K6bdsg8zEWUEIpRPuO28a7c0KAoN7p8x5wRM3ClAUOBvvXTWqxHKm3jsRAUnJDH/G15buwpU9u7yPIBLoQKq9AbwNJhhHEeQKgc98YtIjhOtZrpMWW+RGmSKCfAZAltL2fWU6DQSvSni/xhwEjlVfgDU/eIbQSKh8zv7wzwBJTvjjL0OSpPyd9+sCCLq4vrA1rN9nu9ZtAK1VsfzigW4iLrtylIKwug50P+POLClFlcfD3iQGnb/GKlwUj+WRQSFFwPfu4hDIcmE3gLejbpwNJ1OnjRwRRThAIv63AWbTWMBikdRroDk7SGwgAY1m9tiiAbe7vmG20vvALGBBd4ImnsSYwBlUwS0aq2PNLZa5MfkgLtp2p7eMFvfod2qOUsAhCfOKKFBkbYrTsnGqcJY3aiAHQ8nBvn84ILqoEeez/AH+cCNKaSiyDz/dlwyoNUugCK61X6+lOnSOKD1NPd/q1CmkDjQ6PkwYpUFjvyvx45uNUFzWx6hz7185AZHAh13ft/OHgKHcXiTIXkAIgbtzYSYo+K63qrfvG90MHwI/vD5SgtQmyc63llSKjkjhymgRGeL8yH6ziFJSJggGy/wCxwgDIMSW5ZSbdUQbGOsIL3VxmuN4jpIB6hv8AOHh3Udt/ecktmnWk/WcJAyuDX4v97yyCBeBr89dTFEg2h1/3EQQSubJvz94NHAFSJJ8bX8ZK8xp0a51xg8qRRemLqd8wt8n7JhkCUQLCzFgcJlFEqyTrGdbNpNu61R3ycZfiGqcD+UpyWO9YibEAiRwA2+r9aMMz7/RvfEb5Ji6PATLsE7GU+esinEAsgOB9GpvTJoYo0kSrQ5Q9Xb3mhjobRCl7E4cixRlHyNgb1QzQ5JUPEkoE7GpDXBwUCVE1UijYroJqTjhhoZFn7C4boigmsezAMh04h1vBuQ0EjTs6x2IQwLNermssaBs1wU4x6MsUia1/Z5yRLUR58ZWQnbvx+dYVgfYN/dwSLDwd/eIjagdFmAgUvAc/GFqRBx39YeAQchPvHwoCjw/EydaJ48e/rNfzgOI1/dYJ9GkevRlDhpXVnmzA0vjIQXaw4lroS4CWprCmi7+BQjY1Wx9akdJBdDbpCMRUCqQhRRJaHXlOGNHYoq6mQvRHYBYdregEIb4bHr6p56KzaCTg+QtJLzhmGV5cAifKP36xgu5C0cG3VJpPveSwQCJF4B1udDLwc4OpUtGnZ4WpQn8YHlFJXyMlXHzrZijaV2hV5R29zgvRgm55O1FYjTeQ4vqlCjlU71gIiUwg67fl16wdYStXguzGaS1isb4Orfxjg0ujoEffnGmdJ1uE67ffeLqMph4NvjWAo1pZ2jT6e8AQATYHEhs+cpoJCkQX47zUjDS7B1x+3LewbTSo9pr/AJkLAo7cDvXH5zgsAl5F/v5wmChdUC6XC5C+yCeNf3WDlfOCjjn5DAogFdO/Bg4jtZXhviYZrVLcNUKfjnIbFIxgS0/P/uAMBCQQTcH3jxMI0xgpT5uFUU2jovU/veThskTVf6whuqbp188axABpYXncvz/nDcyE6juI/wDPjIcZCiXQ3jnd19ZeAr5u8cTRb4PdEqpGRmxAcFGtP1iPY5+Q7I+K3vehkgpSCVsHUGtyC4NK41Crt+WCLJOElHkN2e9a5gu6rAXq7xhTllmzI6XayOQYJup5OJwY3Umqyg735ltF5Ygj2c5FOBPb75xC28MFIhIdvE83F/8A4gpDmNrU58Wk5AjbKigM5WHLaRaq4emRdIr242XetAEimUZI61AcX09Yiy2obCLmjRDl5wKegL+KkHmRpqGMobaQnHeB3NiG5PPOAWsuntOvEyBQrQe/zgG5z4gX3zgA4BoF2+N6/usR7St0D/syYUJ3x/WALWu3H2by8siWWBP36zjEOhhx4cieEc1/n84IJLqnWakM+dX7Y982AImGBQUBnAGi26MT1oQ7qVTiAgQ7eHgPkMaCqghVw0JqqYvoBLXy7DkQIJBHKhIpKYSARoUaTVdrzCS2bp0HYF7QyvzD40OQ4L3LDjFaQXYqFbwHY/8ASjoO1dEU4BYtfRi68nxI+97E/wBFLEFhQcNlP795dWBKU0NL2Pves5cW4swRGtR3dvMmQcRq0bbFXfG/POGhTAWAERY7DXjvAKyp5B0Otmn6cFERs00CM4967/hIoS7a18bnH6xyJgTU3vsMGtCBOjz1kLYltOOOvEy8Wzx0O/Z/fWKqFNI4PP6/GBSoYF0n49fr4zvfRcIXjo+c6ONV3foyiUTNNb/zzi54kbhv+mX/AEYHyRt7cuFom+jRf7xgRkZosnbhw4kf5PGTtHQtVdH6ze2HoAvdfjCB7A8dbH94bCO5Em042bxjMnQ4O/51kwBKd6MXN1UFdfh/PJinTvs1odmNAtXiQ43g5hC2hfPs/nOEAgV1Yo/x0u+DpNBCEloRRSfthEnmW6NaBE96fOAe7UCiMcQi71xKZfPQnmKaDlENsYbE1FkQBQqsoF8R4wezWbF7I87vviYvFYsF3Hewm3hZOM233IIlQEZKD9NMMO420IbELDuN8AuJ+2gAOx8O1VmqPCiITzpG6IHb/nCq8CAKEN/afnCMaGwUn/iU7cn9U8x8/PIP1kyTgrw9uLD373k3HCWnTnYS8PjrGrQUukb07FXX3JkjJUai+31hagqBB+c7sdb/ALMTwZTRcPUEEgH6/OWEX4wBbq+FmXQelqqYyorsev8A3+MW5pFNAY3BHOmvgzZ2XKGi96wOJE2Bu+TPjh9/Wc5D6pVoHgC1dJ2MnRzuCMCBvryUHFRuEzlBYanHKeWhUUkigALvRfDSuGCne6Gk4eSdtI0jcbZaRE1UQjsHk3RgckRA7hpRV+Z0AvlCiTSxsmzX37FBmsyyR30f4+GQpSiJajPbK7avOUywC1R5mt9azlgz0M274fN/eMg4gwX3udSnnfnAxLT4gmxqcXT9YlIQFDSTnjmcbwEJo0BhpRLwM4yKWNqNh3/n9YiX3tdO8PIeXpHqzpyogWL4n941xmnGxA7SM4+Dn+EUjvBEmx48b7ww5Y4F7nvNYgXc8vP4+sBMrCpE+0MYNHTRunBfjBCo2LRZ+cqFAql56PG/3xl3FRTKcP26y9QCJYjwW/j85GoQNcb3rDJQ74Gutav+MVD7A0cDAAWnTx/3CBUaEMTk4vvOcTBSFq/3eMEKianDinnz940c1ABqfPjebMabBKxwDpALDwn8YFiJwnj39zJKUYAsIa9CFcRhBiTVTjY/g1x1lzL7gVYO3ABCQ4zj409ka6CKyaDHW8A9PbeJqbCEadSVDG9QI4IQTmaLedRNJOAOql0Fc9+esADEqRISpp5KYiOmoEViEImO5DuuA7DQTlIdwr6h5w/AH7EASnYHsukmMpMJIiihdabvT5yWXZ2RdS8BiPWbiea7ZTtviw8Y4xRRWtW9FahKHBkI6q2VWKvR3+cr6p3DV5d+nd24aJ6iCqWERewf44wdy9eDvcYU72SegxQSejQl4Bzxv51k09KpveE53rcm82E1Np+r9frAshsB4Ly+PvEHsJs6/vnCVBn4/fnJU3IdD1iTBU2GhzTdzUG4Li7nuYNsvnHmz8MHZQGUWE4hMsaDFHV83KOxx8vapHEoUcJhlNEfSAj51EigmcIWaRBnJqljEpNKN9QFgGwofTVrzgoIEkKqJQY2DgcXBFMCynBv7HY4IrINHmWePtuOPrJOWa5/u81ehbrOSvJ4+PjGvFgM70Udx49ngy+sSMLQh1eP1mvSjaI9P8evjAiXsnbV40x9+sbBICd3kOeYn0ORSBdON0fvk/8AbhhiaHCM4enFfIo8o3vfGGksqL9IbJfxiq0BKJc1E8/N1msKJENrvYPHnU56wQAkY0hTt5eep1iDXph3Ods4b94IBKtGhlK2ANR53vT/AFxkEzpVCzYN38ZsAyVHkMQjyiHstwRbdDrXOGQpFoo6H9TFSSAnh53jbNQhNvUMAA9Lb62f3xiBS0OvB/fGbhrN8F8J95bSaEWTg/zjXtEdRfG8SXXNRs8bNdGIpfavO8AAVAzUOO83GGp7bJvxcgowQO3j8f5yaIkANdRk/wCYYYI4xDnYuPZKaIU5s+RNesG2tQg8yJ2J3NJTJ65gANtahqaC3apZ55NIwaHIrfmGB5GhGLeDvhOMNQWLrbodCPV1d5ZlOOikIeV9AR04LaY2Fi2cgEhyvJEPs2SdwMO49YhraQKK5YfxjHQ7qE4kgmrs/ORdtNgre9NeZ1JrNINv5HK/x9Y2e4LSnIiaies7/pVOoOG7vxh0JPaF7eIHWsPU4tWsCJer1/3CovSbFNAvOz63o8M9S2jVB5N0wRwGploq8g5qhB1Gesrurx2Yobx9Ymmj+ccsOIPOF13RAS4cLYx1XLktfHLg05Q2rDJK2F45+MTgmpRgeF2fGTGkxBRzVW2o0UUrcNQqWgFoBW17MO9d3c6hGg6VYF9HaQaSs4walRSySCIlHvULZi5amgEdwO21vjABpyKZrVFAIm3hRgpCKNohYd8Dtu++0JFANmIh/wCm2d4G1vWsOimzRefS+s4F3MNdbop5mb1Sy5siOhPyOYbuILmR4rnocG/WFO80F3pXp/1kEJxHsQVJyEuEHjIJDhRekDWSgIVOlvBx/hzYBG9Q8cd7vvCAu1VnUOHT2nPOb0G9nuNJsOf8ZdADbnJtvXf9cGpQUNL2lP747wdDcsFX0994BaR1sv1t/eG5SgpR0T9bydkmx/1hIwMs7cSQpwMZeHmQ6HCjIdHrv/WRV3pqGNr/AIJ85GKsF5Px55/Oa0Q+QnWNimtA5P8AlcCWgIx8l1+s4EkT2R7N4IwRsRVGtl/usAgGgkhk3e6qgVyMLFY27vNL/GRZW0DVdzx8ZPgYoEfjn+mSCy2DTrZ/zrBZZyjbqL/jAf8AqAVqPAEOcApUbjYBzUOwi4mymM5FZrmA6AOsUH9tLET6Hu94nqzXDqR5BEYd94wZYtlrp6Xje/xiV0nkQA84DghoLeTp3NN1+cdB6RTEFbnnxw47udgKbl4OI/jfWEIS0Fp4+7klmFd+27Tn+7xosRbiN5D5y6a9ogRIJ1ZruesK1l0T2cKyb2dfOLOlpwGlCjazX7wn76Dmg1DwoN8c4RvokKnIF30W3nIajtUH4/3gwAXqYwhrwdZ2oyiDr8Y0T4hNYVBHC5B4tx6yT3NeG4MgZxUWzAVEWqBcW+DQ8lksOYJ48h1+6YQnqKan0f7yRWl6XaheHk7jkK+iCPbQ4G97l2viTZKpIEvAojCBN5FDoUDdRpEF57qagDORDyqQLCiM0h2YENlAojRo0Lu7QIlRVZG7CJ3sGDUm+cQoCqlbmnzN6zhYeRLzV3DWLAZCg1kOOddP4wjfIYti3hrdP5x3UBAhuOjVbwne5iU2Kse5PL5pdubl3ECQkqy2GDUCArflofRze/OP6uwvALwdc4WdiEyKNsL+X88ZqUoBSnXKnG8VQYDk3h3z7/GJUugppR2B5nesb1WYiHn9T9YraqgIR/szTi8alW+ZhK26Qv5Of4wwlPgu/eClsG9tHzgzEOSQuAKHZfthw0Va1/G/GMAqcOWvOCqvBW/yxKnc2lmaoHLpvOvx/vImSQ7+U7wCqCp34fWK5EN0X1yfWbEJCtB8wvvCTVtupPV/OJ7I4vw9Y53Lxg69esK8EgOh/jf8dZubaABQ/wDY/WIjZBjRFQEorHR39YNPCHIFkp1JzPvDtjNCaLd/fPrDMRJNyEVPRefOVLEJsEF0aCznxgSopHS8EkgSPzOMunI+oBu3VNe8VBypsQQ/Xx6Y5/HSLct+jFeT5MJLPCzl6wq12QEWBzSLdU+dSr4AHJu4B57/APMFwppIAHR+sQQU4C0Ks54/rjChbMgYmtJGIj/GOv3RCRvgtLz/ALwwg2Ui3Tuk2bLr8cq0QpGx5Vk4nWSKCEJ+Um/9es57bUEPB6d/eAFY2QP5ziBnvxlBrXjf1gzdni/ziDgOmsiBEYRlOMb4Xpvf99YgiTmBk10g2DjKUPbGPFy006TcmDGFKVv4wTwNRWRBc8cAM6XD53KiNKG6BVPDWCY2l0aQMpAQEBLcWVrQGPQCI2XohhiS01WglUgBvodASIqhmIrexyGojhXEqoXoDc6l3AiDHWHCwA4ahvqbL6ZlPy4apfLePPOAMFU8ifR5HydmLCxowt0I9i8EH0u2xlWtQ54Avp377AGxOydKGknL64cq5R8wP7S8fjjI2zVoKsutKBgF9A25DvETfaZHT0cYA4tCVcjl67/7nOSkFYDf1+94TZeUVsz5v5xoAHWh3vjEEAIhYcdPzkEEhdgD8O8DptOVNn5e/eFC+vT+cJW1Sx0fzkFA8rMeIqeF2TNoo2CGz3MftW3BhvfD8Hr5xc1MBgWaE8i737TF9JKhdvc5t2qdZwso20vCGnT61zzgMMtkcj0c9fGKCIFC5Hi3WXGY8g/puDDAdYgPCa37+MRhAbleLLhSsegLt94tEh5A/wB9f2ZFROIwp5KYGiUd7D8P1ghgZp3E4P8AGVbDyHX1duETGcNc5eoiiwQ4AeOX6cMMdj4JZdcPnGDDVRq7OzLrQLoUA8f5MgcPpZpKfIho15w6h8gAVXZrid5aRoFAmr/vCwKQitGchOJMDDKCfWUxbS0Ij3t5494UETtznoX4xAz9ah9BscVYYUQa7nBCzr3l5w6YHkFGR2Wn8YfNR3mjssOPO7rjWyijqbeC+3X/ADWAIZkt4aEaeHiaw2AhGm9OjZw4EdCyvGdENZzDCnidW/OF4pwBceO5Y4C9EPZZOWYOQ4VFMTgDJx+ccq2cL/DBEArBs9veU3ql0/GcVHtGstxKO80aAFCwGgZBxk6aynhFAgESw2Ea0dMOAQFS6gQOgCoFtY78g8kILM7wS6NwKwHK691gMFhlC12LuJH84bK6KB2HDUjenEyAstaQa5dU8MnGutJ2AdDsCcL7dcFmIBbQLQKCsL+Lm/yubV30uwOSHu5z7IOTSiT4ep+8UO+Ry1IL6359znIrxN1chfG4nOOQia6IbXfj/ZkA4leFsjDv/eJrefQJhASJsUTfV9f74w8bSSoIcPzijDByQ8SDz84dE26UT7wJqWVPZ8n7caIBlSnymIbxrkfXnvnB
351+ QDbSXevHjFAnvgfxiHZHB1GELoyHjxhjqYPArmgg3ADQLpbP243KXEAcDy/k8GKkhpHX/NuKGdBTom0Hj4XjUy9QVUbDrT/eMWZBUCWsPGj1lulNiNPk/wB3gOgTeF/mbmAHRAs292TfjeC2PkxPt4zTNUhdfQ3A3wJofYjtwK8FGop66PHvxhAZ1RzG+u8IKy+D43jx5YLwgvKUfiugcsGSANrsBNjsmub1kEP7ASnP6HnBTsEHCSbeNZSfUSH+WEtaxIGkFX66we4s8W9Dn1mnmEXrfbMA4oNU7T5576yLjRJK15PPePosNit7deXKIg/5EPOHzSKIeB73m21KUDheTvv85pCoVIQ4Xh/27w0q15IN5a63Pd96YDwpaKDvg/8AM22Am4FDLOeTjpMVSvWJ0bOi9zbecFqo0O3vs5xAI7VGcc01Zs5CRk0QdYOOg3s4zQcek2fUw3P66/bFHIb1Tr1hVexyxR8YEXvxEH/uVAtm8xygBJUFNdMdZdwcudVehCSewGqesmAid1IiQ4BU1YzFQok+bzNO+N7wKrfqAsG71qJ0cdlJcZvTsDfJA+KopKyGgEtLzd89waMS2yLuu2lTe98kcP28h5hWlvHV63gtRq6FdF3834c4gxTsklI6jN0riX6jeNJ9tVhWPVap968J+ZzmtUI2Vt+eA58/OWNKCgbcIadv1jaRhB1vW2z+/ksEkgMKABvbjSNnwwPtxsO0HNF0ho/jPaWbpvGgYYCF1HoHq/M897xB1IEUHtPWKccSTsMPagbth983HNSmuX2XGCOnYP2w+E1XKADpG/vrCGMUwvHy4iEUREF6Q6w4CI0dlan72DN3I+gRaC962+/WBiIbi8331Tv/AN0iFE2++MmwBJLnxB4CfGXPSNufwYCgE6Y3yzrAWrRD03/WK0KdG2SWWOASfrN6LDvZ5dTESjeg37n96wlIBtpfZ/esMJGdhxz795sQ8LBHpNjp7xtWhhN5oDRdKQQGFVBsyI+g65rwyGIiYSnuZ2FhQKaHKhsygpbjVDJsABJb4cQAo7SNdXrHqKVF+Nn+c3/X67js8YFEbaM3jKpUlEPvCRZQ5kvPxhSABQ3tFJF/1i6nAA8EiUT84BoJBsCmw1Hg8wzV7IUKeHRli7grDpZeuMJuJnSSrOjvEO0tZQMwlItHk4w4CI0aP+skWq03qeA8YGk28M/XeJEaggUH/mMQs8roHNCbwKS4GsFWkUXKRqTdN/pzaGeusKRPBHRlYfEoEkDaJSnQqkxl4TeUJoTYQGdMjC51oRBgsNFEBKdgPO2mURdOgrZxZK5rSUa6d2JfvYVOMMzjAS0OBAFxwHMmOIY4pWADFVW7KHsEPWxQibd6Is947twJBHRDVENt4BZ6BeHtncj1Ac6fagFhNbEfOLH0bQR2nXbjvvE2fgjKb/mHxyYwJIG8TmcUvb5wcihWQe06/vrLWiMSoXku+vZgKitrQa+MoLdTYHqr8/6xE4NZTdKwi3/zFkpdymHpSH0fOUpYKl0k1rXGG1DKrUuvzjpsnYsafLn8J6zR/ZHxmowDe3fpb/rCQZbOQfnJNN1wmKAR8MbaYao1NxwxuPl8CX+3CM4C0CEu9mv+4BkS68CE/bjuo3s6wHRHjnkyNGcqq/rLzY7c4N7A89mOAmngc/0xwgN93PmwHU/rnjThsH+cbvCd148Oz/GaCCVH7DLNgUAnWRvQ6sCafvNWD3uH4O/mZy2yLySs6WFwMtBWCp0Lvfjy48RIk4lTft/jFATERsLgDCS3ai7DqcOscQIVM8iOuV7985p2FLQOmdccO8sGopRkFf3+sQlG2PHjjGBjwWuFwbQNxJMvBcmadP8A5ijvi8nQN/jEgqGbDqanTnJDFS6nME7xeIhLLOYdySOnxhNUXQHA0YJyaLc5dUaB5zv+Mczak2N94SV053r8eN4tlbofZ95sVIZtfLxkhUbrVLvjLSkoM1gYGRupp+8uUs1W69YyAwk5BgQLZLyx5p40zHOZEuaPLXbtjXho307SgNNtwgE7bwY9bQIG8gi9ipPoImbAgolASF5I2pg0kN2dC7LBDb04sQ7Ss0IBK2N8RPCgHKI4VapSU0e82Ua2jTTVeV0f7Z0sHAQvCGmc0Sc4/UACtbWnW+/bkRIJJobW7n59BuiPMKmHPc/zhK8FI5UpvudmRkteX48PP3jxAkaE7utcfX3lC0qQ8jq6v9mAQDsllvnTOsalC0B+HY+sMy3OkJOdtH+mXAJ2OP4/r5yYACNBH4GzGeAE3Rvuk+pmzc5C6eR4cBoA883AuZ+c6IuXJ0AyWi123VcPotFQE9WmIBwiqD/54y0KUanyTVR/VyehIu2g0Ifi/eDbzXp/GAlkPlxAHDvnAFg3V3gLjYp1vNBJl2s8/jISnSByxGGJqamQVBp7uh/WTjBWh7eeMKBg0XswaFeiw/8AuaagNw/LiZadoUG89i4yKWtUA0TyNDs45uJDisYPjQV4nyMOs+OoNn7QxHwobCrz1ktn07gmuThGmu8QIMwFuJE8b5xygUmhBr85V1AOdPRfifjAABrmKdGI39Ehr4zaJnh+C3EabyMFUQ8bTUx3wSl4LvZvJdNIGlvfcxTTWqravplis34MP0/YSm0vHlr4cf7DIF9V985JQCCw8BKxi7187wxsXYcYJBjmft3xgrUNc6cMlAEibH44yAmAq33rDJ8JsY6BFglf9YYRq8hQMR7bNjS5tQ4O5e5iKEk2hA8YQB2JKAngsNmPzpeVlksbZadhdttI4cKEyxdBUccU0jlGFqEJyDwFa5gRzcFgC2tBOSGjX0YDYgdg0IABeNmtDREWFsj2dENH+M0pKylju610c6wbNEKXo8DVf1k1kklN+dSNDu9bOcPhe3WPb5rf0YrUuxU74cZlBXh2eh/OT5of5fFKPF4dYpCjYCLoGu2YOGoGG8XkdPnx9I5Ri/0X1kKgRYQey07vOVEaTRk9yc/WBo1mgMftnPeFrAQBdnvN8gVOBu761ziC2Q6h2vOvX97yYnS+n4y3l8gRy41dnWjlyIA9/tjRXT1Uwk5HicCh7DQa+A+sagIkSa2TjAd8n72wl1j8TEhVPxgmGZ3MADeeP9c3Eu3JHf4MQrIohgQhv1MGdHaVMUop/hxRzLYyXuDrOYRSJh2oJ+n85QM0oz74xyRDhdP58TNZ0KuhOD7uNlBF0329ZDsGQCKfKG/I+MErwU263l32ud4iBW7t+nX5wpEQortY8/HWPEhS3sptecJUvtp95SUXfKfWJglHmKiH/LA1CLaqeQP+YdJV/j+84ICh5aI68cZAx7Qo/u76zavE7hoj7PScZozBUOvxMGWBCiB5eHrXM3zlDpq6UTlEL6I8ZBbSjHht179cYqk7qIuz16/pnFAPcDUTzpwWuzdW3wYQKhtt4+sJTTSGH41x1jcI4sbb48/eXRU2/wDZwBCRKxA/sxSgJpNMtvxuIB/vFt85bo+t4OMUclV+P/c4EQJ3MEYoJsElyVPNIPRwBpTRWRjTHRRPA70CeyRUaXKMxI3tpILpjS8xJm2/REsiIuG6th0mckMYQRJZda/1jgHaKvmabR3xrnIprwrRtL6/gywJRJN0WL0P24YXPEI5RbVnc36wCqhoAAHTrnmU8YDDgpAtTalfO1vnrERAQagHvlDTqZq1AAGOqLx8T/WEyuF2gPtT+8YbOqUATiH99bxslXAKeCuuU15esr8Qqpzskm/D/OLHJUUHu9n74+MiIAoHCZruY3oCYfkg1fh6nxic/ssTnivHrDLiIShzwL1gEJ18XmeMZS2nBltJngwgibyxjPNRgrvDBG2cphzzHa/MOMClVTUui551y8GFSK6V5ccJHomvziU0X2YScnW9GNw6+AfmnjG0NGTceMHgC2PWX6q2aA+LmwVWyrPjfGIeBopqvl3MY65A6adzHW8AAvvORmALvj8Yuk+YPOI3Vi3kEfmuOAU2goLyMCI1FE0YSQ3qlah/KZtm5F2jmHb8YQXoNI0p9OsVULteplIdkgf5zS5ABEL5HiP6wqRTMSlWdXHJo33+cBA9K8rxzhzxUPZJffH9uKW6js4SrJxxrRS42pthH+D9YdM3eAcG3zhmwER4MK0cAveOIZYavPG33nA1RtiX678dYtBAtQXJPvACKheY7jx+85iomjTzcnBvdO7D5xJCGUqX1g1K1a2T7wYdATAfjW8mG9KBB40YrZ4nQPP3lkdzRK+cIQ7lsa+DC5NjNlULQ2RqNAYKZROiaaAx62fkqlN7KEQWwkMN7POUkqXAACrt0BvxlI4NTR+O8XX5FjT7xzXLs3y9/vGN61O/USpNc/WMjeSixcyx4/vO+v0ik8a2M8YalziLw4/JhpHoBPRK358YnR2u9Gfn+cMGWF5E6Anrk6wDK+dhf4Yoa6lfiomAiXKj05yZArR9A/nDFSNXNNP1yYV4ZYL7TTjw+3b9G87PJyA9Bp88/PGF+2RzOpGz+95ajEGoBY/iZE0pUQflHUyLq8LvAqoPnBaoXjjKBU8c4I0b5AxUsw9c43Vw1ogoLQnWCL2dy3CHhtHB+0MsD5JE53t4+PONyGgSB5scN+c10zk1qu/GLyNCNIDljPjEIz8HbxMXmHCJ84xEVq2PlP1gpzYOA9a/8w2g7IDoDj7cq8vQQB4MEwmbSKdL0cB6cQr8lQqtxzB0d47UEJcutTpm9IuvSmc2R6BoHLGf+r0P6Ug2m6deP4xKrRCPalkXqk+Ac08oHpq1O+esayrZFHvXRZk9Cbl4xXwfRzdHyL+8SWUV2Xgr7kwAndV065xAd5+HB/vIemggpLxR+ce0avMbfjy68+8VINoSPkVf8YCRToJjqXg+MNKzKSJGvx5/tHSRIbR8+f5wLKe0aYsAhvg3xiYIO91X5w3YRK7cVJTZ5D/Rm1vW6vzxgi3eU59XIdo0tF/5m6XQRn1TG7L2GlMBA2Duu/xigABoOs9eMpDIR3gFXYd8q0HKpUjcH2k0UPGiZp10KB81eOX4PwlFe0E6r1myFmOv+QwWDKv4yO8IOqtTQ4894npULvHNYu8thf3c2IFFMPrEsi5A1OU/vGK8xKQqGxe+5gwOTYt+MnHXYG0jcP06r/xhN6SCcClhwg/xifbgDX99ZyXZ5twO/UTe2MUoNv8AnFQKF8/wyPNt5FXEoRE04PFwrdvjnFkEsQGy/wDvrAh4ErY/GLwfP4+bgkROVWzzjXWvZ7+Mfem+V+sPRjSBHlesgwh6c/jA82d8/kwA7VZq1kMbqIgwlJVEIY0uI7GBjTsZ0N3NZGBkbwvtvHBQv5xcAWpN6T/eblFyif4xQGEkyDslODh+M56Oa6HaweejvLbZqN2R/k6xBC4GRQFnkvw+muMxbI8KIHirvXfOaZoCehZfld/rEXglFcaY7wgAxundC/49YhsGeEw30suVN8cdZfKWo8888k384gAdCAwvOLDXsra2b+pghVPKDlJOdcYNE0FtqPg1TnBQ/WQz97x3fSnQdECPP1hP+QlFeXTs4wsA7BhipClKjs/WNSR2sXIQ1JCphDgnQf5uaE7wbT7xToVZQ4BUSPlcGS+dTA+cDCs8buTJJwLa/nHaIzz9MTYFFLsLv+P3gYiisW226Of4cP7eLyOxWc7/AJxBdsrfkOn+AxZ8dK6bmjMVr+QhdelycZBL+S8afE04WAhNFm+fmTCnWUZFd3ejZ+8dVIASJTkbcrMUJKlMD5fh9YC2FSwO+3e/xgOWAkccieMDoiFbkPJMd+sl4nr/ANyclWCEEP6GsBuCs+/xmiNtJTxkZr2wsVnnETZ4Vg0ParUf4wYDH2YEgzia/wAYeh4hF/VMqn4g/WAZ688X6mIir0qJg5Fd06xVBpv+S5ztE/thrulb/jGbpnGLOE7KODF5Ht+cCoV5G9v1h5muvOhz98ZG6YlvLovPX6yioIX05dt4qxBIA8bOffP/AGUCwpA+guXxuKnXutYzY0GLYso9/wDMeaIaHXbJu4WQGiz9L1MU6QzSvO2+F1bM2zbNSX43P84G7ojwVDY1wqcdYO4DrAdVQiAXrInFQOG1W9p9x3xlSUISrxR2WGe8OTU0SgiH01DvD2HJtxP64YRoQ5Q2vXx7w2aLSzX2/wCMhyGFcKTnGQXiARGHh3+8q0HDNj1ZjkrZTf8AzKYz4cs4nE53jGYvRAzhvtYc/WHS+4AIvxx4PWHTNhtSdw9H7wRlulQpUJk+TwBXg3zr4+c0l8nJQ94IAYkUae8FpZNJXpmEE15U+OTEoqmwz994gJd0G8+JLiwfaPX7xcMazgRwFF7L28YbASgLYvN2d3RiOlVoTY7gN3hEobrRHZG3CUQRIG8lJOfy77EjoMkXseE3+cCJovhjfAX+94oNsvEAjoPq+8YGqOrKeiayDMb3f4HfOVCJUUSG9P8AvNjrAbYHl+sT6mtHU8vGv7vHFBItR+v7vBdcFKB/mfOFR4RwX9/xiKtNuk38PP6zkT0g5nnlgtCLE17rJPhGQ/N7wU9hVJflwhH1sYevH/mElAGxp+/OAsUppQfeEsD3pz8Y+xnISvjxiqNAolzWQm5EwTazlY3GGADmLgCg6tf8YI3VSu/eIbS9v8YQYzgrkhbG5dXGngJA/K8f8zmQHOTcvzOc5doEBtEVOE/eMe2htJJJeZ847iRKPO6s84Q2g7KPJeQ8HnBFzMqD9fWAooTuuu0ifj1jYCjeprnZlo9cCQ8+8YIHLQLfn6yH3IlwtkNqNlOTCgOuO9/GHA20g0YAHSjpBx/n+cr3QUhEDaRacdzUx2iUrF2NBTmQ2ax8wrbHm5OQINNp6co4p3FPvKRkgHdhvnBXVexBkAHE3G+vLsx23ob6HM+Q/OOTy7Uv0xKeNpRH1cIJg7kD7mUtXNC3AB5vDejWHATZJautns/jOiqpQN+tec3ByZeX1PMmHoRSk9DpS649ecMhw3nPrWCELCjxtYRyILjI0Tnnr+cagpahrfuzKpYgUkHb24oqLFBD7yINMBUIvdtnWeBKJIeS7x2kYiD9JiiBCbV9ef8AeMHsoE76vGNtWhSYnkdzt6yaG2CyePXeIQXI2Ot/4wVSrZZgQx867ddGBRk5IXj/AHg66aN76nOVpKokF5DnnDipUjvWMlwulp3098fvNxGgNSHr8fxjxr4d4KheRz74/GEU7IQR/wDcCpiAls+d+sNc03sifJ+cXNEgIfyxSVmq/t/OslcFojU1ziytrq4N/wAZHFATQTxcOhE2Qu5vDQnOwD5wS8Dv3hxCJNCh53lpkdqg+J4zTnJAMPxk5FXbGPn85uXqh/piLDerxjZjvgwrQspDlgMVgvYfpyG6wE628ThxZRRK0loxNIvNwiVg31FmifNbydYn1Yq7uucmgR+7/wCZIVWhqfjF6qcMHAdfWOCtHdAdb3jiFOQxPcxVYkMOXadGnARXB0Vk92TBXUqBH0vPnAOqGwonuYV3m6Anxpr4ykM1hoBsgXfz3M2fIvLndN7Bzc9FtR0ILtHrjEj1SLR3DinT/wBxSNI0I9jd83nAfWvZxsN/xhJWyJ4Tj85wV3BDDXny3rAFvYwZNnUxIrd5F1d97MZuuxDtPBrjAYA0tocMvsx1FxkE+f8APjAHwCK0ncQ9ZQpXz+Soc/GXuic+eqXv/mUEvYp8wesEOK2LGoaTeJCeaj9C/v17wkGI5290f84Qq3Ygk1zHP24sATiu3vLPaF20/wBZgooXSiHab63m4poHS8fu5I17AkbrgzvYh0zzs5xG5Gt2yTgX/eSUYBUii7G29B24LSG6t384puBCrZkRKK5kOvvDrQCyEuG7rIE1xBEAhEI0/OIEutkLU/nCkJJQYNHL6mDfY0LyL/fzgLY5atuDPAFKLj2hVl8sCNTO42ZXkOKbP1lh2A+RhQ1BCtwihDwSOWFDZHk6wI4puFPGCBDNeHv5+MIIlhAojf3/AExAxukGOYaPxh9RAUUX+/4wwsJqN/dyDXbYLrCAKG1gyA/IDkwIurOMgWkOh2zDthGo5x/AUkqP3kDSO+5hGBUXofPrCbe4jXv65zUDwdXBIkuwbwJuh3j5n9/nB8EKjP08eMTO6rRp9YJG/Cn5zYkdov4ed4eU2DgLpD2vrJoIrT44e82byvHXNUjol8ZF0GLoJeR064+sYVp0gD3wLvAsUSA4Yya8uAxBIuy6D+Q+8Ng+ABgn0F5onV9qYh6FO8Aov6Y8qarBepeDleesOHOCldfj+M2KHUr0MRL6yH5pucmKIJYaPex+cMFoQYm361ciZGreiCIQ15mNWDVAUeF8f6yOIimTXjXjNim/W3dn98448EhfMf2ZEtgE/wAno+cCUFNuo73P4zkDXfh89+cT0nSpLNb/AB+c9HDri3Qa1y84KpTnQzrRj7Dzwh883G1PYafjePyhKUz8m+sY+c4X4YpvciHE/Uwxp7lVPOJhgl2RytgIZ8swhICADG+f4xQanUi+BRxgWlf/ABlCRaCZRNz95AqyO3L8YgkAsbtMSeOjlVySII2zb33gtFy3tecQlI1NTzgmlXkNF4MoKm+T/X91jLtUZ5OHDUB1fLxinc8ixcUgISoW4oacFd348by64Vo4msYAUhK/4ZIHCY2NPE7zR1CW05tSUsCB8ZFaIul18YgK6WdX/POPChGro6MOFxeKk+/rCIF2R2zXL9BMYOUPw+sV9gPHTFnKSfP1ivjqBvNoFn2r36mEnUDqDzMaQiFm/wAmRZMkF+MRyuLe+NdEsSV/3gXakqRtZ/fGMRqA7ouxHXi+r5wAyZ801r6cp1ak7JIGoML/ADkPASg1yBwE/wBY7QFW4Gqzv/eUhyBRR4nxnn5dNrxzz5xutMhXrXJgvDlQU5JZ32dZt+pCx4Pwv4x3woJRH+vxlCXXnQH7694xmhx6flx4yF/U5fjvHVCWzA9g9/8AMD0YghW2BtvX84EN/qSLabMv0ypol3uOtM4yitzC6htp3x34MsigYCaK3j0mONQG0/OAqJ2G0blGgrg7+dZTtBzGvnFFQYb0el+HBkUachrx1rB61CIE7m9ZfXq0D9+rlgqzd7K5patA0Xuc4hYe0t8b36yFkbxzv+cZSAOe/fE+sIw7TSGcNA2hNzi/jHUPg9H/AHrDxnkDb/dfziEEXYqd9eJjUJV9A1/jF1AhXgW79U/ZjArY9DnX8mOOq1DxvswKQ5BOh/jrKwi6FG6esQicIBCvyO+9Zbspwxvn/GJFGg2P31xhiJZBzrin9c61XpXr7xcTDILCY0oNFXk3/WaPDuCy+PjFTGjY27/d3kJuVJI8hvzkMkADXR++sj3CSjTvhwIIQ3OT+/5xgxDndyDG6fUZ3lx83OA+MhUBoOCdGaFQIPrxiEF70wyEY7eDirnh4QNdmG6VodutY5hpQG3Rm2umgjJm5LRlq5fNEq2fjLwiOhJx/wAyPtUL05cchUo64fnEa0Gm7iUhbTx/zNIXXEaYOwKbqbuHYRYEO6/fODC+7RU/PvEg8EBqXdPzkpEgA7ayHUPtkgaeIWnqBtPVFNqNKxI5TbNa940wN02B5+JicZJpDelOHbrHVAX5UTr5wdFHdw2C9Ef6YQTgdFe/4zZ8EWs6d4L8E8g/887ypbqOc52NXGD2oA9ixvRc1kEB7UR1rj9mMwVWynEeeJ/GEJts0nhTsp6wFlsKqI87wOIDIhOxvjBzpxAK11HWn6cOqf5VSu5h4cupaeQ/GMQhtGuXjrLMhoEB79YUJQUOGl3o+cWccRinPDN984V3veCvN0fvAvZqqlv3/dYeS1VVP5T9Y4ag2cOVDBD1LhQRmyj+Xk/xmnhULd1/vnN4Joh20/5+8rMKixU4/Wv+4nNwsPkxfs+zP2LgBnt04oVZENNyfnucYiGCa0vGtJPsx7ZbkrzJO3/vjC0whhqRdd/PzgJkXYVlmn6vnEwUJW5qWHlvPreQ0EOD1r8azeFDb+vrEBQl4OHrl5xCrMgVw7+OsMCgboechB8LZYf6wCmUlfH
352+ Z/nCiBdXswKirqn9OHMIInXP9+83AC6TtxQRk4u+XV8GPNBfsPvAEICUXfjDAaDt17/nKShSX4v3/ADgwwXXa/wC8BvHte+8Ceo2z4xaCVEdhf54wZKJJOGcT8YxWtfx/XClcXbp9Yp0m7J/bgJ4isr4/X84c2wguvn3/AMwjAHbY+MMCCTbS5dEClNVyIkAmPEKdvzhoIW6uc5S20SfiayIMo2w7I3ABqKby+OE+8lAI5cUa8Ds3jeIKCPAdFXIZaQKBILzhjgKtEk/WEpgLNA4xFWBTTWtTzf1hjyc3KHN8f7wRzYc6+DA3ZH/bCztIY188Y5/zpODd6neLpDYFQHp5vPFcDF5N0GdNcc8VxcyUQuprzrFPcE5jmD/5rHMQIs63ww4eC3Xzhn3TvPuXESJwBRE0TzliRJBH/DlgCJG/L1XGkErZSghOj5clJpYPy0v+sB6kFw1ikUQ06k141iaDTe4vx3xggg1pGjBM35wR/b/OFAENjuYG12EDYWidtpjfATdsPD10ymgjUqC3jrh/eFQtoPnT9msHUYkE3E3X+MtShh1dM/bmiBErQU/7k00Vq9z5Ou+cv0ApMnQPkH5yvWPap1xe8USELwa6+o/nBTDBRgbvXM/WPASpnZQQflj4me3MoeR15TfxlnAKA34c+v4wBUydDc3qeMEithHXEm/bfr3jwz2XXH1zxgVXo0Bv/X7+8UcRP0TR4nm4p3E02YvPrNyCTqp8a6yhTg2nf/uPhUaF2Qh/57znCB5NBn93kmqNfbUP7vFOJbPM9cbuT0w0I/fGDUmJ6EvWOQNkYnJT/uCzdoUrrW/GFoQhAunjPAGa/wB5xJva07+/zcOHiKOXz6ZlW7dKmznFgkAAbb/MxNKkaoCWv2YYZDpycvOR/Il0Nk+cLIPgtwKdNoj5v7wagM0PZ/jAyqHG0PrI1EvDOMfghRP695f5fl3rFVZop37xCioqv3+s2oyyGn3jiArejeuHvEOvkWl/xm6LcXr9fOBbMTdcT08Mzjg4hE+L74xQZIkAfJfN6xCq6FOHZP8Ajif21q1M38z/AF1mnHwyc/SJxgjBchj+W3h88YLDBUkXvl+eMBeYUoRKgKeKHv3m2FqhryPY6pvnjHZzKgX8v9njHOEBRON/Lzrn1hWTRsOUnc+PHrAcmRVDTW/jJwUL3gPEYT4uBKsclmjzU/WTAABry8/eKQ5SFF5P4wei0fb0v3lALsYX4r+MaFUoCxy9/rB+DAVydgYAKYRAaT36TdqsgbOdZCcpeuJf7rJBIdxaPfPb3+sAhgRVEd1dcuLSW70O/wDWJBBilBWyv95msVYjjIuj9d/+jHJxiNYp3ChP+ZEuQo1bo+VXv7wcG7CeFD0dejFiioKS8Xz1ixrDzn5adr85YDavKsDXx65xgMgoVPTyh+XLgGrNAO08Ks8Ru8bE2GkQfr3cMsA3sccHfH94RQoQiutDOf8AXWFnn5ZL431eMhKRS3/jv8lwlEIQhERfx/h5wogONOGBeehyD1oKk2/IO/Uy4eCJFaR5MIhAPKcC8/HzgmsXYlo67djhs+8ab5Q7+fOLGVfOAwfvr/WmbAQAGE/7+MCxSeHX/uGuegkG6v2TKmTmOtAfkRwmTA9y9bwOzIbl5n9MZbggxnNb8jhtBtdB7/hmORUNmw6nzN4WVQ0AQhKb5O82DgXM2RfW64srDd2rr87y52qFTn731hIzm2uDHD4NxNz+94bBobKJs/phgAFR3CXfx/GEhEGyKit9fH5zfOLFQJeeeTCrYcNYgA6pv4zdrESDwVPjBBDYiP5vjw5eBgkTeJENihR3v9Y7JQCrgf75yyUadvlr6zeN4NPOAJVSj4a/ZggUC706xnJBo54V+N/nLFp2JCt9cf3zgYlrZQX5cfnGTTVDbqaXfIfvO0vyiJsfeCTQKzQs33/l8ZW6shN92c61PWGnz2Zhdr+MJakH0J584o3JW+dN/H8Y4GT2k5PXi4RTRayPe+XJhAVoh6w4TJLPPOs40A0d/hmkLuk5/wBZz8haC3rTziCALWtLv8c/+4JztY+ey+NJ4jreUArAYqdvld9e8ObThJzHwqRY6mITVptp6Tvd8c4d+J0mjXPSA3zcjGBPEH5Fbns4piKBEtFp0OaPxTSYDweS8t631w/HzheiLbIOBwbl9Zp2ra0GFeSlEGcHUF0HpxAIvwtejB4thVbVzvjj+qogBpF0r/fOWxtkaad/wYomba3s/wCs426AWQK16zZUW00p/OE3DF33I+Htt6wCEyAsFTn8TCnUUS7JpfvKriUDV0v0JzjRjAwhGX6xGMFMXs/VVyoBU7cNT8ZrCwKCy+PTv4znrog4+jv1i4AOjGU/eHzYtYpu9cVwVTNup1J773hNtS8tR55LiW0K2Sdq/wB8ZebHAC3e/F79ZogPig1z8VyrBdF2Fv3vz3cL2xWNzs545fzkzbrQg1Ifxm6FLW4vn1iSCWngln8Y0kJvJtx5lcClFKee/wDeKwhF4M3P3h+KGrCDNfrIliB7Of8AGElAZyY8/wBuc0EEeVgft/XziBgqGnPT9YrGUitmlPfN8LhqFUMWvHvkwTuqH++p+ciMXCVttvr/AFggE4gWuOO9YEfg2Ox44HxmvDZ2Uox9PrGYqSKzXv4XAvUhN3W1vmuPpsjNi9mTOrklPeWXYh7l/wBJnQXRpfGULOfXR3+cd0cEyC8pOtusrYR0K8I/2YY4gTgLP987wOYkZboiT768YGPJDh4ZTgIqjTi9fEx0zCG68/jnEudReO1v4XeM+E3Uo6u/Tm99kmjqS/1zREQREfS6f+ZWApBfsX7n5y1HVHSHOz9mIiFwCt8b7wUjgKDrTzkElp0lgi9ov1X3jXBCCWAeV8h+LhOqQnW9zni3CsRAXBkdSPes4airndCUTUgPi5t2fFCh5NeIvzvFuDQiSf4IM4Y61hU1mINItIdng3+A9tIBUrz/ADH6wDMT+T8PB9MjtNVk3fBLWb8h5yXO0TGiHPA+PG/Vt0iOWEa/l5t8YslBpNHx4WWw+siFCL2dV9bOc14aQqABtfZ+/eAvdToT/OKOcCjDQN+w/HvAFGpAPA5fn8zDNJSKNqeeP1hADpgSCP04JEDoRgLnwET3m8KYNoO9c1ZPjN66C3zUEnr+cEgEVNBJCT3higCgSws409z3jBETTol/Ca94AVvUx4KjqSkNVvUEe+HIO7fx/GOSxxE5VH/H+sIgQQjE2572fkwyU0Mb6/8APvEHpJaF488n5yY/CV1pUPn63i5TZ+SzSdX+cKE0FBtBTXzcT+pdg1p8cwfvjC2LFwuko9nGO5iJQ4fNxEIjoaTzfzkxIrUITjzjOeRDYnd/xg3fiHFqIN3T/TDd+cb8bTEiC2JYX/bghtBApruj08OSIEBKPaXv4zXukT4GesactoJTTfqpiUiAkE56evcx9OiiqVd+MR8CweT/AI1zgJSqAu/GvPH7xMAd0tLx9OEH7wnDiFWmANSYvoyArSsyqW/Bsd4lYeq0XjNsUQkj6/X6yoL91zj5Is3vz/jBwNGvZnsCjyTx85FKThaeaYnMVCwT1rBCNnaGw/pTFA8ugc5d+5lRkVDBf8ExKqbKNKuzIUdq0BeePCIamEA/lkQnD42/rBBPUOdIcc+Lw68ZrMGwoG3jxZPGEnxrgADfaOr66Vw+NODU7X8ScBIAGKWACNbH/A/sxa6qfZh/n+cOtu7m5Ruh0+n7mvvArEWFqLQnjafGWoCDjtrL5uJToHCvc+fD3knYJXejr8+veAgCjTssf95cIjwc1Gf1yEHRC11fx77cfkjZFU411vFyEaC6QgZ2w+O8La4WvN+XrGFQV+4Q/DPxjaLAAlmjPZydcZzg9ROCGj8fnHZSChVhd92/xgtCjBhIXz4/nHBDyPYD8d/j7FDSVV5Nexv3vD3yquZhb6in9M3TIWJdf+4m3idL1/g/WFFcUKavHGnXHrBqo2E0ts7NHXjN+yctCzfnfWtC94Z1XXSPLxxP5+cXToEew2U6j6TOKsR2Goj3v+9Y3SCnsEfnU54TH0NrwUaOfOuf15EgKjOiQc+L/BlOBJNKg0b1uephvOJoiP8AU9mI7eqCC6fl/GBiUVOZxpfa4WMqAL5F/Z9e8QMHkb5Qfsc0BAB5k/v5wEuFlkNuuv8ApiQ0JRFRS5QV9g1oYifeV51Qjcjb8YYK8Ra9Xyb+pimSjQYac/xvzMVhewgU3rl4fvBkaagFWKa6P95OmorxwW6jHf8AzHWwBvi8tfHH4wu7UFRdqKIkTRI4CHHKDHQc71+fOSbEp8n/AJg6WPs9t/WWkldHJs094bCsNmgh7/u8FgRF42bv4y2C2vJMfTUA29pgkdoQ2s4nmnFwhFVBEhT1u/3eds9ACj8YwkAZvQu2WaCUd9YFhU4IHKmpqCHfnK1i8zfex9d5Uc2S36+zC9aDZr1+nErYGbePZiYNMCUrf+f4xCo0ZQvxiexDSH+85LI25BIvzqdZpDA1NnQfafcxaIGvd8/P+HFEDSt7pr1J34wYVE3PG2p17w/QhtpZxv5c3sRM4CL3/GCTYASbCR80XDRihWyqD43PrGU4h0CfH3gQoctev64W1IduusBQiCG1m/HrAt8wouuJ/GFlCKcKsocIy3L02c18XEF0SiQTX7O83BtQfLvISoI99OvrItVYIqXv443gnCV+R8/OBIY5PO7v1/rBEWAE3sj/AOZs2uINrP8AGCC7Zmnnj8rm7POYobEl17yiUJNBd/ttNZVZULPHIH3vGPciISr++sW7KdAXgvyTOaiCTjXzHLHdAw5/us3vFoOkrj9/OLU1TacJv8ZIut0Tbzr7yuvDbwaJh4DFEsIUr8H4MfyKA7njGUXQFFS/gzalojh9YUpI7TzPnFwhQ4e7mjqoUDeH8T8GRI1KvO7f4wXUqPC6R6Z0n+TIK9Y6aRl6EJ4xAtrItlZJQo/twWHAWOTZfE4dx7zgECticR6s777yQYlN5NjthqenvImf4GVG1SRN6Zj7SgVAEITyDP3vHDQjXSALvrscUhpc363H7vuZMTn35hxzTTw4d0soWsHD+R7wR2XYA20h9n8YxRbh1pdGBAhzeY1TvAAqCU2Nen08PjAMWkEbqb6cEqLYmxTafCv18ZGgCtgyjuc+M0OysJVQX53frHTVmVt2eTc+HNlSAdq8np1lyF00CGxuvZjxKrkbruY4hWsSEvP985D4uAbqL/OIYkwDwOeuz9YE+4VZY1ir2IeRx/vCO4nIT0ox71nkPSJAm5s458Y+JmpsC62fE57eTB0qS7bBs1zT419zIWyxKS/IQeGY1RuQadfIij7352sCXgoFvsKwdBhj8AKkm0u5YH1bbiPqL102+N/Rg0hBvs0CfxnDjCbEWT1OfxkwTI3ITmvwYhNqlG3zPfOXMu0dmn/n6zVhoMtX9Y5oilFckg9dfvK9KdWzpiXvAFGxCcX7Hn6Plg4EBQeHp3HF3LjER44OV2vrAF95Awai6sb+uMaAnY1Iredf+HKHO+KoWEka72mhinO0adSLQko10ccYoqULEsUjrUNdrgFpyjpFfWv1gSaNt0Setd4hLlSewf6XOICq+BL1UXzMDtGN0So+xH4xD8gD0VBP/fWfy9wCr8/5ZwY4Dhfo39ZKl1Nw6Hf5cfg8Beel/es2tBSxOHv55xjZRofXH6fzgnQmgXeneQGUW05DX54wFWv2GNIgI3n+7yxXIPCwfn3icDTZ3ghSJR3eD/X7wipAgvN84txS1yP8c5eCdL4cf37zSOaDzfLPj9ZqoOc7KWfvJIwQqk/lhlIUM7UvHrGDyAHfo/jEABsXZnM+f4mXsBwe1m/HHziGatCpVy8SddZawspobwP98Y4swF1tpv0IxRqRDmu32VlxZoIh8JvxvXrEIJ4OZKXgwtsC66Lx8YERVQQ52feKBk1Rocm/C395wuAoVrhrcnL1kBLZNQK2et284jjezaU83p9/WOoEEOrh62GKBAtGa8P55zkGiOq7XU444eMEKICNnJnD1O+fWQNQQbgdE+v1lKFmmiNfG0+cQoVvak/XcT14wCwEpkNHT6TEpA2ztBGfXn9Y9yuVDo5+cpKNEDZkfKGvHxlymAUL6HOv4YmwLUt0FrfX9MZUDUPng/hxJacvEMSBKJDvdO2NFxnGjKRW63j4oOe0p5ex+MQLEKaUfn1gvdEFKm0b0748H09Ild0o8L5k/eJYggnQePU/jAIvnEAIOJPL7yaTQNpZKfBuecrA0BBgPxA/jKI4dzTkJO+ssKnYTW3B64M3PQKvG7/JjBEAOldpfvAT7uSghTu9ee8FsKFcHQnjjEHQC1ohOPM+zGpAeyAXd3qmLgVChCAhAiPWPAIoEciv4MLWJKIvBPW8EBdA2R4Jx1joKx+n+ip9YgCHc3Qhfx+94gQ5B57P+MRlBL5Nl49ZObd43Uu3jXUxjOJbd8ien8ZqREoIg/I+DgwCjfbZoKD8pzjnBFDSf9OQkDr5P6ZBZe3OhL+gw1LUeOkuUaEqF23AVCSK9n/NYUllThpPXGUCuooE8b+MkMlJoTL9R1jqheGbWkwZIO+xeH95qZ2iaem/7zjnqSqjYn/MKDVddGoYwsow7f33ig0rwCT+ckrKhb3z/GIZpYvGuf75wre/Ajxp7dnnBBUWQHTv06x6ELRyQgr20f14zfWACW7fwezNsWwQiXvw762CIxxvQR7HFXS779/lQGlsJmteKfeEEgj6ywZQAWsgqhFN7kfCw/J9ZrlBuNfXjHnSJRaDvBUv1Xy4T4cREgqMWH0Nhz4ON0xQYQnYkPD6y+NqgbBUP84AqQ7vd9/BiFWS8aGiTrhjWO9B1CQ18YCIGtWyOzrQ8de8S6jX2lj+Ofj3g47TbajJ8c57KIawn/HIMCRlEeP8Z//Z"/>
323353
324− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" presence"},"finish_reason":null}]}
354+ Example content:<br>
355+ 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>
325356
326− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" of"},"finish_reason":null}]}
357+ <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>
327358
328− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" John"},"finish_reason":null}]}
359+ <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>
329360
330− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Doe"},"finish_reason":null}]}
361+ <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
362+ B1/bMVO7nYqfTdlIhfMUvxUd51lhy67Tyq1UqJI9Jew1tnpUt0B6+/rwB89+fbtcyp1Q+gRk7z/Gy9tfzMHyrrfpKG8eqVDetsaC8o5Juz6zqvKuz6GyvKtkeXn3fbDzOauVdwpGynvzd+wv64P1QRgMBZhAGAwFmEAYDAWYQBgMBZhAGAwFmEAYDAWYQBgMBZhAGAwFmEAYDAWYQBgMBZhAGAwFmEAYDAWYQBgMBf4/fQGdtWECNsgAAAAASUVORK5CYII="/>
331363
332− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
364+ File created by <a href="https://www.online-convert.com" target="_blank">https://www.online-convert.com</a><br>
365+ More example files: <a href="https://www.online-convert.com/file-type" target="_blank">https://www.online-convert.com/file-type</a><br>
366+ Text of "Example content": <a href="https://en.wikipedia.org/wiki/John_Doe" target="_blank">Wikipedia</a><br>
367+ License: <a href="https://creativecommons.org/licenses/by-sa/3.0/" target="_blank">Attribution-ShareAlike 3.0 Unported</a>
333368
334− data: {"id":"chatcmpl-981dfcb42236b9581070dfaf","object":"chat.completion.chunk","created":1778531348,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":39,"completion_tokens":161,"total_tokens":392,"prompt_tokens_details":{"cached_tokens":192}}}
369+ <img style="height:0.6949cm;width:1.9741cm;" align="right" src="data:image/*;base64,iVBORw0KGgoAAAANSUhEUgAAAFgAAAAfCAYAAABjyArgAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAEZ0FNQQAAsY58+1GTAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAj2SURBVHja7FpLbBvHGf72IaMyInZ9SgKqiHQTdfH6eUossmlTuI7tZS27dtzUpA8NGqMgldpy2kiiKFupo9qh2MIx2iYS4/QaaP0CGqcwV2qAWpRtUnAA6kYGkFDnJIVKAVvc3elhd4e7FPWgHkHj+BeGOzuPf3e/+eaff/4RQwhxMQzzFZ7ImgshhGEAEAC4cfM6WJYFy7LgOA4sy4FjWbCceWVZMAwLlmHAMAzAMJYWEBAQnUAnOnTdSJqmGVddg6bp0HWN1ulEp+0JIdbL0PzjIAf3HwIAMACIBS7HcUZiuVKe44w6ljNBZsAwrB1fExwTWN0AU9PMZM9rTpB1XafA2oF+nEDmATjB5XjwjquRrl25jmQyiVQqhdnCrENRnasOO3fuhO+HPuzd9zI0nQPLqsaAaCwYMOZY2qaPToyZAHMOMYuDe28sDfljGdls1lHu8XggHZCwdceWVYGxXvoZAOSTW/8Az/MUVJ7njcTxGFZG0HeuD1NTU8tS6Ha70f67drS07IKqadA0FapqJk2FqmqU4ZWYXM7iB//5EhfjFzGRnQAAeL1eiKIIAMhkMlAUBQDQ5GnCidAJPPPs01UBsJ76D+4/ZAD8z+FPwXN8CVi+BjU8j0hnN+QhmXYQBAGSJKGhoQEtLS0AgOHhYeTzeciyjJmZGdpW8ks42f5b1G6shaqqKKoqVLUIVVWdJsMCWDdtuQ3orwtfI3QijEKhAEmSEIvF0NDQ4PiIfD6PtrY2yLIMl8uF3r7eZYOw3vopwLf+dQs1FrA1PGr4Gge4giAgHA4jFApBEIQFFSYSCbS1tVGgmzxNeH/gb/hebS1UtYhisUiZXBHkMnvc+WYXJrITCAQCGBwcLE0707TYmZ5IJBAMBtHkacKZcz3LAqCS/snJSUxNThqzsb4e9fX1K9Z/cP8hsADAmTaY5zjwnJO5oiginU4jEoksCi4ABAIB5HI5OsUmshM433fBYctZ6pEwpWT+2QG8N5bGRHYCkiSh/dSpJT8mEAhAkiRMZCdwbyy9LJtbrv/vly/D+/wLOHr4CI4ePgLv8y/g05s3V6TfEhYAWMst4zgMKyMOcJPJ5Lxps5gIgoBkMklBlodkDA+PgOP4yiCzltsHB8jyx8Y7xGIxeJqby/3LigtiLBZz9F1MyvWP3r6N7q4I6p95Fl6vDwdaWwEAv/7Va/hTf3/V+h0AGww2WNx3ro8CNTg4uCRrFwPZ6tv3hz7TlzbBZUyfmjU9DAYlkM3pn81m4fV65w1uMBikzA8Gg466hoYGeL3eeZ5AJbHrLxQKyKbvAwD2Sz/D+4kBvHP+j3irq9MwDwODVet3Mtj8+GtXrlNvIRwOUxauRARBoCM+NTWFa1ev0w2LAfLCJsKSSs9PJBIV84v1WUjsbXvfNYj11w8/oGU/fuklAEChUMCXDx5UrZ8CbLEpmUxScEKhEG2kKAr8fj98Ph98Ph+i0eiCdf3mdLLslsXi5K2kjb0l08AwlU3ENykulwvxeBwbXXW4dOlSxTYPHz5akW5jo8EwYBkGqVTKcLEkiQKjKAp8Pp+jk6IoUBQFoVAIfr9/Xt34+DhdlSVJQiKRQCqVMnaANmCBErglr7ykK5PJVFzMLOYGAoF59ZX6LCT2tjU8j/aTJ7GxtpaWjd6+TfPPNTxXtX4bg40PtXZomzdvpg3a2tqo/cnlcnTRO3bsGGWyKIrI5XIYGhpy+MgAaH62MFsyB/Rq4TrfRHg8HiiKgnw+7yi3u2v2vOWzKooCj8ez5IeX65+cnER3VwSv/PwwenvOoLfnDLo6OgAAp06frlq/A2D74lJuZ6wRCwQC1MjncjkEAgFaZ20+JEmidfaFp+R+0Z8lX0w6IDkGeDlitbX6VqM/ePw4gsePGwM3MIDBgQE8evgIe/a+jCNHX6lav8NE/D/K1h1b0ORpgizLCAaD89haCVxZltHkaVpW3KCS/re6OvGT3bvxxRcGq5ubm6mLWK1+J4OJc1dktzMWmxOJBGZmZpDJZNDY2IhoNFrydc1tsr3OPm1L/iv9WdbLnf59O1wuFxKJBPx+P9Vl94Pz+Tz8fj/6+/vhcrlwInRi2R9fSf/2HdtxoLUVB1pb4WluXpV+ymDrhetcdZgtzGJ8fJw2iEQi9OGbNm1yAGfVZTKZeXWWWLrqXHUgxLYdBoE1pubdvJd7yvUU4hf78c7bfZBlGbIsQxRFiKIIQRCgKAolw0qCMeutn67bo3dHsWHDBkS7opCHZAiCgOnpaYdnEI/HaYzB6/UiEolQ9sbjcdrWXgcAjY2NyOfzePFHL+JC7Dwezc2hWJxDUS2iWFShWXEJXYOu6TQIX75T+zaGK2mw5/adf6OmZgM+G/kMod+E6LYwHA6v6qWtAAkAnH37LH66ZzfminOYKxahFosoqmUAVwj4fNsD7iwAeqTj9bXA7XYDAKLR6DwXqRqZmZmhq67b7TYD8VZoUodu2mLLXDyuwgKATnRomnGOdqa3hwLk9/sdMd5qwPX5fLRv+5vtZoBdK4FsC1HSRZY8XkdGdHEHQDoiHWTsXopk7qfJq7981VrqiSiKJJ1Ok+VKLpcjoijS/pJfIpn7aTJ2L0V6ento+XcolW7Cb4TInfQYyXyeIZJfouWCIJDu7m4yPT29ILDT09Oku7ubCIJA++3YuYOMf54hdzJjpCPS8V0ElzDlTmlnpAP7/RJ4nseFvgv46PJHKz4yip7phqqqGB1N4fXXXl/5FLOZDftphn33WX6/Vs+w36/KRNhTZ6TDYPL9NBlIfEDcbveyR8ztdpP4n+Mkcz9N7mTGyHt/eW/VLCCELJq3l61W/1LPXDWDLQm/EcLRXxylpxBKchhXr1xd9Nh+n7QPXm8LPWu7cuUqzkbPrn6RqMCutWJu+TMqnfethsXMYvvWrdu2oDPShfofuG2nEfZwIxx+q/WPJ1OTk3j3fAwjwyNrswrbQFxr07DQsxZ75poBbMmull3Ys3cPtm3fhu+7XM4YrulafVUo4O6du7hx7caaAftNMXgpG7/uAD+RlQtDCNnIMMx/n0CxDhsMQpj/DQDwRbusfJXB0QAAAABJRU5ErkJggg=="/></p>
335370
336− data: [DONE]
371+ <p>Feel free to use and share the file according to license above.</p>
337372
373+ </body>
374+ </html>
338375 headers:
339376 Content-Type:
340− - text/event-stream
377+ - text/html; charset=UTF-8
341378 status: 200 OK
342379 code: 200
343− duration: 532.343375ms
344−- id: 1
380+ duration: 165.532958ms
381+- id: 3
345382 request:
346383 proto: HTTP/1.1
347384 proto_major: 1
348385 proto_minor: 1
349− content_length: 33745
386+ content_length: 34286
350387 host: ""
351− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
388+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_74e206507d5046e8a4b0aa5e\",\"function\":{\"arguments\":\"{\\\"format\\\": \\\"text\\\", \\\"url\\\": \\\"https://example-files.online-convert.com/website/html/example.html\\\"}\",\"name\":\"fetch\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"The user wants me to fetch content from a URL and check if it contains the word 'John Doe'. Let me use the fetch tool.\"},{\"content\":\"HTML test file Purpose: Provide example of this file type Document file type: HTML Version: 1.0 Remark:\",\"tool_call_id\":\"call_74e206507d5046e8a4b0aa5e\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
352389 headers:
353390 Accept:
354391 - application/json
@@ -365,53 +402,83 @@ interactions:
365402 content_length: -1
366403 uncompressed: true
367404 body: |+
368− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
405+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
406+
407+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
408+
409+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" fetched"},"finish_reason":null}]}
410+
411+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" content doesn"},"finish_reason":null}]}
412+
413+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"'t seem"},"finish_reason":null}]}
414+
415+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" to contain"},"finish_reason":null}]}
416+
417+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
418+
419+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"John Doe"},"finish_reason":null}]}
369420
370− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
421+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"\". Let me check"},"finish_reason":null}]}
371422
372− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
423+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" more"},"finish_reason":null}]}
373424
374− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" wants"},"finish_reason":null}]}
425+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" carefully -"},"finish_reason":null}]}
375426
376− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" me"},"finish_reason":null}]}
427+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" the output"},"finish_reason":null}]}
377428
378− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
429+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" seems truncated"},"finish_reason":null}]}
379430
380− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" fetch"},"finish_reason":null}]}
431+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":". Let"},"finish_reason":null}]}
381432
382− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
433+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" me try"},"finish_reason":null}]}
383434
384− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
435+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" fetching"},"finish_reason":null}]}
385436
386− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
437+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" as"},"finish_reason":null}]}
387438
388− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" URL"},"finish_reason":null}]}
439+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" html"},"finish_reason":null}]}
389440
390− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
441+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" format"},"finish_reason":null}]}
391442
392− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" check"},"finish_reason":null}]}
443+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
393444
394− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" if"},"finish_reason":null}]}
445+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" get the"},"finish_reason":null}]}
395446
396− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" it"},"finish_reason":null}]}
447+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" full content."},"finish_reason":null}]}
397448
398− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" contains"},"finish_reason":null}]}
449+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_3be36893074d462db576bd59","type":"function","index":0,"function":{"name":"fetch","arguments":""}}]},"finish_reason":null}]}
399450
400− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
451+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":""}}]},"finish_reason":null}]}
401452
402− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"John"},"finish_reason":null}]}
453+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
403454
404− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" Doe"},"finish_reason":null}]}
455+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"format\": "}}]},"finish_reason":null}]}
405456
406− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"'."},"finish_reason":null}]}
457+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"html\", "}}]},"finish_reason":null}]}
407458
408− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_de680514ee10469d9d0ffe37","type":"function","index":0,"function":{"name":"fetch","arguments":""}}]},"finish_reason":null}]}
459+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"url\": "}}]},"finish_reason":null}]}
409460
410− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"format\":\"text\",\"url\":\"https://example-files.online-convert.com/website/html/example.html\"}"}}]},"finish_reason":null}]}
461+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"https://example"}}]},"finish_reason":null}]}
411462
412− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
463+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-files"}}]},"finish_reason":null}]}
413464
414− data: {"id":"chatcmpl-a2a1229ef38e1d06935cc4db","object":"chat.completion.chunk","created":1778531351,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":719,"completion_tokens":48,"total_tokens":7807,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":19}}}
465+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".online-"}}]},"finish_reason":null}]}
466+
467+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"convert.com/"}}]},"finish_reason":null}]}
468+
469+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"website/html"}}]},"finish_reason":null}]}
470+
471+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/example"}}]},"finish_reason":null}]}
472+
473+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".html"}}]},"finish_reason":null}]}
474+
475+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\""}}]},"finish_reason":null}]}
476+
477+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
478+
479+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
480+
481+ data: {"id":"chatcmpl-21dd60a7cd71549e9e6231dc","object":"chat.completion.chunk","created":1778597345,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":778,"completion_tokens":65,"total_tokens":7883,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":36}}}
415482
416483 data: [DONE]
417484
@@ -420,8 +487,8 @@ interactions:
420487 - text/event-stream
421488 status: 200 OK
422489 code: 200
423− duration: 3.766660875s
424−- id: 2
490+ duration: 3.695552042s
491+- id: 4
425492 request:
426493 proto: HTTP/1.1
427494 proto_major: 1
@@ -491,15 +558,15 @@ interactions:
491558 - text/html; charset=UTF-8
492559 status: 200 OK
493560 code: 200
494− duration: 406.330666ms
495−- id: 3
561+ duration: 154.72225ms
562+- id: 5
496563 request:
497564 proto: HTTP/1.1
498565 proto_major: 1
499566 proto_minor: 1
500− content_length: 34265
567+ content_length: 34992
501568 host: ""
502− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_de680514ee10469d9d0ffe37\",\"function\":{\"arguments\":\"{\\\"format\\\":\\\"text\\\",\\\"url\\\":\\\"https://example-files.online-convert.com/website/html/example.html\\\"}\",\"name\":\"fetch\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"The user wants me to fetch content from a URL and check if it contains 'John Doe'.\"},{\"content\":\"HTML test file Purpose: Provide example of this file type Document file type: HTML Version: 1.0 Remark:\",\"tool_call_id\":\"call_de680514ee10469d9d0ffe37\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_74e206507d5046e8a4b0aa5e\",\"function\":{\"arguments\":\"{\\\"format\\\": \\\"text\\\", \\\"url\\\": \\\"https://example-files.online-convert.com/website/html/example.html\\\"}\",\"name\":\"fetch\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"The user wants me to fetch content from a URL and check if it contains the word 'John Doe'. Let me use the fetch tool.\"},{\"content\":\"HTML test file Purpose: Provide example of this file type Document file type: HTML Version: 1.0 Remark:\",\"tool_call_id\":\"call_74e206507d5046e8a4b0aa5e\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_3be36893074d462db576bd59\",\"function\":{\"arguments\":\"{\\\"format\\\": \\\"html\\\", \\\"url\\\": \\\"https://example-files.online-convert.com/website/html/example.html\\\"}\",\"name\":\"fetch\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"The fetched content doesn't seem to contain \\\"John Doe\\\". Let me check more carefully - the output seems truncated. Let me try fetching as html format to get the full content.\"},{\"content\":\"<html>\\n<body>\\n\\n\\n\\t\\t<h1>HTML test file</h1>\\n\\n<p>Purpose: Provide example of this file type<br/>\\nDocument file type: HTML<br/>\\nVersion: 1.0<br/>\\nRemark:</p>\\n\\n<p></p>\\n</body>\\n</html>\",\"tool_call_id\":\"call_3be36893074d462db576bd59\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
503570 headers:
504571 Accept:
505572 - application/json
@@ -516,39 +583,53 @@ interactions:
516583 content_length: -1
517584 uncompressed: true
518585 body: |+
519− data: {"id":"chatcmpl-13d79abeecb66a0dd218cc21","object":"chat.completion.chunk","created":1778531356,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
586+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
587+
588+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"No"},"finish_reason":null}]}
589+
590+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":", the"},"finish_reason":null}]}
591+
592+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" page does"},"finish_reason":null}]}
593+
594+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" not contain"},"finish_reason":null}]}
595+
596+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" the word"},"finish_reason":null}]}
597+
598+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" \"John"},"finish_reason":null}]}
599+
600+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Doe\"."},"finish_reason":null}]}
520601
521− data: {"id":"chatcmpl-13d79abeecb66a0dd218cc21","object":"chat.completion.chunk","created":1778531356,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"No"},"finish_reason":null}]}
602+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Its content"},"finish_reason":null}]}
522603
523− data: {"id":"chatcmpl-13d79abeecb66a0dd218cc21","object":"chat.completion.chunk","created":1778531356,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":","},"finish_reason":null}]}
604+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" is"},"finish_reason":null}]}
524605
525− data: {"id":"chatcmpl-13d79abeecb66a0dd218cc21","object":"chat.completion.chunk","created":1778531356,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}]}
606+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" just a"},"finish_reason":null}]}
526607
527− data: {"id":"chatcmpl-13d79abeecb66a0dd218cc21","object":"chat.completion.chunk","created":1778531356,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" fetched"},"finish_reason":null}]}
608+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" basic"},"finish_reason":null}]}
528609
529− data: {"id":"chatcmpl-13d79abeecb66a0dd218cc21","object":"chat.completion.chunk","created":1778531356,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" content"},"finish_reason":null}]}
610+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" HTML test"},"finish_reason":null}]}
530611
531− data: {"id":"chatcmpl-13d79abeecb66a0dd218cc21","object":"chat.completion.chunk","created":1778531356,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" does"},"finish_reason":null}]}
612+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" file"},"finish_reason":null}]}
532613
533− data: {"id":"chatcmpl-13d79abeecb66a0dd218cc21","object":"chat.completion.chunk","created":1778531356,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" not"},"finish_reason":null}]}
614+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" with a"},"finish_reason":null}]}
534615
535− data: {"id":"chatcmpl-13d79abeecb66a0dd218cc21","object":"chat.completion.chunk","created":1778531356,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" contain"},"finish_reason":null}]}
616+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" heading and"},"finish_reason":null}]}
536617
537− data: {"id":"chatcmpl-13d79abeecb66a0dd218cc21","object":"chat.completion.chunk","created":1778531356,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}]}
618+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" some"},"finish_reason":null}]}
538619
539− data: {"id":"chatcmpl-13d79abeecb66a0dd218cc21","object":"chat.completion.chunk","created":1778531356,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" word"},"finish_reason":null}]}
620+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" metadata ("},"finish_reason":null}]}
540621
541− data: {"id":"chatcmpl-13d79abeecb66a0dd218cc21","object":"chat.completion.chunk","created":1778531356,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" '"},"finish_reason":null}]}
622+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"purpose"},"finish_reason":null}]}
542623
543− data: {"id":"chatcmpl-13d79abeecb66a0dd218cc21","object":"chat.completion.chunk","created":1778531356,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"John"},"finish_reason":null}]}
624+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":", file"},"finish_reason":null}]}
544625
545− data: {"id":"chatcmpl-13d79abeecb66a0dd218cc21","object":"chat.completion.chunk","created":1778531356,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Doe"},"finish_reason":null}]}
626+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" type, version"},"finish_reason":null}]}
546627
547− data: {"id":"chatcmpl-13d79abeecb66a0dd218cc21","object":"chat.completion.chunk","created":1778531356,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"'."},"finish_reason":null}]}
628+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":")."},"finish_reason":null}]}
548629
549− data: {"id":"chatcmpl-13d79abeecb66a0dd218cc21","object":"chat.completion.chunk","created":1778531356,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
630+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
550631
551− data: {"id":"chatcmpl-13d79abeecb66a0dd218cc21","object":"chat.completion.chunk","created":1778531356,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":72,"completion_tokens":16,"total_tokens":7832,"prompt_tokens_details":{"cached_tokens":7744}}}
632+ data: {"id":"chatcmpl-6756b8e9c05e7811b40c247a","object":"chat.completion.chunk","created":1778597353,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":868,"completion_tokens":38,"total_tokens":7946,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":37}}}
552633
553634 data: [DONE]
554635
@@ -557,4 +638,4 @@ interactions:
557638 - text/event-stream
558639 status: 200 OK
559640 code: 200
560− duration: 3.835477917s
641+ duration: 6.389163583s
internal/agent/testdata/TestCoderAgent/glm-5.1/glob_tool.yaml+129−107
@@ -25,155 +25,155 @@ interactions:
2525 content_length: -1
2626 uncompressed: true
2727 body: |+
28− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
2929
30− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"We"},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"User"},"finish_reason":null}]}
3131
32− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" wants"},"finish_reason":null}]}
3333
34− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
3535
36− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" produce"},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
3737
38− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
3939
40− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
4141
42− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
4343
44− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
4545
46− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
4747
48− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
4949
50− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
50+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
5151
52− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
52+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
5353
54− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Summ"},"finish_reason":null}]}
54+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
5555
56− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ar"},"finish_reason":null}]}
56+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" find"},"finish_reason":null}]}
5757
58− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ize"},"finish_reason":null}]}
58+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" all"},"finish_reason":null}]}
5959
60− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
60+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
6161
62− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
62+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
6363
64− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
64+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
6565
66− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
66+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
6767
68− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
68+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
6969
70− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" find"},"finish_reason":null}]}
70+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
7171
72− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" all"},"finish_reason":null}]}
72+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
7373
74− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
74+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
7575
76− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
76+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
7777
78− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
78+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" must"},"finish_reason":null}]}
7979
80− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
80+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
8181
82− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
82+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
8383
84− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
84+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
8585
86− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
86+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
8787
88− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
88+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
8989
90− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
90+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
9191
92− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" within"},"finish_reason":null}]}
92+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
9393
94− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
94+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
9595
96− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
96+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
9797
98− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
98+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
9999
100− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
100+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
101101
102− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Something"},"finish_reason":null}]}
102+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
103103
104− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" like"},"finish_reason":null}]}
104+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
105105
106− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
106+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
107107
108− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Find"},"finish_reason":null}]}
108+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
109109
110− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" all"},"finish_reason":null}]}
110+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Should"},"finish_reason":null}]}
111111
112− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
112+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summarize"},"finish_reason":null}]}
113113
114− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
114+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
115115
116− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
116+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Something"},"finish_reason":null}]}
117117
118− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
118+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" like"},"finish_reason":null}]}
119119
120− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
120+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
121121
122− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
122+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Finding"},"finish_reason":null}]}
123123
124− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
124+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
125125
126− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
126+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
127127
128− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
128+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Files"},"finish_reason":null}]}
129129
130− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
130+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
131131
132− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
132+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Glob"},"finish_reason":null}]}
133133
134− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
134+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
135135
136− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
136+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Current"},"finish_reason":null}]}
137137
138− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
138+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Directory"},"finish_reason":null}]}
139139
140− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Provide"},"finish_reason":null}]}
140+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
141141
142− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" single"},"finish_reason":null}]}
142+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
143143
144− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
144+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
145145
146− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
146+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
147147
148− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
148+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
149149
150− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
150+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" output"},"finish_reason":null}]}
151151
152− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
152+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
153153
154− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Find"},"finish_reason":null}]}
154+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
155155
156− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" all"},"finish_reason":null}]}
156+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Finding"},"finish_reason":null}]}
157157
158− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" ."},"finish_reason":null}]}
158+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" ."},"finish_reason":null}]}
159159
160− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"go"},"finish_reason":null}]}
160+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"go"},"finish_reason":null}]}
161161
162− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" files"},"finish_reason":null}]}
162+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Files"},"finish_reason":null}]}
163163
164− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
164+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" with"},"finish_reason":null}]}
165165
166− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" current"},"finish_reason":null}]}
166+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Glob"},"finish_reason":null}]}
167167
168− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" directory"},"finish_reason":null}]}
168+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
169169
170− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" using"},"finish_reason":null}]}
170+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Current"},"finish_reason":null}]}
171171
172− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" glob"},"finish_reason":null}]}
172+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Directory"},"finish_reason":null}]}
173173
174− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
174+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
175175
176− data: {"id":"chatcmpl-5434b7f2e35aeff720060a2e","object":"chat.completion.chunk","created":1778531357,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":151,"completion_tokens":82,"total_tokens":297,"prompt_tokens_details":{"cached_tokens":64}}}
176+ data: {"id":"chatcmpl-0c77c926525c023d5e9f33e3","object":"chat.completion.chunk","created":1778597355,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":163,"completion_tokens":82,"total_tokens":293,"prompt_tokens_details":{"cached_tokens":48}}}
177177
178178 data: [DONE]
179179
@@ -182,15 +182,15 @@ interactions:
182182 - text/event-stream
183183 status: 200 OK
184184 code: 200
185− duration: 707.490917ms
185+ duration: 539.286125ms
186186- id: 1
187187 request:
188188 proto: HTTP/1.1
189189 proto_major: 1
190190 proto_minor: 1
191− content_length: 33663
191+ content_length: 33645
192192 host: ""
193− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
193+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
194194 headers:
195195 Accept:
196196 - application/json
@@ -207,15 +207,47 @@ interactions:
207207 content_length: -1
208208 uncompressed: true
209209 body: |+
210− data: {"id":"chatcmpl-9db57a6ab8c034d7f35607f7","object":"chat.completion.chunk","created":1778531360,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
210+ data: {"id":"chatcmpl-1beb7bb732a1dc9c9224afe9","object":"chat.completion.chunk","created":1778597357,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
211211
212− data: {"id":"chatcmpl-9db57a6ab8c034d7f35607f7","object":"chat.completion.chunk","created":1778531360,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_16b4101b4b9b4f4faf698abc","type":"function","index":0,"function":{"name":"glob","arguments":""}}]},"finish_reason":null}]}
212+ data: {"id":"chatcmpl-1beb7bb732a1dc9c9224afe9","object":"chat.completion.chunk","created":1778597357,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_678a92c4217946c3a5ebf102","type":"function","index":0,"function":{"name":"glob","arguments":""}}]},"finish_reason":null}]}
213213
214− data: {"id":"chatcmpl-9db57a6ab8c034d7f35607f7","object":"chat.completion.chunk","created":1778531360,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"path\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/glob_tool\",\"pattern\":\"*.go\"}"}}]},"finish_reason":null}]}
214+ data: {"id":"chatcmpl-1beb7bb732a1dc9c9224afe9","object":"chat.completion.chunk","created":1778597357,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":""}}]},"finish_reason":null}]}
215215
216− data: {"id":"chatcmpl-9db57a6ab8c034d7f35607f7","object":"chat.completion.chunk","created":1778531360,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
216+ data: {"id":"chatcmpl-1beb7bb732a1dc9c9224afe9","object":"chat.completion.chunk","created":1778597357,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
217217
218− data: {"id":"chatcmpl-9db57a6ab8c034d7f35607f7","object":"chat.completion.chunk","created":1778531360,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":702,"completion_tokens":33,"total_tokens":7775,"prompt_tokens_details":{"cached_tokens":7040}}}
218+ data: {"id":"chatcmpl-1beb7bb732a1dc9c9224afe9","object":"chat.completion.chunk","created":1778597357,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"path\": "}}]},"finish_reason":null}]}
219+
220+ data: {"id":"chatcmpl-1beb7bb732a1dc9c9224afe9","object":"chat.completion.chunk","created":1778597357,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"/tmp/c"}}]},"finish_reason":null}]}
221+
222+ data: {"id":"chatcmpl-1beb7bb732a1dc9c9224afe9","object":"chat.completion.chunk","created":1778597357,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush-test"}}]},"finish_reason":null}]}
223+
224+ data: {"id":"chatcmpl-1beb7bb732a1dc9c9224afe9","object":"chat.completion.chunk","created":1778597357,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/Test"}}]},"finish_reason":null}]}
225+
226+ data: {"id":"chatcmpl-1beb7bb732a1dc9c9224afe9","object":"chat.completion.chunk","created":1778597357,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Coder"}}]},"finish_reason":null}]}
227+
228+ data: {"id":"chatcmpl-1beb7bb732a1dc9c9224afe9","object":"chat.completion.chunk","created":1778597357,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Agent"}}]},"finish_reason":null}]}
229+
230+ data: {"id":"chatcmpl-1beb7bb732a1dc9c9224afe9","object":"chat.completion.chunk","created":1778597357,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/glm"}}]},"finish_reason":null}]}
231+
232+ data: {"id":"chatcmpl-1beb7bb732a1dc9c9224afe9","object":"chat.completion.chunk","created":1778597357,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-5"}}]},"finish_reason":null}]}
233+
234+ data: {"id":"chatcmpl-1beb7bb732a1dc9c9224afe9","object":"chat.completion.chunk","created":1778597357,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".1"}}]},"finish_reason":null}]}
235+
236+ data: {"id":"chatcmpl-1beb7bb732a1dc9c9224afe9","object":"chat.completion.chunk","created":1778597357,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/glob_tool"}}]},"finish_reason":null}]}
237+
238+ data: {"id":"chatcmpl-1beb7bb732a1dc9c9224afe9","object":"chat.completion.chunk","created":1778597357,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\", "}}]},"finish_reason":null}]}
239+
240+ data: {"id":"chatcmpl-1beb7bb732a1dc9c9224afe9","object":"chat.completion.chunk","created":1778597357,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"pattern\": "}}]},"finish_reason":null}]}
241+
242+ data: {"id":"chatcmpl-1beb7bb732a1dc9c9224afe9","object":"chat.completion.chunk","created":1778597357,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"*."}}]},"finish_reason":null}]}
243+
244+ data: {"id":"chatcmpl-1beb7bb732a1dc9c9224afe9","object":"chat.completion.chunk","created":1778597357,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"go\""}}]},"finish_reason":null}]}
245+
246+ data: {"id":"chatcmpl-1beb7bb732a1dc9c9224afe9","object":"chat.completion.chunk","created":1778597357,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
247+
248+ data: {"id":"chatcmpl-1beb7bb732a1dc9c9224afe9","object":"chat.completion.chunk","created":1778597357,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
249+
250+ data: {"id":"chatcmpl-1beb7bb732a1dc9c9224afe9","object":"chat.completion.chunk","created":1778597357,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":7744,"completion_tokens":33,"total_tokens":7777,"completion_tokens_details":{"reasoning_tokens":32}}}
219251
220252 data: [DONE]
221253
@@ -224,15 +256,15 @@ interactions:
224256 - text/event-stream
225257 status: 200 OK
226258 code: 200
227− duration: 3.636878s
259+ duration: 2.416067083s
228260- id: 2
229261 request:
230262 proto: HTTP/1.1
231263 proto_major: 1
232264 proto_minor: 1
233− content_length: 34014
265+ content_length: 33999
234266 host: ""
235− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_16b4101b4b9b4f4faf698abc\",\"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_16b4101b4b9b4f4faf698abc\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
267+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_678a92c4217946c3a5ebf102\",\"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_678a92c4217946c3a5ebf102\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
236268 headers:
237269 Accept:
238270 - application/json
@@ -249,35 +281,25 @@ interactions:
249281 content_length: -1
250282 uncompressed: true
251283 body: |+
252− data: {"id":"chatcmpl-ab6b0174ad362ad0bcbc2098","object":"chat.completion.chunk","created":1778531364,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
253−
254− data: {"id":"chatcmpl-ab6b0174ad362ad0bcbc2098","object":"chat.completion.chunk","created":1778531364,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Found"},"finish_reason":null}]}
255−
256− data: {"id":"chatcmpl-ab6b0174ad362ad0bcbc2098","object":"chat.completion.chunk","created":1778531364,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}]}
257−
258− data: {"id":"chatcmpl-ab6b0174ad362ad0bcbc2098","object":"chat.completion.chunk","created":1778531364,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"1"},"finish_reason":null}]}
259−
260− data: {"id":"chatcmpl-ab6b0174ad362ad0bcbc2098","object":"chat.completion.chunk","created":1778531364,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `."},"finish_reason":null}]}
261−
262− data: {"id":"chatcmpl-ab6b0174ad362ad0bcbc2098","object":"chat.completion.chunk","created":1778531364,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"go"},"finish_reason":null}]}
284+ data: {"id":"chatcmpl-05f41bca68c4196b751cb426","object":"chat.completion.chunk","created":1778597364,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
263285
264− data: {"id":"chatcmpl-ab6b0174ad362ad0bcbc2098","object":"chat.completion.chunk","created":1778531364,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
286+ data: {"id":"chatcmpl-05f41bca68c4196b751cb426","object":"chat.completion.chunk","created":1778597364,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Found"},"finish_reason":null}]}
265287
266− data: {"id":"chatcmpl-ab6b0174ad362ad0bcbc2098","object":"chat.completion.chunk","created":1778531364,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" file"},"finish_reason":null}]}
288+ data: {"id":"chatcmpl-05f41bca68c4196b751cb426","object":"chat.completion.chunk","created":1778597364,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}]}
267289
268− data: {"id":"chatcmpl-ab6b0174ad362ad0bcbc2098","object":"chat.completion.chunk","created":1778531364,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":"},"finish_reason":null}]}
290+ data: {"id":"chatcmpl-05f41bca68c4196b751cb426","object":"chat.completion.chunk","created":1778597364,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"1 `."},"finish_reason":null}]}
269291
270− data: {"id":"chatcmpl-ab6b0174ad362ad0bcbc2098","object":"chat.completion.chunk","created":1778531364,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
292+ data: {"id":"chatcmpl-05f41bca68c4196b751cb426","object":"chat.completion.chunk","created":1778597364,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"go"},"finish_reason":null}]}
271293
272− data: {"id":"chatcmpl-ab6b0174ad362ad0bcbc2098","object":"chat.completion.chunk","created":1778531364,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"main"},"finish_reason":null}]}
294+ data: {"id":"chatcmpl-05f41bca68c4196b751cb426","object":"chat.completion.chunk","created":1778597364,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` file"},"finish_reason":null}]}
273295
274− data: {"id":"chatcmpl-ab6b0174ad362ad0bcbc2098","object":"chat.completion.chunk","created":1778531364,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
296+ data: {"id":"chatcmpl-05f41bca68c4196b751cb426","object":"chat.completion.chunk","created":1778597364,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":": `main"},"finish_reason":null}]}
275297
276− data: {"id":"chatcmpl-ab6b0174ad362ad0bcbc2098","object":"chat.completion.chunk","created":1778531364,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
298+ data: {"id":"chatcmpl-05f41bca68c4196b751cb426","object":"chat.completion.chunk","created":1778597364,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go`"},"finish_reason":null}]}
277299
278− data: {"id":"chatcmpl-ab6b0174ad362ad0bcbc2098","object":"chat.completion.chunk","created":1778531364,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
300+ data: {"id":"chatcmpl-05f41bca68c4196b751cb426","object":"chat.completion.chunk","created":1778597364,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
279301
280− data: {"id":"chatcmpl-ab6b0174ad362ad0bcbc2098","object":"chat.completion.chunk","created":1778531364,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":117,"completion_tokens":14,"total_tokens":7811,"prompt_tokens_details":{"cached_tokens":7680}}}
302+ data: {"id":"chatcmpl-05f41bca68c4196b751cb426","object":"chat.completion.chunk","created":1778597364,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":759,"completion_tokens":14,"total_tokens":7813,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":13}}}
281303
282304 data: [DONE]
283305
@@ -286,4 +308,4 @@ interactions:
286308 - text/event-stream
287309 status: 200 OK
288310 code: 200
289− duration: 3.869295209s
311+ duration: 6.472530833s
internal/agent/testdata/TestCoderAgent/glm-5.1/grep_tool.yaml+163−157
@@ -25,229 +25,237 @@ interactions:
2525 content_length: -1
2626 uncompressed: true
2727 body: |+
28− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
2929
30− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
3131
32− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" system"},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
3333
34− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" wants"},"finish_reason":null}]}
3535
36− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
3737
38− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
3939
40− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" produce"},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
4141
42− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
4343
44− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
4545
46− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
4747
48− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
4949
50− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"max"},"finish_reason":null}]}
50+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
5151
52− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
52+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
5353
54− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
54+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" grep"},"finish_reason":null}]}
5555
56− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
56+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
5757
58− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
58+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" search"},"finish_reason":null}]}
5959
60− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summar"},"finish_reason":null}]}
60+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
6161
62− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"izing"},"finish_reason":null}]}
62+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
6363
64− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user's"},"finish_reason":null}]}
64+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" word"},"finish_reason":null}]}
6565
66− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" message"},"finish_reason":null}]}
66+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
6767
68− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
68+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"package"},"finish_reason":null}]}
6969
70− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" The"},"finish_reason":null}]}
70+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
7171
72− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
72+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
7373
74− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" says"},"finish_reason":null}]}
74+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" go"},"finish_reason":null}]}
7575
76− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
76+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
7777
78− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
78+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
7979
80− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
80+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Need"},"finish_reason":null}]}
8181
82− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
82+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
8383
84− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
84+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" produce"},"finish_reason":null}]}
8585
86− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
86+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
8787
88− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
88+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
8989
90− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
90+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
9191
92− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
92+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
9393
94− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
94+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
9595
96− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
96+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
9797
98− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" use"},"finish_reason":null}]}
98+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
9999
100− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" grep"},"finish_reason":null}]}
100+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c="},"finish_reason":null}]}
101101
102− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
102+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
103103
104− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" search"},"finish_reason":null}]}
104+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
105105
106− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
106+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
107107
108− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
108+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
109109
110− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" word"},"finish_reason":null}]}
110+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
111111
112− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
112+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
113113
114− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"package"},"finish_reason":null}]}
114+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
115115
116− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
116+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
117117
118− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
118+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
119119
120− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" go"},"finish_reason":null}]}
120+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
121121
122− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
122+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
123123
124− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
124+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
125125
126− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
126+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Should"},"finish_reason":null}]}
127127
128− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
128+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
129129
130− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" could"},"finish_reason":null}]}
130+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" something"},"finish_reason":null}]}
131131
132− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
132+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" like"},"finish_reason":null}]}
133133
134− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
134+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
135135
136− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
136+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Using"},"finish_reason":null}]}
137137
138− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"grep"},"finish_reason":null}]}
138+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" grep"},"finish_reason":null}]}
139139
140− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
140+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
141141
142− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
142+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" find"},"finish_reason":null}]}
143143
144− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"package"},"finish_reason":null}]}
144+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" package"},"finish_reason":null}]}
145145
146− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
146+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
147147
148− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
148+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Go"},"finish_reason":null}]}
149149
150− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Go"},"finish_reason":null}]}
150+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
151151
152− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
152+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
153153
154− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
154+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
155155
156− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
156+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
157157
158− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
158+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
159159
160− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
160+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
161161
162− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
162+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
163163
164− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
164+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
165165
166− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
166+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
167167
168− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" It's"},"finish_reason":null}]}
168+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
169169
170− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
170+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
171171
172− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
172+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
173173
174− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
174+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Using"},"finish_reason":null}]}
175175
176− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
176+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" grep"},"finish_reason":null}]}
177177
178− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
178+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
179179
180− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
180+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" find"},"finish_reason":null}]}
181181
182− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" colon"},"finish_reason":null}]}
182+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" package"},"finish_reason":null}]}
183183
184− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
184+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
185185
186− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Should"},"finish_reason":null}]}
186+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Go"},"finish_reason":null}]}
187187
188− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
188+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
189189
190− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
190+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
191191
192− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
192+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
193193
194− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
194+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
195195
196− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
196+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"38"},"finish_reason":null}]}
197197
198− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
198+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
199199
200− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
200+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
201201
202− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Provide"},"finish_reason":null}]}
202+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Or"},"finish_reason":null}]}
203203
204− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" just"},"finish_reason":null}]}
204+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
205205
206− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
206+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"grep"},"finish_reason":null}]}
207207
208− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
208+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
209209
210− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
210+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
211211
212− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Thus"},"finish_reason":null}]}
212+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"package"},"finish_reason":null}]}
213213
214− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" answer"},"finish_reason":null}]}
214+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
215215
216− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
216+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
217217
218− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" grep"},"finish_reason":null}]}
218+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Go"},"finish_reason":null}]}
219219
220− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
220+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" source"},"finish_reason":null}]}
221221
222− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
222+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
223223
224− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"package"},"finish_reason":null}]}
224+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
225225
226− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
226+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
227227
228− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
228+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
229229
230− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Go"},"finish_reason":null}]}
230+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"33"},"finish_reason":null}]}
231231
232− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
232+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
233233
234− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
234+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Provide"},"finish_reason":null}]}
235235
236− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"grep"},"finish_reason":null}]}
236+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" as"},"finish_reason":null}]}
237237
238− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" for"},"finish_reason":null}]}
238+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
239239
240− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" package"},"finish_reason":null}]}
240+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
241241
242− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
242+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"grep"},"finish_reason":null}]}
243243
244− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Go"},"finish_reason":null}]}
244+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" for"},"finish_reason":null}]}
245245
246− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" files"},"finish_reason":null}]}
246+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" package"},"finish_reason":null}]}
247247
248− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
248+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
249249
250− data: {"id":"chatcmpl-d5a1d400635f2d527f6c53d9","object":"chat.completion.chunk","created":1778531364,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":24,"completion_tokens":119,"total_tokens":335,"prompt_tokens_details":{"cached_tokens":192}}}
250+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Go"},"finish_reason":null}]}
251+
252+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" source"},"finish_reason":null}]}
253+
254+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" files"},"finish_reason":null}]}
255+
256+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
257+
258+ data: {"id":"chatcmpl-20d39cc88cdd5a5f8d186ad0","object":"chat.completion.chunk","created":1778597364,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":24,"completion_tokens":123,"total_tokens":339,"prompt_tokens_details":{"cached_tokens":192}}}
251259
252260 data: [DONE]
253261
@@ -256,15 +264,15 @@ interactions:
256264 - text/event-stream
257265 status: 200 OK
258266 code: 200
259− duration: 626.431834ms
267+ duration: 552.038958ms
260268- id: 1
261269 request:
262270 proto: HTTP/1.1
263271 proto_major: 1
264272 proto_minor: 1
265− content_length: 33661
273+ content_length: 33643
266274 host: ""
267− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
275+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
268276 headers:
269277 Accept:
270278 - application/json
@@ -281,33 +289,43 @@ interactions:
281289 content_length: -1
282290 uncompressed: true
283291 body: |+
284− data: {"id":"chatcmpl-e0456a0f2ca3c2e18b0cdc2a","object":"chat.completion.chunk","created":1778531367,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
292+ data: {"id":"chatcmpl-8c7c12d18b49b0b51650ea6a","object":"chat.completion.chunk","created":1778597368,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
293+
294+ data: {"id":"chatcmpl-8c7c12d18b49b0b51650ea6a","object":"chat.completion.chunk","created":1778597368,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
295+
296+ data: {"id":"chatcmpl-8c7c12d18b49b0b51650ea6a","object":"chat.completion.chunk","created":1778597368,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
297+
298+ data: {"id":"chatcmpl-8c7c12d18b49b0b51650ea6a","object":"chat.completion.chunk","created":1778597368,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" wants to search for"},"finish_reason":null}]}
299+
300+ data: {"id":"chatcmpl-8c7c12d18b49b0b51650ea6a","object":"chat.completion.chunk","created":1778597368,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" the word"},"finish_reason":null}]}
285301
286− data: {"id":"chatcmpl-e0456a0f2ca3c2e18b0cdc2a","object":"chat.completion.chunk","created":1778531367,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"Search"},"finish_reason":null}]}
302+ data: {"id":"chatcmpl-8c7c12d18b49b0b51650ea6a","object":"chat.completion.chunk","created":1778597368,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" 'package"},"finish_reason":null}]}
287303
288− data: {"id":"chatcmpl-e0456a0f2ca3c2e18b0cdc2a","object":"chat.completion.chunk","created":1778531367,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
304+ data: {"id":"chatcmpl-8c7c12d18b49b0b51650ea6a","object":"chat.completion.chunk","created":1778597368,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"' in Go"},"finish_reason":null}]}
289305
290− data: {"id":"chatcmpl-e0456a0f2ca3c2e18b0cdc2a","object":"chat.completion.chunk","created":1778531367,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
306+ data: {"id":"chatcmpl-8c7c12d18b49b0b51650ea6a","object":"chat.completion.chunk","created":1778597368,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" files."},"finish_reason":null}]}
291307
292− data: {"id":"chatcmpl-e0456a0f2ca3c2e18b0cdc2a","object":"chat.completion.chunk","created":1778531367,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"package"},"finish_reason":null}]}
308+ data: {"id":"chatcmpl-8c7c12d18b49b0b51650ea6a","object":"chat.completion.chunk","created":1778597368,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_596727092909456da0b8340d","type":"function","index":0,"function":{"name":"grep","arguments":""}}]},"finish_reason":null}]}
293309
294− data: {"id":"chatcmpl-e0456a0f2ca3c2e18b0cdc2a","object":"chat.completion.chunk","created":1778531367,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
310+ data: {"id":"chatcmpl-8c7c12d18b49b0b51650ea6a","object":"chat.completion.chunk","created":1778597368,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":""}}]},"finish_reason":null}]}
295311
296− data: {"id":"chatcmpl-e0456a0f2ca3c2e18b0cdc2a","object":"chat.completion.chunk","created":1778531367,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
312+ data: {"id":"chatcmpl-8c7c12d18b49b0b51650ea6a","object":"chat.completion.chunk","created":1778597368,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
297313
298− data: {"id":"chatcmpl-e0456a0f2ca3c2e18b0cdc2a","object":"chat.completion.chunk","created":1778531367,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" Go"},"finish_reason":null}]}
314+ data: {"id":"chatcmpl-8c7c12d18b49b0b51650ea6a","object":"chat.completion.chunk","created":1778597368,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"include\": \"*."}}]},"finish_reason":null}]}
299315
300− data: {"id":"chatcmpl-e0456a0f2ca3c2e18b0cdc2a","object":"chat.completion.chunk","created":1778531367,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
316+ data: {"id":"chatcmpl-8c7c12d18b49b0b51650ea6a","object":"chat.completion.chunk","created":1778597368,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"go\""}}]},"finish_reason":null}]}
301317
302− data: {"id":"chatcmpl-e0456a0f2ca3c2e18b0cdc2a","object":"chat.completion.chunk","created":1778531367,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
318+ data: {"id":"chatcmpl-8c7c12d18b49b0b51650ea6a","object":"chat.completion.chunk","created":1778597368,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":", "}}]},"finish_reason":null}]}
303319
304− data: {"id":"chatcmpl-e0456a0f2ca3c2e18b0cdc2a","object":"chat.completion.chunk","created":1778531367,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_dfb413984d634feda5ec7098","type":"function","index":0,"function":{"name":"grep","arguments":""}}]},"finish_reason":null}]}
320+ data: {"id":"chatcmpl-8c7c12d18b49b0b51650ea6a","object":"chat.completion.chunk","created":1778597368,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"pattern\": "}}]},"finish_reason":null}]}
305321
306− data: {"id":"chatcmpl-e0456a0f2ca3c2e18b0cdc2a","object":"chat.completion.chunk","created":1778531367,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"include\":\"*.go\",\"path\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/grep_tool\",\"pattern\":\"package\"}"}}]},"finish_reason":null}]}
322+ data: {"id":"chatcmpl-8c7c12d18b49b0b51650ea6a","object":"chat.completion.chunk","created":1778597368,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"package\""}}]},"finish_reason":null}]}
307323
308− data: {"id":"chatcmpl-e0456a0f2ca3c2e18b0cdc2a","object":"chat.completion.chunk","created":1778531367,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
324+ data: {"id":"chatcmpl-8c7c12d18b49b0b51650ea6a","object":"chat.completion.chunk","created":1778597368,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
309325
310− data: {"id":"chatcmpl-e0456a0f2ca3c2e18b0cdc2a","object":"chat.completion.chunk","created":1778531367,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":703,"completion_tokens":48,"total_tokens":7791,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":9}}}
326+ data: {"id":"chatcmpl-8c7c12d18b49b0b51650ea6a","object":"chat.completion.chunk","created":1778597368,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
327+
328+ data: {"id":"chatcmpl-8c7c12d18b49b0b51650ea6a","object":"chat.completion.chunk","created":1778597368,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":7745,"completion_tokens":33,"total_tokens":7778,"completion_tokens_details":{"reasoning_tokens":15}}}
311329
312330 data: [DONE]
313331
@@ -316,15 +334,15 @@ interactions:
316334 - text/event-stream
317335 status: 200 OK
318336 code: 200
319− duration: 3.268464792s
337+ duration: 4.030870625s
320338- id: 2
321339 request:
322340 proto: HTTP/1.1
323341 proto_major: 1
324342 proto_minor: 1
325− content_length: 34144
343+ content_length: 34094
326344 host: ""
327− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_dfb413984d634feda5ec7098\",\"function\":{\"arguments\":\"{\\\"include\\\":\\\"*.go\\\",\\\"path\\\":\\\"/tmp/crush-test/TestCoderAgent/glm-5.1/grep_tool\\\",\\\"pattern\\\":\\\"package\\\"}\",\"name\":\"grep\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"Search for 'package' in Go files.\"},{\"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_dfb413984d634feda5ec7098\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
345+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_596727092909456da0b8340d\",\"function\":{\"arguments\":\"{\\\"include\\\": \\\"*.go\\\", \\\"pattern\\\": \\\"package\\\"}\",\"name\":\"grep\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"The user wants to search for the word 'package' in Go files.\"},{\"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_596727092909456da0b8340d\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
328346 headers:
329347 Accept:
330348 - application/json
@@ -341,41 +359,29 @@ interactions:
341359 content_length: -1
342360 uncompressed: true
343361 body: |+
344− data: {"id":"chatcmpl-0c553865afc74fff1c1551fd","object":"chat.completion.chunk","created":1778531371,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
345−
346− data: {"id":"chatcmpl-0c553865afc74fff1c1551fd","object":"chat.completion.chunk","created":1778531371,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"One"},"finish_reason":null}]}
347−
348− data: {"id":"chatcmpl-0c553865afc74fff1c1551fd","object":"chat.completion.chunk","created":1778531371,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" match"},"finish_reason":null}]}
349−
350− data: {"id":"chatcmpl-0c553865afc74fff1c1551fd","object":"chat.completion.chunk","created":1778531371,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" found"},"finish_reason":null}]}
351−
352− data: {"id":"chatcmpl-0c553865afc74fff1c1551fd","object":"chat.completion.chunk","created":1778531371,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":"},"finish_reason":null}]}
353−
354− data: {"id":"chatcmpl-0c553865afc74fff1c1551fd","object":"chat.completion.chunk","created":1778531371,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
355−
356− data: {"id":"chatcmpl-0c553865afc74fff1c1551fd","object":"chat.completion.chunk","created":1778531371,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"main"},"finish_reason":null}]}
362+ data: {"id":"chatcmpl-150a68d7d0d9db901807554d","object":"chat.completion.chunk","created":1778597372,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
357363
358− data: {"id":"chatcmpl-0c553865afc74fff1c1551fd","object":"chat.completion.chunk","created":1778531371,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
364+ data: {"id":"chatcmpl-150a68d7d0d9db901807554d","object":"chat.completion.chunk","created":1778597372,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Found"},"finish_reason":null}]}
359365
360− data: {"id":"chatcmpl-0c553865afc74fff1c1551fd","object":"chat.completion.chunk","created":1778531371,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":"},"finish_reason":null}]}
366+ data: {"id":"chatcmpl-150a68d7d0d9db901807554d","object":"chat.completion.chunk","created":1778597372,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}]}
361367
362− data: {"id":"chatcmpl-0c553865afc74fff1c1551fd","object":"chat.completion.chunk","created":1778531371,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"1"},"finish_reason":null}]}
368+ data: {"id":"chatcmpl-150a68d7d0d9db901807554d","object":"chat.completion.chunk","created":1778597372,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"1 match"},"finish_reason":null}]}
363369
364− data: {"id":"chatcmpl-0c553865afc74fff1c1551fd","object":"chat.completion.chunk","created":1778531371,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
370+ data: {"id":"chatcmpl-150a68d7d0d9db901807554d","object":"chat.completion.chunk","created":1778597372,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":": `"},"finish_reason":null}]}
365371
366− data: {"id":"chatcmpl-0c553865afc74fff1c1551fd","object":"chat.completion.chunk","created":1778531371,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" contains"},"finish_reason":null}]}
372+ data: {"id":"chatcmpl-150a68d7d0d9db901807554d","object":"chat.completion.chunk","created":1778597372,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"main.go"},"finish_reason":null}]}
367373
368− data: {"id":"chatcmpl-0c553865afc74fff1c1551fd","object":"chat.completion.chunk","created":1778531371,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
374+ data: {"id":"chatcmpl-150a68d7d0d9db901807554d","object":"chat.completion.chunk","created":1778597372,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":1"},"finish_reason":null}]}
369375
370− data: {"id":"chatcmpl-0c553865afc74fff1c1551fd","object":"chat.completion.chunk","created":1778531371,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"package"},"finish_reason":null}]}
376+ data: {"id":"chatcmpl-150a68d7d0d9db901807554d","object":"chat.completion.chunk","created":1778597372,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` — `"},"finish_reason":null}]}
371377
372− data: {"id":"chatcmpl-0c553865afc74fff1c1551fd","object":"chat.completion.chunk","created":1778531371,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" main"},"finish_reason":null}]}
378+ data: {"id":"chatcmpl-150a68d7d0d9db901807554d","object":"chat.completion.chunk","created":1778597372,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"package main"},"finish_reason":null}]}
373379
374− data: {"id":"chatcmpl-0c553865afc74fff1c1551fd","object":"chat.completion.chunk","created":1778531371,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`."},"finish_reason":null}]}
380+ data: {"id":"chatcmpl-150a68d7d0d9db901807554d","object":"chat.completion.chunk","created":1778597372,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
375381
376− data: {"id":"chatcmpl-0c553865afc74fff1c1551fd","object":"chat.completion.chunk","created":1778531371,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
382+ data: {"id":"chatcmpl-150a68d7d0d9db901807554d","object":"chat.completion.chunk","created":1778597372,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
377383
378− data: {"id":"chatcmpl-0c553865afc74fff1c1551fd","object":"chat.completion.chunk","created":1778531371,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":142,"completion_tokens":17,"total_tokens":7839,"prompt_tokens_details":{"cached_tokens":7680}}}
384+ data: {"id":"chatcmpl-150a68d7d0d9db901807554d","object":"chat.completion.chunk","created":1778597372,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":763,"completion_tokens":18,"total_tokens":7821,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":17}}}
379385
380386 data: [DONE]
381387
@@ -384,4 +390,4 @@ interactions:
384390 - text/event-stream
385391 status: 200 OK
386392 code: 200
387− duration: 3.820657583s
393+ duration: 3.065027833s
internal/agent/testdata/TestCoderAgent/glm-5.1/ls_tool.yaml+173−119
@@ -25,161 +25,231 @@ interactions:
2525 content_length: -1
2626 uncompressed: true
2727 body: |+
28− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
2929
30− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
3131
32− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" system"},"finish_reason":null}]}
3333
34− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" wants"},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" says"},"finish_reason":null}]}
3535
36− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
3737
38− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
3939
40− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"You"},"finish_reason":null}]}
4141
42− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" will"},"finish_reason":null}]}
4343
44− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" generate"},"finish_reason":null}]}
4545
46− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
4747
48− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
4949
50− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
50+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
5151
52− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
52+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" based"},"finish_reason":null}]}
5353
54− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ls"},"finish_reason":null}]}
54+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" on"},"finish_reason":null}]}
5555
56− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
56+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
5757
58− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" list"},"finish_reason":null}]}
58+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" first"},"finish_reason":null}]}
5959
60− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
60+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" message"},"finish_reason":null}]}
6161
62− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
62+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
6363
64− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
64+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
6565
66− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
66+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" begins"},"finish_reason":null}]}
6767
68− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
68+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
6969
70− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
70+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" conversation"},"finish_reason":null}]}
7171
72− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
72+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
7373
74− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
74+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\""},"finish_reason":null}]}
7575
76− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" should"},"finish_reason":null}]}
76+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" We"},"finish_reason":null}]}
7777
78− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
78+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
7979
80− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summar"},"finish_reason":null}]}
80+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
8181
82− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"izing"},"finish_reason":null}]}
82+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" output"},"finish_reason":null}]}
8383
84− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" this"},"finish_reason":null}]}
84+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
8585
86− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
86+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
8787
88− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Must"},"finish_reason":null}]}
88+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
8989
90− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
90+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" The"},"finish_reason":null}]}
9191
92− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c="},"finish_reason":null}]}
92+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user's"},"finish_reason":null}]}
9393
94− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
94+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" message"},"finish_reason":null}]}
9595
96− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
96+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
9797
98− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
98+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
9999
100− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
100+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
101101
102− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
102+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
103103
104− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
104+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
105105
106− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
106+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
107107
108− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
108+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
109109
110− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"/"},"finish_reason":null}]}
110+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
111111
112− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"col"},"finish_reason":null}]}
112+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
113113
114− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
114+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
115115
116− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
116+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":\n\n"},"finish_reason":null}]}
117117
118− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Maybe"},"finish_reason":null}]}
118+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
119119
120− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
120+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ls"},"finish_reason":null}]}
121121
122− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Listing"},"finish_reason":null}]}
122+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
123123
124− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
124+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" list"},"finish_reason":null}]}
125125
126− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
126+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
127127
128− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
128+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
129129
130− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
130+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
131131
132− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
132+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
133133
134− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ls"},"finish_reason":null}]}
134+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
135135
136− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
136+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
137137
138− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
138+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"\n\n"},"finish_reason":null}]}
139139
140− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" okay"},"finish_reason":null}]}
140+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"They"},"finish_reason":null}]}
141141
142− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
142+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" want"},"finish_reason":null}]}
143143
144− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
144+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
145145
146− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"41"},"finish_reason":null}]}
146+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
147147
148− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
148+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
149149
150− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
150+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
151151
152− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" No"},"finish_reason":null}]}
152+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Should"},"finish_reason":null}]}
153153
154− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
154+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
155155
156− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
156+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" less"},"finish_reason":null}]}
157157
158− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Return"},"finish_reason":null}]}
158+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" than"},"finish_reason":null}]}
159159
160− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" only"},"finish_reason":null}]}
160+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
161161
162− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
162+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
163163
164− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
164+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
165165
166− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Listing"},"finish_reason":null}]}
166+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
167167
168− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" files"},"finish_reason":null}]}
168+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
169169
170− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
170+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
171171
172− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" current"},"finish_reason":null}]}
172+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
173173
174− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" directory"},"finish_reason":null}]}
174+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
175175
176− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" with"},"finish_reason":null}]}
176+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
177177
178− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" ls"},"finish_reason":null}]}
178+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
179179
180− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
180+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
181181
182− data: {"id":"chatcmpl-1231d98bd4bffd2321671d3c","object":"chat.completion.chunk","created":1778531372,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":21,"completion_tokens":85,"total_tokens":298,"prompt_tokens_details":{"cached_tokens":192}}}
182+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
183+
184+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
185+
186+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Potential"},"finish_reason":null}]}
187+
188+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
189+
190+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
191+
192+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
193+
194+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Using"},"finish_reason":null}]}
195+
196+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ls"},"finish_reason":null}]}
197+
198+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
199+
200+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" List"},"finish_reason":null}]}
201+
202+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Current"},"finish_reason":null}]}
203+
204+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Directory"},"finish_reason":null}]}
205+
206+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Files"},"finish_reason":null}]}
207+
208+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
209+
210+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
211+
212+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
213+
214+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"38"},"finish_reason":null}]}
215+
216+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
217+
218+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
219+
220+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" No"},"finish_reason":null}]}
221+
222+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" colon"},"finish_reason":null}]}
223+
224+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
225+
226+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
227+
228+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
229+
230+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
231+
232+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
233+
234+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
235+
236+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Using"},"finish_reason":null}]}
237+
238+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" ls"},"finish_reason":null}]}
239+
240+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}]}
241+
242+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" List"},"finish_reason":null}]}
243+
244+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Current"},"finish_reason":null}]}
245+
246+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Directory"},"finish_reason":null}]}
247+
248+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Files"},"finish_reason":null}]}
249+
250+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
251+
252+ data: {"id":"chatcmpl-7800eed68adf0e90119be770","object":"chat.completion.chunk","created":1778597373,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":21,"completion_tokens":120,"total_tokens":333,"prompt_tokens_details":{"cached_tokens":192}}}
183253
184254 data: [DONE]
185255
@@ -188,15 +258,15 @@ interactions:
188258 - text/event-stream
189259 status: 200 OK
190260 code: 200
191− duration: 578.95275ms
261+ duration: 458.0435ms
192262- id: 1
193263 request:
194264 proto: HTTP/1.1
195265 proto_major: 1
196266 proto_minor: 1
197− content_length: 33655
267+ content_length: 33637
198268 host: ""
199− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
269+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
200270 headers:
201271 Accept:
202272 - application/json
@@ -213,15 +283,17 @@ interactions:
213283 content_length: -1
214284 uncompressed: true
215285 body: |+
216− data: {"id":"chatcmpl-be7932703ca4cb5e7b36401b","object":"chat.completion.chunk","created":1778531375,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
286+ data: {"id":"chatcmpl-3c3df60659c978a4a68c4826","object":"chat.completion.chunk","created":1778597377,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
287+
288+ data: {"id":"chatcmpl-3c3df60659c978a4a68c4826","object":"chat.completion.chunk","created":1778597377,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_7d06be2f253c411fb9774a21","type":"function","index":0,"function":{"name":"ls","arguments":""}}]},"finish_reason":null}]}
217289
218− data: {"id":"chatcmpl-be7932703ca4cb5e7b36401b","object":"chat.completion.chunk","created":1778531375,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_458d7dc1b8134cda82041267","type":"function","index":0,"function":{"name":"ls","arguments":""}}]},"finish_reason":null}]}
290+ data: {"id":"chatcmpl-3c3df60659c978a4a68c4826","object":"chat.completion.chunk","created":1778597377,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":""}}]},"finish_reason":null}]}
219291
220− data: {"id":"chatcmpl-be7932703ca4cb5e7b36401b","object":"chat.completion.chunk","created":1778531375,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"path\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/ls_tool\"}"}}]},"finish_reason":null}]}
292+ data: {"id":"chatcmpl-3c3df60659c978a4a68c4826","object":"chat.completion.chunk","created":1778597377,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{}"}}]},"finish_reason":null}]}
221293
222− data: {"id":"chatcmpl-be7932703ca4cb5e7b36401b","object":"chat.completion.chunk","created":1778531375,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
294+ data: {"id":"chatcmpl-3c3df60659c978a4a68c4826","object":"chat.completion.chunk","created":1778597377,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
223295
224− data: {"id":"chatcmpl-be7932703ca4cb5e7b36401b","object":"chat.completion.chunk","created":1778531375,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":700,"completion_tokens":26,"total_tokens":7766,"prompt_tokens_details":{"cached_tokens":7040}}}
296+ data: {"id":"chatcmpl-3c3df60659c978a4a68c4826","object":"chat.completion.chunk","created":1778597377,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":702,"completion_tokens":5,"total_tokens":7747,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":4}}}
225297
226298 data: [DONE]
227299
@@ -230,15 +302,15 @@ interactions:
230302 - text/event-stream
231303 status: 200 OK
232304 code: 200
233− duration: 3.861693875s
305+ duration: 5.301269916s
234306- id: 2
235307 request:
236308 proto: HTTP/1.1
237309 proto_major: 1
238310 proto_minor: 1
239− content_length: 34003
311+ content_length: 33926
240312 host: ""
241− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_458d7dc1b8134cda82041267\",\"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_458d7dc1b8134cda82041267\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
313+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_7d06be2f253c411fb9774a21\",\"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_7d06be2f253c411fb9774a21\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
242314 headers:
243315 Accept:
244316 - application/json
@@ -255,45 +327,27 @@ interactions:
255327 content_length: -1
256328 uncompressed: true
257329 body: |+
258− data: {"id":"chatcmpl-375838ece2058188cf5cff8a","object":"chat.completion.chunk","created":1778531377,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
259−
260− data: {"id":"chatcmpl-375838ece2058188cf5cff8a","object":"chat.completion.chunk","created":1778531377,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Two"},"finish_reason":null}]}
261−
262− data: {"id":"chatcmpl-375838ece2058188cf5cff8a","object":"chat.completion.chunk","created":1778531377,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" files"},"finish_reason":null}]}
263−
264− data: {"id":"chatcmpl-375838ece2058188cf5cff8a","object":"chat.completion.chunk","created":1778531377,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
265−
266− data: {"id":"chatcmpl-375838ece2058188cf5cff8a","object":"chat.completion.chunk","created":1778531377,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}]}
267−
268− data: {"id":"chatcmpl-375838ece2058188cf5cff8a","object":"chat.completion.chunk","created":1778531377,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" current"},"finish_reason":null}]}
269−
270− data: {"id":"chatcmpl-375838ece2058188cf5cff8a","object":"chat.completion.chunk","created":1778531377,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" directory"},"finish_reason":null}]}
271−
272− data: {"id":"chatcmpl-375838ece2058188cf5cff8a","object":"chat.completion.chunk","created":1778531377,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":\n"},"finish_reason":null}]}
273−
274− data: {"id":"chatcmpl-375838ece2058188cf5cff8a","object":"chat.completion.chunk","created":1778531377,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}]}
275−
276− data: {"id":"chatcmpl-375838ece2058188cf5cff8a","object":"chat.completion.chunk","created":1778531377,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
330+ data: {"id":"chatcmpl-e09172c463a28df67712f05f","object":"chat.completion.chunk","created":1778597381,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
277331
278− data: {"id":"chatcmpl-375838ece2058188cf5cff8a","object":"chat.completion.chunk","created":1778531377,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"go"},"finish_reason":null}]}
332+ data: {"id":"chatcmpl-e09172c463a28df67712f05f","object":"chat.completion.chunk","created":1778597381,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Files"},"finish_reason":null}]}
279333
280− data: {"id":"chatcmpl-375838ece2058188cf5cff8a","object":"chat.completion.chunk","created":1778531377,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".mod"},"finish_reason":null}]}
334+ data: {"id":"chatcmpl-e09172c463a28df67712f05f","object":"chat.completion.chunk","created":1778597381,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" in current"},"finish_reason":null}]}
281335
282− data: {"id":"chatcmpl-375838ece2058188cf5cff8a","object":"chat.completion.chunk","created":1778531377,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`\n"},"finish_reason":null}]}
336+ data: {"id":"chatcmpl-e09172c463a28df67712f05f","object":"chat.completion.chunk","created":1778597381,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" directory:\n"},"finish_reason":null}]}
283337
284− data: {"id":"chatcmpl-375838ece2058188cf5cff8a","object":"chat.completion.chunk","created":1778531377,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}]}
338+ data: {"id":"chatcmpl-e09172c463a28df67712f05f","object":"chat.completion.chunk","created":1778597381,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"- `go"},"finish_reason":null}]}
285339
286− data: {"id":"chatcmpl-375838ece2058188cf5cff8a","object":"chat.completion.chunk","created":1778531377,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
340+ data: {"id":"chatcmpl-e09172c463a28df67712f05f","object":"chat.completion.chunk","created":1778597381,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".mod"},"finish_reason":null}]}
287341
288− data: {"id":"chatcmpl-375838ece2058188cf5cff8a","object":"chat.completion.chunk","created":1778531377,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"main"},"finish_reason":null}]}
342+ data: {"id":"chatcmpl-e09172c463a28df67712f05f","object":"chat.completion.chunk","created":1778597381,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`\n-"},"finish_reason":null}]}
289343
290− data: {"id":"chatcmpl-375838ece2058188cf5cff8a","object":"chat.completion.chunk","created":1778531377,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
344+ data: {"id":"chatcmpl-e09172c463a28df67712f05f","object":"chat.completion.chunk","created":1778597381,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `main"},"finish_reason":null}]}
291345
292− data: {"id":"chatcmpl-375838ece2058188cf5cff8a","object":"chat.completion.chunk","created":1778531377,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
346+ data: {"id":"chatcmpl-e09172c463a28df67712f05f","object":"chat.completion.chunk","created":1778597381,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go`"},"finish_reason":null}]}
293347
294− data: {"id":"chatcmpl-375838ece2058188cf5cff8a","object":"chat.completion.chunk","created":1778531377,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
348+ data: {"id":"chatcmpl-e09172c463a28df67712f05f","object":"chat.completion.chunk","created":1778597381,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
295349
296− data: {"id":"chatcmpl-375838ece2058188cf5cff8a","object":"chat.completion.chunk","created":1778531377,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":120,"completion_tokens":19,"total_tokens":7819,"prompt_tokens_details":{"cached_tokens":7680}}}
350+ data: {"id":"chatcmpl-e09172c463a28df67712f05f","object":"chat.completion.chunk","created":1778597381,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":741,"completion_tokens":17,"total_tokens":7798,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":16}}}
297351
298352 data: [DONE]
299353
@@ -302,4 +356,4 @@ interactions:
302356 - text/event-stream
303357 status: 200 OK
304358 code: 200
305− duration: 2.395649s
359+ duration: 3.382412042s
internal/agent/testdata/TestCoderAgent/glm-5.1/multiedit_tool.yaml+541−749
@@ -2,76 +2,6 @@
22version: 2
33interactions:
44- id: 0
5− request:
6− proto: HTTP/1.1
7− proto_major: 1
8− proto_minor: 1
9− content_length: 33741
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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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-d599cbede586f295273bd5fe","object":"chat.completion.chunk","created":1778531382,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
29−
30− data: {"id":"chatcmpl-d599cbede586f295273bd5fe","object":"chat.completion.chunk","created":1778531382,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"Let"},"finish_reason":null}]}
31−
32− data: {"id":"chatcmpl-d599cbede586f295273bd5fe","object":"chat.completion.chunk","created":1778531382,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" me"},"finish_reason":null}]}
33−
34− data: {"id":"chatcmpl-d599cbede586f295273bd5fe","object":"chat.completion.chunk","created":1778531382,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" first"},"finish_reason":null}]}
35−
36− data: {"id":"chatcmpl-d599cbede586f295273bd5fe","object":"chat.completion.chunk","created":1778531382,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" read"},"finish_reason":null}]}
37−
38− data: {"id":"chatcmpl-d599cbede586f295273bd5fe","object":"chat.completion.chunk","created":1778531382,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
39−
40− data: {"id":"chatcmpl-d599cbede586f295273bd5fe","object":"chat.completion.chunk","created":1778531382,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
41−
42− data: {"id":"chatcmpl-d599cbede586f295273bd5fe","object":"chat.completion.chunk","created":1778531382,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
43−
44− data: {"id":"chatcmpl-d599cbede586f295273bd5fe","object":"chat.completion.chunk","created":1778531382,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
45−
46− data: {"id":"chatcmpl-d599cbede586f295273bd5fe","object":"chat.completion.chunk","created":1778531382,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
47−
48− data: {"id":"chatcmpl-d599cbede586f295273bd5fe","object":"chat.completion.chunk","created":1778531382,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" see"},"finish_reason":null}]}
49−
50− data: {"id":"chatcmpl-d599cbede586f295273bd5fe","object":"chat.completion.chunk","created":1778531382,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" its"},"finish_reason":null}]}
51−
52− data: {"id":"chatcmpl-d599cbede586f295273bd5fe","object":"chat.completion.chunk","created":1778531382,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
53−
54− data: {"id":"chatcmpl-d599cbede586f295273bd5fe","object":"chat.completion.chunk","created":1778531382,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
55−
56− data: {"id":"chatcmpl-d599cbede586f295273bd5fe","object":"chat.completion.chunk","created":1778531382,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
57−
58− data: {"id":"chatcmpl-d599cbede586f295273bd5fe","object":"chat.completion.chunk","created":1778531382,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_4d3da657d04f428c92d43f15","type":"function","index":0,"function":{"name":"view","arguments":""}}]},"finish_reason":null}]}
59−
60− data: {"id":"chatcmpl-d599cbede586f295273bd5fe","object":"chat.completion.chunk","created":1778531382,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"file_path\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\"}"}}]},"finish_reason":null}]}
61−
62− data: {"id":"chatcmpl-d599cbede586f295273bd5fe","object":"chat.completion.chunk","created":1778531382,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
63−
64− data: {"id":"chatcmpl-d599cbede586f295273bd5fe","object":"chat.completion.chunk","created":1778531382,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":725,"completion_tokens":45,"total_tokens":7810,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":14}}}
65−
66− data: [DONE]
67−
68− headers:
69− Content-Type:
70− - text/event-stream
71− status: 200 OK
72− code: 200
73− duration: 4.027960709s
74−- id: 1
755 request:
766 proto: HTTP/1.1
777 proto_major: 1
@@ -95,857 +25,769 @@ interactions:
9525 content_length: -1
9626 uncompressed: true
9727 body: |+
98− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
99−
100− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"We"},"finish_reason":null}]}
101−
102− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
103−
104− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
10529
106− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" produce"},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"We"},"finish_reason":null}]}
10731
108− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
10933
110− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
11135
112− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" produce"},"finish_reason":null}]}
11337
114− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
11539
116− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
11741
118− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
11943
120− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
12145
122− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c="},"finish_reason":null}]}
12347
124− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
12549
126− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Summ"},"finish_reason":null}]}
50+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
12751
128− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ar"},"finish_reason":null}]}
52+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
12953
130− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ize"},"finish_reason":null}]}
54+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summar"},"finish_reason":null}]}
13155
132− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
56+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"izing"},"finish_reason":null}]}
13357
134− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
58+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
13559
136− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
60+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
13761
138− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" mult"},"finish_reason":null}]}
62+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
13963
140− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ied"},"finish_reason":null}]}
64+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" mult"},"finish_reason":null}]}
14165
142− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"it"},"finish_reason":null}]}
66+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ied"},"finish_reason":null}]}
14367
144− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
68+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"it"},"finish_reason":null}]}
14569
146− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" change"},"finish_reason":null}]}
70+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
14771
148− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
72+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" change"},"finish_reason":null}]}
14973
150− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
74+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
15175
152− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
76+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
15377
154− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" World"},"finish_reason":null}]}
78+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
15579
156− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"!'"},"finish_reason":null}]}
80+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" World"},"finish_reason":null}]}
15781
158− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
82+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"!'"},"finish_reason":null}]}
15983
160− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
84+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
16185
162− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
86+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
16387
164− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
88+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
16589
166− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
90+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
16791
168− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"!'"},"finish_reason":null}]}
92+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
16993
170− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
94+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"!'"},"finish_reason":null}]}
17195
172− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" add"},"finish_reason":null}]}
96+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
17397
174− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
98+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" add"},"finish_reason":null}]}
17599
176− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
100+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
177101
178− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" //"},"finish_reason":null}]}
102+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
179103
180− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Greeting"},"finish_reason":null}]}
104+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '//"},"finish_reason":null}]}
181105
182− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" above"},"finish_reason":null}]}
106+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Greeting"},"finish_reason":null}]}
183107
184− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
108+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
185109
186− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" fmt"},"finish_reason":null}]}
110+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" above"},"finish_reason":null}]}
187111
188− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".Println"},"finish_reason":null}]}
112+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
189113
190− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
114+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" fmt"},"finish_reason":null}]}
191115
192− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
116+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".Println"},"finish_reason":null}]}
193117
194− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
118+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
195119
196− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
120+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
197121
198− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
122+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
199123
200− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
124+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
201125
202− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" max"},"finish_reason":null}]}
126+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
203127
204− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
128+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
205129
206− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
130+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" should"},"finish_reason":null}]}
207131
208− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
132+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
209133
210− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
134+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
211135
212− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
136+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
213137
214− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
138+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
215139
216− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
140+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
217141
218− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Possible"},"finish_reason":null}]}
142+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
219143
220− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
144+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
221145
222− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
146+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Should"},"finish_reason":null}]}
223147
224− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
148+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
225149
226− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Mult"},"finish_reason":null}]}
150+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
227151
228− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ied"},"finish_reason":null}]}
152+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
229153
230− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"it"},"finish_reason":null}]}
154+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
231155
232− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
156+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
233157
234− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" change"},"finish_reason":null}]}
158+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
235159
236− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" greeting"},"finish_reason":null}]}
160+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
237161
238− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
162+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
239163
240− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" add"},"finish_reason":null}]}
164+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
241165
242− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
166+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
243167
244− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
168+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
245169
246− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
170+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" something"},"finish_reason":null}]}
247171
248− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
172+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" like"},"finish_reason":null}]}
249173
250− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
174+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
251175
252− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
176+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Modify"},"finish_reason":null}]}
253177
254− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
178+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
255179
256− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
180+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" World"},"finish_reason":null}]}
257181
258− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" let's"},"finish_reason":null}]}
182+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
259183
260− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
184+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
261185
262− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
186+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
263187
264− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
188+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
265189
266− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Mult"},"finish_reason":null}]}
190+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" add"},"finish_reason":null}]}
267191
268− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ied"},"finish_reason":null}]}
192+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" greeting"},"finish_reason":null}]}
269193
270− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"it"},"finish_reason":null}]}
194+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
271195
272− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
196+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
273197
274− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" change"},"finish_reason":null}]}
198+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
275199
276− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" greeting"},"finish_reason":null}]}
200+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
277201
278− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
202+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
279203
280− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" add"},"finish_reason":null}]}
204+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
281205
282− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
206+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Modify"},"finish_reason":null}]}
283207
284− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
208+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
285209
286− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
210+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" World"},"finish_reason":null}]}
287211
288− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
212+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
289213
290− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
214+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
291215
292− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" length"},"finish_reason":null}]}
216+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
293217
294− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"?"},"finish_reason":null}]}
218+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
295219
296− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
220+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" add"},"finish_reason":null}]}
297221
298− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
222+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" greeting"},"finish_reason":null}]}
299223
300− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
224+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
301225
302− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" M"},"finish_reason":null}]}
226+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
303227
304− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
228+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" length"},"finish_reason":null}]}
305229
306− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
230+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"?"},"finish_reason":null}]}
307231
308− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
232+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
309233
310− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"u"},"finish_reason":null}]}
234+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
311235
312− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
236+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
313237
314− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"l"},"finish_reason":null}]}
238+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" M"},"finish_reason":null}]}
315239
316− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
240+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
317241
318− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
242+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
319243
320− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
244+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")o"},"finish_reason":null}]}
321245
322− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"i"},"finish_reason":null}]}
246+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
323247
324− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
248+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"d"},"finish_reason":null}]}
325249
326− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
250+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
327251
328− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
252+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"i"},"finish_reason":null}]}
329253
330− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"d"},"finish_reason":null}]}
254+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
331255
332− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
256+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"f"},"finish_reason":null}]}
333257
334− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"i"},"finish_reason":null}]}
258+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
335259
336− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"8"},"finish_reason":null}]}
260+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"y"},"finish_reason":null}]}
337261
338− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
262+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
339263
340− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"9"},"finish_reason":null}]}
264+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
341265
342− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":("},"finish_reason":null}]}
266+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
343267
344− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"10"},"finish_reason":null}]}
268+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
345269
346− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
270+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
347271
348− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
272+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"H"},"finish_reason":null}]}
349273
350− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
274+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"8"},"finish_reason":null}]}
351275
352− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" c"},"finish_reason":null}]}
276+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
353277
354− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"12"},"finish_reason":null}]}
278+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"9"},"finish_reason":null}]}
355279
356− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"h"},"finish_reason":null}]}
280+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"l"},"finish_reason":null}]}
357281
358− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"13"},"finish_reason":null}]}
282+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"10"},"finish_reason":null}]}
359283
360− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"a"},"finish_reason":null}]}
284+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"l"},"finish_reason":null}]}
361285
362− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"14"},"finish_reason":null}]}
286+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
363287
364− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"n"},"finish_reason":null}]}
288+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"o"},"finish_reason":null}]}
365289
366− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"15"},"finish_reason":null}]}
290+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"12"},"finish_reason":null}]}
367291
368− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"g"},"finish_reason":null}]}
292+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
369293
370− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"16"},"finish_reason":null}]}
294+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
371295
372− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
296+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
373297
374− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"17"},"finish_reason":null}]}
298+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"13"},"finish_reason":null}]}
375299
376− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
300+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"W"},"finish_reason":null}]}
377301
378− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
302+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"14"},"finish_reason":null}]}
379303
380− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"g"},"finish_reason":null}]}
304+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"o"},"finish_reason":null}]}
381305
382− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"19"},"finish_reason":null}]}
306+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"15"},"finish_reason":null}]}
383307
384− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"r"},"finish_reason":null}]}
308+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"r"},"finish_reason":null}]}
385309
386− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"20"},"finish_reason":null}]}
310+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"16"},"finish_reason":null}]}
387311
388− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
312+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"l"},"finish_reason":null}]}
389313
390− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"21"},"finish_reason":null}]}
314+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"17"},"finish_reason":null}]}
391315
392− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
316+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"d"},"finish_reason":null}]}
393317
394− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"22"},"finish_reason":null}]}
318+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
395319
396− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
320+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
397321
398− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"23"},"finish_reason":null}]}
322+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
399323
400− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"i"},"finish_reason":null}]}
324+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
401325
402− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"24"},"finish_reason":null}]}
326+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"19"},"finish_reason":null}]}
403327
404− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"n"},"finish_reason":null}]}
328+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
405329
406− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"25"},"finish_reason":null}]}
330+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"20"},"finish_reason":null}]}
407331
408− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"g"},"finish_reason":null}]}
332+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"o"},"finish_reason":null}]}
409333
410− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"26"},"finish_reason":null}]}
334+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"21"},"finish_reason":null}]}
411335
412− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
336+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
413337
414− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"27"},"finish_reason":null}]}
338+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
415339
416− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"a"},"finish_reason":null}]}
340+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
417341
418− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"28"},"finish_reason":null}]}
342+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"22"},"finish_reason":null}]}
419343
420− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"n"},"finish_reason":null}]}
344+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"H"},"finish_reason":null}]}
421345
422− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"29"},"finish_reason":null}]}
346+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"23"},"finish_reason":null}]}
423347
424− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"d"},"finish_reason":null}]}
348+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
425349
426− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"30"},"finish_reason":null}]}
350+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"24"},"finish_reason":null}]}
427351
428− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
352+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"l"},"finish_reason":null}]}
429353
430− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"31"},"finish_reason":null}]}
354+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"25"},"finish_reason":null}]}
431355
432− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"a"},"finish_reason":null}]}
356+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"l"},"finish_reason":null}]}
433357
434− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"32"},"finish_reason":null}]}
358+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"26"},"finish_reason":null}]}
435359
436− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"d"},"finish_reason":null}]}
360+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"o"},"finish_reason":null}]}
437361
438− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"33"},"finish_reason":null}]}
362+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"27"},"finish_reason":null}]}
439363
440− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"d"},"finish_reason":null}]}
364+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
441365
442− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
366+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
443367
444− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
368+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
445369
446− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"35"},"finish_reason":null}]}
370+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"28"},"finish_reason":null}]}
447371
448− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"c"},"finish_reason":null}]}
372+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"C"},"finish_reason":null}]}
449373
450− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"36"},"finish_reason":null}]}
374+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"29"},"finish_reason":null}]}
451375
452− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"o"},"finish_reason":null}]}
376+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"r"},"finish_reason":null}]}
453377
454− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"37"},"finish_reason":null}]}
378+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"30"},"finish_reason":null}]}
455379
456− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"m"},"finish_reason":null}]}
380+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"u"},"finish_reason":null}]}
457381
458− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"38"},"finish_reason":null}]}
382+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"31"},"finish_reason":null}]}
459383
460− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"m"},"finish_reason":null}]}
384+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"s"},"finish_reason":null}]}
461385
462− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"39"},"finish_reason":null}]}
386+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"32"},"finish_reason":null}]}
463387
464− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
388+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"h"},"finish_reason":null}]}
465389
466− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"40"},"finish_reason":null}]}
390+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"33"},"finish_reason":null}]}
467391
468− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"n"},"finish_reason":null}]}
392+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
469393
470− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"41"},"finish_reason":null}]}
394+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
471395
472− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
396+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
473397
474− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"42"},"finish_reason":null}]}
398+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
475399
476− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
400+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"a"},"finish_reason":null}]}
477401
478− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"43"},"finish_reason":null}]}
402+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"35"},"finish_reason":null}]}
479403
480− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"i"},"finish_reason":null}]}
404+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"n"},"finish_reason":null}]}
481405
482− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"44"},"finish_reason":null}]}
406+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"36"},"finish_reason":null}]}
483407
484− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"n"},"finish_reason":null}]}
408+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"d"},"finish_reason":null}]}
485409
486− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"45"},"finish_reason":null}]}
410+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"37"},"finish_reason":null}]}
487411
488− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
412+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
489413
490− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"46"},"finish_reason":null}]}
414+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
491415
492− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"m"},"finish_reason":null}]}
416+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
493417
494− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"47"},"finish_reason":null}]}
418+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"38"},"finish_reason":null}]}
495419
496− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"a"},"finish_reason":null}]}
420+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"a"},"finish_reason":null}]}
497421
498− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"48"},"finish_reason":null}]}
422+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"39"},"finish_reason":null}]}
499423
500− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"i"},"finish_reason":null}]}
424+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"d"},"finish_reason":null}]}
501425
502− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"49"},"finish_reason":null}]}
426+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"40"},"finish_reason":null}]}
503427
504− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"n"},"finish_reason":null}]}
428+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"d"},"finish_reason":null}]}
505429
506− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
430+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"41"},"finish_reason":null}]}
507431
508− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
432+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
509433
510− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
434+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
511435
512− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"dot"},"finish_reason":null}]}
436+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
513437
514− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
438+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"42"},"finish_reason":null}]}
515439
516− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
440+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"g"},"finish_reason":null}]}
517441
518− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"51"},"finish_reason":null}]}
442+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"43"},"finish_reason":null}]}
519443
520− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
444+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"r"},"finish_reason":null}]}
521445
522− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
446+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"44"},"finish_reason":null}]}
523447
524− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
448+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
525449
526− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"51"},"finish_reason":null}]}
450+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"45"},"finish_reason":null}]}
527451
528− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
452+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
529453
530− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" too"},"finish_reason":null}]}
454+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"46"},"finish_reason":null}]}
531455
532− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" many"},"finish_reason":null}]}
456+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
533457
534− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
458+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"47"},"finish_reason":null}]}
535459
536− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"We"},"finish_reason":null}]}
460+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"i"},"finish_reason":null}]}
537461
538− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
462+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"48"},"finish_reason":null}]}
539463
540− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c="},"finish_reason":null}]}
464+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"n"},"finish_reason":null}]}
541465
542− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
466+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"49"},"finish_reason":null}]}
543467
544− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
468+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"g"},"finish_reason":null}]}
545469
546− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Maybe"},"finish_reason":null}]}
470+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
547471
548− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" shorten"},"finish_reason":null}]}
472+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
549473
550− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
474+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
551475
552− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
476+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
553477
554− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Mult"},"finish_reason":null}]}
478+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"51"},"finish_reason":null}]}
555479
556− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ied"},"finish_reason":null}]}
480+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"c"},"finish_reason":null}]}
557481
558− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"it"},"finish_reason":null}]}
482+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"52"},"finish_reason":null}]}
559483
560− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
484+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"o"},"finish_reason":null}]}
561485
562− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" change"},"finish_reason":null}]}
486+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"53"},"finish_reason":null}]}
563487
564− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" greeting"},"finish_reason":null}]}
488+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"m"},"finish_reason":null}]}
565489
566− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
490+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"54"},"finish_reason":null}]}
567491
568− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" add"},"finish_reason":null}]}
492+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"m"},"finish_reason":null}]}
569493
570− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
494+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"55"},"finish_reason":null}]}
571495
572− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
496+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"e"},"finish_reason":null}]}
573497
574− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
498+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"56"},"finish_reason":null}]}
575499
576− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
500+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"n"},"finish_reason":null}]}
577501
578− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
502+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"57"},"finish_reason":null}]}
579503
580− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Mult"},"finish_reason":null}]}
504+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"t"},"finish_reason":null}]}
581505
582− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ied"},"finish_reason":null}]}
506+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"58"},"finish_reason":null}]}
583507
584− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"it"},"finish_reason":null}]}
508+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
585509
586− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":\""},"finish_reason":null}]}
510+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
587511
588− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
512+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
589513
590− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"10"},"finish_reason":null}]}
514+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"58"},"finish_reason":null}]}
591515
592− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
516+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003e"},"finish_reason":null}]}
593517
594− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
518+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
595519
596− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
520+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
597521
598− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
522+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"We"},"finish_reason":null}]}
599523
600− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
524+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
601525
602− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
526+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c="},"finish_reason":null}]}
603527
604− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"change"},"finish_reason":null}]}
528+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
605529
606− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
530+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
607531
608− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
532+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Perhaps"},"finish_reason":null}]}
609533
610− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"17"},"finish_reason":null}]}
534+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
611535
612− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
536+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Change"},"finish_reason":null}]}
613537
614− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
538+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
615539
616− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
540+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" World"},"finish_reason":null}]}
617541
618− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
542+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
619543
620− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
544+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
621545
622− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
546+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
623547
624− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"g"},"finish_reason":null}]}
548+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
625549
626− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"reeting"},"finish_reason":null}]}
550+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" add"},"finish_reason":null}]}
627551
628− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
552+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
629553
630− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
554+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
631555
632− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"26"},"finish_reason":null}]}
556+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
633557
634− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
558+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
635559
636− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
560+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Change"},"finish_reason":null}]}
637561
638− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
562+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
639563
640− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"27"},"finish_reason":null}]}
564+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
641565
642− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
566+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
643567
644− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
568+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
645569
646− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"and"},"finish_reason":null}]}
570+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
647571
648− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
572+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
649573
650− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
574+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
651575
652− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"30"},"finish_reason":null}]}
576+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
653577
654− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
578+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
655579
656− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
580+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
657581
658− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
582+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
659583
660− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"31"},"finish_reason":null}]}
584+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
661585
662− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
586+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"12"},"finish_reason":null}]}
663587
664− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
588+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
665589
666− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"add"},"finish_reason":null}]}
590+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
667591
668− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
592+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"13"},"finish_reason":null}]}
669593
670− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
594+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
671595
672− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
596+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" World"},"finish_reason":null}]}
673597
674− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
598+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
675599
676− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
600+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
677601
678− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
602+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
679603
680− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"35"},"finish_reason":null}]}
604+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
681605
682− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
606+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
683607
684− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
608+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
685609
686− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"comment"},"finish_reason":null}]}
610+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"19"},"finish_reason":null}]}
687611
688− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
612+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
689613
690− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
614+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
691615
692− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"42"},"finish_reason":null}]}
616+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
693617
694− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
618+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
695619
696− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
620+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
697621
698− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
622+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"21"},"finish_reason":null}]}
699623
700− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"42"},"finish_reason":null}]}
624+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
701625
702− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
626+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
703627
704− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
628+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"22"},"finish_reason":null}]}
705629
706− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
630+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
707631
708− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
632+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
709633
710− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" But"},"finish_reason":null}]}
634+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
711635
712− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" mention"},"finish_reason":null}]}
636+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
713637
714− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
638+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
715639
716− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
640+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"27"},"finish_reason":null}]}
717641
718− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"?"},"finish_reason":null}]}
642+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
719643
720− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Could"},"finish_reason":null}]}
644+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
721645
722− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
646+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"28"},"finish_reason":null}]}
723647
724− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" fine"},"finish_reason":null}]}
648+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
725649
726− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" but"},"finish_reason":null}]}
650+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
727651
728− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" maybe"},"finish_reason":null}]}
652+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
729653
730− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" include"},"finish_reason":null}]}
654+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
731655
732− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
656+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
733657
734− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
658+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"33"},"finish_reason":null}]}
735659
736− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" try"},"finish_reason":null}]}
660+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
737661
738− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
662+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
739663
740− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Mult"},"finish_reason":null}]}
664+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
741665
742− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ied"},"finish_reason":null}]}
666+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
743667
744− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"it"},"finish_reason":null}]}
668+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
745669
746− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
670+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
747671
748− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" update"},"finish_reason":null}]}
672+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
749673
750− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" greeting"},"finish_reason":null}]}
674+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
751675
752− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
676+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"37"},"finish_reason":null}]}
753677
754− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
678+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
755679
756− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
680+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
757681
758− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
682+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"38"},"finish_reason":null}]}
759683
760− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
684+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
761685
762− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
686+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" add"},"finish_reason":null}]}
763687
764− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
688+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
765689
766− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
690+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
767691
768− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
692+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
769693
770− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Mult"},"finish_reason":null}]}
694+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"41"},"finish_reason":null}]}
771695
772− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ied"},"finish_reason":null}]}
696+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
773697
774− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"it"},"finish_reason":null}]}
698+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
775699
776− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":\""},"finish_reason":null}]}
700+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"42"},"finish_reason":null}]}
777701
778− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"10"},"finish_reason":null}]}
702+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
779703
780− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
704+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
781705
782− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
706+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
783707
784− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
708+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
785709
786− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
710+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
787711
788− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
712+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"49"},"finish_reason":null}]}
789713
790− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"update"},"finish_reason":null}]}
714+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
791715
792− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
716+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
793717
794− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"17"},"finish_reason":null}]}
718+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
795719
796− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
720+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"49"},"finish_reason":null}]}
797721
798− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
722+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
799723
800− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
724+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
801725
802− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
726+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
803727
804− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
728+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
805729
806− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"g"},"finish_reason":null}]}
730+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
807731
808− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"reeting"},"finish_reason":null}]}
732+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
809733
810− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
734+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Change"},"finish_reason":null}]}
811735
812− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"26"},"finish_reason":null}]}
736+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
813737
814− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
738+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" World"},"finish_reason":null}]}
815739
816− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
740+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
817741
818− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"27"},"finish_reason":null}]}
742+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
819743
820− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
744+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
821745
822− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
746+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
823747
824− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"and"},"finish_reason":null}]}
748+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" add"},"finish_reason":null}]}
825749
826− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
750+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
827751
828− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"30"},"finish_reason":null}]}
752+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\n\n"},"finish_reason":null}]}
829753
830− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
754+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"No"},"finish_reason":null}]}
831755
832− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
756+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
833757
834− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"31"},"finish_reason":null}]}
758+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
835759
836− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
760+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" colon"},"finish_reason":null}]}
837761
838− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
762+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
839763
840− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"comment"},"finish_reason":null}]}
764+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" One"},"finish_reason":null}]}
841765
842− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
766+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
843767
844− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"38"},"finish_reason":null}]}
768+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
845769
846− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
770+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Change"},"finish_reason":null}]}
847771
848− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
772+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Hello"},"finish_reason":null}]}
849773
850− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"39"},"finish_reason":null}]}
774+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" World"},"finish_reason":null}]}
851775
852− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
776+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}]}
853777
854− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
778+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Hello"},"finish_reason":null}]}
855779
856− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"in"},"finish_reason":null}]}
780+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Crush"},"finish_reason":null}]}
857781
858− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
782+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" and"},"finish_reason":null}]}
859783
860− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"41"},"finish_reason":null}]}
784+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" add"},"finish_reason":null}]}
861785
862− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
786+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" comment"},"finish_reason":null}]}
863787
864− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
788+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
865789
866− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"42"},"finish_reason":null}]}
867−
868− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
869−
870− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
871−
872− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"main"},"finish_reason":null}]}
873−
874− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
875−
876− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
877−
878− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"49"},"finish_reason":null}]}
879−
880− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
881−
882− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
883−
884− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
885−
886− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"49"},"finish_reason":null}]}
887−
888− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
889−
890− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
891−
892− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
893−
894− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
895−
896− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Thus"},"finish_reason":null}]}
897−
898− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
899−
900− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
901−
902− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Mult"},"finish_reason":null}]}
903−
904− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ied"},"finish_reason":null}]}
905−
906− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"it"},"finish_reason":null}]}
907−
908− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
909−
910− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" update"},"finish_reason":null}]}
911−
912− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" greeting"},"finish_reason":null}]}
913−
914− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
915−
916− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" comment"},"finish_reason":null}]}
917−
918− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
919−
920− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
921−
922− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
923−
924− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Mult"},"finish_reason":null}]}
925−
926− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"ied"},"finish_reason":null}]}
927−
928− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"it"},"finish_reason":null}]}
929−
930− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":":"},"finish_reason":null}]}
931−
932− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" update"},"finish_reason":null}]}
933−
934− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" greeting"},"finish_reason":null}]}
935−
936− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" and"},"finish_reason":null}]}
937−
938− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" comment"},"finish_reason":null}]}
939−
940− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
941−
942− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" main"},"finish_reason":null}]}
943−
944− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
945−
946− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
947−
948− data: {"id":"chatcmpl-832f49f9f99073f8f6cc0028","object":"chat.completion.chunk","created":1778531378,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":55,"completion_tokens":433,"total_tokens":664,"prompt_tokens_details":{"cached_tokens":176}}}
790+ data: {"id":"chatcmpl-c33fa86d503c142b247f086f","object":"chat.completion.chunk","created":1778597382,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":43,"completion_tokens":389,"total_tokens":624,"prompt_tokens_details":{"cached_tokens":192}}}
949791
950792 data: [DONE]
951793
@@ -954,15 +796,15 @@ interactions:
954796 - text/event-stream
955797 status: 200 OK
956798 code: 200
957− duration: 784.098583ms
958−- id: 2
799+ duration: 525.624875ms
800+- id: 1
959801 request:
960802 proto: HTTP/1.1
961803 proto_major: 1
962804 proto_minor: 1
963− content_length: 34270
805+ content_length: 33723
964806 host: ""
965− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_4d3da657d04f428c92d43f15\",\"function\":{\"arguments\":\"{\\\"file_path\\\":\\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"Let me first read the main.go file to see its current content.\"},{\"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</file>\\n\",\"tool_call_id\":\"call_4d3da657d04f428c92d43f15\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
807+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
966808 headers:
967809 Accept:
968810 - application/json
@@ -979,57 +821,65 @@ interactions:
979821 content_length: -1
980822 uncompressed: true
981823 body: |+
982− data: {"id":"chatcmpl-94a5ca0c49f9490e9f7f86f2","object":"chat.completion.chunk","created":1778531387,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
824+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
983825
984− data: {"id":"chatcmpl-94a5ca0c49f9490e9f7f86f2","object":"chat.completion.chunk","created":1778531387,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_24e7ffc678a64fc58e667545","type":"function","index":0,"function":{"name":"multiedit","arguments":""}}]},"finish_reason":null}]}
826+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"Let"},"finish_reason":null}]}
985827
986− data: {"id":"chatcmpl-94a5ca0c49f9490e9f7f86f2","object":"chat.completion.chunk","created":1778531387,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"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, World!\\\")\"}],\"file_path\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\"}"}}]},"finish_reason":null}]}
828+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" me"},"finish_reason":null}]}
987829
988− data: {"id":"chatcmpl-94a5ca0c49f9490e9f7f86f2","object":"chat.completion.chunk","created":1778531387,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
830+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" first read"},"finish_reason":null}]}
989831
990− data: {"id":"chatcmpl-94a5ca0c49f9490e9f7f86f2","object":"chat.completion.chunk","created":1778531387,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":108,"completion_tokens":95,"total_tokens":7947,"prompt_tokens_details":{"cached_tokens":7744}}}
832+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" the main.go"},"finish_reason":null}]}
991833
992− data: [DONE]
834+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
993835
994− headers:
995− Content-Type:
996− - text/event-stream
997− status: 200 OK
998− code: 200
999− duration: 5.524277875s
1000−- id: 3
1001− request:
1002− proto: HTTP/1.1
1003− proto_major: 1
1004− proto_minor: 1
1005− content_length: 34943
1006− host: ""
1007− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_4d3da657d04f428c92d43f15\",\"function\":{\"arguments\":\"{\\\"file_path\\\":\\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"Let me first read the main.go file to see its current content.\"},{\"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</file>\\n\",\"tool_call_id\":\"call_4d3da657d04f428c92d43f15\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_24e7ffc678a64fc58e667545\",\"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, World!\\\\\\\")\\\"}],\\\"file_path\\\":\\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"multiedit\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"\"},{\"content\":\"<result>\\nApplied 1 of 2 edits to file: /tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go (1 edit(s) failed)\\n</result>\\n\",\"tool_call_id\":\"call_24e7ffc678a64fc58e667545\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
1008− headers:
1009− Accept:
1010− - application/json
1011− Content-Type:
1012− - application/json
1013− User-Agent:
1014− - Charm-Crush/devel (https://charm.land/crush)
1015− url: https://hyper.charm.land/v1/chat/completions
1016− method: POST
1017− response:
1018− proto: HTTP/2.0
1019− proto_major: 2
1020− proto_minor: 0
1021− content_length: -1
1022− uncompressed: true
1023− body: |+
1024− data: {"id":"chatcmpl-2b56351326cf2f0b163f32fa","object":"chat.completion.chunk","created":1778531391,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
836+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
837+
838+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" see its"},"finish_reason":null}]}
839+
840+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" current contents."},"finish_reason":null}]}
841+
842+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_283007539bbb437197ef527d","type":"function","index":0,"function":{"name":"view","arguments":""}}]},"finish_reason":null}]}
843+
844+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":""}}]},"finish_reason":null}]}
845+
846+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
847+
848+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"file_path\": \"/tmp"}}]},"finish_reason":null}]}
1025849
1026− data: {"id":"chatcmpl-2b56351326cf2f0b163f32fa","object":"chat.completion.chunk","created":1778531391,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_9d4e62e2b4fb494b9d34f994","type":"function","index":0,"function":{"name":"view","arguments":""}}]},"finish_reason":null}]}
850+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/c"}}]},"finish_reason":null}]}
1027851
1028− data: {"id":"chatcmpl-2b56351326cf2f0b163f32fa","object":"chat.completion.chunk","created":1778531391,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"file_path\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\"}"}}]},"finish_reason":null}]}
852+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush"}}]},"finish_reason":null}]}
1029853
1030− data: {"id":"chatcmpl-2b56351326cf2f0b163f32fa","object":"chat.completion.chunk","created":1778531391,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
854+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-test"}}]},"finish_reason":null}]}
1031855
1032− data: {"id":"chatcmpl-2b56351326cf2f0b163f32fa","object":"chat.completion.chunk","created":1778531391,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":187,"completion_tokens":31,"total_tokens":8026,"prompt_tokens_details":{"cached_tokens":7808}}}
856+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/Test"}}]},"finish_reason":null}]}
857+
858+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Coder"}}]},"finish_reason":null}]}
859+
860+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Agent/g"}}]},"finish_reason":null}]}
861+
862+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"lm"}}]},"finish_reason":null}]}
863+
864+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-5"}}]},"finish_reason":null}]}
865+
866+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".1/m"}}]},"finish_reason":null}]}
867+
868+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"ultied"}}]},"finish_reason":null}]}
869+
870+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"it"}}]},"finish_reason":null}]}
871+
872+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_tool"}}]},"finish_reason":null}]}
873+
874+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/main.go"}}]},"finish_reason":null}]}
875+
876+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\""}}]},"finish_reason":null}]}
877+
878+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
879+
880+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
881+
882+ data: {"id":"chatcmpl-78dc0a02c287e4423ccf7646","object":"chat.completion.chunk","created":1778597385,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":7767,"completion_tokens":45,"total_tokens":7812,"completion_tokens_details":{"reasoning_tokens":14}}}
1033883
1034884 data: [DONE]
1035885
@@ -1038,15 +888,15 @@ interactions:
1038888 - text/event-stream
1039889 status: 200 OK
1040890 code: 200
1041− duration: 3.613997833s
1042−- id: 4
891+ duration: 4.180391958s
892+- id: 2
1043893 request:
1044894 proto: HTTP/1.1
1045895 proto_major: 1
1046896 proto_minor: 1
1047− content_length: 35410
897+ content_length: 34254
1048898 host: ""
1049− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_4d3da657d04f428c92d43f15\",\"function\":{\"arguments\":\"{\\\"file_path\\\":\\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"Let me first read the main.go file to see its current content.\"},{\"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</file>\\n\",\"tool_call_id\":\"call_4d3da657d04f428c92d43f15\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_24e7ffc678a64fc58e667545\",\"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, World!\\\\\\\")\\\"}],\\\"file_path\\\":\\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"multiedit\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"\"},{\"content\":\"<result>\\nApplied 1 of 2 edits to file: /tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go (1 edit(s) failed)\\n</result>\\n\",\"tool_call_id\":\"call_24e7ffc678a64fc58e667545\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_9d4e62e2b4fb494b9d34f994\",\"function\":{\"arguments\":\"{\\\"file_path\\\":\\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"\"},{\"content\":\"<file>\\n 1|package main\\n 2|\\n 3|import \\\"fmt\\\"\\n 4|\\n 5|func main() {\\n 6|\\tfmt.Println(\\\"Hello, Crush!\\\")\\n 7|}\\n</file>\\n\",\"tool_call_id\":\"call_9d4e62e2b4fb494b9d34f994\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
899+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_283007539bbb437197ef527d\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"Let me first read the main.go file to see its current contents.\"},{\"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</file>\\n\",\"tool_call_id\":\"call_283007539bbb437197ef527d\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
1050900 headers:
1051901 Accept:
1052902 - application/json
@@ -1063,91 +913,83 @@ interactions:
1063913 content_length: -1
1064914 uncompressed: true
1065915 body: |+
1066− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
1067−
1068− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"The"},"finish_reason":null}]}
1069−
1070− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" first"},"finish_reason":null}]}
1071−
1072− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" edit"},"finish_reason":null}]}
1073−
1074− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" changed"},"finish_reason":null}]}
916+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
1075917
1076− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `\""},"finish_reason":null}]}
918+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_438a3edf38b3453e9b16eb16","type":"function","index":0,"function":{"name":"multiedit","arguments":""}}]},"finish_reason":null}]}
1077919
1078− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}
920+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":""}}]},"finish_reason":null}]}
1079921
1080− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":","},"finish_reason":null}]}
922+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
1081923
1082− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" World"},"finish_reason":null}]}
924+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"edits\": "}}]},"finish_reason":null}]}
1083925
1084− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"!\""},"finish_reason":null}]}
926+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"[{\"new_string"}}]},"finish_reason":null}]}
1085927
1086− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
928+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\": \"\\"}}]},"finish_reason":null}]}
1087929
1088− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}]}
930+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"t//"}}]},"finish_reason":null}]}
1089931
1090− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `\""},"finish_reason":null}]}
932+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" G"}}]},"finish_reason":null}]}
1091933
1092− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}
934+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"reeting"}}]},"finish_reason":null}]}
1093935
1094− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":","},"finish_reason":null}]}
936+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\n\\t"}}]},"finish_reason":null}]}
1095937
1096− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Crush"},"finish_reason":null}]}
938+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"fmt.Println"}}]},"finish_reason":null}]}
1097939
1098− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"!\""},"finish_reason":null}]}
940+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"(\\\"Hello"}}]},"finish_reason":null}]}
1099941
1100− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`,"},"finish_reason":null}]}
942+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":", Crush"}}]},"finish_reason":null}]}
1101943
1102− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" so"},"finish_reason":null}]}
944+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"!\\\")"}}]},"finish_reason":null}]}
1103945
1104− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}]}
946+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\", \"old"}}]},"finish_reason":null}]}
1105947
1106− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" second"},"finish_reason":null}]}
948+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_string\": \"\\"}}]},"finish_reason":null}]}
1107949
1108− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" edit"},"finish_reason":null}]}
950+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"t"}}]},"finish_reason":null}]}
1109951
1110− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"'s"},"finish_reason":null}]}
952+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"fmt.Println(\\\"Hello"}}]},"finish_reason":null}]}
1111953
1112− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
954+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":", World"}}]},"finish_reason":null}]}
1113955
1114− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"old"},"finish_reason":null}]}
956+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"!\\\")"}}]},"finish_reason":null}]}
1115957
1116− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_string"},"finish_reason":null}]}
958+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"}]"}}]},"finish_reason":null}]}
1117959
1118− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
960+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":", "}}]},"finish_reason":null}]}
1119961
1120− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" no"},"finish_reason":null}]}
962+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"file_path\": "}}]},"finish_reason":null}]}
1121963
1122− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" longer"},"finish_reason":null}]}
964+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"/tmp"}}]},"finish_reason":null}]}
1123965
1124− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" matched"},"finish_reason":null}]}
966+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/c"}}]},"finish_reason":null}]}
1125967
1126− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"."},"finish_reason":null}]}
968+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush"}}]},"finish_reason":null}]}
1127969
1128− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Let"},"finish_reason":null}]}
970+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-test/Test"}}]},"finish_reason":null}]}
1129971
1130− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" me"},"finish_reason":null}]}
972+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"CoderAgent"}}]},"finish_reason":null}]}
1131973
1132− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" apply"},"finish_reason":null}]}
974+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/g"}}]},"finish_reason":null}]}
1133975
1134− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}]}
976+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"lm-"}}]},"finish_reason":null}]}
1135977
1136− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" comment"},"finish_reason":null}]}
978+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"5.1/m"}}]},"finish_reason":null}]}
1137979
1138− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" edit"},"finish_reason":null}]}
980+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"ultied"}}]},"finish_reason":null}]}
1139981
1140− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" now"},"finish_reason":null}]}
982+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"it"}}]},"finish_reason":null}]}
1141983
1142− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":"},"finish_reason":null}]}
984+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_tool/main"}}]},"finish_reason":null}]}
1143985
1144− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_aa6adc90328a4e80befb2ab0","type":"function","index":0,"function":{"name":"edit","arguments":""}}]},"finish_reason":null}]}
986+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".go\""}}]},"finish_reason":null}]}
1145987
1146− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"file_path\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\",\"new_string\":\"\\t// Greeting\\n\\tfmt.Println(\\\"Hello, Crush!\\\")\",\"old_string\":\"\\tfmt.Println(\\\"Hello, Crush!\\\")\"}"}}]},"finish_reason":null}]}
988+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
1147989
1148− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
990+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
1149991
1150− data: {"id":"chatcmpl-17594a40a72eff56cb26fc6a","object":"chat.completion.chunk","created":1778531396,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":146,"completion_tokens":100,"total_tokens":8182,"prompt_tokens_details":{"cached_tokens":7936}}}
992+ data: {"id":"chatcmpl-2474e58b91064f2059f283db","object":"chat.completion.chunk","created":1778597390,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":814,"completion_tokens":76,"total_tokens":7930,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":75}}}
1151993
1152994 data: [DONE]
1153995
@@ -1156,15 +998,15 @@ interactions:
1156998 - text/event-stream
1157999 status: 200 OK
11581000 code: 200
1159− duration: 5.362671667s
1160−- id: 5
1001+ duration: 4.191709167s
1002+- id: 3
11611003 request:
11621004 proto: HTTP/1.1
11631005 proto_major: 1
11641006 proto_minor: 1
1165− content_length: 36133
1007+ content_length: 34834
11661008 host: ""
1167− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_4d3da657d04f428c92d43f15\",\"function\":{\"arguments\":\"{\\\"file_path\\\":\\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"Let me first read the main.go file to see its current content.\"},{\"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</file>\\n\",\"tool_call_id\":\"call_4d3da657d04f428c92d43f15\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_24e7ffc678a64fc58e667545\",\"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, World!\\\\\\\")\\\"}],\\\"file_path\\\":\\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"multiedit\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"\"},{\"content\":\"<result>\\nApplied 1 of 2 edits to file: /tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go (1 edit(s) failed)\\n</result>\\n\",\"tool_call_id\":\"call_24e7ffc678a64fc58e667545\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_9d4e62e2b4fb494b9d34f994\",\"function\":{\"arguments\":\"{\\\"file_path\\\":\\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"\"},{\"content\":\"<file>\\n 1|package main\\n 2|\\n 3|import \\\"fmt\\\"\\n 4|\\n 5|func main() {\\n 6|\\tfmt.Println(\\\"Hello, Crush!\\\")\\n 7|}\\n</file>\\n\",\"tool_call_id\":\"call_9d4e62e2b4fb494b9d34f994\",\"role\":\"tool\"},{\"content\":\"The first edit changed `\\\"Hello, World!\\\"` to `\\\"Hello, Crush!\\\"`, so the second edit's `old_string` no longer matched. Let me apply the comment edit now:\",\"tool_calls\":[{\"id\":\"call_aa6adc90328a4e80befb2ab0\",\"function\":{\"arguments\":\"{\\\"file_path\\\":\\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\",\\\"new_string\\\":\\\"\\\\t// Greeting\\\\n\\\\tfmt.Println(\\\\\\\"Hello, Crush!\\\\\\\")\\\",\\\"old_string\\\":\\\"\\\\tfmt.Println(\\\\\\\"Hello, Crush!\\\\\\\")\\\"}\",\"name\":\"edit\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"\"},{\"content\":\"<result>\\nContent replaced in file: /tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\n</result>\\n\",\"tool_call_id\":\"call_aa6adc90328a4e80befb2ab0\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
1009+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_283007539bbb437197ef527d\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"Let me first read the main.go file to see its current contents.\"},{\"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</file>\\n\",\"tool_call_id\":\"call_283007539bbb437197ef527d\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_438a3edf38b3453e9b16eb16\",\"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\",\"reasoning_content\":\"\"},{\"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_438a3edf38b3453e9b16eb16\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
11681010 headers:
11691011 Accept:
11701012 - application/json
@@ -1181,15 +1023,45 @@ interactions:
11811023 content_length: -1
11821024 uncompressed: true
11831025 body: |+
1184− data: {"id":"chatcmpl-865f0331bfb0dc0125e79faa","object":"chat.completion.chunk","created":1778531400,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
1026+ data: {"id":"chatcmpl-1c84d2444240539e0bffc35c","object":"chat.completion.chunk","created":1778597395,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
1027+
1028+ data: {"id":"chatcmpl-1c84d2444240539e0bffc35c","object":"chat.completion.chunk","created":1778597395,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_a17a720072ed49faa4627ce8","type":"function","index":0,"function":{"name":"view","arguments":""}}]},"finish_reason":null}]}
1029+
1030+ data: {"id":"chatcmpl-1c84d2444240539e0bffc35c","object":"chat.completion.chunk","created":1778597395,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":""}}]},"finish_reason":null}]}
1031+
1032+ data: {"id":"chatcmpl-1c84d2444240539e0bffc35c","object":"chat.completion.chunk","created":1778597395,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
1033+
1034+ data: {"id":"chatcmpl-1c84d2444240539e0bffc35c","object":"chat.completion.chunk","created":1778597395,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"file_path\": "}}]},"finish_reason":null}]}
1035+
1036+ data: {"id":"chatcmpl-1c84d2444240539e0bffc35c","object":"chat.completion.chunk","created":1778597395,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"/tmp/c"}}]},"finish_reason":null}]}
11851037
1186− data: {"id":"chatcmpl-865f0331bfb0dc0125e79faa","object":"chat.completion.chunk","created":1778531400,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_ca8435944b9f42279725cba9","type":"function","index":0,"function":{"name":"view","arguments":""}}]},"finish_reason":null}]}
1038+ data: {"id":"chatcmpl-1c84d2444240539e0bffc35c","object":"chat.completion.chunk","created":1778597395,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush-test"}}]},"finish_reason":null}]}
11871039
1188− data: {"id":"chatcmpl-865f0331bfb0dc0125e79faa","object":"chat.completion.chunk","created":1778531400,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"file_path\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\"}"}}]},"finish_reason":null}]}
1040+ data: {"id":"chatcmpl-1c84d2444240539e0bffc35c","object":"chat.completion.chunk","created":1778597395,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/Test"}}]},"finish_reason":null}]}
11891041
1190− data: {"id":"chatcmpl-865f0331bfb0dc0125e79faa","object":"chat.completion.chunk","created":1778531400,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
1042+ data: {"id":"chatcmpl-1c84d2444240539e0bffc35c","object":"chat.completion.chunk","created":1778597395,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Coder"}}]},"finish_reason":null}]}
11911043
1192− data: {"id":"chatcmpl-865f0331bfb0dc0125e79faa","object":"chat.completion.chunk","created":1778531400,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":155,"completion_tokens":31,"total_tokens":8250,"prompt_tokens_details":{"cached_tokens":8064}}}
1044+ data: {"id":"chatcmpl-1c84d2444240539e0bffc35c","object":"chat.completion.chunk","created":1778597395,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Agent/g"}}]},"finish_reason":null}]}
1045+
1046+ data: {"id":"chatcmpl-1c84d2444240539e0bffc35c","object":"chat.completion.chunk","created":1778597395,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"lm-5"}}]},"finish_reason":null}]}
1047+
1048+ data: {"id":"chatcmpl-1c84d2444240539e0bffc35c","object":"chat.completion.chunk","created":1778597395,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".1/m"}}]},"finish_reason":null}]}
1049+
1050+ data: {"id":"chatcmpl-1c84d2444240539e0bffc35c","object":"chat.completion.chunk","created":1778597395,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"ultied"}}]},"finish_reason":null}]}
1051+
1052+ data: {"id":"chatcmpl-1c84d2444240539e0bffc35c","object":"chat.completion.chunk","created":1778597395,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"it"}}]},"finish_reason":null}]}
1053+
1054+ data: {"id":"chatcmpl-1c84d2444240539e0bffc35c","object":"chat.completion.chunk","created":1778597395,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_tool"}}]},"finish_reason":null}]}
1055+
1056+ data: {"id":"chatcmpl-1c84d2444240539e0bffc35c","object":"chat.completion.chunk","created":1778597395,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/main.go"}}]},"finish_reason":null}]}
1057+
1058+ data: {"id":"chatcmpl-1c84d2444240539e0bffc35c","object":"chat.completion.chunk","created":1778597395,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\""}}]},"finish_reason":null}]}
1059+
1060+ data: {"id":"chatcmpl-1c84d2444240539e0bffc35c","object":"chat.completion.chunk","created":1778597395,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
1061+
1062+ data: {"id":"chatcmpl-1c84d2444240539e0bffc35c","object":"chat.completion.chunk","created":1778597395,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
1063+
1064+ data: {"id":"chatcmpl-1c84d2444240539e0bffc35c","object":"chat.completion.chunk","created":1778597395,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":225,"completion_tokens":31,"total_tokens":8000,"prompt_tokens_details":{"cached_tokens":7744},"completion_tokens_details":{"reasoning_tokens":30}}}
11931065
11941066 data: [DONE]
11951067
@@ -1198,15 +1070,15 @@ interactions:
11981070 - text/event-stream
11991071 status: 200 OK
12001072 code: 200
1201− duration: 3.595254708s
1202−- id: 6
1073+ duration: 3.261922667s
1074+- id: 4
12031075 request:
12041076 proto: HTTP/1.1
12051077 proto_major: 1
12061078 proto_minor: 1
1207− content_length: 36622
1079+ content_length: 35324
12081080 host: ""
1209− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_4d3da657d04f428c92d43f15\",\"function\":{\"arguments\":\"{\\\"file_path\\\":\\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"Let me first read the main.go file to see its current content.\"},{\"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</file>\\n\",\"tool_call_id\":\"call_4d3da657d04f428c92d43f15\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_24e7ffc678a64fc58e667545\",\"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, World!\\\\\\\")\\\"}],\\\"file_path\\\":\\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"multiedit\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"\"},{\"content\":\"<result>\\nApplied 1 of 2 edits to file: /tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go (1 edit(s) failed)\\n</result>\\n\",\"tool_call_id\":\"call_24e7ffc678a64fc58e667545\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_9d4e62e2b4fb494b9d34f994\",\"function\":{\"arguments\":\"{\\\"file_path\\\":\\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"\"},{\"content\":\"<file>\\n 1|package main\\n 2|\\n 3|import \\\"fmt\\\"\\n 4|\\n 5|func main() {\\n 6|\\tfmt.Println(\\\"Hello, Crush!\\\")\\n 7|}\\n</file>\\n\",\"tool_call_id\":\"call_9d4e62e2b4fb494b9d34f994\",\"role\":\"tool\"},{\"content\":\"The first edit changed `\\\"Hello, World!\\\"` to `\\\"Hello, Crush!\\\"`, so the second edit's `old_string` no longer matched. Let me apply the comment edit now:\",\"tool_calls\":[{\"id\":\"call_aa6adc90328a4e80befb2ab0\",\"function\":{\"arguments\":\"{\\\"file_path\\\":\\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\",\\\"new_string\\\":\\\"\\\\t// Greeting\\\\n\\\\tfmt.Println(\\\\\\\"Hello, Crush!\\\\\\\")\\\",\\\"old_string\\\":\\\"\\\\tfmt.Println(\\\\\\\"Hello, Crush!\\\\\\\")\\\"}\",\"name\":\"edit\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"\"},{\"content\":\"<result>\\nContent replaced in file: /tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\n</result>\\n\",\"tool_call_id\":\"call_aa6adc90328a4e80befb2ab0\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_ca8435944b9f42279725cba9\",\"function\":{\"arguments\":\"{\\\"file_path\\\":\\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"\"},{\"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</file>\\n\",\"tool_call_id\":\"call_ca8435944b9f42279725cba9\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
1081+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_283007539bbb437197ef527d\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"Let me first read the main.go file to see its current contents.\"},{\"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</file>\\n\",\"tool_call_id\":\"call_283007539bbb437197ef527d\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_438a3edf38b3453e9b16eb16\",\"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\",\"reasoning_content\":\"\"},{\"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_438a3edf38b3453e9b16eb16\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_a17a720072ed49faa4627ce8\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/multiedit_tool/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"\"},{\"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</file>\\n\",\"tool_call_id\":\"call_a17a720072ed49faa4627ce8\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
12101082 headers:
12111083 Accept:
12121084 - application/json
@@ -1223,123 +1095,43 @@ interactions:
12231095 content_length: -1
12241096 uncompressed: true
12251097 body: |+
1226− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
1227−
1228− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Done"},"finish_reason":null}]}
1229−
1230− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"."},"finish_reason":null}]}
1231−
1232− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" The"},"finish_reason":null}]}
1233−
1234− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" mult"},"finish_reason":null}]}
1235−
1236− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ied"},"finish_reason":null}]}
1237−
1238− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"it"},"finish_reason":null}]}
1239−
1240− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" applied"},"finish_reason":null}]}
1241−
1242− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}]}
1243−
1244− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" string"},"finish_reason":null}]}
1245−
1246− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" change"},"finish_reason":null}]}
1247−
1248− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" first"},"finish_reason":null}]}
1249−
1250− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":","},"finish_reason":null}]}
1251−
1252− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" which"},"finish_reason":null}]}
1253−
1254− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" made"},"finish_reason":null}]}
1255−
1256− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}]}
1257−
1258− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" second"},"finish_reason":null}]}
1259−
1260− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" edit"},"finish_reason":null}]}
1261−
1262− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"'s"},"finish_reason":null}]}
1263−
1264− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
1265−
1266− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"old"},"finish_reason":null}]}
1267−
1268− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_string"},"finish_reason":null}]}
1269−
1270− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
1271−
1272− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" stale"},"finish_reason":null}]}
1273−
1274− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"."},"finish_reason":null}]}
1275−
1276− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Applied"},"finish_reason":null}]}
1277−
1278− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}]}
1279−
1280− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" comment"},"finish_reason":null}]}
1281−
1282− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" via"},"finish_reason":null}]}
1283−
1284− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" a"},"finish_reason":null}]}
1285−
1286− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" separate"},"finish_reason":null}]}
1287−
1288− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" edit"},"finish_reason":null}]}
1289−
1290− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"."},"finish_reason":null}]}
1291−
1292− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Final"},"finish_reason":null}]}
1293−
1294− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" result"},"finish_reason":null}]}
1295−
1296− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":\n\n"},"finish_reason":null}]}
1297−
1298− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"```"},"finish_reason":null}]}
1299−
1300− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"go"},"finish_reason":null}]}
1301−
1302− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"\n"},"finish_reason":null}]}
1303−
1304− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"func"},"finish_reason":null}]}
1305−
1306− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" main"},"finish_reason":null}]}
1098+ data: {"id":"chatcmpl-b0eeafb8638d7348f03ba44f","object":"chat.completion.chunk","created":1778597397,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
13071099
1308− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"()"},"finish_reason":null}]}
1100+ data: {"id":"chatcmpl-b0eeafb8638d7348f03ba44f","object":"chat.completion.chunk","created":1778597397,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Done"},"finish_reason":null}]}
13091101
1310− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" {\n"},"finish_reason":null}]}
1102+ data: {"id":"chatcmpl-b0eeafb8638d7348f03ba44f","object":"chat.completion.chunk","created":1778597397,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" —"},"finish_reason":null}]}
13111103
1312− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"\t"},"finish_reason":null}]}
1104+ data: {"id":"chatcmpl-b0eeafb8638d7348f03ba44f","object":"chat.completion.chunk","created":1778597397,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `'"},"finish_reason":null}]}
13131105
1314− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"//"},"finish_reason":null}]}
1106+ data: {"id":"chatcmpl-b0eeafb8638d7348f03ba44f","object":"chat.completion.chunk","created":1778597397,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}
13151107
1316− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" G"},"finish_reason":null}]}
1108+ data: {"id":"chatcmpl-b0eeafb8638d7348f03ba44f","object":"chat.completion.chunk","created":1778597397,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":", World"},"finish_reason":null}]}
13171109
1318− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"reeting"},"finish_reason":null}]}
1110+ data: {"id":"chatcmpl-b0eeafb8638d7348f03ba44f","object":"chat.completion.chunk","created":1778597397,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"!'` changed"},"finish_reason":null}]}
13191111
1320− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"\n"},"finish_reason":null}]}
1112+ data: {"id":"chatcmpl-b0eeafb8638d7348f03ba44f","object":"chat.completion.chunk","created":1778597397,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" to `'"},"finish_reason":null}]}
13211113
1322− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"\tfmt"},"finish_reason":null}]}
1114+ data: {"id":"chatcmpl-b0eeafb8638d7348f03ba44f","object":"chat.completion.chunk","created":1778597397,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Hello, Crush"},"finish_reason":null}]}
13231115
1324− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".Println"},"finish_reason":null}]}
1116+ data: {"id":"chatcmpl-b0eeafb8638d7348f03ba44f","object":"chat.completion.chunk","created":1778597397,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"!'` and `"},"finish_reason":null}]}
13251117
1326− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"(\""},"finish_reason":null}]}
1118+ data: {"id":"chatcmpl-b0eeafb8638d7348f03ba44f","object":"chat.completion.chunk","created":1778597397,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"// G"},"finish_reason":null}]}
13271119
1328− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}
1120+ data: {"id":"chatcmpl-b0eeafb8638d7348f03ba44f","object":"chat.completion.chunk","created":1778597397,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"reeting"},"finish_reason":null}]}
13291121
1330− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":","},"finish_reason":null}]}
1122+ data: {"id":"chatcmpl-b0eeafb8638d7348f03ba44f","object":"chat.completion.chunk","created":1778597397,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` comment added"},"finish_reason":null}]}
13311123
1332− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Crush"},"finish_reason":null}]}
1124+ data: {"id":"chatcmpl-b0eeafb8638d7348f03ba44f","object":"chat.completion.chunk","created":1778597397,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" above"},"finish_reason":null}]}
13331125
1334− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"!\")\n"},"finish_reason":null}]}
1126+ data: {"id":"chatcmpl-b0eeafb8638d7348f03ba44f","object":"chat.completion.chunk","created":1778597397,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
13351127
1336− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"}\n"},"finish_reason":null}]}
1128+ data: {"id":"chatcmpl-b0eeafb8638d7348f03ba44f","object":"chat.completion.chunk","created":1778597397,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"fmt.Println"},"finish_reason":null}]}
13371129
1338− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"```"},"finish_reason":null}]}
1130+ data: {"id":"chatcmpl-b0eeafb8638d7348f03ba44f","object":"chat.completion.chunk","created":1778597397,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`."},"finish_reason":null}]}
13391131
1340− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
1132+ data: {"id":"chatcmpl-b0eeafb8638d7348f03ba44f","object":"chat.completion.chunk","created":1778597397,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
13411133
1342− data: {"id":"chatcmpl-3f7349b4a0903fe63873d0b6","object":"chat.completion.chunk","created":1778531404,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":123,"completion_tokens":58,"total_tokens":8373,"prompt_tokens_details":{"cached_tokens":8192}}}
1134+ data: {"id":"chatcmpl-b0eeafb8638d7348f03ba44f","object":"chat.completion.chunk","created":1778597397,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":8065,"completion_tokens":31,"total_tokens":8096,"completion_tokens_details":{"reasoning_tokens":30}}}
13431135
13441136 data: [DONE]
13451137
@@ -1348,4 +1140,4 @@ interactions:
13481140 - text/event-stream
13491141 status: 200 OK
13501142 code: 200
1351− duration: 4.720450833s
1143+ duration: 1.715269625s
internal/agent/testdata/TestCoderAgent/glm-5.1/parallel_tool_calls.yaml+183−395
@@ -25,463 +25,249 @@ interactions:
2525 content_length: -1
2626 uncompressed: true
2727 body: |+
28− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
2929
30− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"We"},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"User"},"finish_reason":null}]}
3131
32− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" says"},"finish_reason":null}]}
3333
34− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
3535
36− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" generate"},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
3737
38− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
3939
40− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
4141
42− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
4343
44− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
4545
46− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"max"},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
4747
48− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
4949
50− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
50+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
5151
52− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
52+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
5353
54− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
54+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":\n\n"},"finish_reason":null}]}
5555
56− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summar"},"finish_reason":null}]}
56+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
5757
58− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"izing"},"finish_reason":null}]}
58+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
5959
60− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
60+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
6161
62− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
62+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" find"},"finish_reason":null}]}
6363
64− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" request"},"finish_reason":null}]}
64+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" all"},"finish_reason":null}]}
6565
66− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
66+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
6767
68− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Language"},"finish_reason":null}]}
68+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
6969
70− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
70+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
7171
72− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" English"},"finish_reason":null}]}
72+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
7373
74− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
74+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" use"},"finish_reason":null}]}
7575
76− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" The"},"finish_reason":null}]}
76+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ls"},"finish_reason":null}]}
7777
78− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" request"},"finish_reason":null}]}
78+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ..."},"finish_reason":null}]}
7979
80− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
80+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" run"},"finish_reason":null}]}
8181
82− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
82+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" both"},"finish_reason":null}]}
8383
84− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
84+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" tool"},"finish_reason":null}]}
8585
86− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
86+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" calls"},"finish_reason":null}]}
8787
88− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
88+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
8989
90− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
90+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" parallel"},"finish_reason":null}]}
9191
92− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
92+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"\n\n"},"finish_reason":null}]}
9393
94− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
94+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"We"},"finish_reason":null}]}
9595
96− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
96+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
9797
98− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
98+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
9999
100− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
100+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" create"},"finish_reason":null}]}
101101
102− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" use"},"finish_reason":null}]}
102+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
103103
104− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
104+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
105105
106− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
106+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
107107
108− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" find"},"finish_reason":null}]}
108+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c"},"finish_reason":null}]}
109109
110− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" all"},"finish_reason":null}]}
110+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
111111
112− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
112+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
113113
114− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
114+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
115115
116− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
116+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
117117
118− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
118+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
119119
120− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" use"},"finish_reason":null}]}
120+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
121121
122− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ls"},"finish_reason":null}]}
122+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
123123
124− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
124+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
125125
126− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" list"},"finish_reason":null}]}
126+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
127127
128− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
128+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Summ"},"finish_reason":null}]}
129129
130− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" current"},"finish_reason":null}]}
130+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ar"},"finish_reason":null}]}
131131
132− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
132+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ize"},"finish_reason":null}]}
133133
134− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
134+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
135135
136− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" it"},"finish_reason":null}]}
136+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
137137
138− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" is"},"finish_reason":null}]}
138+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Parallel"},"finish_reason":null}]}
139139
140− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" very"},"finish_reason":null}]}
140+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
141141
142− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" important"},"finish_reason":null}]}
142+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
143143
144− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
144+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
145145
146− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" you"},"finish_reason":null}]}
146+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
147147
148− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" run"},"finish_reason":null}]}
148+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
149149
150− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" both"},"finish_reason":null}]}
150+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
151151
152− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" tool"},"finish_reason":null}]}
152+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ls"},"finish_reason":null}]}
153153
154− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" calls"},"finish_reason":null}]}
154+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" listing"},"finish_reason":null}]}
155155
156− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
156+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
157157
158− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" parallel"},"finish_reason":null}]}
158+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
159159
160− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\".\n\n"},"finish_reason":null}]}
160+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" maybe"},"finish_reason":null}]}
161161
162− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"So"},"finish_reason":null}]}
162+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
163163
164− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
164+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
165165
166− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" could"},"finish_reason":null}]}
166+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Parallel"},"finish_reason":null}]}
167167
168− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
168+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
169169
170− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
170+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
171171
172− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
172+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
173173
174− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Parallel"},"finish_reason":null}]}
174+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
175175
176− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
176+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
177177
178− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
178+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
179179
180− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
180+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
181181
182− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
182+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" listing"},"finish_reason":null}]}
183183
184− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
184+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
185185
186− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
186+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
187187
188− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ls"},"finish_reason":null}]}
188+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
189189
190− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
190+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
191191
192− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
192+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
193193
194− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Check"},"finish_reason":null}]}
194+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
195195
196− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" length"},"finish_reason":null}]}
196+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
197197
198− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
198+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
199199
200− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
200+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Parallel"},"finish_reason":null}]}
201201
202− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
202+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
203203
204− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
204+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
205205
206− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
206+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
207207
208− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Parallel"},"finish_reason":null}]}
208+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
209209
210− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
210+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
211211
212− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
212+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
213213
214− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
214+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
215215
216− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"go"},"finish_reason":null}]}
216+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" listing"},"finish_reason":null}]}
217217
218− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" files"},"finish_reason":null}]}
218+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
219219
220− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
220+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
221221
222− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ls"},"finish_reason":null}]}
222+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
223223
224− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" directory"},"finish_reason":null}]}
224+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"48"},"finish_reason":null}]}
225225
226− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
226+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
227227
228− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
228+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
229229
230− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
230+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"including"},"finish_reason":null}]}
231231
232− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
232+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" spaces"},"finish_reason":null}]}
233233
234− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" P"},"finish_reason":null}]}
234+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
235235
236− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
236+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
237237
238− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
238+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
239239
240− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
240+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Return"},"finish_reason":null}]}
241241
242− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
242+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" just"},"finish_reason":null}]}
243243
244− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
244+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
245245
246− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
246+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
247247
248− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
248+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
249249
250− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
250+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Parallel"},"finish_reason":null}]}
251251
252− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
252+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" glob"},"finish_reason":null}]}
253253
254− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" l"},"finish_reason":null}]}
254+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" for"},"finish_reason":null}]}
255255
256− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
256+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" ."},"finish_reason":null}]}
257257
258− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" l"},"finish_reason":null}]}
258+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"go"},"finish_reason":null}]}
259259
260− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
260+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" files"},"finish_reason":null}]}
261261
262− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" e"},"finish_reason":null}]}
262+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" and"},"finish_reason":null}]}
263263
264− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
264+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" directory"},"finish_reason":null}]}
265265
266− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" l"},"finish_reason":null}]}
266+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" listing"},"finish_reason":null}]}
267267
268− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"8"},"finish_reason":null}]}
268+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
269269
270− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
271−
272− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"9"},"finish_reason":null}]}
273−
274− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" g"},"finish_reason":null}]}
275−
276− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"10"},"finish_reason":null}]}
277−
278− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" l"},"finish_reason":null}]}
279−
280− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
281−
282− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" o"},"finish_reason":null}]}
283−
284− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"12"},"finish_reason":null}]}
285−
286− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" b"},"finish_reason":null}]}
287−
288− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"13"},"finish_reason":null}]}
289−
290− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
291−
292− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"14"},"finish_reason":null}]}
293−
294− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" f"},"finish_reason":null}]}
295−
296− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"15"},"finish_reason":null}]}
297−
298− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" o"},"finish_reason":null}]}
299−
300− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"16"},"finish_reason":null}]}
301−
302− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
303−
304− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"17"},"finish_reason":null}]}
305−
306− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
307−
308− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
309−
310− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ."},"finish_reason":null}]}
311−
312− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"19"},"finish_reason":null}]}
313−
314− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" g"},"finish_reason":null}]}
315−
316− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"20"},"finish_reason":null}]}
317−
318− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" o"},"finish_reason":null}]}
319−
320− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"21"},"finish_reason":null}]}
321−
322− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
323−
324− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"22"},"finish_reason":null}]}
325−
326− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" f"},"finish_reason":null}]}
327−
328− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"23"},"finish_reason":null}]}
329−
330− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" i"},"finish_reason":null}]}
331−
332− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"24"},"finish_reason":null}]}
333−
334− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" l"},"finish_reason":null}]}
335−
336− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"25"},"finish_reason":null}]}
337−
338− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" e"},"finish_reason":null}]}
339−
340− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"26"},"finish_reason":null}]}
341−
342− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" s"},"finish_reason":null}]}
343−
344− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"27"},"finish_reason":null}]}
345−
346− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
347−
348− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"28"},"finish_reason":null}]}
349−
350− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
351−
352− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"29"},"finish_reason":null}]}
353−
354− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" n"},"finish_reason":null}]}
355−
356− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"30"},"finish_reason":null}]}
357−
358− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" d"},"finish_reason":null}]}
359−
360− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"31"},"finish_reason":null}]}
361−
362− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
363−
364− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"32"},"finish_reason":null}]}
365−
366− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" l"},"finish_reason":null}]}
367−
368− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"33"},"finish_reason":null}]}
369−
370− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" s"},"finish_reason":null}]}
371−
372− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
373−
374− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
375−
376− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"35"},"finish_reason":null}]}
377−
378− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" d"},"finish_reason":null}]}
379−
380− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"36"},"finish_reason":null}]}
381−
382− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" i"},"finish_reason":null}]}
383−
384− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"37"},"finish_reason":null}]}
385−
386− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
387−
388− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"38"},"finish_reason":null}]}
389−
390− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" e"},"finish_reason":null}]}
391−
392− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"39"},"finish_reason":null}]}
393−
394− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" c"},"finish_reason":null}]}
395−
396− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"40"},"finish_reason":null}]}
397−
398− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" t"},"finish_reason":null}]}
399−
400− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"41"},"finish_reason":null}]}
401−
402− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" o"},"finish_reason":null}]}
403−
404− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"42"},"finish_reason":null}]}
405−
406− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
407−
408− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"43"},"finish_reason":null}]}
409−
410− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" y"},"finish_reason":null}]}
411−
412− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"44"},"finish_reason":null}]}
413−
414− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
415−
416− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
417−
418− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
419−
420− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"44"},"finish_reason":null}]}
421−
422− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
423−
424− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
425−
426− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" within"},"finish_reason":null}]}
427−
428− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" limit"},"finish_reason":null}]}
429−
430− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
431−
432− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
433−
434− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
435−
436− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Make"},"finish_reason":null}]}
437−
438− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" sure"},"finish_reason":null}]}
439−
440− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
441−
442− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
443−
444− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
445−
446− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
447−
448− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
449−
450− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
451−
452− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" One"},"finish_reason":null}]}
453−
454− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
455−
456− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
457−
458− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Return"},"finish_reason":null}]}
459−
460− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
461−
462− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
463−
464− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Parallel"},"finish_reason":null}]}
465−
466− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" glob"},"finish_reason":null}]}
467−
468− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" for"},"finish_reason":null}]}
469−
470− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" ."},"finish_reason":null}]}
471−
472− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"go"},"finish_reason":null}]}
473−
474− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" files"},"finish_reason":null}]}
475−
476− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" and"},"finish_reason":null}]}
477−
478− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" ls"},"finish_reason":null}]}
479−
480− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" directory"},"finish_reason":null}]}
481−
482− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
483−
484− data: {"id":"chatcmpl-2b5a95c5ba634a316e2faf63","object":"chat.completion.chunk","created":1778531430,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":40,"completion_tokens":236,"total_tokens":468,"prompt_tokens_details":{"cached_tokens":192}}}
270+ data: {"id":"chatcmpl-3572456ad6c6fd07d5c164cc","object":"chat.completion.chunk","created":1778597427,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":40,"completion_tokens":129,"total_tokens":361,"prompt_tokens_details":{"cached_tokens":192}}}
485271
486272 data: [DONE]
487273
@@ -490,15 +276,15 @@ interactions:
490276 - text/event-stream
491277 status: 200 OK
492278 code: 200
493− duration: 761.046042ms
279+ duration: 473.337ms
494280- id: 1
495281 request:
496282 proto: HTTP/1.1
497283 proto_major: 1
498284 proto_minor: 1
499− content_length: 33752
285+ content_length: 33734
500286 host: ""
501− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
502288 headers:
503289 Accept:
504290 - application/json
@@ -515,43 +301,59 @@ interactions:
515301 content_length: -1
516302 uncompressed: true
517303 body: |+
518− data: {"id":"chatcmpl-6cc52899928594e41dc84a79","object":"chat.completion.chunk","created":1778531433,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
304+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
519305
520− data: {"id":"chatcmpl-6cc52899928594e41dc84a79","object":"chat.completion.chunk","created":1778531433,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
306+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
521307
522− data: {"id":"chatcmpl-6cc52899928594e41dc84a79","object":"chat.completion.chunk","created":1778531433,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
308+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
523309
524− data: {"id":"chatcmpl-6cc52899928594e41dc84a79","object":"chat.completion.chunk","created":1778531433,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" wants"},"finish_reason":null}]}
310+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" wants me"},"finish_reason":null}]}
525311
526− data: {"id":"chatcmpl-6cc52899928594e41dc84a79","object":"chat.completion.chunk","created":1778531433,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" me"},"finish_reason":null}]}
312+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" to run both"},"finish_reason":null}]}
527313
528− data: {"id":"chatcmpl-6cc52899928594e41dc84a79","object":"chat.completion.chunk","created":1778531433,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
314+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" tools"},"finish_reason":null}]}
529315
530− data: {"id":"chatcmpl-6cc52899928594e41dc84a79","object":"chat.completion.chunk","created":1778531433,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" run"},"finish_reason":null}]}
316+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" in parallel -"},"finish_reason":null}]}
531317
532− data: {"id":"chatcmpl-6cc52899928594e41dc84a79","object":"chat.completion.chunk","created":1778531433,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
318+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" glob"},"finish_reason":null}]}
533319
534− data: {"id":"chatcmpl-6cc52899928594e41dc84a79","object":"chat.completion.chunk","created":1778531433,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
320+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
535321
536− data: {"id":"chatcmpl-6cc52899928594e41dc84a79","object":"chat.completion.chunk","created":1778531433,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" ls"},"finish_reason":null}]}
322+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" find ."},"finish_reason":null}]}
537323
538− data: {"id":"chatcmpl-6cc52899928594e41dc84a79","object":"chat.completion.chunk","created":1778531433,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
324+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"go files"},"finish_reason":null}]}
539325
540− data: {"id":"chatcmpl-6cc52899928594e41dc84a79","object":"chat.completion.chunk","created":1778531433,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" parallel"},"finish_reason":null}]}
326+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" and ls"},"finish_reason":null}]}
541327
542− data: {"id":"chatcmpl-6cc52899928594e41dc84a79","object":"chat.completion.chunk","created":1778531433,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
328+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" to list"},"finish_reason":null}]}
543329
544− data: {"id":"chatcmpl-6cc52899928594e41dc84a79","object":"chat.completion.chunk","created":1778531433,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_736c2d0af2c04fa8939d09bc","type":"function","index":0,"function":{"name":"glob","arguments":""}}]},"finish_reason":null}]}
330+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" the current directory"},"finish_reason":null}]}
545331
546− data: {"id":"chatcmpl-6cc52899928594e41dc84a79","object":"chat.completion.chunk","created":1778531433,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"pattern\":\"**/*.go\"}"}}]},"finish_reason":null}]}
332+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
547333
548− data: {"id":"chatcmpl-6cc52899928594e41dc84a79","object":"chat.completion.chunk","created":1778531433,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_784cdf29f96c45e7956bdf41","type":"function","index":1,"function":{"name":"ls","arguments":""}}]},"finish_reason":null}]}
334+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_db9a486cd35645f3b90ee531","type":"function","index":0,"function":{"name":"glob","arguments":""}}]},"finish_reason":null}]}
549335
550− data: {"id":"chatcmpl-6cc52899928594e41dc84a79","object":"chat.completion.chunk","created":1778531433,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"{}"}}]},"finish_reason":null}]}
336+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":""}}]},"finish_reason":null}]}
551337
552− data: {"id":"chatcmpl-6cc52899928594e41dc84a79","object":"chat.completion.chunk","created":1778531433,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
338+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
553339
554− data: {"id":"chatcmpl-6cc52899928594e41dc84a79","object":"chat.completion.chunk","created":1778531433,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":720,"completion_tokens":28,"total_tokens":7788,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":12}}}
340+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"pattern\": "}}]},"finish_reason":null}]}
341+
342+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"**/*."}}]},"finish_reason":null}]}
343+
344+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"go\""}}]},"finish_reason":null}]}
345+
346+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
347+
348+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_76a6b00364c747e69ca63e2e","type":"function","index":1,"function":{"name":"ls","arguments":""}}]},"finish_reason":null}]}
349+
350+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":""}}]},"finish_reason":null}]}
351+
352+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"{}"}}]},"finish_reason":null}]}
353+
354+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
355+
356+ data: {"id":"chatcmpl-b7b4b066f9d904b86ddbbd70","object":"chat.completion.chunk","created":1778597431,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":722,"completion_tokens":41,"total_tokens":7803,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":25}}}
555357
556358 data: [DONE]
557359
@@ -560,15 +362,15 @@ interactions:
560362 - text/event-stream
561363 status: 200 OK
562364 code: 200
563− duration: 3.764589584s
365+ duration: 3.781553792s
564366- id: 2
565367 request:
566368 proto: HTTP/1.1
567369 proto_major: 1
568370 proto_minor: 1
569− content_length: 34391
371+ content_length: 34435
570372 host: ""
571− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_736c2d0af2c04fa8939d09bc\",\"function\":{\"arguments\":\"{\\\"pattern\\\":\\\"**/*.go\\\"}\",\"name\":\"glob\"},\"type\":\"function\"},{\"id\":\"call_784cdf29f96c45e7956bdf41\",\"function\":{\"arguments\":\"{}\",\"name\":\"ls\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"The user wants me to run glob and ls in parallel.\"},{\"content\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/parallel_tool_calls/main.go\",\"tool_call_id\":\"call_736c2d0af2c04fa8939d09bc\",\"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_784cdf29f96c45e7956bdf41\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
373+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_db9a486cd35645f3b90ee531\",\"function\":{\"arguments\":\"{\\\"pattern\\\": \\\"**/*.go\\\"}\",\"name\":\"glob\"},\"type\":\"function\"},{\"id\":\"call_76a6b00364c747e69ca63e2e\",\"function\":{\"arguments\":\"{}\",\"name\":\"ls\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"The user wants me to run both tools in parallel - glob to find .go files and ls to list the current directory.\"},{\"content\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/parallel_tool_calls/main.go\",\"tool_call_id\":\"call_db9a486cd35645f3b90ee531\",\"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_76a6b00364c747e69ca63e2e\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
572374 headers:
573375 Accept:
574376 - application/json
@@ -585,57 +387,43 @@ interactions:
585387 content_length: -1
586388 uncompressed: true
587389 body: |+
588− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
589−
590− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}]}
591−
592− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" **"},"finish_reason":null}]}
593−
594− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Go"},"finish_reason":null}]}
595−
596− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" files"},"finish_reason":null}]}
597−
598− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" found"},"finish_reason":null}]}
599−
600− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"**:"},"finish_reason":null}]}
601−
602− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
390+ data: {"id":"chatcmpl-48130e9f88db9c4a09fc17b0","object":"chat.completion.chunk","created":1778597435,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
603391
604− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"main"},"finish_reason":null}]}
392+ data: {"id":"chatcmpl-48130e9f88db9c4a09fc17b0","object":"chat.completion.chunk","created":1778597435,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"**"},"finish_reason":null}]}
605393
606− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
394+ data: {"id":"chatcmpl-48130e9f88db9c4a09fc17b0","object":"chat.completion.chunk","created":1778597435,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"G"},"finish_reason":null}]}
607395
608− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`\n"},"finish_reason":null}]}
396+ data: {"id":"chatcmpl-48130e9f88db9c4a09fc17b0","object":"chat.completion.chunk","created":1778597435,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"lob results"},"finish_reason":null}]}
609397
610− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}]}
398+ data: {"id":"chatcmpl-48130e9f88db9c4a09fc17b0","object":"chat.completion.chunk","created":1778597435,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"**: Found"},"finish_reason":null}]}
611399
612− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" **"},"finish_reason":null}]}
400+ data: {"id":"chatcmpl-48130e9f88db9c4a09fc17b0","object":"chat.completion.chunk","created":1778597435,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" 1 `."},"finish_reason":null}]}
613401
614− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Directory"},"finish_reason":null}]}
402+ data: {"id":"chatcmpl-48130e9f88db9c4a09fc17b0","object":"chat.completion.chunk","created":1778597435,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"go`"},"finish_reason":null}]}
615403
616− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" contents"},"finish_reason":null}]}
404+ data: {"id":"chatcmpl-48130e9f88db9c4a09fc17b0","object":"chat.completion.chunk","created":1778597435,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" file: `"},"finish_reason":null}]}
617405
618− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"**:"},"finish_reason":null}]}
406+ data: {"id":"chatcmpl-48130e9f88db9c4a09fc17b0","object":"chat.completion.chunk","created":1778597435,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"main.go"},"finish_reason":null}]}
619407
620− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
408+ data: {"id":"chatcmpl-48130e9f88db9c4a09fc17b0","object":"chat.completion.chunk","created":1778597435,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`\n\n**"},"finish_reason":null}]}
621409
622− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"go"},"finish_reason":null}]}
410+ data: {"id":"chatcmpl-48130e9f88db9c4a09fc17b0","object":"chat.completion.chunk","created":1778597435,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Directory"},"finish_reason":null}]}
623411
624− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".mod"},"finish_reason":null}]}
412+ data: {"id":"chatcmpl-48130e9f88db9c4a09fc17b0","object":"chat.completion.chunk","created":1778597435,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" listing"},"finish_reason":null}]}
625413
626− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`,"},"finish_reason":null}]}
414+ data: {"id":"chatcmpl-48130e9f88db9c4a09fc17b0","object":"chat.completion.chunk","created":1778597435,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"**: Contains"},"finish_reason":null}]}
627415
628− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
416+ data: {"id":"chatcmpl-48130e9f88db9c4a09fc17b0","object":"chat.completion.chunk","created":1778597435,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `go"},"finish_reason":null}]}
629417
630− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"main"},"finish_reason":null}]}
418+ data: {"id":"chatcmpl-48130e9f88db9c4a09fc17b0","object":"chat.completion.chunk","created":1778597435,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".mod"},"finish_reason":null}]}
631419
632− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
420+ data: {"id":"chatcmpl-48130e9f88db9c4a09fc17b0","object":"chat.completion.chunk","created":1778597435,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` and `main"},"finish_reason":null}]}
633421
634− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
422+ data: {"id":"chatcmpl-48130e9f88db9c4a09fc17b0","object":"chat.completion.chunk","created":1778597435,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go`"},"finish_reason":null}]}
635423
636− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
424+ data: {"id":"chatcmpl-48130e9f88db9c4a09fc17b0","object":"chat.completion.chunk","created":1778597435,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
637425
638− data: {"id":"chatcmpl-d5279c73907ab3791ecfeff9","object":"chat.completion.chunk","created":1778531436,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":88,"completion_tokens":25,"total_tokens":7857,"prompt_tokens_details":{"cached_tokens":7744}}}
426+ data: {"id":"chatcmpl-48130e9f88db9c4a09fc17b0","object":"chat.completion.chunk","created":1778597435,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":7834,"completion_tokens":33,"total_tokens":7867,"completion_tokens_details":{"reasoning_tokens":32}}}
639427
640428 data: [DONE]
641429
@@ -644,4 +432,4 @@ interactions:
644432 - text/event-stream
645433 status: 200 OK
646434 code: 200
647− duration: 3.364853208s
435+ duration: 3.926874583s
internal/agent/testdata/TestCoderAgent/glm-5.1/read_a_file.yaml+243−111
@@ -25,133 +25,231 @@ interactions:
2525 content_length: -1
2626 uncompressed: true
2727 body: |+
28− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
2929
30− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"User"},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
3131
32− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" wants"},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
3333
34− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" says"},"finish_reason":null}]}
3535
36− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
3737
38− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
3939
40− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
4141
42− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
4343
44− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
4545
46− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
4747
48− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
4949
50− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Read"},"finish_reason":null}]}
50+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
5151
52− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
52+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
5353
54− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" go"},"finish_reason":null}]}
54+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
5555
56− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" mod"},"finish_reason":null}]}
56+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":\n\n"},"finish_reason":null}]}
5757
58− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
58+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Read"},"finish_reason":null}]}
5959
60− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
60+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
6161
62− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
62+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" go"},"finish_reason":null}]}
6363
64− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summary"},"finish_reason":null}]}
64+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" mod"},"finish_reason":null}]}
6565
66− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
66+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\n"},"finish_reason":null}]}
6767
68− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" maybe"},"finish_reason":null}]}
68+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c"},"finish_reason":null}]}
6969
70− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
70+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"think"},"finish_reason":null}]}
7171
72− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Reading"},"finish_reason":null}]}
72+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\u003e\n\n"},"finish_reason":null}]}
7373
74− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
74+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\u003c/"},"finish_reason":null}]}
7575
76− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Go"},"finish_reason":null}]}
76+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"think"},"finish_reason":null}]}
7777
78− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Module"},"finish_reason":null}]}
78+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\u003e\""},"finish_reason":null}]}
7979
80− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" File"},"finish_reason":null}]}
80+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
8181
82− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
82+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" we"},"finish_reason":null}]}
8383
84− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Must"},"finish_reason":null}]}
84+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
8585
86− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
86+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
8787
88− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c="},"finish_reason":null}]}
88+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" produce"},"finish_reason":null}]}
8989
90− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
90+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
9191
92− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
92+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
9393
94− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
94+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
9595
96− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
96+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summar"},"finish_reason":null}]}
9797
98− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
98+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"izing"},"finish_reason":null}]}
9999
100− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
100+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" this"},"finish_reason":null}]}
101101
102− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
102+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
103103
104− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
104+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
105105
106− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
106+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" It's"},"finish_reason":null}]}
107107
108− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
108+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
109109
110− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" produce"},"finish_reason":null}]}
110+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" brief"},"finish_reason":null}]}
111111
112− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
112+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" request"},"finish_reason":null}]}
113113
114− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
114+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
115115
116− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Reading"},"finish_reason":null}]}
116+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
117117
118− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
118+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Read"},"finish_reason":null}]}
119119
120− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Go"},"finish_reason":null}]}
120+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
121121
122− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" module"},"finish_reason":null}]}
122+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" go"},"finish_reason":null}]}
123123
124− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
124+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" mod"},"finish_reason":null}]}
125125
126− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
126+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
127127
128− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
128+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
129129
130− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
130+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
131131
132− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"27"},"finish_reason":null}]}
132+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" could"},"finish_reason":null}]}
133133
134− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
134+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
135135
136− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
136+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
137137
138− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" fine"},"finish_reason":null}]}
138+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Reading"},"finish_reason":null}]}
139139
140− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
140+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
141141
142− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Reading"},"finish_reason":null}]}
142+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" go"},"finish_reason":null}]}
143143
144− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}]}
144+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".mod"},"finish_reason":null}]}
145145
146− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Go"},"finish_reason":null}]}
146+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
147147
148− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" module"},"finish_reason":null}]}
148+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
149149
150− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" file"},"finish_reason":null}]}
150+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Must"},"finish_reason":null}]}
151151
152− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
152+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
153153
154− data: {"id":"chatcmpl-615e2c2d8ec1ef2162968d2b","object":"chat.completion.chunk","created":1778531303,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":155,"completion_tokens":71,"total_tokens":274,"prompt_tokens_details":{"cached_tokens":48}}}
154+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
155+
156+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
157+
158+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
159+
160+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
161+
162+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
163+
164+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
165+
166+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
167+
168+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
169+
170+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
171+
172+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
173+
174+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" No"},"finish_reason":null}]}
175+
176+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
177+
178+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
179+
180+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
181+
182+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
183+
184+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
185+
186+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" One"},"finish_reason":null}]}
187+
188+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
189+
190+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
191+
192+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Provide"},"finish_reason":null}]}
193+
194+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
195+
196+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
197+
198+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Let's"},"finish_reason":null}]}
199+
200+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
201+
202+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
203+
204+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
205+
206+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Reading"},"finish_reason":null}]}
207+
208+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
209+
210+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" go"},"finish_reason":null}]}
211+
212+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".mod"},"finish_reason":null}]}
213+
214+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
215+
216+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
217+
218+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" is"},"finish_reason":null}]}
219+
220+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" about"},"finish_reason":null}]}
221+
222+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
223+
224+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"24"},"finish_reason":null}]}
225+
226+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
227+
228+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
229+
230+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
231+
232+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
233+
234+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Return"},"finish_reason":null}]}
235+
236+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
237+
238+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
239+
240+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Reading"},"finish_reason":null}]}
241+
242+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}]}
243+
244+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" go"},"finish_reason":null}]}
245+
246+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".mod"},"finish_reason":null}]}
247+
248+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" file"},"finish_reason":null}]}
249+
250+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
251+
252+ data: {"id":"chatcmpl-149388c529739f52423462e3","object":"chat.completion.chunk","created":1778597270,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":15,"completion_tokens":120,"total_tokens":327,"prompt_tokens_details":{"cached_tokens":192}}}
155253
156254 data: [DONE]
157255
@@ -160,15 +258,15 @@ interactions:
160258 - text/event-stream
161259 status: 200 OK
162260 code: 200
163− duration: 583.628791ms
261+ duration: 572.800625ms
164262- id: 1
165263 request:
166264 proto: HTTP/1.1
167265 proto_major: 1
168266 proto_minor: 1
169− content_length: 33625
267+ content_length: 33607
170268 host: ""
171− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
269+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
172270 headers:
173271 Accept:
174272 - application/json
@@ -185,37 +283,43 @@ interactions:
185283 content_length: -1
186284 uncompressed: true
187285 body: |+
188− data: {"id":"chatcmpl-2f29457de76a3007e60f88d4","object":"chat.completion.chunk","created":1778531305,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
286+ data: {"id":"chatcmpl-793393c6b5de48c25ff680a6","object":"chat.completion.chunk","created":1778597276,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
287+
288+ data: {"id":"chatcmpl-793393c6b5de48c25ff680a6","object":"chat.completion.chunk","created":1778597276,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
189289
190− data: {"id":"chatcmpl-2f29457de76a3007e60f88d4","object":"chat.completion.chunk","created":1778531305,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
290+ data: {"id":"chatcmpl-793393c6b5de48c25ff680a6","object":"chat.completion.chunk","created":1778597276,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
191291
192− data: {"id":"chatcmpl-2f29457de76a3007e60f88d4","object":"chat.completion.chunk","created":1778531305,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
292+ data: {"id":"chatcmpl-793393c6b5de48c25ff680a6","object":"chat.completion.chunk","created":1778597276,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" wants me"},"finish_reason":null}]}
193293
194− data: {"id":"chatcmpl-2f29457de76a3007e60f88d4","object":"chat.completion.chunk","created":1778531305,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" wants"},"finish_reason":null}]}
294+ data: {"id":"chatcmpl-793393c6b5de48c25ff680a6","object":"chat.completion.chunk","created":1778597276,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" to read a"},"finish_reason":null}]}
195295
196− data: {"id":"chatcmpl-2f29457de76a3007e60f88d4","object":"chat.completion.chunk","created":1778531305,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" me"},"finish_reason":null}]}
296+ data: {"id":"chatcmpl-793393c6b5de48c25ff680a6","object":"chat.completion.chunk","created":1778597276,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" go.mod"},"finish_reason":null}]}
197297
198− data: {"id":"chatcmpl-2f29457de76a3007e60f88d4","object":"chat.completion.chunk","created":1778531305,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
298+ data: {"id":"chatcmpl-793393c6b5de48c25ff680a6","object":"chat.completion.chunk","created":1778597276,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" file. Let"},"finish_reason":null}]}
199299
200− data: {"id":"chatcmpl-2f29457de76a3007e60f88d4","object":"chat.completion.chunk","created":1778531305,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" read"},"finish_reason":null}]}
300+ data: {"id":"chatcmpl-793393c6b5de48c25ff680a6","object":"chat.completion.chunk","created":1778597276,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" me find"},"finish_reason":null}]}
201301
202− data: {"id":"chatcmpl-2f29457de76a3007e60f88d4","object":"chat.completion.chunk","created":1778531305,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
302+ data: {"id":"chatcmpl-793393c6b5de48c25ff680a6","object":"chat.completion.chunk","created":1778597276,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" it first"},"finish_reason":null}]}
203303
204− data: {"id":"chatcmpl-2f29457de76a3007e60f88d4","object":"chat.completion.chunk","created":1778531305,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" go"},"finish_reason":null}]}
304+ data: {"id":"chatcmpl-793393c6b5de48c25ff680a6","object":"chat.completion.chunk","created":1778597276,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
205305
206− data: {"id":"chatcmpl-2f29457de76a3007e60f88d4","object":"chat.completion.chunk","created":1778531305,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":".mod"},"finish_reason":null}]}
306+ data: {"id":"chatcmpl-793393c6b5de48c25ff680a6","object":"chat.completion.chunk","created":1778597276,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_6ad0b3d8cf1f49289b0f5fad","type":"function","index":0,"function":{"name":"glob","arguments":""}}]},"finish_reason":null}]}
207307
208− data: {"id":"chatcmpl-2f29457de76a3007e60f88d4","object":"chat.completion.chunk","created":1778531305,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
308+ data: {"id":"chatcmpl-793393c6b5de48c25ff680a6","object":"chat.completion.chunk","created":1778597276,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":""}}]},"finish_reason":null}]}
209309
210− data: {"id":"chatcmpl-2f29457de76a3007e60f88d4","object":"chat.completion.chunk","created":1778531305,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
310+ data: {"id":"chatcmpl-793393c6b5de48c25ff680a6","object":"chat.completion.chunk","created":1778597276,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
211311
212− data: {"id":"chatcmpl-2f29457de76a3007e60f88d4","object":"chat.completion.chunk","created":1778531305,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_e72a7a56b3af4fa0acaed0ea","type":"function","index":0,"function":{"name":"glob","arguments":""}}]},"finish_reason":null}]}
312+ data: {"id":"chatcmpl-793393c6b5de48c25ff680a6","object":"chat.completion.chunk","created":1778597276,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"pattern\": "}}]},"finish_reason":null}]}
213313
214− data: {"id":"chatcmpl-2f29457de76a3007e60f88d4","object":"chat.completion.chunk","created":1778531305,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"pattern\":\"go.mod\"}"}}]},"finish_reason":null}]}
314+ data: {"id":"chatcmpl-793393c6b5de48c25ff680a6","object":"chat.completion.chunk","created":1778597276,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"go"}}]},"finish_reason":null}]}
215315
216− data: {"id":"chatcmpl-2f29457de76a3007e60f88d4","object":"chat.completion.chunk","created":1778531305,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
316+ data: {"id":"chatcmpl-793393c6b5de48c25ff680a6","object":"chat.completion.chunk","created":1778597276,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".mod\""}}]},"finish_reason":null}]}
217317
218− data: {"id":"chatcmpl-2f29457de76a3007e60f88d4","object":"chat.completion.chunk","created":1778531305,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":694,"completion_tokens":23,"total_tokens":7757,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":11}}}
318+ data: {"id":"chatcmpl-793393c6b5de48c25ff680a6","object":"chat.completion.chunk","created":1778597276,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
319+
320+ data: {"id":"chatcmpl-793393c6b5de48c25ff680a6","object":"chat.completion.chunk","created":1778597276,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
321+
322+ data: {"id":"chatcmpl-793393c6b5de48c25ff680a6","object":"chat.completion.chunk","created":1778597276,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":696,"completion_tokens":29,"total_tokens":7765,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":17}}}
219323
220324 data: [DONE]
221325
@@ -224,15 +328,15 @@ interactions:
224328 - text/event-stream
225329 status: 200 OK
226330 code: 200
227− duration: 3.175299625s
331+ duration: 5.728420166s
228332- id: 2
229333 request:
230334 proto: HTTP/1.1
231335 proto_major: 1
232336 proto_minor: 1
233− content_length: 33982
337+ content_length: 33985
234338 host: ""
235− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_e72a7a56b3af4fa0acaed0ea\",\"function\":{\"arguments\":\"{\\\"pattern\\\":\\\"go.mod\\\"}\",\"name\":\"glob\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"The user wants me to read the go.mod file.\"},{\"content\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/read_a_file/go.mod\",\"tool_call_id\":\"call_e72a7a56b3af4fa0acaed0ea\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
339+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_6ad0b3d8cf1f49289b0f5fad\",\"function\":{\"arguments\":\"{\\\"pattern\\\": \\\"go.mod\\\"}\",\"name\":\"glob\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"The user wants me to read a go.mod file. Let me find it first.\"},{\"content\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/read_a_file/go.mod\",\"tool_call_id\":\"call_6ad0b3d8cf1f49289b0f5fad\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
236340 headers:
237341 Accept:
238342 - application/json
@@ -249,15 +353,43 @@ interactions:
249353 content_length: -1
250354 uncompressed: true
251355 body: |+
252− data: {"id":"chatcmpl-277dbcfdc8758cdb51a09aaf","object":"chat.completion.chunk","created":1778531309,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
356+ data: {"id":"chatcmpl-bea5d9f86de0fcb4874f50d8","object":"chat.completion.chunk","created":1778597279,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
357+
358+ data: {"id":"chatcmpl-bea5d9f86de0fcb4874f50d8","object":"chat.completion.chunk","created":1778597279,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_98e2e7b24a214ad685f4a3e5","type":"function","index":0,"function":{"name":"view","arguments":""}}]},"finish_reason":null}]}
359+
360+ data: {"id":"chatcmpl-bea5d9f86de0fcb4874f50d8","object":"chat.completion.chunk","created":1778597279,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":""}}]},"finish_reason":null}]}
361+
362+ data: {"id":"chatcmpl-bea5d9f86de0fcb4874f50d8","object":"chat.completion.chunk","created":1778597279,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"file_path\": "}}]},"finish_reason":null}]}
363+
364+ data: {"id":"chatcmpl-bea5d9f86de0fcb4874f50d8","object":"chat.completion.chunk","created":1778597279,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"/tmp/c"}}]},"finish_reason":null}]}
365+
366+ data: {"id":"chatcmpl-bea5d9f86de0fcb4874f50d8","object":"chat.completion.chunk","created":1778597279,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush"}}]},"finish_reason":null}]}
367+
368+ data: {"id":"chatcmpl-bea5d9f86de0fcb4874f50d8","object":"chat.completion.chunk","created":1778597279,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-test"}}]},"finish_reason":null}]}
369+
370+ data: {"id":"chatcmpl-bea5d9f86de0fcb4874f50d8","object":"chat.completion.chunk","created":1778597279,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/Test"}}]},"finish_reason":null}]}
371+
372+ data: {"id":"chatcmpl-bea5d9f86de0fcb4874f50d8","object":"chat.completion.chunk","created":1778597279,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Coder"}}]},"finish_reason":null}]}
373+
374+ data: {"id":"chatcmpl-bea5d9f86de0fcb4874f50d8","object":"chat.completion.chunk","created":1778597279,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Agent/g"}}]},"finish_reason":null}]}
375+
376+ data: {"id":"chatcmpl-bea5d9f86de0fcb4874f50d8","object":"chat.completion.chunk","created":1778597279,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"lm-"}}]},"finish_reason":null}]}
377+
378+ data: {"id":"chatcmpl-bea5d9f86de0fcb4874f50d8","object":"chat.completion.chunk","created":1778597279,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"5.1/read"}}]},"finish_reason":null}]}
379+
380+ data: {"id":"chatcmpl-bea5d9f86de0fcb4874f50d8","object":"chat.completion.chunk","created":1778597279,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_a"}}]},"finish_reason":null}]}
381+
382+ data: {"id":"chatcmpl-bea5d9f86de0fcb4874f50d8","object":"chat.completion.chunk","created":1778597279,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_file"}}]},"finish_reason":null}]}
383+
384+ data: {"id":"chatcmpl-bea5d9f86de0fcb4874f50d8","object":"chat.completion.chunk","created":1778597279,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/go.mod"}}]},"finish_reason":null}]}
253385
254− data: {"id":"chatcmpl-277dbcfdc8758cdb51a09aaf","object":"chat.completion.chunk","created":1778531309,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_312bf14678864ff095dc6dfb","type":"function","index":0,"function":{"name":"view","arguments":""}}]},"finish_reason":null}]}
386+ data: {"id":"chatcmpl-bea5d9f86de0fcb4874f50d8","object":"chat.completion.chunk","created":1778597279,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\""}}]},"finish_reason":null}]}
255387
256− data: {"id":"chatcmpl-277dbcfdc8758cdb51a09aaf","object":"chat.completion.chunk","created":1778531309,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"file_path\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/read_a_file/go.mod\"}"}}]},"finish_reason":null}]}
388+ data: {"id":"chatcmpl-bea5d9f86de0fcb4874f50d8","object":"chat.completion.chunk","created":1778597279,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
257389
258− data: {"id":"chatcmpl-277dbcfdc8758cdb51a09aaf","object":"chat.completion.chunk","created":1778531309,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
390+ data: {"id":"chatcmpl-bea5d9f86de0fcb4874f50d8","object":"chat.completion.chunk","created":1778597279,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
259391
260− data: {"id":"chatcmpl-277dbcfdc8758cdb51a09aaf","object":"chat.completion.chunk","created":1778531309,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":88,"completion_tokens":29,"total_tokens":7797,"prompt_tokens_details":{"cached_tokens":7680}}}
392+ data: {"id":"chatcmpl-bea5d9f86de0fcb4874f50d8","object":"chat.completion.chunk","created":1778597279,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":7770,"completion_tokens":29,"total_tokens":7799,"completion_tokens_details":{"reasoning_tokens":28}}}
261393
262394 data: [DONE]
263395
@@ -266,15 +398,15 @@ interactions:
266398 - text/event-stream
267399 status: 200 OK
268400 code: 200
269− duration: 3.616486208s
401+ duration: 2.767550125s
270402- id: 3
271403 request:
272404 proto: HTTP/1.1
273405 proto_major: 1
274406 proto_minor: 1
275− content_length: 34374
407+ content_length: 34378
276408 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_e72a7a56b3af4fa0acaed0ea\",\"function\":{\"arguments\":\"{\\\"pattern\\\":\\\"go.mod\\\"}\",\"name\":\"glob\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"The user wants me to read the go.mod file.\"},{\"content\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/read_a_file/go.mod\",\"tool_call_id\":\"call_e72a7a56b3af4fa0acaed0ea\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_312bf14678864ff095dc6dfb\",\"function\":{\"arguments\":\"{\\\"file_path\\\":\\\"/tmp/crush-test/TestCoderAgent/glm-5.1/read_a_file/go.mod\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"\"},{\"content\":\"<file>\\n 1|module example.com/testproject\\n 2|\\n 3|go 1.23\\n</file>\\n\",\"tool_call_id\":\"call_312bf14678864ff095dc6dfb\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
409+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_6ad0b3d8cf1f49289b0f5fad\",\"function\":{\"arguments\":\"{\\\"pattern\\\": \\\"go.mod\\\"}\",\"name\":\"glob\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"The user wants me to read a go.mod file. Let me find it first.\"},{\"content\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/read_a_file/go.mod\",\"tool_call_id\":\"call_6ad0b3d8cf1f49289b0f5fad\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_98e2e7b24a214ad685f4a3e5\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/read_a_file/go.mod\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"\"},{\"content\":\"<file>\\n 1|module example.com/testproject\\n 2|\\n 3|go 1.23\\n</file>\\n\",\"tool_call_id\":\"call_98e2e7b24a214ad685f4a3e5\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
278410 headers:
279411 Accept:
280412 - application/json
@@ -291,37 +423,37 @@ interactions:
291423 content_length: -1
292424 uncompressed: true
293425 body: |+
294− data: {"id":"chatcmpl-56a6bd84cf0bdd5e53fb7f8f","object":"chat.completion.chunk","created":1778531313,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
426+ data: {"id":"chatcmpl-76b9cbfc7a37c1e9614e4222","object":"chat.completion.chunk","created":1778597282,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
295427
296− data: {"id":"chatcmpl-56a6bd84cf0bdd5e53fb7f8f","object":"chat.completion.chunk","created":1778531313,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Module"},"finish_reason":null}]}
428+ data: {"id":"chatcmpl-76b9cbfc7a37c1e9614e4222","object":"chat.completion.chunk","created":1778597282,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"A"},"finish_reason":null}]}
297429
298− data: {"id":"chatcmpl-56a6bd84cf0bdd5e53fb7f8f","object":"chat.completion.chunk","created":1778531313,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
430+ data: {"id":"chatcmpl-76b9cbfc7a37c1e9614e4222","object":"chat.completion.chunk","created":1778597282,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" minimal"},"finish_reason":null}]}
299431
300− data: {"id":"chatcmpl-56a6bd84cf0bdd5e53fb7f8f","object":"chat.completion.chunk","created":1778531313,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"example"},"finish_reason":null}]}
432+ data: {"id":"chatcmpl-76b9cbfc7a37c1e9614e4222","object":"chat.completion.chunk","created":1778597282,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Go module file"},"finish_reason":null}]}
301433
302− data: {"id":"chatcmpl-56a6bd84cf0bdd5e53fb7f8f","object":"chat.completion.chunk","created":1778531313,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".com"},"finish_reason":null}]}
434+ data: {"id":"chatcmpl-76b9cbfc7a37c1e9614e4222","object":"chat.completion.chunk","created":1778597282,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":\n\n- **Module"},"finish_reason":null}]}
303435
304− data: {"id":"chatcmpl-56a6bd84cf0bdd5e53fb7f8f","object":"chat.completion.chunk","created":1778531313,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/test"},"finish_reason":null}]}
436+ data: {"id":"chatcmpl-76b9cbfc7a37c1e9614e4222","object":"chat.completion.chunk","created":1778597282,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"**: `"},"finish_reason":null}]}
305437
306− data: {"id":"chatcmpl-56a6bd84cf0bdd5e53fb7f8f","object":"chat.completion.chunk","created":1778531313,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"project"},"finish_reason":null}]}
438+ data: {"id":"chatcmpl-76b9cbfc7a37c1e9614e4222","object":"chat.completion.chunk","created":1778597282,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"example.com/test"},"finish_reason":null}]}
307439
308− data: {"id":"chatcmpl-56a6bd84cf0bdd5e53fb7f8f","object":"chat.completion.chunk","created":1778531313,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`,"},"finish_reason":null}]}
440+ data: {"id":"chatcmpl-76b9cbfc7a37c1e9614e4222","object":"chat.completion.chunk","created":1778597282,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"project"},"finish_reason":null}]}
309441
310− data: {"id":"chatcmpl-56a6bd84cf0bdd5e53fb7f8f","object":"chat.completion.chunk","created":1778531313,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Go"},"finish_reason":null}]}
442+ data: {"id":"chatcmpl-76b9cbfc7a37c1e9614e4222","object":"chat.completion.chunk","created":1778597282,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`\n- **"},"finish_reason":null}]}
311443
312− data: {"id":"chatcmpl-56a6bd84cf0bdd5e53fb7f8f","object":"chat.completion.chunk","created":1778531313,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}]}
444+ data: {"id":"chatcmpl-76b9cbfc7a37c1e9614e4222","object":"chat.completion.chunk","created":1778597282,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Go version"},"finish_reason":null}]}
313445
314− data: {"id":"chatcmpl-56a6bd84cf0bdd5e53fb7f8f","object":"chat.completion.chunk","created":1778531313,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"1"},"finish_reason":null}]}
446+ data: {"id":"chatcmpl-76b9cbfc7a37c1e9614e4222","object":"chat.completion.chunk","created":1778597282,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"**: "},"finish_reason":null}]}
315447
316− data: {"id":"chatcmpl-56a6bd84cf0bdd5e53fb7f8f","object":"chat.completion.chunk","created":1778531313,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"."},"finish_reason":null}]}
448+ data: {"id":"chatcmpl-76b9cbfc7a37c1e9614e4222","object":"chat.completion.chunk","created":1778597282,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"1.23"},"finish_reason":null}]}
317449
318− data: {"id":"chatcmpl-56a6bd84cf0bdd5e53fb7f8f","object":"chat.completion.chunk","created":1778531313,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"23"},"finish_reason":null}]}
450+ data: {"id":"chatcmpl-76b9cbfc7a37c1e9614e4222","object":"chat.completion.chunk","created":1778597282,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"\n- No"},"finish_reason":null}]}
319451
320− data: {"id":"chatcmpl-56a6bd84cf0bdd5e53fb7f8f","object":"chat.completion.chunk","created":1778531313,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"."},"finish_reason":null}]}
452+ data: {"id":"chatcmpl-76b9cbfc7a37c1e9614e4222","object":"chat.completion.chunk","created":1778597282,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" dependencies"},"finish_reason":null}]}
321453
322− data: {"id":"chatcmpl-56a6bd84cf0bdd5e53fb7f8f","object":"chat.completion.chunk","created":1778531313,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
454+ data: {"id":"chatcmpl-76b9cbfc7a37c1e9614e4222","object":"chat.completion.chunk","created":1778597282,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
323455
324− data: {"id":"chatcmpl-56a6bd84cf0bdd5e53fb7f8f","object":"chat.completion.chunk","created":1778531313,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":87,"completion_tokens":15,"total_tokens":7846,"prompt_tokens_details":{"cached_tokens":7744}}}
456+ data: {"id":"chatcmpl-76b9cbfc7a37c1e9614e4222","object":"chat.completion.chunk","created":1778597282,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":7833,"completion_tokens":31,"total_tokens":7864,"completion_tokens_details":{"reasoning_tokens":30}}}
325457
326458 data: [DONE]
327459
@@ -330,4 +462,4 @@ interactions:
330462 - text/event-stream
331463 status: 200 OK
332464 code: 200
333− duration: 3.878801916s
465+ duration: 2.132418458s
internal/agent/testdata/TestCoderAgent/glm-5.1/simple_test.yaml+64−258
@@ -25,293 +25,103 @@ interactions:
2525 content_length: -1
2626 uncompressed: true
2727 body: |+
28− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
2929
30− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"We"},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"User"},"finish_reason":null}]}
3131
32− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" asks"},"finish_reason":null}]}
3333
34− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
3535
36− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" generate"},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
3737
38− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
3939
40− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
4141
42− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
4343
44− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" based"},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
4545
46− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" on"},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
4747
48− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
4949
50− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user's"},"finish_reason":null}]}
50+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
5151
52− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" first"},"finish_reason":null}]}
52+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
5353
54− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" message"},"finish_reason":null}]}
54+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":\n\n"},"finish_reason":null}]}
5555
56− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
56+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
5757
58− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" The"},"finish_reason":null}]}
58+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
5959
60− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" message"},"finish_reason":null}]}
60+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
6161
62− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
62+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" we"},"finish_reason":null}]}
6363
64− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
64+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
6565
66− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
66+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
6767
68− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
68+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
6969
70− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
70+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summar"},"finish_reason":null}]}
7171
72− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
72+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"izing"},"finish_reason":null}]}
7373
74− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
74+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
7575
76− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
76+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
7777
78− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
78+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
7979
80− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
80+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
8181
82− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
82+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" should"},"finish_reason":null}]}
8383
84− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":\\"},"finish_reason":null}]}
84+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
8585
86− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"n"},"finish_reason":null}]}
86+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
8787
88− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\\n"},"finish_reason":null}]}
88+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
8989
90− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
90+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
9191
92− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\\n"},"finish_reason":null}]}
92+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Must"},"finish_reason":null}]}
9393
94− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c"},"finish_reason":null}]}
94+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
9595
96− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"think"},"finish_reason":null}]}
96+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
9797
98− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\u003e\\"},"finish_reason":null}]}
98+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
9999
100− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"n"},"finish_reason":null}]}
100+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
101101
102− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\\n"},"finish_reason":null}]}
102+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
103103
104− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\u003c/"},"finish_reason":null}]}
104+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
105105
106− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"think"},"finish_reason":null}]}
106+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
107107
108− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\u003e\""},"finish_reason":null}]}
108+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
109109
110− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" The"},"finish_reason":null}]}
110+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
111111
112− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
112+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Return"},"finish_reason":null}]}
113113
114− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" is"},"finish_reason":null}]}
114+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
115115
116− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" asking"},"finish_reason":null}]}
116+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
117117
118− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
118+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
119119
120− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" generate"},"finish_reason":null}]}
120+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}
121121
122− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
122+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
123123
124− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
125−
126− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
127−
128− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
129−
130− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" The"},"finish_reason":null}]}
131−
132− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
133−
134− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" is"},"finish_reason":null}]}
135−
136− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" simply"},"finish_reason":null}]}
137−
138− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
139−
140− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
141−
142− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
143−
144− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
145−
146− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" we"},"finish_reason":null}]}
147−
148− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
149−
150− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
151−
152− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
153−
154− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summar"},"finish_reason":null}]}
155−
156− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"izing"},"finish_reason":null}]}
157−
158− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
159−
160− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
161−
162− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
163−
164− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Hello"},"finish_reason":null}]}
165−
166− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
167−
168− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
169−
170− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" should"},"finish_reason":null}]}
171−
172− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
173−
174− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
175−
176− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
177−
178− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
179−
180− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
181−
182− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
183−
184− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
185−
186− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
187−
188− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Should"},"finish_reason":null}]}
189−
190− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
191−
192− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
193−
194− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" more"},"finish_reason":null}]}
195−
196− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" than"},"finish_reason":null}]}
197−
198− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
199−
200− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
201−
202− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
203−
204− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
205−
206− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
207−
208− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
209−
210− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
211−
212− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
213−
214− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
215−
216− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
217−
218− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
219−
220− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
221−
222− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
223−
224− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Possibly"},"finish_reason":null}]}
225−
226− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
227−
228− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Greeting"},"finish_reason":null}]}
229−
230− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
231−
232− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
233−
234− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
235−
236− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" but"},"finish_reason":null}]}
237−
238− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" can't"},"finish_reason":null}]}
239−
240− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" use"},"finish_reason":null}]}
241−
242− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" colon"},"finish_reason":null}]}
243−
244− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"?"},"finish_reason":null}]}
245−
246− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" It"},"finish_reason":null}]}
247−
248− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" says"},"finish_reason":null}]}
249−
250− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
251−
252− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
253−
254− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
255−
256− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
257−
258− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
259−
260− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
261−
262− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
263−
264− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" avoid"},"finish_reason":null}]}
265−
266− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" colon"},"finish_reason":null}]}
267−
268− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
269−
270− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Maybe"},"finish_reason":null}]}
271−
272− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
273−
274− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Simple"},"finish_reason":null}]}
275−
276− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Greeting"},"finish_reason":null}]}
277−
278− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
279−
280− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
281−
282− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
283−
284− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" okay"},"finish_reason":null}]}
285−
286− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
287−
288− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Under"},"finish_reason":null}]}
289−
290− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
291−
292− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
293−
294− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
295−
296− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
297−
298− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
299−
300− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" output"},"finish_reason":null}]}
301−
302− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
303−
304− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
305−
306− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Simple"},"finish_reason":null}]}
307−
308− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Greeting"},"finish_reason":null}]}
309−
310− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Hello"},"finish_reason":null}]}
311−
312− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
313−
314− data: {"id":"chatcmpl-304fd5fa1f8e2de560981295","object":"chat.completion.chunk","created":1778531299,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":140,"completion_tokens":151,"total_tokens":355,"prompt_tokens_details":{"cached_tokens":64}}}
124+ data: {"id":"chatcmpl-cb802de561d11e076f0b6821","object":"chat.completion.chunk","created":1778597267,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":140,"completion_tokens":56,"total_tokens":260,"prompt_tokens_details":{"cached_tokens":64}}}
315125
316126 data: [DONE]
317127
@@ -320,15 +130,15 @@ interactions:
320130 - text/event-stream
321131 status: 200 OK
322132 code: 200
323− duration: 746.993416ms
133+ duration: 652.235333ms
324134- id: 1
325135 request:
326136 proto: HTTP/1.1
327137 proto_major: 1
328138 proto_minor: 1
329− content_length: 33615
139+ content_length: 33597
330140 host: ""
331− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
141+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
332142 headers:
333143 Accept:
334144 - application/json
@@ -345,31 +155,27 @@ interactions:
345155 content_length: -1
346156 uncompressed: true
347157 body: |+
348− data: {"id":"chatcmpl-b6ec0c9fe8011796d9918bb7","object":"chat.completion.chunk","created":1778531302,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
349−
350− data: {"id":"chatcmpl-b6ec0c9fe8011796d9918bb7","object":"chat.completion.chunk","created":1778531302,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"Simple"},"finish_reason":null}]}
351−
352− data: {"id":"chatcmpl-b6ec0c9fe8011796d9918bb7","object":"chat.completion.chunk","created":1778531302,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" greeting"},"finish_reason":null}]}
158+ data: {"id":"chatcmpl-f5d456fac6115b04b7a65227","object":"chat.completion.chunk","created":1778597269,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
353159
354− data: {"id":"chatcmpl-b6ec0c9fe8011796d9918bb7","object":"chat.completion.chunk","created":1778531302,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
160+ data: {"id":"chatcmpl-f5d456fac6115b04b7a65227","object":"chat.completion.chunk","created":1778597269,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
355161
356− data: {"id":"chatcmpl-b6ec0c9fe8011796d9918bb7","object":"chat.completion.chunk","created":1778531302,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" respond"},"finish_reason":null}]}
162+ data: {"id":"chatcmpl-f5d456fac6115b04b7a65227","object":"chat.completion.chunk","created":1778597269,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
357163
358− data: {"id":"chatcmpl-b6ec0c9fe8011796d9918bb7","object":"chat.completion.chunk","created":1778531302,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" conc"},"finish_reason":null}]}
164+ data: {"id":"chatcmpl-f5d456fac6115b04b7a65227","object":"chat.completion.chunk","created":1778597269,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" said hello"},"finish_reason":null}]}
359165
360− data: {"id":"chatcmpl-b6ec0c9fe8011796d9918bb7","object":"chat.completion.chunk","created":1778531302,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"is"},"finish_reason":null}]}
166+ data: {"id":"chatcmpl-f5d456fac6115b04b7a65227","object":"chat.completion.chunk","created":1778597269,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":". I"},"finish_reason":null}]}
361167
362− data: {"id":"chatcmpl-b6ec0c9fe8011796d9918bb7","object":"chat.completion.chunk","created":1778531302,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"ely"},"finish_reason":null}]}
168+ data: {"id":"chatcmpl-f5d456fac6115b04b7a65227","object":"chat.completion.chunk","created":1778597269,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" should respond"},"finish_reason":null}]}
363169
364− data: {"id":"chatcmpl-b6ec0c9fe8011796d9918bb7","object":"chat.completion.chunk","created":1778531302,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
170+ data: {"id":"chatcmpl-f5d456fac6115b04b7a65227","object":"chat.completion.chunk","created":1778597269,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" briefly."},"finish_reason":null}]}
365171
366− data: {"id":"chatcmpl-b6ec0c9fe8011796d9918bb7","object":"chat.completion.chunk","created":1778531302,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Hi"},"finish_reason":null}]}
172+ data: {"id":"chatcmpl-f5d456fac6115b04b7a65227","object":"chat.completion.chunk","created":1778597269,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}
367173
368− data: {"id":"chatcmpl-b6ec0c9fe8011796d9918bb7","object":"chat.completion.chunk","created":1778531302,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"!"},"finish_reason":null}]}
174+ data: {"id":"chatcmpl-f5d456fac6115b04b7a65227","object":"chat.completion.chunk","created":1778597269,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"!"},"finish_reason":null}]}
369175
370− data: {"id":"chatcmpl-b6ec0c9fe8011796d9918bb7","object":"chat.completion.chunk","created":1778531302,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
176+ data: {"id":"chatcmpl-f5d456fac6115b04b7a65227","object":"chat.completion.chunk","created":1778597269,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
371177
372− data: {"id":"chatcmpl-b6ec0c9fe8011796d9918bb7","object":"chat.completion.chunk","created":1778531302,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":7730,"completion_tokens":12,"total_tokens":7742,"completion_tokens_details":{"reasoning_tokens":8}}}
178+ data: {"id":"chatcmpl-f5d456fac6115b04b7a65227","object":"chat.completion.chunk","created":1778597269,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":7732,"completion_tokens":14,"total_tokens":7746,"completion_tokens_details":{"reasoning_tokens":10}}}
373179
374180 data: [DONE]
375181
@@ -378,4 +184,4 @@ interactions:
378184 - text/event-stream
379185 status: 200 OK
380186 code: 200
381− duration: 3.600212209s
187+ duration: 3.107841708s
internal/agent/testdata/TestCoderAgent/glm-5.1/sourcegraph_tool.yaml+526−814
@@ -25,457 +25,515 @@ interactions:
2525 content_length: -1
2626 uncompressed: true
2727 body: |+
28− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
2929
30− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"We"},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
3131
32− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" system"},"finish_reason":null}]}
3333
34− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" says"},"finish_reason":null}]}
3535
36− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" produce"},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" we"},"finish_reason":null}]}
3737
38− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" must"},"finish_reason":null}]}
3939
40− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" generate"},"finish_reason":null}]}
4141
42− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
4343
44− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
4545
46− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" max"},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
4747
48− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" based"},"finish_reason":null}]}
4949
50− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
50+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" on"},"finish_reason":null}]}
5151
52− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
52+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
5353
54− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
54+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user's"},"finish_reason":null}]}
5555
56− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
56+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" first"},"finish_reason":null}]}
5757
58− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
58+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" message"},"finish_reason":null}]}
5959
60− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
60+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
6161
62− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
62+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" The"},"finish_reason":null}]}
6363
64− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
64+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
6565
66− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Summ"},"finish_reason":null}]}
66+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" says"},"finish_reason":null}]}
6767
68− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ar"},"finish_reason":null}]}
68+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
6969
70− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ize"},"finish_reason":null}]}
70+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
7171
72− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
72+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
7373
74− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
74+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
7575
76− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
76+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
7777
78− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" source"},"finish_reason":null}]}
78+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
7979
80− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"graph"},"finish_reason":null}]}
80+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
8181
82− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
82+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
8383
84− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" search"},"finish_reason":null}]}
84+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
8585
86− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
86+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
8787
88− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
88+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
8989
90− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"func"},"finish_reason":null}]}
90+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" use"},"finish_reason":null}]}
9191
92− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
92+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" source"},"finish_reason":null}]}
9393
94− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
94+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"graph"},"finish_reason":null}]}
9595
96− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
96+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
9797
98− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Go"},"finish_reason":null}]}
98+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" search"},"finish_reason":null}]}
9999
100− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" repositories"},"finish_reason":null}]}
100+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
101101
102− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
102+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '"},"finish_reason":null}]}
103103
104− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
104+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"func"},"finish_reason":null}]}
105105
106− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" could"},"finish_reason":null}]}
106+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
107107
108− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
108+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
109109
110− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
110+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
111111
112− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
112+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Go"},"finish_reason":null}]}
113113
114− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Search"},"finish_reason":null}]}
114+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" repositories"},"finish_reason":null}]}
115115
116− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
116+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
117117
118− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" func"},"finish_reason":null}]}
118+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" We"},"finish_reason":null}]}
119119
120− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
120+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" need"},"finish_reason":null}]}
121121
122− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
122+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
123123
124− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Go"},"finish_reason":null}]}
124+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
125125
126− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" repos"},"finish_reason":null}]}
126+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
127127
128− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
128+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
129129
130− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Source"},"finish_reason":null}]}
130+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
131131
132− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"graph"},"finish_reason":null}]}
132+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
133133
134− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
134+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
135135
136− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
136+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
137137
138− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
138+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
139139
140− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
140+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Not"},"finish_reason":null}]}
141141
142− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
142+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" more"},"finish_reason":null}]}
143143
144− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
144+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" than"},"finish_reason":null}]}
145145
146− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
146+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
147147
148− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
148+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
149149
150− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Search"},"finish_reason":null}]}
150+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
151151
152− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
152+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
153153
154− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" func"},"finish_reason":null}]}
154+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Summ"},"finish_reason":null}]}
155155
156− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
156+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ar"},"finish_reason":null}]}
157157
158− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
158+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ize"},"finish_reason":null}]}
159159
160− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Go"},"finish_reason":null}]}
160+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
161161
162− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" repos"},"finish_reason":null}]}
162+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
163163
164− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
164+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Search"},"finish_reason":null}]}
165165
166− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Source"},"finish_reason":null}]}
166+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
167167
168− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"graph"},"finish_reason":null}]}
168+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" func"},"finish_reason":null}]}
169169
170− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
170+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
171171
172− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
172+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
173173
174− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
174+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Go"},"finish_reason":null}]}
175175
176− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
176+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" repos"},"finish_reason":null}]}
177177
178− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"including"},"finish_reason":null}]}
178+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
179179
180− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" spaces"},"finish_reason":null}]}
180+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Source"},"finish_reason":null}]}
181181
182− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"):"},"finish_reason":null}]}
182+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"graph"},"finish_reason":null}]}
183183
184− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
184+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
185185
186− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
186+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That"},"finish_reason":null}]}
187187
188− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" S"},"finish_reason":null}]}
188+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" is"},"finish_reason":null}]}
189189
190− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
190+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
191191
192− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
192+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"45"},"finish_reason":null}]}
193193
194− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
194+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
195195
196− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" e"},"finish_reason":null}]}
196+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" maybe"},"finish_reason":null}]}
197197
198− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
198+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
199199
200− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
200+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
201201
202− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
202+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
203203
204− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
204+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
205205
206− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
206+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
207207
208− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" c"},"finish_reason":null}]}
208+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Search"},"finish_reason":null}]}
209209
210− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
210+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
211211
212− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" h"},"finish_reason":null}]}
212+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" func"},"finish_reason":null}]}
213213
214− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
214+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
215215
216− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
216+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
217217
218− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
218+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Go"},"finish_reason":null}]}
219219
220− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
220+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" repos"},"finish_reason":null}]}
221221
222− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
222+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
223223
224− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" f"},"finish_reason":null}]}
224+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Source"},"finish_reason":null}]}
225225
226− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"8"},"finish_reason":null}]}
226+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"graph"},"finish_reason":null}]}
227227
228− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" o"},"finish_reason":null}]}
228+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
229229
230− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"9"},"finish_reason":null}]}
230+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
231231
232− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
232+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
233233
234− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"10"},"finish_reason":null}]}
234+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
235235
236− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
236+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" S"},"finish_reason":null}]}
237237
238− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
238+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
239239
240− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
240+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
241241
242− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
242+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
243243
244− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" f"},"finish_reason":null}]}
244+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" e"},"finish_reason":null}]}
245245
246− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"12"},"finish_reason":null}]}
246+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
247247
248− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" u"},"finish_reason":null}]}
248+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
249249
250− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"13"},"finish_reason":null}]}
250+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"3"},"finish_reason":null}]}
251251
252− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" n"},"finish_reason":null}]}
252+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
253253
254− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"14"},"finish_reason":null}]}
254+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
255255
256− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" c"},"finish_reason":null}]}
256+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" c"},"finish_reason":null}]}
257257
258− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"15"},"finish_reason":null}]}
258+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
259259
260− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
260+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" h"},"finish_reason":null}]}
261261
262− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
262+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
263263
264− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"16"},"finish_reason":null}]}
264+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
265265
266− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
266+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
267267
268− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" m"},"finish_reason":null}]}
268+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
269269
270− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"17"},"finish_reason":null}]}
270+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
271271
272− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
272+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" f"},"finish_reason":null}]}
273273
274− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
274+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"8"},"finish_reason":null}]}
275275
276− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" i"},"finish_reason":null}]}
276+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" o"},"finish_reason":null}]}
277277
278− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"19"},"finish_reason":null}]}
278+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"9"},"finish_reason":null}]}
279279
280− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" n"},"finish_reason":null}]}
280+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
281281
282− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"20"},"finish_reason":null}]}
282+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"10"},"finish_reason":null}]}
283283
284− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
284+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
285285
286− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
286+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
287287
288− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"21"},"finish_reason":null}]}
288+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
289289
290− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
290+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
291291
292− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" i"},"finish_reason":null}]}
292+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" f"},"finish_reason":null}]}
293293
294− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"22"},"finish_reason":null}]}
294+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"12"},"finish_reason":null}]}
295295
296− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" n"},"finish_reason":null}]}
296+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" u"},"finish_reason":null}]}
297297
298− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"23"},"finish_reason":null}]}
298+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"13"},"finish_reason":null}]}
299299
300− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
300+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" n"},"finish_reason":null}]}
301301
302− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
302+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"14"},"finish_reason":null}]}
303303
304− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"24"},"finish_reason":null}]}
304+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" c"},"finish_reason":null}]}
305305
306− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
306+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"15"},"finish_reason":null}]}
307307
308− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" G"},"finish_reason":null}]}
308+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
309309
310− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"25"},"finish_reason":null}]}
310+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
311311
312− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" o"},"finish_reason":null}]}
312+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"16"},"finish_reason":null}]}
313313
314− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"26"},"finish_reason":null}]}
314+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
315315
316− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
316+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" m"},"finish_reason":null}]}
317317
318− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
318+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"17"},"finish_reason":null}]}
319319
320− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"27"},"finish_reason":null}]}
320+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
321321
322− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
322+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
323323
324− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
324+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" i"},"finish_reason":null}]}
325325
326− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"28"},"finish_reason":null}]}
326+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"19"},"finish_reason":null}]}
327327
328− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" e"},"finish_reason":null}]}
328+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" n"},"finish_reason":null}]}
329329
330− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"29"},"finish_reason":null}]}
330+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"20"},"finish_reason":null}]}
331331
332− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" p"},"finish_reason":null}]}
332+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
333333
334− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"30"},"finish_reason":null}]}
334+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
335335
336− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" o"},"finish_reason":null}]}
336+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"21"},"finish_reason":null}]}
337337
338− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"31"},"finish_reason":null}]}
338+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
339339
340− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" s"},"finish_reason":null}]}
340+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" i"},"finish_reason":null}]}
341341
342− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"32"},"finish_reason":null}]}
342+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"22"},"finish_reason":null}]}
343343
344− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
344+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" n"},"finish_reason":null}]}
345345
346− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
346+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"23"},"finish_reason":null}]}
347347
348− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"33"},"finish_reason":null}]}
348+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
349349
350− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
350+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
351351
352− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" w"},"finish_reason":null}]}
352+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"24"},"finish_reason":null}]}
353353
354− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
354+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
355355
356− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" i"},"finish_reason":null}]}
356+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" G"},"finish_reason":null}]}
357357
358− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"35"},"finish_reason":null}]}
358+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"25"},"finish_reason":null}]}
359359
360− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" t"},"finish_reason":null}]}
360+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" o"},"finish_reason":null}]}
361361
362− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"36"},"finish_reason":null}]}
362+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"26"},"finish_reason":null}]}
363363
364− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" h"},"finish_reason":null}]}
364+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
365365
366− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"37"},"finish_reason":null}]}
366+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
367367
368− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
368+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"27"},"finish_reason":null}]}
369369
370− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
370+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
371371
372− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"38"},"finish_reason":null}]}
372+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
373373
374− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
374+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"28"},"finish_reason":null}]}
375375
376− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" S"},"finish_reason":null}]}
376+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" e"},"finish_reason":null}]}
377377
378− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"39"},"finish_reason":null}]}
378+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"29"},"finish_reason":null}]}
379379
380− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" o"},"finish_reason":null}]}
380+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" p"},"finish_reason":null}]}
381381
382− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"40"},"finish_reason":null}]}
382+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"30"},"finish_reason":null}]}
383383
384− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" u"},"finish_reason":null}]}
384+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" o"},"finish_reason":null}]}
385385
386− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"41"},"finish_reason":null}]}
386+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"31"},"finish_reason":null}]}
387387
388− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
388+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" s"},"finish_reason":null}]}
389389
390− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"42"},"finish_reason":null}]}
390+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"32"},"finish_reason":null}]}
391391
392− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" c"},"finish_reason":null}]}
392+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
393393
394− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"43"},"finish_reason":null}]}
394+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
395395
396− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" e"},"finish_reason":null}]}
396+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"33"},"finish_reason":null}]}
397397
398− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"44"},"finish_reason":null}]}
398+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
399399
400− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" g"},"finish_reason":null}]}
400+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" w"},"finish_reason":null}]}
401401
402− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"45"},"finish_reason":null}]}
402+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
403403
404− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
404+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" i"},"finish_reason":null}]}
405405
406− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"46"},"finish_reason":null}]}
406+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"35"},"finish_reason":null}]}
407407
408− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
408+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" t"},"finish_reason":null}]}
409409
410− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"47"},"finish_reason":null}]}
410+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"36"},"finish_reason":null}]}
411411
412− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" p"},"finish_reason":null}]}
412+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" h"},"finish_reason":null}]}
413413
414− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"48"},"finish_reason":null}]}
414+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"37"},"finish_reason":null}]}
415415
416− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" h"},"finish_reason":null}]}
416+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
417417
418− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"49"},"finish_reason":null}]}
418+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"space"},"finish_reason":null}]}
419419
420− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
420+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"38"},"finish_reason":null}]}
421421
422− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
422+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
423423
424− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
424+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" S"},"finish_reason":null}]}
425425
426− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"49"},"finish_reason":null}]}
426+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"39"},"finish_reason":null}]}
427427
428− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
428+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" o"},"finish_reason":null}]}
429429
430− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
430+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"40"},"finish_reason":null}]}
431431
432− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" okay"},"finish_reason":null}]}
432+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" u"},"finish_reason":null}]}
433433
434− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
434+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"41"},"finish_reason":null}]}
435435
436− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
436+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
437437
438− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" within"},"finish_reason":null}]}
438+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"42"},"finish_reason":null}]}
439439
440− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
440+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" c"},"finish_reason":null}]}
441441
442− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
442+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"43"},"finish_reason":null}]}
443443
444− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
444+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" e"},"finish_reason":null}]}
445445
446− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Return"},"finish_reason":null}]}
446+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"44"},"finish_reason":null}]}
447447
448− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" exactly"},"finish_reason":null}]}
448+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" g"},"finish_reason":null}]}
449449
450− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
450+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"45"},"finish_reason":null}]}
451451
452− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
452+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" r"},"finish_reason":null}]}
453453
454− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
454+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"46"},"finish_reason":null}]}
455455
456− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Search"},"finish_reason":null}]}
456+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
457457
458− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" for"},"finish_reason":null}]}
458+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"47"},"finish_reason":null}]}
459459
460− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" func"},"finish_reason":null}]}
460+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" p"},"finish_reason":null}]}
461461
462− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" main"},"finish_reason":null}]}
462+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"48"},"finish_reason":null}]}
463463
464− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
464+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" h"},"finish_reason":null}]}
465465
466− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Go"},"finish_reason":null}]}
466+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"49"},"finish_reason":null}]}
467467
468− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" repos"},"finish_reason":null}]}
468+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
469469
470− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" with"},"finish_reason":null}]}
470+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
471471
472− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Source"},"finish_reason":null}]}
472+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
473473
474− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"graph"},"finish_reason":null}]}
474+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"49"},"finish_reason":null}]}
475475
476− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
476+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
477477
478− data: {"id":"chatcmpl-a4bbab45033484e4356c116d","object":"chat.completion.chunk","created":1778531405,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":36,"completion_tokens":233,"total_tokens":445,"prompt_tokens_details":{"cached_tokens":176}}}
478+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
479+
480+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" fine"},"finish_reason":null}]}
481+
482+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" (\u003c"},"finish_reason":null}]}
483+
484+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
485+
486+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
487+
488+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" No"},"finish_reason":null}]}
489+
490+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
491+
492+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
493+
494+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" colon"},"finish_reason":null}]}
495+
496+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
497+
498+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Must"},"finish_reason":null}]}
499+
500+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
501+
502+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
503+
504+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
505+
506+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
507+
508+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Return"},"finish_reason":null}]}
509+
510+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" that"},"finish_reason":null}]}
511+
512+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
513+
514+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Search"},"finish_reason":null}]}
515+
516+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" for"},"finish_reason":null}]}
517+
518+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" func"},"finish_reason":null}]}
519+
520+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" main"},"finish_reason":null}]}
521+
522+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
523+
524+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Go"},"finish_reason":null}]}
525+
526+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" repos"},"finish_reason":null}]}
527+
528+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" with"},"finish_reason":null}]}
529+
530+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Source"},"finish_reason":null}]}
531+
532+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"graph"},"finish_reason":null}]}
533+
534+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
535+
536+ data: {"id":"chatcmpl-35bd80f4ca07eeaee979b148","object":"chat.completion.chunk","created":1778597398,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":152,"completion_tokens":262,"total_tokens":478,"prompt_tokens_details":{"cached_tokens":64}}}
479537
480538 data: [DONE]
481539
@@ -484,15 +542,15 @@ interactions:
484542 - text/event-stream
485543 status: 200 OK
486544 code: 200
487− duration: 716.389167ms
545+ duration: 620.468833ms
488546- id: 1
489547 request:
490548 proto: HTTP/1.1
491549 proto_major: 1
492550 proto_minor: 1
493− content_length: 33675
551+ content_length: 33657
494552 host: ""
495− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
496554 headers:
497555 Accept:
498556 - application/json
@@ -509,15 +567,53 @@ interactions:
509567 content_length: -1
510568 uncompressed: true
511569 body: |+
512− data: {"id":"chatcmpl-2f5198b2a71ced0dd9f45dba","object":"chat.completion.chunk","created":1778531409,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
570+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
571+
572+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
513573
514− data: {"id":"chatcmpl-2f5198b2a71ced0dd9f45dba","object":"chat.completion.chunk","created":1778531409,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_e3eaf808c5814da788744783","type":"function","index":0,"function":{"name":"sourcegraph","arguments":""}}]},"finish_reason":null}]}
574+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
515575
516− data: {"id":"chatcmpl-2f5198b2a71ced0dd9f45dba","object":"chat.completion.chunk","created":1778531409,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"count\":20,\"query\":\"func main lang:Go\"}"}}]},"finish_reason":null}]}
576+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" wants me to"},"finish_reason":null}]}
517577
518− data: {"id":"chatcmpl-2f5198b2a71ced0dd9f45dba","object":"chat.completion.chunk","created":1778531409,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
578+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" use the"},"finish_reason":null}]}
519579
520− data: {"id":"chatcmpl-2f5198b2a71ced0dd9f45dba","object":"chat.completion.chunk","created":1778531409,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":703,"completion_tokens":22,"total_tokens":7765,"prompt_tokens_details":{"cached_tokens":7040}}}
580+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" Sourcegraph"},"finish_reason":null}]}
581+
582+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" tool to"},"finish_reason":null}]}
583+
584+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" search for '"},"finish_reason":null}]}
585+
586+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"func"},"finish_reason":null}]}
587+
588+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" main' in"},"finish_reason":null}]}
589+
590+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" Go repositories"},"finish_reason":null}]}
591+
592+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
593+
594+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_3377a986e2324af1a0d22066","type":"function","index":0,"function":{"name":"sourcegraph","arguments":""}}]},"finish_reason":null}]}
595+
596+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":""}}]},"finish_reason":null}]}
597+
598+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
599+
600+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"count\": "}}]},"finish_reason":null}]}
601+
602+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"20"}}]},"finish_reason":null}]}
603+
604+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":", \"query\": "}}]},"finish_reason":null}]}
605+
606+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"func main"}}]},"finish_reason":null}]}
607+
608+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" lang:Go"}}]},"finish_reason":null}]}
609+
610+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\""}}]},"finish_reason":null}]}
611+
612+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
613+
614+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
615+
616+ data: {"id":"chatcmpl-adbd389de8021f205d5cc62b","object":"chat.completion.chunk","created":1778597402,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":7745,"completion_tokens":43,"total_tokens":7788,"completion_tokens_details":{"reasoning_tokens":21}}}
521617
522618 data: [DONE]
523619
@@ -526,7 +622,7 @@ interactions:
526622 - text/event-stream
527623 status: 200 OK
528624 code: 200
529− duration: 3.929344084s
625+ duration: 3.692503542s
530626- id: 2
531627 request:
532628 proto: HTTP/1.1
@@ -548,21 +644,21 @@ interactions:
548644 proto_minor: 0
549645 content_length: -1
550646 uncompressed: true
551− body: '{"data":{"search":{"results":{"matchCount":30,"limitHit":true,"resultCount":30,"approximateResultCount":"30+","missing":[],"timedout":[],"indexUnavailable":false,"results":[{"__typename":"FileMatch","repository":{"name":"github.com/GoesToEleven/GolangTraining"},"file":{"path":"14_functions/10_func-expression/01_before-func-expression/main.go","url":"/r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/10_func-expression/01_before-func-expression/main.go","content":"package main\n\nimport \"fmt\"\n\nfunc greeting() {\n\tfmt.Println(\"Hello world!\")\n}\n\nfunc main() {\n\tgreeting()\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":8,"offsetAndLengths":[[0,9]]},{"preview":"package main","lineNumber":0,"offsetAndLengths":[[8,4]]},{"preview":"func greeting() {","lineNumber":4,"offsetAndLengths":[[0,4]]}]},{"__typename":"FileMatch","repository":{"name":"github.com/GoesToEleven/GolangTraining"},"file":{"path":"14_functions/10_func-expression/02_func-expression/main.go","url":"/r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/10_func-expression/02_func-expression/main.go","content":"package main\n\nimport \"fmt\"\n\nfunc main() {\n\n\tgreeting := func() {\n\t\tfmt.Println(\"Hello world!\")\n\t}\n\n\tgreeting()\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":4,"offsetAndLengths":[[0,9]]},{"preview":"\tgreeting := func() {","lineNumber":6,"offsetAndLengths":[[13,4]]},{"preview":"package main","lineNumber":0,"offsetAndLengths":[[8,4]]}]},{"__typename":"FileMatch","repository":{"name":"github.com/GoesToEleven/GolangTraining"},"file":{"path":"14_functions/10_func-expression/03_func-expression_shows-type/main.go","url":"/r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/10_func-expression/03_func-expression_shows-type/main.go","content":"package main\n\nimport \"fmt\"\n\nfunc main() {\n\n\tgreeting := func() {\n\t\tfmt.Println(\"Hello world!\")\n\t}\n\n\tgreeting()\n\tfmt.Printf(\"%T\\n\", greeting)\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":4,"offsetAndLengths":[[0,9]]},{"preview":"\tgreeting := func() {","lineNumber":6,"offsetAndLengths":[[13,4]]},{"preview":"package main","lineNumber":0,"offsetAndLengths":[[8,4]]}]},{"__typename":"FileMatch","repository":{"name":"github.com/GoesToEleven/GolangTraining"},"file":{"path":"14_functions/10_func-expression/04_another-way_func-expression/main.go","url":"/r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/10_func-expression/04_another-way_func-expression/main.go","content":"package main\n\nimport \"fmt\"\n\nfunc makeGreeter() func() string {\n\treturn func() string {\n\t\treturn \"Hello world!\"\n\t}\n}\n\nfunc main() {\n\tgreet := makeGreeter()\n\tfmt.Println(greet())\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":10,"offsetAndLengths":[[0,9]]},{"preview":"package main","lineNumber":0,"offsetAndLengths":[[8,4]]},{"preview":"func makeGreeter() func() string {","lineNumber":4,"offsetAndLengths":[[0,4],[19,4]]},{"preview":"\treturn func() string {","lineNumber":5,"offsetAndLengths":[[8,4]]}]},{"__typename":"FileMatch","repository":{"name":"github.com/GoesToEleven/GolangTraining"},"file":{"path":"14_functions/10_func-expression/05_another-way_func-expression_shows-type/main.go","url":"/r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/10_func-expression/05_another-way_func-expression_shows-type/main.go","content":"package main\n\nimport \"fmt\"\n\nfunc makeGreeter() func() string {\n\treturn func() string {\n\t\treturn \"Hello world!\"\n\t}\n}\n\nfunc main() {\n\tgreet := makeGreeter()\n\tfmt.Println(greet())\n\tfmt.Printf(\"%T\\n\", greet)\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":10,"offsetAndLengths":[[0,9]]},{"preview":"package main","lineNumber":0,"offsetAndLengths":[[8,4]]},{"preview":"func makeGreeter() func() string {","lineNumber":4,"offsetAndLengths":[[0,4],[19,4]]},{"preview":"\treturn func() string {","lineNumber":5,"offsetAndLengths":[[8,4]]}]},{"__typename":"FileMatch","repository":{"name":"github.com/mauricioabreu/golings"},"file":{"path":"exercises/functions/functions1/main.go","url":"/r/github.com/mauricioabreu/golings/-/blob/exercises/functions/functions1/main.go","content":"// functions1\n// Make me compile!\n\n// I AM NOT DONE\npackage main\n\nfunc main() {\n\tcall_me()\n}\n"},"lineMatches":[{"preview":"package main","lineNumber":4,"offsetAndLengths":[[8,4]]},{"preview":"func main() {","lineNumber":6,"offsetAndLengths":[[0,9]]},{"preview":"// functions1","lineNumber":0,"offsetAndLengths":[[3,4]]}]},{"__typename":"FileMatch","repository":{"name":"github.com/mauricioabreu/golings"},"file":{"path":"exercises/anonymous_functions/anonymous_functions2/main.go","url":"/r/github.com/mauricioabreu/golings/-/blob/exercises/anonymous_functions/anonymous_functions2/main.go","content":"// anonymous functions2\n// Make me compile!\n\n// I AM NOT DONE\npackage main\n\nimport \"fmt\"\n\nfunc main() {\n\tvar sayBye func(name string)\n\n\tsayBye = func() {\n\t\tfmt.Printf(\"Bye %s\", n)\n\t}\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":8,"offsetAndLengths":[[0,9]]},{"preview":"\tvar sayBye func(name string)","lineNumber":9,"offsetAndLengths":[[12,4]]},{"preview":"\tsayBye = func() {","lineNumber":11,"offsetAndLengths":[[10,4]]},{"preview":"package main","lineNumber":4,"offsetAndLengths":[[8,4]]},{"preview":"// anonymous functions2","lineNumber":0,"offsetAndLengths":[[13,4]]}]},{"__typename":"FileMatch","repository":{"name":"github.com/mauricioabreu/golings"},"file":{"path":"exercises/anonymous_functions/anonymous_functions1/main.go","url":"/r/github.com/mauricioabreu/golings/-/blob/exercises/anonymous_functions/anonymous_functions1/main.go","content":"// anonymous functions1\n// Make me compile!\n\n// I AM NOT DONE\npackage main\n\nimport \"fmt\"\n\nfunc main() {\n\n\tfunc(name string) {\n\t\tfmt.Printf(\"Hello %s\", name)\n\t}()\n\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":8,"offsetAndLengths":[[0,9]]},{"preview":"\tfunc(name string) {","lineNumber":10,"offsetAndLengths":[[1,4]]},{"preview":"package main","lineNumber":4,"offsetAndLengths":[[8,4]]}]}]}}}}'
647+ body: '{"data":{"search":{"results":{"matchCount":30,"limitHit":true,"resultCount":30,"approximateResultCount":"30+","missing":[],"timedout":[],"indexUnavailable":false,"results":[{"__typename":"FileMatch","repository":{"name":"github.com/GoesToEleven/GolangTraining"},"file":{"path":"14_functions/10_func-expression/01_before-func-expression/main.go","url":"/r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/10_func-expression/01_before-func-expression/main.go","content":"package main\n\nimport \"fmt\"\n\nfunc greeting() {\n\tfmt.Println(\"Hello world!\")\n}\n\nfunc main() {\n\tgreeting()\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":8,"offsetAndLengths":[[0,9]]},{"preview":"package main","lineNumber":0,"offsetAndLengths":[[8,4]]},{"preview":"func greeting() {","lineNumber":4,"offsetAndLengths":[[0,4]]}]},{"__typename":"FileMatch","repository":{"name":"github.com/GoesToEleven/GolangTraining"},"file":{"path":"14_functions/10_func-expression/02_func-expression/main.go","url":"/r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/10_func-expression/02_func-expression/main.go","content":"package main\n\nimport \"fmt\"\n\nfunc main() {\n\n\tgreeting := func() {\n\t\tfmt.Println(\"Hello world!\")\n\t}\n\n\tgreeting()\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":4,"offsetAndLengths":[[0,9]]},{"preview":"\tgreeting := func() {","lineNumber":6,"offsetAndLengths":[[13,4]]},{"preview":"package main","lineNumber":0,"offsetAndLengths":[[8,4]]}]},{"__typename":"FileMatch","repository":{"name":"github.com/GoesToEleven/GolangTraining"},"file":{"path":"14_functions/10_func-expression/03_func-expression_shows-type/main.go","url":"/r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/10_func-expression/03_func-expression_shows-type/main.go","content":"package main\n\nimport \"fmt\"\n\nfunc main() {\n\n\tgreeting := func() {\n\t\tfmt.Println(\"Hello world!\")\n\t}\n\n\tgreeting()\n\tfmt.Printf(\"%T\\n\", greeting)\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":4,"offsetAndLengths":[[0,9]]},{"preview":"\tgreeting := func() {","lineNumber":6,"offsetAndLengths":[[13,4]]},{"preview":"package main","lineNumber":0,"offsetAndLengths":[[8,4]]}]},{"__typename":"FileMatch","repository":{"name":"github.com/GoesToEleven/GolangTraining"},"file":{"path":"14_functions/10_func-expression/04_another-way_func-expression/main.go","url":"/r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/10_func-expression/04_another-way_func-expression/main.go","content":"package main\n\nimport \"fmt\"\n\nfunc makeGreeter() func() string {\n\treturn func() string {\n\t\treturn \"Hello world!\"\n\t}\n}\n\nfunc main() {\n\tgreet := makeGreeter()\n\tfmt.Println(greet())\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":10,"offsetAndLengths":[[0,9]]},{"preview":"package main","lineNumber":0,"offsetAndLengths":[[8,4]]},{"preview":"func makeGreeter() func() string {","lineNumber":4,"offsetAndLengths":[[0,4],[19,4]]},{"preview":"\treturn func() string {","lineNumber":5,"offsetAndLengths":[[8,4]]}]},{"__typename":"FileMatch","repository":{"name":"github.com/GoesToEleven/GolangTraining"},"file":{"path":"14_functions/10_func-expression/05_another-way_func-expression_shows-type/main.go","url":"/r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/10_func-expression/05_another-way_func-expression_shows-type/main.go","content":"package main\n\nimport \"fmt\"\n\nfunc makeGreeter() func() string {\n\treturn func() string {\n\t\treturn \"Hello world!\"\n\t}\n}\n\nfunc main() {\n\tgreet := makeGreeter()\n\tfmt.Println(greet())\n\tfmt.Printf(\"%T\\n\", greet)\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":10,"offsetAndLengths":[[0,9]]},{"preview":"package main","lineNumber":0,"offsetAndLengths":[[8,4]]},{"preview":"func makeGreeter() func() string {","lineNumber":4,"offsetAndLengths":[[0,4],[19,4]]},{"preview":"\treturn func() string {","lineNumber":5,"offsetAndLengths":[[8,4]]}]},{"__typename":"FileMatch","repository":{"name":"github.com/GoesToEleven/GolangTraining"},"file":{"path":"14_functions/12_callbacks/01_print-nums/main.go","url":"/r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/12_callbacks/01_print-nums/main.go","content":"package main\n\nimport \"fmt\"\n\nfunc visit(numbers []int, callback func(int)) {\n\tfor _, n := range numbers {\n\t\tcallback(n)\n\t}\n}\n\nfunc main() {\n\tvisit([]int{1, 2, 3, 4}, func(n int) {\n\t\tfmt.Println(n)\n\t})\n}\n\n// callback: passing a func as an argument\n"},"lineMatches":[{"preview":"func main() {","lineNumber":10,"offsetAndLengths":[[0,9]]},{"preview":"\tvisit([]int{1, 2, 3, 4}, func(n int) {","lineNumber":11,"offsetAndLengths":[[26,4]]},{"preview":"package main","lineNumber":0,"offsetAndLengths":[[8,4]]},{"preview":"func visit(numbers []int, callback func(int)) {","lineNumber":4,"offsetAndLengths":[[0,4],[35,4]]},{"preview":"// callback: passing a func as an argument","lineNumber":16,"offsetAndLengths":[[23,4]]}]},{"__typename":"FileMatch","repository":{"name":"github.com/GoesToEleven/GolangTraining"},"file":{"path":"14_functions/14_defer/01_no-defer/main.go","url":"/r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/14_defer/01_no-defer/main.go","content":"package main\n\nimport \"fmt\"\n\nfunc hello() {\n\tfmt.Print(\"hello \")\n}\n\nfunc world() {\n\tfmt.Println(\"world\")\n}\n\nfunc main() {\n\tworld()\n\thello()\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":12,"offsetAndLengths":[[0,9]]},{"preview":"package main","lineNumber":0,"offsetAndLengths":[[8,4]]},{"preview":"func hello() {","lineNumber":4,"offsetAndLengths":[[0,4]]},{"preview":"func world() {","lineNumber":8,"offsetAndLengths":[[0,4]]}]},{"__typename":"FileMatch","repository":{"name":"github.com/GoesToEleven/GolangTraining"},"file":{"path":"14_functions/14_defer/02_with-defer/main.go","url":"/r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/14_defer/02_with-defer/main.go","content":"package main\n\nimport \"fmt\"\n\nfunc hello() {\n\tfmt.Print(\"hello \")\n}\n\nfunc world() {\n\tfmt.Println(\"world\")\n}\n\nfunc main() {\n\tdefer world()\n\thello()\n}\n"},"lineMatches":[{"preview":"func main() {","lineNumber":12,"offsetAndLengths":[[0,9]]}]}]}}}}'
552648 headers:
553649 Content-Type:
554650 - application/json
555651 status: 200 OK
556652 code: 200
557− duration: 1.987359333s
653+ duration: 2.251490458s
558654- id: 3
559655 request:
560656 proto: HTTP/1.1
561657 proto_major: 1
562658 proto_minor: 1
563− content_length: 42562
659+ content_length: 42734
564660 host: ""
565− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_e3eaf808c5814da788744783\",\"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/GoesToEleven/GolangTraining/14_functions/10_func-expression/01_before-func-expression/main.go\\n\\nURL: /r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/10_func-expression/01_before-func-expression/main.go\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func greeting() {\\n6| \\tfmt.Println(\\\"Hello world!\\\")\\n7| }\\n8| func main() {\\n9| func main() {\\n10| \\tgreeting()\\n11| }\\n12| \\n```\\n\\n```\\n0| package main\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func greeting() {\\n6| \\tfmt.Println(\\\"Hello world!\\\")\\n7| }\\n8| \\n9| func main() {\\n10| \\tgreeting()\\n```\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| func greeting() {\\n5| func greeting() {\\n6| \\tfmt.Println(\\\"Hello world!\\\")\\n7| }\\n8| \\n9| func main() {\\n10| \\tgreeting()\\n11| }\\n12| \\n```\\n\\n## Result 2: github.com/GoesToEleven/GolangTraining/14_functions/10_func-expression/02_func-expression/main.go\\n\\nURL: /r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/10_func-expression/02_func-expression/main.go\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| func main() {\\n5| func main() {\\n6| \\n7| \\tgreeting := func() {\\n8| \\t\\tfmt.Println(\\\"Hello world!\\\")\\n9| \\t}\\n10| \\n11| \\tgreeting()\\n12| }\\n13| \\n```\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func main() {\\n6| \\tgreeting := func() {\\n7| \\tgreeting := func() {\\n8| \\t\\tfmt.Println(\\\"Hello world!\\\")\\n9| \\t}\\n10| \\n11| \\tgreeting()\\n12| }\\n13| \\n```\\n\\n```\\n0| package main\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func main() {\\n6| \\n7| \\tgreeting := func() {\\n8| \\t\\tfmt.Println(\\\"Hello world!\\\")\\n9| \\t}\\n10| \\n```\\n\\n## Result 3: github.com/GoesToEleven/GolangTraining/14_functions/10_func-expression/03_func-expression_shows-type/main.go\\n\\nURL: /r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/10_func-expression/03_func-expression_shows-type/main.go\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| func main() {\\n5| func main() {\\n6| \\n7| \\tgreeting := func() {\\n8| \\t\\tfmt.Println(\\\"Hello world!\\\")\\n9| \\t}\\n10| \\n11| \\tgreeting()\\n12| \\tfmt.Printf(\\\"%T\\\\n\\\", greeting)\\n13| }\\n14| \\n```\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func main() {\\n6| \\tgreeting := func() {\\n7| \\tgreeting := func() {\\n8| \\t\\tfmt.Println(\\\"Hello world!\\\")\\n9| \\t}\\n10| \\n11| \\tgreeting()\\n12| \\tfmt.Printf(\\\"%T\\\\n\\\", greeting)\\n13| }\\n14| \\n```\\n\\n```\\n0| package main\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func main() {\\n6| \\n7| \\tgreeting := func() {\\n8| \\t\\tfmt.Println(\\\"Hello world!\\\")\\n9| \\t}\\n10| \\n```\\n\\n## Result 4: github.com/GoesToEleven/GolangTraining/14_functions/10_func-expression/04_another-way_func-expression/main.go\\n\\nURL: /r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/10_func-expression/04_another-way_func-expression/main.go\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func makeGreeter() func() string {\\n6| \\treturn func() string {\\n7| \\t\\treturn \\\"Hello world!\\\"\\n8| \\t}\\n9| }\\n10| func main() {\\n11| func main() {\\n12| \\tgreet := makeGreeter()\\n13| \\tfmt.Println(greet())\\n14| }\\n15| \\n```\\n\\n```\\n0| package main\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func makeGreeter() func() string {\\n6| \\treturn func() string {\\n7| \\t\\treturn \\\"Hello world!\\\"\\n8| \\t}\\n9| }\\n10| \\n```\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| func makeGreeter() func() string {\\n5| func makeGreeter() func() string {\\n6| \\treturn func() string {\\n7| \\t\\treturn \\\"Hello world!\\\"\\n8| \\t}\\n9| }\\n10| \\n11| func main() {\\n12| \\tgreet := makeGreeter()\\n13| \\tfmt.Println(greet())\\n14| }\\n```\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| \\treturn func() string {\\n6| \\treturn func() string {\\n7| \\t\\treturn \\\"Hello world!\\\"\\n8| \\t}\\n9| }\\n10| \\n11| func main() {\\n12| \\tgreet := makeGreeter()\\n13| \\tfmt.Println(greet())\\n14| }\\n15| \\n```\\n\\n## Result 5: github.com/GoesToEleven/GolangTraining/14_functions/10_func-expression/05_another-way_func-expression_shows-type/main.go\\n\\nURL: /r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/10_func-expression/05_another-way_func-expression_shows-type/main.go\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func makeGreeter() func() string {\\n6| \\treturn func() string {\\n7| \\t\\treturn \\\"Hello world!\\\"\\n8| \\t}\\n9| }\\n10| func main() {\\n11| func main() {\\n12| \\tgreet := makeGreeter()\\n13| \\tfmt.Println(greet())\\n14| \\tfmt.Printf(\\\"%T\\\\n\\\", greet)\\n15| }\\n16| \\n```\\n\\n```\\n0| package main\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func makeGreeter() func() string {\\n6| \\treturn func() string {\\n7| \\t\\treturn \\\"Hello world!\\\"\\n8| \\t}\\n9| }\\n10| \\n```\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| func makeGreeter() func() string {\\n5| func makeGreeter() func() string {\\n6| \\treturn func() string {\\n7| \\t\\treturn \\\"Hello world!\\\"\\n8| \\t}\\n9| }\\n10| \\n11| func main() {\\n12| \\tgreet := makeGreeter()\\n13| \\tfmt.Println(greet())\\n14| \\tfmt.Printf(\\\"%T\\\\n\\\", greet)\\n```\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| \\treturn func() string {\\n6| \\treturn func() string {\\n7| \\t\\treturn \\\"Hello world!\\\"\\n8| \\t}\\n9| }\\n10| \\n11| func main() {\\n12| \\tgreet := makeGreeter()\\n13| \\tfmt.Println(greet())\\n14| \\tfmt.Printf(\\\"%T\\\\n\\\", greet)\\n15| }\\n```\\n\\n## Result 6: github.com/mauricioabreu/golings/exercises/functions/functions1/main.go\\n\\nURL: /r/github.com/mauricioabreu/golings/-/blob/exercises/functions/functions1/main.go\\n\\n```\\n1| // functions1\\n2| // Make me compile!\\n3| \\n4| package main\\n5| package main\\n6| \\n7| func main() {\\n8| \\tcall_me()\\n9| }\\n10| \\n```\\n\\n```\\n1| // functions1\\n2| // Make me compile!\\n3| \\n4| // I AM NOT DONE\\n5| package main\\n6| func main() {\\n7| func main() {\\n8| \\tcall_me()\\n9| }\\n10| \\n```\\n\\n```\\n0| // functions1\\n1| // functions1\\n2| // Make me compile!\\n3| \\n4| // I AM NOT DONE\\n5| package main\\n6| \\n7| func main() {\\n8| \\tcall_me()\\n9| }\\n10| \\n```\\n\\n## Result 7: github.com/mauricioabreu/golings/exercises/anonymous_functions/anonymous_functions2/main.go\\n\\nURL: /r/github.com/mauricioabreu/golings/-/blob/exercises/anonymous_functions/anonymous_functions2/main.go\\n\\n```\\n1| // anonymous functions2\\n2| // Make me compile!\\n3| \\n4| // I AM NOT DONE\\n5| package main\\n6| \\n7| import \\\"fmt\\\"\\n8| func main() {\\n9| func main() {\\n10| \\tvar sayBye func(name string)\\n11| \\n12| \\tsayBye = func() {\\n13| \\t\\tfmt.Printf(\\\"Bye %s\\\", n)\\n14| \\t}\\n15| }\\n16| \\n```\\n\\n```\\n1| // anonymous functions2\\n2| // Make me compile!\\n3| \\n4| // I AM NOT DONE\\n5| package main\\n6| \\n7| import \\\"fmt\\\"\\n8| \\n9| \\tvar sayBye func(name string)\\n10| \\tvar sayBye func(name string)\\n11| \\n12| \\tsayBye = func() {\\n13| \\t\\tfmt.Printf(\\\"Bye %s\\\", n)\\n14| \\t}\\n15| }\\n16| \\n```\\n\\n```\\n1| // anonymous functions2\\n2| // Make me compile!\\n3| \\n4| // I AM NOT DONE\\n5| package main\\n6| \\n7| import \\\"fmt\\\"\\n8| \\n9| func main() {\\n10| \\tvar sayBye func(name string)\\n11| \\tsayBye = func() {\\n12| \\tsayBye = func() {\\n13| \\t\\tfmt.Printf(\\\"Bye %s\\\", n)\\n14| \\t}\\n15| }\\n16| \\n```\\n\\n```\\n1| // anonymous functions2\\n2| // Make me compile!\\n3| \\n4| package main\\n5| package main\\n6| \\n7| import \\\"fmt\\\"\\n8| \\n9| func main() {\\n10| \\tvar sayBye func(name string)\\n11| \\n12| \\tsayBye = func() {\\n13| \\t\\tfmt.Printf(\\\"Bye %s\\\", n)\\n14| \\t}\\n```\\n\\n```\\n0| // anonymous functions2\\n1| // anonymous functions2\\n2| // Make me compile!\\n3| \\n4| // I AM NOT DONE\\n5| package main\\n6| \\n7| import \\\"fmt\\\"\\n8| \\n9| func main() {\\n10| \\tvar sayBye func(name string)\\n```\\n\\n## Result 8: github.com/mauricioabreu/golings/exercises/anonymous_functions/anonymous_functions1/main.go\\n\\nURL: /r/github.com/mauricioabreu/golings/-/blob/exercises/anonymous_functions/anonymous_functions1/main.go\\n\\n```\\n1| // anonymous functions1\\n2| // Make me compile!\\n3| \\n4| // I AM NOT DONE\\n5| package main\\n6| \\n7| import \\\"fmt\\\"\\n8| func main() {\\n9| func main() {\\n10| \\n11| \\tfunc(name string) {\\n12| \\t\\tfmt.Printf(\\\"Hello %s\\\", name)\\n13| \\t}()\\n14| \\n15| }\\n16| \\n```\\n\\n```\\n1| // anonymous functions1\\n2| // Make me compile!\\n3| \\n4| // I AM NOT DONE\\n5| package main\\n6| \\n7| import \\\"fmt\\\"\\n8| \\n9| func main() {\\n10| \\tfunc(name string) {\\n11| \\tfunc(name string) {\\n12| \\t\\tfmt.Printf(\\\"Hello %s\\\", name)\\n13| \\t}()\\n14| \\n15| }\\n16| \\n```\\n\\n```\\n1| // anonymous functions1\\n2| // Make me compile!\\n3| \\n4| package main\\n5| package main\\n6| \\n7| import \\\"fmt\\\"\\n8| \\n9| func main() {\\n10| \\n11| \\tfunc(name string) {\\n12| \\t\\tfmt.Printf(\\\"Hello %s\\\", name)\\n13| \\t}()\\n14| \\n```\\n\\n\",\"tool_call_id\":\"call_e3eaf808c5814da788744783\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
661+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_3377a986e2324af1a0d22066\",\"function\":{\"arguments\":\"{\\\"count\\\": 20, \\\"query\\\": \\\"func main lang:Go\\\"}\",\"name\":\"sourcegraph\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"The user wants me to use the Sourcegraph tool to search for 'func main' in Go repositories.\"},{\"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/GoesToEleven/GolangTraining/14_functions/10_func-expression/01_before-func-expression/main.go\\n\\nURL: /r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/10_func-expression/01_before-func-expression/main.go\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func greeting() {\\n6| \\tfmt.Println(\\\"Hello world!\\\")\\n7| }\\n8| func main() {\\n9| func main() {\\n10| \\tgreeting()\\n11| }\\n12| \\n```\\n\\n```\\n0| package main\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func greeting() {\\n6| \\tfmt.Println(\\\"Hello world!\\\")\\n7| }\\n8| \\n9| func main() {\\n10| \\tgreeting()\\n```\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| func greeting() {\\n5| func greeting() {\\n6| \\tfmt.Println(\\\"Hello world!\\\")\\n7| }\\n8| \\n9| func main() {\\n10| \\tgreeting()\\n11| }\\n12| \\n```\\n\\n## Result 2: github.com/GoesToEleven/GolangTraining/14_functions/10_func-expression/02_func-expression/main.go\\n\\nURL: /r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/10_func-expression/02_func-expression/main.go\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| func main() {\\n5| func main() {\\n6| \\n7| \\tgreeting := func() {\\n8| \\t\\tfmt.Println(\\\"Hello world!\\\")\\n9| \\t}\\n10| \\n11| \\tgreeting()\\n12| }\\n13| \\n```\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func main() {\\n6| \\tgreeting := func() {\\n7| \\tgreeting := func() {\\n8| \\t\\tfmt.Println(\\\"Hello world!\\\")\\n9| \\t}\\n10| \\n11| \\tgreeting()\\n12| }\\n13| \\n```\\n\\n```\\n0| package main\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func main() {\\n6| \\n7| \\tgreeting := func() {\\n8| \\t\\tfmt.Println(\\\"Hello world!\\\")\\n9| \\t}\\n10| \\n```\\n\\n## Result 3: github.com/GoesToEleven/GolangTraining/14_functions/10_func-expression/03_func-expression_shows-type/main.go\\n\\nURL: /r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/10_func-expression/03_func-expression_shows-type/main.go\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| func main() {\\n5| func main() {\\n6| \\n7| \\tgreeting := func() {\\n8| \\t\\tfmt.Println(\\\"Hello world!\\\")\\n9| \\t}\\n10| \\n11| \\tgreeting()\\n12| \\tfmt.Printf(\\\"%T\\\\n\\\", greeting)\\n13| }\\n14| \\n```\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func main() {\\n6| \\tgreeting := func() {\\n7| \\tgreeting := func() {\\n8| \\t\\tfmt.Println(\\\"Hello world!\\\")\\n9| \\t}\\n10| \\n11| \\tgreeting()\\n12| \\tfmt.Printf(\\\"%T\\\\n\\\", greeting)\\n13| }\\n14| \\n```\\n\\n```\\n0| package main\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func main() {\\n6| \\n7| \\tgreeting := func() {\\n8| \\t\\tfmt.Println(\\\"Hello world!\\\")\\n9| \\t}\\n10| \\n```\\n\\n## Result 4: github.com/GoesToEleven/GolangTraining/14_functions/10_func-expression/04_another-way_func-expression/main.go\\n\\nURL: /r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/10_func-expression/04_another-way_func-expression/main.go\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func makeGreeter() func() string {\\n6| \\treturn func() string {\\n7| \\t\\treturn \\\"Hello world!\\\"\\n8| \\t}\\n9| }\\n10| func main() {\\n11| func main() {\\n12| \\tgreet := makeGreeter()\\n13| \\tfmt.Println(greet())\\n14| }\\n15| \\n```\\n\\n```\\n0| package main\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func makeGreeter() func() string {\\n6| \\treturn func() string {\\n7| \\t\\treturn \\\"Hello world!\\\"\\n8| \\t}\\n9| }\\n10| \\n```\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| func makeGreeter() func() string {\\n5| func makeGreeter() func() string {\\n6| \\treturn func() string {\\n7| \\t\\treturn \\\"Hello world!\\\"\\n8| \\t}\\n9| }\\n10| \\n11| func main() {\\n12| \\tgreet := makeGreeter()\\n13| \\tfmt.Println(greet())\\n14| }\\n```\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| \\treturn func() string {\\n6| \\treturn func() string {\\n7| \\t\\treturn \\\"Hello world!\\\"\\n8| \\t}\\n9| }\\n10| \\n11| func main() {\\n12| \\tgreet := makeGreeter()\\n13| \\tfmt.Println(greet())\\n14| }\\n15| \\n```\\n\\n## Result 5: github.com/GoesToEleven/GolangTraining/14_functions/10_func-expression/05_another-way_func-expression_shows-type/main.go\\n\\nURL: /r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/10_func-expression/05_another-way_func-expression_shows-type/main.go\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func makeGreeter() func() string {\\n6| \\treturn func() string {\\n7| \\t\\treturn \\\"Hello world!\\\"\\n8| \\t}\\n9| }\\n10| func main() {\\n11| func main() {\\n12| \\tgreet := makeGreeter()\\n13| \\tfmt.Println(greet())\\n14| \\tfmt.Printf(\\\"%T\\\\n\\\", greet)\\n15| }\\n16| \\n```\\n\\n```\\n0| package main\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func makeGreeter() func() string {\\n6| \\treturn func() string {\\n7| \\t\\treturn \\\"Hello world!\\\"\\n8| \\t}\\n9| }\\n10| \\n```\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| func makeGreeter() func() string {\\n5| func makeGreeter() func() string {\\n6| \\treturn func() string {\\n7| \\t\\treturn \\\"Hello world!\\\"\\n8| \\t}\\n9| }\\n10| \\n11| func main() {\\n12| \\tgreet := makeGreeter()\\n13| \\tfmt.Println(greet())\\n14| \\tfmt.Printf(\\\"%T\\\\n\\\", greet)\\n```\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| \\treturn func() string {\\n6| \\treturn func() string {\\n7| \\t\\treturn \\\"Hello world!\\\"\\n8| \\t}\\n9| }\\n10| \\n11| func main() {\\n12| \\tgreet := makeGreeter()\\n13| \\tfmt.Println(greet())\\n14| \\tfmt.Printf(\\\"%T\\\\n\\\", greet)\\n15| }\\n```\\n\\n## Result 6: github.com/GoesToEleven/GolangTraining/14_functions/12_callbacks/01_print-nums/main.go\\n\\nURL: /r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/12_callbacks/01_print-nums/main.go\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func visit(numbers []int, callback func(int)) {\\n6| \\tfor _, n := range numbers {\\n7| \\t\\tcallback(n)\\n8| \\t}\\n9| }\\n10| func main() {\\n11| func main() {\\n12| \\tvisit([]int{1, 2, 3, 4}, func(n int) {\\n13| \\t\\tfmt.Println(n)\\n14| \\t})\\n15| }\\n16| \\n17| // callback: passing a func as an argument\\n18| \\n```\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func visit(numbers []int, callback func(int)) {\\n6| \\tfor _, n := range numbers {\\n7| \\t\\tcallback(n)\\n8| \\t}\\n9| }\\n10| \\n11| \\tvisit([]int{1, 2, 3, 4}, func(n int) {\\n12| \\tvisit([]int{1, 2, 3, 4}, func(n int) {\\n13| \\t\\tfmt.Println(n)\\n14| \\t})\\n15| }\\n16| \\n17| // callback: passing a func as an argument\\n18| \\n```\\n\\n```\\n0| package main\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func visit(numbers []int, callback func(int)) {\\n6| \\tfor _, n := range numbers {\\n7| \\t\\tcallback(n)\\n8| \\t}\\n9| }\\n10| \\n```\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| func visit(numbers []int, callback func(int)) {\\n5| func visit(numbers []int, callback func(int)) {\\n6| \\tfor _, n := range numbers {\\n7| \\t\\tcallback(n)\\n8| \\t}\\n9| }\\n10| \\n11| func main() {\\n12| \\tvisit([]int{1, 2, 3, 4}, func(n int) {\\n13| \\t\\tfmt.Println(n)\\n14| \\t})\\n```\\n\\n```\\n6| \\tfor _, n := range numbers {\\n7| \\t\\tcallback(n)\\n8| \\t}\\n9| }\\n10| \\n11| func main() {\\n12| \\tvisit([]int{1, 2, 3, 4}, func(n int) {\\n13| \\t\\tfmt.Println(n)\\n14| \\t})\\n15| }\\n16| // callback: passing a func as an argument\\n17| // callback: passing a func as an argument\\n18| \\n```\\n\\n## Result 7: github.com/GoesToEleven/GolangTraining/14_functions/14_defer/01_no-defer/main.go\\n\\nURL: /r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/14_defer/01_no-defer/main.go\\n\\n```\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func hello() {\\n6| \\tfmt.Print(\\\"hello \\\")\\n7| }\\n8| \\n9| func world() {\\n10| \\tfmt.Println(\\\"world\\\")\\n11| }\\n12| func main() {\\n13| func main() {\\n14| \\tworld()\\n15| \\thello()\\n16| }\\n17| \\n```\\n\\n```\\n0| package main\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func hello() {\\n6| \\tfmt.Print(\\\"hello \\\")\\n7| }\\n8| \\n9| func world() {\\n10| \\tfmt.Println(\\\"world\\\")\\n```\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| func hello() {\\n5| func hello() {\\n6| \\tfmt.Print(\\\"hello \\\")\\n7| }\\n8| \\n9| func world() {\\n10| \\tfmt.Println(\\\"world\\\")\\n11| }\\n12| \\n13| func main() {\\n14| \\tworld()\\n```\\n\\n```\\n1| package main\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func hello() {\\n6| \\tfmt.Print(\\\"hello \\\")\\n7| }\\n8| func world() {\\n9| func world() {\\n10| \\tfmt.Println(\\\"world\\\")\\n11| }\\n12| \\n13| func main() {\\n14| \\tworld()\\n15| \\thello()\\n16| }\\n17| \\n```\\n\\n## Result 8: github.com/GoesToEleven/GolangTraining/14_functions/14_defer/02_with-defer/main.go\\n\\nURL: /r/github.com/GoesToEleven/GolangTraining/-/blob/14_functions/14_defer/02_with-defer/main.go\\n\\n```\\n2| \\n3| import \\\"fmt\\\"\\n4| \\n5| func hello() {\\n6| \\tfmt.Print(\\\"hello \\\")\\n7| }\\n8| \\n9| func world() {\\n10| \\tfmt.Println(\\\"world\\\")\\n11| }\\n12| func main() {\\n13| func main() {\\n14| \\tdefer world()\\n15| \\thello()\\n16| }\\n17| \\n```\\n\\n\",\"tool_call_id\":\"call_3377a986e2324af1a0d22066\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
566662 headers:
567663 Accept:
568664 - application/json
@@ -579,769 +675,385 @@ interactions:
579675 content_length: -1
580676 uncompressed: true
581677 body: |+
582− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
583−
584− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Found"},"finish_reason":null}]}
585−
586− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" **"},"finish_reason":null}]}
587−
588− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"30"},"finish_reason":null}]}
589−
590− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"+"},"finish_reason":null}]}
591−
592− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" matches"},"finish_reason":null}]}
593−
594− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"**"},"finish_reason":null}]}
595−
596− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" for"},"finish_reason":null}]}
597−
598− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
599−
600− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"func"},"finish_reason":null}]}
601−
602− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" main"},"finish_reason":null}]}
603−
604− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
605−
606− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
607−
608− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Go"},"finish_reason":null}]}
609−
610− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" repos"},"finish_reason":null}]}
611−
612− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"."},"finish_reason":null}]}
613−
614− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Here"},"finish_reason":null}]}
615−
616− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"'s"},"finish_reason":null}]}
617−
618− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" a"},"finish_reason":null}]}
619−
620− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" summary"},"finish_reason":null}]}
621−
622− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" of"},"finish_reason":null}]}
623−
624− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" notable"},"finish_reason":null}]}
625−
626− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" results"},"finish_reason":null}]}
627−
628− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":\n\n"},"finish_reason":null}]}
629−
630− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"|"},"finish_reason":null}]}
631−
632− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" #"},"finish_reason":null}]}
633−
634− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
635−
636− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Repository"},"finish_reason":null}]}
637−
638− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
639−
640− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" File"},"finish_reason":null}]}
641−
642− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
643−
644− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Description"},"finish_reason":null}]}
645−
646− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |\n"},"finish_reason":null}]}
647−
648− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"|"},"finish_reason":null}]}
649−
650− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"---"},"finish_reason":null}]}
651−
652− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"|"},"finish_reason":null}]}
653−
654− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-----------"},"finish_reason":null}]}
655−
656− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"|"},"finish_reason":null}]}
657−
658− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"------"},"finish_reason":null}]}
659−
660− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"|"},"finish_reason":null}]}
661−
662− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-------------"},"finish_reason":null}]}
663−
664− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"|\n"},"finish_reason":null}]}
665−
666− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"|"},"finish_reason":null}]}
667−
668− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}]}
669−
670− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"1"},"finish_reason":null}]}
671−
672− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
673−
674− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
675−
676− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"G"},"finish_reason":null}]}
677−
678− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"oes"},"finish_reason":null}]}
679−
680− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"To"},"finish_reason":null}]}
681−
682− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Ele"},"finish_reason":null}]}
683−
684− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ven"},"finish_reason":null}]}
685−
686− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/G"},"finish_reason":null}]}
687−
688− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"olang"},"finish_reason":null}]}
689−
690− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Training"},"finish_reason":null}]}
691−
692− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
693−
694− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
695−
696− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
697−
698− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"..."},"finish_reason":null}]}
699−
700− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/"},"finish_reason":null}]}
701−
702− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"10"},"finish_reason":null}]}
703−
704− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_func"},"finish_reason":null}]}
705−
706− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-expression"},"finish_reason":null}]}
707−
708− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/"},"finish_reason":null}]}
709−
710− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"01"},"finish_reason":null}]}
711−
712− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_before"},"finish_reason":null}]}
713−
714− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-f"},"finish_reason":null}]}
715−
716− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"unc"},"finish_reason":null}]}
717−
718− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-expression"},"finish_reason":null}]}
719−
720− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/main"},"finish_reason":null}]}
721−
722− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
723−
724− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
725−
726− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
727−
728− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Simple"},"finish_reason":null}]}
729−
730− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" greeting"},"finish_reason":null}]}
731−
732− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" function"},"finish_reason":null}]}
733−
734− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |\n"},"finish_reason":null}]}
735−
736− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"|"},"finish_reason":null}]}
737−
738− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}]}
739−
740− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"2"},"finish_reason":null}]}
741−
742− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
743−
744− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
745−
746− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"G"},"finish_reason":null}]}
747−
748− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"oes"},"finish_reason":null}]}
749−
750− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"To"},"finish_reason":null}]}
751−
752− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Ele"},"finish_reason":null}]}
753−
754− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ven"},"finish_reason":null}]}
755−
756− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/G"},"finish_reason":null}]}
757−
758− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"olang"},"finish_reason":null}]}
759−
760− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Training"},"finish_reason":null}]}
761−
762− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
763−
764− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
765−
766− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
767−
768− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"..."},"finish_reason":null}]}
769−
770− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/"},"finish_reason":null}]}
771−
772− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"02"},"finish_reason":null}]}
773−
774− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_func"},"finish_reason":null}]}
775−
776− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-expression"},"finish_reason":null}]}
777−
778− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/main"},"finish_reason":null}]}
779−
780− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
781−
782− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
783−
784− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
785−
786− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Function"},"finish_reason":null}]}
787−
788− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" expression"},"finish_reason":null}]}
789−
790− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" example"},"finish_reason":null}]}
791−
792− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |\n"},"finish_reason":null}]}
793−
794− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"|"},"finish_reason":null}]}
795−
796− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}]}
797−
798− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"3"},"finish_reason":null}]}
799−
800− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
801−
802− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
803−
804− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"G"},"finish_reason":null}]}
805−
806− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"oes"},"finish_reason":null}]}
807−
808− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"To"},"finish_reason":null}]}
809−
810− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Ele"},"finish_reason":null}]}
811−
812− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ven"},"finish_reason":null}]}
813−
814− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/G"},"finish_reason":null}]}
815−
816− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"olang"},"finish_reason":null}]}
817−
818− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Training"},"finish_reason":null}]}
819−
820− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
821−
822− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
823−
824− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
825−
826− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"..."},"finish_reason":null}]}
827−
828− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/"},"finish_reason":null}]}
829−
830− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"03"},"finish_reason":null}]}
831−
832− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_func"},"finish_reason":null}]}
833−
834− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-expression"},"finish_reason":null}]}
835−
836− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_sh"},"finish_reason":null}]}
837−
838− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ows"},"finish_reason":null}]}
839−
840− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-type"},"finish_reason":null}]}
841−
842− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/main"},"finish_reason":null}]}
843−
844− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
845−
846− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
847−
848− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
849−
850− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Function"},"finish_reason":null}]}
851−
852− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" expression"},"finish_reason":null}]}
853−
854− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" with"},"finish_reason":null}]}
855−
856− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" type"},"finish_reason":null}]}
857−
858− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" printing"},"finish_reason":null}]}
859−
860− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |\n"},"finish_reason":null}]}
861−
862− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"|"},"finish_reason":null}]}
863−
864− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}]}
865−
866− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"4"},"finish_reason":null}]}
867−
868− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
869−
870− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
871−
872− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"G"},"finish_reason":null}]}
873−
874− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"oes"},"finish_reason":null}]}
875−
876− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"To"},"finish_reason":null}]}
877−
878− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Ele"},"finish_reason":null}]}
879−
880− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ven"},"finish_reason":null}]}
881−
882− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/G"},"finish_reason":null}]}
883−
884− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"olang"},"finish_reason":null}]}
885−
886− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Training"},"finish_reason":null}]}
887−
888− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
889−
890− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
891−
892− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
893−
894− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"..."},"finish_reason":null}]}
895−
896− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/"},"finish_reason":null}]}
897−
898− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"04"},"finish_reason":null}]}
899−
900− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_an"},"finish_reason":null}]}
901−
902− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"other"},"finish_reason":null}]}
903−
904− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-way"},"finish_reason":null}]}
905−
906− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_func"},"finish_reason":null}]}
907−
908− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-expression"},"finish_reason":null}]}
909−
910− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/main"},"finish_reason":null}]}
911−
912− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
913−
914− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
915−
916− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
917−
918− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Factory"},"finish_reason":null}]}
919−
920− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" function"},"finish_reason":null}]}
921−
922− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" returning"},"finish_reason":null}]}
923−
924− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" closure"},"finish_reason":null}]}
925−
926− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |\n"},"finish_reason":null}]}
927−
928− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"|"},"finish_reason":null}]}
929−
930− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}]}
931−
932− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"5"},"finish_reason":null}]}
933−
934− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
935−
936− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
937−
938− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"G"},"finish_reason":null}]}
939−
940− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"oes"},"finish_reason":null}]}
941−
942− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"To"},"finish_reason":null}]}
943−
944− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Ele"},"finish_reason":null}]}
945−
946− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ven"},"finish_reason":null}]}
947−
948− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/G"},"finish_reason":null}]}
949−
950− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"olang"},"finish_reason":null}]}
951−
952− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Training"},"finish_reason":null}]}
953−
954− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
955−
956− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
957−
958− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
959−
960− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"..."},"finish_reason":null}]}
961−
962− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/"},"finish_reason":null}]}
963−
964− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"05"},"finish_reason":null}]}
965−
966− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_an"},"finish_reason":null}]}
678+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
967679
968− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"other"},"finish_reason":null}]}
680+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Found"},"finish_reason":null}]}
969681
970− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-way"},"finish_reason":null}]}
682+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" **"},"finish_reason":null}]}
971683
972− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_func"},"finish_reason":null}]}
684+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"30 matches"},"finish_reason":null}]}
973685
974− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-expression"},"finish_reason":null}]}
686+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"** across Go"},"finish_reason":null}]}
975687
976− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_sh"},"finish_reason":null}]}
688+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" repositories. Here"},"finish_reason":null}]}
977689
978− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ows"},"finish_reason":null}]}
690+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"'s"},"finish_reason":null}]}
979691
980− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-type"},"finish_reason":null}]}
692+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" a summary of the"},"finish_reason":null}]}
981693
982− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/main"},"finish_reason":null}]}
694+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" top results"},"finish_reason":null}]}
983695
984− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
696+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":\n\n| #"},"finish_reason":null}]}
985697
986− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
698+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" | Repository"},"finish_reason":null}]}
987699
988− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
700+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" | File"},"finish_reason":null}]}
989701
990− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Same"},"finish_reason":null}]}
702+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" | Description"},"finish_reason":null}]}
991703
992− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" with"},"finish_reason":null}]}
704+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |\n|---"},"finish_reason":null}]}
993705
994− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" type"},"finish_reason":null}]}
706+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"|-----------"},"finish_reason":null}]}
995707
996− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" inspection"},"finish_reason":null}]}
708+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"|------"},"finish_reason":null}]}
997709
998− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |\n"},"finish_reason":null}]}
710+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"|-------------"},"finish_reason":null}]}
999711
1000− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"|"},"finish_reason":null}]}
712+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"|\n| "},"finish_reason":null}]}
1001713
1002− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}]}
714+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"1 | `G"},"finish_reason":null}]}
1003715
1004− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"6"},"finish_reason":null}]}
716+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"oesTo"},"finish_reason":null}]}
1005717
1006− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
718+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Ele"},"finish_reason":null}]}
1007719
1008− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
720+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ven/G"},"finish_reason":null}]}
1009721
1010− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ma"},"finish_reason":null}]}
722+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"olangTraining"},"finish_reason":null}]}
1011723
1012− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ur"},"finish_reason":null}]}
724+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` | `"},"finish_reason":null}]}
1013725
1014− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"icio"},"finish_reason":null}]}
726+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"14_functions"},"finish_reason":null}]}
1015727
1016− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ab"},"finish_reason":null}]}
728+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/10"},"finish_reason":null}]}
1017729
1018− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"reu"},"finish_reason":null}]}
730+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_func"},"finish_reason":null}]}
1019731
1020− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/g"},"finish_reason":null}]}
732+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-expression"},"finish_reason":null}]}
1021733
1022− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ol"},"finish_reason":null}]}
734+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/"},"finish_reason":null}]}
1023735
1024− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ings"},"finish_reason":null}]}
736+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"01_before"},"finish_reason":null}]}
1025737
1026− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
738+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-f"},"finish_reason":null}]}
1027739
1028− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
740+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"unc-expression"},"finish_reason":null}]}
1029741
1030− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
742+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/main"},"finish_reason":null}]}
1031743
1032− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ex"},"finish_reason":null}]}
744+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
1033745
1034− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ercises"},"finish_reason":null}]}
746+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` | Basic"},"finish_reason":null}]}
1035747
1036− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/functions"},"finish_reason":null}]}
748+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" function"},"finish_reason":null}]}
1037749
1038− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/functions"},"finish_reason":null}]}
750+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" call"},"finish_reason":null}]}
1039751
1040− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"1"},"finish_reason":null}]}
752+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" from"},"finish_reason":null}]}
1041753
1042− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/main"},"finish_reason":null}]}
754+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
1043755
1044− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
756+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"main"},"finish_reason":null}]}
1045757
1046− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
758+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` |\n"},"finish_reason":null}]}
1047759
1048− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
760+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"| "},"finish_reason":null}]}
1049761
1050− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Go"},"finish_reason":null}]}
762+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"2 | `G"},"finish_reason":null}]}
1051763
1052− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" exercise"},"finish_reason":null}]}
764+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"oesToEle"},"finish_reason":null}]}
1053765
1054− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" ("},"finish_reason":null}]}
766+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ven/GolangTraining"},"finish_reason":null}]}
1055767
1056− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"call"},"finish_reason":null}]}
768+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` |"},"finish_reason":null}]}
1057769
1058− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_me"},"finish_reason":null}]}
770+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
1059771
1060− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":")"},"finish_reason":null}]}
772+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"14_functions/10"},"finish_reason":null}]}
1061773
1062− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |\n"},"finish_reason":null}]}
774+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_func-expression/02"},"finish_reason":null}]}
1063775
1064− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"|"},"finish_reason":null}]}
776+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_func"},"finish_reason":null}]}
1065777
1066− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}]}
778+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-expression/main.go"},"finish_reason":null}]}
1067779
1068− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"7"},"finish_reason":null}]}
780+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` | Function"},"finish_reason":null}]}
1069781
1070− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
782+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" expression assigned"},"finish_reason":null}]}
1071783
1072− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
784+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
1073785
1074− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ma"},"finish_reason":null}]}
786+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `main"},"finish_reason":null}]}
1075787
1076− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ur"},"finish_reason":null}]}
788+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` |\n| "},"finish_reason":null}]}
1077789
1078− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"icio"},"finish_reason":null}]}
790+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"3"},"finish_reason":null}]}
1079791
1080− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ab"},"finish_reason":null}]}
792+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" | `G"},"finish_reason":null}]}
1081793
1082− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"reu"},"finish_reason":null}]}
794+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"oesToEle"},"finish_reason":null}]}
1083795
1084− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/g"},"finish_reason":null}]}
796+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ven/GolangTraining"},"finish_reason":null}]}
1085797
1086− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ol"},"finish_reason":null}]}
798+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` |"},"finish_reason":null}]}
1087799
1088− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ings"},"finish_reason":null}]}
800+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `14_functions/"},"finish_reason":null}]}
1089801
1090− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
802+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"10_func-expression/"},"finish_reason":null}]}
1091803
1092− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
804+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"03_func"},"finish_reason":null}]}
1093805
1094− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
806+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-expression_sh"},"finish_reason":null}]}
1095807
1096− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ex"},"finish_reason":null}]}
808+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ows-type"},"finish_reason":null}]}
1097809
1098− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ercises"},"finish_reason":null}]}
810+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/main.go` |"},"finish_reason":null}]}
1099811
1100− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/"},"finish_reason":null}]}
812+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Function"},"finish_reason":null}]}
1101813
1102− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"anonymous"},"finish_reason":null}]}
814+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" expression with"},"finish_reason":null}]}
1103815
1104− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_functions"},"finish_reason":null}]}
816+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" type printing"},"finish_reason":null}]}
1105817
1106− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/"},"finish_reason":null}]}
818+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |\n| "},"finish_reason":null}]}
1107819
1108− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"anonymous"},"finish_reason":null}]}
820+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"4 | `"},"finish_reason":null}]}
1109821
1110− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_functions"},"finish_reason":null}]}
822+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"GoesToEle"},"finish_reason":null}]}
1111823
1112− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"2"},"finish_reason":null}]}
824+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ven/Golang"},"finish_reason":null}]}
1113825
1114− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/main"},"finish_reason":null}]}
826+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Training` |"},"finish_reason":null}]}
1115827
1116− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
828+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `14_functions/"},"finish_reason":null}]}
1117829
1118− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
830+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"10_func-expression/"},"finish_reason":null}]}
1119831
1120− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
832+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"04_an"},"finish_reason":null}]}
1121833
1122− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Anonymous"},"finish_reason":null}]}
834+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"other"},"finish_reason":null}]}
1123835
1124− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" function"},"finish_reason":null}]}
836+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-way"},"finish_reason":null}]}
1125837
1126− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" exercise"},"finish_reason":null}]}
838+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_func"},"finish_reason":null}]}
1127839
1128− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |\n"},"finish_reason":null}]}
840+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-expression/main.go"},"finish_reason":null}]}
1129841
1130− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"|"},"finish_reason":null}]}
842+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` | Function"},"finish_reason":null}]}
1131843
1132− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}]}
844+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" returning"},"finish_reason":null}]}
1133845
1134− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"8"},"finish_reason":null}]}
846+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" a"},"finish_reason":null}]}
1135847
1136− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
848+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" closure |\n"},"finish_reason":null}]}
1137849
1138− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
850+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"| "},"finish_reason":null}]}
1139851
1140− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ma"},"finish_reason":null}]}
852+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"5 | `G"},"finish_reason":null}]}
1141853
1142− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ur"},"finish_reason":null}]}
854+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"oesToEle"},"finish_reason":null}]}
1143855
1144− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"icio"},"finish_reason":null}]}
856+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ven/G"},"finish_reason":null}]}
1145857
1146− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ab"},"finish_reason":null}]}
858+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"olangTraining` |"},"finish_reason":null}]}
1147859
1148− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"reu"},"finish_reason":null}]}
860+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `14"},"finish_reason":null}]}
1149861
1150− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/g"},"finish_reason":null}]}
862+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_functions/10_func"},"finish_reason":null}]}
1151863
1152− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ol"},"finish_reason":null}]}
864+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-expression/05"},"finish_reason":null}]}
1153865
1154− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ings"},"finish_reason":null}]}
866+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_an"},"finish_reason":null}]}
1155867
1156− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
868+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"other-way"},"finish_reason":null}]}
1157869
1158− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
870+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_func-expression_sh"},"finish_reason":null}]}
1159871
1160− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
872+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ows-type"},"finish_reason":null}]}
1161873
1162− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ex"},"finish_reason":null}]}
874+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/main.go` |"},"finish_reason":null}]}
1163875
1164− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ercises"},"finish_reason":null}]}
876+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Closure with type"},"finish_reason":null}]}
1165877
1166− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/"},"finish_reason":null}]}
878+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" inspection |\n"},"finish_reason":null}]}
1167879
1168− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"anonymous"},"finish_reason":null}]}
880+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"| "},"finish_reason":null}]}
1169881
1170− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_functions"},"finish_reason":null}]}
882+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"6 | `G"},"finish_reason":null}]}
1171883
1172− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/"},"finish_reason":null}]}
884+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"oesToEle"},"finish_reason":null}]}
1173885
1174− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"anonymous"},"finish_reason":null}]}
886+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ven/Golang"},"finish_reason":null}]}
1175887
1176− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_functions"},"finish_reason":null}]}
888+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Training` |"},"finish_reason":null}]}
1177889
1178− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"1"},"finish_reason":null}]}
890+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `14"},"finish_reason":null}]}
1179891
1180− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/main"},"finish_reason":null}]}
892+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_functions/12"},"finish_reason":null}]}
1181893
1182− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
894+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_callbacks"},"finish_reason":null}]}
1183895
1184− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
896+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/01"},"finish_reason":null}]}
1185897
1186− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |"},"finish_reason":null}]}
898+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_print"},"finish_reason":null}]}
1187899
1188− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Anonymous"},"finish_reason":null}]}
900+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}]}
1189901
1190− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" function"},"finish_reason":null}]}
902+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"nums/main.go`"},"finish_reason":null}]}
1191903
1192− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" exercise"},"finish_reason":null}]}
904+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" | Callback pattern"},"finish_reason":null}]}
1193905
1194− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |\n\n"},"finish_reason":null}]}
906+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" in `main"},"finish_reason":null}]}
1195907
1196− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"The"},"finish_reason":null}]}
908+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` |\n|"},"finish_reason":null}]}
1197909
1198− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" search"},"finish_reason":null}]}
910+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" 7 | `"},"finish_reason":null}]}
1199911
1200− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" returned"},"finish_reason":null}]}
912+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"GoesToEle"},"finish_reason":null}]}
1201913
1202− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}]}
914+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ven/G"},"finish_reason":null}]}
1203915
1204− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"30"},"finish_reason":null}]}
916+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"olangTraining` |"},"finish_reason":null}]}
1205917
1206− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" matches"},"finish_reason":null}]}
918+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `14"},"finish_reason":null}]}
1207919
1208− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" across"},"finish_reason":null}]}
920+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_functions/14"},"finish_reason":null}]}
1209921
1210− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}]}
922+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"_def"},"finish_reason":null}]}
1211923
1212− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"30"},"finish_reason":null}]}
924+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"er/"},"finish_reason":null}]}
1213925
1214− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" files"},"finish_reason":null}]}
926+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"01_no"},"finish_reason":null}]}
1215927
1216− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"."},"finish_reason":null}]}
928+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"-defer/main"},"finish_reason":null}]}
1217929
1218− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" The"},"finish_reason":null}]}
930+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go` |"},"finish_reason":null}]}
1219931
1220− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" results"},"finish_reason":null}]}
932+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Simple"},"finish_reason":null}]}
1221933
1222− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" are"},"finish_reason":null}]}
934+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
1223935
1224− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" predominantly"},"finish_reason":null}]}
936+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"main` without"},"finish_reason":null}]}
1225937
1226− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" from"},"finish_reason":null}]}
938+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
1227939
1228− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" **"},"finish_reason":null}]}
940+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"defer`"},"finish_reason":null}]}
1229941
1230− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"G"},"finish_reason":null}]}
942+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |\n| "},"finish_reason":null}]}
1231943
1232− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"olang"},"finish_reason":null}]}
944+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"8"},"finish_reason":null}]}
1233945
1234− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Training"},"finish_reason":null}]}
946+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" | `G"},"finish_reason":null}]}
1235947
1236− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"**"},"finish_reason":null}]}
948+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"oesToEle"},"finish_reason":null}]}
1237949
1238− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" ("},"finish_reason":null}]}
950+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ven/G"},"finish_reason":null}]}
1239951
1240− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"function"},"finish_reason":null}]}
952+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"olangTraining` |"},"finish_reason":null}]}
1241953
1242− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" expression"},"finish_reason":null}]}
954+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `14_functions/"},"finish_reason":null}]}
1243955
1244− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" tutorials"},"finish_reason":null}]}
956+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"14_defer/"},"finish_reason":null}]}
1245957
1246− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":")"},"finish_reason":null}]}
958+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"02_with-def"},"finish_reason":null}]}
1247959
1248− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" and"},"finish_reason":null}]}
960+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"er/main.go"},"finish_reason":null}]}
1249961
1250− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" **"},"finish_reason":null}]}
962+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` | `main"},"finish_reason":null}]}
1251963
1252− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"g"},"finish_reason":null}]}
964+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` using"},"finish_reason":null}]}
1253965
1254− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ol"},"finish_reason":null}]}
966+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `defer`"},"finish_reason":null}]}
1255967
1256− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ings"},"finish_reason":null}]}
968+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" |\n\nMost"},"finish_reason":null}]}
1257969
1258− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"**"},"finish_reason":null}]}
970+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" results are from"},"finish_reason":null}]}
1259971
1260− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" ("},"finish_reason":null}]}
972+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" the **"},"finish_reason":null}]}
1261973
1262− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Go"},"finish_reason":null}]}
974+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"GoesToEle"},"finish_reason":null}]}
1263975
1264− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" exercises"},"finish_reason":null}]}
976+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ven/G"},"finish_reason":null}]}
1265977
1266− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":")."},"finish_reason":null}]}
978+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"olangTraining** tutorial"},"finish_reason":null}]}
1267979
1268− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" To"},"finish_reason":null}]}
980+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" repo"},"finish_reason":null}]}
1269981
1270− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" narrow"},"finish_reason":null}]}
982+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":". To"},"finish_reason":null}]}
1271983
1272− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" results"},"finish_reason":null}]}
984+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" narrow"},"finish_reason":null}]}
1273985
1274− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}]}
986+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" results to"},"finish_reason":null}]}
1275987
1276− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" a"},"finish_reason":null}]}
988+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" more"},"finish_reason":null}]}
1277989
1278− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" specific"},"finish_reason":null}]}
990+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" diverse"},"finish_reason":null}]}
1279991
1280− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" project"},"finish_reason":null}]}
992+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/"},"finish_reason":null}]}
1281993
1282− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" or"},"finish_reason":null}]}
994+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"production"},"finish_reason":null}]}
1283995
1284− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" pattern"},"finish_reason":null}]}
996+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" code"},"finish_reason":null}]}
1285997
1286− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":","},"finish_reason":null}]}
998+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":", you"},"finish_reason":null}]}
1287999
1288− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" you"},"finish_reason":null}]}
1000+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" could refine the"},"finish_reason":null}]}
12891001
1290− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" could"},"finish_reason":null}]}
1002+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" query,"},"finish_reason":null}]}
12911003
1292− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" refine"},"finish_reason":null}]}
1004+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" e.g.:\n\n"},"finish_reason":null}]}
12931005
1294− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}]}
1006+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"- `func"},"finish_reason":null}]}
12951007
1296− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" query"},"finish_reason":null}]}
1008+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" main lang"},"finish_reason":null}]}
12971009
1298− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" ("},"finish_reason":null}]}
1010+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":"},"finish_reason":null}]}
12991011
1300− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"e"},"finish_reason":null}]}
1012+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Go -"},"finish_reason":null}]}
13011013
1302− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".g"},"finish_reason":null}]}
1014+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"repo:"},"finish_reason":null}]}
13031015
1304− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".,"},"finish_reason":null}]}
1016+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"G"},"finish_reason":null}]}
13051017
1306− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
1018+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"oesToEle"},"finish_reason":null}]}
13071019
1308− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"func"},"finish_reason":null}]}
1020+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ven/GolangTraining"},"finish_reason":null}]}
13091021
1310− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" main"},"finish_reason":null}]}
1022+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` ("},"finish_reason":null}]}
13111023
1312− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" lang"},"finish_reason":null}]}
1024+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"exclude"},"finish_reason":null}]}
13131025
1314− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":"},"finish_reason":null}]}
1026+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" training"},"finish_reason":null}]}
13151027
1316− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Go"},"finish_reason":null}]}
1028+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" repo)\n-"},"finish_reason":null}]}
13171029
1318− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" repo"},"finish_reason":null}]}
1030+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `func main lang"},"finish_reason":null}]}
13191031
1320− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":"},"finish_reason":null}]}
1032+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":Go count"},"finish_reason":null}]}
13211033
1322− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"github"},"finish_reason":null}]}
1034+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":"},"finish_reason":null}]}
13231035
1324− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".com"},"finish_reason":null}]}
1036+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"50` ("},"finish_reason":null}]}
13251037
1326− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/s"},"finish_reason":null}]}
1038+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"more"},"finish_reason":null}]}
13271039
1328− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ome"},"finish_reason":null}]}
1040+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" results)\n"},"finish_reason":null}]}
13291041
1330− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"org"},"finish_reason":null}]}
1042+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"- `func"},"finish_reason":null}]}
13311043
1332− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"/s"},"finish_reason":null}]}
1044+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" main lang:Go"},"finish_reason":null}]}
13331045
1334− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"om"},"finish_reason":null}]}
1046+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" repo:g"},"finish_reason":null}]}
13351047
1336− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"ere"},"finish_reason":null}]}
1048+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"olang` (standard"},"finish_reason":null}]}
13371049
1338− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"po"},"finish_reason":null}]}
1050+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" library only"},"finish_reason":null}]}
13391051
1340− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`)."},"finish_reason":null}]}
1052+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":")"},"finish_reason":null}]}
13411053
1342− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
1054+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
13431055
1344− data: {"id":"chatcmpl-c9b5d07b62b5dad179a97bbd","object":"chat.completion.chunk","created":1778531416,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":2862,"completion_tokens":381,"total_tokens":10923,"prompt_tokens_details":{"cached_tokens":7680}}}
1056+ data: {"id":"chatcmpl-b1b4d4b3a19eaa32ad806633","object":"chat.completion.chunk","created":1778597408,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":10586,"completion_tokens":444,"total_tokens":11030,"completion_tokens_details":{"reasoning_tokens":443}}}
13451057
13461058 data: [DONE]
13471059
@@ -1350,4 +1062,4 @@ interactions:
13501062 - text/event-stream
13511063 status: 200 OK
13521064 code: 200
1353− duration: 5.986632333s
1065+ duration: 3.460100417s
internal/agent/testdata/TestCoderAgent/glm-5.1/update_a_file.yaml+326−264
@@ -25,395 +25,391 @@ interactions:
2525 content_length: -1
2626 uncompressed: true
2727 body: |+
28− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
2929
30− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
3131
32− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
3333
34− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" asks"},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" wants"},"finish_reason":null}]}
3535
36− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
3737
38− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
3939
40− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
4141
42− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
4343
44− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
4545
46− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" given"},"finish_reason":null}]}
4747
48− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
4949
50− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
50+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
5151
52− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
52+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
5353
54− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
54+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"update"},"finish_reason":null}]}
5555
56− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
56+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
5757
58− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" update"},"finish_reason":null}]}
58+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
5959
60− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
60+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
6161
62− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
62+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
6363
64− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
64+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" by"},"finish_reason":null}]}
6565
66− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
66+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" changing"},"finish_reason":null}]}
6767
68− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" by"},"finish_reason":null}]}
68+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
6969
70− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" changing"},"finish_reason":null}]}
70+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" print"},"finish_reason":null}]}
7171
72− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
72+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
7373
74− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" print"},"finish_reason":null}]}
74+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" say"},"finish_reason":null}]}
7575
76− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
76+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" hello"},"finish_reason":null}]}
7777
78− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" say"},"finish_reason":null}]}
78+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
7979
80− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" hello"},"finish_reason":null}]}
80+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" crush"},"finish_reason":null}]}
8181
82− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
82+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
8383
84− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" crush"},"finish_reason":null}]}
84+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
8585
86− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
86+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" must"},"finish_reason":null}]}
8787
88− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Need"},"finish_reason":null}]}
88+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
8989
90− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
90+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
9191
92− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
92+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
9393
94− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
94+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
9595
96− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" in"},"finish_reason":null}]}
96+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
9797
98− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" same"},"finish_reason":null}]}
98+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
9999
100− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" language"},"finish_reason":null}]}
100+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
101101
102− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
102+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Must"},"finish_reason":null}]}
103103
104− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"English"},"finish_reason":null}]}
104+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
105105
106− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")."},"finish_reason":null}]}
106+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c="},"finish_reason":null}]}
107107
108− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Under"},"finish_reason":null}]}
108+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
109109
110− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
110+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
111111
112− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
112+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
113113
114− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
114+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
115115
116− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
116+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
117117
118− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Something"},"finish_reason":null}]}
118+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
119119
120− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" like"},"finish_reason":null}]}
120+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
121121
122− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
122+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
123123
124− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Update"},"finish_reason":null}]}
124+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" or"},"finish_reason":null}]}
125125
126− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
126+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" col"},"finish_reason":null}]}
127127
128− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
128+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ons"},"finish_reason":null}]}
129129
130− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
130+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
131131
132− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" print"},"finish_reason":null}]}
132+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Possible"},"finish_reason":null}]}
133133
134− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
134+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
135135
136− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
136+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
137137
138− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
138+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
139139
140− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
140+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Modify"},"finish_reason":null}]}
141141
142− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
142+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
143143
144− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" under"},"finish_reason":null}]}
144+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
145145
146− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
146+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
147147
148− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
148+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" print"},"finish_reason":null}]}
149149
150− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
150+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
151151
152− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
152+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
153153
154− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
154+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
155155
156− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
156+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
157157
158− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Update"},"finish_reason":null}]}
158+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
159159
160− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
160+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
161161
162− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
162+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
163163
164− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
164+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
165165
166− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" print"},"finish_reason":null}]}
166+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Modify"},"finish_reason":null}]}
167167
168− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
168+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
169169
170− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
170+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
171171
172− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
172+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
173173
174− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
174+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" print"},"finish_reason":null}]}
175175
176− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
176+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
177177
178− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" length"},"finish_reason":null}]}
178+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
179179
180− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"?"},"finish_reason":null}]}
180+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
181181
182− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
182+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
183183
184− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
184+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
185185
186− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
186+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
187187
188− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" U"},"finish_reason":null}]}
188+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
189189
190− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
190+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Modify"},"finish_reason":null}]}
191191
192− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
192+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
193193
194− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
194+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
195195
196− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" p"},"finish_reason":null}]}
196+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
197197
198− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"..."},"finish_reason":null}]}
198+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" +"},"finish_reason":null}]}
199199
200− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Let's"},"finish_reason":null}]}
200+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
201201
202− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
202+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
203203
204− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
204+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
205205
206− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
206+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
207207
208− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Update"},"finish_reason":null}]}
208+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
209209
210− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
210+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
211211
212− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
212+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
213213
214− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
214+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
215215
216− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" print"},"finish_reason":null}]}
216+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
217217
218− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
218+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
219219
220− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
220+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
221221
222− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
222+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
223223
224− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
224+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" =\u003e"},"finish_reason":null}]}
225225
226− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
226+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" total"},"finish_reason":null}]}
227227
228− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" include"},"finish_reason":null}]}
228+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
229229
230− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" spaces"},"finish_reason":null}]}
230+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"14"},"finish_reason":null}]}
231231
232− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
232+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
233233
234− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
234+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
235235
236− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
236+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
237237
238− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Update"},"finish_reason":null}]}
238+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
239239
240− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
240+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
241241
242− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
242+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"15"},"finish_reason":null}]}
243243
244− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
244+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
245245
246− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" +"},"finish_reason":null}]}
246+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
247247
248− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
248+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
249249
250− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
250+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
251251
252− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
252+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
253253
254− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
254+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"17"},"finish_reason":null}]}
255255
256− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
256+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
257257
258− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
258+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
259259
260− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
260+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
261261
262− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
262+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
263263
264− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
264+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
265265
266− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
266+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" print"},"finish_reason":null}]}
267267
268− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
268+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
269269
270− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"14"},"finish_reason":null}]}
270+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
271271
272− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
272+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
273273
274− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
274+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"23"},"finish_reason":null}]}
275275
276− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
276+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
277277
278− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"15"},"finish_reason":null}]}
278+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
279279
280− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
280+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
281281
282− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
282+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"24"},"finish_reason":null}]}
283283
284− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
284+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
285285
286− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"2"},"finish_reason":null}]}
286+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
287287
288− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
288+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
289289
290− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"17"},"finish_reason":null}]}
290+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
291291
292− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
292+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
293293
294− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
294+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"29"},"finish_reason":null}]}
295295
296− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
296+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
297297
298− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
298+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
299299
300− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
300+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
301301
302− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" print"},"finish_reason":null}]}
302+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"30"},"finish_reason":null}]}
303303
304− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
304+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
305305
306− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
306+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
307307
308− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
308+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
309309
310− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"23"},"finish_reason":null}]}
310+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
311311
312− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
312+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
313313
314− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
314+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
315315
316− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
316+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
317317
318− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"24"},"finish_reason":null}]}
318+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
319319
320− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
320+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
321321
322− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
322+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"35"},"finish_reason":null}]}
323323
324− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
324+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
325325
326− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
326+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
327327
328− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
328+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
329329
330− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"29"},"finish_reason":null}]}
330+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
331331
332− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
332+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
333333
334− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
334+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"40"},"finish_reason":null}]}
335335
336− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
336+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
337337
338− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"30"},"finish_reason":null}]}
338+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
339339
340− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
340+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" length"},"finish_reason":null}]}
341341
342− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
342+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
343343
344− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
344+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"40"},"finish_reason":null}]}
345345
346− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
346+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
347347
348− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
348+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" okay"},"finish_reason":null}]}
349349
350− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"34"},"finish_reason":null}]}
350+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
351351
352− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
352+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Alternatively"},"finish_reason":null}]}
353353
354− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
354+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
355355
356− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
356+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
357357
358− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"35"},"finish_reason":null}]}
358+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Update"},"finish_reason":null}]}
359359
360− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
360+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
361361
362− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
362+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
363363
364− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
364+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
365365
366− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"5"},"finish_reason":null}]}
366+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" say"},"finish_reason":null}]}
367367
368− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")="},"finish_reason":null}]}
368+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Hello"},"finish_reason":null}]}
369369
370− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"40"},"finish_reason":null}]}
370+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" from"},"finish_reason":null}]}
371371
372− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
372+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Crush"},"finish_reason":null}]}
373373
374− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
374+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
375375
376− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
376+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That's"},"finish_reason":null}]}
377377
378− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"40"},"finish_reason":null}]}
378+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" similar"},"finish_reason":null}]}
379379
380− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
380+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" length"},"finish_reason":null}]}
381381
382− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
382+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
383383
384− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" okay"},"finish_reason":null}]}
384+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"I'll"},"finish_reason":null}]}
385385
386− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
386+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" output"},"finish_reason":null}]}
387387
388− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Return"},"finish_reason":null}]}
388+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
389389
390− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" only"},"finish_reason":null}]}
390+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
391391
392− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
392+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
393393
394− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
394+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Update"},"finish_reason":null}]}
395395
396− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
396+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" main"},"finish_reason":null}]}
397397
398− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Update"},"finish_reason":null}]}
398+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
399399
400− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" main"},"finish_reason":null}]}
400+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}]}
401401
402− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
402+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" print"},"finish_reason":null}]}
403403
404− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}]}
404+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Hello"},"finish_reason":null}]}
405405
406− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" print"},"finish_reason":null}]}
406+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" from"},"finish_reason":null}]}
407407
408− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Hello"},"finish_reason":null}]}
408+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Crush"},"finish_reason":null}]}
409409
410− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" from"},"finish_reason":null}]}
410+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
411411
412− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Crush"},"finish_reason":null}]}
413−
414− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
415−
416− data: {"id":"chatcmpl-d2ffc241c808bce45660cb8c","object":"chat.completion.chunk","created":1778531314,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":153,"completion_tokens":202,"total_tokens":419,"prompt_tokens_details":{"cached_tokens":64}}}
412+ data: {"id":"chatcmpl-27f6fc9e843256fb939896e2","object":"chat.completion.chunk","created":1778597283,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":25,"completion_tokens":200,"total_tokens":417,"prompt_tokens_details":{"cached_tokens":192}}}
417413
418414 data: [DONE]
419415
@@ -422,15 +418,15 @@ interactions:
422418 - text/event-stream
423419 status: 200 OK
424420 code: 200
425− duration: 595.677792ms
421+ duration: 628.654542ms
426422- id: 1
427423 request:
428424 proto: HTTP/1.1
429425 proto_major: 1
430426 proto_minor: 1
431− content_length: 33681
427+ content_length: 33663
432428 host: ""
433− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
429+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
434430 headers:
435431 Accept:
436432 - application/json
@@ -447,37 +443,39 @@ interactions:
447443 content_length: -1
448444 uncompressed: true
449445 body: |+
450− data: {"id":"chatcmpl-41f7d38fd1f6cfaad592394d","object":"chat.completion.chunk","created":1778531317,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
446+ data: {"id":"chatcmpl-c8c07f692210879bd28e2e82","object":"chat.completion.chunk","created":1778597286,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
451447
452− data: {"id":"chatcmpl-41f7d38fd1f6cfaad592394d","object":"chat.completion.chunk","created":1778531317,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"Let"},"finish_reason":null}]}
448+ data: {"id":"chatcmpl-c8c07f692210879bd28e2e82","object":"chat.completion.chunk","created":1778597286,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"Let"},"finish_reason":null}]}
453449
454− data: {"id":"chatcmpl-41f7d38fd1f6cfaad592394d","object":"chat.completion.chunk","created":1778531317,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" me"},"finish_reason":null}]}
450+ data: {"id":"chatcmpl-c8c07f692210879bd28e2e82","object":"chat.completion.chunk","created":1778597286,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" me"},"finish_reason":null}]}
455451
456− data: {"id":"chatcmpl-41f7d38fd1f6cfaad592394d","object":"chat.completion.chunk","created":1778531317,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" find"},"finish_reason":null}]}
452+ data: {"id":"chatcmpl-c8c07f692210879bd28e2e82","object":"chat.completion.chunk","created":1778597286,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" find"},"finish_reason":null}]}
457453
458− data: {"id":"chatcmpl-41f7d38fd1f6cfaad592394d","object":"chat.completion.chunk","created":1778531317,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
454+ data: {"id":"chatcmpl-c8c07f692210879bd28e2e82","object":"chat.completion.chunk","created":1778597286,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" and"},"finish_reason":null}]}
459455
460− data: {"id":"chatcmpl-41f7d38fd1f6cfaad592394d","object":"chat.completion.chunk","created":1778531317,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" read"},"finish_reason":null}]}
456+ data: {"id":"chatcmpl-c8c07f692210879bd28e2e82","object":"chat.completion.chunk","created":1778597286,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" read the main"},"finish_reason":null}]}
461457
462− data: {"id":"chatcmpl-41f7d38fd1f6cfaad592394d","object":"chat.completion.chunk","created":1778531317,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
458+ data: {"id":"chatcmpl-c8c07f692210879bd28e2e82","object":"chat.completion.chunk","created":1778597286,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":".go file"},"finish_reason":null}]}
463459
464− data: {"id":"chatcmpl-41f7d38fd1f6cfaad592394d","object":"chat.completion.chunk","created":1778531317,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" main"},"finish_reason":null}]}
460+ data: {"id":"chatcmpl-c8c07f692210879bd28e2e82","object":"chat.completion.chunk","created":1778597286,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" first."},"finish_reason":null}]}
465461
466− data: {"id":"chatcmpl-41f7d38fd1f6cfaad592394d","object":"chat.completion.chunk","created":1778531317,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":".go"},"finish_reason":null}]}
462+ data: {"id":"chatcmpl-c8c07f692210879bd28e2e82","object":"chat.completion.chunk","created":1778597286,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_336a65a4f1974f07938cae66","type":"function","index":0,"function":{"name":"glob","arguments":""}}]},"finish_reason":null}]}
467463
468− data: {"id":"chatcmpl-41f7d38fd1f6cfaad592394d","object":"chat.completion.chunk","created":1778531317,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
464+ data: {"id":"chatcmpl-c8c07f692210879bd28e2e82","object":"chat.completion.chunk","created":1778597286,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":""}}]},"finish_reason":null}]}
469465
470− data: {"id":"chatcmpl-41f7d38fd1f6cfaad592394d","object":"chat.completion.chunk","created":1778531317,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" first"},"finish_reason":null}]}
466+ data: {"id":"chatcmpl-c8c07f692210879bd28e2e82","object":"chat.completion.chunk","created":1778597286,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
471467
472− data: {"id":"chatcmpl-41f7d38fd1f6cfaad592394d","object":"chat.completion.chunk","created":1778531317,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
468+ data: {"id":"chatcmpl-c8c07f692210879bd28e2e82","object":"chat.completion.chunk","created":1778597286,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"pattern\": "}}]},"finish_reason":null}]}
473469
474− data: {"id":"chatcmpl-41f7d38fd1f6cfaad592394d","object":"chat.completion.chunk","created":1778531317,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_936116b23e91472dac0a2e40","type":"function","index":0,"function":{"name":"glob","arguments":""}}]},"finish_reason":null}]}
470+ data: {"id":"chatcmpl-c8c07f692210879bd28e2e82","object":"chat.completion.chunk","created":1778597286,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"**/"}}]},"finish_reason":null}]}
475471
476− data: {"id":"chatcmpl-41f7d38fd1f6cfaad592394d","object":"chat.completion.chunk","created":1778531317,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"pattern\":\"**/main.go\"}"}}]},"finish_reason":null}]}
472+ data: {"id":"chatcmpl-c8c07f692210879bd28e2e82","object":"chat.completion.chunk","created":1778597286,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"main.go\""}}]},"finish_reason":null}]}
477473
478− data: {"id":"chatcmpl-41f7d38fd1f6cfaad592394d","object":"chat.completion.chunk","created":1778531317,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
474+ data: {"id":"chatcmpl-c8c07f692210879bd28e2e82","object":"chat.completion.chunk","created":1778597286,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
479475
480− data: {"id":"chatcmpl-41f7d38fd1f6cfaad592394d","object":"chat.completion.chunk","created":1778531317,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":704,"completion_tokens":25,"total_tokens":7769,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":11}}}
476+ data: {"id":"chatcmpl-c8c07f692210879bd28e2e82","object":"chat.completion.chunk","created":1778597286,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
477+
478+ data: {"id":"chatcmpl-c8c07f692210879bd28e2e82","object":"chat.completion.chunk","created":1778597286,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":7746,"completion_tokens":25,"total_tokens":7771,"completion_tokens_details":{"reasoning_tokens":11}}}
481479
482480 data: [DONE]
483481
@@ -486,15 +484,15 @@ interactions:
486484 - text/event-stream
487485 status: 200 OK
488486 code: 200
489− duration: 3.71918875s
487+ duration: 3.702887459s
490488- id: 2
491489 request:
492490 proto: HTTP/1.1
493491 proto_major: 1
494492 proto_minor: 1
495− content_length: 34047
493+ content_length: 34030
496494 host: ""
497− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_936116b23e91472dac0a2e40\",\"function\":{\"arguments\":\"{\\\"pattern\\\":\\\"**/main.go\\\"}\",\"name\":\"glob\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"Let me find and read the main.go file first.\"},{\"content\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file/main.go\",\"tool_call_id\":\"call_936116b23e91472dac0a2e40\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
495+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_336a65a4f1974f07938cae66\",\"function\":{\"arguments\":\"{\\\"pattern\\\": \\\"**/main.go\\\"}\",\"name\":\"glob\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"Let me find and read the main.go file first.\"},{\"content\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file/main.go\",\"tool_call_id\":\"call_336a65a4f1974f07938cae66\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
498496 headers:
499497 Accept:
500498 - application/json
@@ -511,15 +509,47 @@ interactions:
511509 content_length: -1
512510 uncompressed: true
513511 body: |+
514− data: {"id":"chatcmpl-df14682de5892a9ed8eca7fa","object":"chat.completion.chunk","created":1778531320,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
512+ data: {"id":"chatcmpl-d376241c8483befb37b6c5bc","object":"chat.completion.chunk","created":1778597297,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
513+
514+ data: {"id":"chatcmpl-d376241c8483befb37b6c5bc","object":"chat.completion.chunk","created":1778597297,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_009a902e80d94744baddc43c","type":"function","index":0,"function":{"name":"view","arguments":""}}]},"finish_reason":null}]}
515+
516+ data: {"id":"chatcmpl-d376241c8483befb37b6c5bc","object":"chat.completion.chunk","created":1778597297,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":""}}]},"finish_reason":null}]}
517+
518+ data: {"id":"chatcmpl-d376241c8483befb37b6c5bc","object":"chat.completion.chunk","created":1778597297,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
519+
520+ data: {"id":"chatcmpl-d376241c8483befb37b6c5bc","object":"chat.completion.chunk","created":1778597297,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"file_path\": "}}]},"finish_reason":null}]}
521+
522+ data: {"id":"chatcmpl-d376241c8483befb37b6c5bc","object":"chat.completion.chunk","created":1778597297,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"/tmp/c"}}]},"finish_reason":null}]}
523+
524+ data: {"id":"chatcmpl-d376241c8483befb37b6c5bc","object":"chat.completion.chunk","created":1778597297,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush"}}]},"finish_reason":null}]}
525+
526+ data: {"id":"chatcmpl-d376241c8483befb37b6c5bc","object":"chat.completion.chunk","created":1778597297,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-test"}}]},"finish_reason":null}]}
527+
528+ data: {"id":"chatcmpl-d376241c8483befb37b6c5bc","object":"chat.completion.chunk","created":1778597297,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/Test"}}]},"finish_reason":null}]}
529+
530+ data: {"id":"chatcmpl-d376241c8483befb37b6c5bc","object":"chat.completion.chunk","created":1778597297,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Coder"}}]},"finish_reason":null}]}
531+
532+ data: {"id":"chatcmpl-d376241c8483befb37b6c5bc","object":"chat.completion.chunk","created":1778597297,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Agent/g"}}]},"finish_reason":null}]}
515533
516− data: {"id":"chatcmpl-df14682de5892a9ed8eca7fa","object":"chat.completion.chunk","created":1778531320,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_d8d14708f1b94a7a98968789","type":"function","index":0,"function":{"name":"view","arguments":""}}]},"finish_reason":null}]}
534+ data: {"id":"chatcmpl-d376241c8483befb37b6c5bc","object":"chat.completion.chunk","created":1778597297,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"lm-"}}]},"finish_reason":null}]}
517535
518− data: {"id":"chatcmpl-df14682de5892a9ed8eca7fa","object":"chat.completion.chunk","created":1778531320,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"file_path\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file/main.go\"}"}}]},"finish_reason":null}]}
536+ data: {"id":"chatcmpl-d376241c8483befb37b6c5bc","object":"chat.completion.chunk","created":1778597297,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"5."}}]},"finish_reason":null}]}
519537
520− data: {"id":"chatcmpl-df14682de5892a9ed8eca7fa","object":"chat.completion.chunk","created":1778531320,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
538+ data: {"id":"chatcmpl-d376241c8483befb37b6c5bc","object":"chat.completion.chunk","created":1778597297,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"1/update"}}]},"finish_reason":null}]}
521539
522− data: {"id":"chatcmpl-df14682de5892a9ed8eca7fa","object":"chat.completion.chunk","created":1778531320,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":100,"completion_tokens":29,"total_tokens":7809,"prompt_tokens_details":{"cached_tokens":7680}}}
540+ data: {"id":"chatcmpl-d376241c8483befb37b6c5bc","object":"chat.completion.chunk","created":1778597297,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_a"}}]},"finish_reason":null}]}
541+
542+ data: {"id":"chatcmpl-d376241c8483befb37b6c5bc","object":"chat.completion.chunk","created":1778597297,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_file"}}]},"finish_reason":null}]}
543+
544+ data: {"id":"chatcmpl-d376241c8483befb37b6c5bc","object":"chat.completion.chunk","created":1778597297,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/main.go"}}]},"finish_reason":null}]}
545+
546+ data: {"id":"chatcmpl-d376241c8483befb37b6c5bc","object":"chat.completion.chunk","created":1778597297,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\""}}]},"finish_reason":null}]}
547+
548+ data: {"id":"chatcmpl-d376241c8483befb37b6c5bc","object":"chat.completion.chunk","created":1778597297,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
549+
550+ data: {"id":"chatcmpl-d376241c8483befb37b6c5bc","object":"chat.completion.chunk","created":1778597297,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
551+
552+ data: {"id":"chatcmpl-d376241c8483befb37b6c5bc","object":"chat.completion.chunk","created":1778597297,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":7782,"completion_tokens":29,"total_tokens":7811,"completion_tokens_details":{"reasoning_tokens":28}}}
523553
524554 data: [DONE]
525555
@@ -528,15 +558,15 @@ interactions:
528558 - text/event-stream
529559 status: 200 OK
530560 code: 200
531− duration: 3.476030125s
561+ duration: 10.221187583s
532562- id: 3
533563 request:
534564 proto: HTTP/1.1
535565 proto_major: 1
536566 proto_minor: 1
537− content_length: 34513
567+ content_length: 34497
538568 host: ""
539− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_936116b23e91472dac0a2e40\",\"function\":{\"arguments\":\"{\\\"pattern\\\":\\\"**/main.go\\\"}\",\"name\":\"glob\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"Let me find and read the main.go file first.\"},{\"content\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file/main.go\",\"tool_call_id\":\"call_936116b23e91472dac0a2e40\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_d8d14708f1b94a7a98968789\",\"function\":{\"arguments\":\"{\\\"file_path\\\":\\\"/tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"\"},{\"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</file>\\n\",\"tool_call_id\":\"call_d8d14708f1b94a7a98968789\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_336a65a4f1974f07938cae66\",\"function\":{\"arguments\":\"{\\\"pattern\\\": \\\"**/main.go\\\"}\",\"name\":\"glob\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"Let me find and read the main.go file first.\"},{\"content\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file/main.go\",\"tool_call_id\":\"call_336a65a4f1974f07938cae66\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_009a902e80d94744baddc43c\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"\"},{\"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</file>\\n\",\"tool_call_id\":\"call_009a902e80d94744baddc43c\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
540570 headers:
541571 Accept:
542572 - application/json
@@ -553,15 +583,63 @@ interactions:
553583 content_length: -1
554584 uncompressed: true
555585 body: |+
556− data: {"id":"chatcmpl-ed33c9a6ec62d3a9660b51c0","object":"chat.completion.chunk","created":1778531325,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
586+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
587+
588+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_37b8cae848074063b7be4bd2","type":"function","index":0,"function":{"name":"edit","arguments":""}}]},"finish_reason":null}]}
589+
590+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":""}}]},"finish_reason":null}]}
591+
592+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
593+
594+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"file_path\": \"/tmp"}}]},"finish_reason":null}]}
595+
596+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/crush"}}]},"finish_reason":null}]}
597+
598+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-test"}}]},"finish_reason":null}]}
599+
600+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/Test"}}]},"finish_reason":null}]}
557601
558− data: {"id":"chatcmpl-ed33c9a6ec62d3a9660b51c0","object":"chat.completion.chunk","created":1778531325,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_2f5c178cd04c4138babf74dc","type":"function","index":0,"function":{"name":"edit","arguments":""}}]},"finish_reason":null}]}
602+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Coder"}}]},"finish_reason":null}]}
559603
560− data: {"id":"chatcmpl-ed33c9a6ec62d3a9660b51c0","object":"chat.completion.chunk","created":1778531325,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"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!\\\")\"}"}}]},"finish_reason":null}]}
604+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Agent"}}]},"finish_reason":null}]}
561605
562− data: {"id":"chatcmpl-ed33c9a6ec62d3a9660b51c0","object":"chat.completion.chunk","created":1778531325,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
606+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/glm"}}]},"finish_reason":null}]}
563607
564− data: {"id":"chatcmpl-ed33c9a6ec62d3a9660b51c0","object":"chat.completion.chunk","created":1778531325,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":121,"completion_tokens":55,"total_tokens":7920,"prompt_tokens_details":{"cached_tokens":7744}}}
608+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-5"}}]},"finish_reason":null}]}
609+
610+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".1"}}]},"finish_reason":null}]}
611+
612+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/update_a"}}]},"finish_reason":null}]}
613+
614+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_file"}}]},"finish_reason":null}]}
615+
616+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/main.go"}}]},"finish_reason":null}]}
617+
618+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\", "}}]},"finish_reason":null}]}
619+
620+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"new_string\": "}}]},"finish_reason":null}]}
621+
622+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"fmt"}}]},"finish_reason":null}]}
623+
624+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".Println(\\\"Hello"}}]},"finish_reason":null}]}
625+
626+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" from crush"}}]},"finish_reason":null}]}
627+
628+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"!\\\")\", "}}]},"finish_reason":null}]}
629+
630+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"old_string\": "}}]},"finish_reason":null}]}
631+
632+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"fmt.Println(\\\"Hello"}}]},"finish_reason":null}]}
633+
634+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":", World"}}]},"finish_reason":null}]}
635+
636+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"!\\\")\""}}]},"finish_reason":null}]}
637+
638+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
639+
640+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
641+
642+ data: {"id":"chatcmpl-24a95c8d63629662a3c0d8c8","object":"chat.completion.chunk","created":1778597303,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":123,"completion_tokens":55,"total_tokens":7922,"prompt_tokens_details":{"cached_tokens":7744},"completion_tokens_details":{"reasoning_tokens":54}}}
565643
566644 data: [DONE]
567645
@@ -570,15 +648,15 @@ interactions:
570648 - text/event-stream
571649 status: 200 OK
572650 code: 200
573− duration: 4.298791583s
651+ duration: 5.29761375s
574652- id: 4
575653 request:
576654 proto: HTTP/1.1
577655 proto_major: 1
578656 proto_minor: 1
579− content_length: 35053
657+ content_length: 35037
580658 host: ""
581− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_936116b23e91472dac0a2e40\",\"function\":{\"arguments\":\"{\\\"pattern\\\":\\\"**/main.go\\\"}\",\"name\":\"glob\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"Let me find and read the main.go file first.\"},{\"content\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file/main.go\",\"tool_call_id\":\"call_936116b23e91472dac0a2e40\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_d8d14708f1b94a7a98968789\",\"function\":{\"arguments\":\"{\\\"file_path\\\":\\\"/tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"\"},{\"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</file>\\n\",\"tool_call_id\":\"call_d8d14708f1b94a7a98968789\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_2f5c178cd04c4138babf74dc\",\"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\",\"reasoning_content\":\"\"},{\"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_2f5c178cd04c4138babf74dc\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
659+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_336a65a4f1974f07938cae66\",\"function\":{\"arguments\":\"{\\\"pattern\\\": \\\"**/main.go\\\"}\",\"name\":\"glob\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"Let me find and read the main.go file first.\"},{\"content\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file/main.go\",\"tool_call_id\":\"call_336a65a4f1974f07938cae66\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_009a902e80d94744baddc43c\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file/main.go\\\"}\",\"name\":\"view\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"\"},{\"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</file>\\n\",\"tool_call_id\":\"call_009a902e80d94744baddc43c\",\"role\":\"tool\"},{\"tool_calls\":[{\"id\":\"call_37b8cae848074063b7be4bd2\",\"function\":{\"arguments\":\"{\\\"file_path\\\": \\\"/tmp/crush-test/TestCoderAgent/glm-5.1/update_a_file/main.go\\\", \\\"new_string\\\": \\\"fmt.Println(\\\\\\\"Hello from crush!\\\\\\\")\\\", \\\"old_string\\\": \\\"fmt.Println(\\\\\\\"Hello, World!\\\\\\\")\\\"}\",\"name\":\"edit\"},\"type\":\"function\"}],\"role\":\"assistant\",\"reasoning_content\":\"\"},{\"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_37b8cae848074063b7be4bd2\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
582660 headers:
583661 Accept:
584662 - application/json
@@ -595,45 +673,29 @@ interactions:
595673 content_length: -1
596674 uncompressed: true
597675 body: |+
598− data: {"id":"chatcmpl-c094b3d5f53c147477f21bcd","object":"chat.completion.chunk","created":1778531329,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
599−
600− data: {"id":"chatcmpl-c094b3d5f53c147477f21bcd","object":"chat.completion.chunk","created":1778531329,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Done"},"finish_reason":null}]}
601−
602− data: {"id":"chatcmpl-c094b3d5f53c147477f21bcd","object":"chat.completion.chunk","created":1778531329,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"."},"finish_reason":null}]}
603−
604− data: {"id":"chatcmpl-c094b3d5f53c147477f21bcd","object":"chat.completion.chunk","created":1778531329,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" Updated"},"finish_reason":null}]}
605−
606− data: {"id":"chatcmpl-c094b3d5f53c147477f21bcd","object":"chat.completion.chunk","created":1778531329,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
607−
608− data: {"id":"chatcmpl-c094b3d5f53c147477f21bcd","object":"chat.completion.chunk","created":1778531329,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"main"},"finish_reason":null}]}
609−
610− data: {"id":"chatcmpl-c094b3d5f53c147477f21bcd","object":"chat.completion.chunk","created":1778531329,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
611−
612− data: {"id":"chatcmpl-c094b3d5f53c147477f21bcd","object":"chat.completion.chunk","created":1778531329,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":"},"finish_reason":null}]}
613−
614− data: {"id":"chatcmpl-c094b3d5f53c147477f21bcd","object":"chat.completion.chunk","created":1778531329,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"6"},"finish_reason":null}]}
676+ data: {"id":"chatcmpl-31f9d9d9ccc6ba0c5f4124ec","object":"chat.completion.chunk","created":1778597308,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
615677
616− data: {"id":"chatcmpl-c094b3d5f53c147477f21bcd","object":"chat.completion.chunk","created":1778531329,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`"},"finish_reason":null}]}
678+ data: {"id":"chatcmpl-31f9d9d9ccc6ba0c5f4124ec","object":"chat.completion.chunk","created":1778597308,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Done"},"finish_reason":null}]}
617679
618− data: {"id":"chatcmpl-c094b3d5f53c147477f21bcd","object":"chat.completion.chunk","created":1778531329,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}]}
680+ data: {"id":"chatcmpl-31f9d9d9ccc6ba0c5f4124ec","object":"chat.completion.chunk","created":1778597308,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" —"},"finish_reason":null}]}
619681
620− data: {"id":"chatcmpl-c094b3d5f53c147477f21bcd","object":"chat.completion.chunk","created":1778531329,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" print"},"finish_reason":null}]}
682+ data: {"id":"chatcmpl-31f9d9d9ccc6ba0c5f4124ec","object":"chat.completion.chunk","created":1778597308,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" updated `main"},"finish_reason":null}]}
621683
622− data: {"id":"chatcmpl-c094b3d5f53c147477f21bcd","object":"chat.completion.chunk","created":1778531329,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `\""},"finish_reason":null}]}
684+ data: {"id":"chatcmpl-31f9d9d9ccc6ba0c5f4124ec","object":"chat.completion.chunk","created":1778597308,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
623685
624− data: {"id":"chatcmpl-c094b3d5f53c147477f21bcd","object":"chat.completion.chunk","created":1778531329,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"hello"},"finish_reason":null}]}
686+ data: {"id":"chatcmpl-31f9d9d9ccc6ba0c5f4124ec","object":"chat.completion.chunk","created":1778597308,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":":6"},"finish_reason":null}]}
625687
626− data: {"id":"chatcmpl-c094b3d5f53c147477f21bcd","object":"chat.completion.chunk","created":1778531329,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" from"},"finish_reason":null}]}
688+ data: {"id":"chatcmpl-31f9d9d9ccc6ba0c5f4124ec","object":"chat.completion.chunk","created":1778597308,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"` to print"},"finish_reason":null}]}
627689
628− data: {"id":"chatcmpl-c094b3d5f53c147477f21bcd","object":"chat.completion.chunk","created":1778531329,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" crush"},"finish_reason":null}]}
690+ data: {"id":"chatcmpl-31f9d9d9ccc6ba0c5f4124ec","object":"chat.completion.chunk","created":1778597308,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `\"Hello"},"finish_reason":null}]}
629691
630− data: {"id":"chatcmpl-c094b3d5f53c147477f21bcd","object":"chat.completion.chunk","created":1778531329,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"\""},"finish_reason":null}]}
692+ data: {"id":"chatcmpl-31f9d9d9ccc6ba0c5f4124ec","object":"chat.completion.chunk","created":1778597308,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" from crush"},"finish_reason":null}]}
631693
632− data: {"id":"chatcmpl-c094b3d5f53c147477f21bcd","object":"chat.completion.chunk","created":1778531329,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`."},"finish_reason":null}]}
694+ data: {"id":"chatcmpl-31f9d9d9ccc6ba0c5f4124ec","object":"chat.completion.chunk","created":1778597308,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"!\"`."},"finish_reason":null}]}
633695
634− data: {"id":"chatcmpl-c094b3d5f53c147477f21bcd","object":"chat.completion.chunk","created":1778531329,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
696+ data: {"id":"chatcmpl-31f9d9d9ccc6ba0c5f4124ec","object":"chat.completion.chunk","created":1778597308,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
635697
636− data: {"id":"chatcmpl-c094b3d5f53c147477f21bcd","object":"chat.completion.chunk","created":1778531329,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":147,"completion_tokens":19,"total_tokens":7974,"prompt_tokens_details":{"cached_tokens":7808}}}
698+ data: {"id":"chatcmpl-31f9d9d9ccc6ba0c5f4124ec","object":"chat.completion.chunk","created":1778597308,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":149,"completion_tokens":19,"total_tokens":7976,"prompt_tokens_details":{"cached_tokens":7808},"completion_tokens_details":{"reasoning_tokens":18}}}
637699
638700 data: [DONE]
639701
@@ -642,4 +704,4 @@ interactions:
642704 - text/event-stream
643705 status: 200 OK
644706 code: 200
645− duration: 4.133608334s
707+ duration: 4.751869542s
internal/agent/testdata/TestCoderAgent/glm-5.1/write_tool.yaml+170−224
@@ -25,297 +25,199 @@ interactions:
2525 content_length: -1
2626 uncompressed: true
2727 body: |+
28− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
28+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
2929
30− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
30+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
3131
32− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
32+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
3333
34− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" wants"},"finish_reason":null}]}
34+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" asks"},"finish_reason":null}]}
3535
36− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
36+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
3737
38− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
38+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
3939
40− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
40+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Generate"},"finish_reason":null}]}
4141
42− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
42+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
4343
44− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
44+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" concise"},"finish_reason":null}]}
4545
46− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
46+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
4747
48− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" they"},"finish_reason":null}]}
48+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" for"},"finish_reason":null}]}
4949
50− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" gave"},"finish_reason":null}]}
50+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
5151
52− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
52+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" following"},"finish_reason":null}]}
5353
54− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
54+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
5555
56− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" must"},"finish_reason":null}]}
56+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":\n\n"},"finish_reason":null}]}
5757
58− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" be"},"finish_reason":null}]}
58+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
5959
60− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" one"},"finish_reason":null}]}
60+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" write"},"finish_reason":null}]}
6161
62− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" line"},"finish_reason":null}]}
62+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
6363
64− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
64+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" create"},"finish_reason":null}]}
6565
66− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c="},"finish_reason":null}]}
66+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
6767
68− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
68+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" new"},"finish_reason":null}]}
6969
70− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
70+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
7171
72− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
72+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" called"},"finish_reason":null}]}
7373
74− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" summary"},"finish_reason":null}]}
74+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" config"},"finish_reason":null}]}
7575
76− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" of"},"finish_reason":null}]}
76+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".json"},"finish_reason":null}]}
7777
78− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" message"},"finish_reason":null}]}
78+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
7979
80− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
80+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
8181
82− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Content"},"finish_reason":null}]}
82+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" '{\""},"finish_reason":null}]}
8383
84− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
84+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"name"},"finish_reason":null}]}
8585
86− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
86+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\":"},"finish_reason":null}]}
8787
88− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"use"},"finish_reason":null}]}
88+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
8989
90− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" write"},"finish_reason":null}]}
90+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"test"},"finish_reason":null}]}
9191
92− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" to"},"finish_reason":null}]}
92+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\","},"finish_reason":null}]}
9393
94− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" create"},"finish_reason":null}]}
94+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
9595
96− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
96+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"version"},"finish_reason":null}]}
9797
98− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" new"},"finish_reason":null}]}
98+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\":"},"finish_reason":null}]}
9999
100− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
100+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
101101
102− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" called"},"finish_reason":null}]}
102+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
103103
104− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" config"},"finish_reason":null}]}
104+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
105105
106− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".json"},"finish_reason":null}]}
106+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"0"},"finish_reason":null}]}
107107
108− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
108+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
109109
110− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
110+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"0"},"finish_reason":null}]}
111111
112− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ..."},"finish_reason":null}]}
112+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"}"},"finish_reason":null}]}
113113
114− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
114+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"'"},"finish_reason":null}]}
115115
116− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" So"},"finish_reason":null}]}
116+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
117117
118− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
118+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Need"},"finish_reason":null}]}
119119
120− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
120+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" a"},"finish_reason":null}]}
121121
122− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
122+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" short"},"finish_reason":null}]}
123123
124− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Create"},"finish_reason":null}]}
124+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
125125
126− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" config"},"finish_reason":null}]}
126+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \u003c="},"finish_reason":null}]}
127127
128− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".json"},"finish_reason":null}]}
128+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
129129
130− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
130+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" chars"},"finish_reason":null}]}
131131
132− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" JSON"},"finish_reason":null}]}
132+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
133133
134− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
134+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
135135
136− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
136+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
137137
138− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Count"},"finish_reason":null}]}
138+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
139139
140− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" characters"},"finish_reason":null}]}
140+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" no"},"finish_reason":null}]}
141141
142− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
142+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" colon"},"finish_reason":null}]}
143143
144− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
144+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
145145
146− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Create"},"finish_reason":null}]}
146+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Summ"},"finish_reason":null}]}
147147
148− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" config"},"finish_reason":null}]}
148+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ar"},"finish_reason":null}]}
149149
150− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".json"},"finish_reason":null}]}
150+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"ize"},"finish_reason":null}]}
151151
152− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
152+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
153153
154− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" JSON"},"finish_reason":null}]}
154+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" \""},"finish_reason":null}]}
155155
156− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
156+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Create"},"finish_reason":null}]}
157157
158− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\""},"finish_reason":null}]}
158+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" config"},"finish_reason":null}]}
159159
160− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
160+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".json"},"finish_reason":null}]}
161161
162− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" let's"},"finish_reason":null}]}
162+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" file"},"finish_reason":null}]}
163163
164− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" count"},"finish_reason":null}]}
164+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
165165
166− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":":"},"finish_reason":null}]}
166+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" JSON"},"finish_reason":null}]}
167167
168− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Create"},"finish_reason":null}]}
168+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
169169
170− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"("},"finish_reason":null}]}
170+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"\"."},"finish_reason":null}]}
171171
172− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"6"},"finish_reason":null}]}
172+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Title"},"finish_reason":null}]}
173173
174− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":")"},"finish_reason":null}]}
174+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" length"},"finish_reason":null}]}
175175
176− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
176+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ~"},"finish_reason":null}]}
177177
178− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"1"},"finish_reason":null}]}
178+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"38"},"finish_reason":null}]}
179179
180− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
180+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
181181
182− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
182+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" No"},"finish_reason":null}]}
183183
184− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
184+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" quotes"},"finish_reason":null}]}
185185
186− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" config"},"finish_reason":null}]}
186+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
187187
188− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".json"},"finish_reason":null}]}
188+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" That"},"finish_reason":null}]}
189189
190− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ("},"finish_reason":null}]}
190+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" works"},"finish_reason":null}]}
191191
192− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
192+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".\n\n"},"finish_reason":null}]}
193193
194− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"?)"},"finish_reason":null}]}
194+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"Return"},"finish_reason":null}]}
195195
196− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" actually"},"finish_reason":null}]}
196+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" only"},"finish_reason":null}]}
197197
198− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" config"},"finish_reason":null}]}
198+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" title"},"finish_reason":null}]}
199199
200− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":".json"},"finish_reason":null}]}
200+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
201201
202− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" ="},"finish_reason":null}]}
202+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Create"},"finish_reason":null}]}
203203
204− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
204+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" config"},"finish_reason":null}]}
205205
206− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
206+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".json"},"finish_reason":null}]}
207207
208− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" inc"},"finish_reason":null}]}
208+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" file"},"finish_reason":null}]}
209209
210− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" dot"},"finish_reason":null}]}
210+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" with"},"finish_reason":null}]}
211211
212− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
212+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" specified"},"finish_reason":null}]}
213213
214− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" so"},"finish_reason":null}]}
214+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" JSON"},"finish_reason":null}]}
215215
216− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" total"},"finish_reason":null}]}
216+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" content"},"finish_reason":null}]}
217217
218− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
218+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
219219
220− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
221−
222− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"+"},"finish_reason":null}]}
223−
224− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"11"},"finish_reason":null}]}
225−
226− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
227−
228− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"18"},"finish_reason":null}]}
229−
230− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
231−
232− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
233−
234− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
235−
236− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"19"},"finish_reason":null}]}
237−
238− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
239−
240− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
241−
242− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
243−
244− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
245−
246− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" =\u003e"},"finish_reason":null}]}
247−
248− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"23"},"finish_reason":null}]}
249−
250− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
251−
252− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
253−
254− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
255−
256− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"24"},"finish_reason":null}]}
257−
258− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
259−
260− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" JSON"},"finish_reason":null}]}
261−
262− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
263−
264− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"4"},"finish_reason":null}]}
265−
266− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" =\u003e"},"finish_reason":null}]}
267−
268− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"28"},"finish_reason":null}]}
269−
270− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
271−
272− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" space"},"finish_reason":null}]}
273−
274− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
275−
276− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"29"},"finish_reason":null}]}
277−
278− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":","},"finish_reason":null}]}
279−
280− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
281−
282− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"="},"finish_reason":null}]}
283−
284− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"7"},"finish_reason":null}]}
285−
286− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" =\u003e"},"finish_reason":null}]}
287−
288− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"36"},"finish_reason":null}]}
289−
290− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
291−
292− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Under"},"finish_reason":null}]}
293−
294− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" "},"finish_reason":null}]}
295−
296− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"50"},"finish_reason":null}]}
297−
298− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
299−
300− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":" Good"},"finish_reason":null}]}
301−
302− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
303−
304− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Create"},"finish_reason":null}]}
305−
306− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" config"},"finish_reason":null}]}
307−
308− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".json"},"finish_reason":null}]}
309−
310− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" with"},"finish_reason":null}]}
311−
312− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" JSON"},"finish_reason":null}]}
313−
314− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" content"},"finish_reason":null}]}
315−
316− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
317−
318− data: {"id":"chatcmpl-d5a06b5037d18fee0df61064","object":"chat.completion.chunk","created":1778531423,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":167,"completion_tokens":153,"total_tokens":384,"prompt_tokens_details":{"cached_tokens":64}}}
220+ data: {"id":"chatcmpl-50b975254995a7832e8d116e","object":"chat.completion.chunk","created":1778597417,"model":"gpt-oss-120b","choices":[],"usage":{"prompt_tokens":39,"completion_tokens":104,"total_tokens":335,"prompt_tokens_details":{"cached_tokens":192}}}
319221
320222 data: [DONE]
321223
@@ -324,15 +226,15 @@ interactions:
324226 - text/event-stream
325227 status: 200 OK
326228 code: 200
327− duration: 596.826083ms
229+ duration: 628.04575ms
328230- id: 1
329231 request:
330232 proto: HTTP/1.1
331233 proto_major: 1
332234 proto_minor: 1
333− content_length: 33718
235+ content_length: 33700
334236 host: ""
335− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
237+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
336238 headers:
337239 Accept:
338240 - application/json
@@ -349,31 +251,77 @@ interactions:
349251 content_length: -1
350252 uncompressed: true
351253 body: |+
352− data: {"id":"chatcmpl-7233f2ca95b09ba4009b5f83","object":"chat.completion.chunk","created":1778531427,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
254+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
255+
256+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"The"},"finish_reason":null}]}
257+
258+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" user"},"finish_reason":null}]}
259+
260+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" wants me"},"finish_reason":null}]}
261+
262+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" to create a file"},"finish_reason":null}]}
263+
264+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" called"},"finish_reason":null}]}
265+
266+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" config.json"},"finish_reason":null}]}
353267
354− data: {"id":"chatcmpl-7233f2ca95b09ba4009b5f83","object":"chat.completion.chunk","created":1778531427,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"Create"},"finish_reason":null}]}
268+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" with specific"},"finish_reason":null}]}
355269
356− data: {"id":"chatcmpl-7233f2ca95b09ba4009b5f83","object":"chat.completion.chunk","created":1778531427,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" config"},"finish_reason":null}]}
270+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
357271
358− data: {"id":"chatcmpl-7233f2ca95b09ba4009b5f83","object":"chat.completion.chunk","created":1778531427,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":".json"},"finish_reason":null}]}
272+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
359273
360− data: {"id":"chatcmpl-7233f2ca95b09ba4009b5f83","object":"chat.completion.chunk","created":1778531427,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" with"},"finish_reason":null}]}
274+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_cfe39ee91a8b4ed1bf19bd9c","type":"function","index":0,"function":{"name":"write","arguments":""}}]},"finish_reason":null}]}
361275
362− data: {"id":"chatcmpl-7233f2ca95b09ba4009b5f83","object":"chat.completion.chunk","created":1778531427,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" the"},"finish_reason":null}]}
276+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":""}}]},"finish_reason":null}]}
363277
364− data: {"id":"chatcmpl-7233f2ca95b09ba4009b5f83","object":"chat.completion.chunk","created":1778531427,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" specified"},"finish_reason":null}]}
278+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{"}}]},"finish_reason":null}]}
365279
366− data: {"id":"chatcmpl-7233f2ca95b09ba4009b5f83","object":"chat.completion.chunk","created":1778531427,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":" content"},"finish_reason":null}]}
280+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"content\": "}}]},"finish_reason":null}]}
367281
368− data: {"id":"chatcmpl-7233f2ca95b09ba4009b5f83","object":"chat.completion.chunk","created":1778531427,"model":"glm-5.1","choices":[{"index":0,"delta":{"reasoning_content":"."},"finish_reason":null}]}
282+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"{\\\"name\\\":"}}]},"finish_reason":null}]}
369283
370− data: {"id":"chatcmpl-7233f2ca95b09ba4009b5f83","object":"chat.completion.chunk","created":1778531427,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"id":"call_ee043323529f4ab782bffa86","type":"function","index":0,"function":{"name":"write","arguments":""}}]},"finish_reason":null}]}
284+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" \\\"test\\\", \\\""}}]},"finish_reason":null}]}
371285
372− data: {"id":"chatcmpl-7233f2ca95b09ba4009b5f83","object":"chat.completion.chunk","created":1778531427,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"content\":\"{\\\"name\\\": \\\"test\\\", \\\"version\\\": \\\"1.0.0\\\"}\",\"file_path\":\"/tmp/crush-test/TestCoderAgent/glm-5.1/write_tool/config.json\"}"}}]},"finish_reason":null}]}
286+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"version\\\":"}}]},"finish_reason":null}]}
373287
374− data: {"id":"chatcmpl-7233f2ca95b09ba4009b5f83","object":"chat.completion.chunk","created":1778531427,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
288+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" \\\"1"}}]},"finish_reason":null}]}
375289
376− data: {"id":"chatcmpl-7233f2ca95b09ba4009b5f83","object":"chat.completion.chunk","created":1778531427,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":718,"completion_tokens":57,"total_tokens":7815,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":8}}}
290+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".0"}}]},"finish_reason":null}]}
291+
292+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".0"}}]},"finish_reason":null}]}
293+
294+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\\"}\", "}}]},"finish_reason":null}]}
295+
296+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"file_path\": "}}]},"finish_reason":null}]}
297+
298+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"/tmp/c"}}]},"finish_reason":null}]}
299+
300+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"rush"}}]},"finish_reason":null}]}
301+
302+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-test"}}]},"finish_reason":null}]}
303+
304+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/Test"}}]},"finish_reason":null}]}
305+
306+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Coder"}}]},"finish_reason":null}]}
307+
308+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Agent"}}]},"finish_reason":null}]}
309+
310+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/glm"}}]},"finish_reason":null}]}
311+
312+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"-5"}}]},"finish_reason":null}]}
313+
314+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".1/write"}}]},"finish_reason":null}]}
315+
316+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_tool/config"}}]},"finish_reason":null}]}
317+
318+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".json\""}}]},"finish_reason":null}]}
319+
320+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}]}
321+
322+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}]}
323+
324+ data: {"id":"chatcmpl-bdbb47911bccc0e369beda19","object":"chat.completion.chunk","created":1778597419,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":720,"completion_tokens":64,"total_tokens":7824,"prompt_tokens_details":{"cached_tokens":7040},"completion_tokens_details":{"reasoning_tokens":15}}}
377325
378326 data: [DONE]
379327
@@ -382,15 +330,15 @@ interactions:
382330 - text/event-stream
383331 status: 200 OK
384332 code: 200
385− duration: 4.337392s
333+ duration: 2.831418292s
386334- id: 2
387335 request:
388336 proto: HTTP/1.1
389337 proto_major: 1
390338 proto_minor: 1
391− content_length: 34266
339+ content_length: 34281
392340 host: ""
393− 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_ee043323529f4ab782bffa86\",\"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\",\"reasoning_content\":\"Create config.json with the specified content.\"},{\"content\":\"<result>\\nFile successfully written: /tmp/crush-test/TestCoderAgent/glm-5.1/write_tool/config.json\\n</result>\",\"tool_call_id\":\"call_ee043323529f4ab782bffa86\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB returned file content section); renders images (PNG, JPEG, GIF, WebP); use ls for directories.\",\"parameters\":{\"properties\":{\"file_path\":{\"description\":\"The path to the file to read\",\"type\":\"string\"},\"limit\":{\"description\":\"The number of lines to read (defaults to 2000)\",\"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}"
341+ 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 BEFORE EDITING**: Never edit a file you haven't already read 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.\\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 files before editing them in this conversation.\\n\\nWhen using edit tools:\\n1. Read the file 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\",\"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_cfe39ee91a8b4ed1bf19bd9c\",\"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\",\"reasoning_content\":\"The user wants me to create a file called config.json with specific content.\"},{\"content\":\"<result>\\nFile successfully written: /tmp/crush-test/TestCoderAgent/glm-5.1/write_tool/config.json\\n</result>\",\"tool_call_id\":\"call_cfe39ee91a8b4ed1bf19bd9c\",\"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\\n Co-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.\\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 100MB); overwrites without warning. For reading content into context use fetch.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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.\",\"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 2000, max 200KB); renders images (PNG, JPEG, GIF, BMP, SVG, 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 2000)\",\"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}"
394342 headers:
395343 Accept:
396344 - application/json
@@ -407,21 +355,19 @@ interactions:
407355 content_length: -1
408356 uncompressed: true
409357 body: |+
410− data: {"id":"chatcmpl-d518a719907bbaf1ada6ddbc","object":"chat.completion.chunk","created":1778531429,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
411−
412− data: {"id":"chatcmpl-d518a719907bbaf1ada6ddbc","object":"chat.completion.chunk","created":1778531429,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Created"},"finish_reason":null}]}
358+ data: {"id":"chatcmpl-82adba299624c24b80addd0a","object":"chat.completion.chunk","created":1778597427,"model":"glm-5.1","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
413359
414− data: {"id":"chatcmpl-d518a719907bbaf1ada6ddbc","object":"chat.completion.chunk","created":1778531429,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
360+ data: {"id":"chatcmpl-82adba299624c24b80addd0a","object":"chat.completion.chunk","created":1778597427,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"Created"},"finish_reason":null}]}
415361
416− data: {"id":"chatcmpl-d518a719907bbaf1ada6ddbc","object":"chat.completion.chunk","created":1778531429,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"config"},"finish_reason":null}]}
362+ data: {"id":"chatcmpl-82adba299624c24b80addd0a","object":"chat.completion.chunk","created":1778597427,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":" `"},"finish_reason":null}]}
417363
418− data: {"id":"chatcmpl-d518a719907bbaf1ada6ddbc","object":"chat.completion.chunk","created":1778531429,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":".json"},"finish_reason":null}]}
364+ data: {"id":"chatcmpl-82adba299624c24b80addd0a","object":"chat.completion.chunk","created":1778597427,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"config.json"},"finish_reason":null}]}
419365
420− data: {"id":"chatcmpl-d518a719907bbaf1ada6ddbc","object":"chat.completion.chunk","created":1778531429,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`."},"finish_reason":null}]}
366+ data: {"id":"chatcmpl-82adba299624c24b80addd0a","object":"chat.completion.chunk","created":1778597427,"model":"glm-5.1","choices":[{"index":0,"delta":{"content":"`."},"finish_reason":null}]}
421367
422− data: {"id":"chatcmpl-d518a719907bbaf1ada6ddbc","object":"chat.completion.chunk","created":1778531429,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
368+ data: {"id":"chatcmpl-82adba299624c24b80addd0a","object":"chat.completion.chunk","created":1778597427,"model":"glm-5.1","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
423369
424− data: {"id":"chatcmpl-d518a719907bbaf1ada6ddbc","object":"chat.completion.chunk","created":1778531429,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":96,"completion_tokens":7,"total_tokens":7847,"prompt_tokens_details":{"cached_tokens":7744}}}
370+ data: {"id":"chatcmpl-82adba299624c24b80addd0a","object":"chat.completion.chunk","created":1778597427,"model":"glm-5.1","choices":[],"usage":{"prompt_tokens":98,"completion_tokens":7,"total_tokens":7849,"prompt_tokens_details":{"cached_tokens":7744},"completion_tokens_details":{"reasoning_tokens":6}}}
425371
426372 data: [DONE]
427373
@@ -430,4 +376,4 @@ interactions:
430376 - text/event-stream
431377 status: 200 OK
432378 code: 200
433− duration: 2.144674208s
379+ duration: 6.412358459s