@floh-solutions/pharos-cli 0.19.0 → 0.21.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 +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +61 -35
- package/dist/cli.js.map +1 -1
- package/dist/commands/doctor.d.ts +45 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +415 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/setup.d.ts +9 -0
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +12 -0
- package/dist/commands/setup.js.map +1 -1
- package/dist/convert.d.ts +87 -0
- package/dist/convert.d.ts.map +1 -0
- package/dist/convert.js +137 -0
- package/dist/convert.js.map +1 -0
- package/package.json +3 -3
- package/skill/SKILL.md +15 -2
package/dist/cli.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ import { type ExitCode } from "./output.js";
|
|
|
11
11
|
* expensive kind of wrong. Anything added to the switch belongs here, and the
|
|
12
12
|
* test below fails if it does not.
|
|
13
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"];
|
|
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", "doctor"];
|
|
15
15
|
export interface RunOptions {
|
|
16
16
|
argv: string[];
|
|
17
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;AA4B1D,OAAO,EAKL,KAAK,QAAQ,EAEd,MAAM,aAAa,CAAC;AAyBrB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,oRAMX,CAAC;AAmTX,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
|
@@ -8,6 +8,7 @@ import { runClassification, runFields, runHistory, runLinkTypes, } from "./comma
|
|
|
8
8
|
import { runComment } from "./commands/comment.js";
|
|
9
9
|
import { runCreate } from "./commands/create.js";
|
|
10
10
|
import { runDetach } from "./commands/detach.js";
|
|
11
|
+
import { runDoctor } from "./commands/doctor.js";
|
|
11
12
|
import { runDownload, runTypes, runWhoami } from "./commands/discover.js";
|
|
12
13
|
import { runImage, runWikiImage } from "./commands/image.js";
|
|
13
14
|
import { runWikiImport } from "./commands/import.js";
|
|
@@ -58,7 +59,7 @@ export const COMMANDS = [
|
|
|
58
59
|
"history", "iterations", "areas", "links", "fields",
|
|
59
60
|
"create", "update", "link", "unlink", "delete", "restore", "deleted",
|
|
60
61
|
"attach", "detach", "download", "image", "people",
|
|
61
|
-
"wiki", "comment", "hooks", "plan",
|
|
62
|
+
"wiki", "comment", "hooks", "plan", "doctor",
|
|
62
63
|
];
|
|
63
64
|
/** Where long text comes from, for the verbs that take some. */
|
|
64
65
|
const CONTENT_OPTIONS = {
|
|
@@ -89,6 +90,12 @@ START HERE
|
|
|
89
90
|
--skill also write the skill to ~/.claude/skills.
|
|
90
91
|
Only for a machine that cannot use plugins —
|
|
91
92
|
a personal copy SHADOWS the marketplace one.
|
|
93
|
+
--convert download pharos-convert (~7.5 MB), which is
|
|
94
|
+
what \`wiki import\` needs for .docx .pdf .rtf
|
|
95
|
+
.html .odt. Verified against a checksum that
|
|
96
|
+
ships inside this package. Without it those
|
|
97
|
+
types are refused by name; .md and .txt import
|
|
98
|
+
either way.
|
|
92
99
|
|
|
93
100
|
COMMANDS
|
|
94
101
|
|
|
@@ -318,6 +325,15 @@ COMMANDS
|
|
|
318
325
|
wiki subscription CANNOT be made in the web UI:
|
|
319
326
|
the repo picker hides wiki repositories.
|
|
320
327
|
|
|
328
|
+
doctor What is installed on THIS machine, what is
|
|
329
|
+
missing, and what each missing thing costs.
|
|
330
|
+
Three tiers: pharos itself, \`wiki import\`
|
|
331
|
+
beyond .md/.txt, and reading a downloaded
|
|
332
|
+
attachment. Read-only and offline; it also
|
|
333
|
+
prints the PATH it searched, because a GUI-
|
|
334
|
+
launched app inherits a minimal one and would
|
|
335
|
+
otherwise be told a provisioned machine is bare.
|
|
336
|
+
|
|
321
337
|
plan <file> [...] Turn an implementation plan into a work item
|
|
322
338
|
tree. Passed through to plan-to-board verbatim,
|
|
323
339
|
including its flags and its human output.
|
|
@@ -438,44 +454,47 @@ async function dispatch(io, options) {
|
|
|
438
454
|
}
|
|
439
455
|
: command === "types"
|
|
440
456
|
? { type: { type: "string" } }
|
|
441
|
-
: command === "
|
|
442
|
-
? {
|
|
443
|
-
|
|
444
|
-
parent: { type: "string" },
|
|
445
|
-
state: { type: "string" },
|
|
446
|
-
priority: { type: "string" },
|
|
447
|
-
assignee: { type: "string" },
|
|
448
|
-
field: { type: "string", multiple: true },
|
|
449
|
-
tag: { type: "string", multiple: true },
|
|
450
|
-
...CONTENT_OPTIONS,
|
|
451
|
-
}
|
|
452
|
-
: command === "link" || command === "unlink"
|
|
457
|
+
: command === "doctor"
|
|
458
|
+
? { verify: { type: "boolean" } }
|
|
459
|
+
: command === "create"
|
|
453
460
|
? {
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
461
|
+
title: { type: "string" },
|
|
462
|
+
parent: { type: "string" },
|
|
463
|
+
state: { type: "string" },
|
|
464
|
+
priority: { type: "string" },
|
|
465
|
+
assignee: { type: "string" },
|
|
466
|
+
field: { type: "string", multiple: true },
|
|
467
|
+
tag: { type: "string", multiple: true },
|
|
468
|
+
...CONTENT_OPTIONS,
|
|
457
469
|
}
|
|
458
|
-
: command === "
|
|
459
|
-
? {
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
:
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
}
|
|
472
|
-
: command === "
|
|
470
|
+
: command === "link" || command === "unlink"
|
|
471
|
+
? {
|
|
472
|
+
...Object.fromEntries(Object.keys(LINK_KINDS).map((kind) => [kind, { type: "string" }])),
|
|
473
|
+
"wiki-page": { type: "string" },
|
|
474
|
+
comment: { type: "string" },
|
|
475
|
+
}
|
|
476
|
+
: command === "deleted"
|
|
477
|
+
? { top: { type: "string" } }
|
|
478
|
+
: command === "history"
|
|
479
|
+
? { top: { type: "string" }, all: { type: "boolean" } }
|
|
480
|
+
: command === "iterations" || command === "areas"
|
|
481
|
+
? { depth: { type: "string" } }
|
|
482
|
+
: command === "fields"
|
|
483
|
+
? { type: { type: "string" }, constrained: { type: "boolean" } }
|
|
484
|
+
: command === "hooks"
|
|
473
485
|
? {
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
486
|
+
hub: { type: "string" },
|
|
487
|
+
user: { type: "string" },
|
|
488
|
+
password: { type: "string" },
|
|
477
489
|
}
|
|
478
|
-
:
|
|
490
|
+
: command === "setup"
|
|
491
|
+
? {
|
|
492
|
+
print: { type: "boolean" },
|
|
493
|
+
stdin: { type: "boolean" },
|
|
494
|
+
skill: { type: "boolean" },
|
|
495
|
+
convert: { type: "boolean" },
|
|
496
|
+
}
|
|
497
|
+
: CONTENT_OPTIONS;
|
|
479
498
|
const { values, positionals } = parse(options.argv, { ...GLOBAL_OPTIONS, ...extras });
|
|
480
499
|
if (values["version"] === true)
|
|
481
500
|
return emitText(io, await version(options.cwd));
|
|
@@ -490,8 +509,15 @@ async function dispatch(io, options) {
|
|
|
490
509
|
print: values["print"] === true,
|
|
491
510
|
stdin: values["stdin"] === true,
|
|
492
511
|
skill: values["skill"] === true,
|
|
512
|
+
convert: values["convert"] === true,
|
|
493
513
|
}, options.readStdin ?? readAllStdin, options.client);
|
|
494
514
|
}
|
|
515
|
+
// Before the Session, for the same reason as `setup`: this is the command you
|
|
516
|
+
// run when something is wrong, and refusing it because ADO_ORG is missing
|
|
517
|
+
// would withhold the answer at exactly the moment it is the answer.
|
|
518
|
+
if (command === "doctor") {
|
|
519
|
+
return runDoctor(io, options.env, { verify: values["verify"] === true }, values["pretty"] === true, await version(options.cwd));
|
|
520
|
+
}
|
|
495
521
|
const session = new Session({
|
|
496
522
|
env: options.env,
|
|
497
523
|
organization: asString(values["org"]),
|
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAwB,MAAM,WAAW,CAAC;AAG5D,OAAO,EAAE,GAAG,IAAI,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,UAAU,EACV,YAAY,GACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EACL,OAAO,EACP,QAAQ,EACR,WAAW,EACX,UAAU,GAGX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAIvC;;;;;;GAMG;AACH,MAAM,cAAc,GAAkB;IACpC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IACzB,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;IACpC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC9B,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAChC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACvB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;IACrC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;CAC7B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IAC3C,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ;IACnD,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;IACpE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ;IACjD,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ;CACpC,CAAC;AAEX,gEAAgE;AAChE,MAAM,eAAe,GAAkB;IACrC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxB,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;CAC3B,CAAC;AAEF,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qEAyRuD,oBAAoB;;;;;;;;;;;;;;;CAexF,CAAC;AAcF,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAmB;IAC3C,MAAM,EAAE,GAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAClE,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,EAAM,EAAE,OAAmB;IACjD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAE3E,8EAA8E;IAC9E,8EAA8E;IAC9E,mEAAmE;IACnE,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,MAAM,GACV,OAAO,KAAK,MAAM;QAChB,CAAC,CAAC;YACE,iBAAiB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACtC,kBAAkB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACvC,mBAAmB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACxC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC7B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;SAC7B;QACH,CAAC,CAAC,OAAO,KAAK,OAAO;YACnB,CAAC,CAAC;gBACE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBACzB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC5B,oEAAoE;gBACpE,oCAAoC;gBACpC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACzC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACxC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACvC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACxB,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBACxB,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACvB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aACzB;YACL,CAAC,CAAC,OAAO,KAAK,QAAQ;gBACpB,CAAC,CAAC;oBACE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC5B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;oBACzC,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACjC;gBACL,CAAC,CAAC,OAAO,KAAK,QAAQ;oBACpB,CAAC,CAAC;wBACE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBAC3B,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;qBACtC;oBACL,CAAC,CAAC,OAAO,KAAK,QAAQ;wBACpB,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;wBAChC,CAAC,CAAC,OAAO,KAAK,OAAO;4BACnB,CAAC,CAAC;gCACE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACvB,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;6BACtC;4BACL,CAAC,CAAC,OAAO,KAAK,MAAM;gCAClB,CAAC,CAAC;oCACE,kEAAkE;oCAClE,kEAAkE;oCAClE,0DAA0D;oCAC1D,iEAAiE;oCACjE,gCAAgC;oCAChC,GAAG,eAAe;oCAClB,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oCACvB,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;oCACrC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oCACzB,kEAAkE;oCAClE,gEAAgE;oCAChE,+DAA+D;oCAC/D,wDAAwD;oCACxD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;oCACxC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oCAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iCACvB;gCACL,CAAC,CAAC,OAAO,KAAK,UAAU;oCACtB,CAAC,CAAC;wCACE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wCACvB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wCACxB,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;qCACzB;oCACL,CAAC,CAAC,OAAO,KAAK,OAAO;wCACnB,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;wCAChC,CAAC,CAAC,OAAO,KAAK,QAAQ;4CACpB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;4CACnC,CAAC,CAAC,OAAO,KAAK,QAAQ;gDACpB,CAAC,CAAC;oDACE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oDACzB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oDAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oDACzB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oDAC5B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oDAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;oDACzC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;oDACvC,GAAG,eAAe;iDACnB;gDACL,CAAC,CAAC,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ;oDAC1C,CAAC,CAAC;wDACE,GAAG,MAAM,CAAC,WAAW,CACnB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAW,CAAC,CAAC,CAC3E;wDACD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wDAC/B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;qDAC5B;oDACL,CAAC,CAAC,OAAO,KAAK,SAAS;wDACrB,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;wDAC/B,CAAC,CAAC,OAAO,KAAK,SAAS;4DACrB,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;4DACzD,CAAC,CAAC,OAAO,KAAK,YAAY,IAAI,OAAO,KAAK,OAAO;gEAC/C,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;gEACjC,CAAC,CAAC,OAAO,KAAK,QAAQ;oEACpB,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;oEAClE,CAAC,CAAC,OAAO,KAAK,OAAO;wEACnB,CAAC,CAAC;4EACE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4EACvB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4EACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yEAC7B;wEACH,CAAC,CAAC,OAAO,KAAK,OAAO;4EACrB,CAAC,CAAC;gFACE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gFAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gFAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gFAC1B,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;6EAC7B;4EACH,CAAC,CAAC,eAAe,CAAC;IAExB,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAEtF,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAChF,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAEjF,2EAA2E;IAC3E,uEAAuE;IACvE,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,QAAQ,CACb,EAAE,EACF,OAAO,CAAC,GAAG,EACX;YACE,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACpC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI;YAC/B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI;YAC/B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI;YAC/B,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI;SACpC,EACD,OAAO,CAAC,SAAS,IAAI,YAAY,EACjC,OAAO,CAAC,MAAM,CACf,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,0EAA0E;IAC1E,oEAAoE;IACpE,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,SAAS,CACd,EAAE,EACF,OAAO,CAAC,GAAG,EACX,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,EACrC,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,EACzB,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAC3B,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,EAAE,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QACxD,2EAA2E;QAC3E,gCAAgC;QAChC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI;QAC3D,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI;QACvC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI;QACjC,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAElC,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE;gBAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI;gBAC7B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACtC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAClC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC9B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAClC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9B,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;gBAC3B,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aAC/B,CAAC,CAAC;QAEL,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;gBAClC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAChC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACtC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACtC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAChC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAClC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;aAC3C,CAAC,CAAC;QAEL,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE;gBAC9C,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5B,aAAa,EAAE,MAAM,CAAC,gBAAgB,CAAC,KAAK,IAAI;aACjD,CAAC,CAAC;QAEL,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;QAE1E,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAEnE,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE;gBAC/C,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACpC,aAAa,EAAE,MAAM,CAAC,gBAAgB,CAAC,KAAK,IAAI;aACjD,CAAC,CAAC;QAEL,KAAK,UAAU;YACb,OAAO,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE;gBACjD,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9B,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;aAC5B,CAAC,CAAC;QAEL,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;QAEnE,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAEhC,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;gBAClC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAChC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC;gBACjD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAChC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACtC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACtC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAClC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC9B,WAAW,EAAE,MAAM,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;aAC5C,CAAC,CAAC;QAEL,KAAK,MAAM;YACT,OAAO,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAEzD,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAE3D,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAEtC,KAAK,SAAS;YACZ,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAEvC,KAAK,SAAS;YACZ,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAEpE,KAAK,SAAS;YACZ,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;gBACnC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;gBAC7B,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI;aAC5B,CAAC,CAAC;QAEL,KAAK,YAAY;YACf,OAAO,iBAAiB,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;gBAClD,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;aACjC,CAAC,CAAC;QAEL,KAAK,OAAO;YACV,OAAO,iBAAiB,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEvF,KAAK,OAAO;YACV,OAAO,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAEnC,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE;gBAC5B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9B,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK,IAAI;aAC5C,CAAC,CAAC;QAEL,KAAK,MAAM;YACT,OAAO,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;gBAChC,WAAW,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK,IAAI;gBAC/C,YAAY,EAAE,MAAM,CAAC,kBAAkB,CAAC,KAAK,IAAI;gBACjD,aAAa,EAAE,MAAM,CAAC,mBAAmB,CAAC,KAAK,IAAI;gBACnD,kEAAkE;gBAClE,oEAAoE;gBACpE,6DAA6D;gBAC7D,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;gBAC9D,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI;aACpC,CAAC,CAAC;QAEL,KAAK,MAAM;YACT,sEAAsE;YACtE,wEAAwE;YACxE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO;gBAAE,OAAO,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC/C,OAAO,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;oBAC7C,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;wBAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;4BACvB,MAAM,UAAU,CAAC,IAAI,GAAG,0BAA0B,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;wBACtE,CAAC;wBACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;oBACrB,CAAC,CAAC;oBACF,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBACpC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;iBAC7B,CAAC,CAAC;YACL,CAAC;YACD,0EAA0E;YAC1E,uEAAuE;YACvE,sEAAsE;YACtE,+CAA+C;YAC/C,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;gBACxB,OAAO,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;oBAC3D,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5B,aAAa,EAAE,MAAM,CAAC,gBAAgB,CAAC,KAAK,IAAI;iBACjD,CAAC,CAAC;YACL,CAAC;YACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACzB,OAAO,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;oBAC5D,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAChC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;iBAC3B,CAAC,CAAC;YACL,CAAC;YACD,OAAO,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;gBAChC,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;aACxC,CAAC,CAAC;QAEL,KAAK,SAAS;YACZ,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;gBACnC,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;aACrC,CAAC,CAAC;QAEL,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;gBACjC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5B,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;aACvC,CAAC,CAAC;QAEL;YACE,MAAM,UAAU,CACd,oBAAoB,OAAO,UAAU,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAC9F,EAAE,QAAQ,EAAE,QAAQ,EAAE,CACvB,CAAC;IACN,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,IAAI,CAAC,OAAmB;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC;QAChC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;QACnC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;KACpE,CAAC,CAAC;IACH,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,IAAiB,CAAC;AACnD,CAAC;AAED,SAAS,KAAK,CACZ,IAAuB,EACvB,aAA4B;IAE5B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC;YACvB,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;YACf,OAAO,EAAE,aAAa;YACtB,gBAAgB,EAAE,IAAI;YACtB,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAiC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;IAC/F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,2EAA2E;QAC3E,gEAAgE;QAChE,MAAM,UAAU,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,uEAAuE;AACvE,KAAK,UAAU,OAAO,CACpB,OAAmB,EACnB,MAA+B;IAE/B,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;IACrF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,UAAU,CAAC,mDAAmD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChG,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAEpC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACtC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IAE5E,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,YAAY,CAAC,EAAE,CAAC;IAC/C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,YAAY;IACzB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK;QAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,GAAY;IAC7B,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,oBAAoB,CAAC;IACzD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,UAAU,CACd,wDAAwD,GAAG,uBAAuB,CACnF,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,GAAW;IAChC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QACrF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAyB,CAAC;QAC5D,OAAO,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;QACxE,KAAK,GAAG,CAAC;QACT,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvE,CAAC;AAED,iFAAiF;AACjF,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;AACzF,CAAC;AAED;;;;;;GAMG;AACH,6CAA6C;AAC7C,SAAS,WAAW,CAAC,GAAY,EAAE,IAAY;IAC7C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAC5D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,MAAM,UAAU,CAAC,GAAG,IAAI,+BAA+B,GAAG,IAAI,CAAC,CAAC;IACxF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,8EAA8E;AAC9E,SAAS,WAAW,CAAC,MAA+B;IAKlD,MAAM,KAAK,GAAuC,EAAE,CAAC;IACrD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,6EAA6E;IAC7E,8EAA8E;IAC9E,yEAAyE;IACzE,0EAA0E;IAC1E,gCAAgC;IAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IAE3C,8EAA8E;IAC9E,8EAA8E;IAC9E,2BAA2B;IAC3B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QAC7E,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,UAAU,CACd,mDAAmD,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CACrG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,qEAAqE;AACrE,SAAS,SAAS,CAAC,GAAY;IAC7B,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,UAAU,CAAC,wDAAwD,GAAG,IAAI,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,SAAS,CAAC,GAAY,EAAE,QAAiB;IAChD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,UAAU,CAAC,mDAAmD,GAAG,IAAI,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,UAAU,CAAC,2BAA2B,KAAK,+BAA+B,EAAE;YAChF,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,GAAG,CAAC,GAAY;IACvB,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,UAAU,CAAC,iDAAiD,GAAG,IAAI,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type ExitCode, type Io } from "../output.js";
|
|
2
|
+
/**
|
|
3
|
+
* `pharos doctor` — what is installed, what is missing, and what each missing
|
|
4
|
+
* thing costs you.
|
|
5
|
+
*
|
|
6
|
+
* ## Why this is a verb and not a paragraph in the README
|
|
7
|
+
*
|
|
8
|
+
* **The tool works fine on a machine with nothing else on it, and its
|
|
9
|
+
* documentation was written on a machine that had everything.** Every
|
|
10
|
+
* measurement behind the skill's attachment-reading guidance — LibreOffice,
|
|
11
|
+
* poppler, `unzip`, a markitdown venv — was taken here, where all four happened
|
|
12
|
+
* to be installed because the operator works with those files daily. A normal
|
|
13
|
+
* Claude Code user has none of them, and the skill names those commands with
|
|
14
|
+
* total confidence.
|
|
15
|
+
*
|
|
16
|
+
* So this answers the question that was never askable: *which of the things
|
|
17
|
+
* pharos talks about are actually true on THIS machine?*
|
|
18
|
+
*
|
|
19
|
+
* ## Three tiers, because "missing" means three different things
|
|
20
|
+
*
|
|
21
|
+
* - **Tier 0** is pharos itself. Missing here means nothing works.
|
|
22
|
+
* - **Tier 1** is `wiki import` beyond `.md`/`.txt`. Missing here degrades
|
|
23
|
+
* honestly — those types are refused by name with the reason — so it is a
|
|
24
|
+
* narrowed tool rather than a broken one.
|
|
25
|
+
* - **Tier 2** is reading attachments, which is the AGENT's job with its own
|
|
26
|
+
* tooling. Nothing here is a dependency of the CLI at all; these are what
|
|
27
|
+
* make the skill's advice actionable.
|
|
28
|
+
*
|
|
29
|
+
* ## It is a data source, not a report
|
|
30
|
+
*
|
|
31
|
+
* A wizard renders this (#766), and so does the macOS app's setup wizard
|
|
32
|
+
* (#767) — which shows progress steps and never a terminal. That is why every
|
|
33
|
+
* check is an object with a **stable `id`**, carries what it `unlocks` in
|
|
34
|
+
* prose, and carries the `install` command for this platform. A GUI that has to
|
|
35
|
+
* parse English to know what happened is a GUI that will eventually be wrong.
|
|
36
|
+
*
|
|
37
|
+
* Read-only and offline by default: it spawns version probes and touches the
|
|
38
|
+
* network only for `--verify`.
|
|
39
|
+
*/
|
|
40
|
+
export interface DoctorCommandOptions {
|
|
41
|
+
/** Also prove the token against Azure DevOps. Costs two requests. */
|
|
42
|
+
verify: boolean;
|
|
43
|
+
}
|
|
44
|
+
export declare function runDoctor(io: Io, env: NodeJS.ProcessEnv, options: DoctorCommandOptions, pretty: boolean, version: string): Promise<ExitCode>;
|
|
45
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAOA,OAAO,EAAkB,KAAK,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,cAAc,CAAC;AAItE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,MAAM,WAAW,oBAAoB;IACnC,qEAAqE;IACrE,MAAM,EAAE,OAAO,CAAC;CACjB;AAkKD,wBAAsB,SAAS,CAC7B,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,QAAQ,CAAC,CA+CnB"}
|
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
import { access, constants } from "node:fs/promises";
|
|
3
|
+
import { homedir, platform } from "node:os";
|
|
4
|
+
import { delimiter, join } from "node:path";
|
|
5
|
+
import { promisify } from "node:util";
|
|
6
|
+
import { CONVERT_RELEASE } from "../convert.js";
|
|
7
|
+
import { emit, emitText } from "../output.js";
|
|
8
|
+
const run = promisify(execFile);
|
|
9
|
+
/** Where LibreOffice puts itself when installed from the .dmg rather than brew. */
|
|
10
|
+
const LIBREOFFICE_BUNDLE = "/Applications/LibreOffice.app/Contents/MacOS/soffice";
|
|
11
|
+
/**
|
|
12
|
+
* markitdown is **not a command**, it is a module inside a per-skill venv.
|
|
13
|
+
*
|
|
14
|
+
* Probing PATH for `markitdown` reports absent on a machine where it works
|
|
15
|
+
* perfectly — which is precisely the mistake #741 exists to warn about, so
|
|
16
|
+
* making it here would be its own punchline.
|
|
17
|
+
*/
|
|
18
|
+
const PPTX_VENV_PYTHON = join(homedir(), ".claude", "skills", "pptx", ".venv", "bin", "python");
|
|
19
|
+
const PROBES = [
|
|
20
|
+
{
|
|
21
|
+
id: "node",
|
|
22
|
+
name: "Node.js",
|
|
23
|
+
tier: 0,
|
|
24
|
+
unlocks: "pharos runs at all. Version 22 or newer.",
|
|
25
|
+
without: "Nothing works — pharos is a Node program.",
|
|
26
|
+
command: ["node", "--version"],
|
|
27
|
+
versionFrom: /v?(\d+\.\d+\.\d+)/,
|
|
28
|
+
install: { brew: "brew install node", apt: "sudo apt install nodejs", winget: "winget install OpenJS.NodeJS" },
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
id: "pharos-convert",
|
|
32
|
+
name: "pharos-convert",
|
|
33
|
+
tier: 1,
|
|
34
|
+
unlocks: "`wiki import` for .docx, .pdf, .rtf, .html and .odt.",
|
|
35
|
+
without: "`wiki import` still takes .md and .txt. Everything else is refused by name with the "
|
|
36
|
+
+ "reason — narrowed, not broken.",
|
|
37
|
+
command: ["pharos-convert", "--version"],
|
|
38
|
+
presence: ["--help"],
|
|
39
|
+
// It gained `--version` in #764 precisely so this line could exist. Without
|
|
40
|
+
// one, a converter two days older than the source was indistinguishable
|
|
41
|
+
// from a current one, and a change could be complete, tested and committed
|
|
42
|
+
// while the tool that uses it printed the old behaviour.
|
|
43
|
+
versionFrom: /^(\S+)/,
|
|
44
|
+
install: { brew: "pharos setup --convert", apt: "pharos setup --convert", winget: "pharos setup --convert" },
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
id: "libreoffice",
|
|
48
|
+
name: "LibreOffice",
|
|
49
|
+
tier: 2,
|
|
50
|
+
unlocks: "Reading .docx, .xlsx and .pptx — convert to PDF and read that, which is the only "
|
|
51
|
+
+ "route that keeps the pictures.",
|
|
52
|
+
without: "You can download an Office attachment and have no way to read what is in it.",
|
|
53
|
+
command: ["soffice", "--version"],
|
|
54
|
+
versionFrom: /LibreOffice\s+(\S+)/,
|
|
55
|
+
fallbacks: [LIBREOFFICE_BUNDLE],
|
|
56
|
+
install: {
|
|
57
|
+
brew: "brew install --cask libreoffice",
|
|
58
|
+
apt: "sudo apt install libreoffice",
|
|
59
|
+
winget: "winget install TheDocumentFoundation.LibreOffice",
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
id: "pdftotext",
|
|
64
|
+
name: "poppler (pdftotext)",
|
|
65
|
+
tier: 2,
|
|
66
|
+
unlocks: "Pulling text out of a PDF with its table layout intact.",
|
|
67
|
+
without: "Only matters if you do NOT read PDFs natively. Most agents do.",
|
|
68
|
+
command: ["pdftotext", "-v"],
|
|
69
|
+
versionFrom: /version\s+(\S+)/,
|
|
70
|
+
install: {
|
|
71
|
+
brew: "brew install poppler",
|
|
72
|
+
apt: "sudo apt install poppler-utils",
|
|
73
|
+
winget: "winget install oschwartz10612.Poppler",
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
id: "pdftoppm",
|
|
78
|
+
name: "poppler (pdftoppm)",
|
|
79
|
+
tier: 2,
|
|
80
|
+
unlocks: "Rendering a scanned PDF to images when there is no text to extract.",
|
|
81
|
+
without: "Only matters if you do NOT read PDFs natively.",
|
|
82
|
+
command: ["pdftoppm", "-v"],
|
|
83
|
+
versionFrom: /version\s+(\S+)/,
|
|
84
|
+
install: {
|
|
85
|
+
brew: "brew install poppler",
|
|
86
|
+
apt: "sudo apt install poppler-utils",
|
|
87
|
+
winget: "winget install oschwartz10612.Poppler",
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
id: "unzip",
|
|
92
|
+
name: "unzip",
|
|
93
|
+
tier: 2,
|
|
94
|
+
unlocks: "Pulling the images out of a .docx, .pptx or .xlsx — they are all ZIP archives.",
|
|
95
|
+
without: "You cannot reach the images, which are often where a deck's real content is.",
|
|
96
|
+
command: ["unzip", "-v"],
|
|
97
|
+
versionFrom: /UnZip\s+(\S+)/,
|
|
98
|
+
install: { apt: "sudo apt install unzip", winget: "winget install GnuWin32.UnZip" },
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
id: "markitdown",
|
|
102
|
+
name: "markitdown",
|
|
103
|
+
tier: 2,
|
|
104
|
+
unlocks: "Slide text out of a .pptx, with the embedded images named.",
|
|
105
|
+
without: "Convert the deck to PDF with LibreOffice instead — better, because it keeps the "
|
|
106
|
+
+ "pictures rather than naming them.",
|
|
107
|
+
command: [PPTX_VENV_PYTHON, "-m", "markitdown", "--version"],
|
|
108
|
+
versionFrom: /markitdown\s+(\S+)/,
|
|
109
|
+
note: "Lives in the pptx skill's venv, not on PATH. It handles .pptx only — that venv was "
|
|
110
|
+
+ "installed without the [docx], [pdf] and [xlsx] extras.",
|
|
111
|
+
},
|
|
112
|
+
];
|
|
113
|
+
export async function runDoctor(io, env, options, pretty, version) {
|
|
114
|
+
const checks = await Promise.all(PROBES.map((probe) => check(probe, env)));
|
|
115
|
+
// pharos itself is not probed by spawning pharos — that would be a program
|
|
116
|
+
// asking a subprocess who it is. It knows.
|
|
117
|
+
checks.unshift({
|
|
118
|
+
id: "pharos",
|
|
119
|
+
name: "pharos CLI",
|
|
120
|
+
tier: 0,
|
|
121
|
+
unlocks: "Every verb: query, task, create, update, wiki, comments, attachments.",
|
|
122
|
+
without: "—",
|
|
123
|
+
ok: true,
|
|
124
|
+
version,
|
|
125
|
+
path: process.argv[1] ?? null,
|
|
126
|
+
install: "npm i -g @floh-solutions/pharos-cli",
|
|
127
|
+
});
|
|
128
|
+
// **A converter that is present but STALE is the case that hid for two days.**
|
|
129
|
+
// Presence was the only signal it gave, so an old build looked identical to a
|
|
130
|
+
// current one while producing different answers. Now the mismatch is visible.
|
|
131
|
+
const convert = checks.find((c) => c.id === "pharos-convert");
|
|
132
|
+
if (convert?.ok === true && convert.version !== null && convert.version !== CONVERT_RELEASE.version) {
|
|
133
|
+
convert.note =
|
|
134
|
+
`Installed ${convert.version}, but this pharos expects ${CONVERT_RELEASE.version}. `
|
|
135
|
+
+ "It still works; it may convert differently from what the docs describe. "
|
|
136
|
+
+ "`pharos setup --convert` replaces it.";
|
|
137
|
+
}
|
|
138
|
+
const config = configCheck(env);
|
|
139
|
+
checks.push(config);
|
|
140
|
+
if (options.verify)
|
|
141
|
+
checks.push(...(await verifyScopes(env, config.ok)));
|
|
142
|
+
const result = {
|
|
143
|
+
ok: checks.filter((c) => c.tier === 0).every((c) => c.ok),
|
|
144
|
+
checks,
|
|
145
|
+
tiers: [0, 1, 2].map((tier) => summariseTier(tier, checks)),
|
|
146
|
+
// **The PATH is part of the answer, not debug output.**
|
|
147
|
+
//
|
|
148
|
+
// A GUI-launched app inherits a minimal PATH — no /opt/homebrew/bin, no
|
|
149
|
+
// ~/.local/bin, no nvm shims — so the macOS wizard (#767) can be told
|
|
150
|
+
// "nothing is installed" on a fully provisioned machine. Reporting what was
|
|
151
|
+
// searched turns that from a mystery into a one-line diagnosis.
|
|
152
|
+
searched: (env["PATH"] ?? "").split(delimiter).filter((entry) => entry !== ""),
|
|
153
|
+
platform: platform(),
|
|
154
|
+
};
|
|
155
|
+
return pretty ? emitText(io, render(result)) : emit(io, result);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Is it there, and which version. Never throws — absence is an answer.
|
|
159
|
+
*
|
|
160
|
+
* **Probed against the env this command was GIVEN, not `process.env`.** Those
|
|
161
|
+
* are the same thing from a shell and are not the same thing when the macOS app
|
|
162
|
+
* spawns `pharos` with an augmented PATH (#767) — and a doctor that probes one
|
|
163
|
+
* environment while reporting another is worse than no doctor, because its
|
|
164
|
+
* answer is confidently about a machine state that never existed. Caught by the
|
|
165
|
+
* test that runs it against an empty PATH: `execFile` inherits `process.env`
|
|
166
|
+
* unless told otherwise, so every probe was succeeding while `searched` printed
|
|
167
|
+
* a PATH containing nothing.
|
|
168
|
+
*/
|
|
169
|
+
async function check(probe, env) {
|
|
170
|
+
const candidates = [probe.command[0], ...(probe.fallbacks ?? [])];
|
|
171
|
+
for (const executable of candidates) {
|
|
172
|
+
// An absolute fallback that is not on disk is not worth spawning.
|
|
173
|
+
if (executable.startsWith("/") && !(await exists(executable)))
|
|
174
|
+
continue;
|
|
175
|
+
try {
|
|
176
|
+
const { stdout, stderr } = await run(executable, probe.command.slice(1), {
|
|
177
|
+
// Bounded: `soffice --version` starts a headless office suite, and a
|
|
178
|
+
// doctor that hangs is worse than one that reports "unknown".
|
|
179
|
+
timeout: 15_000,
|
|
180
|
+
maxBuffer: 1024 * 1024,
|
|
181
|
+
env,
|
|
182
|
+
});
|
|
183
|
+
const text = `${stdout}${stderr}`;
|
|
184
|
+
return {
|
|
185
|
+
...describe(probe),
|
|
186
|
+
ok: true,
|
|
187
|
+
version: probe.versionFrom.exec(text)?.[1] ?? null,
|
|
188
|
+
// **The RESOLVED path, not the name we typed.** "soffice" tells you
|
|
189
|
+
// nothing; `/opt/homebrew/bin/soffice` tells you it came from brew, and
|
|
190
|
+
// `/Applications/LibreOffice.app/…` tells you it came from the .dmg and
|
|
191
|
+
// is therefore only on PATH by luck. That distinction is the whole
|
|
192
|
+
// reason this command reports paths at all.
|
|
193
|
+
path: (await resolveOnPath(executable, env)) ?? executable,
|
|
194
|
+
install: installCommand(probe),
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
// The version probe failed. Before concluding absence, ask the cheaper
|
|
199
|
+
// question — a binary too old to answer `--version` is still installed.
|
|
200
|
+
if (probe.presence !== undefined) {
|
|
201
|
+
try {
|
|
202
|
+
await run(executable, probe.presence, { timeout: 15_000, env });
|
|
203
|
+
return {
|
|
204
|
+
...describe(probe),
|
|
205
|
+
ok: true,
|
|
206
|
+
version: null,
|
|
207
|
+
path: (await resolveOnPath(executable, env)) ?? executable,
|
|
208
|
+
install: installCommand(probe),
|
|
209
|
+
note: "Installed, but too old to report a version. Replace it with "
|
|
210
|
+
+ "`pharos setup --convert` so what it does and what the docs say can be "
|
|
211
|
+
+ "compared at all.",
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
catch {
|
|
215
|
+
// Genuinely not there. Fall through to the next candidate.
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return { ...describe(probe), ok: false, version: null, path: null, install: installCommand(probe) };
|
|
221
|
+
}
|
|
222
|
+
function describe(probe) {
|
|
223
|
+
return {
|
|
224
|
+
id: probe.id,
|
|
225
|
+
name: probe.name,
|
|
226
|
+
tier: probe.tier,
|
|
227
|
+
unlocks: probe.unlocks,
|
|
228
|
+
without: probe.without,
|
|
229
|
+
...(probe.note === undefined ? {} : { note: probe.note }),
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* The install line for THIS platform, or null.
|
|
234
|
+
*
|
|
235
|
+
* Null rather than a guess: a command that does not exist here is worse than no
|
|
236
|
+
* command, because somebody will paste it.
|
|
237
|
+
*/
|
|
238
|
+
function installCommand(probe) {
|
|
239
|
+
if (probe.install === undefined)
|
|
240
|
+
return null;
|
|
241
|
+
const os = platform();
|
|
242
|
+
if (os === "darwin")
|
|
243
|
+
return probe.install.brew ?? null;
|
|
244
|
+
if (os === "win32")
|
|
245
|
+
return probe.install.winget ?? null;
|
|
246
|
+
return probe.install.apt ?? null;
|
|
247
|
+
}
|
|
248
|
+
/** Configuration, read from the environment — no network unless asked. */
|
|
249
|
+
function configCheck(env) {
|
|
250
|
+
const missing = ["ADO_ORG", "ADO_PROJECT", "ADO_PAT"].filter((name) => (env[name] ?? "") === "");
|
|
251
|
+
return {
|
|
252
|
+
id: "config",
|
|
253
|
+
name: "Azure DevOps configuration",
|
|
254
|
+
tier: 0,
|
|
255
|
+
unlocks: "Which organisation and project, and the token every call is made with.",
|
|
256
|
+
without: "Every command exits 2 with kind: \"config\".",
|
|
257
|
+
ok: missing.length === 0,
|
|
258
|
+
version: null,
|
|
259
|
+
path: null,
|
|
260
|
+
install: "pharos setup",
|
|
261
|
+
...(missing.length === 0
|
|
262
|
+
? {
|
|
263
|
+
note: "Present in the environment. This does NOT prove the token is valid or has both "
|
|
264
|
+
+ "scopes — `pharos setup` makes real calls to check that.",
|
|
265
|
+
}
|
|
266
|
+
: { note: `Missing: ${missing.join(", ")}.` }),
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* `--verify` — the two scopes, proven rather than assumed. Two requests.
|
|
271
|
+
*
|
|
272
|
+
* **Checked SEPARATELY because Azure DevOps grants them separately**, which is
|
|
273
|
+
* the same reason `setup` does it: a token with Work Items and not Wiki behaves
|
|
274
|
+
* perfectly until the first wiki write days later, then fails with a 401 that
|
|
275
|
+
* reads as a bad token rather than a narrow one.
|
|
276
|
+
*
|
|
277
|
+
* Off by default so `doctor` stays instant and offline — the answer to "what is
|
|
278
|
+
* installed" should not depend on a network that may be the thing that is
|
|
279
|
+
* broken.
|
|
280
|
+
*/
|
|
281
|
+
async function verifyScopes(env, configured) {
|
|
282
|
+
const base = {
|
|
283
|
+
tier: 0,
|
|
284
|
+
version: null,
|
|
285
|
+
path: null,
|
|
286
|
+
install: "pharos setup",
|
|
287
|
+
};
|
|
288
|
+
if (!configured) {
|
|
289
|
+
return [
|
|
290
|
+
{
|
|
291
|
+
...base,
|
|
292
|
+
id: "scopes",
|
|
293
|
+
name: "Token scopes",
|
|
294
|
+
unlocks: "Reading the board and the wiki.",
|
|
295
|
+
without: "Unknown until the configuration is there.",
|
|
296
|
+
ok: false,
|
|
297
|
+
note: "Skipped — there is nothing configured to verify. Run `pharos setup` first.",
|
|
298
|
+
},
|
|
299
|
+
];
|
|
300
|
+
}
|
|
301
|
+
const { AdoClient, WikiApi } = await import("@floh-solutions/ado-core");
|
|
302
|
+
const client = new AdoClient({
|
|
303
|
+
organization: env["ADO_ORG"],
|
|
304
|
+
project: env["ADO_PROJECT"],
|
|
305
|
+
pat: env["ADO_PAT"],
|
|
306
|
+
});
|
|
307
|
+
const workItems = await client.wiql
|
|
308
|
+
.query("SELECT [System.Id] FROM WorkItems", { top: 1 })
|
|
309
|
+
.then(() => ({ ok: true, note: "Work item read works." }))
|
|
310
|
+
.catch((error) => ({
|
|
311
|
+
ok: false,
|
|
312
|
+
note: "Work items unreadable — check the org, the project, and the token's \"Work Items "
|
|
313
|
+
+ `(Read, write, & manage)\" scope. ${messageOf(error)}`,
|
|
314
|
+
}));
|
|
315
|
+
const wiki = await new WikiApi(client.http)
|
|
316
|
+
.listWikis()
|
|
317
|
+
.then((wikis) => ({ ok: true, note: `Wiki read works (${wikis.length} found).` }))
|
|
318
|
+
.catch((error) => ({
|
|
319
|
+
ok: false,
|
|
320
|
+
note: "Wiki unreadable — a SEPARATE permission from work items; check the token's \"Wiki "
|
|
321
|
+
+ `(Read & write)\" scope. ${messageOf(error)}`,
|
|
322
|
+
}));
|
|
323
|
+
return [
|
|
324
|
+
{
|
|
325
|
+
...base,
|
|
326
|
+
id: "scope-work-items",
|
|
327
|
+
name: "Token scope: Work Items",
|
|
328
|
+
unlocks: "query, task, create, update, link, attach — everything on the board.",
|
|
329
|
+
without: "Every board call fails as auth.",
|
|
330
|
+
...workItems,
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
...base,
|
|
334
|
+
id: "scope-wiki",
|
|
335
|
+
name: "Token scope: Wiki",
|
|
336
|
+
unlocks: "wiki read/write, page comments, import.",
|
|
337
|
+
without: "The board works and every wiki call fails, days later, looking like a bad token.",
|
|
338
|
+
...wiki,
|
|
339
|
+
},
|
|
340
|
+
];
|
|
341
|
+
}
|
|
342
|
+
function messageOf(error) {
|
|
343
|
+
return error instanceof Error ? error.message : String(error);
|
|
344
|
+
}
|
|
345
|
+
function summariseTier(tier, checks) {
|
|
346
|
+
const names = {
|
|
347
|
+
0: "pharos itself",
|
|
348
|
+
1: "wiki import beyond .md and .txt",
|
|
349
|
+
2: "reading downloaded attachments",
|
|
350
|
+
};
|
|
351
|
+
const mine = checks.filter((c) => c.tier === tier);
|
|
352
|
+
return {
|
|
353
|
+
tier,
|
|
354
|
+
name: names[tier],
|
|
355
|
+
ok: mine.every((c) => c.ok),
|
|
356
|
+
missing: mine.filter((c) => !c.ok).map((c) => c.id),
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Where a bare command name actually resolves, by walking `PATH` in order.
|
|
361
|
+
*
|
|
362
|
+
* Deliberately not `which`: spawning a shell to answer this would inherit a
|
|
363
|
+
* DIFFERENT environment from the one the probes just ran in, which is the exact
|
|
364
|
+
* class of mistake this command exists to catch.
|
|
365
|
+
*/
|
|
366
|
+
async function resolveOnPath(executable, env) {
|
|
367
|
+
if (executable.includes("/"))
|
|
368
|
+
return executable;
|
|
369
|
+
for (const dir of (env["PATH"] ?? "").split(delimiter)) {
|
|
370
|
+
if (dir === "")
|
|
371
|
+
continue;
|
|
372
|
+
const candidate = join(dir, executable);
|
|
373
|
+
if (await exists(candidate))
|
|
374
|
+
return candidate;
|
|
375
|
+
}
|
|
376
|
+
return null;
|
|
377
|
+
}
|
|
378
|
+
async function exists(path) {
|
|
379
|
+
try {
|
|
380
|
+
await access(path, constants.X_OK);
|
|
381
|
+
return true;
|
|
382
|
+
}
|
|
383
|
+
catch {
|
|
384
|
+
return false;
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
/** The human rendering. Grouped by tier, because that is what "missing" means. */
|
|
388
|
+
function render(result) {
|
|
389
|
+
const lines = [];
|
|
390
|
+
for (const tier of result.tiers) {
|
|
391
|
+
lines.push("", `## Tier ${tier.tier} — ${tier.name}`, "");
|
|
392
|
+
for (const check of result.checks.filter((c) => c.tier === tier.tier)) {
|
|
393
|
+
const mark = check.ok ? "✓" : "✗";
|
|
394
|
+
const version = check.version === null ? "" : ` ${check.version}`;
|
|
395
|
+
lines.push(` ${mark} ${check.name}${version}`);
|
|
396
|
+
if (check.ok) {
|
|
397
|
+
if (check.path !== null)
|
|
398
|
+
lines.push(` ${check.path}`);
|
|
399
|
+
}
|
|
400
|
+
else {
|
|
401
|
+
lines.push(` ${check.without}`);
|
|
402
|
+
if (check.install !== null)
|
|
403
|
+
lines.push(` install: ${check.install}`);
|
|
404
|
+
}
|
|
405
|
+
if (check.note !== undefined)
|
|
406
|
+
lines.push(` note: ${check.note}`);
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
// Printed always, like `task`'s Problems section: an absent line and a line
|
|
410
|
+
// nobody rendered look identical to the reader.
|
|
411
|
+
lines.push("", `## PATH searched (${result.searched.length} entries)`, "");
|
|
412
|
+
lines.push(" If something is installed and reported missing here, it is not on this PATH.", ` ${result.searched.join("\n ")}`);
|
|
413
|
+
return lines.join("\n");
|
|
414
|
+
}
|
|
415
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/setup.d.ts
CHANGED
|
@@ -12,6 +12,15 @@ export interface SetupOptions {
|
|
|
12
12
|
* `--skill` opts in, for anyone who cannot use a plugin marketplace.
|
|
13
13
|
*/
|
|
14
14
|
skill: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Download and install `pharos-convert` (#764).
|
|
17
|
+
*
|
|
18
|
+
* Opt-in rather than automatic: it is 25 MB over the network for a feature
|
|
19
|
+
* most sessions never touch, and `setup` running unattended in CI should not
|
|
20
|
+
* quietly fetch a binary. `pharos doctor` names it when it is missing, which
|
|
21
|
+
* is how somebody finds out they want this.
|
|
22
|
+
*/
|
|
23
|
+
convert: boolean;
|
|
15
24
|
}
|
|
16
25
|
export declare function runSetup(io: Io, env: NodeJS.ProcessEnv, options: SetupOptions, readStdin: () => Promise<string>,
|
|
17
26
|
/** Injected so the verification can be driven against a mock transport. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAW,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAW,MAAM,0BAA0B,CAAC;AAG9D,OAAO,EAA8B,KAAK,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,cAAc,CAAC;AA4ClF,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,2FAA2F;IAC3F,KAAK,EAAE,OAAO,CAAC;IACf,2EAA2E;IAC3E,KAAK,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;;;;;;OAOG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC;AAChC,2EAA2E;AAC3E,UAAU,CAAC,EAAE,SAAS,GACrB,OAAO,CAAC,QAAQ,CAAC,CAiEnB"}
|
package/dist/commands/setup.js
CHANGED
|
@@ -5,6 +5,7 @@ import { dirname, join } from "node:path";
|
|
|
5
5
|
import { createInterface } from "node:readline";
|
|
6
6
|
import { Writable } from "node:stream";
|
|
7
7
|
import { AdoClient, WikiApi } from "@floh-solutions/ado-core";
|
|
8
|
+
import { CONVERT_RELEASE, convertDestination, installConvert } from "../convert.js";
|
|
8
9
|
import { emit, emitText, usageError } from "../output.js";
|
|
9
10
|
/**
|
|
10
11
|
* `pharos setup` — get somebody from "installed" to "working" in one command.
|
|
@@ -73,6 +74,16 @@ verifyWith) {
|
|
|
73
74
|
await storeSecret(token, target.secret);
|
|
74
75
|
const wrote = await updateProfile(target.profile, shellBlock(org, project, target.secret));
|
|
75
76
|
const skill = options.skill ? await installSkill(env) : MARKETPLACE_HINT;
|
|
77
|
+
const convert = options.convert
|
|
78
|
+
? await installConvert({ env })
|
|
79
|
+
: {
|
|
80
|
+
installed: false,
|
|
81
|
+
version: null,
|
|
82
|
+
path: null,
|
|
83
|
+
reason: `not requested — pass --convert to download it (${CONVERT_RELEASE.version}, ~7.5 MB), `
|
|
84
|
+
+ `or leave it and \`wiki import\` keeps taking .md and .txt only. It would go to `
|
|
85
|
+
+ `${convertDestination(env)}.`,
|
|
86
|
+
};
|
|
76
87
|
// Prove it, rather than declaring success and letting them find out later.
|
|
77
88
|
const checks = await verify(org, project, token, verifyWith);
|
|
78
89
|
return emit(io, {
|
|
@@ -83,6 +94,7 @@ verifyWith) {
|
|
|
83
94
|
profile: target.profile,
|
|
84
95
|
profileAction: wrote,
|
|
85
96
|
skill,
|
|
97
|
+
convert,
|
|
86
98
|
checks,
|
|
87
99
|
// The variables are exported by a file that this shell already read, so
|
|
88
100
|
// they are not in it. Saying so beats somebody concluding it failed.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAA0B,MAAM,cAAc,CAAC;AAElF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,MAAM,KAAK,GAAG,sBAAsB,CAAC;AACrC,MAAM,GAAG,GAAG,sBAAsB,CAAC;AACnC,mGAAmG;AACnG,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Getting `pharos-convert` onto a machine that did not build this repo (#764).
|
|
3
|
+
*
|
|
4
|
+
* ## The gap this closes
|
|
5
|
+
*
|
|
6
|
+
* `pharos wiki import ./spec.docx` worked on the author's machine and worked
|
|
7
|
+
* for nobody else. The converter is a compiled Swift binary living in
|
|
8
|
+
* `PharosCore`, copied into `~/.local/bin` by hand — shipped by neither npm nor
|
|
9
|
+
* the app installer. Everything else in this CLI needs nothing but Node.
|
|
10
|
+
*
|
|
11
|
+
* ## Why a download rather than an npm dependency
|
|
12
|
+
*
|
|
13
|
+
* Decided by the operator: *"we should fetch via network anyway, the first
|
|
14
|
+
* setup without network is useless as you need a PAT to even connect to ADO."*
|
|
15
|
+
* `pharos setup` already proves both token scopes with real requests, so it
|
|
16
|
+
* cannot succeed offline — requiring the network here adds no new constraint.
|
|
17
|
+
*
|
|
18
|
+
* ## What makes it safe to run what we downloaded
|
|
19
|
+
*
|
|
20
|
+
* **The expected hash ships INSIDE this package.** npm already verified the
|
|
21
|
+
* integrity of what you installed, so the checksum below inherits that trust —
|
|
22
|
+
* the bytes are checked against something npm vouched for, not against a claim
|
|
23
|
+
* on the page they came from. A binary that does not match is deleted, not run.
|
|
24
|
+
*
|
|
25
|
+
* The asset lives on a **public** repo's releases. The source repo is private,
|
|
26
|
+
* and a private release asset needs a token to fetch, which would defeat the
|
|
27
|
+
* entire point. Release assets sit outside the git tree, so hosting one there
|
|
28
|
+
* does not put a 25 MB binary into anybody's marketplace checkout.
|
|
29
|
+
*
|
|
30
|
+
* ## Not required, and it must stay that way
|
|
31
|
+
*
|
|
32
|
+
* A failed or skipped install leaves `wiki import` exactly as it is today:
|
|
33
|
+
* `.md` and `.txt` still import, everything else is refused by name with the
|
|
34
|
+
* reason. That refusal is correct and must never become a crash — this is an
|
|
35
|
+
* upgrade, not a dependency.
|
|
36
|
+
*/
|
|
37
|
+
/**
|
|
38
|
+
* The build this version of the CLI expects.
|
|
39
|
+
*
|
|
40
|
+
* `sha256` is of the DECOMPRESSED binary, so it is a statement about what gets
|
|
41
|
+
* executed rather than about a transport encoding. Regenerate with
|
|
42
|
+
* `scripts/release-convert.sh`, which builds, uploads and rewrites this block
|
|
43
|
+
* in one go — a hash edited by hand is a hash nobody checked.
|
|
44
|
+
*/
|
|
45
|
+
export declare const CONVERT_RELEASE: {
|
|
46
|
+
readonly version: "1.0.0";
|
|
47
|
+
/** macOS universal Mach-O: Apple Silicon and Intel in one file. */
|
|
48
|
+
readonly url: string;
|
|
49
|
+
readonly sha256: "f526e99ab159a43eedc0f025d25d5c80ad36f25218bcf738fb01aa2ed294c09d";
|
|
50
|
+
readonly bytes: 26146144;
|
|
51
|
+
};
|
|
52
|
+
export interface ConvertInstallResult {
|
|
53
|
+
installed: boolean;
|
|
54
|
+
version: string | null;
|
|
55
|
+
path: string | null;
|
|
56
|
+
/** Why it did not happen. Present only on a refusal or a failure. */
|
|
57
|
+
reason?: string;
|
|
58
|
+
}
|
|
59
|
+
/** Where it goes. `~/.local/bin` is where `pharos` itself already lives. */
|
|
60
|
+
export declare function convertDestination(env?: NodeJS.ProcessEnv): string;
|
|
61
|
+
/**
|
|
62
|
+
* Fetch, verify, and install — or say precisely why not.
|
|
63
|
+
*
|
|
64
|
+
* **Never throws.** This is called from setup and from a wizard, where an
|
|
65
|
+
* unavailable optional component must not take the whole run down with it. The
|
|
66
|
+
* caller gets a result object and decides how loud to be about it.
|
|
67
|
+
*/
|
|
68
|
+
export declare function installConvert(options?: {
|
|
69
|
+
env?: NodeJS.ProcessEnv;
|
|
70
|
+
/** Injected by tests. Production uses global fetch. */
|
|
71
|
+
fetchImpl?: typeof fetch;
|
|
72
|
+
/** Report progress to a wizard. Called with 0…1. */
|
|
73
|
+
onProgress?: (fraction: number, stage: string) => void;
|
|
74
|
+
/**
|
|
75
|
+
* Which build to fetch. Defaults to {@link CONVERT_RELEASE}.
|
|
76
|
+
*
|
|
77
|
+
* A seam for tests, so the SUCCESS path is exercised rather than only the
|
|
78
|
+
* refusals — a checksum check that has only ever been seen to reject is a
|
|
79
|
+
* checksum check nobody has watched accept.
|
|
80
|
+
*/
|
|
81
|
+
release?: {
|
|
82
|
+
version: string;
|
|
83
|
+
url: string;
|
|
84
|
+
sha256: string;
|
|
85
|
+
};
|
|
86
|
+
}): Promise<ConvertInstallResult>;
|
|
87
|
+
//# sourceMappingURL=convert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe;;IAE1B,mEAAmE;;;;CAM3D,CAAC;AAEX,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAG/E;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,uDAAuD;IACvD,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,oDAAoD;IACpD,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD;;;;;;OAMG;IACH,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACvD,GACL,OAAO,CAAC,oBAAoB,CAAC,CAiE/B"}
|
package/dist/convert.js
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { chmod, mkdir, rename, unlink, writeFile } from "node:fs/promises";
|
|
3
|
+
import { homedir, platform } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { gunzip } from "node:zlib";
|
|
6
|
+
import { promisify } from "node:util";
|
|
7
|
+
const decompress = promisify(gunzip);
|
|
8
|
+
/**
|
|
9
|
+
* Getting `pharos-convert` onto a machine that did not build this repo (#764).
|
|
10
|
+
*
|
|
11
|
+
* ## The gap this closes
|
|
12
|
+
*
|
|
13
|
+
* `pharos wiki import ./spec.docx` worked on the author's machine and worked
|
|
14
|
+
* for nobody else. The converter is a compiled Swift binary living in
|
|
15
|
+
* `PharosCore`, copied into `~/.local/bin` by hand — shipped by neither npm nor
|
|
16
|
+
* the app installer. Everything else in this CLI needs nothing but Node.
|
|
17
|
+
*
|
|
18
|
+
* ## Why a download rather than an npm dependency
|
|
19
|
+
*
|
|
20
|
+
* Decided by the operator: *"we should fetch via network anyway, the first
|
|
21
|
+
* setup without network is useless as you need a PAT to even connect to ADO."*
|
|
22
|
+
* `pharos setup` already proves both token scopes with real requests, so it
|
|
23
|
+
* cannot succeed offline — requiring the network here adds no new constraint.
|
|
24
|
+
*
|
|
25
|
+
* ## What makes it safe to run what we downloaded
|
|
26
|
+
*
|
|
27
|
+
* **The expected hash ships INSIDE this package.** npm already verified the
|
|
28
|
+
* integrity of what you installed, so the checksum below inherits that trust —
|
|
29
|
+
* the bytes are checked against something npm vouched for, not against a claim
|
|
30
|
+
* on the page they came from. A binary that does not match is deleted, not run.
|
|
31
|
+
*
|
|
32
|
+
* The asset lives on a **public** repo's releases. The source repo is private,
|
|
33
|
+
* and a private release asset needs a token to fetch, which would defeat the
|
|
34
|
+
* entire point. Release assets sit outside the git tree, so hosting one there
|
|
35
|
+
* does not put a 25 MB binary into anybody's marketplace checkout.
|
|
36
|
+
*
|
|
37
|
+
* ## Not required, and it must stay that way
|
|
38
|
+
*
|
|
39
|
+
* A failed or skipped install leaves `wiki import` exactly as it is today:
|
|
40
|
+
* `.md` and `.txt` still import, everything else is refused by name with the
|
|
41
|
+
* reason. That refusal is correct and must never become a crash — this is an
|
|
42
|
+
* upgrade, not a dependency.
|
|
43
|
+
*/
|
|
44
|
+
/**
|
|
45
|
+
* The build this version of the CLI expects.
|
|
46
|
+
*
|
|
47
|
+
* `sha256` is of the DECOMPRESSED binary, so it is a statement about what gets
|
|
48
|
+
* executed rather than about a transport encoding. Regenerate with
|
|
49
|
+
* `scripts/release-convert.sh`, which builds, uploads and rewrites this block
|
|
50
|
+
* in one go — a hash edited by hand is a hash nobody checked.
|
|
51
|
+
*/
|
|
52
|
+
export const CONVERT_RELEASE = {
|
|
53
|
+
version: "1.0.0",
|
|
54
|
+
/** macOS universal Mach-O: Apple Silicon and Intel in one file. */
|
|
55
|
+
url: "https://github.com/ASNNetworks/floh-skills/releases/download/"
|
|
56
|
+
+ "pharos-convert-v1.0.0/pharos-convert-darwin-universal.gz",
|
|
57
|
+
sha256: "f526e99ab159a43eedc0f025d25d5c80ad36f25218bcf738fb01aa2ed294c09d",
|
|
58
|
+
bytes: 26_146_144,
|
|
59
|
+
};
|
|
60
|
+
/** Where it goes. `~/.local/bin` is where `pharos` itself already lives. */
|
|
61
|
+
export function convertDestination(env = process.env) {
|
|
62
|
+
const home = env["HOME"] ?? homedir();
|
|
63
|
+
return join(home, ".local", "bin", "pharos-convert");
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Fetch, verify, and install — or say precisely why not.
|
|
67
|
+
*
|
|
68
|
+
* **Never throws.** This is called from setup and from a wizard, where an
|
|
69
|
+
* unavailable optional component must not take the whole run down with it. The
|
|
70
|
+
* caller gets a result object and decides how loud to be about it.
|
|
71
|
+
*/
|
|
72
|
+
export async function installConvert(options = {}) {
|
|
73
|
+
const env = options.env ?? process.env;
|
|
74
|
+
const report = options.onProgress ?? (() => { });
|
|
75
|
+
const release = options.release ?? CONVERT_RELEASE;
|
|
76
|
+
// Only a macOS build exists. Everywhere else this is honestly unavailable
|
|
77
|
+
// rather than broken — Swift cross-compilation for Linux and Windows is a
|
|
78
|
+
// different pipeline, and claiming support we have not built would be worse
|
|
79
|
+
// than saying so.
|
|
80
|
+
if (platform() !== "darwin") {
|
|
81
|
+
return {
|
|
82
|
+
installed: false,
|
|
83
|
+
version: null,
|
|
84
|
+
path: null,
|
|
85
|
+
reason: `No pharos-convert build for ${platform()} yet — only macOS. \`wiki import\` still `
|
|
86
|
+
+ "takes .md and .txt; other types are refused by name with the reason.",
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
const destination = convertDestination(env);
|
|
90
|
+
try {
|
|
91
|
+
report(0.05, "downloading");
|
|
92
|
+
const response = await (options.fetchImpl ?? fetch)(release.url, {
|
|
93
|
+
redirect: "follow",
|
|
94
|
+
});
|
|
95
|
+
if (!response.ok) {
|
|
96
|
+
return failure(`the download answered HTTP ${response.status}`, destination);
|
|
97
|
+
}
|
|
98
|
+
const compressed = Buffer.from(await response.arrayBuffer());
|
|
99
|
+
report(0.6, "verifying");
|
|
100
|
+
const binary = Buffer.from(await decompress(compressed));
|
|
101
|
+
const digest = createHash("sha256").update(binary).digest("hex");
|
|
102
|
+
// **Mismatch means do not install it, and do not keep it.** The point of a
|
|
103
|
+
// checksum is that the failure is loud and total; a "probably fine" here
|
|
104
|
+
// would make the whole exercise decorative.
|
|
105
|
+
if (digest !== release.sha256) {
|
|
106
|
+
return failure(`the downloaded binary did not match its expected checksum — got ${digest}, expected `
|
|
107
|
+
+ `${release.sha256}. Nothing was installed. This means the file was `
|
|
108
|
+
+ "corrupted in transit or is not the build this version of pharos expects.", destination);
|
|
109
|
+
}
|
|
110
|
+
report(0.85, "installing");
|
|
111
|
+
await mkdir(join(destination, ".."), { recursive: true });
|
|
112
|
+
// Written beside the destination and MOVED into place: a rename within one
|
|
113
|
+
// filesystem is atomic, so a conversion running at that instant sees either
|
|
114
|
+
// the old binary or the new one, never half of one.
|
|
115
|
+
const staging = `${destination}.incoming`;
|
|
116
|
+
await writeFile(staging, binary, { mode: 0o755 });
|
|
117
|
+
await chmod(staging, 0o755);
|
|
118
|
+
await rename(staging, destination);
|
|
119
|
+
report(1, "done");
|
|
120
|
+
return { installed: true, version: release.version, path: destination };
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
return failure(error instanceof Error ? error.message : String(error), destination);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async function failure(reason, destination) {
|
|
127
|
+
// Leave nothing half-written behind for the next run to trip over.
|
|
128
|
+
await unlink(`${destination}.incoming`).catch(() => { });
|
|
129
|
+
return {
|
|
130
|
+
installed: false,
|
|
131
|
+
version: null,
|
|
132
|
+
path: null,
|
|
133
|
+
reason: `${reason} \`wiki import\` still takes .md and .txt, and refuses other types by name `
|
|
134
|
+
+ "with the reason — narrowed, not broken.",
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=convert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../src/convert.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.21.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",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"node": ">=22"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@floh-solutions/
|
|
28
|
-
"@floh-solutions/
|
|
27
|
+
"@floh-solutions/ado-core": "0.9.1",
|
|
28
|
+
"@floh-solutions/plan-to-board": "0.1.1"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@types/node": "^22.10.2",
|
package/skill/SKILL.md
CHANGED
|
@@ -66,6 +66,8 @@ hooks list | check | create | repoint | delete service hooks for realtime.
|
|
|
66
66
|
already in use
|
|
67
67
|
plan <file> an implementation plan → a work item tree
|
|
68
68
|
setup org, project, token → keychain + shell profile
|
|
69
|
+
doctor what is installed on THIS machine, what is
|
|
70
|
+
missing, and what each missing thing costs
|
|
69
71
|
```
|
|
70
72
|
|
|
71
73
|
Text input: `--text` / `--file` / `--stdin`. Global: `--pretty` for a human,
|
|
@@ -75,6 +77,13 @@ Text input: `--text` / `--file` / `--stdin`. Global: `--pretty` for a human,
|
|
|
75
77
|
setup. Do not check them before working; a missing one announces itself as
|
|
76
78
|
`"kind": "config"` on exit 2, which is the only time it matters.
|
|
77
79
|
|
|
80
|
+
**Reading an attachment needs tools this machine may not have**, and the
|
|
81
|
+
commands further down name them with confidence they have not earned on yours.
|
|
82
|
+
`pharos doctor` answers that in one call: what is present, its version and where
|
|
83
|
+
it resolved, what is missing, and what each missing thing actually costs. It is
|
|
84
|
+
read-only, offline, and works before anything is configured — so it is also the
|
|
85
|
+
right first move when something behaves oddly.
|
|
86
|
+
|
|
78
87
|
## Finding the work: `pharos query`
|
|
79
88
|
|
|
80
89
|
**Do not reach for `curl` and the WIQL endpoint.** This skill used to hand you a
|
|
@@ -397,8 +406,12 @@ pharos wiki import ./report.pdf --as "Q3 Report"
|
|
|
397
406
|
and anything done to them would be reformatting a document somebody wrote
|
|
398
407
|
deliberately. `.docx`, `.pdf`, `.rtf` and `.html` are converted by
|
|
399
408
|
`pharos-convert`, which is the **same converter the macOS app uses**, so both
|
|
400
|
-
produce the same page from the same file.
|
|
401
|
-
|
|
409
|
+
produce the same page from the same file.
|
|
410
|
+
|
|
411
|
+
**It is a separate download, and not everybody has it.** Without it, markdown
|
|
412
|
+
and text still import and everything else is refused by name with the reason —
|
|
413
|
+
narrowed, not broken. `pharos doctor` says whether this machine has it;
|
|
414
|
+
`pharos setup --convert` fetches it (macOS only for now).
|
|
402
415
|
|
|
403
416
|
Three rules, because each of them is a way to lose work:
|
|
404
417
|
|