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>
46 lines
1.7 KiB
Rust
46 lines
1.7 KiB
Rust
/// Platform-specific native cookie extraction from webview
|
|
/// This can access HttpOnly cookies that JavaScript cannot
|
|
|
|
use super::webview_auth::Cookie;
|
|
|
|
#[cfg(target_os = "macos")]
|
|
pub async fn extract_cookies_native(
|
|
window_label: &str,
|
|
domain: &str,
|
|
) -> Result<Vec<Cookie>, String> {
|
|
// On macOS, we can use WKWebView's HTTPCookieStore via Objective-C bridge
|
|
// This requires cocoa/objc crates which we don't have yet
|
|
// For now, return an error indicating this needs implementation
|
|
tracing::warn!("Native cookie extraction not yet implemented for macOS");
|
|
Err("Native cookie extraction requires additional dependencies (cocoa, objc)".to_string())
|
|
}
|
|
|
|
#[cfg(target_os = "windows")]
|
|
pub async fn extract_cookies_native(
|
|
window_label: &str,
|
|
domain: &str,
|
|
) -> Result<Vec<Cookie>, String> {
|
|
// On Windows, we can use WebView2's cookie manager
|
|
// This requires windows crates
|
|
tracing::warn!("Native cookie extraction not yet implemented for Windows");
|
|
Err("Native cookie extraction requires additional dependencies (windows crate)".to_string())
|
|
}
|
|
|
|
#[cfg(target_os = "linux")]
|
|
pub async fn extract_cookies_native(
|
|
window_label: &str,
|
|
domain: &str,
|
|
) -> Result<Vec<Cookie>, String> {
|
|
// On Linux with WebKitGTK, we can use the cookie manager
|
|
tracing::warn!("Native cookie extraction not yet implemented for Linux");
|
|
Err("Native cookie extraction requires additional dependencies (webkit2gtk)".to_string())
|
|
}
|
|
|
|
#[cfg(not(any(target_os = "macos", target_os = "windows", target_os = "linux")))]
|
|
pub async fn extract_cookies_native(
|
|
_window_label: &str,
|
|
_domain: &str,
|
|
) -> Result<Vec<Cookie>, String> {
|
|
Err("Native cookie extraction not supported on this platform".to_string())
|
|
}
|