# =============================================================================
# TAKT UI Labels — 日本語
# =============================================================================
# ユーザー向け表示文字列（AIプロンプトではない）。
# テンプレート変数は {variableName} 形式を使用します。
# =============================================================================

# ===== Interactive Mode UI =====
taskStop:
  label: "Stop（停止依頼）"
  description: "停止を依頼します。worker が自分で中断し、終端状態を決めます"
  confirm: '実行中のタスク「{name}」に停止を依頼しますか？ 終端状態は worker が決めます。'
  staleOwner: "所有者が生きていないため停止を依頼できません。Mark as failed を使用してください。"
  missingExecutionId: "実行IDがないため停止を依頼できません。"
  rejected: "停止依頼が拒否されました: {reason}"
  requested: '「{name}」に停止を依頼しました。worker が自分で中断し、終端状態を決めます。'

taskDeletion:
  statusOption: "削除対象の状態で絞り込む（pending|completed|failed|exceeded|pr_failed、複数指定可）"
  goalOption: "削除対象のゴールIDで絞り込む"
  invalidStatus: "削除対象に指定できない状態です: {status}。pending、completed、failed、exceeded、pr_failedを指定してください。"
  filtersRequired: "削除には --status、--goal、--branch のいずれかが必要です。"
  preview: "削除対象のタスク（プレビュー。削除するには --yes を指定）:"
  previewTask: "タスク名: {name} | 状態: {status} | ブランチ: {branch} | ゴール: {goal}"
  empty: "削除条件に一致するタスクはありません。"
  deleted: "タスクを削除しました: {name}"
  failed: "タスクの削除に失敗しました: {name}"
  failedWithError: "タスク {name} の削除に失敗しました: {error}"

