mirror of
https://github.com/block/goose.git
synced 2026-07-09 16:09:22 +00:00
feat(acp): add delete support for custom apps from Apps UI (#10127)
Signed-off-by: Abhijay Jain <Abhijay007j@gmail.com> Co-authored-by: Douwe M Osinga <douwe@sidewalklabs.com>
This commit is contained in:
parent
e09289cbac
commit
d7f8dc62d8
34 changed files with 2280 additions and 1568 deletions
|
|
@ -157,6 +157,19 @@ pub struct AppsImportResponse {
|
|||
pub message: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, Clone, Serialize, Deserialize, JsonSchema, JsonRpcRequest)]
|
||||
#[request(method = "_goose/unstable/apps/delete", response = AppsDeleteResponse)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct AppsDeleteRequest {
|
||||
pub name: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, Clone, Serialize, Deserialize, JsonSchema, JsonRpcResponse)]
|
||||
pub struct AppsDeleteResponse {
|
||||
pub name: String,
|
||||
pub message: String,
|
||||
}
|
||||
|
||||
/// Update the working directory for a session.
|
||||
#[derive(Debug, Default, Clone, Serialize, Deserialize, JsonSchema, JsonRpcRequest)]
|
||||
#[request(method = "_goose/unstable/session/working-dir/update", response = EmptyResponse)]
|
||||
|
|
|
|||
|
|
@ -45,6 +45,11 @@
|
|||
"requestType": "AppsImportRequest_unstable",
|
||||
"responseType": "AppsImportResponse_unstable"
|
||||
},
|
||||
{
|
||||
"method": "_goose/unstable/apps/delete",
|
||||
"requestType": "AppsDeleteRequest_unstable",
|
||||
"responseType": "AppsDeleteResponse_unstable"
|
||||
},
|
||||
{
|
||||
"method": "_goose/unstable/session/working-dir/update",
|
||||
"requestType": "UpdateWorkingDirRequest_unstable",
|
||||
|
|
|
|||
|
|
@ -730,6 +730,36 @@
|
|||
"x-side": "agent",
|
||||
"x-method": "_goose/unstable/apps/import"
|
||||
},
|
||||
"AppsDeleteRequest_unstable": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name"
|
||||
],
|
||||
"x-side": "agent",
|
||||
"x-method": "_goose/unstable/apps/delete"
|
||||
},
|
||||
"AppsDeleteResponse_unstable": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"message": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name",
|
||||
"message"
|
||||
],
|
||||
"x-side": "agent",
|
||||
"x-method": "_goose/unstable/apps/delete"
|
||||
},
|
||||
"UpdateWorkingDirRequest_unstable": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
|
|
@ -6933,6 +6963,15 @@
|
|||
"description": "Params for _goose/unstable/apps/import",
|
||||
"title": "AppsImportRequest_unstable"
|
||||
},
|
||||
{
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/$defs/AppsDeleteRequest_unstable"
|
||||
}
|
||||
],
|
||||
"description": "Params for _goose/unstable/apps/delete",
|
||||
"title": "AppsDeleteRequest_unstable"
|
||||
},
|
||||
{
|
||||
"allOf": [
|
||||
{
|
||||
|
|
@ -7954,6 +7993,14 @@
|
|||
],
|
||||
"title": "AppsImportResponse_unstable"
|
||||
},
|
||||
{
|
||||
"allOf": [
|
||||
{
|
||||
"$ref": "#/$defs/AppsDeleteResponse_unstable"
|
||||
}
|
||||
],
|
||||
"title": "AppsDeleteResponse_unstable"
|
||||
},
|
||||
{
|
||||
"allOf": [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
use super::*;
|
||||
use crate::goose_apps::{fetch_mcp_apps, GooseApp, McpAppCache};
|
||||
use crate::config::paths::Paths;
|
||||
use crate::goose_apps::{fetch_mcp_apps, mark_deletable_apps, GooseApp, McpAppCache};
|
||||
|
||||
const APPS_EXTENSION_NAME: &str = "apps";
|
||||
|
||||
impl GooseAcpAgent {
|
||||
pub(super) async fn on_list_apps(
|
||||
|
|
@ -9,17 +12,18 @@ impl GooseAcpAgent {
|
|||
let cache = McpAppCache::new().ok();
|
||||
|
||||
let Some(session_id) = req.session_id else {
|
||||
let apps = cache
|
||||
let mut apps = cache
|
||||
.as_ref()
|
||||
.and_then(|cache| cache.list_apps().ok())
|
||||
.unwrap_or_default();
|
||||
mark_deletable_apps(&mut apps);
|
||||
return Ok(AppsListResponse {
|
||||
apps: apps_to_values(apps)?,
|
||||
});
|
||||
};
|
||||
|
||||
let agent = self.get_session_agent(&session_id).await?;
|
||||
let apps = fetch_mcp_apps(&agent.extension_manager, &session_id)
|
||||
let mut apps = fetch_mcp_apps(&agent.extension_manager, &session_id)
|
||||
.await
|
||||
.map_err(|error| {
|
||||
agent_client_protocol::Error::internal_error()
|
||||
|
|
@ -49,6 +53,8 @@ impl GooseAcpAgent {
|
|||
}
|
||||
}
|
||||
|
||||
mark_deletable_apps(&mut apps);
|
||||
|
||||
Ok(AppsListResponse {
|
||||
apps: apps_to_values(apps)?,
|
||||
})
|
||||
|
|
@ -85,20 +91,15 @@ impl GooseAcpAgent {
|
|||
|
||||
let original_name = app.resource.name.clone();
|
||||
let mut counter = 1;
|
||||
let existing_names = cache
|
||||
.list_apps()
|
||||
.unwrap_or_default()
|
||||
.into_iter()
|
||||
.map(|app| app.resource.name)
|
||||
.collect::<std::collections::HashSet<_>>();
|
||||
let existing_names = existing_app_names(&cache)?;
|
||||
|
||||
while existing_names.contains(&app.resource.name) {
|
||||
while existing_names.contains(&normalized_app_name(&app.resource.name)) {
|
||||
app.resource.name = format!("{}_{}", original_name, counter);
|
||||
app.resource.uri = format!("ui://apps/{}", app.resource.name);
|
||||
counter += 1;
|
||||
}
|
||||
|
||||
app.mcp_servers = vec!["apps".to_string()];
|
||||
app.mcp_servers = vec![APPS_EXTENSION_NAME.to_string()];
|
||||
let name = app.resource.name.clone();
|
||||
cache
|
||||
.store_app(&app)
|
||||
|
|
@ -109,6 +110,131 @@ impl GooseAcpAgent {
|
|||
message: format!("App '{}' imported successfully", name),
|
||||
})
|
||||
}
|
||||
|
||||
pub(super) async fn on_delete_app(
|
||||
&self,
|
||||
req: AppsDeleteRequest,
|
||||
) -> Result<AppsDeleteResponse, agent_client_protocol::Error> {
|
||||
let cache = McpAppCache::new().internal_err_ctx("Failed to access app cache")?;
|
||||
let apps = cache.list_apps().internal_err_ctx("Failed to list apps")?;
|
||||
|
||||
let app = apps
|
||||
.into_iter()
|
||||
.find(|app| {
|
||||
app.resource.name == req.name
|
||||
&& app.mcp_servers.contains(&APPS_EXTENSION_NAME.to_string())
|
||||
})
|
||||
.ok_or_else(|| {
|
||||
agent_client_protocol::Error::resource_not_found(Some(req.name.clone()))
|
||||
.data(format!("App '{}' not found", req.name))
|
||||
})?;
|
||||
|
||||
if McpAppCache::is_bundled_default_uri(&app.resource.uri) {
|
||||
return Err(agent_client_protocol::Error::invalid_params().data(format!(
|
||||
"Cannot delete bundled default app '{}'",
|
||||
app.resource.name
|
||||
)));
|
||||
}
|
||||
|
||||
for extension_name in &app.mcp_servers {
|
||||
cache
|
||||
.delete_app(extension_name, &app.resource.uri)
|
||||
.internal_err()?;
|
||||
}
|
||||
|
||||
delete_app_html_file(&app.resource.name)?;
|
||||
|
||||
Ok(AppsDeleteResponse {
|
||||
name: app.resource.name.clone(),
|
||||
message: format!("App '{}' deleted successfully", app.resource.name),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
fn existing_app_names(
|
||||
cache: &McpAppCache,
|
||||
) -> Result<std::collections::HashSet<String>, agent_client_protocol::Error> {
|
||||
let mut names = cache
|
||||
.list_apps()
|
||||
.internal_err_ctx("Failed to list apps")?
|
||||
.into_iter()
|
||||
.map(|app| normalized_app_name(&app.resource.name))
|
||||
.collect::<std::collections::HashSet<_>>();
|
||||
|
||||
for name in list_filesystem_app_names()? {
|
||||
names.insert(name);
|
||||
}
|
||||
|
||||
Ok(names)
|
||||
}
|
||||
|
||||
fn list_filesystem_app_names() -> Result<Vec<String>, agent_client_protocol::Error> {
|
||||
let apps_dir = Paths::in_data_dir(APPS_EXTENSION_NAME);
|
||||
if !apps_dir.exists() {
|
||||
return Ok(Vec::new());
|
||||
}
|
||||
|
||||
let mut names = Vec::new();
|
||||
for entry in std::fs::read_dir(&apps_dir).internal_err()? {
|
||||
let entry = entry.internal_err()?;
|
||||
let path = entry.path();
|
||||
if path.extension().and_then(|s| s.to_str()) == Some("html") {
|
||||
if let Some(stem) = path.file_stem().and_then(|s| s.to_str()) {
|
||||
names.push(normalized_app_name(stem));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Ok(names)
|
||||
}
|
||||
|
||||
fn app_html_file_path(app_name: &str) -> Option<std::path::PathBuf> {
|
||||
if app_name.contains('/')
|
||||
|| app_name.contains('\\')
|
||||
|| app_name.contains('\0')
|
||||
|| app_name == "."
|
||||
|| app_name == ".."
|
||||
{
|
||||
return None;
|
||||
}
|
||||
|
||||
Some(Paths::in_data_dir(APPS_EXTENSION_NAME).join(format!("{app_name}.html")))
|
||||
}
|
||||
|
||||
fn normalized_app_name(app_name: &str) -> String {
|
||||
app_name.to_lowercase()
|
||||
}
|
||||
|
||||
fn exact_app_html_file_path(
|
||||
app_name: &str,
|
||||
) -> Result<Option<std::path::PathBuf>, agent_client_protocol::Error> {
|
||||
let Some(html_path) = app_html_file_path(app_name) else {
|
||||
return Ok(None);
|
||||
};
|
||||
let Some(file_name) = html_path.file_name() else {
|
||||
return Ok(None);
|
||||
};
|
||||
let apps_dir = Paths::in_data_dir(APPS_EXTENSION_NAME);
|
||||
if !apps_dir.exists() {
|
||||
return Ok(None);
|
||||
}
|
||||
|
||||
for entry in std::fs::read_dir(&apps_dir).internal_err()? {
|
||||
let path = entry.internal_err()?.path();
|
||||
if path.file_name() == Some(file_name) {
|
||||
return Ok(Some(path));
|
||||
}
|
||||
}
|
||||
|
||||
Ok(None)
|
||||
}
|
||||
|
||||
fn delete_app_html_file(app_name: &str) -> Result<(), agent_client_protocol::Error> {
|
||||
if let Some(html_path) = exact_app_html_file_path(app_name)? {
|
||||
std::fs::remove_file(html_path).internal_err()?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn apps_to_values(
|
||||
|
|
@ -119,3 +245,50 @@ fn apps_to_values(
|
|||
.collect::<Result<Vec<_>, _>>()
|
||||
.internal_err()
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use serial_test::serial;
|
||||
use tempfile::TempDir;
|
||||
|
||||
fn with_temp_root<F>(test: F)
|
||||
where
|
||||
F: FnOnce(),
|
||||
{
|
||||
let root = TempDir::new().unwrap();
|
||||
std::env::set_var("GOOSE_PATH_ROOT", root.path());
|
||||
test();
|
||||
std::env::remove_var("GOOSE_PATH_ROOT");
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[serial]
|
||||
fn existing_app_names_normalizes_cache_and_filesystem_names() {
|
||||
with_temp_root(|| {
|
||||
let cache = McpAppCache::new().unwrap();
|
||||
let apps_dir = Paths::in_data_dir(APPS_EXTENSION_NAME);
|
||||
std::fs::create_dir_all(&apps_dir).unwrap();
|
||||
std::fs::write(apps_dir.join("Clock.html"), "<html></html>").unwrap();
|
||||
|
||||
let names = existing_app_names(&cache).unwrap();
|
||||
|
||||
assert!(names.contains("clock"));
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[serial]
|
||||
fn delete_app_html_file_requires_exact_file_name_match() {
|
||||
with_temp_root(|| {
|
||||
let apps_dir = Paths::in_data_dir(APPS_EXTENSION_NAME);
|
||||
std::fs::create_dir_all(&apps_dir).unwrap();
|
||||
let clock_path = apps_dir.join("clock.html");
|
||||
std::fs::write(&clock_path, "<html></html>").unwrap();
|
||||
|
||||
delete_app_html_file("Clock").unwrap();
|
||||
|
||||
assert!(clock_path.exists());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,6 +101,14 @@ impl GooseAcpAgent {
|
|||
self.on_import_app(req).await
|
||||
}
|
||||
|
||||
#[custom_method(AppsDeleteRequest)]
|
||||
async fn dispatch_delete_app(
|
||||
&self,
|
||||
req: AppsDeleteRequest,
|
||||
) -> Result<AppsDeleteResponse, agent_client_protocol::Error> {
|
||||
self.on_delete_app(req).await
|
||||
}
|
||||
|
||||
#[custom_method(UpdateWorkingDirRequest)]
|
||||
async fn dispatch_update_working_dir(
|
||||
&self,
|
||||
|
|
|
|||
|
|
@ -415,6 +415,7 @@ impl AppsManagerClient {
|
|||
resizable: content.resizable.unwrap_or(DEFAULT_WINDOW_PROPS.resizable),
|
||||
}),
|
||||
prd: Some(prd),
|
||||
deletable: false,
|
||||
};
|
||||
|
||||
self.save_app(&app)?;
|
||||
|
|
|
|||
|
|
@ -26,6 +26,9 @@ pub struct GooseApp {
|
|||
pub window_props: Option<WindowProps>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub prd: Option<String>,
|
||||
/// Whether this app can be deleted by the user (i.e. not a bundled default).
|
||||
#[serde(default, skip_serializing_if = "std::ops::Not::not")]
|
||||
pub deletable: bool,
|
||||
}
|
||||
|
||||
impl GooseApp {
|
||||
|
|
@ -120,6 +123,7 @@ impl GooseApp {
|
|||
mcp_servers,
|
||||
window_props,
|
||||
prd,
|
||||
deletable: false,
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -291,6 +295,7 @@ pub async fn fetch_mcp_apps(
|
|||
mcp_servers: vec![extension_name],
|
||||
window_props,
|
||||
prd: None,
|
||||
deletable: false,
|
||||
};
|
||||
|
||||
apps.push(app);
|
||||
|
|
|
|||
|
|
@ -10,6 +10,22 @@ use super::app::GooseApp;
|
|||
static CLOCK_HTML: &str = include_str!("../goose_apps/clock.html");
|
||||
const APPS_EXTENSION_NAME: &str = "apps";
|
||||
|
||||
pub const BUNDLED_DEFAULT_APP_URIS: &[&str] = &["ui://apps/clock"];
|
||||
|
||||
/// Bundled default apps: (cache URI, HTML source).
|
||||
const DEFAULT_APPS: &[(&str, &str)] = &[("ui://apps/clock", CLOCK_HTML)];
|
||||
|
||||
pub fn mark_deletable_apps(apps: &mut [GooseApp]) {
|
||||
for app in apps.iter_mut() {
|
||||
let is_apps_extension = app
|
||||
.mcp_servers
|
||||
.iter()
|
||||
.any(|server| server == APPS_EXTENSION_NAME);
|
||||
app.deletable =
|
||||
is_apps_extension && !McpAppCache::is_bundled_default_uri(&app.resource.uri);
|
||||
}
|
||||
}
|
||||
|
||||
pub struct McpAppCache {
|
||||
cache_dir: PathBuf,
|
||||
}
|
||||
|
|
@ -24,14 +40,20 @@ impl McpAppCache {
|
|||
}
|
||||
|
||||
fn ensure_default_apps(&self) {
|
||||
if self.get_app(APPS_EXTENSION_NAME, "apps://clock").is_none() {
|
||||
if let Ok(mut app) = GooseApp::from_html(CLOCK_HTML) {
|
||||
app.mcp_servers = vec![APPS_EXTENSION_NAME.to_string()];
|
||||
let _ = self.store_app(&app);
|
||||
for (uri, html) in DEFAULT_APPS {
|
||||
if self.get_app(APPS_EXTENSION_NAME, uri).is_none() {
|
||||
if let Ok(mut app) = GooseApp::from_html(html) {
|
||||
app.mcp_servers = vec![APPS_EXTENSION_NAME.to_string()];
|
||||
let _ = self.store_app(&app);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn is_bundled_default_uri(uri: &str) -> bool {
|
||||
BUNDLED_DEFAULT_APP_URIS.contains(&uri)
|
||||
}
|
||||
|
||||
fn cache_key(extension_name: &str, resource_uri: &str) -> String {
|
||||
let input = format!("{}::{}", extension_name, resource_uri);
|
||||
let hash = bytes_to_hex(Sha256::digest(input.as_bytes()));
|
||||
|
|
@ -90,6 +112,27 @@ impl McpAppCache {
|
|||
.and_then(|content| serde_json::from_str::<GooseApp>(&content).ok())
|
||||
}
|
||||
|
||||
pub fn delete_app(
|
||||
&self,
|
||||
extension_name: &str,
|
||||
resource_uri: &str,
|
||||
) -> Result<(), std::io::Error> {
|
||||
let cache_key = Self::cache_key(extension_name, resource_uri);
|
||||
let app_path = self.cache_dir.join(format!("{}.json", cache_key));
|
||||
|
||||
if !app_path.exists() {
|
||||
return Err(std::io::Error::new(
|
||||
std::io::ErrorKind::NotFound,
|
||||
format!(
|
||||
"App not found in cache: {}::{}",
|
||||
extension_name, resource_uri
|
||||
),
|
||||
));
|
||||
}
|
||||
|
||||
fs::remove_file(app_path)
|
||||
}
|
||||
|
||||
pub fn delete_extension_apps(&self, extension_name: &str) -> Result<usize, std::io::Error> {
|
||||
let mut deleted_count = 0;
|
||||
|
||||
|
|
@ -117,3 +160,100 @@ impl McpAppCache {
|
|||
Ok(deleted_count)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use serial_test::serial;
|
||||
use tempfile::TempDir;
|
||||
|
||||
const CUSTOM_APP_HTML: &str = r#"<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://goose.ai/schema",
|
||||
"@type": "GooseApp",
|
||||
"name": "test-app",
|
||||
"description": "Test app",
|
||||
"width": 100,
|
||||
"height": 100,
|
||||
"resizable": false
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body></body>
|
||||
</html>"#;
|
||||
|
||||
fn with_temp_config<F>(test: F)
|
||||
where
|
||||
F: FnOnce(),
|
||||
{
|
||||
let root = TempDir::new().unwrap();
|
||||
std::env::set_var("GOOSE_PATH_ROOT", root.path());
|
||||
test();
|
||||
std::env::remove_var("GOOSE_PATH_ROOT");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn is_bundled_default_uri_matches_clock() {
|
||||
assert!(McpAppCache::is_bundled_default_uri("ui://apps/clock"));
|
||||
assert!(!McpAppCache::is_bundled_default_uri("ui://apps/chat"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn mark_deletable_apps_protects_bundled_uri_not_name() {
|
||||
let mut bundled_clock = GooseApp::from_html(CLOCK_HTML).unwrap();
|
||||
bundled_clock.mcp_servers = vec![APPS_EXTENSION_NAME.to_string()];
|
||||
|
||||
let mut user_clock = GooseApp::from_html(CUSTOM_APP_HTML).unwrap();
|
||||
user_clock.resource.name = "clock".to_string();
|
||||
user_clock.resource.uri = "ui://apps/user-clock".to_string();
|
||||
user_clock.mcp_servers = vec![APPS_EXTENSION_NAME.to_string()];
|
||||
|
||||
let mut custom = GooseApp::from_html(CUSTOM_APP_HTML).unwrap();
|
||||
custom.mcp_servers = vec![APPS_EXTENSION_NAME.to_string()];
|
||||
|
||||
let mut external = GooseApp::from_html(CUSTOM_APP_HTML).unwrap();
|
||||
external.mcp_servers = vec!["other-extension".to_string()];
|
||||
|
||||
let mut apps = vec![bundled_clock, user_clock, custom, external];
|
||||
mark_deletable_apps(&mut apps);
|
||||
|
||||
assert!(!apps[0].deletable);
|
||||
assert!(apps[1].deletable);
|
||||
assert!(apps[2].deletable);
|
||||
assert!(!apps[3].deletable);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[serial]
|
||||
fn delete_app_removes_cached_entry() {
|
||||
with_temp_config(|| {
|
||||
let cache = McpAppCache::new().unwrap();
|
||||
let mut app = GooseApp::from_html(CUSTOM_APP_HTML).unwrap();
|
||||
app.mcp_servers = vec![APPS_EXTENSION_NAME.to_string()];
|
||||
let uri = app.resource.uri.clone();
|
||||
|
||||
cache.store_app(&app).unwrap();
|
||||
assert!(cache.get_app(APPS_EXTENSION_NAME, &uri).is_some());
|
||||
|
||||
cache
|
||||
.delete_app(APPS_EXTENSION_NAME, &uri)
|
||||
.expect("delete should succeed");
|
||||
assert!(cache.get_app(APPS_EXTENSION_NAME, &uri).is_none());
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[serial]
|
||||
fn delete_app_returns_not_found_for_missing_entry() {
|
||||
with_temp_config(|| {
|
||||
let cache = McpAppCache::new().unwrap();
|
||||
let error = cache
|
||||
.delete_app(APPS_EXTENSION_NAME, "apps://missing")
|
||||
.unwrap_err();
|
||||
assert_eq!(error.kind(), std::io::ErrorKind::NotFound);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ pub mod cache;
|
|||
pub mod resource;
|
||||
|
||||
pub use app::{fetch_mcp_apps, GooseApp, WindowProps};
|
||||
pub use cache::McpAppCache;
|
||||
pub use cache::{mark_deletable_apps, McpAppCache};
|
||||
pub use resource::{
|
||||
CspMetadata, McpAppResource, PermissionsMetadata, ResourceMetadata, UiMetadata,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
import { getAcpClient } from '../acpConnection';
|
||||
import {
|
||||
deleteMcpApp,
|
||||
callMcpAppTool,
|
||||
exportMcpApp,
|
||||
importMcpApp,
|
||||
|
|
@ -22,6 +23,7 @@ function createClient() {
|
|||
appsList_unstable: vi.fn(),
|
||||
appsExport_unstable: vi.fn(),
|
||||
appsImport_unstable: vi.fn(),
|
||||
appsDelete_unstable: vi.fn(),
|
||||
},
|
||||
};
|
||||
}
|
||||
|
|
@ -206,4 +208,31 @@ describe('ACP MCP app helpers', () => {
|
|||
html: '<html><body>Weather</body></html>',
|
||||
});
|
||||
});
|
||||
|
||||
it('deletes apps through ACP', async () => {
|
||||
client.goose.appsDelete_unstable.mockResolvedValue({
|
||||
name: 'weather',
|
||||
message: 'App deleted',
|
||||
});
|
||||
|
||||
await deleteMcpApp('weather');
|
||||
|
||||
expect(client.goose.appsDelete_unstable).toHaveBeenCalledWith({ name: 'weather' });
|
||||
});
|
||||
|
||||
it('normalizes ACP delete errors', async () => {
|
||||
client.goose.appsDelete_unstable.mockRejectedValue({
|
||||
error: { data: 'Cannot delete default app' },
|
||||
});
|
||||
|
||||
await expect(deleteMcpApp('clock')).rejects.toThrow('Cannot delete default app');
|
||||
});
|
||||
|
||||
it('normalizes ACP export errors', async () => {
|
||||
client.goose.appsExport_unstable.mockRejectedValue({
|
||||
error: { message: 'App not found' },
|
||||
});
|
||||
|
||||
await expect(exportMcpApp('missing')).rejects.toThrow('App not found');
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -50,3 +50,29 @@ function asAcpJsonRpcError(error: unknown): AcpJsonRpcError | null {
|
|||
function isRecord(value: unknown): value is Record<string, unknown> {
|
||||
return typeof value === 'object' && value !== null;
|
||||
}
|
||||
|
||||
function acpErrorMessage(error: unknown): string | null {
|
||||
if (!isRecord(error)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const candidate = 'error' in error && isRecord(error.error) ? error.error : error;
|
||||
if (!isRecord(candidate)) {
|
||||
return null;
|
||||
}
|
||||
if (typeof candidate.data === 'string') {
|
||||
return candidate.data;
|
||||
}
|
||||
return typeof candidate.message === 'string' ? candidate.message : null;
|
||||
}
|
||||
|
||||
export function normalizeAcpError(error: unknown, fallback: string): Error {
|
||||
const message = acpErrorMessage(error);
|
||||
if (message) {
|
||||
return new Error(message);
|
||||
}
|
||||
if (error instanceof Error) {
|
||||
return error;
|
||||
}
|
||||
return new Error(fallback);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|||
import type { ToolListItem } from '@aaif/goose-sdk';
|
||||
import type { GooseApp } from '../types/apps';
|
||||
import { getAcpClient } from './acpConnection';
|
||||
import { normalizeAcpError } from './errors';
|
||||
|
||||
type JsonRecord = Record<string, unknown>;
|
||||
export type McpAppTool = ToolListItem;
|
||||
|
|
@ -74,14 +75,31 @@ export async function listMcpApps(sessionId?: string): Promise<GooseApp[]> {
|
|||
}
|
||||
|
||||
export async function exportMcpApp(name: string): Promise<string> {
|
||||
const client = await getAcpClient();
|
||||
const response = await client.goose.appsExport_unstable({ name });
|
||||
return response.html;
|
||||
try {
|
||||
const client = await getAcpClient();
|
||||
const response = await client.goose.appsExport_unstable({ name });
|
||||
return response.html;
|
||||
} catch (error) {
|
||||
throw normalizeAcpError(error, 'Failed to export app');
|
||||
}
|
||||
}
|
||||
|
||||
export async function importMcpApp(html: string): Promise<void> {
|
||||
const client = await getAcpClient();
|
||||
await client.goose.appsImport_unstable({ html });
|
||||
try {
|
||||
const client = await getAcpClient();
|
||||
await client.goose.appsImport_unstable({ html });
|
||||
} catch (error) {
|
||||
throw normalizeAcpError(error, 'Failed to import app');
|
||||
}
|
||||
}
|
||||
|
||||
export async function deleteMcpApp(name: string): Promise<void> {
|
||||
try {
|
||||
const client = await getAcpClient();
|
||||
await client.goose.appsDelete_unstable({ name });
|
||||
} catch (error) {
|
||||
throw normalizeAcpError(error, 'Failed to delete app');
|
||||
}
|
||||
}
|
||||
|
||||
export async function listMcpAppTools(
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
import { useCallback, useEffect, useRef, useState } from 'react';
|
||||
import { MainPanelLayout } from '../Layout/MainPanelLayout';
|
||||
import { Button } from '../ui/button';
|
||||
import { AlertTriangle, Download, Play, Upload } from 'lucide-react';
|
||||
import { AlertTriangle, Download, Play, Trash2, Upload } from 'lucide-react';
|
||||
import type { GooseApp } from '../../types/apps';
|
||||
import { exportMcpApp, importMcpApp, listMcpApps } from '../../acp/mcp-apps';
|
||||
import { deleteMcpApp, exportMcpApp, importMcpApp, listMcpApps } from '../../acp/mcp-apps';
|
||||
import { useChatContext } from '../../contexts/ChatContext';
|
||||
import { formatAppName } from '../../utils/conversionUtils';
|
||||
import { errorMessage } from '../../utils/conversionUtils';
|
||||
|
|
@ -61,6 +61,18 @@ const i18n = defineMessages({
|
|||
id: 'appsView.retiredChatAppDetail',
|
||||
defaultMessage: 'We removed this feature because MCP sampling is no longer supported.',
|
||||
},
|
||||
deleteConfirm: {
|
||||
id: 'appsView.deleteConfirm',
|
||||
defaultMessage: 'Delete "{name}"? This cannot be undone.',
|
||||
},
|
||||
deleteApp: {
|
||||
id: 'appsView.deleteApp',
|
||||
defaultMessage: 'Delete app',
|
||||
},
|
||||
errorPrefix: {
|
||||
id: 'appsView.errorPrefix',
|
||||
defaultMessage: 'Error: {error}',
|
||||
},
|
||||
});
|
||||
|
||||
const GridLayout = ({ children }: { children: React.ReactNode }) => {
|
||||
|
|
@ -82,6 +94,7 @@ export default function AppsView() {
|
|||
const [apps, setApps] = useState<GooseApp[]>([]);
|
||||
const [error, setError] = useState<string | null>(null);
|
||||
const [loading, setLoading] = useState(true);
|
||||
const [deletesInProgress, setDeletesInProgress] = useState<Set<string>>(new Set());
|
||||
const chatContext = useChatContext();
|
||||
const sessionId = chatContext?.chat.sessionId;
|
||||
|
||||
|
|
@ -102,30 +115,42 @@ export default function AppsView() {
|
|||
loadCachedApps();
|
||||
}, []);
|
||||
|
||||
// When sessionId becomes available, fetch fresh apps and update cache
|
||||
const refreshAppsExtensionList = useCallback(async (activeSessionId?: string) => {
|
||||
const appsExtension = 'apps';
|
||||
const cacheApps = (await listMcpApps()).filter((a) => a.mcpServers?.includes(appsExtension));
|
||||
|
||||
if (!activeSessionId) {
|
||||
setApps(cacheApps);
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const sessionApps = (await listMcpApps(activeSessionId)).filter((a) =>
|
||||
a.mcpServers?.includes(appsExtension)
|
||||
);
|
||||
const merged = new Map<string, GooseApp>();
|
||||
for (const app of cacheApps) {
|
||||
merged.set(app.uri, app);
|
||||
}
|
||||
for (const app of sessionApps) {
|
||||
merged.set(app.uri, app);
|
||||
}
|
||||
setApps(Array.from(merged.values()));
|
||||
setError(null);
|
||||
} catch (err) {
|
||||
console.warn('Failed to refresh apps from session:', err);
|
||||
setApps(cacheApps);
|
||||
if (cacheApps.length === 0) {
|
||||
setError(errorMessage(err, 'Failed to load apps'));
|
||||
}
|
||||
}
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
if (!sessionId) return;
|
||||
|
||||
const refreshApps = async () => {
|
||||
try {
|
||||
const freshApps = await listMcpApps(sessionId);
|
||||
// Only show apps from the "apps" extension (vibe coded apps built by Goose)
|
||||
setApps(freshApps.filter((a) => a.mcpServers?.includes('apps')));
|
||||
setError(null);
|
||||
} catch (err) {
|
||||
console.warn('Failed to refresh apps:', err);
|
||||
// Don't set error if we already have cached apps
|
||||
if (apps.length === 0) {
|
||||
setError(errorMessage(err, 'Failed to load apps'));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
refreshApps();
|
||||
// apps.length intentionally not in deps: we want to capture the initial apps.length to check
|
||||
// "did we have cached apps when refresh started?" Adding it would cause infinite loop since setApps() changes apps.length
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [sessionId]);
|
||||
refreshAppsExtensionList(sessionId);
|
||||
}, [sessionId, refreshAppsExtensionList]);
|
||||
|
||||
useEffect(() => {
|
||||
const handlePlatformEvent = (event: Event) => {
|
||||
|
|
@ -134,38 +159,26 @@ export default function AppsView() {
|
|||
|
||||
if (eventData?.extension === 'apps') {
|
||||
const eventSessionId = eventData.sessionId || sessionId;
|
||||
|
||||
// Refresh apps list to get latest state
|
||||
if (eventSessionId) {
|
||||
listMcpApps(eventSessionId).then((apps) => {
|
||||
setApps(apps.filter((a) => a.mcpServers?.includes('apps')));
|
||||
});
|
||||
}
|
||||
refreshAppsExtensionList(eventSessionId).catch((err) => {
|
||||
console.warn('Failed to refresh apps after platform event:', err);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
window.addEventListener('platform-event', handlePlatformEvent);
|
||||
return () => window.removeEventListener('platform-event', handlePlatformEvent);
|
||||
}, [sessionId]);
|
||||
}, [sessionId, refreshAppsExtensionList]);
|
||||
|
||||
const loadApps = useCallback(async () => {
|
||||
if (!sessionId) return;
|
||||
|
||||
try {
|
||||
setLoading(true);
|
||||
const fetchedApps = await listMcpApps(sessionId);
|
||||
// Only show apps from the "apps" extension (vibe coded apps built by Goose)
|
||||
setApps(fetchedApps.filter((a) => a.mcpServers?.includes('apps')));
|
||||
setError(null);
|
||||
} catch (err) {
|
||||
// Only set error if we don't have apps to show
|
||||
if (apps.length === 0) {
|
||||
setError(errorMessage(err, 'Failed to load apps'));
|
||||
}
|
||||
await refreshAppsExtensionList(sessionId);
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
}, [sessionId, apps.length]);
|
||||
}, [sessionId, refreshAppsExtensionList]);
|
||||
|
||||
const handleLaunchApp = async (app: GooseApp) => {
|
||||
try {
|
||||
|
|
@ -176,6 +189,34 @@ export default function AppsView() {
|
|||
}
|
||||
};
|
||||
|
||||
const handleDeleteApp = async (app: GooseApp) => {
|
||||
if (
|
||||
!window.confirm(
|
||||
intl.formatMessage(i18n.deleteConfirm, { name: formatAppName(app.name) })
|
||||
)
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
setDeletesInProgress((prev) => new Set(prev).add(app.name));
|
||||
setError(null);
|
||||
|
||||
try {
|
||||
await deleteMcpApp(app.name);
|
||||
await window.electron.closeApp(app.name).catch(() => undefined);
|
||||
setApps((prev) => prev.filter((a) => a.name !== app.name));
|
||||
} catch (err) {
|
||||
console.error('Failed to delete app:', err);
|
||||
setError(errorMessage(err, 'Failed to delete app'));
|
||||
} finally {
|
||||
setDeletesInProgress((prev) => {
|
||||
const next = new Set(prev);
|
||||
next.delete(app.name);
|
||||
return next;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const handleDownloadApp = async (app: GooseApp) => {
|
||||
try {
|
||||
const html = await exportMcpApp(app.name);
|
||||
|
|
@ -264,6 +305,13 @@ export default function AppsView() {
|
|||
</div>
|
||||
|
||||
<div className="flex-1 overflow-y-auto px-8 pb-8">
|
||||
{error && apps.length > 0 && (
|
||||
<div className="mb-4">
|
||||
<p className="text-text-danger text-sm">
|
||||
{intl.formatMessage(i18n.errorPrefix, { error })}
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
{loading ? (
|
||||
<div className="flex items-center justify-center h-64">
|
||||
<p className="text-text-secondary">{intl.formatMessage(i18n.loading)}</p>
|
||||
|
|
@ -282,6 +330,8 @@ export default function AppsView() {
|
|||
{apps.map((app) => {
|
||||
const isCustomApp = app.mcpServers?.includes('apps') ?? false;
|
||||
const retiredChatApp = isRetiredGooseChatApp(app);
|
||||
const canDelete = isCustomApp && app.deletable === true;
|
||||
const deleteInProgress = deletesInProgress.has(app.name);
|
||||
return (
|
||||
<div
|
||||
key={`${app.uri}-${app.mcpServers?.join(',')}`}
|
||||
|
|
@ -336,6 +386,18 @@ export default function AppsView() {
|
|||
<Download className="h-4 w-4" />
|
||||
</Button>
|
||||
)}
|
||||
{canDelete && (
|
||||
<Button
|
||||
variant="outline"
|
||||
size="sm"
|
||||
onClick={() => handleDeleteApp(app)}
|
||||
disabled={deleteInProgress}
|
||||
className="flex items-center gap-2 text-destructive hover:text-destructive"
|
||||
aria-label={intl.formatMessage(i18n.deleteApp)}
|
||||
>
|
||||
<Trash2 className="h-4 w-4" />
|
||||
</Button>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -20,12 +20,21 @@
|
|||
"appsView.customApp": {
|
||||
"defaultMessage": "Benutzerdefinierte App"
|
||||
},
|
||||
"appsView.deleteApp": {
|
||||
"defaultMessage": "Delete app"
|
||||
},
|
||||
"appsView.deleteConfirm": {
|
||||
"defaultMessage": "Delete \"{name}\"? This cannot be undone."
|
||||
},
|
||||
"appsView.description": {
|
||||
"defaultMessage": "Anwendungen von Ihren MCP-Servern und Apps, die goose selbst erstellt hat. Sie können über die Chat-Oberfläche neue Apps anfordern, die dann hier erscheinen."
|
||||
},
|
||||
"appsView.errorLoading": {
|
||||
"defaultMessage": "Fehler beim Laden der Apps: {error}"
|
||||
},
|
||||
"appsView.errorPrefix": {
|
||||
"defaultMessage": "Error: {error}"
|
||||
},
|
||||
"appsView.importApp": {
|
||||
"defaultMessage": "App importieren"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -20,12 +20,21 @@
|
|||
"appsView.customApp": {
|
||||
"defaultMessage": "Custom app"
|
||||
},
|
||||
"appsView.deleteApp": {
|
||||
"defaultMessage": "Delete app"
|
||||
},
|
||||
"appsView.deleteConfirm": {
|
||||
"defaultMessage": "Delete \"{name}\"? This cannot be undone."
|
||||
},
|
||||
"appsView.description": {
|
||||
"defaultMessage": "Applications from your MCP servers and Apps built by goose itself. You can ask it to create new apps through the chat interface and they will appear here."
|
||||
},
|
||||
"appsView.errorLoading": {
|
||||
"defaultMessage": "Error loading apps: {error}"
|
||||
},
|
||||
"appsView.errorPrefix": {
|
||||
"defaultMessage": "Error: {error}"
|
||||
},
|
||||
"appsView.importApp": {
|
||||
"defaultMessage": "Import App"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -20,12 +20,21 @@
|
|||
"appsView.customApp": {
|
||||
"defaultMessage": "App personalizada"
|
||||
},
|
||||
"appsView.deleteApp": {
|
||||
"defaultMessage": "Delete app"
|
||||
},
|
||||
"appsView.deleteConfirm": {
|
||||
"defaultMessage": "Delete \"{name}\"? This cannot be undone."
|
||||
},
|
||||
"appsView.description": {
|
||||
"defaultMessage": "Aplicaciones de tus servidores MCP y Apps creadas por goose. Puedes pedirle que cree nuevas apps desde la interfaz de chat y aparecerán aquí."
|
||||
},
|
||||
"appsView.errorLoading": {
|
||||
"defaultMessage": "Error al cargar las apps: {error}"
|
||||
},
|
||||
"appsView.errorPrefix": {
|
||||
"defaultMessage": "Error: {error}"
|
||||
},
|
||||
"appsView.importApp": {
|
||||
"defaultMessage": "Importar App"
|
||||
},
|
||||
|
|
@ -41,15 +50,15 @@
|
|||
"appsView.noAppsTitle": {
|
||||
"defaultMessage": "No hay apps disponibles"
|
||||
},
|
||||
"appsView.retry": {
|
||||
"defaultMessage": "Reintentar"
|
||||
},
|
||||
"appsView.retiredChatApp": {
|
||||
"defaultMessage": "Chat app retired"
|
||||
},
|
||||
"appsView.retiredChatAppDetail": {
|
||||
"defaultMessage": "We removed this feature because MCP sampling is no longer supported."
|
||||
},
|
||||
"appsView.retry": {
|
||||
"defaultMessage": "Reintentar"
|
||||
},
|
||||
"appsView.title": {
|
||||
"defaultMessage": "Apps"
|
||||
},
|
||||
|
|
@ -65,15 +74,15 @@
|
|||
"authSettings.deleteCredential": {
|
||||
"defaultMessage": "Eliminar credencial"
|
||||
},
|
||||
"authSettings.deleted": {
|
||||
"defaultMessage": "Credencial eliminada"
|
||||
},
|
||||
"authSettings.deleteMessage": {
|
||||
"defaultMessage": "¿Eliminar la credencial {name} de {provider}?"
|
||||
},
|
||||
"authSettings.deleteTitle": {
|
||||
"defaultMessage": "Eliminar credencial"
|
||||
},
|
||||
"authSettings.deleted": {
|
||||
"defaultMessage": "Credencial eliminada"
|
||||
},
|
||||
"authSettings.description": {
|
||||
"defaultMessage": "Gestiona las credenciales de proveedores que goose guarda localmente."
|
||||
},
|
||||
|
|
@ -98,12 +107,12 @@
|
|||
"authSettings.reauthorize": {
|
||||
"defaultMessage": "Volver a autorizar"
|
||||
},
|
||||
"authSettings.signedIn": {
|
||||
"defaultMessage": "Credencial configurada"
|
||||
},
|
||||
"authSettings.signIn": {
|
||||
"defaultMessage": "Iniciar sesión"
|
||||
},
|
||||
"authSettings.signedIn": {
|
||||
"defaultMessage": "Credencial configurada"
|
||||
},
|
||||
"authSettings.storageProviderCache": {
|
||||
"defaultMessage": "Caché del proveedor"
|
||||
},
|
||||
|
|
@ -122,12 +131,6 @@
|
|||
"baseChat.goHome": {
|
||||
"defaultMessage": "Ir al inicio"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForNewChats": {
|
||||
"defaultMessage": "Extensiones para chats nuevos"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForThisSession": {
|
||||
"defaultMessage": "Extensiones para esta sesión de chat"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionUpdated": {
|
||||
"defaultMessage": "Extensión actualizada"
|
||||
},
|
||||
|
|
@ -137,6 +140,12 @@
|
|||
"bottomMenuExtensionSelection.extensionWillBeEnabled": {
|
||||
"defaultMessage": "{name} se activará en los chats nuevos"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForNewChats": {
|
||||
"defaultMessage": "Extensiones para chats nuevos"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForThisSession": {
|
||||
"defaultMessage": "Extensiones para esta sesión de chat"
|
||||
},
|
||||
"bottomMenuExtensionSelection.manageExtensions": {
|
||||
"defaultMessage": "administrar extensiones"
|
||||
},
|
||||
|
|
@ -638,12 +647,12 @@
|
|||
"customProviderForm.attachments": {
|
||||
"defaultMessage": "Adjuntos"
|
||||
},
|
||||
"customProviderForm.authentication": {
|
||||
"defaultMessage": "Autenticación"
|
||||
},
|
||||
"customProviderForm.authHint": {
|
||||
"defaultMessage": "Los LLM locales como Ollama normalmente no requieren una API key."
|
||||
},
|
||||
"customProviderForm.authentication": {
|
||||
"defaultMessage": "Autenticación"
|
||||
},
|
||||
"customProviderForm.availableModels": {
|
||||
"defaultMessage": "Modelos disponibles (separados por comas)"
|
||||
},
|
||||
|
|
@ -941,21 +950,18 @@
|
|||
"elicitationRequest.waitingForResponse": {
|
||||
"defaultMessage": "Esperando tu respuesta ({timeRemaining} restantes)"
|
||||
},
|
||||
"environmentBadge.dev": {
|
||||
"defaultMessage": "Dev"
|
||||
},
|
||||
"envVarsSection.add": {
|
||||
"defaultMessage": "Añadir"
|
||||
},
|
||||
"envVarsSection.bothRequired": {
|
||||
"defaultMessage": "Debes introducir tanto el nombre como el valor de la variable"
|
||||
},
|
||||
"envVarsSection.environmentVariables": {
|
||||
"defaultMessage": "Variables de entorno"
|
||||
},
|
||||
"envVarsSection.envVarsDescription": {
|
||||
"defaultMessage": "Añade pares clave-valor para variables de entorno. Haz clic en el botón \"+\" para añadir después de rellenar ambos campos. Para valores secretos existentes, haz clic en el botón de editar para modificarlos."
|
||||
},
|
||||
"envVarsSection.environmentVariables": {
|
||||
"defaultMessage": "Variables de entorno"
|
||||
},
|
||||
"envVarsSection.noSpaces": {
|
||||
"defaultMessage": "El nombre de la variable no puede contener espacios"
|
||||
},
|
||||
|
|
@ -965,6 +971,9 @@
|
|||
"envVarsSection.variableName": {
|
||||
"defaultMessage": "Nombre de la variable"
|
||||
},
|
||||
"environmentBadge.dev": {
|
||||
"defaultMessage": "Dev"
|
||||
},
|
||||
"errorBoundary.errorGeneric": {
|
||||
"defaultMessage": "Ocurrió un error."
|
||||
},
|
||||
|
|
@ -1124,6 +1133,9 @@
|
|||
"extensionModal.unsavedChangesTitle": {
|
||||
"defaultMessage": "Cambios sin guardar"
|
||||
},
|
||||
"extensionTimeoutField.timeoutLabel": {
|
||||
"defaultMessage": "Tiempo de espera"
|
||||
},
|
||||
"extensionsSection.addCustomExtension": {
|
||||
"defaultMessage": "Añadir extensión personalizada"
|
||||
},
|
||||
|
|
@ -1160,9 +1172,6 @@
|
|||
"extensionsView.searchPlaceholder": {
|
||||
"defaultMessage": "Buscar extensiones..."
|
||||
},
|
||||
"extensionTimeoutField.timeoutLabel": {
|
||||
"defaultMessage": "Tiempo de espera"
|
||||
},
|
||||
"externalBackendSection.certFingerprint": {
|
||||
"defaultMessage": "Huella del certificado (opcional)"
|
||||
},
|
||||
|
|
@ -1382,12 +1391,12 @@
|
|||
"huggingFaceSignInPrompt.failedToConfigure": {
|
||||
"defaultMessage": "No se pudo iniciar sesión en Hugging Face: {error}"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signedIn": {
|
||||
"defaultMessage": "Sesión iniciada en Hugging Face"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signIn": {
|
||||
"defaultMessage": "Iniciar sesión"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signedIn": {
|
||||
"defaultMessage": "Sesión iniciada en Hugging Face"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signingIn": {
|
||||
"defaultMessage": "Iniciando sesión..."
|
||||
},
|
||||
|
|
@ -1421,15 +1430,15 @@
|
|||
"importRecipeForm.expectedRecipeStructure": {
|
||||
"defaultMessage": "Estructura esperada de la receta"
|
||||
},
|
||||
"importRecipeForm.importing": {
|
||||
"defaultMessage": "Importando..."
|
||||
},
|
||||
"importRecipeForm.importRecipeButton": {
|
||||
"defaultMessage": "Importar receta"
|
||||
},
|
||||
"importRecipeForm.importRecipeTitle": {
|
||||
"defaultMessage": "Importar receta"
|
||||
},
|
||||
"importRecipeForm.importing": {
|
||||
"defaultMessage": "Importando..."
|
||||
},
|
||||
"importRecipeForm.or": {
|
||||
"defaultMessage": "O"
|
||||
},
|
||||
|
|
@ -1529,6 +1538,18 @@
|
|||
"jsonSchemaForm.submit": {
|
||||
"defaultMessage": "Enviar"
|
||||
},
|
||||
"keyValueEditor.addValue": {
|
||||
"defaultMessage": "Añadir valor preconfigurado"
|
||||
},
|
||||
"keyValueEditor.defaultKeyPlaceholder": {
|
||||
"defaultMessage": "Nombre del parámetro..."
|
||||
},
|
||||
"keyValueEditor.defaultValuePlaceholder": {
|
||||
"defaultMessage": "Valor del parámetro..."
|
||||
},
|
||||
"keyValueEditor.removeValue": {
|
||||
"defaultMessage": "Quitar valor preconfigurado {key}"
|
||||
},
|
||||
"keyboardShortcuts.alwaysOnTopDescription": {
|
||||
"defaultMessage": "Alternar ventana siempre visible"
|
||||
},
|
||||
|
|
@ -1673,18 +1694,6 @@
|
|||
"keyboardShortcuts.toggleNavigationLabel": {
|
||||
"defaultMessage": "Alternar navegación"
|
||||
},
|
||||
"keyValueEditor.addValue": {
|
||||
"defaultMessage": "Añadir valor preconfigurado"
|
||||
},
|
||||
"keyValueEditor.defaultKeyPlaceholder": {
|
||||
"defaultMessage": "Nombre del parámetro..."
|
||||
},
|
||||
"keyValueEditor.defaultValuePlaceholder": {
|
||||
"defaultMessage": "Valor del parámetro..."
|
||||
},
|
||||
"keyValueEditor.removeValue": {
|
||||
"defaultMessage": "Quitar valor preconfigurado {key}"
|
||||
},
|
||||
"launcher.placeholder": {
|
||||
"defaultMessage": "Pregúntale lo que sea a goose..."
|
||||
},
|
||||
|
|
@ -1724,18 +1733,18 @@
|
|||
"localInferenceSettings.downloadCancelled": {
|
||||
"defaultMessage": "Descarga cancelada"
|
||||
},
|
||||
"localInferenceSettings.downloadedModels": {
|
||||
"defaultMessage": "Modelos descargados"
|
||||
},
|
||||
"localInferenceSettings.downloadFailed": {
|
||||
"defaultMessage": "La descarga falló"
|
||||
},
|
||||
"localInferenceSettings.downloading": {
|
||||
"defaultMessage": "Descargando"
|
||||
},
|
||||
"localInferenceSettings.downloadProgress": {
|
||||
"defaultMessage": "{downloaded} / {total} ({percent}%)"
|
||||
},
|
||||
"localInferenceSettings.downloadedModels": {
|
||||
"defaultMessage": "Modelos descargados"
|
||||
},
|
||||
"localInferenceSettings.downloading": {
|
||||
"defaultMessage": "Descargando"
|
||||
},
|
||||
"localInferenceSettings.evictFromMemory": {
|
||||
"defaultMessage": "Evict from memory"
|
||||
},
|
||||
|
|
@ -1823,12 +1832,12 @@
|
|||
"localModelPicker.checkingModels": {
|
||||
"defaultMessage": "Comprobando modelos disponibles..."
|
||||
},
|
||||
"localModelPicker.downloading": {
|
||||
"defaultMessage": "Descargando {modelId}"
|
||||
},
|
||||
"localModelPicker.downloadModel": {
|
||||
"defaultMessage": "Descargar {modelId} ({size})"
|
||||
},
|
||||
"localModelPicker.downloading": {
|
||||
"defaultMessage": "Descargando {modelId}"
|
||||
},
|
||||
"localModelPicker.failedToLoad": {
|
||||
"defaultMessage": "No se pudieron cargar los modelos disponibles. Inténtalo de nuevo."
|
||||
},
|
||||
|
|
@ -1991,9 +2000,6 @@
|
|||
"messageQueue.paused": {
|
||||
"defaultMessage": "Pausado"
|
||||
},
|
||||
"messageQueue.queued": {
|
||||
"defaultMessage": "en cola"
|
||||
},
|
||||
"messageQueue.queuePaused": {
|
||||
"defaultMessage": "Cola pausada"
|
||||
},
|
||||
|
|
@ -2003,6 +2009,9 @@
|
|||
"messageQueue.queuePausedExpanded": {
|
||||
"defaultMessage": "Cola pausada por interrupción. Usa \"Enviar ahora\" o añade un nuevo mensaje para reanudar."
|
||||
},
|
||||
"messageQueue.queued": {
|
||||
"defaultMessage": "en cola"
|
||||
},
|
||||
"messageQueue.removeFromQueue": {
|
||||
"defaultMessage": "Quitar este mensaje de la cola"
|
||||
},
|
||||
|
|
@ -2093,12 +2102,36 @@
|
|||
"microphoneSelector.test": {
|
||||
"defaultMessage": "Probar"
|
||||
},
|
||||
"modelAndProviderContext.modelChangedTitle": {
|
||||
"defaultMessage": "Modelo cambiado"
|
||||
"modeSelectionItem.autonomousDescription": {
|
||||
"defaultMessage": "Capacidades completas de modificación de archivos: edita, crea y elimina archivos libremente."
|
||||
},
|
||||
"modeSelectionItem.autonomousLabel": {
|
||||
"defaultMessage": "Autónomo"
|
||||
},
|
||||
"modeSelectionItem.chatOnlyDescription": {
|
||||
"defaultMessage": "Interactúa con el proveedor seleccionado sin usar herramientas ni extensiones."
|
||||
},
|
||||
"modeSelectionItem.chatOnlyLabel": {
|
||||
"defaultMessage": "Solo chat"
|
||||
},
|
||||
"modeSelectionItem.manualDescription": {
|
||||
"defaultMessage": "Todas las herramientas, extensiones y modificaciones de archivos requerirán aprobación humana"
|
||||
},
|
||||
"modeSelectionItem.manualLabel": {
|
||||
"defaultMessage": "Manual"
|
||||
},
|
||||
"modeSelectionItem.smartDescription": {
|
||||
"defaultMessage": "Determina de forma inteligente qué acciones necesitan aprobación según el nivel de riesgo"
|
||||
},
|
||||
"modeSelectionItem.smartLabel": {
|
||||
"defaultMessage": "Inteligente"
|
||||
},
|
||||
"modelAndProviderContext.modelChangeFailed": {
|
||||
"defaultMessage": "{provider}/{model} falló"
|
||||
},
|
||||
"modelAndProviderContext.modelChangedTitle": {
|
||||
"defaultMessage": "Modelo cambiado"
|
||||
},
|
||||
"modelAndProviderContext.selectModel": {
|
||||
"defaultMessage": "Seleccionar modelo"
|
||||
},
|
||||
|
|
@ -2111,27 +2144,6 @@
|
|||
"modelAndProviderContext.unknownProviderTitle": {
|
||||
"defaultMessage": "Búsqueda del nombre del proveedor"
|
||||
},
|
||||
"modelsBottomBar.changeModel": {
|
||||
"defaultMessage": "Cambiar modelo"
|
||||
},
|
||||
"modelsBottomBar.currentModel": {
|
||||
"defaultMessage": "Modelo actual"
|
||||
},
|
||||
"modelsBottomBar.loadingModel": {
|
||||
"defaultMessage": "Cargando modelo..."
|
||||
},
|
||||
"modelsBottomBar.localModelSettings": {
|
||||
"defaultMessage": "Ajustes del modelo local"
|
||||
},
|
||||
"modelsBottomBar.localModelSettingsTitle": {
|
||||
"defaultMessage": "Ajustes del modelo local — {modelName}"
|
||||
},
|
||||
"modelsBottomBar.resolvedModel": {
|
||||
"defaultMessage": "Modelo resuelto"
|
||||
},
|
||||
"modelsBottomBar.selectModel": {
|
||||
"defaultMessage": "Seleccionar modelo"
|
||||
},
|
||||
"modelSettingsButtons.configureProviders": {
|
||||
"defaultMessage": "Configurar proveedores"
|
||||
},
|
||||
|
|
@ -2291,36 +2303,33 @@
|
|||
"modelSettingsPanel.topP": {
|
||||
"defaultMessage": "Top P"
|
||||
},
|
||||
"modelsBottomBar.changeModel": {
|
||||
"defaultMessage": "Cambiar modelo"
|
||||
},
|
||||
"modelsBottomBar.currentModel": {
|
||||
"defaultMessage": "Modelo actual"
|
||||
},
|
||||
"modelsBottomBar.loadingModel": {
|
||||
"defaultMessage": "Cargando modelo..."
|
||||
},
|
||||
"modelsBottomBar.localModelSettings": {
|
||||
"defaultMessage": "Ajustes del modelo local"
|
||||
},
|
||||
"modelsBottomBar.localModelSettingsTitle": {
|
||||
"defaultMessage": "Ajustes del modelo local — {modelName}"
|
||||
},
|
||||
"modelsBottomBar.resolvedModel": {
|
||||
"defaultMessage": "Modelo resuelto"
|
||||
},
|
||||
"modelsBottomBar.selectModel": {
|
||||
"defaultMessage": "Seleccionar modelo"
|
||||
},
|
||||
"modelsSection.resetDescription": {
|
||||
"defaultMessage": "Borra el modelo y los ajustes de proveedor seleccionados para empezar de cero"
|
||||
},
|
||||
"modelsSection.resetTitle": {
|
||||
"defaultMessage": "Restablecer proveedor y modelo"
|
||||
},
|
||||
"modeSelectionItem.autonomousDescription": {
|
||||
"defaultMessage": "Capacidades completas de modificación de archivos: edita, crea y elimina archivos libremente."
|
||||
},
|
||||
"modeSelectionItem.autonomousLabel": {
|
||||
"defaultMessage": "Autónomo"
|
||||
},
|
||||
"modeSelectionItem.chatOnlyDescription": {
|
||||
"defaultMessage": "Interactúa con el proveedor seleccionado sin usar herramientas ni extensiones."
|
||||
},
|
||||
"modeSelectionItem.chatOnlyLabel": {
|
||||
"defaultMessage": "Solo chat"
|
||||
},
|
||||
"modeSelectionItem.manualDescription": {
|
||||
"defaultMessage": "Todas las herramientas, extensiones y modificaciones de archivos requerirán aprobación humana"
|
||||
},
|
||||
"modeSelectionItem.manualLabel": {
|
||||
"defaultMessage": "Manual"
|
||||
},
|
||||
"modeSelectionItem.smartDescription": {
|
||||
"defaultMessage": "Determina de forma inteligente qué acciones necesitan aprobación según el nivel de riesgo"
|
||||
},
|
||||
"modeSelectionItem.smartLabel": {
|
||||
"defaultMessage": "Inteligente"
|
||||
},
|
||||
"navigation.itemApps": {
|
||||
"defaultMessage": "Apps"
|
||||
},
|
||||
|
|
@ -2600,12 +2609,12 @@
|
|||
"promptsSettings.edit": {
|
||||
"defaultMessage": "Editar"
|
||||
},
|
||||
"promptsSettings.editingLabel": {
|
||||
"defaultMessage": "Editando: {name}"
|
||||
},
|
||||
"promptsSettings.editPromptTitle": {
|
||||
"defaultMessage": "Editar: {name}"
|
||||
},
|
||||
"promptsSettings.editingLabel": {
|
||||
"defaultMessage": "Editando: {name}"
|
||||
},
|
||||
"promptsSettings.enterPromptContent": {
|
||||
"defaultMessage": "Introduce el contenido del prompt..."
|
||||
},
|
||||
|
|
@ -2714,12 +2723,12 @@
|
|||
"providerConfigForm.noApiKey": {
|
||||
"defaultMessage": "¿No tienes una clave de API?"
|
||||
},
|
||||
"providerConfigForm.signingIn": {
|
||||
"defaultMessage": "Iniciando sesión..."
|
||||
},
|
||||
"providerConfigForm.signInWith": {
|
||||
"defaultMessage": "Iniciar sesión con {providerName}"
|
||||
},
|
||||
"providerConfigForm.signingIn": {
|
||||
"defaultMessage": "Iniciando sesión..."
|
||||
},
|
||||
"providerConfigurationModal.addApiKeyDescription": {
|
||||
"defaultMessage": "Añade tu(s) clave(s) de API de este proveedor para integrarlo en goose"
|
||||
},
|
||||
|
|
@ -2780,12 +2789,12 @@
|
|||
"providerConfigurationModal.seeDocumentation": {
|
||||
"defaultMessage": "Consulta la <link>documentación</link> para más detalles."
|
||||
},
|
||||
"providerConfigurationModal.signingIn": {
|
||||
"defaultMessage": "Iniciando sesión..."
|
||||
},
|
||||
"providerConfigurationModal.signInWith": {
|
||||
"defaultMessage": "Iniciar sesión con {providerName}"
|
||||
},
|
||||
"providerConfigurationModal.signingIn": {
|
||||
"defaultMessage": "Iniciando sesión..."
|
||||
},
|
||||
"providerGrid.addProvider": {
|
||||
"defaultMessage": "Añadir proveedor"
|
||||
},
|
||||
|
|
@ -3014,6 +3023,39 @@
|
|||
"recipeNameField.formatHint": {
|
||||
"defaultMessage": "Se formateará automáticamente (minúsculas, guiones en lugar de espacios)"
|
||||
},
|
||||
"recipeWarningModal.cancel": {
|
||||
"defaultMessage": "Cancelar"
|
||||
},
|
||||
"recipeWarningModal.descriptionLabel": {
|
||||
"defaultMessage": "Descripción:"
|
||||
},
|
||||
"recipeWarningModal.firstTimeDescription": {
|
||||
"defaultMessage": "Estás a punto de ejecutar una receta que no has ejecutado antes."
|
||||
},
|
||||
"recipeWarningModal.hiddenCharsWarning": {
|
||||
"defaultMessage": "Esta receta contiene caracteres ocultos que se ignorarán por tu seguridad, ya que podrían usarse con fines maliciosos."
|
||||
},
|
||||
"recipeWarningModal.instructionsLabel": {
|
||||
"defaultMessage": "Instrucciones:"
|
||||
},
|
||||
"recipeWarningModal.newRecipeWarningTitle": {
|
||||
"defaultMessage": "⚠️ Advertencia de receta nueva"
|
||||
},
|
||||
"recipeWarningModal.recipePreview": {
|
||||
"defaultMessage": "Vista previa de la receta:"
|
||||
},
|
||||
"recipeWarningModal.securityWarningTitle": {
|
||||
"defaultMessage": "⚠️ Advertencia de seguridad"
|
||||
},
|
||||
"recipeWarningModal.titleLabel": {
|
||||
"defaultMessage": "Título:"
|
||||
},
|
||||
"recipeWarningModal.trustAndExecute": {
|
||||
"defaultMessage": "Confiar y ejecutar"
|
||||
},
|
||||
"recipeWarningModal.trustSource": {
|
||||
"defaultMessage": "Continúa solo si confías en el origen de esta receta."
|
||||
},
|
||||
"recipesView.addSchedule": {
|
||||
"defaultMessage": "Añadir programación"
|
||||
},
|
||||
|
|
@ -3188,39 +3230,6 @@
|
|||
"recipesView.yamlFiles": {
|
||||
"defaultMessage": "Archivos YAML"
|
||||
},
|
||||
"recipeWarningModal.cancel": {
|
||||
"defaultMessage": "Cancelar"
|
||||
},
|
||||
"recipeWarningModal.descriptionLabel": {
|
||||
"defaultMessage": "Descripción:"
|
||||
},
|
||||
"recipeWarningModal.firstTimeDescription": {
|
||||
"defaultMessage": "Estás a punto de ejecutar una receta que no has ejecutado antes."
|
||||
},
|
||||
"recipeWarningModal.hiddenCharsWarning": {
|
||||
"defaultMessage": "Esta receta contiene caracteres ocultos que se ignorarán por tu seguridad, ya que podrían usarse con fines maliciosos."
|
||||
},
|
||||
"recipeWarningModal.instructionsLabel": {
|
||||
"defaultMessage": "Instrucciones:"
|
||||
},
|
||||
"recipeWarningModal.newRecipeWarningTitle": {
|
||||
"defaultMessage": "⚠️ Advertencia de receta nueva"
|
||||
},
|
||||
"recipeWarningModal.recipePreview": {
|
||||
"defaultMessage": "Vista previa de la receta:"
|
||||
},
|
||||
"recipeWarningModal.securityWarningTitle": {
|
||||
"defaultMessage": "⚠️ Advertencia de seguridad"
|
||||
},
|
||||
"recipeWarningModal.titleLabel": {
|
||||
"defaultMessage": "Título:"
|
||||
},
|
||||
"recipeWarningModal.trustAndExecute": {
|
||||
"defaultMessage": "Confiar y ejecutar"
|
||||
},
|
||||
"recipeWarningModal.trustSource": {
|
||||
"defaultMessage": "Continúa solo si confías en el origen de esta receta."
|
||||
},
|
||||
"resetProviderSection.resetButton": {
|
||||
"defaultMessage": "Restablecer proveedor y modelo"
|
||||
},
|
||||
|
|
@ -3254,12 +3263,12 @@
|
|||
"scheduleDetailView.cronExpression": {
|
||||
"defaultMessage": "Expresión cron:"
|
||||
},
|
||||
"scheduleDetailView.currentlyRunning": {
|
||||
"defaultMessage": "Ejecutándose ahora"
|
||||
},
|
||||
"scheduleDetailView.currentSession": {
|
||||
"defaultMessage": "Sesión actual:"
|
||||
},
|
||||
"scheduleDetailView.currentlyRunning": {
|
||||
"defaultMessage": "Ejecutándose ahora"
|
||||
},
|
||||
"scheduleDetailView.dir": {
|
||||
"defaultMessage": "Dir: {path}"
|
||||
},
|
||||
|
|
@ -3317,6 +3326,12 @@
|
|||
"scheduleDetailView.noSessions": {
|
||||
"defaultMessage": "No se encontraron sesiones para esta programación."
|
||||
},
|
||||
"scheduleDetailView.pauseSchedule": {
|
||||
"defaultMessage": "Pausar programación"
|
||||
},
|
||||
"scheduleDetailView.pauseUnpauseError": {
|
||||
"defaultMessage": "Error al pausar/reanudar"
|
||||
},
|
||||
"scheduleDetailView.paused": {
|
||||
"defaultMessage": "En pausa"
|
||||
},
|
||||
|
|
@ -3326,12 +3341,6 @@
|
|||
"scheduleDetailView.pausedWarning": {
|
||||
"defaultMessage": "Esta programación está en pausa y no se ejecutará automáticamente. Usa \"Ejecutar programación ahora\" para activarla manualmente o reanúdala para retomar la ejecución automática."
|
||||
},
|
||||
"scheduleDetailView.pauseSchedule": {
|
||||
"defaultMessage": "Pausar programación"
|
||||
},
|
||||
"scheduleDetailView.pauseUnpauseError": {
|
||||
"defaultMessage": "Error al pausar/reanudar"
|
||||
},
|
||||
"scheduleDetailView.processStarted": {
|
||||
"defaultMessage": "Proceso iniciado:"
|
||||
},
|
||||
|
|
@ -3377,18 +3386,18 @@
|
|||
"scheduleDetailView.sessionId": {
|
||||
"defaultMessage": "ID de sesión: {id}"
|
||||
},
|
||||
"scheduleDetailView.unpausedMsg": {
|
||||
"defaultMessage": "Reanudada \"{id}\""
|
||||
},
|
||||
"scheduleDetailView.unpauseSchedule": {
|
||||
"defaultMessage": "Reanudar programación"
|
||||
},
|
||||
"scheduleDetailView.updatedMsg": {
|
||||
"defaultMessage": "Actualizada \"{id}\""
|
||||
"scheduleDetailView.unpausedMsg": {
|
||||
"defaultMessage": "Reanudada \"{id}\""
|
||||
},
|
||||
"scheduleDetailView.updateScheduleError": {
|
||||
"defaultMessage": "Error al actualizar la programación"
|
||||
},
|
||||
"scheduleDetailView.updatedMsg": {
|
||||
"defaultMessage": "Actualizada \"{id}\""
|
||||
},
|
||||
"scheduleDetailView.viewingScheduleId": {
|
||||
"defaultMessage": "Viendo el ID de programación: {id}"
|
||||
},
|
||||
|
|
@ -3512,12 +3521,12 @@
|
|||
"schedulesView.pause": {
|
||||
"defaultMessage": "Pausar"
|
||||
},
|
||||
"schedulesView.paused": {
|
||||
"defaultMessage": "En pausa"
|
||||
},
|
||||
"schedulesView.pauseError": {
|
||||
"defaultMessage": "Error al pausar la programación"
|
||||
},
|
||||
"schedulesView.paused": {
|
||||
"defaultMessage": "En pausa"
|
||||
},
|
||||
"schedulesView.refresh": {
|
||||
"defaultMessage": "Actualizar"
|
||||
},
|
||||
|
|
@ -3536,9 +3545,6 @@
|
|||
"schedulesView.schedulePausedMsg": {
|
||||
"defaultMessage": "Se pausó correctamente la programación \"{id}\""
|
||||
},
|
||||
"schedulesView.scheduler": {
|
||||
"defaultMessage": "Programador"
|
||||
},
|
||||
"schedulesView.scheduleUnpaused": {
|
||||
"defaultMessage": "Programación reanudada"
|
||||
},
|
||||
|
|
@ -3551,6 +3557,9 @@
|
|||
"schedulesView.scheduleUpdatedMsg": {
|
||||
"defaultMessage": "Se actualizó correctamente la programación \"{id}\""
|
||||
},
|
||||
"schedulesView.scheduler": {
|
||||
"defaultMessage": "Programador"
|
||||
},
|
||||
"schedulesView.unpauseError": {
|
||||
"defaultMessage": "Error al reanudar la programación"
|
||||
},
|
||||
|
|
@ -3653,15 +3662,15 @@
|
|||
"sessionActionsHeader.copyText": {
|
||||
"defaultMessage": "Copiar texto"
|
||||
},
|
||||
"sessionActionsHeader.duplicated": {
|
||||
"defaultMessage": "Sesión duplicada"
|
||||
},
|
||||
"sessionActionsHeader.duplicateFailed": {
|
||||
"defaultMessage": "No se pudo duplicar la sesión: {error}"
|
||||
},
|
||||
"sessionActionsHeader.duplicateSession": {
|
||||
"defaultMessage": "Duplicar sesión"
|
||||
},
|
||||
"sessionActionsHeader.duplicated": {
|
||||
"defaultMessage": "Sesión duplicada"
|
||||
},
|
||||
"sessionActionsHeader.fullTextTitle": {
|
||||
"defaultMessage": "Valor del texto"
|
||||
},
|
||||
|
|
@ -3674,9 +3683,6 @@
|
|||
"sessionActionsHeader.loadingJson": {
|
||||
"defaultMessage": "Cargando JSON..."
|
||||
},
|
||||
"sessionActionsHeader.renamed": {
|
||||
"defaultMessage": "Sesión renombrada"
|
||||
},
|
||||
"sessionActionsHeader.renameFailed": {
|
||||
"defaultMessage": "No se pudo renombrar la sesión: {error}"
|
||||
},
|
||||
|
|
@ -3689,6 +3695,9 @@
|
|||
"sessionActionsHeader.renameTitle": {
|
||||
"defaultMessage": "Renombrar sesión"
|
||||
},
|
||||
"sessionActionsHeader.renamed": {
|
||||
"defaultMessage": "Sesión renombrada"
|
||||
},
|
||||
"sessionActionsHeader.save": {
|
||||
"defaultMessage": "Guardar"
|
||||
},
|
||||
|
|
@ -3707,6 +3716,24 @@
|
|||
"sessionIndicators.streaming": {
|
||||
"defaultMessage": "Streaming"
|
||||
},
|
||||
"sessionViewComponents.empty.description": {
|
||||
"defaultMessage": "Esta sesión no contiene ningún mensaje"
|
||||
},
|
||||
"sessionViewComponents.empty.title": {
|
||||
"defaultMessage": "No se encontraron mensajes"
|
||||
},
|
||||
"sessionViewComponents.error.loading": {
|
||||
"defaultMessage": "Error al cargar los detalles de la sesión"
|
||||
},
|
||||
"sessionViewComponents.error.tryAgain": {
|
||||
"defaultMessage": "Reintentar"
|
||||
},
|
||||
"sessionViewComponents.role.assistant": {
|
||||
"defaultMessage": "Goose"
|
||||
},
|
||||
"sessionViewComponents.role.user": {
|
||||
"defaultMessage": "Tú"
|
||||
},
|
||||
"sessions.action.delete": {
|
||||
"defaultMessage": "Eliminar sesión"
|
||||
},
|
||||
|
|
@ -3764,9 +3791,6 @@
|
|||
"sessions.import": {
|
||||
"defaultMessage": "Importar sesión"
|
||||
},
|
||||
"sessions.importing": {
|
||||
"defaultMessage": "Importando..."
|
||||
},
|
||||
"sessions.importNostr": {
|
||||
"defaultMessage": "Importar enlace"
|
||||
},
|
||||
|
|
@ -3779,6 +3803,9 @@
|
|||
"sessions.importNostr.title": {
|
||||
"defaultMessage": "Importar sesión de Nostr"
|
||||
},
|
||||
"sessions.importing": {
|
||||
"defaultMessage": "Importando..."
|
||||
},
|
||||
"sessions.loadingMore": {
|
||||
"defaultMessage": "Cargando más sesiones..."
|
||||
},
|
||||
|
|
@ -3806,56 +3833,38 @@
|
|||
"sessions.toast.copied": {
|
||||
"defaultMessage": "Copiado al portapapeles"
|
||||
},
|
||||
"sessions.toast.deleted": {
|
||||
"defaultMessage": "Sesión eliminada correctamente"
|
||||
},
|
||||
"sessions.toast.deleteFailed": {
|
||||
"defaultMessage": "No se pudo eliminar la sesión \"{name}\": {error}"
|
||||
},
|
||||
"sessions.toast.duplicated": {
|
||||
"defaultMessage": "Sesión \"{name}\" duplicada correctamente"
|
||||
"sessions.toast.deleted": {
|
||||
"defaultMessage": "Sesión eliminada correctamente"
|
||||
},
|
||||
"sessions.toast.duplicateFailed": {
|
||||
"defaultMessage": "No se pudo duplicar la sesión: {error}"
|
||||
},
|
||||
"sessions.toast.duplicated": {
|
||||
"defaultMessage": "Sesión \"{name}\" duplicada correctamente"
|
||||
},
|
||||
"sessions.toast.exported": {
|
||||
"defaultMessage": "Sesión exportada correctamente"
|
||||
},
|
||||
"sessions.toast.imported": {
|
||||
"defaultMessage": "Sesión importada correctamente"
|
||||
},
|
||||
"sessions.toast.importFailed": {
|
||||
"defaultMessage": "No se pudo importar la sesión: {error}"
|
||||
},
|
||||
"sessions.toast.imported": {
|
||||
"defaultMessage": "Sesión importada correctamente"
|
||||
},
|
||||
"sessions.toast.shareNostr": {
|
||||
"defaultMessage": "Enlace cifrado de Nostr creado para compartir"
|
||||
},
|
||||
"sessions.toast.shareNostrFailed": {
|
||||
"defaultMessage": "No se pudo crear el enlace de Nostr para compartir: {error}"
|
||||
},
|
||||
"sessions.toast.updated": {
|
||||
"defaultMessage": "Descripción de la sesión actualizada correctamente"
|
||||
},
|
||||
"sessions.toast.updateFailed": {
|
||||
"defaultMessage": "No se pudo actualizar la descripción de la sesión: {error}"
|
||||
},
|
||||
"sessionViewComponents.empty.description": {
|
||||
"defaultMessage": "Esta sesión no contiene ningún mensaje"
|
||||
},
|
||||
"sessionViewComponents.empty.title": {
|
||||
"defaultMessage": "No se encontraron mensajes"
|
||||
},
|
||||
"sessionViewComponents.error.loading": {
|
||||
"defaultMessage": "Error al cargar los detalles de la sesión"
|
||||
},
|
||||
"sessionViewComponents.error.tryAgain": {
|
||||
"defaultMessage": "Reintentar"
|
||||
},
|
||||
"sessionViewComponents.role.assistant": {
|
||||
"defaultMessage": "Goose"
|
||||
},
|
||||
"sessionViewComponents.role.user": {
|
||||
"defaultMessage": "Tú"
|
||||
"sessions.toast.updated": {
|
||||
"defaultMessage": "Descripción de la sesión actualizada correctamente"
|
||||
},
|
||||
"settings.appearance.description": {
|
||||
"defaultMessage": "Configura cómo se ve goose en tu sistema"
|
||||
|
|
@ -4397,12 +4406,12 @@
|
|||
"themeSelector.theme": {
|
||||
"defaultMessage": "Tema"
|
||||
},
|
||||
"toolApprovalButtons.allowedOnce": {
|
||||
"defaultMessage": "Permitido una vez"
|
||||
},
|
||||
"toolApprovalButtons.allowOnce": {
|
||||
"defaultMessage": "Permitir una vez"
|
||||
},
|
||||
"toolApprovalButtons.allowedOnce": {
|
||||
"defaultMessage": "Permitido una vez"
|
||||
},
|
||||
"toolApprovalButtons.alwaysAllow": {
|
||||
"defaultMessage": "Permitir siempre"
|
||||
},
|
||||
|
|
@ -4484,18 +4493,18 @@
|
|||
"updateSection.disableAutoDownloadDesc": {
|
||||
"defaultMessage": "Cuando está activado, Goose te avisará de nuevas versiones pero no las descargará automáticamente."
|
||||
},
|
||||
"updateSection.downloadingProgress": {
|
||||
"defaultMessage": "Descargando actualización... {percent}%"
|
||||
},
|
||||
"updateSection.downloadingUpdate": {
|
||||
"defaultMessage": "Descargando actualización..."
|
||||
},
|
||||
"updateSection.downloadNow": {
|
||||
"defaultMessage": "Descargar ahora"
|
||||
},
|
||||
"updateSection.downloadReady": {
|
||||
"defaultMessage": "¡Actualización descargada y lista para instalar!"
|
||||
},
|
||||
"updateSection.downloadingProgress": {
|
||||
"defaultMessage": "Descargando actualización... {percent}%"
|
||||
},
|
||||
"updateSection.downloadingUpdate": {
|
||||
"defaultMessage": "Descargando actualización..."
|
||||
},
|
||||
"updateSection.installAndRestart": {
|
||||
"defaultMessage": "Instalar y reiniciar"
|
||||
},
|
||||
|
|
@ -4520,12 +4529,12 @@
|
|||
"updateSection.readyInstallManual": {
|
||||
"defaultMessage": "✓ ¡La actualización está lista! Haz clic en \"Instalar y reiniciar\" para ver las instrucciones de instalación."
|
||||
},
|
||||
"updateSection.updateAvailable": {
|
||||
"defaultMessage": "¡Actualización disponible!"
|
||||
},
|
||||
"updateSection.upToDate": {
|
||||
"defaultMessage": "(actualizado)"
|
||||
},
|
||||
"updateSection.updateAvailable": {
|
||||
"defaultMessage": "¡Actualización disponible!"
|
||||
},
|
||||
"updateSection.versionAvailable": {
|
||||
"defaultMessage": "→ {version} disponible"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -20,12 +20,21 @@
|
|||
"appsView.customApp": {
|
||||
"defaultMessage": "Application personnalisée"
|
||||
},
|
||||
"appsView.deleteApp": {
|
||||
"defaultMessage": "Delete app"
|
||||
},
|
||||
"appsView.deleteConfirm": {
|
||||
"defaultMessage": "Delete \"{name}\"? This cannot be undone."
|
||||
},
|
||||
"appsView.description": {
|
||||
"defaultMessage": "Applications provenant de vos serveurs MCP et applications créées par goose lui-même. Vous pouvez lui demander de créer de nouvelles applications via l'interface de chat et elles apparaîtront ici."
|
||||
},
|
||||
"appsView.errorLoading": {
|
||||
"defaultMessage": "Erreur lors du chargement des applications : {error}"
|
||||
},
|
||||
"appsView.errorPrefix": {
|
||||
"defaultMessage": "Error: {error}"
|
||||
},
|
||||
"appsView.importApp": {
|
||||
"defaultMessage": "Importer une application"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -20,12 +20,21 @@
|
|||
"appsView.customApp": {
|
||||
"defaultMessage": "कस्टम ऐप"
|
||||
},
|
||||
"appsView.deleteApp": {
|
||||
"defaultMessage": "Delete app"
|
||||
},
|
||||
"appsView.deleteConfirm": {
|
||||
"defaultMessage": "Delete \"{name}\"? This cannot be undone."
|
||||
},
|
||||
"appsView.description": {
|
||||
"defaultMessage": "आपके MCP सर्वर से एप्लिकेशन और goose द्वारा निर्मित ऐप्स। आप इसे चैट इंटरफ़ेस के माध्यम से नए ऐप्स बनाने के लिए कह सकते हैं और वे यहां दिखाई देंगे।"
|
||||
},
|
||||
"appsView.errorLoading": {
|
||||
"defaultMessage": "ऐप्स लोड करने में त्रुटि: {error}"
|
||||
},
|
||||
"appsView.errorPrefix": {
|
||||
"defaultMessage": "Error: {error}"
|
||||
},
|
||||
"appsView.importApp": {
|
||||
"defaultMessage": "ऐप आयात करें"
|
||||
},
|
||||
|
|
@ -41,15 +50,15 @@
|
|||
"appsView.noAppsTitle": {
|
||||
"defaultMessage": "कोई ऐप्स उपलब्ध नहीं"
|
||||
},
|
||||
"appsView.retry": {
|
||||
"defaultMessage": "पुनः प्रयास करें"
|
||||
},
|
||||
"appsView.retiredChatApp": {
|
||||
"defaultMessage": "Chat app retired"
|
||||
},
|
||||
"appsView.retiredChatAppDetail": {
|
||||
"defaultMessage": "We removed this feature because MCP sampling is no longer supported."
|
||||
},
|
||||
"appsView.retry": {
|
||||
"defaultMessage": "पुनः प्रयास करें"
|
||||
},
|
||||
"appsView.title": {
|
||||
"defaultMessage": "ऐप्स"
|
||||
},
|
||||
|
|
@ -65,15 +74,15 @@
|
|||
"authSettings.deleteCredential": {
|
||||
"defaultMessage": "क्रेडेंशियल हटाएँ"
|
||||
},
|
||||
"authSettings.deleted": {
|
||||
"defaultMessage": "क्रेडेंशियल हटा दिया गया"
|
||||
},
|
||||
"authSettings.deleteMessage": {
|
||||
"defaultMessage": "{provider} के लिए {name} क्रेडेंशियल हटाएं?"
|
||||
},
|
||||
"authSettings.deleteTitle": {
|
||||
"defaultMessage": "क्रेडेंशियल हटाएँ"
|
||||
},
|
||||
"authSettings.deleted": {
|
||||
"defaultMessage": "क्रेडेंशियल हटा दिया गया"
|
||||
},
|
||||
"authSettings.description": {
|
||||
"defaultMessage": "goose द्वारा स्थानीय रूप से संग्रहीत प्रदाता क्रेडेंशियल प्रबंधित करें।"
|
||||
},
|
||||
|
|
@ -98,12 +107,12 @@
|
|||
"authSettings.reauthorize": {
|
||||
"defaultMessage": "पुन: प्राधिकृत करें"
|
||||
},
|
||||
"authSettings.signedIn": {
|
||||
"defaultMessage": "क्रेडेंशियल कॉन्फ़िगर किया गया"
|
||||
},
|
||||
"authSettings.signIn": {
|
||||
"defaultMessage": "साइन इन करें"
|
||||
},
|
||||
"authSettings.signedIn": {
|
||||
"defaultMessage": "क्रेडेंशियल कॉन्फ़िगर किया गया"
|
||||
},
|
||||
"authSettings.storageProviderCache": {
|
||||
"defaultMessage": "प्रदाता कैश"
|
||||
},
|
||||
|
|
@ -122,12 +131,6 @@
|
|||
"baseChat.goHome": {
|
||||
"defaultMessage": "घर जाओ"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForNewChats": {
|
||||
"defaultMessage": "नई चैट के लिए एक्सटेंशन"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForThisSession": {
|
||||
"defaultMessage": "इस चैट सत्र के लिए एक्सटेंशन"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionUpdated": {
|
||||
"defaultMessage": "एक्सटेंशन अपडेट किया गया"
|
||||
},
|
||||
|
|
@ -137,6 +140,12 @@
|
|||
"bottomMenuExtensionSelection.extensionWillBeEnabled": {
|
||||
"defaultMessage": "नई चैट में {name} सक्षम किया जाएगा"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForNewChats": {
|
||||
"defaultMessage": "नई चैट के लिए एक्सटेंशन"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForThisSession": {
|
||||
"defaultMessage": "इस चैट सत्र के लिए एक्सटेंशन"
|
||||
},
|
||||
"bottomMenuExtensionSelection.manageExtensions": {
|
||||
"defaultMessage": "एक्सटेंशन प्रबंधित करें"
|
||||
},
|
||||
|
|
@ -638,12 +647,12 @@
|
|||
"customProviderForm.attachments": {
|
||||
"defaultMessage": "अनुलग्नक"
|
||||
},
|
||||
"customProviderForm.authentication": {
|
||||
"defaultMessage": "प्रमाणीकरण"
|
||||
},
|
||||
"customProviderForm.authHint": {
|
||||
"defaultMessage": "Ollama जैसे स्थानीय एलएलएम को आमतौर पर API कुंजी की आवश्यकता नहीं होती है।"
|
||||
},
|
||||
"customProviderForm.authentication": {
|
||||
"defaultMessage": "प्रमाणीकरण"
|
||||
},
|
||||
"customProviderForm.availableModels": {
|
||||
"defaultMessage": "उपलब्ध मॉडल (अल्पविराम से अलग)"
|
||||
},
|
||||
|
|
@ -941,21 +950,18 @@
|
|||
"elicitationRequest.waitingForResponse": {
|
||||
"defaultMessage": "आपकी प्रतिक्रिया की प्रतीक्षा में ({timeRemaining} शेष)"
|
||||
},
|
||||
"environmentBadge.dev": {
|
||||
"defaultMessage": "देव"
|
||||
},
|
||||
"envVarsSection.add": {
|
||||
"defaultMessage": "जोड़ें"
|
||||
},
|
||||
"envVarsSection.bothRequired": {
|
||||
"defaultMessage": "वेरिएबल नाम और मान दोनों दर्ज किए जाने चाहिए"
|
||||
},
|
||||
"envVarsSection.environmentVariables": {
|
||||
"defaultMessage": "पर्यावरण चर"
|
||||
},
|
||||
"envVarsSection.envVarsDescription": {
|
||||
"defaultMessage": "पर्यावरण चर के लिए कुंजी-मान जोड़े जोड़ें। दोनों फ़ील्ड भरने के बाद जोड़ने के लिए \"+\" बटन पर क्लिक करें। मौजूदा गुप्त मानों को संशोधित करने के लिए संपादन बटन पर क्लिक करें।"
|
||||
},
|
||||
"envVarsSection.environmentVariables": {
|
||||
"defaultMessage": "पर्यावरण चर"
|
||||
},
|
||||
"envVarsSection.noSpaces": {
|
||||
"defaultMessage": "वेरिएबल नाम में रिक्त स्थान नहीं हो सकते"
|
||||
},
|
||||
|
|
@ -965,6 +971,9 @@
|
|||
"envVarsSection.variableName": {
|
||||
"defaultMessage": "परिवर्तनीय नाम"
|
||||
},
|
||||
"environmentBadge.dev": {
|
||||
"defaultMessage": "देव"
|
||||
},
|
||||
"errorBoundary.errorGeneric": {
|
||||
"defaultMessage": "एक त्रुटि पाई गई।"
|
||||
},
|
||||
|
|
@ -1124,6 +1133,9 @@
|
|||
"extensionModal.unsavedChangesTitle": {
|
||||
"defaultMessage": "सहेजे न गए परिवर्तन"
|
||||
},
|
||||
"extensionTimeoutField.timeoutLabel": {
|
||||
"defaultMessage": "समयबाह्य"
|
||||
},
|
||||
"extensionsSection.addCustomExtension": {
|
||||
"defaultMessage": "कस्टम एक्सटेंशन जोड़ें"
|
||||
},
|
||||
|
|
@ -1160,9 +1172,6 @@
|
|||
"extensionsView.searchPlaceholder": {
|
||||
"defaultMessage": "एक्सटेंशन खोजें..."
|
||||
},
|
||||
"extensionTimeoutField.timeoutLabel": {
|
||||
"defaultMessage": "समयबाह्य"
|
||||
},
|
||||
"externalBackendSection.certFingerprint": {
|
||||
"defaultMessage": "प्रमाणपत्र फ़िंगरप्रिंट (वैकल्पिक)"
|
||||
},
|
||||
|
|
@ -1382,12 +1391,12 @@
|
|||
"huggingFaceSignInPrompt.failedToConfigure": {
|
||||
"defaultMessage": "हगिंग फेस में साइन इन करने में विफल: {error}"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signedIn": {
|
||||
"defaultMessage": "हगिंग फेस ने साइन इन किया"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signIn": {
|
||||
"defaultMessage": "साइन इन करें"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signedIn": {
|
||||
"defaultMessage": "हगिंग फेस ने साइन इन किया"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signingIn": {
|
||||
"defaultMessage": "साइन इन किया जा रहा है..."
|
||||
},
|
||||
|
|
@ -1421,15 +1430,15 @@
|
|||
"importRecipeForm.expectedRecipeStructure": {
|
||||
"defaultMessage": "अपेक्षित रेसिपी संरचना"
|
||||
},
|
||||
"importRecipeForm.importing": {
|
||||
"defaultMessage": "आयात किया जा रहा है..."
|
||||
},
|
||||
"importRecipeForm.importRecipeButton": {
|
||||
"defaultMessage": "रेसिपी आयात करें"
|
||||
},
|
||||
"importRecipeForm.importRecipeTitle": {
|
||||
"defaultMessage": "रेसिपी आयात करें"
|
||||
},
|
||||
"importRecipeForm.importing": {
|
||||
"defaultMessage": "आयात किया जा रहा है..."
|
||||
},
|
||||
"importRecipeForm.or": {
|
||||
"defaultMessage": "या"
|
||||
},
|
||||
|
|
@ -1529,6 +1538,18 @@
|
|||
"jsonSchemaForm.submit": {
|
||||
"defaultMessage": "सबमिट करें"
|
||||
},
|
||||
"keyValueEditor.addValue": {
|
||||
"defaultMessage": "पूर्व-कॉन्फ़िगर मान जोड़ें"
|
||||
},
|
||||
"keyValueEditor.defaultKeyPlaceholder": {
|
||||
"defaultMessage": "पैरामीटर नाम..."
|
||||
},
|
||||
"keyValueEditor.defaultValuePlaceholder": {
|
||||
"defaultMessage": "पैरामीटर मान..."
|
||||
},
|
||||
"keyValueEditor.removeValue": {
|
||||
"defaultMessage": "पूर्व-कॉन्फ़िगर मान {key} हटाएं"
|
||||
},
|
||||
"keyboardShortcuts.alwaysOnTopDescription": {
|
||||
"defaultMessage": "विंडो को हमेशा शीर्ष पर टॉगल करें"
|
||||
},
|
||||
|
|
@ -1673,18 +1694,6 @@
|
|||
"keyboardShortcuts.toggleNavigationLabel": {
|
||||
"defaultMessage": "नेविगेशन टॉगल करें"
|
||||
},
|
||||
"keyValueEditor.addValue": {
|
||||
"defaultMessage": "पूर्व-कॉन्फ़िगर मान जोड़ें"
|
||||
},
|
||||
"keyValueEditor.defaultKeyPlaceholder": {
|
||||
"defaultMessage": "पैरामीटर नाम..."
|
||||
},
|
||||
"keyValueEditor.defaultValuePlaceholder": {
|
||||
"defaultMessage": "पैरामीटर मान..."
|
||||
},
|
||||
"keyValueEditor.removeValue": {
|
||||
"defaultMessage": "पूर्व-कॉन्फ़िगर मान {key} हटाएं"
|
||||
},
|
||||
"launcher.placeholder": {
|
||||
"defaultMessage": "goose से कुछ भी पूछें..."
|
||||
},
|
||||
|
|
@ -1724,18 +1733,18 @@
|
|||
"localInferenceSettings.downloadCancelled": {
|
||||
"defaultMessage": "डाउनलोड रद्द किया गया"
|
||||
},
|
||||
"localInferenceSettings.downloadedModels": {
|
||||
"defaultMessage": "डाउनलोड किए गए मॉडल"
|
||||
},
|
||||
"localInferenceSettings.downloadFailed": {
|
||||
"defaultMessage": "डाउनलोड विफल रहा"
|
||||
},
|
||||
"localInferenceSettings.downloading": {
|
||||
"defaultMessage": "डाउनलोड हो रहा है"
|
||||
},
|
||||
"localInferenceSettings.downloadProgress": {
|
||||
"defaultMessage": "{downloaded} / {total} ({percent}%)"
|
||||
},
|
||||
"localInferenceSettings.downloadedModels": {
|
||||
"defaultMessage": "डाउनलोड किए गए मॉडल"
|
||||
},
|
||||
"localInferenceSettings.downloading": {
|
||||
"defaultMessage": "डाउनलोड हो रहा है"
|
||||
},
|
||||
"localInferenceSettings.evictFromMemory": {
|
||||
"defaultMessage": "Evict from memory"
|
||||
},
|
||||
|
|
@ -1823,12 +1832,12 @@
|
|||
"localModelPicker.checkingModels": {
|
||||
"defaultMessage": "उपलब्ध मॉडलों की जाँच की जा रही है..."
|
||||
},
|
||||
"localModelPicker.downloading": {
|
||||
"defaultMessage": "डाउनलोड हो रहा है {modelId}"
|
||||
},
|
||||
"localModelPicker.downloadModel": {
|
||||
"defaultMessage": "डाउनलोड करें {modelId} ({size})"
|
||||
},
|
||||
"localModelPicker.downloading": {
|
||||
"defaultMessage": "डाउनलोड हो रहा है {modelId}"
|
||||
},
|
||||
"localModelPicker.failedToLoad": {
|
||||
"defaultMessage": "उपलब्ध मॉडल लोड करने में विफल. कृपया पुन: प्रयास करें।"
|
||||
},
|
||||
|
|
@ -1991,9 +2000,6 @@
|
|||
"messageQueue.paused": {
|
||||
"defaultMessage": "रुका हुआ"
|
||||
},
|
||||
"messageQueue.queued": {
|
||||
"defaultMessage": "पंक्तिबद्ध"
|
||||
},
|
||||
"messageQueue.queuePaused": {
|
||||
"defaultMessage": "कतार रोक दी गई"
|
||||
},
|
||||
|
|
@ -2003,6 +2009,9 @@
|
|||
"messageQueue.queuePausedExpanded": {
|
||||
"defaultMessage": "रुकावट के कारण कतार रुकी. \"अभी भेजें\" का उपयोग करें या फिर से शुरू करने के लिए एक नया संदेश जोड़ें।"
|
||||
},
|
||||
"messageQueue.queued": {
|
||||
"defaultMessage": "पंक्तिबद्ध"
|
||||
},
|
||||
"messageQueue.removeFromQueue": {
|
||||
"defaultMessage": "इस संदेश को कतार से हटाएँ"
|
||||
},
|
||||
|
|
@ -2093,12 +2102,36 @@
|
|||
"microphoneSelector.test": {
|
||||
"defaultMessage": "परीक्षण"
|
||||
},
|
||||
"modelAndProviderContext.modelChangedTitle": {
|
||||
"defaultMessage": "मॉडल बदल गया"
|
||||
"modeSelectionItem.autonomousDescription": {
|
||||
"defaultMessage": "पूर्ण फ़ाइल संशोधन क्षमताएं, फ़ाइलों को स्वतंत्र रूप से संपादित करें, बनाएं और हटाएं।"
|
||||
},
|
||||
"modeSelectionItem.autonomousLabel": {
|
||||
"defaultMessage": "स्वायत्त"
|
||||
},
|
||||
"modeSelectionItem.chatOnlyDescription": {
|
||||
"defaultMessage": "टूल या एक्सटेंशन का उपयोग किए बिना चयनित प्रदाता से बातचीत करें।"
|
||||
},
|
||||
"modeSelectionItem.chatOnlyLabel": {
|
||||
"defaultMessage": "केवल चैट करें"
|
||||
},
|
||||
"modeSelectionItem.manualDescription": {
|
||||
"defaultMessage": "सभी टूल, एक्सटेंशन और फ़ाइल संशोधनों के लिए मानव अनुमोदन की आवश्यकता होगी"
|
||||
},
|
||||
"modeSelectionItem.manualLabel": {
|
||||
"defaultMessage": "मैनुअल"
|
||||
},
|
||||
"modeSelectionItem.smartDescription": {
|
||||
"defaultMessage": "जोखिम स्तर के आधार पर समझदारी से निर्धारित करें कि किन कार्यों को अनुमोदन की आवश्यकता है"
|
||||
},
|
||||
"modeSelectionItem.smartLabel": {
|
||||
"defaultMessage": "होशियार"
|
||||
},
|
||||
"modelAndProviderContext.modelChangeFailed": {
|
||||
"defaultMessage": "{provider}/{model} विफल"
|
||||
},
|
||||
"modelAndProviderContext.modelChangedTitle": {
|
||||
"defaultMessage": "मॉडल बदल गया"
|
||||
},
|
||||
"modelAndProviderContext.selectModel": {
|
||||
"defaultMessage": "मॉडल का चयन करें"
|
||||
},
|
||||
|
|
@ -2111,27 +2144,6 @@
|
|||
"modelAndProviderContext.unknownProviderTitle": {
|
||||
"defaultMessage": "प्रदाता का नाम लुकअप"
|
||||
},
|
||||
"modelsBottomBar.changeModel": {
|
||||
"defaultMessage": "मॉडल बदलें"
|
||||
},
|
||||
"modelsBottomBar.currentModel": {
|
||||
"defaultMessage": "वर्तमान मॉडल"
|
||||
},
|
||||
"modelsBottomBar.loadingModel": {
|
||||
"defaultMessage": "मॉडल लोड हो रहा है..."
|
||||
},
|
||||
"modelsBottomBar.localModelSettings": {
|
||||
"defaultMessage": "स्थानीय मॉडल Settings"
|
||||
},
|
||||
"modelsBottomBar.localModelSettingsTitle": {
|
||||
"defaultMessage": "स्थानीय मॉडल Settings — {modelName}"
|
||||
},
|
||||
"modelsBottomBar.resolvedModel": {
|
||||
"defaultMessage": "हल किया गया मॉडल"
|
||||
},
|
||||
"modelsBottomBar.selectModel": {
|
||||
"defaultMessage": "मॉडल का चयन करें"
|
||||
},
|
||||
"modelSettingsButtons.configureProviders": {
|
||||
"defaultMessage": "प्रदाताओं को कॉन्फ़िगर करें"
|
||||
},
|
||||
|
|
@ -2291,36 +2303,33 @@
|
|||
"modelSettingsPanel.topP": {
|
||||
"defaultMessage": "शीर्ष पी"
|
||||
},
|
||||
"modelsBottomBar.changeModel": {
|
||||
"defaultMessage": "मॉडल बदलें"
|
||||
},
|
||||
"modelsBottomBar.currentModel": {
|
||||
"defaultMessage": "वर्तमान मॉडल"
|
||||
},
|
||||
"modelsBottomBar.loadingModel": {
|
||||
"defaultMessage": "मॉडल लोड हो रहा है..."
|
||||
},
|
||||
"modelsBottomBar.localModelSettings": {
|
||||
"defaultMessage": "स्थानीय मॉडल Settings"
|
||||
},
|
||||
"modelsBottomBar.localModelSettingsTitle": {
|
||||
"defaultMessage": "स्थानीय मॉडल Settings — {modelName}"
|
||||
},
|
||||
"modelsBottomBar.resolvedModel": {
|
||||
"defaultMessage": "हल किया गया मॉडल"
|
||||
},
|
||||
"modelsBottomBar.selectModel": {
|
||||
"defaultMessage": "मॉडल का चयन करें"
|
||||
},
|
||||
"modelsSection.resetDescription": {
|
||||
"defaultMessage": "नए सिरे से शुरुआत करने के लिए अपने चयनित मॉडल और प्रदाता सेटिंग्स को साफ़ करें"
|
||||
},
|
||||
"modelsSection.resetTitle": {
|
||||
"defaultMessage": "प्रदाता और मॉडल रीसेट करें"
|
||||
},
|
||||
"modeSelectionItem.autonomousDescription": {
|
||||
"defaultMessage": "पूर्ण फ़ाइल संशोधन क्षमताएं, फ़ाइलों को स्वतंत्र रूप से संपादित करें, बनाएं और हटाएं।"
|
||||
},
|
||||
"modeSelectionItem.autonomousLabel": {
|
||||
"defaultMessage": "स्वायत्त"
|
||||
},
|
||||
"modeSelectionItem.chatOnlyDescription": {
|
||||
"defaultMessage": "टूल या एक्सटेंशन का उपयोग किए बिना चयनित प्रदाता से बातचीत करें।"
|
||||
},
|
||||
"modeSelectionItem.chatOnlyLabel": {
|
||||
"defaultMessage": "केवल चैट करें"
|
||||
},
|
||||
"modeSelectionItem.manualDescription": {
|
||||
"defaultMessage": "सभी टूल, एक्सटेंशन और फ़ाइल संशोधनों के लिए मानव अनुमोदन की आवश्यकता होगी"
|
||||
},
|
||||
"modeSelectionItem.manualLabel": {
|
||||
"defaultMessage": "मैनुअल"
|
||||
},
|
||||
"modeSelectionItem.smartDescription": {
|
||||
"defaultMessage": "जोखिम स्तर के आधार पर समझदारी से निर्धारित करें कि किन कार्यों को अनुमोदन की आवश्यकता है"
|
||||
},
|
||||
"modeSelectionItem.smartLabel": {
|
||||
"defaultMessage": "होशियार"
|
||||
},
|
||||
"navigation.itemApps": {
|
||||
"defaultMessage": "ऐप्स"
|
||||
},
|
||||
|
|
@ -2600,12 +2609,12 @@
|
|||
"promptsSettings.edit": {
|
||||
"defaultMessage": "संपादित करें"
|
||||
},
|
||||
"promptsSettings.editingLabel": {
|
||||
"defaultMessage": "संपादन: {name}"
|
||||
},
|
||||
"promptsSettings.editPromptTitle": {
|
||||
"defaultMessage": "संपादित करें: {name}"
|
||||
},
|
||||
"promptsSettings.editingLabel": {
|
||||
"defaultMessage": "संपादन: {name}"
|
||||
},
|
||||
"promptsSettings.enterPromptContent": {
|
||||
"defaultMessage": "प्रॉम्प्ट सामग्री दर्ज करें..."
|
||||
},
|
||||
|
|
@ -2714,12 +2723,12 @@
|
|||
"providerConfigForm.noApiKey": {
|
||||
"defaultMessage": "क्या आपके पास API कुंजी नहीं है?"
|
||||
},
|
||||
"providerConfigForm.signingIn": {
|
||||
"defaultMessage": "साइन इन किया जा रहा है..."
|
||||
},
|
||||
"providerConfigForm.signInWith": {
|
||||
"defaultMessage": "{providerName} के साथ साइन इन करें"
|
||||
},
|
||||
"providerConfigForm.signingIn": {
|
||||
"defaultMessage": "साइन इन किया जा रहा है..."
|
||||
},
|
||||
"providerConfigurationModal.addApiKeyDescription": {
|
||||
"defaultMessage": "इस प्रदाता को goose में एकीकृत करने के लिए अपनी API कुंजी जोड़ें"
|
||||
},
|
||||
|
|
@ -2780,12 +2789,12 @@
|
|||
"providerConfigurationModal.seeDocumentation": {
|
||||
"defaultMessage": "अधिक विवरण के लिए <link>दस्तावेज़ीकरण</link> देखें।"
|
||||
},
|
||||
"providerConfigurationModal.signingIn": {
|
||||
"defaultMessage": "साइन इन किया जा रहा है..."
|
||||
},
|
||||
"providerConfigurationModal.signInWith": {
|
||||
"defaultMessage": "{providerName} के साथ साइन इन करें"
|
||||
},
|
||||
"providerConfigurationModal.signingIn": {
|
||||
"defaultMessage": "साइन इन किया जा रहा है..."
|
||||
},
|
||||
"providerGrid.addProvider": {
|
||||
"defaultMessage": "प्रदाता जोड़ें"
|
||||
},
|
||||
|
|
@ -3014,6 +3023,39 @@
|
|||
"recipeNameField.formatHint": {
|
||||
"defaultMessage": "स्वचालित रूप से स्वरूपित किया जाएगा (लोअरकेस, रिक्त स्थान के लिए डैश)"
|
||||
},
|
||||
"recipeWarningModal.cancel": {
|
||||
"defaultMessage": "रद्द करें"
|
||||
},
|
||||
"recipeWarningModal.descriptionLabel": {
|
||||
"defaultMessage": "विवरण:"
|
||||
},
|
||||
"recipeWarningModal.firstTimeDescription": {
|
||||
"defaultMessage": "आप एक ऐसी रेसिपी को क्रियान्वित करने वाले हैं जिसे आपने पहले नहीं चलाया है।"
|
||||
},
|
||||
"recipeWarningModal.hiddenCharsWarning": {
|
||||
"defaultMessage": "इस रेसिपी में छिपे हुए पात्र हैं जिन्हें आपकी सुरक्षा के लिए अनदेखा कर दिया जाएगा, क्योंकि उनका उपयोग दुर्भावनापूर्ण उद्देश्यों के लिए किया जा सकता है।"
|
||||
},
|
||||
"recipeWarningModal.instructionsLabel": {
|
||||
"defaultMessage": "निर्देश:"
|
||||
},
|
||||
"recipeWarningModal.newRecipeWarningTitle": {
|
||||
"defaultMessage": "⚠️ नई रेसिपी चेतावनी"
|
||||
},
|
||||
"recipeWarningModal.recipePreview": {
|
||||
"defaultMessage": "पकाने की विधि पूर्वावलोकन:"
|
||||
},
|
||||
"recipeWarningModal.securityWarningTitle": {
|
||||
"defaultMessage": "⚠️ सुरक्षा चेतावनी"
|
||||
},
|
||||
"recipeWarningModal.titleLabel": {
|
||||
"defaultMessage": "शीर्षक:"
|
||||
},
|
||||
"recipeWarningModal.trustAndExecute": {
|
||||
"defaultMessage": "भरोसा करें और अमल करें"
|
||||
},
|
||||
"recipeWarningModal.trustSource": {
|
||||
"defaultMessage": "केवल तभी आगे बढ़ें जब आप इस रेसिपी के स्रोत पर भरोसा करते हों।"
|
||||
},
|
||||
"recipesView.addSchedule": {
|
||||
"defaultMessage": "शेड्यूल जोड़ें"
|
||||
},
|
||||
|
|
@ -3188,39 +3230,6 @@
|
|||
"recipesView.yamlFiles": {
|
||||
"defaultMessage": "YAML फ़ाइलें"
|
||||
},
|
||||
"recipeWarningModal.cancel": {
|
||||
"defaultMessage": "रद्द करें"
|
||||
},
|
||||
"recipeWarningModal.descriptionLabel": {
|
||||
"defaultMessage": "विवरण:"
|
||||
},
|
||||
"recipeWarningModal.firstTimeDescription": {
|
||||
"defaultMessage": "आप एक ऐसी रेसिपी को क्रियान्वित करने वाले हैं जिसे आपने पहले नहीं चलाया है।"
|
||||
},
|
||||
"recipeWarningModal.hiddenCharsWarning": {
|
||||
"defaultMessage": "इस रेसिपी में छिपे हुए पात्र हैं जिन्हें आपकी सुरक्षा के लिए अनदेखा कर दिया जाएगा, क्योंकि उनका उपयोग दुर्भावनापूर्ण उद्देश्यों के लिए किया जा सकता है।"
|
||||
},
|
||||
"recipeWarningModal.instructionsLabel": {
|
||||
"defaultMessage": "निर्देश:"
|
||||
},
|
||||
"recipeWarningModal.newRecipeWarningTitle": {
|
||||
"defaultMessage": "⚠️ नई रेसिपी चेतावनी"
|
||||
},
|
||||
"recipeWarningModal.recipePreview": {
|
||||
"defaultMessage": "पकाने की विधि पूर्वावलोकन:"
|
||||
},
|
||||
"recipeWarningModal.securityWarningTitle": {
|
||||
"defaultMessage": "⚠️ सुरक्षा चेतावनी"
|
||||
},
|
||||
"recipeWarningModal.titleLabel": {
|
||||
"defaultMessage": "शीर्षक:"
|
||||
},
|
||||
"recipeWarningModal.trustAndExecute": {
|
||||
"defaultMessage": "भरोसा करें और अमल करें"
|
||||
},
|
||||
"recipeWarningModal.trustSource": {
|
||||
"defaultMessage": "केवल तभी आगे बढ़ें जब आप इस रेसिपी के स्रोत पर भरोसा करते हों।"
|
||||
},
|
||||
"resetProviderSection.resetButton": {
|
||||
"defaultMessage": "प्रदाता और मॉडल रीसेट करें"
|
||||
},
|
||||
|
|
@ -3254,12 +3263,12 @@
|
|||
"scheduleDetailView.cronExpression": {
|
||||
"defaultMessage": "क्रोन अभिव्यक्ति:"
|
||||
},
|
||||
"scheduleDetailView.currentlyRunning": {
|
||||
"defaultMessage": "वर्तमान में चल रहा है"
|
||||
},
|
||||
"scheduleDetailView.currentSession": {
|
||||
"defaultMessage": "वर्तमान सत्र:"
|
||||
},
|
||||
"scheduleDetailView.currentlyRunning": {
|
||||
"defaultMessage": "वर्तमान में चल रहा है"
|
||||
},
|
||||
"scheduleDetailView.dir": {
|
||||
"defaultMessage": "निदेशक: {path}"
|
||||
},
|
||||
|
|
@ -3317,6 +3326,12 @@
|
|||
"scheduleDetailView.noSessions": {
|
||||
"defaultMessage": "इस शेड्यूल के लिए कोई सत्र नहीं मिला."
|
||||
},
|
||||
"scheduleDetailView.pauseSchedule": {
|
||||
"defaultMessage": "शेड्यूल रोकें"
|
||||
},
|
||||
"scheduleDetailView.pauseUnpauseError": {
|
||||
"defaultMessage": "रोकें/रोकें त्रुटि"
|
||||
},
|
||||
"scheduleDetailView.paused": {
|
||||
"defaultMessage": "रुका हुआ"
|
||||
},
|
||||
|
|
@ -3326,12 +3341,6 @@
|
|||
"scheduleDetailView.pausedWarning": {
|
||||
"defaultMessage": "यह शेड्यूल रुका हुआ है और स्वचालित रूप से नहीं चलेगा. इसे मैन्युअल रूप से ट्रिगर करने के लिए \"रन शेड्यूल नाउ\" का उपयोग करें या स्वचालित निष्पादन को फिर से शुरू करने के लिए अनपॉज़ करें।"
|
||||
},
|
||||
"scheduleDetailView.pauseSchedule": {
|
||||
"defaultMessage": "शेड्यूल रोकें"
|
||||
},
|
||||
"scheduleDetailView.pauseUnpauseError": {
|
||||
"defaultMessage": "रोकें/रोकें त्रुटि"
|
||||
},
|
||||
"scheduleDetailView.processStarted": {
|
||||
"defaultMessage": "प्रक्रिया प्रारंभ:"
|
||||
},
|
||||
|
|
@ -3377,18 +3386,18 @@
|
|||
"scheduleDetailView.sessionId": {
|
||||
"defaultMessage": "सत्र आईडी: {id}"
|
||||
},
|
||||
"scheduleDetailView.unpausedMsg": {
|
||||
"defaultMessage": "रोका गया \"{id}\""
|
||||
},
|
||||
"scheduleDetailView.unpauseSchedule": {
|
||||
"defaultMessage": "शेड्यूल को फिर से रोकें"
|
||||
},
|
||||
"scheduleDetailView.updatedMsg": {
|
||||
"defaultMessage": "अपडेट किया गया \"{id}\""
|
||||
"scheduleDetailView.unpausedMsg": {
|
||||
"defaultMessage": "रोका गया \"{id}\""
|
||||
},
|
||||
"scheduleDetailView.updateScheduleError": {
|
||||
"defaultMessage": "अद्यतन शेड्यूल त्रुटि"
|
||||
},
|
||||
"scheduleDetailView.updatedMsg": {
|
||||
"defaultMessage": "अपडेट किया गया \"{id}\""
|
||||
},
|
||||
"scheduleDetailView.viewingScheduleId": {
|
||||
"defaultMessage": "शेड्यूल आईडी देखना: {id}"
|
||||
},
|
||||
|
|
@ -3512,12 +3521,12 @@
|
|||
"schedulesView.pause": {
|
||||
"defaultMessage": "विराम"
|
||||
},
|
||||
"schedulesView.paused": {
|
||||
"defaultMessage": "रुका हुआ"
|
||||
},
|
||||
"schedulesView.pauseError": {
|
||||
"defaultMessage": "शेड्यूल त्रुटि रोकें"
|
||||
},
|
||||
"schedulesView.paused": {
|
||||
"defaultMessage": "रुका हुआ"
|
||||
},
|
||||
"schedulesView.refresh": {
|
||||
"defaultMessage": "ताज़ा करें"
|
||||
},
|
||||
|
|
@ -3536,9 +3545,6 @@
|
|||
"schedulesView.schedulePausedMsg": {
|
||||
"defaultMessage": "सफलतापूर्वक रोका गया शेड्यूल \"{id}\""
|
||||
},
|
||||
"schedulesView.scheduler": {
|
||||
"defaultMessage": "अनुसूचक"
|
||||
},
|
||||
"schedulesView.scheduleUnpaused": {
|
||||
"defaultMessage": "शेड्यूल अनरोका"
|
||||
},
|
||||
|
|
@ -3551,6 +3557,9 @@
|
|||
"schedulesView.scheduleUpdatedMsg": {
|
||||
"defaultMessage": "सफलतापूर्वक अद्यतन शेड्यूल \"{id}\""
|
||||
},
|
||||
"schedulesView.scheduler": {
|
||||
"defaultMessage": "अनुसूचक"
|
||||
},
|
||||
"schedulesView.unpauseError": {
|
||||
"defaultMessage": "शेड्यूल त्रुटि को रोकें"
|
||||
},
|
||||
|
|
@ -3653,15 +3662,15 @@
|
|||
"sessionActionsHeader.copyText": {
|
||||
"defaultMessage": "Copy text"
|
||||
},
|
||||
"sessionActionsHeader.duplicated": {
|
||||
"defaultMessage": "Session duplicated"
|
||||
},
|
||||
"sessionActionsHeader.duplicateFailed": {
|
||||
"defaultMessage": "Failed to duplicate session: {error}"
|
||||
},
|
||||
"sessionActionsHeader.duplicateSession": {
|
||||
"defaultMessage": "Duplicate session"
|
||||
},
|
||||
"sessionActionsHeader.duplicated": {
|
||||
"defaultMessage": "Session duplicated"
|
||||
},
|
||||
"sessionActionsHeader.fullTextTitle": {
|
||||
"defaultMessage": "Text value"
|
||||
},
|
||||
|
|
@ -3674,9 +3683,6 @@
|
|||
"sessionActionsHeader.loadingJson": {
|
||||
"defaultMessage": "Loading JSON..."
|
||||
},
|
||||
"sessionActionsHeader.renamed": {
|
||||
"defaultMessage": "Session renamed"
|
||||
},
|
||||
"sessionActionsHeader.renameFailed": {
|
||||
"defaultMessage": "Failed to rename session: {error}"
|
||||
},
|
||||
|
|
@ -3689,6 +3695,9 @@
|
|||
"sessionActionsHeader.renameTitle": {
|
||||
"defaultMessage": "Rename Session"
|
||||
},
|
||||
"sessionActionsHeader.renamed": {
|
||||
"defaultMessage": "Session renamed"
|
||||
},
|
||||
"sessionActionsHeader.save": {
|
||||
"defaultMessage": "Save"
|
||||
},
|
||||
|
|
@ -3707,6 +3716,24 @@
|
|||
"sessionIndicators.streaming": {
|
||||
"defaultMessage": "स्ट्रीमिंग"
|
||||
},
|
||||
"sessionViewComponents.empty.description": {
|
||||
"defaultMessage": "इस सत्र में कोई संदेश नहीं है"
|
||||
},
|
||||
"sessionViewComponents.empty.title": {
|
||||
"defaultMessage": "कोई संदेश नहीं मिला"
|
||||
},
|
||||
"sessionViewComponents.error.loading": {
|
||||
"defaultMessage": "सत्र विवरण लोड करने में त्रुटि"
|
||||
},
|
||||
"sessionViewComponents.error.tryAgain": {
|
||||
"defaultMessage": "पुनः प्रयास करें"
|
||||
},
|
||||
"sessionViewComponents.role.assistant": {
|
||||
"defaultMessage": "Goose"
|
||||
},
|
||||
"sessionViewComponents.role.user": {
|
||||
"defaultMessage": "आप"
|
||||
},
|
||||
"sessions.action.delete": {
|
||||
"defaultMessage": "सत्र हटाएँ"
|
||||
},
|
||||
|
|
@ -3764,9 +3791,6 @@
|
|||
"sessions.import": {
|
||||
"defaultMessage": "आयात सत्र"
|
||||
},
|
||||
"sessions.importing": {
|
||||
"defaultMessage": "आयात किया जा रहा है..."
|
||||
},
|
||||
"sessions.importNostr": {
|
||||
"defaultMessage": "लिंक आयात करें"
|
||||
},
|
||||
|
|
@ -3779,6 +3803,9 @@
|
|||
"sessions.importNostr.title": {
|
||||
"defaultMessage": "नोस्ट्र सत्र आयात करें"
|
||||
},
|
||||
"sessions.importing": {
|
||||
"defaultMessage": "आयात किया जा रहा है..."
|
||||
},
|
||||
"sessions.loadingMore": {
|
||||
"defaultMessage": "अधिक सत्र लोड हो रहे हैं..."
|
||||
},
|
||||
|
|
@ -3806,56 +3833,38 @@
|
|||
"sessions.toast.copied": {
|
||||
"defaultMessage": "क्लिपबोर्ड पर कॉपी किया गया"
|
||||
},
|
||||
"sessions.toast.deleted": {
|
||||
"defaultMessage": "सत्र सफलतापूर्वक हटा दिया गया"
|
||||
},
|
||||
"sessions.toast.deleteFailed": {
|
||||
"defaultMessage": "सत्र \"{name}\" हटाने में विफल: {error}"
|
||||
},
|
||||
"sessions.toast.duplicated": {
|
||||
"defaultMessage": "सत्र \"{name}\" सफलतापूर्वक दोहराया गया"
|
||||
"sessions.toast.deleted": {
|
||||
"defaultMessage": "सत्र सफलतापूर्वक हटा दिया गया"
|
||||
},
|
||||
"sessions.toast.duplicateFailed": {
|
||||
"defaultMessage": "सत्र की नकल करने में विफल: {error}"
|
||||
},
|
||||
"sessions.toast.duplicated": {
|
||||
"defaultMessage": "सत्र \"{name}\" सफलतापूर्वक दोहराया गया"
|
||||
},
|
||||
"sessions.toast.exported": {
|
||||
"defaultMessage": "सत्र सफलतापूर्वक निर्यात किया गया"
|
||||
},
|
||||
"sessions.toast.imported": {
|
||||
"defaultMessage": "सत्र सफलतापूर्वक आयात किया गया"
|
||||
},
|
||||
"sessions.toast.importFailed": {
|
||||
"defaultMessage": "सत्र आयात करने में विफल: {error}"
|
||||
},
|
||||
"sessions.toast.imported": {
|
||||
"defaultMessage": "सत्र सफलतापूर्वक आयात किया गया"
|
||||
},
|
||||
"sessions.toast.shareNostr": {
|
||||
"defaultMessage": "एन्क्रिप्टेड नोस्ट्र शेयर लिंक बनाया गया"
|
||||
},
|
||||
"sessions.toast.shareNostrFailed": {
|
||||
"defaultMessage": "Nostr शेयर लिंक बनाने में विफल: {error}"
|
||||
},
|
||||
"sessions.toast.updated": {
|
||||
"defaultMessage": "सत्र विवरण सफलतापूर्वक अपडेट किया गया"
|
||||
},
|
||||
"sessions.toast.updateFailed": {
|
||||
"defaultMessage": "सत्र विवरण अद्यतन करने में विफल: {error}"
|
||||
},
|
||||
"sessionViewComponents.empty.description": {
|
||||
"defaultMessage": "इस सत्र में कोई संदेश नहीं है"
|
||||
},
|
||||
"sessionViewComponents.empty.title": {
|
||||
"defaultMessage": "कोई संदेश नहीं मिला"
|
||||
},
|
||||
"sessionViewComponents.error.loading": {
|
||||
"defaultMessage": "सत्र विवरण लोड करने में त्रुटि"
|
||||
},
|
||||
"sessionViewComponents.error.tryAgain": {
|
||||
"defaultMessage": "पुनः प्रयास करें"
|
||||
},
|
||||
"sessionViewComponents.role.assistant": {
|
||||
"defaultMessage": "Goose"
|
||||
},
|
||||
"sessionViewComponents.role.user": {
|
||||
"defaultMessage": "आप"
|
||||
"sessions.toast.updated": {
|
||||
"defaultMessage": "सत्र विवरण सफलतापूर्वक अपडेट किया गया"
|
||||
},
|
||||
"settings.appearance.description": {
|
||||
"defaultMessage": "कॉन्फ़िगर करें कि goose आपके सिस्टम पर कैसे दिखाई देता है"
|
||||
|
|
@ -4397,12 +4406,12 @@
|
|||
"themeSelector.theme": {
|
||||
"defaultMessage": "थीम"
|
||||
},
|
||||
"toolApprovalButtons.allowedOnce": {
|
||||
"defaultMessage": "एक बार अनुमति दी गई"
|
||||
},
|
||||
"toolApprovalButtons.allowOnce": {
|
||||
"defaultMessage": "एक बार अनुमति दें"
|
||||
},
|
||||
"toolApprovalButtons.allowedOnce": {
|
||||
"defaultMessage": "एक बार अनुमति दी गई"
|
||||
},
|
||||
"toolApprovalButtons.alwaysAllow": {
|
||||
"defaultMessage": "हमेशा अनुमति दें"
|
||||
},
|
||||
|
|
@ -4484,18 +4493,18 @@
|
|||
"updateSection.disableAutoDownloadDesc": {
|
||||
"defaultMessage": "सक्षम होने पर, Goose आपको नई संस्करणों की सूचना देगा लेकिन उन्हें स्वचालित रूप से डाउनलोड नहीं करेगा।"
|
||||
},
|
||||
"updateSection.downloadingProgress": {
|
||||
"defaultMessage": "अपडेट डाउनलोड हो रहा है... {percent}%"
|
||||
},
|
||||
"updateSection.downloadingUpdate": {
|
||||
"defaultMessage": "अपडेट डाउनलोड हो रहा है..."
|
||||
},
|
||||
"updateSection.downloadNow": {
|
||||
"defaultMessage": "अभी डाउनलोड करें"
|
||||
},
|
||||
"updateSection.downloadReady": {
|
||||
"defaultMessage": "अपडेट डाउनलोड हो गया है और इंस्टॉल करने के लिए तैयार है!"
|
||||
},
|
||||
"updateSection.downloadingProgress": {
|
||||
"defaultMessage": "अपडेट डाउनलोड हो रहा है... {percent}%"
|
||||
},
|
||||
"updateSection.downloadingUpdate": {
|
||||
"defaultMessage": "अपडेट डाउनलोड हो रहा है..."
|
||||
},
|
||||
"updateSection.installAndRestart": {
|
||||
"defaultMessage": "स्थापित करें और पुनः प्रारंभ करें"
|
||||
},
|
||||
|
|
@ -4520,12 +4529,12 @@
|
|||
"updateSection.readyInstallManual": {
|
||||
"defaultMessage": "✓ अपडेट तैयार है! इंस्टॉलेशन निर्देशों के लिए \"इंस्टॉल करें और पुनरारंभ करें\" पर क्लिक करें।"
|
||||
},
|
||||
"updateSection.updateAvailable": {
|
||||
"defaultMessage": "उपलब्ध अद्यतन!"
|
||||
},
|
||||
"updateSection.upToDate": {
|
||||
"defaultMessage": "(अप टू डेट)"
|
||||
},
|
||||
"updateSection.updateAvailable": {
|
||||
"defaultMessage": "उपलब्ध अद्यतन!"
|
||||
},
|
||||
"updateSection.versionAvailable": {
|
||||
"defaultMessage": "→ {version} उपलब्ध"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -20,12 +20,21 @@
|
|||
"appsView.customApp": {
|
||||
"defaultMessage": "Aplikasi khusus"
|
||||
},
|
||||
"appsView.deleteApp": {
|
||||
"defaultMessage": "Delete app"
|
||||
},
|
||||
"appsView.deleteConfirm": {
|
||||
"defaultMessage": "Delete \"{name}\"? This cannot be undone."
|
||||
},
|
||||
"appsView.description": {
|
||||
"defaultMessage": "Aplikasi dari server MCP Anda dan Aplikasi yang dibuat oleh goose sendiri. Anda dapat memintanya membuat aplikasi baru melalui antarmuka obrolan dan aplikasi tersebut akan muncul di sini."
|
||||
},
|
||||
"appsView.errorLoading": {
|
||||
"defaultMessage": "Kesalahan saat memuat aplikasi: {error}"
|
||||
},
|
||||
"appsView.errorPrefix": {
|
||||
"defaultMessage": "Error: {error}"
|
||||
},
|
||||
"appsView.importApp": {
|
||||
"defaultMessage": "Impor Aplikasi"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -20,12 +20,21 @@
|
|||
"appsView.customApp": {
|
||||
"defaultMessage": "App personalizzata"
|
||||
},
|
||||
"appsView.deleteApp": {
|
||||
"defaultMessage": "Delete app"
|
||||
},
|
||||
"appsView.deleteConfirm": {
|
||||
"defaultMessage": "Delete \"{name}\"? This cannot be undone."
|
||||
},
|
||||
"appsView.description": {
|
||||
"defaultMessage": "Applicazioni dai tuoi server MCP e app create da goose stesso. Puoi chiedere di creare nuove app tramite l'interfaccia di chat e appariranno qui."
|
||||
},
|
||||
"appsView.errorLoading": {
|
||||
"defaultMessage": "Errore durante il caricamento delle app: {error}"
|
||||
},
|
||||
"appsView.errorPrefix": {
|
||||
"defaultMessage": "Error: {error}"
|
||||
},
|
||||
"appsView.importApp": {
|
||||
"defaultMessage": "Importa app"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -20,12 +20,21 @@
|
|||
"appsView.customApp": {
|
||||
"defaultMessage": "カスタムアプリ"
|
||||
},
|
||||
"appsView.deleteApp": {
|
||||
"defaultMessage": "Delete app"
|
||||
},
|
||||
"appsView.deleteConfirm": {
|
||||
"defaultMessage": "Delete \"{name}\"? This cannot be undone."
|
||||
},
|
||||
"appsView.description": {
|
||||
"defaultMessage": "MCPサーバーのアプリケーションと、goose自身が作成したアプリです。チャット画面で新しいアプリの作成を依頼すると、ここに表示されます。"
|
||||
},
|
||||
"appsView.errorLoading": {
|
||||
"defaultMessage": "アプリの読み込みエラー: {error}"
|
||||
},
|
||||
"appsView.errorPrefix": {
|
||||
"defaultMessage": "Error: {error}"
|
||||
},
|
||||
"appsView.importApp": {
|
||||
"defaultMessage": "アプリをインポート"
|
||||
},
|
||||
|
|
@ -41,15 +50,15 @@
|
|||
"appsView.noAppsTitle": {
|
||||
"defaultMessage": "利用可能なアプリはありません"
|
||||
},
|
||||
"appsView.retry": {
|
||||
"defaultMessage": "再試行"
|
||||
},
|
||||
"appsView.retiredChatApp": {
|
||||
"defaultMessage": "Chat app retired"
|
||||
},
|
||||
"appsView.retiredChatAppDetail": {
|
||||
"defaultMessage": "We removed this feature because MCP sampling is no longer supported."
|
||||
},
|
||||
"appsView.retry": {
|
||||
"defaultMessage": "再試行"
|
||||
},
|
||||
"appsView.title": {
|
||||
"defaultMessage": "アプリ"
|
||||
},
|
||||
|
|
@ -65,15 +74,15 @@
|
|||
"authSettings.deleteCredential": {
|
||||
"defaultMessage": "認証情報を削除"
|
||||
},
|
||||
"authSettings.deleted": {
|
||||
"defaultMessage": "認証情報を削除しました"
|
||||
},
|
||||
"authSettings.deleteMessage": {
|
||||
"defaultMessage": "{provider} の {name} 認証情報を削除しますか?"
|
||||
},
|
||||
"authSettings.deleteTitle": {
|
||||
"defaultMessage": "認証情報を削除"
|
||||
},
|
||||
"authSettings.deleted": {
|
||||
"defaultMessage": "認証情報を削除しました"
|
||||
},
|
||||
"authSettings.description": {
|
||||
"defaultMessage": "gooseがローカルに保存したプロバイダー認証情報を管理します。"
|
||||
},
|
||||
|
|
@ -98,12 +107,12 @@
|
|||
"authSettings.reauthorize": {
|
||||
"defaultMessage": "再認証"
|
||||
},
|
||||
"authSettings.signedIn": {
|
||||
"defaultMessage": "認証情報を設定しました"
|
||||
},
|
||||
"authSettings.signIn": {
|
||||
"defaultMessage": "サインイン"
|
||||
},
|
||||
"authSettings.signedIn": {
|
||||
"defaultMessage": "認証情報を設定しました"
|
||||
},
|
||||
"authSettings.storageProviderCache": {
|
||||
"defaultMessage": "プロバイダーキャッシュ"
|
||||
},
|
||||
|
|
@ -122,12 +131,6 @@
|
|||
"baseChat.goHome": {
|
||||
"defaultMessage": "ホームへ"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForNewChats": {
|
||||
"defaultMessage": "新しいチャットの拡張機能"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForThisSession": {
|
||||
"defaultMessage": "このチャットセッションの拡張機能"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionUpdated": {
|
||||
"defaultMessage": "拡張機能を更新しました"
|
||||
},
|
||||
|
|
@ -137,6 +140,12 @@
|
|||
"bottomMenuExtensionSelection.extensionWillBeEnabled": {
|
||||
"defaultMessage": "{name} は新しいチャットで有効になります"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForNewChats": {
|
||||
"defaultMessage": "新しいチャットの拡張機能"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForThisSession": {
|
||||
"defaultMessage": "このチャットセッションの拡張機能"
|
||||
},
|
||||
"bottomMenuExtensionSelection.manageExtensions": {
|
||||
"defaultMessage": "拡張機能を管理"
|
||||
},
|
||||
|
|
@ -638,12 +647,12 @@
|
|||
"customProviderForm.attachments": {
|
||||
"defaultMessage": "添付ファイル"
|
||||
},
|
||||
"customProviderForm.authentication": {
|
||||
"defaultMessage": "認証"
|
||||
},
|
||||
"customProviderForm.authHint": {
|
||||
"defaultMessage": "OllamaのようなローカルLLMは通常APIキーを必要としません。"
|
||||
},
|
||||
"customProviderForm.authentication": {
|
||||
"defaultMessage": "認証"
|
||||
},
|
||||
"customProviderForm.availableModels": {
|
||||
"defaultMessage": "利用可能なモデル(カンマ区切り)"
|
||||
},
|
||||
|
|
@ -941,21 +950,18 @@
|
|||
"elicitationRequest.waitingForResponse": {
|
||||
"defaultMessage": "あなたの応答を待っています(残り{timeRemaining})"
|
||||
},
|
||||
"environmentBadge.dev": {
|
||||
"defaultMessage": "開発"
|
||||
},
|
||||
"envVarsSection.add": {
|
||||
"defaultMessage": "追加"
|
||||
},
|
||||
"envVarsSection.bothRequired": {
|
||||
"defaultMessage": "変数名と値の両方を入力してください"
|
||||
},
|
||||
"envVarsSection.environmentVariables": {
|
||||
"defaultMessage": "環境変数"
|
||||
},
|
||||
"envVarsSection.envVarsDescription": {
|
||||
"defaultMessage": "環境変数のキーと値のペアを追加します。両方のフィールドを入力後、「+」ボタンをクリックして追加してください。既存のシークレット値を変更するには、編集ボタンをクリックしてください。"
|
||||
},
|
||||
"envVarsSection.environmentVariables": {
|
||||
"defaultMessage": "環境変数"
|
||||
},
|
||||
"envVarsSection.noSpaces": {
|
||||
"defaultMessage": "変数名にスペースは使用できません"
|
||||
},
|
||||
|
|
@ -965,6 +971,9 @@
|
|||
"envVarsSection.variableName": {
|
||||
"defaultMessage": "変数名"
|
||||
},
|
||||
"environmentBadge.dev": {
|
||||
"defaultMessage": "開発"
|
||||
},
|
||||
"errorBoundary.errorGeneric": {
|
||||
"defaultMessage": "エラーが発生しました。"
|
||||
},
|
||||
|
|
@ -1124,6 +1133,9 @@
|
|||
"extensionModal.unsavedChangesTitle": {
|
||||
"defaultMessage": "未保存の変更"
|
||||
},
|
||||
"extensionTimeoutField.timeoutLabel": {
|
||||
"defaultMessage": "タイムアウト"
|
||||
},
|
||||
"extensionsSection.addCustomExtension": {
|
||||
"defaultMessage": "カスタム拡張機能を追加"
|
||||
},
|
||||
|
|
@ -1160,9 +1172,6 @@
|
|||
"extensionsView.searchPlaceholder": {
|
||||
"defaultMessage": "拡張機能を検索..."
|
||||
},
|
||||
"extensionTimeoutField.timeoutLabel": {
|
||||
"defaultMessage": "タイムアウト"
|
||||
},
|
||||
"externalBackendSection.certFingerprint": {
|
||||
"defaultMessage": "証明書フィンガープリント(任意)"
|
||||
},
|
||||
|
|
@ -1382,12 +1391,12 @@
|
|||
"huggingFaceSignInPrompt.failedToConfigure": {
|
||||
"defaultMessage": "Hugging Faceへのサインインに失敗しました: {error}"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signedIn": {
|
||||
"defaultMessage": "Hugging Faceにサインイン済み"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signIn": {
|
||||
"defaultMessage": "サインイン"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signedIn": {
|
||||
"defaultMessage": "Hugging Faceにサインイン済み"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signingIn": {
|
||||
"defaultMessage": "サインイン中..."
|
||||
},
|
||||
|
|
@ -1421,15 +1430,15 @@
|
|||
"importRecipeForm.expectedRecipeStructure": {
|
||||
"defaultMessage": "想定されるレシピ構造"
|
||||
},
|
||||
"importRecipeForm.importing": {
|
||||
"defaultMessage": "インポート中..."
|
||||
},
|
||||
"importRecipeForm.importRecipeButton": {
|
||||
"defaultMessage": "レシピをインポート"
|
||||
},
|
||||
"importRecipeForm.importRecipeTitle": {
|
||||
"defaultMessage": "レシピをインポート"
|
||||
},
|
||||
"importRecipeForm.importing": {
|
||||
"defaultMessage": "インポート中..."
|
||||
},
|
||||
"importRecipeForm.or": {
|
||||
"defaultMessage": "または"
|
||||
},
|
||||
|
|
@ -1529,6 +1538,18 @@
|
|||
"jsonSchemaForm.submit": {
|
||||
"defaultMessage": "送信"
|
||||
},
|
||||
"keyValueEditor.addValue": {
|
||||
"defaultMessage": "事前設定値を追加"
|
||||
},
|
||||
"keyValueEditor.defaultKeyPlaceholder": {
|
||||
"defaultMessage": "パラメーター名..."
|
||||
},
|
||||
"keyValueEditor.defaultValuePlaceholder": {
|
||||
"defaultMessage": "パラメーター値..."
|
||||
},
|
||||
"keyValueEditor.removeValue": {
|
||||
"defaultMessage": "事前設定値 {key} を削除"
|
||||
},
|
||||
"keyboardShortcuts.alwaysOnTopDescription": {
|
||||
"defaultMessage": "ウィンドウの常に手前表示を切り替える"
|
||||
},
|
||||
|
|
@ -1673,18 +1694,6 @@
|
|||
"keyboardShortcuts.toggleNavigationLabel": {
|
||||
"defaultMessage": "ナビゲーションを切り替え"
|
||||
},
|
||||
"keyValueEditor.addValue": {
|
||||
"defaultMessage": "事前設定値を追加"
|
||||
},
|
||||
"keyValueEditor.defaultKeyPlaceholder": {
|
||||
"defaultMessage": "パラメーター名..."
|
||||
},
|
||||
"keyValueEditor.defaultValuePlaceholder": {
|
||||
"defaultMessage": "パラメーター値..."
|
||||
},
|
||||
"keyValueEditor.removeValue": {
|
||||
"defaultMessage": "事前設定値 {key} を削除"
|
||||
},
|
||||
"launcher.placeholder": {
|
||||
"defaultMessage": "gooseに何でも聞いて..."
|
||||
},
|
||||
|
|
@ -1724,18 +1733,18 @@
|
|||
"localInferenceSettings.downloadCancelled": {
|
||||
"defaultMessage": "ダウンロードがキャンセルされました"
|
||||
},
|
||||
"localInferenceSettings.downloadedModels": {
|
||||
"defaultMessage": "ダウンロード済みモデル"
|
||||
},
|
||||
"localInferenceSettings.downloadFailed": {
|
||||
"defaultMessage": "ダウンロードに失敗しました"
|
||||
},
|
||||
"localInferenceSettings.downloading": {
|
||||
"defaultMessage": "ダウンロード中"
|
||||
},
|
||||
"localInferenceSettings.downloadProgress": {
|
||||
"defaultMessage": "{downloaded} / {total} ({percent}%)"
|
||||
},
|
||||
"localInferenceSettings.downloadedModels": {
|
||||
"defaultMessage": "ダウンロード済みモデル"
|
||||
},
|
||||
"localInferenceSettings.downloading": {
|
||||
"defaultMessage": "ダウンロード中"
|
||||
},
|
||||
"localInferenceSettings.evictFromMemory": {
|
||||
"defaultMessage": "Evict from memory"
|
||||
},
|
||||
|
|
@ -1823,12 +1832,12 @@
|
|||
"localModelPicker.checkingModels": {
|
||||
"defaultMessage": "利用可能なモデルを確認中..."
|
||||
},
|
||||
"localModelPicker.downloading": {
|
||||
"defaultMessage": "{modelId}をダウンロード中"
|
||||
},
|
||||
"localModelPicker.downloadModel": {
|
||||
"defaultMessage": "{modelId}をダウンロード({size})"
|
||||
},
|
||||
"localModelPicker.downloading": {
|
||||
"defaultMessage": "{modelId}をダウンロード中"
|
||||
},
|
||||
"localModelPicker.failedToLoad": {
|
||||
"defaultMessage": "利用可能なモデルの読み込みに失敗しました。もう一度お試しください。"
|
||||
},
|
||||
|
|
@ -1991,9 +2000,6 @@
|
|||
"messageQueue.paused": {
|
||||
"defaultMessage": "一時停止中"
|
||||
},
|
||||
"messageQueue.queued": {
|
||||
"defaultMessage": "キュー内"
|
||||
},
|
||||
"messageQueue.queuePaused": {
|
||||
"defaultMessage": "キューを一時停止中"
|
||||
},
|
||||
|
|
@ -2003,6 +2009,9 @@
|
|||
"messageQueue.queuePausedExpanded": {
|
||||
"defaultMessage": "キューは割り込みにより一時停止されました。「今すぐ送信」を使用するか、新しいメッセージを追加すると再開します。"
|
||||
},
|
||||
"messageQueue.queued": {
|
||||
"defaultMessage": "キュー内"
|
||||
},
|
||||
"messageQueue.removeFromQueue": {
|
||||
"defaultMessage": "このメッセージをキューから削除"
|
||||
},
|
||||
|
|
@ -2093,12 +2102,36 @@
|
|||
"microphoneSelector.test": {
|
||||
"defaultMessage": "テスト"
|
||||
},
|
||||
"modelAndProviderContext.modelChangedTitle": {
|
||||
"defaultMessage": "モデルを変更しました"
|
||||
"modeSelectionItem.autonomousDescription": {
|
||||
"defaultMessage": "ファイルを自由に編集、作成、削除できる完全なファイル変更権限。"
|
||||
},
|
||||
"modeSelectionItem.autonomousLabel": {
|
||||
"defaultMessage": "自律"
|
||||
},
|
||||
"modeSelectionItem.chatOnlyDescription": {
|
||||
"defaultMessage": "ツールや拡張機能を使わず、選択したプロバイダーとやり取りします。"
|
||||
},
|
||||
"modeSelectionItem.chatOnlyLabel": {
|
||||
"defaultMessage": "チャットのみ"
|
||||
},
|
||||
"modeSelectionItem.manualDescription": {
|
||||
"defaultMessage": "すべてのツール、拡張機能、ファイル変更には人による承認が必要です"
|
||||
},
|
||||
"modeSelectionItem.manualLabel": {
|
||||
"defaultMessage": "手動"
|
||||
},
|
||||
"modeSelectionItem.smartDescription": {
|
||||
"defaultMessage": "リスクレベルに基づき、承認が必要な操作を自動判断します"
|
||||
},
|
||||
"modeSelectionItem.smartLabel": {
|
||||
"defaultMessage": "スマート"
|
||||
},
|
||||
"modelAndProviderContext.modelChangeFailed": {
|
||||
"defaultMessage": "{provider}/{model}に失敗しました"
|
||||
},
|
||||
"modelAndProviderContext.modelChangedTitle": {
|
||||
"defaultMessage": "モデルを変更しました"
|
||||
},
|
||||
"modelAndProviderContext.selectModel": {
|
||||
"defaultMessage": "モデルを選択"
|
||||
},
|
||||
|
|
@ -2111,27 +2144,6 @@
|
|||
"modelAndProviderContext.unknownProviderTitle": {
|
||||
"defaultMessage": "プロバイダー名の確認"
|
||||
},
|
||||
"modelsBottomBar.changeModel": {
|
||||
"defaultMessage": "モデルを変更"
|
||||
},
|
||||
"modelsBottomBar.currentModel": {
|
||||
"defaultMessage": "現在のモデル"
|
||||
},
|
||||
"modelsBottomBar.loadingModel": {
|
||||
"defaultMessage": "モデルを読み込み中..."
|
||||
},
|
||||
"modelsBottomBar.localModelSettings": {
|
||||
"defaultMessage": "ローカルモデル設定"
|
||||
},
|
||||
"modelsBottomBar.localModelSettingsTitle": {
|
||||
"defaultMessage": "ローカルモデル設定 — {modelName}"
|
||||
},
|
||||
"modelsBottomBar.resolvedModel": {
|
||||
"defaultMessage": "解決済みモデル"
|
||||
},
|
||||
"modelsBottomBar.selectModel": {
|
||||
"defaultMessage": "モデルを選択"
|
||||
},
|
||||
"modelSettingsButtons.configureProviders": {
|
||||
"defaultMessage": "プロバイダーを設定"
|
||||
},
|
||||
|
|
@ -2291,36 +2303,33 @@
|
|||
"modelSettingsPanel.topP": {
|
||||
"defaultMessage": "Top P"
|
||||
},
|
||||
"modelsBottomBar.changeModel": {
|
||||
"defaultMessage": "モデルを変更"
|
||||
},
|
||||
"modelsBottomBar.currentModel": {
|
||||
"defaultMessage": "現在のモデル"
|
||||
},
|
||||
"modelsBottomBar.loadingModel": {
|
||||
"defaultMessage": "モデルを読み込み中..."
|
||||
},
|
||||
"modelsBottomBar.localModelSettings": {
|
||||
"defaultMessage": "ローカルモデル設定"
|
||||
},
|
||||
"modelsBottomBar.localModelSettingsTitle": {
|
||||
"defaultMessage": "ローカルモデル設定 — {modelName}"
|
||||
},
|
||||
"modelsBottomBar.resolvedModel": {
|
||||
"defaultMessage": "解決済みモデル"
|
||||
},
|
||||
"modelsBottomBar.selectModel": {
|
||||
"defaultMessage": "モデルを選択"
|
||||
},
|
||||
"modelsSection.resetDescription": {
|
||||
"defaultMessage": "選択したモデルとプロバイダー設定をクリアして最初からやり直します"
|
||||
},
|
||||
"modelsSection.resetTitle": {
|
||||
"defaultMessage": "プロバイダーとモデルをリセット"
|
||||
},
|
||||
"modeSelectionItem.autonomousDescription": {
|
||||
"defaultMessage": "ファイルを自由に編集、作成、削除できる完全なファイル変更権限。"
|
||||
},
|
||||
"modeSelectionItem.autonomousLabel": {
|
||||
"defaultMessage": "自律"
|
||||
},
|
||||
"modeSelectionItem.chatOnlyDescription": {
|
||||
"defaultMessage": "ツールや拡張機能を使わず、選択したプロバイダーとやり取りします。"
|
||||
},
|
||||
"modeSelectionItem.chatOnlyLabel": {
|
||||
"defaultMessage": "チャットのみ"
|
||||
},
|
||||
"modeSelectionItem.manualDescription": {
|
||||
"defaultMessage": "すべてのツール、拡張機能、ファイル変更には人による承認が必要です"
|
||||
},
|
||||
"modeSelectionItem.manualLabel": {
|
||||
"defaultMessage": "手動"
|
||||
},
|
||||
"modeSelectionItem.smartDescription": {
|
||||
"defaultMessage": "リスクレベルに基づき、承認が必要な操作を自動判断します"
|
||||
},
|
||||
"modeSelectionItem.smartLabel": {
|
||||
"defaultMessage": "スマート"
|
||||
},
|
||||
"navigation.itemApps": {
|
||||
"defaultMessage": "アプリ"
|
||||
},
|
||||
|
|
@ -2600,12 +2609,12 @@
|
|||
"promptsSettings.edit": {
|
||||
"defaultMessage": "編集"
|
||||
},
|
||||
"promptsSettings.editingLabel": {
|
||||
"defaultMessage": "編集中: {name}"
|
||||
},
|
||||
"promptsSettings.editPromptTitle": {
|
||||
"defaultMessage": "編集: {name}"
|
||||
},
|
||||
"promptsSettings.editingLabel": {
|
||||
"defaultMessage": "編集中: {name}"
|
||||
},
|
||||
"promptsSettings.enterPromptContent": {
|
||||
"defaultMessage": "プロンプト内容を入力..."
|
||||
},
|
||||
|
|
@ -2714,12 +2723,12 @@
|
|||
"providerConfigForm.noApiKey": {
|
||||
"defaultMessage": "APIキーをお持ちでないですか?"
|
||||
},
|
||||
"providerConfigForm.signingIn": {
|
||||
"defaultMessage": "サインイン中..."
|
||||
},
|
||||
"providerConfigForm.signInWith": {
|
||||
"defaultMessage": "{providerName}でサインイン"
|
||||
},
|
||||
"providerConfigForm.signingIn": {
|
||||
"defaultMessage": "サインイン中..."
|
||||
},
|
||||
"providerConfigurationModal.addApiKeyDescription": {
|
||||
"defaultMessage": "gooseと連携するには、このプロバイダーのAPIキーを追加してください"
|
||||
},
|
||||
|
|
@ -2780,12 +2789,12 @@
|
|||
"providerConfigurationModal.seeDocumentation": {
|
||||
"defaultMessage": "詳細は<link>ドキュメント</link>をご覧ください。"
|
||||
},
|
||||
"providerConfigurationModal.signingIn": {
|
||||
"defaultMessage": "サインイン中..."
|
||||
},
|
||||
"providerConfigurationModal.signInWith": {
|
||||
"defaultMessage": "{providerName}でサインイン"
|
||||
},
|
||||
"providerConfigurationModal.signingIn": {
|
||||
"defaultMessage": "サインイン中..."
|
||||
},
|
||||
"providerGrid.addProvider": {
|
||||
"defaultMessage": "プロバイダーを追加"
|
||||
},
|
||||
|
|
@ -3014,6 +3023,39 @@
|
|||
"recipeNameField.formatHint": {
|
||||
"defaultMessage": "自動的に整形されます(小文字、スペースはダッシュ)"
|
||||
},
|
||||
"recipeWarningModal.cancel": {
|
||||
"defaultMessage": "キャンセル"
|
||||
},
|
||||
"recipeWarningModal.descriptionLabel": {
|
||||
"defaultMessage": "説明:"
|
||||
},
|
||||
"recipeWarningModal.firstTimeDescription": {
|
||||
"defaultMessage": "これまで実行したことのないレシピを実行しようとしています。"
|
||||
},
|
||||
"recipeWarningModal.hiddenCharsWarning": {
|
||||
"defaultMessage": "このレシピには、安全のため無視される隠し文字が含まれています。悪意のある目的に使用される可能性があります。"
|
||||
},
|
||||
"recipeWarningModal.instructionsLabel": {
|
||||
"defaultMessage": "指示:"
|
||||
},
|
||||
"recipeWarningModal.newRecipeWarningTitle": {
|
||||
"defaultMessage": "⚠️ 新しいレシピの警告"
|
||||
},
|
||||
"recipeWarningModal.recipePreview": {
|
||||
"defaultMessage": "レシピのプレビュー:"
|
||||
},
|
||||
"recipeWarningModal.securityWarningTitle": {
|
||||
"defaultMessage": "⚠️ セキュリティ警告"
|
||||
},
|
||||
"recipeWarningModal.titleLabel": {
|
||||
"defaultMessage": "タイトル:"
|
||||
},
|
||||
"recipeWarningModal.trustAndExecute": {
|
||||
"defaultMessage": "信頼して実行"
|
||||
},
|
||||
"recipeWarningModal.trustSource": {
|
||||
"defaultMessage": "このレシピの提供元を信頼できる場合のみ続行してください。"
|
||||
},
|
||||
"recipesView.addSchedule": {
|
||||
"defaultMessage": "スケジュールを追加"
|
||||
},
|
||||
|
|
@ -3188,39 +3230,6 @@
|
|||
"recipesView.yamlFiles": {
|
||||
"defaultMessage": "YAMLファイル"
|
||||
},
|
||||
"recipeWarningModal.cancel": {
|
||||
"defaultMessage": "キャンセル"
|
||||
},
|
||||
"recipeWarningModal.descriptionLabel": {
|
||||
"defaultMessage": "説明:"
|
||||
},
|
||||
"recipeWarningModal.firstTimeDescription": {
|
||||
"defaultMessage": "これまで実行したことのないレシピを実行しようとしています。"
|
||||
},
|
||||
"recipeWarningModal.hiddenCharsWarning": {
|
||||
"defaultMessage": "このレシピには、安全のため無視される隠し文字が含まれています。悪意のある目的に使用される可能性があります。"
|
||||
},
|
||||
"recipeWarningModal.instructionsLabel": {
|
||||
"defaultMessage": "指示:"
|
||||
},
|
||||
"recipeWarningModal.newRecipeWarningTitle": {
|
||||
"defaultMessage": "⚠️ 新しいレシピの警告"
|
||||
},
|
||||
"recipeWarningModal.recipePreview": {
|
||||
"defaultMessage": "レシピのプレビュー:"
|
||||
},
|
||||
"recipeWarningModal.securityWarningTitle": {
|
||||
"defaultMessage": "⚠️ セキュリティ警告"
|
||||
},
|
||||
"recipeWarningModal.titleLabel": {
|
||||
"defaultMessage": "タイトル:"
|
||||
},
|
||||
"recipeWarningModal.trustAndExecute": {
|
||||
"defaultMessage": "信頼して実行"
|
||||
},
|
||||
"recipeWarningModal.trustSource": {
|
||||
"defaultMessage": "このレシピの提供元を信頼できる場合のみ続行してください。"
|
||||
},
|
||||
"resetProviderSection.resetButton": {
|
||||
"defaultMessage": "プロバイダーとモデルをリセット"
|
||||
},
|
||||
|
|
@ -3254,12 +3263,12 @@
|
|||
"scheduleDetailView.cronExpression": {
|
||||
"defaultMessage": "Cron式:"
|
||||
},
|
||||
"scheduleDetailView.currentlyRunning": {
|
||||
"defaultMessage": "実行中"
|
||||
},
|
||||
"scheduleDetailView.currentSession": {
|
||||
"defaultMessage": "現在のセッション:"
|
||||
},
|
||||
"scheduleDetailView.currentlyRunning": {
|
||||
"defaultMessage": "実行中"
|
||||
},
|
||||
"scheduleDetailView.dir": {
|
||||
"defaultMessage": "ディレクトリ: {path}"
|
||||
},
|
||||
|
|
@ -3317,6 +3326,12 @@
|
|||
"scheduleDetailView.noSessions": {
|
||||
"defaultMessage": "このスケジュールのセッションはありません。"
|
||||
},
|
||||
"scheduleDetailView.pauseSchedule": {
|
||||
"defaultMessage": "スケジュールを一時停止"
|
||||
},
|
||||
"scheduleDetailView.pauseUnpauseError": {
|
||||
"defaultMessage": "一時停止/再開エラー"
|
||||
},
|
||||
"scheduleDetailView.paused": {
|
||||
"defaultMessage": "一時停止中"
|
||||
},
|
||||
|
|
@ -3326,12 +3341,6 @@
|
|||
"scheduleDetailView.pausedWarning": {
|
||||
"defaultMessage": "このスケジュールは一時停止中のため、自動実行されません。手動で実行するには「スケジュールを今すぐ実行」を使用するか、一時停止を解除して自動実行を再開してください。"
|
||||
},
|
||||
"scheduleDetailView.pauseSchedule": {
|
||||
"defaultMessage": "スケジュールを一時停止"
|
||||
},
|
||||
"scheduleDetailView.pauseUnpauseError": {
|
||||
"defaultMessage": "一時停止/再開エラー"
|
||||
},
|
||||
"scheduleDetailView.processStarted": {
|
||||
"defaultMessage": "プロセス開始:"
|
||||
},
|
||||
|
|
@ -3377,18 +3386,18 @@
|
|||
"scheduleDetailView.sessionId": {
|
||||
"defaultMessage": "セッションID: {id}"
|
||||
},
|
||||
"scheduleDetailView.unpausedMsg": {
|
||||
"defaultMessage": "「{id}」を再開しました"
|
||||
},
|
||||
"scheduleDetailView.unpauseSchedule": {
|
||||
"defaultMessage": "スケジュールを再開"
|
||||
},
|
||||
"scheduleDetailView.updatedMsg": {
|
||||
"defaultMessage": "「{id}」を更新しました"
|
||||
"scheduleDetailView.unpausedMsg": {
|
||||
"defaultMessage": "「{id}」を再開しました"
|
||||
},
|
||||
"scheduleDetailView.updateScheduleError": {
|
||||
"defaultMessage": "スケジュール更新エラー"
|
||||
},
|
||||
"scheduleDetailView.updatedMsg": {
|
||||
"defaultMessage": "「{id}」を更新しました"
|
||||
},
|
||||
"scheduleDetailView.viewingScheduleId": {
|
||||
"defaultMessage": "表示中のスケジュールID: {id}"
|
||||
},
|
||||
|
|
@ -3512,12 +3521,12 @@
|
|||
"schedulesView.pause": {
|
||||
"defaultMessage": "一時停止"
|
||||
},
|
||||
"schedulesView.paused": {
|
||||
"defaultMessage": "一時停止中"
|
||||
},
|
||||
"schedulesView.pauseError": {
|
||||
"defaultMessage": "スケジュール一時停止エラー"
|
||||
},
|
||||
"schedulesView.paused": {
|
||||
"defaultMessage": "一時停止中"
|
||||
},
|
||||
"schedulesView.refresh": {
|
||||
"defaultMessage": "更新"
|
||||
},
|
||||
|
|
@ -3536,9 +3545,6 @@
|
|||
"schedulesView.schedulePausedMsg": {
|
||||
"defaultMessage": "スケジュール「{id}」を一時停止しました"
|
||||
},
|
||||
"schedulesView.scheduler": {
|
||||
"defaultMessage": "スケジューラー"
|
||||
},
|
||||
"schedulesView.scheduleUnpaused": {
|
||||
"defaultMessage": "スケジュールを再開しました"
|
||||
},
|
||||
|
|
@ -3551,6 +3557,9 @@
|
|||
"schedulesView.scheduleUpdatedMsg": {
|
||||
"defaultMessage": "スケジュール「{id}」を更新しました"
|
||||
},
|
||||
"schedulesView.scheduler": {
|
||||
"defaultMessage": "スケジューラー"
|
||||
},
|
||||
"schedulesView.unpauseError": {
|
||||
"defaultMessage": "スケジュール再開エラー"
|
||||
},
|
||||
|
|
@ -3653,15 +3662,15 @@
|
|||
"sessionActionsHeader.copyText": {
|
||||
"defaultMessage": "テキストをコピー"
|
||||
},
|
||||
"sessionActionsHeader.duplicated": {
|
||||
"defaultMessage": "セッションを複製しました"
|
||||
},
|
||||
"sessionActionsHeader.duplicateFailed": {
|
||||
"defaultMessage": "セッションを複製できませんでした: {error}"
|
||||
},
|
||||
"sessionActionsHeader.duplicateSession": {
|
||||
"defaultMessage": "セッションを複製"
|
||||
},
|
||||
"sessionActionsHeader.duplicated": {
|
||||
"defaultMessage": "セッションを複製しました"
|
||||
},
|
||||
"sessionActionsHeader.fullTextTitle": {
|
||||
"defaultMessage": "テキスト値"
|
||||
},
|
||||
|
|
@ -3674,9 +3683,6 @@
|
|||
"sessionActionsHeader.loadingJson": {
|
||||
"defaultMessage": "JSONを読み込み中..."
|
||||
},
|
||||
"sessionActionsHeader.renamed": {
|
||||
"defaultMessage": "セッションの名前を変更しました"
|
||||
},
|
||||
"sessionActionsHeader.renameFailed": {
|
||||
"defaultMessage": "セッションの名前を変更できませんでした: {error}"
|
||||
},
|
||||
|
|
@ -3689,6 +3695,9 @@
|
|||
"sessionActionsHeader.renameTitle": {
|
||||
"defaultMessage": "セッションの名前を変更"
|
||||
},
|
||||
"sessionActionsHeader.renamed": {
|
||||
"defaultMessage": "セッションの名前を変更しました"
|
||||
},
|
||||
"sessionActionsHeader.save": {
|
||||
"defaultMessage": "保存"
|
||||
},
|
||||
|
|
@ -3707,6 +3716,24 @@
|
|||
"sessionIndicators.streaming": {
|
||||
"defaultMessage": "ストリーミング中"
|
||||
},
|
||||
"sessionViewComponents.empty.description": {
|
||||
"defaultMessage": "このセッションにはメッセージがありません"
|
||||
},
|
||||
"sessionViewComponents.empty.title": {
|
||||
"defaultMessage": "メッセージが見つかりません"
|
||||
},
|
||||
"sessionViewComponents.error.loading": {
|
||||
"defaultMessage": "セッション詳細の読み込みエラー"
|
||||
},
|
||||
"sessionViewComponents.error.tryAgain": {
|
||||
"defaultMessage": "再試行"
|
||||
},
|
||||
"sessionViewComponents.role.assistant": {
|
||||
"defaultMessage": "Goose"
|
||||
},
|
||||
"sessionViewComponents.role.user": {
|
||||
"defaultMessage": "あなた"
|
||||
},
|
||||
"sessions.action.delete": {
|
||||
"defaultMessage": "セッションを削除"
|
||||
},
|
||||
|
|
@ -3764,9 +3791,6 @@
|
|||
"sessions.import": {
|
||||
"defaultMessage": "セッションをインポート"
|
||||
},
|
||||
"sessions.importing": {
|
||||
"defaultMessage": "インポート中..."
|
||||
},
|
||||
"sessions.importNostr": {
|
||||
"defaultMessage": "リンクをインポート"
|
||||
},
|
||||
|
|
@ -3779,6 +3803,9 @@
|
|||
"sessions.importNostr.title": {
|
||||
"defaultMessage": "Nostrセッションをインポート"
|
||||
},
|
||||
"sessions.importing": {
|
||||
"defaultMessage": "インポート中..."
|
||||
},
|
||||
"sessions.loadingMore": {
|
||||
"defaultMessage": "さらにセッションを読み込み中..."
|
||||
},
|
||||
|
|
@ -3806,56 +3833,38 @@
|
|||
"sessions.toast.copied": {
|
||||
"defaultMessage": "クリップボードにコピーしました"
|
||||
},
|
||||
"sessions.toast.deleted": {
|
||||
"defaultMessage": "セッションを削除しました"
|
||||
},
|
||||
"sessions.toast.deleteFailed": {
|
||||
"defaultMessage": "セッション「{name}」を削除できませんでした: {error}"
|
||||
},
|
||||
"sessions.toast.duplicated": {
|
||||
"defaultMessage": "セッション「{name}」を複製しました"
|
||||
"sessions.toast.deleted": {
|
||||
"defaultMessage": "セッションを削除しました"
|
||||
},
|
||||
"sessions.toast.duplicateFailed": {
|
||||
"defaultMessage": "セッションを複製できませんでした: {error}"
|
||||
},
|
||||
"sessions.toast.duplicated": {
|
||||
"defaultMessage": "セッション「{name}」を複製しました"
|
||||
},
|
||||
"sessions.toast.exported": {
|
||||
"defaultMessage": "セッションをエクスポートしました"
|
||||
},
|
||||
"sessions.toast.imported": {
|
||||
"defaultMessage": "セッションをインポートしました"
|
||||
},
|
||||
"sessions.toast.importFailed": {
|
||||
"defaultMessage": "セッションをインポートできませんでした: {error}"
|
||||
},
|
||||
"sessions.toast.imported": {
|
||||
"defaultMessage": "セッションをインポートしました"
|
||||
},
|
||||
"sessions.toast.shareNostr": {
|
||||
"defaultMessage": "暗号化Nostr共有リンクを作成しました"
|
||||
},
|
||||
"sessions.toast.shareNostrFailed": {
|
||||
"defaultMessage": "Nostr共有リンクを作成できませんでした: {error}"
|
||||
},
|
||||
"sessions.toast.updated": {
|
||||
"defaultMessage": "セッションの説明を更新しました"
|
||||
},
|
||||
"sessions.toast.updateFailed": {
|
||||
"defaultMessage": "セッションの説明を更新できませんでした: {error}"
|
||||
},
|
||||
"sessionViewComponents.empty.description": {
|
||||
"defaultMessage": "このセッションにはメッセージがありません"
|
||||
},
|
||||
"sessionViewComponents.empty.title": {
|
||||
"defaultMessage": "メッセージが見つかりません"
|
||||
},
|
||||
"sessionViewComponents.error.loading": {
|
||||
"defaultMessage": "セッション詳細の読み込みエラー"
|
||||
},
|
||||
"sessionViewComponents.error.tryAgain": {
|
||||
"defaultMessage": "再試行"
|
||||
},
|
||||
"sessionViewComponents.role.assistant": {
|
||||
"defaultMessage": "Goose"
|
||||
},
|
||||
"sessionViewComponents.role.user": {
|
||||
"defaultMessage": "あなた"
|
||||
"sessions.toast.updated": {
|
||||
"defaultMessage": "セッションの説明を更新しました"
|
||||
},
|
||||
"settings.appearance.description": {
|
||||
"defaultMessage": "システム上でのgooseの表示を設定します"
|
||||
|
|
@ -4397,12 +4406,12 @@
|
|||
"themeSelector.theme": {
|
||||
"defaultMessage": "テーマ"
|
||||
},
|
||||
"toolApprovalButtons.allowedOnce": {
|
||||
"defaultMessage": "1回のみ許可済み"
|
||||
},
|
||||
"toolApprovalButtons.allowOnce": {
|
||||
"defaultMessage": "1回のみ許可"
|
||||
},
|
||||
"toolApprovalButtons.allowedOnce": {
|
||||
"defaultMessage": "1回のみ許可済み"
|
||||
},
|
||||
"toolApprovalButtons.alwaysAllow": {
|
||||
"defaultMessage": "常に許可"
|
||||
},
|
||||
|
|
@ -4484,18 +4493,18 @@
|
|||
"updateSection.disableAutoDownloadDesc": {
|
||||
"defaultMessage": "有効にすると、Goose は新しいバージョンを通知しますが、自動的にはダウンロードしません。"
|
||||
},
|
||||
"updateSection.downloadingProgress": {
|
||||
"defaultMessage": "アップデートをダウンロード中... {percent}%"
|
||||
},
|
||||
"updateSection.downloadingUpdate": {
|
||||
"defaultMessage": "アップデートをダウンロード中..."
|
||||
},
|
||||
"updateSection.downloadNow": {
|
||||
"defaultMessage": "今すぐダウンロード"
|
||||
},
|
||||
"updateSection.downloadReady": {
|
||||
"defaultMessage": "アップデートのダウンロードが完了し、インストールの準備ができました!"
|
||||
},
|
||||
"updateSection.downloadingProgress": {
|
||||
"defaultMessage": "アップデートをダウンロード中... {percent}%"
|
||||
},
|
||||
"updateSection.downloadingUpdate": {
|
||||
"defaultMessage": "アップデートをダウンロード中..."
|
||||
},
|
||||
"updateSection.installAndRestart": {
|
||||
"defaultMessage": "インストールして再起動"
|
||||
},
|
||||
|
|
@ -4520,12 +4529,12 @@
|
|||
"updateSection.readyInstallManual": {
|
||||
"defaultMessage": "✓ アップデートの準備ができました!インストール手順を表示するには「インストールして再起動」をクリックしてください。"
|
||||
},
|
||||
"updateSection.updateAvailable": {
|
||||
"defaultMessage": "アップデートがあります!"
|
||||
},
|
||||
"updateSection.upToDate": {
|
||||
"defaultMessage": "(最新)"
|
||||
},
|
||||
"updateSection.updateAvailable": {
|
||||
"defaultMessage": "アップデートがあります!"
|
||||
},
|
||||
"updateSection.versionAvailable": {
|
||||
"defaultMessage": "→ {version} が利用可能"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -20,12 +20,21 @@
|
|||
"appsView.customApp": {
|
||||
"defaultMessage": "사용자 지정 앱"
|
||||
},
|
||||
"appsView.deleteApp": {
|
||||
"defaultMessage": "Delete app"
|
||||
},
|
||||
"appsView.deleteConfirm": {
|
||||
"defaultMessage": "Delete \"{name}\"? This cannot be undone."
|
||||
},
|
||||
"appsView.description": {
|
||||
"defaultMessage": "MCP 서버의 애플리케이션과 goose 자체에서 구축한 앱입니다. 채팅 인터페이스를 통해 새 앱을 생성하도록 요청할 수 있으며 여기에 표시됩니다."
|
||||
},
|
||||
"appsView.errorLoading": {
|
||||
"defaultMessage": "앱 로딩 오류: {error}"
|
||||
},
|
||||
"appsView.errorPrefix": {
|
||||
"defaultMessage": "Error: {error}"
|
||||
},
|
||||
"appsView.importApp": {
|
||||
"defaultMessage": "앱 가져오기"
|
||||
},
|
||||
|
|
@ -41,15 +50,15 @@
|
|||
"appsView.noAppsTitle": {
|
||||
"defaultMessage": "사용 가능한 앱이 없습니다."
|
||||
},
|
||||
"appsView.retry": {
|
||||
"defaultMessage": "다시 시도"
|
||||
},
|
||||
"appsView.retiredChatApp": {
|
||||
"defaultMessage": "Chat app retired"
|
||||
},
|
||||
"appsView.retiredChatAppDetail": {
|
||||
"defaultMessage": "We removed this feature because MCP sampling is no longer supported."
|
||||
},
|
||||
"appsView.retry": {
|
||||
"defaultMessage": "다시 시도"
|
||||
},
|
||||
"appsView.title": {
|
||||
"defaultMessage": "앱"
|
||||
},
|
||||
|
|
@ -65,15 +74,15 @@
|
|||
"authSettings.deleteCredential": {
|
||||
"defaultMessage": "자격 증명 삭제"
|
||||
},
|
||||
"authSettings.deleted": {
|
||||
"defaultMessage": "자격 증명이 삭제되었습니다."
|
||||
},
|
||||
"authSettings.deleteMessage": {
|
||||
"defaultMessage": "{provider}의 {name} 자격 증명을 삭제하시겠습니까?"
|
||||
},
|
||||
"authSettings.deleteTitle": {
|
||||
"defaultMessage": "자격 증명 삭제"
|
||||
},
|
||||
"authSettings.deleted": {
|
||||
"defaultMessage": "자격 증명이 삭제되었습니다."
|
||||
},
|
||||
"authSettings.description": {
|
||||
"defaultMessage": "goose에 로컬로 저장된 제공업체 자격 증명을 관리합니다."
|
||||
},
|
||||
|
|
@ -98,12 +107,12 @@
|
|||
"authSettings.reauthorize": {
|
||||
"defaultMessage": "재승인"
|
||||
},
|
||||
"authSettings.signedIn": {
|
||||
"defaultMessage": "자격 증명이 설정되었습니다."
|
||||
},
|
||||
"authSettings.signIn": {
|
||||
"defaultMessage": "로그인"
|
||||
},
|
||||
"authSettings.signedIn": {
|
||||
"defaultMessage": "자격 증명이 설정되었습니다."
|
||||
},
|
||||
"authSettings.storageProviderCache": {
|
||||
"defaultMessage": "제공업체 캐시"
|
||||
},
|
||||
|
|
@ -122,12 +131,6 @@
|
|||
"baseChat.goHome": {
|
||||
"defaultMessage": "홈으로 이동"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForNewChats": {
|
||||
"defaultMessage": "새 채팅에 사용할 익스텐션"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForThisSession": {
|
||||
"defaultMessage": "이 채팅 세션의 익스텐션"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionUpdated": {
|
||||
"defaultMessage": "익스텐션이 업데이트되었습니다."
|
||||
},
|
||||
|
|
@ -137,6 +140,12 @@
|
|||
"bottomMenuExtensionSelection.extensionWillBeEnabled": {
|
||||
"defaultMessage": "{name}은 새 채팅에서 활성화됩니다."
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForNewChats": {
|
||||
"defaultMessage": "새 채팅에 사용할 익스텐션"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForThisSession": {
|
||||
"defaultMessage": "이 채팅 세션의 익스텐션"
|
||||
},
|
||||
"bottomMenuExtensionSelection.manageExtensions": {
|
||||
"defaultMessage": "익스텐션 관리"
|
||||
},
|
||||
|
|
@ -638,12 +647,12 @@
|
|||
"customProviderForm.attachments": {
|
||||
"defaultMessage": "첨부파일"
|
||||
},
|
||||
"customProviderForm.authentication": {
|
||||
"defaultMessage": "인증"
|
||||
},
|
||||
"customProviderForm.authHint": {
|
||||
"defaultMessage": "Ollama와 같은 로컬 LLM에는 일반적으로 API 키가 필요하지 않습니다."
|
||||
},
|
||||
"customProviderForm.authentication": {
|
||||
"defaultMessage": "인증"
|
||||
},
|
||||
"customProviderForm.availableModels": {
|
||||
"defaultMessage": "사용 가능한 모델(쉼표로 구분)"
|
||||
},
|
||||
|
|
@ -941,21 +950,18 @@
|
|||
"elicitationRequest.waitingForResponse": {
|
||||
"defaultMessage": "답변을 기다리는 중입니다. ({timeRemaining} 남음)"
|
||||
},
|
||||
"environmentBadge.dev": {
|
||||
"defaultMessage": "Dev"
|
||||
},
|
||||
"envVarsSection.add": {
|
||||
"defaultMessage": "추가"
|
||||
},
|
||||
"envVarsSection.bothRequired": {
|
||||
"defaultMessage": "변수 이름과 값을 모두 입력해야 합니다."
|
||||
},
|
||||
"envVarsSection.environmentVariables": {
|
||||
"defaultMessage": "환경 변수"
|
||||
},
|
||||
"envVarsSection.envVarsDescription": {
|
||||
"defaultMessage": "환경 변수에 대한 키-값 쌍을 추가합니다. 두 필드를 모두 채운 후 \"+\" 버튼을 클릭하여 추가하세요. 기존 비밀 값의 경우 편집 버튼을 클릭하여 수정하세요."
|
||||
},
|
||||
"envVarsSection.environmentVariables": {
|
||||
"defaultMessage": "환경 변수"
|
||||
},
|
||||
"envVarsSection.noSpaces": {
|
||||
"defaultMessage": "변수 이름에는 공백이 포함될 수 없습니다."
|
||||
},
|
||||
|
|
@ -965,6 +971,9 @@
|
|||
"envVarsSection.variableName": {
|
||||
"defaultMessage": "변수 이름"
|
||||
},
|
||||
"environmentBadge.dev": {
|
||||
"defaultMessage": "Dev"
|
||||
},
|
||||
"errorBoundary.errorGeneric": {
|
||||
"defaultMessage": "오류가 발생했습니다."
|
||||
},
|
||||
|
|
@ -1124,6 +1133,9 @@
|
|||
"extensionModal.unsavedChangesTitle": {
|
||||
"defaultMessage": "저장되지 않은 변경사항"
|
||||
},
|
||||
"extensionTimeoutField.timeoutLabel": {
|
||||
"defaultMessage": "시간 초과"
|
||||
},
|
||||
"extensionsSection.addCustomExtension": {
|
||||
"defaultMessage": "사용자 지정 익스텐션 추가"
|
||||
},
|
||||
|
|
@ -1160,9 +1172,6 @@
|
|||
"extensionsView.searchPlaceholder": {
|
||||
"defaultMessage": "익스텐션 검색..."
|
||||
},
|
||||
"extensionTimeoutField.timeoutLabel": {
|
||||
"defaultMessage": "시간 초과"
|
||||
},
|
||||
"externalBackendSection.certFingerprint": {
|
||||
"defaultMessage": "인증서 지문(선택 사항)"
|
||||
},
|
||||
|
|
@ -1382,12 +1391,12 @@
|
|||
"huggingFaceSignInPrompt.failedToConfigure": {
|
||||
"defaultMessage": "Hugging Face에 로그인하지 못했습니다: {error}"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signedIn": {
|
||||
"defaultMessage": "Hugging Face 로그인됨"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signIn": {
|
||||
"defaultMessage": "로그인"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signedIn": {
|
||||
"defaultMessage": "Hugging Face 로그인됨"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signingIn": {
|
||||
"defaultMessage": "로그인 중..."
|
||||
},
|
||||
|
|
@ -1421,15 +1430,15 @@
|
|||
"importRecipeForm.expectedRecipeStructure": {
|
||||
"defaultMessage": "예상 레시피 구조"
|
||||
},
|
||||
"importRecipeForm.importing": {
|
||||
"defaultMessage": "가져오는 중..."
|
||||
},
|
||||
"importRecipeForm.importRecipeButton": {
|
||||
"defaultMessage": "레시피 가져오기"
|
||||
},
|
||||
"importRecipeForm.importRecipeTitle": {
|
||||
"defaultMessage": "레시피 가져오기"
|
||||
},
|
||||
"importRecipeForm.importing": {
|
||||
"defaultMessage": "가져오는 중..."
|
||||
},
|
||||
"importRecipeForm.or": {
|
||||
"defaultMessage": "또는"
|
||||
},
|
||||
|
|
@ -1529,6 +1538,18 @@
|
|||
"jsonSchemaForm.submit": {
|
||||
"defaultMessage": "제출"
|
||||
},
|
||||
"keyValueEditor.addValue": {
|
||||
"defaultMessage": "사전 구성된 값 추가"
|
||||
},
|
||||
"keyValueEditor.defaultKeyPlaceholder": {
|
||||
"defaultMessage": "매개변수 이름..."
|
||||
},
|
||||
"keyValueEditor.defaultValuePlaceholder": {
|
||||
"defaultMessage": "매개변수 값..."
|
||||
},
|
||||
"keyValueEditor.removeValue": {
|
||||
"defaultMessage": "사전 구성된 값 제거: {key}"
|
||||
},
|
||||
"keyboardShortcuts.alwaysOnTopDescription": {
|
||||
"defaultMessage": "창을 항상 위에 표시할지 전환합니다."
|
||||
},
|
||||
|
|
@ -1673,18 +1694,6 @@
|
|||
"keyboardShortcuts.toggleNavigationLabel": {
|
||||
"defaultMessage": "탐색 메뉴 전환"
|
||||
},
|
||||
"keyValueEditor.addValue": {
|
||||
"defaultMessage": "사전 구성된 값 추가"
|
||||
},
|
||||
"keyValueEditor.defaultKeyPlaceholder": {
|
||||
"defaultMessage": "매개변수 이름..."
|
||||
},
|
||||
"keyValueEditor.defaultValuePlaceholder": {
|
||||
"defaultMessage": "매개변수 값..."
|
||||
},
|
||||
"keyValueEditor.removeValue": {
|
||||
"defaultMessage": "사전 구성된 값 제거: {key}"
|
||||
},
|
||||
"launcher.placeholder": {
|
||||
"defaultMessage": "goose에게 무엇이든 물어보세요..."
|
||||
},
|
||||
|
|
@ -1724,18 +1733,18 @@
|
|||
"localInferenceSettings.downloadCancelled": {
|
||||
"defaultMessage": "다운로드가 취소되었습니다."
|
||||
},
|
||||
"localInferenceSettings.downloadedModels": {
|
||||
"defaultMessage": "다운로드한 모델"
|
||||
},
|
||||
"localInferenceSettings.downloadFailed": {
|
||||
"defaultMessage": "다운로드 실패"
|
||||
},
|
||||
"localInferenceSettings.downloading": {
|
||||
"defaultMessage": "다운로드 중"
|
||||
},
|
||||
"localInferenceSettings.downloadProgress": {
|
||||
"defaultMessage": "{downloaded} / {total} ({percent}%)"
|
||||
},
|
||||
"localInferenceSettings.downloadedModels": {
|
||||
"defaultMessage": "다운로드한 모델"
|
||||
},
|
||||
"localInferenceSettings.downloading": {
|
||||
"defaultMessage": "다운로드 중"
|
||||
},
|
||||
"localInferenceSettings.evictFromMemory": {
|
||||
"defaultMessage": "Evict from memory"
|
||||
},
|
||||
|
|
@ -1823,12 +1832,12 @@
|
|||
"localModelPicker.checkingModels": {
|
||||
"defaultMessage": "사용 가능한 모델을 확인하는 중..."
|
||||
},
|
||||
"localModelPicker.downloading": {
|
||||
"defaultMessage": "{modelId} 다운로드 중"
|
||||
},
|
||||
"localModelPicker.downloadModel": {
|
||||
"defaultMessage": "{modelId} 다운로드 ({size})"
|
||||
},
|
||||
"localModelPicker.downloading": {
|
||||
"defaultMessage": "{modelId} 다운로드 중"
|
||||
},
|
||||
"localModelPicker.failedToLoad": {
|
||||
"defaultMessage": "사용 가능한 모델을 로드하지 못했습니다. 다시 시도해 주세요."
|
||||
},
|
||||
|
|
@ -1991,9 +2000,6 @@
|
|||
"messageQueue.paused": {
|
||||
"defaultMessage": "일시중지됨"
|
||||
},
|
||||
"messageQueue.queued": {
|
||||
"defaultMessage": "대기 중"
|
||||
},
|
||||
"messageQueue.queuePaused": {
|
||||
"defaultMessage": "대기열이 일시중지되었습니다."
|
||||
},
|
||||
|
|
@ -2003,6 +2009,9 @@
|
|||
"messageQueue.queuePausedExpanded": {
|
||||
"defaultMessage": "중단으로 인해 대기열이 일시중지되었습니다. 재개하려면 \"지금 보내기\"를 사용하거나 새 메시지를 추가하세요."
|
||||
},
|
||||
"messageQueue.queued": {
|
||||
"defaultMessage": "대기 중"
|
||||
},
|
||||
"messageQueue.removeFromQueue": {
|
||||
"defaultMessage": "대기열에서 이 메시지 제거"
|
||||
},
|
||||
|
|
@ -2093,12 +2102,36 @@
|
|||
"microphoneSelector.test": {
|
||||
"defaultMessage": "테스트"
|
||||
},
|
||||
"modelAndProviderContext.modelChangedTitle": {
|
||||
"defaultMessage": "모델 변경됨"
|
||||
"modeSelectionItem.autonomousDescription": {
|
||||
"defaultMessage": "파일을 자유롭게 편집, 생성, 삭제할 수 있습니다."
|
||||
},
|
||||
"modeSelectionItem.autonomousLabel": {
|
||||
"defaultMessage": "자율"
|
||||
},
|
||||
"modeSelectionItem.chatOnlyDescription": {
|
||||
"defaultMessage": "도구나 익스텐션을 사용하지 않고 선택한 제공업체와 대화합니다."
|
||||
},
|
||||
"modeSelectionItem.chatOnlyLabel": {
|
||||
"defaultMessage": "채팅 전용"
|
||||
},
|
||||
"modeSelectionItem.manualDescription": {
|
||||
"defaultMessage": "모든 도구, 익스텐션, 파일 수정에는 사용자 승인이 필요합니다."
|
||||
},
|
||||
"modeSelectionItem.manualLabel": {
|
||||
"defaultMessage": "수동"
|
||||
},
|
||||
"modeSelectionItem.smartDescription": {
|
||||
"defaultMessage": "위험 수준에 따라 승인이 필요한 작업을 지능적으로 판단합니다."
|
||||
},
|
||||
"modeSelectionItem.smartLabel": {
|
||||
"defaultMessage": "스마트"
|
||||
},
|
||||
"modelAndProviderContext.modelChangeFailed": {
|
||||
"defaultMessage": "{provider}/{model} 실패"
|
||||
},
|
||||
"modelAndProviderContext.modelChangedTitle": {
|
||||
"defaultMessage": "모델 변경됨"
|
||||
},
|
||||
"modelAndProviderContext.selectModel": {
|
||||
"defaultMessage": "모델 선택"
|
||||
},
|
||||
|
|
@ -2111,27 +2144,6 @@
|
|||
"modelAndProviderContext.unknownProviderTitle": {
|
||||
"defaultMessage": "제공업체 이름 조회"
|
||||
},
|
||||
"modelsBottomBar.changeModel": {
|
||||
"defaultMessage": "모델 변경"
|
||||
},
|
||||
"modelsBottomBar.currentModel": {
|
||||
"defaultMessage": "현재 모델"
|
||||
},
|
||||
"modelsBottomBar.loadingModel": {
|
||||
"defaultMessage": "모델 로드 중..."
|
||||
},
|
||||
"modelsBottomBar.localModelSettings": {
|
||||
"defaultMessage": "로컬 모델 설정"
|
||||
},
|
||||
"modelsBottomBar.localModelSettingsTitle": {
|
||||
"defaultMessage": "로컬 모델 설정 — {modelName}"
|
||||
},
|
||||
"modelsBottomBar.resolvedModel": {
|
||||
"defaultMessage": "확인된 모델"
|
||||
},
|
||||
"modelsBottomBar.selectModel": {
|
||||
"defaultMessage": "모델 선택"
|
||||
},
|
||||
"modelSettingsButtons.configureProviders": {
|
||||
"defaultMessage": "제공업체 설정"
|
||||
},
|
||||
|
|
@ -2291,36 +2303,33 @@
|
|||
"modelSettingsPanel.topP": {
|
||||
"defaultMessage": "Top P"
|
||||
},
|
||||
"modelsBottomBar.changeModel": {
|
||||
"defaultMessage": "모델 변경"
|
||||
},
|
||||
"modelsBottomBar.currentModel": {
|
||||
"defaultMessage": "현재 모델"
|
||||
},
|
||||
"modelsBottomBar.loadingModel": {
|
||||
"defaultMessage": "모델 로드 중..."
|
||||
},
|
||||
"modelsBottomBar.localModelSettings": {
|
||||
"defaultMessage": "로컬 모델 설정"
|
||||
},
|
||||
"modelsBottomBar.localModelSettingsTitle": {
|
||||
"defaultMessage": "로컬 모델 설정 — {modelName}"
|
||||
},
|
||||
"modelsBottomBar.resolvedModel": {
|
||||
"defaultMessage": "확인된 모델"
|
||||
},
|
||||
"modelsBottomBar.selectModel": {
|
||||
"defaultMessage": "모델 선택"
|
||||
},
|
||||
"modelsSection.resetDescription": {
|
||||
"defaultMessage": "선택한 모델 및 제공업체 설정을 지우고 새로 시작합니다."
|
||||
},
|
||||
"modelsSection.resetTitle": {
|
||||
"defaultMessage": "제공업체 및 모델 초기화"
|
||||
},
|
||||
"modeSelectionItem.autonomousDescription": {
|
||||
"defaultMessage": "파일을 자유롭게 편집, 생성, 삭제할 수 있습니다."
|
||||
},
|
||||
"modeSelectionItem.autonomousLabel": {
|
||||
"defaultMessage": "자율"
|
||||
},
|
||||
"modeSelectionItem.chatOnlyDescription": {
|
||||
"defaultMessage": "도구나 익스텐션을 사용하지 않고 선택한 제공업체와 대화합니다."
|
||||
},
|
||||
"modeSelectionItem.chatOnlyLabel": {
|
||||
"defaultMessage": "채팅 전용"
|
||||
},
|
||||
"modeSelectionItem.manualDescription": {
|
||||
"defaultMessage": "모든 도구, 익스텐션, 파일 수정에는 사용자 승인이 필요합니다."
|
||||
},
|
||||
"modeSelectionItem.manualLabel": {
|
||||
"defaultMessage": "수동"
|
||||
},
|
||||
"modeSelectionItem.smartDescription": {
|
||||
"defaultMessage": "위험 수준에 따라 승인이 필요한 작업을 지능적으로 판단합니다."
|
||||
},
|
||||
"modeSelectionItem.smartLabel": {
|
||||
"defaultMessage": "스마트"
|
||||
},
|
||||
"navigation.itemApps": {
|
||||
"defaultMessage": "앱"
|
||||
},
|
||||
|
|
@ -2600,10 +2609,10 @@
|
|||
"promptsSettings.edit": {
|
||||
"defaultMessage": "편집"
|
||||
},
|
||||
"promptsSettings.editingLabel": {
|
||||
"promptsSettings.editPromptTitle": {
|
||||
"defaultMessage": "편집: {name}"
|
||||
},
|
||||
"promptsSettings.editPromptTitle": {
|
||||
"promptsSettings.editingLabel": {
|
||||
"defaultMessage": "편집: {name}"
|
||||
},
|
||||
"promptsSettings.enterPromptContent": {
|
||||
|
|
@ -2714,12 +2723,12 @@
|
|||
"providerConfigForm.noApiKey": {
|
||||
"defaultMessage": "API 키가 없나요?"
|
||||
},
|
||||
"providerConfigForm.signingIn": {
|
||||
"defaultMessage": "로그인 중..."
|
||||
},
|
||||
"providerConfigForm.signInWith": {
|
||||
"defaultMessage": "{providerName}으로 로그인"
|
||||
},
|
||||
"providerConfigForm.signingIn": {
|
||||
"defaultMessage": "로그인 중..."
|
||||
},
|
||||
"providerConfigurationModal.addApiKeyDescription": {
|
||||
"defaultMessage": "이 제공업체를 goose에 연동하려면 API 키를 추가하세요."
|
||||
},
|
||||
|
|
@ -2780,12 +2789,12 @@
|
|||
"providerConfigurationModal.seeDocumentation": {
|
||||
"defaultMessage": "자세한 내용은 <link>문서</link>를 참조하세요."
|
||||
},
|
||||
"providerConfigurationModal.signingIn": {
|
||||
"defaultMessage": "로그인 중..."
|
||||
},
|
||||
"providerConfigurationModal.signInWith": {
|
||||
"defaultMessage": "{providerName}으로 로그인"
|
||||
},
|
||||
"providerConfigurationModal.signingIn": {
|
||||
"defaultMessage": "로그인 중..."
|
||||
},
|
||||
"providerGrid.addProvider": {
|
||||
"defaultMessage": "제공업체 추가"
|
||||
},
|
||||
|
|
@ -3014,6 +3023,39 @@
|
|||
"recipeNameField.formatHint": {
|
||||
"defaultMessage": "자동으로 형식이 지정됩니다(소문자, 공백은 대시로 변환)."
|
||||
},
|
||||
"recipeWarningModal.cancel": {
|
||||
"defaultMessage": "취소"
|
||||
},
|
||||
"recipeWarningModal.descriptionLabel": {
|
||||
"defaultMessage": "설명:"
|
||||
},
|
||||
"recipeWarningModal.firstTimeDescription": {
|
||||
"defaultMessage": "이전에 실행한 적이 없는 레시피를 실행하려고 합니다."
|
||||
},
|
||||
"recipeWarningModal.hiddenCharsWarning": {
|
||||
"defaultMessage": "이 레시피에는 악의적인 목적으로 사용될 수 있으므로 안전을 위해 무시되는 숨겨진 문자가 포함되어 있습니다."
|
||||
},
|
||||
"recipeWarningModal.instructionsLabel": {
|
||||
"defaultMessage": "지침:"
|
||||
},
|
||||
"recipeWarningModal.newRecipeWarningTitle": {
|
||||
"defaultMessage": "⚠️ 새로운 레시피 경고"
|
||||
},
|
||||
"recipeWarningModal.recipePreview": {
|
||||
"defaultMessage": "레시피 미리보기:"
|
||||
},
|
||||
"recipeWarningModal.securityWarningTitle": {
|
||||
"defaultMessage": "⚠️ 보안 경고"
|
||||
},
|
||||
"recipeWarningModal.titleLabel": {
|
||||
"defaultMessage": "제목:"
|
||||
},
|
||||
"recipeWarningModal.trustAndExecute": {
|
||||
"defaultMessage": "신뢰하고 실행"
|
||||
},
|
||||
"recipeWarningModal.trustSource": {
|
||||
"defaultMessage": "이 레시피의 출처를 신뢰하는 경우에만 진행하세요."
|
||||
},
|
||||
"recipesView.addSchedule": {
|
||||
"defaultMessage": "일정 추가"
|
||||
},
|
||||
|
|
@ -3188,39 +3230,6 @@
|
|||
"recipesView.yamlFiles": {
|
||||
"defaultMessage": "YAML 파일"
|
||||
},
|
||||
"recipeWarningModal.cancel": {
|
||||
"defaultMessage": "취소"
|
||||
},
|
||||
"recipeWarningModal.descriptionLabel": {
|
||||
"defaultMessage": "설명:"
|
||||
},
|
||||
"recipeWarningModal.firstTimeDescription": {
|
||||
"defaultMessage": "이전에 실행한 적이 없는 레시피를 실행하려고 합니다."
|
||||
},
|
||||
"recipeWarningModal.hiddenCharsWarning": {
|
||||
"defaultMessage": "이 레시피에는 악의적인 목적으로 사용될 수 있으므로 안전을 위해 무시되는 숨겨진 문자가 포함되어 있습니다."
|
||||
},
|
||||
"recipeWarningModal.instructionsLabel": {
|
||||
"defaultMessage": "지침:"
|
||||
},
|
||||
"recipeWarningModal.newRecipeWarningTitle": {
|
||||
"defaultMessage": "⚠️ 새로운 레시피 경고"
|
||||
},
|
||||
"recipeWarningModal.recipePreview": {
|
||||
"defaultMessage": "레시피 미리보기:"
|
||||
},
|
||||
"recipeWarningModal.securityWarningTitle": {
|
||||
"defaultMessage": "⚠️ 보안 경고"
|
||||
},
|
||||
"recipeWarningModal.titleLabel": {
|
||||
"defaultMessage": "제목:"
|
||||
},
|
||||
"recipeWarningModal.trustAndExecute": {
|
||||
"defaultMessage": "신뢰하고 실행"
|
||||
},
|
||||
"recipeWarningModal.trustSource": {
|
||||
"defaultMessage": "이 레시피의 출처를 신뢰하는 경우에만 진행하세요."
|
||||
},
|
||||
"resetProviderSection.resetButton": {
|
||||
"defaultMessage": "제공업체 및 모델 초기화"
|
||||
},
|
||||
|
|
@ -3254,12 +3263,12 @@
|
|||
"scheduleDetailView.cronExpression": {
|
||||
"defaultMessage": "cron 표현식:"
|
||||
},
|
||||
"scheduleDetailView.currentlyRunning": {
|
||||
"defaultMessage": "현재 실행 중"
|
||||
},
|
||||
"scheduleDetailView.currentSession": {
|
||||
"defaultMessage": "현재 세션:"
|
||||
},
|
||||
"scheduleDetailView.currentlyRunning": {
|
||||
"defaultMessage": "현재 실행 중"
|
||||
},
|
||||
"scheduleDetailView.dir": {
|
||||
"defaultMessage": "디렉터리: {path}"
|
||||
},
|
||||
|
|
@ -3317,6 +3326,12 @@
|
|||
"scheduleDetailView.noSessions": {
|
||||
"defaultMessage": "이 일정에 대한 세션을 찾을 수 없습니다."
|
||||
},
|
||||
"scheduleDetailView.pauseSchedule": {
|
||||
"defaultMessage": "일정 일시 중지"
|
||||
},
|
||||
"scheduleDetailView.pauseUnpauseError": {
|
||||
"defaultMessage": "일시중지/일시중지 해제 오류"
|
||||
},
|
||||
"scheduleDetailView.paused": {
|
||||
"defaultMessage": "일시중지됨"
|
||||
},
|
||||
|
|
@ -3326,12 +3341,6 @@
|
|||
"scheduleDetailView.pausedWarning": {
|
||||
"defaultMessage": "이 일정은 일시 중지되어 자동으로 실행되지 않습니다. 수동으로 실행하려면 \"지금 일정 실행\"을 사용하거나, 자동 실행을 재개하려면 일시 중지를 해제하세요."
|
||||
},
|
||||
"scheduleDetailView.pauseSchedule": {
|
||||
"defaultMessage": "일정 일시 중지"
|
||||
},
|
||||
"scheduleDetailView.pauseUnpauseError": {
|
||||
"defaultMessage": "일시중지/일시중지 해제 오류"
|
||||
},
|
||||
"scheduleDetailView.processStarted": {
|
||||
"defaultMessage": "프로세스 시작:"
|
||||
},
|
||||
|
|
@ -3377,18 +3386,18 @@
|
|||
"scheduleDetailView.sessionId": {
|
||||
"defaultMessage": "세션 ID: {id}"
|
||||
},
|
||||
"scheduleDetailView.unpausedMsg": {
|
||||
"defaultMessage": "\"{id}\" 일시중지 해제됨"
|
||||
},
|
||||
"scheduleDetailView.unpauseSchedule": {
|
||||
"defaultMessage": "일정 일시중지 해제"
|
||||
},
|
||||
"scheduleDetailView.updatedMsg": {
|
||||
"defaultMessage": "\"{id}\" 업데이트됨"
|
||||
"scheduleDetailView.unpausedMsg": {
|
||||
"defaultMessage": "\"{id}\" 일시중지 해제됨"
|
||||
},
|
||||
"scheduleDetailView.updateScheduleError": {
|
||||
"defaultMessage": "일정 업데이트 오류"
|
||||
},
|
||||
"scheduleDetailView.updatedMsg": {
|
||||
"defaultMessage": "\"{id}\" 업데이트됨"
|
||||
},
|
||||
"scheduleDetailView.viewingScheduleId": {
|
||||
"defaultMessage": "일정 ID 보기: {id}"
|
||||
},
|
||||
|
|
@ -3512,12 +3521,12 @@
|
|||
"schedulesView.pause": {
|
||||
"defaultMessage": "일시 중지"
|
||||
},
|
||||
"schedulesView.paused": {
|
||||
"defaultMessage": "일시중지됨"
|
||||
},
|
||||
"schedulesView.pauseError": {
|
||||
"defaultMessage": "일정 일시 중지 오류"
|
||||
},
|
||||
"schedulesView.paused": {
|
||||
"defaultMessage": "일시중지됨"
|
||||
},
|
||||
"schedulesView.refresh": {
|
||||
"defaultMessage": "새로고침"
|
||||
},
|
||||
|
|
@ -3536,9 +3545,6 @@
|
|||
"schedulesView.schedulePausedMsg": {
|
||||
"defaultMessage": "일정 \"{id}\"을(를) 일시중지했습니다."
|
||||
},
|
||||
"schedulesView.scheduler": {
|
||||
"defaultMessage": "스케줄러"
|
||||
},
|
||||
"schedulesView.scheduleUnpaused": {
|
||||
"defaultMessage": "일정 일시중지 해제됨"
|
||||
},
|
||||
|
|
@ -3551,6 +3557,9 @@
|
|||
"schedulesView.scheduleUpdatedMsg": {
|
||||
"defaultMessage": "\"{id}\" 일정이 업데이트되었습니다."
|
||||
},
|
||||
"schedulesView.scheduler": {
|
||||
"defaultMessage": "스케줄러"
|
||||
},
|
||||
"schedulesView.unpauseError": {
|
||||
"defaultMessage": "일시중지 해제 일정 오류"
|
||||
},
|
||||
|
|
@ -3653,15 +3662,15 @@
|
|||
"sessionActionsHeader.copyText": {
|
||||
"defaultMessage": "텍스트 복사"
|
||||
},
|
||||
"sessionActionsHeader.duplicated": {
|
||||
"defaultMessage": "세션이 복제되었습니다"
|
||||
},
|
||||
"sessionActionsHeader.duplicateFailed": {
|
||||
"defaultMessage": "세션 복제 실패: {error}"
|
||||
},
|
||||
"sessionActionsHeader.duplicateSession": {
|
||||
"defaultMessage": "세션 복제"
|
||||
},
|
||||
"sessionActionsHeader.duplicated": {
|
||||
"defaultMessage": "세션이 복제되었습니다"
|
||||
},
|
||||
"sessionActionsHeader.fullTextTitle": {
|
||||
"defaultMessage": "텍스트 값"
|
||||
},
|
||||
|
|
@ -3674,9 +3683,6 @@
|
|||
"sessionActionsHeader.loadingJson": {
|
||||
"defaultMessage": "JSON 불러오는 중..."
|
||||
},
|
||||
"sessionActionsHeader.renamed": {
|
||||
"defaultMessage": "세션 이름이 변경되었습니다"
|
||||
},
|
||||
"sessionActionsHeader.renameFailed": {
|
||||
"defaultMessage": "세션 이름 변경 실패: {error}"
|
||||
},
|
||||
|
|
@ -3689,6 +3695,9 @@
|
|||
"sessionActionsHeader.renameTitle": {
|
||||
"defaultMessage": "세션 이름 변경"
|
||||
},
|
||||
"sessionActionsHeader.renamed": {
|
||||
"defaultMessage": "세션 이름이 변경되었습니다"
|
||||
},
|
||||
"sessionActionsHeader.save": {
|
||||
"defaultMessage": "저장"
|
||||
},
|
||||
|
|
@ -3707,6 +3716,24 @@
|
|||
"sessionIndicators.streaming": {
|
||||
"defaultMessage": "스트리밍"
|
||||
},
|
||||
"sessionViewComponents.empty.description": {
|
||||
"defaultMessage": "이 세션에는 메시지가 없습니다."
|
||||
},
|
||||
"sessionViewComponents.empty.title": {
|
||||
"defaultMessage": "메시지를 찾을 수 없습니다."
|
||||
},
|
||||
"sessionViewComponents.error.loading": {
|
||||
"defaultMessage": "세션 세부정보를 로드하는 중 오류가 발생했습니다."
|
||||
},
|
||||
"sessionViewComponents.error.tryAgain": {
|
||||
"defaultMessage": "다시 시도"
|
||||
},
|
||||
"sessionViewComponents.role.assistant": {
|
||||
"defaultMessage": "Goose"
|
||||
},
|
||||
"sessionViewComponents.role.user": {
|
||||
"defaultMessage": "나"
|
||||
},
|
||||
"sessions.action.delete": {
|
||||
"defaultMessage": "세션 삭제"
|
||||
},
|
||||
|
|
@ -3764,9 +3791,6 @@
|
|||
"sessions.import": {
|
||||
"defaultMessage": "세션 가져오기"
|
||||
},
|
||||
"sessions.importing": {
|
||||
"defaultMessage": "가져오는 중..."
|
||||
},
|
||||
"sessions.importNostr": {
|
||||
"defaultMessage": "링크 가져오기"
|
||||
},
|
||||
|
|
@ -3779,6 +3803,9 @@
|
|||
"sessions.importNostr.title": {
|
||||
"defaultMessage": "Nostr 세션 가져오기"
|
||||
},
|
||||
"sessions.importing": {
|
||||
"defaultMessage": "가져오는 중..."
|
||||
},
|
||||
"sessions.loadingMore": {
|
||||
"defaultMessage": "추가 세션 로드 중..."
|
||||
},
|
||||
|
|
@ -3806,56 +3833,38 @@
|
|||
"sessions.toast.copied": {
|
||||
"defaultMessage": "클립보드에 복사됨"
|
||||
},
|
||||
"sessions.toast.deleted": {
|
||||
"defaultMessage": "세션이 삭제되었습니다."
|
||||
},
|
||||
"sessions.toast.deleteFailed": {
|
||||
"defaultMessage": "\"{name}\" 세션 삭제 실패: {error}"
|
||||
},
|
||||
"sessions.toast.duplicated": {
|
||||
"defaultMessage": "세션 \"{name}\"이(가) 성공적으로 복제되었습니다."
|
||||
"sessions.toast.deleted": {
|
||||
"defaultMessage": "세션이 삭제되었습니다."
|
||||
},
|
||||
"sessions.toast.duplicateFailed": {
|
||||
"defaultMessage": "세션 복제 실패: {error}"
|
||||
},
|
||||
"sessions.toast.duplicated": {
|
||||
"defaultMessage": "세션 \"{name}\"이(가) 성공적으로 복제되었습니다."
|
||||
},
|
||||
"sessions.toast.exported": {
|
||||
"defaultMessage": "세션을 성공적으로 내보냈습니다."
|
||||
},
|
||||
"sessions.toast.imported": {
|
||||
"defaultMessage": "세션을 성공적으로 가져왔습니다."
|
||||
},
|
||||
"sessions.toast.importFailed": {
|
||||
"defaultMessage": "세션 가져오기 실패: {error}"
|
||||
},
|
||||
"sessions.toast.imported": {
|
||||
"defaultMessage": "세션을 성공적으로 가져왔습니다."
|
||||
},
|
||||
"sessions.toast.shareNostr": {
|
||||
"defaultMessage": "암호화된 Nostr 공유 링크가 생성되었습니다."
|
||||
},
|
||||
"sessions.toast.shareNostrFailed": {
|
||||
"defaultMessage": "Nostr 공유 링크 생성 실패: {error}"
|
||||
},
|
||||
"sessions.toast.updated": {
|
||||
"defaultMessage": "세션 설명이 업데이트되었습니다."
|
||||
},
|
||||
"sessions.toast.updateFailed": {
|
||||
"defaultMessage": "세션 설명 업데이트 실패: {error}"
|
||||
},
|
||||
"sessionViewComponents.empty.description": {
|
||||
"defaultMessage": "이 세션에는 메시지가 없습니다."
|
||||
},
|
||||
"sessionViewComponents.empty.title": {
|
||||
"defaultMessage": "메시지를 찾을 수 없습니다."
|
||||
},
|
||||
"sessionViewComponents.error.loading": {
|
||||
"defaultMessage": "세션 세부정보를 로드하는 중 오류가 발생했습니다."
|
||||
},
|
||||
"sessionViewComponents.error.tryAgain": {
|
||||
"defaultMessage": "다시 시도"
|
||||
},
|
||||
"sessionViewComponents.role.assistant": {
|
||||
"defaultMessage": "Goose"
|
||||
},
|
||||
"sessionViewComponents.role.user": {
|
||||
"defaultMessage": "나"
|
||||
"sessions.toast.updated": {
|
||||
"defaultMessage": "세션 설명이 업데이트되었습니다."
|
||||
},
|
||||
"settings.appearance.description": {
|
||||
"defaultMessage": "시스템에서 goose가 표시되는 방식을 설정합니다."
|
||||
|
|
@ -4397,12 +4406,12 @@
|
|||
"themeSelector.theme": {
|
||||
"defaultMessage": "테마"
|
||||
},
|
||||
"toolApprovalButtons.allowedOnce": {
|
||||
"defaultMessage": "한 번 허용됨"
|
||||
},
|
||||
"toolApprovalButtons.allowOnce": {
|
||||
"defaultMessage": "한 번만 허용"
|
||||
},
|
||||
"toolApprovalButtons.allowedOnce": {
|
||||
"defaultMessage": "한 번 허용됨"
|
||||
},
|
||||
"toolApprovalButtons.alwaysAllow": {
|
||||
"defaultMessage": "항상 허용"
|
||||
},
|
||||
|
|
@ -4484,18 +4493,18 @@
|
|||
"updateSection.disableAutoDownloadDesc": {
|
||||
"defaultMessage": "활성화하면 Goose가 새 버전을 알려주지만 자동으로 다운로드하지는 않습니다."
|
||||
},
|
||||
"updateSection.downloadingProgress": {
|
||||
"defaultMessage": "업데이트 다운로드 중... {percent}%"
|
||||
},
|
||||
"updateSection.downloadingUpdate": {
|
||||
"defaultMessage": "업데이트 다운로드 중..."
|
||||
},
|
||||
"updateSection.downloadNow": {
|
||||
"defaultMessage": "지금 다운로드"
|
||||
},
|
||||
"updateSection.downloadReady": {
|
||||
"defaultMessage": "업데이트가 다운로드되었으며 설치 준비가 완료되었습니다!"
|
||||
},
|
||||
"updateSection.downloadingProgress": {
|
||||
"defaultMessage": "업데이트 다운로드 중... {percent}%"
|
||||
},
|
||||
"updateSection.downloadingUpdate": {
|
||||
"defaultMessage": "업데이트 다운로드 중..."
|
||||
},
|
||||
"updateSection.installAndRestart": {
|
||||
"defaultMessage": "설치 및 다시 시작"
|
||||
},
|
||||
|
|
@ -4520,12 +4529,12 @@
|
|||
"updateSection.readyInstallManual": {
|
||||
"defaultMessage": "✓ 업데이트가 준비되었습니다! 설치 지침을 보려면 \"설치 및 다시 시작\"을 클릭하세요."
|
||||
},
|
||||
"updateSection.updateAvailable": {
|
||||
"defaultMessage": "업데이트가 있습니다!"
|
||||
},
|
||||
"updateSection.upToDate": {
|
||||
"defaultMessage": "최신 상태"
|
||||
},
|
||||
"updateSection.updateAvailable": {
|
||||
"defaultMessage": "업데이트가 있습니다!"
|
||||
},
|
||||
"updateSection.versionAvailable": {
|
||||
"defaultMessage": "→ {version} 사용 가능"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -20,12 +20,21 @@
|
|||
"appsView.customApp": {
|
||||
"defaultMessage": "Apl tersuai"
|
||||
},
|
||||
"appsView.deleteApp": {
|
||||
"defaultMessage": "Delete app"
|
||||
},
|
||||
"appsView.deleteConfirm": {
|
||||
"defaultMessage": "Delete \"{name}\"? This cannot be undone."
|
||||
},
|
||||
"appsView.description": {
|
||||
"defaultMessage": "Aplikasi daripada pelayan MCP anda dan Apl yang dibina oleh goose sendiri. Anda boleh memintanya mencipta apl baharu melalui antara muka sembang dan ia akan muncul di sini."
|
||||
},
|
||||
"appsView.errorLoading": {
|
||||
"defaultMessage": "Ralat memuatkan apl: {error}"
|
||||
},
|
||||
"appsView.errorPrefix": {
|
||||
"defaultMessage": "Error: {error}"
|
||||
},
|
||||
"appsView.importApp": {
|
||||
"defaultMessage": "Import Apl"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -20,12 +20,21 @@
|
|||
"appsView.customApp": {
|
||||
"defaultMessage": "Aplicação personalizada"
|
||||
},
|
||||
"appsView.deleteApp": {
|
||||
"defaultMessage": "Delete app"
|
||||
},
|
||||
"appsView.deleteConfirm": {
|
||||
"defaultMessage": "Delete \"{name}\"? This cannot be undone."
|
||||
},
|
||||
"appsView.description": {
|
||||
"defaultMessage": "Aplicações dos seus servidores MCP e aplicações criadas pelo próprio goose. Pode pedir-lhe para criar novas aplicações através da interface de chat e elas aparecerão aqui."
|
||||
},
|
||||
"appsView.errorLoading": {
|
||||
"defaultMessage": "Erro ao carregar aplicações: {error}"
|
||||
},
|
||||
"appsView.errorPrefix": {
|
||||
"defaultMessage": "Error: {error}"
|
||||
},
|
||||
"appsView.importApp": {
|
||||
"defaultMessage": "Importar aplicação"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -20,12 +20,21 @@
|
|||
"appsView.customApp": {
|
||||
"defaultMessage": "Пользовательское приложение"
|
||||
},
|
||||
"appsView.deleteApp": {
|
||||
"defaultMessage": "Delete app"
|
||||
},
|
||||
"appsView.deleteConfirm": {
|
||||
"defaultMessage": "Delete \"{name}\"? This cannot be undone."
|
||||
},
|
||||
"appsView.description": {
|
||||
"defaultMessage": "Приложения с ваших MCP-серверов и приложения, созданные самим goose. Вы можете попросить его создать новые приложения через чат, и они появятся здесь."
|
||||
},
|
||||
"appsView.errorLoading": {
|
||||
"defaultMessage": "Ошибка загрузки приложений: {error}"
|
||||
},
|
||||
"appsView.errorPrefix": {
|
||||
"defaultMessage": "Error: {error}"
|
||||
},
|
||||
"appsView.importApp": {
|
||||
"defaultMessage": "Импортировать приложение"
|
||||
},
|
||||
|
|
@ -41,15 +50,15 @@
|
|||
"appsView.noAppsTitle": {
|
||||
"defaultMessage": "Нет доступных приложений"
|
||||
},
|
||||
"appsView.retry": {
|
||||
"defaultMessage": "Повторить"
|
||||
},
|
||||
"appsView.retiredChatApp": {
|
||||
"defaultMessage": "Chat app retired"
|
||||
},
|
||||
"appsView.retiredChatAppDetail": {
|
||||
"defaultMessage": "We removed this feature because MCP sampling is no longer supported."
|
||||
},
|
||||
"appsView.retry": {
|
||||
"defaultMessage": "Повторить"
|
||||
},
|
||||
"appsView.title": {
|
||||
"defaultMessage": "Приложения"
|
||||
},
|
||||
|
|
@ -65,15 +74,15 @@
|
|||
"authSettings.deleteCredential": {
|
||||
"defaultMessage": "Удалить учетные данные"
|
||||
},
|
||||
"authSettings.deleted": {
|
||||
"defaultMessage": "Учетные данные удалены"
|
||||
},
|
||||
"authSettings.deleteMessage": {
|
||||
"defaultMessage": "Удалить учетные данные {name} для {provider}?"
|
||||
},
|
||||
"authSettings.deleteTitle": {
|
||||
"defaultMessage": "Удалить учетные данные"
|
||||
},
|
||||
"authSettings.deleted": {
|
||||
"defaultMessage": "Учетные данные удалены"
|
||||
},
|
||||
"authSettings.description": {
|
||||
"defaultMessage": "Управляйте учетными данными провайдеров, сохраненными локально в goose."
|
||||
},
|
||||
|
|
@ -98,12 +107,12 @@
|
|||
"authSettings.reauthorize": {
|
||||
"defaultMessage": "Авторизоваться снова"
|
||||
},
|
||||
"authSettings.signedIn": {
|
||||
"defaultMessage": "Учетные данные настроены"
|
||||
},
|
||||
"authSettings.signIn": {
|
||||
"defaultMessage": "Войти"
|
||||
},
|
||||
"authSettings.signedIn": {
|
||||
"defaultMessage": "Учетные данные настроены"
|
||||
},
|
||||
"authSettings.storageProviderCache": {
|
||||
"defaultMessage": "Кэш провайдера"
|
||||
},
|
||||
|
|
@ -122,12 +131,6 @@
|
|||
"baseChat.goHome": {
|
||||
"defaultMessage": "На главную"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForNewChats": {
|
||||
"defaultMessage": "Расширения для новых чатов"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForThisSession": {
|
||||
"defaultMessage": "Расширения для этого чата"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionUpdated": {
|
||||
"defaultMessage": "Расширение обновлено"
|
||||
},
|
||||
|
|
@ -137,6 +140,12 @@
|
|||
"bottomMenuExtensionSelection.extensionWillBeEnabled": {
|
||||
"defaultMessage": "{name} будет включено в новых чатах"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForNewChats": {
|
||||
"defaultMessage": "Расширения для новых чатов"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForThisSession": {
|
||||
"defaultMessage": "Расширения для этого чата"
|
||||
},
|
||||
"bottomMenuExtensionSelection.manageExtensions": {
|
||||
"defaultMessage": "управлять расширениями"
|
||||
},
|
||||
|
|
@ -638,12 +647,12 @@
|
|||
"customProviderForm.attachments": {
|
||||
"defaultMessage": "Вложения"
|
||||
},
|
||||
"customProviderForm.authentication": {
|
||||
"defaultMessage": "Аутентификация"
|
||||
},
|
||||
"customProviderForm.authHint": {
|
||||
"defaultMessage": "Локальные LLM, такие как Ollama, обычно не требуют API-ключа."
|
||||
},
|
||||
"customProviderForm.authentication": {
|
||||
"defaultMessage": "Аутентификация"
|
||||
},
|
||||
"customProviderForm.availableModels": {
|
||||
"defaultMessage": "Доступные модели (через запятую)"
|
||||
},
|
||||
|
|
@ -941,21 +950,18 @@
|
|||
"elicitationRequest.waitingForResponse": {
|
||||
"defaultMessage": "Ожидание вашего ответа (осталось {timeRemaining})"
|
||||
},
|
||||
"environmentBadge.dev": {
|
||||
"defaultMessage": "Разработка"
|
||||
},
|
||||
"envVarsSection.add": {
|
||||
"defaultMessage": "Добавить"
|
||||
},
|
||||
"envVarsSection.bothRequired": {
|
||||
"defaultMessage": "Необходимо ввести имя переменной и значение"
|
||||
},
|
||||
"envVarsSection.environmentVariables": {
|
||||
"defaultMessage": "Переменные окружения"
|
||||
},
|
||||
"envVarsSection.envVarsDescription": {
|
||||
"defaultMessage": "Добавьте пары ключ-значение для переменных окружения. После заполнения обоих полей нажмите «+», чтобы добавить. Для существующих секретных значений нажмите кнопку редактирования."
|
||||
},
|
||||
"envVarsSection.environmentVariables": {
|
||||
"defaultMessage": "Переменные окружения"
|
||||
},
|
||||
"envVarsSection.noSpaces": {
|
||||
"defaultMessage": "Имя переменной не может содержать пробелы"
|
||||
},
|
||||
|
|
@ -965,6 +971,9 @@
|
|||
"envVarsSection.variableName": {
|
||||
"defaultMessage": "Имя переменной"
|
||||
},
|
||||
"environmentBadge.dev": {
|
||||
"defaultMessage": "Разработка"
|
||||
},
|
||||
"errorBoundary.errorGeneric": {
|
||||
"defaultMessage": "Произошла ошибка."
|
||||
},
|
||||
|
|
@ -1124,6 +1133,9 @@
|
|||
"extensionModal.unsavedChangesTitle": {
|
||||
"defaultMessage": "Несохраненные изменения"
|
||||
},
|
||||
"extensionTimeoutField.timeoutLabel": {
|
||||
"defaultMessage": "Тайм-аут"
|
||||
},
|
||||
"extensionsSection.addCustomExtension": {
|
||||
"defaultMessage": "Добавить пользовательское расширение"
|
||||
},
|
||||
|
|
@ -1160,9 +1172,6 @@
|
|||
"extensionsView.searchPlaceholder": {
|
||||
"defaultMessage": "Поиск расширений..."
|
||||
},
|
||||
"extensionTimeoutField.timeoutLabel": {
|
||||
"defaultMessage": "Тайм-аут"
|
||||
},
|
||||
"externalBackendSection.certFingerprint": {
|
||||
"defaultMessage": "Отпечаток сертификата (необязательно)"
|
||||
},
|
||||
|
|
@ -1382,12 +1391,12 @@
|
|||
"huggingFaceSignInPrompt.failedToConfigure": {
|
||||
"defaultMessage": "Не удалось войти в Hugging Face: {error}"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signedIn": {
|
||||
"defaultMessage": "Вход в Hugging Face выполнен"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signIn": {
|
||||
"defaultMessage": "Войти"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signedIn": {
|
||||
"defaultMessage": "Вход в Hugging Face выполнен"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signingIn": {
|
||||
"defaultMessage": "Выполняется вход..."
|
||||
},
|
||||
|
|
@ -1421,15 +1430,15 @@
|
|||
"importRecipeForm.expectedRecipeStructure": {
|
||||
"defaultMessage": "Ожидаемая структура рецепта"
|
||||
},
|
||||
"importRecipeForm.importing": {
|
||||
"defaultMessage": "Импорт..."
|
||||
},
|
||||
"importRecipeForm.importRecipeButton": {
|
||||
"defaultMessage": "Импортировать рецепт"
|
||||
},
|
||||
"importRecipeForm.importRecipeTitle": {
|
||||
"defaultMessage": "Импортировать рецепт"
|
||||
},
|
||||
"importRecipeForm.importing": {
|
||||
"defaultMessage": "Импорт..."
|
||||
},
|
||||
"importRecipeForm.or": {
|
||||
"defaultMessage": "ИЛИ"
|
||||
},
|
||||
|
|
@ -1529,6 +1538,18 @@
|
|||
"jsonSchemaForm.submit": {
|
||||
"defaultMessage": "Отправить"
|
||||
},
|
||||
"keyValueEditor.addValue": {
|
||||
"defaultMessage": "Добавить предварительно настроенное значение"
|
||||
},
|
||||
"keyValueEditor.defaultKeyPlaceholder": {
|
||||
"defaultMessage": "Имя параметра..."
|
||||
},
|
||||
"keyValueEditor.defaultValuePlaceholder": {
|
||||
"defaultMessage": "Значение параметра..."
|
||||
},
|
||||
"keyValueEditor.removeValue": {
|
||||
"defaultMessage": "Удалить предварительно настроенное значение {key}"
|
||||
},
|
||||
"keyboardShortcuts.alwaysOnTopDescription": {
|
||||
"defaultMessage": "Переключить окно поверх всех"
|
||||
},
|
||||
|
|
@ -1673,18 +1694,6 @@
|
|||
"keyboardShortcuts.toggleNavigationLabel": {
|
||||
"defaultMessage": "Переключить навигацию"
|
||||
},
|
||||
"keyValueEditor.addValue": {
|
||||
"defaultMessage": "Добавить предварительно настроенное значение"
|
||||
},
|
||||
"keyValueEditor.defaultKeyPlaceholder": {
|
||||
"defaultMessage": "Имя параметра..."
|
||||
},
|
||||
"keyValueEditor.defaultValuePlaceholder": {
|
||||
"defaultMessage": "Значение параметра..."
|
||||
},
|
||||
"keyValueEditor.removeValue": {
|
||||
"defaultMessage": "Удалить предварительно настроенное значение {key}"
|
||||
},
|
||||
"launcher.placeholder": {
|
||||
"defaultMessage": "Спросите goose о чем угодно..."
|
||||
},
|
||||
|
|
@ -1724,18 +1733,18 @@
|
|||
"localInferenceSettings.downloadCancelled": {
|
||||
"defaultMessage": "Скачивание отменено"
|
||||
},
|
||||
"localInferenceSettings.downloadedModels": {
|
||||
"defaultMessage": "Скачанные модели"
|
||||
},
|
||||
"localInferenceSettings.downloadFailed": {
|
||||
"defaultMessage": "Скачивание не удалось"
|
||||
},
|
||||
"localInferenceSettings.downloading": {
|
||||
"defaultMessage": "Скачивание"
|
||||
},
|
||||
"localInferenceSettings.downloadProgress": {
|
||||
"defaultMessage": "{downloaded} / {total} ({percent}%)"
|
||||
},
|
||||
"localInferenceSettings.downloadedModels": {
|
||||
"defaultMessage": "Скачанные модели"
|
||||
},
|
||||
"localInferenceSettings.downloading": {
|
||||
"defaultMessage": "Скачивание"
|
||||
},
|
||||
"localInferenceSettings.evictFromMemory": {
|
||||
"defaultMessage": "Evict from memory"
|
||||
},
|
||||
|
|
@ -1823,12 +1832,12 @@
|
|||
"localModelPicker.checkingModels": {
|
||||
"defaultMessage": "Проверка доступных моделей..."
|
||||
},
|
||||
"localModelPicker.downloading": {
|
||||
"defaultMessage": "Скачивание {modelId}"
|
||||
},
|
||||
"localModelPicker.downloadModel": {
|
||||
"defaultMessage": "Скачать {modelId} ({size})"
|
||||
},
|
||||
"localModelPicker.downloading": {
|
||||
"defaultMessage": "Скачивание {modelId}"
|
||||
},
|
||||
"localModelPicker.failedToLoad": {
|
||||
"defaultMessage": "Не удалось загрузить доступные модели. Повторите попытку."
|
||||
},
|
||||
|
|
@ -1991,9 +2000,6 @@
|
|||
"messageQueue.paused": {
|
||||
"defaultMessage": "На паузе"
|
||||
},
|
||||
"messageQueue.queued": {
|
||||
"defaultMessage": "в очереди"
|
||||
},
|
||||
"messageQueue.queuePaused": {
|
||||
"defaultMessage": "Очередь приостановлена"
|
||||
},
|
||||
|
|
@ -2003,6 +2009,9 @@
|
|||
"messageQueue.queuePausedExpanded": {
|
||||
"defaultMessage": "Очередь приостановлена из-за прерывания. Используйте «Отправить сейчас» или добавьте новое сообщение, чтобы продолжить."
|
||||
},
|
||||
"messageQueue.queued": {
|
||||
"defaultMessage": "в очереди"
|
||||
},
|
||||
"messageQueue.removeFromQueue": {
|
||||
"defaultMessage": "Удалить это сообщение из очереди"
|
||||
},
|
||||
|
|
@ -2093,12 +2102,36 @@
|
|||
"microphoneSelector.test": {
|
||||
"defaultMessage": "Проверить"
|
||||
},
|
||||
"modelAndProviderContext.modelChangedTitle": {
|
||||
"defaultMessage": "Модель изменена"
|
||||
"modeSelectionItem.autonomousDescription": {
|
||||
"defaultMessage": "Полные возможности изменения файлов: свободное редактирование, создание и удаление файлов."
|
||||
},
|
||||
"modeSelectionItem.autonomousLabel": {
|
||||
"defaultMessage": "Автономный"
|
||||
},
|
||||
"modeSelectionItem.chatOnlyDescription": {
|
||||
"defaultMessage": "Работать с выбранным провайдером без использования инструментов или расширений."
|
||||
},
|
||||
"modeSelectionItem.chatOnlyLabel": {
|
||||
"defaultMessage": "Только чат"
|
||||
},
|
||||
"modeSelectionItem.manualDescription": {
|
||||
"defaultMessage": "Все инструменты, расширения и изменения файлов будут требовать подтверждения человеком"
|
||||
},
|
||||
"modeSelectionItem.manualLabel": {
|
||||
"defaultMessage": "Вручную"
|
||||
},
|
||||
"modeSelectionItem.smartDescription": {
|
||||
"defaultMessage": "Интеллектуально определять, какие действия требуют подтверждения, исходя из уровня риска"
|
||||
},
|
||||
"modeSelectionItem.smartLabel": {
|
||||
"defaultMessage": "Умный"
|
||||
},
|
||||
"modelAndProviderContext.modelChangeFailed": {
|
||||
"defaultMessage": "{provider}/{model} не удалось"
|
||||
},
|
||||
"modelAndProviderContext.modelChangedTitle": {
|
||||
"defaultMessage": "Модель изменена"
|
||||
},
|
||||
"modelAndProviderContext.selectModel": {
|
||||
"defaultMessage": "Выбрать модель"
|
||||
},
|
||||
|
|
@ -2111,27 +2144,6 @@
|
|||
"modelAndProviderContext.unknownProviderTitle": {
|
||||
"defaultMessage": "Поиск имени провайдера"
|
||||
},
|
||||
"modelsBottomBar.changeModel": {
|
||||
"defaultMessage": "Изменить модель"
|
||||
},
|
||||
"modelsBottomBar.currentModel": {
|
||||
"defaultMessage": "Текущая модель"
|
||||
},
|
||||
"modelsBottomBar.loadingModel": {
|
||||
"defaultMessage": "Загрузка модели..."
|
||||
},
|
||||
"modelsBottomBar.localModelSettings": {
|
||||
"defaultMessage": "Настройки локальной модели"
|
||||
},
|
||||
"modelsBottomBar.localModelSettingsTitle": {
|
||||
"defaultMessage": "Настройки локальной модели — {modelName}"
|
||||
},
|
||||
"modelsBottomBar.resolvedModel": {
|
||||
"defaultMessage": "Разрешенная модель"
|
||||
},
|
||||
"modelsBottomBar.selectModel": {
|
||||
"defaultMessage": "Выбрать модель"
|
||||
},
|
||||
"modelSettingsButtons.configureProviders": {
|
||||
"defaultMessage": "Настроить провайдеров"
|
||||
},
|
||||
|
|
@ -2291,36 +2303,33 @@
|
|||
"modelSettingsPanel.topP": {
|
||||
"defaultMessage": "Top P"
|
||||
},
|
||||
"modelsBottomBar.changeModel": {
|
||||
"defaultMessage": "Изменить модель"
|
||||
},
|
||||
"modelsBottomBar.currentModel": {
|
||||
"defaultMessage": "Текущая модель"
|
||||
},
|
||||
"modelsBottomBar.loadingModel": {
|
||||
"defaultMessage": "Загрузка модели..."
|
||||
},
|
||||
"modelsBottomBar.localModelSettings": {
|
||||
"defaultMessage": "Настройки локальной модели"
|
||||
},
|
||||
"modelsBottomBar.localModelSettingsTitle": {
|
||||
"defaultMessage": "Настройки локальной модели — {modelName}"
|
||||
},
|
||||
"modelsBottomBar.resolvedModel": {
|
||||
"defaultMessage": "Разрешенная модель"
|
||||
},
|
||||
"modelsBottomBar.selectModel": {
|
||||
"defaultMessage": "Выбрать модель"
|
||||
},
|
||||
"modelsSection.resetDescription": {
|
||||
"defaultMessage": "Очистить выбранную модель и настройки провайдера, чтобы начать заново"
|
||||
},
|
||||
"modelsSection.resetTitle": {
|
||||
"defaultMessage": "Сбросить провайдера и модель"
|
||||
},
|
||||
"modeSelectionItem.autonomousDescription": {
|
||||
"defaultMessage": "Полные возможности изменения файлов: свободное редактирование, создание и удаление файлов."
|
||||
},
|
||||
"modeSelectionItem.autonomousLabel": {
|
||||
"defaultMessage": "Автономный"
|
||||
},
|
||||
"modeSelectionItem.chatOnlyDescription": {
|
||||
"defaultMessage": "Работать с выбранным провайдером без использования инструментов или расширений."
|
||||
},
|
||||
"modeSelectionItem.chatOnlyLabel": {
|
||||
"defaultMessage": "Только чат"
|
||||
},
|
||||
"modeSelectionItem.manualDescription": {
|
||||
"defaultMessage": "Все инструменты, расширения и изменения файлов будут требовать подтверждения человеком"
|
||||
},
|
||||
"modeSelectionItem.manualLabel": {
|
||||
"defaultMessage": "Вручную"
|
||||
},
|
||||
"modeSelectionItem.smartDescription": {
|
||||
"defaultMessage": "Интеллектуально определять, какие действия требуют подтверждения, исходя из уровня риска"
|
||||
},
|
||||
"modeSelectionItem.smartLabel": {
|
||||
"defaultMessage": "Умный"
|
||||
},
|
||||
"navigation.itemApps": {
|
||||
"defaultMessage": "Приложения"
|
||||
},
|
||||
|
|
@ -2600,12 +2609,12 @@
|
|||
"promptsSettings.edit": {
|
||||
"defaultMessage": "Изменить"
|
||||
},
|
||||
"promptsSettings.editingLabel": {
|
||||
"defaultMessage": "Редактирование: {name}"
|
||||
},
|
||||
"promptsSettings.editPromptTitle": {
|
||||
"defaultMessage": "Изменить: {name}"
|
||||
},
|
||||
"promptsSettings.editingLabel": {
|
||||
"defaultMessage": "Редактирование: {name}"
|
||||
},
|
||||
"promptsSettings.enterPromptContent": {
|
||||
"defaultMessage": "Введите содержимое промпта..."
|
||||
},
|
||||
|
|
@ -2714,12 +2723,12 @@
|
|||
"providerConfigForm.noApiKey": {
|
||||
"defaultMessage": "Нет API-ключа?"
|
||||
},
|
||||
"providerConfigForm.signingIn": {
|
||||
"defaultMessage": "Вход..."
|
||||
},
|
||||
"providerConfigForm.signInWith": {
|
||||
"defaultMessage": "Войти через {providerName}"
|
||||
},
|
||||
"providerConfigForm.signingIn": {
|
||||
"defaultMessage": "Вход..."
|
||||
},
|
||||
"providerConfigurationModal.addApiKeyDescription": {
|
||||
"defaultMessage": "Добавьте API-ключи для этого провайдера, чтобы интегрировать его в goose"
|
||||
},
|
||||
|
|
@ -2780,12 +2789,12 @@
|
|||
"providerConfigurationModal.seeDocumentation": {
|
||||
"defaultMessage": "Подробнее см. в <link>документации</link>."
|
||||
},
|
||||
"providerConfigurationModal.signingIn": {
|
||||
"defaultMessage": "Вход..."
|
||||
},
|
||||
"providerConfigurationModal.signInWith": {
|
||||
"defaultMessage": "Войти через {providerName}"
|
||||
},
|
||||
"providerConfigurationModal.signingIn": {
|
||||
"defaultMessage": "Вход..."
|
||||
},
|
||||
"providerGrid.addProvider": {
|
||||
"defaultMessage": "Добавить провайдера"
|
||||
},
|
||||
|
|
@ -3014,6 +3023,39 @@
|
|||
"recipeNameField.formatHint": {
|
||||
"defaultMessage": "Будет автоматически отформатировано (нижний регистр, дефисы вместо пробелов)"
|
||||
},
|
||||
"recipeWarningModal.cancel": {
|
||||
"defaultMessage": "Отмена"
|
||||
},
|
||||
"recipeWarningModal.descriptionLabel": {
|
||||
"defaultMessage": "Описание:"
|
||||
},
|
||||
"recipeWarningModal.firstTimeDescription": {
|
||||
"defaultMessage": "Вы собираетесь выполнить рецепт, который еще не запускали."
|
||||
},
|
||||
"recipeWarningModal.hiddenCharsWarning": {
|
||||
"defaultMessage": "Этот рецепт содержит скрытые символы, которые будут проигнорированы для вашей безопасности, так как их могут использовать во вредоносных целях."
|
||||
},
|
||||
"recipeWarningModal.instructionsLabel": {
|
||||
"defaultMessage": "Инструкции:"
|
||||
},
|
||||
"recipeWarningModal.newRecipeWarningTitle": {
|
||||
"defaultMessage": "⚠️ Предупреждение о новом рецепте"
|
||||
},
|
||||
"recipeWarningModal.recipePreview": {
|
||||
"defaultMessage": "Предпросмотр рецепта:"
|
||||
},
|
||||
"recipeWarningModal.securityWarningTitle": {
|
||||
"defaultMessage": "⚠️ Предупреждение безопасности"
|
||||
},
|
||||
"recipeWarningModal.titleLabel": {
|
||||
"defaultMessage": "Название:"
|
||||
},
|
||||
"recipeWarningModal.trustAndExecute": {
|
||||
"defaultMessage": "Доверять и выполнить"
|
||||
},
|
||||
"recipeWarningModal.trustSource": {
|
||||
"defaultMessage": "Продолжайте только если доверяете источнику этого рецепта."
|
||||
},
|
||||
"recipesView.addSchedule": {
|
||||
"defaultMessage": "Добавить расписание"
|
||||
},
|
||||
|
|
@ -3188,39 +3230,6 @@
|
|||
"recipesView.yamlFiles": {
|
||||
"defaultMessage": "Файлы YAML"
|
||||
},
|
||||
"recipeWarningModal.cancel": {
|
||||
"defaultMessage": "Отмена"
|
||||
},
|
||||
"recipeWarningModal.descriptionLabel": {
|
||||
"defaultMessage": "Описание:"
|
||||
},
|
||||
"recipeWarningModal.firstTimeDescription": {
|
||||
"defaultMessage": "Вы собираетесь выполнить рецепт, который еще не запускали."
|
||||
},
|
||||
"recipeWarningModal.hiddenCharsWarning": {
|
||||
"defaultMessage": "Этот рецепт содержит скрытые символы, которые будут проигнорированы для вашей безопасности, так как их могут использовать во вредоносных целях."
|
||||
},
|
||||
"recipeWarningModal.instructionsLabel": {
|
||||
"defaultMessage": "Инструкции:"
|
||||
},
|
||||
"recipeWarningModal.newRecipeWarningTitle": {
|
||||
"defaultMessage": "⚠️ Предупреждение о новом рецепте"
|
||||
},
|
||||
"recipeWarningModal.recipePreview": {
|
||||
"defaultMessage": "Предпросмотр рецепта:"
|
||||
},
|
||||
"recipeWarningModal.securityWarningTitle": {
|
||||
"defaultMessage": "⚠️ Предупреждение безопасности"
|
||||
},
|
||||
"recipeWarningModal.titleLabel": {
|
||||
"defaultMessage": "Название:"
|
||||
},
|
||||
"recipeWarningModal.trustAndExecute": {
|
||||
"defaultMessage": "Доверять и выполнить"
|
||||
},
|
||||
"recipeWarningModal.trustSource": {
|
||||
"defaultMessage": "Продолжайте только если доверяете источнику этого рецепта."
|
||||
},
|
||||
"resetProviderSection.resetButton": {
|
||||
"defaultMessage": "Сбросить провайдера и модель"
|
||||
},
|
||||
|
|
@ -3254,12 +3263,12 @@
|
|||
"scheduleDetailView.cronExpression": {
|
||||
"defaultMessage": "Cron-выражение:"
|
||||
},
|
||||
"scheduleDetailView.currentlyRunning": {
|
||||
"defaultMessage": "Сейчас выполняется"
|
||||
},
|
||||
"scheduleDetailView.currentSession": {
|
||||
"defaultMessage": "Текущий сеанс:"
|
||||
},
|
||||
"scheduleDetailView.currentlyRunning": {
|
||||
"defaultMessage": "Сейчас выполняется"
|
||||
},
|
||||
"scheduleDetailView.dir": {
|
||||
"defaultMessage": "Каталог: {path}"
|
||||
},
|
||||
|
|
@ -3317,6 +3326,12 @@
|
|||
"scheduleDetailView.noSessions": {
|
||||
"defaultMessage": "Сеансы для этого расписания не найдены."
|
||||
},
|
||||
"scheduleDetailView.pauseSchedule": {
|
||||
"defaultMessage": "Приостановить расписание"
|
||||
},
|
||||
"scheduleDetailView.pauseUnpauseError": {
|
||||
"defaultMessage": "Ошибка паузы/возобновления"
|
||||
},
|
||||
"scheduleDetailView.paused": {
|
||||
"defaultMessage": "На паузе"
|
||||
},
|
||||
|
|
@ -3326,12 +3341,6 @@
|
|||
"scheduleDetailView.pausedWarning": {
|
||||
"defaultMessage": "Это расписание приостановлено и не будет запускаться автоматически. Используйте «Запустить расписание сейчас», чтобы запустить вручную, или снимите паузу для возобновления автоматического выполнения."
|
||||
},
|
||||
"scheduleDetailView.pauseSchedule": {
|
||||
"defaultMessage": "Приостановить расписание"
|
||||
},
|
||||
"scheduleDetailView.pauseUnpauseError": {
|
||||
"defaultMessage": "Ошибка паузы/возобновления"
|
||||
},
|
||||
"scheduleDetailView.processStarted": {
|
||||
"defaultMessage": "Процесс запущен:"
|
||||
},
|
||||
|
|
@ -3377,18 +3386,18 @@
|
|||
"scheduleDetailView.sessionId": {
|
||||
"defaultMessage": "ID сеанса: {id}"
|
||||
},
|
||||
"scheduleDetailView.unpausedMsg": {
|
||||
"defaultMessage": "«{id}» возобновлено"
|
||||
},
|
||||
"scheduleDetailView.unpauseSchedule": {
|
||||
"defaultMessage": "Возобновить расписание"
|
||||
},
|
||||
"scheduleDetailView.updatedMsg": {
|
||||
"defaultMessage": "«{id}» обновлено"
|
||||
"scheduleDetailView.unpausedMsg": {
|
||||
"defaultMessage": "«{id}» возобновлено"
|
||||
},
|
||||
"scheduleDetailView.updateScheduleError": {
|
||||
"defaultMessage": "Ошибка обновления расписания"
|
||||
},
|
||||
"scheduleDetailView.updatedMsg": {
|
||||
"defaultMessage": "«{id}» обновлено"
|
||||
},
|
||||
"scheduleDetailView.viewingScheduleId": {
|
||||
"defaultMessage": "Просмотр ID расписания: {id}"
|
||||
},
|
||||
|
|
@ -3512,12 +3521,12 @@
|
|||
"schedulesView.pause": {
|
||||
"defaultMessage": "Пауза"
|
||||
},
|
||||
"schedulesView.paused": {
|
||||
"defaultMessage": "На паузе"
|
||||
},
|
||||
"schedulesView.pauseError": {
|
||||
"defaultMessage": "Ошибка приостановки расписания"
|
||||
},
|
||||
"schedulesView.paused": {
|
||||
"defaultMessage": "На паузе"
|
||||
},
|
||||
"schedulesView.refresh": {
|
||||
"defaultMessage": "Обновить"
|
||||
},
|
||||
|
|
@ -3536,9 +3545,6 @@
|
|||
"schedulesView.schedulePausedMsg": {
|
||||
"defaultMessage": "Расписание «{id}» успешно приостановлено"
|
||||
},
|
||||
"schedulesView.scheduler": {
|
||||
"defaultMessage": "Планировщик"
|
||||
},
|
||||
"schedulesView.scheduleUnpaused": {
|
||||
"defaultMessage": "Расписание возобновлено"
|
||||
},
|
||||
|
|
@ -3551,6 +3557,9 @@
|
|||
"schedulesView.scheduleUpdatedMsg": {
|
||||
"defaultMessage": "Расписание «{id}» успешно обновлено"
|
||||
},
|
||||
"schedulesView.scheduler": {
|
||||
"defaultMessage": "Планировщик"
|
||||
},
|
||||
"schedulesView.unpauseError": {
|
||||
"defaultMessage": "Ошибка возобновления расписания"
|
||||
},
|
||||
|
|
@ -3653,15 +3662,15 @@
|
|||
"sessionActionsHeader.copyText": {
|
||||
"defaultMessage": "Copy text"
|
||||
},
|
||||
"sessionActionsHeader.duplicated": {
|
||||
"defaultMessage": "Session duplicated"
|
||||
},
|
||||
"sessionActionsHeader.duplicateFailed": {
|
||||
"defaultMessage": "Failed to duplicate session: {error}"
|
||||
},
|
||||
"sessionActionsHeader.duplicateSession": {
|
||||
"defaultMessage": "Duplicate session"
|
||||
},
|
||||
"sessionActionsHeader.duplicated": {
|
||||
"defaultMessage": "Session duplicated"
|
||||
},
|
||||
"sessionActionsHeader.fullTextTitle": {
|
||||
"defaultMessage": "Text value"
|
||||
},
|
||||
|
|
@ -3674,9 +3683,6 @@
|
|||
"sessionActionsHeader.loadingJson": {
|
||||
"defaultMessage": "Loading JSON..."
|
||||
},
|
||||
"sessionActionsHeader.renamed": {
|
||||
"defaultMessage": "Session renamed"
|
||||
},
|
||||
"sessionActionsHeader.renameFailed": {
|
||||
"defaultMessage": "Failed to rename session: {error}"
|
||||
},
|
||||
|
|
@ -3689,6 +3695,9 @@
|
|||
"sessionActionsHeader.renameTitle": {
|
||||
"defaultMessage": "Rename Session"
|
||||
},
|
||||
"sessionActionsHeader.renamed": {
|
||||
"defaultMessage": "Session renamed"
|
||||
},
|
||||
"sessionActionsHeader.save": {
|
||||
"defaultMessage": "Save"
|
||||
},
|
||||
|
|
@ -3707,6 +3716,24 @@
|
|||
"sessionIndicators.streaming": {
|
||||
"defaultMessage": "Потоковая передача"
|
||||
},
|
||||
"sessionViewComponents.empty.description": {
|
||||
"defaultMessage": "Этот сеанс не содержит сообщений"
|
||||
},
|
||||
"sessionViewComponents.empty.title": {
|
||||
"defaultMessage": "Сообщения не найдены"
|
||||
},
|
||||
"sessionViewComponents.error.loading": {
|
||||
"defaultMessage": "Ошибка загрузки сведений о сеансе"
|
||||
},
|
||||
"sessionViewComponents.error.tryAgain": {
|
||||
"defaultMessage": "Повторить попытку"
|
||||
},
|
||||
"sessionViewComponents.role.assistant": {
|
||||
"defaultMessage": "Goose"
|
||||
},
|
||||
"sessionViewComponents.role.user": {
|
||||
"defaultMessage": "Вы"
|
||||
},
|
||||
"sessions.action.delete": {
|
||||
"defaultMessage": "Удалить сеанс"
|
||||
},
|
||||
|
|
@ -3764,9 +3791,6 @@
|
|||
"sessions.import": {
|
||||
"defaultMessage": "Импортировать сеанс"
|
||||
},
|
||||
"sessions.importing": {
|
||||
"defaultMessage": "Импорт..."
|
||||
},
|
||||
"sessions.importNostr": {
|
||||
"defaultMessage": "Импортировать ссылку"
|
||||
},
|
||||
|
|
@ -3779,6 +3803,9 @@
|
|||
"sessions.importNostr.title": {
|
||||
"defaultMessage": "Импортировать сеанс Nostr"
|
||||
},
|
||||
"sessions.importing": {
|
||||
"defaultMessage": "Импорт..."
|
||||
},
|
||||
"sessions.loadingMore": {
|
||||
"defaultMessage": "Загрузка дополнительных сеансов..."
|
||||
},
|
||||
|
|
@ -3806,56 +3833,38 @@
|
|||
"sessions.toast.copied": {
|
||||
"defaultMessage": "Скопировано в буфер обмена"
|
||||
},
|
||||
"sessions.toast.deleted": {
|
||||
"defaultMessage": "Сеанс успешно удален"
|
||||
},
|
||||
"sessions.toast.deleteFailed": {
|
||||
"defaultMessage": "Не удалось удалить сеанс «{name}»: {error}"
|
||||
},
|
||||
"sessions.toast.duplicated": {
|
||||
"defaultMessage": "Сеанс «{name}» успешно дублирован"
|
||||
"sessions.toast.deleted": {
|
||||
"defaultMessage": "Сеанс успешно удален"
|
||||
},
|
||||
"sessions.toast.duplicateFailed": {
|
||||
"defaultMessage": "Не удалось дублировать сеанс: {error}"
|
||||
},
|
||||
"sessions.toast.duplicated": {
|
||||
"defaultMessage": "Сеанс «{name}» успешно дублирован"
|
||||
},
|
||||
"sessions.toast.exported": {
|
||||
"defaultMessage": "Сеанс успешно экспортирован"
|
||||
},
|
||||
"sessions.toast.imported": {
|
||||
"defaultMessage": "Сеанс успешно импортирован"
|
||||
},
|
||||
"sessions.toast.importFailed": {
|
||||
"defaultMessage": "Не удалось импортировать сеанс: {error}"
|
||||
},
|
||||
"sessions.toast.imported": {
|
||||
"defaultMessage": "Сеанс успешно импортирован"
|
||||
},
|
||||
"sessions.toast.shareNostr": {
|
||||
"defaultMessage": "Зашифрованная ссылка Nostr создана"
|
||||
},
|
||||
"sessions.toast.shareNostrFailed": {
|
||||
"defaultMessage": "Не удалось создать ссылку Nostr: {error}"
|
||||
},
|
||||
"sessions.toast.updated": {
|
||||
"defaultMessage": "Описание сеанса успешно обновлено"
|
||||
},
|
||||
"sessions.toast.updateFailed": {
|
||||
"defaultMessage": "Не удалось обновить описание сеанса: {error}"
|
||||
},
|
||||
"sessionViewComponents.empty.description": {
|
||||
"defaultMessage": "Этот сеанс не содержит сообщений"
|
||||
},
|
||||
"sessionViewComponents.empty.title": {
|
||||
"defaultMessage": "Сообщения не найдены"
|
||||
},
|
||||
"sessionViewComponents.error.loading": {
|
||||
"defaultMessage": "Ошибка загрузки сведений о сеансе"
|
||||
},
|
||||
"sessionViewComponents.error.tryAgain": {
|
||||
"defaultMessage": "Повторить попытку"
|
||||
},
|
||||
"sessionViewComponents.role.assistant": {
|
||||
"defaultMessage": "Goose"
|
||||
},
|
||||
"sessionViewComponents.role.user": {
|
||||
"defaultMessage": "Вы"
|
||||
"sessions.toast.updated": {
|
||||
"defaultMessage": "Описание сеанса успешно обновлено"
|
||||
},
|
||||
"settings.appearance.description": {
|
||||
"defaultMessage": "Настройте, как goose отображается в вашей системе"
|
||||
|
|
@ -4397,12 +4406,12 @@
|
|||
"themeSelector.theme": {
|
||||
"defaultMessage": "Тема"
|
||||
},
|
||||
"toolApprovalButtons.allowedOnce": {
|
||||
"defaultMessage": "Разрешено один раз"
|
||||
},
|
||||
"toolApprovalButtons.allowOnce": {
|
||||
"defaultMessage": "Разрешить один раз"
|
||||
},
|
||||
"toolApprovalButtons.allowedOnce": {
|
||||
"defaultMessage": "Разрешено один раз"
|
||||
},
|
||||
"toolApprovalButtons.alwaysAllow": {
|
||||
"defaultMessage": "Всегда разрешать"
|
||||
},
|
||||
|
|
@ -4484,18 +4493,18 @@
|
|||
"updateSection.disableAutoDownloadDesc": {
|
||||
"defaultMessage": "Когда включено, Goose будет уведомлять о новых версиях, но не будет загружать их автоматически."
|
||||
},
|
||||
"updateSection.downloadingProgress": {
|
||||
"defaultMessage": "Скачивание обновления... {percent}%"
|
||||
},
|
||||
"updateSection.downloadingUpdate": {
|
||||
"defaultMessage": "Скачивание обновления..."
|
||||
},
|
||||
"updateSection.downloadNow": {
|
||||
"defaultMessage": "Скачать сейчас"
|
||||
},
|
||||
"updateSection.downloadReady": {
|
||||
"defaultMessage": "Обновление скачано и готово к установке!"
|
||||
},
|
||||
"updateSection.downloadingProgress": {
|
||||
"defaultMessage": "Скачивание обновления... {percent}%"
|
||||
},
|
||||
"updateSection.downloadingUpdate": {
|
||||
"defaultMessage": "Скачивание обновления..."
|
||||
},
|
||||
"updateSection.installAndRestart": {
|
||||
"defaultMessage": "Установить и перезапустить"
|
||||
},
|
||||
|
|
@ -4520,12 +4529,12 @@
|
|||
"updateSection.readyInstallManual": {
|
||||
"defaultMessage": "✓ Обновление готово! Нажмите «Установить и перезапустить», чтобы получить инструкции по установке."
|
||||
},
|
||||
"updateSection.updateAvailable": {
|
||||
"defaultMessage": "Доступно обновление!"
|
||||
},
|
||||
"updateSection.upToDate": {
|
||||
"defaultMessage": "(актуально)"
|
||||
},
|
||||
"updateSection.updateAvailable": {
|
||||
"defaultMessage": "Доступно обновление!"
|
||||
},
|
||||
"updateSection.versionAvailable": {
|
||||
"defaultMessage": "→ доступна {version}"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -20,12 +20,21 @@
|
|||
"appsView.customApp": {
|
||||
"defaultMessage": "Özel uygulama"
|
||||
},
|
||||
"appsView.deleteApp": {
|
||||
"defaultMessage": "Delete app"
|
||||
},
|
||||
"appsView.deleteConfirm": {
|
||||
"defaultMessage": "Delete \"{name}\"? This cannot be undone."
|
||||
},
|
||||
"appsView.description": {
|
||||
"defaultMessage": "MCP sunucularınızdaki uygulamalar ve goose tarafından oluşturulan Uygulamalar. Sohbet arayüzü aracılığıyla yeni uygulamalar oluşturmasını isteyebilirsiniz; bunlar burada görünecektir."
|
||||
},
|
||||
"appsView.errorLoading": {
|
||||
"defaultMessage": "Uygulamalar yüklenirken hata oluştu: {error}"
|
||||
},
|
||||
"appsView.errorPrefix": {
|
||||
"defaultMessage": "Error: {error}"
|
||||
},
|
||||
"appsView.importApp": {
|
||||
"defaultMessage": "Uygulamayı İçe Aktar"
|
||||
},
|
||||
|
|
@ -41,15 +50,15 @@
|
|||
"appsView.noAppsTitle": {
|
||||
"defaultMessage": "Kullanılabilir uygulama yok"
|
||||
},
|
||||
"appsView.retry": {
|
||||
"defaultMessage": "Yeniden dene"
|
||||
},
|
||||
"appsView.retiredChatApp": {
|
||||
"defaultMessage": "Chat app retired"
|
||||
},
|
||||
"appsView.retiredChatAppDetail": {
|
||||
"defaultMessage": "We removed this feature because MCP sampling is no longer supported."
|
||||
},
|
||||
"appsView.retry": {
|
||||
"defaultMessage": "Yeniden dene"
|
||||
},
|
||||
"appsView.title": {
|
||||
"defaultMessage": "Uygulamalar"
|
||||
},
|
||||
|
|
@ -65,15 +74,15 @@
|
|||
"authSettings.deleteCredential": {
|
||||
"defaultMessage": "Kimlik bilgisini sil"
|
||||
},
|
||||
"authSettings.deleted": {
|
||||
"defaultMessage": "Kimlik bilgisi silindi"
|
||||
},
|
||||
"authSettings.deleteMessage": {
|
||||
"defaultMessage": "{provider} için {name} kimlik bilgisi silinsin mi?"
|
||||
},
|
||||
"authSettings.deleteTitle": {
|
||||
"defaultMessage": "Kimlik bilgisini sil"
|
||||
},
|
||||
"authSettings.deleted": {
|
||||
"defaultMessage": "Kimlik bilgisi silindi"
|
||||
},
|
||||
"authSettings.description": {
|
||||
"defaultMessage": "goose tarafından yerel olarak saklanan sağlayıcı kimlik bilgilerini yönetin."
|
||||
},
|
||||
|
|
@ -98,12 +107,12 @@
|
|||
"authSettings.reauthorize": {
|
||||
"defaultMessage": "Yeniden yetkilendir"
|
||||
},
|
||||
"authSettings.signedIn": {
|
||||
"defaultMessage": "Kimlik bilgisi yapılandırıldı"
|
||||
},
|
||||
"authSettings.signIn": {
|
||||
"defaultMessage": "Oturum aç"
|
||||
},
|
||||
"authSettings.signedIn": {
|
||||
"defaultMessage": "Kimlik bilgisi yapılandırıldı"
|
||||
},
|
||||
"authSettings.storageProviderCache": {
|
||||
"defaultMessage": "Sağlayıcı önbelleği"
|
||||
},
|
||||
|
|
@ -122,12 +131,6 @@
|
|||
"baseChat.goHome": {
|
||||
"defaultMessage": "Ana sayfaya git"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForNewChats": {
|
||||
"defaultMessage": "Yeni sohbetler için uzantılar"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForThisSession": {
|
||||
"defaultMessage": "Bu sohbet oturumunun uzantıları"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionUpdated": {
|
||||
"defaultMessage": "Uzantı Güncellendi"
|
||||
},
|
||||
|
|
@ -137,6 +140,12 @@
|
|||
"bottomMenuExtensionSelection.extensionWillBeEnabled": {
|
||||
"defaultMessage": "{name} yeni sohbetlerde etkinleştirilecek"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForNewChats": {
|
||||
"defaultMessage": "Yeni sohbetler için uzantılar"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForThisSession": {
|
||||
"defaultMessage": "Bu sohbet oturumunun uzantıları"
|
||||
},
|
||||
"bottomMenuExtensionSelection.manageExtensions": {
|
||||
"defaultMessage": "uzantıları yönet"
|
||||
},
|
||||
|
|
@ -638,12 +647,12 @@
|
|||
"customProviderForm.attachments": {
|
||||
"defaultMessage": "Ekler"
|
||||
},
|
||||
"customProviderForm.authentication": {
|
||||
"defaultMessage": "Kimlik doğrulama"
|
||||
},
|
||||
"customProviderForm.authHint": {
|
||||
"defaultMessage": "Ollama gibi yerel LLM'ler genellikle API anahtarı gerektirmez."
|
||||
},
|
||||
"customProviderForm.authentication": {
|
||||
"defaultMessage": "Kimlik doğrulama"
|
||||
},
|
||||
"customProviderForm.availableModels": {
|
||||
"defaultMessage": "Mevcut Modeller (virgülle ayrılmış)"
|
||||
},
|
||||
|
|
@ -941,21 +950,18 @@
|
|||
"elicitationRequest.waitingForResponse": {
|
||||
"defaultMessage": "Yanıtınızı bekliyorum ({timeRemaining} kaldı)"
|
||||
},
|
||||
"environmentBadge.dev": {
|
||||
"defaultMessage": "Geliştirici"
|
||||
},
|
||||
"envVarsSection.add": {
|
||||
"defaultMessage": "Ekle"
|
||||
},
|
||||
"envVarsSection.bothRequired": {
|
||||
"defaultMessage": "Hem değişken adı hem de değer girilmelidir"
|
||||
},
|
||||
"envVarsSection.environmentVariables": {
|
||||
"defaultMessage": "Ortam Değişkenleri"
|
||||
},
|
||||
"envVarsSection.envVarsDescription": {
|
||||
"defaultMessage": "Ortam değişkenleri için anahtar/değer çiftleri ekleyin. Her iki alanı da doldurduktan sonra eklemek için \"+\" butonuna tıklayın. Mevcut gizli değerleri değiştirmek için düzenle düğmesine tıklayın."
|
||||
},
|
||||
"envVarsSection.environmentVariables": {
|
||||
"defaultMessage": "Ortam Değişkenleri"
|
||||
},
|
||||
"envVarsSection.noSpaces": {
|
||||
"defaultMessage": "Değişken adı boşluk içeremez"
|
||||
},
|
||||
|
|
@ -965,6 +971,9 @@
|
|||
"envVarsSection.variableName": {
|
||||
"defaultMessage": "Değişken adı"
|
||||
},
|
||||
"environmentBadge.dev": {
|
||||
"defaultMessage": "Geliştirici"
|
||||
},
|
||||
"errorBoundary.errorGeneric": {
|
||||
"defaultMessage": "Bir hata oluştu."
|
||||
},
|
||||
|
|
@ -1124,6 +1133,9 @@
|
|||
"extensionModal.unsavedChangesTitle": {
|
||||
"defaultMessage": "Kaydedilmemiş Değişiklikler"
|
||||
},
|
||||
"extensionTimeoutField.timeoutLabel": {
|
||||
"defaultMessage": "Zaman aşımı"
|
||||
},
|
||||
"extensionsSection.addCustomExtension": {
|
||||
"defaultMessage": "Özel uzantı ekle"
|
||||
},
|
||||
|
|
@ -1160,9 +1172,6 @@
|
|||
"extensionsView.searchPlaceholder": {
|
||||
"defaultMessage": "Uzantıları ara..."
|
||||
},
|
||||
"extensionTimeoutField.timeoutLabel": {
|
||||
"defaultMessage": "Zaman aşımı"
|
||||
},
|
||||
"externalBackendSection.certFingerprint": {
|
||||
"defaultMessage": "Sertifika Parmak İzi (isteğe bağlı)"
|
||||
},
|
||||
|
|
@ -1382,12 +1391,12 @@
|
|||
"huggingFaceSignInPrompt.failedToConfigure": {
|
||||
"defaultMessage": "Hugging Face oturumu açılamadı: {error}"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signedIn": {
|
||||
"defaultMessage": "Hugging Face oturumu açıldı"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signIn": {
|
||||
"defaultMessage": "Oturum aç"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signedIn": {
|
||||
"defaultMessage": "Hugging Face oturumu açıldı"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signingIn": {
|
||||
"defaultMessage": "Oturum açılıyor..."
|
||||
},
|
||||
|
|
@ -1421,15 +1430,15 @@
|
|||
"importRecipeForm.expectedRecipeStructure": {
|
||||
"defaultMessage": "Beklenen Tarif Yapısı"
|
||||
},
|
||||
"importRecipeForm.importing": {
|
||||
"defaultMessage": "İçe aktarılıyor..."
|
||||
},
|
||||
"importRecipeForm.importRecipeButton": {
|
||||
"defaultMessage": "Tarifi İçe Aktar"
|
||||
},
|
||||
"importRecipeForm.importRecipeTitle": {
|
||||
"defaultMessage": "Tarifi İçe Aktar"
|
||||
},
|
||||
"importRecipeForm.importing": {
|
||||
"defaultMessage": "İçe aktarılıyor..."
|
||||
},
|
||||
"importRecipeForm.or": {
|
||||
"defaultMessage": "VEYA"
|
||||
},
|
||||
|
|
@ -1529,6 +1538,18 @@
|
|||
"jsonSchemaForm.submit": {
|
||||
"defaultMessage": "Gönder"
|
||||
},
|
||||
"keyValueEditor.addValue": {
|
||||
"defaultMessage": "Önceden yapılandırılmış değer ekleyin"
|
||||
},
|
||||
"keyValueEditor.defaultKeyPlaceholder": {
|
||||
"defaultMessage": "Parametre adı..."
|
||||
},
|
||||
"keyValueEditor.defaultValuePlaceholder": {
|
||||
"defaultMessage": "Parametre değeri..."
|
||||
},
|
||||
"keyValueEditor.removeValue": {
|
||||
"defaultMessage": "Önceden yapılandırılmış değeri kaldır {key}"
|
||||
},
|
||||
"keyboardShortcuts.alwaysOnTopDescription": {
|
||||
"defaultMessage": "Pencereyi her zaman üstte değiştir"
|
||||
},
|
||||
|
|
@ -1673,18 +1694,6 @@
|
|||
"keyboardShortcuts.toggleNavigationLabel": {
|
||||
"defaultMessage": "Gezinmeyi Değiştir"
|
||||
},
|
||||
"keyValueEditor.addValue": {
|
||||
"defaultMessage": "Önceden yapılandırılmış değer ekleyin"
|
||||
},
|
||||
"keyValueEditor.defaultKeyPlaceholder": {
|
||||
"defaultMessage": "Parametre adı..."
|
||||
},
|
||||
"keyValueEditor.defaultValuePlaceholder": {
|
||||
"defaultMessage": "Parametre değeri..."
|
||||
},
|
||||
"keyValueEditor.removeValue": {
|
||||
"defaultMessage": "Önceden yapılandırılmış değeri kaldır {key}"
|
||||
},
|
||||
"launcher.placeholder": {
|
||||
"defaultMessage": "goose'a herhangi bir şey sorun..."
|
||||
},
|
||||
|
|
@ -1724,18 +1733,18 @@
|
|||
"localInferenceSettings.downloadCancelled": {
|
||||
"defaultMessage": "İndirme iptal edildi"
|
||||
},
|
||||
"localInferenceSettings.downloadedModels": {
|
||||
"defaultMessage": "İndirilen Modeller"
|
||||
},
|
||||
"localInferenceSettings.downloadFailed": {
|
||||
"defaultMessage": "İndirme başarısız oldu"
|
||||
},
|
||||
"localInferenceSettings.downloading": {
|
||||
"defaultMessage": "İndiriliyor"
|
||||
},
|
||||
"localInferenceSettings.downloadProgress": {
|
||||
"defaultMessage": "{downloaded} / {total} (%{percent})"
|
||||
},
|
||||
"localInferenceSettings.downloadedModels": {
|
||||
"defaultMessage": "İndirilen Modeller"
|
||||
},
|
||||
"localInferenceSettings.downloading": {
|
||||
"defaultMessage": "İndiriliyor"
|
||||
},
|
||||
"localInferenceSettings.evictFromMemory": {
|
||||
"defaultMessage": "Evict from memory"
|
||||
},
|
||||
|
|
@ -1823,12 +1832,12 @@
|
|||
"localModelPicker.checkingModels": {
|
||||
"defaultMessage": "Mevcut modeller kontrol ediliyor..."
|
||||
},
|
||||
"localModelPicker.downloading": {
|
||||
"defaultMessage": "{modelId} indiriliyor"
|
||||
},
|
||||
"localModelPicker.downloadModel": {
|
||||
"defaultMessage": "{modelId}'yi ({size}) indirin"
|
||||
},
|
||||
"localModelPicker.downloading": {
|
||||
"defaultMessage": "{modelId} indiriliyor"
|
||||
},
|
||||
"localModelPicker.failedToLoad": {
|
||||
"defaultMessage": "Mevcut modeller yüklenemedi. Lütfen tekrar deneyin."
|
||||
},
|
||||
|
|
@ -1991,9 +2000,6 @@
|
|||
"messageQueue.paused": {
|
||||
"defaultMessage": "Duraklatıldı"
|
||||
},
|
||||
"messageQueue.queued": {
|
||||
"defaultMessage": "sıraya alınmış"
|
||||
},
|
||||
"messageQueue.queuePaused": {
|
||||
"defaultMessage": "Sıra Duraklatıldı"
|
||||
},
|
||||
|
|
@ -2003,6 +2009,9 @@
|
|||
"messageQueue.queuePausedExpanded": {
|
||||
"defaultMessage": "Kuyruk kesinti nedeniyle duraklatıldı. Devam etmek için \"Şimdi Gönder\" seçeneğini kullanın veya yeni bir mesaj ekleyin."
|
||||
},
|
||||
"messageQueue.queued": {
|
||||
"defaultMessage": "sıraya alınmış"
|
||||
},
|
||||
"messageQueue.removeFromQueue": {
|
||||
"defaultMessage": "Bu mesajı sıradan kaldır"
|
||||
},
|
||||
|
|
@ -2093,12 +2102,36 @@
|
|||
"microphoneSelector.test": {
|
||||
"defaultMessage": "testi"
|
||||
},
|
||||
"modelAndProviderContext.modelChangedTitle": {
|
||||
"defaultMessage": "Model değiştirildi"
|
||||
"modeSelectionItem.autonomousDescription": {
|
||||
"defaultMessage": "Tam dosya değiştirme yetenekleri, dosyaları özgürce düzenleyin, oluşturun ve silin."
|
||||
},
|
||||
"modeSelectionItem.autonomousLabel": {
|
||||
"defaultMessage": "Özerk"
|
||||
},
|
||||
"modeSelectionItem.chatOnlyDescription": {
|
||||
"defaultMessage": "Araç veya uzantı kullanmadan seçilen sağlayıcıyla etkileşime geçin."
|
||||
},
|
||||
"modeSelectionItem.chatOnlyLabel": {
|
||||
"defaultMessage": "Yalnızca sohbet"
|
||||
},
|
||||
"modeSelectionItem.manualDescription": {
|
||||
"defaultMessage": "Tüm araçlar, uzantılar ve dosya değişiklikleri insan onayı gerektirecektir"
|
||||
},
|
||||
"modeSelectionItem.manualLabel": {
|
||||
"defaultMessage": "Manuel"
|
||||
},
|
||||
"modeSelectionItem.smartDescription": {
|
||||
"defaultMessage": "Risk düzeyine göre hangi eylemlerin onaylanması gerektiğini akıllıca belirleyin"
|
||||
},
|
||||
"modeSelectionItem.smartLabel": {
|
||||
"defaultMessage": "Akıllı"
|
||||
},
|
||||
"modelAndProviderContext.modelChangeFailed": {
|
||||
"defaultMessage": "{provider}/{model} başarısız oldu"
|
||||
},
|
||||
"modelAndProviderContext.modelChangedTitle": {
|
||||
"defaultMessage": "Model değiştirildi"
|
||||
},
|
||||
"modelAndProviderContext.selectModel": {
|
||||
"defaultMessage": "Modeli Seçin"
|
||||
},
|
||||
|
|
@ -2111,27 +2144,6 @@
|
|||
"modelAndProviderContext.unknownProviderTitle": {
|
||||
"defaultMessage": "Sağlayıcı adı araması"
|
||||
},
|
||||
"modelsBottomBar.changeModel": {
|
||||
"defaultMessage": "Modeli Değiştir"
|
||||
},
|
||||
"modelsBottomBar.currentModel": {
|
||||
"defaultMessage": "Mevcut model"
|
||||
},
|
||||
"modelsBottomBar.loadingModel": {
|
||||
"defaultMessage": "Model yükleniyor..."
|
||||
},
|
||||
"modelsBottomBar.localModelSettings": {
|
||||
"defaultMessage": "Yerel Model Ayarları"
|
||||
},
|
||||
"modelsBottomBar.localModelSettingsTitle": {
|
||||
"defaultMessage": "Yerel Model Ayarları — {modelName}"
|
||||
},
|
||||
"modelsBottomBar.resolvedModel": {
|
||||
"defaultMessage": "Çözümlenen model"
|
||||
},
|
||||
"modelsBottomBar.selectModel": {
|
||||
"defaultMessage": "Modeli Seçin"
|
||||
},
|
||||
"modelSettingsButtons.configureProviders": {
|
||||
"defaultMessage": "Sağlayıcıları yapılandırma"
|
||||
},
|
||||
|
|
@ -2291,36 +2303,33 @@
|
|||
"modelSettingsPanel.topP": {
|
||||
"defaultMessage": "Üst P"
|
||||
},
|
||||
"modelsBottomBar.changeModel": {
|
||||
"defaultMessage": "Modeli Değiştir"
|
||||
},
|
||||
"modelsBottomBar.currentModel": {
|
||||
"defaultMessage": "Mevcut model"
|
||||
},
|
||||
"modelsBottomBar.loadingModel": {
|
||||
"defaultMessage": "Model yükleniyor..."
|
||||
},
|
||||
"modelsBottomBar.localModelSettings": {
|
||||
"defaultMessage": "Yerel Model Ayarları"
|
||||
},
|
||||
"modelsBottomBar.localModelSettingsTitle": {
|
||||
"defaultMessage": "Yerel Model Ayarları — {modelName}"
|
||||
},
|
||||
"modelsBottomBar.resolvedModel": {
|
||||
"defaultMessage": "Çözümlenen model"
|
||||
},
|
||||
"modelsBottomBar.selectModel": {
|
||||
"defaultMessage": "Modeli Seçin"
|
||||
},
|
||||
"modelsSection.resetDescription": {
|
||||
"defaultMessage": "Yeni bir başlangıç yapmak için seçtiğiniz model ve sağlayıcı ayarlarını temizleyin"
|
||||
},
|
||||
"modelsSection.resetTitle": {
|
||||
"defaultMessage": "Sağlayıcıyı ve Modeli Sıfırla"
|
||||
},
|
||||
"modeSelectionItem.autonomousDescription": {
|
||||
"defaultMessage": "Tam dosya değiştirme yetenekleri, dosyaları özgürce düzenleyin, oluşturun ve silin."
|
||||
},
|
||||
"modeSelectionItem.autonomousLabel": {
|
||||
"defaultMessage": "Özerk"
|
||||
},
|
||||
"modeSelectionItem.chatOnlyDescription": {
|
||||
"defaultMessage": "Araç veya uzantı kullanmadan seçilen sağlayıcıyla etkileşime geçin."
|
||||
},
|
||||
"modeSelectionItem.chatOnlyLabel": {
|
||||
"defaultMessage": "Yalnızca sohbet"
|
||||
},
|
||||
"modeSelectionItem.manualDescription": {
|
||||
"defaultMessage": "Tüm araçlar, uzantılar ve dosya değişiklikleri insan onayı gerektirecektir"
|
||||
},
|
||||
"modeSelectionItem.manualLabel": {
|
||||
"defaultMessage": "Manuel"
|
||||
},
|
||||
"modeSelectionItem.smartDescription": {
|
||||
"defaultMessage": "Risk düzeyine göre hangi eylemlerin onaylanması gerektiğini akıllıca belirleyin"
|
||||
},
|
||||
"modeSelectionItem.smartLabel": {
|
||||
"defaultMessage": "Akıllı"
|
||||
},
|
||||
"navigation.itemApps": {
|
||||
"defaultMessage": "Uygulamalar"
|
||||
},
|
||||
|
|
@ -2600,10 +2609,10 @@
|
|||
"promptsSettings.edit": {
|
||||
"defaultMessage": "Düzenle"
|
||||
},
|
||||
"promptsSettings.editingLabel": {
|
||||
"promptsSettings.editPromptTitle": {
|
||||
"defaultMessage": "Düzenleme: {name}"
|
||||
},
|
||||
"promptsSettings.editPromptTitle": {
|
||||
"promptsSettings.editingLabel": {
|
||||
"defaultMessage": "Düzenleme: {name}"
|
||||
},
|
||||
"promptsSettings.enterPromptContent": {
|
||||
|
|
@ -2714,12 +2723,12 @@
|
|||
"providerConfigForm.noApiKey": {
|
||||
"defaultMessage": "API anahtarınız yok mu?"
|
||||
},
|
||||
"providerConfigForm.signingIn": {
|
||||
"defaultMessage": "Oturum açılıyor..."
|
||||
},
|
||||
"providerConfigForm.signInWith": {
|
||||
"defaultMessage": "{providerName} ile oturum açın"
|
||||
},
|
||||
"providerConfigForm.signingIn": {
|
||||
"defaultMessage": "Oturum açılıyor..."
|
||||
},
|
||||
"providerConfigurationModal.addApiKeyDescription": {
|
||||
"defaultMessage": "Bu sağlayıcının goose'a entegre olması için API anahtarlarınızı ekleyin"
|
||||
},
|
||||
|
|
@ -2780,12 +2789,12 @@
|
|||
"providerConfigurationModal.seeDocumentation": {
|
||||
"defaultMessage": "Daha fazla ayrıntı için <link>belgelere</link> bakın."
|
||||
},
|
||||
"providerConfigurationModal.signingIn": {
|
||||
"defaultMessage": "Oturum açılıyor..."
|
||||
},
|
||||
"providerConfigurationModal.signInWith": {
|
||||
"defaultMessage": "{providerName} ile oturum açın"
|
||||
},
|
||||
"providerConfigurationModal.signingIn": {
|
||||
"defaultMessage": "Oturum açılıyor..."
|
||||
},
|
||||
"providerGrid.addProvider": {
|
||||
"defaultMessage": "Sağlayıcı Ekle"
|
||||
},
|
||||
|
|
@ -3014,6 +3023,39 @@
|
|||
"recipeNameField.formatHint": {
|
||||
"defaultMessage": "Otomatik olarak biçimlendirilecektir (küçük harf, boşluklar için kısa çizgiler)"
|
||||
},
|
||||
"recipeWarningModal.cancel": {
|
||||
"defaultMessage": "İptal"
|
||||
},
|
||||
"recipeWarningModal.descriptionLabel": {
|
||||
"defaultMessage": "Açıklama:"
|
||||
},
|
||||
"recipeWarningModal.firstTimeDescription": {
|
||||
"defaultMessage": "Daha önce çalıştırmadığınız bir tarifi uygulamak üzeresiniz."
|
||||
},
|
||||
"recipeWarningModal.hiddenCharsWarning": {
|
||||
"defaultMessage": "Bu tarif, kötü amaçlarla kullanılabilecekleri için güvenliğiniz açısından göz ardı edilecek gizli karakterler içermektedir."
|
||||
},
|
||||
"recipeWarningModal.instructionsLabel": {
|
||||
"defaultMessage": "Talimatlar:"
|
||||
},
|
||||
"recipeWarningModal.newRecipeWarningTitle": {
|
||||
"defaultMessage": "⚠️ Yeni Tarif Uyarısı"
|
||||
},
|
||||
"recipeWarningModal.recipePreview": {
|
||||
"defaultMessage": "Tarif Önizlemesi:"
|
||||
},
|
||||
"recipeWarningModal.securityWarningTitle": {
|
||||
"defaultMessage": "⚠️ Güvenlik Uyarısı"
|
||||
},
|
||||
"recipeWarningModal.titleLabel": {
|
||||
"defaultMessage": "Başlık:"
|
||||
},
|
||||
"recipeWarningModal.trustAndExecute": {
|
||||
"defaultMessage": "Güvenin ve Uygulayın"
|
||||
},
|
||||
"recipeWarningModal.trustSource": {
|
||||
"defaultMessage": "Yalnızca bu tarifin kaynağına güveniyorsanız devam edin."
|
||||
},
|
||||
"recipesView.addSchedule": {
|
||||
"defaultMessage": "Program ekle"
|
||||
},
|
||||
|
|
@ -3188,39 +3230,6 @@
|
|||
"recipesView.yamlFiles": {
|
||||
"defaultMessage": "YAML Dosyaları"
|
||||
},
|
||||
"recipeWarningModal.cancel": {
|
||||
"defaultMessage": "İptal"
|
||||
},
|
||||
"recipeWarningModal.descriptionLabel": {
|
||||
"defaultMessage": "Açıklama:"
|
||||
},
|
||||
"recipeWarningModal.firstTimeDescription": {
|
||||
"defaultMessage": "Daha önce çalıştırmadığınız bir tarifi uygulamak üzeresiniz."
|
||||
},
|
||||
"recipeWarningModal.hiddenCharsWarning": {
|
||||
"defaultMessage": "Bu tarif, kötü amaçlarla kullanılabilecekleri için güvenliğiniz açısından göz ardı edilecek gizli karakterler içermektedir."
|
||||
},
|
||||
"recipeWarningModal.instructionsLabel": {
|
||||
"defaultMessage": "Talimatlar:"
|
||||
},
|
||||
"recipeWarningModal.newRecipeWarningTitle": {
|
||||
"defaultMessage": "⚠️ Yeni Tarif Uyarısı"
|
||||
},
|
||||
"recipeWarningModal.recipePreview": {
|
||||
"defaultMessage": "Tarif Önizlemesi:"
|
||||
},
|
||||
"recipeWarningModal.securityWarningTitle": {
|
||||
"defaultMessage": "⚠️ Güvenlik Uyarısı"
|
||||
},
|
||||
"recipeWarningModal.titleLabel": {
|
||||
"defaultMessage": "Başlık:"
|
||||
},
|
||||
"recipeWarningModal.trustAndExecute": {
|
||||
"defaultMessage": "Güvenin ve Uygulayın"
|
||||
},
|
||||
"recipeWarningModal.trustSource": {
|
||||
"defaultMessage": "Yalnızca bu tarifin kaynağına güveniyorsanız devam edin."
|
||||
},
|
||||
"resetProviderSection.resetButton": {
|
||||
"defaultMessage": "Sağlayıcıyı ve Modeli Sıfırla"
|
||||
},
|
||||
|
|
@ -3254,12 +3263,12 @@
|
|||
"scheduleDetailView.cronExpression": {
|
||||
"defaultMessage": "Cron İfadesi:"
|
||||
},
|
||||
"scheduleDetailView.currentlyRunning": {
|
||||
"defaultMessage": "Şu anda Çalışıyor"
|
||||
},
|
||||
"scheduleDetailView.currentSession": {
|
||||
"defaultMessage": "Mevcut Oturum:"
|
||||
},
|
||||
"scheduleDetailView.currentlyRunning": {
|
||||
"defaultMessage": "Şu anda Çalışıyor"
|
||||
},
|
||||
"scheduleDetailView.dir": {
|
||||
"defaultMessage": "Yön: {path}"
|
||||
},
|
||||
|
|
@ -3317,6 +3326,12 @@
|
|||
"scheduleDetailView.noSessions": {
|
||||
"defaultMessage": "Bu program için oturum bulunamadı."
|
||||
},
|
||||
"scheduleDetailView.pauseSchedule": {
|
||||
"defaultMessage": "Programı Duraklat"
|
||||
},
|
||||
"scheduleDetailView.pauseUnpauseError": {
|
||||
"defaultMessage": "Duraklatma/Duraklatmayı Kaldırma Hatası"
|
||||
},
|
||||
"scheduleDetailView.paused": {
|
||||
"defaultMessage": "Duraklatıldı"
|
||||
},
|
||||
|
|
@ -3326,12 +3341,6 @@
|
|||
"scheduleDetailView.pausedWarning": {
|
||||
"defaultMessage": "Bu program duraklatıldı ve otomatik olarak çalışmayacak. Manuel olarak tetiklemek için \"Şimdi Programlamayı Çalıştır\" seçeneğini kullanın veya otomatik yürütmeye devam etmek için duraklatmayı kaldırın."
|
||||
},
|
||||
"scheduleDetailView.pauseSchedule": {
|
||||
"defaultMessage": "Programı Duraklat"
|
||||
},
|
||||
"scheduleDetailView.pauseUnpauseError": {
|
||||
"defaultMessage": "Duraklatma/Duraklatmayı Kaldırma Hatası"
|
||||
},
|
||||
"scheduleDetailView.processStarted": {
|
||||
"defaultMessage": "İşlem Başlatıldı:"
|
||||
},
|
||||
|
|
@ -3377,18 +3386,18 @@
|
|||
"scheduleDetailView.sessionId": {
|
||||
"defaultMessage": "Oturum Kimliği: {id}"
|
||||
},
|
||||
"scheduleDetailView.unpausedMsg": {
|
||||
"defaultMessage": "Duraklatılmamış \"{id}\""
|
||||
},
|
||||
"scheduleDetailView.unpauseSchedule": {
|
||||
"defaultMessage": "Programı Duraklatmayı Kaldır"
|
||||
},
|
||||
"scheduleDetailView.updatedMsg": {
|
||||
"defaultMessage": "\"{id}\" güncellendi"
|
||||
"scheduleDetailView.unpausedMsg": {
|
||||
"defaultMessage": "Duraklatılmamış \"{id}\""
|
||||
},
|
||||
"scheduleDetailView.updateScheduleError": {
|
||||
"defaultMessage": "Güncelleme Zamanlaması Hatası"
|
||||
},
|
||||
"scheduleDetailView.updatedMsg": {
|
||||
"defaultMessage": "\"{id}\" güncellendi"
|
||||
},
|
||||
"scheduleDetailView.viewingScheduleId": {
|
||||
"defaultMessage": "Program Kimliğini Görüntüleme: {id}"
|
||||
},
|
||||
|
|
@ -3512,12 +3521,12 @@
|
|||
"schedulesView.pause": {
|
||||
"defaultMessage": "Duraklat"
|
||||
},
|
||||
"schedulesView.paused": {
|
||||
"defaultMessage": "Duraklatıldı"
|
||||
},
|
||||
"schedulesView.pauseError": {
|
||||
"defaultMessage": "Zamanlamayı Duraklat Hatası"
|
||||
},
|
||||
"schedulesView.paused": {
|
||||
"defaultMessage": "Duraklatıldı"
|
||||
},
|
||||
"schedulesView.refresh": {
|
||||
"defaultMessage": "Yenile"
|
||||
},
|
||||
|
|
@ -3536,9 +3545,6 @@
|
|||
"schedulesView.schedulePausedMsg": {
|
||||
"defaultMessage": "\"{id}\" programı başarıyla duraklatıldı"
|
||||
},
|
||||
"schedulesView.scheduler": {
|
||||
"defaultMessage": "Zamanlayıcı"
|
||||
},
|
||||
"schedulesView.scheduleUnpaused": {
|
||||
"defaultMessage": "Duraklatmayı Kaldırmayı Planla"
|
||||
},
|
||||
|
|
@ -3551,6 +3557,9 @@
|
|||
"schedulesView.scheduleUpdatedMsg": {
|
||||
"defaultMessage": "\"{id}\" programı başarıyla güncellendi"
|
||||
},
|
||||
"schedulesView.scheduler": {
|
||||
"defaultMessage": "Zamanlayıcı"
|
||||
},
|
||||
"schedulesView.unpauseError": {
|
||||
"defaultMessage": "Duraklatmayı Kaldırma Programı Hatası"
|
||||
},
|
||||
|
|
@ -3653,15 +3662,15 @@
|
|||
"sessionActionsHeader.copyText": {
|
||||
"defaultMessage": "Copy text"
|
||||
},
|
||||
"sessionActionsHeader.duplicated": {
|
||||
"defaultMessage": "Session duplicated"
|
||||
},
|
||||
"sessionActionsHeader.duplicateFailed": {
|
||||
"defaultMessage": "Failed to duplicate session: {error}"
|
||||
},
|
||||
"sessionActionsHeader.duplicateSession": {
|
||||
"defaultMessage": "Duplicate session"
|
||||
},
|
||||
"sessionActionsHeader.duplicated": {
|
||||
"defaultMessage": "Session duplicated"
|
||||
},
|
||||
"sessionActionsHeader.fullTextTitle": {
|
||||
"defaultMessage": "Text value"
|
||||
},
|
||||
|
|
@ -3674,9 +3683,6 @@
|
|||
"sessionActionsHeader.loadingJson": {
|
||||
"defaultMessage": "Loading JSON..."
|
||||
},
|
||||
"sessionActionsHeader.renamed": {
|
||||
"defaultMessage": "Session renamed"
|
||||
},
|
||||
"sessionActionsHeader.renameFailed": {
|
||||
"defaultMessage": "Failed to rename session: {error}"
|
||||
},
|
||||
|
|
@ -3689,6 +3695,9 @@
|
|||
"sessionActionsHeader.renameTitle": {
|
||||
"defaultMessage": "Rename Session"
|
||||
},
|
||||
"sessionActionsHeader.renamed": {
|
||||
"defaultMessage": "Session renamed"
|
||||
},
|
||||
"sessionActionsHeader.save": {
|
||||
"defaultMessage": "Save"
|
||||
},
|
||||
|
|
@ -3707,6 +3716,24 @@
|
|||
"sessionIndicators.streaming": {
|
||||
"defaultMessage": "Akış"
|
||||
},
|
||||
"sessionViewComponents.empty.description": {
|
||||
"defaultMessage": "Bu oturum herhangi bir mesaj içermiyor"
|
||||
},
|
||||
"sessionViewComponents.empty.title": {
|
||||
"defaultMessage": "Mesaj bulunamadı"
|
||||
},
|
||||
"sessionViewComponents.error.loading": {
|
||||
"defaultMessage": "Oturum Ayrıntıları Yüklenirken Hata Oluştu"
|
||||
},
|
||||
"sessionViewComponents.error.tryAgain": {
|
||||
"defaultMessage": "Tekrar Deneyin"
|
||||
},
|
||||
"sessionViewComponents.role.assistant": {
|
||||
"defaultMessage": "Goose"
|
||||
},
|
||||
"sessionViewComponents.role.user": {
|
||||
"defaultMessage": "sen"
|
||||
},
|
||||
"sessions.action.delete": {
|
||||
"defaultMessage": "Oturumu sil"
|
||||
},
|
||||
|
|
@ -3764,9 +3791,6 @@
|
|||
"sessions.import": {
|
||||
"defaultMessage": "Oturumu İçe Aktar"
|
||||
},
|
||||
"sessions.importing": {
|
||||
"defaultMessage": "İçe aktarılıyor..."
|
||||
},
|
||||
"sessions.importNostr": {
|
||||
"defaultMessage": "Bağlantıyı İçe Aktar"
|
||||
},
|
||||
|
|
@ -3779,6 +3803,9 @@
|
|||
"sessions.importNostr.title": {
|
||||
"defaultMessage": "Nostr Oturumunu İçe Aktar"
|
||||
},
|
||||
"sessions.importing": {
|
||||
"defaultMessage": "İçe aktarılıyor..."
|
||||
},
|
||||
"sessions.loadingMore": {
|
||||
"defaultMessage": "Daha fazla oturum yükleniyor..."
|
||||
},
|
||||
|
|
@ -3806,56 +3833,38 @@
|
|||
"sessions.toast.copied": {
|
||||
"defaultMessage": "Panoya kopyalandı"
|
||||
},
|
||||
"sessions.toast.deleted": {
|
||||
"defaultMessage": "Oturum başarıyla silindi"
|
||||
},
|
||||
"sessions.toast.deleteFailed": {
|
||||
"defaultMessage": "\"{name}\" oturumu silinemedi: {error}"
|
||||
},
|
||||
"sessions.toast.duplicated": {
|
||||
"defaultMessage": "\"{name}\" oturumu başarıyla kopyalandı"
|
||||
"sessions.toast.deleted": {
|
||||
"defaultMessage": "Oturum başarıyla silindi"
|
||||
},
|
||||
"sessions.toast.duplicateFailed": {
|
||||
"defaultMessage": "Oturum kopyalanamadı: {error}"
|
||||
},
|
||||
"sessions.toast.duplicated": {
|
||||
"defaultMessage": "\"{name}\" oturumu başarıyla kopyalandı"
|
||||
},
|
||||
"sessions.toast.exported": {
|
||||
"defaultMessage": "Oturum başarıyla dışa aktarıldı"
|
||||
},
|
||||
"sessions.toast.imported": {
|
||||
"defaultMessage": "Oturum başarıyla içe aktarıldı"
|
||||
},
|
||||
"sessions.toast.importFailed": {
|
||||
"defaultMessage": "Oturum içe aktarılamadı: {error}"
|
||||
},
|
||||
"sessions.toast.imported": {
|
||||
"defaultMessage": "Oturum başarıyla içe aktarıldı"
|
||||
},
|
||||
"sessions.toast.shareNostr": {
|
||||
"defaultMessage": "Şifrelenmiş Nostr paylaşım bağlantısı oluşturuldu"
|
||||
},
|
||||
"sessions.toast.shareNostrFailed": {
|
||||
"defaultMessage": "Nostr paylaşım bağlantısı oluşturulamadı: {error}"
|
||||
},
|
||||
"sessions.toast.updated": {
|
||||
"defaultMessage": "Oturum açıklaması başarıyla güncellendi"
|
||||
},
|
||||
"sessions.toast.updateFailed": {
|
||||
"defaultMessage": "Oturum açıklaması güncellenemedi: {error}"
|
||||
},
|
||||
"sessionViewComponents.empty.description": {
|
||||
"defaultMessage": "Bu oturum herhangi bir mesaj içermiyor"
|
||||
},
|
||||
"sessionViewComponents.empty.title": {
|
||||
"defaultMessage": "Mesaj bulunamadı"
|
||||
},
|
||||
"sessionViewComponents.error.loading": {
|
||||
"defaultMessage": "Oturum Ayrıntıları Yüklenirken Hata Oluştu"
|
||||
},
|
||||
"sessionViewComponents.error.tryAgain": {
|
||||
"defaultMessage": "Tekrar Deneyin"
|
||||
},
|
||||
"sessionViewComponents.role.assistant": {
|
||||
"defaultMessage": "Goose"
|
||||
},
|
||||
"sessionViewComponents.role.user": {
|
||||
"defaultMessage": "sen"
|
||||
"sessions.toast.updated": {
|
||||
"defaultMessage": "Oturum açıklaması başarıyla güncellendi"
|
||||
},
|
||||
"settings.appearance.description": {
|
||||
"defaultMessage": "goose'nin sisteminizde nasıl görüneceğini yapılandırın"
|
||||
|
|
@ -4397,12 +4406,12 @@
|
|||
"themeSelector.theme": {
|
||||
"defaultMessage": "Tema"
|
||||
},
|
||||
"toolApprovalButtons.allowedOnce": {
|
||||
"defaultMessage": "Bir kez izin verildi"
|
||||
},
|
||||
"toolApprovalButtons.allowOnce": {
|
||||
"defaultMessage": "Bir Kez İzin Ver"
|
||||
},
|
||||
"toolApprovalButtons.allowedOnce": {
|
||||
"defaultMessage": "Bir kez izin verildi"
|
||||
},
|
||||
"toolApprovalButtons.alwaysAllow": {
|
||||
"defaultMessage": "Her Zaman İzin Ver"
|
||||
},
|
||||
|
|
@ -4484,18 +4493,18 @@
|
|||
"updateSection.disableAutoDownloadDesc": {
|
||||
"defaultMessage": "Etkinleştirildiğinde, Goose yeni sürümleri bildirir ancak bunları otomatik olarak indirmez."
|
||||
},
|
||||
"updateSection.downloadingProgress": {
|
||||
"defaultMessage": "Güncelleme indiriliyor... {percent}%"
|
||||
},
|
||||
"updateSection.downloadingUpdate": {
|
||||
"defaultMessage": "Güncelleme indiriliyor..."
|
||||
},
|
||||
"updateSection.downloadNow": {
|
||||
"defaultMessage": "Şimdi İndir"
|
||||
},
|
||||
"updateSection.downloadReady": {
|
||||
"defaultMessage": "Güncelleme indirildi ve kuruluma hazır!"
|
||||
},
|
||||
"updateSection.downloadingProgress": {
|
||||
"defaultMessage": "Güncelleme indiriliyor... {percent}%"
|
||||
},
|
||||
"updateSection.downloadingUpdate": {
|
||||
"defaultMessage": "Güncelleme indiriliyor..."
|
||||
},
|
||||
"updateSection.installAndRestart": {
|
||||
"defaultMessage": "Yükle ve Yeniden Başlat"
|
||||
},
|
||||
|
|
@ -4520,12 +4529,12 @@
|
|||
"updateSection.readyInstallManual": {
|
||||
"defaultMessage": "✓ Güncelleme hazır! Kurulum talimatları için \"Yükle ve Yeniden Başlat\"a tıklayın."
|
||||
},
|
||||
"updateSection.updateAvailable": {
|
||||
"defaultMessage": "Güncelleme mevcut!"
|
||||
},
|
||||
"updateSection.upToDate": {
|
||||
"defaultMessage": "(güncel)"
|
||||
},
|
||||
"updateSection.updateAvailable": {
|
||||
"defaultMessage": "Güncelleme mevcut!"
|
||||
},
|
||||
"updateSection.versionAvailable": {
|
||||
"defaultMessage": "→ {version} mevcut"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -20,12 +20,21 @@
|
|||
"appsView.customApp": {
|
||||
"defaultMessage": "Ứng dụng tùy chỉnh"
|
||||
},
|
||||
"appsView.deleteApp": {
|
||||
"defaultMessage": "Delete app"
|
||||
},
|
||||
"appsView.deleteConfirm": {
|
||||
"defaultMessage": "Delete \"{name}\"? This cannot be undone."
|
||||
},
|
||||
"appsView.description": {
|
||||
"defaultMessage": "Các ứng dụng từ máy chủ MCP của bạn và các ứng dụng do goose tự tạo. Bạn có thể yêu cầu nó tạo ứng dụng mới thông qua giao diện trò chuyện và chúng sẽ xuất hiện ở đây."
|
||||
},
|
||||
"appsView.errorLoading": {
|
||||
"defaultMessage": "Lỗi khi tải ứng dụng: {error}"
|
||||
},
|
||||
"appsView.errorPrefix": {
|
||||
"defaultMessage": "Error: {error}"
|
||||
},
|
||||
"appsView.importApp": {
|
||||
"defaultMessage": "Nhập ứng dụng"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -20,12 +20,21 @@
|
|||
"appsView.customApp": {
|
||||
"defaultMessage": "自定义应用"
|
||||
},
|
||||
"appsView.deleteApp": {
|
||||
"defaultMessage": "Delete app"
|
||||
},
|
||||
"appsView.deleteConfirm": {
|
||||
"defaultMessage": "Delete \"{name}\"? This cannot be undone."
|
||||
},
|
||||
"appsView.description": {
|
||||
"defaultMessage": "来自你 MCP 服务器的应用,以及 goose 自己构建的应用。你可以通过聊天界面让它创建新应用,新应用会显示在这里。"
|
||||
},
|
||||
"appsView.errorLoading": {
|
||||
"defaultMessage": "加载应用出错:{error}"
|
||||
},
|
||||
"appsView.errorPrefix": {
|
||||
"defaultMessage": "Error: {error}"
|
||||
},
|
||||
"appsView.importApp": {
|
||||
"defaultMessage": "导入应用"
|
||||
},
|
||||
|
|
@ -41,15 +50,15 @@
|
|||
"appsView.noAppsTitle": {
|
||||
"defaultMessage": "暂无可用应用"
|
||||
},
|
||||
"appsView.retry": {
|
||||
"defaultMessage": "重试"
|
||||
},
|
||||
"appsView.retiredChatApp": {
|
||||
"defaultMessage": "Chat app retired"
|
||||
},
|
||||
"appsView.retiredChatAppDetail": {
|
||||
"defaultMessage": "We removed this feature because MCP sampling is no longer supported."
|
||||
},
|
||||
"appsView.retry": {
|
||||
"defaultMessage": "重试"
|
||||
},
|
||||
"appsView.title": {
|
||||
"defaultMessage": "应用"
|
||||
},
|
||||
|
|
@ -65,15 +74,15 @@
|
|||
"authSettings.deleteCredential": {
|
||||
"defaultMessage": "删除凭据"
|
||||
},
|
||||
"authSettings.deleted": {
|
||||
"defaultMessage": "凭据已删除"
|
||||
},
|
||||
"authSettings.deleteMessage": {
|
||||
"defaultMessage": "要删除 {provider} 的 {name} 凭据吗?"
|
||||
},
|
||||
"authSettings.deleteTitle": {
|
||||
"defaultMessage": "删除凭据"
|
||||
},
|
||||
"authSettings.deleted": {
|
||||
"defaultMessage": "凭据已删除"
|
||||
},
|
||||
"authSettings.description": {
|
||||
"defaultMessage": "管理 goose 在本地存储的提供商凭据。"
|
||||
},
|
||||
|
|
@ -98,12 +107,12 @@
|
|||
"authSettings.reauthorize": {
|
||||
"defaultMessage": "重新授权"
|
||||
},
|
||||
"authSettings.signedIn": {
|
||||
"defaultMessage": "凭据已配置"
|
||||
},
|
||||
"authSettings.signIn": {
|
||||
"defaultMessage": "登录"
|
||||
},
|
||||
"authSettings.signedIn": {
|
||||
"defaultMessage": "凭据已配置"
|
||||
},
|
||||
"authSettings.storageProviderCache": {
|
||||
"defaultMessage": "提供商缓存"
|
||||
},
|
||||
|
|
@ -122,12 +131,6 @@
|
|||
"baseChat.goHome": {
|
||||
"defaultMessage": "回到首页"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForNewChats": {
|
||||
"defaultMessage": "新聊天使用的扩展"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForThisSession": {
|
||||
"defaultMessage": "当前聊天会话使用的扩展"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionUpdated": {
|
||||
"defaultMessage": "扩展已更新"
|
||||
},
|
||||
|
|
@ -137,6 +140,12 @@
|
|||
"bottomMenuExtensionSelection.extensionWillBeEnabled": {
|
||||
"defaultMessage": "{name} 将在新聊天中被启用"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForNewChats": {
|
||||
"defaultMessage": "新聊天使用的扩展"
|
||||
},
|
||||
"bottomMenuExtensionSelection.extensionsForThisSession": {
|
||||
"defaultMessage": "当前聊天会话使用的扩展"
|
||||
},
|
||||
"bottomMenuExtensionSelection.manageExtensions": {
|
||||
"defaultMessage": "管理扩展"
|
||||
},
|
||||
|
|
@ -638,12 +647,12 @@
|
|||
"customProviderForm.attachments": {
|
||||
"defaultMessage": "附件"
|
||||
},
|
||||
"customProviderForm.authentication": {
|
||||
"defaultMessage": "认证"
|
||||
},
|
||||
"customProviderForm.authHint": {
|
||||
"defaultMessage": "像 Ollama 这样的本地大模型通常不需要 API 密钥。"
|
||||
},
|
||||
"customProviderForm.authentication": {
|
||||
"defaultMessage": "认证"
|
||||
},
|
||||
"customProviderForm.availableModels": {
|
||||
"defaultMessage": "可用模型(用逗号分隔)"
|
||||
},
|
||||
|
|
@ -941,21 +950,18 @@
|
|||
"elicitationRequest.waitingForResponse": {
|
||||
"defaultMessage": "正在等待你的回复(剩余 {timeRemaining})"
|
||||
},
|
||||
"environmentBadge.dev": {
|
||||
"defaultMessage": "开发"
|
||||
},
|
||||
"envVarsSection.add": {
|
||||
"defaultMessage": "添加"
|
||||
},
|
||||
"envVarsSection.bothRequired": {
|
||||
"defaultMessage": "变量名和值都必须填写"
|
||||
},
|
||||
"envVarsSection.environmentVariables": {
|
||||
"defaultMessage": "环境变量"
|
||||
},
|
||||
"envVarsSection.envVarsDescription": {
|
||||
"defaultMessage": "添加环境变量的键值对。填完两个字段后点击“+”按钮添加。若要修改已有的密钥值,点击编辑按钮。"
|
||||
},
|
||||
"envVarsSection.environmentVariables": {
|
||||
"defaultMessage": "环境变量"
|
||||
},
|
||||
"envVarsSection.noSpaces": {
|
||||
"defaultMessage": "变量名不能包含空格"
|
||||
},
|
||||
|
|
@ -965,6 +971,9 @@
|
|||
"envVarsSection.variableName": {
|
||||
"defaultMessage": "变量名"
|
||||
},
|
||||
"environmentBadge.dev": {
|
||||
"defaultMessage": "开发"
|
||||
},
|
||||
"errorBoundary.errorGeneric": {
|
||||
"defaultMessage": "发生了错误。"
|
||||
},
|
||||
|
|
@ -1124,6 +1133,9 @@
|
|||
"extensionModal.unsavedChangesTitle": {
|
||||
"defaultMessage": "未保存的更改"
|
||||
},
|
||||
"extensionTimeoutField.timeoutLabel": {
|
||||
"defaultMessage": "超时"
|
||||
},
|
||||
"extensionsSection.addCustomExtension": {
|
||||
"defaultMessage": "添加自定义扩展"
|
||||
},
|
||||
|
|
@ -1160,9 +1172,6 @@
|
|||
"extensionsView.searchPlaceholder": {
|
||||
"defaultMessage": "搜索扩展…"
|
||||
},
|
||||
"extensionTimeoutField.timeoutLabel": {
|
||||
"defaultMessage": "超时"
|
||||
},
|
||||
"externalBackendSection.certFingerprint": {
|
||||
"defaultMessage": "证书指纹(可选)"
|
||||
},
|
||||
|
|
@ -1382,12 +1391,12 @@
|
|||
"huggingFaceSignInPrompt.failedToConfigure": {
|
||||
"defaultMessage": "登录 Hugging Face 失败:{error}"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signedIn": {
|
||||
"defaultMessage": "已登录 Hugging Face"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signIn": {
|
||||
"defaultMessage": "登录"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signedIn": {
|
||||
"defaultMessage": "已登录 Hugging Face"
|
||||
},
|
||||
"huggingFaceSignInPrompt.signingIn": {
|
||||
"defaultMessage": "正在登录..."
|
||||
},
|
||||
|
|
@ -1421,15 +1430,15 @@
|
|||
"importRecipeForm.expectedRecipeStructure": {
|
||||
"defaultMessage": "期望的配方结构"
|
||||
},
|
||||
"importRecipeForm.importing": {
|
||||
"defaultMessage": "导入中…"
|
||||
},
|
||||
"importRecipeForm.importRecipeButton": {
|
||||
"defaultMessage": "导入配方"
|
||||
},
|
||||
"importRecipeForm.importRecipeTitle": {
|
||||
"defaultMessage": "导入配方"
|
||||
},
|
||||
"importRecipeForm.importing": {
|
||||
"defaultMessage": "导入中…"
|
||||
},
|
||||
"importRecipeForm.or": {
|
||||
"defaultMessage": "或"
|
||||
},
|
||||
|
|
@ -1529,6 +1538,18 @@
|
|||
"jsonSchemaForm.submit": {
|
||||
"defaultMessage": "提交"
|
||||
},
|
||||
"keyValueEditor.addValue": {
|
||||
"defaultMessage": "添加预设值"
|
||||
},
|
||||
"keyValueEditor.defaultKeyPlaceholder": {
|
||||
"defaultMessage": "参数名…"
|
||||
},
|
||||
"keyValueEditor.defaultValuePlaceholder": {
|
||||
"defaultMessage": "参数值…"
|
||||
},
|
||||
"keyValueEditor.removeValue": {
|
||||
"defaultMessage": "移除预设值 {key}"
|
||||
},
|
||||
"keyboardShortcuts.alwaysOnTopDescription": {
|
||||
"defaultMessage": "切换窗口始终置顶"
|
||||
},
|
||||
|
|
@ -1673,18 +1694,6 @@
|
|||
"keyboardShortcuts.toggleNavigationLabel": {
|
||||
"defaultMessage": "切换导航"
|
||||
},
|
||||
"keyValueEditor.addValue": {
|
||||
"defaultMessage": "添加预设值"
|
||||
},
|
||||
"keyValueEditor.defaultKeyPlaceholder": {
|
||||
"defaultMessage": "参数名…"
|
||||
},
|
||||
"keyValueEditor.defaultValuePlaceholder": {
|
||||
"defaultMessage": "参数值…"
|
||||
},
|
||||
"keyValueEditor.removeValue": {
|
||||
"defaultMessage": "移除预设值 {key}"
|
||||
},
|
||||
"launcher.placeholder": {
|
||||
"defaultMessage": "问 goose 任何问题…"
|
||||
},
|
||||
|
|
@ -1724,18 +1733,18 @@
|
|||
"localInferenceSettings.downloadCancelled": {
|
||||
"defaultMessage": "下载已取消"
|
||||
},
|
||||
"localInferenceSettings.downloadedModels": {
|
||||
"defaultMessage": "已下载的模型"
|
||||
},
|
||||
"localInferenceSettings.downloadFailed": {
|
||||
"defaultMessage": "下载失败"
|
||||
},
|
||||
"localInferenceSettings.downloading": {
|
||||
"defaultMessage": "下载中"
|
||||
},
|
||||
"localInferenceSettings.downloadProgress": {
|
||||
"defaultMessage": "{downloaded} / {total}({percent}%)"
|
||||
},
|
||||
"localInferenceSettings.downloadedModels": {
|
||||
"defaultMessage": "已下载的模型"
|
||||
},
|
||||
"localInferenceSettings.downloading": {
|
||||
"defaultMessage": "下载中"
|
||||
},
|
||||
"localInferenceSettings.evictFromMemory": {
|
||||
"defaultMessage": "Evict from memory"
|
||||
},
|
||||
|
|
@ -1823,12 +1832,12 @@
|
|||
"localModelPicker.checkingModels": {
|
||||
"defaultMessage": "正在检查可用模型…"
|
||||
},
|
||||
"localModelPicker.downloading": {
|
||||
"defaultMessage": "正在下载 {modelId}"
|
||||
},
|
||||
"localModelPicker.downloadModel": {
|
||||
"defaultMessage": "下载 {modelId}({size})"
|
||||
},
|
||||
"localModelPicker.downloading": {
|
||||
"defaultMessage": "正在下载 {modelId}"
|
||||
},
|
||||
"localModelPicker.failedToLoad": {
|
||||
"defaultMessage": "加载可用模型失败,请重试。"
|
||||
},
|
||||
|
|
@ -1991,9 +2000,6 @@
|
|||
"messageQueue.paused": {
|
||||
"defaultMessage": "已暂停"
|
||||
},
|
||||
"messageQueue.queued": {
|
||||
"defaultMessage": "已排队"
|
||||
},
|
||||
"messageQueue.queuePaused": {
|
||||
"defaultMessage": "队列已暂停"
|
||||
},
|
||||
|
|
@ -2003,6 +2009,9 @@
|
|||
"messageQueue.queuePausedExpanded": {
|
||||
"defaultMessage": "队列因中断而暂停。使用“立即发送”或添加新消息以恢复。"
|
||||
},
|
||||
"messageQueue.queued": {
|
||||
"defaultMessage": "已排队"
|
||||
},
|
||||
"messageQueue.removeFromQueue": {
|
||||
"defaultMessage": "将此消息从队列中移除"
|
||||
},
|
||||
|
|
@ -2093,12 +2102,36 @@
|
|||
"microphoneSelector.test": {
|
||||
"defaultMessage": "测试"
|
||||
},
|
||||
"modelAndProviderContext.modelChangedTitle": {
|
||||
"defaultMessage": "模型已切换"
|
||||
"modeSelectionItem.autonomousDescription": {
|
||||
"defaultMessage": "完整文件修改能力,可自由编辑、创建和删除文件。"
|
||||
},
|
||||
"modeSelectionItem.autonomousLabel": {
|
||||
"defaultMessage": "自主"
|
||||
},
|
||||
"modeSelectionItem.chatOnlyDescription": {
|
||||
"defaultMessage": "仅与所选提供商交互,不使用工具或扩展。"
|
||||
},
|
||||
"modeSelectionItem.chatOnlyLabel": {
|
||||
"defaultMessage": "仅聊天"
|
||||
},
|
||||
"modeSelectionItem.manualDescription": {
|
||||
"defaultMessage": "所有工具、扩展和文件修改都需要人工批准"
|
||||
},
|
||||
"modeSelectionItem.manualLabel": {
|
||||
"defaultMessage": "手动"
|
||||
},
|
||||
"modeSelectionItem.smartDescription": {
|
||||
"defaultMessage": "根据风险级别智能判断哪些操作需要批准"
|
||||
},
|
||||
"modeSelectionItem.smartLabel": {
|
||||
"defaultMessage": "智能"
|
||||
},
|
||||
"modelAndProviderContext.modelChangeFailed": {
|
||||
"defaultMessage": "{provider}/{model} 失败"
|
||||
},
|
||||
"modelAndProviderContext.modelChangedTitle": {
|
||||
"defaultMessage": "模型已切换"
|
||||
},
|
||||
"modelAndProviderContext.selectModel": {
|
||||
"defaultMessage": "选择模型"
|
||||
},
|
||||
|
|
@ -2111,27 +2144,6 @@
|
|||
"modelAndProviderContext.unknownProviderTitle": {
|
||||
"defaultMessage": "提供商名称查找"
|
||||
},
|
||||
"modelsBottomBar.changeModel": {
|
||||
"defaultMessage": "切换模型"
|
||||
},
|
||||
"modelsBottomBar.currentModel": {
|
||||
"defaultMessage": "当前模型"
|
||||
},
|
||||
"modelsBottomBar.loadingModel": {
|
||||
"defaultMessage": "正在加载模型…"
|
||||
},
|
||||
"modelsBottomBar.localModelSettings": {
|
||||
"defaultMessage": "本地模型设置"
|
||||
},
|
||||
"modelsBottomBar.localModelSettingsTitle": {
|
||||
"defaultMessage": "本地模型设置 — {modelName}"
|
||||
},
|
||||
"modelsBottomBar.resolvedModel": {
|
||||
"defaultMessage": "解析后的模型"
|
||||
},
|
||||
"modelsBottomBar.selectModel": {
|
||||
"defaultMessage": "选择模型"
|
||||
},
|
||||
"modelSettingsButtons.configureProviders": {
|
||||
"defaultMessage": "配置提供商"
|
||||
},
|
||||
|
|
@ -2291,36 +2303,33 @@
|
|||
"modelSettingsPanel.topP": {
|
||||
"defaultMessage": "Top P"
|
||||
},
|
||||
"modelsBottomBar.changeModel": {
|
||||
"defaultMessage": "切换模型"
|
||||
},
|
||||
"modelsBottomBar.currentModel": {
|
||||
"defaultMessage": "当前模型"
|
||||
},
|
||||
"modelsBottomBar.loadingModel": {
|
||||
"defaultMessage": "正在加载模型…"
|
||||
},
|
||||
"modelsBottomBar.localModelSettings": {
|
||||
"defaultMessage": "本地模型设置"
|
||||
},
|
||||
"modelsBottomBar.localModelSettingsTitle": {
|
||||
"defaultMessage": "本地模型设置 — {modelName}"
|
||||
},
|
||||
"modelsBottomBar.resolvedModel": {
|
||||
"defaultMessage": "解析后的模型"
|
||||
},
|
||||
"modelsBottomBar.selectModel": {
|
||||
"defaultMessage": "选择模型"
|
||||
},
|
||||
"modelsSection.resetDescription": {
|
||||
"defaultMessage": "清空已选的模型和提供商设置,重新开始"
|
||||
},
|
||||
"modelsSection.resetTitle": {
|
||||
"defaultMessage": "重置提供商和模型"
|
||||
},
|
||||
"modeSelectionItem.autonomousDescription": {
|
||||
"defaultMessage": "完整文件修改能力,可自由编辑、创建和删除文件。"
|
||||
},
|
||||
"modeSelectionItem.autonomousLabel": {
|
||||
"defaultMessage": "自主"
|
||||
},
|
||||
"modeSelectionItem.chatOnlyDescription": {
|
||||
"defaultMessage": "仅与所选提供商交互,不使用工具或扩展。"
|
||||
},
|
||||
"modeSelectionItem.chatOnlyLabel": {
|
||||
"defaultMessage": "仅聊天"
|
||||
},
|
||||
"modeSelectionItem.manualDescription": {
|
||||
"defaultMessage": "所有工具、扩展和文件修改都需要人工批准"
|
||||
},
|
||||
"modeSelectionItem.manualLabel": {
|
||||
"defaultMessage": "手动"
|
||||
},
|
||||
"modeSelectionItem.smartDescription": {
|
||||
"defaultMessage": "根据风险级别智能判断哪些操作需要批准"
|
||||
},
|
||||
"modeSelectionItem.smartLabel": {
|
||||
"defaultMessage": "智能"
|
||||
},
|
||||
"navigation.itemApps": {
|
||||
"defaultMessage": "应用"
|
||||
},
|
||||
|
|
@ -2600,12 +2609,12 @@
|
|||
"promptsSettings.edit": {
|
||||
"defaultMessage": "编辑"
|
||||
},
|
||||
"promptsSettings.editingLabel": {
|
||||
"defaultMessage": "正在编辑:{name}"
|
||||
},
|
||||
"promptsSettings.editPromptTitle": {
|
||||
"defaultMessage": "编辑:{name}"
|
||||
},
|
||||
"promptsSettings.editingLabel": {
|
||||
"defaultMessage": "正在编辑:{name}"
|
||||
},
|
||||
"promptsSettings.enterPromptContent": {
|
||||
"defaultMessage": "输入提示词内容…"
|
||||
},
|
||||
|
|
@ -2714,12 +2723,12 @@
|
|||
"providerConfigForm.noApiKey": {
|
||||
"defaultMessage": "没有 API 密钥?"
|
||||
},
|
||||
"providerConfigForm.signingIn": {
|
||||
"defaultMessage": "登录中…"
|
||||
},
|
||||
"providerConfigForm.signInWith": {
|
||||
"defaultMessage": "使用 {providerName} 登录"
|
||||
},
|
||||
"providerConfigForm.signingIn": {
|
||||
"defaultMessage": "登录中…"
|
||||
},
|
||||
"providerConfigurationModal.addApiKeyDescription": {
|
||||
"defaultMessage": "添加此提供商的 API 密钥以接入 goose"
|
||||
},
|
||||
|
|
@ -2780,12 +2789,12 @@
|
|||
"providerConfigurationModal.seeDocumentation": {
|
||||
"defaultMessage": "详见 <link>文档</link>。"
|
||||
},
|
||||
"providerConfigurationModal.signingIn": {
|
||||
"defaultMessage": "登录中…"
|
||||
},
|
||||
"providerConfigurationModal.signInWith": {
|
||||
"defaultMessage": "使用 {providerName} 登录"
|
||||
},
|
||||
"providerConfigurationModal.signingIn": {
|
||||
"defaultMessage": "登录中…"
|
||||
},
|
||||
"providerGrid.addProvider": {
|
||||
"defaultMessage": "添加提供商"
|
||||
},
|
||||
|
|
@ -3014,6 +3023,39 @@
|
|||
"recipeNameField.formatHint": {
|
||||
"defaultMessage": "将自动格式化(小写字母,空格转为短横线)"
|
||||
},
|
||||
"recipeWarningModal.cancel": {
|
||||
"defaultMessage": "取消"
|
||||
},
|
||||
"recipeWarningModal.descriptionLabel": {
|
||||
"defaultMessage": "描述:"
|
||||
},
|
||||
"recipeWarningModal.firstTimeDescription": {
|
||||
"defaultMessage": "你即将执行一个从未运行过的配方。"
|
||||
},
|
||||
"recipeWarningModal.hiddenCharsWarning": {
|
||||
"defaultMessage": "此配方包含隐藏字符,为了你的安全这些字符会被忽略,因为它们可能被用于恶意目的。"
|
||||
},
|
||||
"recipeWarningModal.instructionsLabel": {
|
||||
"defaultMessage": "指令:"
|
||||
},
|
||||
"recipeWarningModal.newRecipeWarningTitle": {
|
||||
"defaultMessage": "⚠️ 新配方警告"
|
||||
},
|
||||
"recipeWarningModal.recipePreview": {
|
||||
"defaultMessage": "配方预览:"
|
||||
},
|
||||
"recipeWarningModal.securityWarningTitle": {
|
||||
"defaultMessage": "⚠️ 安全警告"
|
||||
},
|
||||
"recipeWarningModal.titleLabel": {
|
||||
"defaultMessage": "标题:"
|
||||
},
|
||||
"recipeWarningModal.trustAndExecute": {
|
||||
"defaultMessage": "信任并执行"
|
||||
},
|
||||
"recipeWarningModal.trustSource": {
|
||||
"defaultMessage": "只有在你信任此配方来源的情况下才应继续。"
|
||||
},
|
||||
"recipesView.addSchedule": {
|
||||
"defaultMessage": "添加计划"
|
||||
},
|
||||
|
|
@ -3188,39 +3230,6 @@
|
|||
"recipesView.yamlFiles": {
|
||||
"defaultMessage": "YAML 文件"
|
||||
},
|
||||
"recipeWarningModal.cancel": {
|
||||
"defaultMessage": "取消"
|
||||
},
|
||||
"recipeWarningModal.descriptionLabel": {
|
||||
"defaultMessage": "描述:"
|
||||
},
|
||||
"recipeWarningModal.firstTimeDescription": {
|
||||
"defaultMessage": "你即将执行一个从未运行过的配方。"
|
||||
},
|
||||
"recipeWarningModal.hiddenCharsWarning": {
|
||||
"defaultMessage": "此配方包含隐藏字符,为了你的安全这些字符会被忽略,因为它们可能被用于恶意目的。"
|
||||
},
|
||||
"recipeWarningModal.instructionsLabel": {
|
||||
"defaultMessage": "指令:"
|
||||
},
|
||||
"recipeWarningModal.newRecipeWarningTitle": {
|
||||
"defaultMessage": "⚠️ 新配方警告"
|
||||
},
|
||||
"recipeWarningModal.recipePreview": {
|
||||
"defaultMessage": "配方预览:"
|
||||
},
|
||||
"recipeWarningModal.securityWarningTitle": {
|
||||
"defaultMessage": "⚠️ 安全警告"
|
||||
},
|
||||
"recipeWarningModal.titleLabel": {
|
||||
"defaultMessage": "标题:"
|
||||
},
|
||||
"recipeWarningModal.trustAndExecute": {
|
||||
"defaultMessage": "信任并执行"
|
||||
},
|
||||
"recipeWarningModal.trustSource": {
|
||||
"defaultMessage": "只有在你信任此配方来源的情况下才应继续。"
|
||||
},
|
||||
"resetProviderSection.resetButton": {
|
||||
"defaultMessage": "重置提供商和模型"
|
||||
},
|
||||
|
|
@ -3254,12 +3263,12 @@
|
|||
"scheduleDetailView.cronExpression": {
|
||||
"defaultMessage": "Cron 表达式:"
|
||||
},
|
||||
"scheduleDetailView.currentlyRunning": {
|
||||
"defaultMessage": "正在运行"
|
||||
},
|
||||
"scheduleDetailView.currentSession": {
|
||||
"defaultMessage": "当前会话:"
|
||||
},
|
||||
"scheduleDetailView.currentlyRunning": {
|
||||
"defaultMessage": "正在运行"
|
||||
},
|
||||
"scheduleDetailView.dir": {
|
||||
"defaultMessage": "目录:{path}"
|
||||
},
|
||||
|
|
@ -3317,6 +3326,12 @@
|
|||
"scheduleDetailView.noSessions": {
|
||||
"defaultMessage": "此计划下没有会话。"
|
||||
},
|
||||
"scheduleDetailView.pauseSchedule": {
|
||||
"defaultMessage": "暂停计划"
|
||||
},
|
||||
"scheduleDetailView.pauseUnpauseError": {
|
||||
"defaultMessage": "暂停/取消暂停错误"
|
||||
},
|
||||
"scheduleDetailView.paused": {
|
||||
"defaultMessage": "已暂停"
|
||||
},
|
||||
|
|
@ -3326,12 +3341,6 @@
|
|||
"scheduleDetailView.pausedWarning": {
|
||||
"defaultMessage": "此计划已暂停,将不会自动运行。使用“立即运行计划”手动触发,或取消暂停以恢复自动执行。"
|
||||
},
|
||||
"scheduleDetailView.pauseSchedule": {
|
||||
"defaultMessage": "暂停计划"
|
||||
},
|
||||
"scheduleDetailView.pauseUnpauseError": {
|
||||
"defaultMessage": "暂停/取消暂停错误"
|
||||
},
|
||||
"scheduleDetailView.processStarted": {
|
||||
"defaultMessage": "进程已启动:"
|
||||
},
|
||||
|
|
@ -3377,18 +3386,18 @@
|
|||
"scheduleDetailView.sessionId": {
|
||||
"defaultMessage": "会话 ID:{id}"
|
||||
},
|
||||
"scheduleDetailView.unpausedMsg": {
|
||||
"defaultMessage": "已恢复“{id}”"
|
||||
},
|
||||
"scheduleDetailView.unpauseSchedule": {
|
||||
"defaultMessage": "恢复计划"
|
||||
},
|
||||
"scheduleDetailView.updatedMsg": {
|
||||
"defaultMessage": "已更新“{id}”"
|
||||
"scheduleDetailView.unpausedMsg": {
|
||||
"defaultMessage": "已恢复“{id}”"
|
||||
},
|
||||
"scheduleDetailView.updateScheduleError": {
|
||||
"defaultMessage": "更新计划错误"
|
||||
},
|
||||
"scheduleDetailView.updatedMsg": {
|
||||
"defaultMessage": "已更新“{id}”"
|
||||
},
|
||||
"scheduleDetailView.viewingScheduleId": {
|
||||
"defaultMessage": "正在查看计划 ID:{id}"
|
||||
},
|
||||
|
|
@ -3512,12 +3521,12 @@
|
|||
"schedulesView.pause": {
|
||||
"defaultMessage": "暂停"
|
||||
},
|
||||
"schedulesView.paused": {
|
||||
"defaultMessage": "已暂停"
|
||||
},
|
||||
"schedulesView.pauseError": {
|
||||
"defaultMessage": "暂停计划错误"
|
||||
},
|
||||
"schedulesView.paused": {
|
||||
"defaultMessage": "已暂停"
|
||||
},
|
||||
"schedulesView.refresh": {
|
||||
"defaultMessage": "刷新"
|
||||
},
|
||||
|
|
@ -3536,9 +3545,6 @@
|
|||
"schedulesView.schedulePausedMsg": {
|
||||
"defaultMessage": "已成功暂停计划“{id}”"
|
||||
},
|
||||
"schedulesView.scheduler": {
|
||||
"defaultMessage": "调度"
|
||||
},
|
||||
"schedulesView.scheduleUnpaused": {
|
||||
"defaultMessage": "计划已恢复"
|
||||
},
|
||||
|
|
@ -3551,6 +3557,9 @@
|
|||
"schedulesView.scheduleUpdatedMsg": {
|
||||
"defaultMessage": "已成功更新计划“{id}”"
|
||||
},
|
||||
"schedulesView.scheduler": {
|
||||
"defaultMessage": "调度"
|
||||
},
|
||||
"schedulesView.unpauseError": {
|
||||
"defaultMessage": "恢复计划错误"
|
||||
},
|
||||
|
|
@ -3653,15 +3662,15 @@
|
|||
"sessionActionsHeader.copyText": {
|
||||
"defaultMessage": "Copy text"
|
||||
},
|
||||
"sessionActionsHeader.duplicated": {
|
||||
"defaultMessage": "Session duplicated"
|
||||
},
|
||||
"sessionActionsHeader.duplicateFailed": {
|
||||
"defaultMessage": "Failed to duplicate session: {error}"
|
||||
},
|
||||
"sessionActionsHeader.duplicateSession": {
|
||||
"defaultMessage": "Duplicate session"
|
||||
},
|
||||
"sessionActionsHeader.duplicated": {
|
||||
"defaultMessage": "Session duplicated"
|
||||
},
|
||||
"sessionActionsHeader.fullTextTitle": {
|
||||
"defaultMessage": "Text value"
|
||||
},
|
||||
|
|
@ -3674,9 +3683,6 @@
|
|||
"sessionActionsHeader.loadingJson": {
|
||||
"defaultMessage": "Loading JSON..."
|
||||
},
|
||||
"sessionActionsHeader.renamed": {
|
||||
"defaultMessage": "Session renamed"
|
||||
},
|
||||
"sessionActionsHeader.renameFailed": {
|
||||
"defaultMessage": "Failed to rename session: {error}"
|
||||
},
|
||||
|
|
@ -3689,6 +3695,9 @@
|
|||
"sessionActionsHeader.renameTitle": {
|
||||
"defaultMessage": "Rename Session"
|
||||
},
|
||||
"sessionActionsHeader.renamed": {
|
||||
"defaultMessage": "Session renamed"
|
||||
},
|
||||
"sessionActionsHeader.save": {
|
||||
"defaultMessage": "Save"
|
||||
},
|
||||
|
|
@ -3707,6 +3716,24 @@
|
|||
"sessionIndicators.streaming": {
|
||||
"defaultMessage": "流式传输中"
|
||||
},
|
||||
"sessionViewComponents.empty.description": {
|
||||
"defaultMessage": "此会话不包含任何消息"
|
||||
},
|
||||
"sessionViewComponents.empty.title": {
|
||||
"defaultMessage": "未找到消息"
|
||||
},
|
||||
"sessionViewComponents.error.loading": {
|
||||
"defaultMessage": "加载会话详情出错"
|
||||
},
|
||||
"sessionViewComponents.error.tryAgain": {
|
||||
"defaultMessage": "重试"
|
||||
},
|
||||
"sessionViewComponents.role.assistant": {
|
||||
"defaultMessage": "Goose"
|
||||
},
|
||||
"sessionViewComponents.role.user": {
|
||||
"defaultMessage": "你"
|
||||
},
|
||||
"sessions.action.delete": {
|
||||
"defaultMessage": "删除会话"
|
||||
},
|
||||
|
|
@ -3764,9 +3791,6 @@
|
|||
"sessions.import": {
|
||||
"defaultMessage": "导入会话"
|
||||
},
|
||||
"sessions.importing": {
|
||||
"defaultMessage": "正在导入..."
|
||||
},
|
||||
"sessions.importNostr": {
|
||||
"defaultMessage": "导入链接"
|
||||
},
|
||||
|
|
@ -3779,6 +3803,9 @@
|
|||
"sessions.importNostr.title": {
|
||||
"defaultMessage": "导入 Nostr 会话"
|
||||
},
|
||||
"sessions.importing": {
|
||||
"defaultMessage": "正在导入..."
|
||||
},
|
||||
"sessions.loadingMore": {
|
||||
"defaultMessage": "正在加载更多会话…"
|
||||
},
|
||||
|
|
@ -3806,56 +3833,38 @@
|
|||
"sessions.toast.copied": {
|
||||
"defaultMessage": "已复制到剪贴板"
|
||||
},
|
||||
"sessions.toast.deleted": {
|
||||
"defaultMessage": "会话删除成功"
|
||||
},
|
||||
"sessions.toast.deleteFailed": {
|
||||
"defaultMessage": "删除会话“{name}”失败:{error}"
|
||||
},
|
||||
"sessions.toast.duplicated": {
|
||||
"defaultMessage": "会话“{name}”复制成功"
|
||||
"sessions.toast.deleted": {
|
||||
"defaultMessage": "会话删除成功"
|
||||
},
|
||||
"sessions.toast.duplicateFailed": {
|
||||
"defaultMessage": "复制会话失败:{error}"
|
||||
},
|
||||
"sessions.toast.duplicated": {
|
||||
"defaultMessage": "会话“{name}”复制成功"
|
||||
},
|
||||
"sessions.toast.exported": {
|
||||
"defaultMessage": "会话导出成功"
|
||||
},
|
||||
"sessions.toast.imported": {
|
||||
"defaultMessage": "会话导入成功"
|
||||
},
|
||||
"sessions.toast.importFailed": {
|
||||
"defaultMessage": "导入会话失败:{error}"
|
||||
},
|
||||
"sessions.toast.imported": {
|
||||
"defaultMessage": "会话导入成功"
|
||||
},
|
||||
"sessions.toast.shareNostr": {
|
||||
"defaultMessage": "已创建加密的 Nostr 分享链接"
|
||||
},
|
||||
"sessions.toast.shareNostrFailed": {
|
||||
"defaultMessage": "创建 Nostr 分享链接失败:{error}"
|
||||
},
|
||||
"sessions.toast.updated": {
|
||||
"defaultMessage": "会话描述更新成功"
|
||||
},
|
||||
"sessions.toast.updateFailed": {
|
||||
"defaultMessage": "更新会话描述失败:{error}"
|
||||
},
|
||||
"sessionViewComponents.empty.description": {
|
||||
"defaultMessage": "此会话不包含任何消息"
|
||||
},
|
||||
"sessionViewComponents.empty.title": {
|
||||
"defaultMessage": "未找到消息"
|
||||
},
|
||||
"sessionViewComponents.error.loading": {
|
||||
"defaultMessage": "加载会话详情出错"
|
||||
},
|
||||
"sessionViewComponents.error.tryAgain": {
|
||||
"defaultMessage": "重试"
|
||||
},
|
||||
"sessionViewComponents.role.assistant": {
|
||||
"defaultMessage": "Goose"
|
||||
},
|
||||
"sessionViewComponents.role.user": {
|
||||
"defaultMessage": "你"
|
||||
"sessions.toast.updated": {
|
||||
"defaultMessage": "会话描述更新成功"
|
||||
},
|
||||
"settings.appearance.description": {
|
||||
"defaultMessage": "配置 goose 在你系统中的外观"
|
||||
|
|
@ -4397,12 +4406,12 @@
|
|||
"themeSelector.theme": {
|
||||
"defaultMessage": "主题"
|
||||
},
|
||||
"toolApprovalButtons.allowedOnce": {
|
||||
"defaultMessage": "已单次允许"
|
||||
},
|
||||
"toolApprovalButtons.allowOnce": {
|
||||
"defaultMessage": "仅此次允许"
|
||||
},
|
||||
"toolApprovalButtons.allowedOnce": {
|
||||
"defaultMessage": "已单次允许"
|
||||
},
|
||||
"toolApprovalButtons.alwaysAllow": {
|
||||
"defaultMessage": "始终允许"
|
||||
},
|
||||
|
|
@ -4484,18 +4493,18 @@
|
|||
"updateSection.disableAutoDownloadDesc": {
|
||||
"defaultMessage": "启用后,Goose 会通知你有新版本,但不会自动下载。"
|
||||
},
|
||||
"updateSection.downloadingProgress": {
|
||||
"defaultMessage": "正在下载更新… {percent}%"
|
||||
},
|
||||
"updateSection.downloadingUpdate": {
|
||||
"defaultMessage": "正在下载更新…"
|
||||
},
|
||||
"updateSection.downloadNow": {
|
||||
"defaultMessage": "立即下载"
|
||||
},
|
||||
"updateSection.downloadReady": {
|
||||
"defaultMessage": "更新已下载,可以安装!"
|
||||
},
|
||||
"updateSection.downloadingProgress": {
|
||||
"defaultMessage": "正在下载更新… {percent}%"
|
||||
},
|
||||
"updateSection.downloadingUpdate": {
|
||||
"defaultMessage": "正在下载更新…"
|
||||
},
|
||||
"updateSection.installAndRestart": {
|
||||
"defaultMessage": "安装并重启"
|
||||
},
|
||||
|
|
@ -4520,12 +4529,12 @@
|
|||
"updateSection.readyInstallManual": {
|
||||
"defaultMessage": "✓ 更新已就绪!点击“安装并重启”查看安装说明。"
|
||||
},
|
||||
"updateSection.updateAvailable": {
|
||||
"defaultMessage": "有可用更新!"
|
||||
},
|
||||
"updateSection.upToDate": {
|
||||
"defaultMessage": "(已是最新)"
|
||||
},
|
||||
"updateSection.updateAvailable": {
|
||||
"defaultMessage": "有可用更新!"
|
||||
},
|
||||
"updateSection.versionAvailable": {
|
||||
"defaultMessage": "→ {version} 可用"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -20,12 +20,21 @@
|
|||
"appsView.customApp": {
|
||||
"defaultMessage": "自訂應用程式"
|
||||
},
|
||||
"appsView.deleteApp": {
|
||||
"defaultMessage": "Delete app"
|
||||
},
|
||||
"appsView.deleteConfirm": {
|
||||
"defaultMessage": "Delete \"{name}\"? This cannot be undone."
|
||||
},
|
||||
"appsView.description": {
|
||||
"defaultMessage": "來自您 MCP 伺服器的應用程式,以及由 goose 自行建立的應用程式。您可以透過聊天介面要求它建立新的應用程式,它們便會出現在這裡。"
|
||||
},
|
||||
"appsView.errorLoading": {
|
||||
"defaultMessage": "載入應用程式時發生錯誤:{error}"
|
||||
},
|
||||
"appsView.errorPrefix": {
|
||||
"defaultMessage": "Error: {error}"
|
||||
},
|
||||
"appsView.importApp": {
|
||||
"defaultMessage": "匯入應用程式"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -43,4 +43,5 @@ export type GooseApp = McpAppResource &
|
|||
WindowProps & {
|
||||
mcpServers?: string[];
|
||||
prd?: string | null;
|
||||
deletable?: boolean;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ import type { Client } from "@agentclientprotocol/sdk";
|
|||
import type {
|
||||
AddConfigExtensionRequest_unstable,
|
||||
AddSessionExtensionRequest_unstable,
|
||||
AppsDeleteRequest_unstable,
|
||||
AppsDeleteResponse_unstable,
|
||||
AppsExportRequest_unstable,
|
||||
AppsExportResponse_unstable,
|
||||
AppsImportRequest_unstable,
|
||||
|
|
@ -199,6 +201,7 @@ import type {
|
|||
UpdateWorkingDirRequest_unstable,
|
||||
} from './types.gen.js';
|
||||
import {
|
||||
zAppsDeleteResponse_unstable,
|
||||
zAppsExportResponse_unstable,
|
||||
zAppsImportResponse_unstable,
|
||||
zAppsListResponse_unstable,
|
||||
|
|
@ -365,6 +368,18 @@ export class GooseExtClient {
|
|||
) as AppsImportResponse_unstable;
|
||||
}
|
||||
|
||||
async appsDelete_unstable(
|
||||
params: AppsDeleteRequest_unstable,
|
||||
): Promise<AppsDeleteResponse_unstable> {
|
||||
const raw = await this.conn.extMethod(
|
||||
"_goose/unstable/apps/delete",
|
||||
params,
|
||||
);
|
||||
return zAppsDeleteResponse_unstable.parse(
|
||||
raw,
|
||||
) as AppsDeleteResponse_unstable;
|
||||
}
|
||||
|
||||
async sessionWorkingDirUpdate_unstable(
|
||||
params: UpdateWorkingDirRequest_unstable,
|
||||
): Promise<void> {
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -371,6 +371,15 @@ export type AppsImportResponse_unstable = {
|
|||
message: string;
|
||||
};
|
||||
|
||||
export type AppsDeleteRequest_unstable = {
|
||||
name: string;
|
||||
};
|
||||
|
||||
export type AppsDeleteResponse_unstable = {
|
||||
name: string;
|
||||
message: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* Update the working directory for a session.
|
||||
*/
|
||||
|
|
@ -2623,14 +2632,14 @@ export type RecipeParamsAction = 'submit' | 'cancel';
|
|||
export type ExtRequest = {
|
||||
id: string;
|
||||
method: string;
|
||||
params?: AddSessionExtensionRequest_unstable | RemoveSessionExtensionRequest_unstable | GetToolsRequest_unstable | SetToolPermissionsRequest_unstable | GooseToolCallRequest_unstable | ReadResourceRequest_unstable | AppsListRequest_unstable | AppsExportRequest_unstable | AppsImportRequest_unstable | UpdateWorkingDirRequest_unstable | SetSessionSystemPromptRequest_unstable | SteerSessionRequest_unstable | DiagnosticsGetRequest_unstable | ListPromptsRequest_unstable | GetPromptRequest_unstable | SavePromptRequest_unstable | ResetPromptRequest_unstable | DeleteSessionRequest | GetConfigExtensionsRequest_unstable | GetAvailableExtensionsRequest_unstable | AddConfigExtensionRequest_unstable | RemoveConfigExtensionRequest_unstable | SetConfigExtensionEnabledRequest_unstable | GetSessionExtensionsRequest_unstable | ListProvidersRequest_unstable | ProviderSupportedModelsListRequest_unstable | ProviderCatalogListRequest_unstable | ProviderSetupCatalogListRequest_unstable | ProviderCatalogTemplateRequest_unstable | CustomProviderCreateRequest_unstable | CustomProviderReadRequest_unstable | CustomProviderUpdateRequest_unstable | CustomProviderDeleteRequest_unstable | RefreshProviderInventoryRequest_unstable | ProviderConfigReadRequest_unstable | ProviderConfigStatusRequest_unstable | ProviderConfigSaveRequest_unstable | ProviderConfigDeleteRequest_unstable | ProviderConfigAuthenticateRequest_unstable | ProviderSecretsListRequest_unstable | ProviderSecretDeleteRequest_unstable | CanonicalModelInfoRequest_unstable | PreferencesReadRequest_unstable | PreferencesSaveRequest_unstable | PreferencesRemoveRequest_unstable | ConfigReadRequest_unstable | ConfigUpsertRequest_unstable | ConfigRemoveRequest_unstable | ConfigReadAllRequest_unstable | DefaultsReadRequest_unstable | DefaultsSaveRequest_unstable | DefaultsClearRequest_unstable | OnboardingImportScanRequest_unstable | OnboardingImportApplyRequest_unstable | ExportSessionRequest_unstable | ImportSessionRequest_unstable | ShareSessionNostrRequest_unstable | EncodeRecipeRequest_unstable | DecodeRecipeRequest_unstable | ScanRecipeRequest_unstable | ListRecipesRequest_unstable | DeleteRecipeRequest_unstable | ScheduleRecipeRequest_unstable | SetRecipeSlashCommandRequest_unstable | SaveRecipeRequest_unstable | ParseRecipeRequest_unstable | RecipeToYamlRequest_unstable | ListSchedulesRequest_unstable | ListScheduleSessionsRequest_unstable | CreateScheduleRequest_unstable | DeleteScheduleRequest_unstable | PauseScheduleRequest_unstable | UnpauseScheduleRequest_unstable | UpdateScheduleRequest_unstable | RunScheduleNowRequest_unstable | KillRunningJobRequest_unstable | InspectRunningJobRequest_unstable | GetSessionInfoRequest_unstable | TruncateSessionConversationRequest_unstable | UpdateSessionProjectRequest_unstable | RenameSessionRequest_unstable | ArchiveSessionRequest_unstable | UnarchiveSessionRequest_unstable | CreateSourceRequest_unstable | ListSourcesRequest_unstable | ListAgentMentionsRequest_unstable | ListSlashCommandsRequest_unstable | UpdateSourceRequest_unstable | DeleteSourceRequest_unstable | ExportSourceRequest_unstable | ImportSourcesRequest_unstable | DictationTranscribeRequest_unstable | DictationConfigRequest_unstable | DictationSecretSaveRequest_unstable | DictationSecretDeleteRequest_unstable | DictationModelsListRequest_unstable | DictationModelDownloadRequest_unstable | DictationModelDownloadProgressRequest_unstable | DictationModelCancelRequest_unstable | DictationModelDeleteRequest_unstable | DictationModelSelectRequest_unstable | LocalInferenceModelsListRequest_unstable | LocalInferenceModelDownloadRequest_unstable | LocalInferenceModelDownloadProgressRequest_unstable | LocalInferenceModelDownloadCancelRequest_unstable | LocalInferenceModelDeleteRequest_unstable | LocalInferenceModelEvictRequest_unstable | LocalInferenceModelSettingsReadRequest_unstable | LocalInferenceModelSettingsUpdateRequest_unstable | LocalInferenceHuggingFaceSearchRequest_unstable | LocalInferenceHuggingFaceRepoVariantsRequest_unstable | LocalInferenceBuiltinChatTemplatesListRequest_unstable | {
|
||||
params?: AddSessionExtensionRequest_unstable | RemoveSessionExtensionRequest_unstable | GetToolsRequest_unstable | SetToolPermissionsRequest_unstable | GooseToolCallRequest_unstable | ReadResourceRequest_unstable | AppsListRequest_unstable | AppsExportRequest_unstable | AppsImportRequest_unstable | AppsDeleteRequest_unstable | UpdateWorkingDirRequest_unstable | SetSessionSystemPromptRequest_unstable | SteerSessionRequest_unstable | DiagnosticsGetRequest_unstable | ListPromptsRequest_unstable | GetPromptRequest_unstable | SavePromptRequest_unstable | ResetPromptRequest_unstable | DeleteSessionRequest | GetConfigExtensionsRequest_unstable | GetAvailableExtensionsRequest_unstable | AddConfigExtensionRequest_unstable | RemoveConfigExtensionRequest_unstable | SetConfigExtensionEnabledRequest_unstable | GetSessionExtensionsRequest_unstable | ListProvidersRequest_unstable | ProviderSupportedModelsListRequest_unstable | ProviderCatalogListRequest_unstable | ProviderSetupCatalogListRequest_unstable | ProviderCatalogTemplateRequest_unstable | CustomProviderCreateRequest_unstable | CustomProviderReadRequest_unstable | CustomProviderUpdateRequest_unstable | CustomProviderDeleteRequest_unstable | RefreshProviderInventoryRequest_unstable | ProviderConfigReadRequest_unstable | ProviderConfigStatusRequest_unstable | ProviderConfigSaveRequest_unstable | ProviderConfigDeleteRequest_unstable | ProviderConfigAuthenticateRequest_unstable | ProviderSecretsListRequest_unstable | ProviderSecretDeleteRequest_unstable | CanonicalModelInfoRequest_unstable | PreferencesReadRequest_unstable | PreferencesSaveRequest_unstable | PreferencesRemoveRequest_unstable | ConfigReadRequest_unstable | ConfigUpsertRequest_unstable | ConfigRemoveRequest_unstable | ConfigReadAllRequest_unstable | DefaultsReadRequest_unstable | DefaultsSaveRequest_unstable | DefaultsClearRequest_unstable | OnboardingImportScanRequest_unstable | OnboardingImportApplyRequest_unstable | ExportSessionRequest_unstable | ImportSessionRequest_unstable | ShareSessionNostrRequest_unstable | EncodeRecipeRequest_unstable | DecodeRecipeRequest_unstable | ScanRecipeRequest_unstable | ListRecipesRequest_unstable | DeleteRecipeRequest_unstable | ScheduleRecipeRequest_unstable | SetRecipeSlashCommandRequest_unstable | SaveRecipeRequest_unstable | ParseRecipeRequest_unstable | RecipeToYamlRequest_unstable | ListSchedulesRequest_unstable | ListScheduleSessionsRequest_unstable | CreateScheduleRequest_unstable | DeleteScheduleRequest_unstable | PauseScheduleRequest_unstable | UnpauseScheduleRequest_unstable | UpdateScheduleRequest_unstable | RunScheduleNowRequest_unstable | KillRunningJobRequest_unstable | InspectRunningJobRequest_unstable | GetSessionInfoRequest_unstable | TruncateSessionConversationRequest_unstable | UpdateSessionProjectRequest_unstable | RenameSessionRequest_unstable | ArchiveSessionRequest_unstable | UnarchiveSessionRequest_unstable | CreateSourceRequest_unstable | ListSourcesRequest_unstable | ListAgentMentionsRequest_unstable | ListSlashCommandsRequest_unstable | UpdateSourceRequest_unstable | DeleteSourceRequest_unstable | ExportSourceRequest_unstable | ImportSourcesRequest_unstable | DictationTranscribeRequest_unstable | DictationConfigRequest_unstable | DictationSecretSaveRequest_unstable | DictationSecretDeleteRequest_unstable | DictationModelsListRequest_unstable | DictationModelDownloadRequest_unstable | DictationModelDownloadProgressRequest_unstable | DictationModelCancelRequest_unstable | DictationModelDeleteRequest_unstable | DictationModelSelectRequest_unstable | LocalInferenceModelsListRequest_unstable | LocalInferenceModelDownloadRequest_unstable | LocalInferenceModelDownloadProgressRequest_unstable | LocalInferenceModelDownloadCancelRequest_unstable | LocalInferenceModelDeleteRequest_unstable | LocalInferenceModelEvictRequest_unstable | LocalInferenceModelSettingsReadRequest_unstable | LocalInferenceModelSettingsUpdateRequest_unstable | LocalInferenceHuggingFaceSearchRequest_unstable | LocalInferenceHuggingFaceRepoVariantsRequest_unstable | LocalInferenceBuiltinChatTemplatesListRequest_unstable | {
|
||||
[key: string]: unknown;
|
||||
} | null;
|
||||
};
|
||||
|
||||
export type ExtResponse = {
|
||||
id: string;
|
||||
result?: EmptyResponse | GetToolsResponse_unstable | SetToolPermissionsResponse_unstable | GooseToolCallResponse_unstable | ReadResourceResponse_unstable | AppsListResponse_unstable | AppsExportResponse_unstable | AppsImportResponse_unstable | SteerSessionResponse_unstable | DiagnosticsGetResponse_unstable | ListPromptsResponse_unstable | GetPromptResponse_unstable | PromptOperationResponse_unstable | GetConfigExtensionsResponse_unstable | GetAvailableExtensionsResponse_unstable | GetSessionExtensionsResponse_unstable | ListProvidersResponse_unstable | ProviderSupportedModelsListResponse_unstable | ProviderCatalogListResponse_unstable | ProviderSetupCatalogListResponse_unstable | ProviderCatalogTemplateResponse_unstable | CustomProviderCreateResponse_unstable | CustomProviderReadResponse_unstable | CustomProviderUpdateResponse_unstable | CustomProviderDeleteResponse_unstable | RefreshProviderInventoryResponse_unstable | ProviderConfigReadResponse_unstable | ProviderConfigStatusResponse_unstable | ProviderConfigChangeResponse_unstable | ProviderSecretsListResponse_unstable | CanonicalModelInfoResponse_unstable | PreferencesReadResponse_unstable | ConfigReadResponse_unstable | ConfigReadAllResponse_unstable | DefaultsReadResponse_unstable | OnboardingImportScanResponse_unstable | OnboardingImportApplyResponse_unstable | ExportSessionResponse_unstable | ImportSessionResponse_unstable | ShareSessionNostrResponse_unstable | EncodeRecipeResponse_unstable | DecodeRecipeResponse_unstable | ScanRecipeResponse_unstable | ListRecipesResponse_unstable | SaveRecipeResponse_unstable | ParseRecipeResponse_unstable | RecipeToYamlResponse_unstable | ListSchedulesResponse_unstable | ListScheduleSessionsResponse_unstable | CreateScheduleResponse_unstable | UpdateScheduleResponse_unstable | RunScheduleNowResponse_unstable | KillRunningJobResponse_unstable | InspectRunningJobResponse_unstable | GetSessionInfoResponse_unstable | CreateSourceResponse_unstable | ListSourcesResponse_unstable | ListAgentMentionsResponse_unstable | ListSlashCommandsResponse_unstable | UpdateSourceResponse_unstable | ExportSourceResponse_unstable | ImportSourcesResponse_unstable | DictationTranscribeResponse_unstable | DictationConfigResponse_unstable | DictationModelsListResponse_unstable | DictationModelDownloadProgressResponse_unstable | LocalInferenceModelsListResponse_unstable | LocalInferenceModelDownloadResponse_unstable | LocalInferenceModelDownloadProgressResponse_unstable | LocalInferenceModelSettingsReadResponse_unstable | LocalInferenceModelSettingsUpdateResponse_unstable | LocalInferenceHuggingFaceSearchResponse_unstable | LocalInferenceHuggingFaceRepoVariantsResponse_unstable | LocalInferenceBuiltinChatTemplatesListResponse_unstable | unknown;
|
||||
result?: EmptyResponse | GetToolsResponse_unstable | SetToolPermissionsResponse_unstable | GooseToolCallResponse_unstable | ReadResourceResponse_unstable | AppsListResponse_unstable | AppsExportResponse_unstable | AppsImportResponse_unstable | AppsDeleteResponse_unstable | SteerSessionResponse_unstable | DiagnosticsGetResponse_unstable | ListPromptsResponse_unstable | GetPromptResponse_unstable | PromptOperationResponse_unstable | GetConfigExtensionsResponse_unstable | GetAvailableExtensionsResponse_unstable | GetSessionExtensionsResponse_unstable | ListProvidersResponse_unstable | ProviderSupportedModelsListResponse_unstable | ProviderCatalogListResponse_unstable | ProviderSetupCatalogListResponse_unstable | ProviderCatalogTemplateResponse_unstable | CustomProviderCreateResponse_unstable | CustomProviderReadResponse_unstable | CustomProviderUpdateResponse_unstable | CustomProviderDeleteResponse_unstable | RefreshProviderInventoryResponse_unstable | ProviderConfigReadResponse_unstable | ProviderConfigStatusResponse_unstable | ProviderConfigChangeResponse_unstable | ProviderSecretsListResponse_unstable | CanonicalModelInfoResponse_unstable | PreferencesReadResponse_unstable | ConfigReadResponse_unstable | ConfigReadAllResponse_unstable | DefaultsReadResponse_unstable | OnboardingImportScanResponse_unstable | OnboardingImportApplyResponse_unstable | ExportSessionResponse_unstable | ImportSessionResponse_unstable | ShareSessionNostrResponse_unstable | EncodeRecipeResponse_unstable | DecodeRecipeResponse_unstable | ScanRecipeResponse_unstable | ListRecipesResponse_unstable | SaveRecipeResponse_unstable | ParseRecipeResponse_unstable | RecipeToYamlResponse_unstable | ListSchedulesResponse_unstable | ListScheduleSessionsResponse_unstable | CreateScheduleResponse_unstable | UpdateScheduleResponse_unstable | RunScheduleNowResponse_unstable | KillRunningJobResponse_unstable | InspectRunningJobResponse_unstable | GetSessionInfoResponse_unstable | CreateSourceResponse_unstable | ListSourcesResponse_unstable | ListAgentMentionsResponse_unstable | ListSlashCommandsResponse_unstable | UpdateSourceResponse_unstable | ExportSourceResponse_unstable | ImportSourcesResponse_unstable | DictationTranscribeResponse_unstable | DictationConfigResponse_unstable | DictationModelsListResponse_unstable | DictationModelDownloadProgressResponse_unstable | LocalInferenceModelsListResponse_unstable | LocalInferenceModelDownloadResponse_unstable | LocalInferenceModelDownloadProgressResponse_unstable | LocalInferenceModelSettingsReadResponse_unstable | LocalInferenceModelSettingsUpdateResponse_unstable | LocalInferenceHuggingFaceSearchResponse_unstable | LocalInferenceHuggingFaceRepoVariantsResponse_unstable | LocalInferenceBuiltinChatTemplatesListResponse_unstable | unknown;
|
||||
} | {
|
||||
error: {
|
||||
code: number;
|
||||
|
|
|
|||
|
|
@ -330,6 +330,15 @@ export const zAppsImportResponse_unstable = z.object({
|
|||
message: z.string()
|
||||
});
|
||||
|
||||
export const zAppsDeleteRequest_unstable = z.object({
|
||||
name: z.string()
|
||||
});
|
||||
|
||||
export const zAppsDeleteResponse_unstable = z.object({
|
||||
name: z.string(),
|
||||
message: z.string()
|
||||
});
|
||||
|
||||
/**
|
||||
* Update the working directory for a session.
|
||||
*/
|
||||
|
|
@ -2822,6 +2831,7 @@ export const zExtRequest = z.object({
|
|||
zAppsListRequest_unstable,
|
||||
zAppsExportRequest_unstable,
|
||||
zAppsImportRequest_unstable,
|
||||
zAppsDeleteRequest_unstable,
|
||||
zUpdateWorkingDirRequest_unstable,
|
||||
zSetSessionSystemPromptRequest_unstable,
|
||||
zSteerSessionRequest_unstable,
|
||||
|
|
@ -2946,6 +2956,7 @@ export const zExtResponse = z.union([
|
|||
zAppsListResponse_unstable,
|
||||
zAppsExportResponse_unstable,
|
||||
zAppsImportResponse_unstable,
|
||||
zAppsDeleteResponse_unstable,
|
||||
zSteerSessionResponse_unstable,
|
||||
zDiagnosticsGetResponse_unstable,
|
||||
zListPromptsResponse_unstable,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue