@ozzylabs/feedradar 0.1.7 → 0.1.9
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.md +2 -1
- package/dist/agents/_boundary.d.ts +87 -1
- package/dist/agents/_boundary.d.ts.map +1 -1
- package/dist/agents/_boundary.js +197 -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 +33 -93
- 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 +34 -93
- package/dist/agents/codex-cli.js.map +1 -1
- package/dist/agents/copilot.d.ts.map +1 -1
- package/dist/agents/copilot.js +33 -93
- package/dist/agents/copilot.js.map +1 -1
- package/dist/agents/gemini-cli.d.ts.map +1 -1
- package/dist/agents/gemini-cli.js +33 -93
- package/dist/agents/gemini-cli.js.map +1 -1
- package/dist/claude-skills/dismiss/SKILL.md +18 -12
- package/dist/claude-skills/research/SKILL.md +21 -1
- package/dist/claude-skills/review/SKILL.md +23 -1
- package/dist/claude-skills/update/SKILL.md +24 -2
- package/dist/cli/_commit-path.d.ts +33 -0
- package/dist/cli/_commit-path.d.ts.map +1 -0
- package/dist/cli/_commit-path.js +43 -0
- package/dist/cli/_commit-path.js.map +1 -0
- package/dist/cli/dismiss.d.ts +38 -8
- package/dist/cli/dismiss.d.ts.map +1 -1
- package/dist/cli/dismiss.js +237 -55
- package/dist/cli/dismiss.js.map +1 -1
- package/dist/cli/research.d.ts.map +1 -1
- package/dist/cli/research.js +307 -45
- package/dist/cli/research.js.map +1 -1
- package/dist/cli/review.d.ts.map +1 -1
- package/dist/cli/review.js +169 -0
- package/dist/cli/review.js.map +1 -1
- package/dist/cli/source.d.ts.map +1 -1
- package/dist/cli/source.js +18 -0
- package/dist/cli/source.js.map +1 -1
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +429 -141
- package/dist/cli/update.js.map +1 -1
- package/dist/cli/workflow/generate-combined-with-triage.d.ts +49 -1
- package/dist/cli/workflow/generate-combined-with-triage.d.ts.map +1 -1
- package/dist/cli/workflow/generate-combined-with-triage.js +139 -3
- package/dist/cli/workflow/generate-combined-with-triage.js.map +1 -1
- package/dist/core/feeds/json-api.d.ts +5 -2
- package/dist/core/feeds/json-api.d.ts.map +1 -1
- package/dist/core/feeds/json-api.js +113 -13
- package/dist/core/feeds/json-api.js.map +1 -1
- package/dist/core/feeds/types.d.ts +40 -0
- package/dist/core/feeds/types.d.ts.map +1 -1
- package/dist/core/triage/adapter.d.ts +45 -0
- package/dist/core/triage/adapter.d.ts.map +1 -1
- package/dist/core/triage/adapter.js +50 -11
- package/dist/core/triage/adapter.js.map +1 -1
- package/dist/core/watcher.d.ts.map +1 -1
- package/dist/core/watcher.js +12 -2
- package/dist/core/watcher.js.map +1 -1
- package/dist/gemini-commands/research.toml +1 -1
- package/dist/gemini-commands/review.toml +1 -1
- package/dist/gemini-commands/update.toml +1 -1
- package/dist/recipes/aws-whats-new.yaml +7 -1
- package/dist/schemas/recipe.d.ts +1 -1
- package/dist/schemas/source.d.ts +22 -4
- package/dist/schemas/source.d.ts.map +1 -1
- package/dist/schemas/source.js +31 -3
- package/dist/schemas/source.js.map +1 -1
- package/dist/skills/research/SKILL.md +75 -8
- package/dist/skills/review/SKILL.md +79 -7
- package/dist/skills/update/SKILL.md +68 -7
- package/dist/templates/workflows/combined-with-triage.template.yaml.tmpl +29 -30
- package/package.json +1 -1
package/dist/cli/dismiss.js
CHANGED
|
@@ -1,81 +1,259 @@
|
|
|
1
|
-
import { access } from "node:fs/promises";
|
|
2
1
|
import { join } from "node:path";
|
|
3
2
|
import { loadItems, saveItems } from "../core/items.js";
|
|
3
|
+
import { allowedTransitions, isValidTransition } from "../core/transitions.js";
|
|
4
|
+
/**
|
|
5
|
+
* Default hard-cap for `radar dismiss --batch`.
|
|
6
|
+
*
|
|
7
|
+
* Mirrors `RESEARCH_BATCH_DEFAULT_MAX_ITEMS` / `REVIEW_BATCH_DEFAULT_MAX_ITEMS`
|
|
8
|
+
* (ADR-0014 D3a). dismiss is agent-free so cost is not the driver, but pinning
|
|
9
|
+
* the same literal keeps the batch surface symmetric across commands: a user
|
|
10
|
+
* who learned `--max-items 10` from `research --batch` gets the same default
|
|
11
|
+
* here. A runaway `--backfill` that floods `detected` cannot be cleared in a
|
|
12
|
+
* single unbounded pass — the cap forces an explicit `--max-items` bump.
|
|
13
|
+
*/
|
|
14
|
+
export const DISMISS_BATCH_DEFAULT_MAX_ITEMS = 10;
|
|
15
|
+
/**
|
|
16
|
+
* Whitelist of `Item.status` values accepted by `radar dismiss --batch
|
|
17
|
+
* --status <status>` and by the single/multi-id path.
|
|
18
|
+
*
|
|
19
|
+
* Derived from the ADR-0008 / ADR-0018 state machine: an item may transition
|
|
20
|
+
* to `dismissed` only from `detected` or `triaged_unsure`
|
|
21
|
+
* (`isValidTransition(<status>, "dismissed")`). The two `triaged_research` /
|
|
22
|
+
* `triaged_digest` statuses are NOT dismissible — they flow to `researched`
|
|
23
|
+
* (a triage decision already promoted them), so dismissing them would
|
|
24
|
+
* contradict the classifier; the human path for those is `radar triage --redo`
|
|
25
|
+
* back to `detected` first.
|
|
26
|
+
*
|
|
27
|
+
* Constraining `--batch --status` to this same set means a typo in scheduled
|
|
28
|
+
* YAML fails loud with an explicit allow-list message instead of silently
|
|
29
|
+
* matching zero items (mirrors research/review #250).
|
|
30
|
+
*/
|
|
31
|
+
export const DISMISS_ALLOWED_STATUSES = [
|
|
32
|
+
"detected",
|
|
33
|
+
"triaged_unsure",
|
|
34
|
+
];
|
|
4
35
|
function parseArgs(args) {
|
|
5
|
-
const out = {};
|
|
36
|
+
const out = { itemIds: [] };
|
|
6
37
|
for (let i = 0; i < args.length; i++) {
|
|
7
38
|
const a = args[i];
|
|
8
39
|
if (a === "-h" || a === "--help") {
|
|
9
40
|
out.help = true;
|
|
10
41
|
continue;
|
|
11
42
|
}
|
|
43
|
+
if (a === "--batch") {
|
|
44
|
+
out.batch = true;
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (a === "--status") {
|
|
48
|
+
out.status = args[++i];
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if (a === "--max-items") {
|
|
52
|
+
out.maxItems = args[++i];
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (a === "--filter-tags") {
|
|
56
|
+
out.filterTags = args[++i];
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
12
59
|
if (a?.startsWith("--")) {
|
|
13
60
|
throw new Error(`unknown option: ${a}`);
|
|
14
61
|
}
|
|
15
|
-
if (
|
|
16
|
-
out.
|
|
17
|
-
continue;
|
|
62
|
+
if (a !== undefined) {
|
|
63
|
+
out.itemIds.push(a);
|
|
18
64
|
}
|
|
19
|
-
throw new Error(`unexpected positional argument: ${a}`);
|
|
20
65
|
}
|
|
21
66
|
return out;
|
|
22
67
|
}
|
|
23
68
|
function printHelp(log) {
|
|
24
|
-
log("Usage:
|
|
69
|
+
log("Usage:");
|
|
70
|
+
log(" radar dismiss <item-id> [<item-id> ...]");
|
|
71
|
+
log(" radar dismiss --batch [--status <status>] [--max-items N] [--filter-tags <list>]");
|
|
25
72
|
log("");
|
|
26
73
|
log("Arguments:");
|
|
27
74
|
log(" <item-id> Item id (matches items/<sourceId>/<item-id>.yaml)");
|
|
75
|
+
log(" Pass 2 or more ids to dismiss them in one call.");
|
|
76
|
+
log(" Omit positional ids with --batch — items are discovered.");
|
|
77
|
+
log("");
|
|
78
|
+
log("Options:");
|
|
79
|
+
log(" --batch Dismiss every item matching --status (and --filter-tags)");
|
|
80
|
+
log(` respecting the --max-items hard-cap (default: ${DISMISS_BATCH_DEFAULT_MAX_ITEMS}).`);
|
|
81
|
+
log(" --status <status> Batch-mode filter: detected | triaged_unsure (default: detected).");
|
|
82
|
+
log(" Only these two statuses can transition to `dismissed`");
|
|
83
|
+
log(" per the ADR-0008 / ADR-0018 state machine; other values");
|
|
84
|
+
log(" are rejected.");
|
|
85
|
+
log(` --max-items N Batch-mode hard-cap on processed items (default: ${DISMISS_BATCH_DEFAULT_MAX_ITEMS}).`);
|
|
86
|
+
log(" Excess items are dropped and announced via warn() so a runaway");
|
|
87
|
+
log(" --backfill cannot blow the cap from inside a workflow.");
|
|
88
|
+
log(" --filter-tags <list> Batch-mode comma-separated allow-list matched against");
|
|
89
|
+
log(" each item's matchedKeywords (case-insensitive). Default: all.");
|
|
28
90
|
log("");
|
|
29
|
-
log("Transitions the item's status
|
|
30
|
-
log("
|
|
91
|
+
log("Transitions the item's status to `dismissed` (ADR-0008). Valid from `detected`");
|
|
92
|
+
log("or `triaged_unsure`; items in `researched` / `reviewed` / `dismissed` /");
|
|
93
|
+
log("`triaged_research` / `triaged_digest` cannot be dismissed.");
|
|
31
94
|
log("");
|
|
32
95
|
log("Inverse: `radar undismiss <item-id> [--force]` (ADR-0018 §W6).");
|
|
33
96
|
}
|
|
34
|
-
|
|
97
|
+
/**
|
|
98
|
+
* Locate `items/<sourceId>/<item-id>.yaml` files for the given ids across all
|
|
99
|
+
* source directories. `loadItems` walks every source subdir, so the caller
|
|
100
|
+
* only needs `<item-id>` (sourceId is inferred from the loaded item).
|
|
101
|
+
*
|
|
102
|
+
* Returns the matched items in the requested order, or `{ missing }` for the
|
|
103
|
+
* first id that has no matching file.
|
|
104
|
+
*/
|
|
105
|
+
async function findItems(cwd, itemIds) {
|
|
106
|
+
const itemsDir = join(cwd, "items");
|
|
107
|
+
const all = await loadItems(itemsDir);
|
|
108
|
+
const byId = new Map(all.map((i) => [i.id, i]));
|
|
109
|
+
const matched = [];
|
|
110
|
+
for (const id of itemIds) {
|
|
111
|
+
const m = byId.get(id);
|
|
112
|
+
if (!m)
|
|
113
|
+
return { missing: id };
|
|
114
|
+
matched.push(m);
|
|
115
|
+
}
|
|
116
|
+
return { items: matched };
|
|
117
|
+
}
|
|
118
|
+
function parseMaxItems(raw, error) {
|
|
119
|
+
if (raw === undefined)
|
|
120
|
+
return DISMISS_BATCH_DEFAULT_MAX_ITEMS;
|
|
121
|
+
if (!/^[0-9]+$/.test(raw)) {
|
|
122
|
+
error(`dismiss: invalid --max-items '${raw}' (expected positive integer)`);
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
const n = Number.parseInt(raw, 10);
|
|
126
|
+
if (!Number.isFinite(n) || n <= 0) {
|
|
127
|
+
error(`dismiss: invalid --max-items '${raw}' (must be > 0)`);
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
return n;
|
|
131
|
+
}
|
|
132
|
+
function parseFilterTags(raw) {
|
|
133
|
+
if (raw === undefined || raw.trim() === "")
|
|
134
|
+
return [];
|
|
135
|
+
return [
|
|
136
|
+
...new Set(raw
|
|
137
|
+
.split(",")
|
|
138
|
+
.map((s) => s.trim().toLowerCase())
|
|
139
|
+
.filter((s) => s.length > 0)),
|
|
140
|
+
];
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Transition a resolved set of items to `dismissed` and persist them.
|
|
144
|
+
*
|
|
145
|
+
* Each item is re-checked against `isValidTransition(status, "dismissed")` —
|
|
146
|
+
* the ADR-0008 / ADR-0018 state machine SSoT — so a stale id (e.g. an item that
|
|
147
|
+
* moved past `detected` between discovery and write) is rejected with a
|
|
148
|
+
* user-friendly message rather than corrupted. The whole batch is validated
|
|
149
|
+
* before any write, so a single offending id fails the call without leaving a
|
|
150
|
+
* partial mutation behind.
|
|
151
|
+
*/
|
|
152
|
+
async function dismissItems(cwd, items, log, error) {
|
|
153
|
+
const offenders = items.filter((i) => !isValidTransition(i.status, "dismissed"));
|
|
154
|
+
if (offenders.length > 0) {
|
|
155
|
+
for (const item of offenders) {
|
|
156
|
+
error(`dismiss: item '${item.id}' is in status '${item.status}', expected one of ${DISMISS_ALLOWED_STATUSES.join(" | ")} (dismiss transitions to 'dismissed' only from these; ADR-0008 / ADR-0018). Valid next statuses for '${item.status}': ${allowedTransitions(item.status).join(", ") || "(none)"}`);
|
|
157
|
+
}
|
|
158
|
+
return 1;
|
|
159
|
+
}
|
|
160
|
+
const updated = items.map((item) => ({ ...item, status: "dismissed" }));
|
|
35
161
|
try {
|
|
36
|
-
await
|
|
37
|
-
return true;
|
|
162
|
+
await saveItems(join(cwd, "items"), updated);
|
|
38
163
|
}
|
|
39
|
-
catch {
|
|
40
|
-
|
|
164
|
+
catch (e) {
|
|
165
|
+
error(`dismiss: failed to update item status: ${e instanceof Error ? e.message : String(e)}`);
|
|
166
|
+
return 1;
|
|
41
167
|
}
|
|
168
|
+
for (const item of updated) {
|
|
169
|
+
log(`dismiss: items/${item.sourceId}/${item.id}.yaml status -> dismissed`);
|
|
170
|
+
}
|
|
171
|
+
return 0;
|
|
42
172
|
}
|
|
43
173
|
/**
|
|
44
|
-
*
|
|
174
|
+
* Implementation of `radar dismiss --batch` (#259).
|
|
45
175
|
*
|
|
46
|
-
* Mirrors
|
|
47
|
-
*
|
|
48
|
-
*
|
|
176
|
+
* Mirrors `research --batch` shape:
|
|
177
|
+
* 1. Validate `--status` against `DISMISS_ALLOWED_STATUSES`.
|
|
178
|
+
* 2. Load items, keep those whose status matches.
|
|
179
|
+
* 3. Apply `--filter-tags` allow-list (case-insensitive) against
|
|
180
|
+
* `matchedKeywords`.
|
|
181
|
+
* 4. Cap at `--max-items` (drops excess + warns).
|
|
182
|
+
* 5. Transition the selected items to `dismissed` in one write.
|
|
183
|
+
*
|
|
184
|
+
* Designed to absorb the large `detected` backlog produced by
|
|
185
|
+
* `radar watch run --backfill` without the user shelling out a per-id loop.
|
|
49
186
|
*/
|
|
50
|
-
async function
|
|
187
|
+
async function runDismissBatch(parsed, cwd, log, warn, error) {
|
|
188
|
+
if (parsed.itemIds.length > 0) {
|
|
189
|
+
error(`dismiss: --batch is incompatible with positional <item-id> arguments (got ${parsed.itemIds.length})`);
|
|
190
|
+
return 2;
|
|
191
|
+
}
|
|
192
|
+
const rawStatus = parsed.status ?? "detected";
|
|
193
|
+
if (!DISMISS_ALLOWED_STATUSES.includes(rawStatus)) {
|
|
194
|
+
error(`dismiss: invalid --status '${rawStatus}' (expected: ${DISMISS_ALLOWED_STATUSES.join(" | ")})`);
|
|
195
|
+
return 2;
|
|
196
|
+
}
|
|
197
|
+
const status = rawStatus;
|
|
198
|
+
const maxItems = parseMaxItems(parsed.maxItems, error);
|
|
199
|
+
if (maxItems === null)
|
|
200
|
+
return 2;
|
|
201
|
+
const filterTags = parseFilterTags(parsed.filterTags);
|
|
51
202
|
const itemsDir = join(cwd, "items");
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
203
|
+
const all = await loadItems(itemsDir);
|
|
204
|
+
const matches = all
|
|
205
|
+
.filter((it) => it.status === status)
|
|
206
|
+
.filter((it) => {
|
|
207
|
+
if (filterTags.length === 0)
|
|
208
|
+
return true;
|
|
209
|
+
const haystack = new Set(it.matchedKeywords.map((k) => k.toLowerCase()));
|
|
210
|
+
return filterTags.some((t) => haystack.has(t));
|
|
211
|
+
})
|
|
212
|
+
.sort((a, b) => {
|
|
213
|
+
const ap = a.publishedAt ?? a.fetchedAt;
|
|
214
|
+
const bp = b.publishedAt ?? b.fetchedAt;
|
|
215
|
+
if (ap !== bp)
|
|
216
|
+
return ap < bp ? -1 : 1;
|
|
217
|
+
return a.id.localeCompare(b.id);
|
|
218
|
+
});
|
|
219
|
+
if (matches.length === 0) {
|
|
220
|
+
log(`dismiss: no items matched --batch filters (status=${status}${filterTags.length > 0 ? `, tags=${filterTags.join(",")}` : ""})`);
|
|
221
|
+
return 0;
|
|
222
|
+
}
|
|
223
|
+
let selected = matches;
|
|
224
|
+
if (matches.length > maxItems) {
|
|
225
|
+
const dropped = matches.length - maxItems;
|
|
226
|
+
warn(`dismiss: --max-items ${maxItems} cap reached; dropping ${dropped} excess item(s) (matched ${matches.length})`);
|
|
227
|
+
selected = matches.slice(0, maxItems);
|
|
228
|
+
}
|
|
229
|
+
log(`dismiss: --batch will process ${selected.length} item(s) (status=${status}${filterTags.length > 0 ? `, tags=${filterTags.join(",")}` : ""}, cap=${maxItems})`);
|
|
230
|
+
const code = await dismissItems(cwd, selected, log, error);
|
|
231
|
+
if (code !== 0)
|
|
232
|
+
return code;
|
|
233
|
+
log(`dismiss: --batch completed ${selected.length} item(s)`);
|
|
234
|
+
return 0;
|
|
59
235
|
}
|
|
60
236
|
/**
|
|
61
|
-
* Implementation of `radar dismiss <item-id
|
|
237
|
+
* Implementation of `radar dismiss <item-id> [<item-id> ...]` and
|
|
238
|
+
* `radar dismiss --batch` (#259).
|
|
62
239
|
*
|
|
63
|
-
* Triggers the `detected → dismissed` state transition
|
|
64
|
-
* is intentionally agent-free: it only
|
|
65
|
-
* so users can prune noise from
|
|
240
|
+
* Triggers the `detected | triaged_unsure → dismissed` state transition
|
|
241
|
+
* (ADR-0008 / ADR-0018). The command is intentionally agent-free: it only
|
|
242
|
+
* mutates `items/<sourceId>/<item-id>.yaml` so users can prune noise from
|
|
243
|
+
* `watch run` output (including a `--backfill` backlog) without spending agent
|
|
66
244
|
* tokens.
|
|
67
245
|
*
|
|
68
246
|
* Flow:
|
|
69
247
|
* 1. Parse + validate args.
|
|
70
|
-
* 2.
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
* undismiss` — ADR-0018 §W6).
|
|
248
|
+
* 2. `--batch`: discover items by `--status` / `--filter-tags`.
|
|
249
|
+
* Otherwise: resolve the positional `<item-id>` arguments.
|
|
250
|
+
* 3. Reject any item not in a dismissible status (state-machine guard).
|
|
74
251
|
* 4. Write back with `status: dismissed`.
|
|
75
252
|
*/
|
|
76
253
|
export async function runDismiss(args, options = {}) {
|
|
77
254
|
const cwd = options.cwd ?? process.cwd();
|
|
78
255
|
const log = options.io?.log ?? ((m) => console.log(m));
|
|
256
|
+
const warn = options.io?.warn ?? ((m) => console.warn(m));
|
|
79
257
|
const error = options.io?.error ?? ((m) => console.error(m));
|
|
80
258
|
let parsed;
|
|
81
259
|
try {
|
|
@@ -89,37 +267,41 @@ export async function runDismiss(args, options = {}) {
|
|
|
89
267
|
printHelp(log);
|
|
90
268
|
return 0;
|
|
91
269
|
}
|
|
92
|
-
if (
|
|
93
|
-
|
|
94
|
-
|
|
270
|
+
if (parsed.batch) {
|
|
271
|
+
return runDismissBatch(parsed, cwd, log, warn, error);
|
|
272
|
+
}
|
|
273
|
+
// Surface the batch-only flags when used outside `--batch`; matches
|
|
274
|
+
// research/review's "no silent ignore" stance so a typo does not become a
|
|
275
|
+
// no-op.
|
|
276
|
+
if (parsed.status !== undefined) {
|
|
277
|
+
error("dismiss: --status requires --batch");
|
|
95
278
|
return 2;
|
|
96
279
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
return 1;
|
|
280
|
+
if (parsed.maxItems !== undefined) {
|
|
281
|
+
error("dismiss: --max-items requires --batch");
|
|
282
|
+
return 2;
|
|
101
283
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
return 1;
|
|
284
|
+
if (parsed.filterTags !== undefined) {
|
|
285
|
+
error("dismiss: --filter-tags requires --batch");
|
|
286
|
+
return 2;
|
|
106
287
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
await saveItems(join(cwd, "items"), [updated]);
|
|
288
|
+
if (parsed.itemIds.length === 0) {
|
|
289
|
+
error("dismiss: missing <item-id>");
|
|
290
|
+
printHelp(error);
|
|
291
|
+
return 2;
|
|
112
292
|
}
|
|
113
|
-
|
|
114
|
-
|
|
293
|
+
// De-dupe positional ids so `radar dismiss a a` does not double-process.
|
|
294
|
+
const uniqueIds = [...new Set(parsed.itemIds)];
|
|
295
|
+
const found = await findItems(cwd, uniqueIds);
|
|
296
|
+
if ("missing" in found) {
|
|
297
|
+
error(`dismiss: item '${found.missing}' not found under items/`);
|
|
115
298
|
return 1;
|
|
116
299
|
}
|
|
117
|
-
|
|
118
|
-
return 0;
|
|
300
|
+
return dismissItems(cwd, found.items, log, error);
|
|
119
301
|
}
|
|
120
302
|
export const dismissCommand = {
|
|
121
303
|
name: "dismiss",
|
|
122
|
-
summary: "Mark
|
|
304
|
+
summary: "Mark detected items as dismissed (single id, multiple ids, or --batch)",
|
|
123
305
|
run: (args) => runDismiss(args),
|
|
124
306
|
};
|
|
125
307
|
//# sourceMappingURL=dismiss.js.map
|
package/dist/cli/dismiss.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dismiss.js","sourceRoot":"","sources":["../../src/cli/dismiss.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"dismiss.js","sourceRoot":"","sources":["../../src/cli/dismiss.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"research.d.ts","sourceRoot":"","sources":["../../src/cli/research.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"research.d.ts","sourceRoot":"","sources":["../../src/cli/research.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAc5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;;;;;;;GAQG;AACH,eAAO,MAAM,gCAAgC,KAAK,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,+BAA+B,2CAA4C,CAAC;AAGzF,yFAAyF;AACzF,MAAM,WAAW,UAAU;IACzB,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,MAAM,WAAW,sBAAsB;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AA01BD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,MAAM,CAAC,CAmLjB;AAED,eAAO,MAAM,eAAe,EAAE,OAI7B,CAAC"}
|