test: re-record vcr cassettes

Andrey Nering created

Change summary

internal/agent/testdata/TestCoderAgent/anthropic-sonnet/bash_tool.yaml             | 64 
internal/agent/testdata/TestCoderAgent/anthropic-sonnet/download_tool.yaml         | 64 
internal/agent/testdata/TestCoderAgent/anthropic-sonnet/fetch_tool.yaml            | 64 
internal/agent/testdata/TestCoderAgent/anthropic-sonnet/glob_tool.yaml             | 64 
internal/agent/testdata/TestCoderAgent/anthropic-sonnet/grep_tool.yaml             | 64 
internal/agent/testdata/TestCoderAgent/anthropic-sonnet/ls_tool.yaml               | 64 
internal/agent/testdata/TestCoderAgent/anthropic-sonnet/multiedit_tool.yaml        | 63 
internal/agent/testdata/TestCoderAgent/anthropic-sonnet/parallel_tool_calls.yaml   | 64 
internal/agent/testdata/TestCoderAgent/anthropic-sonnet/read_a_file.yaml           | 64 
internal/agent/testdata/TestCoderAgent/anthropic-sonnet/simple_test.yaml           | 61 
internal/agent/testdata/TestCoderAgent/anthropic-sonnet/sourcegraph_tool.yaml      | 64 
internal/agent/testdata/TestCoderAgent/anthropic-sonnet/update_a_file.yaml         | 64 
internal/agent/testdata/TestCoderAgent/anthropic-sonnet/write_tool.yaml            | 64 
internal/agent/testdata/TestCoderAgent/glm-5.1/bash_tool.yaml                      | 37 
internal/agent/testdata/TestCoderAgent/glm-5.1/download_tool.yaml                  | 29 
internal/agent/testdata/TestCoderAgent/glm-5.1/fetch_tool.yaml                     | 39 
internal/agent/testdata/TestCoderAgent/glm-5.1/glob_tool.yaml                      | 66 
internal/agent/testdata/TestCoderAgent/glm-5.1/grep_tool.yaml                      | 64 
internal/agent/testdata/TestCoderAgent/glm-5.1/ls_tool.yaml                        | 60 
internal/agent/testdata/TestCoderAgent/glm-5.1/multiedit_tool.yaml                 | 62 
internal/agent/testdata/TestCoderAgent/glm-5.1/parallel_tool_calls.yaml            | 64 
internal/agent/testdata/TestCoderAgent/glm-5.1/read_a_file.yaml                    | 56 
internal/agent/testdata/TestCoderAgent/glm-5.1/simple_test.yaml                    | 21 
internal/agent/testdata/TestCoderAgent/glm-5.1/sourcegraph_tool.yaml               | 37 
internal/agent/testdata/TestCoderAgent/glm-5.1/update_a_file.yaml                  | 62 
internal/agent/testdata/TestCoderAgent/glm-5.1/write_tool.yaml                     | 10 
internal/agent/testdata/TestCoderAgent/openai-gpt-5/bash_tool.yaml                 | 61 
internal/agent/testdata/TestCoderAgent/openai-gpt-5/download_tool.yaml             | 63 
internal/agent/testdata/TestCoderAgent/openai-gpt-5/glob_tool.yaml                 | 65 
internal/agent/testdata/TestCoderAgent/openai-gpt-5/ls_tool.yaml                   | 57 
internal/agent/testdata/TestCoderAgent/openai-gpt-5/multiedit_tool.yaml            | 63 
internal/agent/testdata/TestCoderAgent/openai-gpt-5/read_a_file.yaml               | 55 
internal/agent/testdata/TestCoderAgent/openai-gpt-5/simple_test.yaml               | 51 
internal/agent/testdata/TestCoderAgent/openai-gpt-5/sourcegraph_tool.yaml          | 71 
internal/agent/testdata/TestCoderAgent/openai-gpt-5/update_a_file.yaml             | 71 
internal/agent/testdata/TestCoderAgent/openai-gpt-5/write_tool.yaml                | 61 
internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/bash_tool.yaml           | 59 
internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/download_tool.yaml       | 71 
internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/fetch_tool.yaml          | 55 
internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/glob_tool.yaml           | 55 
internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/grep_tool.yaml           | 59 
internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/ls_tool.yaml             | 55 
internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/multiedit_tool.yaml      | 75 
internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/parallel_tool_calls.yaml | 75 
internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/read_a_file.yaml         | 61 
internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/sourcegraph_tool.yaml    | 55 
internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/update_a_file.yaml       | 63 
internal/agent/testdata/TestCoderAgent/zai-glm4.6/bash_tool.yaml                   | 55 
internal/agent/testdata/TestCoderAgent/zai-glm4.6/download_tool.yaml               | 10 
internal/agent/testdata/TestCoderAgent/zai-glm4.6/fetch_tool.yaml                  | 10 
internal/agent/testdata/TestCoderAgent/zai-glm4.6/glob_tool.yaml                   | 55 
internal/agent/testdata/TestCoderAgent/zai-glm4.6/grep_tool.yaml                   | 63 
internal/agent/testdata/TestCoderAgent/zai-glm4.6/ls_tool.yaml                     | 10 
internal/agent/testdata/TestCoderAgent/zai-glm4.6/multiedit_tool.yaml              | 61 
internal/agent/testdata/TestCoderAgent/zai-glm4.6/parallel_tool_calls.yaml         | 57 
internal/agent/testdata/TestCoderAgent/zai-glm4.6/read_a_file.yaml                 | 51 
internal/agent/testdata/TestCoderAgent/zai-glm4.6/simple_test.yaml                 | 47 
internal/agent/testdata/TestCoderAgent/zai-glm4.6/sourcegraph_tool.yaml            | 10 
internal/agent/testdata/TestCoderAgent/zai-glm4.6/update_a_file.yaml               | 65 
internal/agent/testdata/TestCoderAgent/zai-glm4.6/write_tool.yaml                  | 59 
60 files changed, 527 insertions(+), 2,762 deletions(-)

Detailed changes

internal/agent/testdata/TestCoderAgent/anthropic-sonnet/bash_tool.yaml 🔗

