doc-detective 4.41.6 → 5.0.0-v5-rc.2

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.
Files changed (129) hide show
  1. package/README.md +3 -3
  2. package/bin/runner-entrypoint.js +11 -6
  3. package/dist/agents/command.d.ts +2 -2
  4. package/dist/agents/command.d.ts.map +1 -1
  5. package/dist/agents/command.js +29 -40
  6. package/dist/agents/command.js.map +1 -1
  7. package/dist/agents/prompts.d.ts +2 -2
  8. package/dist/agents/prompts.d.ts.map +1 -1
  9. package/dist/agents/prompts.js +4 -3
  10. package/dist/agents/prompts.js.map +1 -1
  11. package/dist/agents/runner.d.ts.map +1 -1
  12. package/dist/agents/runner.js +6 -1
  13. package/dist/agents/runner.js.map +1 -1
  14. package/dist/cli.js +68 -108
  15. package/dist/cli.js.map +1 -1
  16. package/dist/cliHelp.d.ts +5 -0
  17. package/dist/cliHelp.d.ts.map +1 -0
  18. package/dist/cliHelp.js +229 -0
  19. package/dist/cliHelp.js.map +1 -0
  20. package/dist/cliOptions.d.ts +10 -0
  21. package/dist/cliOptions.d.ts.map +1 -0
  22. package/dist/cliOptions.js +128 -0
  23. package/dist/cliOptions.js.map +1 -0
  24. package/dist/cliOutput.d.ts +38 -0
  25. package/dist/cliOutput.d.ts.map +1 -0
  26. package/dist/cliOutput.js +164 -0
  27. package/dist/cliOutput.js.map +1 -0
  28. package/dist/cliProgram.d.ts +7 -0
  29. package/dist/cliProgram.d.ts.map +1 -0
  30. package/dist/cliProgram.js +77 -0
  31. package/dist/cliProgram.js.map +1 -0
  32. package/dist/common/src/schemas/schemas.json +2 -2
  33. package/dist/common/src/schemas/schemasReferenced.json +45 -6
  34. package/dist/common/src/schemas/validators.cjs +3 -3
  35. package/dist/common/src/schemas/validatorsCheck.cjs +1 -1
  36. package/dist/common/src/types/generated/config_v3.d.ts +86 -72
  37. package/dist/common/src/types/generated/config_v3.d.ts.map +1 -1
  38. package/dist/common/src/types/generated/resolvedTests_v3.d.ts +86 -72
  39. package/dist/common/src/types/generated/resolvedTests_v3.d.ts.map +1 -1
  40. package/dist/common/src/validate.d.ts +0 -10
  41. package/dist/common/src/validate.d.ts.map +1 -1
  42. package/dist/common/src/validate.js +7 -1
  43. package/dist/common/src/validate.js.map +1 -1
  44. package/dist/core/detectTests.d.ts.map +1 -1
  45. package/dist/core/detectTests.js +26 -4
  46. package/dist/core/detectTests.js.map +1 -1
  47. package/dist/core/files.d.ts.map +1 -1
  48. package/dist/core/files.js +1 -0
  49. package/dist/core/files.js.map +1 -1
  50. package/dist/core/index.d.ts.map +1 -1
  51. package/dist/core/index.js +11 -14
  52. package/dist/core/index.js.map +1 -1
  53. package/dist/core/progress.d.ts +4 -0
  54. package/dist/core/progress.d.ts.map +1 -0
  55. package/dist/core/progress.js +14 -0
  56. package/dist/core/progress.js.map +1 -0
  57. package/dist/core/signals.d.ts +7 -0
  58. package/dist/core/signals.d.ts.map +1 -0
  59. package/dist/core/signals.js +32 -0
  60. package/dist/core/signals.js.map +1 -0
  61. package/dist/core/telem.d.ts.map +1 -1
  62. package/dist/core/telem.js +3 -3
  63. package/dist/core/telem.js.map +1 -1
  64. package/dist/core/telemLite.d.ts +5 -1
  65. package/dist/core/telemLite.d.ts.map +1 -1
  66. package/dist/core/telemLite.js +25 -9
  67. package/dist/core/telemLite.js.map +1 -1
  68. package/dist/core/tests/loadCookie.js +1 -1
  69. package/dist/core/tests/loadCookie.js.map +1 -1
  70. package/dist/core/tests/saveCookie.js +1 -1
  71. package/dist/core/tests/saveCookie.js.map +1 -1
  72. package/dist/core/tests.d.ts.map +1 -1
  73. package/dist/core/tests.js +14 -8
  74. package/dist/core/tests.js.map +1 -1
  75. package/dist/core/utils.d.ts +3 -1
  76. package/dist/core/utils.d.ts.map +1 -1
  77. package/dist/core/utils.js +73 -7
  78. package/dist/core/utils.js.map +1 -1
  79. package/dist/debug/command.d.ts +3 -2
  80. package/dist/debug/command.d.ts.map +1 -1
  81. package/dist/debug/command.js +75 -67
  82. package/dist/debug/command.js.map +1 -1
  83. package/dist/debug/index.d.ts +3 -1
  84. package/dist/debug/index.d.ts.map +1 -1
  85. package/dist/debug/index.js +10 -3
  86. package/dist/debug/index.js.map +1 -1
  87. package/dist/debug/provenance.d.ts.map +1 -1
  88. package/dist/debug/provenance.js +4 -3
  89. package/dist/debug/provenance.js.map +1 -1
  90. package/dist/hints/context.d.ts +1 -1
  91. package/dist/hints/context.js +2 -2
  92. package/dist/hints/context.js.map +1 -1
  93. package/dist/hints/hints.d.ts.map +1 -1
  94. package/dist/hints/hints.js +24 -8
  95. package/dist/hints/hints.js.map +1 -1
  96. package/dist/hints/index.js +3 -3
  97. package/dist/hints/index.js.map +1 -1
  98. package/dist/hints/render.d.ts.map +1 -1
  99. package/dist/hints/render.js +6 -10
  100. package/dist/hints/render.js.map +1 -1
  101. package/dist/index.cjs +459 -106
  102. package/dist/lsp/command.d.ts +5 -9
  103. package/dist/lsp/command.d.ts.map +1 -1
  104. package/dist/lsp/command.js +17 -18
  105. package/dist/lsp/command.js.map +1 -1
  106. package/dist/lsp/server.d.ts.map +1 -1
  107. package/dist/lsp/server.js +2 -4
  108. package/dist/lsp/server.js.map +1 -1
  109. package/dist/reporters/htmlReporter.d.ts.map +1 -1
  110. package/dist/reporters/htmlReporter.js +1 -4
  111. package/dist/reporters/htmlReporter.js.map +1 -1
  112. package/dist/runtime/cacheDir.d.ts +12 -1
  113. package/dist/runtime/cacheDir.d.ts.map +1 -1
  114. package/dist/runtime/cacheDir.js +22 -3
  115. package/dist/runtime/cacheDir.js.map +1 -1
  116. package/dist/runtime/installCommand.d.ts +15 -8
  117. package/dist/runtime/installCommand.d.ts.map +1 -1
  118. package/dist/runtime/installCommand.js +99 -112
  119. package/dist/runtime/installCommand.js.map +1 -1
  120. package/dist/runtime/selfUpdate.d.ts.map +1 -1
  121. package/dist/runtime/selfUpdate.js +19 -3
  122. package/dist/runtime/selfUpdate.js.map +1 -1
  123. package/dist/utils.d.ts +5 -4
  124. package/dist/utils.d.ts.map +1 -1
  125. package/dist/utils.js +274 -275
  126. package/dist/utils.js.map +1 -1
  127. package/package.json +9 -12
  128. package/scripts/postinstall.js +1 -1
  129. package/bin/doc-detective-lsp.js +0 -6
