This commit implements two major features: 1. Integration Search as Primary AI Data Source - Confluence, ServiceNow, and Azure DevOps searches execute before AI queries - Search results injected as system context for AI providers - Parallel search execution for performance - Webview-based fetch for HttpOnly cookie support - Persistent browser windows maintain authenticated sessions 2. AI Tool-Calling (Function Calling) - Allows AI to automatically execute functions during conversation - Implemented for OpenAI-compatible providers and Custom REST provider - Created add_ado_comment tool for updating Azure DevOps tickets - Iterative tool-calling loop supports multi-step workflows - Extensible architecture for adding new tools Key Files: - src-tauri/src/ai/tools.rs (NEW) - Tool definitions - src-tauri/src/integrations/*_search.rs (NEW) - Integration search modules - src-tauri/src/integrations/webview_fetch.rs (NEW) - HttpOnly cookie workaround - src-tauri/src/commands/ai.rs - Tool execution and integration search - src-tauri/src/ai/openai.rs - Tool-calling for OpenAI and Custom REST provider - All providers updated with tools parameter support Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
42 lines
1.4 KiB
Rust
42 lines
1.4 KiB
Rust
use crate::ai::{ParameterProperty, Tool, ToolParameters};
|
|
use std::collections::HashMap;
|
|
|
|
/// Get all available tools for AI function calling
|
|
pub fn get_available_tools() -> Vec<Tool> {
|
|
vec![get_add_ado_comment_tool()]
|
|
}
|
|
|
|
/// Tool definition for adding comments to Azure DevOps work items
|
|
fn get_add_ado_comment_tool() -> Tool {
|
|
let mut properties = HashMap::new();
|
|
|
|
properties.insert(
|
|
"work_item_id".to_string(),
|
|
ParameterProperty {
|
|
prop_type: "integer".to_string(),
|
|
description: "The Azure DevOps work item ID (ticket number) to add the comment to"
|
|
.to_string(),
|
|
enum_values: None,
|
|
},
|
|
);
|
|
|
|
properties.insert(
|
|
"comment_text".to_string(),
|
|
ParameterProperty {
|
|
prop_type: "string".to_string(),
|
|
description: "The text content of the comment to add to the work item".to_string(),
|
|
enum_values: None,
|
|
},
|
|
);
|
|
|
|
Tool {
|
|
name: "add_ado_comment".to_string(),
|
|
description: "Add a comment to an Azure DevOps work item (ticket). Use this when the user asks you to add a comment, update a ticket, or provide information to a ticket.".to_string(),
|
|
parameters: ToolParameters {
|
|
param_type: "object".to_string(),
|
|
properties,
|
|
required: vec!["work_item_id".to_string(), "comment_text".to_string()],
|
|
},
|
|
}
|
|
}
|