@@ -1,223 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 886
-    host: ""
-    body: '{"max_tokens":40,"messages":[{"content":[{"text":"Generate a concise title for the following content:\n\nuse bash to create a file named test.txt with content ''hello bash''. do not print its timestamp\n \u003cthink\u003e\n\n\u003c/think\u003e","type":"text"}],"role":"user"}],"model":"claude-haiku-4-5-20251001","system":[{"text":"You will generate a short title based on the first message a user begins a conversation with.\n\n\u003crules\u003e\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n\u003c/rules\u003e\n\n /no_think","type":"text"}],"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.anthropic.com/v1/messages
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    uncompressed: true
-    body: |+
-      event: message_start
-      data: {"type":"message_start","message":{"model":"claude-haiku-4-5-20251001","id":"msg_01VzT95Yg52yRncWMcaLrmfC","type":"message","role":"assistant","content":[],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":177,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"not_available"}}     }
-
-      event: content_block_start
-      data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""} }
-
-      event: ping
-      data: {"type": "ping"}
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Bash create"}         }
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" file without timestamp"}           }
-
-      event: content_block_stop
-      data: {"type":"content_block_stop","index":0      }
-
-      event: message_delta
-      data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null,"stop_details":null},"usage":{"input_tokens":177,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":9}               }
-
-      event: message_stop
-      data: {"type":"message_stop"     }
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 1.104341792s
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 31043
-    host: ""

internal/agent/testdata/TestCoderAgent/anthropic-sonnet/download_tool.yaml 🔗

@@ -1,280 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 907
-    host: ""
-    body: '{"max_tokens":40,"messages":[{"content":[{"text":"Generate a concise title for the following content:\n\ndownload the file from https://example-files.online-convert.com/document/txt/example.txt and save it as example.txt\n \u003cthink\u003e\n\n\u003c/think\u003e","type":"text"}],"role":"user"}],"model":"claude-haiku-4-5-20251001","system":[{"text":"You will generate a short title based on the first message a user begins a conversation with.\n\n\u003crules\u003e\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n\u003c/rules\u003e\n\n /no_think","type":"text"}],"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.anthropic.com/v1/messages
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    uncompressed: true
-    body: |+
-      event: message_start
-      data: {"type":"message_start","message":{"model":"claude-haiku-4-5-20251001","id":"msg_01FrLY1GjC7uhHuN4Wm3K2Er","type":"message","role":"assistant","content":[],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":185,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"}}}
-
-      event: content_block_start
-      data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}        }
-
-      event: ping
-      data: {"type": "ping"}
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Download"}  }
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" and save example.txt file"}  }
-
-      event: content_block_stop
-      data: {"type":"content_block_stop","index":0               }
-
-      event: message_delta
-      data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null,"stop_details":null},"usage":{"input_tokens":185,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":10}             }
-
-      event: message_stop
-      data: {"type":"message_stop"               }
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 849.119083ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 31068
-    host: ""

internal/agent/testdata/TestCoderAgent/anthropic-sonnet/fetch_tool.yaml 🔗

@@ -1,281 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 928
-    host: ""
-    body: '{"max_tokens":40,"messages":[{"content":[{"text":"Generate a concise title for the following content:\n\nfetch the content from https://example-files.online-convert.com/website/html/example.html and tell me if it contains the word ''John Doe''\n \u003cthink\u003e\n\n\u003c/think\u003e","type":"text"}],"role":"user"}],"model":"claude-haiku-4-5-20251001","system":[{"text":"You will generate a short title based on the first message a user begins a conversation with.\n\n\u003crules\u003e\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n\u003c/rules\u003e\n\n /no_think","type":"text"}],"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.anthropic.com/v1/messages
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    uncompressed: true
-    body: |+
-      event: message_start
-      data: {"type":"message_start","message":{"model":"claude-haiku-4-5-20251001","id":"msg_014TzoSX5ygfeVjxiBpMuo5b","type":"message","role":"assistant","content":[],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":192,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"}}         }
-
-      event: content_block_start
-      data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}        }
-
-      event: ping
-      data: {"type": "ping"}
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Check"}     }
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" if example.html contains 'John Doe'"}    }
-
-      event: content_block_stop
-      data: {"type":"content_block_stop","index":0           }
-
-      event: message_delta
-      data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null,"stop_details":null},"usage":{"input_tokens":192,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":15}    }
-
-      event: message_stop
-      data: {"type":"message_stop"    }
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 912.685792ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 31086
-    host: ""

internal/agent/testdata/TestCoderAgent/anthropic-sonnet/glob_tool.yaml 🔗

@@ -1,170 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 847
-    host: ""
-    body: '{"max_tokens":40,"messages":[{"content":[{"text":"Generate a concise title for the following content:\n\nuse glob to find all .go files in the current directory\n \u003cthink\u003e\n\n\u003c/think\u003e","type":"text"}],"role":"user"}],"model":"claude-haiku-4-5-20251001","system":[{"text":"You will generate a short title based on the first message a user begins a conversation with.\n\n\u003crules\u003e\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n\u003c/rules\u003e\n\n /no_think","type":"text"}],"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.anthropic.com/v1/messages
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    uncompressed: true
-    body: |+
-      event: message_start
-      data: {"type":"message_start","message":{"model":"claude-haiku-4-5-20251001","id":"msg_016gFGvY1mJARHPK5geBtZca","type":"message","role":"assistant","content":[],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":167,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"}}      }
-
-      event: content_block_start
-      data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}       }
-
-      event: ping
-      data: {"type": "ping"}
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Finding"}             }
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" Go files with glob in current directory"}          }
-
-      event: content_block_stop
-      data: {"type":"content_block_stop","index":0           }
-
-      event: message_delta
-      data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null,"stop_details":null},"usage":{"input_tokens":167,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":11}           }
-
-      event: message_stop
-      data: {"type":"message_stop"    }
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 522.915792ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 31004
-    host: ""

internal/agent/testdata/TestCoderAgent/anthropic-sonnet/grep_tool.yaml 🔗

@@ -1,183 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 845
-    host: ""
-    body: '{"max_tokens":40,"messages":[{"content":[{"text":"Generate a concise title for the following content:\n\nuse grep to search for the word ''package'' in go files\n \u003cthink\u003e\n\n\u003c/think\u003e","type":"text"}],"role":"user"}],"model":"claude-haiku-4-5-20251001","system":[{"text":"You will generate a short title based on the first message a user begins a conversation with.\n\n\u003crules\u003e\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n\u003c/rules\u003e\n\n /no_think","type":"text"}],"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.anthropic.com/v1/messages
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    uncompressed: true
-    body: |+
-      event: message_start
-      data: {"type":"message_start","message":{"model":"claude-haiku-4-5-20251001","id":"msg_01DDuSaAjzBVC2GMGFH71zGK","type":"message","role":"assistant","content":[],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":169,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":3,"service_tier":"standard","inference_geo":"not_available"}}          }
-
-      event: content_block_start
-      data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}           }
-
-      event: ping
-      data: {"type": "ping"}
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Grep search"}               }
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" for 'package' in Go files"}}
-
-      event: content_block_stop
-      data: {"type":"content_block_stop","index":0               }
-
-      event: message_delta
-      data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null,"stop_details":null},"usage":{"input_tokens":169,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":14}  }
-
-      event: message_stop
-      data: {"type":"message_stop"         }
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 748.122792ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 31002
-    host: ""

internal/agent/testdata/TestCoderAgent/anthropic-sonnet/ls_tool.yaml 🔗

@@ -1,162 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 841
-    host: ""
-    body: '{"max_tokens":40,"messages":[{"content":[{"text":"Generate a concise title for the following content:\n\nuse ls to list the files in the current directory\n \u003cthink\u003e\n\n\u003c/think\u003e","type":"text"}],"role":"user"}],"model":"claude-haiku-4-5-20251001","system":[{"text":"You will generate a short title based on the first message a user begins a conversation with.\n\n\u003crules\u003e\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n\u003c/rules\u003e\n\n /no_think","type":"text"}],"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.anthropic.com/v1/messages
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    uncompressed: true
-    body: |+
-      event: message_start
-      data: {"type":"message_start","message":{"model":"claude-haiku-4-5-20251001","id":"msg_01524QdtZ125onKVyuqZxJuM","type":"message","role":"assistant","content":[],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":165,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"}}               }
-
-      event: content_block_start
-      data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}          }
-
-      event: ping
-      data: {"type": "ping"}
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Using"}  }
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" ls to list directory files"}            }
-
-      event: content_block_stop
-      data: {"type":"content_block_stop","index":0         }
-
-      event: message_delta
-      data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null,"stop_details":null},"usage":{"input_tokens":165,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":9}}
-
-      event: message_stop
-      data: {"type":"message_stop"    }
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 671.612666ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30996
-    host: ""

internal/agent/testdata/TestCoderAgent/anthropic-sonnet/multiedit_tool.yaml 🔗

@@ -1,346 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 920
-    host: ""
-    body: '{"max_tokens":40,"messages":[{"content":[{"text":"Generate a concise title for the following content:\n\nuse multiedit to change ''Hello, World!'' to ''Hello, Crush!'' and add a comment ''// Greeting'' above the fmt.Println line in main.go\n \u003cthink\u003e\n\n\u003c/think\u003e","type":"text"}],"role":"user"}],"model":"claude-haiku-4-5-20251001","system":[{"text":"You will generate a short title based on the first message a user begins a conversation with.\n\n\u003crules\u003e\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n\u003c/rules\u003e\n\n /no_think","type":"text"}],"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.anthropic.com/v1/messages
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      event: message_start
-      data: {"type":"message_start","message":{"model":"claude-haiku-4-5-20251001","id":"msg_01RKM1qKvmwGiYc4aTLUrgpd","type":"message","role":"assistant","content":[],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":195,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":5,"service_tier":"standard","inference_geo":"not_available"}}}
-
-      event: content_block_start
-      data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}  }
-
-      event: ping
-      data: {"type": "ping"}
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Multiedit Hello"}               }
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" World to Hello Crush with comment"}           }
-
-      event: content_block_stop
-      data: {"type":"content_block_stop","index":0     }
-
-      event: message_delta
-      data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null,"stop_details":null},"usage":{"input_tokens":195,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":15}    }
-
-      event: message_stop
-      data: {"type":"message_stop"               }
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 642.710416ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 31082
-    host: ""

internal/agent/testdata/TestCoderAgent/anthropic-sonnet/parallel_tool_calls.yaml 🔗

@@ -1,216 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 926
-    host: ""
-    body: '{"max_tokens":40,"messages":[{"content":[{"text":"Generate a concise title for the following content:\n\nuse 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\n \u003cthink\u003e\n\n\u003c/think\u003e","type":"text"}],"role":"user"}],"model":"claude-haiku-4-5-20251001","system":[{"text":"You will generate a short title based on the first message a user begins a conversation with.\n\n\u003crules\u003e\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n\u003c/rules\u003e\n\n /no_think","type":"text"}],"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.anthropic.com/v1/messages
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    uncompressed: true
-    body: |+
-      event: message_start
-      data: {"type":"message_start","message":{"model":"claude-haiku-4-5-20251001","id":"msg_01HKqZKuLTTyE6hXkLYkJCug","type":"message","role":"assistant","content":[],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":184,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"}}          }
-
-      event: content_block_start
-      data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}         }
-
-      event: ping
-      data: {"type": "ping"}
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Finding"}  }
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" Go files and listing directory in parallel"}}
-
-      event: content_block_stop
-      data: {"type":"content_block_stop","index":0 }
-
-      event: message_delta
-      data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null,"stop_details":null},"usage":{"input_tokens":184,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":11}    }
-
-      event: message_stop
-      data: {"type":"message_stop"        }
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 644.135083ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 31093
-    host: ""

internal/agent/testdata/TestCoderAgent/anthropic-sonnet/read_a_file.yaml 🔗

@@ -1,260 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 807
-    host: ""
-    body: '{"max_tokens":40,"messages":[{"content":[{"text":"Generate a concise title for the following content:\n\nRead the go mod\n \u003cthink\u003e\n\n\u003c/think\u003e","type":"text"}],"role":"user"}],"model":"claude-haiku-4-5-20251001","system":[{"text":"You will generate a short title based on the first message a user begins a conversation with.\n\n\u003crules\u003e\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n\u003c/rules\u003e\n\n /no_think","type":"text"}],"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.anthropic.com/v1/messages
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    uncompressed: true
-    body: |+
-      event: message_start
-      data: {"type":"message_start","message":{"model":"claude-haiku-4-5-20251001","id":"msg_01LhuXKez6yFTEEV385d1cux","type":"message","role":"assistant","content":[],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":159,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"}}  }
-
-      event: content_block_start
-      data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}              }
-
-      event: ping
-      data: {"type": "ping"}
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Go"}  }
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" mod file reading"}               }
-
-      event: content_block_stop
-      data: {"type":"content_block_stop","index":0     }
-
-      event: message_delta
-      data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null,"stop_details":null},"usage":{"input_tokens":159,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":7}    }
-
-      event: message_stop
-      data: {"type":"message_stop"         }
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 1.1756565s
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30966
-    host: ""

internal/agent/testdata/TestCoderAgent/anthropic-sonnet/simple_test.yaml 🔗

@@ -1,107 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 797
-    host: ""
-    body: '{"max_tokens":40,"messages":[{"content":[{"text":"Generate a concise title for the following content:\n\nHello\n \u003cthink\u003e\n\n\u003c/think\u003e","type":"text"}],"role":"user"}],"model":"claude-haiku-4-5-20251001","system":[{"text":"You will generate a short title based on the first message a user begins a conversation with.\n\n\u003crules\u003e\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n\u003c/rules\u003e\n\n /no_think","type":"text"}],"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.anthropic.com/v1/messages
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    uncompressed: true
-    body: |+
-      event: message_start
-      data: {"type":"message_start","message":{"model":"claude-haiku-4-5-20251001","id":"msg_019QZqWubF2xvU8AxWu51CHS","type":"message","role":"assistant","content":[],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":156,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"}}    }
-
-      event: content_block_start
-      data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}             }
-
-      event: ping
-      data: {"type": "ping"}
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Hello"}             }
-
-      event: content_block_stop
-      data: {"type":"content_block_stop","index":0           }
-
-      event: message_delta
-      data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null,"stop_details":null},"usage":{"input_tokens":156,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":4}           }
-
-      event: message_stop
-      data: {"type":"message_stop"               }
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 755.416208ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30956
-    host: ""

internal/agent/testdata/TestCoderAgent/anthropic-sonnet/sourcegraph_tool.yaml 🔗

@@ -1,229 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 852
-    host: ""
-    body: '{"max_tokens":40,"messages":[{"content":[{"text":"Generate a concise title for the following content:\n\nuse sourcegraph to search for ''func main'' in Go repositories\n \u003cthink\u003e\n\n\u003c/think\u003e","type":"text"}],"role":"user"}],"model":"claude-haiku-4-5-20251001","system":[{"text":"You will generate a short title based on the first message a user begins a conversation with.\n\n\u003crules\u003e\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n\u003c/rules\u003e\n\n /no_think","type":"text"}],"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.anthropic.com/v1/messages
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    uncompressed: true
-    body: |+
-      event: message_start
-      data: {"type":"message_start","message":{"model":"claude-haiku-4-5-20251001","id":"msg_016XyqvjsUrPpyWxdMpxne7i","type":"message","role":"assistant","content":[],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":170,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":5,"service_tier":"standard","inference_geo":"not_available"}}    }
-
-      event: content_block_start
-      data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}              }
-
-      event: ping
-      data: {"type": "ping"}
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Sourcegraph Go"}         }
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" func main Search"}     }
-
-      event: content_block_stop
-      data: {"type":"content_block_stop","index":0               }
-
-      event: message_delta
-      data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null,"stop_details":null},"usage":{"input_tokens":170,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":11}      }
-
-      event: message_stop
-      data: {"type":"message_stop"               }
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 692.93075ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 31016
-    host: ""

internal/agent/testdata/TestCoderAgent/anthropic-sonnet/update_a_file.yaml 🔗

@@ -1,381 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 861
-    host: ""
-    body: '{"max_tokens":40,"messages":[{"content":[{"text":"Generate a concise title for the following content:\n\nupdate the main.go file by changing the print to say hello from crush\n \u003cthink\u003e\n\n\u003c/think\u003e","type":"text"}],"role":"user"}],"model":"claude-haiku-4-5-20251001","system":[{"text":"You will generate a short title based on the first message a user begins a conversation with.\n\n\u003crules\u003e\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n\u003c/rules\u003e\n\n /no_think","type":"text"}],"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.anthropic.com/v1/messages
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    uncompressed: true
-    body: |+
-      event: message_start
-      data: {"type":"message_start","message":{"model":"claude-haiku-4-5-20251001","id":"msg_01UR3MBvvH5GXuLq66hf7uDj","type":"message","role":"assistant","content":[],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":170,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"}}           }
-
-      event: content_block_start
-      data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
-
-      event: ping
-      data: {"type": "ping"}
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Update"}        }
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" main.go print statement to say hello from crush"}              }
-
-      event: content_block_stop
-      data: {"type":"content_block_stop","index":0            }
-
-      event: message_delta
-      data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null,"stop_details":null},"usage":{"input_tokens":170,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":14}       }
-
-      event: message_stop
-      data: {"type":"message_stop" }
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 681.551083ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 31022
-    host: ""

internal/agent/testdata/TestCoderAgent/anthropic-sonnet/write_tool.yaml 🔗

@@ -1,225 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 901
-    host: ""
-    body: '{"max_tokens":40,"messages":[{"content":[{"text":"Generate a concise title for the following content:\n\nuse write to create a new file called config.json with content ''{\"name\": \"test\", \"version\": \"1.0.0\"}''\n \u003cthink\u003e\n\n\u003c/think\u003e","type":"text"}],"role":"user"}],"model":"claude-haiku-4-5-20251001","system":[{"text":"You will generate a short title based on the first message a user begins a conversation with.\n\n\u003crules\u003e\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n\u003c/rules\u003e\n\n /no_think","type":"text"}],"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.anthropic.com/v1/messages
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    uncompressed: true
-    body: |+
-      event: message_start
-      data: {"type":"message_start","message":{"model":"claude-haiku-4-5-20251001","id":"msg_01B97T62rPotpjpBoqwYEGhV","type":"message","role":"assistant","content":[],"stop_reason":null,"stop_sequence":null,"stop_details":null,"usage":{"input_tokens":186,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":0},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"}}         }
-
-      event: content_block_start
-      data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}           }
-
-      event: ping
-      data: {"type": "ping"}
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Create"}              }
-
-      event: content_block_delta
-      data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" config.json file with JSON content"}     }
-
-      event: content_block_stop
-      data: {"type":"content_block_stop","index":0     }
-
-      event: message_delta
-      data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null,"stop_details":null},"usage":{"input_tokens":186,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":11}               }
-
-      event: message_stop
-      data: {"type":"message_stop" }
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 1.171629833s
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 31059
-    host: ""

internal/agent/testdata/TestCoderAgent/openai-gpt-5/parallel_tool_calls.yaml → internal/agent/testdata/TestCoderAgent/glm-5.1/bash_tool.yaml 🔗

@@ -6,9 +6,9 @@ interactions:
     proto: HTTP/1.1
     proto_major: 1
     proto_minor: 1
-    content_length: 876
+    content_length: 853
     host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse 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\n <think>\n\n</think>","role":"user"}],"model":"gpt-4o","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
+    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse bash to create a file named test.txt with content ''hello bash''. do not print its timestamp\n <think>\n\n</think>","role":"user"}],"model":"gpt-oss-120b","max_completion_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
     headers:
       Accept:
       - application/json
@@ -16,50 +16,55 @@ interactions:
       - application/json
       User-Agent:
       - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.openai.com/v1/chat/completions
+    url: https://hyper.charm.land/v1/chat/completions
     method: POST
   response:
     proto: HTTP/2.0
     proto_major: 2
     proto_minor: 0
     content_length: -1
+    uncompressed: true
     body: |+
-      data: {"id":"chatcmpl-DUu90yHFiqANxMC539sFFf3Ox94Lf","object":"chat.completion.chunk","created":1776258030,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"P4Pcx2SHsL1Ht0"}
+      data: {"id":"chatcmpl-0d035875a345ee3e89e04348","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu90yHFiqANxMC539sFFf3Ox94Lf","object":"chat.completion.chunk","created":1776258030,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":"Running"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"I23AxfXaa"}
+      data: {"id":"chatcmpl-0d035875a345ee3e89e04348","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"B"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu90yHFiqANxMC539sFFf3Ox94Lf","object":"chat.completion.chunk","created":1776258030,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" Glob"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ig87JsfJZjB"}
+      data: {"id":"chatcmpl-0d035875a345ee3e89e04348","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"ash"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu90yHFiqANxMC539sFFf3Ox94Lf","object":"chat.completion.chunk","created":1776258030,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" and"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"SyFictSzn3CU"}
+      data: {"id":"chatcmpl-0d035875a345ee3e89e04348","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" command"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu90yHFiqANxMC539sFFf3Ox94Lf","object":"chat.completion.chunk","created":1776258030,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" LS"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ZWMk2qQZPUUII"}
+      data: {"id":"chatcmpl-0d035875a345ee3e89e04348","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu90yHFiqANxMC539sFFf3Ox94Lf","object":"chat.completion.chunk","created":1776258030,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" Commands"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"KsOhZOQ"}
+      data: {"id":"chatcmpl-0d035875a345ee3e89e04348","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" create"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu90yHFiqANxMC539sFFf3Ox94Lf","object":"chat.completion.chunk","created":1776258030,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" in"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"QvBWJsGovNPVh"}
+      data: {"id":"chatcmpl-0d035875a345ee3e89e04348","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" test"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu90yHFiqANxMC539sFFf3Ox94Lf","object":"chat.completion.chunk","created":1776258030,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" Parallel"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"iwptu0d"}
+      data: {"id":"chatcmpl-0d035875a345ee3e89e04348","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".txt"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu90yHFiqANxMC539sFFf3Ox94Lf","object":"chat.completion.chunk","created":1776258030,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"0hKCRMiXL4"}
+      data: {"id":"chatcmpl-0d035875a345ee3e89e04348","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" with"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu90yHFiqANxMC539sFFf3Ox94Lf","object":"chat.completion.chunk","created":1776258030,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[],"usage":{"prompt_tokens":170,"completion_tokens":7,"total_tokens":177,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"XQUDNF0k7Xd1jN"}
+      data: {"id":"chatcmpl-0d035875a345ee3e89e04348","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" hello"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-0d035875a345ee3e89e04348","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" bash"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-0d035875a345ee3e89e04348","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":43,"completion_tokens":238,"total_tokens":457}}
 
       data: [DONE]
 
     headers:
       Content-Type:
-      - text/event-stream; charset=utf-8
+      - text/event-stream
     status: 200 OK
     code: 200
-    duration: 552.086291ms
+    duration: 2.910817083s
 - id: 1
   request:
     proto: HTTP/1.1
     proto_major: 1
     proto_minor: 1
-    content_length: 30753
+    content_length: 30689
     host: ""

internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/write_tool.yaml → internal/agent/testdata/TestCoderAgent/glm-5.1/download_tool.yaml 🔗

@@ -6,9 +6,9 @@ interactions:
     proto: HTTP/1.1
     proto_major: 1
     proto_minor: 1
-    content_length: 902
+    content_length: 874
     host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse write to create a new file called config.json with content ''{\"name\": \"test\", \"version\": \"1.0.0\"}''\n <think>\n\n</think>","role":"user"}],"model":"qwen/qwen3-next-80b-a3b-instruct","max_tokens":40,"stream_options":{"include_usage":true},"usage":{"include":true},"stream":true}'
+    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\ndownload the file from https://example-files.online-convert.com/document/txt/example.txt and save it as example.txt\n <think>\n\n</think>","role":"user"}],"model":"gpt-oss-120b","max_completion_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
     headers:
       Accept:
       - application/json
@@ -16,25 +16,32 @@ interactions:
       - application/json
       User-Agent:
       - Charm-Crush/devel (https://charm.land/crush)
-    url: https://openrouter.ai/api/v1/chat/completions
+    url: https://hyper.charm.land/v1/chat/completions
     method: POST
   response:
     proto: HTTP/2.0
     proto_major: 2
     proto_minor: 0
     content_length: -1
+    uncompressed: true
     body: |+
-      : OPENROUTER PROCESSING
+      data: {"id":"chatcmpl-ecd95edeb312d122018c3715","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
 
-      data: {"id":"gen-1776258146-WjvXwiaFi9NttWNKetR4","object":"chat.completion.chunk","created":1776258146,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":"Create","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
+      data: {"id":"chatcmpl-ecd95edeb312d122018c3715","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Download"},"finish_reason":null}]}
 
-      data: {"id":"gen-1776258146-WjvXwiaFi9NttWNKetR4","object":"chat.completion.chunk","created":1776258146,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":" config.json with test","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
+      data: {"id":"chatcmpl-ecd95edeb312d122018c3715","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" and"},"finish_reason":null}]}
 
-      data: {"id":"gen-1776258146-WjvXwiaFi9NttWNKetR4","object":"chat.completion.chunk","created":1776258146,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":" data","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
+      data: {"id":"chatcmpl-ecd95edeb312d122018c3715","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Save"},"finish_reason":null}]}
 
-      data: {"id":"gen-1776258146-WjvXwiaFi9NttWNKetR4","object":"chat.completion.chunk","created":1776258146,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}]}
+      data: {"id":"chatcmpl-ecd95edeb312d122018c3715","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" example"},"finish_reason":null}]}
 
-      data: {"id":"gen-1776258146-WjvXwiaFi9NttWNKetR4","object":"chat.completion.chunk","created":1776258146,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}],"usage":{"prompt_tokens":175,"completion_tokens":6,"total_tokens":181,"cost":0.0000217425,"is_byok":false,"prompt_tokens_details":{"cached_tokens":0,"cache_write_tokens":0,"audio_tokens":0,"video_tokens":0},"cost_details":{"upstream_inference_cost":0.00003345,"upstream_inference_prompt_cost":0.00002625,"upstream_inference_completions_cost":0.0000072},"completion_tokens_details":{"reasoning_tokens":0,"image_tokens":0,"audio_tokens":0}}}
+      data: {"id":"chatcmpl-ecd95edeb312d122018c3715","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".txt"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-ecd95edeb312d122018c3715","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" from"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-ecd95edeb312d122018c3715","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" URL"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-ecd95edeb312d122018c3715","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":46,"completion_tokens":177,"total_tokens":399}}
 
       data: [DONE]
 
