@ozzylabs/feedradar 0.2.0 → 0.2.2
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 +79 -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 +70 -1
- package/dist/cli/routine/generate-pipeline.d.ts.map +1 -1
- package/dist/cli/routine/generate-pipeline.js +273 -44
- package/dist/cli/routine/generate-pipeline.js.map +1 -1
- package/dist/cli/routine/generate-watch.d.ts +10 -1
- package/dist/cli/routine/generate-watch.d.ts.map +1 -1
- package/dist/cli/routine/generate-watch.js +49 -37
- 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 +206 -182
- package/dist/cli/source.js.map +1 -1
- 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/types.d.ts +9 -0
- package/dist/core/feeds/types.d.ts.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/watcher.d.ts +11 -0
- package/dist/core/watcher.d.ts.map +1 -1
- package/dist/core/watcher.js +21 -5
- 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 +993 -0
- package/dist/i18n/messages/en.d.ts.map +1 -0
- package/dist/i18n/messages/en.js +1096 -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 +970 -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/recipe.d.ts +1 -1
- package/dist/schemas/source.d.ts +3 -3
- 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 +30 -41
- 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 +211 -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
package/dist/cli/doctor.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { access, constants } from "node:fs/promises";
|
|
2
2
|
import { delimiter, join } from "node:path";
|
|
3
3
|
import { loadRadarConfig, RadarConfigError } from "../core/config.js";
|
|
4
|
+
import { applyZodLocale } from "../core/locale.js";
|
|
4
5
|
import { CHROMIUM_MISSING_HINT, PLAYWRIGHT_MODULE_MISSING_HINT, probePlaywright, } from "../core/playwright-check.js";
|
|
5
6
|
import { detectProxyUrl, maskProxyUrl } from "../core/proxy.js";
|
|
6
7
|
import { loadSources } from "../core/watcher.js";
|
|
8
|
+
import { createTranslator } from "../i18n/index.js";
|
|
9
|
+
import { LangFlagError, parseLangFlag, resolveWorkspaceLocale } from "./_locale.js";
|
|
7
10
|
/**
|
|
8
11
|
* Agent CLIs the `doctor` command probes for. Order matches the AgentId enum
|
|
9
12
|
* declaration so the output is deterministic across runs and easy to scan.
|
|
@@ -110,6 +113,11 @@ export async function runDoctorChecks(options = {}) {
|
|
|
110
113
|
const cwd = options.cwd ?? process.cwd();
|
|
111
114
|
const env = options.env ?? process.env;
|
|
112
115
|
const whichImpl = options.whichImpl ?? defaultWhich;
|
|
116
|
+
// Resolve the UI locale so the diagnostic lines are localized. doctor is a
|
|
117
|
+
// user-facing health check (#312), so its check messages + summary go through
|
|
118
|
+
// the translator. A test seam (`options.t`) lets callers inject a translator
|
|
119
|
+
// directly; otherwise the locale is resolved from --lang / env / config.
|
|
120
|
+
const t = options.t ?? createTranslator(await resolveWorkspaceLocale({ flag: undefined, cwd }));
|
|
113
121
|
const checks = [];
|
|
114
122
|
// 1. Workspace directories. Each missing dir is a `warn` — the user may
|
|
115
123
|
// not need every directory yet (e.g. `research/` is empty until after
|
|
@@ -121,14 +129,14 @@ export async function runDoctorChecks(options = {}) {
|
|
|
121
129
|
checks.push({
|
|
122
130
|
id: `workspace:${dir}`,
|
|
123
131
|
status: "ok",
|
|
124
|
-
message:
|
|
132
|
+
message: t("cli.doctor.workspaceDirExists", { dir }),
|
|
125
133
|
});
|
|
126
134
|
}
|
|
127
135
|
else {
|
|
128
136
|
checks.push({
|
|
129
137
|
id: `workspace:${dir}`,
|
|
130
138
|
status: "warn",
|
|
131
|
-
message:
|
|
139
|
+
message: t("cli.doctor.workspaceDirMissing", { dir }),
|
|
132
140
|
});
|
|
133
141
|
}
|
|
134
142
|
}
|
|
@@ -137,19 +145,19 @@ export async function runDoctorChecks(options = {}) {
|
|
|
137
145
|
// because `radar` itself fails on every invocation when the config
|
|
138
146
|
// parses but mismatches the schema — see `core/config.ts#loadRadarConfig`.
|
|
139
147
|
try {
|
|
140
|
-
await loadRadarConfig(cwd);
|
|
148
|
+
await loadRadarConfig(cwd, t);
|
|
141
149
|
checks.push({
|
|
142
150
|
id: "config",
|
|
143
151
|
status: "ok",
|
|
144
|
-
message: "
|
|
152
|
+
message: t("cli.doctor.configValid"),
|
|
145
153
|
});
|
|
146
154
|
}
|
|
147
155
|
catch (e) {
|
|
148
|
-
const
|
|
156
|
+
const reason = e instanceof RadarConfigError ? e.message : String(e);
|
|
149
157
|
checks.push({
|
|
150
158
|
id: "config",
|
|
151
159
|
status: "error",
|
|
152
|
-
message:
|
|
160
|
+
message: t("cli.doctor.configInvalid", { reason }),
|
|
153
161
|
});
|
|
154
162
|
}
|
|
155
163
|
// 3. Agent CLIs. Missing agents are `warn` only — a user who only runs
|
|
@@ -162,14 +170,14 @@ export async function runDoctorChecks(options = {}) {
|
|
|
162
170
|
checks.push({
|
|
163
171
|
id: `agent:${agent}`,
|
|
164
172
|
status: "ok",
|
|
165
|
-
message:
|
|
173
|
+
message: t("cli.doctor.agentFound", { agent, binary, path: found }),
|
|
166
174
|
});
|
|
167
175
|
}
|
|
168
176
|
else {
|
|
169
177
|
checks.push({
|
|
170
178
|
id: `agent:${agent}`,
|
|
171
179
|
status: "warn",
|
|
172
|
-
message:
|
|
180
|
+
message: t("cli.doctor.agentMissing", { agent, binary }),
|
|
173
181
|
});
|
|
174
182
|
}
|
|
175
183
|
}
|
|
@@ -192,7 +200,7 @@ export async function runDoctorChecks(options = {}) {
|
|
|
192
200
|
checks.push({
|
|
193
201
|
id: "playwright",
|
|
194
202
|
status: "ok",
|
|
195
|
-
message: "
|
|
203
|
+
message: t("cli.doctor.playwrightNotRequired"),
|
|
196
204
|
});
|
|
197
205
|
}
|
|
198
206
|
else {
|
|
@@ -201,21 +209,28 @@ export async function runDoctorChecks(options = {}) {
|
|
|
201
209
|
checks.push({
|
|
202
210
|
id: "playwright",
|
|
203
211
|
status: "ok",
|
|
204
|
-
message:
|
|
212
|
+
message: t("cli.doctor.playwrightOk", { path: probe.executablePath }),
|
|
205
213
|
});
|
|
206
214
|
}
|
|
207
215
|
else if (probe.status === "module-missing") {
|
|
208
216
|
checks.push({
|
|
209
217
|
id: "playwright",
|
|
210
218
|
status: "error",
|
|
211
|
-
message:
|
|
219
|
+
message: t("cli.doctor.playwrightModuleMissing", {
|
|
220
|
+
sources: htmlJsSources.join(", "),
|
|
221
|
+
hint: PLAYWRIGHT_MODULE_MISSING_HINT,
|
|
222
|
+
}),
|
|
212
223
|
});
|
|
213
224
|
}
|
|
214
225
|
else {
|
|
215
226
|
checks.push({
|
|
216
227
|
id: "playwright",
|
|
217
228
|
status: "error",
|
|
218
|
-
message:
|
|
229
|
+
message: t("cli.doctor.playwrightChromiumMissing", {
|
|
230
|
+
path: probe.executablePath,
|
|
231
|
+
sources: htmlJsSources.join(", "),
|
|
232
|
+
hint: CHROMIUM_MISSING_HINT,
|
|
233
|
+
}),
|
|
219
234
|
});
|
|
220
235
|
}
|
|
221
236
|
}
|
|
@@ -243,14 +258,14 @@ export async function runDoctorChecks(options = {}) {
|
|
|
243
258
|
checks.push({
|
|
244
259
|
id: "proxy:env",
|
|
245
260
|
status: "warn",
|
|
246
|
-
message:
|
|
261
|
+
message: t("cli.doctor.proxyEnvAllProxyOnly", { source: proxyDetection.source, masked }),
|
|
247
262
|
});
|
|
248
263
|
}
|
|
249
264
|
else {
|
|
250
265
|
checks.push({
|
|
251
266
|
id: "proxy:env",
|
|
252
267
|
status: "ok",
|
|
253
|
-
message:
|
|
268
|
+
message: t("cli.doctor.proxyEnvDetected", { source: proxyDetection.source, masked }),
|
|
254
269
|
});
|
|
255
270
|
}
|
|
256
271
|
}
|
|
@@ -258,14 +273,14 @@ export async function runDoctorChecks(options = {}) {
|
|
|
258
273
|
checks.push({
|
|
259
274
|
id: "proxy:env",
|
|
260
275
|
status: "ok",
|
|
261
|
-
message: "
|
|
276
|
+
message: t("cli.doctor.proxyEnvNone"),
|
|
262
277
|
});
|
|
263
278
|
}
|
|
264
279
|
if (env.NODE_USE_ENV_PROXY === "1") {
|
|
265
280
|
checks.push({
|
|
266
281
|
id: "proxy:active",
|
|
267
282
|
status: "ok",
|
|
268
|
-
message: "
|
|
283
|
+
message: t("cli.doctor.proxyActive"),
|
|
269
284
|
});
|
|
270
285
|
}
|
|
271
286
|
else if (proxyDetection && !proxyDetection.allProxyOnly) {
|
|
@@ -277,14 +292,14 @@ export async function runDoctorChecks(options = {}) {
|
|
|
277
292
|
checks.push({
|
|
278
293
|
id: "proxy:active",
|
|
279
294
|
status: "warn",
|
|
280
|
-
message: "
|
|
295
|
+
message: t("cli.doctor.proxyActiveMissing"),
|
|
281
296
|
});
|
|
282
297
|
}
|
|
283
298
|
else {
|
|
284
299
|
checks.push({
|
|
285
300
|
id: "proxy:active",
|
|
286
301
|
status: "ok",
|
|
287
|
-
message: "
|
|
302
|
+
message: t("cli.doctor.proxyActiveNotRequired"),
|
|
288
303
|
});
|
|
289
304
|
}
|
|
290
305
|
const caBundle = env.NODE_EXTRA_CA_CERTS;
|
|
@@ -292,35 +307,35 @@ export async function runDoctorChecks(options = {}) {
|
|
|
292
307
|
checks.push({
|
|
293
308
|
id: "tls:ca",
|
|
294
309
|
status: "ok",
|
|
295
|
-
message:
|
|
310
|
+
message: t("cli.doctor.tlsCaSet", { path: caBundle }),
|
|
296
311
|
});
|
|
297
312
|
}
|
|
298
313
|
else {
|
|
299
314
|
checks.push({
|
|
300
315
|
id: "tls:ca",
|
|
301
316
|
status: "ok",
|
|
302
|
-
message: "
|
|
317
|
+
message: t("cli.doctor.tlsCaUnset"),
|
|
303
318
|
});
|
|
304
319
|
}
|
|
305
320
|
if (options.noProxyCheck) {
|
|
306
321
|
checks.push({
|
|
307
322
|
id: "proxy:healthcheck",
|
|
308
323
|
status: "ok",
|
|
309
|
-
message: "
|
|
324
|
+
message: t("cli.doctor.healthcheckSkippedFlag"),
|
|
310
325
|
});
|
|
311
326
|
}
|
|
312
327
|
else if (!proxyDetection) {
|
|
313
328
|
checks.push({
|
|
314
329
|
id: "proxy:healthcheck",
|
|
315
330
|
status: "ok",
|
|
316
|
-
message: "
|
|
331
|
+
message: t("cli.doctor.healthcheckSkippedNoProxy"),
|
|
317
332
|
});
|
|
318
333
|
}
|
|
319
334
|
else {
|
|
320
335
|
const result = await runProxyHealthcheck({
|
|
321
336
|
fetchImpl: options.fetchImpl,
|
|
322
337
|
nowImpl: options.nowImpl,
|
|
323
|
-
});
|
|
338
|
+
}, t);
|
|
324
339
|
checks.push(result);
|
|
325
340
|
}
|
|
326
341
|
const summary = checks.reduce((acc, c) => {
|
|
@@ -343,7 +358,7 @@ export async function runDoctorChecks(options = {}) {
|
|
|
343
358
|
* - TLS-intercept errors → error (hint NODE_EXTRA_CA_CERTS)
|
|
344
359
|
* - ECONNREFUSED / ENOTFOUND / abort timeout → error (proxy unreachable)
|
|
345
360
|
*/
|
|
346
|
-
async function runProxyHealthcheck(opts) {
|
|
361
|
+
async function runProxyHealthcheck(opts, t) {
|
|
347
362
|
const fetchImpl = opts.fetchImpl ?? fetch;
|
|
348
363
|
const nowImpl = opts.nowImpl ?? (() => performance.now());
|
|
349
364
|
const controller = new AbortController();
|
|
@@ -361,25 +376,33 @@ async function runProxyHealthcheck(opts) {
|
|
|
361
376
|
return {
|
|
362
377
|
id: "proxy:healthcheck",
|
|
363
378
|
status: "warn",
|
|
364
|
-
message:
|
|
379
|
+
message: t("cli.doctor.healthcheck407", { url: PROXY_HEALTHCHECK_URL }),
|
|
365
380
|
};
|
|
366
381
|
}
|
|
367
382
|
if (res.status >= 200 && res.status < 300) {
|
|
368
383
|
return {
|
|
369
384
|
id: "proxy:healthcheck",
|
|
370
385
|
status: "ok",
|
|
371
|
-
message:
|
|
386
|
+
message: t("cli.doctor.healthcheckOk", {
|
|
387
|
+
status: res.status,
|
|
388
|
+
statusText: res.statusText || "OK",
|
|
389
|
+
elapsed,
|
|
390
|
+
}),
|
|
372
391
|
};
|
|
373
392
|
}
|
|
374
393
|
return {
|
|
375
394
|
id: "proxy:healthcheck",
|
|
376
395
|
status: "warn",
|
|
377
|
-
message:
|
|
396
|
+
message: t("cli.doctor.healthcheckOther", {
|
|
397
|
+
status: res.status,
|
|
398
|
+
statusText: res.statusText || "",
|
|
399
|
+
elapsed,
|
|
400
|
+
}),
|
|
378
401
|
};
|
|
379
402
|
}
|
|
380
403
|
catch (err) {
|
|
381
404
|
const elapsed = Math.round(nowImpl() - start);
|
|
382
|
-
return classifyProxyError(err, elapsed);
|
|
405
|
+
return classifyProxyError(err, elapsed, t);
|
|
383
406
|
}
|
|
384
407
|
finally {
|
|
385
408
|
clearTimeout(timeout);
|
|
@@ -392,12 +415,12 @@ async function runProxyHealthcheck(opts) {
|
|
|
392
415
|
* text as a last-resort heuristic. Unknown errors fall through to a generic
|
|
393
416
|
* "healthcheck failed" line.
|
|
394
417
|
*/
|
|
395
|
-
function classifyProxyError(err, elapsedMs) {
|
|
418
|
+
function classifyProxyError(err, elapsedMs, t) {
|
|
396
419
|
if (err instanceof Error && err.name === "AbortError") {
|
|
397
420
|
return {
|
|
398
421
|
id: "proxy:healthcheck",
|
|
399
422
|
status: "error",
|
|
400
|
-
message:
|
|
423
|
+
message: t("cli.doctor.healthcheckTimeout", { elapsed: elapsedMs }),
|
|
401
424
|
};
|
|
402
425
|
}
|
|
403
426
|
// Node's fetch wraps the underlying network error inside `cause`. We unwrap
|
|
@@ -409,28 +432,28 @@ function classifyProxyError(err, elapsedMs) {
|
|
|
409
432
|
return {
|
|
410
433
|
id: "proxy:healthcheck",
|
|
411
434
|
status: "error",
|
|
412
|
-
message:
|
|
435
|
+
message: t("cli.doctor.healthcheckTls", { code }),
|
|
413
436
|
};
|
|
414
437
|
}
|
|
415
438
|
if (code === "ECONNREFUSED") {
|
|
416
439
|
return {
|
|
417
440
|
id: "proxy:healthcheck",
|
|
418
441
|
status: "error",
|
|
419
|
-
message:
|
|
442
|
+
message: t("cli.doctor.healthcheckRefused"),
|
|
420
443
|
};
|
|
421
444
|
}
|
|
422
445
|
if (code === "ENOTFOUND" || code === "EAI_AGAIN") {
|
|
423
446
|
return {
|
|
424
447
|
id: "proxy:healthcheck",
|
|
425
448
|
status: "error",
|
|
426
|
-
message:
|
|
449
|
+
message: t("cli.doctor.healthcheckDns", { code }),
|
|
427
450
|
};
|
|
428
451
|
}
|
|
429
452
|
if (code === "ECONNRESET" || code === "ETIMEDOUT") {
|
|
430
453
|
return {
|
|
431
454
|
id: "proxy:healthcheck",
|
|
432
455
|
status: "error",
|
|
433
|
-
message:
|
|
456
|
+
message: t("cli.doctor.healthcheckResetTimeout", { code }),
|
|
434
457
|
};
|
|
435
458
|
}
|
|
436
459
|
}
|
|
@@ -438,7 +461,7 @@ function classifyProxyError(err, elapsedMs) {
|
|
|
438
461
|
return {
|
|
439
462
|
id: "proxy:healthcheck",
|
|
440
463
|
status: "error",
|
|
441
|
-
message:
|
|
464
|
+
message: t("cli.doctor.healthcheckFailed", { reason: message }),
|
|
442
465
|
};
|
|
443
466
|
}
|
|
444
467
|
/**
|
|
@@ -482,27 +505,8 @@ function parseDoctorArgs(args) {
|
|
|
482
505
|
}
|
|
483
506
|
return out;
|
|
484
507
|
}
|
|
485
|
-
function printDoctorHelp(log) {
|
|
486
|
-
log("
|
|
487
|
-
log("");
|
|
488
|
-
log("Diagnose the workspace and report dependency / configuration health.");
|
|
489
|
-
log("");
|
|
490
|
-
log("Checks performed:");
|
|
491
|
-
log(" - Workspace directories (sources/, items/, state/, research/, templates/)");
|
|
492
|
-
log(" - radar.config.yaml schema validity");
|
|
493
|
-
log(" - Agent CLI availability (claude / codex / gemini / copilot)");
|
|
494
|
-
log(" - Playwright + Chromium install (only if html-js sources configured)");
|
|
495
|
-
log(" - Proxy env vars (HTTPS_PROXY / HTTP_PROXY / ALL_PROXY) with credential masking");
|
|
496
|
-
log(" - NODE_USE_ENV_PROXY status (engaged when radar self-respawned for proxy)");
|
|
497
|
-
log(" - NODE_EXTRA_CA_CERTS status (required for TLS-intercepting proxies)");
|
|
498
|
-
log(" - Live proxy healthcheck (HTTPS request to api.github.com)");
|
|
499
|
-
log("");
|
|
500
|
-
log("Options:");
|
|
501
|
-
log(" --no-proxy-check Skip the live proxy healthcheck (offline-friendly)");
|
|
502
|
-
log("");
|
|
503
|
-
log("Exit codes:");
|
|
504
|
-
log(" 0 all ok (warnings may appear, but no errors)");
|
|
505
|
-
log(" 1 one or more error-level checks failed");
|
|
508
|
+
function printDoctorHelp(t, log) {
|
|
509
|
+
log(t("cli.doctor.help"));
|
|
506
510
|
}
|
|
507
511
|
/**
|
|
508
512
|
* Implementation of `radar doctor`.
|
|
@@ -512,25 +516,47 @@ function printDoctorHelp(log) {
|
|
|
512
516
|
* any check is `error` so CI / scripts can gate on a clean doctor run.
|
|
513
517
|
*/
|
|
514
518
|
export async function runDoctor(args, options = {}) {
|
|
519
|
+
const cwd = options.cwd ?? process.cwd();
|
|
515
520
|
const log = options.io?.log ?? ((m) => console.log(m));
|
|
516
521
|
const error = options.io?.error ?? ((m) => console.error(m));
|
|
522
|
+
// Strip `--lang <en|ja>` before `parseDoctorArgs` (which rejects unknown
|
|
523
|
+
// flags), then resolve the UI locale for the help text.
|
|
524
|
+
let langState;
|
|
525
|
+
try {
|
|
526
|
+
langState = parseLangFlag(args);
|
|
527
|
+
}
|
|
528
|
+
catch (e) {
|
|
529
|
+
if (e instanceof LangFlagError) {
|
|
530
|
+
error(`doctor: ${e.message}`);
|
|
531
|
+
return 2;
|
|
532
|
+
}
|
|
533
|
+
throw e;
|
|
534
|
+
}
|
|
535
|
+
const locale = await resolveWorkspaceLocale({ flag: langState.flag, cwd, warn: error });
|
|
536
|
+
// Localize zod's built-in messages so the `radar.config.yaml` schema-violation
|
|
537
|
+
// issue bodies (rendered inside `cli.doctor.configInvalid`) follow the UI
|
|
538
|
+
// locale alongside the wrapping preamble (#312).
|
|
539
|
+
applyZodLocale(locale);
|
|
540
|
+
const t = createTranslator(locale);
|
|
517
541
|
let parsed;
|
|
518
542
|
try {
|
|
519
|
-
parsed = parseDoctorArgs(
|
|
543
|
+
parsed = parseDoctorArgs(langState.rest);
|
|
520
544
|
}
|
|
521
545
|
catch (e) {
|
|
522
546
|
error(`doctor: ${e instanceof Error ? e.message : String(e)}`);
|
|
523
547
|
return 2;
|
|
524
548
|
}
|
|
525
549
|
if (parsed.help) {
|
|
526
|
-
printDoctorHelp(log);
|
|
550
|
+
printDoctorHelp(t, log);
|
|
527
551
|
return 0;
|
|
528
552
|
}
|
|
529
553
|
// CLI flag wins over the option seam. Tests typically pass `noProxyCheck`
|
|
530
554
|
// through `options`; users pass `--no-proxy-check`. OR semantics mean either
|
|
531
|
-
// path can opt out without the other interfering.
|
|
555
|
+
// path can opt out without the other interfering. Pass the already-resolved
|
|
556
|
+
// translator so locale resolution happens exactly once (#312).
|
|
532
557
|
const report = await runDoctorChecks({
|
|
533
558
|
...options,
|
|
559
|
+
t,
|
|
534
560
|
noProxyCheck: options.noProxyCheck ?? parsed.noProxyCheck,
|
|
535
561
|
});
|
|
536
562
|
for (const check of report.checks) {
|
|
@@ -538,12 +564,17 @@ export async function runDoctor(args, options = {}) {
|
|
|
538
564
|
log(`${tag} ${check.message}`);
|
|
539
565
|
}
|
|
540
566
|
log("");
|
|
541
|
-
log(
|
|
567
|
+
log(t("cli.doctor.summary", {
|
|
568
|
+
ok: report.summary.ok,
|
|
569
|
+
warn: report.summary.warn,
|
|
570
|
+
error: report.summary.error,
|
|
571
|
+
}));
|
|
542
572
|
return report.summary.error > 0 ? 1 : 0;
|
|
543
573
|
}
|
|
544
574
|
export const doctorCommand = {
|
|
545
575
|
name: "doctor",
|
|
546
576
|
summary: "Diagnose workspace, agent CLIs, and html-js Playwright install",
|
|
577
|
+
summaryKey: "cli.summary.doctor",
|
|
547
578
|
run: (args) => runDoctor(args),
|
|
548
579
|
};
|
|
549
580
|
//# sourceMappingURL=doctor.js.map
|
package/dist/cli/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.d.ts
CHANGED
|
@@ -1,7 +1,42 @@
|
|
|
1
|
+
import { type MessageKey, type Translator } from "../i18n/index.js";
|
|
1
2
|
export interface Command {
|
|
2
3
|
name: string;
|
|
4
|
+
/**
|
|
5
|
+
* Plain-English one-liner. Retained as the canonical source text and the
|
|
6
|
+
* fallback when no {@link summaryKey} is set; localized output goes through
|
|
7
|
+
* {@link summaryKey} instead (#311).
|
|
8
|
+
*/
|
|
3
9
|
summary: string;
|
|
10
|
+
/**
|
|
11
|
+
* i18n key resolving to the localized one-line summary shown in
|
|
12
|
+
* `radar --help`. When present the dispatcher renders `t(summaryKey)`;
|
|
13
|
+
* otherwise it falls back to the plain {@link summary} (#311).
|
|
14
|
+
*/
|
|
15
|
+
summaryKey?: MessageKey;
|
|
4
16
|
run: (args: string[]) => Promise<number>;
|
|
5
17
|
}
|
|
6
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Output sinks for the top-level CLI dispatcher. Mirrors the per-command
|
|
20
|
+
* `options.io` seam (e.g. {@link import("./watch.js").WatchIO}) so tests can
|
|
21
|
+
* capture global help / version / error output without spying on `console`.
|
|
22
|
+
*/
|
|
23
|
+
export interface RunIO {
|
|
24
|
+
log?: (message: string) => void;
|
|
25
|
+
error?: (message: string) => void;
|
|
26
|
+
}
|
|
27
|
+
export interface RunOptions {
|
|
28
|
+
/** Output sinks; default to `console.log` / `console.error`. */
|
|
29
|
+
io?: RunIO;
|
|
30
|
+
/** Environment bag for `RADAR_LANG`; defaults to `process.env`. */
|
|
31
|
+
env?: NodeJS.ProcessEnv;
|
|
32
|
+
/**
|
|
33
|
+
* Test seam: inject a translator (and implied locale) directly, bypassing
|
|
34
|
+
* `--lang` / `RADAR_LANG` resolution. When omitted, `run` resolves the
|
|
35
|
+
* locale from the (config-independent) flag/env layers and builds its own
|
|
36
|
+
* translator — the dispatcher reads no config, so `config.locale` does not
|
|
37
|
+
* participate here.
|
|
38
|
+
*/
|
|
39
|
+
t?: Translator;
|
|
40
|
+
}
|
|
41
|
+
export declare function run(argv: string[], options?: RunOptions): Promise<void>;
|
|
7
42
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiC,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAgBnG,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1C;AAED;;;;GAIG;AACH,MAAM,WAAW,KAAK;IACpB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,UAAU;IACzB,gEAAgE;IAChE,EAAE,CAAC,EAAE,KAAK,CAAC;IACX,mEAAmE;IACnE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB;;;;;;OAMG;IACH,CAAC,CAAC,EAAE,UAAU,CAAC;CAChB;AA6FD,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDjF"}
|
package/dist/cli/index.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
2
|
import { dirname, resolve } from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { resolveLocale } from "../core/locale.js";
|
|
5
|
+
import { createTranslator } from "../i18n/index.js";
|
|
6
|
+
import { readLangEnv } from "./_locale.js";
|
|
4
7
|
import { dismissCommand } from "./dismiss.js";
|
|
5
8
|
import { doctorCommand } from "./doctor.js";
|
|
6
9
|
import { initCommand } from "./init.js";
|
|
@@ -36,37 +39,95 @@ const commands = [
|
|
|
36
39
|
// tsc preserves src/ → dist/ structure.
|
|
37
40
|
const PKG_PATH = resolve(dirname(fileURLToPath(import.meta.url)), "..", "..", "package.json");
|
|
38
41
|
const VERSION = JSON.parse(readFileSync(PKG_PATH, "utf8")).version;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Walk the leading args, consuming only a global `--lang <value>` /
|
|
44
|
+
* `--lang=<value>` (the dispatcher's own flag). The first arg that is not such
|
|
45
|
+
* a leading `--lang` is the command token (or a leading `-h`/`-v`); everything
|
|
46
|
+
* after it is forwarded to the subcommand untouched — including any *later*
|
|
47
|
+
* `--lang`, which is the subcommand's to resolve.
|
|
48
|
+
*
|
|
49
|
+
* A dangling `--lang` with no value is a usage error (exit 2), matching
|
|
50
|
+
* {@link import("./_locale.js").LangFlagError}.
|
|
51
|
+
*/
|
|
52
|
+
function splitAtCommand(argv) {
|
|
53
|
+
let flag;
|
|
54
|
+
let i = 0;
|
|
55
|
+
for (; i < argv.length; i++) {
|
|
56
|
+
const arg = argv[i];
|
|
57
|
+
if (arg === "--lang") {
|
|
58
|
+
const next = argv[i + 1];
|
|
59
|
+
if (next === undefined) {
|
|
60
|
+
return { kind: "error", message: "--lang requires a value (en|ja)" };
|
|
61
|
+
}
|
|
62
|
+
flag = next;
|
|
63
|
+
i++; // consume the value token
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
if (arg?.startsWith("--lang=")) {
|
|
67
|
+
flag = arg.slice("--lang=".length);
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
break; // first non-preamble token: the command (or -h/-v)
|
|
71
|
+
}
|
|
72
|
+
const command = argv[i];
|
|
73
|
+
return { kind: "ok", preamble: { flag }, command, commandArgs: argv.slice(i + 1) };
|
|
74
|
+
}
|
|
75
|
+
function printHelp(t, log) {
|
|
76
|
+
log(t("cli.help.tagline"));
|
|
77
|
+
log("");
|
|
78
|
+
log(t("cli.help.usage"));
|
|
79
|
+
log("");
|
|
80
|
+
log(t("cli.help.commandsHeading"));
|
|
45
81
|
for (const c of commands) {
|
|
46
|
-
|
|
82
|
+
const summary = c.summaryKey ? t(c.summaryKey) : c.summary;
|
|
83
|
+
log(` ${c.name.padEnd(12)} ${summary}`);
|
|
47
84
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
85
|
+
log("");
|
|
86
|
+
log(t("cli.help.optionsHeading"));
|
|
87
|
+
log(` -h, --help ${t("cli.help.optionHelp")}`);
|
|
88
|
+
log(` -v, --version ${t("cli.help.optionVersion")}`);
|
|
89
|
+
log(` --lang <en|ja> ${t("cli.help.optionLang")}`);
|
|
52
90
|
}
|
|
53
|
-
export async function run(argv) {
|
|
54
|
-
const
|
|
91
|
+
export async function run(argv, options = {}) {
|
|
92
|
+
const log = options.io?.log ?? ((m) => console.log(m));
|
|
93
|
+
const error = options.io?.error ?? ((m) => console.error(m));
|
|
94
|
+
const env = options.env ?? process.env;
|
|
95
|
+
// Split argv at the command token: everything *before* it is the dispatcher's
|
|
96
|
+
// own preamble (where a global `--lang` / `-h` / `-v` may sit), everything
|
|
97
|
+
// from the command token onward is forwarded verbatim to the subcommand.
|
|
98
|
+
//
|
|
99
|
+
// The command token is the first arg that is not a `--lang` flag (or its
|
|
100
|
+
// value) and not a leading help/version flag. Splitting this way means a
|
|
101
|
+
// `--lang` placed *after* the command (`radar watch --lang ja run`) is left
|
|
102
|
+
// for the subcommand to resolve its own (config-aware) locale, while the
|
|
103
|
+
// dispatcher still honors a `--lang` placed before the command for its own
|
|
104
|
+
// global help / version / unknown-command output.
|
|
105
|
+
const split = splitAtCommand(argv);
|
|
106
|
+
if (split.kind === "error") {
|
|
107
|
+
error(`radar: ${split.message}`);
|
|
108
|
+
process.exit(2);
|
|
109
|
+
}
|
|
110
|
+
const { preamble, command: first, commandArgs } = split;
|
|
111
|
+
// Resolve the dispatcher's locale from the preamble's `--lang` (+ env). The
|
|
112
|
+
// dispatcher reads no config (config is cwd-dependent and resolved inside each
|
|
113
|
+
// command), so only the flag/env layers feed resolution here.
|
|
114
|
+
const locale = resolveLocale({ flag: preamble.flag, env: readLangEnv(env) }, { warn: error });
|
|
115
|
+
const t = options.t ?? createTranslator(locale);
|
|
55
116
|
if (!first || first === "-h" || first === "--help" || first === "help") {
|
|
56
|
-
printHelp();
|
|
117
|
+
printHelp(t, log);
|
|
57
118
|
return;
|
|
58
119
|
}
|
|
59
120
|
if (first === "-v" || first === "--version" || first === "version") {
|
|
60
|
-
|
|
121
|
+
log(VERSION);
|
|
61
122
|
return;
|
|
62
123
|
}
|
|
63
124
|
const command = commands.find((c) => c.name === first);
|
|
64
125
|
if (!command) {
|
|
65
|
-
|
|
66
|
-
|
|
126
|
+
error(t("cli.error.unknownCommand", { command: first }));
|
|
127
|
+
error(t("cli.error.unknownCommandHint"));
|
|
67
128
|
process.exit(2);
|
|
68
129
|
}
|
|
69
|
-
const code = await command.run(
|
|
130
|
+
const code = await command.run(commandArgs);
|
|
70
131
|
if (code !== 0) {
|
|
71
132
|
process.exit(code);
|
|
72
133
|
}
|