@duyquangnvx/create-agent-cli 0.24.0 → 0.26.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 +16 -0
- package/dist/bin.js +17 -7
- package/package.json +2 -2
- package/partials/global/installLines.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,22 @@ What changed in each release of `@duyquangnvx/agent-cli` (the Runtime) and `@duy
|
|
|
4
4
|
|
|
5
5
|
## Unreleased
|
|
6
6
|
|
|
7
|
+
## v0.26.0 (2026-11-06)
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- `ctx.dryRun` tells a Command whether the run is a dry run: true only in the `plan` of a run given `--dry-run`, false in `apply` and in every Command without a Plan. A plan whose reads change something of their own, such as a stored login, can skip that change without reading the command line.
|
|
12
|
+
|
|
13
|
+
## v0.25.0 (2026-11-05)
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- **Breaking:** a failure of Exit class `wait`, such as `DEADLINE_EXCEEDED` or a pending approval, prints `wait:` rather than `error:` in text mode, in yellow, since nothing is broken yet. Its exit code, hint, Next steps and `--json` form stay as they were. Root help describes exit 75 as "not done yet: do what the hint says, then run it again". A CLI whose tests pin these strings updates them.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- The Scaffolder's README sentence to paste keeps its `<your task>` placeholder when rendered. A CLI that exists already adds the backticks to that line in its README.
|
|
22
|
+
|
|
7
23
|
## v0.24.0 (2026-11-05)
|
|
8
24
|
|
|
9
25
|
### Added
|
package/dist/bin.js
CHANGED
|
@@ -6033,11 +6033,15 @@ function printedDetail(error, format) {
|
|
|
6033
6033
|
const value = Reflect.get(details, key);
|
|
6034
6034
|
return typeof value === "string" ? value : void 0;
|
|
6035
6035
|
}
|
|
6036
|
+
function labelOf(error, { isBug, isWait, style }) {
|
|
6037
|
+
if (isWait(error)) return style.yellow("wait:");
|
|
6038
|
+
return style.red(isBug(error) ? "internal error:" : "error:");
|
|
6039
|
+
}
|
|
6036
6040
|
function errorLines(error, format) {
|
|
6037
6041
|
const fields = fieldsOf$1(error, format);
|
|
6038
6042
|
const blocks = [printedDetail(error, format), debugTrace(error, format)].filter((block) => block !== void 0);
|
|
6039
6043
|
const { style } = format;
|
|
6040
|
-
const label =
|
|
6044
|
+
const label = labelOf(error, format);
|
|
6041
6045
|
const between = blocks.map((block) => `${block}\n`).join("");
|
|
6042
6046
|
const runs = (fields.next ?? []).map((line) => `${style.cyan("run:")} ${line}\n`).join("");
|
|
6043
6047
|
return `${label} ${fields.message}\n${between}${style.cyan("hint:")} ${fields.hint}\n${runs}`;
|
|
@@ -7085,9 +7089,9 @@ function secretRows(secrets, commands) {
|
|
|
7085
7089
|
/** The bundler's stamp, absent when the CLI runs unbundled. Read per call, so a test can define it. */
|
|
7086
7090
|
function buildStamp() {
|
|
7087
7091
|
return {
|
|
7088
|
-
"sha": "
|
|
7092
|
+
"sha": "ed7073b",
|
|
7089
7093
|
"dirty": false,
|
|
7090
|
-
"builtAt": "2026-11-
|
|
7094
|
+
"builtAt": "2026-11-06T05:43:19.000Z"
|
|
7091
7095
|
};
|
|
7092
7096
|
}
|
|
7093
7097
|
/** The first line of `--version`: the version, and the commit and time of a stamped build. */
|
|
@@ -9367,6 +9371,9 @@ function exitClassOfOne(error, errors) {
|
|
|
9367
9371
|
function isBug(error, errors) {
|
|
9368
9372
|
return exitClassOfOne(error, errors) === "bug";
|
|
9369
9373
|
}
|
|
9374
|
+
function isWait(error, errors) {
|
|
9375
|
+
return exitClassOfOne(error, errors) === "wait";
|
|
9376
|
+
}
|
|
9370
9377
|
const ACT_FIRST = [
|
|
9371
9378
|
"caller",
|
|
9372
9379
|
"operator",
|
|
@@ -10023,7 +10030,7 @@ const EXIT_MEANINGS = {
|
|
|
10023
10030
|
caller: "the caller fixes its command",
|
|
10024
10031
|
operator: "the operator acts on their machine",
|
|
10025
10032
|
source: "someone at the source acts",
|
|
10026
|
-
wait: "
|
|
10033
|
+
wait: "not done yet: do what the hint says, then run it again"
|
|
10027
10034
|
};
|
|
10028
10035
|
function exitCodeRows(cli) {
|
|
10029
10036
|
return [
|
|
@@ -10207,7 +10214,8 @@ function errorText(error, format) {
|
|
|
10207
10214
|
const text = formatRuntimeError(error, {
|
|
10208
10215
|
...format,
|
|
10209
10216
|
runAs: format.invocation.runAs,
|
|
10210
|
-
isBug: (each) => isBug(each, format.errors)
|
|
10217
|
+
isBug: (each) => isBug(each, format.errors),
|
|
10218
|
+
isWait: (each) => isWait(each, format.errors)
|
|
10211
10219
|
});
|
|
10212
10220
|
const { usageHelp, json } = format;
|
|
10213
10221
|
return usageHelp !== void 0 && !json && error instanceof UsageError ? `${text}\n${usageHelp}` : text;
|
|
@@ -11231,7 +11239,7 @@ function portsBaseOf(scope, signal) {
|
|
|
11231
11239
|
};
|
|
11232
11240
|
}
|
|
11233
11241
|
function contextOf(portsBase, control, parts) {
|
|
11234
|
-
const { ports, project, force, secrets = [], rerun, deliver, notice } = parts;
|
|
11242
|
+
const { ports, project, force, dryRun, secrets = [], rerun, deliver, notice } = parts;
|
|
11235
11243
|
const declared = new Set(secrets.map(({ name }) => name));
|
|
11236
11244
|
return {
|
|
11237
11245
|
...portsBase,
|
|
@@ -11249,6 +11257,7 @@ function contextOf(portsBase, control, parts) {
|
|
|
11249
11257
|
},
|
|
11250
11258
|
project,
|
|
11251
11259
|
force,
|
|
11260
|
+
dryRun,
|
|
11252
11261
|
rerun,
|
|
11253
11262
|
poll: (check, { intervalMs, signal: stop }) => poll(portsBase.clock, check, intervalMs, stop === void 0 ? control.signal : AbortSignal.any([control.signal, stop])),
|
|
11254
11263
|
deliver,
|
|
@@ -11372,6 +11381,7 @@ async function runCommand(cli, routed, options, write, baseFormat) {
|
|
|
11372
11381
|
ports: once(() => ports(portsBase)),
|
|
11373
11382
|
project,
|
|
11374
11383
|
force: flags.force,
|
|
11384
|
+
dryRun: flags.dryRun,
|
|
11375
11385
|
secrets: command.secrets,
|
|
11376
11386
|
rerun: rerunOf,
|
|
11377
11387
|
notice: (text) => write.stderr(noticeLine(text, routed.json)),
|
|
@@ -11604,7 +11614,7 @@ async function runProcess(cli) {
|
|
|
11604
11614
|
//#region package.json
|
|
11605
11615
|
var package_default = {
|
|
11606
11616
|
name: "@duyquangnvx/create-agent-cli",
|
|
11607
|
-
version: "0.
|
|
11617
|
+
version: "0.26.0",
|
|
11608
11618
|
description: "Creates a new Agent CLI repository wired to @duyquangnvx/agent-cli.",
|
|
11609
11619
|
type: "module",
|
|
11610
11620
|
engines: { "node": ">=22.12.0" },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@duyquangnvx/create-agent-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.26.0",
|
|
4
4
|
"description": "Creates a new Agent CLI repository wired to @duyquangnvx/agent-cli.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"access": "public"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@duyquangnvx/agent-cli": "0.
|
|
24
|
+
"@duyquangnvx/agent-cli": "0.26.0",
|
|
25
25
|
"tsdown": "0.23.0",
|
|
26
26
|
"zod": "4.6.7"
|
|
27
27
|
},
|