@ozzylabs/feedradar 0.1.1 → 0.1.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 +16 -5
- package/README.md +16 -5
- package/dist/agents/_boundary.d.ts +48 -1
- package/dist/agents/_boundary.d.ts.map +1 -1
- package/dist/agents/_boundary.js +65 -0
- package/dist/agents/_boundary.js.map +1 -1
- package/dist/agents/claude-code.js +3 -3
- package/dist/agents/claude-code.js.map +1 -1
- package/dist/agents/codex-cli.js +3 -3
- package/dist/agents/codex-cli.js.map +1 -1
- package/dist/agents/copilot.js +3 -3
- package/dist/agents/copilot.js.map +1 -1
- package/dist/agents/gemini-cli.js +3 -3
- package/dist/agents/gemini-cli.js.map +1 -1
- package/dist/cli/doctor.d.ts +83 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +260 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts +14 -7
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +44 -2
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/research.d.ts +10 -6
- package/dist/cli/research.d.ts.map +1 -1
- package/dist/cli/research.js +201 -35
- package/dist/cli/research.js.map +1 -1
- package/dist/cli/source.d.ts +25 -3
- package/dist/cli/source.d.ts.map +1 -1
- package/dist/cli/source.js +185 -8
- package/dist/cli/source.js.map +1 -1
- package/dist/cli/watch.d.ts +16 -0
- package/dist/cli/watch.d.ts.map +1 -1
- package/dist/cli/watch.js +3 -0
- package/dist/cli/watch.js.map +1 -1
- package/dist/core/feeds/_html-common.d.ts +30 -0
- package/dist/core/feeds/_html-common.d.ts.map +1 -0
- package/dist/core/feeds/_html-common.js +192 -0
- package/dist/core/feeds/_html-common.js.map +1 -0
- package/dist/core/feeds/html-js.d.ts +50 -0
- package/dist/core/feeds/html-js.d.ts.map +1 -0
- package/dist/core/feeds/html-js.js +135 -0
- package/dist/core/feeds/html-js.js.map +1 -0
- package/dist/core/feeds/html.d.ts +1 -7
- package/dist/core/feeds/html.d.ts.map +1 -1
- package/dist/core/feeds/html.js +25 -183
- package/dist/core/feeds/html.js.map +1 -1
- package/dist/core/feeds/index.d.ts.map +1 -1
- package/dist/core/feeds/index.js +2 -0
- package/dist/core/feeds/index.js.map +1 -1
- package/dist/core/feeds/rss.js +3 -3
- package/dist/core/feeds/rss.js.map +1 -1
- package/dist/core/playwright-check.d.ts +134 -0
- package/dist/core/playwright-check.d.ts.map +1 -0
- package/dist/core/playwright-check.js +98 -0
- package/dist/core/playwright-check.js.map +1 -0
- package/dist/core/templates.d.ts +10 -9
- package/dist/core/templates.d.ts.map +1 -1
- package/dist/core/templates.js +27 -12
- package/dist/core/templates.js.map +1 -1
- package/dist/core/watcher.d.ts +43 -0
- package/dist/core/watcher.d.ts.map +1 -1
- package/dist/core/watcher.js +84 -4
- package/dist/core/watcher.js.map +1 -1
- package/dist/schemas/source.d.ts +42 -0
- package/dist/schemas/source.d.ts.map +1 -1
- package/dist/schemas/source.js +42 -7
- package/dist/schemas/source.js.map +1 -1
- package/dist/schemas/state.d.ts +2 -0
- package/dist/schemas/state.d.ts.map +1 -1
- package/dist/schemas/state.js +4 -0
- package/dist/schemas/state.js.map +1 -1
- package/dist/templates/agents/AGENTS.md +4 -2
- package/dist/templates/digest.md +59 -0
- package/dist/templates/feedradar.md +4 -2
- package/package.json +11 -1
package/dist/cli/research.js
CHANGED
|
@@ -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 (
|
|
45
|
-
out.
|
|
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:
|
|
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("
|
|
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
|
-
*
|
|
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
|
|
126
|
-
*
|
|
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
|
|
129
|
-
*
|
|
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
|
|
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 (
|
|
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
|
-
|
|
188
|
-
//
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
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
|
-
|
|
200
|
-
|
|
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
|
-
|
|
216
|
-
|
|
217
|
-
|
|
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
|
-
|
|
224
|
-
|
|
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
|
|
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
|
-
|
|
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"),
|
|
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
|
-
|
|
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 = {
|
package/dist/cli/research.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"research.js","sourceRoot":"","sources":["../../src/cli/research.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,aAAa,GAAG;IACpB,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,KAAK,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAW;YAC5C,SAAS,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;SACjD;KACF;CACF,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAsB/E,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;YACjC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAChB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,YAAY,EAAE,CAAC;YACvB,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAChB,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;YACf,SAAS;QACX,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,SAAS,CAAC,GAAwB;IACzC,GAAG,CAAC,iFAAiF,CAAC,CAAC;IACvF,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,GAAG,CAAC,YAAY,CAAC,CAAC;IAClB,GAAG,CAAC,2EAA2E,CAAC,CAAC;IACjF,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,GAAG,CAAC,UAAU,CAAC,CAAC;IAChB,GAAG,CACD,+FAA+F,CAChG,CAAC;IACF,GAAG,CAAC,yEAAyE,CAAC,CAAC;IAC/E,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,GAAG,CAAC,qDAAqD,CAAC,CAAC;AAC7D,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,CAAS;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,SAAS,CAAC,IAAU;IAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAC3E,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK;SACzB,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChB,MAAM,IAAI,GACR,SAAS;QACT,IAAI,CAAC,EAAE;aACJ,WAAW,EAAE;aACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;aAC3B,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClB,OAAO,GAAG,UAAU,IAAI,IAAI,EAAE,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,IAAU,EAAE,GAAS;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;IAClD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,QAAQ,CAAC,GAAW,EAAE,MAAc;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAc,EACd,UAAkC,EAAE;IAEpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAErE,IAAI,MAAoB,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,KAAK,CAAC,aAAa,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,SAAS,CAAC,GAAG,CAAC,CAAC;QACf,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACrC,SAAS,CAAC,KAAK,CAAC,CAAC;QACjB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,iDAAiD;IACjD,8EAA8E;IAC9E,yEAAyE;IACzE,oDAAoD;IACpD,IAAI,aAAkC,CAAC;IACvC,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzB,KAAK,CACH,8BAA8B,MAAM,CAAC,KAAK,8DAA8D,CACzG,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC;QACD,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC;IACnC,CAAC;IACD,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;QAC1C,KAAK,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;IACjG,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,gBAAgB,EAAE,CAAC;YAClC,KAAK,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAChC,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;IACD,yEAAyE;IACzE,wEAAwE;IACxE,6BAA6B;IAE7B,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,IAAI,SAAS,CAAC;IAEhD,mBAAmB;IACnB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,CAAC,mBAAmB,MAAM,CAAC,MAAM,0BAA0B,CAAC,CAAC;QAClE,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAEvB,uEAAuE;IACvE,yEAAyE;IACzE,0EAA0E;IAC1E,4DAA4D;IAC5D,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,CACF,mBAAmB,IAAI,CAAC,EAAE,SAAS,IAAI,CAAC,cAAc,CAAC,MAAM,uBAAuB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,8CAA8C,CACjK,CAAC;IACJ,CAAC;IAED,iBAAiB;IACjB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC5C,IAAI,QAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,KAAK,CAAC,aAAa,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,yEAAyE;IACzE,2DAA2D;IAC3D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,QAAQ,GAAG,GAAG,UAAU,IAAI,IAAI,QAAQ,CAAC;IAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACnD,IAAI,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,aAAa,UAAU,uDAAuD,CAAC,CAAC;QACtF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,GAAG,CAAC,sBAAsB,KAAK,sBAAsB,IAAI,CAAC,EAAE,QAAQ,QAAQ,EAAE,CAAC,CAAC;IAEhF,kBAAkB;IAClB,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,QAAQ,CAAC;YACrB,KAAK;YACL,UAAU;YACV,YAAY,EAAE,QAAQ,CAAC,IAAI;YAC3B,KAAK,EAAE,CAAC,IAAI,CAAC;YACb,UAAU;YACV,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,KAAK,CAAC,6BAA6B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,uEAAuE;IACvE,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACpC,KAAK,CACH,iDAAiD,UAAU,mCAAmC,CAC/F,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,KAAK,CACH,8CAA8C,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC3F,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,WAAoB,CAAC;IACzB,IAAI,CAAC;QACH,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC;IACjD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,KAAK,CAAC,0CAA0C,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9F,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAClE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACzE,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC1C,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,yEAAyE;IACzE,4EAA4E;IAC5E,6EAA6E;IAC7E,4EAA4E;IAC5E,2EAA2E;IAC3E,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC;IAC7F,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC;IAC1D,IAAI,aAAa,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CACF,wHAAwH,CACzH,CAAC;QACJ,CAAC;QACD,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CACF,gIAAgI,CACjI,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAChC,MAAM,CAAC,OAAO,EACd;YACE,GAAG,QAAQ,CAAC,IAAI;YAChB,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,IAAI;SACjB,EACD,aAAa,CACd,CAAC;QACF,MAAM,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,0BAA0B;IAC1B,MAAM,OAAO,GAAS,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IACxD,IAAI,CAAC;QACH,0EAA0E;QAC1E,wEAAwE;QACxE,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,KAAK,CAAC,2CAA2C,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/F,KAAK,CAAC,iCAAiC,UAAU,GAAG,CAAC,CAAC;QACtD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,GAAG,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC;IACrC,GAAG,CAAC,mBAAmB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,EAAE,4BAA4B,CAAC,CAAC;IAC7E,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAY;IACtC,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,+DAA+D;IACxE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;CACjC,CAAC"}
|
|
1
|
+
{"version":3,"file":"research.js","sourceRoot":"","sources":["../../src/cli/research.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/source.d.ts
CHANGED
|
@@ -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
|
|
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;
|
package/dist/cli/source.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/cli/source.ts"],"names":[],"mappings":"
|
|
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"}
|