diff --git a/CHANGELOG.md b/CHANGELOG.md index a693b78000e..5c0ba494d18 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ Docs: https://docs.openclaw.ai - Anthropic/Meridian: preserve text and thinking content seeded on `content_block_start` in anthropic-messages streams, so `[thinking, text]` replies no longer persist as empty turns or trigger empty-response fallbacks. Fixes #74410. Thanks @vyctorbrzezowski. - Media: include redacted per-attempt resize failures and resolved model input capabilities in vision-pipeline errors so ARM64 image failures are diagnosable without closing the remaining routing investigation. Refs #74552. Thanks @1yihui. +- Control UI/i18n: route zh-CN agent, debug, channel-refresh, and exec-approval copy through the locale source while preserving the English `Cron Jobs` agent tab label and the security-audit command styling. Carries forward #39692 repair context. Thanks @hepeng154833488 and @vincentkoc. - Auto-reply: honor explicit `silentReply.direct: "allow"` for clean empty or reasoning-only direct chat turns while keeping the default direct-chat empty-response guard conservative. Fixes #74409. Thanks @jesuskannolis. - OpenAI Codex: send a non-empty Responses input item when a Codex turn only has systemPrompt-backed instructions, avoiding ChatGPT backend 400s from `input: []`. Fixes #73820. Thanks @woodhouse-bot. - Ollama: normalize provider-prefixed tool-call names at the native stream boundary so Kimi/Ollama calls such as `functions.exec` dispatch as `exec` instead of missing configured tools. Fixes #74487. Thanks @afurm and @carreipeia. diff --git a/ui/src/i18n/.i18n/ar.meta.json b/ui/src/i18n/.i18n/ar.meta.json index 990f5c9bed8..395033c7968 100644 --- a/ui/src/i18n/.i18n/ar.meta.json +++ b/ui/src/i18n/.i18n/ar.meta.json @@ -1,11 +1,125 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T17:40:46.712Z", + "fallbackKeys": [ + "agents.alreadyDefaultTitle", + "agents.channels.configuredCount", + "agents.channels.connectedCount", + "agents.channels.empty", + "agents.channels.enabledCount", + "agents.channels.lastRefresh", + "agents.channels.loadHint", + "agents.channels.noAccounts", + "agents.channels.notConfigured", + "agents.channels.setupGuide", + "agents.channels.subtitle", + "agents.channels.title", + "agents.context.configurationSubtitle", + "agents.context.default", + "agents.context.identityAvatar", + "agents.context.identityName", + "agents.context.openFilesTab", + "agents.context.primaryModel", + "agents.context.runtime", + "agents.context.schedulingSubtitle", + "agents.context.skillsFilter", + "agents.context.title", + "agents.context.workspace", + "agents.copyId", + "agents.copyIdTitle", + "agents.cronPanel.agentJobsSubtitle", + "agents.cronPanel.agentJobsTitle", + "agents.cronPanel.jobs", + "agents.cronPanel.nextWake", + "agents.cronPanel.noJobs", + "agents.cronPanel.runNow", + "agents.cronPanel.schedulerSubtitle", + "agents.cronPanel.schedulerTitle", + "agents.default", + "agents.files.closePreview", + "agents.files.collapsePreview", + "agents.files.content", + "agents.files.coreFilesSubtitle", + "agents.files.coreFilesTitle", + "agents.files.editFile", + "agents.files.empty", + "agents.files.emptyDraft", + "agents.files.expandPreview", + "agents.files.extensionPreview", + "agents.files.lines", + "agents.files.liveDraftPreview", + "agents.files.loadHint", + "agents.files.markdownPreview", + "agents.files.minRead", + "agents.files.missing", + "agents.files.missingHint", + "agents.files.notCreatedYet", + "agents.files.preview", + "agents.files.previewMarkdownTitle", + "agents.files.savedPreview", + "agents.files.selectFile", + "agents.files.updated", + "agents.files.updatedUnknown", + "agents.files.willCreateOnSave", + "agents.files.words", + "agents.files.workspace", + "agents.noAgents", + "agents.selectSubtitle", + "agents.selectTitle", + "agents.setDefault", + "agents.setDefaultTitle", + "agents.tabs.channels", + "agents.tabs.cronJobs", + "agents.tabs.files", + "agents.tabs.overview", + "agents.tabs.skills", + "agents.tabs.tools", + "common.never", + "common.reset", + "debug.eventLogSubtitle", + "debug.eventLogTitle", + "debug.health", + "debug.lastHeartbeat", + "debug.manualRpcSubtitle", + "debug.manualRpcTitle", + "debug.method", + "debug.modelsSubtitle", + "debug.modelsTitle", + "debug.noEvents", + "debug.paramsJson", + "debug.security.audit", + "debug.security.critical", + "debug.security.info", + "debug.security.noCriticalIssues", + "debug.security.runPrefix", + "debug.security.runSuffix", + "debug.security.warnings", + "debug.selectMethod", + "debug.snapshotsSubtitle", + "debug.snapshotsTitle", + "debug.status", + "execApproval.allowOnce", + "execApproval.alwaysAllow", + "execApproval.deny", + "execApproval.execApprovalNeeded", + "execApproval.expired", + "execApproval.expiresIn", + "execApproval.labels.agent", + "execApproval.labels.ask", + "execApproval.labels.cwd", + "execApproval.labels.host", + "execApproval.labels.plugin", + "execApproval.labels.resolved", + "execApproval.labels.security", + "execApproval.labels.session", + "execApproval.labels.severity", + "execApproval.pending", + "execApproval.pluginApprovalNeeded" + ], + "generatedAt": "2026-04-29T19:08:30.710Z", "locale": "ar", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "e2d2b3df6a5e614401e887d4c49d24c633ac3435956040c48672ec8b289abdd4", - "totalKeys": 768, + "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", + "totalKeys": 881, "translatedKeys": 768, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/de.meta.json b/ui/src/i18n/.i18n/de.meta.json index cbe97a57055..42bd9d11015 100644 --- a/ui/src/i18n/.i18n/de.meta.json +++ b/ui/src/i18n/.i18n/de.meta.json @@ -1,11 +1,13 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T17:35:03.767Z", + "fallbackKeys": [ + "agents.context.runtime" + ], + "generatedAt": "2026-04-29T19:08:29.139Z", "locale": "de", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "e2d2b3df6a5e614401e887d4c49d24c633ac3435956040c48672ec8b289abdd4", - "totalKeys": 768, - "translatedKeys": 768, + "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", + "totalKeys": 881, + "translatedKeys": 880, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/es.meta.json b/ui/src/i18n/.i18n/es.meta.json index b54fc038e01..c6620b990d1 100644 --- a/ui/src/i18n/.i18n/es.meta.json +++ b/ui/src/i18n/.i18n/es.meta.json @@ -1,11 +1,13 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T17:36:10.668Z", + "fallbackKeys": [ + "agents.context.runtime" + ], + "generatedAt": "2026-04-29T19:08:29.459Z", "locale": "es", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "e2d2b3df6a5e614401e887d4c49d24c633ac3435956040c48672ec8b289abdd4", - "totalKeys": 768, - "translatedKeys": 768, + "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", + "totalKeys": 881, + "translatedKeys": 880, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/fa.meta.json b/ui/src/i18n/.i18n/fa.meta.json index 4da05556d26..a712d68588f 100644 --- a/ui/src/i18n/.i18n/fa.meta.json +++ b/ui/src/i18n/.i18n/fa.meta.json @@ -1,11 +1,125 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T17:45:53.092Z", + "fallbackKeys": [ + "agents.alreadyDefaultTitle", + "agents.channels.configuredCount", + "agents.channels.connectedCount", + "agents.channels.empty", + "agents.channels.enabledCount", + "agents.channels.lastRefresh", + "agents.channels.loadHint", + "agents.channels.noAccounts", + "agents.channels.notConfigured", + "agents.channels.setupGuide", + "agents.channels.subtitle", + "agents.channels.title", + "agents.context.configurationSubtitle", + "agents.context.default", + "agents.context.identityAvatar", + "agents.context.identityName", + "agents.context.openFilesTab", + "agents.context.primaryModel", + "agents.context.runtime", + "agents.context.schedulingSubtitle", + "agents.context.skillsFilter", + "agents.context.title", + "agents.context.workspace", + "agents.copyId", + "agents.copyIdTitle", + "agents.cronPanel.agentJobsSubtitle", + "agents.cronPanel.agentJobsTitle", + "agents.cronPanel.jobs", + "agents.cronPanel.nextWake", + "agents.cronPanel.noJobs", + "agents.cronPanel.runNow", + "agents.cronPanel.schedulerSubtitle", + "agents.cronPanel.schedulerTitle", + "agents.default", + "agents.files.closePreview", + "agents.files.collapsePreview", + "agents.files.content", + "agents.files.coreFilesSubtitle", + "agents.files.coreFilesTitle", + "agents.files.editFile", + "agents.files.empty", + "agents.files.emptyDraft", + "agents.files.expandPreview", + "agents.files.extensionPreview", + "agents.files.lines", + "agents.files.liveDraftPreview", + "agents.files.loadHint", + "agents.files.markdownPreview", + "agents.files.minRead", + "agents.files.missing", + "agents.files.missingHint", + "agents.files.notCreatedYet", + "agents.files.preview", + "agents.files.previewMarkdownTitle", + "agents.files.savedPreview", + "agents.files.selectFile", + "agents.files.updated", + "agents.files.updatedUnknown", + "agents.files.willCreateOnSave", + "agents.files.words", + "agents.files.workspace", + "agents.noAgents", + "agents.selectSubtitle", + "agents.selectTitle", + "agents.setDefault", + "agents.setDefaultTitle", + "agents.tabs.channels", + "agents.tabs.cronJobs", + "agents.tabs.files", + "agents.tabs.overview", + "agents.tabs.skills", + "agents.tabs.tools", + "common.never", + "common.reset", + "debug.eventLogSubtitle", + "debug.eventLogTitle", + "debug.health", + "debug.lastHeartbeat", + "debug.manualRpcSubtitle", + "debug.manualRpcTitle", + "debug.method", + "debug.modelsSubtitle", + "debug.modelsTitle", + "debug.noEvents", + "debug.paramsJson", + "debug.security.audit", + "debug.security.critical", + "debug.security.info", + "debug.security.noCriticalIssues", + "debug.security.runPrefix", + "debug.security.runSuffix", + "debug.security.warnings", + "debug.selectMethod", + "debug.snapshotsSubtitle", + "debug.snapshotsTitle", + "debug.status", + "execApproval.allowOnce", + "execApproval.alwaysAllow", + "execApproval.deny", + "execApproval.execApprovalNeeded", + "execApproval.expired", + "execApproval.expiresIn", + "execApproval.labels.agent", + "execApproval.labels.ask", + "execApproval.labels.cwd", + "execApproval.labels.host", + "execApproval.labels.plugin", + "execApproval.labels.resolved", + "execApproval.labels.security", + "execApproval.labels.session", + "execApproval.labels.severity", + "execApproval.pending", + "execApproval.pluginApprovalNeeded" + ], + "generatedAt": "2026-04-29T19:08:33.526Z", "locale": "fa", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "e2d2b3df6a5e614401e887d4c49d24c633ac3435956040c48672ec8b289abdd4", - "totalKeys": 768, + "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", + "totalKeys": 881, "translatedKeys": 768, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/fr.meta.json b/ui/src/i18n/.i18n/fr.meta.json index 197aaebbeec..031820b7509 100644 --- a/ui/src/i18n/.i18n/fr.meta.json +++ b/ui/src/i18n/.i18n/fr.meta.json @@ -1,11 +1,13 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T17:36:08.909Z", + "fallbackKeys": [ + "agents.context.runtime" + ], + "generatedAt": "2026-04-29T19:08:30.398Z", "locale": "fr", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "e2d2b3df6a5e614401e887d4c49d24c633ac3435956040c48672ec8b289abdd4", - "totalKeys": 768, - "translatedKeys": 768, + "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", + "totalKeys": 881, + "translatedKeys": 880, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/id.meta.json b/ui/src/i18n/.i18n/id.meta.json index 439693a57bf..e358c096616 100644 --- a/ui/src/i18n/.i18n/id.meta.json +++ b/ui/src/i18n/.i18n/id.meta.json @@ -1,11 +1,13 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T17:37:59.703Z", + "fallbackKeys": [ + "agents.context.runtime" + ], + "generatedAt": "2026-04-29T19:08:31.956Z", "locale": "id", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "e2d2b3df6a5e614401e887d4c49d24c633ac3435956040c48672ec8b289abdd4", - "totalKeys": 768, - "translatedKeys": 768, + "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", + "totalKeys": 881, + "translatedKeys": 880, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/it.meta.json b/ui/src/i18n/.i18n/it.meta.json index 0dcab001213..6d1754c53bf 100644 --- a/ui/src/i18n/.i18n/it.meta.json +++ b/ui/src/i18n/.i18n/it.meta.json @@ -1,11 +1,125 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T17:39:53.120Z", + "fallbackKeys": [ + "agents.alreadyDefaultTitle", + "agents.channels.configuredCount", + "agents.channels.connectedCount", + "agents.channels.empty", + "agents.channels.enabledCount", + "agents.channels.lastRefresh", + "agents.channels.loadHint", + "agents.channels.noAccounts", + "agents.channels.notConfigured", + "agents.channels.setupGuide", + "agents.channels.subtitle", + "agents.channels.title", + "agents.context.configurationSubtitle", + "agents.context.default", + "agents.context.identityAvatar", + "agents.context.identityName", + "agents.context.openFilesTab", + "agents.context.primaryModel", + "agents.context.runtime", + "agents.context.schedulingSubtitle", + "agents.context.skillsFilter", + "agents.context.title", + "agents.context.workspace", + "agents.copyId", + "agents.copyIdTitle", + "agents.cronPanel.agentJobsSubtitle", + "agents.cronPanel.agentJobsTitle", + "agents.cronPanel.jobs", + "agents.cronPanel.nextWake", + "agents.cronPanel.noJobs", + "agents.cronPanel.runNow", + "agents.cronPanel.schedulerSubtitle", + "agents.cronPanel.schedulerTitle", + "agents.default", + "agents.files.closePreview", + "agents.files.collapsePreview", + "agents.files.content", + "agents.files.coreFilesSubtitle", + "agents.files.coreFilesTitle", + "agents.files.editFile", + "agents.files.empty", + "agents.files.emptyDraft", + "agents.files.expandPreview", + "agents.files.extensionPreview", + "agents.files.lines", + "agents.files.liveDraftPreview", + "agents.files.loadHint", + "agents.files.markdownPreview", + "agents.files.minRead", + "agents.files.missing", + "agents.files.missingHint", + "agents.files.notCreatedYet", + "agents.files.preview", + "agents.files.previewMarkdownTitle", + "agents.files.savedPreview", + "agents.files.selectFile", + "agents.files.updated", + "agents.files.updatedUnknown", + "agents.files.willCreateOnSave", + "agents.files.words", + "agents.files.workspace", + "agents.noAgents", + "agents.selectSubtitle", + "agents.selectTitle", + "agents.setDefault", + "agents.setDefaultTitle", + "agents.tabs.channels", + "agents.tabs.cronJobs", + "agents.tabs.files", + "agents.tabs.overview", + "agents.tabs.skills", + "agents.tabs.tools", + "common.never", + "common.reset", + "debug.eventLogSubtitle", + "debug.eventLogTitle", + "debug.health", + "debug.lastHeartbeat", + "debug.manualRpcSubtitle", + "debug.manualRpcTitle", + "debug.method", + "debug.modelsSubtitle", + "debug.modelsTitle", + "debug.noEvents", + "debug.paramsJson", + "debug.security.audit", + "debug.security.critical", + "debug.security.info", + "debug.security.noCriticalIssues", + "debug.security.runPrefix", + "debug.security.runSuffix", + "debug.security.warnings", + "debug.selectMethod", + "debug.snapshotsSubtitle", + "debug.snapshotsTitle", + "debug.status", + "execApproval.allowOnce", + "execApproval.alwaysAllow", + "execApproval.deny", + "execApproval.execApprovalNeeded", + "execApproval.expired", + "execApproval.expiresIn", + "execApproval.labels.agent", + "execApproval.labels.ask", + "execApproval.labels.cwd", + "execApproval.labels.host", + "execApproval.labels.plugin", + "execApproval.labels.resolved", + "execApproval.labels.security", + "execApproval.labels.session", + "execApproval.labels.severity", + "execApproval.pending", + "execApproval.pluginApprovalNeeded" + ], + "generatedAt": "2026-04-29T19:08:31.026Z", "locale": "it", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "e2d2b3df6a5e614401e887d4c49d24c633ac3435956040c48672ec8b289abdd4", - "totalKeys": 768, + "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", + "totalKeys": 881, "translatedKeys": 768, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/ja-JP.meta.json b/ui/src/i18n/.i18n/ja-JP.meta.json index 9478a2efb50..9ef629ec2a5 100644 --- a/ui/src/i18n/.i18n/ja-JP.meta.json +++ b/ui/src/i18n/.i18n/ja-JP.meta.json @@ -1,11 +1,13 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T17:36:05.788Z", + "fallbackKeys": [ + "agents.context.runtime" + ], + "generatedAt": "2026-04-29T19:08:29.768Z", "locale": "ja-JP", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "e2d2b3df6a5e614401e887d4c49d24c633ac3435956040c48672ec8b289abdd4", - "totalKeys": 768, - "translatedKeys": 768, + "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", + "totalKeys": 881, + "translatedKeys": 880, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/ko.meta.json b/ui/src/i18n/.i18n/ko.meta.json index 449541e6fb6..31b7d2bc379 100644 --- a/ui/src/i18n/.i18n/ko.meta.json +++ b/ui/src/i18n/.i18n/ko.meta.json @@ -1,11 +1,13 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T17:36:02.577Z", + "fallbackKeys": [ + "agents.context.runtime" + ], + "generatedAt": "2026-04-29T19:08:30.082Z", "locale": "ko", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "e2d2b3df6a5e614401e887d4c49d24c633ac3435956040c48672ec8b289abdd4", - "totalKeys": 768, - "translatedKeys": 768, + "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", + "totalKeys": 881, + "translatedKeys": 880, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/nl.meta.json b/ui/src/i18n/.i18n/nl.meta.json index 7ea8c2dafc2..e5ec030a399 100644 --- a/ui/src/i18n/.i18n/nl.meta.json +++ b/ui/src/i18n/.i18n/nl.meta.json @@ -1,11 +1,125 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T17:42:07.899Z", + "fallbackKeys": [ + "agents.alreadyDefaultTitle", + "agents.channels.configuredCount", + "agents.channels.connectedCount", + "agents.channels.empty", + "agents.channels.enabledCount", + "agents.channels.lastRefresh", + "agents.channels.loadHint", + "agents.channels.noAccounts", + "agents.channels.notConfigured", + "agents.channels.setupGuide", + "agents.channels.subtitle", + "agents.channels.title", + "agents.context.configurationSubtitle", + "agents.context.default", + "agents.context.identityAvatar", + "agents.context.identityName", + "agents.context.openFilesTab", + "agents.context.primaryModel", + "agents.context.runtime", + "agents.context.schedulingSubtitle", + "agents.context.skillsFilter", + "agents.context.title", + "agents.context.workspace", + "agents.copyId", + "agents.copyIdTitle", + "agents.cronPanel.agentJobsSubtitle", + "agents.cronPanel.agentJobsTitle", + "agents.cronPanel.jobs", + "agents.cronPanel.nextWake", + "agents.cronPanel.noJobs", + "agents.cronPanel.runNow", + "agents.cronPanel.schedulerSubtitle", + "agents.cronPanel.schedulerTitle", + "agents.default", + "agents.files.closePreview", + "agents.files.collapsePreview", + "agents.files.content", + "agents.files.coreFilesSubtitle", + "agents.files.coreFilesTitle", + "agents.files.editFile", + "agents.files.empty", + "agents.files.emptyDraft", + "agents.files.expandPreview", + "agents.files.extensionPreview", + "agents.files.lines", + "agents.files.liveDraftPreview", + "agents.files.loadHint", + "agents.files.markdownPreview", + "agents.files.minRead", + "agents.files.missing", + "agents.files.missingHint", + "agents.files.notCreatedYet", + "agents.files.preview", + "agents.files.previewMarkdownTitle", + "agents.files.savedPreview", + "agents.files.selectFile", + "agents.files.updated", + "agents.files.updatedUnknown", + "agents.files.willCreateOnSave", + "agents.files.words", + "agents.files.workspace", + "agents.noAgents", + "agents.selectSubtitle", + "agents.selectTitle", + "agents.setDefault", + "agents.setDefaultTitle", + "agents.tabs.channels", + "agents.tabs.cronJobs", + "agents.tabs.files", + "agents.tabs.overview", + "agents.tabs.skills", + "agents.tabs.tools", + "common.never", + "common.reset", + "debug.eventLogSubtitle", + "debug.eventLogTitle", + "debug.health", + "debug.lastHeartbeat", + "debug.manualRpcSubtitle", + "debug.manualRpcTitle", + "debug.method", + "debug.modelsSubtitle", + "debug.modelsTitle", + "debug.noEvents", + "debug.paramsJson", + "debug.security.audit", + "debug.security.critical", + "debug.security.info", + "debug.security.noCriticalIssues", + "debug.security.runPrefix", + "debug.security.runSuffix", + "debug.security.warnings", + "debug.selectMethod", + "debug.snapshotsSubtitle", + "debug.snapshotsTitle", + "debug.status", + "execApproval.allowOnce", + "execApproval.alwaysAllow", + "execApproval.deny", + "execApproval.execApprovalNeeded", + "execApproval.expired", + "execApproval.expiresIn", + "execApproval.labels.agent", + "execApproval.labels.ask", + "execApproval.labels.cwd", + "execApproval.labels.host", + "execApproval.labels.plugin", + "execApproval.labels.resolved", + "execApproval.labels.security", + "execApproval.labels.session", + "execApproval.labels.severity", + "execApproval.pending", + "execApproval.pluginApprovalNeeded" + ], + "generatedAt": "2026-04-29T19:08:33.205Z", "locale": "nl", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "e2d2b3df6a5e614401e887d4c49d24c633ac3435956040c48672ec8b289abdd4", - "totalKeys": 768, + "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", + "totalKeys": 881, "translatedKeys": 768, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/pl.meta.json b/ui/src/i18n/.i18n/pl.meta.json index 281e65ec098..5bfc139c5e5 100644 --- a/ui/src/i18n/.i18n/pl.meta.json +++ b/ui/src/i18n/.i18n/pl.meta.json @@ -1,11 +1,13 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T17:38:29.591Z", + "fallbackKeys": [ + "agents.context.runtime" + ], + "generatedAt": "2026-04-29T19:08:32.268Z", "locale": "pl", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "e2d2b3df6a5e614401e887d4c49d24c633ac3435956040c48672ec8b289abdd4", - "totalKeys": 768, - "translatedKeys": 768, + "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", + "totalKeys": 881, + "translatedKeys": 880, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/pt-BR.meta.json b/ui/src/i18n/.i18n/pt-BR.meta.json index 55acbd4fe0f..9f13257de78 100644 --- a/ui/src/i18n/.i18n/pt-BR.meta.json +++ b/ui/src/i18n/.i18n/pt-BR.meta.json @@ -1,11 +1,13 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T17:35:02.393Z", + "fallbackKeys": [ + "agents.context.runtime" + ], + "generatedAt": "2026-04-29T19:08:28.821Z", "locale": "pt-BR", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "e2d2b3df6a5e614401e887d4c49d24c633ac3435956040c48672ec8b289abdd4", - "totalKeys": 768, - "translatedKeys": 768, + "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", + "totalKeys": 881, + "translatedKeys": 880, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/th.meta.json b/ui/src/i18n/.i18n/th.meta.json index 2f5e9df722d..ae2105199df 100644 --- a/ui/src/i18n/.i18n/th.meta.json +++ b/ui/src/i18n/.i18n/th.meta.json @@ -1,11 +1,13 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T17:38:48.503Z", + "fallbackKeys": [ + "agents.context.runtime" + ], + "generatedAt": "2026-04-29T19:08:32.585Z", "locale": "th", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "e2d2b3df6a5e614401e887d4c49d24c633ac3435956040c48672ec8b289abdd4", - "totalKeys": 768, - "translatedKeys": 768, + "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", + "totalKeys": 881, + "translatedKeys": 880, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/tr.meta.json b/ui/src/i18n/.i18n/tr.meta.json index a0685e2e61a..70a203f1b5e 100644 --- a/ui/src/i18n/.i18n/tr.meta.json +++ b/ui/src/i18n/.i18n/tr.meta.json @@ -1,11 +1,13 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T17:36:58.183Z", + "fallbackKeys": [ + "agents.context.runtime" + ], + "generatedAt": "2026-04-29T19:08:31.341Z", "locale": "tr", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "e2d2b3df6a5e614401e887d4c49d24c633ac3435956040c48672ec8b289abdd4", - "totalKeys": 768, - "translatedKeys": 768, + "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", + "totalKeys": 881, + "translatedKeys": 880, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/uk.meta.json b/ui/src/i18n/.i18n/uk.meta.json index 0ff149fbd96..f60d475588a 100644 --- a/ui/src/i18n/.i18n/uk.meta.json +++ b/ui/src/i18n/.i18n/uk.meta.json @@ -1,11 +1,13 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T17:37:08.260Z", + "fallbackKeys": [ + "agents.context.runtime" + ], + "generatedAt": "2026-04-29T19:08:31.648Z", "locale": "uk", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "e2d2b3df6a5e614401e887d4c49d24c633ac3435956040c48672ec8b289abdd4", - "totalKeys": 768, - "translatedKeys": 768, + "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", + "totalKeys": 881, + "translatedKeys": 880, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/vi.meta.json b/ui/src/i18n/.i18n/vi.meta.json index d29ec94c54b..1c6a51b7244 100644 --- a/ui/src/i18n/.i18n/vi.meta.json +++ b/ui/src/i18n/.i18n/vi.meta.json @@ -1,11 +1,125 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T17:42:15.736Z", + "fallbackKeys": [ + "agents.alreadyDefaultTitle", + "agents.channels.configuredCount", + "agents.channels.connectedCount", + "agents.channels.empty", + "agents.channels.enabledCount", + "agents.channels.lastRefresh", + "agents.channels.loadHint", + "agents.channels.noAccounts", + "agents.channels.notConfigured", + "agents.channels.setupGuide", + "agents.channels.subtitle", + "agents.channels.title", + "agents.context.configurationSubtitle", + "agents.context.default", + "agents.context.identityAvatar", + "agents.context.identityName", + "agents.context.openFilesTab", + "agents.context.primaryModel", + "agents.context.runtime", + "agents.context.schedulingSubtitle", + "agents.context.skillsFilter", + "agents.context.title", + "agents.context.workspace", + "agents.copyId", + "agents.copyIdTitle", + "agents.cronPanel.agentJobsSubtitle", + "agents.cronPanel.agentJobsTitle", + "agents.cronPanel.jobs", + "agents.cronPanel.nextWake", + "agents.cronPanel.noJobs", + "agents.cronPanel.runNow", + "agents.cronPanel.schedulerSubtitle", + "agents.cronPanel.schedulerTitle", + "agents.default", + "agents.files.closePreview", + "agents.files.collapsePreview", + "agents.files.content", + "agents.files.coreFilesSubtitle", + "agents.files.coreFilesTitle", + "agents.files.editFile", + "agents.files.empty", + "agents.files.emptyDraft", + "agents.files.expandPreview", + "agents.files.extensionPreview", + "agents.files.lines", + "agents.files.liveDraftPreview", + "agents.files.loadHint", + "agents.files.markdownPreview", + "agents.files.minRead", + "agents.files.missing", + "agents.files.missingHint", + "agents.files.notCreatedYet", + "agents.files.preview", + "agents.files.previewMarkdownTitle", + "agents.files.savedPreview", + "agents.files.selectFile", + "agents.files.updated", + "agents.files.updatedUnknown", + "agents.files.willCreateOnSave", + "agents.files.words", + "agents.files.workspace", + "agents.noAgents", + "agents.selectSubtitle", + "agents.selectTitle", + "agents.setDefault", + "agents.setDefaultTitle", + "agents.tabs.channels", + "agents.tabs.cronJobs", + "agents.tabs.files", + "agents.tabs.overview", + "agents.tabs.skills", + "agents.tabs.tools", + "common.never", + "common.reset", + "debug.eventLogSubtitle", + "debug.eventLogTitle", + "debug.health", + "debug.lastHeartbeat", + "debug.manualRpcSubtitle", + "debug.manualRpcTitle", + "debug.method", + "debug.modelsSubtitle", + "debug.modelsTitle", + "debug.noEvents", + "debug.paramsJson", + "debug.security.audit", + "debug.security.critical", + "debug.security.info", + "debug.security.noCriticalIssues", + "debug.security.runPrefix", + "debug.security.runSuffix", + "debug.security.warnings", + "debug.selectMethod", + "debug.snapshotsSubtitle", + "debug.snapshotsTitle", + "debug.status", + "execApproval.allowOnce", + "execApproval.alwaysAllow", + "execApproval.deny", + "execApproval.execApprovalNeeded", + "execApproval.expired", + "execApproval.expiresIn", + "execApproval.labels.agent", + "execApproval.labels.ask", + "execApproval.labels.cwd", + "execApproval.labels.host", + "execApproval.labels.plugin", + "execApproval.labels.resolved", + "execApproval.labels.security", + "execApproval.labels.session", + "execApproval.labels.severity", + "execApproval.pending", + "execApproval.pluginApprovalNeeded" + ], + "generatedAt": "2026-04-29T19:08:32.902Z", "locale": "vi", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "e2d2b3df6a5e614401e887d4c49d24c633ac3435956040c48672ec8b289abdd4", - "totalKeys": 768, + "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", + "totalKeys": 881, "translatedKeys": 768, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/zh-CN.meta.json b/ui/src/i18n/.i18n/zh-CN.meta.json index f4e8af61ca1..f8c2e04b896 100644 --- a/ui/src/i18n/.i18n/zh-CN.meta.json +++ b/ui/src/i18n/.i18n/zh-CN.meta.json @@ -1,11 +1,11 @@ { "fallbackKeys": [], - "generatedAt": "2026-04-29T17:35:12.940Z", + "generatedAt": "2026-04-29T19:08:28.139Z", "locale": "zh-CN", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "e2d2b3df6a5e614401e887d4c49d24c633ac3435956040c48672ec8b289abdd4", - "totalKeys": 768, - "translatedKeys": 768, + "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", + "totalKeys": 881, + "translatedKeys": 881, "workflow": 1 } diff --git a/ui/src/i18n/.i18n/zh-TW.meta.json b/ui/src/i18n/.i18n/zh-TW.meta.json index daa6271f693..fcff10742d8 100644 --- a/ui/src/i18n/.i18n/zh-TW.meta.json +++ b/ui/src/i18n/.i18n/zh-TW.meta.json @@ -1,11 +1,13 @@ { - "fallbackKeys": [], - "generatedAt": "2026-04-29T17:35:07.758Z", + "fallbackKeys": [ + "agents.context.runtime" + ], + "generatedAt": "2026-04-29T19:08:28.498Z", "locale": "zh-TW", "model": "gpt-5.5", "provider": "openai", - "sourceHash": "e2d2b3df6a5e614401e887d4c49d24c633ac3435956040c48672ec8b289abdd4", - "totalKeys": 768, - "translatedKeys": 768, + "sourceHash": "a6a1060fe4eda88e0261e78c7c635df6e579a56cc539595a331da79dc7ca832b", + "totalKeys": 881, + "translatedKeys": 880, "workflow": 1 } diff --git a/ui/src/i18n/locales/ar.ts b/ui/src/i18n/locales/ar.ts index b7ae8e48b95..4cbb84ac056 100644 --- a/ui/src/i18n/locales/ar.ts +++ b/ui/src/i18n/locales/ar.ts @@ -16,6 +16,7 @@ export const ar: TranslationMap = { connected: "متصل", refresh: "تحديث", reload: "إعادة التحميل", + reset: "Reset", probe: "فحص", call: "اتصال", confirm: "تأكيد", @@ -24,6 +25,7 @@ export const ar: TranslationMap = { enabled: "مفعّل", disabled: "معطّل", na: "غير متوفر", + never: "never", configured: "مهيأ", running: "قيد التشغيل", linked: "مرتبط", @@ -137,6 +139,137 @@ export const ar: TranslationMap = { lastInput: "آخر إدخال {time}", reason: "السبب {reason}", }, + agents: { + noAgents: "No agents", + copyId: "Copy ID", + copyIdTitle: "Copy agent ID to clipboard", + default: "Default", + setDefault: "Set Default", + alreadyDefaultTitle: "Already the default agent", + setDefaultTitle: "Set as the default agent", + selectTitle: "Select an agent", + selectSubtitle: "Pick an agent to inspect its workspace and tools.", + tabs: { + overview: "Overview", + files: "Files", + tools: "Tools", + skills: "Skills", + channels: "Channels", + cronJobs: "Cron Jobs", + }, + context: { + title: "Agent Context", + workspace: "Workspace", + openFilesTab: "Open Files tab", + primaryModel: "Primary Model", + runtime: "Runtime", + identityName: "Identity Name", + identityAvatar: "Identity Avatar", + skillsFilter: "Skills Filter", + default: "Default", + configurationSubtitle: "Workspace, identity, and model configuration.", + schedulingSubtitle: "Workspace and scheduling targets.", + }, + channels: { + title: "Channels", + subtitle: "Gateway-wide channel status snapshot.", + lastRefresh: "Last refresh: {time}", + loadHint: "Load channels to see live status.", + empty: "No channels found.", + connectedCount: "{connected}/{total} connected", + noAccounts: "no accounts", + configuredCount: "{count} configured", + notConfigured: "not configured", + enabledCount: "{count} enabled", + setupGuide: "Setup guide", + }, + cronPanel: { + schedulerTitle: "Scheduler", + schedulerSubtitle: "Gateway cron status.", + jobs: "Jobs", + nextWake: "Next wake", + agentJobsTitle: "Agent Cron Jobs", + agentJobsSubtitle: "Scheduled jobs targeting this agent.", + noJobs: "No jobs assigned.", + runNow: "Run Now", + }, + files: { + emptyDraft: "Empty draft", + minRead: "{count} min read", + markdownPreview: "Markdown Preview", + extensionPreview: "{ext} Preview", + preview: "Preview", + expandPreview: "Expand preview", + collapsePreview: "Collapse preview", + editFile: "Edit file", + closePreview: "Close preview", + coreFilesTitle: "Core Files", + coreFilesSubtitle: "Bootstrap persona, identity, and tool guidance.", + workspace: "Workspace", + loadHint: "Load the agent workspace files to edit core instructions.", + empty: "No files found.", + missing: "missing", + selectFile: "Select a file to edit.", + previewMarkdownTitle: "Preview rendered markdown", + willCreateOnSave: "Will Create on Save", + liveDraftPreview: "Live Draft Preview", + savedPreview: "Saved Preview", + updated: "Updated {time}", + notCreatedYet: "Not Created Yet", + updatedUnknown: "Updated Unknown", + missingHint: "This file is missing. Saving will create it in the agent workspace.", + content: "Content", + words: "{count} words", + lines: "lines", + }, + }, + debug: { + snapshotsTitle: "Snapshots", + snapshotsSubtitle: "Status, health, and heartbeat data.", + status: "Status", + health: "Health", + lastHeartbeat: "Last heartbeat", + security: { + audit: "Security audit", + critical: "{count} critical", + warnings: "{count} warnings", + noCriticalIssues: "No critical issues", + info: "{count} info", + runPrefix: "Run", + runSuffix: "for details.", + }, + manualRpcTitle: "Manual RPC", + manualRpcSubtitle: "Send a raw gateway method with JSON params.", + method: "Method", + selectMethod: "Select a method…", + paramsJson: "Params (JSON)", + modelsTitle: "Models", + modelsSubtitle: "Catalog from models.list.", + eventLogTitle: "Event Log", + eventLogSubtitle: "Latest gateway events.", + noEvents: "No events yet.", + }, + execApproval: { + expiresIn: "expires in {time}", + expired: "expired", + execApprovalNeeded: "Exec approval needed", + pluginApprovalNeeded: "Plugin approval needed", + pending: "{count} pending", + allowOnce: "Allow once", + alwaysAllow: "Always allow", + deny: "Deny", + labels: { + host: "Host", + agent: "Agent", + session: "Session", + cwd: "CWD", + resolved: "Resolved", + security: "Security", + ask: "Ask", + severity: "Severity", + plugin: "Plugin", + }, + }, agentTools: { connectedSource: "متصل: {id}", connected: "متصل", diff --git a/ui/src/i18n/locales/de.ts b/ui/src/i18n/locales/de.ts index 439cc5da76a..515f2a9c7e9 100644 --- a/ui/src/i18n/locales/de.ts +++ b/ui/src/i18n/locales/de.ts @@ -16,6 +16,7 @@ export const de: TranslationMap = { connected: "Verbunden", refresh: "Aktualisieren", reload: "Neu laden", + reset: "Reset", probe: "Prüfen", call: "Anrufen", confirm: "Bestätigen", @@ -24,6 +25,7 @@ export const de: TranslationMap = { enabled: "Aktiviert", disabled: "Deaktiviert", na: "k. A.", + never: "never", configured: "Konfiguriert", running: "Wird ausgeführt", linked: "Verknüpft", @@ -141,6 +143,137 @@ export const de: TranslationMap = { lastInput: "Letzte Eingabe {time}", reason: "Grund {reason}", }, + agents: { + noAgents: "No agents", + copyId: "Copy ID", + copyIdTitle: "Copy agent ID to clipboard", + default: "Default", + setDefault: "Set Default", + alreadyDefaultTitle: "Already the default agent", + setDefaultTitle: "Set as the default agent", + selectTitle: "Select an agent", + selectSubtitle: "Pick an agent to inspect its workspace and tools.", + tabs: { + overview: "Overview", + files: "Files", + tools: "Tools", + skills: "Skills", + channels: "Channels", + cronJobs: "Cron Jobs", + }, + context: { + title: "Agent Context", + workspace: "Workspace", + openFilesTab: "Open Files tab", + primaryModel: "Primary Model", + runtime: "Runtime", + identityName: "Identity Name", + identityAvatar: "Identity Avatar", + skillsFilter: "Skills Filter", + default: "Default", + configurationSubtitle: "Workspace, identity, and model configuration.", + schedulingSubtitle: "Workspace and scheduling targets.", + }, + channels: { + title: "Channels", + subtitle: "Gateway-wide channel status snapshot.", + lastRefresh: "Last refresh: {time}", + loadHint: "Load channels to see live status.", + empty: "No channels found.", + connectedCount: "{connected}/{total} connected", + noAccounts: "no accounts", + configuredCount: "{count} configured", + notConfigured: "not configured", + enabledCount: "{count} enabled", + setupGuide: "Setup guide", + }, + cronPanel: { + schedulerTitle: "Scheduler", + schedulerSubtitle: "Gateway cron status.", + jobs: "Jobs", + nextWake: "Next wake", + agentJobsTitle: "Agent Cron Jobs", + agentJobsSubtitle: "Scheduled jobs targeting this agent.", + noJobs: "No jobs assigned.", + runNow: "Run Now", + }, + files: { + emptyDraft: "Empty draft", + minRead: "{count} min read", + markdownPreview: "Markdown Preview", + extensionPreview: "{ext} Preview", + preview: "Preview", + expandPreview: "Expand preview", + collapsePreview: "Collapse preview", + editFile: "Edit file", + closePreview: "Close preview", + coreFilesTitle: "Core Files", + coreFilesSubtitle: "Bootstrap persona, identity, and tool guidance.", + workspace: "Workspace", + loadHint: "Load the agent workspace files to edit core instructions.", + empty: "No files found.", + missing: "missing", + selectFile: "Select a file to edit.", + previewMarkdownTitle: "Preview rendered markdown", + willCreateOnSave: "Will Create on Save", + liveDraftPreview: "Live Draft Preview", + savedPreview: "Saved Preview", + updated: "Updated {time}", + notCreatedYet: "Not Created Yet", + updatedUnknown: "Updated Unknown", + missingHint: "This file is missing. Saving will create it in the agent workspace.", + content: "Content", + words: "{count} words", + lines: "lines", + }, + }, + debug: { + snapshotsTitle: "Snapshots", + snapshotsSubtitle: "Status, health, and heartbeat data.", + status: "Status", + health: "Health", + lastHeartbeat: "Last heartbeat", + security: { + audit: "Security audit", + critical: "{count} critical", + warnings: "{count} warnings", + noCriticalIssues: "No critical issues", + info: "{count} info", + runPrefix: "Run", + runSuffix: "for details.", + }, + manualRpcTitle: "Manual RPC", + manualRpcSubtitle: "Send a raw gateway method with JSON params.", + method: "Method", + selectMethod: "Select a method…", + paramsJson: "Params (JSON)", + modelsTitle: "Models", + modelsSubtitle: "Catalog from models.list.", + eventLogTitle: "Event Log", + eventLogSubtitle: "Latest gateway events.", + noEvents: "No events yet.", + }, + execApproval: { + expiresIn: "expires in {time}", + expired: "expired", + execApprovalNeeded: "Exec approval needed", + pluginApprovalNeeded: "Plugin approval needed", + pending: "{count} pending", + allowOnce: "Allow once", + alwaysAllow: "Always allow", + deny: "Deny", + labels: { + host: "Host", + agent: "Agent", + session: "Session", + cwd: "CWD", + resolved: "Resolved", + security: "Security", + ask: "Ask", + severity: "Severity", + plugin: "Plugin", + }, + }, agentTools: { connectedSource: "Verbunden: {id}", connected: "Verbunden", diff --git a/ui/src/i18n/locales/en.ts b/ui/src/i18n/locales/en.ts index d77773a933b..114bd9e50ce 100644 --- a/ui/src/i18n/locales/en.ts +++ b/ui/src/i18n/locales/en.ts @@ -15,6 +15,7 @@ export const en: TranslationMap = { connected: "Connected", refresh: "Refresh", reload: "Reload", + reset: "Reset", probe: "Probe", call: "Call", confirm: "Confirm", @@ -23,6 +24,7 @@ export const en: TranslationMap = { enabled: "Enabled", disabled: "Disabled", na: "n/a", + never: "never", configured: "Configured", running: "Running", linked: "Linked", @@ -136,6 +138,137 @@ export const en: TranslationMap = { lastInput: "Last input {time}", reason: "Reason {reason}", }, + agents: { + noAgents: "No agents", + copyId: "Copy ID", + copyIdTitle: "Copy agent ID to clipboard", + default: "Default", + setDefault: "Set Default", + alreadyDefaultTitle: "Already the default agent", + setDefaultTitle: "Set as the default agent", + selectTitle: "Select an agent", + selectSubtitle: "Pick an agent to inspect its workspace and tools.", + tabs: { + overview: "Overview", + files: "Files", + tools: "Tools", + skills: "Skills", + channels: "Channels", + cronJobs: "Cron Jobs", + }, + context: { + title: "Agent Context", + workspace: "Workspace", + openFilesTab: "Open Files tab", + primaryModel: "Primary Model", + runtime: "Runtime", + identityName: "Identity Name", + identityAvatar: "Identity Avatar", + skillsFilter: "Skills Filter", + default: "Default", + configurationSubtitle: "Workspace, identity, and model configuration.", + schedulingSubtitle: "Workspace and scheduling targets.", + }, + channels: { + title: "Channels", + subtitle: "Gateway-wide channel status snapshot.", + lastRefresh: "Last refresh: {time}", + loadHint: "Load channels to see live status.", + empty: "No channels found.", + connectedCount: "{connected}/{total} connected", + noAccounts: "no accounts", + configuredCount: "{count} configured", + notConfigured: "not configured", + enabledCount: "{count} enabled", + setupGuide: "Setup guide", + }, + cronPanel: { + schedulerTitle: "Scheduler", + schedulerSubtitle: "Gateway cron status.", + jobs: "Jobs", + nextWake: "Next wake", + agentJobsTitle: "Agent Cron Jobs", + agentJobsSubtitle: "Scheduled jobs targeting this agent.", + noJobs: "No jobs assigned.", + runNow: "Run Now", + }, + files: { + emptyDraft: "Empty draft", + minRead: "{count} min read", + markdownPreview: "Markdown Preview", + extensionPreview: "{ext} Preview", + preview: "Preview", + expandPreview: "Expand preview", + collapsePreview: "Collapse preview", + editFile: "Edit file", + closePreview: "Close preview", + coreFilesTitle: "Core Files", + coreFilesSubtitle: "Bootstrap persona, identity, and tool guidance.", + workspace: "Workspace", + loadHint: "Load the agent workspace files to edit core instructions.", + empty: "No files found.", + missing: "missing", + selectFile: "Select a file to edit.", + previewMarkdownTitle: "Preview rendered markdown", + willCreateOnSave: "Will Create on Save", + liveDraftPreview: "Live Draft Preview", + savedPreview: "Saved Preview", + updated: "Updated {time}", + notCreatedYet: "Not Created Yet", + updatedUnknown: "Updated Unknown", + missingHint: "This file is missing. Saving will create it in the agent workspace.", + content: "Content", + words: "{count} words", + lines: "lines", + }, + }, + debug: { + snapshotsTitle: "Snapshots", + snapshotsSubtitle: "Status, health, and heartbeat data.", + status: "Status", + health: "Health", + lastHeartbeat: "Last heartbeat", + security: { + audit: "Security audit", + critical: "{count} critical", + warnings: "{count} warnings", + noCriticalIssues: "No critical issues", + info: "{count} info", + runPrefix: "Run", + runSuffix: "for details.", + }, + manualRpcTitle: "Manual RPC", + manualRpcSubtitle: "Send a raw gateway method with JSON params.", + method: "Method", + selectMethod: "Select a method…", + paramsJson: "Params (JSON)", + modelsTitle: "Models", + modelsSubtitle: "Catalog from models.list.", + eventLogTitle: "Event Log", + eventLogSubtitle: "Latest gateway events.", + noEvents: "No events yet.", + }, + execApproval: { + expiresIn: "expires in {time}", + expired: "expired", + execApprovalNeeded: "Exec approval needed", + pluginApprovalNeeded: "Plugin approval needed", + pending: "{count} pending", + allowOnce: "Allow once", + alwaysAllow: "Always allow", + deny: "Deny", + labels: { + host: "Host", + agent: "Agent", + session: "Session", + cwd: "CWD", + resolved: "Resolved", + security: "Security", + ask: "Ask", + severity: "Severity", + plugin: "Plugin", + }, + }, agentTools: { connectedSource: "Connected: {id}", connected: "Connected", diff --git a/ui/src/i18n/locales/es.ts b/ui/src/i18n/locales/es.ts index fb0c13405b9..dc58e44afc9 100644 --- a/ui/src/i18n/locales/es.ts +++ b/ui/src/i18n/locales/es.ts @@ -16,6 +16,7 @@ export const es: TranslationMap = { connected: "Conectado", refresh: "Actualizar", reload: "Recargar", + reset: "Reset", probe: "Probar", call: "Llamada", confirm: "Confirmar", @@ -24,6 +25,7 @@ export const es: TranslationMap = { enabled: "Habilitado", disabled: "Deshabilitado", na: "n/d", + never: "never", configured: "Configurado", running: "En ejecución", linked: "Vinculado", @@ -138,6 +140,137 @@ export const es: TranslationMap = { lastInput: "Última entrada {time}", reason: "Motivo {reason}", }, + agents: { + noAgents: "No agents", + copyId: "Copy ID", + copyIdTitle: "Copy agent ID to clipboard", + default: "Default", + setDefault: "Set Default", + alreadyDefaultTitle: "Already the default agent", + setDefaultTitle: "Set as the default agent", + selectTitle: "Select an agent", + selectSubtitle: "Pick an agent to inspect its workspace and tools.", + tabs: { + overview: "Overview", + files: "Files", + tools: "Tools", + skills: "Skills", + channels: "Channels", + cronJobs: "Cron Jobs", + }, + context: { + title: "Agent Context", + workspace: "Workspace", + openFilesTab: "Open Files tab", + primaryModel: "Primary Model", + runtime: "Runtime", + identityName: "Identity Name", + identityAvatar: "Identity Avatar", + skillsFilter: "Skills Filter", + default: "Default", + configurationSubtitle: "Workspace, identity, and model configuration.", + schedulingSubtitle: "Workspace and scheduling targets.", + }, + channels: { + title: "Channels", + subtitle: "Gateway-wide channel status snapshot.", + lastRefresh: "Last refresh: {time}", + loadHint: "Load channels to see live status.", + empty: "No channels found.", + connectedCount: "{connected}/{total} connected", + noAccounts: "no accounts", + configuredCount: "{count} configured", + notConfigured: "not configured", + enabledCount: "{count} enabled", + setupGuide: "Setup guide", + }, + cronPanel: { + schedulerTitle: "Scheduler", + schedulerSubtitle: "Gateway cron status.", + jobs: "Jobs", + nextWake: "Next wake", + agentJobsTitle: "Agent Cron Jobs", + agentJobsSubtitle: "Scheduled jobs targeting this agent.", + noJobs: "No jobs assigned.", + runNow: "Run Now", + }, + files: { + emptyDraft: "Empty draft", + minRead: "{count} min read", + markdownPreview: "Markdown Preview", + extensionPreview: "{ext} Preview", + preview: "Preview", + expandPreview: "Expand preview", + collapsePreview: "Collapse preview", + editFile: "Edit file", + closePreview: "Close preview", + coreFilesTitle: "Core Files", + coreFilesSubtitle: "Bootstrap persona, identity, and tool guidance.", + workspace: "Workspace", + loadHint: "Load the agent workspace files to edit core instructions.", + empty: "No files found.", + missing: "missing", + selectFile: "Select a file to edit.", + previewMarkdownTitle: "Preview rendered markdown", + willCreateOnSave: "Will Create on Save", + liveDraftPreview: "Live Draft Preview", + savedPreview: "Saved Preview", + updated: "Updated {time}", + notCreatedYet: "Not Created Yet", + updatedUnknown: "Updated Unknown", + missingHint: "This file is missing. Saving will create it in the agent workspace.", + content: "Content", + words: "{count} words", + lines: "lines", + }, + }, + debug: { + snapshotsTitle: "Snapshots", + snapshotsSubtitle: "Status, health, and heartbeat data.", + status: "Status", + health: "Health", + lastHeartbeat: "Last heartbeat", + security: { + audit: "Security audit", + critical: "{count} critical", + warnings: "{count} warnings", + noCriticalIssues: "No critical issues", + info: "{count} info", + runPrefix: "Run", + runSuffix: "for details.", + }, + manualRpcTitle: "Manual RPC", + manualRpcSubtitle: "Send a raw gateway method with JSON params.", + method: "Method", + selectMethod: "Select a method…", + paramsJson: "Params (JSON)", + modelsTitle: "Models", + modelsSubtitle: "Catalog from models.list.", + eventLogTitle: "Event Log", + eventLogSubtitle: "Latest gateway events.", + noEvents: "No events yet.", + }, + execApproval: { + expiresIn: "expires in {time}", + expired: "expired", + execApprovalNeeded: "Exec approval needed", + pluginApprovalNeeded: "Plugin approval needed", + pending: "{count} pending", + allowOnce: "Allow once", + alwaysAllow: "Always allow", + deny: "Deny", + labels: { + host: "Host", + agent: "Agent", + session: "Session", + cwd: "CWD", + resolved: "Resolved", + security: "Security", + ask: "Ask", + severity: "Severity", + plugin: "Plugin", + }, + }, agentTools: { connectedSource: "Conectado: {id}", connected: "Conectado", diff --git a/ui/src/i18n/locales/fa.ts b/ui/src/i18n/locales/fa.ts index 2c41aff2a19..0329caeaae4 100644 --- a/ui/src/i18n/locales/fa.ts +++ b/ui/src/i18n/locales/fa.ts @@ -16,6 +16,7 @@ export const fa: TranslationMap = { connected: "متصل", refresh: "تازه‌سازی", reload: "بارگذاری مجدد", + reset: "Reset", probe: "بررسی", call: "فراخوانی", confirm: "تأیید", @@ -24,6 +25,7 @@ export const fa: TranslationMap = { enabled: "فعال", disabled: "غیرفعال", na: "n/a", + never: "never", configured: "پیکربندی‌شده", running: "در حال اجرا", linked: "پیوندشده", @@ -139,6 +141,137 @@ export const fa: TranslationMap = { lastInput: "آخرین ورودی {time}", reason: "دلیل {reason}", }, + agents: { + noAgents: "No agents", + copyId: "Copy ID", + copyIdTitle: "Copy agent ID to clipboard", + default: "Default", + setDefault: "Set Default", + alreadyDefaultTitle: "Already the default agent", + setDefaultTitle: "Set as the default agent", + selectTitle: "Select an agent", + selectSubtitle: "Pick an agent to inspect its workspace and tools.", + tabs: { + overview: "Overview", + files: "Files", + tools: "Tools", + skills: "Skills", + channels: "Channels", + cronJobs: "Cron Jobs", + }, + context: { + title: "Agent Context", + workspace: "Workspace", + openFilesTab: "Open Files tab", + primaryModel: "Primary Model", + runtime: "Runtime", + identityName: "Identity Name", + identityAvatar: "Identity Avatar", + skillsFilter: "Skills Filter", + default: "Default", + configurationSubtitle: "Workspace, identity, and model configuration.", + schedulingSubtitle: "Workspace and scheduling targets.", + }, + channels: { + title: "Channels", + subtitle: "Gateway-wide channel status snapshot.", + lastRefresh: "Last refresh: {time}", + loadHint: "Load channels to see live status.", + empty: "No channels found.", + connectedCount: "{connected}/{total} connected", + noAccounts: "no accounts", + configuredCount: "{count} configured", + notConfigured: "not configured", + enabledCount: "{count} enabled", + setupGuide: "Setup guide", + }, + cronPanel: { + schedulerTitle: "Scheduler", + schedulerSubtitle: "Gateway cron status.", + jobs: "Jobs", + nextWake: "Next wake", + agentJobsTitle: "Agent Cron Jobs", + agentJobsSubtitle: "Scheduled jobs targeting this agent.", + noJobs: "No jobs assigned.", + runNow: "Run Now", + }, + files: { + emptyDraft: "Empty draft", + minRead: "{count} min read", + markdownPreview: "Markdown Preview", + extensionPreview: "{ext} Preview", + preview: "Preview", + expandPreview: "Expand preview", + collapsePreview: "Collapse preview", + editFile: "Edit file", + closePreview: "Close preview", + coreFilesTitle: "Core Files", + coreFilesSubtitle: "Bootstrap persona, identity, and tool guidance.", + workspace: "Workspace", + loadHint: "Load the agent workspace files to edit core instructions.", + empty: "No files found.", + missing: "missing", + selectFile: "Select a file to edit.", + previewMarkdownTitle: "Preview rendered markdown", + willCreateOnSave: "Will Create on Save", + liveDraftPreview: "Live Draft Preview", + savedPreview: "Saved Preview", + updated: "Updated {time}", + notCreatedYet: "Not Created Yet", + updatedUnknown: "Updated Unknown", + missingHint: "This file is missing. Saving will create it in the agent workspace.", + content: "Content", + words: "{count} words", + lines: "lines", + }, + }, + debug: { + snapshotsTitle: "Snapshots", + snapshotsSubtitle: "Status, health, and heartbeat data.", + status: "Status", + health: "Health", + lastHeartbeat: "Last heartbeat", + security: { + audit: "Security audit", + critical: "{count} critical", + warnings: "{count} warnings", + noCriticalIssues: "No critical issues", + info: "{count} info", + runPrefix: "Run", + runSuffix: "for details.", + }, + manualRpcTitle: "Manual RPC", + manualRpcSubtitle: "Send a raw gateway method with JSON params.", + method: "Method", + selectMethod: "Select a method…", + paramsJson: "Params (JSON)", + modelsTitle: "Models", + modelsSubtitle: "Catalog from models.list.", + eventLogTitle: "Event Log", + eventLogSubtitle: "Latest gateway events.", + noEvents: "No events yet.", + }, + execApproval: { + expiresIn: "expires in {time}", + expired: "expired", + execApprovalNeeded: "Exec approval needed", + pluginApprovalNeeded: "Plugin approval needed", + pending: "{count} pending", + allowOnce: "Allow once", + alwaysAllow: "Always allow", + deny: "Deny", + labels: { + host: "Host", + agent: "Agent", + session: "Session", + cwd: "CWD", + resolved: "Resolved", + security: "Security", + ask: "Ask", + severity: "Severity", + plugin: "Plugin", + }, + }, agentTools: { connectedSource: "متصل: {id}", connected: "متصل", diff --git a/ui/src/i18n/locales/fr.ts b/ui/src/i18n/locales/fr.ts index d7a89a54d99..4d26a20e6d7 100644 --- a/ui/src/i18n/locales/fr.ts +++ b/ui/src/i18n/locales/fr.ts @@ -16,6 +16,7 @@ export const fr: TranslationMap = { connected: "Connecté", refresh: "Actualiser", reload: "Recharger", + reset: "Reset", probe: "Sonder", call: "Appeler", confirm: "Confirmer", @@ -24,6 +25,7 @@ export const fr: TranslationMap = { enabled: "Activé", disabled: "Désactivé", na: "n/d", + never: "never", configured: "Configuré", running: "En cours d’exécution", linked: "Lié", @@ -140,6 +142,137 @@ export const fr: TranslationMap = { lastInput: "Dernière entrée {time}", reason: "Raison {reason}", }, + agents: { + noAgents: "No agents", + copyId: "Copy ID", + copyIdTitle: "Copy agent ID to clipboard", + default: "Default", + setDefault: "Set Default", + alreadyDefaultTitle: "Already the default agent", + setDefaultTitle: "Set as the default agent", + selectTitle: "Select an agent", + selectSubtitle: "Pick an agent to inspect its workspace and tools.", + tabs: { + overview: "Overview", + files: "Files", + tools: "Tools", + skills: "Skills", + channels: "Channels", + cronJobs: "Cron Jobs", + }, + context: { + title: "Agent Context", + workspace: "Workspace", + openFilesTab: "Open Files tab", + primaryModel: "Primary Model", + runtime: "Runtime", + identityName: "Identity Name", + identityAvatar: "Identity Avatar", + skillsFilter: "Skills Filter", + default: "Default", + configurationSubtitle: "Workspace, identity, and model configuration.", + schedulingSubtitle: "Workspace and scheduling targets.", + }, + channels: { + title: "Channels", + subtitle: "Gateway-wide channel status snapshot.", + lastRefresh: "Last refresh: {time}", + loadHint: "Load channels to see live status.", + empty: "No channels found.", + connectedCount: "{connected}/{total} connected", + noAccounts: "no accounts", + configuredCount: "{count} configured", + notConfigured: "not configured", + enabledCount: "{count} enabled", + setupGuide: "Setup guide", + }, + cronPanel: { + schedulerTitle: "Scheduler", + schedulerSubtitle: "Gateway cron status.", + jobs: "Jobs", + nextWake: "Next wake", + agentJobsTitle: "Agent Cron Jobs", + agentJobsSubtitle: "Scheduled jobs targeting this agent.", + noJobs: "No jobs assigned.", + runNow: "Run Now", + }, + files: { + emptyDraft: "Empty draft", + minRead: "{count} min read", + markdownPreview: "Markdown Preview", + extensionPreview: "{ext} Preview", + preview: "Preview", + expandPreview: "Expand preview", + collapsePreview: "Collapse preview", + editFile: "Edit file", + closePreview: "Close preview", + coreFilesTitle: "Core Files", + coreFilesSubtitle: "Bootstrap persona, identity, and tool guidance.", + workspace: "Workspace", + loadHint: "Load the agent workspace files to edit core instructions.", + empty: "No files found.", + missing: "missing", + selectFile: "Select a file to edit.", + previewMarkdownTitle: "Preview rendered markdown", + willCreateOnSave: "Will Create on Save", + liveDraftPreview: "Live Draft Preview", + savedPreview: "Saved Preview", + updated: "Updated {time}", + notCreatedYet: "Not Created Yet", + updatedUnknown: "Updated Unknown", + missingHint: "This file is missing. Saving will create it in the agent workspace.", + content: "Content", + words: "{count} words", + lines: "lines", + }, + }, + debug: { + snapshotsTitle: "Snapshots", + snapshotsSubtitle: "Status, health, and heartbeat data.", + status: "Status", + health: "Health", + lastHeartbeat: "Last heartbeat", + security: { + audit: "Security audit", + critical: "{count} critical", + warnings: "{count} warnings", + noCriticalIssues: "No critical issues", + info: "{count} info", + runPrefix: "Run", + runSuffix: "for details.", + }, + manualRpcTitle: "Manual RPC", + manualRpcSubtitle: "Send a raw gateway method with JSON params.", + method: "Method", + selectMethod: "Select a method…", + paramsJson: "Params (JSON)", + modelsTitle: "Models", + modelsSubtitle: "Catalog from models.list.", + eventLogTitle: "Event Log", + eventLogSubtitle: "Latest gateway events.", + noEvents: "No events yet.", + }, + execApproval: { + expiresIn: "expires in {time}", + expired: "expired", + execApprovalNeeded: "Exec approval needed", + pluginApprovalNeeded: "Plugin approval needed", + pending: "{count} pending", + allowOnce: "Allow once", + alwaysAllow: "Always allow", + deny: "Deny", + labels: { + host: "Host", + agent: "Agent", + session: "Session", + cwd: "CWD", + resolved: "Resolved", + security: "Security", + ask: "Ask", + severity: "Severity", + plugin: "Plugin", + }, + }, agentTools: { connectedSource: "Connecté : {id}", connected: "Connecté", diff --git a/ui/src/i18n/locales/id.ts b/ui/src/i18n/locales/id.ts index 02baffcc516..3cb6050cb91 100644 --- a/ui/src/i18n/locales/id.ts +++ b/ui/src/i18n/locales/id.ts @@ -16,6 +16,7 @@ export const id: TranslationMap = { connected: "Terhubung", refresh: "Muat ulang", reload: "Muat ulang", + reset: "Reset", probe: "Probe", call: "Panggil", confirm: "Konfirmasi", @@ -24,6 +25,7 @@ export const id: TranslationMap = { enabled: "Diaktifkan", disabled: "Dinonaktifkan", na: "t/a", + never: "never", configured: "Dikonfigurasi", running: "Berjalan", linked: "Ditautkan", @@ -138,6 +140,137 @@ export const id: TranslationMap = { lastInput: "Input terakhir {time}", reason: "Alasan {reason}", }, + agents: { + noAgents: "No agents", + copyId: "Copy ID", + copyIdTitle: "Copy agent ID to clipboard", + default: "Default", + setDefault: "Set Default", + alreadyDefaultTitle: "Already the default agent", + setDefaultTitle: "Set as the default agent", + selectTitle: "Select an agent", + selectSubtitle: "Pick an agent to inspect its workspace and tools.", + tabs: { + overview: "Overview", + files: "Files", + tools: "Tools", + skills: "Skills", + channels: "Channels", + cronJobs: "Cron Jobs", + }, + context: { + title: "Agent Context", + workspace: "Workspace", + openFilesTab: "Open Files tab", + primaryModel: "Primary Model", + runtime: "Runtime", + identityName: "Identity Name", + identityAvatar: "Identity Avatar", + skillsFilter: "Skills Filter", + default: "Default", + configurationSubtitle: "Workspace, identity, and model configuration.", + schedulingSubtitle: "Workspace and scheduling targets.", + }, + channels: { + title: "Channels", + subtitle: "Gateway-wide channel status snapshot.", + lastRefresh: "Last refresh: {time}", + loadHint: "Load channels to see live status.", + empty: "No channels found.", + connectedCount: "{connected}/{total} connected", + noAccounts: "no accounts", + configuredCount: "{count} configured", + notConfigured: "not configured", + enabledCount: "{count} enabled", + setupGuide: "Setup guide", + }, + cronPanel: { + schedulerTitle: "Scheduler", + schedulerSubtitle: "Gateway cron status.", + jobs: "Jobs", + nextWake: "Next wake", + agentJobsTitle: "Agent Cron Jobs", + agentJobsSubtitle: "Scheduled jobs targeting this agent.", + noJobs: "No jobs assigned.", + runNow: "Run Now", + }, + files: { + emptyDraft: "Empty draft", + minRead: "{count} min read", + markdownPreview: "Markdown Preview", + extensionPreview: "{ext} Preview", + preview: "Preview", + expandPreview: "Expand preview", + collapsePreview: "Collapse preview", + editFile: "Edit file", + closePreview: "Close preview", + coreFilesTitle: "Core Files", + coreFilesSubtitle: "Bootstrap persona, identity, and tool guidance.", + workspace: "Workspace", + loadHint: "Load the agent workspace files to edit core instructions.", + empty: "No files found.", + missing: "missing", + selectFile: "Select a file to edit.", + previewMarkdownTitle: "Preview rendered markdown", + willCreateOnSave: "Will Create on Save", + liveDraftPreview: "Live Draft Preview", + savedPreview: "Saved Preview", + updated: "Updated {time}", + notCreatedYet: "Not Created Yet", + updatedUnknown: "Updated Unknown", + missingHint: "This file is missing. Saving will create it in the agent workspace.", + content: "Content", + words: "{count} words", + lines: "lines", + }, + }, + debug: { + snapshotsTitle: "Snapshots", + snapshotsSubtitle: "Status, health, and heartbeat data.", + status: "Status", + health: "Health", + lastHeartbeat: "Last heartbeat", + security: { + audit: "Security audit", + critical: "{count} critical", + warnings: "{count} warnings", + noCriticalIssues: "No critical issues", + info: "{count} info", + runPrefix: "Run", + runSuffix: "for details.", + }, + manualRpcTitle: "Manual RPC", + manualRpcSubtitle: "Send a raw gateway method with JSON params.", + method: "Method", + selectMethod: "Select a method…", + paramsJson: "Params (JSON)", + modelsTitle: "Models", + modelsSubtitle: "Catalog from models.list.", + eventLogTitle: "Event Log", + eventLogSubtitle: "Latest gateway events.", + noEvents: "No events yet.", + }, + execApproval: { + expiresIn: "expires in {time}", + expired: "expired", + execApprovalNeeded: "Exec approval needed", + pluginApprovalNeeded: "Plugin approval needed", + pending: "{count} pending", + allowOnce: "Allow once", + alwaysAllow: "Always allow", + deny: "Deny", + labels: { + host: "Host", + agent: "Agent", + session: "Session", + cwd: "CWD", + resolved: "Resolved", + security: "Security", + ask: "Ask", + severity: "Severity", + plugin: "Plugin", + }, + }, agentTools: { connectedSource: "Terhubung: {id}", connected: "Terhubung", diff --git a/ui/src/i18n/locales/it.ts b/ui/src/i18n/locales/it.ts index fc6398d4e71..c4052abbaf3 100644 --- a/ui/src/i18n/locales/it.ts +++ b/ui/src/i18n/locales/it.ts @@ -16,6 +16,7 @@ export const it: TranslationMap = { connected: "Connesso", refresh: "Aggiorna", reload: "Ricarica", + reset: "Reset", probe: "Sonda", call: "Chiama", confirm: "Conferma", @@ -24,6 +25,7 @@ export const it: TranslationMap = { enabled: "Abilitato", disabled: "Disabilitato", na: "n/d", + never: "never", configured: "Configurato", running: "In esecuzione", linked: "Collegato", @@ -138,6 +140,137 @@ export const it: TranslationMap = { lastInput: "Ultimo input {time}", reason: "Motivo {reason}", }, + agents: { + noAgents: "No agents", + copyId: "Copy ID", + copyIdTitle: "Copy agent ID to clipboard", + default: "Default", + setDefault: "Set Default", + alreadyDefaultTitle: "Already the default agent", + setDefaultTitle: "Set as the default agent", + selectTitle: "Select an agent", + selectSubtitle: "Pick an agent to inspect its workspace and tools.", + tabs: { + overview: "Overview", + files: "Files", + tools: "Tools", + skills: "Skills", + channels: "Channels", + cronJobs: "Cron Jobs", + }, + context: { + title: "Agent Context", + workspace: "Workspace", + openFilesTab: "Open Files tab", + primaryModel: "Primary Model", + runtime: "Runtime", + identityName: "Identity Name", + identityAvatar: "Identity Avatar", + skillsFilter: "Skills Filter", + default: "Default", + configurationSubtitle: "Workspace, identity, and model configuration.", + schedulingSubtitle: "Workspace and scheduling targets.", + }, + channels: { + title: "Channels", + subtitle: "Gateway-wide channel status snapshot.", + lastRefresh: "Last refresh: {time}", + loadHint: "Load channels to see live status.", + empty: "No channels found.", + connectedCount: "{connected}/{total} connected", + noAccounts: "no accounts", + configuredCount: "{count} configured", + notConfigured: "not configured", + enabledCount: "{count} enabled", + setupGuide: "Setup guide", + }, + cronPanel: { + schedulerTitle: "Scheduler", + schedulerSubtitle: "Gateway cron status.", + jobs: "Jobs", + nextWake: "Next wake", + agentJobsTitle: "Agent Cron Jobs", + agentJobsSubtitle: "Scheduled jobs targeting this agent.", + noJobs: "No jobs assigned.", + runNow: "Run Now", + }, + files: { + emptyDraft: "Empty draft", + minRead: "{count} min read", + markdownPreview: "Markdown Preview", + extensionPreview: "{ext} Preview", + preview: "Preview", + expandPreview: "Expand preview", + collapsePreview: "Collapse preview", + editFile: "Edit file", + closePreview: "Close preview", + coreFilesTitle: "Core Files", + coreFilesSubtitle: "Bootstrap persona, identity, and tool guidance.", + workspace: "Workspace", + loadHint: "Load the agent workspace files to edit core instructions.", + empty: "No files found.", + missing: "missing", + selectFile: "Select a file to edit.", + previewMarkdownTitle: "Preview rendered markdown", + willCreateOnSave: "Will Create on Save", + liveDraftPreview: "Live Draft Preview", + savedPreview: "Saved Preview", + updated: "Updated {time}", + notCreatedYet: "Not Created Yet", + updatedUnknown: "Updated Unknown", + missingHint: "This file is missing. Saving will create it in the agent workspace.", + content: "Content", + words: "{count} words", + lines: "lines", + }, + }, + debug: { + snapshotsTitle: "Snapshots", + snapshotsSubtitle: "Status, health, and heartbeat data.", + status: "Status", + health: "Health", + lastHeartbeat: "Last heartbeat", + security: { + audit: "Security audit", + critical: "{count} critical", + warnings: "{count} warnings", + noCriticalIssues: "No critical issues", + info: "{count} info", + runPrefix: "Run", + runSuffix: "for details.", + }, + manualRpcTitle: "Manual RPC", + manualRpcSubtitle: "Send a raw gateway method with JSON params.", + method: "Method", + selectMethod: "Select a method…", + paramsJson: "Params (JSON)", + modelsTitle: "Models", + modelsSubtitle: "Catalog from models.list.", + eventLogTitle: "Event Log", + eventLogSubtitle: "Latest gateway events.", + noEvents: "No events yet.", + }, + execApproval: { + expiresIn: "expires in {time}", + expired: "expired", + execApprovalNeeded: "Exec approval needed", + pluginApprovalNeeded: "Plugin approval needed", + pending: "{count} pending", + allowOnce: "Allow once", + alwaysAllow: "Always allow", + deny: "Deny", + labels: { + host: "Host", + agent: "Agent", + session: "Session", + cwd: "CWD", + resolved: "Resolved", + security: "Security", + ask: "Ask", + severity: "Severity", + plugin: "Plugin", + }, + }, agentTools: { connectedSource: "Connesso: {id}", connected: "Connesso", diff --git a/ui/src/i18n/locales/ja-JP.ts b/ui/src/i18n/locales/ja-JP.ts index f42979fc658..9f2b5014e61 100644 --- a/ui/src/i18n/locales/ja-JP.ts +++ b/ui/src/i18n/locales/ja-JP.ts @@ -16,6 +16,7 @@ export const ja_JP: TranslationMap = { connected: "接続済み", refresh: "更新", reload: "再読み込み", + reset: "Reset", probe: "プローブ", call: "通話", confirm: "確認", @@ -24,6 +25,7 @@ export const ja_JP: TranslationMap = { enabled: "有効", disabled: "無効", na: "n/a", + never: "never", configured: "設定済み", running: "実行中", linked: "リンク済み", @@ -141,6 +143,137 @@ export const ja_JP: TranslationMap = { lastInput: "最後の入力 {time}", reason: "理由 {reason}", }, + agents: { + noAgents: "No agents", + copyId: "Copy ID", + copyIdTitle: "Copy agent ID to clipboard", + default: "Default", + setDefault: "Set Default", + alreadyDefaultTitle: "Already the default agent", + setDefaultTitle: "Set as the default agent", + selectTitle: "Select an agent", + selectSubtitle: "Pick an agent to inspect its workspace and tools.", + tabs: { + overview: "Overview", + files: "Files", + tools: "Tools", + skills: "Skills", + channels: "Channels", + cronJobs: "Cron Jobs", + }, + context: { + title: "Agent Context", + workspace: "Workspace", + openFilesTab: "Open Files tab", + primaryModel: "Primary Model", + runtime: "Runtime", + identityName: "Identity Name", + identityAvatar: "Identity Avatar", + skillsFilter: "Skills Filter", + default: "Default", + configurationSubtitle: "Workspace, identity, and model configuration.", + schedulingSubtitle: "Workspace and scheduling targets.", + }, + channels: { + title: "Channels", + subtitle: "Gateway-wide channel status snapshot.", + lastRefresh: "Last refresh: {time}", + loadHint: "Load channels to see live status.", + empty: "No channels found.", + connectedCount: "{connected}/{total} connected", + noAccounts: "no accounts", + configuredCount: "{count} configured", + notConfigured: "not configured", + enabledCount: "{count} enabled", + setupGuide: "Setup guide", + }, + cronPanel: { + schedulerTitle: "Scheduler", + schedulerSubtitle: "Gateway cron status.", + jobs: "Jobs", + nextWake: "Next wake", + agentJobsTitle: "Agent Cron Jobs", + agentJobsSubtitle: "Scheduled jobs targeting this agent.", + noJobs: "No jobs assigned.", + runNow: "Run Now", + }, + files: { + emptyDraft: "Empty draft", + minRead: "{count} min read", + markdownPreview: "Markdown Preview", + extensionPreview: "{ext} Preview", + preview: "Preview", + expandPreview: "Expand preview", + collapsePreview: "Collapse preview", + editFile: "Edit file", + closePreview: "Close preview", + coreFilesTitle: "Core Files", + coreFilesSubtitle: "Bootstrap persona, identity, and tool guidance.", + workspace: "Workspace", + loadHint: "Load the agent workspace files to edit core instructions.", + empty: "No files found.", + missing: "missing", + selectFile: "Select a file to edit.", + previewMarkdownTitle: "Preview rendered markdown", + willCreateOnSave: "Will Create on Save", + liveDraftPreview: "Live Draft Preview", + savedPreview: "Saved Preview", + updated: "Updated {time}", + notCreatedYet: "Not Created Yet", + updatedUnknown: "Updated Unknown", + missingHint: "This file is missing. Saving will create it in the agent workspace.", + content: "Content", + words: "{count} words", + lines: "lines", + }, + }, + debug: { + snapshotsTitle: "Snapshots", + snapshotsSubtitle: "Status, health, and heartbeat data.", + status: "Status", + health: "Health", + lastHeartbeat: "Last heartbeat", + security: { + audit: "Security audit", + critical: "{count} critical", + warnings: "{count} warnings", + noCriticalIssues: "No critical issues", + info: "{count} info", + runPrefix: "Run", + runSuffix: "for details.", + }, + manualRpcTitle: "Manual RPC", + manualRpcSubtitle: "Send a raw gateway method with JSON params.", + method: "Method", + selectMethod: "Select a method…", + paramsJson: "Params (JSON)", + modelsTitle: "Models", + modelsSubtitle: "Catalog from models.list.", + eventLogTitle: "Event Log", + eventLogSubtitle: "Latest gateway events.", + noEvents: "No events yet.", + }, + execApproval: { + expiresIn: "expires in {time}", + expired: "expired", + execApprovalNeeded: "Exec approval needed", + pluginApprovalNeeded: "Plugin approval needed", + pending: "{count} pending", + allowOnce: "Allow once", + alwaysAllow: "Always allow", + deny: "Deny", + labels: { + host: "Host", + agent: "Agent", + session: "Session", + cwd: "CWD", + resolved: "Resolved", + security: "Security", + ask: "Ask", + severity: "Severity", + plugin: "Plugin", + }, + }, agentTools: { connectedSource: "接続済み: {id}", connected: "接続済み", diff --git a/ui/src/i18n/locales/ko.ts b/ui/src/i18n/locales/ko.ts index 6b37123b41f..a25c02a9c44 100644 --- a/ui/src/i18n/locales/ko.ts +++ b/ui/src/i18n/locales/ko.ts @@ -16,6 +16,7 @@ export const ko: TranslationMap = { connected: "연결됨", refresh: "새로고침", reload: "다시 로드", + reset: "Reset", probe: "프로브", call: "호출", confirm: "확인", @@ -24,6 +25,7 @@ export const ko: TranslationMap = { enabled: "사용", disabled: "사용 안 함", na: "해당 없음", + never: "never", configured: "구성됨", running: "실행 중", linked: "연결됨", @@ -137,6 +139,137 @@ export const ko: TranslationMap = { lastInput: "마지막 입력 {time}", reason: "사유 {reason}", }, + agents: { + noAgents: "No agents", + copyId: "Copy ID", + copyIdTitle: "Copy agent ID to clipboard", + default: "Default", + setDefault: "Set Default", + alreadyDefaultTitle: "Already the default agent", + setDefaultTitle: "Set as the default agent", + selectTitle: "Select an agent", + selectSubtitle: "Pick an agent to inspect its workspace and tools.", + tabs: { + overview: "Overview", + files: "Files", + tools: "Tools", + skills: "Skills", + channels: "Channels", + cronJobs: "Cron Jobs", + }, + context: { + title: "Agent Context", + workspace: "Workspace", + openFilesTab: "Open Files tab", + primaryModel: "Primary Model", + runtime: "Runtime", + identityName: "Identity Name", + identityAvatar: "Identity Avatar", + skillsFilter: "Skills Filter", + default: "Default", + configurationSubtitle: "Workspace, identity, and model configuration.", + schedulingSubtitle: "Workspace and scheduling targets.", + }, + channels: { + title: "Channels", + subtitle: "Gateway-wide channel status snapshot.", + lastRefresh: "Last refresh: {time}", + loadHint: "Load channels to see live status.", + empty: "No channels found.", + connectedCount: "{connected}/{total} connected", + noAccounts: "no accounts", + configuredCount: "{count} configured", + notConfigured: "not configured", + enabledCount: "{count} enabled", + setupGuide: "Setup guide", + }, + cronPanel: { + schedulerTitle: "Scheduler", + schedulerSubtitle: "Gateway cron status.", + jobs: "Jobs", + nextWake: "Next wake", + agentJobsTitle: "Agent Cron Jobs", + agentJobsSubtitle: "Scheduled jobs targeting this agent.", + noJobs: "No jobs assigned.", + runNow: "Run Now", + }, + files: { + emptyDraft: "Empty draft", + minRead: "{count} min read", + markdownPreview: "Markdown Preview", + extensionPreview: "{ext} Preview", + preview: "Preview", + expandPreview: "Expand preview", + collapsePreview: "Collapse preview", + editFile: "Edit file", + closePreview: "Close preview", + coreFilesTitle: "Core Files", + coreFilesSubtitle: "Bootstrap persona, identity, and tool guidance.", + workspace: "Workspace", + loadHint: "Load the agent workspace files to edit core instructions.", + empty: "No files found.", + missing: "missing", + selectFile: "Select a file to edit.", + previewMarkdownTitle: "Preview rendered markdown", + willCreateOnSave: "Will Create on Save", + liveDraftPreview: "Live Draft Preview", + savedPreview: "Saved Preview", + updated: "Updated {time}", + notCreatedYet: "Not Created Yet", + updatedUnknown: "Updated Unknown", + missingHint: "This file is missing. Saving will create it in the agent workspace.", + content: "Content", + words: "{count} words", + lines: "lines", + }, + }, + debug: { + snapshotsTitle: "Snapshots", + snapshotsSubtitle: "Status, health, and heartbeat data.", + status: "Status", + health: "Health", + lastHeartbeat: "Last heartbeat", + security: { + audit: "Security audit", + critical: "{count} critical", + warnings: "{count} warnings", + noCriticalIssues: "No critical issues", + info: "{count} info", + runPrefix: "Run", + runSuffix: "for details.", + }, + manualRpcTitle: "Manual RPC", + manualRpcSubtitle: "Send a raw gateway method with JSON params.", + method: "Method", + selectMethod: "Select a method…", + paramsJson: "Params (JSON)", + modelsTitle: "Models", + modelsSubtitle: "Catalog from models.list.", + eventLogTitle: "Event Log", + eventLogSubtitle: "Latest gateway events.", + noEvents: "No events yet.", + }, + execApproval: { + expiresIn: "expires in {time}", + expired: "expired", + execApprovalNeeded: "Exec approval needed", + pluginApprovalNeeded: "Plugin approval needed", + pending: "{count} pending", + allowOnce: "Allow once", + alwaysAllow: "Always allow", + deny: "Deny", + labels: { + host: "Host", + agent: "Agent", + session: "Session", + cwd: "CWD", + resolved: "Resolved", + security: "Security", + ask: "Ask", + severity: "Severity", + plugin: "Plugin", + }, + }, agentTools: { connectedSource: "연결됨: {id}", connected: "연결됨", diff --git a/ui/src/i18n/locales/nl.ts b/ui/src/i18n/locales/nl.ts index 83118d0c7c4..bfd1ddc12f7 100644 --- a/ui/src/i18n/locales/nl.ts +++ b/ui/src/i18n/locales/nl.ts @@ -16,6 +16,7 @@ export const nl: TranslationMap = { connected: "Verbonden", refresh: "Vernieuwen", reload: "Opnieuw laden", + reset: "Reset", probe: "Testen", call: "Aanroepen", confirm: "Bevestigen", @@ -24,6 +25,7 @@ export const nl: TranslationMap = { enabled: "Ingeschakeld", disabled: "Uitgeschakeld", na: "n.v.t.", + never: "never", configured: "Geconfigureerd", running: "Actief", linked: "Gekoppeld", @@ -140,6 +142,137 @@ export const nl: TranslationMap = { lastInput: "Laatste invoer {time}", reason: "Reden {reason}", }, + agents: { + noAgents: "No agents", + copyId: "Copy ID", + copyIdTitle: "Copy agent ID to clipboard", + default: "Default", + setDefault: "Set Default", + alreadyDefaultTitle: "Already the default agent", + setDefaultTitle: "Set as the default agent", + selectTitle: "Select an agent", + selectSubtitle: "Pick an agent to inspect its workspace and tools.", + tabs: { + overview: "Overview", + files: "Files", + tools: "Tools", + skills: "Skills", + channels: "Channels", + cronJobs: "Cron Jobs", + }, + context: { + title: "Agent Context", + workspace: "Workspace", + openFilesTab: "Open Files tab", + primaryModel: "Primary Model", + runtime: "Runtime", + identityName: "Identity Name", + identityAvatar: "Identity Avatar", + skillsFilter: "Skills Filter", + default: "Default", + configurationSubtitle: "Workspace, identity, and model configuration.", + schedulingSubtitle: "Workspace and scheduling targets.", + }, + channels: { + title: "Channels", + subtitle: "Gateway-wide channel status snapshot.", + lastRefresh: "Last refresh: {time}", + loadHint: "Load channels to see live status.", + empty: "No channels found.", + connectedCount: "{connected}/{total} connected", + noAccounts: "no accounts", + configuredCount: "{count} configured", + notConfigured: "not configured", + enabledCount: "{count} enabled", + setupGuide: "Setup guide", + }, + cronPanel: { + schedulerTitle: "Scheduler", + schedulerSubtitle: "Gateway cron status.", + jobs: "Jobs", + nextWake: "Next wake", + agentJobsTitle: "Agent Cron Jobs", + agentJobsSubtitle: "Scheduled jobs targeting this agent.", + noJobs: "No jobs assigned.", + runNow: "Run Now", + }, + files: { + emptyDraft: "Empty draft", + minRead: "{count} min read", + markdownPreview: "Markdown Preview", + extensionPreview: "{ext} Preview", + preview: "Preview", + expandPreview: "Expand preview", + collapsePreview: "Collapse preview", + editFile: "Edit file", + closePreview: "Close preview", + coreFilesTitle: "Core Files", + coreFilesSubtitle: "Bootstrap persona, identity, and tool guidance.", + workspace: "Workspace", + loadHint: "Load the agent workspace files to edit core instructions.", + empty: "No files found.", + missing: "missing", + selectFile: "Select a file to edit.", + previewMarkdownTitle: "Preview rendered markdown", + willCreateOnSave: "Will Create on Save", + liveDraftPreview: "Live Draft Preview", + savedPreview: "Saved Preview", + updated: "Updated {time}", + notCreatedYet: "Not Created Yet", + updatedUnknown: "Updated Unknown", + missingHint: "This file is missing. Saving will create it in the agent workspace.", + content: "Content", + words: "{count} words", + lines: "lines", + }, + }, + debug: { + snapshotsTitle: "Snapshots", + snapshotsSubtitle: "Status, health, and heartbeat data.", + status: "Status", + health: "Health", + lastHeartbeat: "Last heartbeat", + security: { + audit: "Security audit", + critical: "{count} critical", + warnings: "{count} warnings", + noCriticalIssues: "No critical issues", + info: "{count} info", + runPrefix: "Run", + runSuffix: "for details.", + }, + manualRpcTitle: "Manual RPC", + manualRpcSubtitle: "Send a raw gateway method with JSON params.", + method: "Method", + selectMethod: "Select a method…", + paramsJson: "Params (JSON)", + modelsTitle: "Models", + modelsSubtitle: "Catalog from models.list.", + eventLogTitle: "Event Log", + eventLogSubtitle: "Latest gateway events.", + noEvents: "No events yet.", + }, + execApproval: { + expiresIn: "expires in {time}", + expired: "expired", + execApprovalNeeded: "Exec approval needed", + pluginApprovalNeeded: "Plugin approval needed", + pending: "{count} pending", + allowOnce: "Allow once", + alwaysAllow: "Always allow", + deny: "Deny", + labels: { + host: "Host", + agent: "Agent", + session: "Session", + cwd: "CWD", + resolved: "Resolved", + security: "Security", + ask: "Ask", + severity: "Severity", + plugin: "Plugin", + }, + }, agentTools: { connectedSource: "Verbonden: {id}", connected: "Verbonden", diff --git a/ui/src/i18n/locales/pl.ts b/ui/src/i18n/locales/pl.ts index b5a87a62902..7a49e52874b 100644 --- a/ui/src/i18n/locales/pl.ts +++ b/ui/src/i18n/locales/pl.ts @@ -16,6 +16,7 @@ export const pl: TranslationMap = { connected: "Połączono", refresh: "Odśwież", reload: "Przeładuj", + reset: "Reset", probe: "Sprawdź", call: "Połączenie", confirm: "Potwierdź", @@ -24,6 +25,7 @@ export const pl: TranslationMap = { enabled: "Włączone", disabled: "Wyłączone", na: "n/d", + never: "never", configured: "Skonfigurowano", running: "Uruchomiono", linked: "Połączono", @@ -139,6 +141,137 @@ export const pl: TranslationMap = { lastInput: "Ostatnie wejście {time}", reason: "Powód {reason}", }, + agents: { + noAgents: "No agents", + copyId: "Copy ID", + copyIdTitle: "Copy agent ID to clipboard", + default: "Default", + setDefault: "Set Default", + alreadyDefaultTitle: "Already the default agent", + setDefaultTitle: "Set as the default agent", + selectTitle: "Select an agent", + selectSubtitle: "Pick an agent to inspect its workspace and tools.", + tabs: { + overview: "Overview", + files: "Files", + tools: "Tools", + skills: "Skills", + channels: "Channels", + cronJobs: "Cron Jobs", + }, + context: { + title: "Agent Context", + workspace: "Workspace", + openFilesTab: "Open Files tab", + primaryModel: "Primary Model", + runtime: "Runtime", + identityName: "Identity Name", + identityAvatar: "Identity Avatar", + skillsFilter: "Skills Filter", + default: "Default", + configurationSubtitle: "Workspace, identity, and model configuration.", + schedulingSubtitle: "Workspace and scheduling targets.", + }, + channels: { + title: "Channels", + subtitle: "Gateway-wide channel status snapshot.", + lastRefresh: "Last refresh: {time}", + loadHint: "Load channels to see live status.", + empty: "No channels found.", + connectedCount: "{connected}/{total} connected", + noAccounts: "no accounts", + configuredCount: "{count} configured", + notConfigured: "not configured", + enabledCount: "{count} enabled", + setupGuide: "Setup guide", + }, + cronPanel: { + schedulerTitle: "Scheduler", + schedulerSubtitle: "Gateway cron status.", + jobs: "Jobs", + nextWake: "Next wake", + agentJobsTitle: "Agent Cron Jobs", + agentJobsSubtitle: "Scheduled jobs targeting this agent.", + noJobs: "No jobs assigned.", + runNow: "Run Now", + }, + files: { + emptyDraft: "Empty draft", + minRead: "{count} min read", + markdownPreview: "Markdown Preview", + extensionPreview: "{ext} Preview", + preview: "Preview", + expandPreview: "Expand preview", + collapsePreview: "Collapse preview", + editFile: "Edit file", + closePreview: "Close preview", + coreFilesTitle: "Core Files", + coreFilesSubtitle: "Bootstrap persona, identity, and tool guidance.", + workspace: "Workspace", + loadHint: "Load the agent workspace files to edit core instructions.", + empty: "No files found.", + missing: "missing", + selectFile: "Select a file to edit.", + previewMarkdownTitle: "Preview rendered markdown", + willCreateOnSave: "Will Create on Save", + liveDraftPreview: "Live Draft Preview", + savedPreview: "Saved Preview", + updated: "Updated {time}", + notCreatedYet: "Not Created Yet", + updatedUnknown: "Updated Unknown", + missingHint: "This file is missing. Saving will create it in the agent workspace.", + content: "Content", + words: "{count} words", + lines: "lines", + }, + }, + debug: { + snapshotsTitle: "Snapshots", + snapshotsSubtitle: "Status, health, and heartbeat data.", + status: "Status", + health: "Health", + lastHeartbeat: "Last heartbeat", + security: { + audit: "Security audit", + critical: "{count} critical", + warnings: "{count} warnings", + noCriticalIssues: "No critical issues", + info: "{count} info", + runPrefix: "Run", + runSuffix: "for details.", + }, + manualRpcTitle: "Manual RPC", + manualRpcSubtitle: "Send a raw gateway method with JSON params.", + method: "Method", + selectMethod: "Select a method…", + paramsJson: "Params (JSON)", + modelsTitle: "Models", + modelsSubtitle: "Catalog from models.list.", + eventLogTitle: "Event Log", + eventLogSubtitle: "Latest gateway events.", + noEvents: "No events yet.", + }, + execApproval: { + expiresIn: "expires in {time}", + expired: "expired", + execApprovalNeeded: "Exec approval needed", + pluginApprovalNeeded: "Plugin approval needed", + pending: "{count} pending", + allowOnce: "Allow once", + alwaysAllow: "Always allow", + deny: "Deny", + labels: { + host: "Host", + agent: "Agent", + session: "Session", + cwd: "CWD", + resolved: "Resolved", + security: "Security", + ask: "Ask", + severity: "Severity", + plugin: "Plugin", + }, + }, agentTools: { connectedSource: "Połączono: {id}", connected: "Połączono", diff --git a/ui/src/i18n/locales/pt-BR.ts b/ui/src/i18n/locales/pt-BR.ts index cb6de3423d4..ebfe4d60dce 100644 --- a/ui/src/i18n/locales/pt-BR.ts +++ b/ui/src/i18n/locales/pt-BR.ts @@ -16,6 +16,7 @@ export const pt_BR: TranslationMap = { connected: "Conectado", refresh: "Atualizar", reload: "Recarregar", + reset: "Reset", probe: "Sondar", call: "Ligar", confirm: "Confirmar", @@ -24,6 +25,7 @@ export const pt_BR: TranslationMap = { enabled: "Ativado", disabled: "Desativado", na: "n/d", + never: "never", configured: "Configurado", running: "Em execução", linked: "Vinculado", @@ -138,6 +140,137 @@ export const pt_BR: TranslationMap = { lastInput: "Última entrada {time}", reason: "Motivo {reason}", }, + agents: { + noAgents: "No agents", + copyId: "Copy ID", + copyIdTitle: "Copy agent ID to clipboard", + default: "Default", + setDefault: "Set Default", + alreadyDefaultTitle: "Already the default agent", + setDefaultTitle: "Set as the default agent", + selectTitle: "Select an agent", + selectSubtitle: "Pick an agent to inspect its workspace and tools.", + tabs: { + overview: "Overview", + files: "Files", + tools: "Tools", + skills: "Skills", + channels: "Channels", + cronJobs: "Cron Jobs", + }, + context: { + title: "Agent Context", + workspace: "Workspace", + openFilesTab: "Open Files tab", + primaryModel: "Primary Model", + runtime: "Runtime", + identityName: "Identity Name", + identityAvatar: "Identity Avatar", + skillsFilter: "Skills Filter", + default: "Default", + configurationSubtitle: "Workspace, identity, and model configuration.", + schedulingSubtitle: "Workspace and scheduling targets.", + }, + channels: { + title: "Channels", + subtitle: "Gateway-wide channel status snapshot.", + lastRefresh: "Last refresh: {time}", + loadHint: "Load channels to see live status.", + empty: "No channels found.", + connectedCount: "{connected}/{total} connected", + noAccounts: "no accounts", + configuredCount: "{count} configured", + notConfigured: "not configured", + enabledCount: "{count} enabled", + setupGuide: "Setup guide", + }, + cronPanel: { + schedulerTitle: "Scheduler", + schedulerSubtitle: "Gateway cron status.", + jobs: "Jobs", + nextWake: "Next wake", + agentJobsTitle: "Agent Cron Jobs", + agentJobsSubtitle: "Scheduled jobs targeting this agent.", + noJobs: "No jobs assigned.", + runNow: "Run Now", + }, + files: { + emptyDraft: "Empty draft", + minRead: "{count} min read", + markdownPreview: "Markdown Preview", + extensionPreview: "{ext} Preview", + preview: "Preview", + expandPreview: "Expand preview", + collapsePreview: "Collapse preview", + editFile: "Edit file", + closePreview: "Close preview", + coreFilesTitle: "Core Files", + coreFilesSubtitle: "Bootstrap persona, identity, and tool guidance.", + workspace: "Workspace", + loadHint: "Load the agent workspace files to edit core instructions.", + empty: "No files found.", + missing: "missing", + selectFile: "Select a file to edit.", + previewMarkdownTitle: "Preview rendered markdown", + willCreateOnSave: "Will Create on Save", + liveDraftPreview: "Live Draft Preview", + savedPreview: "Saved Preview", + updated: "Updated {time}", + notCreatedYet: "Not Created Yet", + updatedUnknown: "Updated Unknown", + missingHint: "This file is missing. Saving will create it in the agent workspace.", + content: "Content", + words: "{count} words", + lines: "lines", + }, + }, + debug: { + snapshotsTitle: "Snapshots", + snapshotsSubtitle: "Status, health, and heartbeat data.", + status: "Status", + health: "Health", + lastHeartbeat: "Last heartbeat", + security: { + audit: "Security audit", + critical: "{count} critical", + warnings: "{count} warnings", + noCriticalIssues: "No critical issues", + info: "{count} info", + runPrefix: "Run", + runSuffix: "for details.", + }, + manualRpcTitle: "Manual RPC", + manualRpcSubtitle: "Send a raw gateway method with JSON params.", + method: "Method", + selectMethod: "Select a method…", + paramsJson: "Params (JSON)", + modelsTitle: "Models", + modelsSubtitle: "Catalog from models.list.", + eventLogTitle: "Event Log", + eventLogSubtitle: "Latest gateway events.", + noEvents: "No events yet.", + }, + execApproval: { + expiresIn: "expires in {time}", + expired: "expired", + execApprovalNeeded: "Exec approval needed", + pluginApprovalNeeded: "Plugin approval needed", + pending: "{count} pending", + allowOnce: "Allow once", + alwaysAllow: "Always allow", + deny: "Deny", + labels: { + host: "Host", + agent: "Agent", + session: "Session", + cwd: "CWD", + resolved: "Resolved", + security: "Security", + ask: "Ask", + severity: "Severity", + plugin: "Plugin", + }, + }, agentTools: { connectedSource: "Conectado: {id}", connected: "Conectado", diff --git a/ui/src/i18n/locales/th.ts b/ui/src/i18n/locales/th.ts index 941111d1976..aacaf8f709b 100644 --- a/ui/src/i18n/locales/th.ts +++ b/ui/src/i18n/locales/th.ts @@ -16,6 +16,7 @@ export const th: TranslationMap = { connected: "เชื่อมต่อแล้ว", refresh: "รีเฟรช", reload: "โหลดใหม่", + reset: "Reset", probe: "ตรวจสอบ", call: "โทร", confirm: "ยืนยัน", @@ -24,6 +25,7 @@ export const th: TranslationMap = { enabled: "เปิดใช้งาน", disabled: "ปิดใช้งาน", na: "n/a", + never: "never", configured: "กำหนดค่าแล้ว", running: "กำลังทำงาน", linked: "เชื่อมโยงแล้ว", @@ -136,6 +138,137 @@ export const th: TranslationMap = { lastInput: "อินพุตล่าสุด {time}", reason: "เหตุผล {reason}", }, + agents: { + noAgents: "No agents", + copyId: "Copy ID", + copyIdTitle: "Copy agent ID to clipboard", + default: "Default", + setDefault: "Set Default", + alreadyDefaultTitle: "Already the default agent", + setDefaultTitle: "Set as the default agent", + selectTitle: "Select an agent", + selectSubtitle: "Pick an agent to inspect its workspace and tools.", + tabs: { + overview: "Overview", + files: "Files", + tools: "Tools", + skills: "Skills", + channels: "Channels", + cronJobs: "Cron Jobs", + }, + context: { + title: "Agent Context", + workspace: "Workspace", + openFilesTab: "Open Files tab", + primaryModel: "Primary Model", + runtime: "Runtime", + identityName: "Identity Name", + identityAvatar: "Identity Avatar", + skillsFilter: "Skills Filter", + default: "Default", + configurationSubtitle: "Workspace, identity, and model configuration.", + schedulingSubtitle: "Workspace and scheduling targets.", + }, + channels: { + title: "Channels", + subtitle: "Gateway-wide channel status snapshot.", + lastRefresh: "Last refresh: {time}", + loadHint: "Load channels to see live status.", + empty: "No channels found.", + connectedCount: "{connected}/{total} connected", + noAccounts: "no accounts", + configuredCount: "{count} configured", + notConfigured: "not configured", + enabledCount: "{count} enabled", + setupGuide: "Setup guide", + }, + cronPanel: { + schedulerTitle: "Scheduler", + schedulerSubtitle: "Gateway cron status.", + jobs: "Jobs", + nextWake: "Next wake", + agentJobsTitle: "Agent Cron Jobs", + agentJobsSubtitle: "Scheduled jobs targeting this agent.", + noJobs: "No jobs assigned.", + runNow: "Run Now", + }, + files: { + emptyDraft: "Empty draft", + minRead: "{count} min read", + markdownPreview: "Markdown Preview", + extensionPreview: "{ext} Preview", + preview: "Preview", + expandPreview: "Expand preview", + collapsePreview: "Collapse preview", + editFile: "Edit file", + closePreview: "Close preview", + coreFilesTitle: "Core Files", + coreFilesSubtitle: "Bootstrap persona, identity, and tool guidance.", + workspace: "Workspace", + loadHint: "Load the agent workspace files to edit core instructions.", + empty: "No files found.", + missing: "missing", + selectFile: "Select a file to edit.", + previewMarkdownTitle: "Preview rendered markdown", + willCreateOnSave: "Will Create on Save", + liveDraftPreview: "Live Draft Preview", + savedPreview: "Saved Preview", + updated: "Updated {time}", + notCreatedYet: "Not Created Yet", + updatedUnknown: "Updated Unknown", + missingHint: "This file is missing. Saving will create it in the agent workspace.", + content: "Content", + words: "{count} words", + lines: "lines", + }, + }, + debug: { + snapshotsTitle: "Snapshots", + snapshotsSubtitle: "Status, health, and heartbeat data.", + status: "Status", + health: "Health", + lastHeartbeat: "Last heartbeat", + security: { + audit: "Security audit", + critical: "{count} critical", + warnings: "{count} warnings", + noCriticalIssues: "No critical issues", + info: "{count} info", + runPrefix: "Run", + runSuffix: "for details.", + }, + manualRpcTitle: "Manual RPC", + manualRpcSubtitle: "Send a raw gateway method with JSON params.", + method: "Method", + selectMethod: "Select a method…", + paramsJson: "Params (JSON)", + modelsTitle: "Models", + modelsSubtitle: "Catalog from models.list.", + eventLogTitle: "Event Log", + eventLogSubtitle: "Latest gateway events.", + noEvents: "No events yet.", + }, + execApproval: { + expiresIn: "expires in {time}", + expired: "expired", + execApprovalNeeded: "Exec approval needed", + pluginApprovalNeeded: "Plugin approval needed", + pending: "{count} pending", + allowOnce: "Allow once", + alwaysAllow: "Always allow", + deny: "Deny", + labels: { + host: "Host", + agent: "Agent", + session: "Session", + cwd: "CWD", + resolved: "Resolved", + security: "Security", + ask: "Ask", + severity: "Severity", + plugin: "Plugin", + }, + }, agentTools: { connectedSource: "เชื่อมต่อแล้ว: {id}", connected: "เชื่อมต่อแล้ว", diff --git a/ui/src/i18n/locales/tr.ts b/ui/src/i18n/locales/tr.ts index 4b30224672b..0951a56d31e 100644 --- a/ui/src/i18n/locales/tr.ts +++ b/ui/src/i18n/locales/tr.ts @@ -16,6 +16,7 @@ export const tr: TranslationMap = { connected: "Bağlandı", refresh: "Yenile", reload: "Yeniden yükle", + reset: "Reset", probe: "Sına", call: "Ara", confirm: "Onayla", @@ -24,6 +25,7 @@ export const tr: TranslationMap = { enabled: "Etkin", disabled: "Devre dışı", na: "yok", + never: "never", configured: "Yapılandırıldı", running: "Çalışıyor", linked: "Bağlandı", @@ -140,6 +142,137 @@ export const tr: TranslationMap = { lastInput: "Son giriş {time}", reason: "Neden {reason}", }, + agents: { + noAgents: "No agents", + copyId: "Copy ID", + copyIdTitle: "Copy agent ID to clipboard", + default: "Default", + setDefault: "Set Default", + alreadyDefaultTitle: "Already the default agent", + setDefaultTitle: "Set as the default agent", + selectTitle: "Select an agent", + selectSubtitle: "Pick an agent to inspect its workspace and tools.", + tabs: { + overview: "Overview", + files: "Files", + tools: "Tools", + skills: "Skills", + channels: "Channels", + cronJobs: "Cron Jobs", + }, + context: { + title: "Agent Context", + workspace: "Workspace", + openFilesTab: "Open Files tab", + primaryModel: "Primary Model", + runtime: "Runtime", + identityName: "Identity Name", + identityAvatar: "Identity Avatar", + skillsFilter: "Skills Filter", + default: "Default", + configurationSubtitle: "Workspace, identity, and model configuration.", + schedulingSubtitle: "Workspace and scheduling targets.", + }, + channels: { + title: "Channels", + subtitle: "Gateway-wide channel status snapshot.", + lastRefresh: "Last refresh: {time}", + loadHint: "Load channels to see live status.", + empty: "No channels found.", + connectedCount: "{connected}/{total} connected", + noAccounts: "no accounts", + configuredCount: "{count} configured", + notConfigured: "not configured", + enabledCount: "{count} enabled", + setupGuide: "Setup guide", + }, + cronPanel: { + schedulerTitle: "Scheduler", + schedulerSubtitle: "Gateway cron status.", + jobs: "Jobs", + nextWake: "Next wake", + agentJobsTitle: "Agent Cron Jobs", + agentJobsSubtitle: "Scheduled jobs targeting this agent.", + noJobs: "No jobs assigned.", + runNow: "Run Now", + }, + files: { + emptyDraft: "Empty draft", + minRead: "{count} min read", + markdownPreview: "Markdown Preview", + extensionPreview: "{ext} Preview", + preview: "Preview", + expandPreview: "Expand preview", + collapsePreview: "Collapse preview", + editFile: "Edit file", + closePreview: "Close preview", + coreFilesTitle: "Core Files", + coreFilesSubtitle: "Bootstrap persona, identity, and tool guidance.", + workspace: "Workspace", + loadHint: "Load the agent workspace files to edit core instructions.", + empty: "No files found.", + missing: "missing", + selectFile: "Select a file to edit.", + previewMarkdownTitle: "Preview rendered markdown", + willCreateOnSave: "Will Create on Save", + liveDraftPreview: "Live Draft Preview", + savedPreview: "Saved Preview", + updated: "Updated {time}", + notCreatedYet: "Not Created Yet", + updatedUnknown: "Updated Unknown", + missingHint: "This file is missing. Saving will create it in the agent workspace.", + content: "Content", + words: "{count} words", + lines: "lines", + }, + }, + debug: { + snapshotsTitle: "Snapshots", + snapshotsSubtitle: "Status, health, and heartbeat data.", + status: "Status", + health: "Health", + lastHeartbeat: "Last heartbeat", + security: { + audit: "Security audit", + critical: "{count} critical", + warnings: "{count} warnings", + noCriticalIssues: "No critical issues", + info: "{count} info", + runPrefix: "Run", + runSuffix: "for details.", + }, + manualRpcTitle: "Manual RPC", + manualRpcSubtitle: "Send a raw gateway method with JSON params.", + method: "Method", + selectMethod: "Select a method…", + paramsJson: "Params (JSON)", + modelsTitle: "Models", + modelsSubtitle: "Catalog from models.list.", + eventLogTitle: "Event Log", + eventLogSubtitle: "Latest gateway events.", + noEvents: "No events yet.", + }, + execApproval: { + expiresIn: "expires in {time}", + expired: "expired", + execApprovalNeeded: "Exec approval needed", + pluginApprovalNeeded: "Plugin approval needed", + pending: "{count} pending", + allowOnce: "Allow once", + alwaysAllow: "Always allow", + deny: "Deny", + labels: { + host: "Host", + agent: "Agent", + session: "Session", + cwd: "CWD", + resolved: "Resolved", + security: "Security", + ask: "Ask", + severity: "Severity", + plugin: "Plugin", + }, + }, agentTools: { connectedSource: "Bağlı: {id}", connected: "Bağlı", diff --git a/ui/src/i18n/locales/uk.ts b/ui/src/i18n/locales/uk.ts index 4dd0e77a0c7..50070b22936 100644 --- a/ui/src/i18n/locales/uk.ts +++ b/ui/src/i18n/locales/uk.ts @@ -16,6 +16,7 @@ export const uk: TranslationMap = { connected: "Підключено", refresh: "Оновити", reload: "Перезавантажити", + reset: "Reset", probe: "Перевірити", call: "Виклик", confirm: "Підтвердити", @@ -24,6 +25,7 @@ export const uk: TranslationMap = { enabled: "Увімкнено", disabled: "Вимкнено", na: "н/д", + never: "never", configured: "Налаштовано", running: "Запущено", linked: "Пов’язано", @@ -139,6 +141,137 @@ export const uk: TranslationMap = { lastInput: "Останнє введення {time}", reason: "Причина {reason}", }, + agents: { + noAgents: "No agents", + copyId: "Copy ID", + copyIdTitle: "Copy agent ID to clipboard", + default: "Default", + setDefault: "Set Default", + alreadyDefaultTitle: "Already the default agent", + setDefaultTitle: "Set as the default agent", + selectTitle: "Select an agent", + selectSubtitle: "Pick an agent to inspect its workspace and tools.", + tabs: { + overview: "Overview", + files: "Files", + tools: "Tools", + skills: "Skills", + channels: "Channels", + cronJobs: "Cron Jobs", + }, + context: { + title: "Agent Context", + workspace: "Workspace", + openFilesTab: "Open Files tab", + primaryModel: "Primary Model", + runtime: "Runtime", + identityName: "Identity Name", + identityAvatar: "Identity Avatar", + skillsFilter: "Skills Filter", + default: "Default", + configurationSubtitle: "Workspace, identity, and model configuration.", + schedulingSubtitle: "Workspace and scheduling targets.", + }, + channels: { + title: "Channels", + subtitle: "Gateway-wide channel status snapshot.", + lastRefresh: "Last refresh: {time}", + loadHint: "Load channels to see live status.", + empty: "No channels found.", + connectedCount: "{connected}/{total} connected", + noAccounts: "no accounts", + configuredCount: "{count} configured", + notConfigured: "not configured", + enabledCount: "{count} enabled", + setupGuide: "Setup guide", + }, + cronPanel: { + schedulerTitle: "Scheduler", + schedulerSubtitle: "Gateway cron status.", + jobs: "Jobs", + nextWake: "Next wake", + agentJobsTitle: "Agent Cron Jobs", + agentJobsSubtitle: "Scheduled jobs targeting this agent.", + noJobs: "No jobs assigned.", + runNow: "Run Now", + }, + files: { + emptyDraft: "Empty draft", + minRead: "{count} min read", + markdownPreview: "Markdown Preview", + extensionPreview: "{ext} Preview", + preview: "Preview", + expandPreview: "Expand preview", + collapsePreview: "Collapse preview", + editFile: "Edit file", + closePreview: "Close preview", + coreFilesTitle: "Core Files", + coreFilesSubtitle: "Bootstrap persona, identity, and tool guidance.", + workspace: "Workspace", + loadHint: "Load the agent workspace files to edit core instructions.", + empty: "No files found.", + missing: "missing", + selectFile: "Select a file to edit.", + previewMarkdownTitle: "Preview rendered markdown", + willCreateOnSave: "Will Create on Save", + liveDraftPreview: "Live Draft Preview", + savedPreview: "Saved Preview", + updated: "Updated {time}", + notCreatedYet: "Not Created Yet", + updatedUnknown: "Updated Unknown", + missingHint: "This file is missing. Saving will create it in the agent workspace.", + content: "Content", + words: "{count} words", + lines: "lines", + }, + }, + debug: { + snapshotsTitle: "Snapshots", + snapshotsSubtitle: "Status, health, and heartbeat data.", + status: "Status", + health: "Health", + lastHeartbeat: "Last heartbeat", + security: { + audit: "Security audit", + critical: "{count} critical", + warnings: "{count} warnings", + noCriticalIssues: "No critical issues", + info: "{count} info", + runPrefix: "Run", + runSuffix: "for details.", + }, + manualRpcTitle: "Manual RPC", + manualRpcSubtitle: "Send a raw gateway method with JSON params.", + method: "Method", + selectMethod: "Select a method…", + paramsJson: "Params (JSON)", + modelsTitle: "Models", + modelsSubtitle: "Catalog from models.list.", + eventLogTitle: "Event Log", + eventLogSubtitle: "Latest gateway events.", + noEvents: "No events yet.", + }, + execApproval: { + expiresIn: "expires in {time}", + expired: "expired", + execApprovalNeeded: "Exec approval needed", + pluginApprovalNeeded: "Plugin approval needed", + pending: "{count} pending", + allowOnce: "Allow once", + alwaysAllow: "Always allow", + deny: "Deny", + labels: { + host: "Host", + agent: "Agent", + session: "Session", + cwd: "CWD", + resolved: "Resolved", + security: "Security", + ask: "Ask", + severity: "Severity", + plugin: "Plugin", + }, + }, agentTools: { connectedSource: "Підключено: {id}", connected: "Підключено", diff --git a/ui/src/i18n/locales/vi.ts b/ui/src/i18n/locales/vi.ts index 32666ef5338..d0c59965e82 100644 --- a/ui/src/i18n/locales/vi.ts +++ b/ui/src/i18n/locales/vi.ts @@ -16,6 +16,7 @@ export const vi: TranslationMap = { connected: "Đã kết nối", refresh: "Làm mới", reload: "Tải lại", + reset: "Reset", probe: "Thăm dò", call: "Gọi", confirm: "Xác nhận", @@ -24,6 +25,7 @@ export const vi: TranslationMap = { enabled: "Đã bật", disabled: "Đã tắt", na: "n/a", + never: "never", configured: "Đã cấu hình", running: "Đang chạy", linked: "Đã liên kết", @@ -138,6 +140,137 @@ export const vi: TranslationMap = { lastInput: "Đầu vào gần nhất {time}", reason: "Lý do {reason}", }, + agents: { + noAgents: "No agents", + copyId: "Copy ID", + copyIdTitle: "Copy agent ID to clipboard", + default: "Default", + setDefault: "Set Default", + alreadyDefaultTitle: "Already the default agent", + setDefaultTitle: "Set as the default agent", + selectTitle: "Select an agent", + selectSubtitle: "Pick an agent to inspect its workspace and tools.", + tabs: { + overview: "Overview", + files: "Files", + tools: "Tools", + skills: "Skills", + channels: "Channels", + cronJobs: "Cron Jobs", + }, + context: { + title: "Agent Context", + workspace: "Workspace", + openFilesTab: "Open Files tab", + primaryModel: "Primary Model", + runtime: "Runtime", + identityName: "Identity Name", + identityAvatar: "Identity Avatar", + skillsFilter: "Skills Filter", + default: "Default", + configurationSubtitle: "Workspace, identity, and model configuration.", + schedulingSubtitle: "Workspace and scheduling targets.", + }, + channels: { + title: "Channels", + subtitle: "Gateway-wide channel status snapshot.", + lastRefresh: "Last refresh: {time}", + loadHint: "Load channels to see live status.", + empty: "No channels found.", + connectedCount: "{connected}/{total} connected", + noAccounts: "no accounts", + configuredCount: "{count} configured", + notConfigured: "not configured", + enabledCount: "{count} enabled", + setupGuide: "Setup guide", + }, + cronPanel: { + schedulerTitle: "Scheduler", + schedulerSubtitle: "Gateway cron status.", + jobs: "Jobs", + nextWake: "Next wake", + agentJobsTitle: "Agent Cron Jobs", + agentJobsSubtitle: "Scheduled jobs targeting this agent.", + noJobs: "No jobs assigned.", + runNow: "Run Now", + }, + files: { + emptyDraft: "Empty draft", + minRead: "{count} min read", + markdownPreview: "Markdown Preview", + extensionPreview: "{ext} Preview", + preview: "Preview", + expandPreview: "Expand preview", + collapsePreview: "Collapse preview", + editFile: "Edit file", + closePreview: "Close preview", + coreFilesTitle: "Core Files", + coreFilesSubtitle: "Bootstrap persona, identity, and tool guidance.", + workspace: "Workspace", + loadHint: "Load the agent workspace files to edit core instructions.", + empty: "No files found.", + missing: "missing", + selectFile: "Select a file to edit.", + previewMarkdownTitle: "Preview rendered markdown", + willCreateOnSave: "Will Create on Save", + liveDraftPreview: "Live Draft Preview", + savedPreview: "Saved Preview", + updated: "Updated {time}", + notCreatedYet: "Not Created Yet", + updatedUnknown: "Updated Unknown", + missingHint: "This file is missing. Saving will create it in the agent workspace.", + content: "Content", + words: "{count} words", + lines: "lines", + }, + }, + debug: { + snapshotsTitle: "Snapshots", + snapshotsSubtitle: "Status, health, and heartbeat data.", + status: "Status", + health: "Health", + lastHeartbeat: "Last heartbeat", + security: { + audit: "Security audit", + critical: "{count} critical", + warnings: "{count} warnings", + noCriticalIssues: "No critical issues", + info: "{count} info", + runPrefix: "Run", + runSuffix: "for details.", + }, + manualRpcTitle: "Manual RPC", + manualRpcSubtitle: "Send a raw gateway method with JSON params.", + method: "Method", + selectMethod: "Select a method…", + paramsJson: "Params (JSON)", + modelsTitle: "Models", + modelsSubtitle: "Catalog from models.list.", + eventLogTitle: "Event Log", + eventLogSubtitle: "Latest gateway events.", + noEvents: "No events yet.", + }, + execApproval: { + expiresIn: "expires in {time}", + expired: "expired", + execApprovalNeeded: "Exec approval needed", + pluginApprovalNeeded: "Plugin approval needed", + pending: "{count} pending", + allowOnce: "Allow once", + alwaysAllow: "Always allow", + deny: "Deny", + labels: { + host: "Host", + agent: "Agent", + session: "Session", + cwd: "CWD", + resolved: "Resolved", + security: "Security", + ask: "Ask", + severity: "Severity", + plugin: "Plugin", + }, + }, agentTools: { connectedSource: "Đã kết nối: {id}", connected: "Đã kết nối", diff --git a/ui/src/i18n/locales/zh-CN.ts b/ui/src/i18n/locales/zh-CN.ts index f082d29b357..2c2645a9183 100644 --- a/ui/src/i18n/locales/zh-CN.ts +++ b/ui/src/i18n/locales/zh-CN.ts @@ -16,6 +16,7 @@ export const zh_CN: TranslationMap = { connected: "已连接", refresh: "刷新", reload: "重新加载", + reset: "重置", probe: "探测", call: "调用", confirm: "确认", @@ -24,6 +25,7 @@ export const zh_CN: TranslationMap = { enabled: "已启用", disabled: "已禁用", na: "不适用", + never: "从未", configured: "已配置", running: "运行中", linked: "已关联", @@ -136,6 +138,137 @@ export const zh_CN: TranslationMap = { lastInput: "上次输入 {time}", reason: "原因 {reason}", }, + agents: { + noAgents: "无代理", + copyId: "复制 ID", + copyIdTitle: "将代理 ID 复制到剪贴板", + default: "默认", + setDefault: "设为默认", + alreadyDefaultTitle: "已是默认代理", + setDefaultTitle: "设为默认代理", + selectTitle: "选择代理", + selectSubtitle: "选择代理以查看其工作区和工具。", + tabs: { + overview: "概览", + files: "文件", + tools: "工具", + skills: "技能", + channels: "频道", + cronJobs: "Cron Jobs", + }, + context: { + title: "代理上下文", + workspace: "工作区", + openFilesTab: "打开文件标签", + primaryModel: "主模型", + runtime: "运行时", + identityName: "身份名称", + identityAvatar: "身份头像", + skillsFilter: "技能筛选器", + default: "默认", + configurationSubtitle: "工作区、身份和模型配置。", + schedulingSubtitle: "工作区和调度目标。", + }, + channels: { + title: "频道", + subtitle: "Gateway 全局频道状态快照。", + lastRefresh: "上次刷新:{time}", + loadHint: "加载频道以查看实时状态。", + empty: "未找到频道。", + connectedCount: "{connected}/{total} 已连接", + noAccounts: "无账户", + configuredCount: "已配置 {count} 个", + notConfigured: "未配置", + enabledCount: "已启用 {count} 个", + setupGuide: "设置指南", + }, + cronPanel: { + schedulerTitle: "调度器", + schedulerSubtitle: "Gateway 定时任务状态。", + jobs: "任务", + nextWake: "下次唤醒", + agentJobsTitle: "代理定时任务", + agentJobsSubtitle: "面向此代理的计划任务。", + noJobs: "未分配任务。", + runNow: "立即运行", + }, + files: { + emptyDraft: "空草稿", + minRead: "{count} 分钟阅读", + markdownPreview: "Markdown 预览", + extensionPreview: "{ext} 预览", + preview: "预览", + expandPreview: "展开预览", + collapsePreview: "收起预览", + editFile: "编辑文件", + closePreview: "关闭预览", + coreFilesTitle: "核心文件", + coreFilesSubtitle: "引导人格、身份和工具指引。", + workspace: "工作区", + loadHint: "加载代理工作区文件以编辑核心指令。", + empty: "未找到文件。", + missing: "缺失", + selectFile: "选择要编辑的文件。", + previewMarkdownTitle: "预览渲染后的 Markdown", + willCreateOnSave: "保存时将创建", + liveDraftPreview: "实时草稿预览", + savedPreview: "已保存预览", + updated: "更新于 {time}", + notCreatedYet: "尚未创建", + updatedUnknown: "更新时间未知", + missingHint: "此文件缺失。保存后将在代理工作区中创建它。", + content: "内容", + words: "{count} 个词", + lines: "行", + }, + }, + debug: { + snapshotsTitle: "快照", + snapshotsSubtitle: "状态、健康状况和心跳数据。", + status: "状态", + health: "健康状况", + lastHeartbeat: "上次心跳", + security: { + audit: "安全审计", + critical: "{count} 个严重问题", + warnings: "{count} 个警告", + noCriticalIssues: "无严重问题", + info: "{count} 条信息", + runPrefix: "运行", + runSuffix: "查看详情。", + }, + manualRpcTitle: "手动 RPC", + manualRpcSubtitle: "发送带 JSON 参数的原始 Gateway 方法。", + method: "方法", + selectMethod: "选择方法…", + paramsJson: "参数 (JSON)", + modelsTitle: "模型", + modelsSubtitle: "来自 models.list 的目录。", + eventLogTitle: "事件日志", + eventLogSubtitle: "最新 Gateway 事件。", + noEvents: "暂无事件。", + }, + execApproval: { + expiresIn: "{time} 后过期", + expired: "已过期", + execApprovalNeeded: "需要 Exec 审批", + pluginApprovalNeeded: "需要插件审批", + pending: "{count} 个待处理", + allowOnce: "允许一次", + alwaysAllow: "始终允许", + deny: "拒绝", + labels: { + host: "主机", + agent: "代理", + session: "会话", + cwd: "CWD", + resolved: "已解析", + security: "安全", + ask: "询问策略", + severity: "严重性", + plugin: "插件", + }, + }, agentTools: { connectedSource: "已连接:{id}", connected: "已连接", diff --git a/ui/src/i18n/locales/zh-TW.ts b/ui/src/i18n/locales/zh-TW.ts index 8bac41c2229..f1321da5695 100644 --- a/ui/src/i18n/locales/zh-TW.ts +++ b/ui/src/i18n/locales/zh-TW.ts @@ -16,6 +16,7 @@ export const zh_TW: TranslationMap = { connected: "已連線", refresh: "刷新", reload: "重新載入", + reset: "Reset", probe: "探測", call: "呼叫", confirm: "確認", @@ -24,6 +25,7 @@ export const zh_TW: TranslationMap = { enabled: "已啟用", disabled: "已禁用", na: "不適用", + never: "never", configured: "已設定", running: "執行中", linked: "已連結", @@ -136,6 +138,137 @@ export const zh_TW: TranslationMap = { lastInput: "上次輸入 {time}", reason: "原因 {reason}", }, + agents: { + noAgents: "No agents", + copyId: "Copy ID", + copyIdTitle: "Copy agent ID to clipboard", + default: "Default", + setDefault: "Set Default", + alreadyDefaultTitle: "Already the default agent", + setDefaultTitle: "Set as the default agent", + selectTitle: "Select an agent", + selectSubtitle: "Pick an agent to inspect its workspace and tools.", + tabs: { + overview: "Overview", + files: "Files", + tools: "Tools", + skills: "Skills", + channels: "Channels", + cronJobs: "Cron Jobs", + }, + context: { + title: "Agent Context", + workspace: "Workspace", + openFilesTab: "Open Files tab", + primaryModel: "Primary Model", + runtime: "Runtime", + identityName: "Identity Name", + identityAvatar: "Identity Avatar", + skillsFilter: "Skills Filter", + default: "Default", + configurationSubtitle: "Workspace, identity, and model configuration.", + schedulingSubtitle: "Workspace and scheduling targets.", + }, + channels: { + title: "Channels", + subtitle: "Gateway-wide channel status snapshot.", + lastRefresh: "Last refresh: {time}", + loadHint: "Load channels to see live status.", + empty: "No channels found.", + connectedCount: "{connected}/{total} connected", + noAccounts: "no accounts", + configuredCount: "{count} configured", + notConfigured: "not configured", + enabledCount: "{count} enabled", + setupGuide: "Setup guide", + }, + cronPanel: { + schedulerTitle: "Scheduler", + schedulerSubtitle: "Gateway cron status.", + jobs: "Jobs", + nextWake: "Next wake", + agentJobsTitle: "Agent Cron Jobs", + agentJobsSubtitle: "Scheduled jobs targeting this agent.", + noJobs: "No jobs assigned.", + runNow: "Run Now", + }, + files: { + emptyDraft: "Empty draft", + minRead: "{count} min read", + markdownPreview: "Markdown Preview", + extensionPreview: "{ext} Preview", + preview: "Preview", + expandPreview: "Expand preview", + collapsePreview: "Collapse preview", + editFile: "Edit file", + closePreview: "Close preview", + coreFilesTitle: "Core Files", + coreFilesSubtitle: "Bootstrap persona, identity, and tool guidance.", + workspace: "Workspace", + loadHint: "Load the agent workspace files to edit core instructions.", + empty: "No files found.", + missing: "missing", + selectFile: "Select a file to edit.", + previewMarkdownTitle: "Preview rendered markdown", + willCreateOnSave: "Will Create on Save", + liveDraftPreview: "Live Draft Preview", + savedPreview: "Saved Preview", + updated: "Updated {time}", + notCreatedYet: "Not Created Yet", + updatedUnknown: "Updated Unknown", + missingHint: "This file is missing. Saving will create it in the agent workspace.", + content: "Content", + words: "{count} words", + lines: "lines", + }, + }, + debug: { + snapshotsTitle: "Snapshots", + snapshotsSubtitle: "Status, health, and heartbeat data.", + status: "Status", + health: "Health", + lastHeartbeat: "Last heartbeat", + security: { + audit: "Security audit", + critical: "{count} critical", + warnings: "{count} warnings", + noCriticalIssues: "No critical issues", + info: "{count} info", + runPrefix: "Run", + runSuffix: "for details.", + }, + manualRpcTitle: "Manual RPC", + manualRpcSubtitle: "Send a raw gateway method with JSON params.", + method: "Method", + selectMethod: "Select a method…", + paramsJson: "Params (JSON)", + modelsTitle: "Models", + modelsSubtitle: "Catalog from models.list.", + eventLogTitle: "Event Log", + eventLogSubtitle: "Latest gateway events.", + noEvents: "No events yet.", + }, + execApproval: { + expiresIn: "expires in {time}", + expired: "expired", + execApprovalNeeded: "Exec approval needed", + pluginApprovalNeeded: "Plugin approval needed", + pending: "{count} pending", + allowOnce: "Allow once", + alwaysAllow: "Always allow", + deny: "Deny", + labels: { + host: "Host", + agent: "Agent", + session: "Session", + cwd: "CWD", + resolved: "Resolved", + security: "Security", + ask: "Ask", + severity: "Severity", + plugin: "Plugin", + }, + }, agentTools: { connectedSource: "已連線:{id}", connected: "已連線", diff --git a/ui/src/ui/views/agents-panels-status-files.ts b/ui/src/ui/views/agents-panels-status-files.ts index 4790625a5b7..53f1c858fe8 100644 --- a/ui/src/ui/views/agents-panels-status-files.ts +++ b/ui/src/ui/views/agents-panels-status-files.ts @@ -34,17 +34,19 @@ function countLines(text: string) { function estimateReadingTimeLabel(wordCount: number) { if (wordCount <= 0) { - return "Empty draft"; + return t("agents.files.emptyDraft"); } - return `${Math.max(1, Math.round(wordCount / 220))} min read`; + return t("agents.files.minRead", { count: String(Math.max(1, Math.round(wordCount / 220))) }); } function getExtensionLabel(fileName: string) { const ext = fileName.split(".").pop()?.trim().toLowerCase(); if (ext === "md" || ext === "markdown") { - return "Markdown Preview"; + return t("agents.files.markdownPreview"); } - return ext ? `${ext.toUpperCase()} Preview` : "Preview"; + return ext + ? t("agents.files.extensionPreview", { ext: ext.toUpperCase() }) + : t("agents.files.preview"); } function formatWorkspaceRelativePath(filePath: string, workspace: string | null | undefined) { @@ -78,7 +80,7 @@ function setPreviewExpandButtonState(button: Element | null | undefined, isFulls if (!(button instanceof HTMLElement)) { return; } - const label = isFullscreen ? "Collapse preview" : "Expand preview"; + const label = isFullscreen ? t("agents.files.collapsePreview") : t("agents.files.expandPreview"); button.classList.toggle("is-fullscreen", isFullscreen); button.setAttribute("aria-pressed", String(isFullscreen)); button.setAttribute("aria-label", label); @@ -92,45 +94,45 @@ function renderAgentContextCard( ) { return html`
-
Agent Context
+
${t("agents.context.title")}
${subtitle}
-
Workspace
+
${t("agents.context.workspace")}
-
Primary Model
+
${t("agents.context.primaryModel")}
${context.model}
-
Runtime
+
${t("agents.context.runtime")}
${context.runtime}
-
Identity Name
+
${t("agents.context.identityName")}
${context.identityName}
-
Identity Avatar
+
${t("agents.context.identityAvatar")}
${context.identityAvatar}
-
Skills Filter
+
${t("agents.context.skillsFilter")}
${context.skillsLabel}
-
Default
-
${context.isDefault ? "yes" : "no"}
+
${t("agents.context.default")}
+
${context.isDefault ? t("common.yes") : t("common.no")}
@@ -227,48 +229,55 @@ export function renderAgentChannels(params: { const entries = resolveChannelEntries(params.snapshot); const lastSuccessLabel = params.lastSuccess ? formatRelativeTimestamp(params.lastSuccess) - : "never"; + : t("common.never"); return html`
${renderAgentContextCard( params.context, - "Workspace, identity, and model configuration.", + t("agents.context.configurationSubtitle"), params.onSelectPanel, )}
-
Channels
-
Gateway-wide channel status snapshot.
+
${t("agents.channels.title")}
+
${t("agents.channels.subtitle")}
-
Last refresh: ${lastSuccessLabel}
+
+ ${t("agents.channels.lastRefresh", { time: lastSuccessLabel })} +
${params.error ? html`
${params.error}
` : nothing} ${!params.snapshot ? html`
- Load channels to see live status. + ${t("agents.channels.loadHint")}
` : nothing} ${entries.length === 0 - ? html`
No channels found.
` + ? html`
${t("agents.channels.empty")}
` : html`
${entries.map((entry) => { const summary = summarizeChannelAccounts(entry.accounts); const status = summary.total - ? `${summary.connected}/${summary.total} connected` - : "no accounts"; + ? t("agents.channels.connectedCount", { + connected: String(summary.connected), + total: String(summary.total), + }) + : t("agents.channels.noAccounts"); const configLabel = summary.configured - ? `${summary.configured} configured` - : "not configured"; - const enabled = summary.total ? `${summary.enabled} enabled` : "disabled"; + ? t("agents.channels.configuredCount", { count: String(summary.configured) }) + : t("agents.channels.notConfigured"); + const enabled = summary.total + ? t("agents.channels.enabledCount", { count: String(summary.enabled) }) + : t("common.disabled"); const extras = resolveChannelExtrasFromConfig({ configForm: params.configForm, channelId: entry.id, @@ -292,7 +301,7 @@ export function renderAgentChannels(params: { target="_blank" rel="noopener" style="color: var(--accent); font-size: 12px" - >Setup guide${t("agents.channels.setupGuide")}
` @@ -327,14 +336,14 @@ export function renderAgentCron(params: {
${renderAgentContextCard( params.context, - "Workspace and scheduling targets.", + t("agents.context.schedulingSubtitle"), params.onSelectPanel, )}
-
Scheduler
-
Gateway cron status.
+
${t("agents.cronPanel.schedulerTitle")}
+
${t("agents.cronPanel.schedulerSubtitle")}
-
Jobs
+
${t("agents.cronPanel.jobs")}
${params.status?.jobs ?? t("common.na")}
-
Next wake
+
${t("agents.cronPanel.nextWake")}
${formatNextRun(params.status?.nextWakeAtMs ?? null)}
@@ -366,10 +375,10 @@ export function renderAgentCron(params: {
-
Agent Cron Jobs
-
Scheduled jobs targeting this agent.
+
${t("agents.cronPanel.agentJobsTitle")}
+
${t("agents.cronPanel.agentJobsSubtitle")}
${jobs.length === 0 - ? html`
No jobs assigned.
` + ? html`
${t("agents.cronPanel.noJobs")}
` : html`
${jobs.map( @@ -383,7 +392,7 @@ export function renderAgentCron(params: {
${formatCronSchedule(job)} - ${job.enabled ? "enabled" : "disabled"} + ${job.enabled ? t("common.enabled") : t("common.disabled")} ${job.sessionTarget}
@@ -397,7 +406,7 @@ export function renderAgentCron(params: { ?disabled=${!job.enabled} @click=${() => params.onRunNow(job.id)} > - Run Now + ${t("agents.cronPanel.runNow")}
@@ -444,27 +453,27 @@ export function renderAgentFiles(params: { : ""; const previewTitleId = activeEntry ? `agent-file-preview-title-${toDomId(activeEntry.name)}` : ""; const previewStatusLabel = activeEntry?.missing - ? "Will Create on Save" + ? t("agents.files.willCreateOnSave") : isDirty - ? "Live Draft Preview" - : "Saved Preview"; + ? t("agents.files.liveDraftPreview") + : t("agents.files.savedPreview"); const previewStatusClass = activeEntry?.missing ? "is-missing" : isDirty ? "is-dirty" : "is-synced"; const previewUpdatedLabel = activeEntry?.updatedAtMs - ? `Updated ${formatRelativeTimestamp(activeEntry.updatedAtMs)}` + ? t("agents.files.updated", { time: formatRelativeTimestamp(activeEntry.updatedAtMs) }) : activeEntry?.missing - ? "Not Created Yet" - : "Updated Unknown"; + ? t("agents.files.notCreatedYet") + : t("agents.files.updatedUnknown"); return html`
-
Core Files
-
Bootstrap persona, identity, and tool guidance.
+
${t("agents.files.coreFilesTitle")}
+
${t("agents.files.coreFilesSubtitle")}
`; })}
${!activeEntry - ? html`
Select a file to edit.
` + ? html`
+ ${t("agents.files.selectFile")} +
` : html`
@@ -521,7 +530,7 @@ export function renderAgentFiles(params: {
${activeEntry.missing ? html`
- This file is missing. Saving will create it in the agent workspace. + ${t("agents.files.missingHint")}
` : nothing}