/** * Generated by frontend/src/i18n/extract-i18n.mjs from openai4s/server/webui/app.js. * Do not edit by hand. Re-run: node frontend/src/i18n/extract-i18n.mjs */ const dict: Record = { "cust.general.language": "Language", "cust.general.languageDesc": "Interface display language (saved in this browser)", "cust.general.themeName": "Appearance", "cust.general.themeDesc": "Light / dark / follow system (saved in this browser)", "theme.light": "Light", "theme.dark": "Dark", "theme.system": "System", "theme.toggle": "Toggle theme", "toast.theme": "Theme: {0}", "annot.added": "Annotation added · will be submitted to the agent with your next message", "annot.artifactFallback": "artifact", "annot.attachCount": " {0} image annotations attached", "annot.chip.title": "Click to view pending image annotations (submitted to the agent with your next message)", "annot.comment.plural": " comments", "annot.comment.singular": " comment", "annot.deleted": "Annotation deleted", "annot.discard.title": "Cancel pending comments", "annot.discarded": "Pending comments cancelled", "annot.draft.placeholder": "Add annotation…", "annot.list.head": "Pending annotations · {0}", "annot.noSession": "Please open a session first", "annot.remove.err": "Remove failed: {0}", "annot.save.err": "Annotation save failed: {0}", "annot.save.err404": "Save failed: backend annotation API not loaded, please restart the service (python3 -m openai4s serve)", "annot.status.open": "Pending", "annot.status.pending": "Sending", "annot.status.unknown": "Unknown", "annot.status.resolved": "Resolved", "annot.status.sent": "Sent", "app.title": "OpenAI4S", "art.default.filename": "artifact", "artifact.delete.confirm": "Delete this file? This action cannot be undone.", "artifact.deleted": "Deleted: {0}", "artifact.hidden": "Hidden", "artifact.linkCopied": "Link copied", "artifact.metadataExported": "Metadata JSON exported", "artifact.notEditable": "This file type is not editable", "artifact.priority.err": "Operation failed: {0}", "artifact.rename.prompt": "Rename file", "artifact.renamed": "Renamed", "artifact.save.err": "Save failed: {0}", "artifact.saved": "Saved: {0}", "artifact.starred": "Starred ⭐", "artifact.unstarred": "Unstarred", "btn.remove": "Remove", "code.copied": "Copied", "code.copy.title": "Copy code", "code.lang.text": "text", "common.add": "Add", "common.cancel": "Cancel", "common.close": "Close", "common.delete": "Delete", "common.download": "Download", "common.edit": "Edit", "common.loading": "Loading…", "common.nameRequired": "Please enter a name", "common.retry": "Retry", "common.save": "Save", "common.saving": "Saving…", "common.settings": "Settings", "common.view": "View", "composer.attach": "Upload file", "composer.addToMessage": "Add to message", "composer.sessionOptions": "Session options", "composer.menu.attachFiles": "Attach files", "composer.menu.contextUsage": "Context usage", "composer.menu.requestReview": "Request review", "composer.menu.saveAsSkill": "Save as skill", "composer.menu.yourFiles": "Your files", "composer.option.autoReview": "Auto-review", "composer.option.compute": "Compute", "composer.option.delegation": "Delegation", "composer.option.memory": "Memory", "composer.option.reviewerModel": "Reviewer model", "composer.option.sameModel": "Same as agent", "composer.option.specialist": "Specialist", "composer.model": "Model", "composer.placeholder": "Ask anything — @ for artifacts, # for sessions, / for skills, ⌘K to search…", "composer.placeholderQueue": "A turn is running — sending now queues this behind it…", "queue.accepted": "Queued — it will run after the current turn", "queue.waiting": "{0} queued", "queue.noPreview": "(no text)", "queue.underProfile": "profile {0} · rev {1}", "queue.onBranch": "branch {0}", "queue.cancelOne": "Drop this queued message (the running turn keeps going)", "queue.cancelled": "Queued message dropped", "queue.cancelFailed": "Could not drop the queued message: {0}", "composer.planMode": "Plan mode", "composer.exploreMode": "Explore mode", "composer.voice": "Voice input", "confirm.deleteSession": "Delete this session? This action cannot be undone.", "conv.dockToggle": "Side panel", "conv.jumpLast": "Jump to latest", "conv.jumpLastLabel": "Latest", "conv.loadEarlier": "Load earlier messages", "conv.loadEarlierFailed": "Could not load earlier messages: {0}", "conv.exportTruncated": "(Export stopped at the walk limit; earlier messages are not included.)", "output.binaryElided": "Binary output elided ({0})", "skill.invokeDirective": "Use the \"{0}\" skill: call host.load_skill(\"{0}\") to load its full protocol, then follow it exactly.", "skill.useInChat": "Use in chat", "skill.insertedToast": "Inserted /{0} — press Enter to invoke this skill", "resizer.drag": "Drag to resize", "zoom.in": "Zoom in", "zoom.out": "Zoom out", "zoom.reset": "Fit to window (click % to reset)", "zoom.hint": "⌘/Ctrl+scroll or pinch to zoom · drag to pan · click the image to annotate", "conv.resuming.hint": "This session is still running in the background, resuming…", "conv.title.default": "Session", "conv.title.rename": "Rename session (press Enter to save)", "cust.compute.desc": "Local kernel environments, preinstalled packages and accelerators", "environment.readiness.bannerTitle": "The standard science environment is not ready", "environment.readiness.bannerMissing": "Missing {0} environment(s) and {1} package(s); resolve these before the first science Cell runs.", "environment.readiness.bannerUnavailable": "Science-environment readiness cannot be confirmed; an unknown state is not shown as ready.", "environment.readiness.openCompute": "View gaps and repair command", "environment.readiness.cardTitle": "Standard profile readiness", "environment.readiness.ready": "Ready: the standard Python and R dependencies were checked.", "environment.readiness.needsSetup": "One or more standard environments must be created.", "environment.readiness.needsRepair": "The environments exist, but packages from the standard manifest are missing.", "environment.readiness.unavailable": "The local readiness check could not complete; the UI does not guess that it is ready.", "environment.readiness.missingEnvironments": "Missing environments", "environment.readiness.missingPackages": "Packages missing from {0}", "environment.readiness.remediation": "Managed repair command", "environment.readiness.explicitOnly": "Copy only; you must run it explicitly. Nothing is installed automatically.", "environment.readiness.copy": "Copy command", "environment.readiness.copied": "Repair command copied", "environment.readiness.refresh": "Refresh readiness", "environment.readiness.sendBlocked": "The first science Cell was stopped before startup. Complete the standard environment setup first.", "cust.compute.gpuAvailable": "Available", "cust.compute.gpuName": "GPU", "cust.compute.gpuUnavailable": "Unavailable (no local GPU; heavy models fall back to annotated CPU approximations, or use Modal/SSH remote compute)", "cust.compute.host": "This machine", "cust.compute.hostDetail": "Python {0} · {1} · {2} CPU · {3} GB RAM · {4} GB free", "cust.compute.installBtn": "Install", "cust.compute.installExtraName": "Install additional packages", "cust.compute.installPlaceholder": "e.g. scanpy anndata (space-separated)", "cust.compute.installingBtn": "Installing…", "cust.compute.kernelInstalling": "Preinstalling…", "cust.compute.kernelLabel": "{0} kernel · {1}", "cust.compute.kernelReady": "Ready", "cust.compute.kernelRestarted": " (kernel restarted)", "cust.compute.localName": "Local machine", "cust.compute.remoteName": "Remote GPU (folding)", "cust.compute.remoteDetail": "{0} · {1} · {2} · live via host.fold()", "cust.compute.remoteOnline": "online", "cust.compute.remoteUnreachable": "configured (currently unreachable)", "cust.remote.title": "Remote GPU", "cust.remote.desc": "Use hosts from your ~/.ssh/config as remote compute; services are provisioned on demand and remembered for reuse.", "cust.remote.services": "Services:", "cust.remote.noservices": "no services provisioned yet", "cust.remote.unreachable": "currently unreachable", "cust.remote.addName": "Add remote GPU (from ~/.ssh/config)", "cust.remote.pickAlias": "Pick an SSH host…", "cust.remote.noAlias": "no hosts in ~/.ssh/config", "cust.remote.testing": "Testing…", "cust.remote.added": "Added {0} ({1})", "cust.remote.addedUnreachable": "Added {0}, but currently unreachable", "cust.remote.confirmRemove": "Remove {0} from remote compute?", "common.remove": "Remove", "cust.compute.preinstalledDetail": "{0} scientific/networking packages preinstalled: {1}", "cust.compute.title": "Compute", "cust.connectors.cmdPlaceholder": "Launch command, e.g. npx -y @modelcontextprotocol/server-filesystem .", "cust.connectors.editTitle": "Edit connector — {0}", "cust.connectors.commandLabel": "Launch command (JSON string or string array)", "cust.connectors.argsLabel": "Additional arguments (JSON array)", "cust.connectors.envConfigured": "Configured environment variables: {0}", "cust.connectors.envNone": "No environment variables configured", "cust.connectors.envUpdatesLabel": "Add or replace environment variables", "cust.connectors.envUpdatesPlaceholder": "One NAME=value per line; blank keeps existing values", "cust.connectors.envRemoveLabel": "Remove environment variables", "cust.connectors.envRemovePlaceholder": "One NAME per line; only listed variables are removed", "cust.connectors.invalidJson": "Command or arguments are not valid JSON", "cust.connectors.invalidEnv": "Environment updates must use NAME=value lines", "cust.connectors.saved": "Saved connector {0}", "cust.connectors.customAddName": "Add custom (command-line MCP server)", "cust.connectors.deleteConfirm": "Delete connector {0}?", "cust.connectors.desc": "MCP tool servers: connect external tools, the agent calls them with host.mcp.call(id, tool, args)", "cust.connectors.fromDirectory": "Add from directory", "cust.connectors.namePlaceholder": "Name", "cust.connectors.test": "Test", "cust.connectors.testing": "Testing…", "cust.datapro.title": "Volcengine Ark Professional Dataset DataPro", "cust.datapro.desc": "Save one Agent Plan Key and call dataPro_search directly; an existing Ark API Key is reused automatically.", "cust.datapro.connectorToggle": "Enable / disable the DataPro connector", "cust.datapro.connectorOn": "DataPro connector enabled.", "cust.datapro.connectorOff": "DataPro connector disabled; the agent can no longer reach it.", "cust.datapro.keyLabel": "Agent Plan Key", "cust.datapro.keyPlaceholder": "Enter Agent Plan Key", "cust.datapro.keyPlaceholderSet": "Saved; enter a new key to replace it", "cust.datapro.keyPlaceholderArk": "Using the Ark API Key; enter a new key to replace it", "cust.datapro.keyConfigured": "Credential saved", "cust.datapro.keyArkReused": "Using the Ark API Key", "cust.datapro.keyMissing": "Agent Plan Key is not configured", "cust.datapro.saveKey": "Save credential", "cust.datapro.keyRequired": "Enter an Agent Plan Key", "cust.datapro.keySaved": "Agent Plan Key saved securely", "cust.datapro.queryLabel": "Search the professional dataset", "cust.datapro.queryPlaceholder": "Enter a research question", "cust.datapro.search": "Call professional dataset", "cust.datapro.searching": "Searching…", "cust.datapro.queryRequired": "Enter query text", "cust.datapro.available": "Professional dataset available", "cust.datapro.indexed": "Fully indexed all {0} records returned by this query ({1} content leaf nodes)", "cust.datapro.indexFailed": "Indexing this returned content failed; the professional dataset is not yet available", "cust.datapro.auth4011": "The Key is invalid, quota is insufficient, or the professional dataset Harness is not enabled.", "cust.datapro.unavailable": "Professional dataset unavailable (code {0})", "cust.datapro.requestFailed": "Professional dataset query failed: {0}", "cust.datapro.result": "Query result", "cust.datapro.noResult": "No query has been run yet.", "cust.datapro.enableSkill": "Import/enable volcengine-datapro Skill", "cust.datapro.enablingSkill": "Enabling…", "cust.datapro.skillEnabled": "volcengine-datapro Skill enabled", "cust.datapro.skillEnabledToast": "volcengine-datapro Skill and DataPro connector enabled", "cust.datapro.artifact": "Saved: {0}", "cust.doubao.title": "Doubao Search Custom", "cust.doubao.primary": "Primary", "cust.doubao.desc": "The primary web-search option. It shares one Agent Plan Key with Ark and DataPro, and is marked available only after a real non-empty Doubao response.", "cust.doubao.keyLabel": "Agent Plan Key (one-time authorization)", "cust.doubao.keyPlaceholder": "Enter Agent Plan Key", "cust.doubao.keyPlaceholderSet": "Saved; enter a new key to replace it", "cust.doubao.keyPlaceholderArk": "Using the Ark API Key; enter a new key to replace it", "cust.doubao.keyConfigured": "Credential saved", "cust.doubao.keyArkReused": "Using the Ark API Key", "cust.doubao.keyMissing": "Agent Plan Key is not configured", "cust.doubao.saveKey": "Save credential", "cust.doubao.keyRequired": "Enter an Agent Plan Key", "cust.doubao.keySaved": "Agent Plan Key saved securely for both Doubao Search and DataPro", "cust.doubao.queryLabel": "Query Doubao Search", "cust.doubao.queryPlaceholder": "Enter a web-search query (up to 100 characters)", "cust.doubao.search": "Call Doubao Search", "cust.doubao.searching": "Searching…", "cust.doubao.queryRequired": "Enter query text", "cust.doubao.available": "Doubao Search available", "cust.doubao.empty": "Doubao Search returned no usable result", "cust.doubao.requestFailed": "Doubao Search failed: {0}", "cust.doubao.result": "Search results", "cust.doubao.noResult": "No search has been run yet.", "cust.general.apiKeyConfigured": "✅ Configured", "cust.general.apiKeyMissing": "⚠️ API Key not configured — sending messages will fail", "cust.general.configureBtn": "Configure →", "cust.general.desc": "Global appearance and preferences (saved in this browser)", "cust.general.layout.comfortable": "Comfortable", "cust.general.layout.compact": "Compact", "cust.general.layout.wide": "Wide", "cust.general.layoutDesc": "Adjust the interface's spacing and content width", "cust.general.layoutName": "Layout density", "cust.general.modelKeyName": "Model and API Key", "cust.general.title": "General", "cust.load.timeout": "Settings took too long to load. Check the local service and retry.", "cust.importing": "Importing…", "cust.jobs.cmdPlaceholder": "bash: e.g. \"for i in 1 2 3; do echo $i; sleep 1; done\"; python: a script", "cust.jobs.desc": "Run long commands/scripts as background jobs; view output and cancel", "cust.jobs.dropped": "· {0} bytes dropped", "cust.jobs.empty": "No jobs yet.", "cust.jobs.runBtn": "Run", "cust.jobs.submitName": "Submit job", "cust.jobs.title": "Compute Jobs", "cust.jobs.viewOutput": "Output", "cust.memory.addName": "Add memory", "cust.memory.categories": "Categories", "cust.memory.contentPlaceholder": "e.g. User prefers Python, focuses on extremophile phylogenetics…", "cust.memory.desc": "Cross-session long-term memory (once enabled, automatically injected into future sessions' context)", "cust.memory.disabledDesc": "Not enabled", "cust.memory.empty": "No memories yet. Once added, they are injected into each session when enabled.", "cust.memory.enableName": "Enable memory", "cust.memory.enabledDesc": "Enabled — saved memories are injected into every session", "cust.memory.injectedCounts": "{0} injected · {1} omitted · {2} inherited from global · {3} hidden by this project's own blocks", "cust.memory.injectedInto": "Injected into {0}", "cust.memory.scope.global": "Global (all projects)", "cust.memory.scopeName": "Scope", "cust.memory.title": "Memory", "cust.models.activePill": "Active", "cust.models.addBtn": "Add", "cust.models.addHeading": "Add model / API", "cust.models.available": "Available models", "cust.models.baseUrl.placeholder": "Base URL (leave blank to use the protocol default)", "cust.models.baseUrlPlaceholder": "Base URL (leave blank for the protocol default)", "cust.models.cancelEdit": "Cancel edit", "cust.models.configuredHeading": "Configured models / APIs", "cust.models.editHeading": "Edit: {0}", "cust.models.empty2": "No models configured yet. Add one with the form above.", "cust.models.hasKey": "🔑 Key configured", "cust.models.reachable": "the endpoint answered a minimal request", "cust.models.test": "Test", "cust.models.testing": "contacting the endpoint…", "cust.models.unreachable": "could not reach the endpoint", "cust.models.key.configured": "✅ API Key configured", "cust.models.key.missing": "⚠️ API Key not configured yet — sending messages will fail", "cust.models.key.placeholder.set": "API Key (already configured, leave blank to keep unchanged)", "cust.models.key.placeholder.unset": "API Key (not configured yet, please fill in)", "cust.models.keyPlaceholderSet": "API Key (configured; leave blank to keep)", "cust.models.keyPlaceholderUnset": "API Key (not configured; enter one)", "cust.models.label.apiKey": "API Key", "cust.models.label.baseUrl": "Base URL", "cust.models.label.defaultModel": "Default model", "cust.models.label.provider": "Compatible protocol", "cust.models.label.protocol": "Compatible protocol", "cust.models.model.placeholder": "Model id (leave blank to use the protocol default)", "cust.models.modelPlaceholder2": "Model id (leave blank for the protocol default)", "cust.models.namePlaceholder": "Name (e.g. DeepSeek Prod / Local vLLM)", "cust.models.local.title": "Local inference servers", "cust.models.local.desc": "Press the button below to scan fixed loopback ports for Ollama, LM Studio, vLLM, and llama.cpp. Scanning never changes the active model; unknown capabilities default to conservative Code-as-Action.", "cust.models.local.scan": "Scan this machine", "cust.models.local.idle": "Not scanned yet. Press the button above to look for Ollama, LM Studio, vLLM, and llama.cpp on this machine.", "cust.models.local.scanning": "Scanning this machine…", "cust.models.local.none": "No local OpenAI-compatible endpoint was detected.", "cust.models.local.models": "{0} models", "cust.models.local.add": "Add profile", "cust.models.local.configured": "Configured", "cust.models.local.added": "Added local model: {0}", "cust.models.local.error": "Local model discovery failed: {0}", "cust.models.local.keyless": "local · no API key required", "cust.models.noKey": "⚠️ No key", "cust.models.protocol.openai": "OpenAI-compatible protocol", "cust.models.protocol.anthropic": "Anthropic-compatible protocol", "cust.models.protocol.ark": "Ark-compatible protocol", "cust.models.protocol.gemini": "Gemini-compatible protocol", "cust.models.protocol.openaiResponses": "OpenAI Responses protocol", "cust.search.name": "Backup search API key (Tavily)", "cust.search.desc": "Tavily is the backup search option at the fixed api.tavily.com endpoint. The dedicated Doubao test never falls back to it.", "cust.search.set": "Configured", "cust.search.unset": "Not configured", "cust.search.ph": "Enter Tavily API key", "cust.search.saved": "Search key saved", "art.uploaded": "UPLOADED", "art.generated": "GENERATED", "cust.models.save": "Save and apply", "cust.models.setActive": "Set active", "cust.models.setDefault": "Set as default", "cust.models.subtitle": "Configure the LLM-compatible protocol, Base URL, model, and API Key (takes effect immediately after saving)", "cust.models.subtitle2": "Configure multiple LLM APIs (compatible protocol / Base URL / model / key); add, switch, or remove anytime to work with different endpoints", "cust.models.updateBtn": "Update", "cust.volc.title": "Volcengine Ark", "cust.volc.notInstalled": "Ark Connector is not installed", "cust.volc.getConnector": "Get Ark Connector", "cust.volc.disconnected": "Not connected", "cust.volc.expired": "Login expired", "cust.volc.connect": "Continue with Volcengine", "cust.volc.loginPrep": "Clicking sign-in opens official Volcengine authorization in your browser. After authorization, copy the complete authorization string shown there (do not copy only the inner code), then paste it back here; OpenAI4S will not open a system terminal.", "cust.volc.reconnectPrep": "Clicking sign-in again opens official Volcengine authorization in your browser. After authorization, copy the complete authorization string shown there (do not copy only the inner code), then paste it back here; the existing Project is normally reused.", "cust.volc.connecting": "Submitting authorization and checking the account…", "cust.volc.authTitle": "Volcengine authorization is ready", "cust.volc.authBody": "The authorization page opens in a new browser tab. Finish Volcengine sign-in, then copy the complete authorization string shown there (usually Base64 text containing code and state) and paste it here; do not copy only the inner code. If you do not see a new page, use the button below to open it again.", "cust.volc.projectHint": "The Project controls which Volcengine resources OpenAI4S can access. Existing profiles are reused; Ark CLI asks once when a first login has multiple Projects.", "cust.volc.cancel": "Cancel", "cust.volc.failed": "Connection failed. Try again.", "cust.volc.projectRequiredTitle": "Account authorized; Project setup remains", "cust.volc.projectRequiredBody": "Authorization is complete, but this Ark CLI still needs Project setup. Run arkcli auth login volc-sso locally, then return here and recheck.", "cust.volc.cliSetupTitle": "One Ark CLI setup step is required", "cust.volc.cliSetupBody": "Run arkcli auth login volc-sso in a local terminal, finish authorization and Project setup, then recheck here.", "cust.volc.retrySetup": "Start sign-in again", "cust.volc.openAuth": "Open authorization page", "cust.volc.codePlaceholder": "Full authorization string", "cust.volc.complete": "Complete login", "cust.volc.connected": "Connected", "cust.volc.project": "Project: {0}", "cust.volc.connectedNoAccessTitle": "Volcengine is connected, but model access is not ready", "cust.volc.noPlanBody": "This account has no Agent Plan, Coding Plan, or usable API key. Buy a plan or create a platform API key; OpenAI4S checks automatically after creation.", "cust.volc.keyMissingTitle": "Account connected; the plan is not ready yet", "cust.volc.keyMissingBody": "A plan was found, but it has no API key for model calls. Create one in the Volcengine console and return; OpenAI4S continues automatically, with no copy and paste.", "cust.volc.keyWaiting": "Waiting for a new API key… Setup continues automatically after it is created.", "cust.volc.keyChoiceTitle": "Choose an API key for OpenAI4S", "cust.volc.keyChoiceBody": "This profile has multiple usable keys and no unique default. Choose once; the key value is never sent to the browser.", "cust.volc.apiKey": "API key", "cust.volc.keyName": "{0} (ending in {1})", "cust.volc.profileMissingTitle": "Account connected; Ark setup is incomplete", "cust.volc.profileMissingBody": "The plan exists, but Ark CLI has no matching Profile. Run sign-in setup again to complete it.", "cust.volc.planInactiveTitle": "Account connected; the plan is not active", "cust.volc.planInactiveBody": "A plan was found, but it is pending or expired. Resolve the plan state and recheck without signing in again.", "cust.volc.seatTitle": "Account connected; a team seat is required", "cust.volc.seatBody": "A team plan was found, but this user has no usable seat. Ask an administrator to assign one, then recheck.", "cust.volc.quotaTitle": "Plan quota is exhausted", "cust.volc.quotaBody": "Your login and configuration remain valid. Recheck after the quota resets, renewing, or switching plans; no new sign-in is needed.", "cust.volc.platformTitle": "Platform API key found; a model Endpoint is still required", "cust.volc.platformBody": "This account can use pay-as-you-go calls, but it first needs a model Endpoint in the Ark console.", "cust.volc.platformReadyTitle": "A usable Endpoint was found", "cust.volc.platformReadyBody": "OpenAI4S found the only invocable Endpoint in this Project and can finish setup now.", "cust.volc.endpointChoiceTitle": "Choose an Endpoint for OpenAI4S", "cust.volc.endpointChoiceBody": "This Project has multiple invocable Endpoints. Choose the one OpenAI4S should use as its active model.", "cust.volc.endpoint": "Endpoint", "cust.volc.useEndpoint": "Use this Endpoint", "cust.volc.choiceTitle": "Choose a plan for OpenAI4S", "cust.volc.choiceBody": "This account has multiple active plans. Select one; OpenAI4S configures only the chosen plan.", "cust.volc.checkFailedTitle": "Account connected; resource check is incomplete", "cust.volc.checkFailedBody": "Plan or API-key status could not be read. Recheck without signing in again.", "cust.volc.viewPlans": "View plans", "cust.volc.createKey": "Create API key", "cust.volc.openEndpoints": "Open Endpoint console", "cust.volc.recheck": "Recheck", "cust.volc.rechecking": "Checking account resources…", "cust.volc.rechecked": "Check complete; resources are up to date", "cust.volc.plan": "Plan", "cust.volc.usePlan": "Use this plan", "cust.volc.ready": "Ready", "cust.volc.switch": "Switch account", "cust.volc.disconnect": "Disconnect from OpenAI4S", "cust.volc.disconnectConfirm": "Remove this Volcengine configuration from OpenAI4S? Ark CLI will remain signed in.", "cust.volc.quota": "Plan quota", "cust.volc.reset": "Resets: {0}", "cust.volc.configureFailed": "Automatic setup failed: {0}", "cust.volc.refreshFailed": "Refresh failed: {0}", "cust.network.allowName": "Allow network access", "cust.network.desc": "Network access (the agent's web_search / web_fetch / bash and code requests)", "cust.network.disabledDesc": "Disabled — the agent uses only local knowledge and existing files", "cust.network.enabledDesc": "Enabled — the agent can search literature in real time, scrape databases, and download data packages", "cust.network.title": "Network", "cust.telemetry.name": "Anonymous usage statistics", "cust.telemetry.off": "Off — nothing leaves this machine", "cust.telemetry.on": "On — anonymous counts only (version, OS, success/failure); never prompts, file names, or data", "cust.telemetry.envlock": "Disabled by the OPENAI4S_TELEMETRY environment variable", "cust.perm.decision.ask": "Ask", "cust.perm.desc": "Control which tools need your approval. Priority: the more specific, the higher; at equal specificity, This conversation > This project > Global. Safe by default: reads are allowed, writes / commands / network / package installs need approval, .env reads are denied.", "cust.perm.noRules": "(no rules)", "cust.perm.noSessionNote": "Open a session to manage its conversation and project rules. Only global defaults are shown below.", "cust.perm.patternPlaceholder": "Pattern (git * / *.csv / *)", "cust.perm.resetBtn": "Restore defaults", "cust.perm.resetConfirm": "Restore built-in safe default rules?", "cust.perm.resetDesc": "Rewrite the built-in global default rules (does not delete rules you've added)", "cust.perm.resetName": "Restore safe defaults", "cust.perm.scope.conversation": "This conversation", "cust.perm.scope.global": "Global (all projects)", "cust.perm.scope.project": "This project", "cust.perm.title": "Permissions", "cust.perm.toolPlaceholder": "Tool (bash / write_file / *)", "cust.skills.collection": "{0} collection ({1} skills)", "cust.skills.collectionDesc": "Pinned read-only third-party recipes, collapsed by default; expand to enable or disable them individually.", "cust.skills.collectionHide": "Hide", "cust.skills.collectionShow": "Show", "cust.skills.deleteConfirm": "Delete skill {0}?", "cust.skills.desc": "{0} research skills; toggles control whether the agent can use them, and you can create/import your own", "cust.skills.importBtn": "Import SKILL.md", "cust.skills.newBtn": "+ New skill", "cust.skills.yourSkills": "Your skills", "cust.specialists.builtinRoles": "Built-in roles", "cust.specialists.deleteConfirm": "Delete specialist {0}?", "cust.specialists.desc": "Delegable specialist agents: built-in roles + your custom specialists (call with host.delegate(task, name=…))", "cust.specialists.newBtn": "+ New specialist", "cust.specialists.yours": "Your specialists", "cust.tab.connectors": "Connectors", "cust.tab.models": "Models", "cust.tab.specialists": "Specialists", "dash.badge.running": "Running", "dash.brand.beta": "Beta", "dash.col.projects": "Projects", "dash.col.recentSessions": "Recent sessions", "dash.meta.session": "{0} session", "dash.meta.sessions": "{0} sessions", "dash.project.runningCount": "{0} sessions running", "dash.project.untitled": "Untitled project", "dash.projects.empty": "No projects yet. Click +New project at the top right to create one.", "dash.running.activeNow": "active now", "dash.running.count": "{0} running", "dash.sessions.empty": "No sessions yet.", "ac.fromOtherSession": "from another session — copied in on send", "refs.problemsTitle": "{0} reference(s) did not resolve (the turn still ran)", "refs.unresolvedChip": "This reference resolves to nothing right now; the turn will still run.", "cust.memory.edited": "edited", "cust.memory.editPrompt": "Edit this memory:", "versions.retrievalSource": "Retrieved from (read-only)", "versions.retrievalTruncated": "clipped for length: {0}", "versions.retrievalWithheld": "{0} further field(s) not shown", "dash.example.cta": "Run the example analysis", "dash.example.hint": "A real NIF3/DUF34 analysis: calls the UniProt and RCSB PDB APIs, runs 6 Python cells, and produces figures and a report. It does not run on startup — only when you click.", "dash.example.running": "Running the example analysis…", "dash.example.failed": "The example analysis failed: ", "dash.tag.example": "Example", "data.col.data": "data", "data.column.plural": " columns", "data.column.singular": " column", "data.rows.plural": " rows · ", "data.rows.singular": " row · ", "date.bucket.older": "Older", "date.bucket.thisWeek": "This week", "date.bucket.today": "Today", "date.bucket.yesterday": "Yesterday", "dock.artifact.fallback": "artifact", "dock.collapse": "Collapse", "dock.files.heading": "Files · Artifacts", "dock.files.scope.frame": "This session", "dock.files.scope.project": "This project", "dock.notes.placeholder": "Add a note…", "dock.tab.files": "Files", "dock.tab.notebook": "Notebook", "dock.tab.timeline": "Action Timeline", "edac.keyword": "Keywords", "editor.label": "Editing {0}", "empty.sub": "Describe your research task and the agent will write Python, search the web, invoke skills, and produce charts/reports/structure files. Try:", "empty.title": "Start a new analysis", "review.badge.candidate": "Candidate · not verified", "review.badge.verified": "Verified", "review.badge.completed_with_issues": "Completed · unverified", "review.badge.review_unavailable": "Unavailable · not verified", "export.artifactsHeading": "## Artifacts", "export.messageAssistant": "🤖 Assistant", "export.messageUser": "🧑 User", "files.empty": "Files, tables, and charts produced by tasks will appear here.", "files.emptyProject": "No session in this project has produced files yet.", "files.fromSession": "From {0}", "folder.assigned.in": "Moved into folder", "folder.assigned.out": "Moved out of folder", "folder.create.failed": "Create failed: {0}", "folder.delete.confirm": "Delete folder \"{0}\"? Its sessions will be moved out but not deleted.", "folder.menu.delete": "Delete folder", "folder.menu.rename": "Rename", "folder.move.failed": "Move failed: {0}", "folder.new.prompt": "Folder name", "folder.rename.prompt": "Rename folder", "gen.label": "GENERATED · {0}", "gen.more": "+{0} more", "job.outputEmpty": "(no output)", "job.outputLoadFailed": "Load failed", "job.outputTitle": "Job output — {0}", "kernel.envChanged": "Switched to {0} environment", "kernel.envChanged.default": "new", "kernel.restarted": "Kernel restarted (generation {0})", "kernel.started": "Kernel started", "kernel.stopped": "Kernel stopped (session preserved; start anytime to resume)", "ketcher.modalTitle": "Ketcher — Chemical Structure Editor", "wb.table.filter": "Filter col:value", "wb.table.prev": "Previous", "wb.table.next": "Next", "wb.table.meta": "{0} rows · showing {1}–{2}", "wb.ketcher.edit": "Edit in Ketcher", "wb.locator.title": "Location comments (sent on the next turn)", "wb.locator.pdfPage": "PDF page", "wb.locator.pdfPrev": "Previous page", "wb.locator.pdfNext": "Next page", "wb.locator.quote": "Selected source text", "wb.locator.selector": "CSS selector, e.g. #hit", "wb.locator.body": "Comment…", "wb.locator.saved": "Comment saved", "wb.locator.err": "Comment failed: {0}", "key.banner.goConfigure": "Configure →", "key.banner.notConfigured": " No API Key configured yet; sending messages will fail.", "label.apiKey": "API Key", "label.baseUrl": "Base URL", "label.model": "Model", "label.provider": "Provider", "menu.copyLink": "Copy link", "menu.exportMetadata": "Export metadata", "menu.hideFromList": "Hide from list", "menu.provenance": "Provenance", "menu.star": "Star", "menu.unstar": "Unstar", "menu.versionHistory": "Version history", "modal.title.preview": "Preview", "model.delete.confirm": "Delete model profile \"{0}\"?", "model.rebind.confirm": "The model configuration this session was pinned to no longer exists. Re-bind it to the active configuration and continue?", "model.rebind.done": "Re-bound to the active model configuration", "models.none": "No models", "mol.foot": "Drag to rotate • Scroll to zoom • Shift+drag to pan", "mol.style.cartoon": "Cartoon", "mol.style.line": "Line", "mol.style.sphere": "Sphere", "mol.style.stick": "Stick", "mol.style.surface": "Surface", "mol.styleLabel": "Style:", "mol.tag": "Using 3Dmol.js viewer", "moveFolder.newFolderAndMove": "+ New folder and move in", "moveFolder.removeFromFolder": "(Remove from folder)", "msgAction.copy": "Copy", "msgAction.thumbsDown": "Dislike", "msgAction.thumbsUp": "Like", "nb.badge.idle": "Idle", "nb.badge.live": "Live", "nb.badge.ready": "Ready", "nb.cell.statusOk": "ok", "nb.cell.statusRunning": "running", "nb.kernel.shared": "shared with the agent", "nb.owner.agent": "Agent", "nb.owner.user_repl": "User REPL", "nb.owner.repair": "Repair", "nb.owner.review_scratch": "Review scratch", "nb.owner.generation": "generation {0}", "nb.chips.all": "All", "nb.empty": "After running a task, Notebook code cells and outputs will appear here.", "nb.env.placeholder": "Environment…", "nb.env.rSuffix": " · R", "nb.env.selectTitle": "Select runtime environment (built-in conda environments; switching restarts the kernel and clears variables, Notebook and files are preserved)", "nb.error.default": "Execution error", "nb.kernel.envSwitchFailed": "Failed to switch environment: {0}", "nb.kernel.envSwitched": "Switched to {0} environment (variables cleared, Notebook and files preserved)", "nb.kernel.generation": " · gen {0}", "nb.kernel.noSession": "No session", "nb.kernel.opFailed": "Kernel operation failed: {0}", "nb.kernel.pendingSwitch": " (switching to {0})", "nb.kernel.restartConfirm": "Restarting the kernel will clear all variables and memory state (Notebook history is preserved). Continue?", "nb.kernel.restartLabel": "Restart", "nb.kernel.restartTitle": "Restart the kernel (clears variables, loads newly installed packages; Notebook history is preserved)", "nb.kernel.startLabel": "Start", "nb.kernel.startTitle": "Start/revive the kernel (conversation preserved, can keep running)", "nb.kernel.stateActive": "Active", "nb.kernel.stateLoading": "…", "nb.kernel.stateNone": "Not started", "nb.kernel.stateStopped": "Stopped", "nb.kernel.stopConfirm": "Stopping the kernel will clear variables and memory state (session, Notebook and files are preserved, can restart to restore). Continue?", "nb.kernel.stopLabel": "Stop", "nb.kernel.stopTitle": "Stop the kernel and free resources (session, Notebook and files are preserved, can restart to restore)", "nb.kernel.title": "kernel", "nb.repl.body": "Connected to the live kernel shared with the Agent. Use the dropdown above to switch the built-in runtime environment (python / struct / phylo / r, no install needed); if you really need extra packages, `pip install` then click \"Restart kernel\".", "nb.repl.execFailed": "Execution failed: {0}", "nb.repl.inputPlaceholder": "run code in this kernel…", "nb.repl.interruptSent": "Interrupt sent", "nb.repl.interruptTitle": "Interrupt execution", "nb.revive.startBtn": "▶ Start kernel", "nb.revive.text": "Kernel stopped — just type a command to revive it, or", "nb.status.ended": "{0} · ended — view only; this kernel's in-memory namespace no longer exists.", "nb.status.hint": "Send a message to continue. Your next message resumes in this environment — workspace files remain; in-memory variables are restored only while the kernel is alive.", "nb.status.live": "Live · {0}", "nb.status.ready": "Ready · {0}", "nb.revisions.summary": "{0} attempts · expand {1} failed revisions", "nb.table.rowsHidden": "… {0} rows not shown", "nb.table.colsHidden": "… {0} columns not shown", "nb.table.bothHidden": "… {0} rows and {1} columns not shown", "nb.action.copy": "Copy", "nb.action.copied": "Code copied", "nb.action.rerun": "Rerun as new", "nb.action.fork": "Fork from before", "nb.action.promote": "Promote to Artifact", "nb.action.promoted": "Promoted to Artifact · {0}", "nb.action.unavailable": "This operation is not exposed by the current server; history will not be modified.", "nb.action.failed": "Notebook action failed: {0}", "nb.interrupt.noOwner": "There is no exact execution owner to interrupt.", "nb.action.queued": "Appended as a new {0} cell", "nb.cell.current": "Current", "nb.cell.drafting": "Model draft · updating", "nb.cell.stale": "Stale", "nb.cell.nonReplayable": "Non-replayable", "nb.cell.historical": "Historical revision · read only", "nb.repl.language": "Language", "nb.repl.run": "Shift+Enter to run", "nb.repl.multilineHint": "Multiline Python/R input only appends new cells; executed history is always read-only.", "nb.variables.title": "Variable Inspector", "nb.variables.language": "Namespace", "nb.variables.refresh": "Refresh variables", "nb.variables.loading": "Reading the current namespace…", "nb.variables.notLoaded": "Choose Python or R, then refresh manually. Inspection never runs a Cell.", "nb.variables.empty": "There are no displayable user variables in this namespace.", "nb.variables.error": "Variable inspection failed: {0}", "nb.variables.generation": "Generation {0}", "nb.variables.revision": "State revision S{0}", "nb.variables.stale": "Possibly stale · refresh", "nb.variables.truncated": "Showing only the first {0} variables", "nb.variables.length": "length {0}", "nb.variables.fingerprint": "fingerprint {0}", "nb.variables.state.busy": "The kernel is executing; Variable Inspector is temporarily unavailable.", "nb.variables.state.ended": "This kernel generation has ended; inspection will not restart it.", "nb.variables.state.not_started": "This language kernel has never started; inspection will not start it.", "nb.variables.state.restoring": "Kernel recovery is in progress; refresh when it finishes.", "nb.variables.state.unsupported": "This kernel does not support safe variable inspection.", "nb.variables.state.failed": "Variable inspection failed closed; the namespace was not changed.", "runtime.branch": "Branch", "runtime.python": "Python", "runtime.r": "R", "runtime.revision": "Revision", "runtime.owner": "Owner", "runtime.queue": "Queue", "runtime.none": "—", "runtime.status.live": "Live", "runtime.status.busy": "Busy", "runtime.status.ended": "Ended · view only", "runtime.status.restoring": "Restoring", "runtime.status.partial": "Partial", "runtime.status.failed": "Failed", "runtime.trust.quarantined": "Quarantined import", "runtime.trust": "Trust", "runtime.quarantineHint": "This imported Session is untrusted and view-only. Explicitly confirm Restart fresh in Recovery before continuing.", "timeline.title": "Action Timeline", "timeline.subtitle": "Safe projection of the durable Action Ledger; raw arguments and wire state are never shown.", "timeline.refresh": "Refresh", "timeline.loading": "Loading actions…", "timeline.loadEarlier": "Load earlier actions", "timeline.loadingEarlier": "Loading earlier actions…", "timeline.loadEarlierFailed": "Could not load earlier actions: {0}", "timeline.empty": "No actions to show yet. Notebook keeps scientific cells; the full control flow appears here.", "timeline.owner": "Owner", "timeline.permission": "Permission", "timeline.resources": "Resources", "timeline.generation": "Generation", "timeline.replay": "Replay", "timeline.duration": "Duration", "timeline.artifacts": "Artifacts", "timeline.tokens": "Tokens", "timeline.tokensValue": "{0} in · {1} out", "timeline.cost": "Cost", "timeline.column.ordinal": "#", "timeline.column.kind": "Kind", "timeline.column.action": "Action", "timeline.turnBoundary": "Turn", "timeline.inspector": "Action details", "timeline.inspector.close": "Close details", "timeline.row.open": "Open details for action #{0}: {1}", "timeline.search.label": "Search loaded actions", "timeline.search.placeholder": "Search title, kind, resources, and artifacts", "timeline.search.scope": "Search covers only currently loaded actions (loaded: {0}); unloaded earlier history is not included. Searching temporarily reveals collapsed Turns; clearing restores them.", "timeline.search.loaded": "Loaded actions: {0}", "timeline.search.matches": "Loaded-window matches: {0} · loaded actions: {1}", "timeline.search.matchesInSelection": "Matches in this time selection: {0} · loaded-window matches: {1} · loaded actions: {2}", "timeline.search.clear": "Clear search", "timeline.search.empty": "No matches in the currently loaded actions", "timeline.search.emptySelection": "No search matches in this time selection · loaded-window matches: {0}", "timeline.turn.collapse": "Collapse Turn {0} · visible actions: {1} · total duration: {2}", "timeline.turn.expand": "Expand Turn {0} · visible actions: {1} · total duration: {2}", "timeline.turn.summary": "Turn · visible actions: {0}", "timeline.ledger.keyboard": "Keyboard: press Enter, Down, or Home on the ledger to enter it; use arrows, Page Up, Page Down, Home, and End to browse.", "timeline.overview": "Timeline overview", "timeline.overview.help": "Hover for exact timing; drag to filter; wheel to zoom; right-drag to pan.", "timeline.overview.keyboard": "Keyboard: use Up and Down to inspect actions, Enter to open one, or Shift+Enter to filter by its known active interval.", "timeline.overview.queue": "Queue", "timeline.overview.ttft": "First response", "timeline.overview.decode": "Decode", "timeline.overview.allocated": "Allocated", "timeline.overview.started": "Started", "timeline.overview.response": "First response", "timeline.overview.finished": "Finished", "timeline.overview.running": "Running · real start only", "timeline.overview.omitted": "Load omitted earlier actions", "timeline.overview.omittedLoading": "Loading omitted earlier actions", "timeline.overview.clear": "Clear time selection", "timeline.overview.zoomIn": "Zoom in on time", "timeline.overview.zoomOut": "Zoom out on time", "timeline.overview.panEarlier": "Pan to earlier time", "timeline.overview.panLater": "Pan to later time", "timeline.overview.selection": "Selected {0} — {1}", "timeline.overview.emptySelection": "No actions in this range", "timeline.kind.native_tool": "Native Tool", "timeline.kind.python": "Python Cell", "timeline.kind.r": "R Cell", "timeline.kind.dynamic_tool": "Dynamic Tool", "timeline.kind.delegate": "Delegated Agent", "timeline.kind.background": "Background / Remote Job", "timeline.kind.permission": "Permission Pause", "timeline.kind.recovery": "Recovery Event", "timeline.kind.finalize": "FinalizeAction", "timeline.kind.action": "Action", "timeline.panel.branches": "Branch · Checkpoint", "timeline.panel.context": "Context composition", "timeline.panel.security": "Sandbox · Permission", "timeline.panel.delegation": "Sub-agent tree", "timeline.panel.compute": "Remote compute", "attach.problemsTitle": "{0} image(s) were not sent with this turn", "attach.tooLarge": "{0}, over the {1} per-image limit — downscale it and pin again.", "attach.budget": "this turn's {0} image budget is spent — pin fewer figures, or split across turns.", "attach.tooMany": "at most {0} images may be attached to one turn.", "attach.versionChanged": "the figure was re-plotted over after you pinned it — the version you annotated no longer exists; pin again on the new one.", "attach.notFound": "the file was deleted or moved, so it could not be sent.", "attach.unsupported": "the file's actual contents are not a raster image (judged by its header), so it cannot be sent as one.", "attach.decodeFailed": "the image could not be decoded (corrupt file, or Pillow missing on the server).", "delegation.stop": "Stop this sub-agent and everything under it", "delegation.steer": "Send it a message at its next turn boundary", "delegation.steerPrompt": "What should this sub-agent be told at its next turn boundary?", "delegation.steerQueued": "Queued — it will arrive at the sub-agent's next turn boundary.", "delegation.stopFailed": "Stop failed", "delegation.steerFailed": "Steering failed", "compute.none": "No remote compute tasks in this session.", "compute.live": "{0} in flight", "compute.fromRecord": "from the local record — not re-checked", "compute.checked": "just checked with the remote", "compute.refresh": "Check the remote and harvest outputs", "compute.refreshFailed": "Refresh failed", "compute.outputs": "{0} output file(s) · {1}", "compute.status.unknown": "unknown (the remote could not be reached)", "timeline.noBranch": "No branch/checkpoint projection is available yet.", "timeline.noContext": "No context composition projection is available yet.", "timeline.noSecurity": "No sandbox/permission projection is available yet.", "timeline.noDelegation": "No sub-agent has been created in this session.", "delegation.budget": "Budget {0}/{1}", "delegation.active": "Active {0}", "delegation.turns": "Boundary {0}/{1}", "delegation.steering": "Messages: {0} queued · {1} delivered", "delegation.childFrame": "frame {0}", "branch.current": "current", "branch.viewOnly": "inactive · view only", "branch.currentSummary": "Current branch: {0}", "branch.head": "Head {0}", "branch.checkpoint": "Create checkpoint", "branch.fork": "Fork", "branch.forkName": "Name the new branch (optional)", "branch.forkDefault": "Fork {0}", "branch.forked": "Created a branch from checkpoint {0}", "branch.activate": "Activate", "branch.activating": "Switching…", "branch.activated": "Activated branch {0}", "branch.activatedPartial": "Activated branch {0}, but some state needs repair; inspect Recovery.", "branch.internalCheckpoints": "Internal cursor checkpoints ({0})", "branch.preview": "Preview revert", "branch.revert": "Revert and continue", "branch.undo": "Undo last revert", "branch.undone": "The last revert was undone", "branch.actionFailed": "Branch action failed: {0}", "branch.conflict": "External file conflicts prevent this revert from being applied.", "branch.previewTitle": "Revert preview", "branch.diff": "Messages {0} · Notebook {1} · files write {2} / delete {3} · Artifacts +{4}/-{5}", "recovery.title": "Kernel Recovery", "recovery.checkpoint": "Checkpoint {0}", "recovery.action.restore": "Restore checkpoint", "recovery.action.retry": "Retry recovery", "recovery.action.restart_fresh": "Restart fresh", "recovery.action.ready": "Ready", "recovery.action.loading": "Running…", "recovery.action.unavailable": "This Recovery action is not advertised by the current server.", "recovery.action.currentOnly": "Recovery is available only for the session's active branch.", "recovery.action.failed": "Recovery action failed: {0}", "recovery.action.done": "Recovery finished; status and journal were refreshed.", "recovery.freshConfirm": "A fresh restart clears the current Python/R in-memory variables and does not claim the checkpoint namespace was restored. Conversation, Notebook, workspace files, and Artifacts remain. Continue?", "context.tokens": "{0} tokens", "context.outputReserve": "output reserve {0}", "context.messages": "{0} messages", "context.compressed": "compressed", "context.handoff": "Handoff", "context.history": "Compaction history ({0})", "context.compaction": "Compaction", "context.savings": "{0} → {1} tokens", "context.omitted.memory": "Memory (not injected)", "context.omittedCount": "{0} omitted", "context.reason.too_long": "too long", "context.reason.too_many": "over the count", "context.reason.budget_exhausted": "over the total", "context.artifacts": "{0} Artifact refs", "security.sandbox": "Sandbox", "security.generation": "Generation", "security.generationEnded": "{0} ended ({1})", "security.permission": "Permission", "security.selfTest": "Self-test", "security.network": "Network", "security.pending": "{0} pending approvals", "notes.empty": "No notes yet.", "notes.emptyNoProject": "Notes can be added under a project.", "palette.action.backHome": "Back to home", "palette.action.customize": "Customize", "palette.action.newProject": "New project", "palette.action.search": "Search", "palette.action.newSession": "New session", "palette.action.openNotebook": "Open Notebook", "palette.empty": "No matches", "palette.group.artifacts": "Artifacts", "palette.group.commands": "Commands", "palette.group.datapro": "Professional datasets", "palette.group.sessions": "Sessions", "palette.group.skills": "Skills", "palette.datapro.result": "DataPro query result", "palette.searchPlaceholder": "Search sessions, artifacts, professional datasets, skills, or run a command…", "perm.badge.subAgent": "Subagent", "perm.badge.dangerous": "High risk", "perm.btn.allow": "Allow", "perm.btn.continueReplan": "Continue and replan", "perm.btn.deny": "Deny", "perm.continuePrompt": "Continue. The operation I just approved was interrupted before the daemon restarted. Re-evaluate the current state first, issue a fresh action only if it is still needed, and do not assume the original operation executed.", "perm.lbl.rememberRule": "Remember rule (use * as wildcard)", "perm.lbl.rememberScope": "Remember scope", "perm.lbl.resolvedPath": "Resolved path: {0}", "perm.placeholder.denyReason": "(Optional) reason for denial, will be sent to the agent", "perm.scope.conversation": "This conversation", "perm.scope.global": "Global", "perm.scope.once": "Once", "perm.scope.project": "This project", "perm.status.allowed": "Allowed", "perm.status.allowedScope": "Allowed ({0})", "perm.status.afterRestartAllowed": "Approval recorded; the original operation did not execute after the daemon restart.", "perm.status.afterRestartDenied": "Denied; the original operation did not execute after the daemon restart.", "perm.status.denied": "Denied", "perm.sub.approvalNeeded": "The agent requests to perform the operation below and needs your approval.", "perm.review.credential_path": "The resolved destination matches a credential-path rule. Verify the actual path before allowing it.", "perm.review.dynamic_file_search": "This search chooses the files it will read only after it starts. Verify the search scope before allowing it.", "perm.review.unreviewable_path": "Automatic review could not establish the destination path. Manual confirmation is required.", "perm.review.verification_failed": "Automatic file-safety verification failed. Manual confirmation is required.", "perm.title.run": "Run {0}", "plan.approve": "Approve and execute", "plan.approveFailed": "Approval failed: {0}", "plan.autoExecuting": "Auto-executing as planned…", "plan.confidenceSuffix": "{0} confidence", "plan.discard": "Discard", "plan.eyebrow.completed": "PLAN COMPLETE", "plan.eyebrow.default": "PLAN", "plan.eyebrow.draft": "PLAN READY FOR YOUR REVIEW", "plan.eyebrow.executing": "EXECUTING PLAN", "plan.eyebrow.failed": "PLAN INTERRUPTED", "plan.eyebrow.paused": "PLAN PAUSED — STEPS REMAIN", "plan.status.paused": "Paused: {0}/{1} steps done, {2} remaining", "plan.resume": "Run the remaining steps", "plan.resumeFailed": "Could not resume: {0}", "plan.resuming": "Running the remaining steps…", "plan.legacy.approvedPrompt": "Approved. Please strictly follow the plan above: run code, use the relevant skills, and produce result files.", "plan.legacy.intro": "The above is the execution plan. Once approved, it will run as planned and produce result files.", "plan.prompt.intro": "[Plan Mode] Do not execute or call any tools yet. Devise a structured execution plan for the task below, and output only two parts:\n", "plan.prompt.jsonSchema": "{\"title\":\"Plan title\",\"rationale\":\"One-sentence rationale\",\"confidence\":\"high|medium|low\",\"steps\":[{\"id\":\"s1\",\"title\":\"Step title\",\"detail\":\"What this step does\",\"deliverables\":[\"intermediate-table.csv\",\"figure.png\"]}]}\n", "plan.prompt.part1": "1) A brief description of the approach (prose, explaining your chosen goal/approach and the main analytical thread);\n", "plan.prompt.part2": "2) Immediately followed by a ```json code block, strictly using the following structure:\n", "plan.prompt.part3": "Each step must have a unique id, a clear title, a brief description, and a list of expected output filenames for that step; where reasonable, make each step yield a viewable intermediate result — a table (.csv) or a figure (.png) — as a deliverable, but omit it if that step genuinely isn't suited to a table/plot. Wait for user approval before executing.\n\nTask: ", "plan.revise.placeholder": "Describe changes to the plan… (press Enter to submit)", "plan.status.completed": "Plan execution complete ({0}/{1})", "plan.status.executing": "Executing as planned… ({0}/{1})", "plan.status.failed": "Execution interrupted ({0}/{1})", "plan.step.default": "Step", "plan.title.default": "Execution plan", "plan.toggle.on": "Plan mode: draft a plan first, then execute after approval", "explore.toggle.on": "Explore mode: AI autonomously runs an end-to-end investigation", "proj.current.allSessions": "All sessions", "proj.delete.confirm": "Delete this project? This action cannot be undone.", "proj.fallbackName": "Project", "proj.menu.allProjects": "All projects", "proj.menu.downloadArtifacts": "Download artifacts", "proj.menu.settings": "Project settings", "proj.menu.newProject": "New project", "projectResearch.menu": "Project research map", "projectResearch.title": "{0} · Global research view", "projectResearch.timeline": "Timeline", "projectResearch.lineage": "Lineage", "projectResearch.timelineSummary": "{0} sessions · {1} actions", "projectResearch.lineageSummary": "{0} Artifacts · {1} versions · {2} edges", "projectResearch.latest": "latest", "projectResearch.noLineage": "No project lineage data yet.", "projectResearch.edges": "Lineage edges ({0})", "share.menu": "Share (read-only link)", "share.title": "Share this session", "share.scope": "This publishes: the conversation, Notebook code and output, artifact files, and the environment list. Anyone with the link can view it, relayed in the clear through your relay.", "share.create": "Create share link", "share.copy": "Copy", "share.copied": "Link copied", "share.update": "Update snapshot", "share.updated": "Snapshot updated", "share.revoke": "Revoke", "share.revokeConfirm": "Revoke this share link? It stops working immediately.", "share.revoked": "Revoked", "share.disabled": "Sharing is off.", "share.enable": "Enable sharing", "share.expiry": "Expires:", "share.expiry.never": "Never", "share.expiry.1d": "1 day", "share.expiry.7d": "7 days", "share.expiry.30d": "30 days", "share.expiresAt": "Expires", "share.neverExpires": "Never expires", "share.unconfigured": "Sharing is not configured (relay URL and token required — see docs/webshare.md).", "share.close": "Close", "sessionPackage.import": "Import session", "sessionPackage.export": "Export session package", "sessionPackage.imported": "Session imported safely; its Kernel remains Ended until explicit recovery", "sessionPackage.tooLarge": "Session package exceeds the 128 MiB client limit", "sessionPackage.verified": "Verified: {0} file(s) match the package's own manifest — importing", "sessionPackage.verifyFailed": "Verification failed, import refused: {0}", "projModal.create": "Create", "projModal.editTitle": "Project settings", "projModal.ctx.label": "Agent Context", "projModal.ctx.placeholder": "Included in every agent's prompt for this project", "projModal.desc.placeholder": "Shown in the project list", "projModal.name.placeholder": "Project name", "projModal.title": "New Project", "prov.code.generating": "Generating reproduction code…", "prov.env.chipEnvironment": "Environment", "prov.env.chipPackages": "Packages", "prov.env.chipPython": "Python", "prov.env.liveFallback": "Live snapshot — this artifact has no recorded production environment (uploaded file, or generated before this feature)", "prov.env.loadFailed": "Failed to load environment: {0}", "prov.env.loadingSnapshot": "Loading environment snapshot…", "prov.env.noPackages": "No packages to report.", "prov.env.recorded": "Recorded from the kernel environment at the time this artifact was produced", "prov.env.recordedUnverified": "Environment recorded, but not confirmed to belong to this production run alone", "prov.env.remoteTitle": "Remote GPU compute (reproducible)", "prov.env.remoteHost": "Host", "prov.env.remoteEnv": "Env", "prov.env.remotePkgs": "Packages", "prov.env.remoteCode": "Code", "prov.env.remoteModel": "Model / weights", "prov.env.remoteRun": "Run (UTC)", "prov.env.thPackage": "Package", "prov.env.thVersion": "Version", "prov.exec.downloadNotebook": "Download notebooks (zip)", "prov.exec.downloadPython": "Python notebook only (.ipynb)", "prov.exec.downloadR": "R notebook only (.ipynb)", "prov.exec.downloadMarkdown": "Markdown record (.md)", "prov.exec.downloadSources": "Executed code sources (zip, incl. sub-agents)", "prov.exec.downloadMore": "Other export formats", "prov.exec.noRecords": "No execution records yet.", "nb.exec.toggle": "Executed code", "nb.exec.title": "Executed code (execution history)", "nb.exec.note": "Code actually run by this session and its delegated sub-agents — failed and interrupted cells included. This is execution history, not Artifacts / deliverables.", "nb.exec.root": "Root session", "nb.exec.empty": "No executed code recorded for this frame yet.", "nb.exec.loadFailed": "Failed to load executed code: {0}", "nb.exec.cellCount": "{0} cells", "nb.exec.failCount": "{0} failed", "prov.msg.loadFailed": "Failed to load conversation: {0}", "prov.msg.loading": "Loading conversation…", "prov.msg.noRecords": "No conversation records yet.", "prov.msg.roleAssistant": "Assistant", "prov.msg.roleSystem": "System", "prov.msg.roleUser": "User", "prov.review.noLineage": "No provenance information (execution log is empty or no file I/O was recorded).", "prov.review.producedBy": "produced by cell {0}", "prov.review.producedByIdentity": "produced by Cell {0}", "prov.review.producerFrame": "{0} frame · {1}", "prov.review.nonCellProducer": "produced by a non-Cell action", "prov.review.sameBytesCapture": "same bytes · capture observation", "prov.review.versionCapture": "version capture · capture observation", "prov.review.readsInputs": "reads / inputs", "prov.review.saved": "saved · {0}", "prov.review.viewCode": "View the code that produced it", "prov.review.wrote": "wrote", "prov.sub.code": "Code", "prov.sub.environment": "Environment", "prov.sub.exec": "Execution Log", "prov.sub.messages": "Messages", "prov.sub.review": "Review", "send.imageAnnotationFallback": "(Image annotation feedback)", "session.badge.liveTip": "Kernel alive (can resume anytime)", "session.badge.runningTip": "Task still running in the background — click to resume", "session.duplicateSuffix": "(Copy)", "session.empty.label": "No sessions yet", "session.loadMore": "Load more sessions", "session.loadMoreLimit": "List limit reached — search for older sessions", "session.menu.tip": "Session actions", "session.newFolder": "+ Folder", "session.untitled": "Untitled session", "sessionMenu.duplicate": "Duplicate session", "sessionMenu.cancel": "Cancel", "sessionMenu.downloadArtifacts": "Download artifacts", "sessionMenu.exportMarkdown": "Export as Markdown", "sessionMenu.viewNotebook": "View notebook", "compute.menu.runLocation": "Run location", "compute.location.local": "This machine (daemon)", "compute.location.localHint": "The kernel runs on the host running the daemon.", "compute.dialog.title": "Where this session runs", "compute.dialog.notConfigured": "This daemon has no worker listener, so sessions cannot run on a cluster.", "compute.dialog.release": "Release the cluster resource", "compute.badge.local": "local", "compute.blocked.allocation": "queued for a resource", "compute.blocked.workspace": "preparing the workspace", "compute.blocked.worker": "waiting for the worker to dial in", "compute.blocked.kernel": "starting the kernel", "compute.badge.ready": "cluster ready", "compute.lost.title": "Kernel state was lost", "compute.lost.body": "This session's resource went away and the kernel's memory went with it — variables, imports and loaded data are gone. The session continued on a new attempt, but anything defined earlier has to be run again.", "compute.lost.dismiss": "Got it", "sessionMenu.moveToFolder": "Move to folder", "skill.bodyPlaceholder": "SKILL.md body (Markdown recipe: steps, code, caveats…)", "skill.descPlaceholder": "One-line description (used for skill retrieval)", "skill.editTitle": "Edit skill — {0}", "skill.importBtn": "Import", "skill.importLabel": "SKILL.md content", "skill.importPlaceholder": "Paste the full SKILL.md (including --- name / description --- front matter)", "skill.importTitle": "Import skill (paste SKILL.md)", "skill.label.body": "Body", "skill.label.desc": "Description", "skill.label.name": "Name", "skill.namePlaceholder": "Skill name (lowercase-hyphenated, e.g. my-analysis)", "skill.newTitle": "New skill", "skill.readiness.needsSetup": "Not available on this machine: {0}", "skill.readiness.unknown": "Cannot be verified on this machine: {0}", "skill.saveBtn": "Save skill", "skill.historyBtn": "Version history", "skill.historyTitle": "Skill versions — {0}", "skill.historyEmpty": "This scope has no rollbackable versions yet.", "skill.scope.personal": "personal", "skill.scope.project": "project", "skill.scope.bundled": "bundled", "skill.versionActive": "Active version", "skill.rollbackBtn": "Roll back to this version", "skill.rollbackConfirm": "Roll {0} back to version {1}? The current version will be retained.", "skill.rollbackDone": "Rolled {0} back to the selected version", "skill.versionSidecar": "Sidecar: {0}", "specialist.descPlaceholder": "One-line description", "specialist.editTitle": "Edit specialist — {0}", "specialist.label.systemPrompt": "System prompt", "specialist.namePlaceholder": "Specialist name (e.g. Biostatistician)", "specialist.newTitle": "New specialist", "specialist.promptPlaceholder": "System prompt / persona: describe this specialist's expertise, methods, style and constraints…", "specialist.saveBtn": "Save specialist", "starter.dataAnalysis.prompt": "Read my uploaded CSV and do exploratory data analysis: summary statistics, a correlation heatmap, and distribution plots of key variables, then output the charts and conclusions.", "starter.dataAnalysis.title": "Analyze my uploaded data", "starter.litReview.prompt": "Use web_search to find advances in CRISPR base-editing off-target effects over the past three years, and synthesize a cited Markdown brief.", "starter.litReview.title": "Search and review literature", "starter.phylo.prompt": "Perform multiple sequence alignment and phylogenetic tree reconstruction on a set of homologous proteins, then output an alignment overview, the tree figure, and a conserved-sites table.", "starter.phylo.title": "Phylogenetic analysis", "starter.proteinModel.prompt": "Build a structure model (.pdb) for a protein sequence that can be opened in the 3D viewer, and plot the per-residue confidence curve.", "starter.proteinModel.title": "Protein structure modeling", "step.artifact.hideOutput": "Hide output", "step.artifact.openArtifact": "Open artifact", "step.artifact.showOutput": "Show output", "step.card.defaultTitle": "step", "step.delegate.artifacts": "artifacts", "step.delegate.children": "{0} sub-tasks", "step.delegate.hideDetails": "Hide details", "step.delegate.limitations": "limitations", "step.delegate.missingArtifacts": "missing required artifacts", "step.delegate.showDetails": "Show details", "step.delegate.status.blocked": "blocked", "step.delegate.status.completed": "completed", "step.delegate.status.failed": "failed", "step.delegate.status.partial": "partial", "step.delegate.status.pending": "started", "step.delegate.status.stopped": "stopped", "step.delegate.turns": "turns {0}/{1}", "step.env.installed": "installed: {0}", "step.env.missing": "missing: {0}", "step.env.ready": "ready", "step.fig.altFallback": "figure", "step.label.code": "Code", "step.search.emptyResult": "(result)", "step.skill.list": "skills: {0}", "step.status.failed": "Failed", "time.justNow": "just now", "toast.addFailed": "Failed to add: {0}", "toast.compute.installFailed": "Install failed: {0}", "toast.compute.installSeeLogs": "see logs", "toast.compute.installedKernelRestart": "Installed: {0}", "toast.connectors.added": "Added: {0}", "toast.connectors.probeOk": "Connected successfully, tools: {0}", "toast.connectors.testFailed": "Test failed: {0}", "toast.deleteFailed": "Delete failed: {0}", "toast.deleted": "Deleted", "toast.duplicateFailed": "Duplicate failed: {0}", "toast.exportFailed": "Export failed: {0}", "toast.exportedMarkdown": "Session exported as Markdown", "toast.failed": "Failed: {0}", "toast.feedbackCancelled": "Feedback cleared", "toast.feedbackDown": "Recorded: disliked 👎", "toast.feedbackUp": "Recorded: liked 👍", "toast.importFailed": "Import failed: {0}", "toast.layout": "Layout: {0}", "toast.llmSaved": "LLM configuration saved", "toast.llmSaved.noKey": " (API Key still missing)", "toast.memory.disabled": "Memory disabled", "toast.memory.enabled": "Memory enabled", "toast.micError": "Speech recognition error: {0}", "toast.micListening": "Listening… click the mic again to stop", "toast.micStartFailed": "Could not start speech recognition", "toast.micUnsupported": "This browser does not support voice input (please use Chrome/Edge/Safari)", "toast.models.added": "Added: {0}", "toast.models.switched": "Switched to: {0}", "toast.models.updated": "Updated: {0}", "toast.network.disabled": "Network access disabled", "toast.network.enabled": "Network access enabled", "toast.telemetry.on": "Anonymous statistics on", "toast.telemetry.off": "Anonymous statistics off; the identity was deleted too", "toast.telemetry.failed": "Could not save the statistics setting; restored the previous state: {0}", "toast.perm.enterTool": "Please enter a tool name", "toast.perm.resetDone": "Default rules restored", "toast.perm.ruleUpdated": "Rule updated", "toast.perm.updateFailed": "Update failed: {0}", "toast.planDiscarded": "Plan discarded", "toast.planRevising": "Revising the plan based on your changes…", "toast.renameFailed": "Rename failed: {0}", "toast.reviseFailed": "Revision failed: {0}", "toast.running": "Running…", "toast.sendFailed": "Send failed: {0}", "toast.skill.enterName": "Please enter a skill name", "toast.skill.imported": "Skill imported: {0}", "toast.skill.saved": "Skill saved: {0}", "toast.specialist.enterName": "Please enter a name", "toast.specialist.saved": "Specialist saved: {0}", "toast.submitFailed": "Submit failed: {0}", "toast.switchFailed": "Switch failed: {0}", "toolLabel.delegate": "Delegating to sub-agent", "toolLabel.listFiles": "Listing files", "toolLabel.readFile": "Reading file", "toolLabel.readSkill": "Reading skill", "toolLabel.runBash": "Running command", "toolLabel.runPython": "Running code", "toolLabel.searchSkills": "Searching skills", "toolLabel.writeFile": "Writing file", "turn.failed": "This turn failed. Please try again.", "turn.stopping": "Stopping…", "turn.failedCommitted": "This turn failed after it had already produced output or run a tool — retrying would repeat work that already happened. Check the result before deciding.", "turn.failure.llmRequestBurst": "The model provider's burst-traffic protection was triggered. This is not an API-key configuration problem. Continue this session later or temporarily switch models.", "turn.failure.llmRateLimited": "The model provider is rate-limiting requests. Continue this session later or temporarily switch models.", "turn.failure.llmUpstreamOverloaded": "The model provider is currently overloaded. This is not an API-key configuration problem. Continue this session later or temporarily switch models.", "turn.supportId": "Support ID: {0}", "upload.dropping": "Uploading dropped files…", "upload.failed": "Upload failed: {0}", "upload.pasting": "Uploading pasted files…", "upload.pendingSend": "Waiting for attachments to finish uploading…", "upload.stalled": "The attachments took too long to upload, so this message was not sent. Retry, or choose the files again.", "upload.uploaded": "Uploaded: {0}", "versions.badge.current": "Current", "versions.empty": "No version history yet.", "versions.load.err": "Load failed: {0}", "versions.modal.title": "Version history — {0}", "versions.diff": "Compare v{0} ↔ v{1}", "versions.diff.title": "Text diff v{0} ↔ v{1}", "versions.diff.loading": "Loading diff…", "versions.diff.empty": "These versions have identical text content.", "versions.diff.err": "Could not load diff: {0}", "versions.diff.truncated": "Diff is long; showing the first {0} characters.", "versions.restore": "Restore this version", "versions.restore.err": "Restore failed: {0}", "versions.restored": "Restored to v{0}", "versions.restoring": "Restoring…", "viewer.act.fullscreen": "Fullscreen", "viewer.act.more": "More", "viewer.chem.fallback": "No safe 2D coordinates were found; the original chemical representation is preserved below.", "viewer.chem.source": "Original chemical representation", "viewer.downloadOnly": "This binary artifact has no safe built-in preview.", "viewer.empty": "Click a file in the conversation to view it.", "viewer.genome.features": "{0} features · {1} chromosomes/sequences", "viewer.genome.invalid": "Ignored {0} invalid records", "viewer.genome.list": "Feature descriptors", "viewer.latex.preview": "Safe preview", "viewer.latex.source": "LaTeX source", "viewer.loading": "Selecting a safe renderer…", "viewer.msa.summary": "{0} sequences · {1} columns · {2}", "viewer.renderer.compat": "Compatibility mode", "viewer.renderer.error": "This artifact could not be previewed. You can still download the original file.", "viewer.renderer.matched": "Matched by {0}", "viewer.renderer.version": "Version {0}", "viewer.renderer.noscript": "This preview runs no scripts. Download an interactive report to use it.", "viewer.renderer.interactive": "Interactive preview, isolated on the alternate loopback origin. If it stays blank, reopen the artifact or download the report.", "viewer.sequence.omitted": "{0} additional residues are collapsed to keep the viewer responsive.", "viewer.sequence.summary": "{0} sequences · {1} residues · {2}", "viewer.table.shape": "{0} rows × {1} columns", "ws.nav.files": "Files", "ws.nav.new": "New", "ws.sidebar.collapse": "Collapse sidebar (⌘B)", "ws.sidebar.expand": "Expand sidebar (⌘B)", }; export default dict;