Files
ironclaw/crates
firat.sertgoz 853b6a531d fix: restore issue-2402 v2 gate resume and action alias consistency (#2458)
* fix(engine): normalize granted action aliases across lease checks

Keep lease preflight, policy, and consumption consistent for hyphen/underscore action aliases so installed tools do not fail mid-turn after being allowed.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

* fix(web): preserve pending gate call ids on auth resume

Resolve or synthesize the original action call id when resuming auth or external callback gates so resumed ActionResult messages remain correctly paired with the waiting assistant call.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

* test(engine): cover install resume followed by aliased tool use

Add a higher-fidelity v2 gate integration regression that proves an install auth resume can flow directly into an aliased follow-up tool call and still complete the thread instead of stalling.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

* fix(engine): apply policy checks to aliased action names

Resolve structured preflight action definitions with the same hyphen/underscore alias semantics as lease matching so aliased calls cannot bypass approval or deny policies.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>

* style: cargo fmt

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(bridge): scan internal_messages in legacy call_id fallback

The `resolved_call_id_for_pending_action` legacy fallback scanned only
`thread.messages`, but in production the orchestrator writes ActionResult
and assistant messages to `thread.internal_messages` via
`sync_runtime_state`. This meant the `resolved_ids` set was always empty
and the fallback never found a match, silently falling through to a
synthetic id.

Scan both `messages` and `internal_messages` so the legacy path works
correctly for orchestrator-driven threads.

Addresses review feedback from @standardtoaster on #2458.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: format bridge router

---------

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Co-authored-by: Zaki <zaki@iqlusion.io>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 15:11:12 +03:00
..