Files
wehub-resource-sync d68f003000
CI / Change detection (push) Has been cancelled
CI / Version drift (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Workflow RLM cache (push) Has been cancelled
CI / Test (macos-latest) (push) Has been cancelled
CI / Test (ubuntu-latest) (push) Has been cancelled
CI / Test (windows-latest) (push) Has been cancelled
CI / npm wrapper smoke (push) Has been cancelled
CI / Mobile runtime smoke (push) Has been cancelled
CI / Workflow lint (push) Has been cancelled
CI / Documentation (push) Has been cancelled
Web Frontend / Lint & Type Check (push) Failing after 1s
Auto-close harvested PRs / close (push) Failing after 1s
cargo-deny / cargo-deny (bans licenses sources) (push) Failing after 1s
Security audit / cargo-audit (push) Failing after 1s
Sync to CNB / sync (push) Failing after 1s
cargo-deny / cargo-deny (advisories) (push) Failing after 3s
Web Frontend / Deploy to Cloudflare (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:08:23 +08:00

70 lines
3.5 KiB
Gherkin

Feature: Tool call lifecycle
Scenario: Happy path lists the current directory through a tool
# This executable slice asserts the public exec stream and mocked LLM border.
# The PTY screen slice should also assert Statusline state and BlueWhale activity:
# running while the tool is executing, stopped or completed when the turn finishes.
Given an offline CodeWhale workspace containing:
| path | kind |
| README.md | file |
| notes.txt | file |
| src | folder |
And the mocked LLM will request the "list_dir" tool with:
| path |
| . |
And the mocked LLM will answer after the tool result:
| content |
| The directory contains README.md, notes.txt, and src/. |
When the user asks "list the current directory"
Then CodeWhale should send the user request to the mocked LLM
And the public tool lifecycle should show a running tool:
| status | marker | tool | input |
| running | [~] | list_dir | . |
And the public tool result should return directory entries:
| entry | kind |
| README.md | file |
| notes.txt | file |
| src | folder |
And CodeWhale should send the tool result back to the mocked LLM
And the public tool lifecycle should show a completed tool:
| status | marker | tool | input |
| completed | | list_dir | . |
And the public output should include "The directory contains README.md, notes.txt, and src/."
Scenario: Unknown tool returns an error result
Given an offline CodeWhale workspace containing:
| path | kind |
| README.md | file |
And the mocked LLM will request the "missing_tool" tool with:
| path |
| . |
And the mocked LLM will answer after the tool result:
| content |
| I could not run the requested missing tool. |
When the user asks "try a missing tool"
Then CodeWhale should send the user request to the mocked LLM
And the public tool lifecycle should show a running tool:
| status | marker | tool | input |
| running | [~] | missing_tool | . |
And the public tool result should report an error for "missing_tool"
And CodeWhale should send the tool error back to the mocked LLM
And the public tool lifecycle should show a failed tool:
| status | marker | tool | input |
| error | [!] | missing_tool | . |
And the public output should include "I could not run the requested missing tool."
Scenario: Malformed tool arguments return an error result
Given an offline CodeWhale workspace containing:
| path | kind |
| README.md | file |
And the mocked LLM will request the "list_dir" tool with malformed arguments "{not-json"
And the mocked LLM will answer after the tool result:
| content |
| I could not parse the tool arguments. |
When the user asks "try malformed tool arguments"
Then CodeWhale should send the user request to the mocked LLM
And the public tool lifecycle should show a running tool with raw input for "list_dir"
And the public tool result should report malformed arguments for "list_dir"
And CodeWhale should send the malformed argument error back to the mocked LLM
And the public tool lifecycle should show a failed tool with raw input for "list_dir"
And the public output should include "I could not parse the tool arguments."