@@ -43,15 +50,15 @@ interactions:
       - text/event-stream
     status: 200 OK
     code: 200
-    duration: 656.330833ms
+    duration: 3.017650708s
 - id: 1
   request:
     proto: HTTP/1.1
     proto_major: 1
     proto_minor: 1
-    content_length: 30868
+    content_length: 30714
     host: ""

internal/agent/testdata/TestCoderAgent/openai-gpt-5/fetch_tool.yaml → internal/agent/testdata/TestCoderAgent/glm-5.1/fetch_tool.yaml 🔗

@@ -6,9 +6,9 @@ interactions:
     proto: HTTP/1.1
     proto_major: 1
     proto_minor: 1
-    content_length: 878
+    content_length: 895
     host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nfetch the content from https://example-files.online-convert.com/website/html/example.html and tell me if it contains the word ''John Doe''\n <think>\n\n</think>","role":"user"}],"model":"gpt-4o","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
+    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nfetch the content from https://example-files.online-convert.com/website/html/example.html and tell me if it contains the word ''John Doe''\n <think>\n\n</think>","role":"user"}],"model":"gpt-oss-120b","max_completion_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
     headers:
       Accept:
       - application/json
@@ -16,56 +16,49 @@ interactions:
       - application/json
       User-Agent:
       - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.openai.com/v1/chat/completions
+    url: https://hyper.charm.land/v1/chat/completions
     method: POST
   response:
     proto: HTTP/2.0
     proto_major: 2
     proto_minor: 0
     content_length: -1
+    uncompressed: true
     body: |+
