@ozzylabs/feedradar 0.1.2 → 0.1.4

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.
Files changed (79) hide show
  1. package/README.ja.md +22 -0
  2. package/README.md +24 -1
  3. package/dist/agents/_boundary.d.ts +48 -1
  4. package/dist/agents/_boundary.d.ts.map +1 -1
  5. package/dist/agents/_boundary.js +65 -0
  6. package/dist/agents/_boundary.js.map +1 -1
  7. package/dist/agents/claude-code.js +3 -3
  8. package/dist/agents/claude-code.js.map +1 -1
  9. package/dist/agents/codex-cli.js +3 -3
  10. package/dist/agents/codex-cli.js.map +1 -1
  11. package/dist/agents/copilot.js +3 -3
  12. package/dist/agents/copilot.js.map +1 -1
  13. package/dist/agents/gemini-cli.js +3 -3
  14. package/dist/agents/gemini-cli.js.map +1 -1
  15. package/dist/cli/doctor.d.ts +20 -0
  16. package/dist/cli/doctor.d.ts.map +1 -1
  17. package/dist/cli/doctor.js +291 -2
  18. package/dist/cli/doctor.js.map +1 -1
  19. package/dist/cli/init.d.ts +14 -7
  20. package/dist/cli/init.d.ts.map +1 -1
  21. package/dist/cli/init.js +44 -2
  22. package/dist/cli/init.js.map +1 -1
  23. package/dist/cli/research.d.ts +10 -6
  24. package/dist/cli/research.d.ts.map +1 -1
  25. package/dist/cli/research.js +201 -35
  26. package/dist/cli/research.js.map +1 -1
  27. package/dist/cli/respawn.d.ts +53 -0
  28. package/dist/cli/respawn.d.ts.map +1 -0
  29. package/dist/cli/respawn.js +120 -0
  30. package/dist/cli/respawn.js.map +1 -0
  31. package/dist/cli/source.d.ts +25 -3
  32. package/dist/cli/source.d.ts.map +1 -1
  33. package/dist/cli/source.js +179 -5
  34. package/dist/cli/source.js.map +1 -1
  35. package/dist/core/feeds/_fetch.d.ts +93 -0
  36. package/dist/core/feeds/_fetch.d.ts.map +1 -0
  37. package/dist/core/feeds/_fetch.js +182 -0
  38. package/dist/core/feeds/_fetch.js.map +1 -0
  39. package/dist/core/feeds/_html-common.js +2 -2
  40. package/dist/core/feeds/_html-common.js.map +1 -1
  41. package/dist/core/feeds/github-api.d.ts.map +1 -1
  42. package/dist/core/feeds/github-api.js +2 -1
  43. package/dist/core/feeds/github-api.js.map +1 -1
  44. package/dist/core/feeds/html-js.d.ts +21 -0
  45. package/dist/core/feeds/html-js.d.ts.map +1 -1
  46. package/dist/core/feeds/html-js.js +39 -1
  47. package/dist/core/feeds/html-js.js.map +1 -1
  48. package/dist/core/feeds/html.d.ts.map +1 -1
  49. package/dist/core/feeds/html.js +22 -4
  50. package/dist/core/feeds/html.js.map +1 -1
  51. package/dist/core/feeds/npm-registry.d.ts.map +1 -1
  52. package/dist/core/feeds/npm-registry.js +2 -1
  53. package/dist/core/feeds/npm-registry.js.map +1 -1
  54. package/dist/core/feeds/rss.d.ts.map +1 -1
  55. package/dist/core/feeds/rss.js +5 -4
  56. package/dist/core/feeds/rss.js.map +1 -1
  57. package/dist/core/proxy.d.ts +87 -0
  58. package/dist/core/proxy.d.ts.map +1 -0
  59. package/dist/core/proxy.js +146 -0
  60. package/dist/core/proxy.js.map +1 -0
  61. package/dist/core/templates.d.ts +10 -9
  62. package/dist/core/templates.d.ts.map +1 -1
  63. package/dist/core/templates.js +27 -12
  64. package/dist/core/templates.js.map +1 -1
  65. package/dist/core/watcher.d.ts +26 -0
  66. package/dist/core/watcher.d.ts.map +1 -1
  67. package/dist/core/watcher.js +25 -4
  68. package/dist/core/watcher.js.map +1 -1
  69. package/dist/index.js +17 -4
  70. package/dist/index.js.map +1 -1
  71. package/dist/schemas/state.d.ts +2 -0
  72. package/dist/schemas/state.d.ts.map +1 -1
  73. package/dist/schemas/state.js +4 -0
  74. package/dist/schemas/state.js.map +1 -1
  75. package/dist/templates/agents/AGENTS.md +2 -0
  76. package/dist/templates/digest.md +59 -0
  77. package/dist/templates/feedradar.md +2 -0
  78. package/dist/templates/workflows/watch.yaml +5 -1
  79. package/package.json +2 -2
