{
  "app": {
    "simpleChat": "Simple AI Chat",
    "gatewayConfig": "Gateway Configuration",
    "config": "Configuration",
    "backToChat": "Back to Chat",
    "title": "Corvus Dashboard",
    "subtitle": "Secure Gateway Configuration"
  },
  "sections": {
    "auth": "Dashboard onboarding",
    "core": "Base Configuration",
    "observability": "Observability",
    "runtime": "Runtime",
    "autonomy": "Autonomy",
    "scheduler": "Scheduler",
    "gateway": "Gateway",
    "webhook": "Webhook",
    "webSearch": "Web search",
    "browser": "Browser",
    "composio": "Composio",
    "memory": "Memory",
    "updates": "Updates",
    "channels": "Channels",
    "schedulerStatus": "Scheduler Status",
    "health": "System Health",
    "cost": "Cost Tracking",
    "mcp": "MCP Servers",
    "tunnel": "Tunnel",
    "reliability": "Reliability",
    "heartbeat": "Heartbeat"
  },
  "health": {
    "loading": "Loading health...",
    "uptime": "Uptime",
    "restarts": "Restarts"
  },
  "auth": {
    "baseUrl": "Gateway base URL",
    "pairingCode": "Pairing Code",
    "bearerToken": "Bearer Token",
    "connect": "Connect to gateway",
    "pair": "Pair this dashboard",
    "pairSuccess": "Pairing complete. Bearer token loaded.",
    "connected": "Dashboard ready for operator tasks.",
    "loadError": "Could not load admin configuration.",
    "networkError": "Could not connect to gateway. Verify network, URL, and that the service is active.",
    "emptyWebhookSecret": "Webhook secret cannot be empty. Use 'Clear' if you want to remove it.",
    "unauthorized": "Unauthorized. Please pair and try again.",
    "pairingInvalid": "The pairing code is invalid. Get a fresh pairing code and try again.",
    "pairingExpired": "The pairing code expired. Generate a new pairing code and pair again.",
    "credentialMissing": "A bearer token is required. Pair this dashboard to continue.",
    "credentialInvalid": "The saved bearer token was rejected. Pair again to restore access.",
    "quickPairValidating": "Link detected, validating...",
    "quickPairConnecting": "Connecting to gateway...",
    "quickPairFailed": "Quick pair failed, please check the URL or code."
  },
  "onboarding": {
    "intro": "Follow the shared onboarding flow: confirm the runtime, pair this dashboard, connect to the gateway, and finish in an operator-ready state.",
    "stepStatus": {
      "pending": "Pending",
      "current": "Current",
      "complete": "Complete",
      "blocked": "Blocked"
    },
    "steps": {
      "runtime": {
        "title": "Runtime available",
        "description": "Reach a usable local Corvus runtime or gateway for this dashboard."
      },
      "trust": {
        "title": "Trust this surface",
        "description": "Exchange a pairing code once to receive the bearer token for this dashboard."
      },
      "connect": {
        "title": "Connect to gateway",
        "description": "Validate the admin transport with the current bearer token and gateway URL."
      },
      "ready": {
        "title": "Ready for operator tasks",
        "description": "Load configuration and continue with dashboard management work."
      }
    },
    "ready": {
      "title": "Operator-ready",
      "description": "The dashboard completed pairing and gateway connection. You can now manage Corvus safely from this surface."
    },
    "recovery": {
      "runtime_unavailable": {
        "title": "Runtime unavailable",
        "description": "The dashboard could not reach the local Corvus runtime. Start the runtime and retry the connection step."
      },
      "transport_unavailable": {
        "title": "Surface transport unavailable",
        "description": "The dashboard reached an unexpected transport failure. Verify the gateway URL and retry safely."
      },
      "trust_input_invalid": {
        "title": "Pairing code invalid",
        "description": "The pairing code was rejected. Request a valid pairing code from the runtime and pair again."
      },
      "trust_input_expired": {
        "title": "Pairing code expired",
        "description": "The pairing code is no longer valid. Generate a new pairing code and repeat the trust step."
      },
      "credential_missing": {
        "title": "Bearer token missing",
        "description": "This dashboard is not authenticated yet. Pair this surface to receive a bearer token before connecting."
      },
      "credential_invalid": {
        "title": "Bearer token invalid or revoked",
        "description": "The stored bearer token no longer works. The dashboard cleared the stale token; pair again to continue."
      },
      "paired_but_not_connected": {
        "title": "Paired but not connected",
        "description": "Trust is established, but the dashboard could not complete the authenticated gateway check. Retry the connection step."
      }
    }
  },
  "chatOnboarding": {
    "intro": "Confirm the local runtime, pair this chat surface, connect to the gateway, then create or resume a chat session.",
    "gatewayReady": "Gateway ready. Start or resume a chat session to continue.",
    "loadError": "Could not reach the local gateway.",
    "transportDisconnected": "Pairing succeeded, but the chat surface could not keep its gateway connection.",
    "steps": {
      "runtime": {
        "title": "Runtime available",
        "description": "Reach a usable local Corvus runtime or gateway for this chat surface."
      },
      "trust": {
        "title": "Trust this surface",
        "description": "Exchange a pairing code once to receive the bearer token for this chat surface."
      },
      "connect": {
        "title": "Connect to gateway",
        "description": "Validate the chat transport with the current bearer token and local gateway URL."
      },
      "ready": {
        "title": "Ready to start chat",
        "description": "Finish the HTTP onboarding path so this surface can create or resume a chat session."
      }
    },
    "ready": {
      "title": "Ready to start chat",
      "description": "This chat surface completed pairing and gateway connection. Create or resume a session to begin chatting."
    },
    "session": {
      "title": "Session required",
      "description": "Gateway trust is ready. Create a new session or resume an existing one before sending messages."
    },
    "recovery": {
      "runtime_unavailable": {
        "title": "Runtime unavailable",
        "description": "The chat surface could not reach the local Corvus runtime. Start the runtime and retry the connection step."
      },
      "transport_unavailable": {
        "title": "Surface transport unavailable",
        "description": "The chat surface hit an unexpected transport failure. Verify the local gateway URL and retry safely."
      },
      "trust_input_invalid": {
        "title": "Pairing code invalid",
        "description": "The pairing code was rejected. Request a valid pairing code from the runtime and pair again."
      },
      "trust_input_expired": {
        "title": "Pairing code expired",
        "description": "The pairing code is no longer valid. Generate a new pairing code and repeat the trust step."
      },
      "credential_missing": {
        "title": "Bearer token missing",
        "description": "This chat surface is not authenticated yet. Pair this surface to receive a bearer token before connecting."
      },
      "credential_invalid": {
        "title": "Bearer token invalid or revoked",
        "description": "The stored bearer token no longer works. The chat surface cleared the stale token; pair again to continue."
      },
      "paired_but_not_connected": {
        "title": "Paired but not connected",
        "description": "Trust is established, but the chat surface could not complete its gateway check. Retry the connection step."
      }
    }
  },
  "form": {
    "baseUrl": "Base URL",
    "baseUrlPlaceholder": "/api",
    "pairingCode": "Pairing Code",
    "pairingCodePlaceholder": "Pairing Code",
    "bearerToken": "Bearer Token",
    "bearerTokenPlaceholder": "Bearer Token",
    "webhookSecret": "Webhook Secret",
    "webhookSecretPlaceholder": "Webhook Secret",
    "save": "Save changes",
    "saveSuccess": "Configuration saved successfully.",
    "saveError": "Could not save configuration.",
    "pairingInvalidError": "Invalid pairing code.",
    "pairingRateLimitError": "Too many pairing attempts. Try again later.",
    "pairingMissingTokenError": "No pairing token received.",
    "timeoutError": "Timeout",
    "configSubtitle": "Connect with your Corvus gateway",
    "noChanges": "No changes to save.",
    "connectBeforeSave": "Connect to the gateway first to load current configuration.",
    "restartRequired": "These changes require restarting the gateway to apply: {fields}",
    "provider": "Default provider",
    "model": "Default model",
    "temperature": "Temperature",
    "memoryBackend": "Memory backend",
    "observabilityBackend": "Observability backend",
    "otelEndpoint": "OTEL endpoint",
    "otelServiceName": "OTEL service name",
    "runtimeKind": "Runtime kind",
    "autonomyLevel": "Autonomy level",
    "workspaceOnly": "Workspace only",
    "maxActionsPerHour": "Max actions per hour",
    "maxCostPerDayCents": "Max cost per day (cents)",
    "schedulerEnabled": "Scheduler enabled",
    "schedulerMaxTasks": "Scheduler max tasks",
    "schedulerMaxConcurrent": "Scheduler max concurrent",
    "gatewayPort": "Gateway port",
    "gatewayHost": "Gateway host",
    "requirePairing": "Require pairing",
    "allowPublicBind": "Allow public bind",
    "webhookPort": "Webhook port",
    "webhookSecretMode": "Webhook secret",
    "webhookSecretValue": "New webhook secret",
    "secretUnchanged": "Unchanged",
    "secretReplace": "Replace",
    "secretClear": "Clear"
  },
  "general": {
    "apiUrl": "API URL"
  },
  "gateway": {
    "pair_rate_limit_per_min": "Pairing limit/min",
    "webhook_rate_limit_per_min": "Webhook limit/min"
  },
  "security": {
    "identity_format": "Identity format",
    "identity_aieos_path": "Identity AIEOS path",
    "requireApprovalMediumRisk": "Require approval for medium risk",
    "blockHighRiskCommands": "Block high risk commands",
    "autoApprove": "Auto-approve commands (comma-separated)",
    "alwaysAsk": "Always ask commands (comma-separated)",
    "placeholderCommands": "command1, command2"
  },
  "errors": {
    "insecureUrlError": "Credentials cannot be sent over HTTP to a remote host. Use HTTPS or a local host.",
    "invalidGatewayUrl": "Invalid gateway URL",
    "costNotAvailable": "Cost data not available"
  },
  "chat": {
    "welcome": "Hello, I am {modelName}. How can I help you?",
    "processing": "Processing \"{text}\" with {modelName}. Gateway: {gateway}",
    "requestError": "Could not get response for \"{text}\". Check the gateway and try again.",
    "unauthorizedError": "Unauthorized. Pair with /pair and use the bearer token.",
    "rateLimitError": "Too many requests. Please wait a moment and try again.",
    "timeoutError": "The gateway took too long to respond.",
    "streamUnavailable": "Streaming is not available. Falling back to standard request.",
    "emptyResponse": "The gateway returned no content.",
    "inputPlaceholder": "Type a message...",
    "send": "Send",
    "newChat": "New chat",
    "newSession": "New session",
    "startSession": "Start new session",
    "resumeSession": "Resume session",
    "sessionReady": "Session ready.",
    "sessionResumed": "Session resumed.",
    "sessionCleared": "Session cleared.",
    "sessionUnavailable": "No resumable session is available yet. Start a new session.",
    "sessionActive": "Session: {sessionId}",
    "connectBeforeChat": "Complete gateway onboarding before starting chat.",
    "emptyMessageError": "Enter a message before sending.",
    "approve": "Approve",
    "reject": "Reject",
    "connected": "Connected",
    "disconnected": "Disconnected",
    "toolApprovalTitle": "Tool requires approval",
    "disclaimer": "Corvus Agent can make mistakes. Check important information.",
    "memoryRecalled": "Recalled context",
    "memoryRecallLabel": "Agent recalled memory",
    "memoryRecallHint": "This response used information from the agent's memory."
  },
  "session": {
    "history": "History",
    "justNow": "Just now",
    "minutesAgo": "{count} minute ago | {count} minutes ago",
    "hoursAgo": "{count} hour ago | {count} hours ago",
    "daysAgo": "{count} day ago | {count} days ago",
    "messageCount": "{count} message | {count} messages",
    "sidebarLabel": "Session history",
    "expand": "Expand sidebar",
    "collapse": "Collapse sidebar",
    "noHistory": "No session history yet"
  },
  "webhook": {
    "enabled": "Enabled",
    "secretStatus": "Current secret: {status}",
    "statusConfigured": "configured",
    "statusNotConfigured": "not configured",
    "errorFixBeforeSave": "Please fix the following error before saving."
  },
  "webSearch": {
    "enabled": "Enabled",
    "provider": "Provider",
    "maxResults": "Max results",
    "timeoutSecs": "Timeout (seconds)",
    "braveApiKeyMode": "Brave API key",
    "braveApiKeyValue": "New Brave API key"
  },
  "browser": {
    "computerUseApiKeyMode": "Computer use API key",
    "computerUseApiKeyValue": "New computer use API key"
  },
  "composio": {
    "enabled": "Enabled",
    "entityId": "Entity ID",
    "apiKeyMode": "API key",
    "apiKeyValue": "New API key"
  },
  "actions": {
    "close": "Close",
    "delete": "Delete"
  },
  "nav": {
    "config": "Config",
    "sessions": "Sessions",
    "memory": "Memory",
    "chat": "Chat"
  },
  "sessions": {
    "detail": "Session Detail",
    "empty": "No sessions found",
    "loading": "Loading…",
    "colId": "Session ID",
    "colStatus": "Status",
    "colActions": "Actions",
    "colStarted": "Started",
    "colMessages": "Messages",
    "colLastActivity": "Last Activity",
    "endedAt": "Ended At",
    "statusActive": "Active",
    "statusEnded": "Ended",
    "filterStatus": "Status",
    "filterAll": "All",
    "sortBy": "Sort by",
    "sortLastActivity": "Last Activity",
    "sortStartedAt": "Started At",
    "selectSession": "View session",
    "view": "View",
    "memorySummary": "Memory Summary",
    "noMemoryEntries": "0 entries",
    "viewMemory": "View Memory Entries"
  },
  "memory": {
    "cerebroEndpoint": "Cerebro endpoint",
    "cerebroTimeoutMs": "Cerebro timeout (ms)",
    "cerebroAllowInsecureLoopback": "Allow insecure loopback",
    "cerebroAuthTokenMode": "Auth token",
    "cerebroAuthTokenValue": "New auth token",
    "statsLoading": "Loading stats…",
    "statTotalEntries": "Total Entries",
    "statTotalSessions": "Total Sessions",
    "statActiveSessions": "Active Sessions",
    "statBackend": "Backend",
    "cerebroConfigured": "Configured",
    "cerebroNotConfigured": "Not configured",
    "statCerebro": "Cerebro",
    "statByCategory": "By Category",
    "kicker": "Local Memory",
    "title": "SQLite-backed memory browser",
    "helper": "Local memory stays available even when Cerebro is unconfigured, unreachable, or partially implemented.",
    "loading": "Loading memory entries…",
    "empty": "No memory entries found",
    "colKey": "Key",
    "colCategory": "Category",
    "colTimestamp": "Timestamp",
    "colSessionId": "Session ID",
    "colContent": "Content",
    "colActions": "Actions",
    "delete": "Delete",
    "confirmDelete": "Delete memory entry",
    "confirmDeletePrompt": "Are you sure you want to delete memory entry",
    "confirmYes": "Delete",
    "confirmNo": "Cancel",
    "filterCategory": "Category",
    "filterAll": "All",
    "filterSessionId": "Session ID",
    "sessionIdPlaceholder": "Filter by session…",
    "filterSearch": "Search",
    "searchPlaceholder": "Search content…"
  },
  "pagination": {
    "perPage": "Rows per page",
    "prev": "Previous",
    "page": "Page",
    "total": "total",
    "next": "Next"
  },
  "scheduler": {
    "loading": "Loading scheduler status...",
    "enabled": "Enabled",
    "maxTasks": "Max tasks",
    "maxConcurrent": "Max concurrent",
    "taskCount": "Active tasks",
    "notAvailable": "Not available",
    "yes": "Yes",
    "no": "No"
  },
  "channels": {
    "loading": "Loading channels...",
    "configured": "Configured",
    "notConfigured": "Not configured"
  },
  "cost": {
    "loading": "Loading cost tracking...",
    "enabled": "Enabled",
    "sessionLimit": "Session limit (USD)",
    "dailyLimit": "Daily limit (USD)",
    "monthlyLimit": "Monthly limit (USD)",
    "warnAtPercent": "Warn at percent",
    "allowOverride": "Allow override",
    "liveStatus": "Live status",
    "statusAllowed": "Within budget",
    "statusWarning": "Approaching limit",
    "statusExceeded": "Budget exceeded",
    "periodStable": "stable",
    "sessionSpend": "Session spend",
    "dailySpend": "Daily spend",
    "monthlySpend": "Monthly spend",
    "requests": "Requests",
    "tokens": "Tokens",
    "sessionBudgetUsage": "Session budget usage",
    "dailyBudgetUsage": "Daily budget usage",
    "monthlyBudgetUsage": "Monthly budget usage",
    "usageUnavailable": "Live usage is unavailable. Showing saved policy only.",
    "history": "Recent history",
    "actions": "Operator actions",
    "grantOverride": "Grant next request override",
    "resetSession": "Reset session totals",
    "overrideGranted": "Override granted",
    "sessionReset": "Session totals reset",
    "yes": "Yes",
    "no": "No"
  },
  "mcp": {
    "loading": "Loading MCP servers...",
    "enabled": "Enabled",
    "command": "Command",
    "capabilities": "Capabilities",
    "yes": "Yes",
    "no": "No"
  },
  "tunnel": {
    "loading": "Loading tunnel...",
    "provider": "Provider",
    "cloudflareToken": "Cloudflare token",
    "tailscaleFunnel": "Tailscale funnel",
    "tailscaleHostname": "Tailscale hostname",
    "ngrokAuthToken": "ngrok auth token",
    "ngrokDomain": "ngrok domain",
    "customHealthUrl": "Custom health URL",
    "noData": "No tunnel data available.",
    "yes": "Yes",
    "no": "No"
  },
  "reliability": {
    "loading": "Loading reliability...",
    "providerRetries": "Provider retries",
    "providerBackoff": "Provider backoff",
    "fallbackProviders": "Fallback providers",
    "modelFallbacks": "Model fallbacks",
    "channelInitialBackoff": "Channel initial backoff",
    "channelMaxBackoff": "Channel max backoff",
    "schedulerPoll": "Scheduler poll interval",
    "schedulerRetries": "Scheduler retries",
    "none": "None",
    "unit": {
      "ms": "ms",
      "s": "s"
    }
  },
  "heartbeat": {
    "loading": "Loading heartbeat...",
    "enabled": "Enabled",
    "interval": "Interval (minutes)",
    "unit": "min",
    "noData": "No heartbeat data available.",
    "yes": "Yes",
    "no": "No"
  },
  "updates": {
    "currentVersion": "Current version",
    "latestVersion": "Latest version",
    "updateAvailable": "Update available",
    "autoInstallEnabled": "Auto-install enabled",
    "restartPolicy": "Restart policy",
    "lastCheckOutcome": "Last check outcome",
    "effectiveInstallMethod": "Effective install method",
    "yes": "Yes",
    "no": "No",
    "unknown": "Unknown",
    "never": "Never"
  }
}