interactive:
  operation:
    taskSaved: "タスクを保存しました: {taskName}。"
    saveCancelled: "タスク保存をキャンセルしました。タスクは保存されていません。"
    issueSaved: "Issue #{issueNumber} を作成し、タスクを保存しました: {taskName}。"
    issueSavedWithoutNumber: "Issue を作成し、タスクを保存しました: {taskName}。Issue 番号は返されていません。"
    issueSaveCancelled: "Issue #{issueNumber} 作成後にタスク保存をキャンセルしました。タスクは保存されていません。理由: {reason}"
    issueFailed: "Issue 作成に失敗しました。タスクは保存されていません。理由: {reason}"
    issueNumberUnknown: "Issue は作成されましたが番号を取得できませんでした。タスクは保存されていません。理由: {reason}"
    issueNotSaved: "Issue #{issueNumber} は作成されましたがタスクは保存されていません。理由: {reason}"
    issueOnlyCreated: "Issue #{issueNumber} を作成しました。タスクは保存されていません。"
    issueOnlyNumberUnknown: "Issue は作成されましたが番号を取得できませんでした。タスクは保存されていません。理由: {reason}"
    issueOnlyFailed: "Issue 作成に失敗しました。タスクは保存されていません。理由: {reason}"
    executionFinished: "ワークフローの実行が終了しました。結果: 成功。"
    executionFailed: "ワークフローの実行が終了しました。結果: 失敗。"
    executionFailedWithReason: "ワークフローの実行が終了しました。結果: 失敗。理由: {reason}"
    executionCancelled: "ワークフローの実行開始前にキャンセルしました。"
    failed: "操作 {action} に失敗しました。理由: {reason}"
    reference: "操作結果（引用された参照情報）"
  sourceContextLabel: "Source Context"
  userCommentLabel: "ユーザーからのコメント"
  conversationLabel: "会話:"
  noTranscript: "（ローカル履歴なし。現在のセッション文脈を要約してください。）"
  formalSpecPrompt: "形式仕様モード（Alloy, Quint）を有効にしますか？ モードの既定値は assistant.formal_spec.mode（または旧 scalar 形式の assistant.formal_spec）で変更できます。"
  ui:
    intro: "対話モード - タスク内容を入力してください。準備ができたら /go で指示書を作成・実行し、実行中タスクへの追加指示は /tell で送信します。"
    introGrillMe: "Grill Meモード - 推奨案付きの質問を1問ずつ行い、要件を固めます。準備ができたら /go で指示書を作成・実行するか、/tell で実行中タスクへ追加指示を送信します。"
    introWithoutTell: "対話モード - タスク内容を入力してください。準備ができたら /go で指示書を作成・実行します。"
    introGrillMeWithoutTell: "Grill Meモード - 推奨案付きの質問を1問ずつ行い、要件を固めます。準備ができたら /go で指示書を作成・実行します。"
    resume: "前回のセッションを再開します"
    noConversation: "まだ会話がありません。まずタスク内容を入力してください。"
    thinking: "アシスタントが応答を作成中..."
    creatingInstruction: "指示書を作成中..."
    summarizeFailed: "会話の要約に失敗しました。再度お試しください。"
    continuePrompt: "続けてタスク内容を入力してください。"
    proposed: "提案されたタスク指示:"
    actionPrompt: "どうしますか？"
    issueSaveTaskConfirm: "タスクにつみますか？"
    executeConfirm: "このワークフローが終わるまでこの TUI は使えなくなります。通常はタスクにつんで `takt run` で実行します。続けますか？"
    actions:
      execute: "その場で実行する"
      createIssue: "Issueを建てる"
      saveTask: "タスクにつむ"
      continue: "会話を続ける"
    cancelled: "キャンセルしました"
    acceptNoAssistant: "アシスタント発言が見つかりません。まずタスク内容を入力してください。"
    retryNoOrder: "前回の指示書（order.md）が見つかりません。/retry はリトライ時のみ使用できます。"
    pasteImageUnavailable: "/paste-image は対話入力中の画像添付にのみ使用できます。"
    verifyUnavailable: "/verify は形式仕様モードでのみ使用できます。"
    personaFallback: "先頭ステップにペルソナがありません。アシスタントモードにフォールバックします。"
    assistantRetryUnavailableGuidance: "/requeue と /retry はこの会話ではタスク状態を変更できないため利用できません。ユーザーがどちらかを入力した場合は利用できないことを説明し、入力は通常の会話として扱ってください。"
  modeSelection:
    prompt: "対話モードを選択してください:"
    assistant: "アシスタント"
    assistantDescription: "確認質問をしてから指示書を作成"
    grill-me: "Grill Me"
    grill-meDescription: "推奨案付きの質問を1問ずつ行い、要件を固める"
    persona: "ペルソナ"
    personaDescription: "先頭エージェントのペルソナで対話"
  providerSelection:
    prompt: "プロバイダを選択してください:"
  runSelector:
    confirm: "前回の実行結果を参照しますか？"
    prompt: "参照するrunを選択してください:"
    noRuns: "前回のrunが見つかりませんでした。"
  continueNoSession: "前回のアシスタントセッションが見つかりません。新しいセッションで開始します。"
  mcpUnavailable: "プロバイダ {provider} ではタスク状態の参照を利用できません。会話は継続します。理由: {error}"
  resumeSessionLoaded: "セッションを読み込みました。以降のAI呼び出しでこのセッションを使用します。"
  resumeSessionFailed: "会話の再開に失敗しました。新しい会話として続けます。"
  sessionSelector:
    prompt: "直近のセッションを引き継ぎますか？"
    newSession: "新しいセッション"
    newSessionDescription: "新しい会話を始める"
    noSessions: "引き継げるセッションが見つかりませんでした。新しいセッションで開始します。"
    lastResponse: "最後: {response}"
    messages: "{count}メッセージ"
  commands:
    accept: "最新のアシスタント発言を採用"
    go: "指示書を作成して実行"
    issue: "IssueでSource Contextを置き換える"
    tell: "実行中タスクへ追加指示を送る"
    requeue: "失敗・上限到達タスクをキューへ戻す"
    retry: "失敗タスクの指示書を改訂して再投入"
    retrySavedOrder: "保存済みの指示書を確認して再投入"
    replay: "前回の指示書で即再実行"
    cancel: "対話モードを終了"
    open: "実行中タスクのディレクトリを開く"
    resume: "セッションを読み込む"
    pasteImage: "クリップボード画像を添付"
    setup: "exec エージェントを設定"
    workflow: "ワークフローを切り替える"
    mode: "対話モードを切り替える"
    provider: "プロバイダを切り替える"
    model: "この会話で使うモデルを指定する"
    effort: "この会話で使う推論強度を指定する"
    verify: "現在の形式仕様を検証する"
  issueCommand:
    argumentsRequired: "Issue番号を1つ以上指定してください。例: /issue 123 456"
    invalidArguments: "Issue番号を1つ以上指定してください。#の有無は問いません。例: /issue 123 #456"
    fetched: "Issueを取得しました: {issues}。Source Contextを置き換えました。"

