Skip to content

Commit 5143e44

Browse files
fix: address approval fallback regression and alias precedence in ApprovalSpec
Agent-Logs-Url: https://github.com/MervinPraison/PraisonAI/sessions/855181c2-fd9f-4360-b772-7f8102042df2 Co-authored-by: MervinPraison <454862+MervinPraison@users.noreply.github.com>
1 parent d80e621 commit 5143e44

4 files changed

Lines changed: 30 additions & 8 deletions

File tree

src/praisonai/praisonai/_approval_spec.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,14 @@ def from_yaml(cls, node: Union[None, bool, str, Dict[str, Any]]) -> "ApprovalSpe
105105

106106
# Handle legacy aliases
107107
backend = node.get("backend") or node.get("backend_name", "console")
108-
approve_all_tools = node.get("approve_all_tools") or node.get("all_tools", False)
109-
timeout_val = node.get("timeout") or node.get("approval_timeout")
108+
if "approve_all_tools" in node:
109+
approve_all_tools = node.get("approve_all_tools")
110+
else:
111+
approve_all_tools = node.get("all_tools", False)
112+
if "timeout" in node:
113+
timeout_val = node.get("timeout")
114+
else:
115+
timeout_val = node.get("approval_timeout")
110116

111117
return cls(
112118
enabled=node.get("enabled", True),
@@ -131,4 +137,4 @@ def to_dict(self) -> Dict[str, Any]:
131137
result["approve_level"] = self.approve_level
132138
if self.guardrails is not None:
133139
result["guardrails"] = self.guardrails
134-
return result
140+
return result

src/praisonai/praisonai/agents_generator.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1219,9 +1219,9 @@ def _run_praisonai(self, config, topic, tools_dict):
12191219
try:
12201220
from praisonaiagents.approval.protocols import ApprovalConfig
12211221
approval_config = ApprovalConfig(
1222-
backend=approval_dict.get('backend', None),
1223-
all_tools=approval_dict.get('approve_all_tools', approval_dict.get('all_tools', False)),
1224-
timeout=approval_dict.get('approval_timeout', approval_dict.get('timeout', 0))
1222+
backend=spec.backend,
1223+
all_tools=spec.approve_all_tools,
1224+
timeout=spec.timeout
12251225
)
12261226
except ImportError:
12271227
# Last resort: disable approval for this agent
@@ -1350,4 +1350,4 @@ def _run_praisonai(self, config, topic, tools_dict):
13501350
if AGENTOPS_AVAILABLE:
13511351
agentops.end_session("Success")
13521352

1353-
return result
1353+
return result

src/praisonai/praisonai/bots/_approval_base.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
from __future__ import annotations
1212

13-
import asyncio
1413
import logging
1514
from typing import Set
1615

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from praisonai._approval_spec import ApprovalSpec
2+
3+
4+
def test_from_yaml_prefers_primary_keys_over_legacy_aliases():
5+
spec = ApprovalSpec.from_yaml(
6+
{
7+
"enabled": True,
8+
"backend": "console",
9+
"approve_all_tools": False,
10+
"all_tools": True,
11+
"timeout": 0,
12+
"approval_timeout": 30,
13+
}
14+
)
15+
16+
assert spec.approve_all_tools is False
17+
assert spec.timeout == 0

0 commit comments

Comments
 (0)