@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.
- package/CHANGELOG.md +34 -0
- package/dist/agent-cli.js +9 -2
- package/dist/agent-cli.js.map +1 -1
- package/dist/built-ins/agents-md.d.ts +3 -2
- package/dist/built-ins/agents-md.js +8 -9
- package/dist/built-ins/agents-md.js.map +1 -1
- package/dist/built-ins/commands.d.ts +2 -1
- package/dist/built-ins/commands.js.map +1 -1
- package/dist/built-ins/doctor-rows.js +1 -1
- package/dist/built-ins/doctor-rows.js.map +1 -1
- package/dist/built-ins/doctor.d.ts +0 -1
- package/dist/built-ins/doctor.js +21 -8
- package/dist/built-ins/doctor.js.map +1 -1
- package/dist/built-ins/install/dependency.js +23 -23
- package/dist/built-ins/install/dependency.js.map +1 -1
- package/dist/built-ins/install/global-npm.d.ts +6 -3
- package/dist/built-ins/install/global-npm.js +19 -14
- package/dist/built-ins/install/global-npm.js.map +1 -1
- package/dist/built-ins/install/global.js +6 -7
- package/dist/built-ins/install/global.js.map +1 -1
- package/dist/built-ins/install/install.d.ts +0 -3
- package/dist/built-ins/install/install.js +0 -1
- package/dist/built-ins/install/install.js.map +1 -1
- package/dist/built-ins/install/release-check.js +10 -17
- package/dist/built-ins/install/release-check.js.map +1 -1
- package/dist/built-ins/npm.d.ts +8 -7
- package/dist/built-ins/npm.js +20 -12
- package/dist/built-ins/npm.js.map +1 -1
- package/dist/built-ins/project-root.d.ts +4 -4
- package/dist/built-ins/project-root.js +12 -22
- package/dist/built-ins/project-root.js.map +1 -1
- package/dist/built-ins/read.d.ts +5 -0
- package/dist/built-ins/read.js +29 -0
- package/dist/built-ins/read.js.map +1 -0
- package/dist/built-ins/setup.d.ts +1 -2
- package/dist/built-ins/setup.js +32 -26
- package/dist/built-ins/setup.js.map +1 -1
- package/dist/built-ins/skill/home.d.ts +2 -1
- package/dist/built-ins/skill/home.js +19 -17
- package/dist/built-ins/skill/home.js.map +1 -1
- package/dist/built-ins/skill/install-command.d.ts +2 -1
- package/dist/built-ins/skill/install-command.js +13 -11
- package/dist/built-ins/skill/install-command.js.map +1 -1
- package/dist/built-ins/skill/project.js +6 -7
- package/dist/built-ins/skill/project.js.map +1 -1
- package/dist/built-ins/skill/sync.d.ts +4 -3
- package/dist/built-ins/skill/sync.js +24 -17
- package/dist/built-ins/skill/sync.js.map +1 -1
- package/dist/built-ins/update.d.ts +1 -1
- package/dist/built-ins/update.js +9 -7
- package/dist/built-ins/update.js.map +1 -1
- package/dist/built-ins/upgrades.d.ts +2 -1
- package/dist/built-ins/upgrades.js +5 -12
- package/dist/built-ins/upgrades.js.map +1 -1
- package/dist/check-examples.js +5 -23
- package/dist/check-examples.js.map +1 -1
- package/dist/check-next-steps.d.ts +3 -9
- package/dist/check-next-steps.js +20 -32
- package/dist/check-next-steps.js.map +1 -1
- package/dist/command-line/line-problem.d.ts +14 -0
- package/dist/command-line/line-problem.js +41 -0
- package/dist/command-line/line-problem.js.map +1 -0
- package/dist/context/files.d.ts +3 -0
- package/dist/context/files.js +17 -2
- package/dist/context/files.js.map +1 -1
- package/dist/context/outputs.d.ts +13 -24
- package/dist/context/outputs.js +37 -37
- package/dist/context/outputs.js.map +1 -1
- package/dist/context/secrets.d.ts +5 -1
- package/dist/context/secrets.js +18 -5
- package/dist/context/secrets.js.map +1 -1
- package/dist/context/spawn.js +3 -1
- package/dist/context/spawn.js.map +1 -1
- package/dist/context/tools.d.ts +9 -4
- package/dist/context/tools.js +12 -12
- package/dist/context/tools.js.map +1 -1
- package/dist/context.d.ts +12 -8
- package/dist/define-command.d.ts +29 -13
- package/dist/define-command.js +5 -3
- package/dist/define-command.js.map +1 -1
- package/dist/define.d.ts +19 -6
- package/dist/define.js.map +1 -1
- package/dist/errors.d.ts +3 -6
- package/dist/errors.js +17 -28
- package/dist/errors.js.map +1 -1
- package/dist/execute.d.ts +7 -16
- package/dist/execute.js +11 -14
- package/dist/execute.js.map +1 -1
- package/dist/exit-classes.d.ts +7 -10
- package/dist/exit-classes.js +20 -81
- package/dist/exit-classes.js.map +1 -1
- package/dist/failure.d.ts +36 -0
- package/dist/failure.js +65 -0
- package/dist/failure.js.map +1 -0
- package/dist/help-json.js +5 -3
- package/dist/help-json.js.map +1 -1
- package/dist/help.js +9 -3
- package/dist/help.js.map +1 -1
- package/dist/output.d.ts +3 -10
- package/dist/output.js +14 -24
- package/dist/output.js.map +1 -1
- package/dist/run-cli.js +7 -5
- package/dist/run-cli.js.map +1 -1
- package/dist/run-command.d.ts +6 -1
- package/dist/run-command.js +31 -155
- package/dist/run-command.js.map +1 -1
- package/dist/run-options.d.ts +5 -2
- package/dist/run-scope.d.ts +35 -0
- package/dist/run-scope.js +138 -0
- package/dist/run-scope.js.map +1 -0
- package/dist/runtime-codes.d.ts +140 -1
- package/dist/runtime-codes.js +60 -4
- package/dist/runtime-codes.js.map +1 -1
- package/docs/README.md +2 -2
- package/docs/example/cli.test.ts +9 -2
- package/docs/example/cli.ts +1 -0
- package/docs/example/folder.ts +1 -0
- package/docs/guides/commands.md +2 -2
- package/docs/guides/doctor.md +3 -2
- package/docs/guides/errors.md +1 -1
- package/docs/guides/testing.md +2 -1
- package/package.json +1 -1
- package/dist/command-errors.d.ts +0 -8
- package/dist/command-errors.js +0 -25
- package/dist/command-errors.js.map +0 -1
- package/dist/command-line/route-line.d.ts +0 -15
- package/dist/command-line/route-line.js +0 -18
- package/dist/command-line/route-line.js.map +0 -1
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/execute.d.ts
CHANGED
|
@@ -1,33 +1,24 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import {
|
|
1
|
+
import type { StandardValues } from "./command-line/parse-input.js";
|
|
2
|
+
import type { Outputs } from "./context/outputs.js";
|
|
3
3
|
import type { Context } from "./context.js";
|
|
4
4
|
import type { Command } from "./define.js";
|
|
5
|
-
import type { PageInput } from "./list.js";
|
|
6
5
|
import type { Style } from "./style.js";
|
|
7
6
|
export interface Outcome {
|
|
8
7
|
readonly value: unknown;
|
|
9
8
|
render(style: Style): string;
|
|
10
9
|
}
|
|
11
|
-
export interface
|
|
12
|
-
readonly
|
|
13
|
-
/** The target the caller named with `--confirm`, if any. */
|
|
14
|
-
readonly confirm: string | undefined;
|
|
15
|
-
/** Whether the caller approved the cost with `--yes`. */
|
|
16
|
-
readonly yes: boolean;
|
|
17
|
-
/** The page a List Command's `run` receives with its input. */
|
|
18
|
-
readonly page: PageInput;
|
|
10
|
+
export interface ExecuteRun {
|
|
11
|
+
readonly flags: StandardValues;
|
|
19
12
|
/** The caller's command line and the Command's, for the hint of a confirmation error. */
|
|
20
13
|
readonly commandLine: string;
|
|
21
14
|
/** Prints a serve Command's data the moment `start` returns it. */
|
|
22
15
|
readonly started: (outcome: Outcome) => Promise<void>;
|
|
23
|
-
/** The
|
|
24
|
-
readonly
|
|
25
|
-
/** Guards the declared outputs of `ctx.files` and the ports' files once every check passes. */
|
|
26
|
-
readonly guardOutputs: OutputsGuard["guard"];
|
|
16
|
+
/** The run's Outputs, whose files are `ctx.files`. */
|
|
17
|
+
readonly outputs: Outputs;
|
|
27
18
|
}
|
|
28
19
|
/**
|
|
29
20
|
* The data a Command returned or delivered as it prints it: parsed by its `output` schema when it
|
|
30
21
|
* declares one, so data the schema rejects fails the run as a bug.
|
|
31
22
|
*/
|
|
32
23
|
export declare function dataOutcome(command: Command, data: unknown, commandLine: string): Outcome;
|
|
33
|
-
export declare function execute(command: Command, input: Record<string, unknown>, ctx: Context, {
|
|
24
|
+
export declare function execute(command: Command, input: Record<string, unknown>, ctx: Context, { flags, commandLine, started, outputs: runOutputs }: ExecuteRun): Promise<Outcome>;
|
package/dist/execute.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { encode } from "@toon-format/toon";
|
|
2
2
|
import * as z from "zod";
|
|
3
3
|
import { untilAborted } from "./abort.js";
|
|
4
|
-
import { FORCE_FLAG } from "./command-line/flags.js";
|
|
5
4
|
import { checkConfirmation } from "./context/confirm.js";
|
|
6
5
|
import { checkCost } from "./context/cost.js";
|
|
7
|
-
import { checkOutputs, probeOutputs } from "./context/outputs.js";
|
|
8
6
|
import { checkSecrets } from "./context/secrets.js";
|
|
9
7
|
import { checkTools } from "./context/tools.js";
|
|
10
8
|
const PLAN_INDENT = " ";
|
|
@@ -66,13 +64,13 @@ function serveContextOf(ctx, end) {
|
|
|
66
64
|
const serveCtx = Object.create(ctx);
|
|
67
65
|
return Object.assign(serveCtx, { end });
|
|
68
66
|
}
|
|
69
|
-
export async function execute(command, input, ctx, {
|
|
70
|
-
await checkTools(command.tools ?? [], ctx
|
|
67
|
+
export async function execute(command, input, ctx, { flags, commandLine, started, outputs: runOutputs }) {
|
|
68
|
+
await checkTools(command.tools ?? [], ctx, ctx.rerun());
|
|
71
69
|
const { env, envFile, fileError } = ctx;
|
|
72
70
|
checkSecrets(command.secrets ?? [], { env, envFile, fileError }, ctx.rerun());
|
|
73
71
|
if (command.rows !== undefined) {
|
|
74
72
|
const { render } = command;
|
|
75
|
-
return outcomeOf(await command.run({ ...input, ...page }, ctx), (data, style) => render === undefined ? encode(data.items) : render(data, style));
|
|
73
|
+
return outcomeOf(await command.run({ ...input, ...flags.page }, ctx), (data, style) => render === undefined ? encode(data.items) : render(data, style));
|
|
76
74
|
}
|
|
77
75
|
if (command.effect === "read" || command.effect === "act") {
|
|
78
76
|
return dataOutcome(command, await command.run(input, ctx), commandLine);
|
|
@@ -88,20 +86,19 @@ export async function execute(command, input, ctx, { dryRun, confirm, yes, page,
|
|
|
88
86
|
return outcome;
|
|
89
87
|
}
|
|
90
88
|
const plan = await command.plan(input, ctx);
|
|
91
|
-
if (dryRun) {
|
|
89
|
+
if (ctx.dryRun) {
|
|
92
90
|
return dryRunOutcome(command, plan, commandLine);
|
|
93
91
|
}
|
|
94
92
|
const outputs = command.outputs?.(plan);
|
|
95
|
-
|
|
96
|
-
|
|
93
|
+
const { rerun, force } = ctx;
|
|
94
|
+
if (outputs !== undefined)
|
|
95
|
+
await runOutputs.refuseOverwrite(outputs, { rerun, commandLine, force });
|
|
96
|
+
checkCost({ rerun, commandLine, yes: flags.yes }, command.cost?.(plan));
|
|
97
97
|
if (command.effect === "destructive") {
|
|
98
|
-
checkConfirmation({ rerun
|
|
99
|
-
}
|
|
100
|
-
if (outputs !== undefined) {
|
|
101
|
-
await probeOutputs({ files, cwd: ctx.cwd, fileError: ctx.fileError }, outputs);
|
|
102
|
-
if (!ctx.force)
|
|
103
|
-
guardOutputs(outputs, ctx.rerun({ add: [FORCE_FLAG.flag] }));
|
|
98
|
+
checkConfirmation({ rerun, commandLine, given: flags.confirm }, command.confirm(plan));
|
|
104
99
|
}
|
|
100
|
+
if (outputs !== undefined)
|
|
101
|
+
await runOutputs.claim(outputs, { rerun, force });
|
|
105
102
|
return dataOutcome(command, await command.apply(plan, ctx), commandLine);
|
|
106
103
|
}
|
|
107
104
|
//# sourceMappingURL=execute.js.map
|
package/dist/execute.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../src/execute.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../src/execute.ts"],"names":[],"mappings":"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"}
|
package/dist/exit-classes.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SpecNode } from "./command-spec.js";
|
|
1
2
|
import type { Cli } from "./define.js";
|
|
2
3
|
import { type DeclaredExitClass, type ErrorTable } from "./error-table.js";
|
|
3
4
|
/** Who must act on a failure (ADR 0005), which sets the exit code. */
|
|
@@ -16,17 +17,13 @@ export declare const EXIT_CODES: {
|
|
|
16
17
|
};
|
|
17
18
|
/** The codes of `errors` that the Runtime already declares, which a CLI cannot redeclare. */
|
|
18
19
|
export declare function runtimeCodesIn(errors: ErrorTable): string[];
|
|
19
|
-
|
|
20
|
-
export declare function
|
|
20
|
+
/** The class of `code` in the Runtime's Error table or else in the CLI's `errors`. */
|
|
21
|
+
export declare function classOfCode(code: string, errors: ErrorTable): ExitClass | undefined;
|
|
21
22
|
/**
|
|
22
|
-
* The classes other than bug and interrupt that a run of `cli` can end in: those of the Runtime
|
|
23
|
-
* codes
|
|
23
|
+
* The classes other than bug and interrupt that a run of `cli` can end in: those of the Runtime
|
|
24
|
+
* codes any Command can meet, those of the codes its Commands under `root` declare, Built-ins
|
|
25
|
+
* included, and those of its own table.
|
|
24
26
|
*/
|
|
25
|
-
export declare function reachableExitClasses(cli: Cli): Set<DeclaredExitClass>;
|
|
27
|
+
export declare function reachableExitClasses(cli: Cli, root: SpecNode): Set<DeclaredExitClass>;
|
|
26
28
|
/** The signal named by an interrupt's abort reason; any other reason counts as Ctrl-C. */
|
|
27
29
|
export declare function stopSignalOf(reason: unknown): StopSignal;
|
|
28
|
-
/**
|
|
29
|
-
* The exit code of a run that failed with `error`, given the CLI's error table; `stop` is the
|
|
30
|
-
* signal that interrupted it, if any.
|
|
31
|
-
*/
|
|
32
|
-
export declare function exitCodeOf(error: unknown, errors: ErrorTable, stop: AbortSignal | undefined): number;
|
package/dist/exit-classes.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { installOf } from "./built-ins/install/install.js";
|
|
2
1
|
import { errorTableOf } from "./error-table.js";
|
|
3
|
-
import {
|
|
2
|
+
import { anyCommandClasses, isRuntimeCode, runtimeErrors } from "./runtime-codes.js";
|
|
4
3
|
export const SIGNAL_EXIT_CODES = { SIGINT: 130, SIGTERM: 143 };
|
|
5
4
|
export const EXIT_CODES = {
|
|
6
5
|
caller: 1,
|
|
@@ -9,98 +8,38 @@ export const EXIT_CODES = {
|
|
|
9
8
|
wait: 75,
|
|
10
9
|
bug: 70,
|
|
11
10
|
};
|
|
12
|
-
// Typed by every Runtime code, so a code missing here or not on `runtimeCodes` fails to compile.
|
|
13
|
-
const RUNTIME_EXIT_CLASSES = {
|
|
14
|
-
INVALID_INPUT: "caller",
|
|
15
|
-
UNKNOWN_OPTION: "caller",
|
|
16
|
-
UNKNOWN_COMMAND: "caller",
|
|
17
|
-
UNKNOWN_FIELD: "caller",
|
|
18
|
-
CONFIRMATION_REQUIRED: "caller",
|
|
19
|
-
CONFIRMATION_MISMATCH: "caller",
|
|
20
|
-
NOT_CONFIRMED: "operator",
|
|
21
|
-
NEEDS_OPERATOR: "operator",
|
|
22
|
-
OUTPUT_EXISTS: "caller",
|
|
23
|
-
STDIN_STALLED: "caller",
|
|
24
|
-
INTERRUPTED: "interrupted",
|
|
25
|
-
DEADLINE_EXCEEDED: "wait",
|
|
26
|
-
INTERNAL: "bug",
|
|
27
|
-
PERMISSION_DENIED: "operator",
|
|
28
|
-
DISK_FULL: "operator",
|
|
29
|
-
NOT_FOUND: "caller",
|
|
30
|
-
ALREADY_EXISTS: "caller",
|
|
31
|
-
NOT_A_FILE: "caller",
|
|
32
|
-
TOOL_FAILED: "operator",
|
|
33
|
-
TOOL_MISSING: "operator",
|
|
34
|
-
SECRET_MISSING: "operator",
|
|
35
|
-
PROJECT_INVALID: "operator",
|
|
36
|
-
DOCTOR_PROBLEMS: "operator",
|
|
37
|
-
NOT_GLOBAL_INSTALL: "operator",
|
|
38
|
-
NOT_ON_PATH: "operator",
|
|
39
|
-
REGISTRY_UNREACHABLE: "operator",
|
|
40
|
-
REGISTRY_AUTH: "operator",
|
|
41
|
-
INSTALL_FAILED: "operator",
|
|
42
|
-
NPM_FAILED: "operator",
|
|
43
|
-
NO_LATEST: "source",
|
|
44
|
-
};
|
|
45
|
-
function isRuntimeCode(code) {
|
|
46
|
-
return Object.hasOwn(RUNTIME_EXIT_CLASSES, code);
|
|
47
|
-
}
|
|
48
11
|
/** The codes of `errors` that the Runtime already declares, which a CLI cannot redeclare. */
|
|
49
12
|
export function runtimeCodesIn(errors) {
|
|
50
13
|
return Object.keys(errors).filter(isRuntimeCode);
|
|
51
14
|
}
|
|
52
|
-
|
|
53
|
-
function
|
|
54
|
-
|
|
55
|
-
return "bug";
|
|
56
|
-
if (error instanceof UsageError)
|
|
57
|
-
return "caller";
|
|
58
|
-
if (isRuntimeCode(error.code))
|
|
59
|
-
return RUNTIME_EXIT_CLASSES[error.code];
|
|
60
|
-
return errors[error.code]?.class ?? "bug";
|
|
61
|
-
}
|
|
62
|
-
export function isBug(error, errors) {
|
|
63
|
-
return exitClassOfOne(error, errors) === "bug";
|
|
15
|
+
/** The class of `code` in the Runtime's Error table or else in the CLI's `errors`. */
|
|
16
|
+
export function classOfCode(code, errors) {
|
|
17
|
+
return isRuntimeCode(code) ? runtimeErrors[code].class : errors[code]?.class;
|
|
64
18
|
}
|
|
65
|
-
|
|
66
|
-
return
|
|
19
|
+
function declaredCodesOf(node) {
|
|
20
|
+
return node.kind === "command"
|
|
21
|
+
? (node.command.errors ?? [])
|
|
22
|
+
: Object.values(node.commands).flatMap(declaredCodesOf);
|
|
67
23
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
function exitClassOf(error, errors) {
|
|
71
|
-
const classes = errorsOf(error).map((each) => exitClassOfOne(each, errors));
|
|
72
|
-
if (classes.includes("bug"))
|
|
73
|
-
return "bug";
|
|
74
|
-
return ACT_FIRST.find((exitClass) => classes.includes(exitClass)) ?? "bug";
|
|
24
|
+
function isDeclarable(exitClass) {
|
|
25
|
+
return exitClass !== undefined && exitClass !== "bug" && exitClass !== "interrupted";
|
|
75
26
|
}
|
|
76
27
|
/**
|
|
77
|
-
* The classes other than bug and interrupt that a run of `cli` can end in: those of the Runtime
|
|
78
|
-
* codes
|
|
28
|
+
* The classes other than bug and interrupt that a run of `cli` can end in: those of the Runtime
|
|
29
|
+
* codes any Command can meet, those of the codes its Commands under `root` declare, Built-ins
|
|
30
|
+
* included, and those of its own table.
|
|
79
31
|
*/
|
|
80
|
-
export function reachableExitClasses(cli) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
"wait",
|
|
87
|
-
...(cli.commands === undefined ? [] : installOf(cli).exitClasses),
|
|
32
|
+
export function reachableExitClasses(cli, root) {
|
|
33
|
+
const table = errorTableOf(cli);
|
|
34
|
+
const classes = [
|
|
35
|
+
...anyCommandClasses,
|
|
36
|
+
...declaredCodesOf(root).map((code) => classOfCode(code, table)),
|
|
37
|
+
...Object.values(table).map((declaration) => declaration.class),
|
|
88
38
|
];
|
|
89
|
-
|
|
90
|
-
return new Set([...runtime, ...own]);
|
|
39
|
+
return new Set(classes.filter(isDeclarable));
|
|
91
40
|
}
|
|
92
41
|
/** The signal named by an interrupt's abort reason; any other reason counts as Ctrl-C. */
|
|
93
42
|
export function stopSignalOf(reason) {
|
|
94
43
|
return reason === "SIGTERM" ? "SIGTERM" : "SIGINT";
|
|
95
44
|
}
|
|
96
|
-
/**
|
|
97
|
-
* The exit code of a run that failed with `error`, given the CLI's error table; `stop` is the
|
|
98
|
-
* signal that interrupted it, if any.
|
|
99
|
-
*/
|
|
100
|
-
export function exitCodeOf(error, errors, stop) {
|
|
101
|
-
const exitClass = exitClassOf(error, errors);
|
|
102
|
-
return exitClass === "interrupted"
|
|
103
|
-
? SIGNAL_EXIT_CODES[stopSignalOf(stop?.reason)]
|
|
104
|
-
: EXIT_CODES[exitClass];
|
|
105
|
-
}
|
|
106
45
|
//# sourceMappingURL=exit-classes.js.map
|
package/dist/exit-classes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exit-classes.js","sourceRoot":"","sources":["../src/exit-classes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"exit-classes.js","sourceRoot":"","sources":["../src/exit-classes.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2C,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKrF,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAW,CAAC;AAIxE,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,EAAE;IACR,GAAG,EAAE,EAAE;CAC6D,CAAC;AAEvE,6FAA6F;AAC7F,MAAM,UAAU,cAAc,CAAC,MAAkB;IAC/C,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACnD,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,MAAkB;IAC1D,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;AAC/E,CAAC;AAED,SAAS,eAAe,CAAC,IAAc;IACrC,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS;QAC5B,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QAC7B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,YAAY,CAAC,SAAgC;IACpD,OAAO,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,aAAa,CAAC;AACvF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAQ,EAAE,IAAc;IAC3D,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG;QACd,GAAG,iBAAiB;QACpB,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChE,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;KAChE,CAAC;IACF,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,YAAY,CAAC,MAAe;IAC1C,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type CommandSpec } from "./command-spec.js";
|
|
2
|
+
import type { ErrorTable } from "./error-table.js";
|
|
3
|
+
import { type ExitClass } from "./exit-classes.js";
|
|
4
|
+
/** One error a run failed with, and who must act on it. */
|
|
5
|
+
export interface ClassifiedLeaf {
|
|
6
|
+
readonly error: unknown;
|
|
7
|
+
readonly exitClass: ExitClass;
|
|
8
|
+
}
|
|
9
|
+
export interface Failure {
|
|
10
|
+
readonly leaves: readonly ClassifiedLeaf[];
|
|
11
|
+
readonly exitCode: number;
|
|
12
|
+
}
|
|
13
|
+
/** A check of a failure: `error`, or a bug saying what in it is wrong. */
|
|
14
|
+
export type FailureCheck = (error: unknown) => Promise<unknown>;
|
|
15
|
+
export interface FailureSources {
|
|
16
|
+
readonly cliName: string;
|
|
17
|
+
/** The CLI's own Error table; the Runtime's is always looked up too. */
|
|
18
|
+
readonly errors: ErrorTable;
|
|
19
|
+
/** The signal that interrupts the run, whose abort reason names the stop signal. */
|
|
20
|
+
readonly stop: AbortSignal | undefined;
|
|
21
|
+
/** The Command that ran, whose `errors` must declare each code that needs declaring. */
|
|
22
|
+
readonly command?: CommandSpec;
|
|
23
|
+
/** The run's control, which rewrites a failure after an interrupt or a missed deadline. */
|
|
24
|
+
readonly control?: {
|
|
25
|
+
errorAfter(error: unknown): unknown;
|
|
26
|
+
};
|
|
27
|
+
/** Absent in production, where a failure is never replaced by a bug in its Next steps. */
|
|
28
|
+
readonly nextStepCheck?: FailureCheck;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* What a run that threw `error` reports: the interrupt and deadline rewrite, then the undeclared
|
|
32
|
+
* code check, then the Next step check, each leaf classified, and the exit code they give.
|
|
33
|
+
*/
|
|
34
|
+
export declare function failureOf(error: unknown, sources: FailureSources): Promise<Failure>;
|
|
35
|
+
/** `failure` with `error`'s leaves after its own, which may change its exit code. */
|
|
36
|
+
export declare function withLeaves(failure: Failure, error: unknown, sources: Pick<FailureSources, "errors" | "stop">): Failure;
|
package/dist/failure.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { commandLabel } from "./command-spec.js";
|
|
2
|
+
import { CliError, errorsOf, UsageError } from "./errors.js";
|
|
3
|
+
import { classOfCode, EXIT_CODES, SIGNAL_EXIT_CODES, stopSignalOf, } from "./exit-classes.js";
|
|
4
|
+
import { mustDeclare } from "./runtime-codes.js";
|
|
5
|
+
/**
|
|
6
|
+
* What a run that threw `error` reports: the interrupt and deadline rewrite, then the undeclared
|
|
7
|
+
* code check, then the Next step check, each leaf classified, and the exit code they give.
|
|
8
|
+
*/
|
|
9
|
+
export async function failureOf(error, sources) {
|
|
10
|
+
const { command, control, nextStepCheck } = sources;
|
|
11
|
+
const rewritten = control === undefined ? error : control.errorAfter(error);
|
|
12
|
+
const declared = command === undefined ? rewritten : checkedCodes(rewritten, command, sources);
|
|
13
|
+
const checked = nextStepCheck === undefined ? declared : await nextStepCheck(declared);
|
|
14
|
+
return failureFrom(classified(checked, sources.errors), sources.stop);
|
|
15
|
+
}
|
|
16
|
+
/** `failure` with `error`'s leaves after its own, which may change its exit code. */
|
|
17
|
+
export function withLeaves(failure, error, sources) {
|
|
18
|
+
return failureFrom([...failure.leaves, ...classified(error, sources.errors)], sources.stop);
|
|
19
|
+
}
|
|
20
|
+
function classified(error, errors) {
|
|
21
|
+
return errorsOf(error).map((leaf) => ({ error: leaf, exitClass: exitClassOfOne(leaf, errors) }));
|
|
22
|
+
}
|
|
23
|
+
function failureFrom(leaves, stop) {
|
|
24
|
+
const exitClass = exitClassOf(leaves);
|
|
25
|
+
return {
|
|
26
|
+
leaves,
|
|
27
|
+
exitCode: exitClass === "interrupted"
|
|
28
|
+
? SIGNAL_EXIT_CODES[stopSignalOf(stop?.reason)]
|
|
29
|
+
: EXIT_CODES[exitClass],
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
// A code that neither the Runtime nor the CLI declares was thrown by mistake: a bug.
|
|
33
|
+
function exitClassOfOne(error, errors) {
|
|
34
|
+
if (!(error instanceof CliError))
|
|
35
|
+
return "bug";
|
|
36
|
+
if (error instanceof UsageError)
|
|
37
|
+
return "caller";
|
|
38
|
+
return classOfCode(error.code, errors) ?? "bug";
|
|
39
|
+
}
|
|
40
|
+
// Of several errors, the class that must act first decides; any bug makes the whole run one.
|
|
41
|
+
const ACT_FIRST = ["caller", "operator", "source", "wait", "interrupted"];
|
|
42
|
+
function exitClassOf(leaves) {
|
|
43
|
+
const classes = leaves.map((leaf) => leaf.exitClass);
|
|
44
|
+
if (classes.includes("bug"))
|
|
45
|
+
return "bug";
|
|
46
|
+
return ACT_FIRST.find((exitClass) => classes.includes(exitClass)) ?? "bug";
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* `error`, or a bug naming each code in it that the Command must declare in its `errors` and does
|
|
50
|
+
* not: one of the Error table, or a Runtime code only some Commands reach.
|
|
51
|
+
*/
|
|
52
|
+
function checkedCodes(error, { command, path }, { cliName, errors }) {
|
|
53
|
+
const declared = new Set(command.errors ?? []);
|
|
54
|
+
const undeclared = errorsOf(error).flatMap((leaf) => leaf instanceof CliError && mustDeclare(leaf.code, errors) && !declared.has(leaf.code)
|
|
55
|
+
? [leaf.code]
|
|
56
|
+
: []);
|
|
57
|
+
if (undeclared.length === 0)
|
|
58
|
+
return error;
|
|
59
|
+
const label = commandLabel(path, cliName).join(" ");
|
|
60
|
+
const codes = [...new Set(undeclared)].join(", ");
|
|
61
|
+
return new Error(`\`${label}\` threw ${codes}, which its errors do not declare`, {
|
|
62
|
+
cause: error,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=failure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"failure.js","sourceRoot":"","sources":["../src/failure.ts"],"names":[],"mappings":"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"}
|
package/dist/help-json.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import * as z from "zod";
|
|
2
2
|
import { visibleCommands, } from "./command-spec.js";
|
|
3
3
|
import { errorTableOf } from "./error-table.js";
|
|
4
|
+
import { classOfCode } from "./exit-classes.js";
|
|
5
|
+
import { declaredRuntimeErrors } from "./runtime-codes.js";
|
|
4
6
|
// Transforms and other unrepresentable parts become `{}` rather than failing the whole help.
|
|
5
7
|
function inputSchema(schema) {
|
|
6
8
|
return z.toJSONSchema(schema, { io: "input", unrepresentable: "any" });
|
|
@@ -18,8 +20,8 @@ function commandData(spec, table) {
|
|
|
18
20
|
operator: spec.operator,
|
|
19
21
|
examples: spec.examples,
|
|
20
22
|
secrets: spec.command.secrets ?? [],
|
|
21
|
-
// `defineCli` checked that each declared code is in the table.
|
|
22
|
-
errors: (spec.command.errors ?? []).map((code) => ({ code, class:
|
|
23
|
+
// `defineCli` checked that each declared code is in the table or a declarable Runtime code.
|
|
24
|
+
errors: (spec.command.errors ?? []).map((code) => ({ code, class: classOfCode(code, table) })),
|
|
23
25
|
args: inputSchema(spec.command.args ?? z.object({})),
|
|
24
26
|
options: optionsSchema(spec.options),
|
|
25
27
|
standardFlags: spec.standardFlags.map(({ usage, description, schema }) => ({
|
|
@@ -58,7 +60,7 @@ function publishedTable(table, root) {
|
|
|
58
60
|
if (root.kind !== "command")
|
|
59
61
|
return table;
|
|
60
62
|
const declared = new Set(root.command.errors ?? []);
|
|
61
|
-
return Object.fromEntries(Object.entries(table).filter(([code]) => declared.has(code)));
|
|
63
|
+
return Object.fromEntries(Object.entries({ ...table, ...declaredRuntimeErrors }).filter(([code]) => declared.has(code)));
|
|
62
64
|
}
|
|
63
65
|
// The root names the CLI beside its version, as the text header does; its Commands keep the run-as.
|
|
64
66
|
// A single-Command CLI's root is its Command, whose `errors` list gives way to the table.
|
package/dist/help-json.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help-json.js","sourceRoot":"","sources":["../src/help-json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAIL,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAmB,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"help-json.js","sourceRoot":"","sources":["../src/help-json.ts"],"names":[],"mappings":"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"}
|
package/dist/help.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { visibleCommands, } from "./command-spec.js";
|
|
2
|
+
import { isNeeded } from "./context/secrets.js";
|
|
2
3
|
import { EXIT_CODES, reachableExitClasses, SIGNAL_EXIT_CODES } from "./exit-classes.js";
|
|
3
4
|
function table(rows) {
|
|
4
5
|
const width = Math.max(...rows.map(([left]) => left.length));
|
|
@@ -34,9 +35,9 @@ const EXIT_MEANINGS = {
|
|
|
34
35
|
source: "someone at the source acts",
|
|
35
36
|
wait: "not done yet: do what the hint says, then run it again",
|
|
36
37
|
};
|
|
37
|
-
function exitCodeRows(cli) {
|
|
38
|
+
function exitCodeRows(cli, root) {
|
|
38
39
|
const failures = [
|
|
39
|
-
...[...reachableExitClasses(cli)].map((exitClass) => [EXIT_CODES[exitClass], EXIT_MEANINGS[exitClass]]),
|
|
40
|
+
...[...reachableExitClasses(cli, root)].map((exitClass) => [EXIT_CODES[exitClass], EXIT_MEANINGS[exitClass]]),
|
|
40
41
|
[EXIT_CODES.bug, `a bug in ${cli.name}`],
|
|
41
42
|
];
|
|
42
43
|
return [
|
|
@@ -65,7 +66,7 @@ export function cliHelp(cli, root, style) {
|
|
|
65
66
|
const body = root.kind === "command"
|
|
66
67
|
? commandLines(root, style, { examples: false })
|
|
67
68
|
: listingLines(`${cli.name} ${cli.version}`, root, style, cli.description);
|
|
68
|
-
return lines(...body, ...section("Exit codes", exitCodeRows(cli), style), ...examplesSection(rootExamples(root), style));
|
|
69
|
+
return lines(...body, ...section("Exit codes", exitCodeRows(cli, root), style), ...examplesSection(rootExamples(root), style));
|
|
69
70
|
}
|
|
70
71
|
export function groupHelp(group, style) {
|
|
71
72
|
return lines(...listingLines(group.commandLine, group, style));
|
|
@@ -103,6 +104,10 @@ function argRow(field) {
|
|
|
103
104
|
function optionRow(field) {
|
|
104
105
|
return fieldRow(field, defaultsOf(field));
|
|
105
106
|
}
|
|
107
|
+
function secretRow(declaration) {
|
|
108
|
+
const name = isNeeded(declaration) ? declaration.name : `${declaration.name} (optional)`;
|
|
109
|
+
return [name, `get it from ${declaration.get}`];
|
|
110
|
+
}
|
|
106
111
|
function flagRow({ usage, description }) {
|
|
107
112
|
return [usage, description];
|
|
108
113
|
}
|
|
@@ -113,6 +118,7 @@ function commandLines(spec, style, { examples }) {
|
|
|
113
118
|
...(examples ? examplesSection(spec.examples, style) : []),
|
|
114
119
|
...section("Arguments", spec.args.map(argRow), style),
|
|
115
120
|
...section("Options", spec.options.map(optionRow), style),
|
|
121
|
+
...section("Secrets", (spec.command.secrets ?? []).map(secretRow), style),
|
|
116
122
|
...(spec.help === undefined ? [] : ["", spec.help]),
|
|
117
123
|
"",
|
|
118
124
|
`${style.bold("Effect:")} ${spec.effect} (${EFFECT_NOTES[spec.effect]})`,
|
package/dist/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,eAAe,GAChB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"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"}
|
package/dist/output.d.ts
CHANGED
|
@@ -1,31 +1,24 @@
|
|
|
1
|
-
import { type NextStepCheck } from "./check-next-steps.js";
|
|
2
1
|
import type { Invocation } from "./command-line/invocation.js";
|
|
3
2
|
import type { SpecNode } from "./command-spec.js";
|
|
4
3
|
import type { Spill } from "./context/spill.js";
|
|
5
4
|
import type { Env } from "./context.js";
|
|
6
5
|
import type { Cli } from "./define.js";
|
|
7
|
-
import { type ErrorTable } from "./error-table.js";
|
|
8
6
|
import { type ErrorFormat } from "./errors.js";
|
|
9
7
|
import type { Outcome } from "./execute.js";
|
|
8
|
+
import { type FailureSources } from "./failure.js";
|
|
10
9
|
import type { Style } from "./style.js";
|
|
11
10
|
export interface RunResult {
|
|
12
11
|
readonly stdout: string;
|
|
13
12
|
readonly stderr: string;
|
|
14
13
|
readonly exitCode: number;
|
|
15
14
|
}
|
|
16
|
-
export interface OutputFormat extends Pick<ErrorFormat, "bugs"
|
|
17
|
-
readonly cliName: string;
|
|
15
|
+
export interface OutputFormat extends Pick<ErrorFormat, "bugs">, FailureSources {
|
|
18
16
|
readonly env: Env;
|
|
19
17
|
readonly style: Style;
|
|
20
18
|
readonly invocation: Invocation;
|
|
21
19
|
readonly json: boolean;
|
|
22
|
-
readonly errors: ErrorTable;
|
|
23
|
-
/** The signal that interrupts the run, whose abort reason names the stop signal. */
|
|
24
|
-
readonly stop: AbortSignal | undefined;
|
|
25
20
|
/** The text help a usage error ends with; set only under an agent, which reads it in one go. */
|
|
26
21
|
readonly usageHelp?: string;
|
|
27
|
-
/** Set by `runCli` alone, so a production failure is never replaced by a bug in its Next steps. */
|
|
28
|
-
readonly checkNextStep?: NextStepCheck;
|
|
29
22
|
}
|
|
30
23
|
export interface DataFormat extends OutputFormat {
|
|
31
24
|
readonly fields: readonly string[] | undefined;
|
|
@@ -50,7 +43,7 @@ export declare function noticeLine(text: string, json: boolean): string;
|
|
|
50
43
|
export declare function startedOutput(outcome: Outcome, format: OutputFormat, spill: Spill): Promise<string> | string;
|
|
51
44
|
/** A serve Command stopped, or ended itself, after it started: that is how it is meant to end. */
|
|
52
45
|
export declare const STOPPED_RESULT: RunResult;
|
|
53
|
-
export declare function errorResult(error: unknown, format: OutputFormat): RunResult
|
|
46
|
+
export declare function errorResult(error: unknown, format: OutputFormat): Promise<RunResult>;
|
|
54
47
|
export declare function commandResult(settled: Settled, format: DataFormat, spill: Spill): Promise<RunResult>;
|
|
55
48
|
export declare function textHelp(node: SpecNode, root: SpecNode, cli: Cli, style: Style): string;
|
|
56
49
|
export declare function helpResult(node: SpecNode, root: SpecNode, cli: Cli, { style, json }: OutputFormat): RunResult;
|