mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-15 08:03:39 +00:00
Fix: Capture error from turn_end event in agent state
Previously, errors in turn_end events (e.g., from OpenRouter Auto Router) were not captured in agent.state.error, making failed requests appear as successful completions. Fixes #6
This commit is contained in:
parent
ed9786e5d6
commit
0ef3370085
3 changed files with 20 additions and 0 deletions
11
packages/agent/CHANGELOG.md
Normal file
11
packages/agent/CHANGELOG.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# Changelog
|
||||
|
||||
## [0.7.6] - Unreleased
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed error message loss when `turn_end` event contains an error. Previously, errors in `turn_end` events (e.g., "Provider returned error" from OpenRouter Auto Router) were not captured in `agent.state.error`, making it appear as if the agent completed successfully. ([#6](https://github.com/badlogic/pi-mono/issues/6))
|
||||
|
||||
## [0.7.5] - 2025-11-13
|
||||
|
||||
Previous releases did not maintain a changelog.
|
||||
|
|
@ -238,6 +238,13 @@ export class Agent {
|
|||
this._state.pendingToolCalls = s;
|
||||
break;
|
||||
}
|
||||
case "turn_end": {
|
||||
// Capture error from turn_end event
|
||||
if (ev.message.role === "assistant" && ev.message.errorMessage) {
|
||||
this._state.error = ev.message.errorMessage;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "agent_end": {
|
||||
this._state.streamMessage = null;
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -144,6 +144,8 @@ async function abortExecution(model: Model<any>) {
|
|||
if (lastMessage.role !== "assistant") throw new Error("Expected assistant message");
|
||||
expect(lastMessage.stopReason).toBe("aborted");
|
||||
expect(lastMessage.errorMessage).toBeDefined();
|
||||
expect(agent.state.error).toBeDefined();
|
||||
expect(agent.state.error).toBe(lastMessage.errorMessage);
|
||||
}
|
||||
|
||||
async function stateUpdates(model: Model<any>) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue