@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,1049 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* English message catalog — the source of truth for the i18n layer (ADR-0021,
|
|
3
|
+
* epic #307 P2).
|
|
4
|
+
*
|
|
5
|
+
* `en` defines the canonical key set and value shapes; every other locale
|
|
6
|
+
* catalog (currently {@link import("./ja.js").ja}) is required by the
|
|
7
|
+
* {@link Messages} type to mirror these keys exactly. A value is either:
|
|
8
|
+
*
|
|
9
|
+
* - a plain `string` (no interpolation), or
|
|
10
|
+
* - a function `(params) => string` that receives a typed params object and
|
|
11
|
+
* returns the rendered string.
|
|
12
|
+
*
|
|
13
|
+
* The function form is the single, unified interpolation scheme for this layer
|
|
14
|
+
* (no `{name}` placeholder string-replacement, no template engine, no new
|
|
15
|
+
* runtime dependency): parameters are ordinary typed function arguments, so a
|
|
16
|
+
* missing or misspelled param is a *compile* error, and `createTranslator`'s
|
|
17
|
+
* `t(key, params?)` signature can derive its param type straight from the
|
|
18
|
+
* catalog entry.
|
|
19
|
+
*
|
|
20
|
+
* Keys are namespaced by domain (`common.*`, `cli.*`) to keep future additions
|
|
21
|
+
* collision-free as later P3/P4/P5 issues add their own message families. This
|
|
22
|
+
* PR only fills the keys needed to prove the wiring on `src/cli/index.ts`'s
|
|
23
|
+
* global help / version / unknown-command paths.
|
|
24
|
+
*/
|
|
25
|
+
export declare const en: {
|
|
26
|
+
/** First line of `radar --help`: the product tagline. */
|
|
27
|
+
readonly "cli.help.tagline": "FeedRadar — Multi-agent CLI for blog/release feed research";
|
|
28
|
+
/** Usage synopsis line. */
|
|
29
|
+
readonly "cli.help.usage": "Usage: radar <command> [options]";
|
|
30
|
+
/** Section heading listing the subcommands. */
|
|
31
|
+
readonly "cli.help.commandsHeading": "Commands:";
|
|
32
|
+
/** Section heading listing the global options. */
|
|
33
|
+
readonly "cli.help.optionsHeading": "Options:";
|
|
34
|
+
/** `-h, --help` option description. */
|
|
35
|
+
readonly "cli.help.optionHelp": "Show this help";
|
|
36
|
+
/** `-v, --version` option description. */
|
|
37
|
+
readonly "cli.help.optionVersion": "Show version";
|
|
38
|
+
/** `--lang <en|ja>` option description. */
|
|
39
|
+
readonly "cli.help.optionLang": "UI language (overrides RADAR_LANG / config)";
|
|
40
|
+
/** stderr line when an unrecognized subcommand is given. */
|
|
41
|
+
readonly "cli.error.unknownCommand": ({ command }: {
|
|
42
|
+
command: string;
|
|
43
|
+
}) => string;
|
|
44
|
+
/** Follow-up hint pointing the user at `radar --help`. */
|
|
45
|
+
readonly "cli.error.unknownCommandHint": "Run 'radar --help' for available commands.";
|
|
46
|
+
/** "Loaded item: <id>" — single-item PRE phase marker. */
|
|
47
|
+
readonly "cli.progress.loadedItem": ({ id }: {
|
|
48
|
+
id: string;
|
|
49
|
+
}) => string;
|
|
50
|
+
/** "Loaded N items" — digest/batch PRE phase marker. */
|
|
51
|
+
readonly "cli.progress.loadedItems": ({ count }: {
|
|
52
|
+
count: number;
|
|
53
|
+
}) => string;
|
|
54
|
+
/** "Loaded template: <id>.md" — template-resolved phase marker. */
|
|
55
|
+
readonly "cli.progress.loadedTemplate": ({ templateId }: {
|
|
56
|
+
templateId: string;
|
|
57
|
+
}) => string;
|
|
58
|
+
/** "Spawning <agent>" — agent-spawn phase marker. */
|
|
59
|
+
readonly "cli.progress.spawning": ({ agent }: {
|
|
60
|
+
agent: string;
|
|
61
|
+
}) => string;
|
|
62
|
+
/** Spinner label while the agent runs. */
|
|
63
|
+
readonly "cli.progress.agentRunning": "Agent running";
|
|
64
|
+
/** "Agent completed (exit <code>)" — agent success line. */
|
|
65
|
+
readonly "cli.progress.agentCompleted": ({ exitCode }: {
|
|
66
|
+
exitCode: number;
|
|
67
|
+
}) => string;
|
|
68
|
+
/** Agent-failure spinner-fail label. */
|
|
69
|
+
readonly "cli.progress.agentFailed": "Agent failed";
|
|
70
|
+
/** "Frontmatter validated" — schema-check phase marker. */
|
|
71
|
+
readonly "cli.progress.frontmatterValidated": "Frontmatter validated";
|
|
72
|
+
/** "Status: <from> → <to>" — state-machine transition phase marker. */
|
|
73
|
+
readonly "cli.progress.statusTransition": ({ from, to }: {
|
|
74
|
+
from: string;
|
|
75
|
+
to: string;
|
|
76
|
+
}) => string;
|
|
77
|
+
/**
|
|
78
|
+
* "[<source-id>] <facet>Page <i>/<n>: <items> items fetched" — paginating-
|
|
79
|
+
* adapter (json-api) page phase marker. `facet` is a pre-built functional
|
|
80
|
+
* prefix (e.g. `year=2018 (15/23) `) or empty; the page / item counters are
|
|
81
|
+
* functional and stay verbatim. Only the "Page … items fetched" prose is
|
|
82
|
+
* translated.
|
|
83
|
+
*/
|
|
84
|
+
readonly "cli.progress.watchPage": ({ sourceId, facet, page, pageTotal, items, }: {
|
|
85
|
+
sourceId: string;
|
|
86
|
+
facet: string;
|
|
87
|
+
page: number;
|
|
88
|
+
pageTotal: number;
|
|
89
|
+
items: number;
|
|
90
|
+
}) => string;
|
|
91
|
+
/** "[<source-id>] Completed: <total> total, <fresh> new" — per-source success line. */
|
|
92
|
+
readonly "cli.progress.watchSourceCompleted": ({ sourceId, total, fresh, }: {
|
|
93
|
+
sourceId: string;
|
|
94
|
+
total: number;
|
|
95
|
+
fresh: number;
|
|
96
|
+
}) => string;
|
|
97
|
+
/** "Still waiting for "<sel>"… [<mm:ss>]" — long html-js selector-wait reminder. */
|
|
98
|
+
readonly "cli.progress.stillWaiting": ({ selector, elapsed, }: {
|
|
99
|
+
selector: string;
|
|
100
|
+
elapsed: string;
|
|
101
|
+
}) => string;
|
|
102
|
+
/** "[<source-id>] Fetching…" — per-source start-of-fetch phase marker. */
|
|
103
|
+
readonly "cli.progress.watchFetching": ({ sourceId }: {
|
|
104
|
+
sourceId: string;
|
|
105
|
+
}) => string;
|
|
106
|
+
/** "kind: <kind>" — side-metric info shown alongside the Fetching phase. */
|
|
107
|
+
readonly "cli.progress.watchKindInfo": ({ kind }: {
|
|
108
|
+
kind: string;
|
|
109
|
+
}) => string;
|
|
110
|
+
/** "[<source-id>] Failed" — per-source fetch-failure phase label. */
|
|
111
|
+
readonly "cli.progress.watchFailed": ({ sourceId }: {
|
|
112
|
+
sourceId: string;
|
|
113
|
+
}) => string;
|
|
114
|
+
/** "Launching Chromium…" — html-js browser-launch phase marker. */
|
|
115
|
+
readonly "cli.progress.htmlJsLaunching": "Launching Chromium…";
|
|
116
|
+
/** "Navigating to <url>…" — html-js page-navigation phase marker. */
|
|
117
|
+
readonly "cli.progress.htmlJsNavigating": ({ url }: {
|
|
118
|
+
url: string;
|
|
119
|
+
}) => string;
|
|
120
|
+
/** "Waiting for selector "<sel>" (timeout: <ms>ms)…" — html-js selector-wait phase marker. */
|
|
121
|
+
readonly "cli.progress.htmlJsWaitingSelector": ({ selector, timeout, }: {
|
|
122
|
+
selector: string;
|
|
123
|
+
timeout: number;
|
|
124
|
+
}) => string;
|
|
125
|
+
/** "Capturing page content…" — html-js content-capture phase marker. */
|
|
126
|
+
readonly "cli.progress.htmlJsCapturing": "Capturing page content…";
|
|
127
|
+
/** "Closing browser…" — html-js browser-close phase marker. */
|
|
128
|
+
readonly "cli.progress.htmlJsClosing": "Closing browser…";
|
|
129
|
+
readonly "cli.summary.init": "Initialize a workspace (sources/items/state/research/templates)";
|
|
130
|
+
readonly "cli.summary.source": "Manage feed sources (add | list | recipes | remove | test)";
|
|
131
|
+
readonly "cli.summary.watch": "Fetch sources and produce filtered items (run)";
|
|
132
|
+
readonly "cli.summary.state": "Manage per-source watch state (prune)";
|
|
133
|
+
readonly "cli.summary.research": "Generate Markdown research reports from items via an AI agent";
|
|
134
|
+
readonly "cli.summary.triage": "LLM-based triage of detected items";
|
|
135
|
+
readonly "cli.summary.dismiss": "Mark detected items as dismissed (single id, multiple ids, or --batch)";
|
|
136
|
+
readonly "cli.summary.undismiss": "Reverse a dismiss (`dismissed → detected`)";
|
|
137
|
+
readonly "cli.summary.items": "Inspect items in the workspace (list | ...)";
|
|
138
|
+
readonly "cli.summary.review": "Cross-review existing research reports using a different AI agent";
|
|
139
|
+
readonly "cli.summary.update": "Refresh existing research reports against the latest items";
|
|
140
|
+
readonly "cli.summary.doctor": "Diagnose workspace, agent CLIs, and html-js Playwright install";
|
|
141
|
+
readonly "cli.summary.workflow": "Generate GitHub Actions workflows (generate <type>)";
|
|
142
|
+
readonly "cli.summary.routine": "Manage Claude Code Routines (generate <type> / fire <trig_id>)";
|
|
143
|
+
readonly "cli.research.help": ({ maxItems }: {
|
|
144
|
+
maxItems: number;
|
|
145
|
+
}) => string;
|
|
146
|
+
readonly "cli.review.help": ({ maxItems }: {
|
|
147
|
+
maxItems: number;
|
|
148
|
+
}) => string;
|
|
149
|
+
readonly "cli.update.help": "Usage:\n radar update <research-id> [--agent <agent-id>] [--template <template-id>]\n radar update <research-id> --emit-payload [--template <id>]\n radar update --commit <path>\n\nArguments:\n <research-id> Research id (basename of research/<id>.md without .md)\n\nOptions:\n --agent <agent-id> claude-code | codex-cli | gemini-cli | copilot (default: claude-code)\n --template <id> Template id under templates/ (default: default)\n --emit-payload Host-agent mode: print the update payload to\n stdout and DO NOT spawn an agent. The interactive host\n session runs the SKILL procedure itself, then finalizes\n with `radar update --commit <path>`. Interactive/opt-in\n only — CI/headless must use the default spawn path.\n --commit <path> Host-agent mode: validate an externally-written\n v+1 report (under <cwd>/research/) against ResearchFrontmatter-\n Schema, assert the v+1 invariants against the `supersedes`\n predecessor, and leave items.yaml untouched.\n --verbose Stream the agent CLI's stdout/stderr in addition to phase markers.\n --quiet Suppress phase markers and spinner; print only the completion line.\n Equivalent to setting RADAR_NO_PROGRESS=1.\n\nGenerates research/<base>_v<n+1>.md from the supplied predecessor id,\nwriting `supersedes: <prev id>` into the new file's frontmatter. The\npredecessor file is never modified (immutable history), and\nthe linked items/<id>.yaml `status` is left untouched.";
|
|
150
|
+
readonly "cli.triage.runHelp": "Usage: radar triage [--dry-run | --apply | --interactive] [options]\n radar triage --emit-payload [--source <id>] [options]\n radar triage --commit <path>\n\nClassify `detected` items using the configured per-source triage policy.\n\nModes (mutually exclusive; default: --dry-run):\n --dry-run print proposed decisions to stdout (no disk writes)\n --apply write decisions to items/<id>.yaml + transition status\n --interactive --dry-run output → $EDITOR → confirm → apply\n\nOptions:\n --source <id> limit triage to a single source\n --filter-tags <a,b> matchedKeywords allow-list (comma-separated)\n --triage-agent <id> override policy.agent for this run\n --policy <path> override per-source policy with a YAML file\n --max-items N hard cap on items triaged in this run\n --audit-log <path> append JSONL audit records of every triage call\n --emit-payload Host-agent mode: print the triage payload to\n stdout and DO NOT spawn an agent. The interactive host\n session classifies the items itself, writes a decisions\n JSON, then finalizes with `radar triage --commit <path>`.\n Requires a single source group: pass --source unless only\n one source has detected items. Interactive/opt-in only —\n CI/headless must use the default spawn path.\n --commit <path> Host-agent mode: validate a host-written\n decisions JSON (under <cwd>/triage/) against the source's\n policy + detected items and apply the status transitions.\n -v, --verbose verbose progress output\n -q, --quiet suppress progress output entirely\n\nSources missing a `triagePolicy:` block are skipped with a warning.";
|
|
151
|
+
readonly "cli.triage.feedbackHelp": "Usage: radar triage feedback <item-id> --correct | --wrong [--reason <text>]\n\nRecord human feedback on a prior triage decision.\nFeedback is appended to items/<id>.yaml > triage.feedback, used by\n`radar triage stats` (#242) for policy tuning.\n\nOptions:\n --correct mark the prior triage decision as correct\n --wrong mark the prior triage decision as wrong\n --reason <text> free-form rationale (recommended for --wrong)";
|
|
152
|
+
readonly "cli.triage.statsHelp": "Usage: radar triage stats [--since <duration>] [--source <id>] [--json]\n\nAggregate triage decisions and human feedback.\nUse after running `radar triage --apply` for some weeks; the output\nhighlights precision / recall drift and suggests `triagePolicy.rules:`\ntweaks. See docs/user-guide.md `policy tuning workflow` for the\nrecommended monthly loop.\n\nOptions:\n --since <duration> only count items triaged within the cutoff (e.g. 30d, 24h)\n --source <id> limit stats to a single source (default: all sources)\n --json emit machine-readable JSON instead of the text report";
|
|
153
|
+
readonly "cli.triage.help": "Usage: radar triage <subcommand|--apply|--dry-run|--interactive> [...]\n\nSubcommands:\n feedback <item-id> --correct | --wrong [--reason <text>]\n stats [--since <duration>] [--source <id>] [--json]\n\nRun modes (when no subcommand given):\n --dry-run print proposed decisions\n --apply write decisions to items/<id>.yaml\n --interactive edit decisions in $EDITOR before applying\n\nRun `radar triage --help` for the full option list.";
|
|
154
|
+
readonly "cli.dismiss.help": ({ maxItems }: {
|
|
155
|
+
maxItems: number;
|
|
156
|
+
}) => string;
|
|
157
|
+
readonly "cli.undismiss.help": "Usage: radar undismiss <item-id> [--force]\n\nArguments:\n <item-id> Item id (matches items/<sourceId>/<item-id>.yaml)\n\nOptions:\n --force, -f Required when reversing a human-origin dismiss\n\nReverses `dismissed → detected`.\nTriage-origin dismisses revert silently; human-origin dismisses require --force.\n\nInverse of `radar dismiss`.";
|
|
158
|
+
readonly "cli.items.listHelp": "Usage: radar items list [filters] [output options]\n\nFilters:\n --status <status> detected | triaged_research | triaged_digest |\n triaged_unsure | researched | reviewed | dismissed\n --source <id> limit to one source\n --triage-group <name> items whose triage.group == <name>\n (used by digest workflow)\n --since <duration> drop items older than the cutoff (e.g. 7d, 24h)\n --limit N cap result count\n\nOutput options:\n --json emit JSON array (one object per item)\n --field <expr> emit one item field per row (e.g. id, sourceId,\n triage.decision). Supports nested dot paths.";
|
|
159
|
+
readonly "cli.items.help": "Usage: radar items <list> [...]\n\nSubcommands:\n list [filters] List items matching the supplied filters";
|
|
160
|
+
readonly "cli.watch.help": "Usage: radar watch <run> [options]\n\nSubcommands:\n run [--source <id>] [--bootstrap | --backfill [--max-pages N]]\n Fetch sources and produce items\n\nOptions for run:\n --source <id> Limit the run to a single source id\n --bootstrap Seed lastSeenIds without emitting items (suppress initial noise)\n --backfill Fetch all available history pages and emit items for each.\n Supported fully by kind: json-api / github-releases / npm-registry.\n Other kinds (rss / html / html-js) only return their current page.\n --max-pages N Override pagination.maxPages cap (requires --backfill).\n Applies to INNER pagination only — facet sweep\n always walks every facet value regardless of this flag.\n -v, --verbose Enable progress-reporter raw() pass-through (adapter stdout).\n -q, --quiet Suppress the per-source progress reporter (legacy 1-line log\n remains). RADAR_NO_PROGRESS=1 has the same effect.";
|
|
161
|
+
readonly "cli.doctor.help": "Usage: radar doctor [--no-proxy-check]\n\nDiagnose the workspace and report dependency / configuration health.\n\nChecks performed:\n - Workspace directories (sources/, items/, state/, research/, templates/)\n - radar.config.yaml schema validity\n - Agent CLI availability (claude / codex / gemini / copilot)\n - Playwright + Chromium install (only if html-js sources configured)\n - Proxy env vars (HTTPS_PROXY / HTTP_PROXY / ALL_PROXY) with credential masking\n - NODE_USE_ENV_PROXY status (engaged when radar self-respawned for proxy)\n - NODE_EXTRA_CA_CERTS status (required for TLS-intercepting proxies)\n - Live proxy healthcheck (HTTPS request to api.github.com)\n\nOptions:\n --no-proxy-check Skip the live proxy healthcheck (offline-friendly)\n\nExit codes:\n 0 all ok (warnings may appear, but no errors)\n 1 one or more error-level checks failed";
|
|
162
|
+
readonly "cli.source.addHelp": "Usage: radar source add <id> --kind <kind> --url <url> [options]\n radar source add <id> --recipe <name> [overrides]\n\nOptions:\n --kind <kind> rss | html | html-js | github-releases | npm-registry | json-feed | json-api\n --url <url> fetch target URL\n --recipe <name> apply a bundled recipe (see `radar source recipes`).\n Mutually exclusive with --kind / --url / --selector-* /\n --pagination-*; --name / --tags / --keywords /\n --exclude-keywords still override the recipe defaults.\n --name <name> display name (defaults to <id>)\n --tags <a,b> comma-separated tags\n --keywords <a,b> comma-separated include keywords\n (required for useful output — empty = match nothing)\n --exclude-keywords <a,b> comma-separated exclude keywords\n --selector-<field> <css> CSS selector for kind=html / html-js (required: item, title, link)\n optional: summary, publishedAt, body, tags\n For kind=html-js, selectors evaluate against the post-JS DOM.\n The `js:` block (waitFor / timeout / userAgent) cannot be set\n via flags; edit sources/<id>.yaml after add.\n\n For kind=json-api:\n --pagination-strategy <s> page | offset | cursor | link-header | token | none (default: page)\n --pagination-param <name> query param name for the page/offset/cursor value\n --pagination-start N initial page/offset value (default: 0)\n --page-size N items per page\n --page-size-param <name> query param name for the page-size value\n --max-pages N hard cap on pages traversed (default: 20)\n --next-cursor-path <jp> JSONPath-lite to the next-cursor value (cursor/token strategy)\n --total-path <jp> JSONPath-lite to the total-count value (backfill early-stop hint)\n\n Selector fields (`jsonSelectors.*`) for kind=json-api cannot be set via flags;\n the schema has a default fallback chain (items / title / link / publishedAt / summary),\n so simple APIs work without selectors. Edit sources/<id>.yaml directly when explicit\n selectors are needed (nested fields, non-standard envelopes).\n\n Facet sweep (e.g. year-by-year sweep) cannot be configured via flags;\n and bundle the year sweep through `--recipe aws-whats-new`. Recipe-only structural field.";
|
|
163
|
+
readonly "cli.source.listHelp": "Usage: radar source list [--enabled-only] [-v|--verbose]\n\nLists sources/*.yaml in tabular form: id / kind / url / tags.\n\nOptions:\n --enabled-only Reserved for forward compatibility (currently a no-op).\n -v, --verbose Print a detailed block per source including keywords,\n trustLevel, and lastFetchedAt (from state/<id>.yaml).";
|
|
164
|
+
readonly "cli.source.removeHelp": "Usage: radar source remove <id>\n\nDeletes sources/<id>.yaml. state/<id>.yaml and items/ are preserved.";
|
|
165
|
+
readonly "cli.source.testHelp": "Usage: radar source test <id> [--limit N] [--show-content]\n\nDry-run a single source: fetch, filter, and print matched items.\nstate/ and items/ are not touched (no persistence). Useful for tuning\nkeywords when adding a new source.\n\nFor kind=json-api, `source test` fetches PAGE 0 ONLY.\nPagination is NOT walked even when the recipe declares multiple pages —\n`--limit N` caps how many matched items are PRINTED, it does not change\nthe page budget. Use `radar watch run --backfill` for full-history ingest.\nPage 0's `Link` header / `nextCursor` extraction is surfaced via\n`--show-content` for pagination tuning without state mutation.\n\nFor facet-sweep recipes, `source test` probes a SINGLE\nfacet value: range facets use the upper bound (latest year), enum facets\nuse the first listed value. A warning names which value was tested so\nkeyword tuning is not silently scoped to one slice. Run `radar watch run\n--backfill` to sweep every facet value.\n\nOptions:\n --limit N Maximum number of matched items to print (default 10)\n --show-content Also print the first 200 chars of each item's body, plus\n (kind=json-api) the selector adoption table and pagination\n preview (would-be next URL / Link header / nextCursor).\n -v, --verbose Enable progress-reporter raw() pass-through (adapter stdout).\n Most useful with kind=html-js (Playwright phase markers).\n -q, --quiet Suppress the progress reporter entirely. RADAR_NO_PROGRESS=1\n has the same effect.";
|
|
166
|
+
readonly "cli.source.recipesHelp": "Usage: radar source recipes\n\nList bundled recipes (recipes/*.yaml in the radar package).\nEach recipe can be applied via:\n radar source add <id> --recipe <name> [--keywords <kw>] [--tags <t>] [--name <display>]\n\nBundled recipes ship with the radar npm package; user-authored recipes are\nnot yet supported. To add a new bundled recipe, contribute a YAML to the\nradar repo's recipes/ directory.";
|
|
167
|
+
readonly "cli.source.help": "Usage: radar source <add|list|recipes|remove|test> [...]\n\nSubcommands:\n add <id> --kind <kind> --url <url> [...]\n add <id> --recipe <name> [--keywords <kw>] [--tags <t>] [--name <display>]\n list [--enabled-only]\n recipes\n remove <id>\n test <id> [--limit N] [--show-content]";
|
|
168
|
+
readonly "cli.workflow.help": "Usage: radar workflow <subcommand> [...]\n\nSubcommands:\n generate <type> Generate a GitHub Actions workflow YAML\n Types: watch | combined | combined-with-triage\n\nRun `radar workflow generate <type> --help` for type-specific options.";
|
|
169
|
+
readonly "cli.workflow.generateHelp": "Usage: radar workflow generate <type> [options]\n\nTypes:\n watch Periodic `radar watch run` (cron + state commit with rebase retry)\n combined Periodic `radar watch run` -> auto research --batch with hard cap\n combined-with-triage `watch run` -> `triage --apply` -> `research --batch` -> per-group `research --digest` -> `review --batch` in one job\n\nRun `radar workflow generate <type> --help` for type-specific options.";
|
|
170
|
+
readonly "cli.workflow.generateWatchHelp": "Usage: radar workflow generate watch [options]\n\nGenerates a GitHub Actions workflow that runs `radar watch run` on a cron schedule.\nThe generated workflow includes git pull --rebase retry logic to mitigate push\nconflicts with other concurrent workflows.\n\nOptions:\n --cron <expression> 5-field cron expression (default: \"0 0 * * *\")\n --output <path> Output file under .github/workflows/\n (default: .github/workflows/feedradar-watch.yaml)\n --agent <name> claude-code | codex-cli | gemini-cli | copilot (default: claude-code)\n Determines which secret name the workflow references.\n --force, -f Overwrite existing output file\n --lang <en|ja> Language for the generated YAML's comments / step names\n (default: en; also honors RADAR_LANG and config.locale)\n\nRequired secrets (Settings → Secrets and variables → Actions):\n ANTHROPIC_API_KEY when --agent claude-code (default)\n OPENAI_API_KEY when --agent codex-cli\n GEMINI_API_KEY when --agent gemini-cli\n GITHUB_TOKEN auto-provisioned for --agent copilot (no setup needed)";
|
|
171
|
+
readonly "cli.workflow.generateCombinedHelp": ({ maxItems }: {
|
|
172
|
+
maxItems: number;
|
|
173
|
+
}) => string;
|
|
174
|
+
readonly "cli.workflow.generateCombinedWithTriageHelp": ({ watchCron, output, maxItems, }: {
|
|
175
|
+
watchCron: string;
|
|
176
|
+
output: string;
|
|
177
|
+
maxItems: number;
|
|
178
|
+
}) => string;
|
|
179
|
+
readonly "cli.routine.help": "Usage: radar routine <subcommand> [...]\n\nSubcommands:\n generate <type> Generate a Claude Code Routine YAML (.claude/routines/)\n Types: watch | pipeline\n fire <trig_id> Trigger a registered routine from the outside (/fire API)\n\nRun `radar routine <subcommand> --help` for subcommand-specific options.";
|
|
180
|
+
readonly "cli.routine.generateHelp": "Usage: radar routine generate <type> [options]\n\nTypes:\n watch Periodic `radar watch run` self-session routine; commits items/state to a claude/* branch\n pipeline Full watch -> triage -> research -> review self-session routine, one item at a time\n\nRun `radar routine generate <type> --help` for type-specific options.";
|
|
181
|
+
readonly "cli.routine.generateWatchHelp": ({ models }: {
|
|
182
|
+
models: string;
|
|
183
|
+
}) => string;
|
|
184
|
+
readonly "cli.routine.generatePipelineHelp": ({ models, maxItems, }: {
|
|
185
|
+
models: string;
|
|
186
|
+
maxItems: number;
|
|
187
|
+
}) => string;
|
|
188
|
+
readonly "cli.routine.fireHelp": ({ tokenEnv }: {
|
|
189
|
+
tokenEnv: string;
|
|
190
|
+
}) => string;
|
|
191
|
+
readonly "cli.dismiss.batchIncompatiblePositional": ({ count }: {
|
|
192
|
+
count: number;
|
|
193
|
+
}) => string;
|
|
194
|
+
readonly "cli.dismiss.invalidStatus": ({ status, allowed }: {
|
|
195
|
+
status: string;
|
|
196
|
+
allowed: string;
|
|
197
|
+
}) => string;
|
|
198
|
+
readonly "cli.dismiss.statusRequiresBatch": "dismiss: --status requires --batch";
|
|
199
|
+
readonly "cli.dismiss.maxItemsRequiresBatch": "dismiss: --max-items requires --batch";
|
|
200
|
+
readonly "cli.dismiss.filterTagsRequiresBatch": "dismiss: --filter-tags requires --batch";
|
|
201
|
+
readonly "cli.dismiss.invalidMaxItemsInteger": ({ raw }: {
|
|
202
|
+
raw: string;
|
|
203
|
+
}) => string;
|
|
204
|
+
readonly "cli.dismiss.invalidMaxItemsPositive": ({ raw }: {
|
|
205
|
+
raw: string;
|
|
206
|
+
}) => string;
|
|
207
|
+
readonly "cli.dismiss.missingItemId": "dismiss: missing <item-id>";
|
|
208
|
+
readonly "cli.dismiss.itemNotFound": ({ id }: {
|
|
209
|
+
id: string;
|
|
210
|
+
}) => string;
|
|
211
|
+
readonly "cli.dismiss.itemWrongStatus": ({ id, status, allowed, nextStatuses, }: {
|
|
212
|
+
id: string;
|
|
213
|
+
status: string;
|
|
214
|
+
allowed: string;
|
|
215
|
+
nextStatuses: string;
|
|
216
|
+
}) => string;
|
|
217
|
+
readonly "cli.dismiss.failedUpdate": ({ reason }: {
|
|
218
|
+
reason: string;
|
|
219
|
+
}) => string;
|
|
220
|
+
readonly "cli.dismiss.transitioned": ({ sourceId, id }: {
|
|
221
|
+
sourceId: string;
|
|
222
|
+
id: string;
|
|
223
|
+
}) => string;
|
|
224
|
+
readonly "cli.dismiss.noItemsMatched": ({ status, tags }: {
|
|
225
|
+
status: string;
|
|
226
|
+
tags: string;
|
|
227
|
+
}) => string;
|
|
228
|
+
readonly "cli.dismiss.capReached": ({ maxItems, dropped, matched, }: {
|
|
229
|
+
maxItems: number;
|
|
230
|
+
dropped: number;
|
|
231
|
+
matched: number;
|
|
232
|
+
}) => string;
|
|
233
|
+
readonly "cli.dismiss.batchWillProcess": ({ count, status, tags, cap, }: {
|
|
234
|
+
count: number;
|
|
235
|
+
status: string;
|
|
236
|
+
tags: string;
|
|
237
|
+
cap: number;
|
|
238
|
+
}) => string;
|
|
239
|
+
readonly "cli.dismiss.batchCompleted": ({ count }: {
|
|
240
|
+
count: number;
|
|
241
|
+
}) => string;
|
|
242
|
+
readonly "cli.undismiss.missingItemId": "undismiss: missing <item-id>";
|
|
243
|
+
readonly "cli.undismiss.itemsDirNotFound": "undismiss: items/ not found (run `radar init`)";
|
|
244
|
+
readonly "cli.undismiss.itemNotFound": ({ id }: {
|
|
245
|
+
id: string;
|
|
246
|
+
}) => string;
|
|
247
|
+
readonly "cli.undismiss.notDismissed": ({ id, status }: {
|
|
248
|
+
id: string;
|
|
249
|
+
status: string;
|
|
250
|
+
}) => string;
|
|
251
|
+
readonly "cli.undismiss.forbiddenTransition": "undismiss: state machine forbids 'dismissed → detected' (internal error)";
|
|
252
|
+
readonly "cli.undismiss.humanOriginRequiresForce": ({ id }: {
|
|
253
|
+
id: string;
|
|
254
|
+
}) => string;
|
|
255
|
+
readonly "cli.undismiss.failedUpdate": ({ reason }: {
|
|
256
|
+
reason: string;
|
|
257
|
+
}) => string;
|
|
258
|
+
readonly "cli.undismiss.revertedHumanOrigin": ({ id }: {
|
|
259
|
+
id: string;
|
|
260
|
+
}) => string;
|
|
261
|
+
readonly "cli.undismiss.transitioned": ({ sourceId, id }: {
|
|
262
|
+
sourceId: string;
|
|
263
|
+
id: string;
|
|
264
|
+
}) => string;
|
|
265
|
+
readonly "cli.doctor.workspaceDirExists": ({ dir }: {
|
|
266
|
+
dir: string;
|
|
267
|
+
}) => string;
|
|
268
|
+
readonly "cli.doctor.workspaceDirMissing": ({ dir }: {
|
|
269
|
+
dir: string;
|
|
270
|
+
}) => string;
|
|
271
|
+
readonly "cli.doctor.configValid": "radar.config.yaml valid (or absent — defaults apply)";
|
|
272
|
+
readonly "cli.doctor.configInvalid": ({ reason }: {
|
|
273
|
+
reason: string;
|
|
274
|
+
}) => string;
|
|
275
|
+
readonly "cli.doctor.agentFound": ({ agent, binary, path, }: {
|
|
276
|
+
agent: string;
|
|
277
|
+
binary: string;
|
|
278
|
+
path: string;
|
|
279
|
+
}) => string;
|
|
280
|
+
readonly "cli.doctor.agentMissing": ({ agent, binary }: {
|
|
281
|
+
agent: string;
|
|
282
|
+
binary: string;
|
|
283
|
+
}) => string;
|
|
284
|
+
readonly "cli.doctor.playwrightNotRequired": "playwright: not required (no html-js sources configured)";
|
|
285
|
+
readonly "cli.doctor.playwrightOk": ({ path }: {
|
|
286
|
+
path: string;
|
|
287
|
+
}) => string;
|
|
288
|
+
readonly "cli.doctor.playwrightModuleMissing": ({ sources, hint, }: {
|
|
289
|
+
sources: string;
|
|
290
|
+
hint: string;
|
|
291
|
+
}) => string;
|
|
292
|
+
readonly "cli.doctor.playwrightChromiumMissing": ({ path, sources, hint, }: {
|
|
293
|
+
path: string;
|
|
294
|
+
sources: string;
|
|
295
|
+
hint: string;
|
|
296
|
+
}) => string;
|
|
297
|
+
readonly "cli.doctor.proxyEnvAllProxyOnly": ({ source, masked, }: {
|
|
298
|
+
source: string;
|
|
299
|
+
masked: string;
|
|
300
|
+
}) => string;
|
|
301
|
+
readonly "cli.doctor.proxyEnvDetected": ({ source, masked }: {
|
|
302
|
+
source: string;
|
|
303
|
+
masked: string;
|
|
304
|
+
}) => string;
|
|
305
|
+
readonly "cli.doctor.proxyEnvNone": "proxy: no proxy env var set (HTTPS_PROXY / HTTP_PROXY / ALL_PROXY)";
|
|
306
|
+
readonly "cli.doctor.proxyActive": "proxy: NODE_USE_ENV_PROXY active (auto-applied by radar)";
|
|
307
|
+
readonly "cli.doctor.proxyActiveMissing": "proxy: NODE_USE_ENV_PROXY not set; if fetch ignores HTTPS_PROXY, re-run radar via the bin (not direct import)";
|
|
308
|
+
readonly "cli.doctor.proxyActiveNotRequired": "proxy: NODE_USE_ENV_PROXY not required (no proxy detected)";
|
|
309
|
+
readonly "cli.doctor.tlsCaSet": ({ path }: {
|
|
310
|
+
path: string;
|
|
311
|
+
}) => string;
|
|
312
|
+
readonly "cli.doctor.tlsCaUnset": "tls: NODE_EXTRA_CA_CERTS not set (TLS-intercepting proxies may fail)";
|
|
313
|
+
readonly "cli.doctor.healthcheckSkippedFlag": "proxy healthcheck: skipped (--no-proxy-check)";
|
|
314
|
+
readonly "cli.doctor.healthcheckSkippedNoProxy": "proxy healthcheck: skipped (no proxy detected)";
|
|
315
|
+
readonly "cli.doctor.healthcheck407": ({ url }: {
|
|
316
|
+
url: string;
|
|
317
|
+
}) => string;
|
|
318
|
+
readonly "cli.doctor.healthcheckOk": ({ status, statusText, elapsed, }: {
|
|
319
|
+
status: number;
|
|
320
|
+
statusText: string;
|
|
321
|
+
elapsed: number;
|
|
322
|
+
}) => string;
|
|
323
|
+
readonly "cli.doctor.healthcheckOther": ({ status, statusText, elapsed, }: {
|
|
324
|
+
status: number;
|
|
325
|
+
statusText: string;
|
|
326
|
+
elapsed: number;
|
|
327
|
+
}) => string;
|
|
328
|
+
readonly "cli.doctor.healthcheckTimeout": ({ elapsed }: {
|
|
329
|
+
elapsed: number;
|
|
330
|
+
}) => string;
|
|
331
|
+
readonly "cli.doctor.healthcheckTls": ({ code }: {
|
|
332
|
+
code: string;
|
|
333
|
+
}) => string;
|
|
334
|
+
readonly "cli.doctor.healthcheckRefused": "proxy healthcheck: connection refused. Verify the proxy host:port in $HTTPS_PROXY is reachable.";
|
|
335
|
+
readonly "cli.doctor.healthcheckDns": ({ code }: {
|
|
336
|
+
code: string;
|
|
337
|
+
}) => string;
|
|
338
|
+
readonly "cli.doctor.healthcheckResetTimeout": ({ code }: {
|
|
339
|
+
code: string;
|
|
340
|
+
}) => string;
|
|
341
|
+
readonly "cli.doctor.healthcheckFailed": ({ reason }: {
|
|
342
|
+
reason: string;
|
|
343
|
+
}) => string;
|
|
344
|
+
readonly "cli.doctor.summary": ({ ok, warn, error, }: {
|
|
345
|
+
ok: number;
|
|
346
|
+
warn: number;
|
|
347
|
+
error: number;
|
|
348
|
+
}) => string;
|
|
349
|
+
readonly "cli.init.workspaceReady": ({ cwd }: {
|
|
350
|
+
cwd: string;
|
|
351
|
+
}) => string;
|
|
352
|
+
readonly "cli.init.directoriesCreated": ({ dirs }: {
|
|
353
|
+
dirs: string;
|
|
354
|
+
}) => string;
|
|
355
|
+
readonly "cli.init.skillsCopied": ({ files }: {
|
|
356
|
+
files: string;
|
|
357
|
+
}) => string;
|
|
358
|
+
readonly "cli.init.filesSkipped": ({ files }: {
|
|
359
|
+
files: string;
|
|
360
|
+
}) => string;
|
|
361
|
+
readonly "cli.init.nextSteps": "init: next steps — read FEEDRADAR.md for natural-language and slash usage.";
|
|
362
|
+
readonly "cli.items.unknownSubcommand": ({ sub }: {
|
|
363
|
+
sub: string;
|
|
364
|
+
}) => string;
|
|
365
|
+
readonly "cli.items.invalidStatus": ({ status, allowed }: {
|
|
366
|
+
status: string;
|
|
367
|
+
allowed: string;
|
|
368
|
+
}) => string;
|
|
369
|
+
readonly "cli.items.invalidSince": ({ since }: {
|
|
370
|
+
since: string;
|
|
371
|
+
}) => string;
|
|
372
|
+
readonly "cli.items.noItemsDir": "items list: no items/ directory (run `radar init` first)";
|
|
373
|
+
readonly "cli.items.noMatch": "items list: no items match the filter";
|
|
374
|
+
readonly "cli.watch.bootstrapBackfillExclusive": "--bootstrap and --backfill are mutually exclusive";
|
|
375
|
+
readonly "cli.watch.maxPagesRequiresBackfill": "--max-pages requires --backfill";
|
|
376
|
+
readonly "cli.watch.verboseQuietExclusive": "--verbose and --quiet are mutually exclusive";
|
|
377
|
+
readonly "cli.watch.unknownSubcommand": ({ sub }: {
|
|
378
|
+
sub: string;
|
|
379
|
+
}) => string;
|
|
380
|
+
readonly "cli.watch.bootstrapComplete": ({ sources }: {
|
|
381
|
+
sources: number;
|
|
382
|
+
}) => string;
|
|
383
|
+
readonly "cli.watch.backfillComplete": ({ total, sources }: {
|
|
384
|
+
total: number;
|
|
385
|
+
sources: number;
|
|
386
|
+
}) => string;
|
|
387
|
+
readonly "cli.watch.runComplete": ({ total, sources }: {
|
|
388
|
+
total: number;
|
|
389
|
+
sources: number;
|
|
390
|
+
}) => string;
|
|
391
|
+
readonly "cli.config.schemaViolation": ({ file, issues }: {
|
|
392
|
+
file: string;
|
|
393
|
+
issues: string;
|
|
394
|
+
}) => string;
|
|
395
|
+
readonly "cli.config.failedRead": ({ file, reason }: {
|
|
396
|
+
file: string;
|
|
397
|
+
reason: string;
|
|
398
|
+
}) => string;
|
|
399
|
+
readonly "cli.config.failedParse": ({ file, reason }: {
|
|
400
|
+
file: string;
|
|
401
|
+
reason: string;
|
|
402
|
+
}) => string;
|
|
403
|
+
readonly "cli.agent.invalid": ({ cmd, agent }: {
|
|
404
|
+
cmd: string;
|
|
405
|
+
agent: string;
|
|
406
|
+
}) => string;
|
|
407
|
+
readonly "cli.research.batchIncompatiblePositional": ({ count }: {
|
|
408
|
+
count: number;
|
|
409
|
+
}) => string;
|
|
410
|
+
readonly "cli.research.batchIncompatibleDigest": "research: --batch is incompatible with --digest";
|
|
411
|
+
readonly "cli.research.batchIncompatibleTriageGroup": "research: --batch is incompatible with --triage-group";
|
|
412
|
+
readonly "cli.research.invalidStatus": ({ status, allowed, }: {
|
|
413
|
+
status: string;
|
|
414
|
+
allowed: string;
|
|
415
|
+
}) => string;
|
|
416
|
+
readonly "cli.research.invalidMaxItemsInteger": ({ raw }: {
|
|
417
|
+
raw: string;
|
|
418
|
+
}) => string;
|
|
419
|
+
readonly "cli.research.invalidMaxItemsPositive": ({ raw }: {
|
|
420
|
+
raw: string;
|
|
421
|
+
}) => string;
|
|
422
|
+
readonly "cli.research.commitIncompatibleBatch": "research: --commit is incompatible with --batch";
|
|
423
|
+
readonly "cli.research.commitIncompatibleDigest": "research: --commit is incompatible with --digest";
|
|
424
|
+
readonly "cli.research.commitIncompatibleEmitPayload": "research: --commit is incompatible with --emit-payload";
|
|
425
|
+
readonly "cli.research.commitIncompatibleTriageGroup": "research: --commit is incompatible with --triage-group";
|
|
426
|
+
readonly "cli.research.commitTakesPath": ({ count, ids }: {
|
|
427
|
+
count: number;
|
|
428
|
+
ids: string;
|
|
429
|
+
}) => string;
|
|
430
|
+
readonly "cli.research.emitPayloadIncompatibleBatch": "research: --emit-payload is incompatible with --batch";
|
|
431
|
+
readonly "cli.research.statusRequiresBatch": "research: --status requires --batch";
|
|
432
|
+
readonly "cli.research.maxItemsRequiresBatch": "research: --max-items requires --batch";
|
|
433
|
+
readonly "cli.research.filterTagsRequiresBatch": "research: --filter-tags requires --batch";
|
|
434
|
+
readonly "cli.research.triageGroupRequiresDigest": "research: --triage-group requires --digest";
|
|
435
|
+
readonly "cli.research.missingItemId": "research: missing <item-id>";
|
|
436
|
+
readonly "cli.research.multipleRequireDigest": ({ count, ids }: {
|
|
437
|
+
count: number;
|
|
438
|
+
ids: string;
|
|
439
|
+
}) => string;
|
|
440
|
+
readonly "cli.research.digestRequiresTwo": ({ count }: {
|
|
441
|
+
count: number;
|
|
442
|
+
}) => string;
|
|
443
|
+
readonly "cli.research.itemNotFound": ({ id }: {
|
|
444
|
+
id: string;
|
|
445
|
+
}) => string;
|
|
446
|
+
readonly "cli.research.digestDismissed": ({ ids }: {
|
|
447
|
+
ids: string;
|
|
448
|
+
}) => string;
|
|
449
|
+
readonly "cli.research.alreadyExists": ({ path }: {
|
|
450
|
+
path: string;
|
|
451
|
+
}) => string;
|
|
452
|
+
readonly "cli.research.noItemsMatched": ({ status, tags }: {
|
|
453
|
+
status: string;
|
|
454
|
+
tags: string;
|
|
455
|
+
}) => string;
|
|
456
|
+
readonly "cli.research.capReached": ({ maxItems, dropped, matched, }: {
|
|
457
|
+
maxItems: number;
|
|
458
|
+
dropped: number;
|
|
459
|
+
matched: number;
|
|
460
|
+
}) => string;
|
|
461
|
+
readonly "cli.research.batchWillProcess": ({ count, status, tags, agent, cap, }: {
|
|
462
|
+
count: number;
|
|
463
|
+
status: string;
|
|
464
|
+
tags: string;
|
|
465
|
+
agent: string;
|
|
466
|
+
cap: number;
|
|
467
|
+
}) => string;
|
|
468
|
+
readonly "cli.research.batchHalted": ({ id, exitCode }: {
|
|
469
|
+
id: string;
|
|
470
|
+
exitCode: number;
|
|
471
|
+
}) => string;
|
|
472
|
+
readonly "cli.research.batchCompleted": ({ count }: {
|
|
473
|
+
count: number;
|
|
474
|
+
}) => string;
|
|
475
|
+
readonly "cli.research.wrote": ({ path }: {
|
|
476
|
+
path: string;
|
|
477
|
+
}) => string;
|
|
478
|
+
readonly "cli.research.transitioned": ({ sourceId, id }: {
|
|
479
|
+
sourceId: string;
|
|
480
|
+
id: string;
|
|
481
|
+
}) => string;
|
|
482
|
+
readonly "cli.review.batchIncompatiblePositional": ({ researchId }: {
|
|
483
|
+
researchId: string;
|
|
484
|
+
}) => string;
|
|
485
|
+
readonly "cli.review.invalidStatus": ({ status, allowed }: {
|
|
486
|
+
status: string;
|
|
487
|
+
allowed: string;
|
|
488
|
+
}) => string;
|
|
489
|
+
readonly "cli.review.invalidMaxItemsInteger": ({ raw }: {
|
|
490
|
+
raw: string;
|
|
491
|
+
}) => string;
|
|
492
|
+
readonly "cli.review.invalidMaxItemsPositive": ({ raw }: {
|
|
493
|
+
raw: string;
|
|
494
|
+
}) => string;
|
|
495
|
+
readonly "cli.review.commitIncompatibleBatch": "review: --commit is incompatible with --batch";
|
|
496
|
+
readonly "cli.review.commitIncompatibleEmitPayload": "review: --commit is incompatible with --emit-payload";
|
|
497
|
+
readonly "cli.review.commitTakesPath": ({ researchId }: {
|
|
498
|
+
researchId: string;
|
|
499
|
+
}) => string;
|
|
500
|
+
readonly "cli.review.emitPayloadIncompatibleBatch": "review: --emit-payload is incompatible with --batch";
|
|
501
|
+
readonly "cli.review.statusRequiresBatch": "review: --status requires --batch";
|
|
502
|
+
readonly "cli.review.maxItemsRequiresBatch": "review: --max-items requires --batch";
|
|
503
|
+
readonly "cli.review.filterTagsRequiresBatch": "review: --filter-tags requires --batch";
|
|
504
|
+
readonly "cli.review.missingResearchId": "review: missing <research-id>";
|
|
505
|
+
readonly "cli.review.fileNotFound": ({ path }: {
|
|
506
|
+
path: string;
|
|
507
|
+
}) => string;
|
|
508
|
+
readonly "cli.review.batchFoundNone": "review: --batch found no un-reviewed research/*.md files";
|
|
509
|
+
readonly "cli.review.batchMatchedZero": ({ status, tags }: {
|
|
510
|
+
status: string;
|
|
511
|
+
tags: string;
|
|
512
|
+
}) => string;
|
|
513
|
+
readonly "cli.review.capReached": ({ maxItems, dropped, matched, }: {
|
|
514
|
+
maxItems: number;
|
|
515
|
+
dropped: number;
|
|
516
|
+
matched: number;
|
|
517
|
+
}) => string;
|
|
518
|
+
readonly "cli.review.batchWillProcess": ({ count, status, tags, agent, cap, }: {
|
|
519
|
+
count: number;
|
|
520
|
+
status: string;
|
|
521
|
+
tags: string;
|
|
522
|
+
agent: string;
|
|
523
|
+
cap: number;
|
|
524
|
+
}) => string;
|
|
525
|
+
readonly "cli.review.batchHalted": ({ researchId, exitCode, }: {
|
|
526
|
+
researchId: string;
|
|
527
|
+
exitCode: number;
|
|
528
|
+
}) => string;
|
|
529
|
+
readonly "cli.review.batchCompleted": ({ count }: {
|
|
530
|
+
count: number;
|
|
531
|
+
}) => string;
|
|
532
|
+
readonly "cli.review.commitNotStamped": ({ id, reviewedAt, reviewedBy, }: {
|
|
533
|
+
id: string;
|
|
534
|
+
reviewedAt: string;
|
|
535
|
+
reviewedBy: string;
|
|
536
|
+
}) => string;
|
|
537
|
+
readonly "cli.review.alreadyReviewed": ({ id, reviewedAt, reviewedBy, }: {
|
|
538
|
+
id: string;
|
|
539
|
+
reviewedAt: string;
|
|
540
|
+
reviewedBy: string;
|
|
541
|
+
}) => string;
|
|
542
|
+
readonly "cli.review.wroteCommit": ({ path }: {
|
|
543
|
+
path: string;
|
|
544
|
+
}) => string;
|
|
545
|
+
readonly "cli.review.stamped": ({ path, reviewedAt, reviewedBy, }: {
|
|
546
|
+
path: string;
|
|
547
|
+
reviewedAt: string;
|
|
548
|
+
reviewedBy: string;
|
|
549
|
+
}) => string;
|
|
550
|
+
readonly "cli.review.transitioned": ({ sourceId, id }: {
|
|
551
|
+
sourceId: string;
|
|
552
|
+
id: string;
|
|
553
|
+
}) => string;
|
|
554
|
+
readonly "cli.update.commitIncompatibleEmitPayload": "update: --commit is incompatible with --emit-payload";
|
|
555
|
+
readonly "cli.update.commitTakesPath": ({ researchId }: {
|
|
556
|
+
researchId: string;
|
|
557
|
+
}) => string;
|
|
558
|
+
readonly "cli.update.missingResearchId": "update: missing <research-id>";
|
|
559
|
+
readonly "cli.update.fileNotFound": ({ path }: {
|
|
560
|
+
path: string;
|
|
561
|
+
}) => string;
|
|
562
|
+
readonly "cli.update.alreadyExists": ({ path, version }: {
|
|
563
|
+
path: string;
|
|
564
|
+
version: number;
|
|
565
|
+
}) => string;
|
|
566
|
+
readonly "cli.update.commitSupersedesNull": "update: --commit report has `supersedes: null`. update finalizes a v+1 (use `radar research --commit` for a v1).";
|
|
567
|
+
readonly "cli.update.wrote": ({ path }: {
|
|
568
|
+
path: string;
|
|
569
|
+
}) => string;
|
|
570
|
+
readonly "cli.update.supersedes": ({ prevId }: {
|
|
571
|
+
prevId: string;
|
|
572
|
+
}) => string;
|
|
573
|
+
readonly "cli.source.missingId": ({ sub }: {
|
|
574
|
+
sub: string;
|
|
575
|
+
}) => string;
|
|
576
|
+
readonly "cli.source.invalidId": ({ sub, id }: {
|
|
577
|
+
sub: string;
|
|
578
|
+
id: string;
|
|
579
|
+
}) => string;
|
|
580
|
+
readonly "cli.source.kindRequired": "source add: --kind is required";
|
|
581
|
+
readonly "cli.source.urlRequired": "source add: --url is required";
|
|
582
|
+
readonly "cli.source.invalidKind": ({ kind }: {
|
|
583
|
+
kind: string;
|
|
584
|
+
}) => string;
|
|
585
|
+
readonly "cli.source.paginationOnlyJsonApi": ({ kind }: {
|
|
586
|
+
kind: string;
|
|
587
|
+
}) => string;
|
|
588
|
+
readonly "cli.source.validationFailed": "source add: validation failed";
|
|
589
|
+
readonly "cli.source.recipeForbiddenFlags": ({ recipe, flags, }: {
|
|
590
|
+
recipe: string;
|
|
591
|
+
flags: string;
|
|
592
|
+
}) => string;
|
|
593
|
+
readonly "cli.source.recipeInvalidSource": ({ recipe }: {
|
|
594
|
+
recipe: string;
|
|
595
|
+
}) => string;
|
|
596
|
+
readonly "cli.source.alreadyExists": ({ id }: {
|
|
597
|
+
id: string;
|
|
598
|
+
}) => string;
|
|
599
|
+
readonly "cli.source.created": ({ id }: {
|
|
600
|
+
id: string;
|
|
601
|
+
}) => string;
|
|
602
|
+
readonly "cli.source.createdFromRecipe": ({ id, recipe }: {
|
|
603
|
+
id: string;
|
|
604
|
+
recipe: string;
|
|
605
|
+
}) => string;
|
|
606
|
+
readonly "cli.source.noKeywordsWarn": ({ id }: {
|
|
607
|
+
id: string;
|
|
608
|
+
}) => string;
|
|
609
|
+
readonly "cli.source.noKeywordsWarnRecipe": ({ id }: {
|
|
610
|
+
id: string;
|
|
611
|
+
}) => string;
|
|
612
|
+
readonly "cli.source.listNoDir": "source list: no sources directory (run `radar init` first)";
|
|
613
|
+
readonly "cli.source.listNoSources": "source list: no sources defined (use `radar source add ...`)";
|
|
614
|
+
readonly "cli.source.removeNotFound": ({ id }: {
|
|
615
|
+
id: string;
|
|
616
|
+
}) => string;
|
|
617
|
+
readonly "cli.source.deleted": ({ id }: {
|
|
618
|
+
id: string;
|
|
619
|
+
}) => string;
|
|
620
|
+
readonly "cli.source.testNotFound": ({ id }: {
|
|
621
|
+
id: string;
|
|
622
|
+
}) => string;
|
|
623
|
+
readonly "cli.source.recipesNone": "source recipes: no recipes bundled (recipes/ is empty or absent)";
|
|
624
|
+
readonly "cli.source.unknownSubcommand": ({ sub }: {
|
|
625
|
+
sub: string;
|
|
626
|
+
}) => string;
|
|
627
|
+
readonly "cli.triage.modesExclusive": "--dry-run / --apply / --interactive are mutually exclusive";
|
|
628
|
+
readonly "cli.triage.verboseQuietExclusive": "--verbose and --quiet are mutually exclusive";
|
|
629
|
+
readonly "cli.triage.commitIncompatibleModes": "triage: --commit is incompatible with --dry-run / --apply / --interactive";
|
|
630
|
+
readonly "cli.triage.commitIncompatibleEmitPayload": "triage: --commit is incompatible with --emit-payload";
|
|
631
|
+
readonly "cli.triage.emitPayloadIncompatibleModes": "triage: --emit-payload is incompatible with --dry-run / --apply / --interactive";
|
|
632
|
+
readonly "cli.triage.emitPayloadSingleSource": ({ count, sources, }: {
|
|
633
|
+
count: number;
|
|
634
|
+
sources: string;
|
|
635
|
+
}) => string;
|
|
636
|
+
readonly "cli.triage.invalidTriageAgent": ({ agent }: {
|
|
637
|
+
agent: string;
|
|
638
|
+
}) => string;
|
|
639
|
+
readonly "cli.triage.noSourcesDir": "triage: no sources/ directory (run `radar init` first)";
|
|
640
|
+
readonly "cli.triage.noSourcesDefined": "triage: no sources defined; nothing to triage";
|
|
641
|
+
readonly "cli.triage.noItemsDir": "triage: no items/ directory; nothing to triage";
|
|
642
|
+
readonly "cli.triage.noDetectedMatch": "triage: no detected items match the filter (nothing to do)";
|
|
643
|
+
readonly "cli.triage.maxItemsExceeded": ({ detected, maxItems, }: {
|
|
644
|
+
detected: number;
|
|
645
|
+
maxItems: number;
|
|
646
|
+
}) => string;
|
|
647
|
+
readonly "cli.triage.skippingNoPolicy": ({ count, sourceId, }: {
|
|
648
|
+
count: number;
|
|
649
|
+
sourceId: string;
|
|
650
|
+
}) => string;
|
|
651
|
+
readonly "cli.triage.noItemsTriaged": "triage: no items were triaged (all sources skipped)";
|
|
652
|
+
readonly "cli.triage.dryRunNoChanges": "triage: dry-run — no changes written";
|
|
653
|
+
readonly "cli.triage.abortedByUser": "triage: aborted by user";
|
|
654
|
+
readonly "cli.triage.applied": ({ count }: {
|
|
655
|
+
count: number;
|
|
656
|
+
}) => string;
|
|
657
|
+
readonly "cli.triage.committed": ({ count, sourceId }: {
|
|
658
|
+
count: number;
|
|
659
|
+
sourceId: string;
|
|
660
|
+
}) => string;
|
|
661
|
+
readonly "cli.triage.decisionsFileNotFound": ({ path }: {
|
|
662
|
+
path: string;
|
|
663
|
+
}) => string;
|
|
664
|
+
readonly "cli.triage.unknownSource": ({ sourceId }: {
|
|
665
|
+
sourceId: string;
|
|
666
|
+
}) => string;
|
|
667
|
+
readonly "cli.triage.sourceNoPolicy": ({ sourceId }: {
|
|
668
|
+
sourceId: string;
|
|
669
|
+
}) => string;
|
|
670
|
+
readonly "cli.triage.noItemsDirCommit": "triage: no items/ directory; nothing to commit";
|
|
671
|
+
readonly "cli.triage.noDetectedForSource": ({ sourceId }: {
|
|
672
|
+
sourceId: string;
|
|
673
|
+
}) => string;
|
|
674
|
+
readonly "cli.triage.invalidDecisionsAgent": ({ agent }: {
|
|
675
|
+
agent: string;
|
|
676
|
+
}) => string;
|
|
677
|
+
readonly "cli.triage.feedbackMissingItemId": "triage feedback: missing <item-id>";
|
|
678
|
+
readonly "cli.triage.feedbackModesExclusive": "triage feedback: --correct and --wrong are mutually exclusive";
|
|
679
|
+
readonly "cli.triage.feedbackModeRequired": "triage feedback: one of --correct | --wrong is required";
|
|
680
|
+
readonly "cli.triage.feedbackItemsDirNotFound": "triage feedback: items/ not found (run `radar init`)";
|
|
681
|
+
readonly "cli.triage.feedbackItemNotFound": ({ id }: {
|
|
682
|
+
id: string;
|
|
683
|
+
}) => string;
|
|
684
|
+
readonly "cli.triage.feedbackNoPriorDecision": ({ id }: {
|
|
685
|
+
id: string;
|
|
686
|
+
}) => string;
|
|
687
|
+
readonly "cli.triage.feedbackRecorded": ({ sourceId, id, verdict, }: {
|
|
688
|
+
sourceId: string;
|
|
689
|
+
id: string;
|
|
690
|
+
verdict: string;
|
|
691
|
+
}) => string;
|
|
692
|
+
readonly "cli.triage.statsInvalidSince": ({ since }: {
|
|
693
|
+
since: string;
|
|
694
|
+
}) => string;
|
|
695
|
+
readonly "cli.triage.statsNoItemsDir": "triage stats: no items/ directory (run `radar init` first)";
|
|
696
|
+
readonly "cli.triage.statsNoMatch": "triage stats: no triaged items match the filter (nothing to report)";
|
|
697
|
+
readonly "cli.init.help": "Usage: radar init [--lang <en|ja>] [--force] [--with-routines] [--with-actions]\n [--no-claude-skills] [--no-gemini-commands]\n [--no-agents-md] [--no-claude-md] [--no-templates]\n [--no-feedradar-md]\n\nCreates the workspace directories and copies bundled skills:\n - Engine SKILLs (SSoT): .agents/skills/{research,review,update}/SKILL.md\n - Claude Code slash-command wrappers: .claude/skills/{research,review,update,dismiss}/SKILL.md\n - Gemini CLI slash commands: .gemini/commands/{research,review,update,dismiss}.toml\n - Agent-agnostic instructions: AGENTS.md (auto-read by Codex / Gemini / Copilot)\n - Claude Code workspace instructions: CLAUDE.md (imports @AGENTS.md so Claude reads it)\n - Starter report templates: templates/default.md (single item) and templates/digest.md (multi-item digest)\n - Human-facing workspace guide: FEEDRADAR.md (natural-language / slash usage)\n\nOptions:\n --lang <en|ja> Language for generated report templates and workspace docs\n (default: en; also honors RADAR_LANG; persisted to radar.config.yaml)\n --force Overwrite existing files\n --with-routines Generate .claude/routines/watch-daily.yaml (Claude Routines scaffold)\n --with-actions Generate .github/workflows/watch.yaml (GitHub Actions cron scaffold)\n --no-claude-skills Skip writing slash-command wrappers to .claude/skills/\n (useful if @ozzylabs/skills Renovate preset manages that directory)\n --no-gemini-commands Skip writing Gemini CLI slash commands to .gemini/commands/\n (engine SKILLs still serve interactive Gemini via dual-mode)\n --no-agents-md Skip writing AGENTS.md at the workspace root\n (useful if the workspace already has its own AGENTS.md;\n implies --no-claude-md since the bundled CLAUDE.md imports @AGENTS.md)\n --no-claude-md Skip writing CLAUDE.md at the workspace root\n (useful if the workspace already has its own CLAUDE.md)\n --no-templates Skip writing templates/default.md and templates/digest.md\n (research engine SKILL falls back to its built-in structure)\n --no-feedradar-md Skip writing FEEDRADAR.md at the workspace root\n (useful if the workspace already has its own user-facing docs)";
|
|
698
|
+
readonly "cli.workflow.unknownSubcommand": ({ sub }: {
|
|
699
|
+
sub: string;
|
|
700
|
+
}) => string;
|
|
701
|
+
readonly "cli.workflow.unknownType": ({ type }: {
|
|
702
|
+
type: string;
|
|
703
|
+
}) => string;
|
|
704
|
+
readonly "cli.routine.unknownSubcommand": ({ sub }: {
|
|
705
|
+
sub: string;
|
|
706
|
+
}) => string;
|
|
707
|
+
readonly "cli.routine.unknownType": ({ type }: {
|
|
708
|
+
type: string;
|
|
709
|
+
}) => string;
|
|
710
|
+
readonly "cli.workflow.generateWatchWrote": ({ path }: {
|
|
711
|
+
path: string;
|
|
712
|
+
}) => string;
|
|
713
|
+
readonly "cli.workflow.generateWatchSummary": ({ cron, agent }: {
|
|
714
|
+
cron: string;
|
|
715
|
+
agent: string;
|
|
716
|
+
}) => string;
|
|
717
|
+
readonly "cli.workflow.generateWatchOverwriting": ({ path }: {
|
|
718
|
+
path: string;
|
|
719
|
+
}) => string;
|
|
720
|
+
readonly "cli.workflow.requiredSecretsHeading": "Required GitHub Actions secrets (Settings → Secrets and variables → Actions):";
|
|
721
|
+
readonly "cli.workflow.secretCopilotToken": " GITHUB_TOKEN — auto-provisioned by GitHub Actions (no manual setup needed)";
|
|
722
|
+
readonly "cli.workflow.secretAgentKey": ({ envKey, agent }: {
|
|
723
|
+
envKey: string;
|
|
724
|
+
agent: string;
|
|
725
|
+
}) => string;
|
|
726
|
+
readonly "cli.workflow.secretGithubTokenAuto": " GITHUB_TOKEN — auto-provisioned by GitHub Actions (no manual setup needed)";
|
|
727
|
+
readonly "cli.workflow.generateCombinedWrote": ({ path }: {
|
|
728
|
+
path: string;
|
|
729
|
+
}) => string;
|
|
730
|
+
readonly "cli.workflow.generateCombinedOverwriting": ({ path }: {
|
|
731
|
+
path: string;
|
|
732
|
+
}) => string;
|
|
733
|
+
readonly "cli.workflow.detailAgent": ({ agent }: {
|
|
734
|
+
agent: string;
|
|
735
|
+
}) => string;
|
|
736
|
+
readonly "cli.workflow.detailCron": ({ cron }: {
|
|
737
|
+
cron: string;
|
|
738
|
+
}) => string;
|
|
739
|
+
readonly "cli.workflow.detailMaxItems": ({ maxItems }: {
|
|
740
|
+
maxItems: number;
|
|
741
|
+
}) => string;
|
|
742
|
+
readonly "cli.workflow.detailFilterTags": ({ tags }: {
|
|
743
|
+
tags: string;
|
|
744
|
+
}) => string;
|
|
745
|
+
readonly "cli.workflow.filterTagsNone": "(none)";
|
|
746
|
+
readonly "cli.workflow.maxItemsCapWarning": ({ cmd }: {
|
|
747
|
+
cmd: string;
|
|
748
|
+
}) => string;
|
|
749
|
+
readonly "cli.workflow.generateCombinedWithTriageWrote": ({ path }: {
|
|
750
|
+
path: string;
|
|
751
|
+
}) => string;
|
|
752
|
+
readonly "cli.workflow.generateCombinedWithTriageOverwriting": ({ path }: {
|
|
753
|
+
path: string;
|
|
754
|
+
}) => string;
|
|
755
|
+
readonly "cli.workflow.detailWatchCron": ({ cron }: {
|
|
756
|
+
cron: string;
|
|
757
|
+
}) => string;
|
|
758
|
+
readonly "cli.workflow.detailTriageAgent": ({ agent }: {
|
|
759
|
+
agent: string;
|
|
760
|
+
}) => string;
|
|
761
|
+
readonly "cli.workflow.detailResearchAgent": ({ agent }: {
|
|
762
|
+
agent: string;
|
|
763
|
+
}) => string;
|
|
764
|
+
readonly "cli.workflow.detailReviewAgent": ({ agent }: {
|
|
765
|
+
agent: string;
|
|
766
|
+
}) => string;
|
|
767
|
+
readonly "cli.workflow.detailMaxItemsWide": ({ maxItems }: {
|
|
768
|
+
maxItems: number;
|
|
769
|
+
}) => string;
|
|
770
|
+
readonly "cli.workflow.detailOutputMode": ({ mode }: {
|
|
771
|
+
mode: string;
|
|
772
|
+
}) => string;
|
|
773
|
+
readonly "cli.workflow.detailSlackWebhook": ({ webhook }: {
|
|
774
|
+
webhook: string;
|
|
775
|
+
}) => string;
|
|
776
|
+
readonly "cli.workflow.slackWebhookNone": "(none — notify step no-ops)";
|
|
777
|
+
readonly "cli.workflow.secretsNoneAutoToken": " (none — every selected agent rides the auto-provisioned GITHUB_TOKEN)";
|
|
778
|
+
readonly "cli.workflow.secretGithubTokenAutoNoSetup": " GITHUB_TOKEN (auto-provisioned, no setup needed)";
|
|
779
|
+
readonly "cli.routine.generateWatchWrote": ({ path }: {
|
|
780
|
+
path: string;
|
|
781
|
+
}) => string;
|
|
782
|
+
readonly "cli.routine.generateWatchSummary": ({ name, repo, cron, model, }: {
|
|
783
|
+
name: string;
|
|
784
|
+
repo: string;
|
|
785
|
+
cron: string;
|
|
786
|
+
model: string;
|
|
787
|
+
}) => string;
|
|
788
|
+
readonly "cli.routine.generateWatchOverwriting": ({ path }: {
|
|
789
|
+
path: string;
|
|
790
|
+
}) => string;
|
|
791
|
+
readonly "cli.routine.generatePipelineWrote": ({ path }: {
|
|
792
|
+
path: string;
|
|
793
|
+
}) => string;
|
|
794
|
+
readonly "cli.routine.generatePipelineSummary": ({ name, repo, cron, model, maxItems, outputMode, }: {
|
|
795
|
+
name: string;
|
|
796
|
+
repo: string;
|
|
797
|
+
cron: string;
|
|
798
|
+
model: string;
|
|
799
|
+
maxItems: number;
|
|
800
|
+
outputMode: string;
|
|
801
|
+
}) => string;
|
|
802
|
+
readonly "cli.routine.generatePipelineOverwriting": ({ path }: {
|
|
803
|
+
path: string;
|
|
804
|
+
}) => string;
|
|
805
|
+
readonly "cli.routine.autoMergeWarning": ({ cmd }: {
|
|
806
|
+
cmd: string;
|
|
807
|
+
}) => string;
|
|
808
|
+
readonly "cli.routine.pasteNoApi": "Routines has no declarative apply API — paste this routine into the Web UI by hand:";
|
|
809
|
+
readonly "cli.routine.pasteStep1": " 1. Open https://claude.ai/code/routines and click New routine.";
|
|
810
|
+
readonly "cli.routine.pasteStep2": " 2. Fill the form fields from the YAML (Name / Model / Repositories / Trigger / Permissions).";
|
|
811
|
+
readonly "cli.routine.pasteStep3": " 3. For the multi-line Instructions and Setup script fields, extract them with yq:";
|
|
812
|
+
readonly "cli.routine.pasteYqInstructions": ({ path }: {
|
|
813
|
+
path: string;
|
|
814
|
+
}) => string;
|
|
815
|
+
readonly "cli.routine.pasteYqSetupScript": ({ path }: {
|
|
816
|
+
path: string;
|
|
817
|
+
}) => string;
|
|
818
|
+
readonly "cli.routine.pasteStep3Bootstrap": " 3. For the Instructions field, paste this SHORT bootstrap prompt (prompt-mode bootstrap):";
|
|
819
|
+
readonly "cli.routine.bootstrapPromptLine1": ({ name }: {
|
|
820
|
+
name: string;
|
|
821
|
+
}) => string;
|
|
822
|
+
readonly "cli.routine.bootstrapPromptLine2": ({ path }: {
|
|
823
|
+
path: string;
|
|
824
|
+
}) => string;
|
|
825
|
+
readonly "cli.routine.bootstrapPromptLine3": " `instructions:` block. Run autonomously: AskUserQuestion is NOT available,";
|
|
826
|
+
readonly "cli.routine.bootstrapPromptLine4": " and local MCP servers are NOT available in this environment.";
|
|
827
|
+
readonly "cli.routine.pasteStep3BootstrapSetup": " For the multi-line Setup script field, extract it with yq:";
|
|
828
|
+
readonly "cli.routine.bootstrapReuseNote": " (bootstrap prompt: future instructions edits land via repo commits — no Web UI re-paste needed.)";
|
|
829
|
+
readonly "cli.routine.pasteStep4": " 4. After registering, copy the issued routine_id (trig_xxxx) back into the YAML and set status: active.";
|
|
830
|
+
readonly "cli.routine.scheduleNote1": "Note on /schedule (Claude Code): it is conversational — `/schedule <description>`";
|
|
831
|
+
readonly "cli.routine.scheduleNote2": "to create one, plus `list` / `update` / `run` subcommands. There is no flag-based";
|
|
832
|
+
readonly "cli.routine.scheduleNote3": "form (no `--name` / `--cron` / `--repo` arguments). It also cannot ingest this YAML";
|
|
833
|
+
readonly "cli.routine.scheduleNote4": "verbatim, so for the long Instructions field the Web UI paste flow above (yq";
|
|
834
|
+
readonly "cli.routine.scheduleNote5": "extraction) is the practical path. Finally, the unrestricted-git-push permission an";
|
|
835
|
+
readonly "cli.routine.scheduleNote6": "auto-merge routine needs is set only via the Web UI 'Allow unrestricted branch";
|
|
836
|
+
readonly "cli.routine.scheduleNote7": "pushes' toggle — /schedule cannot configure it.";
|
|
837
|
+
readonly "cli.routine.outputGateBranchPr": "Output gate: this routine writes to a claude/* branch / PR only — never main directly.";
|
|
838
|
+
readonly "cli.routine.outputGateAutoMerge": "Output gate: this routine opens a claude/* PR then squash-merges it to main (review-complete via step 6).";
|
|
839
|
+
readonly "cli.routine.pipelineNoSpawn1": "Single Claude session, no spawn: unlike the GHA combined-with-triage";
|
|
840
|
+
readonly "cli.routine.pipelineNoSpawn2": "workflow, there is NO cross-agent review here — one Claude does every step.";
|
|
841
|
+
readonly "cli.routine.pipelineItemCaps": ({ maxItems }: {
|
|
842
|
+
maxItems: number;
|
|
843
|
+
}) => string;
|
|
844
|
+
readonly "cli.routine.fireTriggered": ({ routineId, status, }: {
|
|
845
|
+
routineId: string;
|
|
846
|
+
status: number;
|
|
847
|
+
}) => string;
|
|
848
|
+
readonly "cli.routine.fireSessionCreated": "The session was created — this call does not wait for it to finish.";
|
|
849
|
+
readonly "cli.init.bundledSkillNotFound": ({ src }: {
|
|
850
|
+
src: string;
|
|
851
|
+
}) => string;
|
|
852
|
+
readonly "cli.init.bundledClaudeSkillNotFound": ({ src }: {
|
|
853
|
+
src: string;
|
|
854
|
+
}) => string;
|
|
855
|
+
readonly "cli.init.bundledGeminiCommandNotFound": ({ src }: {
|
|
856
|
+
src: string;
|
|
857
|
+
}) => string;
|
|
858
|
+
readonly "cli.init.bundledTemplateNotFound": ({ src }: {
|
|
859
|
+
src: string;
|
|
860
|
+
}) => string;
|
|
861
|
+
readonly "cli.init.skippedExisting": ({ file }: {
|
|
862
|
+
file: string;
|
|
863
|
+
}) => string;
|
|
864
|
+
readonly "cli.init.skippedClaudeMdNoAgentsMd": "init: skipped CLAUDE.md because --no-agents-md was passed (the bundled CLAUDE.md imports @AGENTS.md and would dangle)";
|
|
865
|
+
readonly "cli.init.configLocaleNotYaml": ({ file, reason }: {
|
|
866
|
+
file: string;
|
|
867
|
+
reason: string;
|
|
868
|
+
}) => string;
|
|
869
|
+
readonly "cli.init.configLocaleNotMapping": ({ file }: {
|
|
870
|
+
file: string;
|
|
871
|
+
}) => string;
|
|
872
|
+
readonly "cli.init.configLocaleSkippedUpdate": ({ file, current, locale, }: {
|
|
873
|
+
file: string;
|
|
874
|
+
current: string;
|
|
875
|
+
locale: string;
|
|
876
|
+
}) => string;
|
|
877
|
+
readonly "cli.source.fieldKind": ({ value }: {
|
|
878
|
+
value: string;
|
|
879
|
+
}) => string;
|
|
880
|
+
readonly "cli.source.fieldUrl": ({ value }: {
|
|
881
|
+
value: string;
|
|
882
|
+
}) => string;
|
|
883
|
+
readonly "cli.source.fieldName": ({ value }: {
|
|
884
|
+
value: string;
|
|
885
|
+
}) => string;
|
|
886
|
+
readonly "cli.source.fieldTags": ({ value }: {
|
|
887
|
+
value: string;
|
|
888
|
+
}) => string;
|
|
889
|
+
readonly "cli.source.fieldKeywords": ({ value }: {
|
|
890
|
+
value: string;
|
|
891
|
+
}) => string;
|
|
892
|
+
readonly "cli.source.fieldExcludeKeywords": ({ value }: {
|
|
893
|
+
value: string;
|
|
894
|
+
}) => string;
|
|
895
|
+
readonly "cli.source.fieldTrustLevel": ({ value }: {
|
|
896
|
+
value: string;
|
|
897
|
+
}) => string;
|
|
898
|
+
readonly "cli.source.fieldLastFetchedAt": ({ value }: {
|
|
899
|
+
value: string;
|
|
900
|
+
}) => string;
|
|
901
|
+
readonly "cli.source.keywordsEmpty": "(none — items will be filtered out)";
|
|
902
|
+
readonly "cli.source.valueNone": "-";
|
|
903
|
+
readonly "cli.source.listHeaderId": "ID";
|
|
904
|
+
readonly "cli.source.listHeaderKind": "KIND";
|
|
905
|
+
readonly "cli.source.listHeaderUrl": "URL";
|
|
906
|
+
readonly "cli.source.listHeaderTags": "TAGS";
|
|
907
|
+
readonly "cli.source.testHeading": ({ id }: {
|
|
908
|
+
id: string;
|
|
909
|
+
}) => string;
|
|
910
|
+
readonly "cli.source.testCounts": ({ fetched, filtered, matched, }: {
|
|
911
|
+
fetched: number;
|
|
912
|
+
filtered: number;
|
|
913
|
+
matched: number;
|
|
914
|
+
}) => string;
|
|
915
|
+
readonly "cli.source.facetSweepNotice": ({ facet, testedValue, totalValues, }: {
|
|
916
|
+
facet: string;
|
|
917
|
+
testedValue: string | number;
|
|
918
|
+
totalValues: number;
|
|
919
|
+
}) => string;
|
|
920
|
+
readonly "cli.source.selectorAdoptionHeading": " selector adoption:";
|
|
921
|
+
readonly "cli.source.selectorNoCandidate": ({ field }: {
|
|
922
|
+
field: string;
|
|
923
|
+
}) => string;
|
|
924
|
+
readonly "cli.source.selectorAdopted": ({ field, path }: {
|
|
925
|
+
field: string;
|
|
926
|
+
path: string;
|
|
927
|
+
}) => string;
|
|
928
|
+
readonly "cli.source.paginationPreviewHeading": " pagination preview (page 0 only — state not mutated):";
|
|
929
|
+
readonly "cli.source.paginationStrategy": ({ strategy }: {
|
|
930
|
+
strategy: string;
|
|
931
|
+
}) => string;
|
|
932
|
+
readonly "cli.source.paginationNextUrl": ({ nextUrl }: {
|
|
933
|
+
nextUrl: string;
|
|
934
|
+
}) => string;
|
|
935
|
+
readonly "cli.source.paginationEndOfPagination": "(end of pagination)";
|
|
936
|
+
readonly "cli.source.paginationLinkNext": ({ value }: {
|
|
937
|
+
value: string;
|
|
938
|
+
}) => string;
|
|
939
|
+
readonly "cli.source.paginationNextCursor": ({ value }: {
|
|
940
|
+
value: string;
|
|
941
|
+
}) => string;
|
|
942
|
+
readonly "cli.source.paginationAbsent": "(absent)";
|
|
943
|
+
readonly "cli.source.testNoMatched": " (no matched items)";
|
|
944
|
+
readonly "cli.source.testShowing": ({ shown, total }: {
|
|
945
|
+
shown: number;
|
|
946
|
+
total: number;
|
|
947
|
+
}) => string;
|
|
948
|
+
readonly "cli.source.testItemTitle": ({ index, title }: {
|
|
949
|
+
index: number;
|
|
950
|
+
title: string;
|
|
951
|
+
}) => string;
|
|
952
|
+
readonly "cli.source.testItemUrl": ({ url }: {
|
|
953
|
+
url: string;
|
|
954
|
+
}) => string;
|
|
955
|
+
readonly "cli.source.testItemMatchedKeywords": ({ value }: {
|
|
956
|
+
value: string;
|
|
957
|
+
}) => string;
|
|
958
|
+
readonly "cli.source.testItemMatchedFields": ({ value }: {
|
|
959
|
+
value: string;
|
|
960
|
+
}) => string;
|
|
961
|
+
readonly "cli.source.testItemContent": ({ value }: {
|
|
962
|
+
value: string;
|
|
963
|
+
}) => string;
|
|
964
|
+
readonly "cli.source.testMoreItems": ({ count }: {
|
|
965
|
+
count: number;
|
|
966
|
+
}) => string;
|
|
967
|
+
readonly "cli.source.recipesNoValid": "source recipes: no valid recipes found (all bundled entries failed to load)";
|
|
968
|
+
readonly "cli.source.recipesHeaderName": "NAME";
|
|
969
|
+
readonly "cli.source.recipesHeaderKind": "KIND";
|
|
970
|
+
readonly "cli.source.recipesHeaderDescription": "DESCRIPTION";
|
|
971
|
+
readonly "cli.source.recipesErrorsHeading": "Recipes with errors:";
|
|
972
|
+
readonly "cli.source.recipesErrorRow": ({ name, error }: {
|
|
973
|
+
name: string;
|
|
974
|
+
error: string;
|
|
975
|
+
}) => string;
|
|
976
|
+
readonly "cli.source.recipesErrorUnknown": "(unknown error)";
|
|
977
|
+
readonly "cli.source.recipesApplyHeading": "Apply a recipe with:";
|
|
978
|
+
readonly "cli.source.recipesApplyExample": " radar source add <id> --recipe <name> [--keywords <kw>] [--tags <t>] [--name <display>]";
|
|
979
|
+
readonly "cli.triage.progressTriaging": ({ count, sourceId, agent, }: {
|
|
980
|
+
count: number;
|
|
981
|
+
sourceId: string;
|
|
982
|
+
agent: string;
|
|
983
|
+
}) => string;
|
|
984
|
+
readonly "cli.triage.confirmApply": "Apply these decisions? [y/N]";
|
|
985
|
+
/** `radar state` / `radar state prune` help text. */
|
|
986
|
+
readonly "cli.state.help": "Usage: radar state prune <source> --keep <N>\n\nTrim state/<source>.yaml lastSeenIds to its newest N ids (FIFO; oldest dropped first).\nUse it to shrink a state file that has already grown large from facet sweeps.\n\nOptions:\n --keep <N> Keep the newest N ids; drop the rest (required)\n --older-than <dur> Not supported (lastSeenIds carries no per-id timestamps)\n -h, --help Show this help";
|
|
987
|
+
/** stderr line when arg parsing fails (unknown flag / missing value). */
|
|
988
|
+
readonly "cli.state.parseError": ({ reason }: {
|
|
989
|
+
reason: string;
|
|
990
|
+
}) => string;
|
|
991
|
+
/** stderr line for an unrecognized `state` subcommand. */
|
|
992
|
+
readonly "cli.state.unknownSubcommand": ({ sub }: {
|
|
993
|
+
sub: string;
|
|
994
|
+
}) => string;
|
|
995
|
+
/** stderr line when `<source>` positional is missing. */
|
|
996
|
+
readonly "cli.state.missingSource": "state prune: missing <source>";
|
|
997
|
+
/** stderr line when neither `--keep` nor a supported mode is given. */
|
|
998
|
+
readonly "cli.state.keepRequired": "state prune: --keep <N> is required";
|
|
999
|
+
/** stderr line when `--older-than` is used (deliberately unimplemented). */
|
|
1000
|
+
readonly "cli.state.olderThanUnsupported": "state prune: --older-than is not supported (lastSeenIds carries no per-id timestamps); use --keep <N>";
|
|
1001
|
+
/** stderr line when `--keep` is not an integer. */
|
|
1002
|
+
readonly "cli.state.invalidKeepInteger": ({ raw }: {
|
|
1003
|
+
raw: string;
|
|
1004
|
+
}) => string;
|
|
1005
|
+
/** stderr line when `--keep` is not a positive integer. */
|
|
1006
|
+
readonly "cli.state.invalidKeepPositive": ({ raw }: {
|
|
1007
|
+
raw: string;
|
|
1008
|
+
}) => string;
|
|
1009
|
+
/** stderr line when state/<source>.yaml does not exist. */
|
|
1010
|
+
readonly "cli.state.sourceNotFound": ({ sourceId }: {
|
|
1011
|
+
sourceId: string;
|
|
1012
|
+
}) => string;
|
|
1013
|
+
/** Summary line when the list is already within the keep window (no write). */
|
|
1014
|
+
readonly "cli.state.pruneNoop": ({ sourceId, count, keep, }: {
|
|
1015
|
+
sourceId: string;
|
|
1016
|
+
count: number;
|
|
1017
|
+
keep: number;
|
|
1018
|
+
}) => string;
|
|
1019
|
+
/** Summary line after a successful trim + write. */
|
|
1020
|
+
readonly "cli.state.pruneDone": ({ sourceId, before, after, dropped, }: {
|
|
1021
|
+
sourceId: string;
|
|
1022
|
+
before: number;
|
|
1023
|
+
after: number;
|
|
1024
|
+
dropped: number;
|
|
1025
|
+
}) => string;
|
|
1026
|
+
};
|
|
1027
|
+
/** Union of all valid message keys. */
|
|
1028
|
+
export type MessageKey = keyof typeof en;
|
|
1029
|
+
/**
|
|
1030
|
+
* Widen a single English catalog entry into the shape every locale must
|
|
1031
|
+
* satisfy for that key. The `as const` on {@link en} narrows string entries to
|
|
1032
|
+
* *literal* types ("Show this help"), which would force `ja` to repeat the
|
|
1033
|
+
* English text verbatim — so we widen string entries back to `string` while
|
|
1034
|
+
* preserving function entries' precise param/return signature (that is the
|
|
1035
|
+
* part that must stay identical across locales, since `t`'s param type is
|
|
1036
|
+
* derived from it).
|
|
1037
|
+
*/
|
|
1038
|
+
type LocaleEntry<T> = T extends (...args: infer A) => infer R ? (...args: A) => R : string;
|
|
1039
|
+
/**
|
|
1040
|
+
* The catalog shape every locale must satisfy. Derived from the English
|
|
1041
|
+
* catalog so that `ja` (and any future locale) is required — at compile time —
|
|
1042
|
+
* to provide the exact same key set, with string entries free to differ in
|
|
1043
|
+
* wording but function entries pinned to the same param/return shape.
|
|
1044
|
+
*/
|
|
1045
|
+
export type Messages = {
|
|
1046
|
+
[K in MessageKey]: LocaleEntry<(typeof en)[K]>;
|
|
1047
|
+
};
|
|
1048
|
+
export {};
|
|
1049
|
+
//# sourceMappingURL=en.d.ts.map
|