-      data: {"id":"chatcmpl-DUu7leRpegv7FTwppRdPxLoDutmRp","object":"chat.completion.chunk","created":1776257953,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d65b5b17fe","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"jvf30qULGidN2V"}
-
-      data: {"id":"chatcmpl-DUu7leRpegv7FTwppRdPxLoDutmRp","object":"chat.completion.chunk","created":1776257953,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d65b5b17fe","choices":[{"index":0,"delta":{"content":"Check"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"giDQMHsHsaK"}
-
-      data: {"id":"chatcmpl-DUu7leRpegv7FTwppRdPxLoDutmRp","object":"chat.completion.chunk","created":1776257953,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d65b5b17fe","choices":[{"index":0,"delta":{"content":" for"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"JAxGYkIBjd9W"}
-
-      data: {"id":"chatcmpl-DUu7leRpegv7FTwppRdPxLoDutmRp","object":"chat.completion.chunk","created":1776257953,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d65b5b17fe","choices":[{"index":0,"delta":{"content":" '"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"yr4WzGAPPot7Sf"}
-
-      data: {"id":"chatcmpl-DUu7leRpegv7FTwppRdPxLoDutmRp","object":"chat.completion.chunk","created":1776257953,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d65b5b17fe","choices":[{"index":0,"delta":{"content":"John"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"oKUPSAS7l6kZ"}
+      data: {"id":"chatcmpl-5e5f8ab078fc8e890a00550d","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu7leRpegv7FTwppRdPxLoDutmRp","object":"chat.completion.chunk","created":1776257953,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d65b5b17fe","choices":[{"index":0,"delta":{"content":" Doe"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"LjGLjnAdEQUr"}
+      data: {"id":"chatcmpl-5e5f8ab078fc8e890a00550d","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Check"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu7leRpegv7FTwppRdPxLoDutmRp","object":"chat.completion.chunk","created":1776257953,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d65b5b17fe","choices":[{"index":0,"delta":{"content":"'"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"9SHF6RnjpLTAEsu"}
+      data: {"id":"chatcmpl-5e5f8ab078fc8e890a00550d","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" for"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu7leRpegv7FTwppRdPxLoDutmRp","object":"chat.completion.chunk","created":1776257953,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d65b5b17fe","choices":[{"index":0,"delta":{"content":" in"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"sBfZdecUfRFOd"}
+      data: {"id":"chatcmpl-5e5f8ab078fc8e890a00550d","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" John"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu7leRpegv7FTwppRdPxLoDutmRp","object":"chat.completion.chunk","created":1776257953,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d65b5b17fe","choices":[{"index":0,"delta":{"content":" Online"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"zvGABZYSl"}
+      data: {"id":"chatcmpl-5e5f8ab078fc8e890a00550d","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Doe"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu7leRpegv7FTwppRdPxLoDutmRp","object":"chat.completion.chunk","created":1776257953,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d65b5b17fe","choices":[{"index":0,"delta":{"content":" HTML"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"zMm9h9k5cZ0"}
+      data: {"id":"chatcmpl-5e5f8ab078fc8e890a00550d","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu7leRpegv7FTwppRdPxLoDutmRp","object":"chat.completion.chunk","created":1776257953,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d65b5b17fe","choices":[{"index":0,"delta":{"content":" File"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"kubOtDlhaEs"}
+      data: {"id":"chatcmpl-5e5f8ab078fc8e890a00550d","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" example"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu7leRpegv7FTwppRdPxLoDutmRp","object":"chat.completion.chunk","created":1776257953,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d65b5b17fe","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"UsjdBVfwJ0"}
+      data: {"id":"chatcmpl-5e5f8ab078fc8e890a00550d","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" HTML"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu7leRpegv7FTwppRdPxLoDutmRp","object":"chat.completion.chunk","created":1776257953,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d65b5b17fe","choices":[],"usage":{"prompt_tokens":169,"completion_tokens":10,"total_tokens":179,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"K4M1Jf0PUNp4O"}
+      data: {"id":"chatcmpl-5e5f8ab078fc8e890a00550d","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":51,"completion_tokens":281,"total_tokens":508}}
 
       data: [DONE]
 
     headers:
       Content-Type:
-      - text/event-stream; charset=utf-8
+      - text/event-stream
     status: 200 OK
     code: 200
-    duration: 1.854110209s
+    duration: 3.15393675s
 - id: 1
   request:
     proto: HTTP/1.1
     proto_major: 1
     proto_minor: 1
-    content_length: 30746
+    content_length: 30732
     host: ""

internal/agent/testdata/TestCoderAgent/glm-5.1/glob_tool.yaml 🔗

@@ -0,0 +1,143 @@
+---
+version: 2
+interactions:
+- id: 0
+  request:
+    proto: HTTP/1.1
+    proto_major: 1
+    proto_minor: 1
+    content_length: 814
+    host: ""
+    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse glob to find all .go files in the current directory\n <think>\n\n</think>","role":"user"}],"model":"gpt-oss-120b","max_completion_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
+    headers:
+      Accept:
+      - application/json
+      Content-Type:
+      - application/json
+      User-Agent:
+      - Charm-Crush/devel (https://charm.land/crush)
+    url: https://hyper.charm.land/v1/chat/completions
+    method: POST
+  response:
+    proto: HTTP/2.0
+    proto_major: 2
+    proto_minor: 0
+    content_length: -1
+    uncompressed: true
+    body: |+
+      data: {"id":"chatcmpl-700285b94d03a05d9e3f02b8","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-700285b94d03a05d9e3f02b8","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Use"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-700285b94d03a05d9e3f02b8","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" glob"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-700285b94d03a05d9e3f02b8","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-700285b94d03a05d9e3f02b8","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" locate"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-700285b94d03a05d9e3f02b8","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" ."},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-700285b94d03a05d9e3f02b8","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"go"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-700285b94d03a05d9e3f02b8","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" files"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-700285b94d03a05d9e3f02b8","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-700285b94d03a05d9e3f02b8","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" current"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-700285b94d03a05d9e3f02b8","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" directory"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-700285b94d03a05d9e3f02b8","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":35,"completion_tokens":298,"total_tokens":509}}
+
+      data: [DONE]
+
+    headers:
+      Content-Type:
+      - text/event-stream
+    status: 200 OK
+    code: 200
+    duration: 3.3505585s
+- id: 1
+  request:
+    proto: HTTP/1.1
+    proto_major: 1
+    proto_minor: 1
+    content_length: 30650
+    host: ""

internal/agent/testdata/TestCoderAgent/glm-5.1/grep_tool.yaml 🔗

@@ -0,0 +1,143 @@
+---
+version: 2
+interactions:
+- id: 0
+  request:
+    proto: HTTP/1.1
+    proto_major: 1
+    proto_minor: 1
+    content_length: 812
+    host: ""
+    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse grep to search for the word ''package'' in go files\n <think>\n\n</think>","role":"user"}],"model":"gpt-oss-120b","max_completion_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
+    headers:
+      Accept:
+      - application/json
+      Content-Type:
+      - application/json
+      User-Agent:
+      - Charm-Crush/devel (https://charm.land/crush)
+    url: https://hyper.charm.land/v1/chat/completions
+    method: POST
+  response:
+    proto: HTTP/2.0
+    proto_major: 2
+    proto_minor: 0
+    content_length: -1
+    uncompressed: true
+    body: |+
+      data: {"id":"chatcmpl-d83c26df9c6591d438b30a94","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d83c26df9c6591d438b30a94","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"G"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d83c26df9c6591d438b30a94","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"rep"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d83c26df9c6591d438b30a94","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" for"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d83c26df9c6591d438b30a94","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" package"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d83c26df9c6591d438b30a94","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" keyword"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d83c26df9c6591d438b30a94","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d83c26df9c6591d438b30a94","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Go"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d83c26df9c6591d438b30a94","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" source"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d83c26df9c6591d438b30a94","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" files"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d83c26df9c6591d438b30a94","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":36,"completion_tokens":197,"total_tokens":409}}
+
+      data: [DONE]
+
+    headers:
+      Content-Type:
+      - text/event-stream
+    status: 200 OK
+    code: 200
+    duration: 2.981118041s
+- id: 1
+  request:
+    proto: HTTP/1.1
+    proto_major: 1
+    proto_minor: 1
+    content_length: 30648
+    host: ""

internal/agent/testdata/TestCoderAgent/glm-5.1/ls_tool.yaml 🔗

@@ -0,0 +1,137 @@
+---
+version: 2
+interactions:
+- id: 0
+  request:
+    proto: HTTP/1.1
+    proto_major: 1
+    proto_minor: 1
+    content_length: 808
+    host: ""
+    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse ls to list the files in the current directory\n <think>\n\n</think>","role":"user"}],"model":"gpt-oss-120b","max_completion_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
+    headers:
+      Accept:
+      - application/json
+      Content-Type:
+      - application/json
+      User-Agent:
+      - Charm-Crush/devel (https://charm.land/crush)
+    url: https://hyper.charm.land/v1/chat/completions
+    method: POST
+  response:
+    proto: HTTP/2.0
+    proto_major: 2
+    proto_minor: 0
+    content_length: -1
+    uncompressed: true
+    body: |+
+      data: {"id":"chatcmpl-d58720ab3cc6652c5a236a50","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d58720ab3cc6652c5a236a50","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Using"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d58720ab3cc6652c5a236a50","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" ls"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d58720ab3cc6652c5a236a50","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d58720ab3cc6652c5a236a50","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" list"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d58720ab3cc6652c5a236a50","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" current"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d58720ab3cc6652c5a236a50","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" directory"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d58720ab3cc6652c5a236a50","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" files"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d58720ab3cc6652c5a236a50","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":33,"completion_tokens":145,"total_tokens":354}}
+
+      data: [DONE]
+
+    headers:
+      Content-Type:
+      - text/event-stream
+    status: 200 OK
+    code: 200
+    duration: 1.908952917s
+- id: 1
+  request:
+    proto: HTTP/1.1
+    proto_major: 1
+    proto_minor: 1
+    content_length: 30642
+    host: ""

internal/agent/testdata/TestCoderAgent/glm-5.1/multiedit_tool.yaml 🔗

@@ -0,0 +1,233 @@
+---
+version: 2
+interactions:
+- id: 0
+  request:
+    proto: HTTP/1.1
+    proto_major: 1
+    proto_minor: 1
+    content_length: 887
+    host: ""
+    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse multiedit to change ''Hello, World!'' to ''Hello, Crush!'' and add a comment ''// Greeting'' above the fmt.Println line in main.go\n <think>\n\n</think>","role":"user"}],"model":"gpt-oss-120b","max_completion_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
+    headers:
+      Accept:
+      - application/json
+      Content-Type:
+      - application/json
+      User-Agent:
+      - Charm-Crush/devel (https://charm.land/crush)
+    url: https://hyper.charm.land/v1/chat/completions
+    method: POST
+  response:
+    proto: HTTP/2.0
+    proto_major: 2
+    proto_minor: 0
+    content_length: -1
+    uncompressed: true
+    body: |+
+      data: {"id":"chatcmpl-d5ad9fe3c47867293b4749b1","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d5ad9fe3c47867293b4749b1","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Modify"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d5ad9fe3c47867293b4749b1","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Hello"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d5ad9fe3c47867293b4749b1","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" World"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d5ad9fe3c47867293b4749b1","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d5ad9fe3c47867293b4749b1","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Hello"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d5ad9fe3c47867293b4749b1","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Crush"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d5ad9fe3c47867293b4749b1","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" with"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d5ad9fe3c47867293b4749b1","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" comment"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-d5ad9fe3c47867293b4749b1","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":55,"completion_tokens":155,"total_tokens":386}}
+
+      data: [DONE]
+
+    headers:
+      Content-Type:
+      - text/event-stream
+    status: 200 OK
+    code: 200
+    duration: 1.903782417s
+- id: 1
+  request:
+    proto: HTTP/1.1
+    proto_major: 1
+    proto_minor: 1
+    content_length: 30728
+    host: ""

internal/agent/testdata/TestCoderAgent/glm-5.1/parallel_tool_calls.yaml 🔗

@@ -0,0 +1,151 @@
+---
+version: 2
+interactions:
+- id: 0
+  request:
+    proto: HTTP/1.1
+    proto_major: 1
+    proto_minor: 1
+    content_length: 893
+    host: ""
+    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse 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\n <think>\n\n</think>","role":"user"}],"model":"gpt-oss-120b","max_completion_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
+    headers:
+      Accept:
+      - application/json
+      Content-Type:
+      - application/json
+      User-Agent:
+      - Charm-Crush/devel (https://charm.land/crush)
+    url: https://hyper.charm.land/v1/chat/completions
+    method: POST
+  response:
+    proto: HTTP/2.0
+    proto_major: 2
+    proto_minor: 0
+    content_length: -1
+    uncompressed: true
+    body: |+
+      data: {"id":"chatcmpl-b284adff2f283f37275d565b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-b284adff2f283f37275d565b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Parallel"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-b284adff2f283f37275d565b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" glob"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-b284adff2f283f37275d565b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" for"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-b284adff2f283f37275d565b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" ."},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-b284adff2f283f37275d565b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"go"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-b284adff2f283f37275d565b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" files"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-b284adff2f283f37275d565b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" and"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-b284adff2f283f37275d565b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" ls"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-b284adff2f283f37275d565b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" listing"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-b284adff2f283f37275d565b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":36,"completion_tokens":137,"total_tokens":365}}
+
+      data: [DONE]
+
+    headers:
+      Content-Type:
+      - text/event-stream
+    status: 200 OK
+    code: 200
+    duration: 1.718419583s
+- id: 1
+  request:
+    proto: HTTP/1.1
+    proto_major: 1
+    proto_minor: 1
+    content_length: 30739
+    host: ""

internal/agent/testdata/TestCoderAgent/glm-5.1/read_a_file.yaml 🔗

@@ -0,0 +1,257 @@
+---
+version: 2
+interactions:
+- id: 0
+  request:
+    proto: HTTP/1.1
+    proto_major: 1
+    proto_minor: 1
+    content_length: 774
+    host: ""
+    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nRead the go mod\n <think>\n\n</think>","role":"user"}],"model":"gpt-oss-120b","max_completion_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
+    headers:
+      Accept:
+      - application/json
+      Content-Type:
+      - application/json
+      User-Agent:
+      - Charm-Crush/devel (https://charm.land/crush)
+    url: https://hyper.charm.land/v1/chat/completions
+    method: POST
+  response:
+    proto: HTTP/2.0
+    proto_major: 2
+    proto_minor: 0
+    content_length: -1
+    uncompressed: true
+    body: |+
+      data: {"id":"chatcmpl-20dcf6ef9ddc91fe00c616e2","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-20dcf6ef9ddc91fe00c616e2","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Reading"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-20dcf6ef9ddc91fe00c616e2","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-20dcf6ef9ddc91fe00c616e2","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" go"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-20dcf6ef9ddc91fe00c616e2","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".mod"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-20dcf6ef9ddc91fe00c616e2","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" File"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-20dcf6ef9ddc91fe00c616e2","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":27,"completion_tokens":77,"total_tokens":280}}
+
+      data: [DONE]
+
+    headers:
+      Content-Type:
+      - text/event-stream
+    status: 200 OK
+    code: 200
+    duration: 1.620399166s
+- id: 1
+  request:
+    proto: HTTP/1.1
+    proto_major: 1
+    proto_minor: 1
+    content_length: 30612
+    host: ""

internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/simple_test.yaml → internal/agent/testdata/TestCoderAgent/glm-5.1/simple_test.yaml 🔗

@@ -6,9 +6,9 @@ interactions:
     proto: HTTP/1.1
     proto_major: 1
     proto_minor: 1
-    content_length: 798
+    content_length: 764
     host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nHello\n <think>\n\n</think>","role":"user"}],"model":"qwen/qwen3-next-80b-a3b-instruct","max_tokens":40,"stream_options":{"include_usage":true},"usage":{"include":true},"stream":true}'
+    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nHello\n <think>\n\n</think>","role":"user"}],"model":"gpt-oss-120b","max_completion_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
     headers:
       Accept:
       - application/json
@@ -16,23 +16,22 @@ interactions:
       - application/json
       User-Agent:
       - Charm-Crush/devel (https://charm.land/crush)
-    url: https://openrouter.ai/api/v1/chat/completions
+    url: https://hyper.charm.land/v1/chat/completions
     method: POST
   response:
     proto: HTTP/2.0
     proto_major: 2
     proto_minor: 0
     content_length: -1
+    uncompressed: true
     body: |+
-      : OPENROUTER PROCESSING
+      data: {"id":"chatcmpl-f342b662fa22d62db967957b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
 
-      : OPENROUTER PROCESSING
+      data: {"id":"chatcmpl-f342b662fa22d62db967957b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Simple"},"finish_reason":null}]}
 
-      data: {"id":"gen-1776258045-M14anX94IZdtXfmbrZ6w","object":"chat.completion.chunk","created":1776258045,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Google","choices":[{"index":0,"delta":{"content":"Hello","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
+      data: {"id":"chatcmpl-f342b662fa22d62db967957b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Greeting"},"finish_reason":null}]}
 
-      data: {"id":"gen-1776258045-M14anX94IZdtXfmbrZ6w","object":"chat.completion.chunk","created":1776258045,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Google","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}]}
-
-      data: {"id":"gen-1776258045-M14anX94IZdtXfmbrZ6w","object":"chat.completion.chunk","created":1776258045,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Google","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}],"usage":{"prompt_tokens":144,"completion_tokens":2,"total_tokens":146,"cost":0.000024,"is_byok":false,"prompt_tokens_details":{"cached_tokens":0,"cache_write_tokens":0,"audio_tokens":0,"video_tokens":0},"cost_details":{"upstream_inference_cost":0.000024,"upstream_inference_prompt_cost":0.0000216,"upstream_inference_completions_cost":0.0000024},"completion_tokens_details":{"reasoning_tokens":0,"image_tokens":0,"audio_tokens":0}}}
+      data: {"id":"chatcmpl-f342b662fa22d62db967957b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":152,"completion_tokens":88,"total_tokens":288}}
 
       data: [DONE]
 
@@ -41,15 +40,15 @@ interactions:
       - text/event-stream
     status: 200 OK
     code: 200
-    duration: 2.353106417s
+    duration: 1.80550475s
 - id: 1
   request:
     proto: HTTP/1.1
     proto_major: 1
     proto_minor: 1
-    content_length: 30765
+    content_length: 30602
     host: ""

internal/agent/testdata/TestCoderAgent/openai-gpt-5/grep_tool.yaml → internal/agent/testdata/TestCoderAgent/glm-5.1/sourcegraph_tool.yaml 🔗

@@ -6,9 +6,9 @@ interactions:
     proto: HTTP/1.1
     proto_major: 1
     proto_minor: 1
-    content_length: 795
+    content_length: 819
     host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse grep to search for the word ''package'' in go files\n <think>\n\n</think>","role":"user"}],"model":"gpt-4o","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
+    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse sourcegraph to search for ''func main'' in Go repositories\n <think>\n\n</think>","role":"user"}],"model":"gpt-oss-120b","max_completion_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
     headers:
       Accept:
       - application/json
@@ -16,48 +16,47 @@ interactions:
       - application/json
       User-Agent:
       - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.openai.com/v1/chat/completions
+    url: https://hyper.charm.land/v1/chat/completions
     method: POST
   response:
     proto: HTTP/2.0
     proto_major: 2
     proto_minor: 0
     content_length: -1
+    uncompressed: true
     body: |+
-      data: {"id":"chatcmpl-DUu848sQt4Ep7RV7uVnyx102d94YI","object":"chat.completion.chunk","created":1776257972,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"uxNecKgAuOkR7p"}
+      data: {"id":"chatcmpl-620058f24b10a79ade1c095b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu848sQt4Ep7RV7uVnyx102d94YI","object":"chat.completion.chunk","created":1776257972,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":"Using"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"lGHYXKjoiKU"}
+      data: {"id":"chatcmpl-620058f24b10a79ade1c095b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Search"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu848sQt4Ep7RV7uVnyx102d94YI","object":"chat.completion.chunk","created":1776257972,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" grep"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"R1Pistrcm7c"}
+      data: {"id":"chatcmpl-620058f24b10a79ade1c095b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" for"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu848sQt4Ep7RV7uVnyx102d94YI","object":"chat.completion.chunk","created":1776257972,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" to"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"uTzT0W9oK8xlh"}
+      data: {"id":"chatcmpl-620058f24b10a79ade1c095b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" func"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu848sQt4Ep7RV7uVnyx102d94YI","object":"chat.completion.chunk","created":1776257972,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" find"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"55aUOVWEWre"}
+      data: {"id":"chatcmpl-620058f24b10a79ade1c095b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" main"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu848sQt4Ep7RV7uVnyx102d94YI","object":"chat.completion.chunk","created":1776257972,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" '"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"pS156bwGCUwr0i"}
+      data: {"id":"chatcmpl-620058f24b10a79ade1c095b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu848sQt4Ep7RV7uVnyx102d94YI","object":"chat.completion.chunk","created":1776257972,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":"package"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"7Dh6cgrtx"}
+      data: {"id":"chatcmpl-620058f24b10a79ade1c095b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Go"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu848sQt4Ep7RV7uVnyx102d94YI","object":"chat.completion.chunk","created":1776257972,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":"'"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"FSDGrXERmN2EBLT"}
+      data: {"id":"chatcmpl-620058f24b10a79ade1c095b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" repos"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu848sQt4Ep7RV7uVnyx102d94YI","object":"chat.completion.chunk","created":1776257972,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" in"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"rJSDz5sFx6nrb"}
+      data: {"id":"chatcmpl-620058f24b10a79ade1c095b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" via"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu848sQt4Ep7RV7uVnyx102d94YI","object":"chat.completion.chunk","created":1776257972,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" Go"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"PQLYXTtYVqeIm"}
+      data: {"id":"chatcmpl-620058f24b10a79ade1c095b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" Source"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu848sQt4Ep7RV7uVnyx102d94YI","object":"chat.completion.chunk","created":1776257972,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" files"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"TgVKN33UYi"}
+      data: {"id":"chatcmpl-620058f24b10a79ade1c095b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"graph"},"finish_reason":null}]}
 
-      data: {"id":"chatcmpl-DUu848sQt4Ep7RV7uVnyx102d94YI","object":"chat.completion.chunk","created":1776257972,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"6hGyE1De9N"}
-
-      data: {"id":"chatcmpl-DUu848sQt4Ep7RV7uVnyx102d94YI","object":"chat.completion.chunk","created":1776257972,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[],"usage":{"prompt_tokens":154,"completion_tokens":10,"total_tokens":164,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"Ar0GwunAmv3vi"}
+      data: {"id":"chatcmpl-620058f24b10a79ade1c095b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":36,"completion_tokens":323,"total_tokens":535}}
 
       data: [DONE]
 
     headers:
       Content-Type:
-      - text/event-stream; charset=utf-8
+      - text/event-stream
     status: 200 OK
     code: 200
-    duration: 558.148708ms
+    duration: 3.6349505s
 - id: 1
   request:
     proto: HTTP/1.1
@@ -65,7 +64,7 @@ interactions:
     proto_minor: 1
     content_length: 30662
     host: ""

internal/agent/testdata/TestCoderAgent/glm-5.1/update_a_file.yaml 🔗

@@ -0,0 +1,317 @@
+---
+version: 2
+interactions:
+- id: 0
+  request:
+    proto: HTTP/1.1
+    proto_major: 1
+    proto_minor: 1
+    content_length: 828
+    host: ""
+    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nupdate the main.go file by changing the print to say hello from crush\n <think>\n\n</think>","role":"user"}],"model":"gpt-oss-120b","max_completion_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
+    headers:
+      Accept:
+      - application/json
+      Content-Type:
+      - application/json
+      User-Agent:
+      - Charm-Crush/devel (https://charm.land/crush)
+    url: https://hyper.charm.land/v1/chat/completions
+    method: POST
+  response:
+    proto: HTTP/2.0
+    proto_major: 2
+    proto_minor: 0
+    content_length: -1
+    uncompressed: true
+    body: |+
+      data: {"id":"chatcmpl-1d2779ed381e7de8462ddb1b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-1d2779ed381e7de8462ddb1b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":"Update"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-1d2779ed381e7de8462ddb1b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" main"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-1d2779ed381e7de8462ddb1b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":".go"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-1d2779ed381e7de8462ddb1b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-1d2779ed381e7de8462ddb1b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" print"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-1d2779ed381e7de8462ddb1b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" hello"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-1d2779ed381e7de8462ddb1b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" from"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-1d2779ed381e7de8462ddb1b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{"content":" crush"},"finish_reason":null}]}
+
+      data: {"id":"chatcmpl-1d2779ed381e7de8462ddb1b","object":"chat.completion.chunk","created":0,"model":"gpt-oss-120b","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":37,"completion_tokens":174,"total_tokens":387}}
+
+      data: [DONE]
+
+    headers:
+      Content-Type:
+      - text/event-stream
+    status: 200 OK
+    code: 200
+    duration: 2.104933458s
+- id: 1
+  request:
+    proto: HTTP/1.1
+    proto_major: 1
+    proto_minor: 1
+    content_length: 30668
+    host: ""

internal/agent/testdata/TestCoderAgent/openai-gpt-5/bash_tool.yaml 🔗

@@ -1,170 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 836
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse bash to create a file named test.txt with content ''hello bash''. do not print its timestamp\n <think>\n\n</think>","role":"user"}],"model":"gpt-4o","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.openai.com/v1/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      data: {"id":"chatcmpl-DUu766HHRJZGfCbzBIsqnXXbWbRg6","object":"chat.completion.chunk","created":1776257912,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"btFJOm8415mI2m"}
-
-      data: {"id":"chatcmpl-DUu766HHRJZGfCbzBIsqnXXbWbRg6","object":"chat.completion.chunk","created":1776257912,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":"Creating"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"HuT3Bpv5"}
-
-      data: {"id":"chatcmpl-DUu766HHRJZGfCbzBIsqnXXbWbRg6","object":"chat.completion.chunk","created":1776257912,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" a"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"b4r8VMOYrYZAuM"}
-
-      data: {"id":"chatcmpl-DUu766HHRJZGfCbzBIsqnXXbWbRg6","object":"chat.completion.chunk","created":1776257912,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" File"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"EQgGDtlho8Q"}
-
-      data: {"id":"chatcmpl-DUu766HHRJZGfCbzBIsqnXXbWbRg6","object":"chat.completion.chunk","created":1776257912,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" with"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"1aMQ6gMv4rM"}
-
-      data: {"id":"chatcmpl-DUu766HHRJZGfCbzBIsqnXXbWbRg6","object":"chat.completion.chunk","created":1776257912,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" Bash"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"FzGsXtCzL7e"}
-
-      data: {"id":"chatcmpl-DUu766HHRJZGfCbzBIsqnXXbWbRg6","object":"chat.completion.chunk","created":1776257912,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" Without"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"LtwOp6S2"}
-
-      data: {"id":"chatcmpl-DUu766HHRJZGfCbzBIsqnXXbWbRg6","object":"chat.completion.chunk","created":1776257912,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" Timestamp"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"9CGJGr"}
-
-      data: {"id":"chatcmpl-DUu766HHRJZGfCbzBIsqnXXbWbRg6","object":"chat.completion.chunk","created":1776257912,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"O7d6fVtofG"}
-
-      data: {"id":"chatcmpl-DUu766HHRJZGfCbzBIsqnXXbWbRg6","object":"chat.completion.chunk","created":1776257912,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[],"usage":{"prompt_tokens":161,"completion_tokens":7,"total_tokens":168,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"PDcwbMlWzQteaR"}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 476.599417ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30703
-    host: ""

internal/agent/testdata/TestCoderAgent/openai-gpt-5/download_tool.yaml 🔗

@@ -1,270 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 857
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\ndownload the file from https://example-files.online-convert.com/document/txt/example.txt and save it as example.txt\n <think>\n\n</think>","role":"user"}],"model":"gpt-4o","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.openai.com/v1/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      data: {"id":"chatcmpl-DUu7P8bArE2m7oXyibZyJZnXnPJGS","object":"chat.completion.chunk","created":1776257931,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"u2Zl5nMG0dL9CP"}
-
-      data: {"id":"chatcmpl-DUu7P8bArE2m7oXyibZyJZnXnPJGS","object":"chat.completion.chunk","created":1776257931,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":"Downloading"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Ra9ua"}
-
-      data: {"id":"chatcmpl-DUu7P8bArE2m7oXyibZyJZnXnPJGS","object":"chat.completion.chunk","created":1776257931,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" and"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"iobtzjlXdwSz"}
-
-      data: {"id":"chatcmpl-DUu7P8bArE2m7oXyibZyJZnXnPJGS","object":"chat.completion.chunk","created":1776257931,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" Saving"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"xeaxb2qW1"}
-
-      data: {"id":"chatcmpl-DUu7P8bArE2m7oXyibZyJZnXnPJGS","object":"chat.completion.chunk","created":1776257931,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" a"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"iUZ9jtz5dNraEH"}
-
-      data: {"id":"chatcmpl-DUu7P8bArE2m7oXyibZyJZnXnPJGS","object":"chat.completion.chunk","created":1776257931,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" Text"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"JNLJDvRUXy2"}
-
-      data: {"id":"chatcmpl-DUu7P8bArE2m7oXyibZyJZnXnPJGS","object":"chat.completion.chunk","created":1776257931,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" File"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"g7qIehCB3JO"}
-
-      data: {"id":"chatcmpl-DUu7P8bArE2m7oXyibZyJZnXnPJGS","object":"chat.completion.chunk","created":1776257931,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" from"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"aZ7zn892ySL"}
-
-      data: {"id":"chatcmpl-DUu7P8bArE2m7oXyibZyJZnXnPJGS","object":"chat.completion.chunk","created":1776257931,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" URL"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"154tqRwBY6vR"}
-
-      data: {"id":"chatcmpl-DUu7P8bArE2m7oXyibZyJZnXnPJGS","object":"chat.completion.chunk","created":1776257931,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"C35gRaSm0j"}
-
-      data: {"id":"chatcmpl-DUu7P8bArE2m7oXyibZyJZnXnPJGS","object":"chat.completion.chunk","created":1776257931,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[],"usage":{"prompt_tokens":164,"completion_tokens":8,"total_tokens":172,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"MtWLF0P0cBrYuV"}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 383.557166ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30728
-    host: ""

internal/agent/testdata/TestCoderAgent/openai-gpt-5/glob_tool.yaml 🔗

@@ -1,222 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 797
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse glob to find all .go files in the current directory\n <think>\n\n</think>","role":"user"}],"model":"gpt-4o","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.openai.com/v1/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      data: {"id":"chatcmpl-DUu7vwRcZeq1bGZKjOFL4UnjWIszV","object":"chat.completion.chunk","created":1776257963,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"a2x71ppZ5Z1qs5"}
-
-      data: {"id":"chatcmpl-DUu7vwRcZeq1bGZKjOFL4UnjWIszV","object":"chat.completion.chunk","created":1776257963,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":"Finding"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Tn2CYUEym"}
-
-      data: {"id":"chatcmpl-DUu7vwRcZeq1bGZKjOFL4UnjWIszV","object":"chat.completion.chunk","created":1776257963,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" ."},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"xVsGTBkumRMEVe"}
-
-      data: {"id":"chatcmpl-DUu7vwRcZeq1bGZKjOFL4UnjWIszV","object":"chat.completion.chunk","created":1776257963,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":"go"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"QFn1JT6GE1J1tl"}
-
-      data: {"id":"chatcmpl-DUu7vwRcZeq1bGZKjOFL4UnjWIszV","object":"chat.completion.chunk","created":1776257963,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" Files"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"RcPpPAinfY"}
-
-      data: {"id":"chatcmpl-DUu7vwRcZeq1bGZKjOFL4UnjWIszV","object":"chat.completion.chunk","created":1776257963,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" with"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"qOdC5qqw3lD"}
-
-      data: {"id":"chatcmpl-DUu7vwRcZeq1bGZKjOFL4UnjWIszV","object":"chat.completion.chunk","created":1776257963,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" Glob"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"o7pZGxVzN4M"}
-
-      data: {"id":"chatcmpl-DUu7vwRcZeq1bGZKjOFL4UnjWIszV","object":"chat.completion.chunk","created":1776257963,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" in"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"60gBO8RrsjiQq"}
-
-      data: {"id":"chatcmpl-DUu7vwRcZeq1bGZKjOFL4UnjWIszV","object":"chat.completion.chunk","created":1776257963,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" Current"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"M2evSfdW"}
-
-      data: {"id":"chatcmpl-DUu7vwRcZeq1bGZKjOFL4UnjWIszV","object":"chat.completion.chunk","created":1776257963,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" Directory"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"RCtmze"}
-
-      data: {"id":"chatcmpl-DUu7vwRcZeq1bGZKjOFL4UnjWIszV","object":"chat.completion.chunk","created":1776257963,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"St0cm2OqCX"}
-
-      data: {"id":"chatcmpl-DUu7vwRcZeq1bGZKjOFL4UnjWIszV","object":"chat.completion.chunk","created":1776257963,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[],"usage":{"prompt_tokens":153,"completion_tokens":9,"total_tokens":162,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"i4S0SUY7py1rLP"}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 462.902458ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30664
-    host: ""

internal/agent/testdata/TestCoderAgent/openai-gpt-5/ls_tool.yaml 🔗

@@ -1,188 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 791
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse ls to list the files in the current directory\n <think>\n\n</think>","role":"user"}],"model":"gpt-4o","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.openai.com/v1/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      data: {"id":"chatcmpl-DUu8By9ZhTZA2ibLQodzTs4CJg9HK","object":"chat.completion.chunk","created":1776257979,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"KdWvH71jPQncsC"}
-
-      data: {"id":"chatcmpl-DUu8By9ZhTZA2ibLQodzTs4CJg9HK","object":"chat.completion.chunk","created":1776257979,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":"Listing"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"QTgvyWYJF"}
-
-      data: {"id":"chatcmpl-DUu8By9ZhTZA2ibLQodzTs4CJg9HK","object":"chat.completion.chunk","created":1776257979,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" Files"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"95S2InrgnJ"}
-
-      data: {"id":"chatcmpl-DUu8By9ZhTZA2ibLQodzTs4CJg9HK","object":"chat.completion.chunk","created":1776257979,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" with"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"BXlMfiG1WWO"}
-
-      data: {"id":"chatcmpl-DUu8By9ZhTZA2ibLQodzTs4CJg9HK","object":"chat.completion.chunk","created":1776257979,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" LS"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"6Rx07ZTyhSMbA"}
-
-      data: {"id":"chatcmpl-DUu8By9ZhTZA2ibLQodzTs4CJg9HK","object":"chat.completion.chunk","created":1776257979,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" Command"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"SPSL3vJ4"}
-
-      data: {"id":"chatcmpl-DUu8By9ZhTZA2ibLQodzTs4CJg9HK","object":"chat.completion.chunk","created":1776257979,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"09O2pUvzlg"}
-
-      data: {"id":"chatcmpl-DUu8By9ZhTZA2ibLQodzTs4CJg9HK","object":"chat.completion.chunk","created":1776257979,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[],"usage":{"prompt_tokens":151,"completion_tokens":5,"total_tokens":156,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"AWangyIfGvW1fn"}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 495.352166ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30656
-    host: ""

internal/agent/testdata/TestCoderAgent/openai-gpt-5/multiedit_tool.yaml 🔗

@@ -1,607 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 870
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse multiedit to change ''Hello, World!'' to ''Hello, Crush!'' and add a comment ''// Greeting'' above the fmt.Println line in main.go\n <think>\n\n</think>","role":"user"}],"model":"gpt-4o","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.openai.com/v1/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      data: {"id":"chatcmpl-DUuHv4cCwsfQOFgckGzR68rs71VKw","object":"chat.completion.chunk","created":1776258583,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"pdXDH27RbLoHxt"}
-
-      data: {"id":"chatcmpl-DUuHv4cCwsfQOFgckGzR68rs71VKw","object":"chat.completion.chunk","created":1776258583,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":"Updating"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"7ZzORgyJ"}
-
-      data: {"id":"chatcmpl-DUuHv4cCwsfQOFgckGzR68rs71VKw","object":"chat.completion.chunk","created":1776258583,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" Greeting"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"pWByjnu"}
-
-      data: {"id":"chatcmpl-DUuHv4cCwsfQOFgckGzR68rs71VKw","object":"chat.completion.chunk","created":1776258583,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" Message"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"6IOUbSDj"}
-
-      data: {"id":"chatcmpl-DUuHv4cCwsfQOFgckGzR68rs71VKw","object":"chat.completion.chunk","created":1776258583,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" in"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"qs8mFwfRiROzU"}
-
-      data: {"id":"chatcmpl-DUuHv4cCwsfQOFgckGzR68rs71VKw","object":"chat.completion.chunk","created":1776258583,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" main"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"AOKru5lV1pk"}
-
-      data: {"id":"chatcmpl-DUuHv4cCwsfQOFgckGzR68rs71VKw","object":"chat.completion.chunk","created":1776258583,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":".go"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"r4L6nUPGX7SM4"}
-
-      data: {"id":"chatcmpl-DUuHv4cCwsfQOFgckGzR68rs71VKw","object":"chat.completion.chunk","created":1776258583,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" with"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"98sGxlUf9T9"}
-
-      data: {"id":"chatcmpl-DUuHv4cCwsfQOFgckGzR68rs71VKw","object":"chat.completion.chunk","created":1776258583,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" Comment"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ILxbKeYR"}
-
-      data: {"id":"chatcmpl-DUuHv4cCwsfQOFgckGzR68rs71VKw","object":"chat.completion.chunk","created":1776258583,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"HV7P1UFb9I"}
-
-      data: {"id":"chatcmpl-DUuHv4cCwsfQOFgckGzR68rs71VKw","object":"chat.completion.chunk","created":1776258583,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[],"usage":{"prompt_tokens":173,"completion_tokens":8,"total_tokens":181,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"HVTixg6ANeOJbV"}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 662.977083ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30742
-    host: ""

internal/agent/testdata/TestCoderAgent/openai-gpt-5/read_a_file.yaml 🔗

@@ -1,293 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 757
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nRead the go mod\n <think>\n\n</think>","role":"user"}],"model":"gpt-4o","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.openai.com/v1/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      data: {"id":"chatcmpl-DUu6dqBgbhU1UPRnCxHakFCyc9onb","object":"chat.completion.chunk","created":1776257883,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"EwmOllIzTgofTi"}
-
-      data: {"id":"chatcmpl-DUu6dqBgbhU1UPRnCxHakFCyc9onb","object":"chat.completion.chunk","created":1776257883,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":"Reading"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"cjOicLixi"}
-
-      data: {"id":"chatcmpl-DUu6dqBgbhU1UPRnCxHakFCyc9onb","object":"chat.completion.chunk","created":1776257883,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" Go"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"QtnAAPDcRXyMB"}
-
-      data: {"id":"chatcmpl-DUu6dqBgbhU1UPRnCxHakFCyc9onb","object":"chat.completion.chunk","created":1776257883,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" Module"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ZWwjoOccl"}
-
-      data: {"id":"chatcmpl-DUu6dqBgbhU1UPRnCxHakFCyc9onb","object":"chat.completion.chunk","created":1776257883,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" Information"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"rxaq"}
-
-      data: {"id":"chatcmpl-DUu6dqBgbhU1UPRnCxHakFCyc9onb","object":"chat.completion.chunk","created":1776257883,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"VeSW8VDmIo"}
-
-      data: {"id":"chatcmpl-DUu6dqBgbhU1UPRnCxHakFCyc9onb","object":"chat.completion.chunk","created":1776257883,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[],"usage":{"prompt_tokens":145,"completion_tokens":4,"total_tokens":149,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"r9JMj8ytipcFIU"}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 1.372738958s
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30626
-    host: ""

internal/agent/testdata/TestCoderAgent/openai-gpt-5/simple_test.yaml 🔗

@@ -1,83 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 747
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nHello\n <think>\n\n</think>","role":"user"}],"model":"gpt-4o","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.openai.com/v1/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      data: {"id":"chatcmpl-DUu6aInjKVkX6LT00KPNjZ0Gb1TG2","object":"chat.completion.chunk","created":1776257880,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Ih6EAwz94Qt5Lg"}
-
-      data: {"id":"chatcmpl-DUu6aInjKVkX6LT00KPNjZ0Gb1TG2","object":"chat.completion.chunk","created":1776257880,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":"Greeting"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"zzUirghY"}
-
-      data: {"id":"chatcmpl-DUu6aInjKVkX6LT00KPNjZ0Gb1TG2","object":"chat.completion.chunk","created":1776257880,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" Message"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"wxDMlPti"}
-
-      data: {"id":"chatcmpl-DUu6aInjKVkX6LT00KPNjZ0Gb1TG2","object":"chat.completion.chunk","created":1776257880,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"oajOqsk75J"}
-
-      data: {"id":"chatcmpl-DUu6aInjKVkX6LT00KPNjZ0Gb1TG2","object":"chat.completion.chunk","created":1776257880,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[],"usage":{"prompt_tokens":142,"completion_tokens":2,"total_tokens":144,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"Un8176gp7eRd67"}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 2.400276875s
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30616
-    host: ""

internal/agent/testdata/TestCoderAgent/openai-gpt-5/sourcegraph_tool.yaml 🔗

@@ -1,412 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 802
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse sourcegraph to search for ''func main'' in Go repositories\n <think>\n\n</think>","role":"user"}],"model":"gpt-4o","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.openai.com/v1/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      data: {"id":"chatcmpl-DUu8PgjWhzEBZ68J5cdeqYLGGLCfn","object":"chat.completion.chunk","created":1776257993,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"TLIhDuNot1v6xm"}
-
-      data: {"id":"chatcmpl-DUu8PgjWhzEBZ68J5cdeqYLGGLCfn","object":"chat.completion.chunk","created":1776257993,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":"Searching"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"zzHJdCx"}
-
-      data: {"id":"chatcmpl-DUu8PgjWhzEBZ68J5cdeqYLGGLCfn","object":"chat.completion.chunk","created":1776257993,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" '"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"mcqjdcqPhyB95D"}
-
-      data: {"id":"chatcmpl-DUu8PgjWhzEBZ68J5cdeqYLGGLCfn","object":"chat.completion.chunk","created":1776257993,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":"func"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"TcarK8oZfyPg"}
-
-      data: {"id":"chatcmpl-DUu8PgjWhzEBZ68J5cdeqYLGGLCfn","object":"chat.completion.chunk","created":1776257993,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" main"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"PNb5sfnv46S"}
-
-      data: {"id":"chatcmpl-DUu8PgjWhzEBZ68J5cdeqYLGGLCfn","object":"chat.completion.chunk","created":1776257993,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":"'"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"3Vpc2Y9IUXz0XEY"}
-
-      data: {"id":"chatcmpl-DUu8PgjWhzEBZ68J5cdeqYLGGLCfn","object":"chat.completion.chunk","created":1776257993,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" in"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"VVXceRwtpom8t"}
-
-      data: {"id":"chatcmpl-DUu8PgjWhzEBZ68J5cdeqYLGGLCfn","object":"chat.completion.chunk","created":1776257993,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" Go"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"H5hyBr4mmUZIY"}
-
-      data: {"id":"chatcmpl-DUu8PgjWhzEBZ68J5cdeqYLGGLCfn","object":"chat.completion.chunk","created":1776257993,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" Re"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"t54vf8ssB1HQh"}
-
-      data: {"id":"chatcmpl-DUu8PgjWhzEBZ68J5cdeqYLGGLCfn","object":"chat.completion.chunk","created":1776257993,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":"positories"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"bPh76T"}
-
-      data: {"id":"chatcmpl-DUu8PgjWhzEBZ68J5cdeqYLGGLCfn","object":"chat.completion.chunk","created":1776257993,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" Using"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"BQKXikInH7"}
-
-      data: {"id":"chatcmpl-DUu8PgjWhzEBZ68J5cdeqYLGGLCfn","object":"chat.completion.chunk","created":1776257993,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" Source"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"utFZ1tXLk"}
-
-      data: {"id":"chatcmpl-DUu8PgjWhzEBZ68J5cdeqYLGGLCfn","object":"chat.completion.chunk","created":1776257993,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":"graph"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"BOZEYp094Vm"}
-
-      data: {"id":"chatcmpl-DUu8PgjWhzEBZ68J5cdeqYLGGLCfn","object":"chat.completion.chunk","created":1776257993,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"9nGlrL9PcC"}
-
-      data: {"id":"chatcmpl-DUu8PgjWhzEBZ68J5cdeqYLGGLCfn","object":"chat.completion.chunk","created":1776257993,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[],"usage":{"prompt_tokens":154,"completion_tokens":12,"total_tokens":166,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"4GNnu13ZQlgrM"}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 531.269ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30676
-    host: ""

internal/agent/testdata/TestCoderAgent/openai-gpt-5/update_a_file.yaml 🔗

@@ -1,553 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 811
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nupdate the main.go file by changing the print to say hello from crush\n <think>\n\n</think>","role":"user"}],"model":"gpt-4o","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.openai.com/v1/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      data: {"id":"chatcmpl-DUu6kvaBnw75LTfXpSDqulFyMN2rq","object":"chat.completion.chunk","created":1776257890,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"vxS8DuIry7SlEa"}
-
-      data: {"id":"chatcmpl-DUu6kvaBnw75LTfXpSDqulFyMN2rq","object":"chat.completion.chunk","created":1776257890,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":"Update"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"Qbznj4V5xk"}
-
-      data: {"id":"chatcmpl-DUu6kvaBnw75LTfXpSDqulFyMN2rq","object":"chat.completion.chunk","created":1776257890,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" print"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"wNiaID5A6p"}
-
-      data: {"id":"chatcmpl-DUu6kvaBnw75LTfXpSDqulFyMN2rq","object":"chat.completion.chunk","created":1776257890,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" message"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"qG3mkG7V"}
-
-      data: {"id":"chatcmpl-DUu6kvaBnw75LTfXpSDqulFyMN2rq","object":"chat.completion.chunk","created":1776257890,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" in"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"y74AD9fsadJFa"}
-
-      data: {"id":"chatcmpl-DUu6kvaBnw75LTfXpSDqulFyMN2rq","object":"chat.completion.chunk","created":1776257890,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" main"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"vgW1Y1epwFK"}
-
-      data: {"id":"chatcmpl-DUu6kvaBnw75LTfXpSDqulFyMN2rq","object":"chat.completion.chunk","created":1776257890,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":".go"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"1NSzZyNShRz1a"}
-
-      data: {"id":"chatcmpl-DUu6kvaBnw75LTfXpSDqulFyMN2rq","object":"chat.completion.chunk","created":1776257890,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" to"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"ptGkueYFA1B2o"}
-
-      data: {"id":"chatcmpl-DUu6kvaBnw75LTfXpSDqulFyMN2rq","object":"chat.completion.chunk","created":1776257890,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" \""},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"txuhK9Uh7GcD7"}
-
-      data: {"id":"chatcmpl-DUu6kvaBnw75LTfXpSDqulFyMN2rq","object":"chat.completion.chunk","created":1776257890,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":"hello"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"pD7Yo0C1wzV"}
-
-      data: {"id":"chatcmpl-DUu6kvaBnw75LTfXpSDqulFyMN2rq","object":"chat.completion.chunk","created":1776257890,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" from"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"zpgxh1k4fQF"}
-
-      data: {"id":"chatcmpl-DUu6kvaBnw75LTfXpSDqulFyMN2rq","object":"chat.completion.chunk","created":1776257890,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":" crush"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"3jWMQjThdP"}
-
-      data: {"id":"chatcmpl-DUu6kvaBnw75LTfXpSDqulFyMN2rq","object":"chat.completion.chunk","created":1776257890,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{"content":"\""},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"LbDPFqNW5l6W1w"}
-
-      data: {"id":"chatcmpl-DUu6kvaBnw75LTfXpSDqulFyMN2rq","object":"chat.completion.chunk","created":1776257890,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"4PaKFljQoZ"}
-
-      data: {"id":"chatcmpl-DUu6kvaBnw75LTfXpSDqulFyMN2rq","object":"chat.completion.chunk","created":1776257890,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_2608ccf94f","choices":[],"usage":{"prompt_tokens":155,"completion_tokens":12,"total_tokens":167,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"ceuoCJksB71I1"}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 1.119495167s
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30682
-    host: ""

internal/agent/testdata/TestCoderAgent/openai-gpt-5/write_tool.yaml 🔗

@@ -1,216 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 851
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse write to create a new file called config.json with content ''{\"name\": \"test\", \"version\": \"1.0.0\"}''\n <think>\n\n</think>","role":"user"}],"model":"gpt-4o","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.openai.com/v1/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      data: {"id":"chatcmpl-DUu8lVyNkTTXsfkIjl5sXmDORr187","object":"chat.completion.chunk","created":1776258015,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"8U8nsmGrF8Fv1d"}
-
-      data: {"id":"chatcmpl-DUu8lVyNkTTXsfkIjl5sXmDORr187","object":"chat.completion.chunk","created":1776258015,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":"Create"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"FES1t3Wwo6"}
-
-      data: {"id":"chatcmpl-DUu8lVyNkTTXsfkIjl5sXmDORr187","object":"chat.completion.chunk","created":1776258015,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" config"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"u7eObrGnf"}
-
-      data: {"id":"chatcmpl-DUu8lVyNkTTXsfkIjl5sXmDORr187","object":"chat.completion.chunk","created":1776258015,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":".json"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"EAC3vpR592v"}
-
-      data: {"id":"chatcmpl-DUu8lVyNkTTXsfkIjl5sXmDORr187","object":"chat.completion.chunk","created":1776258015,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" with"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"rOIAeBXA7R5"}
-
-      data: {"id":"chatcmpl-DUu8lVyNkTTXsfkIjl5sXmDORr187","object":"chat.completion.chunk","created":1776258015,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" test"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"gmnjJ1S0yuP"}
-
-      data: {"id":"chatcmpl-DUu8lVyNkTTXsfkIjl5sXmDORr187","object":"chat.completion.chunk","created":1776258015,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" version"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"jHPoBFcS"}
-
-      data: {"id":"chatcmpl-DUu8lVyNkTTXsfkIjl5sXmDORr187","object":"chat.completion.chunk","created":1776258015,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{"content":" set"},"logprobs":null,"finish_reason":null}],"usage":null,"obfuscation":"RZw1hvk9C6ty"}
-
-      data: {"id":"chatcmpl-DUu8lVyNkTTXsfkIjl5sXmDORr187","object":"chat.completion.chunk","created":1776258015,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[{"index":0,"delta":{},"logprobs":null,"finish_reason":"stop"}],"usage":null,"obfuscation":"CEG2uvyf8b"}
-
-      data: {"id":"chatcmpl-DUu8lVyNkTTXsfkIjl5sXmDORr187","object":"chat.completion.chunk","created":1776258015,"model":"gpt-4o-2024-08-06","service_tier":"default","system_fingerprint":"fp_d08c293973","choices":[],"usage":{"prompt_tokens":169,"completion_tokens":7,"total_tokens":176,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"Wrdx8Q5Hl3ci7s"}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream; charset=utf-8
-    status: 200 OK
-    code: 200
-    duration: 575.75125ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30719
-    host: ""

internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/bash_tool.yaml 🔗

@@ -1,287 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 887
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse bash to create a file named test.txt with content ''hello bash''. do not print its timestamp\n <think>\n\n</think>","role":"user"}],"model":"qwen/qwen3-next-80b-a3b-instruct","max_tokens":40,"stream_options":{"include_usage":true},"usage":{"include":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://openrouter.ai/api/v1/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      : OPENROUTER PROCESSING
-
-      : OPENROUTER PROCESSING
-
-      data: {"id":"gen-1776258422-gEiJdRzuFc7MzOlqcEsC","object":"chat.completion.chunk","created":1776258422,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":"Create","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258422-gEiJdRzuFc7MzOlqcEsC","object":"chat.completion.chunk","created":1776258422,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":" test","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258422-gEiJdRzuFc7MzOlqcEsC","object":"chat.completion.chunk","created":1776258422,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":".txt with hello","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258422-gEiJdRzuFc7MzOlqcEsC","object":"chat.completion.chunk","created":1776258422,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":" bash using","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258422-gEiJdRzuFc7MzOlqcEsC","object":"chat.completion.chunk","created":1776258422,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":" bash","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258422-gEiJdRzuFc7MzOlqcEsC","object":"chat.completion.chunk","created":1776258422,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}]}
-
-      data: {"id":"gen-1776258422-gEiJdRzuFc7MzOlqcEsC","object":"chat.completion.chunk","created":1776258422,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}],"usage":{"prompt_tokens":167,"completion_tokens":8,"total_tokens":175,"cost":0.0000225225,"is_byok":false,"prompt_tokens_details":{"cached_tokens":0,"cache_write_tokens":0,"audio_tokens":0,"video_tokens":0},"cost_details":{"upstream_inference_cost":0.00003465,"upstream_inference_prompt_cost":0.00002505,"upstream_inference_completions_cost":0.0000096},"completion_tokens_details":{"reasoning_tokens":0,"image_tokens":0,"audio_tokens":0}}}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream
-    status: 200 OK
-    code: 200
-    duration: 2.484926s
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30852
-    host: ""

internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/download_tool.yaml 🔗

@@ -1,286 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 908
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\ndownload the file from https://example-files.online-convert.com/document/txt/example.txt and save it as example.txt\n <think>\n\n</think>","role":"user"}],"model":"qwen/qwen3-next-80b-a3b-instruct","max_tokens":40,"stream_options":{"include_usage":true},"usage":{"include":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://openrouter.ai/api/v1/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      : OPENROUTER PROCESSING
-
-      : OPENROUTER PROCESSING
-
-      : OPENROUTER PROCESSING
-
-      data: {"id":"gen-1776258083-34CApIFOELFlfXiEavBa","object":"chat.completion.chunk","created":1776258083,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":"Download","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258083-34CApIFOELFlfXiEavBa","object":"chat.completion.chunk","created":1776258083,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":" example","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258083-34CApIFOELFlfXiEavBa","object":"chat.completion.chunk","created":1776258083,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":".txt","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258083-34CApIFOELFlfXiEavBa","object":"chat.completion.chunk","created":1776258083,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":" from","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258083-34CApIFOELFlfXiEavBa","object":"chat.completion.chunk","created":1776258083,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":" example","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258083-34CApIFOELFlfXiEavBa","object":"chat.completion.chunk","created":1776258083,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":"-files","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258083-34CApIFOELFlfXiEavBa","object":"chat.completion.chunk","created":1776258083,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":".online","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258083-34CApIFOELFlfXiEavBa","object":"chat.completion.chunk","created":1776258083,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":"-","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258083-34CApIFOELFlfXiEavBa","object":"chat.completion.chunk","created":1776258083,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":"convert","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258083-34CApIFOELFlfXiEavBa","object":"chat.completion.chunk","created":1776258083,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":".com","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258083-34CApIFOELFlfXiEavBa","object":"chat.completion.chunk","created":1776258083,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}]}
-
-      data: {"id":"gen-1776258083-34CApIFOELFlfXiEavBa","object":"chat.completion.chunk","created":1776258083,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}],"usage":{"prompt_tokens":166,"completion_tokens":11,"total_tokens":177,"cost":0.0000414,"is_byok":false,"prompt_tokens_details":{"cached_tokens":0,"cache_write_tokens":0,"audio_tokens":0,"video_tokens":0},"cost_details":{"upstream_inference_cost":0.0000414,"upstream_inference_prompt_cost":0.0000249,"upstream_inference_completions_cost":0.0000165},"completion_tokens_details":{"reasoning_tokens":0,"image_tokens":0,"audio_tokens":0}}}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream
-    status: 200 OK
-    code: 200
-    duration: 1.67017125s
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30877
-    host: ""

internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/fetch_tool.yaml 🔗

@@ -1,289 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 929
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nfetch the content from https://example-files.online-convert.com/website/html/example.html and tell me if it contains the word ''John Doe''\n <think>\n\n</think>","role":"user"}],"model":"qwen/qwen3-next-80b-a3b-instruct","max_tokens":40,"stream_options":{"include_usage":true},"usage":{"include":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://openrouter.ai/api/v1/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      : OPENROUTER PROCESSING
-
-      data: {"id":"gen-1776258090-Iz0T3rmv80ztgYAqt4UB","object":"chat.completion.chunk","created":1776258090,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":"Check","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258090-Iz0T3rmv80ztgYAqt4UB","object":"chat.completion.chunk","created":1776258090,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":" if example","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258090-Iz0T3rmv80ztgYAqt4UB","object":"chat.completion.chunk","created":1776258090,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":".html contains John","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258090-Iz0T3rmv80ztgYAqt4UB","object":"chat.completion.chunk","created":1776258090,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":" Doe","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258090-Iz0T3rmv80ztgYAqt4UB","object":"chat.completion.chunk","created":1776258090,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}]}
-
-      data: {"id":"gen-1776258090-Iz0T3rmv80ztgYAqt4UB","object":"chat.completion.chunk","created":1776258090,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}],"usage":{"prompt_tokens":175,"completion_tokens":7,"total_tokens":182,"cost":0.0000225225,"is_byok":false,"prompt_tokens_details":{"cached_tokens":0,"cache_write_tokens":0,"audio_tokens":0,"video_tokens":0},"cost_details":{"upstream_inference_cost":0.00003465,"upstream_inference_prompt_cost":0.00002625,"upstream_inference_completions_cost":0.0000084},"completion_tokens_details":{"reasoning_tokens":0,"image_tokens":0,"audio_tokens":0}}}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream
-    status: 200 OK
-    code: 200
-    duration: 674.561292ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30895
-    host: ""

internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/glob_tool.yaml 🔗

@@ -1,154 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 848
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse glob to find all .go files in the current directory\n <think>\n\n</think>","role":"user"}],"model":"qwen/qwen3-next-80b-a3b-instruct","max_tokens":40,"stream_options":{"include_usage":true},"usage":{"include":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://openrouter.ai/api/v1/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      : OPENROUTER PROCESSING
-
-      data: {"id":"gen-1776258097-qFYkYYtoO3xmTURMwe2b","object":"chat.completion.chunk","created":1776258097,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Google","choices":[{"index":0,"delta":{"content":"Find","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258097-qFYkYYtoO3xmTURMwe2b","object":"chat.completion.chunk","created":1776258097,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Google","choices":[{"index":0,"delta":{"content":" all .go files","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258097-qFYkYYtoO3xmTURMwe2b","object":"chat.completion.chunk","created":1776258097,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Google","choices":[{"index":0,"delta":{"content":" in current directory using","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258097-qFYkYYtoO3xmTURMwe2b","object":"chat.completion.chunk","created":1776258097,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Google","choices":[{"index":0,"delta":{"content":" glob","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258097-qFYkYYtoO3xmTURMwe2b","object":"chat.completion.chunk","created":1776258097,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Google","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}]}
-
-      data: {"id":"gen-1776258097-qFYkYYtoO3xmTURMwe2b","object":"chat.completion.chunk","created":1776258097,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Google","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}],"usage":{"prompt_tokens":155,"completion_tokens":11,"total_tokens":166,"cost":0.00003645,"is_byok":false,"prompt_tokens_details":{"cached_tokens":0,"cache_write_tokens":0,"audio_tokens":0,"video_tokens":0},"cost_details":{"upstream_inference_cost":0.00003645,"upstream_inference_prompt_cost":0.00002325,"upstream_inference_completions_cost":0.0000132},"completion_tokens_details":{"reasoning_tokens":0,"image_tokens":0,"audio_tokens":0}}}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream
-    status: 200 OK
-    code: 200
-    duration: 883.711667ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30813
-    host: ""

internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/grep_tool.yaml 🔗

@@ -1,172 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 846
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse grep to search for the word ''package'' in go files\n <think>\n\n</think>","role":"user"}],"model":"qwen/qwen3-next-80b-a3b-instruct","max_tokens":40,"stream_options":{"include_usage":true},"usage":{"include":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://openrouter.ai/api/v1/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      : OPENROUTER PROCESSING
-
-      : OPENROUTER PROCESSING
-
-      : OPENROUTER PROCESSING
-
-      data: {"id":"gen-1776258101-2DN1WhDUvsStYUSP0aQr","object":"chat.completion.chunk","created":1776258101,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":"Search","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258101-2DN1WhDUvsStYUSP0aQr","object":"chat.completion.chunk","created":1776258101,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":" for '","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258101-2DN1WhDUvsStYUSP0aQr","object":"chat.completion.chunk","created":1776258101,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":"package' in Go","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258101-2DN1WhDUvsStYUSP0aQr","object":"chat.completion.chunk","created":1776258101,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":" files using grep","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258101-2DN1WhDUvsStYUSP0aQr","object":"chat.completion.chunk","created":1776258101,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}]}
-
-      data: {"id":"gen-1776258101-2DN1WhDUvsStYUSP0aQr","object":"chat.completion.chunk","created":1776258101,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}],"usage":{"prompt_tokens":160,"completion_tokens":10,"total_tokens":170,"cost":0.0000234,"is_byok":false,"prompt_tokens_details":{"cached_tokens":0,"cache_write_tokens":0,"audio_tokens":0,"video_tokens":0},"cost_details":{"upstream_inference_cost":0.000036,"upstream_inference_prompt_cost":0.000024,"upstream_inference_completions_cost":0.000012},"completion_tokens_details":{"reasoning_tokens":0,"image_tokens":0,"audio_tokens":0}}}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream
-    status: 200 OK
-    code: 200
-    duration: 1.59618s
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30811
-    host: ""

internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/ls_tool.yaml 🔗

@@ -1,208 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 842
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse ls to list the files in the current directory\n <think>\n\n</think>","role":"user"}],"model":"qwen/qwen3-next-80b-a3b-instruct","max_tokens":40,"stream_options":{"include_usage":true},"usage":{"include":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://openrouter.ai/api/v1/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      : OPENROUTER PROCESSING
-
-      : OPENROUTER PROCESSING
-
-      data: {"id":"gen-1776258105-JakSMN7G85CTKecg6k5G","object":"chat.completion.chunk","created":1776258105,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"DeepInfra","choices":[{"index":0,"delta":{"content":"List","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258105-JakSMN7G85CTKecg6k5G","object":"chat.completion.chunk","created":1776258105,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"DeepInfra","choices":[{"index":0,"delta":{"content":" files in current directory","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258105-JakSMN7G85CTKecg6k5G","object":"chat.completion.chunk","created":1776258105,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"DeepInfra","choices":[{"index":0,"delta":{"content":" using ls","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258105-JakSMN7G85CTKecg6k5G","object":"chat.completion.chunk","created":1776258105,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"DeepInfra","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}]}
-
-      data: {"id":"gen-1776258105-JakSMN7G85CTKecg6k5G","object":"chat.completion.chunk","created":1776258105,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"DeepInfra","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}],"usage":{"prompt_tokens":153,"completion_tokens":8,"total_tokens":161,"cost":0.00002257,"is_byok":false,"prompt_tokens_details":{"cached_tokens":0,"cache_write_tokens":0,"audio_tokens":0,"video_tokens":0},"cost_details":{"upstream_inference_cost":0.00002257,"upstream_inference_prompt_cost":0.00001377,"upstream_inference_completions_cost":0.0000088},"completion_tokens_details":{"reasoning_tokens":0,"image_tokens":0,"audio_tokens":0}}}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream
-    status: 200 OK
-    code: 200
-    duration: 874.434167ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30805
-    host: ""

internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/multiedit_tool.yaml 🔗

@@ -1,736 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 921
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse multiedit to change ''Hello, World!'' to ''Hello, Crush!'' and add a comment ''// Greeting'' above the fmt.Println line in main.go\n <think>\n\n</think>","role":"user"}],"model":"qwen/qwen3-next-80b-a3b-instruct","max_tokens":40,"stream_options":{"include_usage":true},"usage":{"include":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://openrouter.ai/api/v1/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      : OPENROUTER PROCESSING
-
-      : OPENROUTER PROCESSING
-
-      data: {"id":"gen-1776258111-goltDQrdyo9oIvehdopW","object":"chat.completion.chunk","created":1776258111,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":"Use","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258111-goltDQrdyo9oIvehdopW","object":"chat.completion.chunk","created":1776258111,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":" mult","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258111-goltDQrdyo9oIvehdopW","object":"chat.completion.chunk","created":1776258111,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":"ied","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258111-goltDQrdyo9oIvehdopW","object":"chat.completion.chunk","created":1776258111,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":"it","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258111-goltDQrdyo9oIvehdopW","object":"chat.completion.chunk","created":1776258111,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":" to","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258111-goltDQrdyo9oIvehdopW","object":"chat.completion.chunk","created":1776258111,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":" update","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258111-goltDQrdyo9oIvehdopW","object":"chat.completion.chunk","created":1776258111,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":" greeting","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258111-goltDQrdyo9oIvehdopW","object":"chat.completion.chunk","created":1776258111,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":" and","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258111-goltDQrdyo9oIvehdopW","object":"chat.completion.chunk","created":1776258111,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":" add","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258111-goltDQrdyo9oIvehdopW","object":"chat.completion.chunk","created":1776258111,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":" comment","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258111-goltDQrdyo9oIvehdopW","object":"chat.completion.chunk","created":1776258111,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":" in","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258111-goltDQrdyo9oIvehdopW","object":"chat.completion.chunk","created":1776258111,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":" main","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258111-goltDQrdyo9oIvehdopW","object":"chat.completion.chunk","created":1776258111,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":".go","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258111-goltDQrdyo9oIvehdopW","object":"chat.completion.chunk","created":1776258111,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}]}
-
-      data: {"id":"gen-1776258111-goltDQrdyo9oIvehdopW","object":"chat.completion.chunk","created":1776258111,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"AtlasCloud","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}],"usage":{"prompt_tokens":176,"completion_tokens":14,"total_tokens":190,"cost":0.0000474,"is_byok":false,"prompt_tokens_details":{"cached_tokens":0,"cache_write_tokens":0,"audio_tokens":0,"video_tokens":0},"cost_details":{"upstream_inference_cost":0.0000474,"upstream_inference_prompt_cost":0.0000264,"upstream_inference_completions_cost":0.000021},"completion_tokens_details":{"reasoning_tokens":0,"image_tokens":0,"audio_tokens":0}}}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream
-    status: 200 OK
-    code: 200
-    duration: 1.152553833s
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30891
-    host: ""

internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/parallel_tool_calls.yaml 🔗

@@ -1,226 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 927
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse 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\n <think>\n\n</think>","role":"user"}],"model":"qwen/qwen3-next-80b-a3b-instruct","max_tokens":40,"stream_options":{"include_usage":true},"usage":{"include":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://openrouter.ai/api/v1/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      : OPENROUTER PROCESSING
-
-      data: {"id":"gen-1776258151-AsOfoCF0UigLUkEqX8dE","object":"chat.completion.chunk","created":1776258151,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":"Run","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258151-AsOfoCF0UigLUkEqX8dE","object":"chat.completion.chunk","created":1776258151,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":" glob","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258151-AsOfoCF0UigLUkEqX8dE","object":"chat.completion.chunk","created":1776258151,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":" and","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258151-AsOfoCF0UigLUkEqX8dE","object":"chat.completion.chunk","created":1776258151,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":" ls","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258151-AsOfoCF0UigLUkEqX8dE","object":"chat.completion.chunk","created":1776258151,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":" in","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258151-AsOfoCF0UigLUkEqX8dE","object":"chat.completion.chunk","created":1776258151,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":" parallel","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258151-AsOfoCF0UigLUkEqX8dE","object":"chat.completion.chunk","created":1776258151,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":" to","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258151-AsOfoCF0UigLUkEqX8dE","object":"chat.completion.chunk","created":1776258151,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":" find","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258151-AsOfoCF0UigLUkEqX8dE","object":"chat.completion.chunk","created":1776258151,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":" .","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258151-AsOfoCF0UigLUkEqX8dE","object":"chat.completion.chunk","created":1776258151,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":"go","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258151-AsOfoCF0UigLUkEqX8dE","object":"chat.completion.chunk","created":1776258151,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":" files","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258151-AsOfoCF0UigLUkEqX8dE","object":"chat.completion.chunk","created":1776258151,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":" and","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258151-AsOfoCF0UigLUkEqX8dE","object":"chat.completion.chunk","created":1776258151,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":" list","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258151-AsOfoCF0UigLUkEqX8dE","object":"chat.completion.chunk","created":1776258151,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":" directory","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258151-AsOfoCF0UigLUkEqX8dE","object":"chat.completion.chunk","created":1776258151,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}]}
-
-      data: {"id":"gen-1776258151-AsOfoCF0UigLUkEqX8dE","object":"chat.completion.chunk","created":1776258151,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}],"usage":{"prompt_tokens":172,"completion_tokens":15,"total_tokens":187,"cost":0.0000337,"is_byok":false,"prompt_tokens_details":{"cached_tokens":0,"cache_write_tokens":0,"audio_tokens":0,"video_tokens":0},"cost_details":{"upstream_inference_cost":0.0000337,"upstream_inference_prompt_cost":0.0000172,"upstream_inference_completions_cost":0.0000165},"completion_tokens_details":{"reasoning_tokens":0,"image_tokens":0,"audio_tokens":0}}}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream
-    status: 200 OK
-    code: 200
-    duration: 892.2825ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30902
-    host: ""

internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/read_a_file.yaml 🔗

@@ -1,317 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 808
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nRead the go mod\n <think>\n\n</think>","role":"user"}],"model":"qwen/qwen3-next-80b-a3b-instruct","max_tokens":40,"stream_options":{"include_usage":true},"usage":{"include":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://openrouter.ai/api/v1/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      : OPENROUTER PROCESSING
-
-      : OPENROUTER PROCESSING
-
-      : OPENROUTER PROCESSING
-
-      : OPENROUTER PROCESSING
-
-      : OPENROUTER PROCESSING
-
-      : OPENROUTER PROCESSING
-
-      data: {"id":"gen-1776258048-mA5p6M64yZpcAEtaPS4m","object":"chat.completion.chunk","created":1776258048,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":"Read","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258048-mA5p6M64yZpcAEtaPS4m","object":"chat.completion.chunk","created":1776258048,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":" the go mod","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258048-mA5p6M64yZpcAEtaPS4m","object":"chat.completion.chunk","created":1776258048,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}]}
-
-      data: {"id":"gen-1776258048-mA5p6M64yZpcAEtaPS4m","object":"chat.completion.chunk","created":1776258048,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}],"usage":{"prompt_tokens":151,"completion_tokens":4,"total_tokens":155,"cost":0.0000178425,"is_byok":false,"prompt_tokens_details":{"cached_tokens":0,"cache_write_tokens":0,"audio_tokens":0,"video_tokens":0},"cost_details":{"upstream_inference_cost":0.00002745,"upstream_inference_prompt_cost":0.00002265,"upstream_inference_completions_cost":0.0000048},"completion_tokens_details":{"reasoning_tokens":0,"image_tokens":0,"audio_tokens":0}}}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream
-    status: 200 OK
-    code: 200
-    duration: 2.776948s
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30775
-    host: ""

internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/sourcegraph_tool.yaml 🔗

@@ -1,451 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 853
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse sourcegraph to search for ''func main'' in Go repositories\n <think>\n\n</think>","role":"user"}],"model":"qwen/qwen3-next-80b-a3b-instruct","max_tokens":40,"stream_options":{"include_usage":true},"usage":{"include":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://openrouter.ai/api/v1/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      : OPENROUTER PROCESSING
-
-      data: {"id":"gen-1776258132-DCbWlrI5SsLNlrlQyV8Z","object":"chat.completion.chunk","created":1776258132,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":"Search","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258132-DCbWlrI5SsLNlrlQyV8Z","object":"chat.completion.chunk","created":1776258132,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":" for func","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258132-DCbWlrI5SsLNlrlQyV8Z","object":"chat.completion.chunk","created":1776258132,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":" main in Go repositories","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258132-DCbWlrI5SsLNlrlQyV8Z","object":"chat.completion.chunk","created":1776258132,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":" using Sourcegraph","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258132-DCbWlrI5SsLNlrlQyV8Z","object":"chat.completion.chunk","created":1776258132,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}]}
-
-      data: {"id":"gen-1776258132-DCbWlrI5SsLNlrlQyV8Z","object":"chat.completion.chunk","created":1776258132,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Alibaba","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}],"usage":{"prompt_tokens":160,"completion_tokens":10,"total_tokens":170,"cost":0.0000234,"is_byok":false,"prompt_tokens_details":{"cached_tokens":0,"cache_write_tokens":0,"audio_tokens":0,"video_tokens":0},"cost_details":{"upstream_inference_cost":0.000036,"upstream_inference_prompt_cost":0.000024,"upstream_inference_completions_cost":0.000012},"completion_tokens_details":{"reasoning_tokens":0,"image_tokens":0,"audio_tokens":0}}}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream
-    status: 200 OK
-    code: 200
-    duration: 572.347583ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30825
-    host: ""

internal/agent/testdata/TestCoderAgent/openrouter-kimi-k2/update_a_file.yaml 🔗

@@ -1,479 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 862
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nupdate the main.go file by changing the print to say hello from crush\n <think>\n\n</think>","role":"user"}],"model":"qwen/qwen3-next-80b-a3b-instruct","max_tokens":40,"stream_options":{"include_usage":true},"usage":{"include":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://openrouter.ai/api/v1/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      : OPENROUTER PROCESSING
-
-      data: {"id":"gen-1776258057-xbejiwF312OZqf1rmqEG","object":"chat.completion.chunk","created":1776258057,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":"Update","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258057-xbejiwF312OZqf1rmqEG","object":"chat.completion.chunk","created":1776258057,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":" main","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258057-xbejiwF312OZqf1rmqEG","object":"chat.completion.chunk","created":1776258057,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":".go","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258057-xbejiwF312OZqf1rmqEG","object":"chat.completion.chunk","created":1776258057,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":" to","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258057-xbejiwF312OZqf1rmqEG","object":"chat.completion.chunk","created":1776258057,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":" print","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258057-xbejiwF312OZqf1rmqEG","object":"chat.completion.chunk","created":1776258057,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":" hello","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258057-xbejiwF312OZqf1rmqEG","object":"chat.completion.chunk","created":1776258057,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":" from","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258057-xbejiwF312OZqf1rmqEG","object":"chat.completion.chunk","created":1776258057,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":" crush","role":"assistant"},"finish_reason":null,"native_finish_reason":null}]}
-
-      data: {"id":"gen-1776258057-xbejiwF312OZqf1rmqEG","object":"chat.completion.chunk","created":1776258057,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}]}
-
-      data: {"id":"gen-1776258057-xbejiwF312OZqf1rmqEG","object":"chat.completion.chunk","created":1776258057,"model":"qwen/qwen3-next-80b-a3b-instruct-2509","provider":"Parasail","choices":[{"index":0,"delta":{"content":"","role":"assistant"},"finish_reason":"stop","native_finish_reason":"stop"}],"usage":{"prompt_tokens":157,"completion_tokens":9,"total_tokens":166,"cost":0.0000256,"is_byok":false,"prompt_tokens_details":{"cached_tokens":0,"cache_write_tokens":0,"audio_tokens":0,"video_tokens":0},"cost_details":{"upstream_inference_cost":0.0000256,"upstream_inference_prompt_cost":0.0000157,"upstream_inference_completions_cost":0.0000099},"completion_tokens_details":{"reasoning_tokens":0,"image_tokens":0,"audio_tokens":0}}}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream
-    status: 200 OK
-    code: 200
-    duration: 875.837708ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30831
-    host: ""

internal/agent/testdata/TestCoderAgent/zai-glm4.6/bash_tool.yaml 🔗

@@ -1,413 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 841
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse bash to create a file named test.txt with content ''hello bash''. do not print its timestamp\n <think>\n\n</think>","role":"user"}],"model":"glm-4.5-air","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.z.ai/api/coding/paas/v4/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      data: {"id":"20260415210258f0eca00bc5504951","created":1776258178,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","reasoning_content":"\n"}}]}
-
-      data: {"id":"20260415210258f0eca00bc5504951","created":1776258178,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":"Create"}}]}
-
-      data: {"id":"20260415210258f0eca00bc5504951","created":1776258178,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" file"}}]}
-
-      data: {"id":"20260415210258f0eca00bc5504951","created":1776258178,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" with"}}]}
-
-      data: {"id":"20260415210258f0eca00bc5504951","created":1776258178,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" bash"}}]}
-
-      data: {"id":"20260415210258f0eca00bc5504951","created":1776258178,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" content"}}]}
-
-      data: {"id":"20260415210258f0eca00bc5504951","created":1776258178,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"finish_reason":"stop","delta":{"role":"assistant","content":""}}],"usage":{"prompt_tokens":156,"completion_tokens":9,"total_tokens":165,"prompt_tokens_details":{"cached_tokens":130}}}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream;charset=UTF-8
-    status: 200 OK
-    code: 200
-    duration: 660.719708ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30692
-    host: ""

internal/agent/testdata/TestCoderAgent/zai-glm4.6/glob_tool.yaml 🔗

@@ -1,282 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 802
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse glob to find all .go files in the current directory\n <think>\n\n</think>","role":"user"}],"model":"glm-4.5-air","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.z.ai/api/coding/paas/v4/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      data: {"id":"20260415210323904ea969925e4e79","created":1776258203,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","reasoning_content":"\n"}}]}
-
-      data: {"id":"20260415210323904ea969925e4e79","created":1776258203,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":"Find"}}]}
-
-      data: {"id":"20260415210323904ea969925e4e79","created":1776258203,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" Go"}}]}
-
-      data: {"id":"20260415210323904ea969925e4e79","created":1776258203,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" files"}}]}
-
-      data: {"id":"20260415210323904ea969925e4e79","created":1776258203,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" with"}}]}
-
-      data: {"id":"20260415210323904ea969925e4e79","created":1776258203,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" glob"}}]}
-
-      data: {"id":"20260415210323904ea969925e4e79","created":1776258203,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"finish_reason":"stop","delta":{"role":"assistant","content":""}}],"usage":{"prompt_tokens":148,"completion_tokens":9,"total_tokens":157,"prompt_tokens_details":{"cached_tokens":130}}}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream;charset=UTF-8
-    status: 200 OK
-    code: 200
-    duration: 782.422041ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30653
-    host: ""

internal/agent/testdata/TestCoderAgent/zai-glm4.6/grep_tool.yaml 🔗

@@ -1,384 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 800
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse grep to search for the word ''package'' in go files\n <think>\n\n</think>","role":"user"}],"model":"glm-4.5-air","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.z.ai/api/coding/paas/v4/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      data: {"id":"20260415210332d05b163091ee424f","created":1776258212,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","reasoning_content":"\n"}}]}
-
-      data: {"id":"20260415210332d05b163091ee424f","created":1776258212,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":"Search"}}]}
-
-      data: {"id":"20260415210332d05b163091ee424f","created":1776258212,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" '"}}]}
-
-      data: {"id":"20260415210332d05b163091ee424f","created":1776258212,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":"package"}}]}
-
-      data: {"id":"20260415210332d05b163091ee424f","created":1776258212,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":"'"}}]}
-
-      data: {"id":"20260415210332d05b163091ee424f","created":1776258212,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" in"}}]}
-
-      data: {"id":"20260415210332d05b163091ee424f","created":1776258212,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" Go"}}]}
-
-      data: {"id":"20260415210332d05b163091ee424f","created":1776258212,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" files"}}]}
-
-      data: {"id":"20260415210332d05b163091ee424f","created":1776258212,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" with"}}]}
-
-      data: {"id":"20260415210332d05b163091ee424f","created":1776258212,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" grep"}}]}
-
-      data: {"id":"20260415210332d05b163091ee424f","created":1776258212,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"finish_reason":"stop","delta":{"role":"assistant","content":""}}],"usage":{"prompt_tokens":149,"completion_tokens":13,"total_tokens":162,"prompt_tokens_details":{"cached_tokens":131}}}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream;charset=UTF-8
-    status: 200 OK
-    code: 200
-    duration: 692.243375ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30651
-    host: ""