# ===== Workflow Maker =====
workflowMaker:
  basePrompt: "Workflow Maker の base を選択してください:"
  workflowPrompt: "ワークフローを選択してください:"
  namePrompt: "ワークフロー名"
  sources:
    new: "新規ワークフロー"
    project: "プロジェクトのワークフロー"
    user: "グローバルのワークフロー"
    builtin: "組み込みワークフロー"
    repertoire: "レパートリーのワークフロー"
  intro: "Workflow Maker - 作成したい workflow を説明してください。/workflow で base 変更、/go で生成準備、/cancel で終了します。"
  proposed: "Workflow Maker の実装指示:"
  plannedPath: "生成予定パス: {path}"
  actionPrompt: "どうしますか？"
  actions:
    execute: "実行"
    continue: "編集を続ける"
  continuePrompt: "Workflow Maker の要件編集を続けます。"
  noWorkflows: "この source で利用できる workflow はありません。"
  baseChanged: "Workflow Maker の base を {name} へ変更しました。"
  wait: "ワークフロー完了までお待ちください…"
  completed: "Workflow Maker が完了しました。成果物: {path}。Doctor レポート: {report}"
  completedWithoutReport: "Workflow Maker が完了しました。成果物: {path}。"
  failed: "Workflow Maker が失敗しました。成果物は {path} に保存されています。理由: {reason}。Doctor レポート: {report}"
  failedWithoutReport: "Workflow Maker が失敗しました。成果物は {path} に保存されています。理由: {reason}。"
  planningFailed: "Workflow Maker の成果物を準備できませんでした: {reason}"
  ttyRequired: "Workflow Maker には対話型ターミナル（TTY）が必要です。"

# ===== Exec Mode UI =====
exec:
  common:
    add: "追加"
    back: "戻る"
    builtin: "ビルトイン"
    cancel: "キャンセル"
    currentSuffix: "（現在）"
    default: "デフォルト"
    delete: "削除"
    discard: "破棄"
    global: "グローバル"
    none: "なし"
    project: "プロジェクト"
    providerDefault: "プロバイダーデフォルト"
    save: "保存"
    user: "ユーザー"
  scope:
    projectDescription: ".takt/facets"
    globalDescription: "~/.takt/facets"
  setup:
    teamConfiguration: "exec エージェント"
    assistantSummary: "アシスタントエージェント: {summary}"
    workersSummary: "ワーカーエージェント: {count}"
    reviewsSummary: "レビューエージェント: {count}"
    replanSummary: "再計画エージェント: {instruction}"
    loopSummary: "ループ検知: {small}/{large}/{max}"
    preset: "プリセット"
  actors:
    workers: "ワーカーエージェント"
    reviews: "レビューエージェント"
    mustContainOne: "{label} は少なくとも1件必要です。"
    deletePrompt: "{label}を削除"
    invalidIndex: "{label} のインデックスが不正です: {index}"
  settings:
    assistant: "アシスタントエージェント設定"
    actor: "{name} の設定"
    provider: "プロバイダー"
    model: "モデル"
    effort: "推論強度"
    name: "名前"
    instruction: "指示"
    knowledge: "知識"
    policy: "ポリシー"
    customModel: "カスタム入力..."
    customModelPrompt: "カスタムモデル"
    customModelRequired: "カスタムモデルは空にできません。"
    defaultModel: "デフォルト（{value}）"
    defaultEffort: "デフォルト（なし）"
  fields:
    provider: "プロバイダー: {value}"
    model: "モデル: {value}"
    effort: "推論強度: {value}"
    name: "名前: {value}"
    instruction: "指示: {value}"
    knowledge: "知識: {value}"
    policy: "ポリシー: {value}"
    smallLoopThreshold: "小ループ検知しきい値: {value}"
    largeLoopThreshold: "大ループ検知しきい値: {value}"
    maxSteps: "最大ステップ数: {value}"
    actorInstruction: "指示: {value}"
  replan:
    settings: "再計画エージェント設定"
  loop:
    settings: "ループ検知設定"
    smallThresholdPrompt: "小ループ検知しきい値"
    largeThresholdPrompt: "大ループ検知しきい値"
    maxStepsPrompt: "最大ステップ数"
  preset:
    menu: "プリセット"
    load: "プリセットを読み込む"
    saveCurrent: "現在のプリセットを保存"
    delete: "プリセットを削除"
    saveScope: "プリセット保存先"
    deleteScope: "プリセット削除先"
    loadSource: "プリセット読み込み元"
    defaultDescription: "デフォルトの exec 設定"
    builtinDescription: "builtins/exec/presets"
    projectDescription: ".takt/exec/presets"
    globalDescription: "~/.takt/exec/presets"
    loadFromSource: "{source}プリセットを読み込む"
    deleteFromSource: "{source}プリセットを削除"
    namePrompt: "プリセット名"
    descriptionPrompt: "プリセット説明"
    descriptionDefault: "カスタム exec プリセット"
    saved: "{scope} exec プリセットを保存しました: {name}"
    deleted: "{scope} exec プリセットを削除しました: {name}"
    exportAsWorkflow: "プリセットをワークフローとしてエクスポート"
    exportNamePrompt: "ワークフロー名"
    exported: "ワークフローをエクスポートしました: {name}"
  facets:
    instructions: "指示"
    knowledge: "知識"
    policies: "ポリシー"
    selectPrompt: "{kind}ファセットを選択"
    multiSelectPrompt: "{kind}ファセットを選択"
    multiSelectInstructions: "↑↓で移動、Spaceで切り替え、Enterで確定"
    listPrompt: "{kind}ファセット"
    saveScope: "ファセット保存先"
    editedSaveScope: "編集済みファセット保存先"
    saveGenerated: "生成したファセットを保存しますか？"
    generated: "{kind}ファセット \"{name}\" を生成しました:"
    created: "{scope} {kind}ファセットを作成しました: {name}"
    consultationPrompt: "{name} の {kind}ファセット変更内容を入力してください: "
    namePrompt: "ファセット名"
    instructionMenu: "指示ファセット"
    selectExisting: "既存を選択（{current}）"
    editWithAI: "AIで編集"
    createWithAI: "AIで作成"
    createWithEditor: "エディタで作成"
    openInEditor: "エディタで開く"
    restoreDefault: "デフォルトに戻す（{defaultRef}）"
    toggleExisting: "既存を切り替え"
    clearAll: "すべてクリア"

