feat: add new require approvals tool rule (#4280)
* feat: add new require approvals tool rule * add fe changes * openapi sync 2
This commit is contained in:
@@ -39,6 +39,7 @@ from letta.schemas.tool_rule import (
|
||||
MaxCountPerStepToolRule,
|
||||
ParentToolRule,
|
||||
RequiredBeforeExitToolRule,
|
||||
RequiresApprovalToolRule,
|
||||
TerminalToolRule,
|
||||
ToolRule,
|
||||
)
|
||||
@@ -139,6 +140,8 @@ def deserialize_tool_rule(
|
||||
return ParentToolRule(**data)
|
||||
elif rule_type == ToolRuleType.required_before_exit:
|
||||
return RequiredBeforeExitToolRule(**data)
|
||||
elif rule_type == ToolRuleType.requires_approval:
|
||||
return RequiresApprovalToolRule(**data)
|
||||
raise ValueError(f"Unknown ToolRule type: {rule_type}")
|
||||
|
||||
|
||||
|
||||
@@ -94,6 +94,7 @@ class ToolRuleType(str, Enum):
|
||||
max_count_per_step = "max_count_per_step"
|
||||
parent_last_tool = "parent_last_tool"
|
||||
required_before_exit = "required_before_exit" # tool must be called before loop can exit
|
||||
requires_approval = "requires_approval"
|
||||
|
||||
|
||||
class FileProcessingStatus(str, Enum):
|
||||
|
||||
@@ -272,6 +272,18 @@ class MaxCountPerStepToolRule(BaseToolRule):
|
||||
return available_tools
|
||||
|
||||
|
||||
class RequiresApprovalToolRule(BaseToolRule):
|
||||
"""
|
||||
Represents a tool rule configuration which requires approval before the tool can be invoked.
|
||||
"""
|
||||
|
||||
type: Literal[ToolRuleType.requires_approval] = ToolRuleType.requires_approval
|
||||
|
||||
def get_valid_tools(self, tool_call_history: List[str], available_tools: Set[str], last_function_response: Optional[str]) -> Set[str]:
|
||||
"""Does not enforce any restrictions on which tools are valid"""
|
||||
return available_tools
|
||||
|
||||
|
||||
ToolRule = Annotated[
|
||||
Union[
|
||||
ChildToolRule,
|
||||
@@ -282,6 +294,7 @@ ToolRule = Annotated[
|
||||
RequiredBeforeExitToolRule,
|
||||
MaxCountPerStepToolRule,
|
||||
ParentToolRule,
|
||||
RequiresApprovalToolRule,
|
||||
],
|
||||
Field(discriminator="type"),
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user