@duyquangnvx/create-agent-cli 0.16.0 → 0.17.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 +11 -0
- package/dist/bin.js +6 -4
- package/package.json +2 -2
- package/template/AGENTS.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,17 @@ What changed in each release of `@duyquangnvx/agent-cli` (the Runtime) and `@duy
|
|
|
4
4
|
|
|
5
5
|
## Unreleased
|
|
6
6
|
|
|
7
|
+
## v0.17.0 (2026-10-27)
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- A fifth Effect, `act`, for a Command that changes the state of a program already running, such as a page in a browser tab, rather than files or remote services. It is declared as a read Command is, with `run` and the new `ActCommand` type, and cannot declare a Plan or `rows`. Its help says so and that running it again may act again, its `--help --json` gives `"effect": "act"`, and of the Standard flags it gets only `--json`. The agent-cli skill says when to pick `act` over `read` and `write`.
|
|
12
|
+
- The Scaffolder's `AGENTS.md` names the `act` and `serve` Effects beside `read`, `write` and `destructive`.
|
|
13
|
+
|
|
14
|
+
### Upgrade from v0.16.0
|
|
15
|
+
|
|
16
|
+
- Nothing to do.
|
|
17
|
+
|
|
7
18
|
## v0.16.0 (2026-10-27)
|
|
8
19
|
|
|
9
20
|
### Changed
|
package/dist/bin.js
CHANGED
|
@@ -6429,6 +6429,7 @@ const FORCE_FLAG = standardFlag("--force", {
|
|
|
6429
6429
|
});
|
|
6430
6430
|
const EFFECT_FLAGS = {
|
|
6431
6431
|
read: [JSON_FLAG],
|
|
6432
|
+
act: [JSON_FLAG],
|
|
6432
6433
|
write: [JSON_FLAG, DRY_RUN_FLAG],
|
|
6433
6434
|
destructive: [
|
|
6434
6435
|
JSON_FLAG,
|
|
@@ -9115,6 +9116,7 @@ function groupHelp(group, style) {
|
|
|
9115
9116
|
}
|
|
9116
9117
|
const EFFECT_NOTES = {
|
|
9117
9118
|
read: "changes nothing",
|
|
9119
|
+
act: "changes the state of a running program, not files or services; may act again each time it runs",
|
|
9118
9120
|
write: "changes something; show the Plan with --dry-run",
|
|
9119
9121
|
destructive: "changes something hard to undo; show the Plan with --dry-run, run with --confirm",
|
|
9120
9122
|
serve: "changes nothing; prints its data at once, then runs until Ctrl-C, which exits 0"
|
|
@@ -9504,7 +9506,7 @@ async function execute(command, input, ctx, { dryRun, confirm, yes, page, invoca
|
|
|
9504
9506
|
...input,
|
|
9505
9507
|
...page
|
|
9506
9508
|
}, ctx), (data, style) => command.render(data, style));
|
|
9507
|
-
if (command.effect === "read") return outcomeOf(await command.run(input, ctx), (data, style) => command.render(data, style));
|
|
9509
|
+
if (command.effect === "read" || command.effect === "act") return outcomeOf(await command.run(input, ctx), (data, style) => command.render(data, style));
|
|
9508
9510
|
if (command.effect === "serve") {
|
|
9509
9511
|
let end = () => {};
|
|
9510
9512
|
const ended = new Promise((resolve) => {
|
|
@@ -10253,14 +10255,14 @@ async function runProcess(cli) {
|
|
|
10253
10255
|
}
|
|
10254
10256
|
//#endregion
|
|
10255
10257
|
//#region package.json
|
|
10256
|
-
var version$1 = "0.
|
|
10258
|
+
var version$1 = "0.17.0";
|
|
10257
10259
|
var description = "Creates a new Agent CLI repository wired to @duyquangnvx/agent-cli.";
|
|
10258
10260
|
//#endregion
|
|
10259
10261
|
//#region src/build.ts
|
|
10260
10262
|
const build = {
|
|
10261
|
-
"sha": "
|
|
10263
|
+
"sha": "8bb3938",
|
|
10262
10264
|
"dirty": false,
|
|
10263
|
-
"builtAt": "2026-10-27T10:
|
|
10265
|
+
"builtAt": "2026-10-27T10:54:44.000Z"
|
|
10264
10266
|
};
|
|
10265
10267
|
//#endregion
|
|
10266
10268
|
//#region src/fill.ts
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@duyquangnvx/create-agent-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0",
|
|
4
4
|
"description": "Creates a new Agent CLI repository wired to @duyquangnvx/agent-cli.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"access": "public"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@duyquangnvx/agent-cli": "0.
|
|
23
|
+
"@duyquangnvx/agent-cli": "0.17.0",
|
|
24
24
|
"tsdown": "0.23.0",
|
|
25
25
|
"zod": "4.6.7"
|
|
26
26
|
},
|
package/template/AGENTS.md
CHANGED
|
@@ -19,7 +19,7 @@ Greenfield with no deployments or users: change code directly. Breaking changes
|
|
|
19
19
|
## Coding standards
|
|
20
20
|
|
|
21
21
|
- Every Command is declared in `src/cli.ts` with the `defineCommand` that `agentCli<Ports>()` returns: a description, realistic examples, Zod schemas for args and options (with `.describe()` on each field), and its Effect.
|
|
22
|
-
- A Command never prints. A `read` Command returns data from `run` and turns it into short text in `render`. A `write` or `destructive` Command returns a Plan from `plan`, with no side effects, and performs it in `apply`; the Runtime adds `--dry-run`, and `--confirm` for a destructive one.
|
|
22
|
+
- A Command never prints. A `read` Command returns data from `run` and turns it into short text in `render`. An `act` Command, which changes the state of a program already running rather than files or services, does the same with no Plan. A `write` or `destructive` Command returns a Plan from `plan`, with no side effects, and performs it in `apply`; the Runtime adds `--dry-run`, and `--confirm` for a destructive one. A `serve` Command returns data from `start` and keeps running until `ctx.signal` aborts.
|
|
23
23
|
- A Command that writes files names them in `outputs(plan)`, and the Runtime refuses to overwrite one without `--force`. A Command that costs money states it in `cost(plan)`, a sentence or `undefined` when cheap, and the Runtime refuses a costly run without `--yes`.
|
|
24
24
|
- A Command reaches a remote service through a port: an interface in `src/ports.ts`, built by the `ports` factory passed to `defineCli` and read as `ctx.ports`. It writes files through `ctx.files` and runs programs through `ctx.spawn`, so a test replaces each of them.
|
|
25
25
|
- Every error code is declared once in a `defineErrors` table passed to `defineCli({ errors })`, with the Exit class that must act on it and an optional `details` schema, and thrown through `cliError(errors, code, { message, hint })`, whose `hint` names the command to run next. An undeclared code, and anything else thrown, becomes an internal error (exit 70), whose stack trace `{{debugVariable}}=1` shows.
|