# ===== Workflow Execution UI =====
workflow:
  skillPermission: 'OpenCode Skill {patterns} の読み込みを許可しますか？'
  unconsumedLiveInstructions: "未消化の追加指示が {count} 件あります"
  teamLeader:
    decomposeWait: "チームリーダーがタスクを分解中です。しばらくお待ちください..."
    feedbackWait: "チームリーダーが結果を評価して次のタスクを計画中です..."
  iterationLimit:
    maxReached: "最大イテレーションに到達しました ({currentIteration}/{maxSteps})"
    currentStep: "現在のステップ: {currentStep}"
    continueQuestion: "続行しますか？"
    continueLabel: "続行する（追加イテレーション数を入力）"
    continueDescription: "入力した回数だけ上限を増やします"
    stopLabel: "終了する"
    inputPrompt: "追加するイテレーション数を入力してください（1以上）"
    invalidInput: "1以上の整数を入力してください。"
    userInputPrompt: "追加の指示を入力してください（空で中止）"
  notifyComplete: "ワークフロー完了 ({iteration} iterations)"
  notifyAbort: "中断: {reason}"
  notifyFailed: "失敗: {reason}"
  sigintGraceful: "Ctrl+C: ワークフローを中断しています..."
  sigintTimeout: "graceful停止がタイムアウトしました ({timeoutMs}ms)"
  sigintForce: "Ctrl+C: 強制終了します"

# ===== Instruct Mode UI (takt list -> instruct) =====
instruct:
  ui:
    intro: "指示モード - 追加指示を入力してください。コマンド: /go（指示書作成・実行）, /replay（前回の指示書で再投入）, /cancel（終了）"
    resume: "前回のセッションを再開します"
    noConversation: "まだ会話がありません。まず追加指示を入力してください。"
    summarizeFailed: "指示書の作成に失敗しました。再度お試しください。"
    continuePrompt: "続けて追加指示を入力してください。"
    proposed: "提案された追加指示:"
    actionPrompt: "どうしますか？"
    actions:
      execute: "実行する"
      saveTask: "タスクにつむ"
      continue: "会話を続ける"
    cancelled: "キャンセルしました"
    replayNoOrder: "前回の指示書（order.md）が見つかりません"

# ===== Retry Mode UI (takt list -> retry) =====
retry:
  ui:
    intro: "リトライモード - 追加指示を入力してください。/go で更新内容を確認し、タスクにつむか編集を続けます。/cancel で終了します。"
    resume: "前回のセッションを再開します"
    noConversation: "まだ会話がありません。まず追加指示を入力してください。"
    summarizeFailed: "指示書の作成に失敗しました。再度お試しください。"
    continuePrompt: "続けて追加指示を入力してください。"
    proposed: "更新されたタスク指示:"
    actionPrompt: "どうしますか？"
    actions:
      saveTask: "タスクにつむ"
      continue: "編集を続ける"
    cancelled: "キャンセルしました"
  usePreviousWorkflowConfirm: "前回のワークフロー \"{workflow}\" を使用しますか？"

