@duyquangnvx/agent-cli 0.16.0 → 0.18.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 (252) hide show
  1. package/CHANGELOG.md +76 -0
  2. package/README.md +2 -2
  3. package/agents-section.md +5 -0
  4. package/dist/agent-cli.d.ts +69 -11
  5. package/dist/agent-cli.js +69 -10
  6. package/dist/agent-cli.js.map +1 -1
  7. package/dist/built-ins/agents-md.d.ts +9 -9
  8. package/dist/built-ins/agents-md.js +8 -8
  9. package/dist/built-ins/agents-md.js.map +1 -1
  10. package/dist/built-ins/doctor-rows.js +5 -3
  11. package/dist/built-ins/doctor-rows.js.map +1 -1
  12. package/dist/built-ins/doctor.d.ts +1 -1
  13. package/dist/built-ins/doctor.js +16 -15
  14. package/dist/built-ins/doctor.js.map +1 -1
  15. package/dist/built-ins/install/dependency.js +1 -1
  16. package/dist/built-ins/install/dependency.js.map +1 -1
  17. package/dist/built-ins/install/global-npm.js +6 -4
  18. package/dist/built-ins/install/global-npm.js.map +1 -1
  19. package/dist/built-ins/npm.d.ts +3 -2
  20. package/dist/built-ins/npm.js +16 -9
  21. package/dist/built-ins/npm.js.map +1 -1
  22. package/dist/{project-root.js → built-ins/project-root.js} +1 -1
  23. package/dist/built-ins/project-root.js.map +1 -0
  24. package/dist/built-ins/skill/hub.d.ts +3 -2
  25. package/dist/built-ins/skill/hub.js +43 -16
  26. package/dist/built-ins/skill/hub.js.map +1 -1
  27. package/dist/built-ins/skill/install-command.d.ts +3 -4
  28. package/dist/built-ins/skill/install-command.js +20 -21
  29. package/dist/built-ins/skill/install-command.js.map +1 -1
  30. package/dist/built-ins/skill/packaged.js +5 -2
  31. package/dist/built-ins/skill/packaged.js.map +1 -1
  32. package/dist/built-ins/skill/skill.d.ts +5 -2
  33. package/dist/built-ins/skill/skill.js +1 -1
  34. package/dist/built-ins/skill/skill.js.map +1 -1
  35. package/dist/built-ins/update.d.ts +1 -1
  36. package/dist/built-ins/update.js +4 -9
  37. package/dist/built-ins/update.js.map +1 -1
  38. package/dist/check-examples.d.ts +6 -0
  39. package/dist/check-examples.js +53 -0
  40. package/dist/check-examples.js.map +1 -0
  41. package/dist/check-next-steps.d.ts +10 -0
  42. package/dist/check-next-steps.js +47 -0
  43. package/dist/check-next-steps.js.map +1 -0
  44. package/dist/command-errors.d.ts +8 -0
  45. package/dist/command-errors.js +25 -0
  46. package/dist/command-errors.js.map +1 -0
  47. package/dist/{flags.d.ts → command-line/flags.d.ts} +7 -4
  48. package/dist/{flags.js → command-line/flags.js} +8 -10
  49. package/dist/command-line/flags.js.map +1 -0
  50. package/dist/{input.d.ts → command-line/input.d.ts} +1 -1
  51. package/dist/{input.js → command-line/input.js} +1 -1
  52. package/dist/command-line/input.js.map +1 -0
  53. package/dist/{invocation.d.ts → command-line/invocation.d.ts} +6 -3
  54. package/dist/{invocation.js → command-line/invocation.js} +9 -5
  55. package/dist/command-line/invocation.js.map +1 -0
  56. package/dist/{parse-input.d.ts → command-line/parse-input.d.ts} +2 -2
  57. package/dist/{parse-input.js → command-line/parse-input.js} +3 -3
  58. package/dist/command-line/parse-input.js.map +1 -0
  59. package/dist/command-line/route-line.d.ts +15 -0
  60. package/dist/command-line/route-line.js +18 -0
  61. package/dist/command-line/route-line.js.map +1 -0
  62. package/dist/{route.d.ts → command-line/route.d.ts} +2 -2
  63. package/dist/{route.js → command-line/route.js} +1 -1
  64. package/dist/command-line/route.js.map +1 -0
  65. package/dist/command-line/shell-words.d.ts +12 -0
  66. package/dist/command-line/shell-words.js +83 -0
  67. package/dist/command-line/shell-words.js.map +1 -0
  68. package/dist/command-line/suggest.js.map +1 -0
  69. package/dist/command-line/tokenize.js.map +1 -0
  70. package/dist/{usage.d.ts → command-line/usage.d.ts} +1 -1
  71. package/dist/{usage.js → command-line/usage.js} +2 -2
  72. package/dist/command-line/usage.js.map +1 -0
  73. package/dist/command-spec.d.ts +13 -4
  74. package/dist/command-spec.js +22 -11
  75. package/dist/command-spec.js.map +1 -1
  76. package/dist/{agent.d.ts → context/agent.d.ts} +1 -1
  77. package/dist/context/agent.js.map +1 -0
  78. package/dist/{confirm.d.ts → context/confirm.d.ts} +3 -3
  79. package/dist/{confirm.js → context/confirm.js} +9 -11
  80. package/dist/context/confirm.js.map +1 -0
  81. package/dist/{cost.d.ts → context/cost.d.ts} +3 -3
  82. package/dist/context/cost.js +16 -0
  83. package/dist/context/cost.js.map +1 -0
  84. package/dist/context/declared.d.ts +8 -0
  85. package/dist/context/declared.js +10 -0
  86. package/dist/context/declared.js.map +1 -0
  87. package/dist/{errno.d.ts → context/errno.d.ts} +4 -3
  88. package/dist/{errno.js → context/errno.js} +14 -7
  89. package/dist/context/errno.js.map +1 -0
  90. package/dist/{files.js → context/files.js} +1 -1
  91. package/dist/context/files.js.map +1 -0
  92. package/dist/{interrupts.d.ts → context/interrupts.d.ts} +14 -10
  93. package/dist/{interrupts.js → context/interrupts.js} +30 -27
  94. package/dist/context/interrupts.js.map +1 -0
  95. package/dist/{operator.d.ts → context/operator.d.ts} +4 -3
  96. package/dist/{operator.js → context/operator.js} +4 -3
  97. package/dist/context/operator.js.map +1 -0
  98. package/dist/{outputs.d.ts → context/outputs.d.ts} +6 -5
  99. package/dist/{outputs.js → context/outputs.js} +10 -9
  100. package/dist/context/outputs.js.map +1 -0
  101. package/dist/{project.d.ts → context/project.d.ts} +4 -3
  102. package/dist/{project.js → context/project.js} +8 -7
  103. package/dist/context/project.js.map +1 -0
  104. package/dist/{secrets.d.ts → context/secrets.d.ts} +8 -1
  105. package/dist/context/secrets.js +85 -0
  106. package/dist/context/secrets.js.map +1 -0
  107. package/dist/{side-task.d.ts → context/side-task.d.ts} +2 -2
  108. package/dist/{side-task.js → context/side-task.js} +1 -1
  109. package/dist/context/side-task.js.map +1 -0
  110. package/dist/{spawn.d.ts → context/spawn.d.ts} +4 -3
  111. package/dist/{spawn.js → context/spawn.js} +7 -6
  112. package/dist/context/spawn.js.map +1 -0
  113. package/dist/{spill.d.ts → context/spill.d.ts} +4 -3
  114. package/dist/{spill.js → context/spill.js} +4 -4
  115. package/dist/context/spill.js.map +1 -0
  116. package/dist/{stdin.d.ts → context/stdin.d.ts} +2 -2
  117. package/dist/{stdin.js → context/stdin.js} +2 -2
  118. package/dist/context/stdin.js.map +1 -0
  119. package/dist/{tools.d.ts → context/tools.d.ts} +4 -3
  120. package/dist/{tools.js → context/tools.js} +8 -10
  121. package/dist/context/tools.js.map +1 -0
  122. package/dist/context.d.ts +51 -27
  123. package/dist/define-command.d.ts +47 -0
  124. package/dist/define-command.js +25 -0
  125. package/dist/define-command.js.map +1 -0
  126. package/dist/define.d.ts +81 -61
  127. package/dist/define.js +0 -14
  128. package/dist/define.js.map +1 -1
  129. package/dist/error-table.d.ts +9 -6
  130. package/dist/error-table.js +6 -6
  131. package/dist/error-table.js.map +1 -1
  132. package/dist/errors.d.ts +15 -1
  133. package/dist/errors.js +24 -6
  134. package/dist/errors.js.map +1 -1
  135. package/dist/execute.d.ts +8 -7
  136. package/dist/execute.js +52 -23
  137. package/dist/execute.js.map +1 -1
  138. package/dist/exit-classes.d.ts +1 -2
  139. package/dist/exit-classes.js +41 -48
  140. package/dist/exit-classes.js.map +1 -1
  141. package/dist/help-json.d.ts +4 -3
  142. package/dist/help-json.js +33 -11
  143. package/dist/help-json.js.map +1 -1
  144. package/dist/help.js +1 -0
  145. package/dist/help.js.map +1 -1
  146. package/dist/index.d.ts +19 -26
  147. package/dist/index.js +6 -18
  148. package/dist/index.js.map +1 -1
  149. package/dist/list.d.ts +6 -5
  150. package/dist/list.js +17 -11
  151. package/dist/list.js.map +1 -1
  152. package/dist/next-step.d.ts +23 -0
  153. package/dist/next-step.js +20 -0
  154. package/dist/next-step.js.map +1 -0
  155. package/dist/output.d.ts +11 -5
  156. package/dist/output.js +25 -11
  157. package/dist/output.js.map +1 -1
  158. package/dist/root-spec.d.ts +5 -0
  159. package/dist/root-spec.js +15 -0
  160. package/dist/root-spec.js.map +1 -0
  161. package/dist/run-cli.d.ts +2 -2
  162. package/dist/run-cli.js +12 -11
  163. package/dist/run-cli.js.map +1 -1
  164. package/dist/run-command.d.ts +4 -4
  165. package/dist/run-command.js +66 -37
  166. package/dist/run-command.js.map +1 -1
  167. package/dist/run-options.d.ts +11 -4
  168. package/dist/run-process.js +22 -7
  169. package/dist/run-process.js.map +1 -1
  170. package/dist/runtime-codes.d.ts +33 -0
  171. package/dist/runtime-codes.js +50 -0
  172. package/dist/runtime-codes.js.map +1 -0
  173. package/dist/style.js +1 -1
  174. package/dist/style.js.map +1 -1
  175. package/dist/testing.d.ts +27 -0
  176. package/dist/testing.js +66 -0
  177. package/dist/testing.js.map +1 -0
  178. package/dist/version.d.ts +4 -1
  179. package/dist/version.js +6 -1
  180. package/dist/version.js.map +1 -1
  181. package/docs/README.md +51 -0
  182. package/docs/example/archive.test.ts +280 -0
  183. package/docs/example/archive.ts +160 -0
  184. package/docs/example/bin.test.ts +118 -0
  185. package/docs/example/bin.ts +5 -0
  186. package/docs/example/bundle.test.ts +57 -0
  187. package/docs/example/bundle.ts +57 -0
  188. package/docs/example/cli.test.ts +428 -0
  189. package/docs/example/cli.ts +191 -0
  190. package/docs/example/commit.test.ts +78 -0
  191. package/docs/example/commit.ts +26 -0
  192. package/docs/example/define.ts +16 -0
  193. package/docs/example/errors.ts +17 -0
  194. package/docs/example/export.test.ts +64 -0
  195. package/docs/example/export.ts +32 -0
  196. package/docs/example/fake-ports.ts +14 -0
  197. package/docs/example/folder.ts +48 -0
  198. package/docs/example/import.test.ts +53 -0
  199. package/docs/example/import.ts +50 -0
  200. package/docs/example/package.json +21 -0
  201. package/docs/example/ports.ts +105 -0
  202. package/docs/example/serve.test.ts +49 -0
  203. package/docs/example/serve.ts +40 -0
  204. package/docs/example/store.ts +62 -0
  205. package/docs/example/tsdown.config.ts +33 -0
  206. package/docs/getting-started.md +19 -0
  207. package/docs/guides/commands.md +35 -0
  208. package/docs/guides/doctor.md +52 -0
  209. package/docs/guides/effects-and-plans.md +44 -0
  210. package/docs/guides/errors.md +57 -0
  211. package/docs/guides/lists.md +18 -0
  212. package/docs/guides/local-state.md +28 -0
  213. package/docs/guides/long-runs.md +109 -0
  214. package/docs/guides/remote-services.md +124 -0
  215. package/docs/guides/shipping.md +61 -0
  216. package/docs/guides/testing.md +69 -0
  217. package/docs/principles.md +39 -0
  218. package/docs/reference.md +25 -0
  219. package/package.json +12 -1
  220. package/dist/agent.js.map +0 -1
  221. package/dist/confirm.js.map +0 -1
  222. package/dist/cost.js +0 -16
  223. package/dist/cost.js.map +0 -1
  224. package/dist/errno.js.map +0 -1
  225. package/dist/files.js.map +0 -1
  226. package/dist/flags.js.map +0 -1
  227. package/dist/input.js.map +0 -1
  228. package/dist/interrupts.js.map +0 -1
  229. package/dist/invocation.js.map +0 -1
  230. package/dist/operator.js.map +0 -1
  231. package/dist/outputs.js.map +0 -1
  232. package/dist/parse-input.js.map +0 -1
  233. package/dist/project-root.js.map +0 -1
  234. package/dist/project.js.map +0 -1
  235. package/dist/route.js.map +0 -1
  236. package/dist/secrets.js +0 -31
  237. package/dist/secrets.js.map +0 -1
  238. package/dist/side-task.js.map +0 -1
  239. package/dist/spawn.js.map +0 -1
  240. package/dist/spill.js.map +0 -1
  241. package/dist/stdin.js.map +0 -1
  242. package/dist/suggest.js.map +0 -1
  243. package/dist/tokenize.js.map +0 -1
  244. package/dist/tools.js.map +0 -1
  245. package/dist/usage.js.map +0 -1
  246. /package/dist/{project-root.d.ts → built-ins/project-root.d.ts} +0 -0
  247. /package/dist/{suggest.d.ts → command-line/suggest.d.ts} +0 -0
  248. /package/dist/{suggest.js → command-line/suggest.js} +0 -0
  249. /package/dist/{tokenize.d.ts → command-line/tokenize.d.ts} +0 -0
  250. /package/dist/{tokenize.js → command-line/tokenize.js} +0 -0
  251. /package/dist/{agent.js → context/agent.js} +0 -0
  252. /package/dist/{files.d.ts → context/files.d.ts} +0 -0
