Conversation
|
Thanks for narrowing the proposal to typed provider signals. The underlying issue still exists on current main: Problems
Suggested changes
Automated hermes-sweeper review. |
GottZ
left a comment
There was a problem hiding this comment.
This was generated by AI during triage.
Summary
Two PRs address tools wasting iterations after terminal provider billing failures. #20691 detects billing phrases in generic results, while #21253 replaces that broad matching with explicit provider-originated HTTP 402 signals consumed by the runtime.
Related pull requests
- #20691 [closed]
related— (+144/-0) — closed as a rejected precursor, still relevant because #21253 supersedes its approach: its generic result-string matching can halt on logs, fixtures, search snippets, or quoted errors and introduces an always-on stop that bypasses the opt-in hard-stop policy, as documented in the blocking contributor review. - #21253
related— (+484/-5) — keep open with a salvage path, consistent with the hermes-sweeper keep_open review: the typed non-retryable HTTP 402 signal, plain-text false-positive test, and Browserbase retry-before-terminal-classification directly address #20691's defects. The patch must be rebased and ported from removed browser-provider modules and pre-79559214a runtime bodies to both current agent/tool_executor.py result paths and the plugins/browser and plugins/web provider contracts, including failure-envelope handling.
Duplicates
#21253 supersedes #20691 for the same billing-blocker issue, but they are not implementation duplicates: #20691 uses unsafe generic substring matching, whereas #21253 uses typed provider signals.
Suggested consolidation
Keep #21253 open with a salvage path rather than reviving #20691. Building on the automated keep-open verdict, preserve #21253's structured billing signal, false-positive protection, and terminal-only Browserbase classification, but require the author to rebase and move the producer and consumer changes onto the current executor and plugin contracts; #20691 should remain closed as the superseded, contributor-blocked implementation.
Cross-PR triage: Reviewed 2 pull requests and 0 issues in this complex. Each diff was read against this issue; Assessment working set: 38 kB of PR diffs, 4 kB of issue/PR text, 2 kB of discussion (1 comments), 0 verify verdicts. verdicts reflect diff content, not PR titles. Part of an automated triage batch.
• Follow-up to #20691 and the review here:
#20691 (comment)
The previous version tried to halt on billing blockers by matching generic tool-result text like "Payment Required" / "Insufficient credits". That could false-positive on unrelated tool output.
This follow-up moves billing-blocker detection to the layers that actually see the provider response, and only halts on an explicit typed signal emitted from there.
What changed
web_tools.pyto emit that signal only when the backend exception carries an unambiguous HTTP 402.run_agentto halt only on the typed billing-blocker signal instead of substring-matching arbitrary tool output.Behavioral notes
402 Payment Requiredtext no longer triggers a halt.keepAlive/proxieslets session creation succeed, no blocker is emittedTargeted verification