fix(patch): report no-op edits clearly - #25612
Conversation
The _approval_callback method in HermesCLI (cli.py) hardcoded timeout = 60
instead of reading the approvals.timeout config value. This meant the config
setting was silently ignored for CLI interactive approval prompts.
One-line change: replace timeout = 60 with
timeout = int(CLI_CONFIG.get("approvals", {}).get("timeout", 60)).
Other approval paths (tools/approval.py and hermes_cli/callbacks.py) already
read the config correctly.
…g multiple-choice When choices were provided, awaiting_text was set to False, which meant get_pending_for_session() would never match the entry for text-fallback adapters like Mattermost. The user's typed reply was never intercepted, causing the agent to block until timeout. Button-based adapters (e.g. Telegram) resolve via resolve_gateway_clarify directly and don't check awaiting_text, so they're unaffected. Now awaiting_text is always True so both button and text-fallback paths work.
- Add explicit noop/message fields to PatchResult - Report identical replace-mode edits (old_string == new_string) as successful no-ops without writing to disk - Treat V4A pure-context/no-effective-change updates as successful no-ops with guidance message
|
Duplicate of #25564 — identical fix (PatchResult.noop field for no-op edits). Same title and approach. |
|
Thanks for the contribution — closing because of scope creep that obscures the real fix:
If you want to land the no-op reporting piece, please re-submit it as a focused PR touching only the patch tool — drop the cli.py and clarify_gateway.py hunks. Happy to look at the focused version. |
Summary