@@ -1,11 +1,11 @@
1
+ import type { CommandRoute } from "./command-line/route.js";
2
+ import { type FinishSideTask } from "./context/side-task.js";
1
3
  import type { Cli } from "./define.js";
2
4
  import { type OutputFormat, type RunResult } from "./output.js";
3
- import type { CommandRoute } from "./route.js";
4
- import type { RunOptions, Writers } from "./run-options.js";
5
- import { type FinishSideTask } from "./side-task.js";
5
+ import type { RunSettings, Writers } from "./run-options.js";
6
6
  export interface Ran {
7
7
  readonly result: RunResult;
8
8
  readonly finishSideTask: FinishSideTask;
9
9
  }
10
10
  /** Leaves the Side task running, so the caller writes the result before it waits for it. */
11
- export declare function runCommand(cli: Cli, routed: CommandRoute, options: RunOptions<unknown>, write: Writers, baseFormat: OutputFormat): Promise<Ran>;
11
+ export declare function runCommand(cli: Cli, routed: CommandRoute, options: RunSettings<unknown>, write: Writers, baseFormat: OutputFormat): Promise<Ran>;
@@ -1,27 +1,36 @@
1
1
  import { installOf } from "./built-ins/install/install.js";
2
2
  import { skillOf } from "./built-ins/skill/skill.js";
