@floh-solutions/pharos-cli 0.13.0 → 0.15.0
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/dist/cli.d.ts +12 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +114 -22
- package/dist/cli.js.map +1 -1
- package/dist/commands/catalog.d.ts +72 -0
- package/dist/commands/catalog.d.ts.map +1 -0
- package/dist/commands/catalog.js +327 -0
- package/dist/commands/catalog.js.map +1 -0
- package/dist/commands/link.d.ts +2 -0
- package/dist/commands/link.d.ts.map +1 -1
- package/dist/commands/link.js +141 -2
- package/dist/commands/link.js.map +1 -1
- package/dist/commands/task.js +14 -0
- package/dist/commands/task.js.map +1 -1
- package/package.json +1 -1
- package/skill/SKILL.md +114 -3
package/dist/cli.d.ts
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import type { AdoClient } from "@floh-solutions/ado-core";
|
|
2
2
|
import { type ExitCode } from "./output.js";
|
|
3
|
+
/**
|
|
4
|
+
* Every command this file dispatches — **one list, used by both the sentence and
|
|
5
|
+
* the machine-readable field.**
|
|
6
|
+
*
|
|
7
|
+
* It was two hand-maintained copies and they had drifted: `people`, `image` and
|
|
8
|
+
* `detach` were dispatched, documented in the skill, and missing from both. A
|
|
9
|
+
* recon agent that mistyped a verb read that list, saw three documented commands
|
|
10
|
+
* absent, and started doubting the skill rather than its own typo — which is the
|
|
11
|
+
* expensive kind of wrong. Anything added to the switch belongs here, and the
|
|
12
|
+
* test below fails if it does not.
|
|
13
|
+
*/
|
|
14
|
+
export declare const COMMANDS: readonly ["setup", "whoami", "query", "task", "types", "history", "iterations", "areas", "links", "fields", "create", "update", "link", "unlink", "delete", "restore", "deleted", "attach", "detach", "download", "image", "people", "wiki", "comment", "hooks", "plan"];
|
|
3
15
|
export interface RunOptions {
|
|
4
16
|
argv: string[];
|
|
5
17
|
cwd: string;
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AA0B1D,OAAO,EAKL,KAAK,QAAQ,EAEd,MAAM,aAAa,CAAC;AAyBrB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,0QAMX,CAAC;AAoRX,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,gDAAgD;IAChD,SAAS,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAChD,+EAA+E;IAC/E,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CAChC;AAED,wBAAsB,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAOhE"}
|
package/dist/cli.js
CHANGED
|
@@ -4,6 +4,7 @@ import { parseArgs } from "node:util";
|
|
|
4
4
|
import { run as runPlanToBoard } from "@floh-solutions/plan-to-board";
|
|
5
5
|
import { DEFAULT_WRITE_BUDGET, WriteBudget } from "./budget.js";
|
|
6
6
|
import { runAttach } from "./commands/attach.js";
|
|
7
|
+
import { runClassification, runFields, runHistory, runLinkTypes, } from "./commands/catalog.js";
|
|
7
8
|
import { runComment } from "./commands/comment.js";
|
|
8
9
|
import { runCreate } from "./commands/create.js";
|
|
9
10
|
import { runDetach } from "./commands/detach.js";
|
|
@@ -40,6 +41,24 @@ const GLOBAL_OPTIONS = {
|
|
|
40
41
|
help: { type: "boolean", short: "h" },
|
|
41
42
|
version: { type: "boolean" },
|
|
42
43
|
};
|
|
44
|
+
/**
|
|
45
|
+
* Every command this file dispatches — **one list, used by both the sentence and
|
|
46
|
+
* the machine-readable field.**
|
|
47
|
+
*
|
|
48
|
+
* It was two hand-maintained copies and they had drifted: `people`, `image` and
|
|
49
|
+
* `detach` were dispatched, documented in the skill, and missing from both. A
|
|
50
|
+
* recon agent that mistyped a verb read that list, saw three documented commands
|
|
51
|
+
* absent, and started doubting the skill rather than its own typo — which is the
|
|
52
|
+
* expensive kind of wrong. Anything added to the switch belongs here, and the
|
|
53
|
+
* test below fails if it does not.
|
|
54
|
+
*/
|
|
55
|
+
export const COMMANDS = [
|
|
56
|
+
"setup", "whoami", "query", "task", "types",
|
|
57
|
+
"history", "iterations", "areas", "links", "fields",
|
|
58
|
+
"create", "update", "link", "unlink", "delete", "restore", "deleted",
|
|
59
|
+
"attach", "detach", "download", "image", "people",
|
|
60
|
+
"wiki", "comment", "hooks", "plan",
|
|
61
|
+
];
|
|
43
62
|
/** Where long text comes from, for the verbs that take some. */
|
|
44
63
|
const CONTENT_OPTIONS = {
|
|
45
64
|
text: { type: "string" },
|
|
@@ -123,6 +142,40 @@ COMMANDS
|
|
|
123
142
|
--no-wiki-comments do not fetch comments on linked pages
|
|
124
143
|
--no-related-titles ids only; skip the batch that names them
|
|
125
144
|
|
|
145
|
+
history <id> What CHANGED on a work item, newest first —
|
|
146
|
+
field by field, with who and when. Reads
|
|
147
|
+
/updates (the diff) rather than /revisions
|
|
148
|
+
(snapshots you would have to diff yourself).
|
|
149
|
+
--top <n> default 20
|
|
150
|
+
--all include the bookkeeping fields that change on
|
|
151
|
+
every revision (System.Rev, dates, watermark)
|
|
152
|
+
|
|
153
|
+
iterations The sprints, with their start and finish dates
|
|
154
|
+
areas The areas. Both print TWO paths, and the
|
|
155
|
+
difference matters: 'path' is the
|
|
156
|
+
classification node (\\Proj\\Iteration\\Sprint 1),
|
|
157
|
+
'fieldPath' is what System.IterationPath and
|
|
158
|
+
--sprint actually take (Proj\\Sprint 1).
|
|
159
|
+
Passing the node path is a 400 that reads as
|
|
160
|
+
though the sprint does not exist.
|
|
161
|
+
--depth <n> how far down the tree; default 3
|
|
162
|
+
|
|
163
|
+
links Every relation type this ORGANISATION has, and
|
|
164
|
+
which --flag reaches it. link/unlink name six;
|
|
165
|
+
an org typically has eighteen work item link
|
|
166
|
+
types, so this is how you find the rest.
|
|
167
|
+
|
|
168
|
+
fields What a field will ACCEPT — allowed values,
|
|
169
|
+
type, read-only, required. 'types' answers this
|
|
170
|
+
for State and nothing else; Priority's range
|
|
171
|
+
and Activity's options are process
|
|
172
|
+
configuration, not constants.
|
|
173
|
+
--type <name> scope to a work item type. STRONGLY preferred:
|
|
174
|
+
allowed values belong to the type, not the
|
|
175
|
+
project
|
|
176
|
+
--constrained only fields with a fixed value set — the ones
|
|
177
|
+
you can get wrong
|
|
178
|
+
|
|
126
179
|
create <type> --title <text> One work item, in one call. --parent goes into
|
|
127
180
|
the SAME patch, so a child is never briefly an
|
|
128
181
|
orphan. Same flag names as update.
|
|
@@ -130,6 +183,12 @@ COMMANDS
|
|
|
130
183
|
--field <Name=value> repeatable
|
|
131
184
|
--text/--file/--stdin the description, written as Markdown
|
|
132
185
|
|
|
186
|
+
--wiki-page <path> link a WIKI PAGE to the work item instead of
|
|
187
|
+
another item. This is what makes a plan
|
|
188
|
+
findable by 'task', which reads linked pages
|
|
189
|
+
and their discussion. NOT --wiki, which is the
|
|
190
|
+
global flag naming which wiki to use.
|
|
191
|
+
|
|
133
192
|
link <id> --parent <id> Relate two work items. One relationship per
|
|
134
193
|
unlink <id> --parent <id> call — each is its own revision, so a partial
|
|
135
194
|
failure could not be reported honestly.
|
|
@@ -367,23 +426,30 @@ async function dispatch(io, options) {
|
|
|
367
426
|
: command === "link" || command === "unlink"
|
|
368
427
|
? {
|
|
369
428
|
...Object.fromEntries(Object.keys(LINK_KINDS).map((kind) => [kind, { type: "string" }])),
|
|
429
|
+
"wiki-page": { type: "string" },
|
|
370
430
|
comment: { type: "string" },
|
|
371
431
|
}
|
|
372
432
|
: command === "deleted"
|
|
373
433
|
? { top: { type: "string" } }
|
|
374
|
-
: command === "
|
|
375
|
-
? {
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
434
|
+
: command === "history"
|
|
435
|
+
? { top: { type: "string" }, all: { type: "boolean" } }
|
|
436
|
+
: command === "iterations" || command === "areas"
|
|
437
|
+
? { depth: { type: "string" } }
|
|
438
|
+
: command === "fields"
|
|
439
|
+
? { type: { type: "string" }, constrained: { type: "boolean" } }
|
|
440
|
+
: command === "hooks"
|
|
441
|
+
? {
|
|
442
|
+
hub: { type: "string" },
|
|
443
|
+
user: { type: "string" },
|
|
444
|
+
password: { type: "string" },
|
|
445
|
+
}
|
|
446
|
+
: command === "setup"
|
|
447
|
+
? {
|
|
448
|
+
print: { type: "boolean" },
|
|
449
|
+
stdin: { type: "boolean" },
|
|
450
|
+
skill: { type: "boolean" },
|
|
451
|
+
}
|
|
452
|
+
: CONTENT_OPTIONS;
|
|
387
453
|
const { values, positionals } = parse(options.argv, { ...GLOBAL_OPTIONS, ...extras });
|
|
388
454
|
if (values["version"] === true)
|
|
389
455
|
return emitText(io, await version(options.cwd));
|
|
@@ -482,6 +548,24 @@ async function dispatch(io, options) {
|
|
|
482
548
|
return runRestore(io, session, rest);
|
|
483
549
|
case "deleted":
|
|
484
550
|
return runDeleted(io, session, { top: top(values["top"]) ?? 50 });
|
|
551
|
+
case "history":
|
|
552
|
+
return runHistory(io, session, rest, {
|
|
553
|
+
top: top(values["top"]) ?? 20,
|
|
554
|
+
all: values["all"] === true,
|
|
555
|
+
});
|
|
556
|
+
case "iterations":
|
|
557
|
+
return runClassification(io, session, "Iterations", {
|
|
558
|
+
depth: top(values["depth"]) ?? 3,
|
|
559
|
+
});
|
|
560
|
+
case "areas":
|
|
561
|
+
return runClassification(io, session, "Areas", { depth: top(values["depth"]) ?? 3 });
|
|
562
|
+
case "links":
|
|
563
|
+
return runLinkTypes(io, session);
|
|
564
|
+
case "fields":
|
|
565
|
+
return runFields(io, session, {
|
|
566
|
+
type: asString(values["type"]),
|
|
567
|
+
constrained: values["constrained"] === true,
|
|
568
|
+
});
|
|
485
569
|
case "task":
|
|
486
570
|
return runTask(io, session, rest, {
|
|
487
571
|
wikiContent: values["no-wiki-content"] !== true,
|
|
@@ -524,14 +608,7 @@ async function dispatch(io, options) {
|
|
|
524
608
|
password: asString(values["password"]),
|
|
525
609
|
});
|
|
526
610
|
default:
|
|
527
|
-
throw usageError(`Unknown command "${command}". Try
|
|
528
|
-
+ "link, unlink, attach, download, delete, restore, deleted, wiki, comment, hooks or plan.", {
|
|
529
|
-
commands: [
|
|
530
|
-
"setup", "whoami", "query", "task", "types", "create", "update", "link", "unlink",
|
|
531
|
-
"attach", "download", "delete", "restore", "deleted", "wiki", "comment", "hooks",
|
|
532
|
-
"plan",
|
|
533
|
-
],
|
|
534
|
-
});
|
|
611
|
+
throw usageError(`Unknown command "${command}". Try ${COMMANDS.slice(0, -1).join(", ")} or ${COMMANDS.at(-1)}.`, { commands: COMMANDS });
|
|
535
612
|
}
|
|
536
613
|
}
|
|
537
614
|
/**
|
|
@@ -651,7 +728,22 @@ function linkOptions(values) {
|
|
|
651
728
|
for (const kind of Object.keys(LINK_KINDS)) {
|
|
652
729
|
kinds[kind] = workItemRef(values[kind], `--${kind}`);
|
|
653
730
|
}
|
|
654
|
-
|
|
731
|
+
// `--wiki-page`, NOT `--wiki`: `--wiki <name>` is a GLOBAL flag naming which
|
|
732
|
+
// wiki to work in, and reusing it here shadowed it — `link 39 --wiki /Guides`
|
|
733
|
+
// was read as "the wiki called /Guides" and refused with "No wiki called
|
|
734
|
+
// /Guides in this project." Caught by running it, which is the only way a
|
|
735
|
+
// collision like this shows up.
|
|
736
|
+
const wiki = asString(values["wiki-page"]);
|
|
737
|
+
// Both would be two links in two revisions, and a partial failure would leave
|
|
738
|
+
// one made with no way to tell which — the same reason `soleKind` refuses two
|
|
739
|
+
// work item kinds at once.
|
|
740
|
+
if (wiki !== undefined) {
|
|
741
|
+
const alsoGiven = Object.entries(kinds).filter(([, id]) => id !== undefined);
|
|
742
|
+
if (alsoGiven.length > 0) {
|
|
743
|
+
throw usageError(`One relationship at a time; got --wiki-page and ${alsoGiven.map(([f]) => `--${f}`).join(" and ")}.`);
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
return { kinds, wiki, comment: asString(values["comment"]) };
|
|
655
747
|
}
|
|
656
748
|
/** `--expect-rev`, which is only useful if it is a real revision. */
|
|
657
749
|
function expectRev(raw) {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { type ExitCode, type Io } from "../output.js";
|
|
2
|
+
import type { Session } from "../session.js";
|
|
3
|
+
export interface HistoryOptions {
|
|
4
|
+
top: number;
|
|
5
|
+
/** Show every field, including the bookkeeping ones. */
|
|
6
|
+
all: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* `pharos history <id>` — what changed, when, and who did it.
|
|
10
|
+
*
|
|
11
|
+
* **`/updates`, not `/revisions`.** A revision is a full snapshot of the item
|
|
12
|
+
* at a point in time, so answering "what changed" from revisions means diffing
|
|
13
|
+
* them yourself, N times, client-side. `/updates` is the diff — Azure DevOps
|
|
14
|
+
* hands back `oldValue`/`newValue` per field per revision, which is the shape
|
|
15
|
+
* of the question actually being asked.
|
|
16
|
+
*/
|
|
17
|
+
export declare function runHistory(io: Io, session: Session, positionals: readonly string[], options: HistoryOptions): Promise<ExitCode>;
|
|
18
|
+
export interface ClassificationOptions {
|
|
19
|
+
depth: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* `pharos iterations` and `pharos areas`.
|
|
23
|
+
*
|
|
24
|
+
* **The dates are the reason this exists.** `query --sprint "Sprint 1"` could
|
|
25
|
+
* always FILTER by an iteration, but nothing could list them or say when one
|
|
26
|
+
* runs — so "which sprint are we in" and "how long is left" were unanswerable
|
|
27
|
+
* without the web UI. Both are attributes on the classification node and both
|
|
28
|
+
* come back here.
|
|
29
|
+
*
|
|
30
|
+
* ## Two spellings of the same sprint, and only one of them works
|
|
31
|
+
*
|
|
32
|
+
* A classification NODE path is `\Tibata\Iteration\Sprint 1`. The FIELD value
|
|
33
|
+
* on a work item is `Tibata\Sprint 1` — no `Iteration` segment. Passing the
|
|
34
|
+
* node path to `System.IterationPath` is a 400 that reads as though the sprint
|
|
35
|
+
* does not exist. Both are printed for exactly that reason: `path` is the node,
|
|
36
|
+
* `fieldPath` is what `--sprint` and `--field System.IterationPath=` take.
|
|
37
|
+
*/
|
|
38
|
+
export declare function runClassification(io: Io, session: Session, kind: "Iterations" | "Areas", options: ClassificationOptions): Promise<ExitCode>;
|
|
39
|
+
/**
|
|
40
|
+
* `pharos links` — every relation type this organisation actually has.
|
|
41
|
+
*
|
|
42
|
+
* **`link` knows six; this org has eighteen.** The six are the ones worth a
|
|
43
|
+
* named flag, and they are not the whole vocabulary — measured on the live org:
|
|
44
|
+
* 21 relation types, 18 of them work item links, so twelve are unreachable by
|
|
45
|
+
* flag including `Affects`, `TestedBy`, the whole `Remote.*` family, and
|
|
46
|
+
* `Duplicate-Reverse` (an outright asymmetry, since `Duplicate-Forward` has a
|
|
47
|
+
* flag). Without this verb there was no way to find that out from the shell.
|
|
48
|
+
*
|
|
49
|
+
* The output marks which ones `link`/`unlink` can reach, so the answer to "can
|
|
50
|
+
* I make this link" is in the same reply as "does this link exist".
|
|
51
|
+
*/
|
|
52
|
+
export declare function runLinkTypes(io: Io, session: Session): Promise<ExitCode>;
|
|
53
|
+
export interface FieldsOptions {
|
|
54
|
+
type: string | undefined;
|
|
55
|
+
/** Only the fields with a constrained value set — the ones you can get wrong. */
|
|
56
|
+
constrained: boolean;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* `pharos fields [--type <T>]` — what a field will actually accept.
|
|
60
|
+
*
|
|
61
|
+
* **`types` answers this for STATE and for nothing else.** Priority's range and
|
|
62
|
+
* Activity's option list are process configuration, not constants — which is
|
|
63
|
+
* why the macOS app fetches them rather than hardcoding them — and from the
|
|
64
|
+
* shell the only way to discover one was to send a value and read the failure.
|
|
65
|
+
*
|
|
66
|
+
* `--type` is strongly recommended: a field's allowed values belong to the TYPE,
|
|
67
|
+
* not the project. `Activity` exists on `Task` and on neither `Epic` nor
|
|
68
|
+
* `Issue` in the Basic process, so "which fields are there" has no
|
|
69
|
+
* project-wide answer.
|
|
70
|
+
*/
|
|
71
|
+
export declare function runFields(io: Io, session: Session, options: FieldsOptions): Promise<ExitCode>;
|
|
72
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/commands/catalog.ts"],"names":[],"mappings":"AAEA,OAAO,EAA8B,KAAK,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAsC7C,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,GAAG,EAAE,OAAO,CAAC;CACd;AAwBD;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,QAAQ,CAAC,CAoBnB;AA+ED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,YAAY,GAAG,OAAO,EAC5B,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,QAAQ,CAAC,CA+BnB;AAsHD;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAoC9E;AAcD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,iFAAiF;IACjF,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,SAAS,CAC7B,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,QAAQ,CAAC,CA0CnB"}
|
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
import { isRevisedDateSentinel } from "@floh-solutions/ado-core";
|
|
2
|
+
import { emit, emitText, usageError } from "../output.js";
|
|
3
|
+
/**
|
|
4
|
+
* Fields that change on **every** revision and say nothing about the work.
|
|
5
|
+
*
|
|
6
|
+
* Azure DevOps rewrites these on any edit, so an unfiltered history is mostly
|
|
7
|
+
* `System.Rev 4 -> 5` and `System.AuthorizedDate` — the actual change buried
|
|
8
|
+
* among them. `--all` puts them back for anyone debugging the feed itself.
|
|
9
|
+
*
|
|
10
|
+
* `System.RevisedDate` is in here for a second reason worth knowing: on the
|
|
11
|
+
* CURRENT revision it is the sentinel `9999-01-01`, not a date. Printing it
|
|
12
|
+
* unfiltered makes the newest entry look like it was edited in the year 9999.
|
|
13
|
+
*/
|
|
14
|
+
const BOOKKEEPING = new Set([
|
|
15
|
+
"System.Rev",
|
|
16
|
+
"System.AuthorizedDate",
|
|
17
|
+
"System.RevisedDate",
|
|
18
|
+
"System.ChangedDate",
|
|
19
|
+
"System.AuthorizedAs",
|
|
20
|
+
"System.ChangedBy",
|
|
21
|
+
"System.Watermark",
|
|
22
|
+
"System.PersonId",
|
|
23
|
+
]);
|
|
24
|
+
/**
|
|
25
|
+
* `pharos history <id>` — what changed, when, and who did it.
|
|
26
|
+
*
|
|
27
|
+
* **`/updates`, not `/revisions`.** A revision is a full snapshot of the item
|
|
28
|
+
* at a point in time, so answering "what changed" from revisions means diffing
|
|
29
|
+
* them yourself, N times, client-side. `/updates` is the diff — Azure DevOps
|
|
30
|
+
* hands back `oldValue`/`newValue` per field per revision, which is the shape
|
|
31
|
+
* of the question actually being asked.
|
|
32
|
+
*/
|
|
33
|
+
export async function runHistory(io, session, positionals, options) {
|
|
34
|
+
const raw = positionals[0];
|
|
35
|
+
if (raw === undefined)
|
|
36
|
+
throw usageError("Which work item? `pharos history <id>`.");
|
|
37
|
+
if (!/^\d+$/.test(raw))
|
|
38
|
+
throw usageError(`"${raw}" is not a work item id.`, { given: raw });
|
|
39
|
+
const response = await session.client.http.request({
|
|
40
|
+
method: "GET",
|
|
41
|
+
path: `wit/workItems/${raw}/updates`,
|
|
42
|
+
scope: "project",
|
|
43
|
+
});
|
|
44
|
+
const updates = (response.value ?? [])
|
|
45
|
+
.map((update) => shapeUpdate(update, options.all))
|
|
46
|
+
// A revision that changed only bookkeeping is not a change anybody made.
|
|
47
|
+
.filter((entry) => entry.changes.length > 0 || entry.relationsAdded > 0 || entry.relationsRemoved > 0)
|
|
48
|
+
.reverse()
|
|
49
|
+
.slice(0, options.top);
|
|
50
|
+
const result = { id: Number(raw), revisions: updates.length, updates };
|
|
51
|
+
return session.pretty ? emitText(io, renderHistory(result)) : emit(io, result);
|
|
52
|
+
}
|
|
53
|
+
function shapeUpdate(update, all) {
|
|
54
|
+
const changes = [];
|
|
55
|
+
for (const [field, change] of Object.entries(update.fields ?? {})) {
|
|
56
|
+
if (!all && BOOKKEEPING.has(field))
|
|
57
|
+
continue;
|
|
58
|
+
changes.push({ field, from: change.oldValue ?? null, to: change.newValue ?? null });
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
rev: update.rev,
|
|
62
|
+
by: update.revisedBy?.displayName ?? null,
|
|
63
|
+
at: whenItHappened(update),
|
|
64
|
+
changes,
|
|
65
|
+
relationsAdded: update.relations?.added?.length ?? 0,
|
|
66
|
+
relationsRemoved: update.relations?.removed?.length ?? 0,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* When a revision actually happened — **not `revisedDate`, on the newest one.**
|
|
71
|
+
*
|
|
72
|
+
* On the CURRENT revision `System.RevisedDate` is the sentinel `9999-01-01`,
|
|
73
|
+
* because that revision has not been superseded yet. Printing it straight
|
|
74
|
+
* through dated the most recent change to the year 9999, which is what the
|
|
75
|
+
* first run of this command did.
|
|
76
|
+
*
|
|
77
|
+
* `System.ChangedDate` in the same update is the real moment, so it is the
|
|
78
|
+
* fallback. `isRevisedDateSentinel` is `ado-core`'s — the same check the mirror
|
|
79
|
+
* uses — rather than a second string comparison that could drift from it.
|
|
80
|
+
*/
|
|
81
|
+
function whenItHappened(update) {
|
|
82
|
+
const revised = update.revisedDate;
|
|
83
|
+
if (revised !== undefined && !isRevisedDateSentinel(revised))
|
|
84
|
+
return revised;
|
|
85
|
+
const changed = update.fields?.["System.ChangedDate"]?.newValue;
|
|
86
|
+
if (typeof changed === "string" && changed !== "")
|
|
87
|
+
return changed;
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
function renderHistory(result) {
|
|
91
|
+
const lines = [`#${result.id} — ${result.updates.length} change(s), newest first`];
|
|
92
|
+
for (const update of result.updates) {
|
|
93
|
+
lines.push("", `rev ${update.rev} · ${update.by ?? "someone"} · ${update.at ?? "?"}`);
|
|
94
|
+
for (const change of update.changes) {
|
|
95
|
+
lines.push(` ${change.field}: ${short(change.from)} -> ${short(change.to)}`);
|
|
96
|
+
}
|
|
97
|
+
if (update.relationsAdded > 0)
|
|
98
|
+
lines.push(` +${update.relationsAdded} relation(s)`);
|
|
99
|
+
if (update.relationsRemoved > 0)
|
|
100
|
+
lines.push(` -${update.relationsRemoved} relation(s)`);
|
|
101
|
+
}
|
|
102
|
+
return lines.join("\n");
|
|
103
|
+
}
|
|
104
|
+
/** A value, short enough to sit on one line of a change log. */
|
|
105
|
+
function short(value) {
|
|
106
|
+
if (value === null || value === undefined)
|
|
107
|
+
return "(none)";
|
|
108
|
+
if (typeof value === "object") {
|
|
109
|
+
const display = value.displayName;
|
|
110
|
+
if (typeof display === "string")
|
|
111
|
+
return display;
|
|
112
|
+
return JSON.stringify(value).slice(0, 60);
|
|
113
|
+
}
|
|
114
|
+
const text = String(value).replace(/<[^>]+>/g, "").replace(/\s+/g, " ").trim();
|
|
115
|
+
return text.length > 60 ? `${text.slice(0, 57)}…` : text;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* `pharos iterations` and `pharos areas`.
|
|
119
|
+
*
|
|
120
|
+
* **The dates are the reason this exists.** `query --sprint "Sprint 1"` could
|
|
121
|
+
* always FILTER by an iteration, but nothing could list them or say when one
|
|
122
|
+
* runs — so "which sprint are we in" and "how long is left" were unanswerable
|
|
123
|
+
* without the web UI. Both are attributes on the classification node and both
|
|
124
|
+
* come back here.
|
|
125
|
+
*
|
|
126
|
+
* ## Two spellings of the same sprint, and only one of them works
|
|
127
|
+
*
|
|
128
|
+
* A classification NODE path is `\Tibata\Iteration\Sprint 1`. The FIELD value
|
|
129
|
+
* on a work item is `Tibata\Sprint 1` — no `Iteration` segment. Passing the
|
|
130
|
+
* node path to `System.IterationPath` is a 400 that reads as though the sprint
|
|
131
|
+
* does not exist. Both are printed for exactly that reason: `path` is the node,
|
|
132
|
+
* `fieldPath` is what `--sprint` and `--field System.IterationPath=` take.
|
|
133
|
+
*/
|
|
134
|
+
export async function runClassification(io, session, kind, options) {
|
|
135
|
+
const root = await session.client.http.request({
|
|
136
|
+
method: "GET",
|
|
137
|
+
path: `wit/classificationnodes/${kind}`,
|
|
138
|
+
scope: "project",
|
|
139
|
+
query: { $depth: options.depth },
|
|
140
|
+
});
|
|
141
|
+
const flat = flatten(root, session.client.project ?? "");
|
|
142
|
+
// **`current` comes from the TEAM, not from the dates.** The first cut derived
|
|
143
|
+
// it by asking whether today fell between startDate and finishDate — and most
|
|
144
|
+
// organisations never set those, so it answered `null` on every row and a
|
|
145
|
+
// literal reader concluded there was no current sprint. Measured on this org:
|
|
146
|
+
// both dates null, yet `?$timeframe=current` names Sprint 1 without hesitation.
|
|
147
|
+
//
|
|
148
|
+
// Areas have no timeframe, so this is asked only of iterations.
|
|
149
|
+
const current = kind === "Iterations" ? await currentIteration(session) : undefined;
|
|
150
|
+
if (current !== undefined) {
|
|
151
|
+
for (const node of flat) {
|
|
152
|
+
if (node.fieldPath === current || node.path === current)
|
|
153
|
+
node.current = true;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
const result = {
|
|
157
|
+
kind: kind.toLowerCase(),
|
|
158
|
+
count: flat.length,
|
|
159
|
+
...(kind === "Iterations" ? { current: current ?? null } : {}),
|
|
160
|
+
[kind === "Iterations" ? "iterations" : "areas"]: flat,
|
|
161
|
+
};
|
|
162
|
+
return session.pretty ? emitText(io, renderNodes(flat)) : emit(io, result);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* The sprint the team is in right now, as a FIELD path, or `undefined`.
|
|
166
|
+
*
|
|
167
|
+
* Team settings is the only authority on this: an iteration is "current"
|
|
168
|
+
* because a team says so, not because of a date range, and the dates are
|
|
169
|
+
* routinely unset. The endpoint hands back `Tibata\\Sprint 1` — already the
|
|
170
|
+
* field form, which is the same string `--sprint` and `System.IterationPath`
|
|
171
|
+
* take.
|
|
172
|
+
*
|
|
173
|
+
* Swallows its failure on purpose. A project with no default team, or a token
|
|
174
|
+
* without the work scope, still gets the iteration LIST — losing the whole
|
|
175
|
+
* command because the "which is current" garnish failed would be the wrong
|
|
176
|
+
* trade.
|
|
177
|
+
*/
|
|
178
|
+
async function currentIteration(session) {
|
|
179
|
+
try {
|
|
180
|
+
const response = await session.client.http.request({
|
|
181
|
+
method: "GET",
|
|
182
|
+
path: "work/teamsettings/iterations",
|
|
183
|
+
scope: "project",
|
|
184
|
+
query: { $timeframe: "current" },
|
|
185
|
+
});
|
|
186
|
+
const first = response.value?.[0];
|
|
187
|
+
return first?.path ?? first?.name;
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
return undefined;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
function flatten(root, project) {
|
|
194
|
+
const out = [];
|
|
195
|
+
const now = Date.now();
|
|
196
|
+
const walk = (node, depth) => {
|
|
197
|
+
const path = node.path ?? `\\${node.name}`;
|
|
198
|
+
const start = node.attributes?.startDate ?? null;
|
|
199
|
+
const finish = node.attributes?.finishDate ?? null;
|
|
200
|
+
out.push({
|
|
201
|
+
name: node.name,
|
|
202
|
+
path,
|
|
203
|
+
fieldPath: toFieldPath(path, project),
|
|
204
|
+
depth,
|
|
205
|
+
startDate: start,
|
|
206
|
+
finishDate: finish,
|
|
207
|
+
current: start === null || finish === null
|
|
208
|
+
? null
|
|
209
|
+
: Date.parse(start) <= now && now <= Date.parse(finish) + DAY,
|
|
210
|
+
});
|
|
211
|
+
for (const child of node.children ?? [])
|
|
212
|
+
walk(child, depth + 1);
|
|
213
|
+
};
|
|
214
|
+
walk(root, 0);
|
|
215
|
+
return out;
|
|
216
|
+
}
|
|
217
|
+
/** A finish date is a DAY, and the sprint is current until the end of it. */
|
|
218
|
+
const DAY = 24 * 60 * 60 * 1000;
|
|
219
|
+
/**
|
|
220
|
+
* `\Tibata\Iteration\Sprint 1` -> `Tibata\Sprint 1`.
|
|
221
|
+
*
|
|
222
|
+
* Drops the leading slash and the `Iteration`/`Area` segment that only the
|
|
223
|
+
* classification tree uses. See ``runClassification`` for why this matters.
|
|
224
|
+
*/
|
|
225
|
+
function toFieldPath(nodePath, project) {
|
|
226
|
+
const parts = nodePath.replace(/^\\/, "").split("\\");
|
|
227
|
+
const filtered = parts.filter((part, index) => !(index === 1 && (part === "Iteration" || part === "Area")));
|
|
228
|
+
return filtered.length > 0 ? filtered.join("\\") : project;
|
|
229
|
+
}
|
|
230
|
+
function renderNodes(nodes) {
|
|
231
|
+
return nodes
|
|
232
|
+
.map((node) => {
|
|
233
|
+
const dates = node.startDate === null
|
|
234
|
+
? ""
|
|
235
|
+
: ` ${node.startDate.slice(0, 10)} → ${(node.finishDate ?? "").slice(0, 10)}`;
|
|
236
|
+
const current = node.current === true ? " ← current" : "";
|
|
237
|
+
return `${" ".repeat(node.depth)}${node.name}${dates}${current}`;
|
|
238
|
+
})
|
|
239
|
+
.join("\n");
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* `pharos links` — every relation type this organisation actually has.
|
|
243
|
+
*
|
|
244
|
+
* **`link` knows six; this org has eighteen.** The six are the ones worth a
|
|
245
|
+
* named flag, and they are not the whole vocabulary — measured on the live org:
|
|
246
|
+
* 21 relation types, 18 of them work item links, so twelve are unreachable by
|
|
247
|
+
* flag including `Affects`, `TestedBy`, the whole `Remote.*` family, and
|
|
248
|
+
* `Duplicate-Reverse` (an outright asymmetry, since `Duplicate-Forward` has a
|
|
249
|
+
* flag). Without this verb there was no way to find that out from the shell.
|
|
250
|
+
*
|
|
251
|
+
* The output marks which ones `link`/`unlink` can reach, so the answer to "can
|
|
252
|
+
* I make this link" is in the same reply as "does this link exist".
|
|
253
|
+
*/
|
|
254
|
+
export async function runLinkTypes(io, session) {
|
|
255
|
+
const response = await session.client.http.request({
|
|
256
|
+
method: "GET",
|
|
257
|
+
path: "wit/workitemrelationtypes",
|
|
258
|
+
scope: "org",
|
|
259
|
+
});
|
|
260
|
+
const { LINK_KINDS } = await import("./link.js");
|
|
261
|
+
const byRel = new Map(Object.entries(LINK_KINDS).map(([flag, kind]) => [kind.rel, flag]));
|
|
262
|
+
const types = (response.value ?? []).map((type) => ({
|
|
263
|
+
referenceName: type.referenceName,
|
|
264
|
+
name: type.name,
|
|
265
|
+
usage: type.attributes?.["usage"] ?? null,
|
|
266
|
+
/** The `--flag` that reaches it, or `null` when only the API can. */
|
|
267
|
+
flag: byRel.get(type.referenceName) ?? null,
|
|
268
|
+
}));
|
|
269
|
+
const result = {
|
|
270
|
+
count: types.length,
|
|
271
|
+
reachableByFlag: types.filter((type) => type.flag !== null).length,
|
|
272
|
+
types,
|
|
273
|
+
};
|
|
274
|
+
return session.pretty
|
|
275
|
+
? emitText(io, types
|
|
276
|
+
.map((type) => `${(type.flag === null ? "" : `--${type.flag}`).padEnd(14)}${type.referenceName}`)
|
|
277
|
+
.join("\n"))
|
|
278
|
+
: emit(io, result);
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* `pharos fields [--type <T>]` — what a field will actually accept.
|
|
282
|
+
*
|
|
283
|
+
* **`types` answers this for STATE and for nothing else.** Priority's range and
|
|
284
|
+
* Activity's option list are process configuration, not constants — which is
|
|
285
|
+
* why the macOS app fetches them rather than hardcoding them — and from the
|
|
286
|
+
* shell the only way to discover one was to send a value and read the failure.
|
|
287
|
+
*
|
|
288
|
+
* `--type` is strongly recommended: a field's allowed values belong to the TYPE,
|
|
289
|
+
* not the project. `Activity` exists on `Task` and on neither `Epic` nor
|
|
290
|
+
* `Issue` in the Basic process, so "which fields are there" has no
|
|
291
|
+
* project-wide answer.
|
|
292
|
+
*/
|
|
293
|
+
export async function runFields(io, session, options) {
|
|
294
|
+
const path = options.type === undefined
|
|
295
|
+
? "wit/fields"
|
|
296
|
+
: `wit/workitemtypes/${encodeURIComponent(options.type)}/fields`;
|
|
297
|
+
const response = await session.client.http.request({
|
|
298
|
+
method: "GET",
|
|
299
|
+
path,
|
|
300
|
+
scope: "project",
|
|
301
|
+
query: options.type === undefined ? {} : { $expand: "allowedValues" },
|
|
302
|
+
});
|
|
303
|
+
let fields = (response.value ?? []).map((field) => ({
|
|
304
|
+
referenceName: field.referenceName,
|
|
305
|
+
name: field.name,
|
|
306
|
+
type: field.type ?? null,
|
|
307
|
+
readOnly: field.readOnly ?? false,
|
|
308
|
+
required: field.alwaysRequired ?? false,
|
|
309
|
+
allowedValues: field.allowedValues ?? [],
|
|
310
|
+
helpText: field.helpText ?? null,
|
|
311
|
+
}));
|
|
312
|
+
if (options.constrained) {
|
|
313
|
+
fields = fields.filter((field) => field.allowedValues.length > 0);
|
|
314
|
+
}
|
|
315
|
+
const result = { type: options.type ?? null, count: fields.length, fields };
|
|
316
|
+
return session.pretty
|
|
317
|
+
? emitText(io, fields
|
|
318
|
+
.map((field) => {
|
|
319
|
+
const values = field.allowedValues.length === 0
|
|
320
|
+
? ""
|
|
321
|
+
: ` [${field.allowedValues.map(String).join(", ")}]`;
|
|
322
|
+
return `${field.referenceName.padEnd(46)}${field.type ?? ""}${values}`;
|
|
323
|
+
})
|
|
324
|
+
.join("\n"))
|
|
325
|
+
: emit(io, result);
|
|
326
|
+
}
|
|
327
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/commands/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAA0B,MAAM,cAAc,CAAC;AA6ClF;;;;;;;;;;GAUG;AACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,YAAY;IACZ,uBAAuB;IACvB,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;CAClB,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,EAAM,EACN,OAAgB,EAChB,WAA8B,EAC9B,OAAuB;IAEvB,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,GAAG,KAAK,SAAS;QAAE,MAAM,UAAU,CAAC,yCAAyC,CAAC,CAAC;IACnF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,MAAM,UAAU,CAAC,IAAI,GAAG,0BAA0B,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAE5F,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAA+B;QAC/E,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,iBAAiB,GAAG,UAAU;QACpC,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;SACnC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QAClD,yEAAyE;SACxE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,IAAI,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC;SACrG,OAAO,EAAE;SACT,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAEzB,MAAM,MAAM,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;IACvE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,WAAW,CAAC,MAAsB,EAAE,GAAY;IACvD,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QAClE,IAAI,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,SAAS;QAC7C,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,IAAI,IAAI;QACzC,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC;QAC1B,OAAO;QACP,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;QACpD,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;KACzD,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,cAAc,CAAC,MAAsB;IAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;IACnC,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAE7E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,oBAAoB,CAAC,EAAE,QAAQ,CAAC;IAChE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,OAAO,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,MAGtB;IACC,MAAM,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,0BAA0B,CAAC,CAAC;IACnF,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,EAAE,IAAI,SAAS,MAAM,MAAM,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACtF,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,MAAM,CAAC,cAAc,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,cAAc,cAAc,CAAC,CAAC;QACrF,IAAI,MAAM,CAAC,gBAAgB,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,gBAAgB,cAAc,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,gEAAgE;AAChE,SAAS,KAAK,CAAC,KAAc;IAC3B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAI,KAAmC,CAAC,WAAW,CAAC;QACjE,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAC;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/E,OAAO,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3D,CAAC;AAkBD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,EAAM,EACN,OAAgB,EAChB,IAA4B,EAC5B,OAA8B;IAE9B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAqB;QACjE,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,2BAA2B,IAAI,EAAE;QACvC,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE;KACjC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAEzD,+EAA+E;IAC/E,8EAA8E;IAC9E,0EAA0E;IAC1E,8EAA8E;IAC9E,gFAAgF;IAChF,EAAE;IACF,gEAAgE;IAChE,MAAM,OAAO,GAAG,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;gBAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG;QACb,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;QACxB,KAAK,EAAE,IAAI,CAAC,MAAM;QAClB,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI;KACvD,CAAC;IACF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,KAAK,UAAU,gBAAgB,CAAC,OAAgB;IAC9C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAE/C;YACD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,8BAA8B;YACpC,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;SACjC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,OAAO,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAsBD,SAAS,OAAO,CAAC,IAAwB,EAAE,OAAe;IACxD,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,MAAM,IAAI,GAAG,CAAC,IAAwB,EAAE,KAAa,EAAQ,EAAE;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,IAAI,IAAI,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,IAAI,IAAI,CAAC;QACnD,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI;YACJ,SAAS,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC;YACrC,KAAK;YACL,SAAS,EAAE,KAAK;YAChB,UAAU,EAAE,MAAM;YAClB,OAAO,EACL,KAAK,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI;gBAC/B,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG;SAClE,CAAC,CAAC;QACH,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE;YAAE,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAClE,CAAC,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,OAAO,GAAG,CAAC;AACb,CAAC;AAED,6EAA6E;AAC7E,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEhC;;;;;GAKG;AACH,SAAS,WAAW,CAAC,QAAgB,EAAE,OAAe;IACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAC3B,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,CAC7E,CAAC;IACF,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAC7D,CAAC;AAED,SAAS,WAAW,CAAC,KAAiB;IACpC,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,KAAK,GACT,IAAI,CAAC,SAAS,KAAK,IAAI;YACrB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACnF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,GAAG,OAAO,EAAE,CAAC;IACpE,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAUD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EAAM,EAAE,OAAgB;IACzD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAA6B;QAC7E,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IAEH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,IAAI,GAAG,CACnB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAU,CAAC,CAC5E,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClD,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAG,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAwB,IAAI,IAAI;QACjE,qEAAqE;QACrE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI;KAC5C,CAAC,CAAC,CAAC;IAEJ,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,MAAM;QAClE,KAAK;KACN,CAAC;IACF,OAAO,OAAO,CAAC,MAAM;QACnB,CAAC,CAAC,QAAQ,CACN,EAAE,EACF,KAAK;aACF,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CACP,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CACpF;aACA,IAAI,CAAC,IAAI,CAAC,CACd;QACH,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACvB,CAAC;AAoBD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,EAAM,EACN,OAAgB,EAChB,OAAsB;IAEtB,MAAM,IAAI,GACR,OAAO,CAAC,IAAI,KAAK,SAAS;QACxB,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,qBAAqB,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;IAErE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAgC;QAChF,MAAM,EAAE,KAAK;QACb,IAAI;QACJ,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE;KACtE,CAAC,CAAC;IAEH,IAAI,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAClD,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK;QACjC,QAAQ,EAAE,KAAK,CAAC,cAAc,IAAI,KAAK;QACvC,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,EAAE;QACxC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;KACjC,CAAC,CAAC,CAAC;IAEJ,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5E,OAAO,OAAO,CAAC,MAAM;QACnB,CAAC,CAAC,QAAQ,CACN,EAAE,EACF,MAAM;aACH,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACb,MAAM,MAAM,GACV,KAAK,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;gBAC9B,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAC1D,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;QACzE,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CACd;QACH,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AACvB,CAAC"}
|
package/dist/commands/link.d.ts
CHANGED
|
@@ -33,6 +33,8 @@ export declare const LINK_KINDS: Record<string, {
|
|
|
33
33
|
}>;
|
|
34
34
|
export interface LinkCommandOptions {
|
|
35
35
|
kinds: Record<string, number | undefined>;
|
|
36
|
+
/** A wiki page path — the one link target that is not a work item. */
|
|
37
|
+
wiki: string | undefined;
|
|
36
38
|
comment: string | undefined;
|
|
37
39
|
}
|
|
38
40
|
export declare function runLink(io: Io, session: Session, positionals: readonly string[], options: LinkCommandOptions): Promise<ExitCode>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"AAUA,OAAO,EAAuC,KAAK,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAOzE,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1C,sEAAsE;IACtE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAqED,wBAAsB,OAAO,CAC3B,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,QAAQ,CAAC,CA8DnB;AAsDD,wBAAsB,SAAS,CAC7B,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,QAAQ,CAAC,CAoCnB"}
|
package/dist/commands/link.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RelationNotFoundError, addRelation, removeRelationPatch, } from "@floh-solutions/ado-core";
|
|
1
|
+
import { RelationNotFoundError, addRelation, addWikiPageLink, removeRelationPatch, wikiPageArtifactUri, } from "@floh-solutions/ado-core";
|
|
2
2
|
import { emit, emitText, refusal, usageError } from "../output.js";
|
|
3
3
|
/**
|
|
4
4
|
* `pharos link` and `pharos unlink` — the relations between work items.
|
|
@@ -35,6 +35,42 @@ export const LINK_KINDS = {
|
|
|
35
35
|
successor: { rel: "System.LinkTypes.Dependency-Forward", describes: "a successor of" },
|
|
36
36
|
duplicate: { rel: "System.LinkTypes.Duplicate-Forward", describes: "a duplicate of" },
|
|
37
37
|
};
|
|
38
|
+
/**
|
|
39
|
+
* `--wiki <path>` — attach a wiki page to a work item as an **artifact link**.
|
|
40
|
+
*
|
|
41
|
+
* **This closes a circle that was open, and it is the gap that mattered most.**
|
|
42
|
+
* `pharos task` reads linked wiki pages and their discussion — that is the
|
|
43
|
+
* command's headline, *"the plan a colleague wrote is usually on a linked wiki
|
|
44
|
+
* page rather than in the description"* — and until now nothing in this CLI
|
|
45
|
+
* could MAKE that link. The skill's own loop said to: *"write it: `pharos wiki
|
|
46
|
+
* write /Plans/<name> --stdin`, then link it to the epic so the next person
|
|
47
|
+
* finds it the same way you did."* An agent following that instruction hit a
|
|
48
|
+
* wall the documentation did not mention, and the link had to be made in the
|
|
49
|
+
* web UI or the macOS app.
|
|
50
|
+
*
|
|
51
|
+
* Everything needed already existed — `addWikiPageLink`, `wikiPageArtifactUri`
|
|
52
|
+
* and `parseWikiPageArtifactUri` in `ado-core`, and `session.wikiForLinking()`
|
|
53
|
+
* here. Only the verb was missing.
|
|
54
|
+
*
|
|
55
|
+
* ## The URI is the identity, and it is not a URL
|
|
56
|
+
*
|
|
57
|
+
* A wiki artifact link is `vstfs:///Wiki/WikiPage/<project>%2F<wiki>%2F<path>`
|
|
58
|
+
* — the page's PATH, encoded, with no id anywhere. That has one consequence
|
|
59
|
+
* worth stating out loud: **moving or renaming a page silently breaks every
|
|
60
|
+
* link to it**, because the path was the identity. `wiki move` and `wiki
|
|
61
|
+
* rename` already require `--yes` for exactly this reason.
|
|
62
|
+
*/
|
|
63
|
+
async function wikiTarget(session, path) {
|
|
64
|
+
const normalised = path.startsWith("/") ? path : `/${path}`;
|
|
65
|
+
const wiki = await session.wikiForLinking();
|
|
66
|
+
return {
|
|
67
|
+
uri: wikiPageArtifactUri(wiki.projectId, wiki.wikiId, normalised),
|
|
68
|
+
name: wiki.name,
|
|
69
|
+
path: normalised,
|
|
70
|
+
projectId: wiki.projectId,
|
|
71
|
+
wikiId: wiki.wikiId,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
38
74
|
/** Exactly one link kind, or a refusal that lists them. */
|
|
39
75
|
function soleKind(kinds) {
|
|
40
76
|
const given = Object.entries(kinds).filter(([, id]) => id !== undefined);
|
|
@@ -60,6 +96,9 @@ function id(raw, usage) {
|
|
|
60
96
|
}
|
|
61
97
|
export async function runLink(io, session, positionals, options) {
|
|
62
98
|
const from = id(positionals[0], "Which work item? `pharos link <id> --parent <id>`.");
|
|
99
|
+
if (options.wiki !== undefined) {
|
|
100
|
+
return linkWikiPage(io, session, from, options);
|
|
101
|
+
}
|
|
63
102
|
const { flag, target } = soleKind(options.kinds);
|
|
64
103
|
const kind = LINK_KINDS[flag];
|
|
65
104
|
if (target === from) {
|
|
@@ -99,8 +138,48 @@ export async function runLink(io, session, positionals, options) {
|
|
|
99
138
|
title: titleOf(to),
|
|
100
139
|
});
|
|
101
140
|
}
|
|
141
|
+
/** `pharos link <id> --wiki <path>` — see ``wikiTarget``. */
|
|
142
|
+
async function linkWikiPage(io, session, from, options) {
|
|
143
|
+
const target = await wikiTarget(session, options.wiki);
|
|
144
|
+
const item = await session.client.workItems.get(from, { expand: "relations" });
|
|
145
|
+
// Same identity rule the work item path uses: the artifact URI IS the
|
|
146
|
+
// identity, so an exact match is "already linked" and not a second link.
|
|
147
|
+
const existing = relationsOf(item).find((relation) => relation.url === target.uri);
|
|
148
|
+
if (existing !== undefined) {
|
|
149
|
+
return report(io, session, {
|
|
150
|
+
applied: false,
|
|
151
|
+
unchanged: true,
|
|
152
|
+
from,
|
|
153
|
+
wiki: target.name,
|
|
154
|
+
page: target.path,
|
|
155
|
+
relationship: "wiki",
|
|
156
|
+
message: `${target.path} is already linked to #${from}.`,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
if (session.previewOnly) {
|
|
160
|
+
return report(io, session, {
|
|
161
|
+
applied: false,
|
|
162
|
+
dryRun: true,
|
|
163
|
+
from,
|
|
164
|
+
wiki: target.name,
|
|
165
|
+
page: target.path,
|
|
166
|
+
relationship: "wiki",
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
await session.client.workItems.updateWithRev(from, item.rev, [addWikiPageLink(target.projectId, target.wikiId, target.path, options.comment)], { suppressNotifications: true });
|
|
170
|
+
return report(io, session, {
|
|
171
|
+
applied: true,
|
|
172
|
+
from,
|
|
173
|
+
wiki: target.name,
|
|
174
|
+
page: target.path,
|
|
175
|
+
relationship: "wiki",
|
|
176
|
+
});
|
|
177
|
+
}
|
|
102
178
|
export async function runUnlink(io, session, positionals, options) {
|
|
103
179
|
const from = id(positionals[0], "Which work item? `pharos unlink <id> --parent <id>`.");
|
|
180
|
+
if (options.wiki !== undefined) {
|
|
181
|
+
return unlinkWikiPage(io, session, from, options);
|
|
182
|
+
}
|
|
104
183
|
const { flag, target } = soleKind(options.kinds);
|
|
105
184
|
const kind = LINK_KINDS[flag];
|
|
106
185
|
const item = await session.client.workItems.get(from, { expand: "relations" });
|
|
@@ -127,6 +206,52 @@ export async function runUnlink(io, session, positionals, options) {
|
|
|
127
206
|
await session.client.workItems.update(from, ops, { suppressNotifications: true });
|
|
128
207
|
return report(io, session, { applied: true, removed: true, from, to: target, relationship: flag });
|
|
129
208
|
}
|
|
209
|
+
/**
|
|
210
|
+
* `pharos unlink <id> --wiki <path>`.
|
|
211
|
+
*
|
|
212
|
+
* Removed as a **resource** target rather than a work item one — the artifact
|
|
213
|
+
* URI is matched exactly, which is what `RelationTarget`'s `resource` kind is
|
|
214
|
+
* for. Same `test`-on-`/rev` guard as every other removal here, for the same
|
|
215
|
+
* reason: Azure DevOps removes by POSITION, so a stale index cuts a different
|
|
216
|
+
* link and still returns 200.
|
|
217
|
+
*/
|
|
218
|
+
async function unlinkWikiPage(io, session, from, options) {
|
|
219
|
+
const target = await wikiTarget(session, options.wiki);
|
|
220
|
+
const item = await session.client.workItems.get(from, { expand: "relations" });
|
|
221
|
+
let ops;
|
|
222
|
+
try {
|
|
223
|
+
ops = removeRelationPatch(relationsOf(item), item.rev, {
|
|
224
|
+
kind: "resource",
|
|
225
|
+
url: target.uri,
|
|
226
|
+
rel: "ArtifactLink",
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
if (error instanceof RelationNotFoundError) {
|
|
231
|
+
throw refusal(`${target.path} is not linked to #${from}.`, { from, page: target.path, wiki: target.name, relationship: "wiki" });
|
|
232
|
+
}
|
|
233
|
+
throw error;
|
|
234
|
+
}
|
|
235
|
+
if (session.previewOnly) {
|
|
236
|
+
return report(io, session, {
|
|
237
|
+
applied: false,
|
|
238
|
+
dryRun: true,
|
|
239
|
+
from,
|
|
240
|
+
wiki: target.name,
|
|
241
|
+
page: target.path,
|
|
242
|
+
relationship: "wiki",
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
await session.client.workItems.update(from, ops, { suppressNotifications: true });
|
|
246
|
+
return report(io, session, {
|
|
247
|
+
applied: true,
|
|
248
|
+
removed: true,
|
|
249
|
+
from,
|
|
250
|
+
wiki: target.name,
|
|
251
|
+
page: target.path,
|
|
252
|
+
relationship: "wiki",
|
|
253
|
+
});
|
|
254
|
+
}
|
|
130
255
|
function relationsOf(item) {
|
|
131
256
|
const relations = item.relations;
|
|
132
257
|
return relations ?? [];
|
|
@@ -143,8 +268,22 @@ function report(io, session, result) {
|
|
|
143
268
|
// is the kind of line that makes somebody doubt what actually happened.
|
|
144
269
|
if (typeof result["message"] === "string")
|
|
145
270
|
return emitText(io, result["message"]);
|
|
146
|
-
const describes = LINK_KINDS[result.relationship]?.describes ?? result.relationship;
|
|
147
271
|
const verb = result["removed"] === true ? "no longer" : result.applied ? "now" : "would be";
|
|
272
|
+
// A wiki page has no id to print, and `LINK_KINDS` has no entry for it — the
|
|
273
|
+
// work item sentence would read "#undefined is now wiki #39".
|
|
274
|
+
//
|
|
275
|
+
// It also needs its own verb rather than the table's. "is" + "would be" reads
|
|
276
|
+
// "is would be linked", which is exactly the sort of line that makes somebody
|
|
277
|
+
// doubt whether the write happened.
|
|
278
|
+
if (result.relationship === "wiki") {
|
|
279
|
+
const wikiVerb = result["removed"] === true
|
|
280
|
+
? "is no longer"
|
|
281
|
+
: result.applied
|
|
282
|
+
? "is now"
|
|
283
|
+
: "would be";
|
|
284
|
+
return emitText(io, `${String(result["page"])} ${wikiVerb} linked to #${result.from}`);
|
|
285
|
+
}
|
|
286
|
+
const describes = LINK_KINDS[result.relationship]?.describes ?? result.relationship;
|
|
148
287
|
return emitText(io, `#${result.to} is ${verb} ${describes} #${result.from}`);
|
|
149
288
|
}
|
|
150
289
|
//# sourceMappingURL=link.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,mBAAmB,GAGpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAA0B,MAAM,cAAc,CAAC;AAG3F;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,UAAU,GAAuD;IAC5E,MAAM,EAAE,EAAE,GAAG,EAAE,oCAAoC,EAAE,SAAS,EAAE,eAAe,EAAE;IACjF,KAAK,EAAE,EAAE,GAAG,EAAE,oCAAoC,EAAE,SAAS,EAAE,YAAY,EAAE;IAC7E,OAAO,EAAE,EAAE,GAAG,EAAE,0BAA0B,EAAE,SAAS,EAAE,YAAY,EAAE;IACrE,WAAW,EAAE,EAAE,GAAG,EAAE,qCAAqC,EAAE,SAAS,EAAE,kBAAkB,EAAE;IAC1F,SAAS,EAAE,EAAE,GAAG,EAAE,qCAAqC,EAAE,SAAS,EAAE,gBAAgB,EAAE;IACtF,SAAS,EAAE,EAAE,GAAG,EAAE,oCAAoC,EAAE,SAAS,EAAE,gBAAgB,EAAE;CACtF,CAAC;
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/commands/link.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/task.js
CHANGED
|
@@ -181,11 +181,25 @@ function render(context, indent = "") {
|
|
|
181
181
|
}
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
|
+
// **ALWAYS printed, even when empty**, and that is the point of it.
|
|
185
|
+
//
|
|
186
|
+
// The skill tells an agent: "anything that could not be fetched appears in
|
|
187
|
+
// `problems[]`. If that array is not empty, say so before acting." A section
|
|
188
|
+
// that only appears when there IS a problem makes that check impossible to
|
|
189
|
+
// perform from `--pretty` — an absent section and a section nobody rendered
|
|
190
|
+
// look identical, so the reader cannot tell "nothing went wrong" from "this
|
|
191
|
+
// renderer does not report problems". Found by a recon agent that tried to do
|
|
192
|
+
// exactly what the skill asked and could not.
|
|
193
|
+
//
|
|
194
|
+
// Saying "none" costs one line and turns an absence into an answer.
|
|
184
195
|
if (context.problems.length > 0) {
|
|
185
196
|
lines.push("", "## Problems — this context is INCOMPLETE");
|
|
186
197
|
for (const problem of context.problems)
|
|
187
198
|
lines.push(` - ${problem}`);
|
|
188
199
|
}
|
|
200
|
+
else {
|
|
201
|
+
lines.push("", "## Problems — none");
|
|
202
|
+
}
|
|
189
203
|
// The children LAST and set off by a rule, so a long epic still reads as one
|
|
190
204
|
// item followed by its parts rather than as an undifferentiated wall.
|
|
191
205
|
if (context.children !== undefined && context.children.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@floh-solutions/pharos-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"description": "Azure DevOps from a headless shell, for an agent: the whole context of a task in one call, and the wiki/comment verbs Microsoft's MCP server does not ship.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"author": "FLOH Solutions",
|
package/skill/SKILL.md
CHANGED
|
@@ -28,6 +28,13 @@ update <id> change a field: --state --priority --assignee
|
|
|
28
28
|
--title, or --field Name=value for anything else
|
|
29
29
|
link <id> --parent <id> relate two items. Also --child --related
|
|
30
30
|
unlink <id> --parent <id> --predecessor --successor --duplicate
|
|
31
|
+
link <id> --wiki-page <path> link a WIKI PAGE to a work item. This is what
|
|
32
|
+
makes a plan findable by `task`
|
|
33
|
+
history <id> what CHANGED, field by field, who and when
|
|
34
|
+
iterations | areas the sprints with their dates, and the areas
|
|
35
|
+
links every relation type this ORG has, and which
|
|
36
|
+
--flag reaches it (six of ~eighteen)
|
|
37
|
+
fields [--type T] what a field will ACCEPT — allowed values
|
|
31
38
|
attach <id> <file> put a FILE on a work item (Attachments list)
|
|
32
39
|
detach <id> <url-or-guid> take one off. --yes
|
|
33
40
|
download <id-or-url> read one back. --out <path> or it writes nothing
|
|
@@ -36,7 +43,9 @@ image <file> upload a PICTURE for use inside text. Prints the
|
|
|
36
43
|
people [query] who can be @mentioned, with the @<guid> form
|
|
37
44
|
delete <id> --yes → Recycle Bin (no permanent delete, on purpose)
|
|
38
45
|
restore <id> bring one back
|
|
39
|
-
deleted what is in the Recycle Bin, with names
|
|
46
|
+
deleted what is in the Recycle Bin, with names.
|
|
47
|
+
--top <n> — it returns 50 by default and reports
|
|
48
|
+
the true total as "count"
|
|
40
49
|
wiki list | tree | read <path> | write <path> | delete <path>
|
|
41
50
|
wiki move <path> <new path> move a page; sub-pages come with it
|
|
42
51
|
wiki rename <path> <new name> the same call, leaf only. BOTH need --yes
|
|
@@ -47,7 +56,9 @@ wiki import <file...> .md .txt .docx .pdf .rtf .html -> pages
|
|
|
47
56
|
--under <path> --as <name>
|
|
48
57
|
comment list | add | edit | delete <target> is a work item id OR a wiki path
|
|
49
58
|
comment react | unreact | reactors like dislike heart hooray smile confused
|
|
50
|
-
hooks list | check | create | repoint | delete service hooks for realtime
|
|
59
|
+
hooks list | check | create | repoint | delete service hooks for realtime.
|
|
60
|
+
`check` needs --hub <url>; `list` shows the URL
|
|
61
|
+
already in use
|
|
51
62
|
plan <file> an implementation plan → a work item tree
|
|
52
63
|
setup org, project, token → keychain + shell profile
|
|
53
64
|
```
|
|
@@ -88,6 +99,19 @@ read them it says so and falls back to guessing, and that is your cue to pass
|
|
|
88
99
|
`--state` explicitly. `assignedTo` names who `@Me` actually resolved to — a
|
|
89
100
|
shared or service token makes "assigned to me" quietly mean somebody else.
|
|
90
101
|
|
|
102
|
+
`--all` composes with every other filter, so `--mine --all` is how you tell
|
|
103
|
+
*nothing is assigned to you* from *nothing open*. A bare `pharos query --all` is
|
|
104
|
+
legal and returns the whole project.
|
|
105
|
+
|
|
106
|
+
`--sprint` takes either the bare name or the fieldPath and normalises between
|
|
107
|
+
them — the fieldPath rule is about `System.IterationPath` as a *field value*. But
|
|
108
|
+
a named sprint matches with `UNDER` (sub-iterations included) while `--sprint
|
|
109
|
+
current` matches with `=` (exact), so they are not the same query.
|
|
110
|
+
|
|
111
|
+
`--wiql` also accepts a `FROM WorkItemLinks … MODE (MustContain)` query and
|
|
112
|
+
hydrates the ids the same way, which is how you find every item carrying a given
|
|
113
|
+
relation type in one call.
|
|
114
|
+
|
|
91
115
|
Do NOT write `[System.State] NOT IN GROUP 'Completed'` if you reach for `--wiql`.
|
|
92
116
|
It parses, returns 200, and matches **everything** — `IN GROUP` covers work item
|
|
93
117
|
TYPE categories only, and an unknown group resolves to the empty set with no
|
|
@@ -253,12 +277,94 @@ attributed to. A shared or service token quietly makes "assigned to me" mean
|
|
|
253
277
|
somebody else. It is org-scoped, so it still answers when the project is
|
|
254
278
|
misconfigured — which is exactly when you need it.
|
|
255
279
|
|
|
280
|
+
## Ask, do not guess — the five discovery verbs
|
|
281
|
+
|
|
282
|
+
Every one of these replaced a guess, and a guess that silently succeeds against
|
|
283
|
+
the wrong value is worse than one that fails:
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
pharos history 39 # what changed on it, field by field, who and when
|
|
287
|
+
pharos iterations # the sprints, with start/finish dates
|
|
288
|
+
pharos areas # the area tree
|
|
289
|
+
pharos links # every relation type, and which --flag reaches it
|
|
290
|
+
pharos fields --type Task --constrained # what Priority and Activity accept
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
**Which sprint is current comes from the TEAM, not from the dates.**
|
|
294
|
+
`iterations` reports a top-level `current` (the field path of the team's current
|
|
295
|
+
iteration) and marks that node `current: true`. It asks team settings, because
|
|
296
|
+
an iteration is current because a team says so — `startDate`/`finishDate` are
|
|
297
|
+
routinely null and deriving it from them answers "no current sprint" on most
|
|
298
|
+
boards. `query --sprint current` resolves the same iteration.
|
|
299
|
+
|
|
300
|
+
**`iterations` prints TWO paths and only one of them works as a field value.**
|
|
301
|
+
`path` is the classification node — `\Tibata\Iteration\Sprint 1`. `fieldPath`
|
|
302
|
+
is what `System.IterationPath` and `--sprint` take — `Tibata\Sprint 1`, with no
|
|
303
|
+
`Iteration` segment. Handing the node path to the field is a 400 that reads as
|
|
304
|
+
though the sprint does not exist. A sprint with `startDate: null` is normal —
|
|
305
|
+
most orgs never set them.
|
|
306
|
+
|
|
307
|
+
**`history` returns raw field values.** The top-level `by` is a flattened
|
|
308
|
+
display-name string, but `changes[].from`/`to` are the field values themselves —
|
|
309
|
+
an identity field gives you the whole identity object, not a name. `--compact`
|
|
310
|
+
is a `task` flag and does not exist here, and `WEF_…` board keys are not
|
|
311
|
+
filtered, so expect them on the creation revision.
|
|
312
|
+
|
|
313
|
+
**`history` reads `/updates`, which is the diff.** `/revisions` is snapshots you
|
|
314
|
+
would have to diff yourself. Bookkeeping fields that change on every revision
|
|
315
|
+
(`System.Rev`, the dates, the watermark) are filtered out unless you pass
|
|
316
|
+
`--all`; a revision that changed only those is dropped entirely, because it is
|
|
317
|
+
not a change anybody made.
|
|
318
|
+
|
|
319
|
+
**`links` exists because `link` names six kinds and an org has about eighteen.**
|
|
320
|
+
`Affects`, `TestedBy`, the `Remote.*` family and `Duplicate-Reverse` have no
|
|
321
|
+
flag. The output marks which ones do, so "does this link type exist" and "can I
|
|
322
|
+
make it from here" are one answer.
|
|
323
|
+
|
|
324
|
+
There is **no `--rel <referenceName>` escape hatch** — the six flags are the
|
|
325
|
+
whole write surface. That has one consequence worth knowing before you promise
|
|
326
|
+
it: `--duplicate` reaches `Duplicate-Forward` only, so if the item you are
|
|
327
|
+
standing on shows the relation as **Duplicate Of** (`Duplicate-Reverse`), unlink
|
|
328
|
+
it from the *other* item instead.
|
|
329
|
+
|
|
330
|
+
**`--constrained` narrows `fields` to those with an allowed-values list** — the
|
|
331
|
+
ones you can get wrong. Without it you get every field on the type. Note that
|
|
332
|
+
Priority's `allowedValues` come back as STRINGS (`"1"`…`"4"`) while `--priority`
|
|
333
|
+
takes the number: do not quote it on the command line.
|
|
334
|
+
|
|
335
|
+
**`fields` needs `--type`.** Allowed values belong to the TYPE, not the project
|
|
336
|
+
— `Activity` is on `Task` and on neither `Epic` nor `Issue` in the Basic
|
|
337
|
+
process, so there is no project-wide answer to "which fields are there".
|
|
338
|
+
|
|
339
|
+
## Linking a wiki page to a work item
|
|
340
|
+
|
|
341
|
+
**This is what makes a plan findable.** `pharos task` reads linked wiki pages
|
|
342
|
+
and their discussion — that is the whole point of it — and the link is what puts
|
|
343
|
+
them there:
|
|
344
|
+
|
|
345
|
+
```bash
|
|
346
|
+
pharos wiki write "/Plans/Sprint 3" --stdin < plan.md
|
|
347
|
+
pharos link 39 --wiki-page "/Plans/Sprint 3"
|
|
348
|
+
pharos unlink 39 --wiki-page "/Plans/Sprint 3" # by identity, guarded
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
`--wiki-page`, **not** `--wiki`: `--wiki <name>` is the global flag naming which
|
|
352
|
+
wiki to work in, and using it here means "the wiki called /Plans/Sprint 3".
|
|
353
|
+
|
|
354
|
+
A wiki artifact link is `vstfs:///Wiki/WikiPage/<project>%2F<wiki>%2F<path>` —
|
|
355
|
+
the page's PATH is its identity, with no id anywhere. So **moving or renaming a
|
|
356
|
+
page silently breaks every link to it**, which is why `wiki move` and `wiki
|
|
357
|
+
rename` need `--yes` and `wiki write` does not.
|
|
358
|
+
|
|
256
359
|
## What `pharos` does NOT do — read this before you go looking
|
|
257
360
|
|
|
258
361
|
- **Free-text and code search.** Nothing here covers it. For work items,
|
|
259
362
|
`pharos query --wiql "… WHERE [System.Title] CONTAINS 'thing'"` gets close;
|
|
260
363
|
for code there is no substitute short of the REST API.
|
|
261
|
-
- **
|
|
364
|
+
- **Capacity, backlogs, teams.** Iterations and areas ARE covered — see
|
|
365
|
+
`iterations` / `areas` above — but team capacity and backlog ordering are not.
|
|
366
|
+
- **Wiki content search.** `wiki tree` then `wiki read` is the only way through;
|
|
367
|
+
there is no grep across pages.
|
|
262
368
|
- Pull requests, builds, pipelines.
|
|
263
369
|
|
|
264
370
|
**There is no Azure DevOps MCP server here any more, and that is deliberate.**
|
|
@@ -335,6 +441,11 @@ Three things that trip up a parser written against the REST API:
|
|
|
335
441
|
- **A field is ABSENT when unset, not empty.** `fields["System.Description"]` is
|
|
336
442
|
simply missing on an item nobody has written one for — which is a *finding*
|
|
337
443
|
worth reporting, not a crash. Measured: seven of eight children of one epic.
|
|
444
|
+
- **A child is a placeholder when the description is absent AND `comments`,
|
|
445
|
+
`attachments` and `wikiPages` are all empty.** Check all four: a spec is as
|
|
446
|
+
often a comment or a linked page as a description.
|
|
447
|
+
- **`--pretty` always prints a Problems section**, saying `none` when there is
|
|
448
|
+
nothing wrong — so the check above can be made from either format.
|
|
338
449
|
|
|
339
450
|
`--pretty` renders all of the above as readable markdown and drops the identity
|
|
340
451
|
noise. It is not only "for a human" — for reading a single item it is usually
|