orderRevision:
  attachmentsHeading: "添付画像"
  ui:
    proposed: "新しい order.md 案:"
    actionPrompt: "この指示書で置き換えますか？"
    actions:
      approve: "Yes（保存して実行）"
      reject: "No（会話に戻る）"

run:
  notifyComplete: "run完了 ({total} tasks)"
  notifyAbort: "runはエラー終了 ({failed})"

# ===== Issue Creation UI =====
issue:
  labelSelection:
    prompt: "ラベル:"
    none: "なし"
    custom: "入力（カスタム）"
    customPrompt: "ラベル名を入力"
  createdFromIssueComment: "実行用 Issue を作成しました: #{issueNumber}{issueUrl}"
  sourceIssueCommentFailed: "起点 Issue #{sourceIssueNumber} へのリンクコメント投稿に失敗しました: {error}"

# ===== Ink TUI =====
tui:
  ui:
    thinking: "考え中..."
    extendedThinking: "推論中..."
    responding: "応答中"
    selectTask: "候補タスクを選択中..."
    selectStart: "開始位置を判断中..."
    extractRetryAgreement: "再投入についての合意を整理中..."
    reviseInstruction: "指示書を改訂中..."
    composeTell: "指示文を作成中..."
    hint: "Enter: 送信  Shift+Enter: 改行  Tab: 補完  ↑↓: 行移動/履歴  Ctrl+C: 中止"
    placeholder: "タスクを入力、/ でコマンド"
    queuedHint: "↑ でキューを編集"
    queuedMore: "他 {count} 件をキュー中"
    interruptHint: "(Esc で中断)"
    interruptHintCompact: "(Esc: 中断)"
    interruptHintMinimal: "Esc"
    responseInterrupted: "応答を中断しました。"
    instructionInterrupted: "指示書の生成を中断しました。"
    runFinished: "ワークフローの実行が完了しました。続けてタスクを入力するか、/cancel で終了できます。"
    taskSaved: "タスクを保存しました。続けてタスクを入力するか、/cancel で終了できます。"
    issueCreated: "Issue を作成しました。続けてタスクを入力するか、/cancel で終了できます。"
    promptHint: "Enter: 確定  Esc: キャンセル"
    promptKeepHint: "Enter: 確定  空のまま Enter: 現在値のまま  Esc: キャンセル"
    promptPlaceholder: "入力してください"
    model: "モデル: {value}"
  errors:
    requiresTty: "--tui は対話端末 (TTY) が必要です。TTY 上で takt を実行するか --tui を外してください。"
    exitedEarly: "タスク会話が完了する前に TUI が終了しました。"
    providerNotConfigured: "プロバイダが設定されていません。~/.takt/config.yaml で設定するか --provider を指定してください。"
    workflowNotFound: "ワークフローが見つかりません: {workflow}"
    messageRequired: "メッセージを入力してください。"
    taskTextRequired: "タスク本文が必要です。"
    emptyAiResponse: "アシスタントからの応答がありませんでした。"
    noConversation: "まだ会話がありません。先にタスクを説明してください。"
    instructionFailed: "タスク指示書の作成に失敗しました。"
    conversationRebuildFailed: "会話設定の切り替えに失敗しました: {error}"
    unsupportedCommand: "このコマンドは TUI では利用できません。"
    settingNoArguments: "{command} に引数は指定できません。"
    tellInstructionRequired: "追加指示を入力してから /tell を使用してください。"
    tellGenerationFailed: "追加指示を生成できませんでした: {error}"
    tellSelectionFailed: "追加指示の送信先選択に失敗しました。追加指示は送信されていません: {error}"
    tellRequiresTty: "追加指示は送信されませんでした: /tell には対話端末 (TTY) が必要です。"
    tellNoCandidates: "追加指示を受け取れる worktree clone の実行中タスクがありません。"
    tellExcluded: "/tell の候補から除外した実行中タスク:\n{tasks}"
    tellExcludedMore: "ほか {count} 件の実行中タスクを除外"
    tellCancelled: "追加指示は送信しませんでした。"
    tellStale: "追加指示は送信されませんでした: {error}"
    assistantRetryRequiresTty: "タスクは変更していません。/requeue と /retry には対話端末 (TTY) が必要です。"
    assistantRetryNoCandidates: "このコマンドの対象となるタスクがありません。"
    assistantRetryUnresolved: "会話から対象タスクと利用可能な開始位置を1つに特定できませんでした。タスクは変更していません。"
    assistantRetryGenerationFailed: "タスクを準備できませんでした: {error}"
    assistantRetryInvalidResult: "利用できないタスクまたは開始位置がアシスタントから返されました。タスクは変更していません。"
    assistantRetryFormatMismatch: "応答が単一プロパティの JSON 形式と一致しませんでした。"
    assistantRetryUnknownTaskName: "候補にないタスク名が返されました。"
    assistantRetryUnknownStartId: "選択可能な候補にない開始位置 ID が返されました。"
    assistantRetryCancelled: "タスクは変更していません。"
    assistantRetryRequeued: "タスク「{task}」を pending に戻しました。workflow は開始していません。"
    assistantRetrySaved: "改訂したタスク「{task}」を pending に戻しました。workflow は開始していません。"
    settingValueRequired: "{command} には値が必要です。"
    imagePasteFailed: "画像を貼り付けられませんでした。"
  tell:
    targetFailed: "送信先不明: {reason}"
    targetUnresolved: "会話から送信先を一つに特定できませんでした。"
    targetInvalid: "アシスタントの応答形式が不正でした。"
    targetUnknown: "候補にない run が返されました。"
    selectPrompt: "追加指示を送る実行中タスクを選択してください:"
    confirm: "この追加指示を送信しますか？\nタスク: {task}\n要約: {summary}\nワークフロー: {workflow}\n現在ステップ: {step}\nRun slug: {runSlug}\n追加指示:\n{content}"
    sent: "{task} へ追加指示を送信しました（指示 #{instructionId}）。"
  assistantRetry:
    selectTask: "キューに戻すタスクを選んでください。"
    selectStart: "キューに戻すタスクの開始位置を選んでください。"
    resumeUnavailable: "保存された再開位置を採用できません: {reason}\n保存された再開情報は引き継げません。再実行する開始位置を選ぶか、中止してください。"
    requeueConfirm: "このタスクをキューに戻しますか？\nタスク: {task}\n要約: {summary}\nワークフロー: {workflow}\n開始位置: {start}"
    retryDetails: "タスク: {task}\n要約: {summary}\nワークフロー: {workflow}\n開始位置: {start}"
    exceededStart: "保存済みの停止位置: {start}（iteration {iteration}）"

