// panels + echoPages + agentsContent

export const panelsEn = {
  panels: {
    agents: {
      title: 'Agents',
      connected: 'connected',
      refresh: 'Refresh agent status',
      retry: 'Retry',
      failedToLoad: 'Failed to load agents',
      mcpServer: 'MCP Server',
      stopped: 'Stopped',
      sectionConnected: 'Connected',
      sectionDetected: 'Detected',
      sectionNotDetected: 'Not Detected',
      noAgents: 'No agents detected.',
      autoRefresh: 'Auto-refresh every 30s',
      connect: 'Connect',
      installing: 'Installing...',
      install: 'Install',
      installSuccess: 'Installed',
      installFailed: 'Install failed',
      retryInstall: 'Retry',
      // Snippet section
      copyConfig: 'Copy Config',
      copied: 'Copied!',
      transportLocal: 'Local',
      transportRemote: 'Remote',
      configPath: 'Config path',
      noAuthWarning: 'No auth token — set in Advanced Config',
      // Skills section
      skillsTitle: 'Skills',
      skillsActive: 'active',
      builtinSkills: 'Built-in',
      newSkill: '+ New',
      // Footer
      advancedConfig: 'Advanced Config →',
      channels: 'Channels',
      // Hub nav (aligned with Discover panel rows)
      navOverview: 'Overview',
      navAssistant: 'Assistant',
      navAgent: 'Agent',
      navCapabilities: 'Skills & MCP',
      navRuns: 'Activity Log',
      navPresets: 'Assistant',
      navMcp: 'MCP',
      navSkills: 'Skills',
      navChannels: 'Channels',
      navNetwork: 'Network',
      navSessions: 'Sessions',
      navActivity: 'Activity',
      activitySubtitle: 'Agent operations audit log.',
      activity: {
        loading: 'Loading activity...',
        empty: 'No agent operations logged yet.',
        emptyHint: 'Operations from connected agents will appear here.',
        agentLabel: 'Agent',
      },
      a2aTabTitle: 'Remote Agents',
      a2aTabEmpty: 'No remote agents',
      a2aTabEmptyHint: 'Discover agents to enable cross-agent delegation.',
      a2aRemoveAgent: 'Remove',
      rosterLabel: 'Your setup',
      notFoundDetail: 'This agent app was not detected on this machine. Install it, then refresh the list.',
      skillsEmptyHint: 'Enable and edit skills in Skills & MCP settings.',
      backToList: 'Back',
      closeAgentDetail: 'Close',
      agentDetailPanelAria: 'Agent connection configuration',
      agentDetailTransport: 'Transport',
      agentDetailSnippet: 'Config snippet',
      // A2A
      a2aLabel: 'A2A',
      a2aReady: 'A2A Ready',
      a2aChecking: 'Checking A2A...',
      a2aUnavailable: 'A2A Unavailable',
      a2aRemote: 'Remote',
      a2aDiscover: 'Discover Remote Agent',
      a2aDiscoverHint: 'Connect to an external A2A agent by URL',
      a2aDiscoverPlaceholder: 'https://agent.example.com',
      a2aDiscovering: 'Discovering...',
      a2aDiscoverSuccess: 'Agent discovered!',
      a2aDiscoverFailed: 'No A2A agent found at this URL',
      a2aDiscoverFailedHint: 'The server may not support the A2A protocol. Check the URL and try again.',
      a2aSkills: 'Skills',
      a2aEndpoint: 'Endpoint',
      a2aVersion: 'Version',
      a2aCapabilities: 'A2A Capabilities',
      a2aStatus: 'Status',
      a2aConnected: 'Connected & A2A Ready',
      a2aNoRemote: 'No remote agents',
      a2aNoRemoteHint: 'Discover remote agents to enable cross-agent delegation.',
      a2aDelegations: 'Recent Delegations',
      a2aDelegationsEmpty: 'No delegations yet',
      a2aDelegationCompleted: 'Completed',
      a2aDelegationFailed: 'Failed',
      a2aDelegationPending: 'Pending',
      a2aDelegationCanceled: 'Canceled',
      // ACP / Network tab
      acpSectionTitle: 'Installed Agents',
      acpSectionDesc: (n: number) => `${n} agent${n !== 1 ? 's' : ''} detected`,
      acpNoInstalled: 'No coding agents detected. Install one to delegate tasks directly from MindOS.',
      acpAvailableTitle: 'Available in Registry',
      acpAvailableDesc: (n: number) => `${n} more agent${n !== 1 ? 's' : ''} available`,
      acpShowAvailable: 'Show',
      acpHideAvailable: 'Hide',
      acpCopyCmd: 'Copy',
      acpCopied: 'Copied',
      acpTransportNpx: 'npx',
      acpTransportBinary: 'binary',
      acpTransportUvx: 'uvx',
      acpTransportStdio: 'stdio',
      acpUseAgent: 'Use',
      acpComingSoon: 'Coming soon — use MindOS to invoke',
      acpReady: 'Ready',
      acpNotInstalled: 'Not Installed',
      acpScan: 'Re-scan',
      acpInstallHint: (cmd: string) => `Install with: ${cmd}`,
      acpInstall: 'Install',
      acpInstalling: 'Installing…',
      acpLoading: 'Loading ACP registry\u2026',
      acpLoadFailed: 'Failed to load ACP registry.',
      acpRetry: 'Retry',
      acpQuickReview: 'Review code',
      acpQuickFix: 'Fix bugs',
      acpQuickExplain: 'Explain repo',
      acpUseWith: (name: string) => `Use ${name} to `,
      acpDefaultAgent: 'MindOS',
      acpSelectAgent: 'Select Agent',
      acpChangeAgent: 'Change agent',
      acpConfigToggle: 'Configure',
      acpConfigCommand: 'Command',
      acpConfigArgs: 'Args',
      acpConfigEnv: 'Env',
      acpConfigEnvAdd: 'Add env var',
      acpConfigSource: 'Source',
      acpConfigSourceBuiltin: 'built-in',
      acpConfigSourceRegistry: 'registry',
      acpConfigSourceUser: 'custom',
      acpConfigReset: 'Reset',
      acpConfigSave: 'Save',
      acpConfigSaved: 'Saved',
      acpConfigPath: 'Path',
      networkEmptyTitle: 'Connect to the agent ecosystem',
      networkEmptyDesc: 'Discover remote agents or browse coding agents from the ACP registry.',
      networkDiscoverBtn: 'Discover Agent',
      networkBrowseBtn: 'Browse Registry',
    },
    plugins: {
      title: 'Plugins',
      active: 'active',
      noPlugins: 'No plugins registered',
      core: 'Core',
      coreDisabled: 'Core plugin — cannot be disabled',
      footer: 'Plugins customize how files render. Core plugins cannot be disabled.',
      ready: 'Ready — click to open',
      disabled: 'Disabled',
      noFile: 'Entry file not found',
      createFile: 'Create {file} to activate',
    },
    echo: {
      title: 'Echo',
      imprintTitle: 'Imprint',
      imprintDesc: 'Daily traces and history',
      growthTitle: 'Growth',
      growthDesc: 'The direction you\'re pushing',
      selfTitle: 'Self',
      selfDesc: 'Clues that point back to you',
    },
    discover: {
      title: 'Discover',
      useCases: 'Use Cases',
      useCasesDesc: 'Try MindOS scenarios hands-on',
      pluginMarket: 'Plugin Market',
      pluginMarketDesc: 'Extend how files are rendered and edited',
      skillMarket: 'Skill Market',
      skillMarketDesc: 'Add new abilities to your AI agents',
      spaceTemplates: 'Space Templates',
      spaceTemplatesDesc: 'Pre-built space structures for common workflows',
      comingSoon: 'Coming soon',
      viewAll: 'View all use cases',
      tryIt: 'Try',
    },
    workflows: {
      title: 'Flows',
      empty: 'No flows yet',
      emptyDesc: 'Create your first flow to automate multi-step tasks with AI.',
      newWorkflow: 'New Flow',
      nSteps: (n: number) => `${n} step${n === 1 ? '' : 's'}`,
      parseError: 'Parse error',
      name: 'Name',
      namePlaceholder: 'My Flow',
      template: 'Template',
      templateBlank: 'Blank',
      create: 'Create',
      cancel: 'Cancel',
      creating: 'Creating...',
      exists: 'A workflow with this name already exists',
    },
    im: {
      title: 'CHANNELS',
      emptyTitle: 'No channels configured',
      emptyDesc: 'Connect messaging platforms to let MindOS send messages on your behalf.',
      connected: 'connected',
      notConfigured: 'Set up',
      statusConnected: 'Connected',
      tabStatus: 'Status',
      tabConfigure: 'Configure',
      testSend: 'Test Send',
      recipientPlaceholder: 'Recipient ID',
      messagePlaceholder: 'Hello from MindOS',
      sendTest: 'Send Test',
      sentOk: 'Sent successfully',
      sentWithId: (id: string) => `Sent successfully · ${id}`,
      failed: 'Failed',
      saveConfig: 'Save',
      saved: 'Saved — reconnecting...',
      cancel: 'Cancel',
      fetchError: 'Failed to load channel status.',
      retry: 'Retry',
      disconnect: 'Disconnect',
      confirmDisconnect: 'Confirm?',
      showSecret: 'Show value',
      hideSecret: 'Hide value',
      getStarted: 'Get Started',
      statsConnected: 'Connected',
      statsSupported: 'Supported',
      statsStatus: 'Status',
      statsReady: 'Ready',
      statsNotConfigured: 'Not configured',
      platformsTitle: 'Platforms',
      backToChannels: 'Back to Channels',
      setupGuide: 'Setup Guide',
      setupMethodsTitle: 'Connection options',
      manualSetupTitle: 'Manual setup',
      openSetupLink: 'Open',
      copySetupLink: 'Copy setup link',
      copyLink: 'Copy link',
      copied: 'Copied',
      recommended: 'Recommended',
      setupAvailable: 'Available',
      setupAfterCredentials: 'After credentials',
      setupPlanned: 'Planned',
      setupManualOnly: 'Manual',
      scanQrHint: 'Scan this locally generated QR code to continue on your phone. No credentials are embedded.',
      setupQrAlt: (name: string) => `${name} QR code`,
      howItWorks: 'How it works',
      currentMode: 'Current mode',
      notificationsOnly: 'Notifications only',
      twoWayConversation: 'Two-way conversation',
      conversationTitle: 'Conversation',
      conversationEnable: 'Allow messages from Feishu',
      conversationWaiting: 'Waiting for verification',
      conversationReady: 'Ready for replies',
      conversationDisabled: 'Disabled',
      conversationNeedsPublicUrl: 'Public URL required',
      conversationNeedsEncryptKey: 'Encrypt Key required',
      conversationHint: 'Users can DM the bot, and group messages only trigger when the bot is mentioned.',
      conversationConfigHint: 'Turn this on after you have a reachable public URL and your Feishu Encrypt Key ready.',
      conversationWebhookUrl: 'Webhook URL',
      conversationCopyUrl: 'Copy URL',
      conversationStatus: 'Webhook status',
      conversationReachability: 'Reachability',
      conversationReachabilityHint: 'Feishu must be able to reach this URL from the public internet.',
      conversationOpenPlatform: 'Open Feishu console',
      conversationPublicBaseUrl: 'Public base URL',
      conversationEncryptKey: 'Encrypt Key',
      conversationVerificationToken: 'Verification Token',
      conversationVerificationTokenHint: 'Used for Feishu webhook challenge verification. Leave blank to keep the saved value.',
      conversationSecretPlaceholder: 'Leave blank to keep saved value',
      conversationGroupMentions: 'Only reply when mentioned in groups',
      conversationSaved: 'Conversation settings saved',
      conversationSave: 'Save conversation settings',
      feishuOAuthTitle: 'Feishu authorization',
      feishuOAuthHint: 'Let a user authorize Feishu from MindOS instead of copying IDs by hand.',
      feishuOAuthConnected: 'Authorized as',
      feishuOAuthDisconnected: 'Not authorized yet',
      feishuOAuthAuthorize: 'Authorize with Feishu',
      feishuOAuthOpening: 'Opening...',
      feishuOAuthSetupRequired: 'Save App ID and App Secret first.',
      feishuOAuthOpened: 'Feishu authorization opened.',
      workInMindosHint: 'Use Ask in MindOS to work with the agent. Use this channel to receive updates, alerts, and sample messages.',
      thisIsNotChat: 'This is a delivery channel, not a chat inbox.',
      useCasesTitle: 'What you can receive',
      statusSummaryTitle: 'Status summary',
      botLabel: 'Bot',
      lastActivity: 'Last activity',
      lastRecipient: 'Last recipient',
      noActivityYet: 'No messages sent yet',
      noActivityHint: 'Send a sample message to verify this channel is working.',
      recentActivity: 'Recent activity',
      sendSample: 'Send sample notification',
      sampleHint: 'This sends a real outbound message through the selected channel.',
      settingsTitle: 'Settings',
      settingsHint: 'Maintain credentials and channel settings here.',
      showSettings: 'Show settings',
      hideSettings: 'Hide settings',
      latestSuccess: 'Latest success',
      latestFailure: 'Latest failure',
      noRecentActivity: 'No recent activity',
      notAvailable: 'Not available',
      activityTypeTest: 'Sample message',
      activityTypeAgent: 'Agent update',
      activityTypeManual: 'Manual send',
      activityTypeInbound: 'Inbound message',
      activityTypeReply: 'Bot reply',
      showThinking: 'Show thinking',
      hideThinking: 'Hide thinking',
      disconnectHint: 'Remove credentials and disconnect this platform.',
      editCredentials: 'Update credentials',
      editCredentialsHint: 'Need to rotate tokens or fix a broken connection? Update and save here.',
      guideLink: 'Open setup guide',
      recipientHint: 'Use the platform-specific recipient ID.',
      savedValuesHint: 'Saved values stay hidden. Paste only the values you want to change.',
      required: 'required',
      saving: 'Saving...',
      networkError: 'Network error',
      transportLongHint: 'No public URL needed. Events arrive over WebSocket.',
      transportWebhookHint: 'Requires a public URL reachable by Feishu servers.',
      transportLongEncryptHint: 'Optional for long connection. WebSocket delivery does not require webhook decrypt settings.',
      expandToSee: 'Click to expand',
    },
  },
  echoPages: {
    parent: 'Echo',
    heroKicker: '',
    segmentNavAria: 'Echo sections',
    snapshotBadge: 'Local · private',
    factsHeading: 'Snapshot',
    snapshotImprintTitle: 'Start with one line',
    snapshotImprintBody:
      'Your line saves automatically the moment you leave the field.',
    snapshotGrowthTitle: 'Intent lives here',
    snapshotGrowthBody:
      'Write one sentence about the direction you are pushing. It stays on this device and can change over time.',
    snapshotSelfTitle: 'Coming soon',
    snapshotSelfBody:
      'Notes about you will surface here automatically as your knowledge base grows.',
    insightTitle: 'Insight',
    insightShow: 'Show insight',
    insightHide: 'Hide insight',
    insightHint:
      'Reflects on what you\'ve written on this page. Enable AI in Settings to use.',
    generateInsight: 'Generate insight',
    generateInsightNoAi: 'Enable AI in Settings → AI to use this feature.',
    insightGenerating: 'Generating…',
    insightErrorPrefix: 'Something went wrong:',
    insightRetry: 'Try again',
    imprintChatLabel: 'Reflect on this',
    growthChatLabel: 'Explore this direction',
    selfChatLabel: 'Discover patterns',
    dailyReportTitle: 'Echo Report',
    dailyReportGenerated: 'Generated at',
    dailyReportGenerate: 'Generate report',
    dailyReportGenerating: 'Generating\u2026',
    dailyReportRetry: 'Retry',
    dailyReportContinueAgent: 'Chat about this',
    reportSnapshotTitle: 'Activity',
    reportSnapshotFilesEdited: 'Files edited',
    reportSnapshotFilesCreated: 'Files created',
    reportSnapshotSessions: 'Chat sessions',
    reportSnapshotKbGrowth: 'KB growth',
    reportThemesTitle: 'Themes',
    reportThemeFiles: 'files',
    reportAlignmentTitle: 'Alignment',
    reportAlignmentScore: 'Alignment',
    reportAlignmentAligned: 'Aligned',
    reportAlignmentPartial: 'Partial',
    reportAlignmentMisaligned: 'Drifted',
    reportReflectionTitle: 'For tomorrow',
    dailyLineLabel: 'A line for today',
    dailyLinePlaceholder: 'Write one quiet line…',
    dailySavedNote: 'Saved locally.',
    savedFlash: 'Saved',
    dailyAskPrefill: (line: string) =>
      `Help me reflect on what I wrote today:\n\n${line.trim() || '(nothing written yet)'}`,
    growthIntentLabel: 'What you are steering toward',
    growthIntentPlaceholder: 'Write your current intent…',
    growthSavedNote: 'Saved locally.',
    imprintLead: 'Write one line about today. Generate a report or chat to go deeper.',
    growthLead: 'Write what you\'re working toward. Review it over time to see how it evolves.',
    selfLead: 'Notes about you surface here as your knowledge base grows.',
  },
  agentsContent: {
    title: 'Overview',
    subtitle: 'View Assistant, Agent, Skills & MCP, Channels, and recent activity.',
    workspacePulse: {
      title: 'Your Agents',
      connected: 'Connected',
      detected: 'Detected',
      notFound: 'Not found',
      risk: 'Risks',
      enabledSkills: 'Skills on',
      healthy: 'Healthy',
      needsAttention: (n: number) => `${n} issue${n !== 1 ? 's' : ''}`,
    },
    navOverview: 'Overview',
    navAssistant: 'Assistant',
    navAgent: 'Agent',
    navCapabilities: 'Skills & MCP',
    navRuns: 'Activity Log',
    navPresets: 'Assistant',
    navMcp: 'MCP',
    navSkills: 'Skills',
    navNetwork: 'Network',
    navSessions: 'Sessions',
    navActivity: 'Activity',
    navChannels: 'Channels',
    navAriaLabel: 'Agent workbench sections',
    navBadgeOff: 'Off',
    navBadgeAttention: (n: number) => `${n} attention`,
    navHints: {
      overview: 'Map',
      assistant: 'Profiles',
      agent: 'Runtime endpoints',
      capabilities: 'Skills & MCP',
      runs: 'Activity log',
      presets: 'Profiles',
      mcp: 'Protocol',
      skills: 'Capabilities',
      channels: 'Messaging',
      network: 'Remote',
      sessions: 'Runs',
      activity: 'Audit',
    },
    agentSubtitle: 'Local Runtime, Local Clients, Remote ACP, and Remote A2A.',
    agentOverview: {
      title: 'Agent overview',
      description: 'A compact map of the agent surfaces available from this page.',
      localRuntimeMetric: '3 chat runtimes',
      localClientsMetric: (n: number) => `${n} local client${n === 1 ? '' : 's'}`,
      remoteAcpMetric: 'ACP registry',
      remoteA2aMetric: (n: number) => `${n} connected`,
    },
    runtime: {
      title: 'Local Runtime',
      description: 'MindOS, Codex, or Claude Code for Chat Panel conversations.',
      panelTitle: 'Local Runtime',
      panelDescription: 'MindOS, Codex, or Claude Code in Chat Panel.',
      refresh: 'Refresh runtime status',
      openChat: 'Open in Chat Panel',
      openChatWith: (name: string) => `Chat with ${name}`,
      manageRemote: 'Manage remote agents',
      defaultTag: 'Default',
      statusAvailable: 'Ready',
      statusChecking: 'Checking',
      statusSignedOut: 'Signed out',
      statusError: 'Unavailable',
      statusMissing: 'Missing',
      mindosName: 'MindOS Agent',
      mindosDescription: 'Knowledge, files, tools, and saved chats.',
      mindosDetail: 'Uses your selected MindOS model.',
      codexDescription: 'Local coding sessions and Codex threads.',
      claudeDescription: 'Local coding sessions and Claude history.',
      nativeAvailableDetail: 'Ready on this machine.',
      checkingDetail: (name: string) => `Checking ${name}.`,
      missingDetail: (name: string) => `${name} is not detected by MindOS.`,
      unavailableDetail: 'Runtime is unavailable.',
      remoteName: 'Remote Agent',
      remoteDescription: 'External A2A endpoints that MindOS can discover and delegate work to.',
      remoteCount: (n: number) => `${n} remote agent${n !== 1 ? 's' : ''} connected`,
      remoteChecking: 'Discovering remote agents...',
      remoteEmpty: 'No remote agent connected yet.',
      tagMindosModel: 'MindOS model',
      tagMindosTools: 'Knowledge tools',
      tagMindosHistory: 'Saved chats',
      tagUserInstalled: 'User installed',
      tagLocalSession: 'Local session',
      tagResume: 'Resume',
      tagApprovals: 'Approvals',
      tagToolEvents: 'Tool events',
      tagSessionList: 'Session list',
      tagRemoteDiscovery: 'A2A discovery',
      tagRemoteDelegation: 'Remote delegation',
      contractModelTitle: 'Model ownership',
      contractModelDescription: 'MindOS owns model selection for the built-in agent. Codex and Claude Code keep their own model/auth behavior from the local runtime.',
      contractPermissionTitle: 'Permission ownership',
      contractPermissionDescription: 'Runtime approval prompts are surfaced in MindOS when supported, while the local runtime still enforces the final permission policy.',
      contractSessionTitle: 'Session ownership',
      contractSessionDescription: 'MindOS keeps saved chat links; Codex threads, Claude Code sessions, and remote agent state remain owned by their runtimes.',
    },
    localClients: {
      title: 'Local Clients',
      panelTitle: 'Local Clients',
      description: 'Installed apps, CLIs, and config roots detected on this machine.',
      statusConnected: 'Configured',
      statusDetected: 'Detected',
      statusNotFound: 'Not found',
      groupConnected: 'Configured clients',
      groupDetected: 'Detected, needs setup',
      groupCustom: 'Custom clients',
      groupNotFound: 'Not detected on this machine',
      addCustomClient: 'Add custom client',
      editCustomClient: 'Edit',
      removeCustomClient: 'Remove',
      expandNotFound: 'Show list',
      showMore: (n: number) => `Show ${n} more`,
      emptyTitle: 'No local agent clients found',
      emptyDescription: 'Install a coding agent app or CLI, then refresh agent status to let MindOS detect it.',
      projectScope: 'Project',
      globalScope: 'Global',
      customAgent: 'Custom',
      skillCount: (n: number) => `${n} skill${n !== 1 ? 's' : ''}`,
      noMetadata: 'No local metadata yet',
    },
    acpAgents: {
      title: 'Remote ACP',
      description: 'ACP-compatible coding agents available to MindOS.',
    },
    a2aAgents: {
      title: 'Remote A2A',
      description: 'A2A remote agents for cross-agent delegation.',
    },
    capabilitiesSubtitle: 'Manage MindOS Skills, MCP connections, and MCP-exposed tools.',
    runsSubtitle: 'Review sessions, recent runs, and agent audit records.',
    sessionsSubtitle: 'Active ACP agent sessions.',
    channelsSubtitle: 'Connect messaging platforms to let MindOS send messages on your behalf.',
    activitySubtitle: 'Agent operations audit log.',
    activity: {
      loading: 'Loading activity...',
      empty: 'No agent operations logged yet.',
      emptyHint: 'Operations from connected agents will appear here.',
      agentLabel: 'Agent',
    },
    a2aTabTitle: 'Remote Agents',
    a2aTabEmptyHint: 'Discover agents to enable cross-agent delegation.',
    backToOverview: 'Back to Agents',
    na: 'N/A',
    status: {
      connected: 'Connected',
      detected: 'Detected',
      notFound: 'Not found',
    },
    presets: {
      title: 'Assistant',
      subtitle: 'Manage local Assistant profiles loaded from the hidden MindOS folder.',
      activeLabel: 'Active',
      draftLabel: 'Draft',
      plannedLabel: 'Planned',
      presetRail: 'Assistant profiles',
      promptTitle: 'Prompt file',
      promptHint: 'Edits are written to the selected assistant prompt.md in the local hidden registry.',
      toolsTitle: 'Tools',
      skillsTitle: 'Skills',
      contextTitle: 'Context',
      triggersTitle: 'Run surfaces',
      guardrailsTitle: 'Guardrails',
      contractTitle: 'Runtime contract',
      launchTitle: 'Run',
      launchHint: 'Start from the product surface this assistant owns. Draft and planned assistants stay visible but disabled.',
      overviewSection: 'Overview',
      promptSection: 'Prompt',
      resourcesSection: 'Resources',
      libraryHint: 'Choose an Assistant profile, then inspect how it routes work, what it can touch, and how its prompt is managed.',
      owner: 'Owner',
      runMode: 'Run mode',
      persistence: 'Persistence',
      modelPolicy: 'Model',
      surface: 'Surface',
      openSurface: 'Open surface',
      notRunnable: 'Not runnable yet',
      saveDraft: 'Save prompt',
      resetDefault: 'Reset',
      customDraft: 'Custom draft',
      unsavedDraft: 'Unsaved changes',
      saved: 'Prompt saved',
      saveFailed: 'Prompt save failed',
      reset: 'Changes discarded',
      totalLabel: 'Total',
      scheduledLabel: 'Scheduled',
      profileSection: 'Profile',
      localRoot: '.mindos/assistants',
      localRootHint: 'Loaded from the local hidden assistant folder.',
      loading: 'Loading assistants...',
      loadFailed: 'Failed to load assistants.',
      retry: 'Retry',
      emptyTitle: 'No local assistants found',
      emptyHint: 'Create .mindos/assistants/<assistant-id>/prompt.md to add one.',
      readyLabel: 'Ready',
      needsPromptLabel: 'Needs prompt',
      promptReadyLabel: 'Prompt ready',
      profileReadyLabel: 'Profile ready',
      localFileLabel: 'Local files',
      localOwnerLabel: 'Local',
      promptMissingHint: 'This assistant does not have a prompt.md yet. Write one here and save it to create the file.',
      saveProfile: 'Save profile',
      profileSaved: 'Profile saved',
      nameLabel: 'Name',
      descLabel: 'Description',
      scheduleLabel: 'Schedule',
      scheduleManual: 'Manual',
      scheduleDaily: 'Daily',
      scheduleWeekly: 'Weekly',
      roleTitle: 'Role',
      inputTitle: 'Inputs',
      outputTitle: 'Output',
      boundaryTitle: 'Boundaries',
      noResources: 'No explicit skills or MCP entries are defined in profile.json yet.',
      notDefinedYet: 'Not defined yet.',
      fileReadyLabel: 'ready',
      fileMissingLabel: 'missing',
      systemModelDefault: 'Use system model',
      profileInvalidJson: 'Profile JSON needs repair',
      profileUnreadable: 'Profile unreadable',
      builtinLabel: 'Built-in',
      customLabel: 'Custom',
      protectedLabel: 'Protected',
      deleteAssistant: 'Delete',
      deleteFailed: 'Assistant delete failed',
      deleted: 'Assistant deleted',
      runningLabel: 'Running',
      runFailed: 'Run failed',
      runCompleted: 'Run completed',
      preferredAgentLabel: 'Preferred agent',
      mcpTitle: 'MCP',
      searchPlaceholder: 'Search assistants...',
      filterAll: 'All assistants',
      filterBuiltin: 'Built-in',
      filterCustom: 'Custom',
      filterNeedsPrompt: 'Needs prompt',
      newAssistant: 'New Assistant',
      createAssistant: 'Create',
      cancel: 'Cancel',
      assistantIdLabel: 'Assistant ID',
      noMatchesTitle: 'No matching assistants',
      noMatchesHint: 'Try another name, ID, skill, or MCP filter.',
      inspectorTitle: 'Inspector',
      recentRunLabel: 'Recent run',
      promptPlaceholder: (name: string) => `# ${name}\n\n## Role\n\nDescribe how this assistant should help.`,
    },
    overview: {
      connected: 'Connected',
      detected: 'Detected',
      notFound: 'Not found',
      riskQueue: 'Attention',
      noRisk: 'All clear — no issues detected.',
      usagePulse: 'All agents',
      nextAction: 'Suggested next',
      nextActionHint: 'Reconnect detected agents first, then enable remaining skills.',
      riskLevelError: 'Error',
      riskLevelWarn: 'Warning',
      na: 'N/A',
      colAgent: 'Agent',
      colStatus: 'Status',
      colMcp: 'MCP',
      colSkills: 'Skills',
      colMode: 'Mode',
      colRuntime: 'Runtime',
      pulseMcp: 'MCP',
      pulseTools: 'Tools',
      mcpOffline: 'Offline',
      toolsUnit: (n: number) => `${n} tools`,
      profilesUnit: (n: number) => `${n} profile${n === 1 ? '' : 's'}`,
      runtimeEndpointsUnit: (n: number) => `${n} endpoint${n === 1 ? '' : 's'}`,
      entryPointsUnit: (n: number) => `${n} entry point${n === 1 ? '' : 's'}`,
      enabledUnit: (n: number) => `${n} enabled`,
      agentCount: (n: number) => `${n} agent${n !== 1 ? 's' : ''}`,
      runtimeActive: 'Active',
      riskMcpStopped: 'MCP server is not running.',
      riskDetected: (n: number) => `${n} detected agent(s) need configuration.`,
      riskSkillsDisabled: 'All skills are disabled.',
      systemModelTitle: 'System model',
      systemModelDescription: 'Assistant profiles route work to execution Agents; Agents use Skills & MCP to act.',
      systemFlowTitle: 'Execution flow',
      systemReadinessTitle: 'Readiness',
      systemReadinessMeta: (passed: number, total: number) => `${passed}/${total} checks passed`,
      systemSignalsTitle: 'Signals',
      assistantLabel: 'Assistant',
      assistantDescription: 'Profiles, roles, and product entry points',
      agentLabel: 'Agent',
      agentDescription: 'MindOS Agent, Codex, Claude Code, Remote Agent',
      capabilitiesLabel: 'Skills & MCP',
      capabilitiesDescription: 'Skills, MCP connections, and exposed tools',
      runsLabel: 'Runs',
      runsDescription: 'Sessions, run history, and audit',
      channelsLabel: 'Channels',
      channelsDescription: 'Messaging entry points',
      flowSummary: 'Assistant decides who should work; Agent executes; Skills & MCP provide tools; Channels deliver results.',
      statusTitle: 'Status',
      availableLabel: 'available',
      readyLabel: 'ready',
      needsAttentionLabel: (n: number) => `${n} needs attention`,
      assistantStatusMeta: (n: number) => `${n} profile${n === 1 ? '' : 's'} ready for product surfaces`,
      agentStatusMeta: (connected: number, detected: number) => `${connected} connected, ${detected} waiting for configuration`,
      capabilitiesStatusMeta: (tools: number, skills: number) => `${tools} MCP tools, ${skills} skills on`,
      runsStatusValue: 'review',
      runsStatusMeta: 'Sessions and audit records stay available for inspection.',
      channelsStatusValue: 'configure',
      channelsStatusMeta: 'Telegram, Slack, Feishu, Discord, and more connect here.',
      nextActionsTitle: 'Next steps',
      nextActionsHealthyTitle: 'Ready',
      nextActionsHealthyHint: 'The system is ready. Review routing, channels, or activity when needed.',
      actionMcpStoppedTitle: 'Fix the MCP connection',
      actionMcpStoppedHint: 'Agent endpoints cannot use MindOS tools until MCP is running.',
      actionDetectedTitle: (n: number) => `Configure ${n} detected Agent${n === 1 ? '' : 's'}`,
      actionDetectedHint: 'Finish setup for clients already found on this machine.',
      actionSkillsDisabledTitle: 'Enable needed capabilities',
      actionSkillsDisabledHint: 'Turn on skills before assigning them to Agents.',
      actionConfigureAssistantTitle: 'Review Assistant routing',
      actionConfigureAssistantHint: 'Check which Agent each profile should prefer.',
      actionReviewRunsTitle: 'Review recent runs',
      actionReviewRunsHint: 'Inspect sessions and audit records for unexpected behavior.',
      actionOpen: 'Open',
      viewAllSignals: 'View all signals',
      recentActivity: 'Recent runs',
      viewAll: 'View all',
      showLess: 'Show less',
      addCustomAgent: 'Add your own agent',
      addCustomAgentTitle: 'Add Custom Agent',
      editCustomAgentTitle: (name: string) => `Edit ${name}`,
      customAgentName: 'Agent Name',
      customAgentNamePlaceholder: 'e.g. QCLaw, WorkBuddy',
      customAgentDir: 'Config Directory',
      customAgentDirPlaceholder: '~/.qclaw/',
      customAgentDirHint: 'Common: ~/.xxx/ or ~/Library/Application Support/',
      customAgentKeyPreview: (key: string) => `Key: ${key}`,
      customAgentContinue: 'Continue',
      customAgentDetecting: 'Detecting...',
      customAgentDirFound: 'Directory found',
      customAgentDirNotFound: 'Not found yet — agent will appear when installed',
      customAgentDetectTimeout: 'Detection timed out, using defaults',
      customAgentDetectedTitle: 'Detected Configuration',
      customAgentDefaultTitle: 'Default Configuration',
      customAgentConfigLabel: 'MCP Config',
      customAgentFormatLabel: 'Format',
      customAgentTransportLabel: 'Transport',
      customAgentSkillsLabel: 'Skills',
      customAgentSkillsFound: (n: number) => `${n} skill${n !== 1 ? 's' : ''} found`,
      customAgentSkillsNone: 'Not detected',
      customAgentSkillDir: 'Skills Directory',
      customAgentSkillDirHint: 'Where skills are installed for this agent',
      customAgentSkillDirPlaceholder: '~/.xxx/skills/',
      customAgentCustomize: 'Customize these settings',
      customAgentAdd: 'Add Agent',
      customAgentAdding: 'Adding...',
      customAgentSave: 'Save Changes',
      customAgentSaving: 'Saving...',
      customAgentRetry: 'Retry',
      customAgentAdded: (name: string) => `${name} added`,
      customAgentUpdated: (name: string) => `${name} updated`,
      customAgentRemoved: (name: string) => `${name} removed`,
      customAgentRemoveTitle: (name: string) => `Remove "${name}"?`,
      customAgentRemoveMessage: 'This removes the agent from MindOS. No files will be deleted on disk.',
      customAgentRemoveConfirm: 'Remove',
      customAgentConfigPath: 'MCP Config File Path',
      customAgentConfigKey: 'Config Key',
      customAgentFormat: 'Format',
      customAgentTransport: 'Transport',
      customAgentProjectConfig: 'Project Config (optional)',
      customAgentCliBinary: 'CLI Binary (optional)',
      customAgentCliBinaryPlaceholder: 'e.g. qclaw',
      customAgentEdit: 'Edit',
      customAgentRemove: 'Remove',
      customAgentCancel: 'Cancel',
      customAgentNetworkError: 'Network error. Please try again.',
      customAgentFailedSave: 'Failed to save',
      customAgentFailedRemove: 'Failed to remove',
      customAgentKeyConflict: (key: string) => `An agent with key "${key}" already exists`,
      customAgentBuiltinConflict: (name: string) => `Conflicts with reserved Agent "${name}"`,
    },
    mcp: {
      title: 'MCP Connections',
      refresh: 'Refresh',
      connectionGraph: 'Server connections across agents',
      tabs: {
        manage: 'Manage',
        topology: 'Topology',
        byAgent: 'By Agent',
        byServer: 'By MCP Server',
      },
      searchPlaceholder: 'Search agents...',
      installMindos: 'Install MindOS MCP',
      installed: 'Installed',
      mcpServerLabel: 'MCP Server',
      searchServersPlaceholder: 'Search MCP servers...',
      serverAgentCount: (n: number) => `${n} agent${n !== 1 ? 's' : ''}`,
      emptyState: 'No agents match current filters.',
      resultCount: (n: number) => `${n} agents`,
      filteredSummaryTitle: 'Filtered status summary',
      filteredConnected: (n: number) => `Connected: ${n}`,
      filteredDetected: (n: number) => `Detected: ${n}`,
      filteredNotFound: (n: number) => `Not found: ${n}`,
      crossAgentServersTitle: 'MCP Servers',
      crossAgentServersEmpty: 'No MCP servers detected.',
      crossAgentServerAgents: (names: string) => `Used by ${names}`,
      configVisibilityTitle: 'Configuration',
      hiddenRootDetected: (n: number, total: number) => `Hidden roots: ${n}/${total}`,
      runtimeSignalDetected: (n: number, total: number) => `Runtime signals: ${n}/${total}`,
      riskQueueTitle: 'Attention',
      riskMcpStopped: 'MCP server is not running.',
      riskDetected: (n: number) => `${n} detected agent(s) need configuration.`,
      riskNotFound: (n: number) => `${n} agent(s) not found on this machine.`,
      riskSkillsDisabled: 'All skills are disabled.',
      bulkReconnectFiltered: 'Reconnect all',
      bulkRunning: 'Running reconnect...',
      bulkSummary: (ok: number, failed: number) => `Reconnected ${ok}, failed ${failed}.`,
      transportFilters: {
        all: 'All transport',
        stdio: 'stdio',
        http: 'http',
        other: 'other',
      },
      filters: {
        all: 'All',
        connected: 'Connected',
        detected: 'Detected',
        notFound: 'Not found',
      },
      table: {
        agent: 'Agent',
        status: 'Status',
        transport: 'Transport',
        actions: 'Actions',
      },
      actions: {
        copySnippet: 'Copy Snippet',
        copied: 'Copied',
        testConnection: 'Test Connection',
        reconnect: 'Reconnect',
      },
      addAgent: 'Add',
      removeFromServer: 'Remove',
      confirmRemoveTitle: 'Remove from server?',
      confirmRemoveMessage: (agent: string, server: string) => `Remove "${agent}" from "${server}"? The agent config will be updated automatically.`,
      cancel: 'Cancel',
      noAvailableAgents: 'All agents already connected.',
      manualRemoveHint: 'Flagged for removal — edit the agent config to finalize.',
      removeSuccess: 'Removed. Restart your agent to apply.',
      removeFailed: 'Failed to remove. Try editing the config file manually.',
      reconnectAllInServer: 'Reconnect all',
      reconnectAllRunning: 'Reconnecting...',
      reconnectAllDone: (ok: number, failed: number) => `Done: ${ok} reconnected${failed > 0 ? `, ${failed} failed` : ''}.`,
      serverTransport: (t: string) => `Transport: ${t}`,
      mcpDisabledMessage: 'MCP mode is not enabled.',
      mcpDisabledHint: 'Enable it in Settings → Connections to use MCP agents.',
    },
    skills: {
      title: 'Skills',
      summaryTitle: 'Skill Status',
      summaryEnabled: (n: number) => `Enabled: ${n}`,
      summaryDisabled: (n: number) => `Disabled: ${n}`,
      summaryAttention: (n: number) => `Needs attention: ${n}`,
      crossAgentSkillsTitle: 'Installed Skills',
      crossAgentSkillsEmpty: 'No skills detected.',
      crossAgentSkillAgents: (names: string) => `Installed in ${names}`,
      capabilityGroups: 'Skill management across agents',
      registrySummaryTitle: 'Skill Registry',
      registryUniversal: (n: number) => `Universal: ${n}`,
      registryAdditional: (n: number) => `Additional: ${n}`,
      registryUnsupported: (n: number) => `Unsupported: ${n}`,
      registryHiddenRoots: (n: number, total: number) => `Hidden roots: ${n}/${total}`,
      tabs: {
        manage: 'Manage',
        matrix: 'Matrix',
        bySkill: 'By Skill',
        byAgent: 'By Agent',
      },
      searchPlaceholder: 'Search skills...',
      agentSkillMode: 'Skill Mode',
      agentMcpServers: 'MCP Servers',
      agentNativeSkills: 'Native Skills',
      agentMindosSkills: 'MindOS Skills',
      noAgentsYet: 'No agents detected yet.',
      moreSkills: (n: number) => `+${n} more`,
      sourceAll: 'All',
      sourceBuiltin: 'Built-in',
      sourceUser: 'Custom',
      sourceNative: 'Native',
      availabilityGlobal: 'Global',
      availabilityLinked: 'Linked',
      availabilityNativePrivate: 'Native private',
      summaryNative: (n: number) => `Native: ${n}`,
      statusAll: 'All status',
      statusEnabled: 'Enabled',
      statusDisabled: 'Disabled',
      statusAttention: 'Needs attention',
      capabilityAll: 'All capabilities',
      bulkEnableFiltered: 'Enable all',
      bulkDisableFiltered: 'Disable all',
      bulkRunning: 'Applying changes...',
      bulkNoChanges: 'No skill changes needed.',
      bulkAllSucceeded: (n: number) => `Updated ${n} skills.`,
      bulkPartialFailed: (ok: number, failed: number) => `Updated ${ok}, failed ${failed}.`,
      resultCount: (n: number) => `${n} skills`,
      matrixAgentFocusLabel: 'Agent focus',
      matrixAgentFocusAll: 'All agents',
      matrixColumnSkill: 'Skill',
      matrixEnabled: 'Enabled',
      matrixDisabled: 'Disabled',
      matrixUnsupported: 'Unsupported',
      matrixNoAgents: 'No agents available for matrix.',
      noSkillsMatchFilter: 'No skills match current filters.',
      matrixEmpty: 'No skills match current filters.',
      addAgentToSkill: 'Add',
      removeAgentFromSkill: 'Remove',
      confirmRemoveAgentTitle: 'Remove from skill?',
      confirmRemoveAgentMessage: (agent: string, skill: string) => `Remove "${agent}" from "${skill}"? This requires editing the agent config file.`,
      cancelSkillAction: 'Cancel',
      noAvailableAgentsForSkill: 'All agents already have this skill.',
      manualSkillHint: 'Flagged — edit the agent config to finalize.',
      linkSkillSuccess: (skill: string, agent: string) => `Linked "${skill}" to ${agent}.`,
      linkSkillFailed: (skill: string, agent: string, reason: string) => `Failed to link "${skill}" to ${agent}: ${reason}`,
      linkSkillUnsupported: 'This agent cannot receive skills automatically.',
      nativeSkillSourceMissing: 'Native skill source path is missing.',
      skillDescription: 'Description',
      skillNoDescription: 'No description available.',
      skillDeleteAction: 'Delete',
      confirmDeleteSkillTitle: 'Delete skill?',
      confirmDeleteSkillMessage: (name: string) => `Permanently delete skill "${name}"? This cannot be undone.`,
      skillDeleted: 'Skill deleted.',
      skillDeleteFailed: 'Failed to delete skill.',
      copyInstallCmd: 'Copy install command',
      installCmdCopied: 'Copied!',
      skillAgentCount: (n: number) => `${n} agent${n === 1 ? '' : 's'}`,
      quickStatsMcp: (n: number) => `${n} MCP`,
      quickStatsSkills: (n: number) => `${n} skills`,
      showAllNative: (n: number) => `Show all ${n}`,
      collapseNative: 'Collapse',
      emptyGroup: 'No skills in this group.',
      groupLabels: {
        research: 'Research',
        coding: 'Coding',
        docs: 'Docs',
        ops: 'Ops',
        memory: 'Memory',
      },
      skillPopover: {
        close: 'Close',
        source: 'Source',
        sourceBuiltin: 'Built-in',
        sourceUser: 'Custom',
        sourceNative: 'Native',
        capability: 'Capability',
        path: 'File path',
        enabled: 'Enabled',
        disabled: 'Disabled',
        agents: 'Agents',
        noAgents: 'No agents have this skill.',
        content: 'Skill content',
        loading: 'Loading...',
        loadFailed: 'Failed to load skill content.',
        retry: 'Retry',
        copyContent: 'Copy',
        copied: 'Copied!',
        noDescription: 'No description available.',
        deleteSkill: 'Delete',
        confirmDeleteTitle: 'Delete skill?',
        confirmDeleteMessage: (name: string) => `Permanently delete skill "${name}"? This cannot be undone.`,
        confirmDeleteAction: 'Delete',
        cancelAction: 'Cancel',
        deleted: 'Skill deleted.',
        deleteFailed: 'Failed to delete skill.',
      },
    },
    detail: {
      healthStripTitle: 'Status',
      healthConnected: 'Connected',
      healthInstalled: 'MCP installed',
      healthRuntimeSignals: 'Runtime signals',
      healthConfiguredServers: 'Configured servers',
      healthInstalledSkills: 'Native installed skills',
      identity: 'Identity',
      connection: 'Connection',
      capabilities: 'Capability Profile',
      skillAssignments: 'Skill Assignments',
      runtimeSignals: 'Runtime',
      recentActivity: 'Recent Activity',
      spaceReach: 'Space Reach',
      agentKey: 'Agent key',
      status: 'Status',
      transport: 'Transport',
      endpoint: 'Endpoint',
      port: 'Port',
      auth: 'Auth',
      authConfigured: 'Configured',
      authMissing: 'Missing',
      projectScope: 'Project scope',
      globalScope: 'Global scope',
      format: 'Config format',
      skillMode: 'Skill mode',
      hiddenRoot: 'Hidden root path',
      hiddenRootPresent: 'Hidden root',
      conversationSignal: 'Conversation',
      usageSignal: 'Usage',
      lastActivityAt: 'Last active',
      skillsAll: 'All skills',
      skillsEnabled: 'Enabled skills',
      skillsSourceBuiltin: 'Built-in',
      skillsSourceUser: 'Custom',
      skillsSearchPlaceholder: 'Search all configured skills...',
      skillsFilterAll: 'All',
      skillsFilterBuiltin: 'Built-in',
      skillsFilterUser: 'Custom',
      skillEnable: 'Enable',
      skillDisable: 'Disable',
      skillLink: 'Link',
      skillAlreadyLinked: 'Linked',
      skillBoundaryGlobal: 'Global',
      skillBoundaryLinked: 'Linked',
      skillBoundaryNativePrivate: 'Native private',
      skillNativePrivateHint: 'Native skills belong to this agent until you link them into another agent workspace.',
      skillLinkSuccess: (skill: string, agent: string) => `Linked "${skill}" to ${agent}.`,
      skillLinkFailed: (skill: string, agent: string, reason: string) => `Failed to link "${skill}" to ${agent}: ${reason}`,
      skillReceiveUnsupported: 'This agent cannot receive skills automatically.',
      skillEdit: 'Edit',
      skillSave: 'Save',
      skillCancel: 'Cancel',
      skillActionLoading: 'Working...',
      skillReadFailed: 'Failed to read skill content.',
      skillSaveFailed: 'Failed to save skill content.',
      mcpManagement: 'MCP Management',
      mcpInstalled: 'Installed',
      mcpScope: 'Current scope',
      mcpConfigPath: 'Config path',
      mcpTargetScope: 'Target scope',
      mcpTargetTransport: 'Target transport',
      mcpScopeProject: 'Project',
      mcpScopeGlobal: 'Global',
      mcpCopySnippet: 'Copy snippet',
      mcpCopied: 'Copied',
      mcpRefresh: 'Refresh status',
      mcpReconnect: 'Apply MCP config',
      mcpApplying: 'Applying MCP config...',
      mcpApplySuccess: 'MCP config applied.',
      mcpApplyFailed: 'Failed to apply MCP config.',
      nativeInstalledSkills: 'Installed Skills',
      nativeInstalledSkillsCount: (n: number) => `${n} detected`,
      nativeInstalledSkillsEmpty: 'No installed skills detected.',
      nativeInstalledSkillsMore: (n: number) => `+${n} more`,
      configuredMcpServers: 'MCP Servers',
      configuredMcpServersCount: (n: number) => `${n} detected`,
      configuredMcpServersEmpty: 'No MCP servers configured.',
      configuredMcpServersMore: (n: number) => `+${n} more`,
      yes: 'Yes',
      no: 'No',
      noSkills: 'No enabled skills.',
      noActivity: 'No activity recorded yet.',
      noSpaceReach: 'No space reach data yet.',
      skillDelete: 'Delete',
      skillDeleteConfirm: (name: string) => `Delete skill "${name}"? This cannot be undone.`,
      skillDeleteSuccess: 'Skill deleted.',
      skillDeleteFailed: 'Failed to delete skill.',
      mcpServerAdd: 'Add MCP server',
      mcpServerRemove: 'Remove',
      mcpServerRemoveConfirm: (name: string) => `Remove "${name}" from this agent? This requires editing the config file.`,
      mcpServerHint: 'Flagged — edit the agent config to finalize.',
      mcpReconnectAll: 'Reconnect all',
      mcpReconnectAllRunning: 'Reconnecting...',
      mcpReconnectAllDone: (ok: number, failed: number) => `Reconnected ${ok}${failed > 0 ? `, failed ${failed}` : ''}.`,
      // ─── Runtime & Diagnostics ───
      runtimeDiagTitle: 'Runtime & Diagnostics',
      runtimePing: 'Ping',
      runtimePinging: 'Pinging...',
      runtimePingOk: (ms: number) => `Reachable (${ms}ms)`,
      runtimePingFail: 'Unreachable',
      runtimeUptime: 'Uptime',
      runtimePid: 'Process',
      runtimeMemory: 'Memory',
      runtimeVersion: 'Version',
      runtimeStartedAt: 'Started',
      runtimeNoData: 'No runtime data available.',
      // ─── Environment & Permissions ───
      envPermTitle: 'Environment & Permissions',
      envVars: 'Environment variables',
      envVarsCount: (n: number) => `${n} configured`,
      envVarsEmpty: 'No custom environment variables.',
      envScope: 'Scope',
      envReadOnly: 'Read-only access',
      envWriteAccess: 'Write access',
      envFileAccess: 'File access',
      envNetworkAccess: 'Network access',
      envAllowed: 'Allowed',
      envRestricted: 'Restricted',
      // ─── Activity & Usage ───
      activityTitle: 'Activity & Usage',
      activityTotal: 'Total invocations',
      activityLast7d: 'Last 7 days',
      activityLastInvocation: 'Last invocation',
      activityTokensUsed: 'Tokens used',
      activityAvgLatency: 'Avg latency',
      activityNoData: 'No activity recorded yet.',
      knowledgeInteraction: 'Knowledge Interaction',
      knowledgeNoData: 'No interactions yet. Agents will show activity here once they start working with your knowledge base.',
      recentOps: 'Recent Operations',
      statTotalCalls: 'Total calls',
      statFilesTouched: 'Files touched',
      statReadWrite: 'Read / Write',
      statHealth: 'Health',
      viewFullLog: 'View full log',
      showLess: 'Show less',
    },
    detailSubtitle: '',
    detailNotFound: 'Agent not found — it may have been removed or renamed.',
    detailNotFoundHint: 'The agent may have disconnected or its configuration file was moved. Try restarting the agent or check the MCP configuration.',
    detailNotFoundSuggestion: 'Connected agents you can explore:',
  },
} as const;
