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:
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>) {
|
||||
|
||||
Reference in New Issue
Block a user