mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-09-06 04:39:14 +00:00
Quiet secret store logs and fix untranslated tool messages (#950)
This commit is contained in:
parent
88bf475847
commit
aca4404351
@ -11032,6 +11032,9 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::SECURITY::PROMPTINJECTIONSOURCEKINDEXTENSIONS:
|
||||
-- File content
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SECURITY::PROMPTINJECTIONSOURCEKINDEXTENSIONS::T3788064862"] = "File content"
|
||||
|
||||
-- The revised assistant plugin asks for tools this AI Studio does not have: '{0}'. Please try again.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T1002777578"] = "The revised assistant plugin asks for tools this AI Studio does not have: '{0}'. Please try again."
|
||||
|
||||
-- The Assistant Builder context could not be loaded.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T108292972"] = "The Assistant Builder context could not be loaded."
|
||||
|
||||
@ -11047,9 +11050,6 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T1
|
||||
-- The revision model did not return a usable answer.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T1411545143"] = "The revision model did not return a usable answer."
|
||||
|
||||
-- The revised assistant plugin asks for tools this AI Studio does not have: \"{0}\". Please try again.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T1427741438"] = "The revised assistant plugin asks for tools this AI Studio does not have: \\\"{0}\\\". Please try again."
|
||||
|
||||
-- Description
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T1725856265"] = "Description"
|
||||
|
||||
@ -11092,9 +11092,6 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T2
|
||||
-- UI Components
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T3053707933"] = "UI Components"
|
||||
|
||||
-- The generated assistant plugin asks for tools this AI Studio does not have: \"{0}\". Please try again.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T3058747041"] = "The generated assistant plugin asks for tools this AI Studio does not have: \\\"{0}\\\". Please try again."
|
||||
|
||||
-- The generated assistant plugin must be a form assistant, not a chat launcher.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T3203271639"] = "The generated assistant plugin must be a form assistant, not a chat launcher."
|
||||
|
||||
@ -11125,6 +11122,9 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T3
|
||||
-- Only locally managed assistant plugins can be revised with AI.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T3633992223"] = "Only locally managed assistant plugins can be revised with AI."
|
||||
|
||||
-- The generated assistant plugin asks for tools this AI Studio does not have: '{0}'. Please try again.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T368041941"] = "The generated assistant plugin asks for tools this AI Studio does not have: '{0}'. Please try again."
|
||||
|
||||
-- The revised assistant plugin must remain locally managed.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T3791030033"] = "The revised assistant plugin must remain locally managed."
|
||||
|
||||
|
||||
@ -11034,6 +11034,9 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::SECURITY::PROMPTINJECTIONSOURCEKINDEXTENSIONS:
|
||||
-- File content
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SECURITY::PROMPTINJECTIONSOURCEKINDEXTENSIONS::T3788064862"] = "Dateiinhalt"
|
||||
|
||||
-- The revised assistant plugin asks for tools this AI Studio does not have: '{0}'. Please try again.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T1002777578"] = "Das überarbeitete Assistenten-Plugin fordert Werkzeuge an, die dieses AI Studio nicht hat: „{0}“. Bitte versuchen Sie es erneut."
|
||||
|
||||
-- The Assistant Builder context could not be loaded.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T108292972"] = "Der Kontext des Assistenten-Builders konnte nicht geladen werden."
|
||||
|
||||
@ -11049,9 +11052,6 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T1
|
||||
-- The revision model did not return a usable answer.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T1411545143"] = "Das Überarbeitungsmodell hat keine brauchbare Antwort zurückgegeben."
|
||||
|
||||
-- The revised assistant plugin asks for tools this AI Studio does not have: \"{0}\". Please try again.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T1427741438"] = "Das überarbeitete Assistenten-Plugin fordert Werkzeuge an, über die dieses AI Studio nicht verfügt: „{0}“. Bitte versuchen Sie es erneut."
|
||||
|
||||
-- Description
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T1725856265"] = "Beschreibung"
|
||||
|
||||
@ -11094,9 +11094,6 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T2
|
||||
-- UI Components
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T3053707933"] = "UI-Komponenten"
|
||||
|
||||
-- The generated assistant plugin asks for tools this AI Studio does not have: \"{0}\". Please try again.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T3058747041"] = "Das generierte Assistenten-Plugin fordert Werkzeuge an, über die dieses AI Studio nicht verfügt: „{0}“. Bitte versuche es erneut."
|
||||
|
||||
-- The generated assistant plugin must be a form assistant, not a chat launcher.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T3203271639"] = "Das generierte Assistenten-Plugin muss ein Formularassistent und darf kein Chat-Schnellstart sein."
|
||||
|
||||
@ -11127,6 +11124,9 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T3
|
||||
-- Only locally managed assistant plugins can be revised with AI.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T3633992223"] = "Nur lokal verwaltete Assistenten-Plugins können mit KI überarbeitet werden."
|
||||
|
||||
-- The generated assistant plugin asks for tools this AI Studio does not have: '{0}'. Please try again.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T368041941"] = "Das generierte Assistenten-Plugin fordert Werkzeuge an, die dieses AI Studio nicht hat: „{0}“. Bitte versuchen Sie es erneut."
|
||||
|
||||
-- The revised assistant plugin must remain locally managed.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T3791030033"] = "Das überarbeitete Assistenten-Plugin muss weiterhin lokal verwaltet werden."
|
||||
|
||||
|
||||
@ -11034,6 +11034,9 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::SECURITY::PROMPTINJECTIONSOURCEKINDEXTENSIONS:
|
||||
-- File content
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SECURITY::PROMPTINJECTIONSOURCEKINDEXTENSIONS::T3788064862"] = "File content"
|
||||
|
||||
-- The revised assistant plugin asks for tools this AI Studio does not have: '{0}'. Please try again.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T1002777578"] = "The revised assistant plugin asks for tools this AI Studio does not have: '{0}'. Please try again."
|
||||
|
||||
-- The Assistant Builder context could not be loaded.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T108292972"] = "The Assistant Builder context could not be loaded."
|
||||
|
||||
@ -11049,9 +11052,6 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T1
|
||||
-- The revision model did not return a usable answer.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T1411545143"] = "The revision model did not return a usable answer."
|
||||
|
||||
-- The revised assistant plugin asks for tools this AI Studio does not have: \"{0}\". Please try again.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T1427741438"] = "The revised assistant plugin asks for tools this AI Studio does not have: \\\"{0}\\\". Please try again."
|
||||
|
||||
-- Description
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T1725856265"] = "Description"
|
||||
|
||||
@ -11094,9 +11094,6 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T2
|
||||
-- UI Components
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T3053707933"] = "UI Components"
|
||||
|
||||
-- The generated assistant plugin asks for tools this AI Studio does not have: \"{0}\". Please try again.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T3058747041"] = "The generated assistant plugin asks for tools this AI Studio does not have: \\\"{0}\\\". Please try again."
|
||||
|
||||
-- The generated assistant plugin must be a form assistant, not a chat launcher.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T3203271639"] = "The generated assistant plugin must be a form assistant, not a chat launcher."
|
||||
|
||||
@ -11127,6 +11124,9 @@ UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T3
|
||||
-- Only locally managed assistant plugins can be revised with AI.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T3633992223"] = "Only locally managed assistant plugins can be revised with AI."
|
||||
|
||||
-- The generated assistant plugin asks for tools this AI Studio does not have: '{0}'. Please try again.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T368041941"] = "The generated assistant plugin asks for tools this AI Studio does not have: '{0}'. Please try again."
|
||||
|
||||
-- The revised assistant plugin must remain locally managed.
|
||||
UI_TEXT_CONTENT["AISTUDIO::TOOLS::SERVICES::ASSISTANTPLUGINGENERATIONSERVICE::T3791030033"] = "The revised assistant plugin must remain locally managed."
|
||||
|
||||
|
||||
@ -116,7 +116,7 @@ public sealed class AssistantPluginGenerationService(ToolRegistry toolRegistry,
|
||||
return InitialFailure(TB("The generated assistant metadata does not match the generated plugin."));
|
||||
|
||||
if (this.FindUnknownToolIds(generatedAssistant) is { Count: > 0 } unknownToolIds)
|
||||
return InitialFailure(string.Format(TB("The generated assistant plugin asks for tools this AI Studio does not have: \"{0}\". Please try again."), string.Join(", ", unknownToolIds)));
|
||||
return InitialFailure(string.Format(TB("The generated assistant plugin asks for tools this AI Studio does not have: '{0}'. Please try again."), string.Join(", ", unknownToolIds)));
|
||||
|
||||
return new(true, fullLua, parsedResponse.Plugin?.Name ?? string.Empty, string.Empty);
|
||||
}
|
||||
@ -235,7 +235,7 @@ public sealed class AssistantPluginGenerationService(ToolRegistry toolRegistry,
|
||||
return RevisionFailure(TB("The revised assistant metadata does not match the revised plugin."));
|
||||
|
||||
if (this.FindUnknownToolIds(revisedAssistant, plugin) is { Count: > 0 } unknownToolIds)
|
||||
return RevisionFailure(string.Format(TB("The revised assistant plugin asks for tools this AI Studio does not have: \"{0}\". Please try again."), string.Join(", ", unknownToolIds)));
|
||||
return RevisionFailure(string.Format(TB("The revised assistant plugin asks for tools this AI Studio does not have: '{0}'. Please try again."), string.Join(", ", unknownToolIds)));
|
||||
|
||||
return new(true, revisedLua, parsedResponse.Plugin?.Name ?? plugin.Name, string.Empty);
|
||||
}
|
||||
|
||||
@ -107,7 +107,9 @@ public sealed partial class RustService
|
||||
var result = await this.http.PostAsJsonAsync("/secrets/get", secretRequest, this.jsonRustSerializerOptions);
|
||||
if (!result.IsSuccessStatusCode)
|
||||
{
|
||||
if(!isTrying)
|
||||
if(isTrying)
|
||||
this.logger!.LogWarning($"Failed to get the secret data for '{secretKey}' due to an API issue (try mode): '{result.StatusCode}'");
|
||||
else
|
||||
this.logger!.LogError($"Failed to get the secret data for '{secretKey}' due to an API issue: '{result.StatusCode}'");
|
||||
return new RequestedSecret(false, new EncryptedText(string.Empty), TB("Failed to get the secret data due to an API issue."));
|
||||
}
|
||||
@ -115,8 +117,17 @@ public sealed partial class RustService
|
||||
var state = await result.Content.ReadFromJsonAsync<RequestedSecret>(this.jsonRustSerializerOptions);
|
||||
if (!state.Success)
|
||||
{
|
||||
//
|
||||
// A missing entry is what try mode is for: the absent keyring entry is how the app
|
||||
// recognizes an unconfigured secret in the first place, so it is not worth a line
|
||||
// in the log. Anything else — a locked keychain, an unavailable secret service, a
|
||||
// dismissed prompt — is a real problem that used to hide on debug level:
|
||||
//
|
||||
if (isTrying)
|
||||
this.logger!.LogDebug($"No secret data configured for '{secretKey}' (try mode): '{state.Issue}'");
|
||||
{
|
||||
if (state.IssueCode is not SecretStoreIssueCode.SECRET_NOT_FOUND)
|
||||
this.logger!.LogWarning($"Failed to get the secret data for '{secretKey}' (try mode): '{state.Issue}'");
|
||||
}
|
||||
else
|
||||
this.logger!.LogError($"Failed to get the secret data for '{secretKey}': '{state.Issue}'");
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
use axum::Json;
|
||||
use keyring_core::{Entry, Error as KeyringError};
|
||||
use log::{error, info, warn};
|
||||
use log::{debug, error, info, warn};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use crate::api_token::APIToken;
|
||||
use crate::encryption::{EncryptedText, ENCRYPTION};
|
||||
@ -165,7 +165,11 @@ pub async fn get_secret(_token: APIToken, request: Json<RequestSecret>) -> Json<
|
||||
let secret = entry.get_password();
|
||||
match secret {
|
||||
Ok(s) => {
|
||||
info!(Source = "Secret Store"; "Secret for '{service}' and user '{user_name}' was retrieved successfully.");
|
||||
// Reading a secret is routine: it happens for every secret field of every tool
|
||||
// the model calls, so an info line per read only crowds the release log. Storing
|
||||
// and deleting a secret stay at info and warn, because those are rare and the
|
||||
// user asked for them:
|
||||
debug!(Source = "Secret Store"; "Secret for '{service}' and user '{user_name}' was retrieved successfully.");
|
||||
|
||||
// Encrypt the secret:
|
||||
let encrypted_secret = match ENCRYPTION.encrypt(s.as_str()) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user