@duyquangnvx/agent-cli 0.2.1 → 0.4.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 +71 -0
- package/dist/abort.d.ts +2 -0
- package/dist/abort.js +11 -0
- package/dist/abort.js.map +1 -0
- package/dist/agent-cli.d.ts +17 -0
- package/dist/agent-cli.js +28 -0
- package/dist/agent-cli.js.map +1 -0
- package/dist/agent.d.ts +4 -0
- package/dist/agent.js +14 -0
- package/dist/agent.js.map +1 -0
- package/dist/built-ins.d.ts +1 -2
- package/dist/built-ins.js +0 -10
- package/dist/built-ins.js.map +1 -1
- package/dist/clock.d.ts +10 -0
- package/dist/clock.js +35 -0
- package/dist/clock.js.map +1 -0
- package/dist/command-spec.js +12 -1
- package/dist/command-spec.js.map +1 -1
- package/dist/confirm.d.ts +2 -0
- package/dist/confirm.js +4 -2
- package/dist/confirm.js.map +1 -1
- package/dist/cost.d.ts +9 -0
- package/dist/cost.js +16 -0
- package/dist/cost.js.map +1 -0
- package/dist/define.d.ts +145 -32
- package/dist/define.js +9 -2
- package/dist/define.js.map +1 -1
- package/dist/doctor-rows.d.ts +2 -2
- package/dist/doctor-rows.js +45 -5
- package/dist/doctor-rows.js.map +1 -1
- package/dist/doctor.d.ts +2 -1
- package/dist/doctor.js +31 -29
- package/dist/doctor.js.map +1 -1
- package/dist/errno.d.ts +15 -0
- package/dist/errno.js +50 -0
- package/dist/errno.js.map +1 -0
- package/dist/error-table.d.ts +34 -0
- package/dist/error-table.js +10 -0
- package/dist/error-table.js.map +1 -0
- package/dist/errors.d.ts +17 -12
- package/dist/errors.js +59 -38
- package/dist/errors.js.map +1 -1
- package/dist/execute.d.ts +7 -3
- package/dist/execute.js +38 -5
- package/dist/execute.js.map +1 -1
- package/dist/exit-classes.d.ts +31 -0
- package/dist/exit-classes.js +108 -0
- package/dist/exit-classes.js.map +1 -0
- package/dist/files.d.ts +31 -0
- package/dist/files.js +95 -0
- package/dist/files.js.map +1 -0
- package/dist/flags.d.ts +21 -3
- package/dist/flags.js +41 -4
- package/dist/flags.js.map +1 -1
- package/dist/global-install.d.ts +1 -0
- package/dist/global-install.js +2 -2
- package/dist/global-install.js.map +1 -1
- package/dist/help-json.d.ts +2 -1
- package/dist/help-json.js +18 -2
- package/dist/help-json.js.map +1 -1
- package/dist/help.d.ts +4 -2
- package/dist/help.js +62 -6
- package/dist/help.js.map +1 -1
- package/dist/index.d.ts +11 -4
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/input.d.ts +4 -0
- package/dist/input.js +24 -2
- package/dist/input.js.map +1 -1
- package/dist/interrupts.d.ts +17 -3
- package/dist/interrupts.js +43 -25
- package/dist/interrupts.js.map +1 -1
- package/dist/invocation.d.ts +7 -2
- package/dist/invocation.js +11 -3
- package/dist/invocation.js.map +1 -1
- package/dist/list.d.ts +1 -0
- package/dist/list.js +4 -2
- package/dist/list.js.map +1 -1
- package/dist/npm.d.ts +5 -0
- package/dist/npm.js +19 -17
- package/dist/npm.js.map +1 -1
- package/dist/output.d.ts +18 -4
- package/dist/output.js +65 -23
- package/dist/output.js.map +1 -1
- package/dist/outputs.d.ts +11 -0
- package/dist/outputs.js +22 -0
- package/dist/outputs.js.map +1 -0
- package/dist/package-root.d.ts +6 -0
- package/dist/package-root.js +17 -0
- package/dist/package-root.js.map +1 -0
- package/dist/parse-input.d.ts +2 -0
- package/dist/parse-input.js +41 -8
- package/dist/parse-input.js.map +1 -1
- package/dist/planned.d.ts +6 -0
- package/dist/planned.js +5 -0
- package/dist/planned.js.map +1 -0
- package/dist/project.d.ts +4 -0
- package/dist/project.js +48 -0
- package/dist/project.js.map +1 -0
- package/dist/route.d.ts +2 -0
- package/dist/route.js +2 -1
- package/dist/route.js.map +1 -1
- package/dist/run-cli.d.ts +24 -5
- package/dist/run-cli.js +126 -18
- package/dist/run-cli.js.map +1 -1
- package/dist/run-process.js +6 -3
- package/dist/run-process.js.map +1 -1
- package/dist/secrets.d.ts +19 -0
- package/dist/secrets.js +32 -0
- package/dist/secrets.js.map +1 -0
- package/dist/spawn.d.ts +29 -0
- package/dist/spawn.js +79 -0
- package/dist/spawn.js.map +1 -0
- package/dist/spill.d.ts +16 -0
- package/dist/spill.js +65 -0
- package/dist/spill.js.map +1 -0
- package/dist/style.js +5 -12
- package/dist/style.js.map +1 -1
- package/dist/tail.d.ts +2 -0
- package/dist/tail.js +5 -0
- package/dist/tail.js.map +1 -0
- package/dist/tools.d.ts +6 -0
- package/dist/tools.js +69 -0
- package/dist/tools.js.map +1 -0
- package/dist/update.js +7 -7
- package/dist/update.js.map +1 -1
- package/dist/usage.d.ts +3 -0
- package/dist/usage.js +6 -3
- package/dist/usage.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"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"}
|
package/dist/flags.d.ts
CHANGED
|
@@ -25,6 +25,12 @@ export declare const DRY_RUN_FLAG: StandardFlag & {
|
|
|
25
25
|
export declare const CONFIRM_FLAG: StandardFlag & {
|
|
26
26
|
readonly flag: "--confirm";
|
|
27
27
|
};
|
|
28
|
+
export declare const YES_FLAG: StandardFlag & {
|
|
29
|
+
readonly flag: "--yes";
|
|
30
|
+
};
|
|
31
|
+
export declare const FORCE_FLAG: StandardFlag & {
|
|
32
|
+
readonly flag: "--force";
|
|
33
|
+
};
|
|
28
34
|
declare const EFFECT_FLAGS: {
|
|
29
35
|
readonly read: readonly [StandardFlag & {
|
|
30
36
|
readonly flag: "--json";
|
|
@@ -41,10 +47,22 @@ declare const EFFECT_FLAGS: {
|
|
|
41
47
|
}, StandardFlag & {
|
|
42
48
|
readonly flag: "--confirm";
|
|
43
49
|
}];
|
|
50
|
+
readonly serve: readonly [StandardFlag & {
|
|
51
|
+
readonly flag: "--json";
|
|
52
|
+
}];
|
|
44
53
|
};
|
|
45
|
-
export type StandardFlagName = NameOf<(typeof ROUTING_FLAGS)[number]> | NameOf<(typeof EFFECT_FLAGS)[Effect][number]["flag"]> | ListFlagName;
|
|
46
|
-
/**
|
|
47
|
-
export
|
|
54
|
+
export type StandardFlagName = NameOf<(typeof ROUTING_FLAGS)[number]> | NameOf<(typeof EFFECT_FLAGS)[Effect][number]["flag"]> | NameOf<typeof YES_FLAG.flag> | NameOf<typeof FORCE_FLAG.flag> | ListFlagName;
|
|
55
|
+
/** What a Command declares beyond its Effect that adds Standard flags. */
|
|
56
|
+
export interface Declared {
|
|
57
|
+
readonly outputs: boolean;
|
|
58
|
+
/** The sentence describing what `--force` replaces, when the Command declares one. */
|
|
59
|
+
readonly force: string | undefined;
|
|
60
|
+
readonly cost: boolean;
|
|
61
|
+
}
|
|
62
|
+
/** The Standard flags of a Command with this Effect and declarations, and of a List Command. */
|
|
63
|
+
export declare function standardFlagsFor(effect: Effect, { outputs, force, cost }: Declared, list: ListSpec | undefined): readonly StandardFlag[];
|
|
48
64
|
/** Throws when the Command declares an arg or option under a Standard flag's name. */
|
|
49
65
|
export declare function checkNoStandardFlags(command: Command): void;
|
|
66
|
+
/** Throws when `force` is declared on a Command with no Plan, or says nothing. */
|
|
67
|
+
export declare function checkForce(command: Command): void;
|
|
50
68
|
export {};
|
package/dist/flags.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as z from "zod";
|
|
2
2
|
import { argFields, kebab, optionFields } from "./input.js";
|
|
3
3
|
import { LIST_FLAGS } from "./list.js";
|
|
4
|
+
import { hasPlan } from "./planned.js";
|
|
4
5
|
export const HELP_FLAG = "--help";
|
|
5
6
|
export const HELP_SHORT = "-h";
|
|
6
7
|
export const VERSION_FLAG = "--version";
|
|
@@ -28,16 +29,39 @@ export const CONFIRM_FLAG = standardFlag("--confirm", {
|
|
|
28
29
|
takes: "value",
|
|
29
30
|
schema: z.string(),
|
|
30
31
|
});
|
|
32
|
+
export const YES_FLAG = standardFlag("--yes", {
|
|
33
|
+
description: "approve the cost the run states; --dry-run shows it",
|
|
34
|
+
takes: "nothing",
|
|
35
|
+
schema: z.boolean(),
|
|
36
|
+
});
|
|
37
|
+
export const FORCE_FLAG = standardFlag("--force", {
|
|
38
|
+
description: "replace the files the run writes when they exist; --dry-run lists them",
|
|
39
|
+
takes: "nothing",
|
|
40
|
+
schema: z.boolean(),
|
|
41
|
+
});
|
|
31
42
|
const EFFECT_FLAGS = {
|
|
32
43
|
read: [JSON_FLAG],
|
|
33
44
|
write: [JSON_FLAG, DRY_RUN_FLAG],
|
|
34
45
|
destructive: [JSON_FLAG, DRY_RUN_FLAG, CONFIRM_FLAG],
|
|
46
|
+
serve: [JSON_FLAG],
|
|
35
47
|
};
|
|
36
48
|
// Every name is reserved on every Command, whatever flags it gets, so a name means one thing.
|
|
37
|
-
const RESERVED = new Map([
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
49
|
+
const RESERVED = new Map([
|
|
50
|
+
...ROUTING_FLAGS,
|
|
51
|
+
...EFFECT_FLAGS.destructive.map(({ flag }) => flag),
|
|
52
|
+
YES_FLAG.flag,
|
|
53
|
+
FORCE_FLAG.flag,
|
|
54
|
+
...LIST_FLAGS,
|
|
55
|
+
].map((flag) => [nameOf(flag), flag]));
|
|
56
|
+
/** The Standard flags of a Command with this Effect and declarations, and of a List Command. */
|
|
57
|
+
export function standardFlagsFor(effect, { outputs, force, cost }, list) {
|
|
58
|
+
const forceFlag = force === undefined ? FORCE_FLAG : { ...FORCE_FLAG, description: force };
|
|
59
|
+
return [
|
|
60
|
+
...EFFECT_FLAGS[effect],
|
|
61
|
+
...(outputs || force !== undefined ? [forceFlag] : []),
|
|
62
|
+
...(cost ? [YES_FLAG] : []),
|
|
63
|
+
...(list?.standardFlags ?? []),
|
|
64
|
+
];
|
|
41
65
|
}
|
|
42
66
|
/** Throws when the Command declares an arg or option under a Standard flag's name. */
|
|
43
67
|
export function checkNoStandardFlags(command) {
|
|
@@ -56,4 +80,17 @@ export function checkNoStandardFlags(command) {
|
|
|
56
80
|
].join("\n"));
|
|
57
81
|
}
|
|
58
82
|
}
|
|
83
|
+
/** Throws when `force` is declared on a Command with no Plan, or says nothing. */
|
|
84
|
+
export function checkForce(command) {
|
|
85
|
+
const force = "force" in command ? command.force : undefined;
|
|
86
|
+
if (force === undefined) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (!hasPlan(command)) {
|
|
90
|
+
throw new Error(`Command '${command.name}' declares force, which only a write or destructive Command may`);
|
|
91
|
+
}
|
|
92
|
+
if (force.trim() === "") {
|
|
93
|
+
throw new Error(`Command '${command.name}' declares an empty force; say what ${FORCE_FLAG.flag} replaces`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
59
96
|
//# sourceMappingURL=flags.js.map
|
package/dist/flags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flags.js","sourceRoot":"","sources":["../src/flags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAoC,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"flags.js","sourceRoot":"","sources":["../src/flags.ts"],"names":[],"mappings":"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"}
|
package/dist/global-install.d.ts
CHANGED
package/dist/global-install.js
CHANGED
|
@@ -2,6 +2,7 @@ import { lstat, realpath } from "node:fs/promises";
|
|
|
2
2
|
import { isAbsolute, join, relative } from "node:path";
|
|
3
3
|
import { CliError, isMissingFile } from "./errors.js";
|
|
4
4
|
import { globalPrefix, installCommandLine } from "./npm.js";
|
|
5
|
+
export const NOT_GLOBAL_INSTALL = "NOT_GLOBAL_INSTALL";
|
|
5
6
|
/** Where npm puts global packages under its global prefix. */
|
|
6
7
|
export function globalModulesDir(prefix) {
|
|
7
8
|
return process.platform === "win32"
|
|
@@ -10,10 +11,9 @@ export function globalModulesDir(prefix) {
|
|
|
10
11
|
}
|
|
11
12
|
function notGlobal(ctx, message) {
|
|
12
13
|
return new CliError({
|
|
13
|
-
code:
|
|
14
|
+
code: NOT_GLOBAL_INSTALL,
|
|
14
15
|
message,
|
|
15
16
|
hint: `install it with npm, so \`${ctx.cliName} update\` can replace it: ${installCommandLine(ctx.install)}`,
|
|
16
|
-
retryable: false,
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
async function realpathOrUndefined(path) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-install.js","sourceRoot":"","sources":["../src/global-install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAmB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"global-install.js","sourceRoot":"","sources":["../src/global-install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAmB,MAAM,UAAU,CAAC;AAE7E,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAQvD,8DAA8D;AAC9D,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO;QACjC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC;QAC9B,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,SAAS,CAAC,GAAe,EAAE,OAAe;IACjD,OAAO,IAAI,QAAQ,CAAC;QAClB,IAAI,EAAE,kBAAkB;QACxB,OAAO;QACP,IAAI,EAAE,6BAA6B,GAAG,CAAC,OAAO,6BAA6B,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;KAC7G,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,IAAY;IAC7C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QAC7C,IAAI,aAAa,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC3C,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAE,IAAY;IACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,OAAO,KAAK,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACvE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,GAAuB,EACvB,GAAe;IAEf,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,4CAA4C,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,CAAC,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;IACrD,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC;QAC1D,MAAM,SAAS,CACb,GAAG,EACH,GAAG,GAAG,CAAC,OAAO,cAAc,IAAI,sCAAsC,UAAU,EAAE,CACnF,CAAC;IACJ,CAAC;IACD,6EAA6E;IAC7E,IAAI,CAAC,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC;QAC/C,MAAM,SAAS,CACb,GAAG,EACH,GAAG,GAAG,CAAC,OAAO,wBAAwB,SAAS,sCAAsC,CACtF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAChC,CAAC"}
|
package/dist/help-json.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CommandSpec, GroupSpec, SpecNode } from "./command-spec.js";
|
|
2
|
-
|
|
2
|
+
import type { Cli } from "./define.js";
|
|
3
|
+
export declare function cliHelpJson({ version, errors }: Cli, root: SpecNode): string;
|
|
3
4
|
export declare function groupHelpJson(group: GroupSpec): string;
|
|
4
5
|
export declare function commandHelpJson(spec: CommandSpec): string;
|
package/dist/help-json.js
CHANGED
|
@@ -32,8 +32,24 @@ function groupData(group) {
|
|
|
32
32
|
function printed(data) {
|
|
33
33
|
return `${JSON.stringify(data)}\n`;
|
|
34
34
|
}
|
|
35
|
-
|
|
36
|
-
return
|
|
35
|
+
function errorsData(errors) {
|
|
36
|
+
return Object.fromEntries(Object.entries(errors).map(([code, declaration]) => [
|
|
37
|
+
code,
|
|
38
|
+
{
|
|
39
|
+
class: declaration.class,
|
|
40
|
+
details: declaration.details === undefined
|
|
41
|
+
? null
|
|
42
|
+
: z.toJSONSchema(declaration.details, { unrepresentable: "any" }),
|
|
43
|
+
},
|
|
44
|
+
]));
|
|
45
|
+
}
|
|
46
|
+
export function cliHelpJson({ version, errors }, root) {
|
|
47
|
+
return printed({
|
|
48
|
+
name: root.commandLine,
|
|
49
|
+
version,
|
|
50
|
+
...nodeData(root),
|
|
51
|
+
errors: errorsData(errors ?? {}),
|
|
52
|
+
});
|
|
37
53
|
}
|
|
38
54
|
export function groupHelpJson(group) {
|
|
39
55
|
return printed(groupData(group));
|
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;
|
|
1
|
+
{"version":3,"file":"help-json.js","sourceRoot":"","sources":["../src/help-json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAQzB,6FAA6F;AAC7F,SAAS,WAAW,CAAC,MAAiB;IACpC,OAAO,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,uFAAuF;AACvF,SAAS,aAAa,CAAC,OAA8B;IACnD,OAAO,WAAW,CAChB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAChF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,IAAiB;IACpC,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,WAAW;QACtB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpD,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;QACpC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YACzE,KAAK;YACL,WAAW;YACX,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;SAC5B,CAAC,CAAC;QACH,MAAM,EACJ,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;KAC7F,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,IAAc;IAC9B,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,SAAS,CAAC,KAAgB;IACjC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC5F,CAAC;AAED,SAAS,OAAO,CAAC,IAAgB;IAC/B,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,CAAC;AAED,SAAS,UAAU,CAAC,MAAkB;IACpC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC;QAClD,IAAI;QACJ;YACE,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,OAAO,EACL,WAAW,CAAC,OAAO,KAAK,SAAS;gBAC/B,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;SACtE;KACF,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,EAAO,EAAE,IAAc;IAClE,OAAO,OAAO,CAAC;QACb,IAAI,EAAE,IAAI,CAAC,WAAW;QACtB,OAAO;QACP,GAAG,QAAQ,CAAC,IAAI,CAAC;QACjB,MAAM,EAAE,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC;KACjC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAgB;IAC5C,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAiB;IAC/C,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,CAAC"}
|
package/dist/help.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import type { CommandSpec, GroupSpec } from "./command-spec.js";
|
|
1
|
+
import type { CommandSpec, GroupSpec, SpecNode } from "./command-spec.js";
|
|
2
|
+
import type { Cli } from "./define.js";
|
|
2
3
|
import type { Style } from "./style.js";
|
|
3
|
-
|
|
4
|
+
/** The CLI's own help: a listing or its single Command's help, ending with exit codes and examples. */
|
|
5
|
+
export declare function cliHelp(cli: Cli, root: SpecNode, style: Style): string;
|
|
4
6
|
export declare function groupHelp(group: GroupSpec, style: Style): string;
|
|
5
7
|
export declare function commandHelp(spec: CommandSpec, style: Style): string;
|
package/dist/help.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EXIT_CODES, reachableExitClasses, SIGNAL_EXIT_CODES } from "./exit-classes.js";
|
|
1
2
|
function table(rows) {
|
|
2
3
|
const width = Math.max(...rows.map(([left]) => left.length));
|
|
3
4
|
return rows.map(([left, right]) => right === "" ? ` ${left}` : ` ${left.padEnd(width)} ${right}`);
|
|
@@ -16,19 +17,62 @@ function commandRows({ commands }) {
|
|
|
16
17
|
function lines(...parts) {
|
|
17
18
|
return `${parts.join("\n")}\n`;
|
|
18
19
|
}
|
|
19
|
-
function
|
|
20
|
-
return
|
|
20
|
+
function listingLines(heading, group, style) {
|
|
21
|
+
return [
|
|
22
|
+
style.bold(heading),
|
|
23
|
+
...section("Commands", commandRows(group), style),
|
|
24
|
+
"",
|
|
25
|
+
`Run \`${group.commandLine} <command> --help\` for its examples and input.`,
|
|
26
|
+
];
|
|
21
27
|
}
|
|
22
|
-
|
|
23
|
-
|
|
28
|
+
// The same opening words in every CLI's help, so an agent recognises a class at once (ADR 0005).
|
|
29
|
+
const EXIT_MEANINGS = {
|
|
30
|
+
caller: "the caller fixes its command",
|
|
31
|
+
operator: "the operator acts on their machine",
|
|
32
|
+
source: "someone at the source acts",
|
|
33
|
+
wait: "nobody acts: wait, then run it again",
|
|
34
|
+
};
|
|
35
|
+
function exitCodeRows(cli) {
|
|
36
|
+
const failures = [
|
|
37
|
+
...[...reachableExitClasses(cli)].map((exitClass) => [EXIT_CODES[exitClass], EXIT_MEANINGS[exitClass]]),
|
|
38
|
+
[EXIT_CODES.bug, `a bug in ${cli.name}`],
|
|
39
|
+
];
|
|
40
|
+
return [
|
|
41
|
+
["0", "done"],
|
|
42
|
+
...failures.sort(([a], [b]) => a - b).map(([code, meaning]) => [String(code), meaning]),
|
|
43
|
+
[Object.values(SIGNAL_EXIT_CODES).join(", "), "interrupted"],
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
function firstExample(node) {
|
|
47
|
+
if (node.kind === "command")
|
|
48
|
+
return node.examples.slice(0, 1);
|
|
49
|
+
return Object.values(node.commands).flatMap(firstExample).slice(0, 1);
|
|
50
|
+
}
|
|
51
|
+
// ADR 0002 of repo-harness: the last example is `doctor`, where an agent goes when a run fails.
|
|
52
|
+
function rootExamples(root) {
|
|
53
|
+
if (root.kind === "command")
|
|
54
|
+
return [...root.examples];
|
|
55
|
+
const { doctor, ...others } = root.commands;
|
|
56
|
+
return [...Object.values(others), ...(doctor === undefined ? [] : [doctor])].flatMap(firstExample);
|
|
57
|
+
}
|
|
58
|
+
function examplesSection(examples, style) {
|
|
59
|
+
return section("Examples", examples.map(({ command, note }) => [command, note]), style);
|
|
60
|
+
}
|
|
61
|
+
/** The CLI's own help: a listing or its single Command's help, ending with exit codes and examples. */
|
|
62
|
+
export function cliHelp(cli, root, style) {
|
|
63
|
+
const body = root.kind === "command"
|
|
64
|
+
? commandLines(root, style, { examples: false })
|
|
65
|
+
: listingLines(`${root.commandLine} ${cli.version}`, root, style);
|
|
66
|
+
return lines(...body, ...section("Exit codes", exitCodeRows(cli), style), ...examplesSection(rootExamples(root), style));
|
|
24
67
|
}
|
|
25
68
|
export function groupHelp(group, style) {
|
|
26
|
-
return
|
|
69
|
+
return lines(...listingLines(group.commandLine, group, style));
|
|
27
70
|
}
|
|
28
71
|
const EFFECT_NOTES = {
|
|
29
72
|
read: "changes nothing",
|
|
30
73
|
write: "changes something; show the Plan with --dry-run",
|
|
31
74
|
destructive: "changes something hard to undo; show the Plan with --dry-run, run with --confirm",
|
|
75
|
+
serve: "changes nothing; prints its data at once, then runs until Ctrl-C, which exits 0",
|
|
32
76
|
};
|
|
33
77
|
function choicesOf(field) {
|
|
34
78
|
return field.choices === undefined ? [] : [`one of: ${field.choices.join(", ")}`];
|
|
@@ -58,7 +102,19 @@ function optionRow(field) {
|
|
|
58
102
|
function flagRow({ usage, description }) {
|
|
59
103
|
return [usage, description];
|
|
60
104
|
}
|
|
105
|
+
function commandLines(spec, style, { examples }) {
|
|
106
|
+
return [
|
|
107
|
+
style.bold(spec.commandLine),
|
|
108
|
+
spec.description,
|
|
109
|
+
...(examples ? examplesSection(spec.examples, style) : []),
|
|
110
|
+
...section("Arguments", spec.args.map(argRow), style),
|
|
111
|
+
...section("Options", spec.options.map(optionRow), style),
|
|
112
|
+
"",
|
|
113
|
+
`${style.bold("Effect:")} ${spec.effect} (${EFFECT_NOTES[spec.effect]})`,
|
|
114
|
+
...section("Standard flags", spec.standardFlags.map(flagRow), style),
|
|
115
|
+
];
|
|
116
|
+
}
|
|
61
117
|
export function commandHelp(spec, style) {
|
|
62
|
-
return lines(
|
|
118
|
+
return lines(...commandLines(spec, style, { examples: true }));
|
|
63
119
|
}
|
|
64
120
|
//# sourceMappingURL=help.js.map
|
package/dist/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export
|
|
3
|
-
export {
|
|
4
|
-
export type {
|
|
1
|
+
export type { AgentCli } from "./agent-cli.js";
|
|
2
|
+
export { agentCli } from "./agent-cli.js";
|
|
3
|
+
export type { Clock } from "./clock.js";
|
|
4
|
+
export type { Cli, Command, Commands, Context, DefineCommand, DestructiveCommand, DoctorCheck, DoctorFinding, Env, Example, GlobalInstall, ListCommand, NoPorts, PollOptions, PortsBase, Project, ProjectFile, ReadCommand, RunDeadline, ServeCommand, Tool, WriteCommand, } from "./define.js";
|
|
5
|
+
export { ALREADY_EXISTS, DISK_FULL, NOT_FOUND, PERMISSION_DENIED } from "./errno.js";
|
|
6
|
+
export type { CliErrorInit, DeclaredExitClass, ErrorDeclaration, ErrorTable, } from "./error-table.js";
|
|
7
|
+
export { cliError, defineErrors } from "./error-table.js";
|
|
8
|
+
export type { CliErrorFields, UsageErrorFields } from "./errors.js";
|
|
5
9
|
export { CliError, debugVariable, UsageError } from "./errors.js";
|
|
10
|
+
export type { Files, MkdirOptions } from "./files.js";
|
|
6
11
|
export type { Page, PageInput } from "./list.js";
|
|
7
12
|
export { paginate } from "./list.js";
|
|
8
13
|
export type { RunResult } from "./output.js";
|
|
9
14
|
export type { RunOptions } from "./run-cli.js";
|
|
10
15
|
export { runCli } from "./run-cli.js";
|
|
11
16
|
export { runProcess } from "./run-process.js";
|
|
17
|
+
export type { Secret, SecretOrigin } from "./secrets.js";
|
|
18
|
+
export type { Spawn, SpawnOptions, SpawnResult } from "./spawn.js";
|
|
12
19
|
export type { Style } from "./style.js";
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { agentCli } from "./agent-cli.js";
|
|
2
|
+
export { ALREADY_EXISTS, DISK_FULL, NOT_FOUND, PERMISSION_DENIED } from "./errno.js";
|
|
3
|
+
export { cliError, defineErrors } from "./error-table.js";
|
|
3
4
|
export { CliError, debugVariable, UsageError } from "./errors.js";
|
|
4
5
|
export { paginate } from "./list.js";
|
|
5
6
|
export { runCli } from "./run-cli.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AA0B1C,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAOrF,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGlE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/input.d.ts
CHANGED
|
@@ -11,6 +11,8 @@ export interface InputField {
|
|
|
11
11
|
readonly defaultValue: unknown;
|
|
12
12
|
readonly description: string | undefined;
|
|
13
13
|
readonly choices: readonly string[] | undefined;
|
|
14
|
+
/** An arg whose schema is `z.array(...)`, taking every remaining operand; `type` and `choices` are its element's. */
|
|
15
|
+
readonly variadic: boolean;
|
|
14
16
|
/** How the caller names it: `<name>` for an arg, `--name` or `--no-name` for an option. */
|
|
15
17
|
readonly label: string;
|
|
16
18
|
/** How the caller passes it: the label plus a value placeholder such as `<value>` or `<a|b>`. */
|
|
@@ -19,4 +21,6 @@ export interface InputField {
|
|
|
19
21
|
export declare function kebab(key: string): string;
|
|
20
22
|
export declare function optionField(key: string, schema: z.ZodType): InputField;
|
|
21
23
|
export declare function argFields(schema: InputSchema | undefined): InputField[];
|
|
24
|
+
/** Throws when an arg that takes every remaining operand is not the last arg. */
|
|
25
|
+
export declare function checkArrayArgLast(name: string, args: InputSchema | undefined): void;
|
|
22
26
|
export declare function optionFields(schema: InputSchema | undefined): InputField[];
|
package/dist/input.js
CHANGED
|
@@ -28,17 +28,29 @@ function describe(schema) {
|
|
|
28
28
|
current = current.unwrap();
|
|
29
29
|
description ??= current.description;
|
|
30
30
|
}
|
|
31
|
+
const variadic = current instanceof z.ZodArray;
|
|
32
|
+
if (current instanceof z.ZodArray) {
|
|
33
|
+
current = current.element;
|
|
34
|
+
}
|
|
31
35
|
return {
|
|
32
36
|
type: typeOf(current),
|
|
33
37
|
required,
|
|
34
38
|
defaultValue,
|
|
35
39
|
description,
|
|
36
40
|
choices: current instanceof z.ZodEnum ? current.options.map(String) : undefined,
|
|
41
|
+
variadic,
|
|
37
42
|
};
|
|
38
43
|
}
|
|
44
|
+
function argLabel(key, { variadic, required }) {
|
|
45
|
+
if (!variadic) {
|
|
46
|
+
return `<${key}>`;
|
|
47
|
+
}
|
|
48
|
+
return required ? `<${key}...>` : `[${key}...]`;
|
|
49
|
+
}
|
|
39
50
|
function argField(key, schema) {
|
|
40
|
-
const
|
|
41
|
-
|
|
51
|
+
const described = describe(schema);
|
|
52
|
+
const label = argLabel(key, described);
|
|
53
|
+
return { key, name: key, schema, ...described, label, usage: label };
|
|
42
54
|
}
|
|
43
55
|
export function optionField(key, schema) {
|
|
44
56
|
const described = describe(schema);
|
|
@@ -57,6 +69,16 @@ function fieldsOf(schema, toField) {
|
|
|
57
69
|
export function argFields(schema) {
|
|
58
70
|
return fieldsOf(schema, argField);
|
|
59
71
|
}
|
|
72
|
+
/** Throws when an arg that takes every remaining operand is not the last arg. */
|
|
73
|
+
export function checkArrayArgLast(name, args) {
|
|
74
|
+
const misplaced = argFields(args)
|
|
75
|
+
.slice(0, -1)
|
|
76
|
+
.filter((field) => field.variadic);
|
|
77
|
+
if (misplaced.length > 0) {
|
|
78
|
+
const keys = misplaced.map(({ key }) => `'${key}'`).join(", ");
|
|
79
|
+
throw new Error(`Command '${name}' declares array arg ${keys} before its last arg; only the last arg may be an array`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
60
82
|
export function optionFields(schema) {
|
|
61
83
|
return fieldsOf(schema, optionField);
|
|
62
84
|
}
|
package/dist/input.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../src/input.ts"],"names":[],"mappings":"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"}
|
package/dist/interrupts.d.ts
CHANGED
|
@@ -1,13 +1,27 @@
|
|
|
1
|
+
import { type Clock } from "./clock.js";
|
|
2
|
+
export declare const INTERRUPTED = "INTERRUPTED";
|
|
3
|
+
export declare const DEADLINE_EXCEEDED = "DEADLINE_EXCEEDED";
|
|
1
4
|
/** How long an interrupted Command may take to settle before the run ends without it. */
|
|
2
5
|
export declare const GRACE_MS = 3000;
|
|
3
|
-
export
|
|
6
|
+
export interface RunControlOptions {
|
|
7
|
+
readonly commandLine: string;
|
|
8
|
+
/** The caller's signal, whose abort interrupts the run. */
|
|
9
|
+
readonly outer: AbortSignal | undefined;
|
|
10
|
+
readonly clock: Clock;
|
|
11
|
+
readonly progress: (message: string) => void;
|
|
12
|
+
/** The whole run's deadline and the hint, naming the resume command line, it ends with. */
|
|
13
|
+
readonly runDeadline: {
|
|
14
|
+
readonly ms: number;
|
|
15
|
+
readonly hint: string;
|
|
16
|
+
} | undefined;
|
|
17
|
+
}
|
|
4
18
|
/** One Command run's cancellation: its signal, its deadlines and the steps it must finish. */
|
|
5
19
|
export declare class RunControl {
|
|
6
20
|
#private;
|
|
7
21
|
readonly signal: AbortSignal;
|
|
8
|
-
constructor(commandLine
|
|
22
|
+
constructor({ commandLine, outer, clock, progress, runDeadline }: RunControlOptions);
|
|
9
23
|
deadline(ms: number): AbortSignal;
|
|
10
|
-
runToEnd<T>(work: () => Promise<T>): Promise<T>;
|
|
24
|
+
runToEnd<T>(name: string, work: () => Promise<T>): Promise<T>;
|
|
11
25
|
/** Waits for the Command, its must-finish steps, and no longer than the grace once interrupted. */
|
|
12
26
|
settle<T>(work: Promise<T>): Promise<T>;
|
|
13
27
|
/**
|