internal/agent/testdata/TestCoderAgent/zai-glm4.6/multiedit_tool.yaml 🔗

@@ -1,602 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 875
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse multiedit to change ''Hello, World!'' to ''Hello, Crush!'' and add a comment ''// Greeting'' above the fmt.Println line in main.go\n <think>\n\n</think>","role":"user"}],"model":"glm-4.5-air","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.z.ai/api/coding/paas/v4/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      data: {"id":"202604152103499ea9502e7e524c5d","created":1776258229,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","reasoning_content":"\n"}}]}
-
-      data: {"id":"202604152103499ea9502e7e524c5d","created":1776258229,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":"Mult"}}]}
-
-      data: {"id":"202604152103499ea9502e7e524c5d","created":1776258229,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":"ied"}}]}
-
-      data: {"id":"202604152103499ea9502e7e524c5d","created":1776258229,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":"it"}}]}
-
-      data: {"id":"202604152103499ea9502e7e524c5d","created":1776258229,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":":"}}]}
-
-      data: {"id":"202604152103499ea9502e7e524c5d","created":1776258229,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" G"}}]}
-
-      data: {"id":"202604152103499ea9502e7e524c5d","created":1776258229,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":"reeting"}}]}
-
-      data: {"id":"202604152103499ea9502e7e524c5d","created":1776258229,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" Code"}}]}
-
-      data: {"id":"202604152103499ea9502e7e524c5d","created":1776258229,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" Modification"}}]}
-
-      data: {"id":"202604152103499ea9502e7e524c5d","created":1776258229,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"finish_reason":"stop","delta":{"role":"assistant","content":""}}],"usage":{"prompt_tokens":169,"completion_tokens":12,"total_tokens":181,"prompt_tokens_details":{"cached_tokens":131}}}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream;charset=UTF-8
-    status: 200 OK
-    code: 200
-    duration: 849.242583ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30731
-    host: ""

