export const ru = {
  app: {
    name: 'kodex',
    product: 'Платформа KODEX',
    online: 'Онлайн',
    slots: 'Слоты',
    owner: 'Владелец',
    search: 'Поиск по проектам, репозиториям, Issues, PR, исполнениям',
    unavailable: 'Недоступно',
    retry: 'Повторить',
    refresh: 'Обновить',
    save: 'Сохранить',
    cancel: 'Отмена',
    close: 'Закрыть',
    open: 'Открыть',
    send: 'Отправить',
    microphone: 'Голосовой ввод',
    loading: 'Загрузка',
    live: 'Работает',
    waitingEndpoint: 'Ждёт endpoint',
    disabled: 'Отключено',
    view: 'Посмотреть',
  },
  navigation: {
    commandCenter: 'Командный центр',
    ownerInbox: 'Входящие',
    executions: 'Исполнения',
    projects: 'Проекты',
    settings: 'Настройки',
    help: 'Справка',
    menu: 'Открыть навигацию',
  },
  context: {
    title: 'Контекст',
    localDevActorType: 'Тип actor для local-dev',
    localDevActorId: 'Id actor для local-dev',
    scopeType: 'Scope type',
    scopeRef: 'Scope ref',
    trustedActorBoundary: 'Actor задаёт trusted edge',
    localDevActorBoundary: 'Actor headers для local-dev',
    missing: 'Укажите scope, а в local-dev режиме также actor, чтобы запросить данные через staff-gateway.',
  },
  commandCenter: {
    title: 'Командный центр',
    description: 'Операторская поверхность для решений, запусков и следующего шага.',
    decisionsOnPage: 'Решения на странице',
    sessionsOnPage: 'Сессии на странице',
    activeRunsOnPage: 'Активные Run на странице',
    runningRunsOnPage: 'Run выполняются',
    waitingRunsOnPage: 'Run ждут',
    problemRunsOnPage: 'Run с проблемами',
    humanGateRunsOnPage: 'Run ждут Human gate',
    currentInboxPageHint: 'Только текущая страница входящих',
    currentAgentPageHint: 'Текущие страницы agent списков',
    dialogueTitle: 'Диалог с agent-manager',
    dialogueUnavailable: 'Командный endpoint ещё не закреплён в staff-gateway.',
    inputPlaceholder: 'Введите сообщение',
    quickActions: 'Быстрые действия',
    createIssue: 'Создать Issue',
    startFlow: 'Запустить flow',
    requestReview: 'Запросить review',
    requestApproval: 'Запросить approval',
    activeWork: 'Активная работа',
    myChecks: 'Мои проверки',
    noAggregate: 'Агрегированная витрина командного центра ещё не доступна.',
    liveSurfaces: 'Готовые зоны',
    waitingSurfaces: 'Зоны без endpoint',
    ownerInboxLive: 'Входящие решения',
    ownerInboxLiveText: 'Список и карточка ответа работают через owner inbox API.',
    runLookupLive: 'Поиск Run по id',
    runLookupLiveText: 'Runtime summary и activity timeline доступны для конкретного Run.',
    runListsLive: 'Списки сессий и Run',
    runListsLiveText: 'Командный центр и экран исполнений читают safe summaries из agent-manager.',
    aggregateWaiting: 'Сводка командного центра',
    aggregateWaitingText: 'Нужен агрегирующий endpoint staff-gateway для Issue, PR/MR и междоменных счётчиков.',
    chatWaiting: 'Диалог с agent-manager',
    chatWaitingText: 'Командный endpoint не закреплён, поэтому ввод и быстрые действия отключены.',
    inputDisabledHint: 'Чат появится после HTTP-контракта staff-gateway для команд agent-manager.',
    latestDecisions: 'Ближайшие решения',
    selfDeploy: {
      title: 'Наблюдение самовыкладки',
      subtitle: 'Сигнал, план и статус выкладки читаются через staff-gateway без автоматического запуска.',
      readinessTitle: 'События самовыкладки',
      readinessText: 'Командный центр читает безопасную сводку provider signal, deploy plan и governance refs.',
      chainStatus: 'Где остановилась цепочка',
      nextStep: 'Следующий безопасный шаг',
      githubSignal: 'Последний provider signal',
      repository: 'Репозиторий / проект',
      branchCommit: 'Refs ветки и commit',
      changedServices: 'Service keys / категории путей',
      servicesFingerprint: 'services.yaml digest / plan fingerprint',
      deployPlan: 'Статус deploy plan',
      ownerDecision: 'Governance / решение владельца',
      runtimeJobs: 'Runtime job refs / ожидаемые jobs',
      safeBoundary: 'Raw webhook body, provider response, diff, полный YAML, tokens, OAuth state/cookies и secrets не отображаются. Автоматический запуск не выполняется.',
      refreshStatus: 'Обновить статус',
      openDecisions: 'Перейти к решениям',
      openExecutions: 'Открыть исполнения',
      decisionTitle: 'Решение владельца',
      decisionText: 'Выберите действие только для текущего pending gate. Gateway зафиксирует решение в governance-manager и не запустит build напрямую.',
      decisionComment: 'Комментарий без секретов и raw payload',
      decisionRecorded: 'Решение записано. Сводка обновляется через доменные read surface.',
      decisionUnavailable: 'Gate ожидает решения, но версия или allowed actions ещё не доступны в безопасной сводке.',
      noAutoDeploy: 'Утверждение снимает gate, но запуск build/deploy остаётся за agent-manager/runtime цепочкой.',
      actions: {
        approve: 'Утвердить',
        reject: 'Отклонить',
        request_changes: 'Запросить доработку',
      },
      unsupportedScope: 'Scope не поддержан',
      unsupportedScopeText: 'Текущий self-deploy read surface доступен для platform, organization, project и repository scope из agent-manager.',
      chainStatuses: {
        not_configured: 'Нет project id',
        project_missing: 'Проект не найден',
        repository_binding_missing: 'Нет repository binding',
        waiting_for_provider_signal: 'Ожидает provider signal',
        provider_signal_found: 'Provider signal найден',
        needs_services_policy_reconcile: 'Нужен reconcile services policy',
        plan_created: 'Self-deploy plan создан',
        governance_gate_pending: 'Governance gate ждёт решения',
        approved_ready_for_build: 'Готово к build',
        blocked: 'Цепочка заблокирована',
      },
      planStatuses: {
        unavailable: 'План недоступен',
        unspecified: 'Статус плана не указан',
        pending_approval: 'Ожидает решения владельца',
        approved: 'Утверждён',
        rejected: 'Отклонён',
        cancelled: 'Отменён',
        failed: 'Ошибка подготовки плана',
      },
      providerSignalStatuses: {
        unavailable: 'Signal недоступен',
        stored_ref: 'Signal сохранён',
      },
      governanceStatuses: {
        unavailable: 'Governance refs недоступны',
        pending: 'Ожидает решения',
        resolved: 'Решение зафиксировано',
      },
      runtimeStatuses: {
        unavailable: 'Runtime refs недоступны',
        pending: 'Ожидает runtime job',
        stored_ref: 'Runtime ref сохранён',
        running: 'Runtime job выполняется',
        completed: 'Runtime job завершён',
        failed: 'Runtime job завершился с ошибкой',
      },
      pathCategories: {
        unspecified: 'Категория не указана',
        service_source: 'Исходный код сервиса',
        service_config: 'Конфигурация сервиса',
        deploy_manifest: 'Deploy manifest',
        runtime_config: 'Runtime config',
        documentation: 'Документация',
        test: 'Тесты',
        platform_policy: 'Платформенная политика',
        services_policy: 'services.yaml policy',
        other: 'Другое',
      },
    },
  },
  inbox: {
    title: 'Входящие и решения',
    description: 'Очередь feedback, approval и Human gate из interaction-hub.',
    filters: 'Фильтры',
    kind: 'Тип',
    status: 'Статус',
    diagnostics: 'Диагностика',
    pageSize: 'Размер страницы',
    nextPage: 'Следующая страница',
    empty: 'Нет входящих решений для текущего фильтра.',
    selectItem: 'Выберите входящее решение.',
    details: 'Детали решения',
    requester: 'Инициатор',
    assignee: 'Назначено',
    deadline: 'Срок',
    delivery: 'Доставка',
    callback: 'Callback',
    response: 'Ответ',
    allowedActions: 'Доступные действия',
    noActions: 'Доступных действий нет.',
    responseSummary: 'Краткий ответ',
    responseReason: 'Причина',
    sendAction: 'Зафиксировать действие',
    answered: 'Ответ зафиксирован.',
    selectedVersion: 'Версия карточки',
    responseHint: 'Ответ сохраняется в interaction-hub. Итоговое доменное решение остаётся у сервиса-владельца.',
    terminalHint: 'Карточка завершена, поэтому новые действия недоступны.',
    noSelectionText: 'Список слева остаётся источником выбора. Действия появляются только в панели деталей.',
    reloadAfterConflict: 'Обновить карточку',
    assignees: 'Назначенные',
    contextRefs: 'Связанные refs',
  },
  executions: {
    title: 'Исполнения и среда',
    description: 'Безопасное чтение списков сессий, сводок Run, runtime и истории действий.',
    runId: 'Run id',
    loadRun: 'Загрузить Run',
    loadLists: 'Загрузить списки',
    listTitle: 'Списки session и Run',
    listText: 'staff-gateway отдаёт safe summaries из agent-manager без прямого чтения БД и без runtime fan-out.',
    runtimeSummary: 'Сводка runtime',
    activityTimeline: 'История действий',
    activityKind: 'Тип события',
    activityStatus: 'Статус события',
    sessionStatus: 'Статус сессии',
    runStatus: 'Статус Run',
    status: 'Статус',
    sessions: 'Сессии',
    runs: 'Run',
    activeRuns: 'Активные Run',
    activeRunsShort: 'Активные',
    runningRuns: 'Выполняются',
    waitingRuns: 'Ждут',
    problemRuns: 'Проблемы',
    completedRuns: 'Завершены',
    latestRun: 'Последний Run',
    job: 'Runtime job',
    jobStatus: 'Статус job',
    observation: 'Наблюдение',
    humanGate: 'Human gate',
    noRun: 'Укажите Run id, чтобы запросить runtime summary и историю действий.',
    noRuns: 'Нет Run для текущего фильтра.',
    noSessions: 'Нет сессий для текущего фильтра.',
    noActivities: 'История действий пуста для текущего фильтра.',
    noRunSummary: 'Краткая сводка Run ещё не получена.',
    noSessionSummary: 'Краткая сводка сессии ещё не получена.',
    waitingReason: 'Причина ожидания',
    safeError: 'Безопасная ошибка',
    needsAttention: 'Нужно внимание',
    safeRefs: 'Безопасные refs',
    safeDetails: 'Безопасные детали',
    lookupTitle: 'Один Run по safe id',
    lookupText: 'Введите известный Run id, если нужно открыть runtime summary и историю действий без выбора из списка.',
    role: 'Роль',
    runtimeRefs: 'Runtime refs',
    timelineFilters: 'Фильтры timeline',
    timestamps: 'Время',
    updatedAt: 'Обновлено',
    version: 'Версия',
    noActivitiesText: 'Для текущего Run и фильтров нет безопасных activity entries.',
    followUp: 'Follow-up',
    activityDigest: 'Digest',
    unsupportedScope: 'Списки session и Run доступны только для scope platform, organization, project или repository. Для service scope остаются доступны другие поверхности.',
  },
  statuses: {
    all: 'Все',
    created: 'Создано',
    routed: 'Маршрутизировано',
    waiting: 'Ожидает',
    answered: 'Отвечено',
    expired: 'Истекло',
    cancelled: 'Отменено',
    failed: 'Ошибка',
    open: 'Открыта',
    feedback: 'Feedback',
    approval: 'Approval',
    human_gate: 'Human gate',
    approve: 'Утвердить',
    reject: 'Отклонить',
    request_changes: 'Запросить доработку',
    answer: 'Ответить',
    defer: 'Отложить',
    acknowledge: 'Подтвердить',
    custom: 'Другое действие',
    unspecified: 'Не указано',
    requested: 'Запрошено',
    starting: 'Запускается',
    running: 'Выполняется',
    completed: 'Завершено',
    not_created: 'Не создано',
    stored_ref: 'Сохранена ссылка',
    live: 'Доступно',
    unavailable: 'Недоступно',
    conflict: 'Конфликт',
    pending: 'Ожидает',
    claimed: 'Назначено',
    succeeded: 'Успешно',
    timed_out: 'Таймаут',
    planned: 'Запланировано',
    started: 'Начато',
    denied: 'Отказано',
    skipped: 'Пропущено',
    lifecycle: 'Жизненный цикл',
    tool_use: 'Вызов инструмента',
    tool_result: 'Результат инструмента',
    permission: 'Разрешение',
    provider_signal: 'Сигнал provider',
    runtime_signal: 'Сигнал runtime',
    checkpoint: 'Контрольная точка',
    other: 'Другое',
  },
  errors: {
    network: 'Сеть недоступна.',
    timeout: 'Запрос занял слишком много времени.',
    canceled: 'Запрос отменён.',
    invalid_request: 'Проверьте параметры запроса.',
    unauthenticated: 'Не передан проверенный actor context.',
    permission_denied: 'Недостаточно прав для операции.',
    not_found: 'Ресурс не найден.',
    conflict: 'Состояние изменилось, обновите данные.',
    stale_version: 'Версия устарела, обновите карточку.',
    downstream_unavailable: 'Доменный сервис временно недоступен.',
    rate_limited: 'Слишком много запросов.',
    unknown: 'Не удалось выполнить запрос.',
    code: 'Код',
    requestId: 'Request id',
    correlationId: 'Correlation id',
  },
};
