@duyquangnvx/agent-cli 0.26.0 → 0.28.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.
Files changed (128) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/agent-cli.js +9 -2
  3. package/dist/agent-cli.js.map +1 -1
  4. package/dist/built-ins/agents-md.d.ts +3 -2
  5. package/dist/built-ins/agents-md.js +8 -9
  6. package/dist/built-ins/agents-md.js.map +1 -1
  7. package/dist/built-ins/commands.d.ts +2 -1
  8. package/dist/built-ins/commands.js.map +1 -1
  9. package/dist/built-ins/doctor-rows.js +1 -1
  10. package/dist/built-ins/doctor-rows.js.map +1 -1
  11. package/dist/built-ins/doctor.d.ts +0 -1
  12. package/dist/built-ins/doctor.js +21 -8
  13. package/dist/built-ins/doctor.js.map +1 -1
  14. package/dist/built-ins/install/dependency.js +23 -23
  15. package/dist/built-ins/install/dependency.js.map +1 -1
  16. package/dist/built-ins/install/global-npm.d.ts +6 -3
  17. package/dist/built-ins/install/global-npm.js +19 -14
  18. package/dist/built-ins/install/global-npm.js.map +1 -1
  19. package/dist/built-ins/install/global.js +6 -7
  20. package/dist/built-ins/install/global.js.map +1 -1
  21. package/dist/built-ins/install/install.d.ts +0 -3
  22. package/dist/built-ins/install/install.js +0 -1
  23. package/dist/built-ins/install/install.js.map +1 -1
  24. package/dist/built-ins/install/release-check.js +10 -17
  25. package/dist/built-ins/install/release-check.js.map +1 -1
  26. package/dist/built-ins/npm.d.ts +8 -7
  27. package/dist/built-ins/npm.js +20 -12
  28. package/dist/built-ins/npm.js.map +1 -1
  29. package/dist/built-ins/project-root.d.ts +4 -4
  30. package/dist/built-ins/project-root.js +12 -22
  31. package/dist/built-ins/project-root.js.map +1 -1
  32. package/dist/built-ins/read.d.ts +5 -0
  33. package/dist/built-ins/read.js +29 -0
  34. package/dist/built-ins/read.js.map +1 -0
  35. package/dist/built-ins/setup.d.ts +1 -2
  36. package/dist/built-ins/setup.js +32 -26
  37. package/dist/built-ins/setup.js.map +1 -1
  38. package/dist/built-ins/skill/home.d.ts +2 -1
  39. package/dist/built-ins/skill/home.js +19 -17
  40. package/dist/built-ins/skill/home.js.map +1 -1
  41. package/dist/built-ins/skill/install-command.d.ts +2 -1
  42. package/dist/built-ins/skill/install-command.js +13 -11
  43. package/dist/built-ins/skill/install-command.js.map +1 -1
  44. package/dist/built-ins/skill/project.js +6 -7
  45. package/dist/built-ins/skill/project.js.map +1 -1
  46. package/dist/built-ins/skill/sync.d.ts +4 -3
  47. package/dist/built-ins/skill/sync.js +24 -17
  48. package/dist/built-ins/skill/sync.js.map +1 -1
  49. package/dist/built-ins/update.d.ts +1 -1
  50. package/dist/built-ins/update.js +9 -7
  51. package/dist/built-ins/update.js.map +1 -1
  52. package/dist/built-ins/upgrades.d.ts +2 -1
  53. package/dist/built-ins/upgrades.js +5 -12
  54. package/dist/built-ins/upgrades.js.map +1 -1
  55. package/dist/check-examples.js +5 -23
  56. package/dist/check-examples.js.map +1 -1
  57. package/dist/check-next-steps.d.ts +3 -9
  58. package/dist/check-next-steps.js +20 -32
  59. package/dist/check-next-steps.js.map +1 -1
  60. package/dist/command-line/line-problem.d.ts +14 -0
  61. package/dist/command-line/line-problem.js +41 -0
  62. package/dist/command-line/line-problem.js.map +1 -0
  63. package/dist/context/files.d.ts +3 -0
  64. package/dist/context/files.js +17 -2
  65. package/dist/context/files.js.map +1 -1
  66. package/dist/context/outputs.d.ts +13 -24
  67. package/dist/context/outputs.js +37 -37
  68. package/dist/context/outputs.js.map +1 -1
  69. package/dist/context/secrets.d.ts +5 -1
  70. package/dist/context/secrets.js +18 -5
  71. package/dist/context/secrets.js.map +1 -1
  72. package/dist/context/spawn.js +3 -1
  73. package/dist/context/spawn.js.map +1 -1
  74. package/dist/context/tools.d.ts +9 -4
  75. package/dist/context/tools.js +12 -12
  76. package/dist/context/tools.js.map +1 -1
  77. package/dist/context.d.ts +12 -8
  78. package/dist/define-command.d.ts +29 -13
  79. package/dist/define-command.js +5 -3
  80. package/dist/define-command.js.map +1 -1
  81. package/dist/define.d.ts +19 -6
  82. package/dist/define.js.map +1 -1
  83. package/dist/errors.d.ts +3 -6
  84. package/dist/errors.js +17 -28
  85. package/dist/errors.js.map +1 -1
  86. package/dist/execute.d.ts +7 -16
  87. package/dist/execute.js +11 -14
  88. package/dist/execute.js.map +1 -1
  89. package/dist/exit-classes.d.ts +7 -10
  90. package/dist/exit-classes.js +20 -81
  91. package/dist/exit-classes.js.map +1 -1
  92. package/dist/failure.d.ts +36 -0
  93. package/dist/failure.js +65 -0
  94. package/dist/failure.js.map +1 -0
  95. package/dist/help-json.js +5 -3
  96. package/dist/help-json.js.map +1 -1
  97. package/dist/help.js +9 -3
  98. package/dist/help.js.map +1 -1
  99. package/dist/output.d.ts +3 -10
  100. package/dist/output.js +14 -24
  101. package/dist/output.js.map +1 -1
  102. package/dist/run-cli.js +7 -5
  103. package/dist/run-cli.js.map +1 -1
  104. package/dist/run-command.d.ts +6 -1
  105. package/dist/run-command.js +31 -155
  106. package/dist/run-command.js.map +1 -1
  107. package/dist/run-options.d.ts +5 -2
  108. package/dist/run-scope.d.ts +35 -0
  109. package/dist/run-scope.js +138 -0
  110. package/dist/run-scope.js.map +1 -0
  111. package/dist/runtime-codes.d.ts +140 -1
  112. package/dist/runtime-codes.js +60 -4
  113. package/dist/runtime-codes.js.map +1 -1
  114. package/docs/README.md +2 -2
  115. package/docs/example/cli.test.ts +9 -2
  116. package/docs/example/cli.ts +1 -0
  117. package/docs/example/folder.ts +1 -0
  118. package/docs/guides/commands.md +2 -2
  119. package/docs/guides/doctor.md +3 -2
  120. package/docs/guides/errors.md +1 -1
  121. package/docs/guides/testing.md +2 -1
  122. package/package.json +1 -1
  123. package/dist/command-errors.d.ts +0 -8
  124. package/dist/command-errors.js +0 -25
  125. package/dist/command-errors.js.map +0 -1
  126. package/dist/command-line/route-line.d.ts +0 -15
  127. package/dist/command-line/route-line.js +0 -18
  128. package/dist/command-line/route-line.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,40 @@ What changed in each release of `@duyquangnvx/agent-cli` (the Runtime) and `@duy
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## v0.28.0 (2026-11-09)
8
+
9
+ ### Added
10
+
11
+ - `ctx.platform`, also on `PortsBase` and the Side task's run, is the platform the run is on: `process.platform`, or `runCli`'s `platform` in a test, so a Command's own Windows branch runs on any OS.
12
+
13
+ ### Changed
14
+
15
+ - **Breaking:** `Files` gains a required `realPath(path)`, the path with every symlink resolved or `undefined` when nothing is there, and `FileStat` a required `folder`, whether the path is a folder. A hand-written `Files`, such as a test's fake, fails to compile until it has both.
16
+ - `runCli`'s `platform` option replaces `process.platform` wherever the Runtime reads it, not only in hint wording: a declared tool is looked for with `PATHEXT` under `"win32"`, and the Built-in Commands pick npm's `npm.cmd`, global bin folder and `node_modules` folder by it, so a test runs the Windows branches on any OS.
17
+ - `skill install` fails as a bug (exit 70) when the package lacks its own `SKILL.md`, rather than emptying the project's copy.
18
+ - **Breaking:** a Runtime code only some Commands reach (`NOT_GLOBAL_INSTALL`, `NOT_ON_PATH`, `REGISTRY_UNREACHABLE`, `REGISTRY_AUTH`, `INSTALL_FAILED`, `NPM_FAILED`, `NO_LATEST`, `DOCTOR_PROBLEMS`) goes in the `errors` of each Command that throws it, the Built-in Commands included, as a code of the Error table does; a run ending in one its Command does not declare fails as a bug (exit 70). A code any Command can meet, such as `NOT_FOUND`, still needs no declaration. `--help --json` lists each Built-in Command's `errors` with their classes.
19
+ - **Breaking:** a `DoctorCheck` lists in `errors` the codes of the Error table, and the Runtime codes only some Commands reach, that it fails with, thrown or as its finding's `code`; a row that is not advisory failing with one it does not declare fails `doctor` as a bug (exit 70), and `defineCli` throws on one the table lacks. `doctor`'s `errors` in `--help --json` are `DOCTOR_PROBLEMS` and the codes of every row that is not advisory, rather than the whole Error table.
20
+ - A run failing before its Command starts, at the operator check, parsing its input or reading the Project file, reports `INTERRUPTED` (exit 130 or 143) once it was interrupted, and `DEADLINE_EXCEEDED` once the run deadline ran out, as a failure of the Command itself does, rather than the error the gate threw.
21
+ - The exit codes `--help` lists come from the codes the CLI's Commands declare, the Built-in Commands included, and its Error table: exit 3 shows exactly when one of them has class `source`.
22
+
23
+ ### Fixed
24
+
25
+ - Under `runCli`, a Next step must run as given, as an example must: one that does not pass its Command's schemas, such as one missing a required option or holding `<id>` for a number, fails the run as a bug (exit 70) naming it and why, with the reason `checkExamples` gives for the same line. It used to pass when it only routed to a Command without unknown options.
26
+ - The Built-in Commands read through `ctx.files`, so a Skill copy, `AGENTS.md` or `package.json` that `setup`, `update` or `skill install` may not read fails with `PERMISSION_DENIED` (exit 2) and its hint, as a write there does, rather than with `INTERNAL` (exit 70); `doctor` reports it in the row as `PERMISSION_DENIED` rather than as a bug.
27
+
28
+ ### Upgrade from v0.27.0
29
+
30
+ - Give each hand-written `Files` a `realPath` and each `FileStat` it returns a `folder`, as the template's `test/cli.test.ts` does.
31
+ - Add to a Command's `errors` each Runtime code only some Commands reach that it throws, such as `NO_LATEST`.
32
+ - Add to each `doctor` row's `errors` each code of the Error table it throws or returns, its ports' and helpers' included, such as a store row's `CORRUPT_DATA`.
33
+
34
+ ## v0.27.0 (2026-11-08)
35
+
36
+ ### Added
37
+
38
+ - A Secret declared `optional: true` is one the Command runs without, such as a token that overrides a saved login: it is read as any Secret is, `ctx.secret` types it `Secret | undefined`, and its absence fails nothing. Help JSON lists it with `"optional": true`, and `doctor` names it only when set; a name needed by any Command or by `defineCli({ secrets })` stays needed there.
39
+ - Each Command's text help lists its Secrets under `Secrets:`, each with where to get it.
40
+
7
41
  ## v0.26.0 (2026-11-06)
8
42
 
9
43
  ### Added
package/dist/agent-cli.js CHANGED
@@ -2,7 +2,7 @@ import { isAbsolute, normalize } from "node:path";
2
2
  import { builtInCommands } from "./built-ins/commands.js";
3
3
  import { commandLabel } from "./command-spec.js";
4
4
  import { isCommand, } from "./define.js";
5
- import { checkCommand, defineCommandFor } from "./define-command.js";
5
+ import { checkCommand, checkErrors, defineCommandFor, } from "./define-command.js";
6
6
  import { cliErrorOf, errorTableOf } from "./error-table.js";
7
7
  import { runtimeCodesIn } from "./exit-classes.js";
8
8
  function checkOwnCodes(errors) {
@@ -46,7 +46,14 @@ function checkCli(cli) {
46
46
  checkSkill(cli);
47
47
  const { commands } = cli;
48
48
  checkTree(commands, [], table);
49
- const taken = Object.keys(builtInCommands(cli, { bin: undefined, node: undefined })).filter((name) => commands[name] !== undefined);
49
+ for (const row of cli.doctor ?? []) {
50
+ checkErrors(row.errors ?? [], `the ${row.name} row of doctor`, table);
51
+ }
52
+ const taken = Object.keys(builtInCommands(cli, {
53
+ bin: undefined,
54
+ node: undefined,
55
+ platform: process.platform,
56
+ })).filter((name) => commands[name] !== undefined);
50
57
  if (taken.length > 0) {
51
58
  throw new Error(`${cli.name} defines ${taken.join(", ")}, a built-in Command it cannot replace`);
52
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agent-cli.js","sourceRoot":"","sources":["../src/agent-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAML,SAAS,GAGV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAsB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACzF,OAAO,EAAqB,UAAU,EAAmB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhG,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAuFnD,SAAS,aAAa,CAAC,MAAkB;IACvC,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,4BAA4B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,8CAA8C,CAChG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,QAAkB,EAAE,IAAuB,EAAE,KAAiB;IAC/E,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1B,IAAI,SAAS,CAAC,IAAI,CAAC;YAAE,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;;YACxD,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAClB,IAAI,EACJ,KAAK,EACL,OAAO,GAC4C;IACnD,IAAI,KAAK,EAAE,MAAM,KAAK,SAAS,IAAI,OAAO,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,mFAAmF,CAC3F,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAA8B;IAC3D,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO;IAC/B,MAAM,MAAM,GAAG,IAAI,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACrF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,kBAAkB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kEAAkE,CAChH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAkB,GAAyB;IAC1D,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAChC,SAAS,CAAC,GAAG,CAAC,CAAC;IACf,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC/B,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QACvE,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,GAAG,GAAG,CAAC,IAAI,uEAAuE,CACnF,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IACD,UAAU,CAAC,GAAG,CAAC,CAAC;IAChB,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IACzB,SAAS,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CACzF,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,SAAS,CACvC,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,GAAG,GAAG,CAAC,IAAI,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAChF,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAe;IACxC,MAAM,IAAI,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpB,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,WAAW,CAClB,IAAY,EACZ,QAAqB,EACrB,OAA2B;IAE3B,IAAI,OAAO,KAAK,YAAY;QAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;IACpF,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;IAC3F,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;IAChF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;AACpF,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,QAAqB;IACtD,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC;IAClD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,oFAAoF,CAC5F,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,QAAQ,CAAkB,GAAoC;IACrE,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,GAAG,GAAG,CAAC;IACtC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC;IACrF,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAE,CAAC;IACtE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC;IACtC,OAAO;QACL,GAAG,IAAI;QACP,GAAG,KAAK;QACR,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;KACpF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAItB,MAAM,GAA2C,EAAE;IACnD,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,OAAO;QACL,aAAa,EAAE,gBAAgB,EAA0B;QACzD,uFAAuF;QACvF,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;QAC7D,QAAQ,EAAE,UAAU;KACrB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"agent-cli.js","sourceRoot":"","sources":["../src/agent-cli.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { Files } from "../context/files.js";
1
2
  import type { DoctorCheck } from "../define.js";
2
3
  import type { Install } from "./install/install.js";
3
4
  export interface AgentsSection {
@@ -13,6 +14,6 @@ export interface AgentsMd {
13
14
  }
14
15
  /** `text` with the CLI's Agents section between its markers, appended when they are missing; nothing else changes. */
15
16
  export declare function withSection({ name, text: section }: AgentsSection, text: string): string;
16
- export declare function agentsMdAt(agents: AgentsSection, root: string): Promise<AgentsMd>;
17
- export declare function handEditsAt(root: string): Promise<string[]>;
17
+ export declare function agentsMdAt(files: Files, agents: AgentsSection, root: string): Promise<AgentsMd>;
18
+ export declare function handEditsAt(files: Files, root: string): Promise<string[]>;
18
19
  export declare function agentsRow(agents: AgentsSection, install: Install): DoctorCheck;
@@ -1,7 +1,6 @@
1
- import { readFile } from "node:fs/promises";
2
1
  import { join } from "node:path";
3
- import { orMissing } from "../errors.js";
4
2
  import { projectRootOf } from "./project-root.js";
3
+ import { readIfAny } from "./read.js";
5
4
  function markersOf(name) {
6
5
  return { begin: `<!-- BEGIN:${name} -->`, end: `<!-- END:${name} -->` };
7
6
  }
@@ -17,9 +16,9 @@ export function withSection({ name, text: section }, text) {
17
16
  return `${whole}\n`;
18
17
  return `${text}${text.endsWith("\n") ? "" : "\n"}\n${whole}\n`;
19
18
  }
20
- export async function agentsMdAt(agents, root) {
19
+ export async function agentsMdAt(files, agents, root) {
21
20
  const path = join(root, "AGENTS.md");
22
- const existing = await orMissing(readFile(path, "utf8"));
21
+ const existing = await readIfAny(files, path);
23
22
  if (existing === undefined)
24
23
  return { path, agents, change: "create" };
25
24
  if (withSection(agents, existing) === existing)
@@ -31,9 +30,9 @@ export async function agentsMdAt(agents, root) {
31
30
  };
32
31
  }
33
32
  // Claude Code reads AGENTS.md only through an `@AGENTS.md` line, and no CLI edits CLAUDE.md.
34
- export async function handEditsAt(root) {
33
+ export async function handEditsAt(files, root) {
35
34
  const claudeMd = join(root, "CLAUDE.md");
36
- const text = await orMissing(readFile(claudeMd, "utf8"));
35
+ const text = await readIfAny(files, claudeMd);
37
36
  if (text === undefined || text.split(/\r?\n/).some((line) => line.trim() === "@AGENTS.md")) {
38
37
  return [];
39
38
  }
@@ -46,8 +45,8 @@ export function agentsRow(agents, install) {
46
45
  name: "agents",
47
46
  advisory: true,
48
47
  run: async (ctx) => {
49
- const root = await projectRootOf(ctx.cwd);
50
- const { path, change } = await agentsMdAt(agents, root);
48
+ const root = await projectRootOf(ctx.files, ctx.cwd);
49
+ const { path, change } = await agentsMdAt(ctx.files, agents, root);
51
50
  const fix = `${install.runAs} skill install`;
52
51
  if (change === "rewrite") {
53
52
  return {
@@ -64,7 +63,7 @@ export function agentsRow(agents, install) {
64
63
  };
65
64
  }
66
65
  const holds = `${path} holds the ${name} Agents section`;
67
- const [edit] = await handEditsAt(root);
66
+ const [edit] = await handEditsAt(ctx.files, root);
68
67
  return edit === undefined
69
68
  ? { state: "ok", message: holds }
70
69
  : { state: "problem", message: `${holds}; ${edit}` };
@@ -1 +1 @@
1
- {"version":3,"file":"agents-md.js","sourceRoot":"","sources":["../../src/built-ins/agents-md.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAqBlD,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,EAAE,KAAK,EAAE,cAAc,IAAI,MAAM,EAAE,GAAG,EAAE,YAAY,IAAI,MAAM,EAAE,CAAC;AAC1E,CAAC;AAED,sHAAsH;AACtH,MAAM,UAAU,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAiB,EAAE,IAAY;IAC9E,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,GAAG,KAAK,KAAK,OAAO,KAAK,GAAG,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,IAAI,KAAK,CAAC,CAAC;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1F,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACrC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAqB,EAAE,IAAY;IAClE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACtE,IAAI,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACtF,OAAO;QACL,IAAI;QACJ,MAAM;QACN,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;KAC5E,CAAC;AACJ,CAAC;AAED,6FAA6F;AAC7F,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC;QAC3F,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,CAAC,gCAAgC,QAAQ,kCAAkC,CAAC,CAAC;AACtF,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,SAAS,CAAC,MAAqB,EAAE,OAAgB;IAC/D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IACxB,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;YAC1B,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1C,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACxD,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,KAAK,gBAAgB,CAAC;YAC7C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO;oBACL,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE,GAAG,IAAI,YAAY,IAAI,sCAAsC,GAAG,SAAS;oBAClF,GAAG;iBACJ,CAAC;YACJ,CAAC;YACD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO;oBACL,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE,GAAG,IAAI,aAAa,IAAI,yDAAyD,IAAI,EAAE;oBAChG,GAAG;iBACJ,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,GAAG,IAAI,cAAc,IAAI,iBAAiB,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YACvC,OAAO,IAAI,KAAK,SAAS;gBACvB,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;gBACjC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,KAAK,IAAI,EAAE,EAAE,CAAC;QACzD,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"agents-md.js","sourceRoot":"","sources":["../../src/built-ins/agents-md.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAqBtC,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,EAAE,KAAK,EAAE,cAAc,IAAI,MAAM,EAAE,GAAG,EAAE,YAAY,IAAI,MAAM,EAAE,CAAC;AAC1E,CAAC;AAED,sHAAsH;AACtH,MAAM,UAAU,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAiB,EAAE,IAAY;IAC9E,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,GAAG,KAAK,KAAK,OAAO,KAAK,GAAG,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,IAAI,KAAK,CAAC,CAAC;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1F,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACrC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAY,EACZ,MAAqB,EACrB,IAAY;IAEZ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9C,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACtE,IAAI,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACtF,OAAO;QACL,IAAI;QACJ,MAAM;QACN,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;KAC5E,CAAC;AACJ,CAAC;AAED,6FAA6F;AAC7F,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAY,EAAE,IAAY;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC;QAC3F,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,CAAC,gCAAgC,QAAQ,kCAAkC,CAAC,CAAC;AACtF,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,SAAS,CAAC,MAAqB,EAAE,OAAgB;IAC/D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IACxB,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;YAC1B,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YACrD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACnE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,KAAK,gBAAgB,CAAC;YAC7C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO;oBACL,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE,GAAG,IAAI,YAAY,IAAI,sCAAsC,GAAG,SAAS;oBAClF,GAAG;iBACJ,CAAC;YACJ,CAAC;YACD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO;oBACL,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE,GAAG,IAAI,aAAa,IAAI,yDAAyD,IAAI,EAAE;oBAChG,GAAG;iBACJ,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,GAAG,IAAI,cAAc,IAAI,iBAAiB,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAClD,OAAO,IAAI,KAAK,SAAS;gBACvB,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;gBACjC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,KAAK,IAAI,EAAE,EAAE,CAAC;QACzD,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import type { Commands, CommandTreeCli } from "../define.js";
2
- /** How the CLI was started: the script, and the Node running it. */
2
+ /** How the CLI was started: the script, the Node running it, and the platform it runs on. */
3
3
  export interface Launch {
4
4
  readonly bin: string | undefined;
5
5
  readonly node: string | undefined;
6
+ readonly platform: NodeJS.Platform;
6
7
  }
7
8
  /**
8
9
  * The Commands the Runtime adds to a multi-Command CLI: `setup` and `update` only for a Global
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/built-ins/commands.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAQ3C;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAmB,EAAE,MAAc;IACjE,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO;QACL,MAAM,EAAE,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC;QAClC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC3B,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,QAAQ;KAClC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/built-ins/commands.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAS3C;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAmB,EAAE,MAAc;IACjE,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO;QACL,MAAM,EAAE,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC;QAClC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC3B,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,QAAQ;KAClC,CAAC;AACJ,CAAC"}
@@ -115,7 +115,7 @@ function registryRow(cli, check) {
115
115
  export function doctorChecks(cli, launch, scope) {
116
116
  const install = installOf(cli);
117
117
  const check = install.check(launch);
118
- const tools = toolRows(cli.tools ?? [], cli.commands);
118
+ const tools = toolRows(cli.tools ?? [], cli.commands, launch.platform);
119
119
  return {
120
120
  checks: [
121
121
  buildRow(cli),
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-rows.js","sourceRoot":"","sources":["../../src/built-ins/doctor-rows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor-rows.js","sourceRoot":"","sources":["../../src/built-ins/doctor-rows.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import type { Command, CommandTreeCli } from "../define.js";
2
2
  import type { Launch } from "./commands.js";
3
- export declare const DOCTOR_PROBLEMS = "DOCTOR_PROBLEMS";
4
3
  /** The built-in `doctor`: the fixed rows around the CLI's own, each under its own deadline. */
5
4
  export declare function doctorCommand(cli: CommandTreeCli, launch: Launch): Command;
@@ -2,11 +2,12 @@ import * as z from "zod";
2
2
  import { untilAborted } from "../abort.js";
3
3
  import { missingToolOf } from "../context/spawn.js";
4
4
  import { defineCommand } from "../define-command.js";
5
+ import { errorTableOf } from "../error-table.js";
5
6
  import { runtimeError } from "../errors.js";
6
7
  import { lineOf, wholeLine } from "../next-step.js";
8
+ import { DOCTOR_PROBLEMS, mustDeclare } from "../runtime-codes.js";
7
9
  import { doctorChecks, problemOfError, readProject } from "./doctor-rows.js";
8
10
  import { runAsOf } from "./install/run-as.js";
9
- export const DOCTOR_PROBLEMS = "DOCTOR_PROBLEMS";
10
11
  const DEFAULT_DEADLINE_MS = 10_000;
11
12
  const MS_PER_SECOND = 1000;
12
13
  const MIN_LABEL_WIDTH = 8;
@@ -73,12 +74,12 @@ async function rowOf(check, ctx, { read, runAs, tools }) {
73
74
  skippedFor(error, { read, tools }) ??
74
75
  problemOf(check, error, { signal: ctx.signal, deadline: signal, ms, runAs });
75
76
  }
76
- return { row: { check: check.name, ...finding }, advisory: check.advisory === true };
77
+ return { row: { check: check.name, ...finding }, check };
77
78
  }
78
79
  // An advisory problem never reaches the failure, whose Next step a fixless row's hint may mean.
79
80
  function nextOf(checked, doctorLine) {
80
81
  const fixes = checked.flatMap(({ row }) => (row.fix === undefined ? [] : [row.fix]));
81
- const unfixed = checked.some(({ row, advisory }) => advisory && row.state === "problem" && row.fix === undefined);
82
+ const unfixed = checked.some(({ row, check }) => check.advisory === true && row.state === "problem" && row.fix === undefined);
82
83
  return [...new Set(unfixed ? [...fixes, doctorLine] : fixes)];
83
84
  }
84
85
  function render({ rows, next }, style) {
@@ -103,9 +104,20 @@ function failure(cliName, rerun, problems) {
103
104
  });
104
105
  return new AggregateError(errors);
105
106
  }
107
+ // doctor declares every row's codes, so the Runtime's own check would miss a row failing with another row's.
108
+ function checkedRows(error, problems, table) {
109
+ const undeclared = problems.flatMap(({ row, check }) => row.code !== undefined && mustDeclare(row.code, table) && !check.errors?.includes(row.code)
110
+ ? [`the ${check.name} row failed with ${row.code}`]
111
+ : []);
112
+ if (undeclared.length === 0)
113
+ return error;
114
+ return new Error(`doctor: ${undeclared.join("; ")}, which its errors do not declare`, {
115
+ cause: error,
116
+ });
117
+ }
106
118
  /** The built-in `doctor`: the fixed rows around the CLI's own, each under its own deadline. */
107
119
  export function doctorCommand(cli, launch) {
108
- return defineCommand({
120
+ const doctor = defineCommand({
109
121
  description: "check the setup and say what fixes each problem",
110
122
  examples: [
111
123
  {
@@ -127,16 +139,17 @@ export function doctorCommand(cli, launch) {
127
139
  ctx.deliver(report);
128
140
  ctx.signal.throwIfAborted();
129
141
  }
130
- const problems = checked
131
- .filter(({ row, advisory }) => row.state === "problem" && !advisory)
132
- .map(({ row }) => row);
142
+ const problems = checked.filter(({ row, check }) => row.state === "problem" && check.advisory !== true);
133
143
  if (problems.length > 0) {
134
144
  ctx.deliver(report);
135
- throw failure(cli.name, ctx.rerun(), problems);
145
+ throw checkedRows(failure(cli.name, ctx.rerun(), problems.map(({ row }) => row)), problems, errorTableOf(cli));
136
146
  }
137
147
  return report;
138
148
  },
139
149
  render,
140
150
  });
151
+ // An advisory row never fails doctor, so its codes are not doctor's.
152
+ const rowCodes = (cli.doctor ?? []).flatMap((row) => row.advisory === true ? [] : (row.errors ?? []));
153
+ return { ...doctor, errors: [...new Set([DOCTOR_PROBLEMS, ...rowCodes])] };
141
154
  }
142
155
  //# sourceMappingURL=doctor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/built-ins/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/built-ins/doctor.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { readFile, realpath } from "node:fs/promises";
2
1
  import { join, sep } from "node:path";
3
2
  import * as z from "zod";
4
- import { messageOf, orMissing } from "../../errors.js";
3
+ import { messageOf } from "../../errors.js";
5
4
  import { npmContext, scopeOf } from "../npm.js";
6
- import { ancestorsOf, exists, isInside, lockfileRootOf, manifestIn, } from "../project-root.js";
5
+ import { ancestorsOf, isInside, lockfileRootOf, manifestIn, } from "../project-root.js";
6
+ import { readIfAny } from "../read.js";
7
7
  import { runAsOf } from "./run-as.js";
8
8
  // Both upgrades keep a devDependency under devDependencies (npm 12.2, pnpm 12.14). pnpm keeps the pin's style; npm writes the range its save-exact config asks for.
9
9
  const LINES = {
@@ -20,11 +20,11 @@ const LINES = {
20
20
  };
21
21
  const packageSchema = z.object({ version: z.string() });
22
22
  // The fix runs at the lockfile's root, so a package.json above it is outside the project. Without a lockfile no fix is given, and the nearest listing still names the project.
23
- async function manifestListing(name, cwd, root) {
23
+ async function manifestListing(files, name, cwd, root) {
24
24
  const dirs = ancestorsOf(cwd);
25
25
  const top = root === undefined ? dirs.length : dirs.indexOf(root.dir) + 1;
26
26
  for (const dir of dirs.slice(0, top)) {
27
- const manifest = await manifestIn(dir);
27
+ const manifest = await manifestIn(files, dir);
28
28
  if (manifest?.dependencies?.[name] !== undefined ||
29
29
  manifest?.devDependencies?.[name] !== undefined) {
30
30
  return join(dir, "package.json");
@@ -32,9 +32,9 @@ async function manifestListing(name, cwd, root) {
32
32
  }
33
33
  return undefined;
34
34
  }
35
- async function versionIn(manifest) {
35
+ function versionIn(text) {
36
36
  try {
37
- return packageSchema.parse(JSON.parse(await readFile(manifest, "utf8"))).version;
37
+ return packageSchema.parse(JSON.parse(text)).version;
38
38
  }
39
39
  catch (error) {
40
40
  if (error instanceof SyntaxError || error instanceof z.ZodError) {
@@ -43,31 +43,32 @@ async function versionIn(manifest) {
43
43
  throw error;
44
44
  }
45
45
  }
46
- async function standingOf(install, bin, cwd, root) {
46
+ async function standingOf(files, install, bin, cwd, root) {
47
47
  if (bin === undefined)
48
48
  return { kind: "source" };
49
49
  for (const projectDir of ancestorsOf(cwd)) {
50
50
  const folder = join(projectDir, "node_modules", install.package);
51
51
  const manifest = join(folder, "package.json");
52
- if (!(await exists(manifest)))
52
+ const text = await readIfAny(files, manifest);
53
+ if (text === undefined)
53
54
  continue;
54
- const version = await versionIn(manifest);
55
+ const version = versionIn(text);
55
56
  if (typeof version !== "string")
56
57
  return { kind: "unreadable", manifest, ...version };
57
- const copy = { projectDir, realDir: await realpath(folder), version };
58
+ const copy = { projectDir, realDir: (await files.realPath(folder)) ?? folder, version };
58
59
  if (!copy.realDir.split(sep).includes("node_modules"))
59
60
  return { kind: "linked", copy };
60
- const runningFrom = (await orMissing(realpath(bin))) ?? bin;
61
+ const runningFrom = (await files.realPath(bin)) ?? bin;
61
62
  return isInside(copy.realDir, runningFrom)
62
63
  ? { kind: "installed", copy }
63
64
  : { kind: "other", copy, runningFrom };
64
65
  }
65
- const manifest = await manifestListing(install.package, cwd, root);
66
+ const manifest = await manifestListing(files, install.package, cwd, root);
66
67
  return manifest === undefined ? { kind: "missing" } : { kind: "listed", manifest };
67
68
  }
68
- async function surveyDependency(install, bin, cwd) {
69
- const root = await lockfileRootOf(cwd);
70
- return { cwd, root, standing: await standingOf(install, bin, cwd, root) };
69
+ async function surveyDependency(install, bin, { files, cwd }) {
70
+ const root = await lockfileRootOf(files, cwd);
71
+ return { cwd, root, standing: await standingOf(files, install, bin, cwd, root) };
71
72
  }
72
73
  function packagesOf(install) {
73
74
  return [install.package, ...(install.lockstep ?? [])];
@@ -144,20 +145,20 @@ function adviceFor(install, root, latest) {
144
145
  }
145
146
  // npm reads the .npmrc of the nearest folder holding a package.json, so it runs at the lockfile's root (ADR 0010).
146
147
  // Both `doctor` rows read one survey, made by whichever asks first.
147
- function checkOf(cli, install, runAs, { bin, node }) {
148
+ function checkOf(cli, install, runAs, launch) {
148
149
  let survey;
149
- const surveyed = (cwd) => {
150
- survey ??= surveyDependency(install, bin, cwd);
150
+ const surveyed = (ctx) => {
151
+ survey ??= surveyDependency(install, launch.bin, ctx);
151
152
  return survey;
152
153
  };
153
154
  return {
154
- install: async (ctx) => installFinding(cli, runAs, install, await surveyed(ctx.cwd)),
155
+ install: async (ctx) => installFinding(cli, runAs, install, await surveyed(ctx)),
155
156
  release: async (ctx) => {
156
- const { cwd, root, standing } = await surveyed(ctx.cwd);
157
+ const { cwd, root, standing } = await surveyed(ctx);
157
158
  if (isUnchecked(standing))
158
159
  return { skipped: skippedFor(cli, install, standing) };
159
160
  return {
160
- npm: npmContext(cli, registryOf(install, root?.dir), ctx, node, root?.dir ?? cwd),
161
+ npm: npmContext(cli, registryOf(install, root?.dir), ctx, launch, root?.dir ?? cwd),
161
162
  advise: (latest) => adviceFor(install, root, latest),
162
163
  };
163
164
  },
@@ -169,7 +170,6 @@ export function dependencyInstall(cli, install) {
169
170
  return {
170
171
  runAs,
171
172
  builtIns: () => ({}),
172
- exitClasses: [],
173
173
  check: (launch) => checkOf(cli, install, runAs, launch),
174
174
  // `doctor` reports a newer release, since moving a pinned one is the team's decision (ADR 0010).
175
175
  notice: async () => { },
@@ -1 +1 @@
1
- {"version":3,"file":"dependency.js","sourceRoot":"","sources":["../../../src/built-ins/install/dependency.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dependency.js","sourceRoot":"","sources":["../../../src/built-ins/install/dependency.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,18 @@
1
+ import type { Files } from "../../context/files.js";
1
2
  import type { Context } from "../../context.js";
2
3
  import type { GlobalInstall } from "../../define.js";
4
+ import type { Launch } from "../commands.js";
3
5
  import { type NpmContext } from "../npm.js";
4
6
  import type { InstallCli } from "./install.js";
5
- export declare const NOT_GLOBAL_INSTALL = "NOT_GLOBAL_INSTALL";
6
7
  /** Where npm installed this copy of the CLI globally. */
7
8
  export interface InstalledCopy {
8
9
  readonly prefix: string;
9
10
  readonly packageDir: string;
10
11
  }
11
12
  /** Where npm puts global packages under its global prefix. */
12
- export declare function globalModulesDir(prefix: string): string;
13
+ export declare function globalModulesDir(prefix: string, platform: NodeJS.Platform): string;
14
+ /** Whether `path` itself is a symlink, which a link in a folder above it does not make it. */
15
+ export declare function isLink(files: Files, path: string): Promise<boolean>;
13
16
  /**
14
17
  * The global npm install this copy runs from, found by asking npm for its global prefix.
15
18
  * `bin` is the script that started the CLI; throws `NOT_GLOBAL_INSTALL` when it is not inside that install.
@@ -18,4 +21,4 @@ export declare function globalInstallOf(bin: string | undefined, ctx: NpmContext
18
21
  /** The line that sets a Global install up, run before the CLI is on the machine. */
19
22
  export declare function setupLineOf(install: GlobalInstall): string;
20
23
  /** npm for a Global install, run in the working directory. */
21
- export declare function globalNpm(cli: InstallCli, install: GlobalInstall, ctx: Context, node: string | undefined): NpmContext;
24
+ export declare function globalNpm(cli: InstallCli, install: GlobalInstall, ctx: Context, launch: Pick<Launch, "node" | "platform">): NpmContext;
@@ -1,15 +1,20 @@
1
- import { lstat, realpath } from "node:fs/promises";
2
- import { join } from "node:path";
3
- import { orMissing, runtimeError } from "../../errors.js";
1
+ import { basename, dirname, join } from "node:path";
2
+ import { runtimeError } from "../../errors.js";
4
3
  import { wholeLine } from "../../next-step.js";
4
+ import { NOT_GLOBAL_INSTALL } from "../../runtime-codes.js";
5
5
  import { globalPrefix, npmContext, scopeOf, setupCommandLine, } from "../npm.js";
6
6
  import { isInside } from "../project-root.js";
7
- export const NOT_GLOBAL_INSTALL = "NOT_GLOBAL_INSTALL";
8
7
  /** Where npm puts global packages under its global prefix. */
9
- export function globalModulesDir(prefix) {
10
- return process.platform === "win32"
11
- ? join(prefix, "node_modules")
12
- : join(prefix, "lib", "node_modules");
8
+ export function globalModulesDir(prefix, platform) {
9
+ return platform === "win32" ? join(prefix, "node_modules") : join(prefix, "lib", "node_modules");
10
+ }
11
+ /** Whether `path` itself is a symlink, which a link in a folder above it does not make it. */
12
+ export async function isLink(files, path) {
13
+ const real = await files.realPath(path);
14
+ if (real === undefined)
15
+ return false;
16
+ const folder = await files.realPath(dirname(path));
17
+ return folder === undefined || real !== join(folder, basename(path));
13
18
  }
14
19
  function notGlobal(ctx, message) {
15
20
  return runtimeError({
@@ -28,14 +33,14 @@ export async function globalInstallOf(bin, ctx) {
28
33
  throw notGlobal(ctx, `${ctx.cliName} runs from source, not from an npm install`);
29
34
  }
30
35
  const prefix = await globalPrefix(ctx);
31
- const packageDir = join(globalModulesDir(prefix), ctx.registry.package);
32
- const installed = await orMissing(realpath(packageDir));
33
- const here = (await orMissing(realpath(bin))) ?? bin;
36
+ const packageDir = join(globalModulesDir(prefix, ctx.platform), ctx.registry.package);
37
+ const installed = await ctx.files.realPath(packageDir);
38
+ const here = (await ctx.files.realPath(bin)) ?? bin;
34
39
  if (installed === undefined || !isInside(installed, here)) {
35
40
  throw notGlobal(ctx, `${ctx.cliName} runs from ${here}, not from npm's global install at ${packageDir}`);
36
41
  }
37
42
  // `npm link` puts a symlink to a source checkout where the install would be.
38
- if ((await lstat(packageDir)).isSymbolicLink()) {
43
+ if (await isLink(ctx.files, packageDir)) {
39
44
  throw notGlobal(ctx, `${ctx.cliName} runs from a link to ${installed} (npm link), not from an npm install`);
40
45
  }
41
46
  return { prefix, packageDir };
@@ -64,7 +69,7 @@ function globalRegistry(install) {
64
69
  };
65
70
  }
66
71
  /** npm for a Global install, run in the working directory. */
67
- export function globalNpm(cli, install, ctx, node) {
68
- return npmContext(cli, globalRegistry(install), ctx, node, ctx.cwd);
72
+ export function globalNpm(cli, install, ctx, launch) {
73
+ return npmContext(cli, globalRegistry(install), ctx, launch, ctx.cwd);
69
74
  }
70
75
  //# sourceMappingURL=global-npm.js.map