internal/agent/testdata/TestCoderAgent/zai-glm4.6/parallel_tool_calls.yaml 🔗

@@ -1,402 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 881
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse 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\n <think>\n\n</think>","role":"user"}],"model":"glm-4.5-air","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.z.ai/api/coding/paas/v4/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      data: {"id":"2026041521042468d4466b9b45454f","created":1776258264,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","reasoning_content":"\n"}}]}
-
-      data: {"id":"2026041521042468d4466b9b45454f","created":1776258264,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":"Find"}}]}
-
-      data: {"id":"2026041521042468d4466b9b45454f","created":1776258264,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" and"}}]}
-
-      data: {"id":"2026041521042468d4466b9b45454f","created":1776258264,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" list"}}]}
-
-      data: {"id":"2026041521042468d4466b9b45454f","created":1776258264,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" Go"}}]}
-
-      data: {"id":"2026041521042468d4466b9b45454f","created":1776258264,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" files"}}]}
-
-      data: {"id":"2026041521042468d4466b9b45454f","created":1776258264,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" concurrently"}}]}
-
-      data: {"id":"2026041521042468d4466b9b45454f","created":1776258264,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"finish_reason":"stop","delta":{"role":"assistant","content":""}}],"usage":{"prompt_tokens":165,"completion_tokens":10,"total_tokens":175,"prompt_tokens_details":{"cached_tokens":131}}}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream;charset=UTF-8
-    status: 200 OK
-    code: 200
-    duration: 671.357792ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30742
-    host: ""

