diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json
index 6bc29af1..a857a72a 100644
--- a/src-tauri/capabilities/default.json
+++ b/src-tauri/capabilities/default.json
@@ -25,6 +25,7 @@
"fs:scope-app-recursive",
"fs:scope-temp-recursive",
"shell:allow-execute",
+ "shell:allow-open",
"http:default"
]
}
diff --git a/src-tauri/src/ai/openai.rs b/src-tauri/src/ai/openai.rs
index 6cb1685c..a5b85eb0 100644
--- a/src-tauri/src/ai/openai.rs
+++ b/src-tauri/src/ai/openai.rs
@@ -132,9 +132,13 @@ impl OpenAiProvider {
let mut body = serde_json::json!({
"model": config.model,
"prompt": prompt,
- "userId": "user@motorolasolutions.com", // Default user ID
});
+ // Add userId if provided (CORE ID email)
+ if let Some(user_id) = &config.user_id {
+ body["userId"] = serde_json::Value::String(user_id.clone());
+ }
+
// Add optional system message
if let Some(system) = system_message {
body["system"] = serde_json::Value::String(system);
@@ -157,6 +161,7 @@ impl OpenAiProvider {
.post(&url)
.header(auth_header, auth_value)
.header("Content-Type", "application/json")
+ .header("X-msi-genai-client", "tftsr-devops-investigation")
.json(&body)
.send()
.await?;
diff --git a/src-tauri/src/state.rs b/src-tauri/src/state.rs
index 24dc838e..4aee86a0 100644
--- a/src-tauri/src/state.rs
+++ b/src-tauri/src/state.rs
@@ -29,6 +29,9 @@ pub struct ProviderConfig {
/// Optional: Session ID for stateful APIs like MSI GenAI
#[serde(skip_serializing_if = "Option::is_none")]
pub session_id: Option,
+ /// Optional: User ID for MSI GenAI (CORE ID email)
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub user_id: Option,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json
index 8d1f6343..4796e749 100644
--- a/src-tauri/tauri.conf.json
+++ b/src-tauri/tauri.conf.json
@@ -1,6 +1,6 @@
{
"productName": "TFTSR",
- "version": "0.2.2",
+ "version": "0.2.6",
"identifier": "com.tftsr.devops",
"build": {
"frontendDist": "../dist",
@@ -10,7 +10,7 @@
},
"app": {
"security": {
- "csp": "default-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: asset: https:; connect-src 'self' http://localhost:11434 http://localhost:8765 https://api.openai.com https://api.anthropic.com https://api.mistral.ai https://generativelanguage.googleapis.com https://auth.atlassian.com https://*.atlassian.net https://login.microsoftonline.com https://dev.azure.com"
+ "csp": "default-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: asset: https:; connect-src 'self' http://localhost:11434 http://localhost:8765 https://api.openai.com https://api.anthropic.com https://api.mistral.ai https://generativelanguage.googleapis.com https://auth.atlassian.com https://*.atlassian.net https://login.microsoftonline.com https://dev.azure.com https://genai-service.stage.commandcentral.com https://genai-service.commandcentral.com"
},
"windows": [
{
diff --git a/src/lib/tauriCommands.ts b/src/lib/tauriCommands.ts
index cbe0e95f..4e29bfbd 100644
--- a/src/lib/tauriCommands.ts
+++ b/src/lib/tauriCommands.ts
@@ -15,6 +15,7 @@ export interface ProviderConfig {
custom_auth_prefix?: string;
api_format?: string;
session_id?: string;
+ user_id?: string;
}
export interface Message {
diff --git a/src/pages/Settings/AIProviders.tsx b/src/pages/Settings/AIProviders.tsx
index 48f5f1a1..dec32ea1 100644
--- a/src/pages/Settings/AIProviders.tsx
+++ b/src/pages/Settings/AIProviders.tsx
@@ -32,6 +32,7 @@ const emptyProvider: ProviderConfig = {
custom_auth_prefix: undefined,
api_format: undefined,
session_id: undefined,
+ user_id: undefined,
};
export default function AIProviders() {
@@ -351,6 +352,21 @@ export default function AIProviders() {
Prefix added before API key (e.g., "Bearer " for OpenAI, empty for MSI GenAI)
+
+ {/* MSI GenAI specific: User ID field */}
+ {form.api_format === "msi_genai" && (
+
+
+
setForm({ ...form, user_id: e.target.value })}
+ placeholder="your.name@motorolasolutions.com"
+ />
+
+ Optional: Your Motorola CORE ID email. If omitted, costs are tracked to API key owner.
+
+
+ )}
>
)}