package/README.md CHANGED
@@ -23,7 +23,7 @@ Doc Detective has multiple components to integrate with your workflows as you ne
23
23
 
24
24
  1. Install prerequisites:
25
25
 
26
- - [Node.js](https://nodejs.org/) (tested on v20 and v22)
26
+ - [Node.js](https://nodejs.org/) v24.15 or later (tested on v24 and v26)
27
27
 
28
28
  1. In a terminal, install Doc Detective globally:
29
29
 
@@ -37,7 +37,7 @@ Doc Detective has multiple components to integrate with your workflows as you ne
37
37
 
38
38
  ### Lazy-installed runtime
39
39
 
40
- `npm i doc-detective` installs the CLI, then pre-installs the heavy runtime assets at postinstall. Those are browsers (Chrome, Firefox), drivers (ChromeDriver, Geckodriver), ffmpeg, and the npm packages that drive them. That last group includes webdriverio, appium, and sharp. They land in `~/.doc-detective/`, or `DOC_DETECTIVE_CACHE_DIR`. This keeps a fresh install ready to run without a separate step, as it does any Docker image built `FROM` it. The pre-install runs in a child process whose output is captured. npm's deprecation warnings from the heavy transitive trees therefore never reach your terminal.
40
+ `npm i doc-detective` installs the CLI, then pre-installs the heavy runtime assets at postinstall. Those are browsers (Chrome, Firefox), drivers (ChromeDriver, Geckodriver), ffmpeg, and the npm packages that drive them. That last group includes webdriverio, appium, and sharp. They land in a per-user cache: `$XDG_CACHE_HOME/doc-detective` or `~/.cache/doc-detective`, `%LOCALAPPDATA%\doc-detective` on Windows, an existing `~/.doc-detective`, or `DOC_DETECTIVE_CACHE_DIR`. This keeps a fresh install ready to run without a separate step, as it does any Docker image built `FROM` it. The pre-install runs in a child process whose output is captured. npm's deprecation warnings from the heavy transitive trees therefore never reach your terminal.
41
41
 
42
42
  **Opt out of the heavy pre-install** by setting `DOC_DETECTIVE_AUTOINSTALL=0`, which also accepts `false`, `no`, and `off`. The CLI install then stays small, with no browser download and no heavy npm packages. The heavy assets install lazily the first time a test needs them, or up front through `doc-detective install all`.
43
43
 
@@ -71,7 +71,7 @@ Either way, the *published* package declares the heavy packages in neither `depe
71
71
 
72
72
  ### Auto-update
73
73
 
74
- By default, `doc-detective` checks the npm registry on startup and self-updates if a newer release is available. Global installs run `npm install -g`, and `npx` invocations re-exec through `npx -y doc-detective@latest`. Local project installs print an "update available" hint instead of mutating your `package.json`. To opt out:
74
+ By default, `doc-detective` checks the npm registry on startup and self-updates if a newer release is available. Global installs run `npm install -g`, and `npx` invocations re-exec through `npx -y doc-detective@latest`. Local project installs print an "update available" hint instead of mutating your `package.json`. Self-update never crosses a major version. To opt out:
75
75
 
76
76
  - `--no-auto-update` on the CLI
77
77
  - `autoUpdate: false` in `.doc-detective.json`
@@ -407,7 +407,10 @@ function buildEffectiveConfig(configSnapshot, source, workspaceDir = WORKSPACE_D
407
407
  // to. main() resolves it once from DD_WORKSPACE_DIR and threads
408
408
  // it through both functions so the CLI's view of the filesystem
409
409
  // can't drift from where the runner actually wrote specs/output.
410
- effective.output = path.posix.join(workspaceDir, OUTPUT_SUBDIR);
410
+ effective.outputDir = path.posix.join(workspaceDir, OUTPUT_SUBDIR);
411
+ // Also the results file, so a repository's own config can't write outside the
412
+ // workspace: this config overlays it.
413
+ effective.output = path.posix.join(workspaceDir, OUTPUT_SUBDIR, 'testResults.json');
411
414
  if (source.type === 'inline') {
412
415
  effective.input = path.posix.join(workspaceDir, SPECS_SUBDIR);
413
416
  }
@@ -746,6 +749,10 @@ async function main() {
746
749
  };
747
750
  } else if (exitCode === 0) {
748
751
  finalizeBody = { status: 'succeeded', exit_code: 0, summary: {} };
752
+ } else if (exitCode === 1) {
753
+ // The run worked and a test failed (ADR 01146). The platform reads this
754
+ // from the exit code and shows it as a tests-failed outcome.
755
+ finalizeBody = { status: 'succeeded', exit_code: 1, summary: { reason: 'tests_failed' } };
749
756
  } else {
750
757
  finalizeBody = {
751
758
  status: 'failed',
@@ -771,11 +778,9 @@ async function main() {
771
778
  // Module-import guard so the test file can `import` from this module
772
779
  // without triggering main().
773
780
  //
774
- // Both halves of this comparison matter. npm installs `bin` entries as
775
- // symlinks, so when the container runs `doc-detective-runner`,
776
- // process.argv[1] is /usr/local/bin/doc-detective-runner while
777
- // import.meta.url is the realpath under node_modules — hence realpathSync
778
- // before comparing. And a hand-built `file://${...}` template mangles
781
+ // Hosted images run this through `doc-detective runner`, which calls main()
782
+ // itself. This guard covers running the file directly. Both halves of the
783
+ // comparison matter: argv[1] can be a symlink, so realpathSync before comparing. And a hand-built `file://${...}` template mangles
779
784
  // Windows paths and anything containing a space or `#`, so the conversion
780
785
  // goes through pathToFileURL. Getting either wrong makes this silently
781
786
  // false: main() never runs, nothing is logged, and the process exits 0
@@ -1,4 +1,4 @@
1
- import type { CommandModule } from "yargs";
1
+ import { Command } from "commander";
2
2
  export interface InstallAgentsArgv {
3
3
  agent?: string[];
4
4
  scope?: "project" | "global";
@@ -7,5 +7,5 @@ export interface InstallAgentsArgv {
7
7
  "dry-run": boolean;
8
8
  dryRun?: boolean;
9
9
  }
10
- export declare const installAgentsCommand: CommandModule<{}, InstallAgentsArgv>;
10
+ export declare function buildInstallAgentsCommand(handler?: (argv: any) => Promise<void> | void): Command;
11
11
  //# sourceMappingURL=command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/agents/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,EAAE,EAAE,iBAAiB,CA2CrE,CAAC"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/agents/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAG5C,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAiBD,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAA2B,GAClE,OAAO,CAsBT"}
@@ -1,41 +1,30 @@
1
- export const installAgentsCommand = {
2
- command: "install-agents",
3
- describe: "Install or update the doc-detective agent tools for detected AI coding agents (e.g., Claude Code).",
4
- builder: (yargs) => yargs
5
- .option("agent", {
6
- alias: "a",
7
- type: "string",
8
- array: true,
9
- describe: "Agent id to install into (repeatable). Skips the interactive picker. Example: --agent claude",
10
- })
11
- .option("scope", {
12
- alias: "s",
13
- type: "string",
14
- choices: ["project", "global"],
15
- describe: "Where to install: 'project' (current repo) or 'global' (user home). Each adapter resolves the exact path. Prompted if omitted.",
16
- })
17
- .option("force", {
18
- alias: "f",
19
- type: "boolean",
20
- default: false,
21
- describe: "Reinstall/overwrite even if already installed and up to date.",
22
- })
23
- .option("yes", {
24
- alias: "y",
25
- type: "boolean",
26
- default: false,
27
- describe: "Skip all prompts. Requires --agent and --scope.",
28
- })
29
- .option("dry-run", {
30
- type: "boolean",
31
- default: false,
32
- describe: "Print the actions that would be taken without executing them.",
33
- }),
34
- handler: async (argv) => {
35
- // Lazy-load so unrelated subcommands don't pay the import cost.
36
- const { runInstallAgents } = await import("./runner.js");
37
- const { createPrompts } = await import("./prompts.js");
38
- await runInstallAgents(argv, { prompts: createPrompts() });
39
- },
40
- };
1
+ import { Command, Option } from "commander";
2
+ import { addGlobalOptions, cliArgv } from "../cliOptions.js";
3
+ async function installAgentsHandler(argv) {
4
+ // Lazy-load so unrelated subcommands don't pay the import cost.
5
+ const { runInstallAgents } = await import("./runner.js");
6
+ const { createPrompts } = await import("./prompts.js");
7
+ const reports = await runInstallAgents(argv, {
8
+ prompts: createPrompts(),
9
+ // With --json, stdout holds the JSON document and nothing else.
10
+ ...(argv.json ? { logger: (message) => console.error(message) } : {}),
11
+ });
12
+ if (argv.json)
13
+ console.log(JSON.stringify(reports, null, 2));
14
+ }
15
+ const AGENT_GROUP = "Agent options:";
16
+ // `handler` is replaceable for tests.
17
+ export function buildInstallAgentsCommand(handler = installAgentsHandler) {
18
+ return addGlobalOptions(new Command("agents"))
19
+ .addOption(new Option("--agent <id...>", "Install for this agent; repeatable. One of claude, copilot, gemini, codex, qwen, or opencode").helpGroup(AGENT_GROUP))
20
+ .addOption(new Option("--scope <scope>", "Install for this project or for your user: project or global")
21
+ .choices(["project", "global"])
22
+ .helpGroup(AGENT_GROUP))
23
+ .addOption(new Option("-y, --yes", "Don't prompt; needs --agent and --scope").helpGroup(AGENT_GROUP))
24
+ .addOption(new Option("-f, --force", "Reinstall even if up to date").helpGroup(AGENT_GROUP))
25
+ .addOption(new Option("-n, --dry-run", "Show what would happen without doing it").helpGroup(AGENT_GROUP))
26
+ .action(async (_options, command) => {
27
+ await handler(cliArgv(command));
28
+ });
29
+ }
41
30
  //# sourceMappingURL=command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/agents/command.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,oBAAoB,GAAyC;IACxE,OAAO,EAAE,gBAAgB;IACzB,QAAQ,EACN,oGAAoG;IACtG,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,MAAM,CAAC,OAAO,EAAE;QACf,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,IAAI;QACX,QAAQ,EACN,8FAA8F;KACjG,CAAC;SACD,MAAM,CAAC,OAAO,EAAE;QACf,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAU;QACvC,QAAQ,EACN,gIAAgI;KACnI,CAAC;SACD,MAAM,CAAC,OAAO,EAAE;QACf,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,+DAA+D;KAC1E,CAAC;SACD,MAAM,CAAC,KAAK,EAAE;QACb,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,iDAAiD;KAC5D,CAAC;SACD,MAAM,CAAC,SAAS,EAAE;QACjB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,+DAA+D;KAC1E,CAAuD;IAC5D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,gEAAgE;QAChE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACzD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACvD,MAAM,gBAAgB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/agents/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAW7D,KAAK,UAAU,oBAAoB,CAAC,IAAS;IAC3C,gEAAgE;IAChE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACzD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE;QAC3C,OAAO,EAAE,aAAa,EAAE;QACxB,gEAAgE;QAChE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9E,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,WAAW,GAAG,gBAAgB,CAAC;AAErC,sCAAsC;AACtC,MAAM,UAAU,yBAAyB,CACvC,OAAO,GAAwC,oBAAoB;IAEnE,OAAO,gBAAgB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;SAC3C,SAAS,CACR,IAAI,MAAM,CACR,iBAAiB,EACjB,8FAA8F,CAC/F,CAAC,SAAS,CAAC,WAAW,CAAC,CACzB;SACA,SAAS,CACR,IAAI,MAAM,CACR,iBAAiB,EACjB,8DAA8D,CAC/D;SACE,OAAO,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;SAC9B,SAAS,CAAC,WAAW,CAAC,CAC1B;SACA,SAAS,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,yCAAyC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;SACpG,SAAS,CAAC,IAAI,MAAM,CAAC,aAAa,EAAE,8BAA8B,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;SAC3F,SAAS,CAAC,IAAI,MAAM,CAAC,eAAe,EAAE,yCAAyC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;SACxG,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAgB,EAAE,EAAE;QAC3C,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -13,8 +13,8 @@ export declare function pickScope(supported: Scope[]): Promise<Scope>;
13
13
  export declare function confirmForce(modifiedFiles: string[]): Promise<boolean>;
14
14
  /**
15
15
  * Factory to hand into {@link runInstallAgents} as its `prompts` dep. The
16
- * `install-agents` command already imports this module lazily (dynamic
17
- * `import("./prompts.js")` from the yargs handler) so other subcommands
16
+ * `install agents` command already imports this module lazily (dynamic
17
+ * `import("./prompts.js")` from the command's action) so other subcommands
18
18
  * don't pay the inquirer load cost.
19
19
  */
20
20
  export declare function createPrompts(): {
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/agents/prompts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAY7E;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CASlE;AAED,wBAAsB,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAY5E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa;;;EAE5B"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/agents/prompts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAY7E;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CASlE;AAED,wBAAsB,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAY5E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa;;;EAE5B"}
@@ -1,3 +1,4 @@
1
+ import { isInteractive } from "../cliOutput.js";
1
2
  import { checkbox, select, confirm } from "@inquirer/prompts";
2
3
  /**
3
4
  * Ask the user which detected agents to install into. Pre-selects all of them
@@ -46,15 +47,15 @@ export async function confirmForce(modifiedFiles) {
46
47
  }
47
48
  /**
48
49
  * Factory to hand into {@link runInstallAgents} as its `prompts` dep. The
49
- * `install-agents` command already imports this module lazily (dynamic
50
- * `import("./prompts.js")` from the yargs handler) so other subcommands
50
+ * `install agents` command already imports this module lazily (dynamic
51
+ * `import("./prompts.js")` from the command's action) so other subcommands
51
52
  * don't pay the inquirer load cost.
52
53
  */
53
54
  export function createPrompts() {
54
55
  return { pickAgents, pickScope };
55
56
  }
56
57
  function assertTTY() {
57
- if (!process.stdin.isTTY) {
58
+ if (!isInteractive()) {
58
59
  throw new Error("No TTY detected; run interactively or pass --agent and --scope with --yes.");
59
60
  }
60
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/agents/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAG9D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAAyB;IACxD,SAAS,EAAE,CAAC;IACZ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACtC,OAAO,QAAQ,CAAC;QACd,OAAO,EAAE,sDAAsD;QAC/D,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,EAAE,CAAC,CAAC,WAAW;YACnB,KAAK,EAAE,CAAC,CAAC,EAAE;YACX,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,SAAkB;IAChD,SAAS,EAAE,CAAC;IACZ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAQ;QACjC,OAAO,EAAE,gBAAgB;QACzB,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC;QACrC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;KAClE,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,aAAuB;IACxD,SAAS,EAAE,CAAC;IACZ,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CACT,oCAAoC;YAClC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAChD,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;QACb,OAAO,EAAE,yCAAyC;QAClD,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,SAAS;IAChB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAkB;IAC3C,MAAM,MAAM,GAAyD;QACnE,OAAO,EAAE;YACP,IAAI,EAAE,qCAAqC;YAC3C,WAAW,EAAE,8CAA8C;SAC5D;QACD,MAAM,EAAE;YACN,IAAI,EAAE,sDAAsD;YAC5D,WAAW,EAAE,yCAAyC;SACvD;KACF,CAAC;IACF,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACxG,CAAC"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/agents/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAG9D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAAyB;IACxD,SAAS,EAAE,CAAC;IACZ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACtC,OAAO,QAAQ,CAAC;QACd,OAAO,EAAE,sDAAsD;QAC/D,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,EAAE,CAAC,CAAC,WAAW;YACnB,KAAK,EAAE,CAAC,CAAC,EAAE;YACX,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,SAAkB;IAChD,SAAS,EAAE,CAAC;IACZ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAQ;QACjC,OAAO,EAAE,gBAAgB;QACzB,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC;QACrC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;KAClE,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,aAAuB;IACxD,SAAS,EAAE,CAAC;IACZ,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CACT,oCAAoC;YAClC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAChD,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;QACb,OAAO,EAAE,yCAAyC;QAClD,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,SAAS;IAChB,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,4EAA4E,CAC7E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,SAAkB;IAC3C,MAAM,MAAM,GAAyD;QACnE,OAAO,EAAE;YACP,IAAI,EAAE,qCAAqC;YAC3C,WAAW,EAAE,8CAA8C;SAC5D;QACD,MAAM,EAAE;YACN,IAAI,EAAE,sDAAsD;YAC5D,WAAW,EAAE,yCAAyC;SACvD;KACF,CAAC;IACF,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACxG,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/agents/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAE/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE;QACR,UAAU,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7D,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;KACnD,CAAC;IACF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrD,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC;CACvB;AAOD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,iBAAiB,EACvB,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,aAAa,EAAE,CAAC,CAoF1B"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/agents/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAG/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE;QACR,UAAU,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7D,SAAS,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;KACnD,CAAC;IACF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrD,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC;CACvB;AAOD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,iBAAiB,EACvB,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,aAAa,EAAE,CAAC,CA2F1B"}
@@ -1,4 +1,5 @@
1
1
  import { listAdapters } from "./registry.js";
2
+ import { isInteractive } from "../cliOutput.js";
2
3
  const defaultLogger = (msg, level = "info") => {
3
4
  if (level === "error")
4
5
  console.error(msg);
@@ -8,7 +9,7 @@ const defaultLogger = (msg, level = "info") => {
8
9
  export async function runInstallAgents(argv, deps = {}) {
9
10
  const adapters = deps.adapters ?? listAdapters();
10
11
  const logger = deps.logger ?? defaultLogger;
11
- const isTTY = deps.isTTY ?? (() => Boolean(process.stdin.isTTY));
12
+ const isTTY = deps.isTTY ?? (() => isInteractive());
12
13
  const dryRun = argv["dry-run"] === true;
13
14
  // --yes requires explicit --agent and --scope; no prompts.
14
15
  if (argv.yes) {
@@ -19,6 +20,10 @@ export async function runInstallAgents(argv, deps = {}) {
19
20
  throw new Error("--yes requires --scope project|global.");
20
21
  }
21
22
  }
23
+ // Fail before detection, which can take seconds, when there's no way to ask.
24
+ if (!isTTY() && (!argv.agent || argv.agent.length === 0)) {
25
+ throw new Error("Cannot prompt for agents in a non-TTY environment. Pass --agent explicitly (repeatable).");
26
+ }
22
27
  // Resolve which agents to target.
23
28
  const targeted = await resolveTargetAgents(argv, adapters, {
24
29
  isTTY: isTTY(),
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/agents/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/agents/runner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAahD,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,KAAK,GAAa,MAAM,EAAE,EAAE;IAC9D,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;QACrC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAuB,EACvB,IAAI,GAAe,EAAE;IAErB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,YAAY,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IAExC,2DAA2D;IAC3D,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;IACJ,CAAC;IAED,kCAAkC;IAClC,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE;QACzD,KAAK,EAAE,KAAK,EAAE;QACd,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM;KACP,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,iBAAiB;IACjB,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE;QAC/C,KAAK,EAAE,KAAK,EAAE;QACd,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;IAEH,0EAA0E;IAC1E,2EAA2E;IAC3E,sEAAsE;IACtE,2EAA2E;IAC3E,0EAA0E;IAC1E,4DAA4D;IAC5D,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAgD,EAAE,CAAC;IACjE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACpD,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACvB,MAAM,CACJ,KAAK,OAAO,CAAC,WAAW,qBAAqB,KAAK,0BAA0B,SAAS,CAAC,KAAK,GAAG,EAC9F,MAAM,CACP,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,OAAO,OAAO,CAAC,WAAW,KAAK,OAAO,CAAC,EAAE,cAAc,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;QACzF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACnC,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC1B,MAAM;gBACN,MAAM;aACP,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ;gBACpC,CAAC,CAAC;oBACE,GAAG,MAAM;oBACT,KAAK,EAAE;wBACL,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;wBACvB,oBAAoB,KAAK,yBAAyB,OAAO,CAAC,WAAW,mBAAmB,SAAS,CAAC,KAAK,YAAY;qBACpH;iBACF;gBACH,CAAC,CAAC,MAAM,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC1B,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,CAAC,aAAa,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,yEAAyE;QACzE,oEAAoE;QACpE,kEAAkE;QAClE,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,GAAG,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CACxB,OAAqB,EACrB,OAAc;IAEd,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAC3C,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC5E,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,IAAuB,EACvB,QAAwB,EACxB,GAAmG;IAEnG,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,MAAM,GAAmB,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,gFAAgF;YAChF,mCAAmC;YACnC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,SAAS;YAC3B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnD,MAAM,IAAI,KAAK,CAAC,kBAAkB,EAAE,oBAAoB,KAAK,EAAE,CAAC,CAAC;YACnE,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,6EAA6E;IAC7E,8BAA8B;IAC9B,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CACtE,CAAC;IACF,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAClF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,GAAG,CAAC,MAAM,CACR,kGAAkG,EAClG,MAAM,CACP,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC3D,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,IAAuB,EACvB,QAAwB,EACxB,GAAwD;IAExD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IACD,2EAA2E;IAC3E,2EAA2E;IAC3E,0EAA0E;IAC1E,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC;IAClC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAC9B,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAC7D,KAAK,CAAC,cAAc,EAAE,CACvB,CAAC;IACF,oEAAoE;IACpE,yEAAyE;IACzE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC/C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,eAAe,CAAC,CAAgB;IACvC,MAAM,GAAG,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,cAAc,GAAG,EAAE,CAAC;QAC7B,KAAK,SAAS;YACZ,OAAO,YAAY,GAAG,EAAE,CAAC;QAC3B,KAAK,oBAAoB;YACvB,OAAO,uBAAuB,GAAG,EAAE,CAAC;QACtC,KAAK,QAAQ;YACX,OAAO,qBAAqB,GAAG,EAAE,CAAC;QACpC,KAAK,SAAS;YACZ,OAAO,wBAAwB,CAAC;QAClC,KAAK,UAAU;YACb,OAAO,iCAAiC,GAAG,EAAE,CAAC;QAChD;YACE,OAAO,KAAK,CAAC,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;IACjC,CAAC;AACH,CAAC"}
package/dist/cli.js CHANGED
@@ -1,65 +1,56 @@
1
1
  import { runTests, awaitTelemetryFlush } from "./core/index.js";
2
- import { shouldFailRun } from "./core/utils.js";
3
- import { buildYargs, setConfig, outputResults, setMeta, getVersionData, log, logLevelEnabled, getResolvedTestsFromEnv, reportResults, isDebugRequested, } from "./utils.js";
4
- import { installAgentsCommand } from "./agents/command.js";
2
+ import { runExitCode } from "./core/utils.js";
3
+ import { CommanderError } from "commander";
4
+ import { setConfig, outputResults, setMeta, getVersionData, log, logLevelEnabled, getResolvedTestsFromEnv, reportResults, loadProjectEnv, readStdinInputs, writeResultsFile, } from "./utils.js";
5
+ import { buildProgram } from "./cliProgram.js";
5
6
  import { maybeShowHint } from "./hints/index.js";
6
- import { installCommand } from "./runtime/installCommand.js";
7
- import { lspCommand } from "./lsp/command.js";
8
- import { printDebug, defaultDebugDir } from "./debug/index.js";
9
- import { debugCommand } from "./debug/command.js";
7
+ import { applyColorFlags, applyInputFlag, diag, reportCrash, showRunProgress, verdictLine } from "./cliOutput.js";
8
+ import { runProgress } from "./core/progress.js";
10
9
  import { argv as processArgv } from "node:process";
11
10
  import path from "node:path";
12
11
  import fs from "node:fs";
13
12
  import { createRequire } from "node:module";
14
13
  const cliRequire = createRequire(import.meta.url);
15
14
  // Run
16
- setMeta();
17
15
  main(processArgv).catch((err) => {
18
- // yargs' .fail handler prints usage + message; this catches anything that
19
- // escapes (including our rethrown errors) so the process exits non-zero.
16
+ // Catches anything main() rethrows, so the process exits non-zero.
20
17
  // c8 ignore: the `?? err` / `|| err` fallback branches (err nullish, or a
21
18
  // non-Error thrown value without a `.message`) are structurally dead under
22
- // every current throw site — setConfig() always rejects with a real Error,
23
- // and the yargs `.fail` handler in main() always does `throw new
24
- // Error(msg)` — so `err` here is always a real Error with a non-empty
25
- // `.message`. Defensive fallback for future throw sites, not reachable today.
26
- console.error(err?.message || err); /* c8 ignore line - defensive fallback for a non-Error/nullish rejection; unreachable under every current throw site (see comment above) */
27
- process.exit(1);
19
+ // every current throw site — setConfig() always rejects with a real Error —
20
+ // so `err` here is always a real Error with a non-empty `.message`. Defensive
21
+ // fallback for future throw sites, not reachable today.
22
+ // A mistake in a command gets its message. A bug gets a bug report. Reaching
23
+ // here with one of these types means a defect in Doc Detective, not bad input.
24
+ if (err instanceof TypeError || err instanceof ReferenceError || err instanceof RangeError) {
25
+ reportCrash(err, { version: cliRequire("../package.json").version });
26
+ }
27
+ else {
28
+ console.error(`Error: ${err?.message || err}`);
29
+ }
30
+ process.exit(2);
28
31
  });
29
32
  async function main(argv) {
30
- await buildYargs(argv)
31
- .command({
32
- command: "$0",
33
- describe: "Run Doc Detective tests (default).",
34
- handler: runTestsHandler,
35
- })
36
- .command({
37
- // Preserved for back-compat with the `runTests` npm script and any
38
- // existing CI invocations. Runs the same handler as the default.
39
- command: "runTests",
40
- describe: false,
41
- handler: runTestsHandler,
42
- })
43
- // Hidden alias kept for back-compat with existing scripts and docs:
44
- // `doc-detective install-agents` still works, undocumented, and delegates
45
- // to the same implementation as `doc-detective install agents`.
46
- .command({ ...installAgentsCommand, describe: false })
47
- .command(installCommand)
48
- .command(lspCommand)
49
- .command(debugCommand)
50
- .strict()
51
- .demandCommand(0)
52
- // Suppress yargs' default help-dump on failure; surface the concrete error
53
- // message instead. The top-level .catch() prints it and sets exit code.
54
- .fail((msg, err) => {
55
- if (err)
56
- throw err;
57
- throw new Error(msg);
58
- })
59
- .parseAsync();
33
+ applyColorFlags(argv);
34
+ setMeta();
35
+ try {
36
+ await buildProgram({ runTests: runTestsHandler }).parseAsync(applyInputFlag(argv));
37
+ }
38
+ catch (err) {
39
+ // exitOverride makes commander throw on every terminating condition,
40
+ // including --help and --version. Commander has already written any message.
41
+ // process.exitCode, not process.exit(), so queued stderr writes still flush.
42
+ if (err instanceof CommanderError) {
43
+ // Commander exits 1 on usage errors. The contract's usage code is 2.
44
+ process.exitCode = err.exitCode === 0 ? 0 : 2;
45
+ return;
46
+ }
47
+ throw err;
48
+ }
60
49
  }
61
50
  // Legacy "run tests" flow — unchanged behavior when no subcommand is given.
62
51
  async function runTestsHandler(args) {
52
+ await loadProjectEnv(args);
53
+ await readStdinInputs(args);
63
54
  // Get .doc-detective JSON or YAML config, if it exists, preferring a config arg if provided
64
55
  const configPathJSON = path.resolve(process.cwd(), ".doc-detective.json");
65
56
  const configPathYAML = path.resolve(process.cwd(), ".doc-detective.yaml");
@@ -77,57 +68,8 @@ async function runTestsHandler(args) {
77
68
  : fs.existsSync(configPathYML)
78
69
  ? configPathYML
79
70
  : null;
80
- // Detect env-var debug intent before setConfig so we can still emit
81
- // the diagnostic dump when validation fails. `isDebugRequested`
82
- // reads `process.env.DOC_DETECTIVE_DEBUG`. Users who want diagnostic
83
- // output on the CLI should prefer the dedicated `doc-detective
84
- // debug` subcommand (which also supports `--include-env`); this
85
- // env-var path stays as the CI-friendly trigger.
86
- const debugRequested = isDebugRequested();
87
71
  // Set config
88
- let config;
89
- try {
90
- config = await setConfig({ configPath: configPath, args: args });
91
- }
92
- catch (err) {
93
- if (debugRequested) {
94
- // Build a minimal stub config so the dump can still render.
95
- // `printDebug` tolerates undefined fields; the configError banner
96
- // surfaces the underlying validation message.
97
- const stubConfig = {
98
- logLevel: typeof args.logLevel === "string" ? args.logLevel : "info",
99
- input: typeof args.input === "string" ? args.input : ".",
100
- };
101
- await printDebug({
102
- config: stubConfig,
103
- configPath: configPath,
104
- configError: err instanceof Error ? err : new Error(String(err)),
105
- outDir: defaultDebugDir(),
106
- args,
107
- });
108
- // The env-var dump replaced a real test run; a broken config must
109
- // still fail the process so CI doesn't go green on an unran suite.
110
- process.exitCode = 1;
111
- return;
112
- }
113
- throw err;
114
- }
115
- // Diagnostic dump — fires when DOC_DETECTIVE_DEBUG is truthy. The
116
- // env-var path intentionally does NOT enable --include-env; users
117
- // who want the full process.env must run `doc-detective debug
118
- // --include-env` explicitly. (There is no config-file equivalent —
119
- // the `debug` config field is deprecated and ignored; diagnostics live
120
- // behind this env var and the `debug` subcommand.)
121
- if (debugRequested) {
122
- await printDebug({
123
- config,
124
- configPath,
125
- configError: null,
126
- outDir: defaultDebugDir(),
127
- args,
128
- });
129
- return;
130
- }
72
+ const config = await setConfig({ configPath: configPath, args: args });
131
73
  // Guard the pretty-print dumps behind a cheap level check so the (large)
132
74
  // JSON.stringify only runs when the debug message would actually print.
133
75
  if (logLevelEnabled("debug", config)) {
@@ -204,14 +146,23 @@ async function runTestsHandler(args) {
204
146
  const resolvedTests = api?.resolvedTests || null;
205
147
  const apiConfig = api?.apiConfig || null;
206
148
  // Run tests
207
- const output = config.output;
208
- const results = resolvedTests
209
- ? await runTests(config, { resolvedTests, updateJoin })
210
- : await runTests(config, { updateJoin });
149
+ // Progress is for people, so it follows the same switch as other info output.
150
+ const stopProgress = logLevelEnabled("info", config)
151
+ ? await showRunProgress(runProgress)
152
+ : () => { };
153
+ const strictSpecs = config.exitOnFail !== false;
154
+ const results = await (resolvedTests
155
+ ? runTests(config, { resolvedTests, updateJoin, strictSpecs })
156
+ : runTests(config, { updateJoin, strictSpecs })).finally(stopProgress);
211
157
  // Dry-run already emitted the resolved-tests JSON inside runTests().
212
158
  // Skip both reporters (which assume executed-result shape) and the
213
159
  // orchestration-API report-back path.
214
160
  if (config.dryRun) {
161
+ if (!results && config.exitOnFail !== false) {
162
+ // Dry runs silence logs to keep stdout clean, so say why there's no plan.
163
+ console.error("No tests found, so there's no test plan to print.");
164
+ process.exitCode = 2;
165
+ }
215
166
  return;
216
167
  }
217
168
  // c8 ignore justification for the `apiConfig` branch body below: reachable
@@ -233,18 +184,27 @@ async function runTestsHandler(args) {
233
184
  else {
234
185
  // Output results — config.reporters (populated from args.reporters by
235
186
  // setConfig) is the source of truth for which reporters run.
236
- await outputResults(config, output, results, { command: "runTests" });
187
+ await outputResults(config, config.outputDir, results, { command: "runTests" });
188
+ writeResultsFile(config.output, results);
237
189
  // Optionally print one contextual hint after the reporters finish.
238
190
  // Wrapped in its own try/catch internally — never throws.
239
191
  await maybeShowHint(config, results);
240
192
  }
241
- // Opt-in gate: exit 1 on spec failures. Non-obvious WHY — the CLI otherwise
242
- // exits 0 even on FAIL (the fail-the-build call has historically lived in CI
243
- // wrappers like the GitHub Action), so this flag is what lets any CI gate on
244
- // the exit code. The `!process.exitCode` guard preserves any non-zero code an
245
- // earlier stage already set instead of overwriting it with 1.
246
- if (config.exitOnFail && !process.exitCode && shouldFailRun(results)) {
247
- process.exitCode = 1;
193
+ // Last on stdout, so it's what a person reads first. Modes that make stdout
194
+ // machine-readable, and -l silent, leave it out.
195
+ if (!args.json && !args.plain && args.output !== "-" && config.logLevel !== "silent") {
196
+ console.log(verdictLine(results));
197
+ }
198
+ // A bare command in the wrong folder is the likeliest first-run mistake.
199
+ const testCounts = Object.values(results?.summary?.tests ?? {});
200
+ const nothingRan = testCounts.every((count) => count === 0);
201
+ if (nothingRan && !args.input && !args.inputs?.length && logLevelEnabled("info", config)) {
202
+ diag("No tests found here. Point at your docs with `doc-detective -i <path>`, or see `doc-detective --help`.");
203
+ }
204
+ // Results are written before the exit code is set (ADR 01146). The guard
205
+ // preserves any non-zero code an earlier stage already set.
206
+ if (!process.exitCode) {
207
+ process.exitCode = runExitCode(results, config);
248
208
  }
249
209
  // Join the telemetry flush started inside runTests. Awaited only NOW — after
250
210
  // reporters + hint — so the PostHog round-trip overlaps that I/O instead of
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,UAAU,EACV,SAAS,EACT,aAAa,EACb,OAAO,EACP,cAAc,EACd,GAAG,EACH,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAElD,MAAM;AACN,OAAO,EAAE,CAAC;AACV,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC9B,0EAA0E;IAC1E,yEAAyE;IACzE,0EAA0E;IAC1E,2EAA2E;IAC3E,2EAA2E;IAC3E,iEAAiE;IACjE,sEAAsE;IACtE,8EAA8E;IAC9E,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,2IAA2I;IAC/K,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,IAAI,CAAC,IAAc;IAChC,MAAM,UAAU,CAAC,IAAI,CAAC;SACnB,OAAO,CAAC;QACP,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,oCAAoC;QAC9C,OAAO,EAAE,eAAe;KACzB,CAAC;SACD,OAAO,CAAC;QACP,mEAAmE;QACnE,iEAAiE;QACjE,OAAO,EAAE,UAAU;QACnB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,eAAe;KACzB,CAAC;QACF,oEAAoE;QACpE,0EAA0E;QAC1E,gEAAgE;SAC/D,OAAO,CAAC,EAAE,GAAG,oBAAoB,EAAE,QAAQ,EAAE,KAAK,EAAS,CAAC;SAC5D,OAAO,CAAC,cAAqB,CAAC;SAC9B,OAAO,CAAC,UAAiB,CAAC;SAC1B,OAAO,CAAC,YAAY,CAAC;SACrB,MAAM,EAAE;SACR,aAAa,CAAC,CAAC,CAAC;QACjB,2EAA2E;QAC3E,wEAAwE;SACvE,IAAI,CAAC,CAAC,GAAW,EAAE,GAAsB,EAAE,EAAE;QAC5C,IAAI,GAAG;YAAE,MAAM,GAAG,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC;SACD,UAAU,EAAE,CAAC;AAClB,CAAC;AAED,4EAA4E;AAC5E,KAAK,UAAU,eAAe,CAAC,IAAS;IACtC,4FAA4F;IAC5F,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAC;IAC1E,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,oBAAoB,CAAC,CAAC;IACxE,kEAAkE;IAClE,mEAAmE;IACnE,iEAAiE;IACjE,MAAM,iBAAiB,GACrB,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,iBAAiB;QAClC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAClC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;YAC/B,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;gBAC/B,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;oBAC9B,CAAC,CAAC,aAAa;oBACf,CAAC,CAAC,IAAI,CAAC;IAET,oEAAoE;IACpE,gEAAgE;IAChE,qEAAqE;IACrE,+DAA+D;IAC/D,gEAAgE;IAChE,iDAAiD;IACjD,MAAM,cAAc,GAAG,gBAAgB,EAAE,CAAC;IAE1C,aAAa;IACb,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,cAAc,EAAE,CAAC;YACnB,4DAA4D;YAC5D,kEAAkE;YAClE,8CAA8C;YAC9C,MAAM,UAAU,GAAQ;gBACtB,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;gBACpE,KAAK,EAAE,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;aACzD,CAAC;YACF,MAAM,UAAU,CAAC;gBACf,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,UAAU;gBACtB,WAAW,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChE,MAAM,EAAE,eAAe,EAAE;gBACzB,IAAI;aACL,CAAC,CAAC;YACH,kEAAkE;YAClE,mEAAmE;YACnE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,kEAAkE;IAClE,kEAAkE;IAClE,8DAA8D;IAC9D,mEAAmE;IACnE,uEAAuE;IACvE,mDAAmD;IACnD,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,UAAU,CAAC;YACf,MAAM;YACN,UAAU;YACV,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,eAAe,EAAE;YACzB,IAAI;SACL,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,yEAAyE;IACzE,wEAAwE;IACxE,IAAI,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;QACrC,GAAG,CACD,sBAAsB,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EACjE,OAAO,EACP,MAAM,CACP,CAAC;QACF,GAAG,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1E,CAAC;IAED,0EAA0E;IAC1E,0EAA0E;IAC1E,oEAAoE;IACpE,yEAAyE;IACzE,EAAE;IACF,0EAA0E;IAC1E,oEAAoE;IACpE,2EAA2E;IAC3E,8EAA8E;IAC9E,6EAA6E;IAC7E,yEAAyE;IACzE,4EAA4E;IAC5E,+EAA+E;IAC/E,EAAE;IACF,0EAA0E;IAC1E,8EAA8E;IAC9E,6EAA6E;IAC7E,yEAAyE;IACzE,yEAAyE;IACzE,4EAA4E;IAC5E,8EAA8E;IAC9E,yEAAyE;IACzE,4EAA4E;IAC5E,gEAAgE;IAChE,IAAI,UAA6C,CAAC;IAClD,IACE,MAAM,CAAC,UAAU,KAAK,KAAK;QAC3B,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B;QAC3C,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EACf,CAAC;QACD,yJAAyJ;QACzJ,uEAAuE;QACvE,kEAAkE;QAClE,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,KAAK,GAAW,MAAM,EAAE,EAAE;YACxD,MAAM,MAAM,GAAG,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;YACpD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3B,CAAC,CAAC;QACF,MAAM,cAAc,GAAW,UAAU,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;QACrE,qEAAqE;QACrE,qEAAqE;QACrE,uEAAuE;QACvE,MAAM,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC;gBACH,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;gBACnE,OAAO,MAAM,cAAc,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YACrE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,8BAA8B,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gBAClE,OAAO,EAAE,MAAM,EAAE,IAAqB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YACzD,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,4EAA4E;QAC5E,2EAA2E;QAC3E,UAAU,GAAG,KAAK,IAAI,EAAE;YACtB,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC;gBAC5C,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;oBACpB,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CACpD,yBAAyB,CAC1B,CAAC;oBACF,MAAM,UAAU,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;gBACvE,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,8BAA8B,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACpE,CAAC;QACH,CAAC,CAAC;QACF,oBAAoB;IACtB,CAAC;IAED,mDAAmD;IACnD,MAAM,GAAG,GAAG,MAAM,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,GAAG,EAAE,aAAa,IAAI,IAAI,CAAC;IACjD,MAAM,SAAS,GAAG,GAAG,EAAE,SAAS,IAAI,IAAI,CAAC;IAEzC,YAAY;IACZ,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,MAAM,OAAO,GAAG,aAAa;QAC3B,CAAC,CAAC,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;QACvD,CAAC,CAAC,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAE3C,qEAAqE;IACrE,mEAAmE;IACnE,sCAAsC;IACtC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO;IACT,CAAC;IAED,2EAA2E;IAC3E,2EAA2E;IAC3E,qEAAqE;IACrE,mEAAmE;IACnE,2EAA2E;IAC3E,iEAAiE;IACjE,wEAAwE;IACxE,yEAAyE;IACzE,qEAAqE;IACrE,+DAA+D;IAC/D,8EAA8E;IAC9E,IAAI,SAAS,EAAE,CAAC;QACd,6HAA6H;QAC7H,MAAM,aAAa,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5C,oBAAoB;IACtB,CAAC;SAAM,CAAC;QACN,sEAAsE;QACtE,6DAA6D;QAC7D,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QACtE,mEAAmE;QACnE,0DAA0D;QAC1D,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,4EAA4E;IAC5E,6EAA6E;IAC7E,6EAA6E;IAC7E,8EAA8E;IAC9E,8DAA8D;IAC9D,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QACrE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,6EAA6E;IAC7E,4EAA4E;IAC5E,4EAA4E;IAC5E,4CAA4C;IAC5C,MAAM,mBAAmB,EAAE,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACL,SAAS,EACT,aAAa,EACb,OAAO,EACP,cAAc,EACd,GAAG,EACH,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAElD,MAAM;AACN,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC9B,mEAAmE;IACnE,0EAA0E;IAC1E,2EAA2E;IAC3E,4EAA4E;IAC5E,8EAA8E;IAC9E,wDAAwD;IACxD,6EAA6E;IAC7E,+EAA+E;IAC/E,IAAI,GAAG,YAAY,SAAS,IAAI,GAAG,YAAY,cAAc,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;QAC3F,WAAW,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,IAAI,CAAC,IAAc;IAChC,eAAe,CAAC,IAAI,CAAC,CAAC;IACtB,OAAO,EAAE,CAAC;IACV,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IACrF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,qEAAqE;QACrE,6EAA6E;QAC7E,6EAA6E;QAC7E,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;YAClC,qEAAqE;YACrE,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,KAAK,UAAU,eAAe,CAAC,IAAS;IACtC,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;IAE5B,4FAA4F;IAC5F,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAC;IAC1E,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qBAAqB,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,oBAAoB,CAAC,CAAC;IACxE,kEAAkE;IAClE,mEAAmE;IACnE,iEAAiE;IACjE,MAAM,iBAAiB,GACrB,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,iBAAiB;QAClC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAClC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;YAC/B,CAAC,CAAC,cAAc;YAChB,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC;gBAC/B,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;oBAC9B,CAAC,CAAC,aAAa;oBACf,CAAC,CAAC,IAAI,CAAC;IAET,aAAa;IACb,MAAM,MAAM,GAAQ,MAAM,SAAS,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5E,yEAAyE;IACzE,wEAAwE;IACxE,IAAI,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;QACrC,GAAG,CACD,sBAAsB,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EACjE,OAAO,EACP,MAAM,CACP,CAAC;QACF,GAAG,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1E,CAAC;IAED,0EAA0E;IAC1E,0EAA0E;IAC1E,oEAAoE;IACpE,yEAAyE;IACzE,EAAE;IACF,0EAA0E;IAC1E,oEAAoE;IACpE,2EAA2E;IAC3E,8EAA8E;IAC9E,6EAA6E;IAC7E,yEAAyE;IACzE,4EAA4E;IAC5E,+EAA+E;IAC/E,EAAE;IACF,0EAA0E;IAC1E,8EAA8E;IAC9E,6EAA6E;IAC7E,yEAAyE;IACzE,yEAAyE;IACzE,4EAA4E;IAC5E,8EAA8E;IAC9E,yEAAyE;IACzE,4EAA4E;IAC5E,gEAAgE;IAChE,IAAI,UAA6C,CAAC;IAClD,IACE,MAAM,CAAC,UAAU,KAAK,KAAK;QAC3B,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B;QAC3C,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EACf,CAAC;QACD,yJAAyJ;QACzJ,uEAAuE;QACvE,kEAAkE;QAClE,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,KAAK,GAAW,MAAM,EAAE,EAAE;YACxD,MAAM,MAAM,GAAG,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;YACpD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3B,CAAC,CAAC;QACF,MAAM,cAAc,GAAW,UAAU,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;QACrE,qEAAqE;QACrE,qEAAqE;QACrE,uEAAuE;QACvE,MAAM,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC;gBACH,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;gBACnE,OAAO,MAAM,cAAc,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YACrE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,8BAA8B,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gBAClE,OAAO,EAAE,MAAM,EAAE,IAAqB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YACzD,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,4EAA4E;QAC5E,2EAA2E;QAC3E,UAAU,GAAG,KAAK,IAAI,EAAE;YACtB,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC;gBAC5C,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;oBACpB,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CACpD,yBAAyB,CAC1B,CAAC;oBACF,MAAM,UAAU,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;gBACvE,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,8BAA8B,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACpE,CAAC;QACH,CAAC,CAAC;QACF,oBAAoB;IACtB,CAAC;IAED,mDAAmD;IACnD,MAAM,GAAG,GAAG,MAAM,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,GAAG,EAAE,aAAa,IAAI,IAAI,CAAC;IACjD,MAAM,SAAS,GAAG,GAAG,EAAE,SAAS,IAAI,IAAI,CAAC;IAEzC,YAAY;IACZ,8EAA8E;IAC9E,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC;QAClD,CAAC,CAAC,MAAM,eAAe,CAAC,WAAW,CAAC;QACpC,CAAC,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;IACb,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,KAAK,KAAK,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa;QAClC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;QAC9D,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAChD,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAExB,qEAAqE;IACrE,mEAAmE;IACnE,sCAAsC;IACtC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;YAC5C,0EAA0E;YAC1E,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACnE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,OAAO;IACT,CAAC;IAED,2EAA2E;IAC3E,2EAA2E;IAC3E,qEAAqE;IACrE,mEAAmE;IACnE,2EAA2E;IAC3E,iEAAiE;IACjE,wEAAwE;IACxE,yEAAyE;IACzE,qEAAqE;IACrE,+DAA+D;IAC/D,8EAA8E;IAC9E,IAAI,SAAS,EAAE,CAAC;QACd,6HAA6H;QAC7H,MAAM,aAAa,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5C,oBAAoB;IACtB,CAAC;SAAM,CAAC;QACN,sEAAsE;QACtE,6DAA6D;QAC7D,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QAChF,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzC,mEAAmE;QACnE,0DAA0D;QAC1D,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,4EAA4E;IAC5E,iDAAiD;IACjD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,yEAAyE;IACzE,MAAM,UAAU,GAAa,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;IAC5D,IAAI,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;QACzF,IAAI,CAAC,wGAAwG,CAAC,CAAC;IACjH,CAAC;IAED,yEAAyE;IACzE,4DAA4D;IAC5D,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtB,OAAO,CAAC,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,6EAA6E;IAC7E,4EAA4E;IAC5E,4EAA4E;IAC5E,4CAA4C;IAC5C,MAAM,mBAAmB,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { Command } from "commander";
2
+ export declare function applyHelpText(command: Command): void;
3
+ export declare function nearestCommand(word: string, names: string[]): string | undefined;
4
+ export declare function rewriteRootError(message: string, commandNames: string[]): string;
5
+ //# sourceMappingURL=cliHelp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliHelp.d.ts","sourceRoot":"","sources":["../src/cliHelp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiLzC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,QAiB7C;AAgBD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAWhF;AAID,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAOhF"}