internal/agent/testdata/TestCoderAgent/zai-glm4.6/read_a_file.yaml 🔗

@@ -1,283 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 762
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nRead the go mod\n <think>\n\n</think>","role":"user"}],"model":"glm-4.5-air","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.z.ai/api/coding/paas/v4/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      data: {"id":"20260415210242aaced0dd2f274718","created":1776258162,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","reasoning_content":"\n"}}]}
-
-      data: {"id":"20260415210242aaced0dd2f274718","created":1776258162,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":"Understanding"}}]}
-
-      data: {"id":"20260415210242aaced0dd2f274718","created":1776258162,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" Go"}}]}
-
-      data: {"id":"20260415210242aaced0dd2f274718","created":1776258162,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" Module"}}]}
-
-      data: {"id":"20260415210242aaced0dd2f274718","created":1776258162,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"finish_reason":"stop","delta":{"role":"assistant","content":""}}],"usage":{"prompt_tokens":140,"completion_tokens":7,"total_tokens":147,"prompt_tokens_details":{"cached_tokens":130}}}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream;charset=UTF-8
-    status: 200 OK
-    code: 200
-    duration: 770.922042ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30615
-    host: ""

internal/agent/testdata/TestCoderAgent/zai-glm4.6/simple_test.yaml 🔗