3
3
  import { poll, realClock } from "./clock.js";
4
- import { fileErrorOf } from "./errno.js";
4
+ import { checkedCodes } from "./command-errors.js";
5
+ import { changedArgv, commandLineOf } from "./command-line/invocation.js";
6
+ import { knownFlags, parseCommand, stdinArgOf, } from "./command-line/parse-input.js";
7
+ import { commandLabel } from "./command-spec.js";
8
+ import { fileErrorOf } from "./context/errno.js";
9
+ import { classifiedFiles, realFiles } from "./context/files.js";
10
+ import { RunControl } from "./context/interrupts.js";
11
+ import { checkOperator } from "./context/operator.js";
12
+ import { outputsGuard } from "./context/outputs.js";
13
+ import { projectOf } from "./context/project.js";
14
+ import { envFileOf, secretOf } from "./context/secrets.js";
15
+ import { noSideTask, startSideTask } from "./context/side-task.js";
16
+ import { contextSpawn, contextSpawnDetached, realSpawn, realSpawnDetached, } from "./context/spawn.js";
17
+ import { spillTo } from "./context/spill.js";
18
+ import { isTerminal, readingLine, readStdin, stdinStalled } from "./context/stdin.js";
19
+ import { cliErrorOf } from "./error-table.js";
5
20
  import { isDebug, traceOf } from "./errors.js";
6
- import { deliveredOutcome, execute } from "./execute.js";
7
- import { classifiedFiles, realFiles } from "./files.js";
8
- import { RunControl } from "./interrupts.js";
9
- import { commandLineOf } from "./invocation.js";
21
+ import { dataOutcome, execute } from "./execute.js";
10
22
  import { manifestAt } from "./manifest.js";
11
- import { checkOperator } from "./operator.js";
12
23
  import { commandResult, errorResult, noticeLine, progressLine, STOPPED_RESULT, startedOutput, } from "./output.js";
13
- import { outputsGuard } from "./outputs.js";
14
24
  import { packageRootOf } from "./package-root.js";
