@ozzylabs/feedradar 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +51 -13
- package/README.md +51 -13
- package/dist/agents/_boundary.d.ts +21 -0
- package/dist/agents/_boundary.d.ts.map +1 -1
- package/dist/agents/_boundary.js +34 -0
- package/dist/agents/_boundary.js.map +1 -1
- package/dist/agents/claude-code.d.ts.map +1 -1
- package/dist/agents/claude-code.js +14 -6
- package/dist/agents/claude-code.js.map +1 -1
- package/dist/agents/codex-cli.d.ts.map +1 -1
- package/dist/agents/codex-cli.js +13 -7
- package/dist/agents/codex-cli.js.map +1 -1
- package/dist/agents/copilot.d.ts.map +1 -1
- package/dist/agents/copilot.js +13 -6
- package/dist/agents/copilot.js.map +1 -1
- package/dist/agents/gemini-cli.d.ts.map +1 -1
- package/dist/agents/gemini-cli.js +13 -6
- package/dist/agents/gemini-cli.js.map +1 -1
- package/dist/agents/types.d.ts +26 -0
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/claude-skills/dismiss/SKILL.md +4 -4
- package/dist/claude-skills/research/SKILL.md +2 -3
- package/dist/claude-skills/review/SKILL.md +2 -2
- package/dist/claude-skills/update/SKILL.md +7 -7
- package/dist/cli/_locale.d.ts +96 -0
- package/dist/cli/_locale.d.ts.map +1 -0
- package/dist/cli/_locale.js +130 -0
- package/dist/cli/_locale.js.map +1 -0
- package/dist/cli/_progress.d.ts +30 -1
- package/dist/cli/_progress.d.ts.map +1 -1
- package/dist/cli/_progress.js +9 -1
- package/dist/cli/_progress.js.map +1 -1
- package/dist/cli/dismiss.d.ts.map +1 -1
- package/dist/cli/dismiss.js +61 -54
- package/dist/cli/dismiss.js.map +1 -1
- package/dist/cli/doctor.d.ts +8 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +91 -60
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.d.ts +36 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +81 -18
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts +15 -0
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +149 -51
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/items.d.ts.map +1 -1
- package/dist/cli/items.js +51 -30
- package/dist/cli/items.js.map +1 -1
- package/dist/cli/research.d.ts.map +1 -1
- package/dist/cli/research.js +138 -109
- package/dist/cli/research.js.map +1 -1
- package/dist/cli/review.d.ts.map +1 -1
- package/dist/cli/review.js +114 -92
- package/dist/cli/review.js.map +1 -1
- package/dist/cli/routine/fire.d.ts +3 -2
- package/dist/cli/routine/fire.d.ts.map +1 -1
- package/dist/cli/routine/fire.js +30 -25
- package/dist/cli/routine/fire.js.map +1 -1
- package/dist/cli/routine/generate-pipeline.d.ts +24 -10
- package/dist/cli/routine/generate-pipeline.d.ts.map +1 -1
- package/dist/cli/routine/generate-pipeline.js +158 -83
- package/dist/cli/routine/generate-pipeline.js.map +1 -1
- package/dist/cli/routine/generate-watch.d.ts +56 -1
- package/dist/cli/routine/generate-watch.d.ts.map +1 -1
- package/dist/cli/routine/generate-watch.js +116 -42
- package/dist/cli/routine/generate-watch.js.map +1 -1
- package/dist/cli/routine.d.ts.map +1 -1
- package/dist/cli/routine.js +28 -24
- package/dist/cli/routine.js.map +1 -1
- package/dist/cli/source.d.ts.map +1 -1
- package/dist/cli/source.js +212 -182
- package/dist/cli/source.js.map +1 -1
- package/dist/cli/state.d.ts +43 -0
- package/dist/cli/state.d.ts.map +1 -0
- package/dist/cli/state.js +177 -0
- package/dist/cli/state.js.map +1 -0
- package/dist/cli/triage.d.ts.map +1 -1
- package/dist/cli/triage.js +146 -130
- package/dist/cli/triage.js.map +1 -1
- package/dist/cli/undismiss.d.ts.map +1 -1
- package/dist/cli/undismiss.js +32 -25
- package/dist/cli/undismiss.js.map +1 -1
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +77 -61
- package/dist/cli/update.js.map +1 -1
- package/dist/cli/watch.d.ts.map +1 -1
- package/dist/cli/watch.js +71 -31
- package/dist/cli/watch.js.map +1 -1
- package/dist/cli/workflow/generate-combined-with-triage.d.ts +9 -2
- package/dist/cli/workflow/generate-combined-with-triage.d.ts.map +1 -1
- package/dist/cli/workflow/generate-combined-with-triage.js +120 -71
- package/dist/cli/workflow/generate-combined-with-triage.js.map +1 -1
- package/dist/cli/workflow/generate-combined.d.ts +8 -1
- package/dist/cli/workflow/generate-combined.d.ts.map +1 -1
- package/dist/cli/workflow/generate-combined.js +39 -33
- package/dist/cli/workflow/generate-combined.js.map +1 -1
- package/dist/cli/workflow/generate-watch.d.ts +10 -1
- package/dist/cli/workflow/generate-watch.d.ts.map +1 -1
- package/dist/cli/workflow/generate-watch.js +37 -30
- package/dist/cli/workflow/generate-watch.js.map +1 -1
- package/dist/cli/workflow.d.ts.map +1 -1
- package/dist/cli/workflow.js +28 -23
- package/dist/cli/workflow.js.map +1 -1
- package/dist/core/config.d.ts +2 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +14 -4
- package/dist/core/config.js.map +1 -1
- package/dist/core/feeds/html-js.d.ts.map +1 -1
- package/dist/core/feeds/html-js.js +16 -9
- package/dist/core/feeds/html-js.js.map +1 -1
- package/dist/core/feeds/json-api.d.ts.map +1 -1
- package/dist/core/feeds/json-api.js +38 -21
- package/dist/core/feeds/json-api.js.map +1 -1
- package/dist/core/feeds/types.d.ts +9 -0
- package/dist/core/feeds/types.d.ts.map +1 -1
- package/dist/core/filter.d.ts +20 -12
- package/dist/core/filter.d.ts.map +1 -1
- package/dist/core/filter.js +87 -46
- package/dist/core/filter.js.map +1 -1
- package/dist/core/locale.d.ts +69 -0
- package/dist/core/locale.d.ts.map +1 -0
- package/dist/core/locale.js +74 -0
- package/dist/core/locale.js.map +1 -0
- package/dist/core/state.d.ts +20 -0
- package/dist/core/state.d.ts.map +1 -1
- package/dist/core/state.js +26 -0
- package/dist/core/state.js.map +1 -1
- package/dist/core/triage/prompt.d.ts.map +1 -1
- package/dist/core/triage/prompt.js +18 -4
- package/dist/core/triage/prompt.js.map +1 -1
- package/dist/core/watcher.d.ts +28 -0
- package/dist/core/watcher.d.ts.map +1 -1
- package/dist/core/watcher.js +77 -8
- package/dist/core/watcher.js.map +1 -1
- package/dist/i18n/index.d.ts +57 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +49 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/messages/en.d.ts +1049 -0
- package/dist/i18n/messages/en.d.ts.map +1 -0
- package/dist/i18n/messages/en.js +1152 -0
- package/dist/i18n/messages/en.js.map +1 -0
- package/dist/i18n/messages/ja.d.ts +13 -0
- package/dist/i18n/messages/ja.d.ts.map +1 -0
- package/dist/i18n/messages/ja.js +1010 -0
- package/dist/i18n/messages/ja.js.map +1 -0
- package/dist/schemas/config.d.ts +7 -0
- package/dist/schemas/config.d.ts.map +1 -1
- package/dist/schemas/config.js +5 -0
- package/dist/schemas/config.js.map +1 -1
- package/dist/schemas/item.d.ts +1 -0
- package/dist/schemas/item.d.ts.map +1 -1
- package/dist/schemas/item.js +15 -0
- package/dist/schemas/item.js.map +1 -1
- package/dist/schemas/recipe.d.ts +7 -1
- package/dist/schemas/recipe.d.ts.map +1 -1
- package/dist/schemas/recipe.js +1 -0
- package/dist/schemas/recipe.js.map +1 -1
- package/dist/schemas/source.d.ts +40 -18
- package/dist/schemas/source.d.ts.map +1 -1
- package/dist/schemas/source.js +84 -23
- package/dist/schemas/source.js.map +1 -1
- package/dist/skills/research/SKILL.md +13 -12
- package/dist/skills/review/SKILL.md +13 -12
- package/dist/skills/update/SKILL.md +19 -19
- package/dist/templates/en/agents/AGENTS.md +284 -0
- package/dist/templates/en/claude/CLAUDE.md +5 -0
- package/dist/templates/en/default.md +16 -0
- package/dist/templates/en/digest.md +66 -0
- package/dist/templates/en/feedradar.md +235 -0
- package/dist/templates/{routines → en/routines}/pipeline.yaml.tmpl +93 -34
- package/dist/templates/{routines → en/routines}/watch-daily.yaml +12 -15
- package/dist/templates/{routines → en/routines}/watch.yaml.tmpl +11 -14
- package/dist/templates/{workflows → en/workflows}/combined-with-triage.template.yaml.tmpl +3 -3
- package/dist/templates/{workflows → en/workflows}/combined.template.yaml.tmpl +6 -6
- package/dist/templates/{workflows → en/workflows}/watch.template.yaml.tmpl +8 -8
- package/dist/templates/{workflows → en/workflows}/watch.yaml +3 -3
- package/dist/templates/{agents → ja/agents}/AGENTS.md +16 -16
- package/dist/templates/{digest.md → ja/digest.md} +5 -6
- package/dist/templates/{feedradar.md → ja/feedradar.md} +12 -12
- package/dist/templates/ja/routines/pipeline.yaml.tmpl +267 -0
- package/dist/templates/ja/routines/watch-daily.yaml +151 -0
- package/dist/templates/ja/routines/watch.yaml.tmpl +145 -0
- package/dist/templates/ja/workflows/combined-with-triage.template.yaml.tmpl +123 -0
- package/dist/templates/ja/workflows/combined.template.yaml.tmpl +109 -0
- package/dist/templates/ja/workflows/watch.template.yaml.tmpl +100 -0
- package/dist/templates/ja/workflows/watch.yaml +73 -0
- package/package.json +1 -1
- /package/dist/templates/{claude → ja/claude}/CLAUDE.md +0 -0
- /package/dist/templates/{default.md → ja/default.md} +0 -0
|
@@ -0,0 +1,1010 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Japanese message catalog (ADR-0021, epic #307 P2).
|
|
3
|
+
*
|
|
4
|
+
* The `Messages` annotation pins this object to the exact key set and value
|
|
5
|
+
* shapes defined by the English source of truth ({@link
|
|
6
|
+
* import("./en.js").en}). Dropping a key, adding a stray key, or changing a
|
|
7
|
+
* value's param shape is a compile error — this is how en/ja key-set parity is
|
|
8
|
+
* guaranteed without a runtime check. (A belt-and-suspenders runtime parity
|
|
9
|
+
* test also exists, see tests/i18n/messages.test.ts.)
|
|
10
|
+
*/
|
|
11
|
+
export const ja = {
|
|
12
|
+
// --- global help (radar --help / radar / radar help) ----------------------
|
|
13
|
+
"cli.help.tagline": "FeedRadar — ブログ/リリースフィード調査のためのマルチエージェント CLI",
|
|
14
|
+
"cli.help.usage": "使い方: radar <コマンド> [オプション]",
|
|
15
|
+
"cli.help.commandsHeading": "コマンド:",
|
|
16
|
+
"cli.help.optionsHeading": "オプション:",
|
|
17
|
+
"cli.help.optionHelp": "このヘルプを表示する",
|
|
18
|
+
"cli.help.optionVersion": "バージョンを表示する",
|
|
19
|
+
"cli.help.optionLang": "UI 言語 (RADAR_LANG / config より優先)",
|
|
20
|
+
// --- unknown command error ------------------------------------------------
|
|
21
|
+
"cli.error.unknownCommand": ({ command }) => `radar: 不明なコマンド '${command}' です`,
|
|
22
|
+
"cli.error.unknownCommandHint": "利用可能なコマンドは 'radar --help' で確認できます。",
|
|
23
|
+
// --- progress phase markers (ProgressReporter, ADR-0015, #313) ------------
|
|
24
|
+
"cli.progress.loadedItem": ({ id }) => `アイテムを読み込みました: ${id}`,
|
|
25
|
+
"cli.progress.loadedItems": ({ count }) => `${count} 件のアイテムを読み込みました`,
|
|
26
|
+
"cli.progress.loadedTemplate": ({ templateId }) => `テンプレートを読み込みました: ${templateId}.md`,
|
|
27
|
+
"cli.progress.spawning": ({ agent }) => `${agent} を起動中`,
|
|
28
|
+
"cli.progress.agentRunning": "エージェント実行中",
|
|
29
|
+
"cli.progress.agentCompleted": ({ exitCode }) => `エージェント完了 (exit ${exitCode})`,
|
|
30
|
+
"cli.progress.agentFailed": "エージェント失敗",
|
|
31
|
+
"cli.progress.frontmatterValidated": "フロントマター検証済み",
|
|
32
|
+
"cli.progress.statusTransition": ({ from, to }) => `ステータス: ${from} → ${to}`,
|
|
33
|
+
// --- watch-flow progress markers (#337, deferred from #313) ---------------
|
|
34
|
+
"cli.progress.watchPage": ({ sourceId, facet, page, pageTotal, items, }) => `[${sourceId}] ${facet}ページ ${page}/${pageTotal}: ${items} 件取得`,
|
|
35
|
+
"cli.progress.watchSourceCompleted": ({ sourceId, total, fresh, }) => `[${sourceId}] 完了: 全 ${total} 件、新規 ${fresh} 件`,
|
|
36
|
+
"cli.progress.stillWaiting": ({ selector, elapsed, }) => `セレクタ "${selector}" を待機中… [${elapsed}]`,
|
|
37
|
+
"cli.progress.watchFetching": ({ sourceId }) => `[${sourceId}] 取得中…`,
|
|
38
|
+
"cli.progress.watchKindInfo": ({ kind }) => `種別: ${kind}`,
|
|
39
|
+
"cli.progress.watchFailed": ({ sourceId }) => `[${sourceId}] 失敗`,
|
|
40
|
+
"cli.progress.htmlJsLaunching": "Chromium を起動中…",
|
|
41
|
+
"cli.progress.htmlJsNavigating": ({ url }) => `${url} へ移動中…`,
|
|
42
|
+
"cli.progress.htmlJsWaitingSelector": ({ selector, timeout, }) => `セレクタ "${selector}" を待機中 (タイムアウト: ${timeout}ms)…`,
|
|
43
|
+
"cli.progress.htmlJsCapturing": "ページ内容を取得中…",
|
|
44
|
+
"cli.progress.htmlJsClosing": "ブラウザを終了中…",
|
|
45
|
+
// --- command summaries (global help list, #311) ---------------------------
|
|
46
|
+
"cli.summary.init": "ワークスペースを初期化する (sources/items/state/research/templates)",
|
|
47
|
+
"cli.summary.source": "フィードソースを管理する (add | list | recipes | remove | test)",
|
|
48
|
+
"cli.summary.watch": "ソースを取得しフィルタ済みアイテムを生成する (run)",
|
|
49
|
+
"cli.summary.state": "ソースごとの監視 state を管理する (prune)",
|
|
50
|
+
"cli.summary.research": "AI エージェントでアイテムから Markdown 調査レポートを生成する",
|
|
51
|
+
"cli.summary.triage": "検出済みアイテムを LLM でトリアージする",
|
|
52
|
+
"cli.summary.dismiss": "検出済みアイテムを却下する (単一 id / 複数 id / --batch)",
|
|
53
|
+
"cli.summary.undismiss": "却下を取り消す (`dismissed → detected`)",
|
|
54
|
+
"cli.summary.items": "ワークスペース内のアイテムを確認する (list | ...)",
|
|
55
|
+
"cli.summary.review": "別の AI エージェントで既存の調査レポートをクロスレビューする",
|
|
56
|
+
"cli.summary.update": "既存の調査レポートを最新アイテムに合わせて更新する",
|
|
57
|
+
"cli.summary.doctor": "ワークスペース・エージェント CLI・html-js 用 Playwright を診断する",
|
|
58
|
+
"cli.summary.workflow": "GitHub Actions ワークフローを生成する (generate <type>)",
|
|
59
|
+
"cli.summary.routine": "Claude Code Routines を管理する (generate <type> / fire <trig_id>)",
|
|
60
|
+
// --- research help (#311) -------------------------------------------------
|
|
61
|
+
"cli.research.help": ({ maxItems }) => `使い方:
|
|
62
|
+
radar research <item-id> [--agent <agent-id>] [--template <template-id>]
|
|
63
|
+
radar research --digest <item-id> <item-id> ... [--triage-group <group>] [--agent <agent-id>] [--template <id>]
|
|
64
|
+
radar research --batch [--status <status>] [--max-items N] [--filter-tags <list>] [--agent <id>]
|
|
65
|
+
radar research <item-id> --emit-payload [--digest <ids...>] [--template <id>]
|
|
66
|
+
radar research --commit <path>
|
|
67
|
+
|
|
68
|
+
引数:
|
|
69
|
+
<item-id> アイテム id (items/<sourceId>/<item-id>.yaml に対応)
|
|
70
|
+
--digest と一緒に 2 件以上の id を渡すとまとめられる。
|
|
71
|
+
--batch では位置引数の id を省略する (アイテムは自動検出)。
|
|
72
|
+
|
|
73
|
+
オプション:
|
|
74
|
+
--agent <agent-id> claude-code | codex-cli | gemini-cli | copilot (既定: claude-code)
|
|
75
|
+
--template <id> templates/ 配下のテンプレート id (既定: default / digest 時: digest)
|
|
76
|
+
--digest 複数アイテムを 1 つのダイジェストレポートにまとめる
|
|
77
|
+
--triage-group <group> ダイジェストの slug 元: matchedKeywords の頻度ではなく
|
|
78
|
+
この triage.group をダイジェストファイル名にする。
|
|
79
|
+
単一キーワードのソースが複数グループを生成する場合に、
|
|
80
|
+
同日のグループ別ダイジェストを一意に保つため必須 (#255)。
|
|
81
|
+
省略時は matchedKeywords の slug にフォールバックする。
|
|
82
|
+
--batch --status (と --filter-tags) に一致する全アイテムを調査する。
|
|
83
|
+
--max-items の上限を尊重する。
|
|
84
|
+
--status <status> バッチモードのフィルタ: detected | triaged_research
|
|
85
|
+
(既定: detected)。\`triaged_research\` は triage アダプタが
|
|
86
|
+
昇格したアイテムを対象とし、成功時に \`researched\` へ遷移する。
|
|
87
|
+
--max-items N バッチモードで処理するアイテム数の上限 (既定: ${maxItems})。
|
|
88
|
+
超過分は破棄され warn() で通知される。暴走した検出が
|
|
89
|
+
ワークフロー内で上限を突破できないようにするため。
|
|
90
|
+
--filter-tags <list> バッチモードのカンマ区切り許可リスト。各アイテムの
|
|
91
|
+
matchedKeywords と照合する (大文字小文字を区別しない)。既定: 全件。
|
|
92
|
+
--emit-payload ホストエージェントモード: 調査ペイロードを stdout に出力し、
|
|
93
|
+
エージェントを起動しない。対話ホストセッションが SKILL 手順を
|
|
94
|
+
自ら実行し、\`radar research --commit <path>\` で確定する。
|
|
95
|
+
対話/オプトイン専用 — CI/ヘッドレスは既定の起動パスを使うこと。
|
|
96
|
+
--commit <path> ホストエージェントモード: 外部で書かれたレポート
|
|
97
|
+
(<cwd>/research/ 配下) を ResearchFrontmatterSchema で検証し、
|
|
98
|
+
detected → researched の遷移を適用する。
|
|
99
|
+
--verbose フェーズマーカーに加えエージェント CLI の stdout/stderr を流す。
|
|
100
|
+
--quiet フェーズマーカーとスピナーを抑制し、完了行のみ出力する。
|
|
101
|
+
RADAR_NO_PROGRESS=1 を設定するのと同等。
|
|
102
|
+
|
|
103
|
+
出力:
|
|
104
|
+
単一アイテム: research/<YYYYMMDD>_<slug>_v1.md
|
|
105
|
+
ダイジェスト: research/<YYYYMMDD>_digest_<slug>_v1.md
|
|
106
|
+
バッチ: 一致アイテムごとに単一レポート 1 件 (ダイジェスト集約なし)。`,
|
|
107
|
+
// --- review help (#311) ---------------------------------------------------
|
|
108
|
+
"cli.review.help": ({ maxItems }) => `使い方:
|
|
109
|
+
radar review <research-id> [--agent <agent-id>] [--template <template-id>]
|
|
110
|
+
radar review --batch [--status <status>] [--max-items N] [--filter-tags <list>] [--agent <id>]
|
|
111
|
+
radar review <research-id> --emit-payload [--agent <id>] [--template <id>]
|
|
112
|
+
radar review --commit <path>
|
|
113
|
+
|
|
114
|
+
引数:
|
|
115
|
+
<research-id> 調査 id (research/<id>.md の .md を除いたベース名)
|
|
116
|
+
--batch では省略する (調査ファイルは自動検出)。
|
|
117
|
+
|
|
118
|
+
オプション:
|
|
119
|
+
--agent <agent-id> claude-code | codex-cli | gemini-cli | copilot (既定: claude-code)
|
|
120
|
+
--template <id> templates/ 配下のテンプレート id (既定: default)
|
|
121
|
+
--batch 紐づくアイテムが --status (と --filter-tags) に一致する
|
|
122
|
+
未レビューの調査ファイルをすべてレビューする。
|
|
123
|
+
--max-items を尊重する (既定: ${maxItems})。
|
|
124
|
+
--status <status> バッチモードのフィルタ: researched (既定)。
|
|
125
|
+
\`researched → reviewed\` が唯一の正当な遷移で、
|
|
126
|
+
他の値は拒否される。
|
|
127
|
+
--max-items N バッチモードで処理するレポート数の上限 (既定: ${maxItems})。
|
|
128
|
+
--filter-tags <list> バッチモードのカンマ区切り許可リスト。紐づく各アイテムの
|
|
129
|
+
matchedKeywords と照合する (大文字小文字を区別しない)。
|
|
130
|
+
--emit-payload ホストエージェントモード: レビューペイロードを stdout に出力し、
|
|
131
|
+
エージェントを起動しない。対話ホストセッションがその場で
|
|
132
|
+
調査ファイルをレビューし、\`radar review --commit <path>\` で確定する。
|
|
133
|
+
対話/オプトイン専用 — CI/ヘッドレスは既定の起動パスを使うこと。
|
|
134
|
+
--commit <path> ホストエージェントモード: 外部でレビューされたレポート
|
|
135
|
+
(<cwd>/research/ 配下) を ResearchFrontmatterSchema で検証し、
|
|
136
|
+
ホストが reviewedAt / reviewedBy を刻んだことを確認し、
|
|
137
|
+
紐づくアイテムに researched → reviewed の遷移を適用する。
|
|
138
|
+
--verbose フェーズマーカーに加えエージェント CLI の stdout/stderr を流す。
|
|
139
|
+
--quiet フェーズマーカーとスピナーを抑制し、完了行のみ出力する。
|
|
140
|
+
RADAR_NO_PROGRESS=1 を設定するのと同等。
|
|
141
|
+
|
|
142
|
+
research/<research-id>.md にレビューブロックを追記し、フロントマターの
|
|
143
|
+
\`reviewedAt\` / \`reviewedBy\` を刻み、紐づく items/<id>.yaml の \`status\` を
|
|
144
|
+
\`researched\` から \`reviewed\` へ遷移させる。両更新はアトミックに行われ、
|
|
145
|
+
途中失敗時は調査ファイルがロールバックされる。`,
|
|
146
|
+
// --- update help (#311) ---------------------------------------------------
|
|
147
|
+
"cli.update.help": `使い方:
|
|
148
|
+
radar update <research-id> [--agent <agent-id>] [--template <template-id>]
|
|
149
|
+
radar update <research-id> --emit-payload [--template <id>]
|
|
150
|
+
radar update --commit <path>
|
|
151
|
+
|
|
152
|
+
引数:
|
|
153
|
+
<research-id> 調査 id (research/<id>.md の .md を除いたベース名)
|
|
154
|
+
|
|
155
|
+
オプション:
|
|
156
|
+
--agent <agent-id> claude-code | codex-cli | gemini-cli | copilot (既定: claude-code)
|
|
157
|
+
--template <id> templates/ 配下のテンプレート id (既定: default)
|
|
158
|
+
--emit-payload ホストエージェントモード: 更新ペイロードを stdout に出力し、
|
|
159
|
+
エージェントを起動しない。対話ホストセッションが SKILL 手順を
|
|
160
|
+
自ら実行し、\`radar update --commit <path>\` で確定する。
|
|
161
|
+
対話/オプトイン専用 — CI/ヘッドレスは既定の起動パスを使うこと。
|
|
162
|
+
--commit <path> ホストエージェントモード: 外部で書かれた v+1 レポート
|
|
163
|
+
(<cwd>/research/ 配下) を ResearchFrontmatterSchema で検証し、
|
|
164
|
+
\`supersedes\` 先行版に対する v+1 不変条件を確認し、
|
|
165
|
+
items.yaml には手を触れない。
|
|
166
|
+
--verbose フェーズマーカーに加えエージェント CLI の stdout/stderr を流す。
|
|
167
|
+
--quiet フェーズマーカーとスピナーを抑制し、完了行のみ出力する。
|
|
168
|
+
RADAR_NO_PROGRESS=1 を設定するのと同等。
|
|
169
|
+
|
|
170
|
+
指定した先行版 id から research/<base>_v<n+1>.md を生成し、新ファイルの
|
|
171
|
+
フロントマターに \`supersedes: <prev id>\` を書き込む。先行版ファイルは
|
|
172
|
+
決して変更されず (履歴は不変)、紐づく items/<id>.yaml の \`status\` も
|
|
173
|
+
そのまま残る。`,
|
|
174
|
+
// --- triage help (#311) ---------------------------------------------------
|
|
175
|
+
"cli.triage.runHelp": `使い方: radar triage [--dry-run | --apply | --interactive] [options]
|
|
176
|
+
radar triage --emit-payload [--source <id>] [options]
|
|
177
|
+
radar triage --commit <path>
|
|
178
|
+
|
|
179
|
+
ソースごとに設定された triage ポリシーで \`detected\` アイテムを分類する。
|
|
180
|
+
|
|
181
|
+
モード (排他、既定: --dry-run):
|
|
182
|
+
--dry-run 提案された判定を stdout に出力する (ディスク書き込みなし)
|
|
183
|
+
--apply 判定を items/<id>.yaml に書き込みステータスを遷移させる
|
|
184
|
+
--interactive --dry-run 出力 → $EDITOR → 確認 → 適用
|
|
185
|
+
|
|
186
|
+
オプション:
|
|
187
|
+
--source <id> triage を単一ソースに限定する
|
|
188
|
+
--filter-tags <a,b> matchedKeywords の許可リスト (カンマ区切り)
|
|
189
|
+
--triage-agent <id> この実行のみ policy.agent を上書きする
|
|
190
|
+
--policy <path> ソースごとのポリシーを YAML ファイルで上書きする
|
|
191
|
+
--max-items N この実行で triage するアイテム数の上限
|
|
192
|
+
--audit-log <path> 全 triage 呼び出しの JSONL 監査レコードを追記する
|
|
193
|
+
--emit-payload ホストエージェントモード: triage ペイロードを stdout に出力し、
|
|
194
|
+
エージェントを起動しない。対話ホストセッションが自ら
|
|
195
|
+
アイテムを分類し決定 JSON を書き、
|
|
196
|
+
\`radar triage --commit <path>\` で確定する。
|
|
197
|
+
単一ソースグループが必要: detected アイテムを持つソースが
|
|
198
|
+
1 つだけでない限り --source を渡すこと。対話/オプトイン専用 —
|
|
199
|
+
CI/ヘッドレスは既定の起動パスを使うこと。
|
|
200
|
+
--commit <path> ホストエージェントモード: ホストが書いた決定 JSON
|
|
201
|
+
(<cwd>/triage/ 配下) をソースのポリシー + detected アイテムに対して
|
|
202
|
+
検証し、ステータス遷移を適用する。
|
|
203
|
+
-v, --verbose 詳細な進捗を出力する
|
|
204
|
+
-q, --quiet 進捗出力を完全に抑制する
|
|
205
|
+
|
|
206
|
+
\`triagePolicy:\` ブロックを持たないソースは警告付きでスキップされる。`,
|
|
207
|
+
"cli.triage.feedbackHelp": `使い方: radar triage feedback <item-id> --correct | --wrong [--reason <text>]
|
|
208
|
+
|
|
209
|
+
過去の triage 判定に対する人手のフィードバックを記録する。
|
|
210
|
+
フィードバックは items/<id>.yaml > triage.feedback に追記され、
|
|
211
|
+
ポリシー調整のため \`radar triage stats\` (#242) で利用される。
|
|
212
|
+
|
|
213
|
+
オプション:
|
|
214
|
+
--correct 過去の triage 判定を正しいとマークする
|
|
215
|
+
--wrong 過去の triage 判定を誤りとマークする
|
|
216
|
+
--reason <text> 自由記述の理由 (--wrong には推奨)`,
|
|
217
|
+
"cli.triage.statsHelp": `使い方: radar triage stats [--since <duration>] [--source <id>] [--json]
|
|
218
|
+
|
|
219
|
+
triage 判定と人手フィードバックを集計する。
|
|
220
|
+
数週間 \`radar triage --apply\` を実行した後に使うと、精度/再現率の
|
|
221
|
+
ドリフトを浮かび上がらせ、\`triagePolicy.rules:\` の調整を提案する。
|
|
222
|
+
推奨される月次ループは docs/user-guide.md の \`policy tuning workflow\` を参照。
|
|
223
|
+
|
|
224
|
+
オプション:
|
|
225
|
+
--since <duration> この期間内に triage されたアイテムのみ集計する (例: 30d, 24h)
|
|
226
|
+
--source <id> 統計を単一ソースに限定する (既定: 全ソース)
|
|
227
|
+
--json テキストレポートの代わりに機械可読な JSON を出力する`,
|
|
228
|
+
"cli.triage.help": `使い方: radar triage <subcommand|--apply|--dry-run|--interactive> [...]
|
|
229
|
+
|
|
230
|
+
サブコマンド:
|
|
231
|
+
feedback <item-id> --correct | --wrong [--reason <text>]
|
|
232
|
+
stats [--since <duration>] [--source <id>] [--json]
|
|
233
|
+
|
|
234
|
+
実行モード (サブコマンド未指定時):
|
|
235
|
+
--dry-run 提案された判定を出力する
|
|
236
|
+
--apply 判定を items/<id>.yaml に書き込む
|
|
237
|
+
--interactive 適用前に $EDITOR で判定を編集する
|
|
238
|
+
|
|
239
|
+
完全なオプション一覧は \`radar triage --help\` を参照。`,
|
|
240
|
+
// --- dismiss / undismiss help (#311) --------------------------------------
|
|
241
|
+
"cli.dismiss.help": ({ maxItems }) => `使い方:
|
|
242
|
+
radar dismiss <item-id> [<item-id> ...]
|
|
243
|
+
radar dismiss --batch [--status <status>] [--max-items N] [--filter-tags <list>]
|
|
244
|
+
|
|
245
|
+
引数:
|
|
246
|
+
<item-id> アイテム id (items/<sourceId>/<item-id>.yaml に対応)
|
|
247
|
+
1 回の呼び出しで却下するには 2 件以上の id を渡す。
|
|
248
|
+
--batch では位置引数の id を省略する (アイテムは自動検出)。
|
|
249
|
+
|
|
250
|
+
オプション:
|
|
251
|
+
--batch --status (と --filter-tags) に一致する全アイテムを却下する。
|
|
252
|
+
--max-items の上限を尊重する (既定: ${maxItems})。
|
|
253
|
+
--status <status> バッチモードのフィルタ: detected | triaged_unsure (既定: detected)。
|
|
254
|
+
状態機械上 \`dismissed\` へ遷移できるのはこの 2 つの状態のみで、
|
|
255
|
+
他の値は拒否される。
|
|
256
|
+
--max-items N バッチモードで処理するアイテム数の上限 (既定: ${maxItems})。
|
|
257
|
+
超過分は破棄され warn() で通知される。暴走した --backfill が
|
|
258
|
+
ワークフロー内で上限を突破できないようにするため。
|
|
259
|
+
--filter-tags <list> バッチモードのカンマ区切り許可リスト。各アイテムの
|
|
260
|
+
matchedKeywords と照合する (大文字小文字を区別しない)。既定: 全件。
|
|
261
|
+
|
|
262
|
+
アイテムのステータスを \`dismissed\` へ遷移させる。\`detected\` または
|
|
263
|
+
\`triaged_unsure\` からのみ有効で、\`researched\` / \`reviewed\` / \`dismissed\` /
|
|
264
|
+
\`triaged_research\` / \`triaged_digest\` のアイテムは却下できない。
|
|
265
|
+
|
|
266
|
+
逆操作: \`radar undismiss <item-id> [--force]\`。`,
|
|
267
|
+
"cli.undismiss.help": `使い方: radar undismiss <item-id> [--force]
|
|
268
|
+
|
|
269
|
+
引数:
|
|
270
|
+
<item-id> アイテム id (items/<sourceId>/<item-id>.yaml に対応)
|
|
271
|
+
|
|
272
|
+
オプション:
|
|
273
|
+
--force, -f 人手由来の却下を取り消すときに必須
|
|
274
|
+
|
|
275
|
+
\`dismissed → detected\` を取り消す。
|
|
276
|
+
triage 由来の却下は静かに戻り、人手由来の却下は --force が必要。
|
|
277
|
+
|
|
278
|
+
\`radar dismiss\` の逆操作。`,
|
|
279
|
+
// --- items help (#311) ----------------------------------------------------
|
|
280
|
+
"cli.items.listHelp": `使い方: radar items list [filters] [output options]
|
|
281
|
+
|
|
282
|
+
フィルタ:
|
|
283
|
+
--status <status> detected | triaged_research | triaged_digest |
|
|
284
|
+
triaged_unsure | researched | reviewed | dismissed
|
|
285
|
+
--source <id> 単一ソースに限定する
|
|
286
|
+
--triage-group <name> triage.group == <name> のアイテム
|
|
287
|
+
(ダイジェストワークフローで使用)
|
|
288
|
+
--since <duration> 期限より古いアイテムを除外する (例: 7d, 24h)
|
|
289
|
+
--limit N 結果件数の上限
|
|
290
|
+
|
|
291
|
+
出力オプション:
|
|
292
|
+
--json JSON 配列を出力する (アイテムごとに 1 オブジェクト)
|
|
293
|
+
--field <expr> アイテムのフィールドを 1 行ずつ出力する (例: id, sourceId,
|
|
294
|
+
triage.decision)。ネストしたドットパスに対応。`,
|
|
295
|
+
"cli.items.help": `使い方: radar items <list> [...]
|
|
296
|
+
|
|
297
|
+
サブコマンド:
|
|
298
|
+
list [filters] 指定したフィルタに一致するアイテムを一覧表示する`,
|
|
299
|
+
// --- watch help (#311) ----------------------------------------------------
|
|
300
|
+
"cli.watch.help": `使い方: radar watch <run> [options]
|
|
301
|
+
|
|
302
|
+
サブコマンド:
|
|
303
|
+
run [--source <id>] [--bootstrap | --backfill [--max-pages N]]
|
|
304
|
+
ソースを取得しアイテムを生成する
|
|
305
|
+
|
|
306
|
+
run のオプション:
|
|
307
|
+
--source <id> 実行を単一ソース id に限定する
|
|
308
|
+
--bootstrap アイテムを出さずに lastSeenIds を初期化する (初回ノイズを抑制)
|
|
309
|
+
--backfill 利用可能な全履歴ページを取得し、各ページのアイテムを出す。
|
|
310
|
+
完全対応 kind: json-api / github-releases / npm-registry。
|
|
311
|
+
他の kind (rss / html / html-js) は現在のページのみ返す。
|
|
312
|
+
--max-pages N pagination.maxPages の上限を上書きする (--backfill が必要)。
|
|
313
|
+
内側のページネーションのみに適用 — facet sweep は
|
|
314
|
+
このフラグに関わらず常に全 facet 値を走査する。
|
|
315
|
+
-v, --verbose progress-reporter の raw() パススルーを有効化する (アダプタの stdout)。
|
|
316
|
+
-q, --quiet ソースごとの進捗レポーターを抑制する (旧来の 1 行ログは残る)。
|
|
317
|
+
RADAR_NO_PROGRESS=1 も同じ効果。`,
|
|
318
|
+
// --- doctor help (#311) ---------------------------------------------------
|
|
319
|
+
"cli.doctor.help": `使い方: radar doctor [--no-proxy-check]
|
|
320
|
+
|
|
321
|
+
ワークスペースを診断し、依存関係/設定の健全性を報告する。
|
|
322
|
+
|
|
323
|
+
実施するチェック:
|
|
324
|
+
- ワークスペースのディレクトリ (sources/, items/, state/, research/, templates/)
|
|
325
|
+
- radar.config.yaml のスキーマ妥当性
|
|
326
|
+
- エージェント CLI の利用可否 (claude / codex / gemini / copilot)
|
|
327
|
+
- Playwright + Chromium のインストール (html-js ソース設定時のみ)
|
|
328
|
+
- プロキシ環境変数 (HTTPS_PROXY / HTTP_PROXY / ALL_PROXY) を資格情報マスク付きで確認
|
|
329
|
+
- NODE_USE_ENV_PROXY の状態 (proxy のため radar が自己 respawn した際に有効)
|
|
330
|
+
- NODE_EXTRA_CA_CERTS の状態 (TLS 傍受プロキシで必要)
|
|
331
|
+
- ライブプロキシのヘルスチェック (api.github.com への HTTPS リクエスト)
|
|
332
|
+
|
|
333
|
+
オプション:
|
|
334
|
+
--no-proxy-check ライブプロキシのヘルスチェックをスキップする (オフライン向け)
|
|
335
|
+
|
|
336
|
+
終了コード:
|
|
337
|
+
0 すべて ok (警告は出るがエラーはなし)
|
|
338
|
+
1 1 つ以上の error レベルのチェックが失敗した`,
|
|
339
|
+
// --- source help (#311) ---------------------------------------------------
|
|
340
|
+
"cli.source.addHelp": `使い方: radar source add <id> --kind <kind> --url <url> [options]
|
|
341
|
+
radar source add <id> --recipe <name> [overrides]
|
|
342
|
+
|
|
343
|
+
オプション:
|
|
344
|
+
--kind <kind> rss | html | html-js | github-releases | npm-registry | json-feed | json-api
|
|
345
|
+
--url <url> 取得対象 URL
|
|
346
|
+
--recipe <name> バンドル済みレシピを適用する (\`radar source recipes\` 参照)。
|
|
347
|
+
--kind / --url / --selector-* / --pagination-* とは排他。
|
|
348
|
+
--name / --tags / --keywords / --exclude-keywords は
|
|
349
|
+
レシピの既定値を上書きできる。
|
|
350
|
+
--name <name> 表示名 (既定は <id>)
|
|
351
|
+
--tags <a,b> カンマ区切りのタグ
|
|
352
|
+
--keywords <a,b> カンマ区切りの含めるキーワード
|
|
353
|
+
(有用な出力には必須 — 空 = 何にも一致しない)
|
|
354
|
+
--exclude-keywords <a,b> カンマ区切りの除外キーワード
|
|
355
|
+
--selector-<field> <css> kind=html / html-js 用の CSS セレクタ (必須: item, title, link)
|
|
356
|
+
任意: summary, publishedAt, body, tags
|
|
357
|
+
kind=html-js ではセレクタは JS 実行後の DOM に対して評価される。
|
|
358
|
+
\`js:\` ブロック (waitFor / timeout / userAgent) はフラグでは
|
|
359
|
+
設定できない。add 後に sources/<id>.yaml を編集すること。
|
|
360
|
+
|
|
361
|
+
kind=json-api の場合:
|
|
362
|
+
--pagination-strategy <s> page | offset | cursor | link-header | token | none (既定: page)
|
|
363
|
+
--pagination-param <name> page/offset/cursor 値のクエリパラメータ名
|
|
364
|
+
--pagination-start N page/offset の初期値 (既定: 0)
|
|
365
|
+
--page-size N 1 ページあたりのアイテム数
|
|
366
|
+
--page-size-param <name> page-size 値のクエリパラメータ名
|
|
367
|
+
--max-pages N 走査するページ数の上限 (既定: 20)
|
|
368
|
+
--next-cursor-path <jp> next-cursor 値への JSONPath-lite (cursor/token 戦略)
|
|
369
|
+
--total-path <jp> total-count 値への JSONPath-lite (backfill の早期停止ヒント)
|
|
370
|
+
|
|
371
|
+
kind=json-api の Selector フィールド (\`jsonSelectors.*\`) はフラグでは設定できない。
|
|
372
|
+
スキーマに既定のフォールバック連鎖 (items / title / link / publishedAt / summary) があるため、
|
|
373
|
+
単純な API はセレクタなしで動く。明示的なセレクタが必要な場合 (ネストフィールド、
|
|
374
|
+
非標準エンベロープ) は sources/<id>.yaml を直接編集すること。
|
|
375
|
+
|
|
376
|
+
Facet sweep (例: 年単位の sweep) はフラグでは設定できない。
|
|
377
|
+
year sweep は \`--recipe aws-whats-new\` でまとめて適用する。レシピ専用の構造フィールド。`,
|
|
378
|
+
"cli.source.listHelp": `使い方: radar source list [--enabled-only] [-v|--verbose]
|
|
379
|
+
|
|
380
|
+
sources/*.yaml を表形式で一覧表示する: id / kind / url / tags。
|
|
381
|
+
|
|
382
|
+
オプション:
|
|
383
|
+
--enabled-only 前方互換のため予約 (現状は no-op)。
|
|
384
|
+
-v, --verbose ソースごとに keywords・trustLevel・lastFetchedAt
|
|
385
|
+
(state/<id>.yaml 由来) を含む詳細ブロックを出力する。`,
|
|
386
|
+
"cli.source.removeHelp": `使い方: radar source remove <id>
|
|
387
|
+
|
|
388
|
+
sources/<id>.yaml を削除する。state/<id>.yaml と items/ は保持される。`,
|
|
389
|
+
"cli.source.testHelp": `使い方: radar source test <id> [--limit N] [--show-content]
|
|
390
|
+
|
|
391
|
+
単一ソースをドライランする: 取得・フィルタし、一致アイテムを出力する。
|
|
392
|
+
state/ と items/ には触れない (永続化なし)。新しいソース追加時の
|
|
393
|
+
キーワード調整に便利。
|
|
394
|
+
|
|
395
|
+
kind=json-api では \`source test\` はページ 0 のみ取得する。
|
|
396
|
+
レシピが複数ページを宣言していてもページネーションは走査されない —
|
|
397
|
+
\`--limit N\` は出力する一致アイテム数を制限するだけで、ページ予算は変えない。
|
|
398
|
+
全履歴の取り込みには \`radar watch run --backfill\` を使うこと。
|
|
399
|
+
ページ 0 の \`Link\` ヘッダ / \`nextCursor\` 抽出は、状態を変えずに
|
|
400
|
+
ページネーション調整できるよう \`--show-content\` で表示される。
|
|
401
|
+
|
|
402
|
+
facet-sweep レシピでは \`source test\` は単一の facet 値のみ試す:
|
|
403
|
+
range facet は上限 (最新年)、enum facet は最初の値を使う。
|
|
404
|
+
どの値を試したかは警告で示され、キーワード調整が 1 スライスに
|
|
405
|
+
暗黙的に限定されないようにする。全 facet 値を sweep するには
|
|
406
|
+
\`radar watch run --backfill\` を実行すること。
|
|
407
|
+
|
|
408
|
+
オプション:
|
|
409
|
+
--limit N 出力する一致アイテムの最大数 (既定 10)
|
|
410
|
+
--show-content 各アイテム本文の先頭 200 文字、加えて
|
|
411
|
+
(kind=json-api) セレクタ採用テーブルとページネーション
|
|
412
|
+
プレビュー (次 URL / Link ヘッダ / nextCursor) も出力する。
|
|
413
|
+
-v, --verbose progress-reporter の raw() パススルーを有効化する (アダプタの stdout)。
|
|
414
|
+
kind=html-js (Playwright フェーズマーカー) で最も有用。
|
|
415
|
+
-q, --quiet 進捗レポーターを完全に抑制する。RADAR_NO_PROGRESS=1 も
|
|
416
|
+
同じ効果。`,
|
|
417
|
+
"cli.source.recipesHelp": `使い方: radar source recipes
|
|
418
|
+
|
|
419
|
+
バンドル済みレシピ (radar パッケージ内の recipes/*.yaml) を一覧表示する。
|
|
420
|
+
各レシピは次のように適用できる:
|
|
421
|
+
radar source add <id> --recipe <name> [--keywords <kw>] [--tags <t>] [--name <display>]
|
|
422
|
+
|
|
423
|
+
バンドル済みレシピは radar npm パッケージに同梱される。ユーザー定義レシピは
|
|
424
|
+
まだ未対応。新しいバンドルレシピを追加するには、radar リポジトリの recipes/
|
|
425
|
+
ディレクトリに YAML を寄稿すること。`,
|
|
426
|
+
"cli.source.help": `使い方: radar source <add|list|recipes|remove|test> [...]
|
|
427
|
+
|
|
428
|
+
サブコマンド:
|
|
429
|
+
add <id> --kind <kind> --url <url> [...]
|
|
430
|
+
add <id> --recipe <name> [--keywords <kw>] [--tags <t>] [--name <display>]
|
|
431
|
+
list [--enabled-only]
|
|
432
|
+
recipes
|
|
433
|
+
remove <id>
|
|
434
|
+
test <id> [--limit N] [--show-content]`,
|
|
435
|
+
// --- workflow help (#311) -------------------------------------------------
|
|
436
|
+
"cli.workflow.help": `使い方: radar workflow <subcommand> [...]
|
|
437
|
+
|
|
438
|
+
サブコマンド:
|
|
439
|
+
generate <type> GitHub Actions ワークフロー YAML を生成する
|
|
440
|
+
Types: watch | combined | combined-with-triage
|
|
441
|
+
|
|
442
|
+
type 別のオプションは \`radar workflow generate <type> --help\` を参照。`,
|
|
443
|
+
"cli.workflow.generateHelp": `使い方: radar workflow generate <type> [options]
|
|
444
|
+
|
|
445
|
+
Types:
|
|
446
|
+
watch 定期的な \`radar watch run\` (cron + rebase リトライ付き state コミット)
|
|
447
|
+
combined 定期的な \`radar watch run\` -> ハードキャップ付き auto research --batch
|
|
448
|
+
combined-with-triage \`watch run\` -> \`triage --apply\` -> \`research --batch\` -> グループ別 \`research --digest\` -> \`review --batch\` を 1 ジョブで
|
|
449
|
+
|
|
450
|
+
type 別のオプションは \`radar workflow generate <type> --help\` を参照。`,
|
|
451
|
+
// --- per-type workflow generate help (#337, deferred from #311) -----------
|
|
452
|
+
"cli.workflow.generateWatchHelp": `使い方: radar workflow generate watch [options]
|
|
453
|
+
|
|
454
|
+
cron スケジュールで \`radar watch run\` を実行する GitHub Actions ワークフローを生成する。
|
|
455
|
+
生成されるワークフローには、他の同時実行ワークフローとの push 競合を緩和するための
|
|
456
|
+
git pull --rebase リトライ処理が含まれる。
|
|
457
|
+
|
|
458
|
+
オプション:
|
|
459
|
+
--cron <expression> 5 フィールドの cron 式 (デフォルト: "0 0 * * *")
|
|
460
|
+
--output <path> .github/workflows/ 配下の出力ファイル
|
|
461
|
+
(デフォルト: .github/workflows/feedradar-watch.yaml)
|
|
462
|
+
--agent <name> claude-code | codex-cli | gemini-cli | copilot (デフォルト: claude-code)
|
|
463
|
+
ワークフローが参照するシークレット名を決定する。
|
|
464
|
+
--force, -f 既存の出力ファイルを上書きする
|
|
465
|
+
--lang <en|ja> 生成される YAML のコメント / ステップ名の言語
|
|
466
|
+
(デフォルト: en; RADAR_LANG と config.locale も参照)
|
|
467
|
+
|
|
468
|
+
必要なシークレット (Settings → Secrets and variables → Actions):
|
|
469
|
+
ANTHROPIC_API_KEY --agent claude-code のとき (デフォルト)
|
|
470
|
+
OPENAI_API_KEY --agent codex-cli のとき
|
|
471
|
+
GEMINI_API_KEY --agent gemini-cli のとき
|
|
472
|
+
GITHUB_TOKEN --agent copilot では自動付与 (設定不要)`,
|
|
473
|
+
"cli.workflow.generateCombinedHelp": ({ maxItems }) => `使い方: radar workflow generate combined [options]
|
|
474
|
+
|
|
475
|
+
\`radar watch run\` -> 新規アイテムなしガード -> \`radar research --batch\` を
|
|
476
|
+
連結し、コストをハードキャップで制御する GitHub Actions ワークフローを生成する。
|
|
477
|
+
|
|
478
|
+
オプション:
|
|
479
|
+
--watch-cron <expression> 5 フィールドの cron 式 (デフォルト: "0 0 * * *")
|
|
480
|
+
--output <path> .github/workflows/ 配下の出力ファイル
|
|
481
|
+
(デフォルト: .github/workflows/feedradar-combined.yaml)
|
|
482
|
+
--agent <name> claude-code | codex-cli | gemini-cli | copilot (デフォルト: claude-code)
|
|
483
|
+
--max-items N 1 回あたりの auto-research のハードキャップ (デフォルト: ${maxItems})
|
|
484
|
+
--filter-tags <list> matchedKeywords のカンマ区切り許可リスト
|
|
485
|
+
(デフォルト: 未指定。検出された全アイテムにマッチ)
|
|
486
|
+
--force, -f 既存の出力ファイルを上書きする
|
|
487
|
+
--lang <en|ja> 生成される YAML のコメント / ステップ名の言語
|
|
488
|
+
(デフォルト: en; RADAR_LANG と config.locale も参照)
|
|
489
|
+
|
|
490
|
+
必要なシークレット (Settings → Secrets and variables → Actions):
|
|
491
|
+
ANTHROPIC_API_KEY --agent claude-code のとき (デフォルト)
|
|
492
|
+
OPENAI_API_KEY --agent codex-cli のとき
|
|
493
|
+
GEMINI_API_KEY --agent gemini-cli のとき
|
|
494
|
+
GITHUB_TOKEN --agent copilot では自動付与 (設定不要)`,
|
|
495
|
+
"cli.workflow.generateCombinedWithTriageHelp": ({ watchCron, output, maxItems, }) => `使い方: radar workflow generate combined-with-triage [options]
|
|
496
|
+
|
|
497
|
+
\`radar watch run\` -> \`radar triage --apply\` -> \`radar research --batch --status triaged_research\` ->
|
|
498
|
+
グループ別 \`radar research --digest\` -> \`radar review --batch\` を 1 ジョブで連結する
|
|
499
|
+
GitHub Actions ワークフローを生成する。
|
|
500
|
+
|
|
501
|
+
オプション:
|
|
502
|
+
--watch-cron <expression> 5 フィールドの cron 式 (デフォルト: "${watchCron}")
|
|
503
|
+
--output <path> .github/workflows/ 配下の出力ファイル
|
|
504
|
+
(デフォルト: ${output})
|
|
505
|
+
--triage-agent <name> claude-code | codex-cli | gemini-cli | copilot (デフォルト: gemini-cli)
|
|
506
|
+
--research-agent <name> claude-code | codex-cli | gemini-cli | copilot (デフォルト: claude-code)
|
|
507
|
+
--review-agent <name> claude-code | codex-cli | gemini-cli | copilot (デフォルト: codex-cli)
|
|
508
|
+
--max-items N 1 回あたりの research --batch のハードキャップ (デフォルト: ${maxItems})
|
|
509
|
+
--slack-webhook <ref> triaged_unsure キュー通知用のシークレット参照
|
|
510
|
+
(例: secrets.SLACK_WEBHOOK) (任意)
|
|
511
|
+
--output-mode <mode> pr | direct-commit (デフォルト: pr)。'pr' はレビュー用
|
|
512
|
+
PR を開く。'direct-commit' はデフォルトブランチへ直接
|
|
513
|
+
コミット & push する (pull-requests: write を外す)
|
|
514
|
+
--force, -f 既存の出力ファイルを上書きする
|
|
515
|
+
--lang <en|ja> 生成される YAML のコメント / ステップ名の言語
|
|
516
|
+
(デフォルト: en; RADAR_LANG と config.locale も参照)
|
|
517
|
+
|
|
518
|
+
必要なシークレット (Settings → Secrets and variables → Actions):
|
|
519
|
+
ANTHROPIC_API_KEY いずれかのロールが --agent claude-code を使うとき
|
|
520
|
+
OPENAI_API_KEY いずれかのロールが --agent codex-cli を使うとき
|
|
521
|
+
GEMINI_API_KEY いずれかのロールが --agent gemini-cli を使うとき (triage のデフォルト)
|
|
522
|
+
GITHUB_TOKEN 自動付与 (設定不要)`,
|
|
523
|
+
// --- routine help (#311) --------------------------------------------------
|
|
524
|
+
"cli.routine.help": `使い方: radar routine <subcommand> [...]
|
|
525
|
+
|
|
526
|
+
サブコマンド:
|
|
527
|
+
generate <type> Claude Code Routine YAML を生成する (.claude/routines/)
|
|
528
|
+
Types: watch | pipeline
|
|
529
|
+
fire <trig_id> 登録済みルーティンを外部から起動する (/fire API)
|
|
530
|
+
|
|
531
|
+
サブコマンド別のオプションは \`radar routine <subcommand> --help\` を参照。`,
|
|
532
|
+
"cli.routine.generateHelp": `使い方: radar routine generate <type> [options]
|
|
533
|
+
|
|
534
|
+
Types:
|
|
535
|
+
watch 定期的な \`radar watch run\` 自セッションルーティン。items/state を claude/* ブランチにコミットする
|
|
536
|
+
pipeline watch -> triage -> research -> review の全工程を 1 アイテムずつ行う自セッションルーティン
|
|
537
|
+
|
|
538
|
+
type 別のオプションは \`radar routine generate <type> --help\` を参照。`,
|
|
539
|
+
// --- per-type routine generate / fire help (#337, deferred from #311) -----
|
|
540
|
+
"cli.routine.generateWatchHelp": ({ models }) => `使い方: radar routine generate watch [options]
|
|
541
|
+
|
|
542
|
+
スケジュールで \`radar watch run\` を実行し、検出した items/state を claude/* ブランチへ
|
|
543
|
+
コミットする Claude Code Routine YAML を生成する。
|
|
544
|
+
このルーティンは 1 つの Claude セッションで完結し、他のエージェントを起動しない。
|
|
545
|
+
|
|
546
|
+
オプション:
|
|
547
|
+
--name <name> ルーティン名 (デフォルト: "feedradar-watch")
|
|
548
|
+
デフォルトの出力ファイル名も兼ねる。
|
|
549
|
+
--repo <owner/repo> 対象リポジトリ (デフォルト: <owner>/<repo>)
|
|
550
|
+
--cron <expression> 5 フィールドの cron、最小間隔は 1 時間 (デフォルト: "0 * * * *")
|
|
551
|
+
1 時間未満 (例: "*/5 * * * *") は拒否される。
|
|
552
|
+
--timezone <tz> スケジュールのタイムゾーン (デフォルト: "UTC")
|
|
553
|
+
--model <name> ${models}
|
|
554
|
+
(デフォルト: claude-sonnet-4-6)
|
|
555
|
+
--prompt-mode <mode> inline | bootstrap (デフォルト: inline)。'bootstrap' は完了時に
|
|
556
|
+
Web UI へ貼る短いプロンプトを出力する (ルーティンは実行時に
|
|
557
|
+
コミット済み YAML から instructions を読むため、編集ごとの
|
|
558
|
+
再貼り付けが不要)。どちらのモードでも生成 YAML の
|
|
559
|
+
instructions ブロックは変わらない。
|
|
560
|
+
--output <path> .claude/routines/ 配下の出力ファイル
|
|
561
|
+
(デフォルト: .claude/routines/<name>.yaml)
|
|
562
|
+
--force, -f 既存の出力ファイルを上書きする
|
|
563
|
+
--lang <en|ja> 生成される YAML のメモ / 手順 / コメントの言語
|
|
564
|
+
(デフォルト: en; RADAR_LANG と config.locale も参照)`,
|
|
565
|
+
"cli.routine.generatePipelineHelp": ({ models, maxItems, }) => `使い方: radar routine generate pipeline [options]
|
|
566
|
+
|
|
567
|
+
1 つのセッションで全工程 — \`radar watch run\` -> triage -> research -> review — を
|
|
568
|
+
順番に実行し、アイテムを 1 件ずつ処理する Claude Code Routine YAML を生成する。
|
|
569
|
+
他のエージェントを起動しないため、GHA combined-with-triage ワークフローのような
|
|
570
|
+
エージェント間レビューは含まれない。1 回あたりの処理件数は CLI フラグで制限される。
|
|
571
|
+
|
|
572
|
+
オプション:
|
|
573
|
+
--name <name> ルーティン名 (デフォルト: "feedradar-pipeline")
|
|
574
|
+
デフォルトの出力ファイル名も兼ねる。
|
|
575
|
+
--repo <owner/repo> 対象リポジトリ (デフォルト: <owner>/<repo>)
|
|
576
|
+
--cron <expression> 5 フィールドの cron、最小間隔は 1 時間 (デフォルト: "0 * * * *")
|
|
577
|
+
1 時間未満 (例: "*/5 * * * *") は拒否される。
|
|
578
|
+
--timezone <tz> スケジュールのタイムゾーン (デフォルト: "UTC")
|
|
579
|
+
--model <name> ${models}
|
|
580
|
+
(デフォルト: claude-sonnet-4-6)
|
|
581
|
+
--max-items N 1 回あたりに triage/research/review するアイテム数のハードキャップ
|
|
582
|
+
(デフォルト: ${maxItems})。triage --max-items と items --limit を駆動する。
|
|
583
|
+
--output-mode <mode> pr | auto-merge (デフォルト: pr)。'auto-merge' はルーティン自身の
|
|
584
|
+
PR を main へ squash マージする (Web UI の 'Allow unrestricted
|
|
585
|
+
branch pushes' トグルが必要)。
|
|
586
|
+
--prompt-mode <mode> inline | bootstrap (デフォルト: inline)。'bootstrap' は完了時に
|
|
587
|
+
Web UI へ貼る短いプロンプトを出力する (ルーティンは実行時に
|
|
588
|
+
コミット済み YAML から instructions を読むため、編集ごとの
|
|
589
|
+
再貼り付けが不要)。どちらのモードでも生成 YAML の
|
|
590
|
+
instructions ブロックは変わらない。
|
|
591
|
+
--output <path> .claude/routines/ 配下の出力ファイル
|
|
592
|
+
(デフォルト: .claude/routines/<name>.yaml)
|
|
593
|
+
--force, -f 既存の出力ファイルを上書きする
|
|
594
|
+
--lang <en|ja> 生成される YAML のメモ / 手順 / コメントの言語
|
|
595
|
+
(デフォルト: en; RADAR_LANG と config.locale も参照)`,
|
|
596
|
+
"cli.routine.fireHelp": ({ tokenEnv }) => `使い方: radar routine fire <trig_id> [options]
|
|
597
|
+
|
|
598
|
+
登録済みの Claude Code Routine を /fire API 経由で外部から起動する。
|
|
599
|
+
この呼び出しはルーティンセッションが作成された時点で返り、
|
|
600
|
+
セッションの完了は待たない。
|
|
601
|
+
|
|
602
|
+
引数:
|
|
603
|
+
<trig_id> Web UI で発行されるルーティン id ('trig_' で始まる)
|
|
604
|
+
|
|
605
|
+
オプション:
|
|
606
|
+
--text <msg> 自由形式の起動コンテキスト (リクエストボディの \`text\`)。
|
|
607
|
+
API は解析せず、そのまま渡される。
|
|
608
|
+
--token-env <NAME> ルーティンごとの bearer トークンを保持する環境変数名
|
|
609
|
+
(デフォルト: ${tokenEnv})。
|
|
610
|
+
--lang <en|ja> このコマンドのメッセージ / ヘルプの表示言語
|
|
611
|
+
(既定: en; RADAR_LANG と config.locale も尊重)
|
|
612
|
+
|
|
613
|
+
ルーティンごとのトークンは Web UI で一度だけ発行される (再生成 / 失効も Web UI で行う)。
|
|
614
|
+
トークンは環境変数から読み取られ、フラグとしては受け付けず、出力もされない。`,
|
|
615
|
+
// --- user-facing errors & result notifications (#312) ---------------------
|
|
616
|
+
// dismiss (#312)
|
|
617
|
+
"cli.dismiss.batchIncompatiblePositional": ({ count }) => `dismiss: --batch は位置引数の <item-id> と併用できません (${count} 件指定されました)`,
|
|
618
|
+
"cli.dismiss.invalidStatus": ({ status, allowed }) => `dismiss: 不正な --status '${status}' (有効値: ${allowed})`,
|
|
619
|
+
"cli.dismiss.statusRequiresBatch": "dismiss: --status は --batch と併用してください",
|
|
620
|
+
"cli.dismiss.maxItemsRequiresBatch": "dismiss: --max-items は --batch と併用してください",
|
|
621
|
+
"cli.dismiss.filterTagsRequiresBatch": "dismiss: --filter-tags は --batch と併用してください",
|
|
622
|
+
"cli.dismiss.invalidMaxItemsInteger": ({ raw }) => `dismiss: 不正な --max-items '${raw}' (正の整数を指定してください)`,
|
|
623
|
+
"cli.dismiss.invalidMaxItemsPositive": ({ raw }) => `dismiss: 不正な --max-items '${raw}' (0 より大きい値を指定してください)`,
|
|
624
|
+
"cli.dismiss.missingItemId": "dismiss: <item-id> が指定されていません",
|
|
625
|
+
"cli.dismiss.itemNotFound": ({ id }) => `dismiss: アイテム '${id}' が items/ 配下に見つかりません`,
|
|
626
|
+
"cli.dismiss.itemWrongStatus": ({ id, status, allowed, nextStatuses, }) => `dismiss: アイテム '${id}' のステータスは '${status}' です。期待値: ${allowed} のいずれか (dismiss はこれらのステータスからのみ 'dismissed' に遷移できます)。'${status}' から遷移可能なステータス: ${nextStatuses}`,
|
|
627
|
+
"cli.dismiss.failedUpdate": ({ reason }) => `dismiss: アイテムのステータス更新に失敗しました: ${reason}`,
|
|
628
|
+
"cli.dismiss.transitioned": ({ sourceId, id }) => `dismiss: items/${sourceId}/${id}.yaml のステータスを dismissed に変更しました`,
|
|
629
|
+
"cli.dismiss.noItemsMatched": ({ status, tags }) => `dismiss: --batch のフィルタに一致するアイテムがありません (status=${status}${tags})`,
|
|
630
|
+
"cli.dismiss.capReached": ({ maxItems, dropped, matched, }) => `dismiss: --max-items ${maxItems} の上限に達しました。超過した ${dropped} 件を除外します (一致 ${matched} 件)`,
|
|
631
|
+
"cli.dismiss.batchWillProcess": ({ count, status, tags, cap, }) => `dismiss: --batch で ${count} 件を処理します (status=${status}${tags}, 上限=${cap})`,
|
|
632
|
+
"cli.dismiss.batchCompleted": ({ count }) => `dismiss: --batch で ${count} 件を処理しました`,
|
|
633
|
+
// undismiss (#312)
|
|
634
|
+
"cli.undismiss.missingItemId": "undismiss: <item-id> が指定されていません",
|
|
635
|
+
"cli.undismiss.itemsDirNotFound": "undismiss: items/ が見つかりません (`radar init` を実行してください)",
|
|
636
|
+
"cli.undismiss.itemNotFound": ({ id }) => `undismiss: アイテム '${id}' が items/ 配下に見つかりません`,
|
|
637
|
+
"cli.undismiss.notDismissed": ({ id, status }) => `undismiss: アイテム '${id}' のステータスは '${status}' です。期待値: 'dismissed' (undismiss は dismiss の取り消しのみを行い、他の遷移には使えません)`,
|
|
638
|
+
"cli.undismiss.forbiddenTransition": "undismiss: ステートマシンが 'dismissed → detected' を許可していません (内部エラー)",
|
|
639
|
+
"cli.undismiss.humanOriginRequiresForce": ({ id }) => `undismiss: アイテム '${id}' は人間によって dismiss されています。取り消すには --force を指定してください (意図的な安全ガードです)`,
|
|
640
|
+
"cli.undismiss.failedUpdate": ({ reason }) => `undismiss: アイテムの更新に失敗しました: ${reason}`,
|
|
641
|
+
"cli.undismiss.revertedHumanOrigin": ({ id }) => `undismiss: 人間由来の dismiss を取り消しました: '${id}' (--force 使用)`,
|
|
642
|
+
"cli.undismiss.transitioned": ({ sourceId, id }) => `undismiss: items/${sourceId}/${id}.yaml のステータスを detected に変更しました`,
|
|
643
|
+
// doctor diagnostics (#312)
|
|
644
|
+
"cli.doctor.workspaceDirExists": ({ dir }) => `${dir}/ は存在します`,
|
|
645
|
+
"cli.doctor.workspaceDirMissing": ({ dir }) => `${dir}/ がありません — \`radar init\` でワークスペースを作成してください`,
|
|
646
|
+
"cli.doctor.configValid": "radar.config.yaml は有効です (または存在せず、既定値が適用されます)",
|
|
647
|
+
"cli.doctor.configInvalid": ({ reason }) => `radar.config.yaml が不正です: ${reason}`,
|
|
648
|
+
"cli.doctor.agentFound": ({ agent, binary, path, }) => `${agent}: ${binary} が ${path} に見つかりました`,
|
|
649
|
+
"cli.doctor.agentMissing": ({ agent, binary }) => `${agent}: ${binary} が PATH に見つかりません (\`radar research --agent ${agent}\` を使うにはインストールしてください)`,
|
|
650
|
+
"cli.doctor.playwrightNotRequired": "playwright: 不要です (html-js ソースが設定されていません)",
|
|
651
|
+
"cli.doctor.playwrightOk": ({ path }) => `playwright: 正常 — chromium は ${path} にあります`,
|
|
652
|
+
"cli.doctor.playwrightModuleMissing": ({ sources, hint, }) => `playwright: モジュールがインストールされていません (html-js ソースに必要: ${sources})\n ${hint}`,
|
|
653
|
+
"cli.doctor.playwrightChromiumMissing": ({ path, sources, hint, }) => `playwright: chromium が '${path}' に見つかりません (html-js ソースに必要: ${sources})\n ${hint}`,
|
|
654
|
+
"cli.doctor.proxyEnvAllProxyOnly": ({ source, masked, }) => `proxy: $${source}=${masked} を検出しました (Node --use-env-proxy は ALL_PROXY を無視します。HTTPS_PROXY または HTTP_PROXY を設定してください)`,
|
|
655
|
+
"cli.doctor.proxyEnvDetected": ({ source, masked }) => `proxy: $${source}=${masked} を検出しました`,
|
|
656
|
+
"cli.doctor.proxyEnvNone": "proxy: プロキシ環境変数が設定されていません (HTTPS_PROXY / HTTP_PROXY / ALL_PROXY)",
|
|
657
|
+
"cli.doctor.proxyActive": "proxy: NODE_USE_ENV_PROXY が有効です (radar が自動適用)",
|
|
658
|
+
"cli.doctor.proxyActiveMissing": "proxy: NODE_USE_ENV_PROXY が未設定です。fetch が HTTPS_PROXY を無視する場合は radar を bin 経由で再実行してください (直接 import しない)",
|
|
659
|
+
"cli.doctor.proxyActiveNotRequired": "proxy: NODE_USE_ENV_PROXY は不要です (プロキシ未検出)",
|
|
660
|
+
"cli.doctor.tlsCaSet": ({ path }) => `tls: NODE_EXTRA_CA_CERTS=${path}`,
|
|
661
|
+
"cli.doctor.tlsCaUnset": "tls: NODE_EXTRA_CA_CERTS が未設定です (TLS を傍受するプロキシでは失敗する可能性があります)",
|
|
662
|
+
"cli.doctor.healthcheckSkippedFlag": "proxy healthcheck: スキップしました (--no-proxy-check)",
|
|
663
|
+
"cli.doctor.healthcheckSkippedNoProxy": "proxy healthcheck: スキップしました (プロキシ未検出)",
|
|
664
|
+
"cli.doctor.healthcheck407": ({ url }) => `proxy healthcheck: ${url} から 407 Proxy Authentication Required ($HTTPS_PROXY の userinfo を確認してください)`,
|
|
665
|
+
"cli.doctor.healthcheckOk": ({ status, statusText, elapsed, }) => `proxy healthcheck: 正常 (api.github.com から ${status} ${statusText}、${elapsed}ms)`,
|
|
666
|
+
"cli.doctor.healthcheckOther": ({ status, statusText, elapsed, }) => `proxy healthcheck: api.github.com から ${status} ${statusText}、${elapsed}ms`.trimEnd(),
|
|
667
|
+
"cli.doctor.healthcheckTimeout": ({ elapsed }) => `proxy healthcheck: ${elapsed}ms 後にタイムアウト (プロキシに到達できない可能性があります。$HTTPS_PROXY の host:port を確認してください)`,
|
|
668
|
+
"cli.doctor.healthcheckTls": ({ code }) => `proxy healthcheck: TLS エラー (${code})。プロキシの傍受用 CA を信頼するには NODE_EXTRA_CA_CERTS=/path/to/corp-ca.pem を設定してください。`,
|
|
669
|
+
"cli.doctor.healthcheckRefused": "proxy healthcheck: 接続が拒否されました。$HTTPS_PROXY の host:port に到達できるか確認してください。",
|
|
670
|
+
"cli.doctor.healthcheckDns": ({ code }) => `proxy healthcheck: DNS の名前解決に失敗しました (${code})。$HTTPS_PROXY のプロキシホストを解決できません。`,
|
|
671
|
+
"cli.doctor.healthcheckResetTimeout": ({ code }) => `proxy healthcheck: 接続が${code === "ETIMEDOUT" ? "タイムアウトしました" : "リセットされました"} (${code})。`,
|
|
672
|
+
"cli.doctor.healthcheckFailed": ({ reason }) => `proxy healthcheck: 失敗 — ${reason}`,
|
|
673
|
+
"cli.doctor.summary": ({ ok, warn, error, }) => `doctor: ${ok} ok, ${warn} warn, ${error} error`,
|
|
674
|
+
// init result summary / next-steps (#312)
|
|
675
|
+
"cli.init.workspaceReady": ({ cwd }) => `init: ワークスペースを ${cwd} に準備しました`,
|
|
676
|
+
"cli.init.directoriesCreated": ({ dirs }) => `init: ディレクトリを作成しました: ${dirs}`,
|
|
677
|
+
"cli.init.skillsCopied": ({ files }) => `init: スキルをコピーしました: ${files}`,
|
|
678
|
+
"cli.init.filesSkipped": ({ files }) => `init: スキップしたファイル: ${files}`,
|
|
679
|
+
"cli.init.nextSteps": "init: 次のステップ — 自然言語やスラッシュの使い方は FEEDRADAR.md を参照してください。",
|
|
680
|
+
// items (#312)
|
|
681
|
+
"cli.items.unknownSubcommand": ({ sub }) => `items: 不明なサブコマンド '${sub}' です`,
|
|
682
|
+
"cli.items.invalidStatus": ({ status, allowed }) => `items list: 不正な --status '${status}' (有効値: ${allowed})`,
|
|
683
|
+
"cli.items.invalidSince": ({ since }) => `items list: 不正な --since '${since}' (形式: Ns | Nm | Nh | Nd)`,
|
|
684
|
+
"cli.items.noItemsDir": "items list: items/ ディレクトリがありません (まず `radar init` を実行してください)",
|
|
685
|
+
"cli.items.noMatch": "items list: フィルタに一致するアイテムがありません",
|
|
686
|
+
// watch (#312 / #336)
|
|
687
|
+
"cli.watch.bootstrapBackfillExclusive": "--bootstrap と --backfill は併用できません",
|
|
688
|
+
"cli.watch.maxPagesRequiresBackfill": "--max-pages には --backfill が必要です",
|
|
689
|
+
"cli.watch.verboseQuietExclusive": "--verbose と --quiet は併用できません",
|
|
690
|
+
"cli.watch.unknownSubcommand": ({ sub }) => `watch: 不明なサブコマンド '${sub}' です`,
|
|
691
|
+
"cli.watch.bootstrapComplete": ({ sources }) => `watch run: bootstrap 完了 (${sources} ソース)`,
|
|
692
|
+
"cli.watch.backfillComplete": ({ total, sources }) => `watch run: backfill 完了 — ${sources} ソースで ${total} 件のアイテムを取り込みました`,
|
|
693
|
+
"cli.watch.runComplete": ({ total, sources }) => `watch run: ${sources} ソースで ${total} 件の新規アイテム`,
|
|
694
|
+
// zod-validation error preamble (#312)
|
|
695
|
+
"cli.config.schemaViolation": ({ file, issues }) => `${file} のスキーマ違反:\n${issues}`,
|
|
696
|
+
"cli.config.failedRead": ({ file, reason }) => `${file} の読み込みに失敗しました: ${reason}`,
|
|
697
|
+
"cli.config.failedParse": ({ file, reason }) => `${file} の YAML としての解析に失敗しました: ${reason}`,
|
|
698
|
+
// --- remaining user-facing errors & notifications (#336) ------------------
|
|
699
|
+
// shared: invalid --agent
|
|
700
|
+
"cli.agent.invalid": ({ cmd, agent }) => `${cmd}: 不正な --agent '${agent}' (有効値: claude-code | codex-cli | gemini-cli | copilot)`,
|
|
701
|
+
// research (#336)
|
|
702
|
+
"cli.research.batchIncompatiblePositional": ({ count }) => `research: --batch と位置引数の <item-id> は併用できません (${count} 件指定)`,
|
|
703
|
+
"cli.research.batchIncompatibleDigest": "research: --batch と --digest は併用できません",
|
|
704
|
+
"cli.research.batchIncompatibleTriageGroup": "research: --batch と --triage-group は併用できません",
|
|
705
|
+
"cli.research.invalidStatus": ({ status, allowed, }) => `research: 不正な --status '${status}' (有効値: ${allowed})`,
|
|
706
|
+
"cli.research.invalidMaxItemsInteger": ({ raw }) => `research: 不正な --max-items '${raw}' (正の整数を指定してください)`,
|
|
707
|
+
"cli.research.invalidMaxItemsPositive": ({ raw }) => `research: 不正な --max-items '${raw}' (0 より大きい値を指定してください)`,
|
|
708
|
+
"cli.research.commitIncompatibleBatch": "research: --commit と --batch は併用できません",
|
|
709
|
+
"cli.research.commitIncompatibleDigest": "research: --commit と --digest は併用できません",
|
|
710
|
+
"cli.research.commitIncompatibleEmitPayload": "research: --commit と --emit-payload は併用できません",
|
|
711
|
+
"cli.research.commitIncompatibleTriageGroup": "research: --commit と --triage-group は併用できません",
|
|
712
|
+
"cli.research.commitTakesPath": ({ count, ids }) => `research: --commit は <path> を取ります。<item-id> 引数ではありません (${count} 件: ${ids})`,
|
|
713
|
+
"cli.research.emitPayloadIncompatibleBatch": "research: --emit-payload と --batch は併用できません",
|
|
714
|
+
"cli.research.statusRequiresBatch": "research: --status には --batch が必要です",
|
|
715
|
+
"cli.research.maxItemsRequiresBatch": "research: --max-items には --batch が必要です",
|
|
716
|
+
"cli.research.filterTagsRequiresBatch": "research: --filter-tags には --batch が必要です",
|
|
717
|
+
"cli.research.triageGroupRequiresDigest": "research: --triage-group には --digest が必要です",
|
|
718
|
+
"cli.research.missingItemId": "research: <item-id> が指定されていません",
|
|
719
|
+
"cli.research.multipleRequireDigest": ({ count, ids }) => `research: 複数の <item-id> 引数には --digest が必要です (${count} 件: ${ids})`,
|
|
720
|
+
"cli.research.digestRequiresTwo": ({ count }) => `research: --digest には 2 つ以上の <item-id> 引数が必要です (${count} 件指定)`,
|
|
721
|
+
"cli.research.itemNotFound": ({ id }) => `research: アイテム '${id}' が items/ 配下に見つかりません`,
|
|
722
|
+
"cli.research.digestDismissed": ({ ids }) => `research: dismiss 済みのアイテムをダイジェストに含めることはできません: ${ids}`,
|
|
723
|
+
"cli.research.alreadyExists": ({ path }) => `research: ${path} は既に存在します (再 research には \`radar update\` を使用してください)`,
|
|
724
|
+
"cli.research.noItemsMatched": ({ status, tags }) => `research: --batch フィルタに一致するアイテムがありません (status=${status}${tags})`,
|
|
725
|
+
"cli.research.capReached": ({ maxItems, dropped, matched, }) => `research: --max-items ${maxItems} の上限に達しました。超過した ${dropped} 件を除外します (一致 ${matched} 件)`,
|
|
726
|
+
"cli.research.batchWillProcess": ({ count, status, tags, agent, cap, }) => `research: --batch で ${count} 件を処理します (status=${status}${tags}, agent=${agent}, 上限=${cap})`,
|
|
727
|
+
"cli.research.batchHalted": ({ id, exitCode }) => `research: --batch がアイテム '${id}' で停止しました (exit ${exitCode})`,
|
|
728
|
+
"cli.research.batchCompleted": ({ count }) => `research: --batch で ${count} 件を処理しました`,
|
|
729
|
+
"cli.research.wrote": ({ path }) => `research: ${path} を書き込みました`,
|
|
730
|
+
"cli.research.transitioned": ({ sourceId, id }) => `research: items/${sourceId}/${id}.yaml のステータスを researched に変更しました`,
|
|
731
|
+
// review (#336)
|
|
732
|
+
"cli.review.batchIncompatiblePositional": ({ researchId }) => `review: --batch と位置引数の <research-id> は併用できません ('${researchId}')`,
|
|
733
|
+
"cli.review.invalidStatus": ({ status, allowed }) => `review: 不正な --status '${status}' (有効値: ${allowed})`,
|
|
734
|
+
"cli.review.invalidMaxItemsInteger": ({ raw }) => `review: 不正な --max-items '${raw}' (正の整数を指定してください)`,
|
|
735
|
+
"cli.review.invalidMaxItemsPositive": ({ raw }) => `review: 不正な --max-items '${raw}' (0 より大きい値を指定してください)`,
|
|
736
|
+
"cli.review.commitIncompatibleBatch": "review: --commit と --batch は併用できません",
|
|
737
|
+
"cli.review.commitIncompatibleEmitPayload": "review: --commit と --emit-payload は併用できません",
|
|
738
|
+
"cli.review.commitTakesPath": ({ researchId }) => `review: --commit は <path> を取ります。<research-id> 引数ではありません ('${researchId}')`,
|
|
739
|
+
"cli.review.emitPayloadIncompatibleBatch": "review: --emit-payload と --batch は併用できません",
|
|
740
|
+
"cli.review.statusRequiresBatch": "review: --status には --batch が必要です",
|
|
741
|
+
"cli.review.maxItemsRequiresBatch": "review: --max-items には --batch が必要です",
|
|
742
|
+
"cli.review.filterTagsRequiresBatch": "review: --filter-tags には --batch が必要です",
|
|
743
|
+
"cli.review.missingResearchId": "review: <research-id> が指定されていません",
|
|
744
|
+
"cli.review.fileNotFound": ({ path }) => `review: research ファイルが見つかりません: ${path}`,
|
|
745
|
+
"cli.review.batchFoundNone": "review: --batch で未レビューの research/*.md ファイルが見つかりません",
|
|
746
|
+
"cli.review.batchMatchedZero": ({ status, tags }) => `review: --batch に一致する research ファイルがありません (status=${status}${tags})`,
|
|
747
|
+
"cli.review.capReached": ({ maxItems, dropped, matched, }) => `review: --max-items ${maxItems} の上限に達しました。超過した ${dropped} 件の research ファイルを除外します (一致 ${matched} 件)`,
|
|
748
|
+
"cli.review.batchWillProcess": ({ count, status, tags, agent, cap, }) => `review: --batch で ${count} 件の research ファイルを処理します (status=${status}${tags}, agent=${agent}, 上限=${cap})`,
|
|
749
|
+
"cli.review.batchHalted": ({ researchId, exitCode, }) => `review: --batch が research '${researchId}' で停止しました (exit ${exitCode})`,
|
|
750
|
+
"cli.review.batchCompleted": ({ count }) => `review: --batch で ${count} 件の research ファイルを処理しました`,
|
|
751
|
+
"cli.review.commitNotStamped": ({ id, reviewedAt, reviewedBy, }) => `review: --commit レポート '${id}' にスタンプがありません (reviewedAt=${reviewedAt}, reviewedBy=${reviewedBy})。commit 前にホストセッションがレビューをスタンプする必要があります`,
|
|
752
|
+
"cli.review.alreadyReviewed": ({ id, reviewedAt, reviewedBy, }) => `review: research '${id}' は既にレビュー済みです (reviewedAt=${reviewedAt}, reviewedBy=${reviewedBy})`,
|
|
753
|
+
"cli.review.wroteCommit": ({ path }) => `review: ${path} を書き込みました`,
|
|
754
|
+
"cli.review.stamped": ({ path, reviewedAt, reviewedBy, }) => `review: ${path} に reviewedAt=${reviewedAt} reviewedBy=${reviewedBy} をスタンプしました`,
|
|
755
|
+
"cli.review.transitioned": ({ sourceId, id }) => `review: items/${sourceId}/${id}.yaml のステータスを reviewed に変更しました`,
|
|
756
|
+
// update (#336)
|
|
757
|
+
"cli.update.commitIncompatibleEmitPayload": "update: --commit と --emit-payload は併用できません",
|
|
758
|
+
"cli.update.commitTakesPath": ({ researchId }) => `update: --commit は <path> を取ります。<research-id> ではありません ('${researchId}')`,
|
|
759
|
+
"cli.update.missingResearchId": "update: <research-id> が指定されていません",
|
|
760
|
+
"cli.update.fileNotFound": ({ path }) => `update: research ファイルが見つかりません: ${path}`,
|
|
761
|
+
"cli.update.alreadyExists": ({ path, version }) => `update: ${path} は既に存在します。v${version} は既に生成済みです — 別の predecessor を選ぶか、古いファイルを削除してください。`,
|
|
762
|
+
"cli.update.commitSupersedesNull": "update: --commit レポートの `supersedes` が null です。update は v+1 を確定します (v1 には `radar research --commit` を使用してください)。",
|
|
763
|
+
"cli.update.wrote": ({ path }) => `update: ${path} を書き込みました`,
|
|
764
|
+
"cli.update.supersedes": ({ prevId }) => `update: ${prevId} を supersede しました (items.yaml のステータスは変更なし)`,
|
|
765
|
+
// source (#336)
|
|
766
|
+
"cli.source.missingId": ({ sub }) => `source ${sub}: <id> が指定されていません`,
|
|
767
|
+
"cli.source.invalidId": ({ sub, id }) => `source ${sub}: 不正な <id> '${id}' ([A-Za-z0-9][A-Za-z0-9._-]* に一致する必要があります)`,
|
|
768
|
+
"cli.source.kindRequired": "source add: --kind が必要です",
|
|
769
|
+
"cli.source.urlRequired": "source add: --url が必要です",
|
|
770
|
+
"cli.source.invalidKind": ({ kind }) => `source add: 不正な --kind '${kind}' (有効値: rss | html | html-js | github-releases | npm-registry | json-feed | json-api)`,
|
|
771
|
+
"cli.source.paginationOnlyJsonApi": ({ kind }) => `source add: --pagination-* フラグは --kind json-api でのみ有効です (--kind '${kind}' が指定されています)`,
|
|
772
|
+
"cli.source.validationFailed": "source add: 検証に失敗しました",
|
|
773
|
+
"cli.source.recipeForbiddenFlags": ({ recipe, flags, }) => `source add: --recipe '${recipe}' が kind / url / 構造フィールドを供給します。--recipe と併用できないフラグ: ${flags}`,
|
|
774
|
+
"cli.source.recipeInvalidSource": ({ recipe }) => `source add: レシピ '${recipe}' が不正な source を生成しました`,
|
|
775
|
+
"cli.source.alreadyExists": ({ id }) => `source add: '${id}' は既に存在します (sources/${id}.yaml)`,
|
|
776
|
+
"cli.source.created": ({ id }) => `source add: sources/${id}.yaml を作成しました`,
|
|
777
|
+
"cli.source.createdFromRecipe": ({ id, recipe }) => `source add: レシピ '${recipe}' から sources/${id}.yaml を作成しました`,
|
|
778
|
+
"cli.source.noKeywordsWarn": ({ id }) => `source add: 警告 — '${id}' にキーワードがありません。取得した全アイテムが除外されます。取り込みを始めるには sources/${id}.yaml を編集するか --keywords 付きで再追加してください。`,
|
|
779
|
+
"cli.source.noKeywordsWarnRecipe": ({ id }) => `source add: 警告 — '${id}' にキーワードがありません。取得した全アイテムが除外されます。取り込みを始めるには --keywords 付きで再追加するか sources/${id}.yaml を編集してください。`,
|
|
780
|
+
"cli.source.listNoDir": "source list: sources ディレクトリがありません (まず `radar init` を実行してください)",
|
|
781
|
+
"cli.source.listNoSources": "source list: source が定義されていません (`radar source add ...` を使用してください)",
|
|
782
|
+
"cli.source.removeNotFound": ({ id }) => `source remove: '${id}' が見つかりません (sources/${id}.yaml)`,
|
|
783
|
+
"cli.source.deleted": ({ id }) => `source remove: sources/${id}.yaml を削除しました`,
|
|
784
|
+
"cli.source.testNotFound": ({ id }) => `source test: '${id}' が見つかりません (sources/${id}.yaml)`,
|
|
785
|
+
"cli.source.recipesNone": "source recipes: バンドルされたレシピがありません (recipes/ が空または存在しません)",
|
|
786
|
+
"cli.source.unknownSubcommand": ({ sub }) => `source: 不明なサブコマンド '${sub}' です`,
|
|
787
|
+
// triage (#336)
|
|
788
|
+
"cli.triage.modesExclusive": "--dry-run / --apply / --interactive は併用できません",
|
|
789
|
+
"cli.triage.verboseQuietExclusive": "--verbose と --quiet は併用できません",
|
|
790
|
+
"cli.triage.commitIncompatibleModes": "triage: --commit と --dry-run / --apply / --interactive は併用できません",
|
|
791
|
+
"cli.triage.commitIncompatibleEmitPayload": "triage: --commit と --emit-payload は併用できません",
|
|
792
|
+
"cli.triage.emitPayloadIncompatibleModes": "triage: --emit-payload と --dry-run / --apply / --interactive は併用できません",
|
|
793
|
+
"cli.triage.emitPayloadSingleSource": ({ count, sources, }) => `triage: --emit-payload は単一の source グループが必要ですが、${count} 個の source に detected アイテムがあります (${sources})。--source <id> で絞り込んでください。`,
|
|
794
|
+
"cli.triage.invalidTriageAgent": ({ agent }) => `triage: --triage-agent '${agent}' は有効な agent id ではありません (claude-code | codex-cli | gemini-cli | copilot)`,
|
|
795
|
+
"cli.triage.noSourcesDir": "triage: sources/ ディレクトリがありません (まず `radar init` を実行してください)",
|
|
796
|
+
"cli.triage.noSourcesDefined": "triage: source が定義されていません。triage 対象がありません",
|
|
797
|
+
"cli.triage.noItemsDir": "triage: items/ ディレクトリがありません。triage 対象がありません",
|
|
798
|
+
"cli.triage.noDetectedMatch": "triage: フィルタに一致する detected アイテムがありません (処理対象なし)",
|
|
799
|
+
"cli.triage.maxItemsExceeded": ({ detected, maxItems, }) => `triage: detected アイテム ${detected} 件が --max-items ${maxItems} を超えています。先頭の ${maxItems} 件のみ処理します`,
|
|
800
|
+
"cli.triage.skippingNoPolicy": ({ count, sourceId, }) => `triage: source '${sourceId}' の ${count} 件をスキップします (triagePolicy が設定されていません)`,
|
|
801
|
+
"cli.triage.noItemsTriaged": "triage: triage されたアイテムがありません (全 source をスキップ)",
|
|
802
|
+
"cli.triage.dryRunNoChanges": "triage: dry-run — 変更は書き込まれていません",
|
|
803
|
+
"cli.triage.abortedByUser": "triage: ユーザーにより中止されました",
|
|
804
|
+
"cli.triage.applied": ({ count }) => `triage: ${count} 件の判定を適用しました`,
|
|
805
|
+
"cli.triage.committed": ({ count, sourceId }) => `triage: source '${sourceId}' の ${count} 件の判定を commit しました`,
|
|
806
|
+
"cli.triage.decisionsFileNotFound": ({ path }) => `triage: decisions ファイルが見つかりません: ${path}`,
|
|
807
|
+
"cli.triage.unknownSource": ({ sourceId }) => `triage: decisions ファイルが未知の source '${sourceId}' を参照しています`,
|
|
808
|
+
"cli.triage.sourceNoPolicy": ({ sourceId }) => `triage: source '${sourceId}' に triagePolicy がありません (decisions を検証できません。--policy <path> を指定してください)`,
|
|
809
|
+
"cli.triage.noItemsDirCommit": "triage: items/ ディレクトリがありません。commit 対象がありません",
|
|
810
|
+
"cli.triage.noDetectedForSource": ({ sourceId }) => `triage: source '${sourceId}' に残っている detected アイテムがありません (既に triage 済みか、source が間違っていませんか?)`,
|
|
811
|
+
"cli.triage.invalidDecisionsAgent": ({ agent }) => `triage: decisions ファイルの agent '${agent}' は有効な agent id ではありません (claude-code | codex-cli | gemini-cli | copilot)`,
|
|
812
|
+
"cli.triage.feedbackMissingItemId": "triage feedback: <item-id> が指定されていません",
|
|
813
|
+
"cli.triage.feedbackModesExclusive": "triage feedback: --correct と --wrong は併用できません",
|
|
814
|
+
"cli.triage.feedbackModeRequired": "triage feedback: --correct | --wrong のいずれかが必要です",
|
|
815
|
+
"cli.triage.feedbackItemsDirNotFound": "triage feedback: items/ が見つかりません (`radar init` を実行してください)",
|
|
816
|
+
"cli.triage.feedbackItemNotFound": ({ id }) => `triage feedback: アイテム '${id}' が items/ 配下に見つかりません`,
|
|
817
|
+
"cli.triage.feedbackNoPriorDecision": ({ id }) => `triage feedback: アイテム '${id}' にフィードバック対象の triage 判定がありません`,
|
|
818
|
+
"cli.triage.feedbackRecorded": ({ sourceId, id, verdict, }) => `triage feedback: items/${sourceId}/${id}.yaml のフィードバックを ${verdict} に設定しました`,
|
|
819
|
+
"cli.triage.statsInvalidSince": ({ since }) => `triage stats: 不正な --since '${since}' (形式: Ns | Nm | Nh | Nd)`,
|
|
820
|
+
"cli.triage.statsNoItemsDir": "triage stats: items/ ディレクトリがありません (まず `radar init` を実行してください)",
|
|
821
|
+
"cli.triage.statsNoMatch": "triage stats: フィルタに一致する triage 済みアイテムがありません (報告対象なし)",
|
|
822
|
+
// --- init help (#311) -----------------------------------------------------
|
|
823
|
+
"cli.init.help": `使い方: radar init [--lang <en|ja>] [--force] [--with-routines] [--with-actions]
|
|
824
|
+
[--no-claude-skills] [--no-gemini-commands]
|
|
825
|
+
[--no-agents-md] [--no-claude-md] [--no-templates]
|
|
826
|
+
[--no-feedradar-md]
|
|
827
|
+
|
|
828
|
+
ワークスペースのディレクトリを作成し、バンドル済みスキルをコピーする:
|
|
829
|
+
- エンジン SKILL (SSoT): .agents/skills/{research,review,update}/SKILL.md
|
|
830
|
+
- Claude Code スラッシュコマンドラッパー: .claude/skills/{research,review,update,dismiss}/SKILL.md
|
|
831
|
+
- Gemini CLI スラッシュコマンド: .gemini/commands/{research,review,update,dismiss}.toml
|
|
832
|
+
- エージェント非依存の指示書: AGENTS.md (Codex / Gemini / Copilot が自動で読む)
|
|
833
|
+
- Claude Code 用ワークスペース指示書: CLAUDE.md (@AGENTS.md を import し Claude が読むようにする)
|
|
834
|
+
- スターターレポートテンプレート: templates/default.md (単一アイテム) と templates/digest.md (複数アイテムのダイジェスト)
|
|
835
|
+
- 人間向けワークスペースガイド: FEEDRADAR.md (自然言語 / スラッシュの使い方)
|
|
836
|
+
|
|
837
|
+
オプション:
|
|
838
|
+
--lang <en|ja> 生成するレポートテンプレートとワークスペース文書の言語
|
|
839
|
+
(既定: en; RADAR_LANG も尊重; radar.config.yaml に永続化)
|
|
840
|
+
--force 既存ファイルを上書きする
|
|
841
|
+
--with-routines .claude/routines/watch-daily.yaml を生成する (Claude Routines の雛形)
|
|
842
|
+
--with-actions .github/workflows/watch.yaml を生成する (GitHub Actions cron の雛形)
|
|
843
|
+
--no-claude-skills .claude/skills/ へのスラッシュコマンドラッパー書き込みをスキップする
|
|
844
|
+
(@ozzylabs/skills の Renovate preset がそのディレクトリを管理する場合に有用)
|
|
845
|
+
--no-gemini-commands .gemini/commands/ への Gemini CLI スラッシュコマンド書き込みをスキップする
|
|
846
|
+
(エンジン SKILL は dual-mode で対話 Gemini にも対応する)
|
|
847
|
+
--no-agents-md ワークスペースルートへの AGENTS.md 書き込みをスキップする
|
|
848
|
+
(ワークスペースに独自の AGENTS.md がある場合に有用;
|
|
849
|
+
バンドル CLAUDE.md は @AGENTS.md を import するため --no-claude-md を含意する)
|
|
850
|
+
--no-claude-md ワークスペースルートへの CLAUDE.md 書き込みをスキップする
|
|
851
|
+
(ワークスペースに独自の CLAUDE.md がある場合に有用)
|
|
852
|
+
--no-templates templates/default.md と templates/digest.md の書き込みをスキップする
|
|
853
|
+
(research エンジン SKILL は組み込みの構造にフォールバックする)
|
|
854
|
+
--no-feedradar-md ワークスペースルートへの FEEDRADAR.md 書き込みをスキップする
|
|
855
|
+
(ワークスペースに独自のユーザー向け文書がある場合に有用)`,
|
|
856
|
+
// --- 総チェック follow-up: dispatcher エラー (#342 A1) ---------------------
|
|
857
|
+
"cli.workflow.unknownSubcommand": ({ sub }) => `workflow: 不明なサブコマンド '${sub}' です`,
|
|
858
|
+
"cli.workflow.unknownType": ({ type }) => `workflow generate: 不明なタイプ '${type}' です`,
|
|
859
|
+
"cli.routine.unknownSubcommand": ({ sub }) => `routine: 不明なサブコマンド '${sub}' です`,
|
|
860
|
+
"cli.routine.unknownType": ({ type }) => `routine generate: 不明なタイプ '${type}' です`,
|
|
861
|
+
// --- 総チェック follow-up: workflow generate サマリ (#342 A2) --------------
|
|
862
|
+
"cli.workflow.generateWatchWrote": ({ path }) => `workflow generate watch: ${path} を書き込みました`,
|
|
863
|
+
"cli.workflow.generateWatchSummary": ({ cron, agent }) => `workflow generate watch: cron='${cron}', agent='${agent}'`,
|
|
864
|
+
"cli.workflow.generateWatchOverwriting": ({ path }) => `workflow generate watch: 既存ファイル ${path} を上書きします`,
|
|
865
|
+
"cli.workflow.requiredSecretsHeading": "必要な GitHub Actions シークレット (Settings → Secrets and variables → Actions):",
|
|
866
|
+
"cli.workflow.secretCopilotToken": " GITHUB_TOKEN — GitHub Actions が自動発行 (手動設定不要)",
|
|
867
|
+
"cli.workflow.secretAgentKey": ({ envKey, agent }) => ` ${envKey} — '${agent}' エージェントに必要`,
|
|
868
|
+
"cli.workflow.secretGithubTokenAuto": " GITHUB_TOKEN — GitHub Actions が自動発行 (手動設定不要)",
|
|
869
|
+
"cli.workflow.generateCombinedWrote": ({ path }) => `workflow generate combined: ${path} を書き込みました`,
|
|
870
|
+
"cli.workflow.generateCombinedOverwriting": ({ path }) => `workflow generate combined: 既存ファイル ${path} を上書きします`,
|
|
871
|
+
"cli.workflow.detailAgent": ({ agent }) => ` agent: ${agent}`,
|
|
872
|
+
"cli.workflow.detailCron": ({ cron }) => ` cron: ${cron}`,
|
|
873
|
+
"cli.workflow.detailMaxItems": ({ maxItems }) => ` max-items: ${maxItems}`,
|
|
874
|
+
"cli.workflow.detailFilterTags": ({ tags }) => ` filter-tags: ${tags}`,
|
|
875
|
+
"cli.workflow.filterTagsNone": "(なし)",
|
|
876
|
+
"cli.workflow.maxItemsCapWarning": ({ cmd }) => `${cmd}: --max-items の上限は \`radar research --batch\` 側でも強制されます。YAML を編集するだけでは引き上げられません`,
|
|
877
|
+
"cli.workflow.generateCombinedWithTriageWrote": ({ path }) => `workflow generate combined-with-triage: ${path} を書き込みました`,
|
|
878
|
+
"cli.workflow.generateCombinedWithTriageOverwriting": ({ path }) => `workflow generate combined-with-triage: 既存ファイル ${path} を上書きします`,
|
|
879
|
+
"cli.workflow.detailWatchCron": ({ cron }) => ` watch-cron: ${cron}`,
|
|
880
|
+
"cli.workflow.detailTriageAgent": ({ agent }) => ` triage-agent: ${agent}`,
|
|
881
|
+
"cli.workflow.detailResearchAgent": ({ agent }) => ` research-agent: ${agent}`,
|
|
882
|
+
"cli.workflow.detailReviewAgent": ({ agent }) => ` review-agent: ${agent}`,
|
|
883
|
+
"cli.workflow.detailMaxItemsWide": ({ maxItems }) => ` max-items: ${maxItems}`,
|
|
884
|
+
"cli.workflow.detailOutputMode": ({ mode }) => ` output-mode: ${mode}`,
|
|
885
|
+
"cli.workflow.detailSlackWebhook": ({ webhook }) => ` slack-webhook: ${webhook}`,
|
|
886
|
+
"cli.workflow.slackWebhookNone": "(なし — 通知ステップは no-op)",
|
|
887
|
+
"cli.workflow.secretsNoneAutoToken": " (なし — 選択した全エージェントが自動発行の GITHUB_TOKEN を利用)",
|
|
888
|
+
"cli.workflow.secretGithubTokenAutoNoSetup": " GITHUB_TOKEN (自動発行、設定不要)",
|
|
889
|
+
// --- 総チェック follow-up: routine generate サマリ (#342 A2) ---------------
|
|
890
|
+
"cli.routine.generateWatchWrote": ({ path }) => `routine generate watch: ${path} を書き込みました`,
|
|
891
|
+
"cli.routine.generateWatchSummary": ({ name, repo, cron, model, }) => `routine generate watch: name='${name}', repo='${repo}', cron='${cron}', model='${model}'`,
|
|
892
|
+
"cli.routine.generateWatchOverwriting": ({ path }) => `routine generate watch: 既存ファイル ${path} を上書きします`,
|
|
893
|
+
"cli.routine.generatePipelineWrote": ({ path }) => `routine generate pipeline: ${path} を書き込みました`,
|
|
894
|
+
"cli.routine.generatePipelineSummary": ({ name, repo, cron, model, maxItems, outputMode, }) => `routine generate pipeline: name='${name}', repo='${repo}', cron='${cron}', model='${model}', max-items=${maxItems}, output-mode='${outputMode}'`,
|
|
895
|
+
"cli.routine.generatePipelineOverwriting": ({ path }) => `routine generate pipeline: 既存ファイル ${path} を上書きします`,
|
|
896
|
+
"cli.routine.autoMergeWarning": ({ cmd }) => `${cmd}: --output-mode auto-merge は ` +
|
|
897
|
+
"`allow_unrestricted_git_push: true` を設定しますが、これは必要条件であって十分条件ではありません。" +
|
|
898
|
+
"Web UI の 'Allow unrestricted branch pushes' トグルも ON にする必要があります " +
|
|
899
|
+
"(RemoteTrigger API はこのフィールドを受け付けません)。なお、その場合は無人の AI 出力が " +
|
|
900
|
+
"人間のレビューなしでデフォルトブランチに入る点に注意してください。",
|
|
901
|
+
"cli.routine.pasteNoApi": "Routines には宣言的な apply API がありません。この routine を Web UI に手で貼り付けてください:",
|
|
902
|
+
"cli.routine.pasteStep1": " 1. https://claude.ai/code/routines を開き New routine をクリックします。",
|
|
903
|
+
"cli.routine.pasteStep2": " 2. YAML からフォーム項目を埋めます (Name / Model / Repositories / Trigger / Permissions)。",
|
|
904
|
+
"cli.routine.pasteStep3": " 3. 複数行の Instructions / Setup script フィールドは yq で抽出します:",
|
|
905
|
+
"cli.routine.pasteYqInstructions": ({ path }) => ` yq -r '.instructions' ${path}`,
|
|
906
|
+
"cli.routine.pasteYqSetupScript": ({ path }) => ` yq -r '.environment.setup_script' ${path}`,
|
|
907
|
+
// --prompt-mode bootstrap (#327)
|
|
908
|
+
"cli.routine.pasteStep3Bootstrap": " 3. Instructions 欄には、この短い bootstrap プロンプトを貼り付けます (prompt-mode bootstrap):",
|
|
909
|
+
"cli.routine.bootstrapPromptLine1": ({ name }) => ` You are the \`${name}\` routine.`,
|
|
910
|
+
"cli.routine.bootstrapPromptLine2": ({ path }) => ` Read \`${path}\` in this repository and faithfully execute its top-level`,
|
|
911
|
+
"cli.routine.bootstrapPromptLine3": " `instructions:` block. Run autonomously: AskUserQuestion is NOT available,",
|
|
912
|
+
"cli.routine.bootstrapPromptLine4": " and local MCP servers are NOT available in this environment.",
|
|
913
|
+
"cli.routine.pasteStep3BootstrapSetup": " 複数行の Setup script フィールドは yq で抽出します:",
|
|
914
|
+
"cli.routine.bootstrapReuseNote": " (bootstrap プロンプト: 以降の instructions 変更はリポへのコミットで反映され、Web UI への再貼り付けは不要です。)",
|
|
915
|
+
"cli.routine.pasteStep4": " 4. 登録後、発行された routine_id (trig_xxxx) を YAML に書き戻し、status: active を設定します。",
|
|
916
|
+
"cli.routine.scheduleNote1": "/schedule (Claude Code) について: 対話形式です — `/schedule <説明>` で作成し、",
|
|
917
|
+
"cli.routine.scheduleNote2": "`list` / `update` / `run` サブコマンドが使えます。フラグ形式 (`--name` / `--cron` /",
|
|
918
|
+
"cli.routine.scheduleNote3": "`--repo` 引数) はありません。またこの YAML をそのまま取り込むこともできないため、",
|
|
919
|
+
"cli.routine.scheduleNote4": "長い Instructions フィールドについては上記の Web UI 貼り付けフロー (yq 抽出) が",
|
|
920
|
+
"cli.routine.scheduleNote5": "現実的な手段です。最後に、auto-merge routine が必要とする unrestricted-git-push 権限は",
|
|
921
|
+
"cli.routine.scheduleNote6": "Web UI の 'Allow unrestricted branch pushes' トグルでのみ設定でき、/schedule では",
|
|
922
|
+
"cli.routine.scheduleNote7": "設定できません。",
|
|
923
|
+
"cli.routine.outputGateBranchPr": "出力ゲート: この routine は claude/* ブランチ / PR にのみ書き込みます — main へは直接書き込みません。",
|
|
924
|
+
"cli.routine.outputGateAutoMerge": "出力ゲート: この routine は claude/* PR を開いてから main へ squash-merge します (手順 6 のレビューでレビュー完了)。",
|
|
925
|
+
"cli.routine.pipelineNoSpawn1": "単一の Claude セッション、spawn なし: GHA combined-with-triage ワークフローと異なり、",
|
|
926
|
+
"cli.routine.pipelineNoSpawn2": "ここにクロスエージェントレビューはありません — 1 つの Claude が全ステップを実行します。",
|
|
927
|
+
"cli.routine.pipelineItemCaps": ({ maxItems }) => `アイテム上限は CLI で強制されます: triage --max-items ${maxItems} / items --limit ${maxItems}。`,
|
|
928
|
+
"cli.routine.fireTriggered": ({ routineId, status, }) => `routine fire: ${routineId} を起動しました (HTTP ${status})。`,
|
|
929
|
+
"cli.routine.fireSessionCreated": "セッションが作成されました — この呼び出しは完了を待ちません。",
|
|
930
|
+
// --- 総チェック follow-up: init 運用警告 (#342 A3) -------------------------
|
|
931
|
+
"cli.init.bundledSkillNotFound": ({ src }) => `init: バンドルされた skill が見つからないためスキップしました: ${src}`,
|
|
932
|
+
"cli.init.bundledClaudeSkillNotFound": ({ src }) => `init: バンドルされた claude discovery skill が見つからないためスキップしました: ${src}`,
|
|
933
|
+
"cli.init.bundledGeminiCommandNotFound": ({ src }) => `init: バンドルされた gemini コマンドが見つからないためスキップしました: ${src}`,
|
|
934
|
+
"cli.init.bundledTemplateNotFound": ({ src }) => `init: バンドルされたテンプレートが見つからないためスキップしました: ${src}`,
|
|
935
|
+
"cli.init.skippedExisting": ({ file }) => `init: 既存ファイルをスキップしました (上書きするには --force): ${file}`,
|
|
936
|
+
"cli.init.skippedClaudeMdNoAgentsMd": "init: --no-agents-md が指定されたため CLAUDE.md をスキップしました (バンドルの CLAUDE.md は @AGENTS.md を import するため import が解決できなくなります)",
|
|
937
|
+
"cli.init.configLocaleNotYaml": ({ file, reason }) => `init: ${file} の locale 書き込みをスキップしました (既存ファイルが有効な YAML ではありません: ${reason})`,
|
|
938
|
+
"cli.init.configLocaleNotMapping": ({ file }) => `init: ${file} の locale 書き込みをスキップしました (既存ファイルがマッピングではありません)`,
|
|
939
|
+
"cli.init.configLocaleSkippedUpdate": ({ file, current, locale, }) => `init: ${file} の locale '${current}' -> '${locale}' への更新をスキップしました (上書きするには --force)`,
|
|
940
|
+
// --- 総チェック follow-up: source list/test/recipes 表示 (#342 A4) ---------
|
|
941
|
+
"cli.source.fieldKind": ({ value }) => ` kind: ${value}`,
|
|
942
|
+
"cli.source.fieldUrl": ({ value }) => ` url: ${value}`,
|
|
943
|
+
"cli.source.fieldName": ({ value }) => ` name: ${value}`,
|
|
944
|
+
"cli.source.fieldTags": ({ value }) => ` tags: ${value}`,
|
|
945
|
+
"cli.source.fieldKeywords": ({ value }) => ` keywords: ${value}`,
|
|
946
|
+
"cli.source.fieldExcludeKeywords": ({ value }) => ` excludeKeywords: ${value}`,
|
|
947
|
+
"cli.source.fieldTrustLevel": ({ value }) => ` trustLevel: ${value}`,
|
|
948
|
+
"cli.source.fieldLastFetchedAt": ({ value }) => ` lastFetchedAt: ${value}`,
|
|
949
|
+
"cli.source.keywordsEmpty": "(なし — アイテムはフィルタで除外されます)",
|
|
950
|
+
"cli.source.valueNone": "-",
|
|
951
|
+
"cli.source.listHeaderId": "ID",
|
|
952
|
+
"cli.source.listHeaderKind": "KIND",
|
|
953
|
+
"cli.source.listHeaderUrl": "URL",
|
|
954
|
+
"cli.source.listHeaderTags": "TAGS",
|
|
955
|
+
"cli.source.testHeading": ({ id }) => `source test: ${id}`,
|
|
956
|
+
"cli.source.testCounts": ({ fetched, filtered, matched, }) => ` 取得: ${fetched} / フィルタ後: ${filtered} / 一致: ${matched}`,
|
|
957
|
+
"cli.source.facetSweepNotice": ({ facet, testedValue, totalValues, }) => `source test: facet sweep 有効: ${facet}=${testedValue} のみ test 中 (全 ${totalValues} 件の facet 値は walk しません)。` +
|
|
958
|
+
"range facet は上端 (最新値) を test します。全 facet 値を確認するには `radar watch run --backfill` を使用してください。",
|
|
959
|
+
"cli.source.selectorAdoptionHeading": " selector adoption:",
|
|
960
|
+
"cli.source.selectorNoCandidate": ({ field }) => ` ${field}: (一致する候補なし)`,
|
|
961
|
+
"cli.source.selectorAdopted": ({ field, path }) => ` ${field} ← ${path} を採用`,
|
|
962
|
+
"cli.source.paginationPreviewHeading": " pagination preview (page 0 のみ — state は変更されません):",
|
|
963
|
+
"cli.source.paginationStrategy": ({ strategy }) => ` strategy: ${strategy}`,
|
|
964
|
+
"cli.source.paginationNextUrl": ({ nextUrl }) => ` nextUrl: ${nextUrl}`,
|
|
965
|
+
"cli.source.paginationEndOfPagination": "(ページネーション終端)",
|
|
966
|
+
"cli.source.paginationLinkNext": ({ value }) => ` Link rel=next: ${value}`,
|
|
967
|
+
"cli.source.paginationNextCursor": ({ value }) => ` nextCursor: ${value}`,
|
|
968
|
+
"cli.source.paginationAbsent": "(なし)",
|
|
969
|
+
"cli.source.testNoMatched": " (一致したアイテムはありません)",
|
|
970
|
+
"cli.source.testShowing": ({ shown, total }) => `一致した ${total} 件のうち ${shown} 件を表示:`,
|
|
971
|
+
"cli.source.testItemTitle": ({ index, title }) => ` ${index}. ${title}`,
|
|
972
|
+
"cli.source.testItemUrl": ({ url }) => ` url: ${url}`,
|
|
973
|
+
"cli.source.testItemMatchedKeywords": ({ value }) => ` matchedKeywords: ${value}`,
|
|
974
|
+
"cli.source.testItemMatchedFields": ({ value }) => ` matchedFields: ${value}`,
|
|
975
|
+
"cli.source.testItemContent": ({ value }) => ` content: ${value}`,
|
|
976
|
+
"cli.source.testMoreItems": ({ count }) => ` … 他 ${count} 件 (--limit を上げると表示されます)`,
|
|
977
|
+
"cli.source.recipesNoValid": "source recipes: 有効なレシピが見つかりません (バンドルされた全エントリの読み込みに失敗)",
|
|
978
|
+
"cli.source.recipesHeaderName": "NAME",
|
|
979
|
+
"cli.source.recipesHeaderKind": "KIND",
|
|
980
|
+
"cli.source.recipesHeaderDescription": "DESCRIPTION",
|
|
981
|
+
"cli.source.recipesErrorsHeading": "エラーのあるレシピ:",
|
|
982
|
+
"cli.source.recipesErrorRow": ({ name, error }) => ` ${name}: ${error}`,
|
|
983
|
+
"cli.source.recipesErrorUnknown": "(不明なエラー)",
|
|
984
|
+
"cli.source.recipesApplyHeading": "レシピの適用方法:",
|
|
985
|
+
"cli.source.recipesApplyExample": " radar source add <id> --recipe <name> [--keywords <kw>] [--tags <t>] [--name <display>]",
|
|
986
|
+
// --- 総チェック follow-up: triage 進捗 + 確認プロンプト (#342 A6/B1) -------
|
|
987
|
+
"cli.triage.progressTriaging": ({ count, sourceId, agent, }) => `ソース '${sourceId}' の ${count} 件を ${agent} で triage 中`,
|
|
988
|
+
"cli.triage.confirmApply": "これらの判定を適用しますか? [y/N]",
|
|
989
|
+
// --- state prune (#333) ---------------------------------------------------
|
|
990
|
+
"cli.state.help": `使い方: radar state prune <source> --keep <N>
|
|
991
|
+
|
|
992
|
+
state/<source>.yaml の lastSeenIds を新しい順に N 件だけ残して切り詰める (FIFO・古いものから削除)。
|
|
993
|
+
facet sweep で肥大化した state ファイルを縮小する用途。
|
|
994
|
+
|
|
995
|
+
オプション:
|
|
996
|
+
--keep <N> 新しい順に N 件残し、残りを削除する (必須)
|
|
997
|
+
--older-than <dur> 未対応 (lastSeenIds は id ごとの時刻を持たない)
|
|
998
|
+
-h, --help このヘルプを表示する`,
|
|
999
|
+
"cli.state.parseError": ({ reason }) => `state prune: ${reason}`,
|
|
1000
|
+
"cli.state.unknownSubcommand": ({ sub }) => `state: 不明なサブコマンド '${sub}'`,
|
|
1001
|
+
"cli.state.missingSource": "state prune: <source> が指定されていません",
|
|
1002
|
+
"cli.state.keepRequired": "state prune: --keep <N> は必須です",
|
|
1003
|
+
"cli.state.olderThanUnsupported": "state prune: --older-than は未対応です (lastSeenIds は id ごとの時刻を持ちません)。--keep <N> を使ってください",
|
|
1004
|
+
"cli.state.invalidKeepInteger": ({ raw }) => `state prune: --keep には整数を指定してください ('${raw}' が指定されました)`,
|
|
1005
|
+
"cli.state.invalidKeepPositive": ({ raw }) => `state prune: --keep には正の整数を指定してください ('${raw}' が指定されました)`,
|
|
1006
|
+
"cli.state.sourceNotFound": ({ sourceId }) => `state prune: ソース '${sourceId}' の state が見つかりません (state/${sourceId}.yaml)`,
|
|
1007
|
+
"cli.state.pruneNoop": ({ sourceId, count, keep, }) => `state prune: '${sourceId}' は既に ${count} 件 (--keep ${keep} 以下) のため切り詰め不要です`,
|
|
1008
|
+
"cli.state.pruneDone": ({ sourceId, before, after, dropped, }) => `state prune: '${sourceId}' の lastSeenIds を ${before} -> ${after} に切り詰めました (${dropped} 件削除)`,
|
|
1009
|
+
};
|
|
1010
|
+
//# sourceMappingURL=ja.js.map
|