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>
50 lines
1.1 KiB
Rust
50 lines
1.1 KiB
Rust
pub mod auth;
|
|
pub mod azuredevops;
|
|
pub mod azuredevops_search;
|
|
pub mod callback_server;
|
|
pub mod confluence;
|
|
pub mod confluence_search;
|
|
pub mod servicenow;
|
|
pub mod servicenow_search;
|
|
pub mod webview_auth;
|
|
pub mod webview_fetch;
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct ConnectionResult {
|
|
pub success: bool,
|
|
pub message: String,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct PublishResult {
|
|
pub url: String,
|
|
pub id: String,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct TicketResult {
|
|
pub id: String,
|
|
pub ticket_number: String,
|
|
pub url: String,
|
|
}
|
|
|
|
/// Authentication method for integration services
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
#[serde(tag = "method")]
|
|
pub enum AuthMethod {
|
|
#[serde(rename = "oauth2")]
|
|
OAuth2 {
|
|
access_token: String,
|
|
expires_at: Option<i64>,
|
|
},
|
|
#[serde(rename = "cookies")]
|
|
Cookies { cookies: Vec<webview_auth::Cookie> },
|
|
#[serde(rename = "token")]
|
|
Token {
|
|
token: String,
|
|
token_type: String, // "Bearer", "Basic", etc.
|
|
},
|
|
}
|