@guiho/runx 0.4.0 → 0.4.1
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 +12 -0
- package/docs/reviews/implementation/implementation.xdocs.md +2 -2
- package/docs/reviews/implementation/rfc-0034-cli-compliance-migration-review.md +13 -3
- package/docs/todo/rfc-0034-cli-compliance-migration-implementation.md +20 -1
- package/docs/todo/rfc-0034-cli-compliance-migration.md +2 -1
- package/docs/todo/todo.xdocs.md +2 -2
- package/docs/validation/rfc-0034-cli-compliance-migration.md +21 -5
- package/docs/validation/validation.xdocs.md +2 -2
- package/library/agents.d.ts +2 -1
- package/library/agents.d.ts.map +1 -1
- package/library/cli.d.ts.map +1 -1
- package/library/cli.js +27 -9
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -15,6 +15,18 @@ owner: runx
|
|
|
15
15
|
|
|
16
16
|
# Changelog
|
|
17
17
|
|
|
18
|
+
## 0.4.1 - 2026-07-18
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- Fixed `runx upgrade` so its required `--version`, `--arch`, `--variant`,
|
|
23
|
+
`--dry-run`, and `--format` flags route to the upgrade action instead of
|
|
24
|
+
being hidden by the command group or intercepted as the root version flag.
|
|
25
|
+
- Fixed no-argument startup so a decoded cached update notice is printed before
|
|
26
|
+
the exact RunX banner without waiting for network work.
|
|
27
|
+
- Fixed `runx agent prompt list --names` text output so it prints raw prompt
|
|
28
|
+
names, one per line, while JSON mode remains structured.
|
|
29
|
+
|
|
18
30
|
## 0.4.0 - 2026-07-18
|
|
19
31
|
|
|
20
32
|
### Added
|
|
@@ -7,12 +7,12 @@ files:
|
|
|
7
7
|
citty-cli-migration-review.md: Reviews the implemented Citty command tree, compatibility adapter, tests, documentation, packaging, and release readiness.
|
|
8
8
|
interactive-init-manifest-review.md: Reviews the implemented RunX initializer, strict manifest contract, tests, documentation, and delivery readiness.
|
|
9
9
|
windows-self-upgrade-review.md: Reviews synchronous Windows replacement, rollback, cleanup, tests, CI coverage, and release readiness.
|
|
10
|
-
rfc-0034-cli-compliance-migration-review.md: Accepts the
|
|
10
|
+
rfc-0034-cli-compliance-migration-review.md: Accepts the RFC 0034 migration after independent upgrade-routing, cached-notice, prompt-output, asset, and release-readiness corrections.
|
|
11
11
|
documents:
|
|
12
12
|
citty-cli-migration-review.md: Accepted implementation review for the full Citty CLI migration.
|
|
13
13
|
interactive-init-manifest-review.md: Accepted implementation review for the RunX interactive init manifest feature.
|
|
14
14
|
windows-self-upgrade-review.md: Accepted implementation review for the Windows native self-upgrade fix.
|
|
15
|
-
rfc-0034-cli-compliance-migration-review.md: Accepted implementation review for RX-01 through RX-16.
|
|
15
|
+
rfc-0034-cli-compliance-migration-review.md: Accepted implementation and independent correction review for RX-01 through RX-16.
|
|
16
16
|
tags:
|
|
17
17
|
- reviews
|
|
18
18
|
- implementation
|
|
@@ -31,6 +31,15 @@ JSON output, directory existence checking initially rejected valid command
|
|
|
31
31
|
working directories, and legacy Windows cleanup tests waited indefinitely.
|
|
32
32
|
Focused tests now cover each corrected behavior.
|
|
33
33
|
|
|
34
|
+
An independent post-release audit then found and corrected three additional
|
|
35
|
+
contract defects: the public upgrade flags were unreachable through the Citty
|
|
36
|
+
group and root `--version` intercepted the nested version selector;
|
|
37
|
+
no-argument startup skipped the decoded cached update notice; and text-mode
|
|
38
|
+
prompt names rendered as a JSON array. The corrected CLI routes all upgrade
|
|
39
|
+
flags through `runx upgrade`, prints a cached notice before the banner without
|
|
40
|
+
network work, and prints raw names one per line. Live-routing regression tests
|
|
41
|
+
cover each path.
|
|
42
|
+
|
|
34
43
|
## Acceptance Criteria Check
|
|
35
44
|
|
|
36
45
|
- Mandatory Bun, TypeScript, Citty, and TypeBox stack: accepted.
|
|
@@ -48,9 +57,10 @@ Focused tests now cover each corrected behavior.
|
|
|
48
57
|
|
|
49
58
|
## Residual Risk
|
|
50
59
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
60
|
+
Package publication and GitHub Release creation remain tag-triggered workflow
|
|
61
|
+
effects rather than direct local actions. The patch release validates the
|
|
62
|
+
workflow inputs and exact asset set locally; the protected production workflow
|
|
63
|
+
still owns publication.
|
|
54
64
|
|
|
55
65
|
## References
|
|
56
66
|
|
|
@@ -49,7 +49,26 @@ npm bootstrap, and the exact fourteen release assets.
|
|
|
49
49
|
The original unbounded suite hung in legacy process-oriented tests. The
|
|
50
50
|
individual CLI baseline passed 10/10, proving the CLI was not persistently
|
|
51
51
|
stuck. The obsolete tests were replaced or bounded; the final complete suite
|
|
52
|
-
runs
|
|
52
|
+
runs 40 tests and exits normally in about 30 seconds.
|
|
53
|
+
|
|
54
|
+
## Independent Audit Corrections
|
|
55
|
+
|
|
56
|
+
The final independent RFC audit found three public-surface defects that the
|
|
57
|
+
first validation suite did not exercise:
|
|
58
|
+
|
|
59
|
+
- the `upgrade` group hid its apply flags and allowed root `--version` handling
|
|
60
|
+
to intercept `runx upgrade --version <version>`;
|
|
61
|
+
- no-argument startup skipped the cached update notice;
|
|
62
|
+
- text-mode `agent prompt list --names` rendered a JSON array instead of raw
|
|
63
|
+
names.
|
|
64
|
+
|
|
65
|
+
The correction keeps `upgrade check` and `upgrade list`, makes the public
|
|
66
|
+
`upgrade` command own and execute all RFC flags directly, gates root version
|
|
67
|
+
handling to a one-token root invocation, reads the local cache before the
|
|
68
|
+
no-argument banner, and emits one raw prompt name per line. Focused tests invoke
|
|
69
|
+
the real Citty routing and output paths. The ignored `bin/runx.exe` left by a
|
|
70
|
+
single-binary build was removed before exact-asset verification; the strict
|
|
71
|
+
fourteen-name comparison remains unchanged.
|
|
53
72
|
|
|
54
73
|
## References
|
|
55
74
|
|
|
@@ -69,7 +69,8 @@ RFC-named binaries plus `guiho-s-runx` and `guiho-i-runx`.
|
|
|
69
69
|
## Acceptance Signals
|
|
70
70
|
|
|
71
71
|
- No prohibited Node built-ins exist in core CLI source.
|
|
72
|
-
- No arguments prints
|
|
72
|
+
- No arguments prints a decoded cached update notice first when one is
|
|
73
|
+
available, followed by exactly `Hello Windows - runx v<version>`.
|
|
73
74
|
- `runx.yaml` resolves only by `--config`, effective cwd, then the standardized
|
|
74
75
|
global path, and prints its absolute loaded path.
|
|
75
76
|
- TypeBox decodes configuration, cache, remote releases, structured flags, and
|
package/docs/todo/todo.xdocs.md
CHANGED
|
@@ -6,11 +6,11 @@ children: []
|
|
|
6
6
|
files:
|
|
7
7
|
protect-branches-and-tag-creation.md: Records the verified active GitHub branch and release-tag rulesets for RunX.
|
|
8
8
|
rfc-0034-cli-compliance-migration.md: Defines the required breaking migration outcome, scope, constraints, and completion signals for full RFC 0034 compliance.
|
|
9
|
-
rfc-0034-cli-compliance-migration-implementation.md: Records the delivered RX units, implementation map,
|
|
9
|
+
rfc-0034-cli-compliance-migration-implementation.md: Records the delivered RX units, implementation map, test-hang diagnosis, and independent audit corrections.
|
|
10
10
|
documents:
|
|
11
11
|
protect-branches-and-tag-creation.md: Completed task specification with active RunX ruleset IDs, protected patterns, and verification evidence.
|
|
12
12
|
rfc-0034-cli-compliance-migration.md: Task specification linked from TODO task 1 for the full RunX CLI contract migration.
|
|
13
|
-
rfc-0034-cli-compliance-migration-implementation.md: Completed implementation and validation handoff for TODO task 1.
|
|
13
|
+
rfc-0034-cli-compliance-migration-implementation.md: Completed implementation, independent correction, and validation handoff for TODO task 1.
|
|
14
14
|
tags:
|
|
15
15
|
- todo
|
|
16
16
|
keywords:
|
|
@@ -10,7 +10,7 @@ tags:
|
|
|
10
10
|
- cli
|
|
11
11
|
keywords:
|
|
12
12
|
- RFC 0034
|
|
13
|
-
-
|
|
13
|
+
- 40 tests
|
|
14
14
|
- 14 assets
|
|
15
15
|
- RunX
|
|
16
16
|
owner: runx-validation
|
|
@@ -20,14 +20,16 @@ owner: runx-validation
|
|
|
20
20
|
|
|
21
21
|
## Summary
|
|
22
22
|
|
|
23
|
-
All local RFC completion gates passed
|
|
23
|
+
All local RFC completion gates passed after independent audit corrections for
|
|
24
|
+
upgrade routing, no-argument cached notices, and names-only prompt output. No
|
|
25
|
+
validation blocker remains.
|
|
24
26
|
|
|
25
27
|
## Commands Run
|
|
26
28
|
|
|
27
29
|
| Command or check | Result |
|
|
28
30
|
| --- | --- |
|
|
29
31
|
| `bun run typecheck` | Passed |
|
|
30
|
-
| `bun test --timeout 30000` | Passed:
|
|
32
|
+
| `bun test --timeout 30000` | Passed: 40 tests, 272 assertions |
|
|
31
33
|
| `bun run build` | Passed |
|
|
32
34
|
| `bun run binary` | Passed |
|
|
33
35
|
| `bun run binaries` | Passed: twelve native targets |
|
|
@@ -36,10 +38,24 @@ All local RFC completion gates passed. No validation blocker remains.
|
|
|
36
38
|
| packed npm bootstrap local-server smoke | Passed with Node and Bun removed from PATH |
|
|
37
39
|
| prohibited core Node-import scan | Passed: zero matches |
|
|
38
40
|
| CLI banner/help/config/agent/output/exit smoke tests | Passed in CLI suite |
|
|
41
|
+
| live `upgrade --help`, prompt names, source banner, and compiled version smokes | Passed |
|
|
39
42
|
| PowerShell and POSIX installer contract tests | Passed |
|
|
40
43
|
| `xdocs doctor --warnings-as-errors` | Passed: zero errors and zero warnings |
|
|
41
44
|
| `git diff --check` | Passed |
|
|
42
45
|
|
|
46
|
+
## Independent Audit Regression Evidence
|
|
47
|
+
|
|
48
|
+
- `runx upgrade` now exposes and executes `--version`, `--arch`, `--variant`,
|
|
49
|
+
`--dry-run`, and `--format` without root-version interception while retaining
|
|
50
|
+
`upgrade check` and `upgrade list`.
|
|
51
|
+
- A valid `newVersionAvailable: true` cache produces the required notice before
|
|
52
|
+
the no-argument banner with the update worker disabled.
|
|
53
|
+
- `agent prompt list --names` prints `guiho-i-runx` as a raw text line; JSON
|
|
54
|
+
mode still returns a parseable names array.
|
|
55
|
+
- The stale ignored `bin/runx.exe` created by the single-target build was
|
|
56
|
+
removed before matrix verification. The verifier itself remains strict and
|
|
57
|
+
observed only the twelve RFC binaries plus the two named agent assets.
|
|
58
|
+
|
|
43
59
|
## Exact Release Asset Evidence
|
|
44
60
|
|
|
45
61
|
The verifier observed twelve `runx-*` assets using Linux, Darwin, and Windows
|
|
@@ -57,9 +73,9 @@ These are release mutations rather than local validation requirements.
|
|
|
57
73
|
|
|
58
74
|
## Readiness
|
|
59
75
|
|
|
60
|
-
Ready for the authorized Mirror
|
|
76
|
+
Ready for the authorized Mirror patch application to `0.4.1`, one-file commits,
|
|
61
77
|
main push, and Mirror-managed tag/ref push. Package publication and GitHub
|
|
62
|
-
Release creation remain intentionally unperformed.
|
|
78
|
+
Release creation remain intentionally unperformed as direct local actions.
|
|
63
79
|
|
|
64
80
|
## References
|
|
65
81
|
|
|
@@ -9,7 +9,7 @@ files:
|
|
|
9
9
|
interactive-init-manifest.md: Records validation evidence for the interactive initializer and strict manifest contract.
|
|
10
10
|
windows-self-upgrade.md: Records Windows replacement, rollback, cleanup, native build, CI, and XDocs validation evidence.
|
|
11
11
|
upgrade-reliability.md: Tracks the superseded first pass and required revalidation after independent upgrade reliability review corrections.
|
|
12
|
-
rfc-0034-cli-compliance-migration.md: Records passing RFC tests, builds, bootstrap,
|
|
12
|
+
rfc-0034-cli-compliance-migration.md: Records passing RFC tests, live upgrade/startup/prompt regressions, builds, bootstrap, installers, import scan, and fourteen-asset evidence.
|
|
13
13
|
documents:
|
|
14
14
|
alpha-implementation-summary.md: Validation summary for the first RunX implementation.
|
|
15
15
|
citty-cli-migration.md: Validation evidence for TypeScript, tests, native assets, npm packaging, CLI behavior, and XDocs.
|
|
@@ -17,7 +17,7 @@ documents:
|
|
|
17
17
|
npm-trusted-publishing-0.2.2.md: Validation evidence for the blocked 0.2.2 npm trusted-publishing retry.
|
|
18
18
|
windows-self-upgrade.md: Validation evidence for GitHub issues #9 and #1 and the Windows self-upgrade patch.
|
|
19
19
|
upgrade-reliability.md: Revalidation record for GitHub issues 12 and 13; currently marked needs-revalidation.
|
|
20
|
-
rfc-0034-cli-compliance-migration.md: Complete RFC 0034 validation and readiness report.
|
|
20
|
+
rfc-0034-cli-compliance-migration.md: Complete RFC 0034 correction validation and patch-release readiness report.
|
|
21
21
|
tags:
|
|
22
22
|
- validation
|
|
23
23
|
keywords:
|
package/library/agents.d.ts
CHANGED
|
@@ -27,7 +27,8 @@ declare function applyAgentInstructions(cwd: string): Promise<string[]>;
|
|
|
27
27
|
declare function updateAgentInstructions(cwd: string): Promise<string[]>;
|
|
28
28
|
declare function removeAgentInstructions(cwd: string): Promise<string[]>;
|
|
29
29
|
declare function showAgentInstructions(): Promise<string>;
|
|
30
|
-
declare function listAgentPrompts(namesOnly
|
|
30
|
+
declare function listAgentPrompts(namesOnly: true): string[];
|
|
31
|
+
declare function listAgentPrompts(namesOnly?: false): Array<{
|
|
31
32
|
id: string;
|
|
32
33
|
description: string;
|
|
33
34
|
}>;
|
package/library/agents.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../source/agents.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACvB,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,uBAAuB,EACvB,gBAAgB,GACjB,CAAA;AAED,KAAK,iBAAiB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAA;AAEtE,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,2BAA2B,EAAE,iBAAiB,CAAA;CACnD;AAOD,iBAAe,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAElF;AAED,iBAAe,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAEjF;AAED,iBAAe,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAIpF;AAED,iBAAS,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAIpF;AAED,iBAAe,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CAQtI;AAED,iBAAe,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAEpE;AAED,iBAAe,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAErE;AAED,iBAAe,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAYrE;AAED,iBAAe,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAEtD;AAED,iBAAS,gBAAgB,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../source/agents.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACvB,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,uBAAuB,EACvB,gBAAgB,GACjB,CAAA;AAED,KAAK,iBAAiB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAA;AAEtE,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,2BAA2B,EAAE,iBAAiB,CAAA;CACnD;AAOD,iBAAe,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAElF;AAED,iBAAe,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAEjF;AAED,iBAAe,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAIpF;AAED,iBAAS,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAIpF;AAED,iBAAe,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CAQtI;AAED,iBAAe,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAEpE;AAED,iBAAe,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAErE;AAED,iBAAe,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAYrE;AAED,iBAAe,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAEtD;AAED,iBAAS,gBAAgB,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,EAAE,CAAA;AACpD,iBAAS,gBAAgB,CAAC,SAAS,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAOxF,iBAAe,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG1D"}
|
package/library/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../source/cli.ts"],"names":[],"mappings":"AAAA;;GAEG;AA8BH,OAAO,KAAK,EAAkB,UAAU,EAAkB,MAAM,OAAO,CAAA;AAIvE,OAAO,EACL,MAAM,EACN,uBAAuB,EACvB,WAAW,GACZ,CAAA;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../source/cli.ts"],"names":[],"mappings":"AAAA;;GAEG;AA8BH,OAAO,KAAK,EAAkB,UAAU,EAAkB,MAAM,OAAO,CAAA;AAIvE,OAAO,EACL,MAAM,EACN,uBAAuB,EACvB,WAAW,GACZ,CAAA;AAsPD,QAAA,MAAiB,WAAW,iBAAwB,CAAA;AAEpD,iBAAe,MAAM,CAAC,OAAO,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB9E;AAED,iBAAe,uBAAuB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAexE"}
|
package/library/cli.js
CHANGED
|
@@ -102,7 +102,14 @@ function createCommandTree() {
|
|
|
102
102
|
const instruction = group('runx agent instruction', 'Manage RunX instruction blocks.', { apply: instructionApply, remove: instructionRemove, update: instructionUpdate, show: instructionShow }, state);
|
|
103
103
|
const promptList = leaf('runx agent prompt list', 'List bundled RunX prompts.', {
|
|
104
104
|
names: { type: 'boolean', description: 'Print prompt names only.' }, format: catalogArgs.format,
|
|
105
|
-
}, () =>
|
|
105
|
+
}, () => {
|
|
106
|
+
if (state.args.names) {
|
|
107
|
+
const names = listAgentPrompts(true);
|
|
108
|
+
write(options(state.args).format === 'json' ? renderJson(names) : `${names.join('\n')}\n`);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
writeFormatted(listAgentPrompts(false), state.args);
|
|
112
|
+
});
|
|
106
113
|
const promptShow = leaf('runx agent prompt show', 'Print one raw bundled prompt.', {
|
|
107
114
|
id: { type: 'positional', description: 'Bundled prompt ID.' },
|
|
108
115
|
}, async ({ args }) => {
|
|
@@ -112,14 +119,13 @@ function createCommandTree() {
|
|
|
112
119
|
});
|
|
113
120
|
const prompt = group('runx agent prompt', 'Inspect bundled agent prompts.', { list: promptList, show: promptShow }, state);
|
|
114
121
|
const agent = group('runx agent', 'Manage RunX agent integration.', { skill, instruction, prompt }, state);
|
|
115
|
-
const
|
|
122
|
+
const upgradeArgs = {
|
|
116
123
|
version: { type: 'string', valueHint: 'version', description: 'Select an exact release version.' },
|
|
117
124
|
arch: { type: 'string', valueHint: 'x64|arm64', description: 'Select target architecture.' },
|
|
118
125
|
variant: { type: 'string', valueHint: 'baseline|default|modern', description: 'Select x64 binary variant.' },
|
|
119
126
|
'dry-run': { type: 'boolean', description: 'Plan without mutation.' },
|
|
120
127
|
format: catalogArgs.format,
|
|
121
|
-
}
|
|
122
|
-
upgradeApply.meta = { ...upgradeApply.meta, hidden: true };
|
|
128
|
+
};
|
|
123
129
|
const upgradeCheck = leaf('runx upgrade check', 'Check whether a newer stable release exists.', {
|
|
124
130
|
format: catalogArgs.format,
|
|
125
131
|
}, async () => {
|
|
@@ -134,7 +140,14 @@ function createCommandTree() {
|
|
|
134
140
|
variant: { type: 'string', valueHint: 'baseline|default|modern', description: 'Select x64 variant.' },
|
|
135
141
|
format: catalogArgs.format,
|
|
136
142
|
}, async () => runUpgradeList(state.args));
|
|
137
|
-
const upgrade =
|
|
143
|
+
const upgrade = defineCommand({
|
|
144
|
+
meta: { name: 'runx upgrade', description: 'Inspect or upgrade a native RunX executable.' },
|
|
145
|
+
args: { ...upgradeArgs, ...helpArgs },
|
|
146
|
+
subCommands: { check: upgradeCheck, list: upgradeList },
|
|
147
|
+
setup: helpSetup(state),
|
|
148
|
+
run: async () => runUpgrade(options(state.args), state.args),
|
|
149
|
+
});
|
|
150
|
+
state.commands.set('upgrade', upgrade);
|
|
138
151
|
const uninstall = leaf('runx uninstall', 'Uninstall the native RunX executable.', {
|
|
139
152
|
'dry-run': { type: 'boolean', description: 'Print the target without deleting it.' }, format: catalogArgs.format,
|
|
140
153
|
}, async () => {
|
|
@@ -149,8 +162,9 @@ function createCommandTree() {
|
|
|
149
162
|
state.args = context.args;
|
|
150
163
|
state.command = resolveHelpCommand(state);
|
|
151
164
|
await validateInvocation(state);
|
|
152
|
-
if (
|
|
165
|
+
if (context.rawArgs.length === 1 && ['-v', '--version'].includes(context.rawArgs[0] ?? '')) {
|
|
153
166
|
return handled(`${readVersion()}\n`);
|
|
167
|
+
}
|
|
154
168
|
await handleHelp(state);
|
|
155
169
|
},
|
|
156
170
|
run: ({ args }) => {
|
|
@@ -217,10 +231,14 @@ async function runCli(rawArgs = process.argv.slice(2)) {
|
|
|
217
231
|
}
|
|
218
232
|
const { command, state } = createCommandTree();
|
|
219
233
|
const cleanOutput = rawArgs.some((arg) => ['-h', '--help', '-v', '--version', '--help-tree', '--help-docs'].includes(arg) || arg.startsWith('--help-tree-depth'));
|
|
220
|
-
if (!cleanOutput
|
|
234
|
+
if (!cleanOutput) {
|
|
221
235
|
const notice = await readCachedUpdateNotice(rawArgs.includes('--verbose'));
|
|
222
|
-
if (notice)
|
|
223
|
-
|
|
236
|
+
if (notice) {
|
|
237
|
+
if (rawArgs.length === 0)
|
|
238
|
+
write(`${notice}\n`);
|
|
239
|
+
else
|
|
240
|
+
process.stderr.write(`${notice}\n`);
|
|
241
|
+
}
|
|
224
242
|
}
|
|
225
243
|
spawnUpdateWorker();
|
|
226
244
|
try {
|
package/package.json
CHANGED