15
- import { knownFlags, parseCommand, stdinArgOf } from "./parse-input.js";
16
- import { projectOf } from "./project.js";
17
- import { envFileOf, secretOf } from "./secrets.js";
18
- import { noSideTask, startSideTask } from "./side-task.js";
19
- import { contextSpawn, contextSpawnDetached, realSpawn, realSpawnDetached, } from "./spawn.js";
20
- import { spillTo } from "./spill.js";
21
- import { isTerminal, readingLine, readStdin, stdinStalled } from "./stdin.js";
25
+ import { buildStamp } from "./version.js";
22
26
  function stdinNeverEndedHint(callerLine) {
23
27
  return `stdin never ended: pipe the text into \`${callerLine}\`, or redirect a file into it`;
24
28
  }
29
+ function runDeadlineAdvice(resumed, pipedLine) {
30
+ return resumed === undefined
31
+ ? { hint: stdinNeverEndedHint(pipedLine) }
32
+ : { hint: "run the Next step to continue the work", next: [resumed] };
33
+ }
25
34
  function selfOf(name, bin) {
26
35
  return bin === undefined ? [name] : [process.execPath, ...process.execArgv, bin];
27
36
  }
@@ -40,7 +49,7 @@ function portsOf(cli, replacement) {
40
49
  return cli.ports ?? (() => ({}));
41
50
  }
