summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/function.rs39
1 files changed, 17 insertions, 22 deletions
diff --git a/src/function.rs b/src/function.rs
index 6a7e81e..e1461f0 100644
--- a/src/function.rs
+++ b/src/function.rs
@@ -157,29 +157,24 @@ impl ToolCall {
pub fn eval(&self, config: &GlobalConfig) -> Result<Value> {
let function_name = self.name.clone();
let (call_name, cmd_name, mut cmd_args) = match &config.read().agent {
- Some(agent) => {
- if let Some(true) = agent.functions().find(&function_name).map(|v| v.agent) {
- (
- format!("{}:{}", agent.name(), function_name),
- agent.name().to_string(),
- vec![function_name],
- )
- } else if config.read().functions.contains(&function_name) {
- (function_name.clone(), function_name, vec![])
- } else {
- bail!(
- "Unexpected call: {} {function_name} {}",
- agent.name(),
- self.arguments
- );
+ Some(agent) => match agent.functions().find(&function_name) {
+ Some(function) => {
+ if function.agent {
+ (
+ format!("{}:{}", agent.name(), function_name),
+ agent.name().to_string(),
+ vec![function_name],
+ )
+ } else {
+ (function_name.clone(), function_name, vec![])
+ }
}
- }
- None => {
- if !config.read().functions.contains(&function_name) {
- bail!("Unexpected call: {function_name} {}", self.arguments);
- }
- (function_name.clone(), function_name, vec![])
- }
+ None => bail!("Unexpected call {function_name} {}", self.arguments),
+ },
+ None => match config.read().functions.contains(&function_name) {
+ true => (function_name.clone(), function_name, vec![]),
+ false => bail!("Unexpected call: {function_name} {}", self.arguments),
+ },
};
let json_data = if self.arguments.is_object() {
self.arguments.clone()