{"suite":"tool-calling","version":"1.0.0","system_prompt":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response.","method":"/evals/methodology","cases":[{"id":"sel-read-readme","category":"selection","description":"Read a named file.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"read_file","args":[{"path":"path","op":"eq","value":"README.md"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"What does README.md say about running the tests?"}]},{"id":"sel-git-status","category":"selection","description":"Which files changed: git_status, not a shell command.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"git_status","args":[]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Which files have I changed but not committed yet?"}]},{"id":"sel-list-src","category":"selection","description":"List a directory.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"list_directory","args":[{"path":"path","op":"regex","value":"^(\\./)?src/components/?$"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Show me what's in the src/components folder."}]},{"id":"sel-search-todo","category":"selection","description":"Search code for a marker.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"search_code","args":[{"path":"query","op":"contains","value":"TODO"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Find every TODO comment in the codebase."}]},{"id":"sel-run-tests","category":"selection","description":"Run the test command.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"run_command","args":[{"path":"command","op":"regex","value":"^npm (run )?test"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Run npm test and tell me if anything fails."}]},{"id":"sel-git-log","category":"selection","description":"Recent history: git_log with a limit.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"git_log","args":[{"path":"limit","op":"eq","value":5}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"What were the last 5 commits?"}]},{"id":"sel-web-search","category":"selection","description":"A question needing the live web.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"web_search","args":[{"path":"query","op":"contains","value":"node"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Search the web for the latest stable release of Node.js."}]},{"id":"sel-slack-post","category":"selection","description":"Post to a named channel.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"create_issue","description":"Open an issue in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Issue title.","minLength":1},"body":{"type":"string","description":"Issue body, Markdown."},"labels":{"type":"array","items":{"type":"string"},"description":"Labels to apply."}},"required":["repo","title"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_pull_request","description":"Open a pull request in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Pull request title.","minLength":1},"head":{"type":"string","description":"Branch with the changes."},"base":{"type":"string","description":"Branch to merge into."},"body":{"type":"string","description":"Description, Markdown."},"draft":{"type":"boolean","description":"Open as a draft."}},"required":["repo","title","head","base"],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_slack_message","description":"Post a message to a Slack channel or reply in a thread.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #, e.g. #eng.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"thread_ts":{"type":"string","description":"Reply in this thread."}},"required":["channel","text"],"additionalProperties":false}}},{"type":"function","function":{"name":"schedule_slack_message","description":"Schedule a Slack message to post later.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"post_at":{"type":"string","description":"When to post, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"}},"required":["channel","text","post_at"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_email","description":"Send an email.","parameters":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"},"description":"Recipient addresses.","minItems":1},"subject":{"type":"string","description":"Subject line.","minLength":1},"body":{"type":"string","description":"Plain-text body."},"cc":{"type":"array","items":{"type":"string"},"description":"CC addresses."}},"required":["to","subject","body"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Event title.","minLength":1},"start":{"type":"string","description":"Start, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"end":{"type":"string","description":"End, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"attendees":{"type":"array","items":{"type":"string"},"description":"Attendee email addresses."}},"required":["title","start","end"],"additionalProperties":false}}},{"type":"function","function":{"name":"query_table","description":"Read rows from a table in the team's workspace database.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters, e.g. {\"status\": \"open\"}."},"columns":{"type":"array","items":{"type":"string"},"description":"Columns to return. All when omitted."},"order_by":{"type":"string","description":"Column to sort by; prefix with - for descending."},"limit":{"type":"integer","description":"Maximum rows.","minimum":1,"maximum":500}},"required":["table"],"additionalProperties":false}}},{"type":"function","function":{"name":"update_table_rows","description":"Update rows matching a filter.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters selecting the rows."},"values":{"type":"object","description":"Columns to set."}},"required":["table","filter","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"add_table_row","description":"Insert one row.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"values":{"type":"object","description":"Column values."}},"required":["table","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"get_weather","description":"Current weather for a city.","parameters":{"type":"object","properties":{"city":{"type":"string","description":"City name."},"unit":{"type":"string","description":"Temperature unit.","enum":["celsius","fahrenheit"]}},"required":["city"],"additionalProperties":false}}},{"type":"function","function":{"name":"convert_currency","description":"Convert an amount between currencies at today's rate.","parameters":{"type":"object","properties":{"amount":{"type":"number","description":"Amount to convert.","minimum":0},"from":{"type":"string","description":"ISO 4217 code.","pattern":"^[A-Z]{3}$"},"to":{"type":"string","description":"ISO 4217 code.","pattern":"^[A-Z]{3}$"}},"required":["amount","from","to"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"send_slack_message","args":[{"path":"channel","op":"eq","value":"#deploys"},{"path":"text","op":"contains","value":"deploy finished"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Post 'Deploy finished, all green' in #deploys."}]},{"id":"sel-query-open-incidents","category":"selection","description":"Read rows with a filter.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"create_issue","description":"Open an issue in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Issue title.","minLength":1},"body":{"type":"string","description":"Issue body, Markdown."},"labels":{"type":"array","items":{"type":"string"},"description":"Labels to apply."}},"required":["repo","title"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_pull_request","description":"Open a pull request in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Pull request title.","minLength":1},"head":{"type":"string","description":"Branch with the changes."},"base":{"type":"string","description":"Branch to merge into."},"body":{"type":"string","description":"Description, Markdown."},"draft":{"type":"boolean","description":"Open as a draft."}},"required":["repo","title","head","base"],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_slack_message","description":"Post a message to a Slack channel or reply in a thread.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #, e.g. #eng.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"thread_ts":{"type":"string","description":"Reply in this thread."}},"required":["channel","text"],"additionalProperties":false}}},{"type":"function","function":{"name":"schedule_slack_message","description":"Schedule a Slack message to post later.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"post_at":{"type":"string","description":"When to post, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"}},"required":["channel","text","post_at"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_email","description":"Send an email.","parameters":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"},"description":"Recipient addresses.","minItems":1},"subject":{"type":"string","description":"Subject line.","minLength":1},"body":{"type":"string","description":"Plain-text body."},"cc":{"type":"array","items":{"type":"string"},"description":"CC addresses."}},"required":["to","subject","body"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Event title.","minLength":1},"start":{"type":"string","description":"Start, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"end":{"type":"string","description":"End, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"attendees":{"type":"array","items":{"type":"string"},"description":"Attendee email addresses."}},"required":["title","start","end"],"additionalProperties":false}}},{"type":"function","function":{"name":"query_table","description":"Read rows from a table in the team's workspace database.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters, e.g. {\"status\": \"open\"}."},"columns":{"type":"array","items":{"type":"string"},"description":"Columns to return. All when omitted."},"order_by":{"type":"string","description":"Column to sort by; prefix with - for descending."},"limit":{"type":"integer","description":"Maximum rows.","minimum":1,"maximum":500}},"required":["table"],"additionalProperties":false}}},{"type":"function","function":{"name":"update_table_rows","description":"Update rows matching a filter.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters selecting the rows."},"values":{"type":"object","description":"Columns to set."}},"required":["table","filter","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"add_table_row","description":"Insert one row.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"values":{"type":"object","description":"Column values."}},"required":["table","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"get_weather","description":"Current weather for a city.","parameters":{"type":"object","properties":{"city":{"type":"string","description":"City name."},"unit":{"type":"string","description":"Temperature unit.","enum":["celsius","fahrenheit"]}},"required":["city"],"additionalProperties":false}}},{"type":"function","function":{"name":"convert_currency","description":"Convert an amount between currencies at today's rate.","parameters":{"type":"object","properties":{"amount":{"type":"number","description":"Amount to convert.","minimum":0},"from":{"type":"string","description":"ISO 4217 code.","pattern":"^[A-Z]{3}$"},"to":{"type":"string","description":"ISO 4217 code.","pattern":"^[A-Z]{3}$"}},"required":["amount","from","to"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"query_table","args":[{"path":"table","op":"eq","value":"incidents"},{"path":"filter","op":"subset","value":{"status":"open"}}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"List the incidents that are still open."}]},{"id":"sel-weather","category":"selection","description":"A utility tool among many.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"create_issue","description":"Open an issue in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Issue title.","minLength":1},"body":{"type":"string","description":"Issue body, Markdown."},"labels":{"type":"array","items":{"type":"string"},"description":"Labels to apply."}},"required":["repo","title"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_pull_request","description":"Open a pull request in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Pull request title.","minLength":1},"head":{"type":"string","description":"Branch with the changes."},"base":{"type":"string","description":"Branch to merge into."},"body":{"type":"string","description":"Description, Markdown."},"draft":{"type":"boolean","description":"Open as a draft."}},"required":["repo","title","head","base"],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_slack_message","description":"Post a message to a Slack channel or reply in a thread.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #, e.g. #eng.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"thread_ts":{"type":"string","description":"Reply in this thread."}},"required":["channel","text"],"additionalProperties":false}}},{"type":"function","function":{"name":"schedule_slack_message","description":"Schedule a Slack message to post later.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"post_at":{"type":"string","description":"When to post, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"}},"required":["channel","text","post_at"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_email","description":"Send an email.","parameters":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"},"description":"Recipient addresses.","minItems":1},"subject":{"type":"string","description":"Subject line.","minLength":1},"body":{"type":"string","description":"Plain-text body."},"cc":{"type":"array","items":{"type":"string"},"description":"CC addresses."}},"required":["to","subject","body"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Event title.","minLength":1},"start":{"type":"string","description":"Start, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"end":{"type":"string","description":"End, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"attendees":{"type":"array","items":{"type":"string"},"description":"Attendee email addresses."}},"required":["title","start","end"],"additionalProperties":false}}},{"type":"function","function":{"name":"query_table","description":"Read rows from a table in the team's workspace database.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters, e.g. {\"status\": \"open\"}."},"columns":{"type":"array","items":{"type":"string"},"description":"Columns to return. All when omitted."},"order_by":{"type":"string","description":"Column to sort by; prefix with - for descending."},"limit":{"type":"integer","description":"Maximum rows.","minimum":1,"maximum":500}},"required":["table"],"additionalProperties":false}}},{"type":"function","function":{"name":"update_table_rows","description":"Update rows matching a filter.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters selecting the rows."},"values":{"type":"object","description":"Columns to set."}},"required":["table","filter","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"add_table_row","description":"Insert one row.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"values":{"type":"object","description":"Column values."}},"required":["table","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"get_weather","description":"Current weather for a city.","parameters":{"type":"object","properties":{"city":{"type":"string","description":"City name."},"unit":{"type":"string","description":"Temperature unit.","enum":["celsius","fahrenheit"]}},"required":["city"],"additionalProperties":false}}},{"type":"function","function":{"name":"convert_currency","description":"Convert an amount between currencies at today's rate.","parameters":{"type":"object","properties":{"amount":{"type":"number","description":"Amount to convert.","minimum":0},"from":{"type":"string","description":"ISO 4217 code.","pattern":"^[A-Z]{3}$"},"to":{"type":"string","description":"ISO 4217 code.","pattern":"^[A-Z]{3}$"}},"required":["amount","from","to"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"get_weather","args":[{"path":"city","op":"contains","value":"chicago"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Is it raining in Chicago right now?"}]},{"id":"sel-create-issue","category":"selection","description":"File an issue in the current repo.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"create_issue","description":"Open an issue in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Issue title.","minLength":1},"body":{"type":"string","description":"Issue body, Markdown."},"labels":{"type":"array","items":{"type":"string"},"description":"Labels to apply."}},"required":["repo","title"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_pull_request","description":"Open a pull request in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Pull request title.","minLength":1},"head":{"type":"string","description":"Branch with the changes."},"base":{"type":"string","description":"Branch to merge into."},"body":{"type":"string","description":"Description, Markdown."},"draft":{"type":"boolean","description":"Open as a draft."}},"required":["repo","title","head","base"],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_slack_message","description":"Post a message to a Slack channel or reply in a thread.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #, e.g. #eng.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"thread_ts":{"type":"string","description":"Reply in this thread."}},"required":["channel","text"],"additionalProperties":false}}},{"type":"function","function":{"name":"schedule_slack_message","description":"Schedule a Slack message to post later.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"post_at":{"type":"string","description":"When to post, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"}},"required":["channel","text","post_at"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_email","description":"Send an email.","parameters":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"},"description":"Recipient addresses.","minItems":1},"subject":{"type":"string","description":"Subject line.","minLength":1},"body":{"type":"string","description":"Plain-text body."},"cc":{"type":"array","items":{"type":"string"},"description":"CC addresses."}},"required":["to","subject","body"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Event title.","minLength":1},"start":{"type":"string","description":"Start, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"end":{"type":"string","description":"End, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"attendees":{"type":"array","items":{"type":"string"},"description":"Attendee email addresses."}},"required":["title","start","end"],"additionalProperties":false}}},{"type":"function","function":{"name":"query_table","description":"Read rows from a table in the team's workspace database.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters, e.g. {\"status\": \"open\"}."},"columns":{"type":"array","items":{"type":"string"},"description":"Columns to return. All when omitted."},"order_by":{"type":"string","description":"Column to sort by; prefix with - for descending."},"limit":{"type":"integer","description":"Maximum rows.","minimum":1,"maximum":500}},"required":["table"],"additionalProperties":false}}},{"type":"function","function":{"name":"update_table_rows","description":"Update rows matching a filter.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters selecting the rows."},"values":{"type":"object","description":"Columns to set."}},"required":["table","filter","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"add_table_row","description":"Insert one row.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"values":{"type":"object","description":"Column values."}},"required":["table","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"get_weather","description":"Current weather for a city.","parameters":{"type":"object","properties":{"city":{"type":"string","description":"City name."},"unit":{"type":"string","description":"Temperature unit.","enum":["celsius","fahrenheit"]}},"required":["city"],"additionalProperties":false}}},{"type":"function","function":{"name":"convert_currency","description":"Convert an amount between currencies at today's rate.","parameters":{"type":"object","properties":{"amount":{"type":"number","description":"Amount to convert.","minimum":0},"from":{"type":"string","description":"ISO 4217 code.","pattern":"^[A-Z]{3}$"},"to":{"type":"string","description":"ISO 4217 code.","pattern":"^[A-Z]{3}$"}},"required":["amount","from","to"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"create_issue","args":[{"path":"repo","op":"eq","value":"acme/storefront"},{"path":"title","op":"contains","value":"checkout button misaligned"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Open an issue titled 'Checkout button misaligned on mobile' in this repo."}]},{"id":"sel-fetch-url","category":"selection","description":"Read a page the user names by URL.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"fetch_url","args":[{"path":"url","op":"eq","value":"https://example.com/changelog"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Summarise https://example.com/changelog for me."}]},{"id":"sel-branch","category":"selection","description":"Create a branch with a given name.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"git_create_branch","args":[{"path":"name","op":"eq","value":"fix/cart-total"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Make a new branch called fix/cart-total."}]},{"id":"sel-convert","category":"selection","description":"Convert currency with ISO codes.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"create_issue","description":"Open an issue in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Issue title.","minLength":1},"body":{"type":"string","description":"Issue body, Markdown."},"labels":{"type":"array","items":{"type":"string"},"description":"Labels to apply."}},"required":["repo","title"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_pull_request","description":"Open a pull request in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Pull request title.","minLength":1},"head":{"type":"string","description":"Branch with the changes."},"base":{"type":"string","description":"Branch to merge into."},"body":{"type":"string","description":"Description, Markdown."},"draft":{"type":"boolean","description":"Open as a draft."}},"required":["repo","title","head","base"],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_slack_message","description":"Post a message to a Slack channel or reply in a thread.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #, e.g. #eng.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"thread_ts":{"type":"string","description":"Reply in this thread."}},"required":["channel","text"],"additionalProperties":false}}},{"type":"function","function":{"name":"schedule_slack_message","description":"Schedule a Slack message to post later.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"post_at":{"type":"string","description":"When to post, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"}},"required":["channel","text","post_at"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_email","description":"Send an email.","parameters":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"},"description":"Recipient addresses.","minItems":1},"subject":{"type":"string","description":"Subject line.","minLength":1},"body":{"type":"string","description":"Plain-text body."},"cc":{"type":"array","items":{"type":"string"},"description":"CC addresses."}},"required":["to","subject","body"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Event title.","minLength":1},"start":{"type":"string","description":"Start, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"end":{"type":"string","description":"End, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"attendees":{"type":"array","items":{"type":"string"},"description":"Attendee email addresses."}},"required":["title","start","end"],"additionalProperties":false}}},{"type":"function","function":{"name":"query_table","description":"Read rows from a table in the team's workspace database.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters, e.g. {\"status\": \"open\"}."},"columns":{"type":"array","items":{"type":"string"},"description":"Columns to return. All when omitted."},"order_by":{"type":"string","description":"Column to sort by; prefix with - for descending."},"limit":{"type":"integer","description":"Maximum rows.","minimum":1,"maximum":500}},"required":["table"],"additionalProperties":false}}},{"type":"function","function":{"name":"update_table_rows","description":"Update rows matching a filter.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters selecting the rows."},"values":{"type":"object","description":"Columns to set."}},"required":["table","filter","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"add_table_row","description":"Insert one row.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"values":{"type":"object","description":"Column values."}},"required":["table","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"get_weather","description":"Current weather for a city.","parameters":{"type":"object","properties":{"city":{"type":"string","description":"City name."},"unit":{"type":"string","description":"Temperature unit.","enum":["celsius","fahrenheit"]}},"required":["city"],"additionalProperties":false}}},{"type":"function","function":{"name":"convert_currency","description":"Convert an amount between currencies at today's rate.","parameters":{"type":"object","properties":{"amount":{"type":"number","description":"Amount to convert.","minimum":0},"from":{"type":"string","description":"ISO 4217 code.","pattern":"^[A-Z]{3}$"},"to":{"type":"string","description":"ISO 4217 code.","pattern":"^[A-Z]{3}$"}},"required":["amount","from","to"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"convert_currency","args":[{"path":"amount","op":"eq","value":250},{"path":"from","op":"eq","value":"EUR"},{"path":"to","op":"eq","value":"USD"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"How much is 250 euros in US dollars today?"}]},{"id":"arg-line-range","category":"arguments","description":"Integer line range, both ends.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"read_file","args":[{"path":"path","op":"eq","value":"src/cart.ts"},{"path":"start_line","op":"eq","value":40},{"path":"end_line","op":"eq","value":60}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Show me lines 40 to 60 of src/cart.ts."}]},{"id":"arg-edit-exact","category":"arguments","description":"Exact old and new strings.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"edit_file","args":[{"path":"path","op":"eq","value":"src/config.ts"},{"path":"old_string","op":"contains","value":"retries: 3"},{"path":"new_string","op":"contains","value":"retries: 5"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"In src/config.ts, change `retries: 3` to `retries: 5`."}]},{"id":"arg-edit-replace-all","category":"arguments","description":"A boolean flag the request implies.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"edit_file","args":[{"path":"path","op":"eq","value":"src/api.ts"},{"path":"old_string","op":"eq","value":"fetchCart"},{"path":"new_string","op":"eq","value":"loadCart"},{"path":"replace_all","op":"eq","value":true}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Rename every occurrence of `fetchCart` to `loadCart` in src/api.ts."}]},{"id":"arg-write-quotes","category":"arguments","description":"Content with quotes and newlines survives JSON encoding.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"write_file","args":[{"path":"path","op":"eq","value":".env.example"},{"path":"content","op":"regex","value":"^API_URL=\"https://api\\.acme\\.dev\"\\r?\\nDEBUG=false\\r?\\n?$"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Create .env.example containing exactly two lines: API_URL=\"https://api.acme.dev\" and DEBUG=false"}]},{"id":"arg-unicode","category":"arguments","description":"Non-ASCII text passed through unchanged.","tools":[{"type":"function","function":{"name":"send_slack_message","description":"Post a message to a Slack channel or reply in a thread.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #, e.g. #eng.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"thread_ts":{"type":"string","description":"Reply in this thread."}},"required":["channel","text"],"additionalProperties":false}}},{"type":"function","function":{"name":"schedule_slack_message","description":"Schedule a Slack message to post later.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"post_at":{"type":"string","description":"When to post, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"}},"required":["channel","text","post_at"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_email","description":"Send an email.","parameters":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"},"description":"Recipient addresses.","minItems":1},"subject":{"type":"string","description":"Subject line.","minLength":1},"body":{"type":"string","description":"Plain-text body."},"cc":{"type":"array","items":{"type":"string"},"description":"CC addresses."}},"required":["to","subject","body"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Event title.","minLength":1},"start":{"type":"string","description":"Start, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"end":{"type":"string","description":"End, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"attendees":{"type":"array","items":{"type":"string"},"description":"Attendee email addresses."}},"required":["title","start","end"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"send_slack_message","args":[{"path":"channel","op":"eq","value":"#paris-team"},{"path":"text","op":"contains","value":"Déploiement terminé ✅"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Post 'Déploiement terminé ✅' to #paris-team."}]},{"id":"arg-email-array","category":"arguments","description":"Recipients as an array, with CC.","tools":[{"type":"function","function":{"name":"send_slack_message","description":"Post a message to a Slack channel or reply in a thread.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #, e.g. #eng.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"thread_ts":{"type":"string","description":"Reply in this thread."}},"required":["channel","text"],"additionalProperties":false}}},{"type":"function","function":{"name":"schedule_slack_message","description":"Schedule a Slack message to post later.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"post_at":{"type":"string","description":"When to post, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"}},"required":["channel","text","post_at"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_email","description":"Send an email.","parameters":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"},"description":"Recipient addresses.","minItems":1},"subject":{"type":"string","description":"Subject line.","minLength":1},"body":{"type":"string","description":"Plain-text body."},"cc":{"type":"array","items":{"type":"string"},"description":"CC addresses."}},"required":["to","subject","body"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Event title.","minLength":1},"start":{"type":"string","description":"Start, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"end":{"type":"string","description":"End, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"attendees":{"type":"array","items":{"type":"string"},"description":"Attendee email addresses."}},"required":["title","start","end"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"send_email","args":[{"path":"to","op":"subset","value":["ana@acme.dev","raj@acme.dev"]},{"path":"cc","op":"eq","value":["lee@acme.dev"]},{"path":"subject","op":"contains","value":"Q4 roadmap"},{"path":"body","op":"contains","value":"shared folder"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Email ana@acme.dev and raj@acme.dev, cc lee@acme.dev, subject 'Q4 roadmap', saying the draft is in the shared folder."}]},{"id":"arg-calendar-relative","category":"arguments","description":"A relative time resolved to an ISO date-time.","tools":[{"type":"function","function":{"name":"send_slack_message","description":"Post a message to a Slack channel or reply in a thread.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #, e.g. #eng.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"thread_ts":{"type":"string","description":"Reply in this thread."}},"required":["channel","text"],"additionalProperties":false}}},{"type":"function","function":{"name":"schedule_slack_message","description":"Schedule a Slack message to post later.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"post_at":{"type":"string","description":"When to post, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"}},"required":["channel","text","post_at"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_email","description":"Send an email.","parameters":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"},"description":"Recipient addresses.","minItems":1},"subject":{"type":"string","description":"Subject line.","minLength":1},"body":{"type":"string","description":"Plain-text body."},"cc":{"type":"array","items":{"type":"string"},"description":"CC addresses."}},"required":["to","subject","body"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Event title.","minLength":1},"start":{"type":"string","description":"Start, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"end":{"type":"string","description":"End, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"attendees":{"type":"array","items":{"type":"string"},"description":"Attendee email addresses."}},"required":["title","start","end"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"create_calendar_event","args":[{"path":"title","op":"contains","value":"release review"},{"path":"start","op":"regex","value":"^2026-10-22T15:00"},{"path":"end","op":"regex","value":"^2026-10-22T15:30"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Put a 30 minute 'Release review' on the calendar tomorrow at 15:00 UTC."}]},{"id":"arg-enum-unit","category":"arguments","description":"An enum value the user implies.","tools":[{"type":"function","function":{"name":"get_weather","description":"Current weather for a city.","parameters":{"type":"object","properties":{"city":{"type":"string","description":"City name."},"unit":{"type":"string","description":"Temperature unit.","enum":["celsius","fahrenheit"]}},"required":["city"],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"get_weather","args":[{"path":"city","op":"contains","value":"austin"},{"path":"unit","op":"eq","value":"fahrenheit"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"What's the temperature in Austin in Fahrenheit?"}]},{"id":"arg-optional-omitted","category":"arguments","description":"Leave an optional flag unset when nothing asks for it.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"list_directory","args":[{"path":"path","op":"regex","value":"^(\\.|\\./|/)?$"},{"path":"recursive","op":"oneOf","value":[false,null]}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"List the top level of the repo."}]},{"id":"arg-recursive","category":"arguments","description":"Set the flag when the request needs it.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"list_directory","args":[{"path":"path","op":"regex","value":"^(\\./)?docs/?$"},{"path":"recursive","op":"eq","value":true}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"List every file under docs/, including the subfolders."}]},{"id":"arg-glob","category":"arguments","description":"A file glob narrows the search.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"search_code","args":[{"path":"query","op":"contains","value":"localStorage"},{"path":"file_glob","op":"regex","value":"\\*\\.tsx?$|\\*\\.\\{?ts"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Search only the TypeScript files for 'localStorage'."}]},{"id":"arg-case-sensitive","category":"arguments","description":"A boolean the user states.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"search_code","args":[{"path":"query","op":"eq","value":"UserID"},{"path":"case_sensitive","op":"eq","value":true}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Search for 'UserID' exactly, case-sensitive."}]},{"id":"arg-timeout","category":"arguments","description":"An integer within the schema's bounds.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"run_command","args":[{"path":"command","op":"contains","value":"npm run e2e"},{"path":"timeout_seconds","op":"eq","value":120}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Run the e2e suite with `npm run e2e`, but give up after two minutes."}]},{"id":"arg-table-update","category":"arguments","description":"Filter and values as two objects.","tools":[{"type":"function","function":{"name":"query_table","description":"Read rows from a table in the team's workspace database.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters, e.g. {\"status\": \"open\"}."},"columns":{"type":"array","items":{"type":"string"},"description":"Columns to return. All when omitted."},"order_by":{"type":"string","description":"Column to sort by; prefix with - for descending."},"limit":{"type":"integer","description":"Maximum rows.","minimum":1,"maximum":500}},"required":["table"],"additionalProperties":false}}},{"type":"function","function":{"name":"update_table_rows","description":"Update rows matching a filter.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters selecting the rows."},"values":{"type":"object","description":"Columns to set."}},"required":["table","filter","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"add_table_row","description":"Insert one row.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"values":{"type":"object","description":"Column values."}},"required":["table","values"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"update_table_rows","args":[{"path":"table","op":"eq","value":"invoices"},{"path":"filter","op":"subset","value":{"id":"INV-1042"}},{"path":"values","op":"subset","value":{"status":"paid"}}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Mark invoice INV-1042 as paid."}]},{"id":"arg-table-order-limit","category":"arguments","description":"Sort descending and a limit.","tools":[{"type":"function","function":{"name":"query_table","description":"Read rows from a table in the team's workspace database.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters, e.g. {\"status\": \"open\"}."},"columns":{"type":"array","items":{"type":"string"},"description":"Columns to return. All when omitted."},"order_by":{"type":"string","description":"Column to sort by; prefix with - for descending."},"limit":{"type":"integer","description":"Maximum rows.","minimum":1,"maximum":500}},"required":["table"],"additionalProperties":false}}},{"type":"function","function":{"name":"update_table_rows","description":"Update rows matching a filter.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters selecting the rows."},"values":{"type":"object","description":"Columns to set."}},"required":["table","filter","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"add_table_row","description":"Insert one row.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"values":{"type":"object","description":"Column values."}},"required":["table","values"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"query_table","args":[{"path":"table","op":"eq","value":"deploys"},{"path":"order_by","op":"regex","value":"^-"},{"path":"limit","op":"eq","value":10}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Show the 10 most recent deploys."}]},{"id":"arg-commit-files","category":"arguments","description":"Commit only the named files.","tools":[{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"git_commit","args":[{"path":"message","op":"eq","value":"Fix rounding in cart total"},{"path":"files","op":"subset","value":["src/cart.ts","src/cart.test.ts"]}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Commit just src/cart.ts and src/cart.test.ts with the message 'Fix rounding in cart total'."}]},{"id":"near-email-not-slack","category":"near_miss","description":"An email address means email, not Slack.","tools":[{"type":"function","function":{"name":"send_slack_message","description":"Post a message to a Slack channel or reply in a thread.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #, e.g. #eng.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"thread_ts":{"type":"string","description":"Reply in this thread."}},"required":["channel","text"],"additionalProperties":false}}},{"type":"function","function":{"name":"schedule_slack_message","description":"Schedule a Slack message to post later.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"post_at":{"type":"string","description":"When to post, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"}},"required":["channel","text","post_at"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_email","description":"Send an email.","parameters":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"},"description":"Recipient addresses.","minItems":1},"subject":{"type":"string","description":"Subject line.","minLength":1},"body":{"type":"string","description":"Plain-text body."},"cc":{"type":"array","items":{"type":"string"},"description":"CC addresses."}},"required":["to","subject","body"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Event title.","minLength":1},"start":{"type":"string","description":"Start, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"end":{"type":"string","description":"End, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"attendees":{"type":"array","items":{"type":"string"},"description":"Attendee email addresses."}},"required":["title","start","end"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"send_email","args":[{"path":"to","op":"subset","value":["dana@acme.dev"]},{"path":"subject","op":"contains","value":"invoice sent"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Let dana@acme.dev know the invoice went out. Subject: Invoice sent."}]},{"id":"near-slack-not-email","category":"near_miss","description":"A channel means Slack, not email.","tools":[{"type":"function","function":{"name":"send_slack_message","description":"Post a message to a Slack channel or reply in a thread.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #, e.g. #eng.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"thread_ts":{"type":"string","description":"Reply in this thread."}},"required":["channel","text"],"additionalProperties":false}}},{"type":"function","function":{"name":"schedule_slack_message","description":"Schedule a Slack message to post later.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"post_at":{"type":"string","description":"When to post, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"}},"required":["channel","text","post_at"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_email","description":"Send an email.","parameters":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"},"description":"Recipient addresses.","minItems":1},"subject":{"type":"string","description":"Subject line.","minLength":1},"body":{"type":"string","description":"Plain-text body."},"cc":{"type":"array","items":{"type":"string"},"description":"CC addresses."}},"required":["to","subject","body"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Event title.","minLength":1},"start":{"type":"string","description":"Start, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"end":{"type":"string","description":"End, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"attendees":{"type":"array","items":{"type":"string"},"description":"Attendee email addresses."}},"required":["title","start","end"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"send_slack_message","args":[{"path":"channel","op":"eq","value":"#support"},{"path":"text","op":"contains","value":"resolved"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Tell #support that the outage is resolved."}]},{"id":"near-schedule-not-send","category":"near_miss","description":"'At 9' means schedule, not post now.","tools":[{"type":"function","function":{"name":"send_slack_message","description":"Post a message to a Slack channel or reply in a thread.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #, e.g. #eng.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"thread_ts":{"type":"string","description":"Reply in this thread."}},"required":["channel","text"],"additionalProperties":false}}},{"type":"function","function":{"name":"schedule_slack_message","description":"Schedule a Slack message to post later.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"post_at":{"type":"string","description":"When to post, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"}},"required":["channel","text","post_at"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_email","description":"Send an email.","parameters":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"},"description":"Recipient addresses.","minItems":1},"subject":{"type":"string","description":"Subject line.","minLength":1},"body":{"type":"string","description":"Plain-text body."},"cc":{"type":"array","items":{"type":"string"},"description":"CC addresses."}},"required":["to","subject","body"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Event title.","minLength":1},"start":{"type":"string","description":"Start, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"end":{"type":"string","description":"End, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"attendees":{"type":"array","items":{"type":"string"},"description":"Attendee email addresses."}},"required":["title","start","end"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"schedule_slack_message","args":[{"path":"channel","op":"eq","value":"#eng"},{"path":"text","op":"contains","value":"standup"},{"path":"post_at","op":"regex","value":"^2026-10-22T09:25"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Post 'Standup in 5' to #eng tomorrow at 09:25 UTC."}]},{"id":"near-diff-not-status","category":"near_miss","description":"Line changes means git_diff, not git_status.","tools":[{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"git_diff","args":[{"path":"path","op":"contains","value":"src/cart.ts"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"What exactly did I change in src/cart.ts?"}]},{"id":"near-staged-diff","category":"near_miss","description":"Staged changes: the staged flag.","tools":[{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"git_diff","args":[{"path":"staged","op":"eq","value":true}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Show me what's staged for the next commit."}]},{"id":"near-read-not-fetch","category":"near_miss","description":"A workspace path is a file, not a URL.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"read_file","args":[{"path":"path","op":"eq","value":"docs/api.md"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Open docs/api.md."}]},{"id":"near-fetch-not-search","category":"near_miss","description":"A URL is fetched, not searched for.","tools":[{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"fetch_url","args":[{"path":"url","op":"eq","value":"https://status.acme.dev"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"What does https://status.acme.dev say right now?"}]},{"id":"near-code-not-web","category":"near_miss","description":"'In our code' means search_code, not the web.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"search_code","args":[{"path":"query","op":"contains","value":"stripe"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Where in our code do we call the Stripe API?"}]},{"id":"near-edit-not-write","category":"near_miss","description":"A one-line change is an edit, not a rewrite.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"edit_file","args":[{"path":"path","op":"eq","value":"package.json"},{"path":"old_string","op":"contains","value":"1.4.0"},{"path":"new_string","op":"contains","value":"1.4.1"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"In package.json, change the version from 1.4.0 to 1.4.1."}]},{"id":"near-issue-not-pr","category":"near_miss","description":"A bug report is an issue, not a pull request.","tools":[{"type":"function","function":{"name":"create_issue","description":"Open an issue in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Issue title.","minLength":1},"body":{"type":"string","description":"Issue body, Markdown."},"labels":{"type":"array","items":{"type":"string"},"description":"Labels to apply."}},"required":["repo","title"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_pull_request","description":"Open a pull request in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Pull request title.","minLength":1},"head":{"type":"string","description":"Branch with the changes."},"base":{"type":"string","description":"Branch to merge into."},"body":{"type":"string","description":"Description, Markdown."},"draft":{"type":"boolean","description":"Open as a draft."}},"required":["repo","title","head","base"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"create_issue","args":[{"path":"repo","op":"eq","value":"acme/storefront"},{"path":"title","op":"contains","value":"coupon"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Report a bug in acme/storefront: 'Coupon codes ignored at checkout'."}]},{"id":"near-pr-not-issue","category":"near_miss","description":"Merging a branch is a pull request.","tools":[{"type":"function","function":{"name":"create_issue","description":"Open an issue in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Issue title.","minLength":1},"body":{"type":"string","description":"Issue body, Markdown."},"labels":{"type":"array","items":{"type":"string"},"description":"Labels to apply."}},"required":["repo","title"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_pull_request","description":"Open a pull request in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Pull request title.","minLength":1},"head":{"type":"string","description":"Branch with the changes."},"base":{"type":"string","description":"Branch to merge into."},"body":{"type":"string","description":"Description, Markdown."},"draft":{"type":"boolean","description":"Open as a draft."}},"required":["repo","title","head","base"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"create_pull_request","args":[{"path":"repo","op":"eq","value":"acme/storefront"},{"path":"head","op":"eq","value":"fix/cart-total"},{"path":"base","op":"eq","value":"main"},{"path":"title","op":"contains","value":"cart total"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Open a PR from fix/cart-total into main titled 'Fix cart total rounding'."}]},{"id":"near-add-not-update","category":"near_miss","description":"A new record is an insert, not an update.","tools":[{"type":"function","function":{"name":"query_table","description":"Read rows from a table in the team's workspace database.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters, e.g. {\"status\": \"open\"}."},"columns":{"type":"array","items":{"type":"string"},"description":"Columns to return. All when omitted."},"order_by":{"type":"string","description":"Column to sort by; prefix with - for descending."},"limit":{"type":"integer","description":"Maximum rows.","minimum":1,"maximum":500}},"required":["table"],"additionalProperties":false}}},{"type":"function","function":{"name":"update_table_rows","description":"Update rows matching a filter.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters selecting the rows."},"values":{"type":"object","description":"Columns to set."}},"required":["table","filter","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"add_table_row","description":"Insert one row.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"values":{"type":"object","description":"Column values."}},"required":["table","values"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"add_table_row","args":[{"path":"table","op":"eq","value":"tasks"},{"path":"values","op":"subset","value":{"status":"todo"}},{"path":"values.owner","op":"contains","value":"priya"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Add a task: 'Rotate the API keys', owner Priya, status todo."}]},{"id":"none-greeting","category":"abstain","description":"Small talk needs no tool.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"create_issue","description":"Open an issue in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Issue title.","minLength":1},"body":{"type":"string","description":"Issue body, Markdown."},"labels":{"type":"array","items":{"type":"string"},"description":"Labels to apply."}},"required":["repo","title"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_pull_request","description":"Open a pull request in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Pull request title.","minLength":1},"head":{"type":"string","description":"Branch with the changes."},"base":{"type":"string","description":"Branch to merge into."},"body":{"type":"string","description":"Description, Markdown."},"draft":{"type":"boolean","description":"Open as a draft."}},"required":["repo","title","head","base"],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_slack_message","description":"Post a message to a Slack channel or reply in a thread.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #, e.g. #eng.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"thread_ts":{"type":"string","description":"Reply in this thread."}},"required":["channel","text"],"additionalProperties":false}}},{"type":"function","function":{"name":"schedule_slack_message","description":"Schedule a Slack message to post later.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"post_at":{"type":"string","description":"When to post, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"}},"required":["channel","text","post_at"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_email","description":"Send an email.","parameters":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"},"description":"Recipient addresses.","minItems":1},"subject":{"type":"string","description":"Subject line.","minLength":1},"body":{"type":"string","description":"Plain-text body."},"cc":{"type":"array","items":{"type":"string"},"description":"CC addresses."}},"required":["to","subject","body"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Event title.","minLength":1},"start":{"type":"string","description":"Start, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"end":{"type":"string","description":"End, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"attendees":{"type":"array","items":{"type":"string"},"description":"Attendee email addresses."}},"required":["title","start","end"],"additionalProperties":false}}},{"type":"function","function":{"name":"query_table","description":"Read rows from a table in the team's workspace database.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters, e.g. {\"status\": \"open\"}."},"columns":{"type":"array","items":{"type":"string"},"description":"Columns to return. All when omitted."},"order_by":{"type":"string","description":"Column to sort by; prefix with - for descending."},"limit":{"type":"integer","description":"Maximum rows.","minimum":1,"maximum":500}},"required":["table"],"additionalProperties":false}}},{"type":"function","function":{"name":"update_table_rows","description":"Update rows matching a filter.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters selecting the rows."},"values":{"type":"object","description":"Columns to set."}},"required":["table","filter","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"add_table_row","description":"Insert one row.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"values":{"type":"object","description":"Column values."}},"required":["table","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"get_weather","description":"Current weather for a city.","parameters":{"type":"object","properties":{"city":{"type":"string","description":"City name."},"unit":{"type":"string","description":"Temperature unit.","enum":["celsius","fahrenheit"]}},"required":["city"],"additionalProperties":false}}},{"type":"function","function":{"name":"convert_currency","description":"Convert an amount between currencies at today's rate.","parameters":{"type":"object","properties":{"amount":{"type":"number","description":"Amount to convert.","minimum":0},"from":{"type":"string","description":"ISO 4217 code.","pattern":"^[A-Z]{3}$"},"to":{"type":"string","description":"ISO 4217 code.","pattern":"^[A-Z]{3}$"}},"required":["amount","from","to"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Thanks, that's all for now!"}]},{"id":"none-general-knowledge","category":"abstain","description":"A question the model can answer itself.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"What's the difference between let and const in JavaScript?"}]},{"id":"none-arithmetic","category":"abstain","description":"Arithmetic needs no tool.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"create_issue","description":"Open an issue in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Issue title.","minLength":1},"body":{"type":"string","description":"Issue body, Markdown."},"labels":{"type":"array","items":{"type":"string"},"description":"Labels to apply."}},"required":["repo","title"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_pull_request","description":"Open a pull request in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Pull request title.","minLength":1},"head":{"type":"string","description":"Branch with the changes."},"base":{"type":"string","description":"Branch to merge into."},"body":{"type":"string","description":"Description, Markdown."},"draft":{"type":"boolean","description":"Open as a draft."}},"required":["repo","title","head","base"],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_slack_message","description":"Post a message to a Slack channel or reply in a thread.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #, e.g. #eng.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"thread_ts":{"type":"string","description":"Reply in this thread."}},"required":["channel","text"],"additionalProperties":false}}},{"type":"function","function":{"name":"schedule_slack_message","description":"Schedule a Slack message to post later.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"post_at":{"type":"string","description":"When to post, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"}},"required":["channel","text","post_at"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_email","description":"Send an email.","parameters":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"},"description":"Recipient addresses.","minItems":1},"subject":{"type":"string","description":"Subject line.","minLength":1},"body":{"type":"string","description":"Plain-text body."},"cc":{"type":"array","items":{"type":"string"},"description":"CC addresses."}},"required":["to","subject","body"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Event title.","minLength":1},"start":{"type":"string","description":"Start, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"end":{"type":"string","description":"End, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"attendees":{"type":"array","items":{"type":"string"},"description":"Attendee email addresses."}},"required":["title","start","end"],"additionalProperties":false}}},{"type":"function","function":{"name":"query_table","description":"Read rows from a table in the team's workspace database.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters, e.g. {\"status\": \"open\"}."},"columns":{"type":"array","items":{"type":"string"},"description":"Columns to return. All when omitted."},"order_by":{"type":"string","description":"Column to sort by; prefix with - for descending."},"limit":{"type":"integer","description":"Maximum rows.","minimum":1,"maximum":500}},"required":["table"],"additionalProperties":false}}},{"type":"function","function":{"name":"update_table_rows","description":"Update rows matching a filter.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters selecting the rows."},"values":{"type":"object","description":"Columns to set."}},"required":["table","filter","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"add_table_row","description":"Insert one row.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"values":{"type":"object","description":"Column values."}},"required":["table","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"get_weather","description":"Current weather for a city.","parameters":{"type":"object","properties":{"city":{"type":"string","description":"City name."},"unit":{"type":"string","description":"Temperature unit.","enum":["celsius","fahrenheit"]}},"required":["city"],"additionalProperties":false}}},{"type":"function","function":{"name":"convert_currency","description":"Convert an amount between currencies at today's rate.","parameters":{"type":"object","properties":{"amount":{"type":"number","description":"Amount to convert.","minimum":0},"from":{"type":"string","description":"ISO 4217 code.","pattern":"^[A-Z]{3}$"},"to":{"type":"string","description":"ISO 4217 code.","pattern":"^[A-Z]{3}$"}},"required":["amount","from","to"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"What is 17% of 2,400?"}]},{"id":"none-no-matching-tool","category":"abstain","description":"No tool can do this: say so.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Book me a flight to Denver on Friday."}]},{"id":"none-missing-recipient","category":"abstain","description":"A required detail is missing: ask.","tools":[{"type":"function","function":{"name":"send_slack_message","description":"Post a message to a Slack channel or reply in a thread.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #, e.g. #eng.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"thread_ts":{"type":"string","description":"Reply in this thread."}},"required":["channel","text"],"additionalProperties":false}}},{"type":"function","function":{"name":"schedule_slack_message","description":"Schedule a Slack message to post later.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"post_at":{"type":"string","description":"When to post, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"}},"required":["channel","text","post_at"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_email","description":"Send an email.","parameters":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"},"description":"Recipient addresses.","minItems":1},"subject":{"type":"string","description":"Subject line.","minLength":1},"body":{"type":"string","description":"Plain-text body."},"cc":{"type":"array","items":{"type":"string"},"description":"CC addresses."}},"required":["to","subject","body"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Event title.","minLength":1},"start":{"type":"string","description":"Start, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"end":{"type":"string","description":"End, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"attendees":{"type":"array","items":{"type":"string"},"description":"Attendee email addresses."}},"required":["title","start","end"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Send an email to my manager about tomorrow's offsite."}]},{"id":"none-missing-path","category":"abstain","description":"Which file? Ask before editing.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Fix the typo in the config file."}]},{"id":"none-answer-in-context","category":"abstain","description":"The answer is already in the conversation.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Read package.json."},{"role":"assistant","content":null,"tool_calls":[{"id":"call_pkg","type":"function","function":{"name":"read_file","arguments":"{\"path\":\"package.json\"}"}}]},{"role":"tool","tool_call_id":"call_pkg","content":"{\"name\":\"storefront\",\"version\":\"1.4.0\",\"scripts\":{\"test\":\"vitest\"}}"},{"role":"assistant","content":"It's the storefront package at version 1.4.0, with vitest as the test runner."},{"role":"user","content":"What version did you say it was?"}]},{"id":"none-explain-code","category":"abstain","description":"Explain code the user pasted.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"What does this do? `const total = items.reduce((s, i) => s + i.price * i.qty, 0)`"}]},{"id":"none-hypothetical","category":"abstain","description":"A question about what would happen, not a request to do it.","tools":[{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"If I run git rebase main on a branch with merge commits, what happens to them?"}]},{"id":"none-opinion","category":"abstain","description":"Advice, not action.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"create_issue","description":"Open an issue in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Issue title.","minLength":1},"body":{"type":"string","description":"Issue body, Markdown."},"labels":{"type":"array","items":{"type":"string"},"description":"Labels to apply."}},"required":["repo","title"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_pull_request","description":"Open a pull request in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Pull request title.","minLength":1},"head":{"type":"string","description":"Branch with the changes."},"base":{"type":"string","description":"Branch to merge into."},"body":{"type":"string","description":"Description, Markdown."},"draft":{"type":"boolean","description":"Open as a draft."}},"required":["repo","title","head","base"],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_slack_message","description":"Post a message to a Slack channel or reply in a thread.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #, e.g. #eng.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"thread_ts":{"type":"string","description":"Reply in this thread."}},"required":["channel","text"],"additionalProperties":false}}},{"type":"function","function":{"name":"schedule_slack_message","description":"Schedule a Slack message to post later.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"post_at":{"type":"string","description":"When to post, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"}},"required":["channel","text","post_at"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_email","description":"Send an email.","parameters":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"},"description":"Recipient addresses.","minItems":1},"subject":{"type":"string","description":"Subject line.","minLength":1},"body":{"type":"string","description":"Plain-text body."},"cc":{"type":"array","items":{"type":"string"},"description":"CC addresses."}},"required":["to","subject","body"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Event title.","minLength":1},"start":{"type":"string","description":"Start, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"end":{"type":"string","description":"End, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"attendees":{"type":"array","items":{"type":"string"},"description":"Attendee email addresses."}},"required":["title","start","end"],"additionalProperties":false}}},{"type":"function","function":{"name":"query_table","description":"Read rows from a table in the team's workspace database.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters, e.g. {\"status\": \"open\"}."},"columns":{"type":"array","items":{"type":"string"},"description":"Columns to return. All when omitted."},"order_by":{"type":"string","description":"Column to sort by; prefix with - for descending."},"limit":{"type":"integer","description":"Maximum rows.","minimum":1,"maximum":500}},"required":["table"],"additionalProperties":false}}},{"type":"function","function":{"name":"update_table_rows","description":"Update rows matching a filter.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters selecting the rows."},"values":{"type":"object","description":"Columns to set."}},"required":["table","filter","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"add_table_row","description":"Insert one row.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"values":{"type":"object","description":"Column values."}},"required":["table","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"get_weather","description":"Current weather for a city.","parameters":{"type":"object","properties":{"city":{"type":"string","description":"City name."},"unit":{"type":"string","description":"Temperature unit.","enum":["celsius","fahrenheit"]}},"required":["city"],"additionalProperties":false}}},{"type":"function","function":{"name":"convert_currency","description":"Convert an amount between currencies at today's rate.","parameters":{"type":"object","properties":{"amount":{"type":"number","description":"Amount to convert.","minimum":0},"from":{"type":"string","description":"ISO 4217 code.","pattern":"^[A-Z]{3}$"},"to":{"type":"string","description":"ISO 4217 code.","pattern":"^[A-Z]{3}$"}},"required":["amount","from","to"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Should we use Postgres or SQLite for a small internal tool?"}]},{"id":"none-destructive-unclear","category":"abstain","description":"A destructive request with no target: ask first.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Delete the old files."}]},{"id":"none-weather-no-city","category":"abstain","description":"Weather with no place: ask where.","tools":[{"type":"function","function":{"name":"get_weather","description":"Current weather for a city.","parameters":{"type":"object","properties":{"city":{"type":"string","description":"City name."},"unit":{"type":"string","description":"Temperature unit.","enum":["celsius","fahrenheit"]}},"required":["city"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"What's the weather like?"}]},{"id":"none-write-text","category":"abstain","description":"Draft text in the reply; nothing to send yet.","tools":[{"type":"function","function":{"name":"send_slack_message","description":"Post a message to a Slack channel or reply in a thread.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #, e.g. #eng.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"thread_ts":{"type":"string","description":"Reply in this thread."}},"required":["channel","text"],"additionalProperties":false}}},{"type":"function","function":{"name":"schedule_slack_message","description":"Schedule a Slack message to post later.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"post_at":{"type":"string","description":"When to post, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"}},"required":["channel","text","post_at"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_email","description":"Send an email.","parameters":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"},"description":"Recipient addresses.","minItems":1},"subject":{"type":"string","description":"Subject line.","minLength":1},"body":{"type":"string","description":"Plain-text body."},"cc":{"type":"array","items":{"type":"string"},"description":"CC addresses."}},"required":["to","subject","body"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Event title.","minLength":1},"start":{"type":"string","description":"Start, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"end":{"type":"string","description":"End, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"attendees":{"type":"array","items":{"type":"string"},"description":"Attendee email addresses."}},"required":["title","start","end"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Draft a short Slack message announcing the new release. Don't send it, I'll review first."}]},{"id":"none-capability-question","category":"abstain","description":"A question about the agent's tools, answered in text.","tools":[{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Can you push to the remote?"}]},{"id":"par-two-files","category":"parallel","description":"Two independent reads in one response.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"read_file","args":[{"path":"path","op":"eq","value":"src/cart.ts"}]},{"name":"read_file","args":[{"path":"path","op":"eq","value":"src/checkout.ts"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Open both src/cart.ts and src/checkout.ts so we can compare them."}]},{"id":"par-three-weather","category":"parallel","description":"The same tool, three arguments.","tools":[{"type":"function","function":{"name":"get_weather","description":"Current weather for a city.","parameters":{"type":"object","properties":{"city":{"type":"string","description":"City name."},"unit":{"type":"string","description":"Temperature unit.","enum":["celsius","fahrenheit"]}},"required":["city"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"get_weather","args":[{"path":"city","op":"contains","value":"london"},{"path":"unit","op":"eq","value":"celsius"}]},{"name":"get_weather","args":[{"path":"city","op":"contains","value":"tokyo"},{"path":"unit","op":"eq","value":"celsius"}]},{"name":"get_weather","args":[{"path":"city","op":"contains","value":"lagos"},{"path":"unit","op":"eq","value":"celsius"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Weather in London, Tokyo and Lagos, in celsius."}]},{"id":"par-status-log","category":"parallel","description":"Two different git reads.","tools":[{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"git_status","args":[]},{"name":"git_log","args":[{"path":"limit","op":"eq","value":3}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Show me git status and the last 3 commits."}]},{"id":"par-slack-two-channels","category":"parallel","description":"One message to two channels.","tools":[{"type":"function","function":{"name":"send_slack_message","description":"Post a message to a Slack channel or reply in a thread.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #, e.g. #eng.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"thread_ts":{"type":"string","description":"Reply in this thread."}},"required":["channel","text"],"additionalProperties":false}}},{"type":"function","function":{"name":"schedule_slack_message","description":"Schedule a Slack message to post later.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"post_at":{"type":"string","description":"When to post, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"}},"required":["channel","text","post_at"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_email","description":"Send an email.","parameters":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"},"description":"Recipient addresses.","minItems":1},"subject":{"type":"string","description":"Subject line.","minLength":1},"body":{"type":"string","description":"Plain-text body."},"cc":{"type":"array","items":{"type":"string"},"description":"CC addresses."}},"required":["to","subject","body"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Event title.","minLength":1},"start":{"type":"string","description":"Start, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"end":{"type":"string","description":"End, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"attendees":{"type":"array","items":{"type":"string"},"description":"Attendee email addresses."}},"required":["title","start","end"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"send_slack_message","args":[{"path":"channel","op":"eq","value":"#eng"},{"path":"text","op":"contains","value":"maintenance"}]},{"name":"send_slack_message","args":[{"path":"channel","op":"eq","value":"#support"},{"path":"text","op":"contains","value":"maintenance"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Post 'Maintenance at 22:00 UTC' to both #eng and #support."}]},{"id":"par-search-two-terms","category":"parallel","description":"Two independent searches.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"search_code","args":[{"path":"query","op":"contains","value":"getUser"}]},{"name":"search_code","args":[{"path":"query","op":"contains","value":"getAccount"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Search the code for 'getUser' and, separately, for 'getAccount'."}]},{"id":"par-tables","category":"parallel","description":"Two tables at once.","tools":[{"type":"function","function":{"name":"query_table","description":"Read rows from a table in the team's workspace database.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters, e.g. {\"status\": \"open\"}."},"columns":{"type":"array","items":{"type":"string"},"description":"Columns to return. All when omitted."},"order_by":{"type":"string","description":"Column to sort by; prefix with - for descending."},"limit":{"type":"integer","description":"Maximum rows.","minimum":1,"maximum":500}},"required":["table"],"additionalProperties":false}}},{"type":"function","function":{"name":"update_table_rows","description":"Update rows matching a filter.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters selecting the rows."},"values":{"type":"object","description":"Columns to set."}},"required":["table","filter","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"add_table_row","description":"Insert one row.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"values":{"type":"object","description":"Column values."}},"required":["table","values"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"query_table","args":[{"path":"table","op":"eq","value":"incidents"},{"path":"filter","op":"subset","value":{"status":"open"}}]},{"name":"query_table","args":[{"path":"table","op":"eq","value":"tasks"},{"path":"filter","op":"subset","value":{"status":"open"}}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Pull the open incidents and the open tasks."}]},{"id":"par-currency-two","category":"parallel","description":"Two conversions.","tools":[{"type":"function","function":{"name":"convert_currency","description":"Convert an amount between currencies at today's rate.","parameters":{"type":"object","properties":{"amount":{"type":"number","description":"Amount to convert.","minimum":0},"from":{"type":"string","description":"ISO 4217 code.","pattern":"^[A-Z]{3}$"},"to":{"type":"string","description":"ISO 4217 code.","pattern":"^[A-Z]{3}$"}},"required":["amount","from","to"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"convert_currency","args":[{"path":"amount","op":"eq","value":100},{"path":"from","op":"eq","value":"USD"},{"path":"to","op":"eq","value":"EUR"}]},{"name":"convert_currency","args":[{"path":"amount","op":"eq","value":100},{"path":"from","op":"eq","value":"USD"},{"path":"to","op":"eq","value":"JPY"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Convert 100 USD to EUR and 100 USD to JPY."}]},{"id":"par-fetch-two","category":"parallel","description":"Two URLs.","tools":[{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"fetch_url","args":[{"path":"url","op":"eq","value":"https://acme.dev/pricing"}]},{"name":"fetch_url","args":[{"path":"url","op":"eq","value":"https://acme.dev/terms"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Fetch https://acme.dev/pricing and https://acme.dev/terms."}]},{"id":"par-mixed-tools","category":"parallel","description":"Different tools, one response.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"create_issue","description":"Open an issue in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Issue title.","minLength":1},"body":{"type":"string","description":"Issue body, Markdown."},"labels":{"type":"array","items":{"type":"string"},"description":"Labels to apply."}},"required":["repo","title"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_pull_request","description":"Open a pull request in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Pull request title.","minLength":1},"head":{"type":"string","description":"Branch with the changes."},"base":{"type":"string","description":"Branch to merge into."},"body":{"type":"string","description":"Description, Markdown."},"draft":{"type":"boolean","description":"Open as a draft."}},"required":["repo","title","head","base"],"additionalProperties":false}}},{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_slack_message","description":"Post a message to a Slack channel or reply in a thread.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #, e.g. #eng.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"thread_ts":{"type":"string","description":"Reply in this thread."}},"required":["channel","text"],"additionalProperties":false}}},{"type":"function","function":{"name":"schedule_slack_message","description":"Schedule a Slack message to post later.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"post_at":{"type":"string","description":"When to post, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"}},"required":["channel","text","post_at"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_email","description":"Send an email.","parameters":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"},"description":"Recipient addresses.","minItems":1},"subject":{"type":"string","description":"Subject line.","minLength":1},"body":{"type":"string","description":"Plain-text body."},"cc":{"type":"array","items":{"type":"string"},"description":"CC addresses."}},"required":["to","subject","body"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Event title.","minLength":1},"start":{"type":"string","description":"Start, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"end":{"type":"string","description":"End, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"attendees":{"type":"array","items":{"type":"string"},"description":"Attendee email addresses."}},"required":["title","start","end"],"additionalProperties":false}}},{"type":"function","function":{"name":"query_table","description":"Read rows from a table in the team's workspace database.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters, e.g. {\"status\": \"open\"}."},"columns":{"type":"array","items":{"type":"string"},"description":"Columns to return. All when omitted."},"order_by":{"type":"string","description":"Column to sort by; prefix with - for descending."},"limit":{"type":"integer","description":"Maximum rows.","minimum":1,"maximum":500}},"required":["table"],"additionalProperties":false}}},{"type":"function","function":{"name":"update_table_rows","description":"Update rows matching a filter.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters selecting the rows."},"values":{"type":"object","description":"Columns to set."}},"required":["table","filter","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"add_table_row","description":"Insert one row.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"values":{"type":"object","description":"Column values."}},"required":["table","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"get_weather","description":"Current weather for a city.","parameters":{"type":"object","properties":{"city":{"type":"string","description":"City name."},"unit":{"type":"string","description":"Temperature unit.","enum":["celsius","fahrenheit"]}},"required":["city"],"additionalProperties":false}}},{"type":"function","function":{"name":"convert_currency","description":"Convert an amount between currencies at today's rate.","parameters":{"type":"object","properties":{"amount":{"type":"number","description":"Amount to convert.","minimum":0},"from":{"type":"string","description":"ISO 4217 code.","pattern":"^[A-Z]{3}$"},"to":{"type":"string","description":"ISO 4217 code.","pattern":"^[A-Z]{3}$"}},"required":["amount","from","to"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"read_file","args":[{"path":"path","op":"eq","value":"CHANGELOG.md"}]},{"name":"get_weather","args":[{"path":"city","op":"contains","value":"berlin"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Read CHANGELOG.md and check the weather in Berlin."}]},{"id":"par-email-and-event","category":"parallel","description":"Notify and schedule together.","tools":[{"type":"function","function":{"name":"send_slack_message","description":"Post a message to a Slack channel or reply in a thread.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #, e.g. #eng.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"thread_ts":{"type":"string","description":"Reply in this thread."}},"required":["channel","text"],"additionalProperties":false}}},{"type":"function","function":{"name":"schedule_slack_message","description":"Schedule a Slack message to post later.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"post_at":{"type":"string","description":"When to post, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"}},"required":["channel","text","post_at"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_email","description":"Send an email.","parameters":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"},"description":"Recipient addresses.","minItems":1},"subject":{"type":"string","description":"Subject line.","minLength":1},"body":{"type":"string","description":"Plain-text body."},"cc":{"type":"array","items":{"type":"string"},"description":"CC addresses."}},"required":["to","subject","body"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Event title.","minLength":1},"start":{"type":"string","description":"Start, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"end":{"type":"string","description":"End, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"attendees":{"type":"array","items":{"type":"string"},"description":"Attendee email addresses."}},"required":["title","start","end"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"send_email","args":[{"path":"to","op":"subset","value":["sam@acme.dev"]},{"path":"subject","op":"contains","value":"kickoff"}]},{"name":"create_calendar_event","args":[{"path":"title","op":"contains","value":"kickoff"},{"path":"start","op":"regex","value":"^2026-10-23T16:00"},{"path":"end","op":"regex","value":"^2026-10-23T17:00"},{"path":"attendees","op":"subset","value":["sam@acme.dev"]}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Email sam@acme.dev subject 'Kickoff' saying it's booked, and create a 'Kickoff' event on 2026-10-23 from 16:00 to 17:00 UTC with sam@acme.dev."}]},{"id":"par-list-two-dirs","category":"parallel","description":"Two directories.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"list_directory","args":[{"path":"path","op":"regex","value":"^(\\./)?src/?$"}]},{"name":"list_directory","args":[{"path":"path","op":"regex","value":"^(\\./)?tests/?$"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"List both src/ and tests/."}]},{"id":"par-two-issues","category":"parallel","description":"Two issues from one request.","tools":[{"type":"function","function":{"name":"create_issue","description":"Open an issue in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Issue title.","minLength":1},"body":{"type":"string","description":"Issue body, Markdown."},"labels":{"type":"array","items":{"type":"string"},"description":"Labels to apply."}},"required":["repo","title"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_pull_request","description":"Open a pull request in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Pull request title.","minLength":1},"head":{"type":"string","description":"Branch with the changes."},"base":{"type":"string","description":"Branch to merge into."},"body":{"type":"string","description":"Description, Markdown."},"draft":{"type":"boolean","description":"Open as a draft."}},"required":["repo","title","head","base"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"create_issue","args":[{"path":"repo","op":"eq","value":"acme/storefront"},{"path":"title","op":"contains","value":"search is slow"}]},{"name":"create_issue","args":[{"path":"repo","op":"eq","value":"acme/storefront"},{"path":"title","op":"contains","value":"footer links"}]}]}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"In acme/storefront, file two issues: 'Search is slow' and 'Footer links 404'."}]},{"id":"chain-search-read","category":"multi_step","description":"Find, then read what was found.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"search_code","args":[{"path":"query","op":"contains","value":"calculateTax"}]}]},"results":[{"matches":[{"path":"src/lib/tax.ts","line":12,"text":"export function calculateTax(amount: number) {"}]}]},{"expect":{"kind":"call","calls":[{"name":"read_file","args":[{"path":"path","op":"eq","value":"src/lib/tax.ts"}]}]},"results":[{"content":"export function calculateTax(amount: number) {\n  return amount * 0.08;\n}\n"}]},{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Find where calculateTax is defined and show me that file."}]},{"id":"chain-search-edit","category":"multi_step","description":"Find a value, then change it where it is.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"search_code","args":[{"path":"query","op":"regex","value":"0\\.08|tax"}]}]},"results":[{"matches":[{"path":"src/lib/tax.ts","line":2,"text":"  return amount * 0.08;"}]}]},{"expect":{"kind":"call","calls":[{"name":"edit_file","args":[{"path":"path","op":"eq","value":"src/lib/tax.ts"},{"path":"old_string","op":"contains","value":"0.08"},{"path":"new_string","op":"contains","value":"0.0825"}]}]},"results":[{"ok":true}]},{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Our tax rate constant should be 0.0825, not 0.08. Find it and fix it."}]},{"id":"chain-status-diff-commit","category":"multi_step","description":"Look, then commit with a message drawn from the diff.","tools":[{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"git_status","args":[]}]},"results":[{"modified":["src/cart.ts"],"staged":[],"untracked":[]}]},{"expect":{"kind":"call","calls":[{"name":"git_diff","args":[{"path":"path","op":"oneOf","value":["src/cart.ts",null]}]}]},"results":[{"diff":"--- a/src/cart.ts\n+++ b/src/cart.ts\n-  return Math.round(total);\n+  return Math.round(total * 100) / 100;"}]},{"expect":{"kind":"call","calls":[{"name":"git_commit","args":[{"path":"message","op":"regex","value":"round|cent|total"},{"path":"files","op":"oneOf","value":[["src/cart.ts"],null]}]}]},"results":[{"sha":"a1b2c3d"}]},{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"See what I've changed and commit it with a sensible message."}]},{"id":"chain-query-notify","category":"multi_step","description":"Read a table, then message the result.","tools":[{"type":"function","function":{"name":"query_table","description":"Read rows from a table in the team's workspace database.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters, e.g. {\"status\": \"open\"}."},"columns":{"type":"array","items":{"type":"string"},"description":"Columns to return. All when omitted."},"order_by":{"type":"string","description":"Column to sort by; prefix with - for descending."},"limit":{"type":"integer","description":"Maximum rows.","minimum":1,"maximum":500}},"required":["table"],"additionalProperties":false}}},{"type":"function","function":{"name":"update_table_rows","description":"Update rows matching a filter.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters selecting the rows."},"values":{"type":"object","description":"Columns to set."}},"required":["table","filter","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"add_table_row","description":"Insert one row.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"values":{"type":"object","description":"Column values."}},"required":["table","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_slack_message","description":"Post a message to a Slack channel or reply in a thread.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #, e.g. #eng.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"thread_ts":{"type":"string","description":"Reply in this thread."}},"required":["channel","text"],"additionalProperties":false}}},{"type":"function","function":{"name":"schedule_slack_message","description":"Schedule a Slack message to post later.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"post_at":{"type":"string","description":"When to post, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"}},"required":["channel","text","post_at"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_email","description":"Send an email.","parameters":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"},"description":"Recipient addresses.","minItems":1},"subject":{"type":"string","description":"Subject line.","minLength":1},"body":{"type":"string","description":"Plain-text body."},"cc":{"type":"array","items":{"type":"string"},"description":"CC addresses."}},"required":["to","subject","body"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Event title.","minLength":1},"start":{"type":"string","description":"Start, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"end":{"type":"string","description":"End, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"attendees":{"type":"array","items":{"type":"string"},"description":"Attendee email addresses."}},"required":["title","start","end"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"query_table","args":[{"path":"table","op":"eq","value":"incidents"},{"path":"filter","op":"subset","value":{"status":"open"}}]}]},"results":[{"rows":[{"id":"INC-7","title":"Checkout 500s","status":"open"},{"id":"INC-9","title":"Slow search","status":"open"}]}]},{"expect":{"kind":"call","calls":[{"name":"send_slack_message","args":[{"path":"channel","op":"eq","value":"#ops"},{"path":"text","op":"regex","value":"\\b2\\b|two"}]}]},"results":[{"ok":true,"ts":"1729500000.000100"}]},{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"How many incidents are open? Post the count to #ops."}]},{"id":"chain-search-fetch","category":"multi_step","description":"Search the web, then read the top result.","tools":[{"type":"function","function":{"name":"web_search","description":"Search the public web.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search query.","minLength":1},"max_results":{"type":"integer","description":"How many results.","minimum":1,"maximum":20}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"fetch_url","description":"Fetch a public web page by URL and return its text.","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Absolute http(s) URL.","pattern":"^https?://"}},"required":["url"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"web_search","args":[{"path":"query","op":"contains","value":"postgres"}]}]},"results":[{"results":[{"title":"PostgreSQL 17 Release Notes","url":"https://www.postgresql.org/docs/17/release-17.html"}]}]},{"expect":{"kind":"call","calls":[{"name":"fetch_url","args":[{"path":"url","op":"eq","value":"https://www.postgresql.org/docs/17/release-17.html"}]}]},"results":[{"text":"PostgreSQL 17 adds incremental backup support via pg_basebackup --incremental."}]},{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Find the Postgres 17 release notes and tell me the headline feature."}]},{"id":"chain-list-read","category":"multi_step","description":"List, then read the one file that matters.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"list_directory","args":[{"path":"path","op":"regex","value":"^(\\./)?db/migrations/?$"}]}]},"results":[{"entries":["001_users.sql","002_orders.sql","003_indexes.sql"]}]},{"expect":{"kind":"call","calls":[{"name":"read_file","args":[{"path":"path","op":"contains","value":"002_orders.sql"}]}]},"results":[{"content":"create table orders (id serial primary key, total numeric);"}]},{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"There's a migration in db/migrations that adds the orders table. Show it to me."}]},{"id":"chain-test-fix","category":"multi_step","description":"Run tests, read the failing file.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}},{"type":"function","function":{"name":"run_command","description":"Run a shell command in the workspace and return its output.","parameters":{"type":"object","properties":{"command":{"type":"string","description":"The command line.","minLength":1},"cwd":{"type":"string","description":"Working directory relative to the workspace root."},"timeout_seconds":{"type":"integer","description":"Kill the command after this many seconds.","minimum":1,"maximum":600}},"required":["command"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"run_command","args":[{"path":"command","op":"regex","value":"test|vitest"}]}]},"results":[{"exit_code":1,"output":"FAIL src/cart.test.ts > rounds to cents\n  expected 10.01 to be 10"}]},{"expect":{"kind":"call","calls":[{"name":"read_file","args":[{"path":"path","op":"regex","value":"src/cart(\\.test)?\\.ts"}]}]},"results":[{"content":"test('rounds to cents', () => expect(total([10.005])).toBe(10));"}]},{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Run the tests and look at whichever file is failing."}]},{"id":"chain-branch-commit","category":"multi_step","description":"Branch first, then commit.","tools":[{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"git_create_branch","args":[{"path":"name","op":"eq","value":"chore/bump-deps"}]}]},"results":[{"ok":true,"branch":"chore/bump-deps"}]},{"expect":{"kind":"call","calls":[{"name":"git_commit","args":[{"path":"message","op":"eq","value":"Bump dependencies"},{"path":"files","op":"subset","value":["package.json","pnpm-lock.yaml"]}]}]},"results":[{"sha":"d4e5f6a"}]},{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Create a branch called chore/bump-deps and commit package.json and pnpm-lock.yaml on it with the message 'Bump dependencies'."}]},{"id":"chain-lookup-email","category":"multi_step","description":"Look a person up, then email them.","tools":[{"type":"function","function":{"name":"query_table","description":"Read rows from a table in the team's workspace database.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters, e.g. {\"status\": \"open\"}."},"columns":{"type":"array","items":{"type":"string"},"description":"Columns to return. All when omitted."},"order_by":{"type":"string","description":"Column to sort by; prefix with - for descending."},"limit":{"type":"integer","description":"Maximum rows.","minimum":1,"maximum":500}},"required":["table"],"additionalProperties":false}}},{"type":"function","function":{"name":"update_table_rows","description":"Update rows matching a filter.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"filter":{"type":"object","description":"Column equality filters selecting the rows."},"values":{"type":"object","description":"Columns to set."}},"required":["table","filter","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"add_table_row","description":"Insert one row.","parameters":{"type":"object","properties":{"table":{"type":"string","description":"Table name.","enum":["customers","invoices","deploys","incidents","tasks"]},"values":{"type":"object","description":"Column values."}},"required":["table","values"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_slack_message","description":"Post a message to a Slack channel or reply in a thread.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #, e.g. #eng.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"thread_ts":{"type":"string","description":"Reply in this thread."}},"required":["channel","text"],"additionalProperties":false}}},{"type":"function","function":{"name":"schedule_slack_message","description":"Schedule a Slack message to post later.","parameters":{"type":"object","properties":{"channel":{"type":"string","description":"Channel name with #.","pattern":"^#[a-z0-9_-]+$"},"text":{"type":"string","description":"Message text.","minLength":1},"post_at":{"type":"string","description":"When to post, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"}},"required":["channel","text","post_at"],"additionalProperties":false}}},{"type":"function","function":{"name":"send_email","description":"Send an email.","parameters":{"type":"object","properties":{"to":{"type":"array","items":{"type":"string"},"description":"Recipient addresses.","minItems":1},"subject":{"type":"string","description":"Subject line.","minLength":1},"body":{"type":"string","description":"Plain-text body."},"cc":{"type":"array","items":{"type":"string"},"description":"CC addresses."}},"required":["to","subject","body"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_calendar_event","description":"Create a calendar event.","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Event title.","minLength":1},"start":{"type":"string","description":"Start, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"end":{"type":"string","description":"End, ISO 8601 date-time in UTC.","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}"},"attendees":{"type":"array","items":{"type":"string"},"description":"Attendee email addresses."}},"required":["title","start","end"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"query_table","args":[{"path":"table","op":"eq","value":"customers"},{"path":"filter","op":"present"}]}]},"results":[{"rows":[{"name":"Northwind","owner_email":"kim@northwind.example"}]}]},{"expect":{"kind":"call","calls":[{"name":"send_email","args":[{"path":"to","op":"subset","value":["kim@northwind.example"]},{"path":"subject","op":"contains","value":"invoice ready"}]}]},"results":[{"ok":true}]},{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Email the account owner of customer Northwind that their invoice is ready. Subject: Invoice ready."}]},{"id":"chain-log-issue","category":"multi_step","description":"Read history, then file an issue citing it.","tools":[{"type":"function","function":{"name":"git_status","description":"Show which files are modified, staged or untracked.","parameters":{"type":"object","properties":{},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_diff","description":"Show the line-by-line changes in the working tree, or staged changes.","parameters":{"type":"object","properties":{"staged":{"type":"boolean","description":"Show staged changes instead of unstaged."},"path":{"type":"string","description":"Limit to one file or directory."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"git_commit","description":"Commit staged changes. With files, stages those files first.","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The commit message.","minLength":1},"files":{"type":"array","items":{"type":"string"},"description":"Files to stage before committing."}},"required":["message"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_create_branch","description":"Create a branch and switch to it.","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Branch name.","pattern":"^[A-Za-z0-9._/-]+$"},"from":{"type":"string","description":"Branch or commit to start from. Defaults to the current HEAD."}},"required":["name"],"additionalProperties":false}}},{"type":"function","function":{"name":"git_log","description":"Show recent commits.","parameters":{"type":"object","properties":{"limit":{"type":"integer","description":"How many commits.","minimum":1,"maximum":100},"path":{"type":"string","description":"Only commits touching this path."},"author":{"type":"string","description":"Only commits by this author."}},"required":[],"additionalProperties":false}}},{"type":"function","function":{"name":"create_issue","description":"Open an issue in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Issue title.","minLength":1},"body":{"type":"string","description":"Issue body, Markdown."},"labels":{"type":"array","items":{"type":"string"},"description":"Labels to apply."}},"required":["repo","title"],"additionalProperties":false}}},{"type":"function","function":{"name":"create_pull_request","description":"Open a pull request in a GitHub repository.","parameters":{"type":"object","properties":{"repo":{"type":"string","description":"owner/name","pattern":"^[\\w.-]+/[\\w.-]+$"},"title":{"type":"string","description":"Pull request title.","minLength":1},"head":{"type":"string","description":"Branch with the changes."},"base":{"type":"string","description":"Branch to merge into."},"body":{"type":"string","description":"Description, Markdown."},"draft":{"type":"boolean","description":"Open as a draft."}},"required":["repo","title","head","base"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"git_log","args":[{"path":"path","op":"contains","value":"src/search.ts"},{"path":"limit","op":"oneOf","value":[1,null,5,10]}]}]},"results":[{"commits":[{"sha":"9f8e7d6","message":"Switch search to fuzzy matching","author":"jo"}]}]},{"expect":{"kind":"call","calls":[{"name":"create_issue","args":[{"path":"repo","op":"eq","value":"acme/storefront"},{"path":"body","op":"contains","value":"9f8e7d6"}]}]},"results":[{"number":214}]},{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Find the last commit that touched src/search.ts and open an issue in acme/storefront saying it may have slowed search, mentioning the commit sha."}]},{"id":"chain-read-then-stop","category":"multi_step","description":"Stop after the result answers the question.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"read_file","args":[{"path":"path","op":"regex","value":"tsconfig(\\.json)?$"}]}]},"results":[{"content":"{ \"compilerOptions\": { \"strict\": true } }"}]},{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Is TypeScript strict mode on in this repo?"}]},{"id":"chain-parallel-then-write","category":"multi_step","description":"Two reads in parallel, then one write from both.","tools":[{"type":"function","function":{"name":"read_file","description":"Read a text file from the workspace. Optionally a line range (1-based, inclusive).","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"start_line":{"type":"integer","description":"First line to read.","minimum":1},"end_line":{"type":"integer","description":"Last line to read.","minimum":1}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"write_file","description":"Create a file, or replace a file's whole contents.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"content":{"type":"string","description":"The complete new contents."}},"required":["path","content"],"additionalProperties":false}}},{"type":"function","function":{"name":"edit_file","description":"Replace an exact string in a file. Fails if old_string is not found exactly once, unless replace_all is true.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."},"old_string":{"type":"string","description":"Exact text to replace.","minLength":1},"new_string":{"type":"string","description":"Replacement text."},"replace_all":{"type":"boolean","description":"Replace every occurrence."}},"required":["path","old_string","new_string"],"additionalProperties":false}}},{"type":"function","function":{"name":"delete_file","description":"Delete a file from the workspace. Cannot be undone.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Path relative to the workspace root."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"list_directory","description":"List the entries of a directory.","parameters":{"type":"object","properties":{"path":{"type":"string","description":"Directory relative to the workspace root."},"recursive":{"type":"boolean","description":"Include subdirectories."}},"required":["path"],"additionalProperties":false}}},{"type":"function","function":{"name":"search_code","description":"Search file contents in the workspace for a string or regular expression.","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Text or regex to search for.","minLength":1},"path":{"type":"string","description":"Directory to limit the search to."},"file_glob":{"type":"string","description":"Only search files matching this glob, e.g. *.ts."},"case_sensitive":{"type":"boolean","description":"Match case exactly."}},"required":["query"],"additionalProperties":false}}}],"steps":[{"expect":{"kind":"call","calls":[{"name":"read_file","args":[{"path":"path","op":"eq","value":".env.example"}]},{"name":"read_file","args":[{"path":"path","op":"eq","value":".env.production"}]}]},"results":[{"content":"API_URL=\nLOG_LEVEL=\n"},{"content":"API_URL=https://api.acme.dev\nLOG_LEVEL=warn\nSECRET=xyz\n"}]},{"expect":{"kind":"call","calls":[{"name":"write_file","args":[{"path":"path","op":"eq","value":".env.staging"},{"path":"content","op":"contains","value":"API_URL=https://api.acme.dev"},{"path":"content","op":"contains","value":"LOG_LEVEL=warn"}]}]},"results":[{"ok":true}]},{"expect":{"kind":"none"}}],"messages":[{"role":"system","content":"You are a coding and operations agent working in the user's workspace. The workspace root is the repository acme/storefront, checked out on branch main. Today is Wednesday 2026-10-21. Times are UTC unless the user says otherwise. Use a tool when one is needed to do what the user asks. When you can answer directly, or you need information only the user can give, reply in text without calling a tool. When several independent calls are needed, make them in the same response."},{"role":"user","content":"Read .env.example and .env.production, then write .env.staging with the keys from .env.example and the values from .env.production."}]}]}