42
51
  function portsBaseOf(scope, signal) {
43
- const { cli, options, packageRoot, progress, fileError, callerLine, clock, files } = scope;
52
+ const { cli, options, packageRoot, progress, fileError, rerun, clock, files } = scope;
44
53
  const { cwd, env } = options;
45
54
  const envFile = envFileOf(cli.name, env);
46
55
  return {
@@ -52,21 +61,32 @@ function portsBaseOf(scope, signal) {
52
61
  envFile,
53
62
  fileError,
54
63
  version: cli.version,
55
- build: cli.build,
64
+ build: buildStamp(),
56
65
  self: selfOf(cli.name, options.bin),
57
66
  signal,
58
67
  clock,
59
68
  files,
60
- spawn: contextSpawn(options.spawn ?? realSpawn, { cwd, env, signal }, { fileError, callerLine }),
61
- spawnDetached: contextSpawnDetached(spawnDetachedOf(options), { cwd, env, signal }, { fileError, callerLine }),
69
+ spawn: contextSpawn(options.spawn ?? realSpawn, { cwd, env, signal }, { fileError, rerun }),
70
+ spawnDetached: contextSpawnDetached(spawnDetachedOf(options), { cwd, env, signal }, { fileError, rerun }),
62
71
  };
63
72
  }
64
73
  function contextOf(portsBase, control, parts) {
65
- const { ports, project, force, commandLine, deliver, notice } = parts;
74
+ const { ports, project, force, secrets = [], rerun, deliver, notice } = parts;
75
+ const declared = new Set(secrets.map(({ name }) => name));
66
76
  return {
67
77
  ...portsBase,
68
- deadline: (ms) => control.deadline(ms),
69
- timeout: (ms) => control.timeout(ms),
78
+ secret: (name) => {
79
+ // Only a cast reaches an undeclared name, and only a `.env` edited mid-run a missing value.
80
+ if (!declared.has(name)) {
81
+ throw new Error(`ctx.secret("${name}") names a Secret the Command does not declare`);
82
+ }
83
+ const secret = portsBase.secret(name);
84
+ if (secret === undefined)
85
+ throw new Error(`ctx.secret("${name}") found no value`);
86
+ return secret;
87
+ },
88
+ fail: cliErrorOf,
89
+ deadline: (ms, options) => control.deadline(ms, options),
70
90
  runToEnd: (name, work) => control.runToEnd(name, work),
71
91
  // Built on first read, so a factory that throws fails only what needs the ports, never `doctor`.
72
92
  get ports() {
@@ -74,7 +94,7 @@ function contextOf(portsBase, control, parts) {
74
94
  },
75
95
  project,
76
96
  force,
77
- commandLine,
97
+ rerun,
78
98
  poll: (check, { intervalMs, signal: stop }) => poll(portsBase.clock, check, intervalMs, stop === undefined ? control.signal : AbortSignal.any([control.signal, stop])),
79
99
  deliver,
80
100
  notice,
@@ -96,9 +116,13 @@ export async function runCommand(cli, routed, options, write, baseFormat) {
96
116
  flags: knownFlags(routed.spec),
97
117
  stdinArg: stdinArgOf(routed),
98
118
  };
99
- const typedLine = (change) => commandLineOf(invocation, change);
100
- const rerunLine = typedLine();
101
- const fileError = fileErrorOf({ callerLine: rerunLine, env, platform });
119
+ const rerunOf = (change) => ({
120
+ kind: "rerun",
121
+ words: changedArgv(invocation, change),
122
+ stdinArg: invocation.stdinArg,
123
+ });
124
+ const rerun = rerunOf();
125
+ const fileError = fileErrorOf({ rerun, env, platform });
102
126
  const format = {
103
127
  ...baseFormat,
104
128
  bugs: () => manifestAt(packageRoot).bugs,
@@ -108,11 +132,11 @@ export async function runCommand(cli, routed, options, write, baseFormat) {
108
132
  // A stdin that never ended was fed by the caller's own pipe, so its hint names no file to redirect.
109
133
  const pipedLine = commandLineOf({ ...invocation, stdinArg: undefined });
110
134
  // Set once the input is parsed; a deadline before that can only have cut off the stdin read.
111
- let resumeHint;
135
+ let resumed;
112
136
  // Created before the input is parsed, so Ctrl-C and the run deadline also bound the stdin read.
113
137
  const control = new RunControl({
114
138
  commandLine,
115
- callerLine: rerunLine,
139
+ rerun,
116
140
  outer: options.signal,
117
141
  clock,
118
142
  progress,
@@ -120,7 +144,7 @@ export async function runCommand(cli, routed, options, write, baseFormat) {
120
144
  ? undefined
121
145
  : {
122
146
  ms: command.deadline.ms,
123
- hint: () => resumeHint ?? stdinNeverEndedHint(pipedLine),
147
+ advice: () => runDeadlineAdvice(resumed, pipedLine),
124
148
  },
125
149
  });
126
150
  const failed = (error, finishSideTask) => {
@@ -129,7 +153,7 @@ export async function runCommand(cli, routed, options, write, baseFormat) {
129
153
  };
130
154
  let parsed;
131
155
  try {
132
- checkOperator(routed.spec, env, typedLine());
156
+ checkOperator(routed.spec, env, rerun);
133
157
  parsed = await parseCommand(routed, invocation, (field) => {
134
158
  if (isTerminal(stdin))
135
159
  progress(readingLine(field.name, platform));
@@ -143,7 +167,7 @@ export async function runCommand(cli, routed, options, write, baseFormat) {
143
167
  return failed(error, noSideTask);
144
168
  }
145
169
  const { input, flags } = parsed;
146
- resumeHint = command.deadline?.resume(input, typedLine);
170
+ resumed = command.deadline?.resume(input, rerunOf);
147
171
  const outputs = outputsGuard(classifiedFiles(files, { cwd, fileError }), cwd);
148
172
  const scope = {
149
173
  cli,
@@ -151,7 +175,7 @@ export async function runCommand(cli, routed, options, write, baseFormat) {
151
175
  packageRoot,
152
176
  progress,
153
177
  fileError,
154
- callerLine: rerunLine,
178
+ rerun,
155
179
  clock,
156
180
  files: outputs.files,
157
181
  };
@@ -180,25 +204,27 @@ export async function runCommand(cli, routed, options, write, baseFormat) {
180
204
  project =
181
205
  builtIn || cli.project === undefined
182
206
  ? undefined
183
- : projectOf(cli.project, cwd, { fileError, callerLine: rerunLine });
207
+ : projectOf(cli.project, cwd, { fileError, rerun });
184
208
  }
185
209
  catch (error) {
186
210
  return failed(error, finishSideTask);
187
211
  }
212
+ // Parsed only when printed, so a Command that catches around `deliver` cannot hide a rejection.
188
213
  let delivered;
189
214
  const ctx = contextOf(portsBase, control, {
190
215
  ports: once(() => ports(portsBase)),
191
216
  project,
192
217
  force: flags.force,
193
- commandLine: typedLine,
218
+ secrets: command.secrets,
219
+ rerun: rerunOf,
194
220
  notice: (text) => write.stderr(noticeLine(text, routed.json)),
195
221
  deliver: (data) => {
196
- delivered = deliveredOutcome(command, data);
222
+ delivered = () => dataOutcome(command, data, commandLine);
197
223
  },
198
224
  });
199
225
  const spill = spillTo({
200
226
  cliName: format.cliName,
201
- commandName: command.name,
227
+ label: commandLabel(routed.spec.path, format.cliName),
202
228
  env,
203
229
  clock,
204
230
  files: outputs.files,
@@ -216,7 +242,6 @@ export async function runCommand(cli, routed, options, write, baseFormat) {
216
242
  confirm: flags.confirm,
217
243
  yes: flags.yes,
218
244
  page: flags.page,
219
- invocation,
220
245
  commandLine,
221
246
  started: async (outcome) => {
222
247
  write.stdout(await startedOutput(outcome, format, spill));
@@ -235,7 +260,11 @@ export async function runCommand(cli, routed, options, write, baseFormat) {
235
260
  if (served && control.signal.aborted) {
236
261
  return { result: STOPPED_RESULT, finishSideTask };
237
262
  }
238
- settled = { ok: false, error: control.errorAfter(error), delivered };
263
+ settled = {
264
+ ok: false,
265
+ error: checkedCodes(control.errorAfter(error), routed.spec, cli),
266
+ delivered,
267
+ };
239
268
  }
240
269
  return {
241
270
  result: await commandResult(settled, { ...format, fields: flags.fields }, spill),
@@ -1 +1 @@
1
- {"version":3,"file":"run-command.js","sourceRoot":"","sources":["../src/run-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-command.js","sourceRoot":"","sources":["../src/run-command.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  import type { Clock } from "./clock.js";
2
+ import type { Files } from "./context/files.js";
3
+ import type { Spawn, SpawnDetached } from "./context/spawn.js";
4
+ import type { StdinSource } from "./context/stdin.js";
2
5
  import type { Env } from "./context.js";
3
6
  import type { NoPorts } from "./define.js";
4
- import type { Files } from "./files.js";
5
7
  import type { RunResult } from "./output.js";
6
- import type { Spawn, SpawnDetached } from "./spawn.js";
7
- import type { StdinSource } from "./stdin.js";
8
8
  export interface RunOptions<Ports = NoPorts> {
9
- readonly env: Env;
9
+ /** Absent, the run sees an empty env, so a test never reads the shell's. */
10
+ readonly env?: Env;
10
11
  readonly cwd: string;
11
12
  readonly stdoutIsTTY?: boolean;
12
13
  /**
@@ -45,6 +46,12 @@ export interface RunOptions<Ports = NoPorts> {
45
46
  */
46
47
  readonly platform?: NodeJS.Platform;
47
48
  }
49
+ /** `RunOptions` with its defaults filled in, as the Runtime reads them. */
50
+ export interface RunSettings<Ports = NoPorts> extends RunOptions<Ports> {
51
+ readonly env: Env;
52
+ /** Whether a failure's Next steps must route to a Command, as a test run checks. */
53
+ readonly checkNextSteps?: boolean;
54
+ }
48
55
  /** Where output that cannot wait for the run's end is written as it happens, and the run's output once it ends. */
49
56
  export interface Writers {
50
57
  stdout(text: string): void;
@@ -1,9 +1,24 @@
1
1
  import { SIGNAL_EXIT_CODES } from "./exit-classes.js";
2
2
  import { runWithProgress } from "./run-cli.js";
3
- function written(stream, text) {
4
- return new Promise((resolve) => stream.write(text, () => resolve()));
3
+ const READER_GONE = new Set(["EPIPE", "EOF"]);
4
+ // A reader that closes the pipe early, as `| head` does, breaks it (EPIPE, EOF on Windows); the run
5
+ // goes on and exits as it would have, with the rest of that stream's output dropped.
6
+ function writerTo(stream) {
7
+ stream.on("error", (error) => {
8
+ if (error.code === undefined || !READER_GONE.has(error.code))
9
+ throw error;
10
+ });
11
+ return (text) => new Promise((resolve) => {
12
+ if (stream.destroyed) {
13
+ resolve();
14
+ return;
15
+ }
16
+ stream.write(text, () => resolve());
17
+ });
5
18
  }
6
19
  export async function runProcess(cli) {
20
+ const stdout = writerTo(process.stdout);
21
+ const stderr = writerTo(process.stderr);
7
22
  const stop = new AbortController();
8
23
  // A second signal quits at once, accepting lost output, so a stuck Command never traps a person.
9
24
  const onSignal = (signal) => {
@@ -24,11 +39,11 @@ export async function runProcess(cli) {
24
39
  node: process.execPath,
25
40
  stdin: process.stdin,
26
41
  }, {
27
- stdout: (text) => process.stdout.write(text),
28
- stderr: (text) => process.stderr.write(text),
29
- result: async ({ stdout, stderr }) => {
30
- await written(process.stdout, stdout);
31
- await written(process.stderr, stderr);
42
+ stdout: (text) => void stdout(text),
43
+ stderr: (text) => void stderr(text),
44
+ result: async (result) => {
45
+ await stdout(result.stdout);
46
+ await stderr(result.stderr);
32
47
  },
33
48
  }, "stopping… (Ctrl-C again to quit now)");
34
49
  process.exitCode = result.exitCode;
@@ -1 +1 @@
1
- {"version":3,"file":"run-process.js","sourceRoot":"","sources":["../src/run-process.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,SAAS,OAAO,CAAC,MAA0B,EAAE,IAAY;IACvD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAQ;IACvC,MAAM,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;IACnC,iGAAiG;IACjG,MAAM,QAAQ,GAAG,CAAC,MAAkB,EAAQ,EAAE;QAC5C,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC,GAAG,EACH,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EACrB;YACE,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI;YAC1C,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACpB,IAAI,EAAE,OAAO,CAAC,QAAQ;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,EACD;YACE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YAC5C,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YAC5C,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;gBACnC,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACtC,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACxC,CAAC;SACF,EACD,sCAAsC,CACvC,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IACrC,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IACD,mGAAmG;IACnG,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"run-process.js","sourceRoot":"","sources":["../src/run-process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /** Every code the Runtime fails a run with, keyed by itself, to catch or assert one. */
2
+ export declare const runtimeCodes: {
3
+ readonly INVALID_INPUT: "INVALID_INPUT";
4
+ readonly UNKNOWN_OPTION: "UNKNOWN_OPTION";
5
+ readonly UNKNOWN_COMMAND: "UNKNOWN_COMMAND";
6
+ readonly UNKNOWN_FIELD: "UNKNOWN_FIELD";
7
+ readonly CONFIRMATION_REQUIRED: "CONFIRMATION_REQUIRED";
8
+ readonly CONFIRMATION_MISMATCH: "CONFIRMATION_MISMATCH";
9
+ readonly NOT_CONFIRMED: "NOT_CONFIRMED";
10
+ readonly NEEDS_OPERATOR: "NEEDS_OPERATOR";
11
+ readonly OUTPUT_EXISTS: "OUTPUT_EXISTS";
12
+ readonly STDIN_STALLED: "STDIN_STALLED";
13
+ readonly INTERRUPTED: "INTERRUPTED";
14
+ readonly DEADLINE_EXCEEDED: "DEADLINE_EXCEEDED";
15
+ readonly INTERNAL: "INTERNAL";
16
+ readonly PERMISSION_DENIED: "PERMISSION_DENIED";
17
+ readonly DISK_FULL: "DISK_FULL";
18
+ readonly NOT_FOUND: "NOT_FOUND";
19
+ readonly ALREADY_EXISTS: "ALREADY_EXISTS";
20
+ readonly NOT_A_FILE: "NOT_A_FILE";
21
+ readonly TOOL_FAILED: "TOOL_FAILED";
22
+ readonly TOOL_MISSING: "TOOL_MISSING";
23
+ readonly SECRET_MISSING: "SECRET_MISSING";
24
+ readonly PROJECT_INVALID: "PROJECT_INVALID";
25
+ readonly DOCTOR_PROBLEMS: "DOCTOR_PROBLEMS";
26
+ readonly NOT_GLOBAL_INSTALL: "NOT_GLOBAL_INSTALL";
27
+ readonly REGISTRY_UNREACHABLE: "REGISTRY_UNREACHABLE";
28
+ readonly REGISTRY_AUTH: "REGISTRY_AUTH";
29
+ readonly INSTALL_FAILED: "INSTALL_FAILED";
30
+ readonly NPM_FAILED: "NPM_FAILED";
31
+ readonly NO_LATEST: "NO_LATEST";
32
+ };
33
+ export type RuntimeCode = (typeof runtimeCodes)[keyof typeof runtimeCodes];
@@ -0,0 +1,50 @@
1
+ import { DOCTOR_PROBLEMS } from "./built-ins/doctor.js";
2
+ import { NOT_GLOBAL_INSTALL } from "./built-ins/install/global-npm.js";
3
+ import { INSTALL_FAILED, NO_LATEST, NPM_FAILED, REGISTRY_AUTH, REGISTRY_UNREACHABLE, } from "./built-ins/npm.js";
4
+ import { INVALID_INPUT, UNKNOWN_COMMAND, UNKNOWN_OPTION } from "./command-line/usage.js";
5
+ import { CONFIRMATION_MISMATCH, CONFIRMATION_REQUIRED } from "./context/confirm.js";
6
+ import { NOT_CONFIRMED } from "./context/cost.js";
7
+ import { ALREADY_EXISTS, DISK_FULL, NOT_A_FILE, NOT_FOUND, PERMISSION_DENIED, } from "./context/errno.js";
8
+ import { DEADLINE_EXCEEDED, INTERRUPTED } from "./context/interrupts.js";
9
+ import { NEEDS_OPERATOR } from "./context/operator.js";
10
+ import { OUTPUT_EXISTS } from "./context/outputs.js";
11
+ import { PROJECT_INVALID } from "./context/project.js";
12
+ import { SECRET_MISSING } from "./context/secrets.js";
13
+ import { TOOL_FAILED } from "./context/spawn.js";
14
+ import { STDIN_STALLED } from "./context/stdin.js";
15
+ import { TOOL_MISSING } from "./context/tools.js";
16
+ import { INTERNAL } from "./errors.js";
17
+ import { UNKNOWN_FIELD } from "./list.js";
18
+ /** Every code the Runtime fails a run with, keyed by itself, to catch or assert one. */
19
+ export const runtimeCodes = {
20
+ INVALID_INPUT,
21
+ UNKNOWN_OPTION,
22
+ UNKNOWN_COMMAND,
23
+ UNKNOWN_FIELD,
24
+ CONFIRMATION_REQUIRED,
25
+ CONFIRMATION_MISMATCH,
26
+ NOT_CONFIRMED,
27
+ NEEDS_OPERATOR,
28
+ OUTPUT_EXISTS,
29
+ STDIN_STALLED,
30
+ INTERRUPTED,
31
+ DEADLINE_EXCEEDED,
32
+ INTERNAL,
33
+ PERMISSION_DENIED,
34
+ DISK_FULL,
35
+ NOT_FOUND,
36
+ ALREADY_EXISTS,
37
+ NOT_A_FILE,
38
+ TOOL_FAILED,
39
+ TOOL_MISSING,
40
+ SECRET_MISSING,
41
+ PROJECT_INVALID,
42
+ DOCTOR_PROBLEMS,
43
+ NOT_GLOBAL_INSTALL,
44
+ REGISTRY_UNREACHABLE,
45
+ REGISTRY_AUTH,
46
+ INSTALL_FAILED,
47
+ NPM_FAILED,
48
+ NO_LATEST,
49
+ };
50
+ //# sourceMappingURL=runtime-codes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-codes.js","sourceRoot":"","sources":["../src/runtime-codes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EACL,cAAc,EACd,SAAS,EACT,UAAU,EACV,aAAa,EACb,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EACL,cAAc,EACd,SAAS,EACT,UAAU,EACV,SAAS,EACT,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,wFAAwF;AACxF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,aAAa;IACb,cAAc;IACd,eAAe;IACf,aAAa;IACb,qBAAqB;IACrB,qBAAqB;IACrB,aAAa;IACb,cAAc;IACd,aAAa;IACb,aAAa;IACb,WAAW;IACX,iBAAiB;IACjB,QAAQ;IACR,iBAAiB;IACjB,SAAS;IACT,SAAS;IACT,cAAc;IACd,UAAU;IACV,WAAW;IACX,YAAY;IACZ,cAAc;IACd,eAAe;IACf,eAAe;IACf,kBAAkB;IAClB,oBAAoB;IACpB,aAAa;IACb,cAAc;IACd,UAAU;IACV,SAAS;CACD,CAAC"}
package/dist/style.js CHANGED
@@ -1,4 +1,4 @@
1
- import { isAgent } from "./agent.js";
1
+ import { isAgent } from "./context/agent.js";
2
2
  function colourEnabled(env, stdoutIsTTY) {
3
3
  if (env.NO_COLOR !== undefined && env.NO_COLOR !== "")
4
4
  return false;
package/dist/style.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"style.js","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAerC,SAAS,aAAa,CAAC,GAAQ,EAAE,WAAoB;IACnD,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IACpE,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,GAAG,CAAC,WAAW,KAAK,EAAE,IAAI,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC;IAClG,OAAO,MAAM,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,GAAG,CAAC,IAAY,EAAE,KAAa;IACtC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,IAAI,IAAI,IAAI,UAAU,KAAK,GAAG,CAAC;AAC5D,CAAC;AAED,MAAM,QAAQ,GAAU;IACtB,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;IAChB,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;IACf,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;IAChB,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;IAClB,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;IACnB,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,KAAK,GAAU,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;AAEpC,MAAM,KAAK,GAAU;IACnB,IAAI,EAAE,KAAK;IACX,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,KAAK;CACZ,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,GAAQ,EAAE,WAAoB;IACrD,OAAO,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"style.js","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAe7C,SAAS,aAAa,CAAC,GAAQ,EAAE,WAAoB;IACnD,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IACpE,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,GAAG,CAAC,WAAW,KAAK,EAAE,IAAI,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC;IAClG,OAAO,MAAM,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,GAAG,CAAC,IAAY,EAAE,KAAa;IACtC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,IAAI,IAAI,IAAI,UAAU,KAAK,GAAG,CAAC;AAC5D,CAAC;AAED,MAAM,QAAQ,GAAU;IACtB,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;IAChB,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;IACf,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;IAChB,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;IAClB,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;IACnB,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;CAClB,CAAC;AAEF,MAAM,KAAK,GAAU,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;AAEpC,MAAM,KAAK,GAAU;IACnB,IAAI,EAAE,KAAK;IACX,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,IAAI,EAAE,KAAK;CACZ,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,GAAQ,EAAE,WAAoB;IACrD,OAAO,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { Clock } from "./clock.js";
2
+ /** What a test tells `fakeClock` about work it cannot see. */
3
+ export interface FakeClockOptions {
4
+ /**
5
+ * True while work Node does not track is still running, such as sharp on its own threads; time
6
+ * waits until it is false. Without it, the clock already waits for file reads and writes.
7
+ */
8
+ busy?: () => boolean;
9
+ /**
10
+ * Runs as each sleep ends, before the sleeper resumes: a test changes the world here, such as
11
+ * adding the record a `ctx.poll` waits for, so the next check finds it.
12
+ */
13
+ onWake?: () => void;
14
+ }
15
+ /**
16
+ * A clock for tests, passed as `runCli`'s `clock` option. Its time starts at 0 and moves only when
17
+ * every task is waiting on it: the earliest sleep then wakes at once, so a Command's deadlines,
18
+ * `ctx.poll` intervals and waits finish instantly and in order, and `now()` reads the time they
19
+ * would have taken.
20
+ *
21
+ * @example
22
+ * const clock = fakeClock();
23
+ * const result = await runCli(cli, ["wait", "job-1"], { cwd, clock });
24
+ * expect(clock.now()).toBe(30_000);
25
+ */
26
+ export declare function fakeClock(options?: Readonly<FakeClockOptions>): Clock;
27
+ export { checkExamples } from "./check-examples.js";
@@ -0,0 +1,66 @@
1
+ // Node's names for a file read or write in flight; time waits for them, as it would really.
2
+ const FILE_REQUESTS = ["FSReqPromise", "FSReqCallback", "CloseReq"];
3
+ function filesBusy() {
4
+ return process.getActiveResourcesInfo().some((resource) => FILE_REQUESTS.includes(resource));
5
+ }
6
+ /**
7
+ * A clock for tests, passed as `runCli`'s `clock` option. Its time starts at 0 and moves only when
8
+ * every task is waiting on it: the earliest sleep then wakes at once, so a Command's deadlines,
9
+ * `ctx.poll` intervals and waits finish instantly and in order, and `now()` reads the time they
10
+ * would have taken.
11
+ *
12
+ * @example
13
+ * const clock = fakeClock();
14
+ * const result = await runCli(cli, ["wait", "job-1"], { cwd, clock });
15
+ * expect(clock.now()).toBe(30_000);
16
+ */
17
+ export function fakeClock(options = {}) {
18
+ const { busy = () => false, onWake = () => { } } = options;
19
+ let now = 0;
20
+ let sleepers = [];
21
+ let scheduled = false;
22
+ const wakeEarliest = () => {
23
+ if (filesBusy() || busy()) {
24
+ setImmediate(wakeEarliest);
25
+ return;
26
+ }
27
+ scheduled = false;
28
+ const [earliest] = [...sleepers].sort((a, b) => a.at - b.at);
29
+ if (earliest === undefined)
30
+ return;
31
+ sleepers = sleepers.filter((sleeper) => sleeper !== earliest);
32
+ now = Math.max(now, earliest.at);
33
+ earliest.wake();
34
+ schedule();
35
+ };
36
+ const schedule = () => {
37
+ if (scheduled || sleepers.length === 0)
38
+ return;
39
+ scheduled = true;
40
+ setImmediate(wakeEarliest);
41
+ };
42
+ return {
43
+ now: () => now,
44
+ sleep: (ms, signal) => new Promise((resolve, reject) => {
45
+ if (signal?.aborted === true) {
46
+ reject(signal.reason);
47
+ return;
48
+ }
49
+ const sleeper = {
50
+ at: now + ms,
51
+ wake: () => {
52
+ onWake();
53
+ resolve();
54
+ },
55
+ };
56
+ sleepers = [...sleepers, sleeper];
57
+ signal?.addEventListener("abort", () => {
58
+ sleepers = sleepers.filter((other) => other !== sleeper);
59
+ reject(signal.reason);
60
+ }, { once: true });
61
+ schedule();
62
+ }),
63
+ };
64
+ }
65
+ export { checkExamples } from "./check-examples.js";
66
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAqBA,4FAA4F;AAC5F,MAAM,aAAa,GAAG,CAAC,cAAc,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;AAEpE,SAAS,SAAS;IAChB,OAAO,OAAO,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CAAC,OAAO,GAA+B,EAAE;IAChE,MAAM,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,GAAE,CAAC,EAAE,GAAG,OAAO,CAAC;IAC1D,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,QAAQ,GAAc,EAAE,CAAC;IAC7B,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,MAAM,YAAY,GAAG,GAAS,EAAE;QAC9B,IAAI,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;YAC1B,YAAY,CAAC,YAAY,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,SAAS,GAAG,KAAK,CAAC;QAClB,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7D,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO;QACnC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC;QAC9D,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QACjC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChB,QAAQ,EAAE,CAAC;IACb,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,IAAI,SAAS,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC/C,SAAS,GAAG,IAAI,CAAC;QACjB,YAAY,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO;QACL,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG;QACd,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CACpB,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9B,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC7B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACtB,OAAO;YACT,CAAC;YACD,MAAM,OAAO,GAAY;gBACvB,EAAE,EAAE,GAAG,GAAG,EAAE;gBACZ,IAAI,EAAE,GAAG,EAAE;oBACT,MAAM,EAAE,CAAC;oBACT,OAAO,EAAE,CAAC;gBACZ,CAAC;aACF,CAAC;YACF,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClC,MAAM,EAAE,gBAAgB,CACtB,OAAO,EACP,GAAG,EAAE;gBACH,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;gBACzD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;YACF,QAAQ,EAAE,CAAC;QACb,CAAC,CAAC;KACL,CAAC;AACJ,CAAC;AACD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/version.d.ts CHANGED
@@ -1,3 +1,6 @@
1
+ import type { BuildStamp } from "./context.js";
1
2
  import type { Cli } from "./define.js";
3
+ /** The bundler's stamp, absent when the CLI runs unbundled. Read per call, so a test can define it. */
4
+ export declare function buildStamp(): BuildStamp | undefined;
2
5
  /** The first line of `--version`: the version, and the commit and time of a stamped build. */
3
- export declare function versionLine({ version, build }: Cli): string;
6
+ export declare function versionLine({ version }: Cli): string;
package/dist/version.js CHANGED
@@ -1,5 +1,10 @@
1
+ /** The bundler's stamp, absent when the CLI runs unbundled. Read per call, so a test can define it. */
2
+ export function buildStamp() {
3
+ return typeof __AGENT_CLI_BUILD__ === "undefined" ? undefined : __AGENT_CLI_BUILD__;
4
+ }
1
5
  /** The first line of `--version`: the version, and the commit and time of a stamped build. */
2
- export function versionLine({ version, build }) {
6
+ export function versionLine({ version }) {
7
+ const build = buildStamp();
3
8
  return build === undefined
4
9
  ? version
5
10
  : `${version} (${build.sha}${build.dirty ? "+dirty" : ""}) built ${build.builtAt}`;
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAEA,8FAA8F;AAC9F,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAO;IACjD,OAAO,KAAK,KAAK,SAAS;QACxB,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,GAAG,OAAO,KAAK,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,KAAK,CAAC,OAAO,EAAE,CAAC;AACvF,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAMA,uGAAuG;AACvG,MAAM,UAAU,UAAU;IACxB,OAAO,OAAO,mBAAmB,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC;AACtF,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAO;IAC1C,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;IAC3B,OAAO,KAAK,KAAK,SAAS;QACxB,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,GAAG,OAAO,KAAK,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,WAAW,KAAK,CAAC,OAAO,EAAE,CAAC;AACvF,CAAC"}