nosedive 2026.9.3 → 2026.9.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.
- package/COMMANDS.md +28 -28
- package/dist/{chunk-4KAAM7JN.js → chunk-NWZNRCX6.js} +29 -14
- package/dist/cli.js +1 -1
- package/dist/nosedive.js +1 -1
- package/kb/2e5cd9a9-769a-5eda-8617-868c70f13757.md +12 -5
- package/package.json +1 -1
package/COMMANDS.md
CHANGED
|
@@ -18,7 +18,7 @@ Invoked directly by humans, or indirectly via agents.
|
|
|
18
18
|
#### [Add repo to feat](kb/16b4fee2-cc6c-5c29-9327-fde39a35b0a8.md)
|
|
19
19
|
|
|
20
20
|
```sh
|
|
21
|
-
npx -y nosedive@2026.9.
|
|
21
|
+
npx -y nosedive@2026.9.4 add-repo.feat --help
|
|
22
22
|
```
|
|
23
23
|
```md
|
|
24
24
|
Usage: nosedive add-repo.feat <repo-id-or-name> [--ref <ref>] [--work-branch <branch>]
|
|
@@ -31,7 +31,7 @@ More: nosedive render 16b4fee2-cc6c-5c29-9327-fde39a35b0a8
|
|
|
31
31
|
#### [Append log](kb/f29ec670-caea-5b77-ba51-c7dba1468b0b.md)
|
|
32
32
|
|
|
33
33
|
```sh
|
|
34
|
-
npx -y nosedive@2026.9.
|
|
34
|
+
npx -y nosedive@2026.9.4 append-log.dive --help
|
|
35
35
|
```
|
|
36
36
|
```md
|
|
37
37
|
Usage: nosedive append-log.dive [--label <text>] [--gist <line>] < body
|
|
@@ -44,7 +44,7 @@ More: nosedive render f29ec670-caea-5b77-ba51-c7dba1468b0b
|
|
|
44
44
|
#### [Bail](kb/337b18d6-1cca-57b5-8d26-bb6aef1f50e9.md)
|
|
45
45
|
|
|
46
46
|
```sh
|
|
47
|
-
npx -y nosedive@2026.9.
|
|
47
|
+
npx -y nosedive@2026.9.4 bail --help
|
|
48
48
|
```
|
|
49
49
|
```md
|
|
50
50
|
Usage: nosedive bail --reason "<why>"
|
|
@@ -57,7 +57,7 @@ More: nosedive render 337b18d6-1cca-57b5-8d26-bb6aef1f50e9
|
|
|
57
57
|
#### [Dehydrate repo](kb/32123800-a61d-5ea1-8b85-98c288b127b3.md)
|
|
58
58
|
|
|
59
59
|
```sh
|
|
60
|
-
npx -y nosedive@2026.9.
|
|
60
|
+
npx -y nosedive@2026.9.4 dehydrate-repo.workspace --help
|
|
61
61
|
```
|
|
62
62
|
```md
|
|
63
63
|
Usage: nosedive dehydrate-repo.workspace <repo-id-or-name-or-workspace-path> [--force]
|
|
@@ -70,7 +70,7 @@ More: nosedive render 32123800-a61d-5ea1-8b85-98c288b127b3
|
|
|
70
70
|
#### [Dump backlog](kb/cf4c3d4b-5b5c-5e5d-98e5-af659f591aa1.md)
|
|
71
71
|
|
|
72
72
|
```sh
|
|
73
|
-
npx -y nosedive@2026.9.
|
|
73
|
+
npx -y nosedive@2026.9.4 dump-backlog --help
|
|
74
74
|
```
|
|
75
75
|
```md
|
|
76
76
|
Usage: nosedive dump-backlog
|
|
@@ -83,12 +83,12 @@ More: nosedive render cf4c3d4b-5b5c-5e5d-98e5-af659f591aa1
|
|
|
83
83
|
#### [Find](kb/2e5cd9a9-769a-5eda-8617-868c70f13757.md)
|
|
84
84
|
|
|
85
85
|
```sh
|
|
86
|
-
npx -y nosedive@2026.9.
|
|
86
|
+
npx -y nosedive@2026.9.4 find --help
|
|
87
87
|
```
|
|
88
88
|
```md
|
|
89
|
-
Usage: nosedive find <role> [<term>] [--scope <repo>] [--min-age <duration>] [--max-age <duration>]
|
|
89
|
+
Usage: nosedive find <role> [<term>] [--kind <slug>] [--scope <repo>] [--min-age <duration>] [--max-age <duration>]
|
|
90
90
|
|
|
91
|
-
List backlog-reachable documents by role, optionally filtering by term, scope and age.
|
|
91
|
+
List backlog-reachable documents by role, optionally filtering by term, kind, scope and age.
|
|
92
92
|
|
|
93
93
|
More: nosedive render 2e5cd9a9-769a-5eda-8617-868c70f13757
|
|
94
94
|
```
|
|
@@ -96,7 +96,7 @@ More: nosedive render 2e5cd9a9-769a-5eda-8617-868c70f13757
|
|
|
96
96
|
#### [Hydrate repo](kb/c4e93002-2925-58bd-9b70-d917017a9fc7.md)
|
|
97
97
|
|
|
98
98
|
```sh
|
|
99
|
-
npx -y nosedive@2026.9.
|
|
99
|
+
npx -y nosedive@2026.9.4 hydrate-repo.workspace --help
|
|
100
100
|
```
|
|
101
101
|
```md
|
|
102
102
|
Usage: nosedive hydrate-repo.workspace <repo-id-or-name> [--at <ref>] [--read-only]
|
|
@@ -109,7 +109,7 @@ More: nosedive render c4e93002-2925-58bd-9b70-d917017a9fc7
|
|
|
109
109
|
#### [Jump](kb/f2373f5f-d30d-5d5d-967c-bef56346bbb9.md)
|
|
110
110
|
|
|
111
111
|
```sh
|
|
112
|
-
npx -y nosedive@2026.9.
|
|
112
|
+
npx -y nosedive@2026.9.4 jump --help
|
|
113
113
|
```
|
|
114
114
|
```md
|
|
115
115
|
Usage: nosedive jump [<dive-ref>]
|
|
@@ -122,7 +122,7 @@ More: nosedive render f2373f5f-d30d-5d5d-967c-bef56346bbb9
|
|
|
122
122
|
#### [Land](kb/587d3f73-2534-5179-b111-ce6c83d6814d.md)
|
|
123
123
|
|
|
124
124
|
```sh
|
|
125
|
-
npx -y nosedive@2026.9.
|
|
125
|
+
npx -y nosedive@2026.9.4 land --help
|
|
126
126
|
```
|
|
127
127
|
```md
|
|
128
128
|
Usage: nosedive land [--hard]
|
|
@@ -135,7 +135,7 @@ More: nosedive render 587d3f73-2534-5179-b111-ce6c83d6814d
|
|
|
135
135
|
#### [List dives](kb/116ff634-3742-51ba-977f-44fc5b21e9e4.md)
|
|
136
136
|
|
|
137
137
|
```sh
|
|
138
|
-
npx -y nosedive@2026.9.
|
|
138
|
+
npx -y nosedive@2026.9.4 list-dives --help
|
|
139
139
|
```
|
|
140
140
|
```md
|
|
141
141
|
Usage: nosedive list-dives [<feat-or-deck>] [--include-historical] [--json]
|
|
@@ -148,7 +148,7 @@ More: nosedive render 116ff634-3742-51ba-977f-44fc5b21e9e4
|
|
|
148
148
|
#### [Mint](kb/e8909eff-aee5-54f2-9ce2-85c2582e39f0.md)
|
|
149
149
|
|
|
150
150
|
```sh
|
|
151
|
-
npx -y nosedive@2026.9.
|
|
151
|
+
npx -y nosedive@2026.9.4 mint --help
|
|
152
152
|
```
|
|
153
153
|
```md
|
|
154
154
|
Usage: nosedive mint [count] [--ms <utcmillis>] [--ts <iso8601>]
|
|
@@ -161,7 +161,7 @@ More: nosedive render e8909eff-aee5-54f2-9ce2-85c2582e39f0
|
|
|
161
161
|
#### [Note](kb/6274f51e-664f-5b93-a828-52f699161e9a.md)
|
|
162
162
|
|
|
163
163
|
```sh
|
|
164
|
-
npx -y nosedive@2026.9.
|
|
164
|
+
npx -y nosedive@2026.9.4 note --help
|
|
165
165
|
```
|
|
166
166
|
```md
|
|
167
167
|
Usage: nosedive note [<kind>:] <gist words...> [--scope <repo>]... [--title <text>] [--body -]
|
|
@@ -174,7 +174,7 @@ More: nosedive render 6274f51e-664f-5b93-a828-52f699161e9a
|
|
|
174
174
|
#### [Nuke](kb/3570e756-f8e7-5e95-b911-09d7d116cd23.md)
|
|
175
175
|
|
|
176
176
|
```sh
|
|
177
|
-
npx -y nosedive@2026.9.
|
|
177
|
+
npx -y nosedive@2026.9.4 nuke --help
|
|
178
178
|
```
|
|
179
179
|
```md
|
|
180
180
|
Usage: nosedive nuke --config|--workspace
|
|
@@ -187,7 +187,7 @@ More: nosedive render 3570e756-f8e7-5e95-b911-09d7d116cd23
|
|
|
187
187
|
#### [Pack](kb/9e28155b-b018-5e00-a3a1-707593167e1e.md)
|
|
188
188
|
|
|
189
189
|
```sh
|
|
190
|
-
npx -y nosedive@2026.9.
|
|
190
|
+
npx -y nosedive@2026.9.4 pack --help
|
|
191
191
|
```
|
|
192
192
|
```md
|
|
193
193
|
Usage: nosedive pack
|
|
@@ -200,7 +200,7 @@ More: nosedive render 9e28155b-b018-5e00-a3a1-707593167e1e
|
|
|
200
200
|
#### [Plan](kb/162068fe-62ff-5f56-945a-76b24ffeb439.md)
|
|
201
201
|
|
|
202
202
|
```sh
|
|
203
|
-
npx -y nosedive@2026.9.
|
|
203
|
+
npx -y nosedive@2026.9.4 plan --help
|
|
204
204
|
```
|
|
205
205
|
```md
|
|
206
206
|
Usage: nosedive plan [<context>]
|
|
@@ -213,7 +213,7 @@ More: nosedive render 162068fe-62ff-5f56-945a-76b24ffeb439
|
|
|
213
213
|
#### [Preflight](kb/67187c8d-2e4e-5fc5-b8fd-d0805acd0f2e.md)
|
|
214
214
|
|
|
215
215
|
```sh
|
|
216
|
-
npx -y nosedive@2026.9.
|
|
216
|
+
npx -y nosedive@2026.9.4 preflight --help
|
|
217
217
|
```
|
|
218
218
|
```md
|
|
219
219
|
Usage: nosedive preflight
|
|
@@ -226,7 +226,7 @@ More: nosedive render 67187c8d-2e4e-5fc5-b8fd-d0805acd0f2e
|
|
|
226
226
|
#### [Record a dive](kb/c583519a-95c3-59e8-90fd-0d3003b4b8d1.md)
|
|
227
227
|
|
|
228
228
|
```sh
|
|
229
|
-
npx -y nosedive@2026.9.
|
|
229
|
+
npx -y nosedive@2026.9.4 record.dive --help
|
|
230
230
|
```
|
|
231
231
|
```md
|
|
232
232
|
Usage: nosedive record.dive [<dive>] [--ref <dive-ref>] [--feat <feat-ref>] [--effort <feat-ref>] [--gist <gist>] [--title <title>] [--brief <brief>] [--diver <email>] [--takeover] [--packer] [--clear-scopes] [--upscope <repo-ref>]... [--unscope <repo-ref>]... [--work-branch <branch>] [--repin [<ref>]] [--scope <repo-ref>] [--free]
|
|
@@ -239,7 +239,7 @@ More: nosedive render c583519a-95c3-59e8-90fd-0d3003b4b8d1
|
|
|
239
239
|
#### [Record a feat](kb/fb3d90e6-9dbf-5f1c-9919-6653d12fe085.md)
|
|
240
240
|
|
|
241
241
|
```sh
|
|
242
|
-
npx -y nosedive@2026.9.
|
|
242
|
+
npx -y nosedive@2026.9.4 record.feat --help
|
|
243
243
|
```
|
|
244
244
|
```md
|
|
245
245
|
Usage: nosedive record.feat [<feat>] [--gist <gist>] [--name <slug>] [--parent <feat>] [--no-parent] [--scope <repo-ref>]...
|
|
@@ -252,7 +252,7 @@ More: nosedive render fb3d90e6-9dbf-5f1c-9919-6653d12fe085
|
|
|
252
252
|
#### [Record a gate](kb/2c678acb-b4b8-5623-a900-12939da5d472.md)
|
|
253
253
|
|
|
254
254
|
```sh
|
|
255
|
-
npx -y nosedive@2026.9.
|
|
255
|
+
npx -y nosedive@2026.9.4 record.gate --help
|
|
256
256
|
```
|
|
257
257
|
```md
|
|
258
258
|
Usage: nosedive record.gate [<gate>] [--gist <gist>] [--feat <feat-ref>] [--repo <repo-ref>] [--name <slug>] [--height <n>] [--flaky] [--no-flaky] [--note <text>] [--no-note] [--action <test|land>]
|
|
@@ -265,7 +265,7 @@ More: nosedive render 2c678acb-b4b8-5623-a900-12939da5d472
|
|
|
265
265
|
#### [Record a repo](kb/6640f6d5-567d-51bd-b2ba-6239a7a58707.md)
|
|
266
266
|
|
|
267
267
|
```sh
|
|
268
|
-
npx -y nosedive@2026.9.
|
|
268
|
+
npx -y nosedive@2026.9.4 record.repo --help
|
|
269
269
|
```
|
|
270
270
|
```md
|
|
271
271
|
Usage: nosedive record.repo [<repo>] [--remote <clone-url-or-local-path>] [--url <page-url>] [--name <slug>] [--base-branch <branch>]
|
|
@@ -278,7 +278,7 @@ More: nosedive render 6640f6d5-567d-51bd-b2ba-6239a7a58707
|
|
|
278
278
|
#### [Render](kb/9b0241b2-f03f-5594-a537-60a3b4372ee9.md)
|
|
279
279
|
|
|
280
280
|
```sh
|
|
281
|
-
npx -y nosedive@2026.9.
|
|
281
|
+
npx -y nosedive@2026.9.4 render --help
|
|
282
282
|
```
|
|
283
283
|
```md
|
|
284
284
|
Usage: nosedive render <uuid> [--gist]
|
|
@@ -291,7 +291,7 @@ More: nosedive render 9b0241b2-f03f-5594-a537-60a3b4372ee9
|
|
|
291
291
|
#### [Scan](kb/88bf4e10-3fd7-58c0-a247-f2dae9c886e3.md)
|
|
292
292
|
|
|
293
293
|
```sh
|
|
294
|
-
npx -y nosedive@2026.9.
|
|
294
|
+
npx -y nosedive@2026.9.4 scan --help
|
|
295
295
|
```
|
|
296
296
|
```md
|
|
297
297
|
Usage: nosedive scan --repo <repo-id-or-name>
|
|
@@ -304,7 +304,7 @@ More: nosedive render 88bf4e10-3fd7-58c0-a247-f2dae9c886e3
|
|
|
304
304
|
#### [Seed](kb/34c8e9fb-9629-5767-9a81-914f78c63b68.md)
|
|
305
305
|
|
|
306
306
|
```sh
|
|
307
|
-
npx -y nosedive@2026.9.
|
|
307
|
+
npx -y nosedive@2026.9.4 seed --help
|
|
308
308
|
```
|
|
309
309
|
```md
|
|
310
310
|
Usage: nosedive seed [--file <path>]... [--headless] [--no-push]
|
|
@@ -317,7 +317,7 @@ More: nosedive render 34c8e9fb-9629-5767-9a81-914f78c63b68
|
|
|
317
317
|
#### [Test](kb/1e62a79d-4e06-552d-be5a-4c59c85f86bf.md)
|
|
318
318
|
|
|
319
319
|
```sh
|
|
320
|
-
npx -y nosedive@2026.9.
|
|
320
|
+
npx -y nosedive@2026.9.4 test --help
|
|
321
321
|
```
|
|
322
322
|
```md
|
|
323
323
|
Usage: nosedive test [--full] [--via <doc-ref>] [<gate-ref>...]
|
|
@@ -330,7 +330,7 @@ More: nosedive render 1e62a79d-4e06-552d-be5a-4c59c85f86bf
|
|
|
330
330
|
#### [Update backlog](kb/f5a5a431-dca3-5e3c-ae84-feb8cd64e96b.md)
|
|
331
331
|
|
|
332
332
|
```sh
|
|
333
|
-
npx -y nosedive@2026.9.
|
|
333
|
+
npx -y nosedive@2026.9.4 update-backlog --help
|
|
334
334
|
```
|
|
335
335
|
```md
|
|
336
336
|
Usage: nosedive update-backlog [--inject <ref>]...
|
|
@@ -343,7 +343,7 @@ More: nosedive render f5a5a431-dca3-5e3c-ae84-feb8cd64e96b
|
|
|
343
343
|
#### [Whoami](kb/a40303c1-1362-523f-b095-49178354f878.md)
|
|
344
344
|
|
|
345
345
|
```sh
|
|
346
|
-
npx -y nosedive@2026.9.
|
|
346
|
+
npx -y nosedive@2026.9.4 whoami --help
|
|
347
347
|
```
|
|
348
348
|
```md
|
|
349
349
|
Usage: nosedive whoami
|
|
@@ -694,8 +694,7 @@ function posixRelPath(from, to) {
|
|
|
694
694
|
return relative2(from, to).replaceAll("\\", "/");
|
|
695
695
|
}
|
|
696
696
|
function featDocTitle(doc, leafSlug2) {
|
|
697
|
-
|
|
698
|
-
return firstMarkdownHeading(body, titleFromSlug(leafSlug2));
|
|
697
|
+
return doc.h1 ?? titleFromSlug(leafSlug2);
|
|
699
698
|
}
|
|
700
699
|
function backlogDocTitle(doc) {
|
|
701
700
|
return featDocTitle(doc, doc.name.split(".").filter(Boolean)[0] ?? doc.id);
|
|
@@ -1084,11 +1083,12 @@ function readKbDoc(path, bridgeDir) {
|
|
|
1084
1083
|
// `featRef` below, so every `doc.kind === "feat"` check downstream (dive
|
|
1085
1084
|
// ownership, gate feats, repo-feat scoping) works with bridges that still
|
|
1086
1085
|
// spell it the old way.
|
|
1087
|
-
kind: fm.scalars.kind === "effort" ? "feat" : fm.scalars.kind,
|
|
1086
|
+
kind: fm.scalars.kind === "effort" ? "feat" : fm.scalars.kind ?? "unclassified",
|
|
1088
1087
|
// A doc with no `gist:` has no gist, not the string `undefined`:
|
|
1089
1088
|
// the field is typed as present, so every reader would
|
|
1090
1089
|
// otherwise have to guard a value the type says cannot happen.
|
|
1091
1090
|
gist: fm.scalars.gist ?? "",
|
|
1091
|
+
h1: /^#\s+(.+?)\s*$/m.exec(text)?.[1]?.trim() || void 0,
|
|
1092
1092
|
hasBrief: DIVE_BRIEF_HEADING_PATTERN.test(text),
|
|
1093
1093
|
lastLog: latestLoggedSection(text),
|
|
1094
1094
|
repoPath: kbMetaPath(fm.nested.meta?.path),
|
|
@@ -9317,12 +9317,13 @@ function parseFindArgs(args, io) {
|
|
|
9317
9317
|
let minAgeMs;
|
|
9318
9318
|
let maxAgeMs;
|
|
9319
9319
|
const scopes = [];
|
|
9320
|
+
const kinds = [];
|
|
9320
9321
|
const positional = [];
|
|
9321
9322
|
for (let index = 0; index < args.length; index += 1) {
|
|
9322
9323
|
const arg = args[index];
|
|
9323
9324
|
if (arg === "-h" || arg === "--help") {
|
|
9324
9325
|
printCommandHelp("find", io);
|
|
9325
|
-
return { help: true, scopes };
|
|
9326
|
+
return { help: true, scopes, kinds };
|
|
9326
9327
|
}
|
|
9327
9328
|
if (arg === "--min-age") {
|
|
9328
9329
|
minAgeMs = parseAge(arg, args[++index]);
|
|
@@ -9338,6 +9339,12 @@ function parseFindArgs(args, io) {
|
|
|
9338
9339
|
scopes.push(value);
|
|
9339
9340
|
continue;
|
|
9340
9341
|
}
|
|
9342
|
+
if (arg === "--kind") {
|
|
9343
|
+
const value = args[++index];
|
|
9344
|
+
if (!value) throw new Error("find --kind requires a kind");
|
|
9345
|
+
kinds.push(assertSlug(value, "find --kind"));
|
|
9346
|
+
continue;
|
|
9347
|
+
}
|
|
9341
9348
|
if (arg.startsWith("--")) throw new Error(`unknown find option: ${arg}`);
|
|
9342
9349
|
positional.push(arg);
|
|
9343
9350
|
}
|
|
@@ -9348,7 +9355,7 @@ function parseFindArgs(args, io) {
|
|
|
9348
9355
|
throw new Error(`unsupported find role: ${role} (expected dive, feat, gate, repo, or note)`);
|
|
9349
9356
|
if (minAgeMs !== void 0 && maxAgeMs !== void 0 && minAgeMs >= maxAgeMs)
|
|
9350
9357
|
throw new Error("find --min-age must be shorter than --max-age");
|
|
9351
|
-
return { role, term, minAgeMs, maxAgeMs, scopes, help: false };
|
|
9358
|
+
return { role, term, minAgeMs, maxAgeMs, scopes, kinds, help: false };
|
|
9352
9359
|
}
|
|
9353
9360
|
function ageMs(bridgeDir, doc) {
|
|
9354
9361
|
const path = toPosixPath(relative22(bridgeDir, doc.path));
|
|
@@ -9401,8 +9408,8 @@ function findDocs(root, docs, role, term, bridgeDir, options) {
|
|
|
9401
9408
|
}
|
|
9402
9409
|
const normalized = term ? slugFromGist(term, Number.MAX_SAFE_INTEGER) : void 0;
|
|
9403
9410
|
if (term && !normalized) return [];
|
|
9404
|
-
return [...selected.entries()].map(([id, declaredBy]) => ({ doc: byId.get(id), declaredBy })).filter(
|
|
9405
|
-
({ doc }) => !normalized || doc.name.includes(normalized) || Boolean(slugFromGist(doc.gist, Number.MAX_SAFE_INTEGER)?.includes(normalized))
|
|
9411
|
+
return [...selected.entries()].map(([id, declaredBy]) => ({ doc: byId.get(id), declaredBy })).filter(({ doc }) => options.kinds.length === 0 || options.kinds.includes(doc.kind)).filter(
|
|
9412
|
+
({ doc }) => !normalized || doc.name.includes(normalized) || Boolean(slugFromGist(doc.gist, Number.MAX_SAFE_INTEGER)?.includes(normalized)) || Boolean(slugFromGist(doc.h1 ?? "", Number.MAX_SAFE_INTEGER)?.includes(normalized))
|
|
9406
9413
|
).filter(
|
|
9407
9414
|
({ doc, declaredBy }) => scopeIds.size === 0 || effectiveScopes(doc, declaredBy).some((scope) => scopeIds.has(scope.repoId))
|
|
9408
9415
|
).map(({ doc }) => doc).filter((doc) => {
|
|
@@ -9416,12 +9423,19 @@ function renderFindResults(role, docs) {
|
|
|
9416
9423
|
const heading = `${role.slice(0, 1).toUpperCase()}${role.slice(1)}s`;
|
|
9417
9424
|
const lines = [`## ${heading}`, ""];
|
|
9418
9425
|
if (docs.length === 0) lines.push("No matches.");
|
|
9419
|
-
else
|
|
9420
|
-
|
|
9421
|
-
|
|
9422
|
-
|
|
9423
|
-
)
|
|
9424
|
-
|
|
9426
|
+
else {
|
|
9427
|
+
const byKind = /* @__PURE__ */ new Map();
|
|
9428
|
+
for (const doc of docs) byKind.set(doc.kind, [...byKind.get(doc.kind) ?? [], doc]);
|
|
9429
|
+
for (const [index, kind] of [...byKind.keys()].sort((left, right) => left.localeCompare(right)).entries()) {
|
|
9430
|
+
if (index > 0) lines.push("");
|
|
9431
|
+
lines.push(`### ${kind}`, "");
|
|
9432
|
+
lines.push(
|
|
9433
|
+
...(byKind.get(kind) ?? []).map(
|
|
9434
|
+
(doc) => `- [${backlogDocTitle(doc)}](${doc.relPath})${doc.gist ? `: ${doc.gist}` : ""}`
|
|
9435
|
+
)
|
|
9436
|
+
);
|
|
9437
|
+
}
|
|
9438
|
+
}
|
|
9425
9439
|
return lines;
|
|
9426
9440
|
}
|
|
9427
9441
|
|
|
@@ -9440,7 +9454,8 @@ function run33(args, _runtime) {
|
|
|
9440
9454
|
const found = findDocs(root, docs, options.role, options.term, rc.bridgeDir, {
|
|
9441
9455
|
minAgeMs: options.minAgeMs,
|
|
9442
9456
|
maxAgeMs: options.maxAgeMs,
|
|
9443
|
-
scopeIds: resolveFindScopes(docs, options.scopes)
|
|
9457
|
+
scopeIds: resolveFindScopes(docs, options.scopes),
|
|
9458
|
+
kinds: options.kinds
|
|
9444
9459
|
});
|
|
9445
9460
|
for (const line of renderFindResults(options.role, found)) io.log(line);
|
|
9446
9461
|
}, args);
|
package/dist/cli.js
CHANGED
package/dist/nosedive.js
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
kind: command
|
|
3
3
|
id: 2e5cd9a9-769a-5eda-8617-868c70f13757
|
|
4
4
|
name: find@2
|
|
5
|
-
gist: "List backlog-reachable documents by role, optionally filtering by term, scope and age."
|
|
5
|
+
gist: "List backlog-reachable documents by role, optionally filtering by term, kind, scope and age."
|
|
6
6
|
scopes: []
|
|
7
7
|
meta:
|
|
8
|
-
usage: nosedive find <role> [<term>] [--scope <repo>] [--min-age <duration>] [--max-age <duration>]
|
|
8
|
+
usage: nosedive find <role> [<term>] [--kind <slug>] [--scope <repo>] [--min-age <duration>] [--max-age <duration>]
|
|
9
9
|
adapter: kb/artifacts/2e5cd9a9-769a-5eda-8617-868c70f13757.mjs
|
|
10
10
|
entrypoint: L2__find
|
|
11
11
|
---
|
|
@@ -17,9 +17,16 @@ whose relation ends in the requested role. The backlog's scoped repos are
|
|
|
17
17
|
walked too, so the notes and gates a repo carries are reachable, and they are
|
|
18
18
|
themselves what `find repo` lists -- a repo is named by the backlog's `scopes:`,
|
|
19
19
|
never by a link, so no relation could ever select one. Duplicate targets print
|
|
20
|
-
once. With a term, keep documents whose name
|
|
21
|
-
slugified term. Matches
|
|
22
|
-
|
|
20
|
+
once. With a term, keep documents whose name, slugified gist, or H1 contains
|
|
21
|
+
the slugified term. Matches group under their kind, alphabetically, with the
|
|
22
|
+
existing path order kept within each group. Each match renders as a markdown
|
|
23
|
+
link titled by the document's H1, or by its name where it has none. A document
|
|
24
|
+
without `kind:` is grouped as `unclassified`; legacy `kind: effort` documents
|
|
25
|
+
remain `feat` documents when read.
|
|
26
|
+
|
|
27
|
+
`--kind <slug>` may be repeated and keeps documents whose own `kind:` matches
|
|
28
|
+
any supplied slug. Kinds are open-ended, so a valid kind not present in the
|
|
29
|
+
selected role simply prints `No matches.` rather than guessing a closed list.
|
|
23
30
|
|
|
24
31
|
`--scope <repo>` takes a repo name or id, may be repeated, and keeps a document
|
|
25
32
|
that scopes any of the named repos. It also limits which repos are walked.
|