@@ -23,13 +23,17 @@ import { loadItems, saveItems } from "../core/items.js";
23
23
  import { loadTemplate } from "../core/templates.js";
24
24
  import { AgentIdSchema, ResearchFrontmatterSchema } from "../schemas/index.js";
25
25
  function parseArgs(args) {
26
- const out = {};
26
+ const out = { itemIds: [] };
27
27
  for (let i = 0; i < args.length; i++) {
28
28
  const a = args[i];
29
29
  if (a === "-h" || a === "--help") {
30
30
  out.help = true;
31
31
  continue;
32
32
  }
33
+ if (a === "--digest") {
34
+ out.digest = true;
35
+ continue;
36
+ }
33
37
  if (a === "--agent") {
34
38
  out.agent = args[++i];
35
39
  continue;
@@ -41,25 +45,29 @@ function parseArgs(args) {
41
45
  if (a?.startsWith("--")) {
42
46
  throw new Error(`unknown option: ${a}`);
43
47
  }
44
- if (!out.itemId) {
45
- out.itemId = a;
46
- continue;
48
+ if (a !== undefined) {
49
+ out.itemIds.push(a);
47
50
  }
48
- throw new Error(`unexpected positional argument: ${a}`);
49
51
  }
50
52
  return out;
51
53
  }
52
54
  function printHelp(log) {
53
- log("Usage: radar research <item-id> [--agent <agent-id>] [--template <template-id>]");
55
+ log("Usage:");
56
+ log(" radar research <item-id> [--agent <agent-id>] [--template <template-id>]");
57
+ log(" radar research --digest <item-id> <item-id> ... [--agent <agent-id>] [--template <id>]");
54
58
  log("");
55
59
  log("Arguments:");
56
60
  log(" <item-id> Item id (matches items/<sourceId>/<item-id>.yaml)");
61
+ log(" Pass 2 or more ids together with --digest to bundle them.");
57
62
  log("");
58
63
  log("Options:");
59
64
  log(" --agent <agent-id> claude-code | codex-cli | gemini-cli | copilot (default: claude-code)");
60
- log(" --template <id> Template id under templates/ (default: default)");
65
+ log(" --template <id> Template id under templates/ (default: default; digest: digest)");
66
+ log(" --digest Bundle multiple items into a single digest report (ADR-0011)");
61
67
  log("");
62
- log("Writes research/<YYYYMMDD>_<slug>_v1.md (ADR-0003).");
68
+ log("Output:");
69
+ log(" single-item: research/<YYYYMMDD>_<slug>_v1.md (ADR-0003)");
70
+ log(" digest: research/<YYYYMMDD>_digest_<slug>_v1.md (ADR-0011)");
63
71
  }
64
72
  async function pathExists(p) {
65
73
  try {
@@ -100,6 +108,76 @@ function buildDatePrefix(item, now) {
100
108
  const iso = item.publishedAt ?? now.toISOString();
101
109
  return iso.slice(0, 10).replace(/-/g, "");
102
110
  }
111
+ /**
112
+ * Pick `YYYYMMDD` for digest output. Per ADR-0011 §1, digest filenames use the
113
+ * **generation date** (UTC, CLI invocation time) rather than any item's
114
+ * `publishedAt`. Constituent items rarely share a publish date and the digest
115
+ * is a synthesis artifact, so the generation date is the only stable key.
116
+ */
117
+ function buildDigestDatePrefix(now) {
118
+ return now.toISOString().slice(0, 10).replace(/-/g, "");
119
+ }
120
+ /**
121
+ * Kebab-case helper used by both digest slug derivation and the clamp routine.
122
+ * Mirrors the algorithm pinned in ADR-0011 §2: lowercase, non-alphanumerics
123
+ * collapse to a single hyphen, leading/trailing hyphens are stripped.
124
+ */
125
+ function kebabCase(s) {
126
+ return s
127
+ .toLowerCase()
128
+ .replace(/[^a-z0-9]+/g, "-")
129
+ .replace(/^-+|-+$/g, "");
130
+ }
131
+ /**
132
+ * Trim a slug to `max` characters, but never end mid-word: cut at the last
133
+ * hyphen boundary inside the limit so the slug stays readable when truncated
134
+ * (ADR-0011 §2). When no hyphen is present we fall back to a hard cut.
135
+ */
136
+ function clampSlug(s, max = 60) {
137
+ if (s.length <= max)
138
+ return s;
139
+ const cut = s.slice(0, max);
140
+ const lastHyphen = cut.lastIndexOf("-");
141
+ return lastHyphen > 0 ? cut.slice(0, lastHyphen) : cut;
142
+ }
143
+ /**
144
+ * Derive the digest slug from the constituent items' `matchedKeywords`
145
+ * (ADR-0011 §2).
146
+ *
147
+ * Algorithm:
148
+ * 1. Aggregate every item's `matchedKeywords` into a frequency map keyed by
149
+ * the normalized (lowercased, trimmed) keyword. Empty strings are
150
+ * ignored so a noisy `[""]` entry cannot dominate the ranking.
151
+ * 2. Sort by frequency descending, ties broken by lexicographic ascending so
152
+ * the output is deterministic regardless of input item order.
153
+ * 3. Take the top 1-2 entries, kebab-case each, and join with `-`. If no
154
+ * keywords are present we fall back to the literal `"digest"` so the
155
+ * ADR-0011 filename pattern (`<date>_digest_<slug>_v<n>.md`) still
156
+ * produces a recognizable `<date>_digest_digest_v1.md` artifact.
157
+ * 4. Clamp to 60 chars on hyphen boundaries (`clampSlug`).
158
+ *
159
+ * Stable ordering matters because the digest id is content-addressed: the
160
+ * same item set must always yield the same filename so re-runs can detect
161
+ * collisions deterministically.
162
+ */
163
+ function deriveDigestSlug(items) {
164
+ const freq = new Map();
165
+ for (const item of items) {
166
+ for (const kw of item.matchedKeywords) {
167
+ const normalized = kw.toLowerCase().trim();
168
+ if (normalized === "")
169
+ continue;
170
+ freq.set(normalized, (freq.get(normalized) ?? 0) + 1);
171
+ }
172
+ }
173
+ const ranked = [...freq.entries()]
174
+ .sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))
175
+ .map(([kw]) => kw);
176
+ const top = ranked.slice(0, 2);
177
+ if (top.length === 0)
178
+ return "digest";
179
+ return clampSlug(top.map(kebabCase).join("-"));
180
+ }
103
181
  /**
104
182
  * Locate `items/<sourceId>/<item-id>.yaml` across all source directories,
105
183
  * since the CLI only takes `<item-id>` (sourceId is not on the command line).
@@ -119,17 +197,45 @@ async function findItem(cwd, itemId) {
119
197
  return { item: match };
120
198
  }
121
199
  /**
122
- * Implementation of `radar research <item-id>`.
200
+ * Locate multiple items at once. We do a single `loadItems` walk and then
201
+ * map the requested ids against the result, preserving the caller's order
202
+ * for the eventual `itemIds` frontmatter array (ADR-0011 keeps no constraint
203
+ * on order, but stable user-supplied order is the least surprising default).
204
+ *
205
+ * Returns `null` for the first missing id so the caller can emit a targeted
206
+ * error rather than walking `items/` repeatedly.
207
+ */
208
+ async function findItems(cwd, itemIds) {
209
+ const itemsDir = join(cwd, "items");
210
+ if (!(await pathExists(itemsDir)))
211
+ return { missing: itemIds[0] };
212
+ const all = await loadItems(itemsDir);
213
+ const byId = new Map(all.map((i) => [i.id, i]));
214
+ const matched = [];
215
+ for (const id of itemIds) {
216
+ const m = byId.get(id);
217
+ if (!m)
218
+ return { missing: id };
219
+ matched.push(m);
220
+ }
221
+ return { items: matched };
222
+ }
223
+ /**
224
+ * Implementation of `radar research <item-id>` (single-item) and
225
+ * `radar research --digest <id1> <id2> ...` (multi-item digest, ADR-0011).
123
226
  *
124
227
  * High-level flow (Phase 1):
125
- * 1. Parse + validate args (agent defaults to `claude-code`, template to `default`).
126
- * 2. Locate `items/<sourceId>/<item-id>.yaml` and parse it.
228
+ * 1. Parse + validate args (agent defaults to `claude-code`, template to
229
+ * `default` for single-item or `digest` for `--digest`).
230
+ * 2. Locate `items/<sourceId>/<item-id>.yaml` for each id and parse it.
127
231
  * 3. Load `templates/<template-id>.md` (empty body when default is absent).
128
- * 4. Compute `research/<YYYYMMDD>_<slug>_v1.md`; refuse to overwrite an
129
- * existing file (re-runs go through `update` per ADR-0003).
232
+ * 4. Compute the output path:
233
+ * - single-item: `research/<YYYYMMDD>_<slug>_v1.md` (ADR-0003)
234
+ * - digest: `research/<YYYYMMDD>_digest_<slug>_v1.md` (ADR-0011)
235
+ * Refuse to overwrite an existing file — re-runs go through `update`.
130
236
  * 5. Invoke the registered agent adapter; the agent writes the report.
131
237
  * 6. Validate the report's frontmatter against `ResearchFrontmatterSchema`.
132
- * 7. Transition the item: `status` → `researched` and persist.
238
+ * 7. Transition every included item: `status` → `researched` and persist.
133
239
  *
134
240
  * Any step from 4 onward that fails surfaces a non-zero exit code with a
135
241
  * targeted message so the user can debug without re-reading the source.
@@ -151,11 +257,25 @@ export async function runResearch(args, options = {}) {
151
257
  printHelp(log);
152
258
  return 0;
153
259
  }
154
- if (!parsed.itemId) {
260
+ if (parsed.itemIds.length === 0) {
155
261
  error("research: missing <item-id>");
156
262
  printHelp(error);
157
263
  return 2;
158
264
  }
265
+ // Single-item mode: enforce exactly one positional id so the existing
266
+ // behavior of `radar research <id>` is unambiguous. The user must opt into
267
+ // multi-item mode via `--digest`.
268
+ if (!parsed.digest && parsed.itemIds.length > 1) {
269
+ error(`research: multiple <item-id> arguments require --digest (got ${parsed.itemIds.length}: ${parsed.itemIds.join(", ")})`);
270
+ return 2;
271
+ }
272
+ // Digest mode: must bundle 2+ items per ADR-0011 §1 (a single-item digest
273
+ // is indistinguishable from a regular research run and would muddy the ID
274
+ // space). Reject early with exit 2 (argument error).
275
+ if (parsed.digest && parsed.itemIds.length < 2) {
276
+ error(`research: --digest requires 2 or more <item-id> arguments (got ${parsed.itemIds.length})`);
277
+ return 2;
278
+ }
159
279
  // Resolve the agent honoring the priority chain:
160
280
  // explicit --agent > radar.config.yaml defaultResearchAgent > "claude-code"
161
281
  // The explicit value is validated against AgentIdSchema first so a bogus
@@ -184,20 +304,45 @@ export async function runResearch(args, options = {}) {
184
304
  // Phase 2 sub-issues B / C / D / E ship all four adapters. AgentIdSchema
185
305
  // already rejected invalid `--agent` values upstream, so any value that
186
306
  // reaches here is supported.
187
- const templateId = parsed.template ?? "default";
188
- // Locate the item.
189
- const found = await findItem(cwd, parsed.itemId);
190
- if (!found) {
191
- error(`research: item '${parsed.itemId}' not found under items/`);
192
- return 1;
307
+ // Default template depends on mode: ADR-0011 §6 pins `digest` as the digest
308
+ // templateId so the bundled `templates/digest.md` is picked up automatically
309
+ // when the user doesn't pass `--template`.
310
+ const templateId = parsed.template ?? (parsed.digest ? "digest" : "default");
311
+ // Locate the item(s). Digest mode collects every id up front so a missing id
312
+ // fails before we invoke the agent (cheap fail-fast vs. burning tokens).
313
+ let items;
314
+ if (parsed.digest) {
315
+ const result = await findItems(cwd, parsed.itemIds);
316
+ if ("missing" in result) {
317
+ error(`research: item '${result.missing}' not found under items/`);
318
+ return 1;
319
+ }
320
+ items = result.items;
321
+ // ADR-0011 §5: a `dismissed` item must not appear in a digest. Validate
322
+ // up-front so the user can either remove the id or re-detect the source
323
+ // before re-running.
324
+ const dismissed = items.filter((i) => i.status === "dismissed");
325
+ if (dismissed.length > 0) {
326
+ error(`research: cannot include dismissed items in a digest: ${dismissed.map((i) => i.id).join(", ")}`);
327
+ return 1;
328
+ }
329
+ }
330
+ else {
331
+ const found = await findItem(cwd, parsed.itemIds[0]);
332
+ if (!found) {
333
+ error(`research: item '${parsed.itemIds[0]}' not found under items/`);
334
+ return 1;
335
+ }
336
+ items = [found.item];
193
337
  }
194
- const { item } = found;
195
338
  // Surface any prompt-injection pre-filter hits recorded by the watcher
196
339
  // (ADR-0009 M1a / M5a — Adopt). Audit-only: the agent still runs against
197
340
  // the original content, but the user gets an explicit warning so they can
198
341
  // `radar dismiss` and re-evaluate before committing tokens.
199
- if (item.injectionFlags.length > 0) {
200
- warn(`research: item '${item.id}' has ${item.injectionFlags.length} injection flag(s): ${item.injectionFlags.join(", ")} (audit-only; use \`radar dismiss\` to skip)`);
342
+ for (const item of items) {
343
+ if (item.injectionFlags.length > 0) {
344
+ warn(`research: item '${item.id}' has ${item.injectionFlags.length} injection flag(s): ${item.injectionFlags.join(", ")} (audit-only; use \`radar dismiss\` to skip)`);
345
+ }
201
346
  }
202
347
  // Load template.
203
348
  const templatesDir = join(cwd, "templates");
@@ -210,25 +355,39 @@ export async function runResearch(args, options = {}) {
210
355
  return 1;
211
356
  }
212
357
  // Compute output path. Refuse to overwrite an existing file — re-runs go
213
- // through `radar update` per ADR-0003 (immutable history).
358
+ // through `radar update` per ADR-0003 / ADR-0011 (immutable history).
214
359
  const now = new Date();
215
- const datePrefix = buildDatePrefix(item, now);
216
- const slug = buildSlug(item);
217
- const filename = `${datePrefix}_${slug}_v1.md`;
360
+ let filename;
361
+ if (parsed.digest) {
362
+ const datePrefix = buildDigestDatePrefix(now);
363
+ const slug = deriveDigestSlug(items);
364
+ filename = `${datePrefix}_digest_${slug}_v1.md`;
365
+ }
366
+ else {
367
+ const single = items[0];
368
+ const datePrefix = buildDatePrefix(single, now);
369
+ const slug = buildSlug(single);
370
+ filename = `${datePrefix}_${slug}_v1.md`;
371
+ }
218
372
  const outputPath = join(cwd, "research", filename);
219
373
  if (await pathExists(outputPath)) {
220
374
  error(`research: ${outputPath} already exists (use \`radar update\` to re-research)`);
221
375
  return 1;
222
376
  }
223
- log(`research: invoking ${agent} adapter for item '${item.id}' -> ${filename}`);
224
- // Invoke adapter.
377
+ const itemDescription = parsed.digest
378
+ ? `${items.length} items (${items.map((i) => i.id).join(", ")})`
379
+ : `item '${items[0].id}'`;
380
+ log(`research: invoking ${agent} adapter for ${itemDescription} -> ${filename}`);
381
+ // Invoke adapter. The multi-item signature lands via #140; the adapter
382
+ // already handles `items.length === 1` byte-equivalently for single-item
383
+ // callers so no branching is needed here.
225
384
  const adapter = getAgentAdapter(agent);
226
385
  try {
227
386
  await adapter.research({
228
387
  agent,
229
388
  templateId,
230
389
  templateBody: template.body,
231
- items: [item],
390
+ items,
232
391
  outputPath,
233
392
  cwd,
234
393
  });
@@ -289,12 +448,15 @@ export async function runResearch(args, options = {}) {
289
448
  }, matterOptions);
290
449
  await writeFile(outputPath, rewritten, "utf8");
291
450
  }
292
- // Transition item status.
293
- const updated = { ...item, status: "researched" };
451
+ // Transition item status. ADR-0011 §5: every included item transitions
452
+ // `detected` `researched`; terminal states (`researched` / `reviewed`)
453
+ // are protected and pass through unchanged so a digest that re-includes
454
+ // an already-researched item does not regress its status.
455
+ const updated = items.map((item) => item.status === "detected" ? { ...item, status: "researched" } : item);
294
456
  try {
295
457
  // saveItems writes by sourceId+id, so it will overwrite the existing file
296
458
  // in place. We rely on this rather than constructing the path manually.
297
- await saveItems(join(cwd, "items"), [updated]);
459
+ await saveItems(join(cwd, "items"), updated);
298
460
  }
299
461
  catch (e) {
300
462
  error(`research: failed to update item status: ${e instanceof Error ? e.message : String(e)}`);
@@ -302,7 +464,11 @@ export async function runResearch(args, options = {}) {
302
464
  return 1;
303
465
  }
304
466
  log(`research: wrote ${outputPath}`);
305
- log(`research: items/${item.sourceId}/${item.id}.yaml status -> researched`);
467
+ for (const item of updated) {
468
+ if (item.status === "researched") {
469
+ log(`research: items/${item.sourceId}/${item.id}.yaml status -> researched`);
470
+ }
471
+ }
306
472
  return 0;
307
473
  }
308
474
  export const researchCommand = {
@@ -1 +1 @@
1
- {"version":3,"file":"research.js","sourceRoot":"","sources":["../../src/cli/research.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"research.js","sourceRoot":"","sources":["../../src/cli/research.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { spawn } from "node:child_process";
2
+ /**
3
+ * Sentinel env var. Set on the **child** to signal that the current process is
4
+ * already the respawned instance — without this, the bin would respawn itself
5
+ * indefinitely.
6
+ */
7
+ export declare const RESPAWN_SENTINEL = "RADAR_PROXY_RESPAWNED";
8
+ /**
9
+ * User opt-out. Setting `RADAR_AUTO_PROXY=0` disables the self-respawn entirely
10
+ * (useful when the user wants to manage `NODE_OPTIONS` themselves, or when the
11
+ * proxy env vars are present but `radar` should bypass them for some reason).
12
+ */
13
+ export declare const OPT_OUT_ENV = "RADAR_AUTO_PROXY";
14
+ /**
15
+ * Flag injected into `NODE_OPTIONS`. Tells Node to honor `HTTPS_PROXY` /
16
+ * `HTTP_PROXY` for the built-in `fetch()` / `undici` global agent. Available
17
+ * in Node 22.21+ and 24.5+ (see `engines.node` in package.json).
18
+ */
19
+ export declare const PROXY_FLAG = "--use-env-proxy";
20
+ /**
21
+ * Env hint propagated to spawned subprocesses (agent CLI helpers). Mirrors
22
+ * Node's own convention so any tooling that reads the var sees a consistent
23
+ * signal that the user wants proxy-aware HTTP.
24
+ */
25
+ export declare const NODE_USE_ENV_PROXY = "NODE_USE_ENV_PROXY";
26
+ export interface RespawnDeps {
27
+ env: NodeJS.ProcessEnv;
28
+ argv: string[];
29
+ execPath: string;
30
+ /** Injected so tests can substitute a mock spawn. */
31
+ spawn?: typeof spawn;
32
+ /** Process-level signal handler registration; injected for tests. */
33
+ onSignal?: (signal: NodeJS.Signals, handler: () => void) => void;
34
+ /** Final exit invoked once the child completes; injected for tests. */
35
+ exit?: (code: number) => void;
36
+ /** Hook to emit warnings; defaults to `console.warn`. */
37
+ warn?: (message: string) => void;
38
+ }
39
+ export interface RespawnDecision {
40
+ respawned: boolean;
41
+ reason?: "no-proxy" | "opt-out" | "already-respawned" | "all-proxy-only-warned" | "spawned";
42
+ }
43
+ /**
44
+ * Decide whether to respawn, and if so, do it.
45
+ *
46
+ * Returns synchronously with `{ respawned: true }` after spawning the child
47
+ * and wiring up signal / exit propagation. Callers MUST treat that as a
48
+ * terminal state and not continue executing the normal CLI path; otherwise
49
+ * both the parent and child would race to write to stdout. The opposite
50
+ * (`respawned: false`) is the green-light to run the CLI inline.
51
+ */
52
+ export declare function maybeRespawnForProxy(deps: RespawnDeps): RespawnDecision;
53
+ //# sourceMappingURL=respawn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"respawn.d.ts","sourceRoot":"","sources":["../../src/cli/respawn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG9D;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,0BAA0B,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,WAAW,qBAAqB,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,UAAU,oBAAoB,CAAC;AAE5C;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACjE,uEAAuE;IACvE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,yDAAyD;IACzD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,mBAAmB,GAAG,uBAAuB,GAAG,SAAS,CAAC;CAC7F;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,eAAe,CAiFvE"}
@@ -0,0 +1,120 @@
1
+ import { spawn } from "node:child_process";
2
+ import { detectProxyUrl, mergeNodeOptions } from "../core/proxy.js";
3
+ /**
4
+ * Sentinel env var. Set on the **child** to signal that the current process is
5
+ * already the respawned instance — without this, the bin would respawn itself
6
+ * indefinitely.
7
+ */
8
+ export const RESPAWN_SENTINEL = "RADAR_PROXY_RESPAWNED";
9
+ /**
10
+ * User opt-out. Setting `RADAR_AUTO_PROXY=0` disables the self-respawn entirely
11
+ * (useful when the user wants to manage `NODE_OPTIONS` themselves, or when the
12
+ * proxy env vars are present but `radar` should bypass them for some reason).
13
+ */
14
+ export const OPT_OUT_ENV = "RADAR_AUTO_PROXY";
15
+ /**
16
+ * Flag injected into `NODE_OPTIONS`. Tells Node to honor `HTTPS_PROXY` /
17
+ * `HTTP_PROXY` for the built-in `fetch()` / `undici` global agent. Available
18
+ * in Node 22.21+ and 24.5+ (see `engines.node` in package.json).
19
+ */
20
+ export const PROXY_FLAG = "--use-env-proxy";
21
+ /**
22
+ * Env hint propagated to spawned subprocesses (agent CLI helpers). Mirrors
23
+ * Node's own convention so any tooling that reads the var sees a consistent
24
+ * signal that the user wants proxy-aware HTTP.
25
+ */
26
+ export const NODE_USE_ENV_PROXY = "NODE_USE_ENV_PROXY";
27
+ /**
28
+ * Decide whether to respawn, and if so, do it.
29
+ *
30
+ * Returns synchronously with `{ respawned: true }` after spawning the child
31
+ * and wiring up signal / exit propagation. Callers MUST treat that as a
32
+ * terminal state and not continue executing the normal CLI path; otherwise
33
+ * both the parent and child would race to write to stdout. The opposite
34
+ * (`respawned: false`) is the green-light to run the CLI inline.
35
+ */
36
+ export function maybeRespawnForProxy(deps) {
37
+ const { env, argv, execPath, spawn: spawnImpl = spawn, onSignal = (sig, h) => process.on(sig, h), exit = (code) => process.exit(code), warn = (m) => console.warn(m), } = deps;
38
+ // Centralized opt-out check. Documented as `RADAR_AUTO_PROXY=0`, but any
39
+ // falsy-looking value ("0" / "false" / "off") disables the feature for
40
+ // user ergonomics. Empty string is treated as "not set" (env shells often
41
+ // collapse unset vars to "").
42
+ const optOut = env[OPT_OUT_ENV];
43
+ if (optOut !== undefined && optOut !== "") {
44
+ if (optOut === "0" || optOut.toLowerCase() === "false" || optOut.toLowerCase() === "off") {
45
+ return { respawned: false, reason: "opt-out" };
46
+ }
47
+ }
48
+ // Sentinel: the child of a previous respawn must not respawn again,
49
+ // otherwise NODE_OPTIONS grows by one token per generation.
50
+ if (env[RESPAWN_SENTINEL] === "1") {
51
+ return { respawned: false, reason: "already-respawned" };
52
+ }
53
+ const detection = detectProxyUrl(env);
54
+ if (!detection)
55
+ return { respawned: false, reason: "no-proxy" };
56
+ // `--use-env-proxy` ignores `ALL_PROXY`. Warn the user that respawning
57
+ // alone won't make fetch hit the proxy — they need HTTPS_PROXY or HTTP_PROXY.
58
+ // We still respawn so any *downstream* helper that reads ALL_PROXY benefits,
59
+ // but the warning prevents silent failure when the user expected fetch to
60
+ // pick it up.
61
+ if (detection.allProxyOnly) {
62
+ warn("radar: ALL_PROXY is set but HTTPS_PROXY / HTTP_PROXY is not. " +
63
+ "Node's --use-env-proxy ignores ALL_PROXY; set HTTPS_PROXY=<url> " +
64
+ "(and/or HTTP_PROXY) so fetch() can route through the proxy.");
65
+ }
66
+ const nextEnv = {
67
+ ...env,
68
+ NODE_OPTIONS: mergeNodeOptions(env.NODE_OPTIONS, PROXY_FLAG),
69
+ [NODE_USE_ENV_PROXY]: "1",
70
+ [RESPAWN_SENTINEL]: "1",
71
+ };
72
+ // argv[0] = node binary, argv[1] = bin script (radar). We respawn with the
73
+ // same script and forward the user's original arguments untouched.
74
+ const child = spawnImpl(execPath, argv.slice(1), {
75
+ env: nextEnv,
76
+ stdio: "inherit",
77
+ });
78
+ forwardSignals(child, onSignal);
79
+ child.on("exit", (code, signal) => {
80
+ if (signal) {
81
+ // Re-raise the signal on ourselves so our exit status matches the
82
+ // child's (Node maps signal exits to 128 + sig#). Best-effort: if the
83
+ // platform refuses, fall back to a generic non-zero code.
84
+ try {
85
+ process.kill(process.pid, signal);
86
+ }
87
+ catch {
88
+ exit(1);
89
+ }
90
+ return;
91
+ }
92
+ exit(code ?? 0);
93
+ });
94
+ child.on("error", (err) => {
95
+ warn(`radar: failed to respawn with ${PROXY_FLAG}: ${err.message}`);
96
+ exit(1);
97
+ });
98
+ return { respawned: true, reason: "spawned" };
99
+ }
100
+ /**
101
+ * Forward terminal signals to the child so Ctrl-C / `kill` propagate cleanly.
102
+ * Without this, the parent would intercept SIGINT and the child (which owns
103
+ * stdin/stdout via `stdio: inherit`) would stay alive until manually killed.
104
+ */
105
+ function forwardSignals(child, onSignal) {
106
+ const signals = ["SIGINT", "SIGTERM", "SIGHUP"];
107
+ for (const sig of signals) {
108
+ onSignal(sig, () => {
109
+ // child.kill may throw if the child is already gone; swallow so we
110
+ // don't crash on the very last tick before exit.
111
+ try {
112
+ child.kill(sig);
113
+ }
114
+ catch {
115
+ // ignore
116
+ }
117
+ });
118
+ }
119
+ }
120
+ //# sourceMappingURL=respawn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"respawn.js","sourceRoot":"","sources":["../../src/cli/respawn.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { FetchLike } from "../core/feeds/types.js";
1
2
  import type { Command } from "./index.js";
2
3
  /**
3
4
  * Sinks for the source command's user-facing output.
@@ -19,6 +20,13 @@ export interface SourceCommandOptions {
19
20
  /** Workspace root (defaults to `process.cwd()` for the real CLI). */
20
21
  cwd?: string;
21
22
  io?: SourceIO;
23
+ /**
24
+ * Test seam: override the HTTP fetcher used by `source test`. Only the
25
+ * `test` subcommand currently needs it (it goes through `watchRun`); the
26
+ * field is declared here so `runSource` can forward the same options bag
27
+ * uniformly to every dispatcher branch.
28
+ */
29
+ fetch?: FetchLike;
22
30
  }
23
31
  /**
24
32
  * Implementation of `source add`.
@@ -45,12 +53,26 @@ export declare function listSources(args: string[], options?: SourceCommandOptio
45
53
  * never lose recorded research by toggling a source off.
46
54
  */
47
55
  export declare function removeSource(args: string[], options?: SourceCommandOptions): Promise<number>;
56
+ /**
57
+ * Implementation of `source test`.
58
+ *
59
+ * Dry-run preview for a single source: load `sources/<id>.yaml`, fetch + filter
60
+ * via `watchRun({ dryRun: true })`, and print a `fetched / filtered / matched`
61
+ * summary plus up to `--limit` matched items. Disk state is never mutated —
62
+ * neither `items/` nor `state/<id>.yaml` are written (see `watchRun`'s
63
+ * `dryRun` semantics in `src/core/watcher.ts`).
64
+ *
65
+ * Intended use case: while tuning `--keywords` on a brand-new source, run
66
+ * `radar source test <id>` to see which items would have matched before
67
+ * letting `watch run` ingest them for real.
68
+ */
69
+ export declare function testSource(args: string[], options?: SourceCommandOptions): Promise<number>;
48
70
  /**
49
71
  * Top-level dispatcher for `radar source <subcommand>`.
50
72
  *
51
- * Sub-commands are kept as named functions (addSource/listSources/removeSource)
52
- * so tests can call them directly with injected IO sinks without spawning the
53
- * full CLI.
73
+ * Sub-commands are kept as named functions (addSource/listSources/removeSource/
74
+ * testSource) so tests can call them directly with injected IO sinks without
75
+ * spawning the full CLI.
54
76
  */
55
77
  export declare function runSource(args: string[], options?: SourceCommandOptions): Promise<number>;
56
78
  export declare const sourceCommand: Command;
@@ -1 +1 @@
1
- {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/cli/source.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;;;;;;;;GASG;AACH,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,wDAAwD;AACxD,MAAM,WAAW,oBAAoB;IACnC,qEAAqE;IACrE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,QAAQ,CAAC;CACf;AAiOD;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CAoHjB;AA6CD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CA2FjB;AA4BD;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CAmCjB;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAED,eAAO,MAAM,aAAa,EAAE,OAI3B,CAAC"}
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/cli/source.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAKxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;;;;;;;;GASG;AACH,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,wDAAwD;AACxD,MAAM,WAAW,oBAAoB;IACnC,qEAAqE;IACrE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAgSD;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CAoHjB;AA6CD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CA2FjB;AA4BD;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CAmCjB;AAaD;;;;;;;;;;;;GAYG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CAsGjB;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAED,eAAO,MAAM,aAAa,EAAE,OAI3B,CAAC"}