@@ -1,227 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 752
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nHello\n <think>\n\n</think>","role":"user"}],"model":"glm-4.5-air","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.z.ai/api/coding/paas/v4/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      data: {"id":"202604152102399ca97490d8064fea","created":1776258159,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","reasoning_content":"\n"}}]}
-
-      data: {"id":"202604152102399ca97490d8064fea","created":1776258159,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":"Hello"}}]}
-
-      data: {"id":"202604152102399ca97490d8064fea","created":1776258159,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"finish_reason":"stop","delta":{"role":"assistant","content":""}}],"usage":{"prompt_tokens":137,"completion_tokens":5,"total_tokens":142,"prompt_tokens_details":{"cached_tokens":130}}}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream;charset=UTF-8
-    status: 200 OK
-    code: 200
-    duration: 1.940147958s
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30605
-    host: ""

internal/agent/testdata/TestCoderAgent/zai-glm4.6/update_a_file.yaml 🔗

@@ -1,556 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 816
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nupdate the main.go file by changing the print to say hello from crush\n <think>\n\n</think>","role":"user"}],"model":"glm-4.5-air","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.z.ai/api/coding/paas/v4/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      data: {"id":"202604152102480d420eea3b86429c","created":1776258168,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","reasoning_content":"\n"}}]}
-
-      data: {"id":"202604152102480d420eea3b86429c","created":1776258168,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":"Update"}}]}
-
-      data: {"id":"202604152102480d420eea3b86429c","created":1776258168,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" main"}}]}
-
-      data: {"id":"202604152102480d420eea3b86429c","created":1776258168,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":".go"}}]}
-
-      data: {"id":"202604152102480d420eea3b86429c","created":1776258168,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" to"}}]}
-
-      data: {"id":"202604152102480d420eea3b86429c","created":1776258168,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" print"}}]}
-
-      data: {"id":"202604152102480d420eea3b86429c","created":1776258168,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" \""}}]}
-
-      data: {"id":"202604152102480d420eea3b86429c","created":1776258168,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":"hello"}}]}
-
-      data: {"id":"202604152102480d420eea3b86429c","created":1776258168,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" from"}}]}
-
-      data: {"id":"202604152102480d420eea3b86429c","created":1776258168,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" crush"}}]}
-
-      data: {"id":"202604152102480d420eea3b86429c","created":1776258168,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":"\""}}]}
-
-      data: {"id":"202604152102480d420eea3b86429c","created":1776258168,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"finish_reason":"stop","delta":{"role":"assistant","content":""}}],"usage":{"prompt_tokens":150,"completion_tokens":14,"total_tokens":164,"prompt_tokens_details":{"cached_tokens":130}}}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream;charset=UTF-8
-    status: 200 OK
-    code: 200
-    duration: 751.116625ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30671
-    host: ""

internal/agent/testdata/TestCoderAgent/zai-glm4.6/write_tool.yaml 🔗

@@ -1,340 +0,0 @@
----
-version: 2
-interactions:
-- id: 0
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 856
-    host: ""
-    body: '{"messages":[{"content":"You will generate a short title based on the first message a user begins a conversation with.\n\n<rules>\n- Keep the title in the same language that the user wrote their message in.\n- Ensure it is not more than 50 characters long.\n- The title should be a summary of the user''s message.\n- It should be one line long.\n- Do not use quotes or colons.\n- The entire text you return will be used as the title.\n- Never return anything that is more than one sentence (one line) long.\n</rules>\n\n /no_think","role":"system"},{"content":"Generate a concise title for the following content:\n\nuse write to create a new file called config.json with content ''{\"name\": \"test\", \"version\": \"1.0.0\"}''\n <think>\n\n</think>","role":"user"}],"model":"glm-4.5-air","max_tokens":40,"stream_options":{"include_usage":true},"stream":true}'
-    headers:
-      Accept:
-      - application/json
-      Content-Type:
-      - application/json
-      User-Agent:
-      - Charm-Crush/devel (https://charm.land/crush)
-    url: https://api.z.ai/api/coding/paas/v4/chat/completions
-    method: POST
-  response:
-    proto: HTTP/2.0
-    proto_major: 2
-    proto_minor: 0
-    content_length: -1
-    body: |+
-      data: {"id":"202604152104150655e194791b4e90","created":1776258255,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","reasoning_content":"\n"}}]}
-
-      data: {"id":"202604152104150655e194791b4e90","created":1776258255,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":"Create"}}]}
-
-      data: {"id":"202604152104150655e194791b4e90","created":1776258255,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" config"}}]}
-
-      data: {"id":"202604152104150655e194791b4e90","created":1776258255,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":".json"}}]}
-
-      data: {"id":"202604152104150655e194791b4e90","created":1776258255,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" file"}}]}
-
-      data: {"id":"202604152104150655e194791b4e90","created":1776258255,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" with"}}]}
-
-      data: {"id":"202604152104150655e194791b4e90","created":1776258255,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" JSON"}}]}
-
-      data: {"id":"202604152104150655e194791b4e90","created":1776258255,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"delta":{"role":"assistant","content":" content"}}]}
-
-      data: {"id":"202604152104150655e194791b4e90","created":1776258255,"object":"chat.completion.chunk","model":"glm-4.5-air","choices":[{"index":0,"finish_reason":"stop","delta":{"role":"assistant","content":""}}],"usage":{"prompt_tokens":164,"completion_tokens":11,"total_tokens":175,"prompt_tokens_details":{"cached_tokens":131}}}
-
-      data: [DONE]
-
-    headers:
-      Content-Type:
-      - text/event-stream;charset=UTF-8
-    status: 200 OK
-    code: 200
-    duration: 675.648834ms
-- id: 1
-  request:
-    proto: HTTP/1.1
-    proto_major: 1
-    proto_minor: 1
-    content_length: 30708
-    host: ""