director:
  slackNotifications: "director からのお知らせ（完了・人の判断が必要な事項）"
  patrolFailed: "director の見回りに失敗しました"
  projectUnreadable: "director が project を読み取れませんでした"
  description: "実験的な director 会話 TUI を開きます"
  experimentalNotice: "director は実験的機能です。動作や保存形式は変更されます。"
  costNotice: "director は AI を動かすため、provider API の費用がかかります。"
  placeholder: "manager の状況や指示を相談してください"
  managerReply: "manager {managerId} の返事（操作ID: {operationId}）: {message}"
  managerError: "manager {managerId} の伝言処理が失敗しました（操作ID: {operationId}）: {message}"
  managerInterrupted: "manager {managerId} の伝言処理が中断されました（操作ID: {operationId}）: {message}"
manager:
  goalPr:
    objective: "目的"
    changes: "変更"
    verification: "確かめたこと"
    humanChecks: "人が確かめる手順"
    truncated: "変更一覧は省略されています。PR の差分も確認してください。"
  conversation:
    reading: "会話の情報を読み出しています。完了するまで要約を承認できません。"
    disconnected: "daemon に再接続しています。"
    incomplete: "読み出しが不完全です。再読み込みが完了するまで要約を承認できません。"
    interrupted: "前の処理は中断されました。新しい発言を送信できます。"
    director_interrupted: "directorの伝言（操作ID: {operationId}）は中断されました。自動では再実行しません。"
    permission_appended: "許可文を追記しました。回答の保存結果を確認してください。"
    assignment_changed: '担当が変わりました。現在の担当で会話を開き直してください。'
    busy: "処理中です。完了してからもう一度送信してください。"
    stale_summary: "表示中の要約は更新されています。最新の要約を確認してください。"
    invalid_assignment: "担当が変わったか、操作対象が担当の範囲外です。会話を開き直してください。"
    unavailable_attachment: "会話の接続がありません。開き直してください。"
    registration_recovery: "ゴール登録の復旧が必要です。保存済みの予約と登録状況を確認してください。"
    storage_error: "会話の状態を保存できませんでした。保存先を確認してから再接続してください。"
    shutting_down: "daemonは終了処理中です。もう一度接続してください。"
    invalid_input: "操作の入力が正しくありません。"
    operation_failed: "会話の操作を完了できませんでした。現在の状態を確認してください。"
    dismissed: "要約を取り下げました。"
    answer_saved: "回答を保存しました。"
  assignmentHeading: "担当: {name}"
  assignmentHeadingMultiple: "担当: {name} ほか {count} 件"
  counts: "進行中 {goals} ／ 未回答 {questions}"
  inputHint: "Enter 送信  Shift+Enter 改行  Esc 中断  ^R 問い合わせ  ^G ゴール  ^C 終了"
  makeGoalHint: "/make-goal でゴールの登録案を作る"
  makeGoalDescription: "ゴールの登録案を作る"
  slackGoalApprove: "登録を承認"
  slackGoalDismiss: "会話を続ける"
  slackGoalObjective: "目的"
  slackGoalOutOfScope: "範囲外"
  slackGoalAcceptance: "受け入れ条件"
  slackGoalConstraints: "作業の制約"
  summaryInputHint: "↑↓ 選択 / Enter 決定 / Esc 会話を続ける / Ctrl+C 終了"
  goSummaryRequest: "現在の会話から、ゴール登録用の要約を作成してください。目的、範囲外、受け入れ条件、作業の制約を含む構造化応答の summary を返してください。材料が不足して要約できない場合は、理由を message で説明し、summary は null にしてください。"
  goSummaryUnavailable: "材料が不足しているため、登録用の要約を作成できませんでした。会話を続けてください。"
  summaryWorking: "要約を作っています"
  inputUnavailableDuringAbort: "中止の確認中は文字を入力できません。確認を終えてから入力してください。"
  toolPermission:
    savedDenial: "保存済みの承認回答で拒否されています。"
    consumptionFailed: "承認の消費状態の保存に失敗したため拒否しました。"
    contextReadFailed: "許可・承認情報の読み取りに失敗したため、人の確認が必要です。{reason}"
    approvalConsumed: "今回だけの承認は消費済みです。再び人の確認が必要です。"
    inquirySaveFailed: "承認問い合わせの保存に失敗しました。"
    agentDenied: "{toolName}: manager から別の AI エージェントを起動する操作は許可されていません。"
    bashDenied: "Bash: 別の AI コマンド行エージェントを起動する操作は許可されていません。"
    awaitingConfirmation: "人の確認待ち ({toolName}): {reason}"
    judgeFailed: "道具の判断役の実行に失敗したため拒否しました。"
    judgeInvalidOutput: "道具の判断役の出力が不正なため拒否しました。"
    judgeMissingReason: "道具の判断役が理由を返さなかったため拒否しました。"
    judgeTimeout: "道具の判断役が30秒の期限内に判断を返さなかったため、人の確認に回しました。"
    judgeInterrupted: "道具の判断が中断されたため拒否しました。"
    judgeValidationFailed: "道具の判断役の実行または出力の検証に失敗したため拒否しました。"
  conversationFailureNotification: |-
    manager の処理に失敗しました。
    理由: {reason}
    会話と現在の作業状態を確認してから、もう一度操作してください。
  turnFailureNotification: |-
    manager によるイベント処理が失敗しました。未処理のイベントが残っています。
    ログと設定を確認し、イベント処理の失敗原因を解消してください。
    一時停止中のゴールは TUI で Ctrl+G を押し、一覧から選択して再開するか、対応する provider の会話で再開を依頼し、人の確認を経て再開してください。中止済みのゴールは再開できません。
    理由: {reason}
  selectionTitles:
    answer: "回答する問い合わせを選択"
    goal: "操作するゴールを選択"
    action: "ゴールの操作を選択"
  goalActions:
    pause: "一時停止"
    resume: "再開"
    abort: "中止"
  selectionHint: "↑↓ 選択 / Enter 決定 / Esc 閉じる"
  selectionEmpty:
    repository: "担当のリポジトリはありません。"
    answer: "未回答の問い合わせはありません。"
    goal: "操作できる進行中のゴールはありません。"
  goalRegistered: "ゴール登録完了: {name} ({id})\n{branch}"
  sessionUnavailable: "manager セッションは現在利用できません。"
  goalPaused: "ゴールを一時停止しました: {goalId}"
  goalResumed: "ゴールを再開しました: {goalId}"
  goalExecutionFailed: "ゴールの実行状態を変更できませんでした: {reason}"
  goalStates:
    active: "実行中"
    paused: "一時停止中"
    awaiting_merge: "マージ待ち"
  inquiryKinds:
    question: "質問"
    approval: "承認"
    operation_request: "操作依頼"
  answerHint: "Ctrl+R で問い合わせを選択して回答"
  slack:
    replyHint: "選択肢はボタンで、自由記述はこの投稿のスレッドへ返信してください。"
    permissionTitle: "許可する一文の確認"
    permissionSentence: "許可する一文"
    confirm: "確定"
    cancel: "キャンセル"
  answerFreeText: "自由記述"
  answerChoiceHint: "↑↓ 選択 / Enter 決定 / Esc 戻る"
  answerPrompt: "回答を入力してください"
  inquiryNoGoal: "ゴールなし"
  permissionAppendFailed: "許可文の追記に失敗しました: {reason}"
  answerStages:
    decision: "この操作の許可・拒否を選択してください。"
    report: "手順を実施した結果を選択してください。"
    scope: "許可の範囲を選択してください。"
    comment: "任意のコメント（Enter で確定）"
    permission: "許可する一文を編集して確定してください。保存に失敗した場合は原因を解消し、Enter で再試行できます。"
  answerChoices:
    allow: "許可"
    deny: "拒否"
    completed: "実施した"
    unable: "対応できない"
    once: "今回だけ"
    goal: "このゴール"
    project: "プロジェクト"
    projectManager: "プロジェクト / manager"
    workspace: "manager（workspace）"
    global: "全体"
  goalAborted: "ゴールを中止しました: {goalId}"
  abortConfirmation: "ゴールの中止を確認"
  abortRetryWarning: "中止処理に失敗しました。同じゴールの中止処理を再試行して完了してください。"
  retryAbort: "中止処理を再試行する"
  selectionChanged: "選択したゴールは操作の対象外になりました。候補一覧を更新しました。"
  abortWarning: "中止は取り消せません。未実行のタスクを無効にし、所属する実行中タスクを中断します。ブランチ・サブPR・記録は保持します。"
  confirmAbort: "ゴールを中止する"
  cancelAbort: "キャンセル"
  abortChoiceHint: "↑ 中止 / ↓ キャンセル / Enter 決定 / Esc 戻る"
  description: "実験的な manager の会話 TUI を起動します"
  experimentalNotice: "manager\u00A0は実験的機能です。動作・設定・保存するデータの形式は予告なく変わることがあります。"
  costNotice: "manager は自動でタスクを投入・実行するため、provider の API の費用がかかります。"
  notificationHeadings:
    progress: "進捗をお知らせします — {project}"
    awaiting_merge: "マージを待っています — {project}"
    completed: "ゴールが完成しました — {project}"
    blocked: "進められません — {project}"
    question: "質問があります — {project}"
    custom: "お知らせ — {project}"
  notificationGoal: "ゴール: {objective} ({id})"
  notificationSeverity: "重要度: {severity}"
  notificationSeverities:
    info: "情報"
    warning: "警告"
    error: "エラー"
  notificationIntegratedBody: "「{purpose}」の作業を取り込みました。"
  notificationOptions: "選択肢: {options}"
  notificationMoreOptions: "ほかに{count}件の選択肢があります。すべての選択肢はTUIで確認できます。"
  notificationRecommendation: "推奨: {recommendation}"
  notificationAnswer: "{project}で takt manager を開き、TUIで Ctrl+R を押し、一覧から問い合わせを選択して回答してください。"
  notificationMerge: "変更内容を確認し、{branch} ブランチへマージしてください。"
  notificationMergeRepository: "{project}リポジトリの、ブランチを切り替えられる未コミットの変更がない作業ツリーで、次のコマンドを順に実行してください。"
  notificationMergeWorktree: "作業ツリー {directory} の状態を確認し、次のコマンドを順に実行してください。"
  notificationBlockedAction: "上記の理由と必要な操作を確認してください。詳しい内容は{project}で takt manager を開き、TUIで確認・対応してください。"
  notificationFullMessage: "{project}で takt manager を開き、TUIで会話と現在の作業状態を確認してください。"
  notificationDigestHint: "本文の続きは省略しています。"

caccia:
  waitingForReview: "Caccia: CodeRabbit のレビュー待ちに入ります。"
  waiting: "Caccia: CodeRabbit のレビューを待機中です。"
  threads: "Caccia: 処理対象の未解決スレッドは {count} 件です。"
  iteration: "Caccia: 反復 {current} / {maximum}"
  cloning: "Caccia: 一時クローンを作成します。"
  pushed: "Caccia: コミット {commit} を Push しました。"
  resolved: "Caccia: スレッド {thread} を Resolve しました。"
  success: "CodeRabbit の未解決レビュースレッドはありません。"
  skipped: "Caccia をスキップしました: {reason}"
  limit: "Caccia が反復上限に達しました。未解決スレッド: {count} 件"
  failed: "Caccia に失敗しました: {error}"
  notRun: "Caccia は起動されませんでした。"
