@williamthorsen/nmr 0.48.0 → 0.49.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/.meta/changelog.json +158 -0
- package/.readyup/kits/default.js +1527 -1460
- package/.readyup/manifest.json +96 -11
- package/CHANGELOG.md +41 -0
- package/README.md +36 -8
- package/agents/guidance/rulebooks/nmr.md +2 -2
- package/dist/esm/check-cache-build-output.d.ts +24 -0
- package/dist/esm/check-cache-build-output.js +49 -0
- package/dist/esm/check-cache-delegation.d.ts +27 -0
- package/dist/esm/check-cache-delegation.js +92 -0
- package/dist/esm/check-cache-entries.d.ts +109 -0
- package/dist/esm/check-cache-entries.js +87 -0
- package/dist/esm/check-cache-gate.d.ts +64 -0
- package/dist/esm/check-cache-gate.js +226 -0
- package/dist/esm/check-cache-key.d.ts +47 -0
- package/dist/esm/check-cache-key.js +77 -0
- package/dist/esm/check-cache-record.d.ts +69 -0
- package/dist/esm/check-cache-record.js +167 -0
- package/dist/esm/check-cache.d.ts +8 -176
- package/dist/esm/check-cache.js +9 -214
- package/dist/esm/child-env.d.ts +57 -0
- package/dist/esm/child-env.js +59 -0
- package/dist/esm/child-process.d.ts +55 -0
- package/dist/esm/child-process.js +112 -0
- package/dist/esm/commands/build.d.ts +0 -16
- package/dist/esm/commands/build.js +9 -214
- package/dist/esm/commands/clean.js +3 -2
- package/dist/esm/commands/compiler.d.ts +18 -0
- package/dist/esm/commands/compiler.js +49 -0
- package/dist/esm/commands/fmt.d.ts +0 -39
- package/dist/esm/commands/fmt.js +4 -81
- package/dist/esm/commands/format-targets.d.ts +39 -0
- package/dist/esm/commands/format-targets.js +83 -0
- package/dist/esm/commands/rewrite-specifiers.d.ts +17 -0
- package/dist/esm/commands/rewrite-specifiers.js +122 -0
- package/dist/esm/commands/tsconfig-chain.d.ts +8 -0
- package/dist/esm/commands/tsconfig-chain.js +63 -0
- package/dist/esm/config-check-cache.d.ts +17 -0
- package/dist/esm/config-check-cache.js +63 -0
- package/dist/esm/config-validation.d.ts +20 -0
- package/dist/esm/config-validation.js +236 -0
- package/dist/esm/config.js +4 -286
- package/dist/esm/crossing-diagnostics.d.ts +39 -0
- package/dist/esm/crossing-diagnostics.js +132 -0
- package/dist/esm/default-scripts.js +1 -1
- package/dist/esm/delegate-host.d.ts +43 -0
- package/dist/esm/delegate-host.js +178 -0
- package/dist/esm/delegation-target.d.ts +52 -0
- package/dist/esm/delegation-target.js +71 -0
- package/dist/esm/fan-out.d.ts +57 -0
- package/dist/esm/fan-out.js +146 -0
- package/dist/esm/glyphs.d.ts +1 -1
- package/dist/esm/help.js +9 -3
- package/dist/esm/helpers/deriveExcerpt.d.ts +9 -0
- package/dist/esm/helpers/deriveExcerpt.js +1 -1
- package/dist/esm/helpers/renderQuotedList.d.ts +2 -0
- package/dist/esm/helpers/renderQuotedList.js +9 -0
- package/dist/esm/hooks.d.ts +17 -0
- package/dist/esm/hooks.js +23 -0
- package/dist/esm/invocation-args.d.ts +40 -0
- package/dist/esm/invocation-args.js +178 -0
- package/dist/esm/invocation.d.ts +67 -0
- package/dist/esm/invocation.js +3 -0
- package/dist/esm/machine-lock.d.ts +2 -0
- package/dist/esm/machine-lock.js +1 -1
- package/dist/esm/output-channel.d.ts +23 -0
- package/dist/esm/output-channel.js +14 -0
- package/dist/esm/pass-manifest.d.ts +53 -0
- package/dist/esm/pass-manifest.js +89 -0
- package/dist/esm/presentation.d.ts +47 -0
- package/dist/esm/presentation.js +32 -0
- package/dist/esm/recording.d.ts +1 -1
- package/dist/esm/recording.js +2 -2
- package/dist/esm/remote-host-session.d.ts +62 -0
- package/dist/esm/remote-host-session.js +277 -0
- package/dist/esm/remote-probe-host.d.ts +22 -0
- package/dist/esm/remote-probe-host.js +50 -0
- package/dist/esm/remote-probe.d.ts +31 -0
- package/dist/esm/remote-probe.js +78 -0
- package/dist/esm/remote-run.d.ts +28 -73
- package/dist/esm/remote-run.js +103 -165
- package/dist/esm/remote-session.d.ts +40 -0
- package/dist/esm/remote-session.js +151 -0
- package/dist/esm/remote-snapshot.d.ts +21 -0
- package/dist/esm/remote-snapshot.js +80 -0
- package/dist/esm/replay-assembly.d.ts +2 -2
- package/dist/esm/replay-assembly.js +1 -1
- package/dist/esm/run-chain.d.ts +21 -0
- package/dist/esm/run-chain.js +108 -0
- package/dist/esm/runCli.d.ts +1 -9
- package/dist/esm/runCli.js +39 -1002
- package/dist/esm/runner.d.ts +1 -54
- package/dist/esm/runner.js +2 -125
- package/dist/esm/shell-syntax.d.ts +30 -0
- package/dist/esm/shell-syntax.js +120 -0
- package/dist/esm/steps.d.ts +0 -2
- package/dist/esm/steps.js +3 -119
- package/dist/esm/types.d.ts +5 -0
- package/dist/esm/user-config.d.ts +34 -0
- package/dist/esm/user-config.js +93 -0
- package/dist/esm/verbosity.d.ts +6 -0
- package/dist/esm/verbosity.js +7 -7
- package/dist/esm/verdict.d.ts +1 -1
- package/dist/esm/verdict.js +1 -1
- package/docs/check-cache.md +28 -12
- package/docs/delegate.md +96 -16
- package/docs/reporting.md +6 -1
- package/docs/scripts.md +2 -1
- package/package.json +3 -3
- /package/dist/esm/{prettier-default-config.d.ts → prettier-default.config.d.ts} +0 -0
- /package/dist/esm/{prettier-default-config.js → prettier-default.config.js} +0 -0
package/.meta/changelog.json
CHANGED
|
@@ -1,4 +1,162 @@
|
|
|
1
1
|
[
|
|
2
|
+
{
|
|
3
|
+
"version": "0.49.0",
|
|
4
|
+
"date": "2026-10-18",
|
|
5
|
+
"sections": [
|
|
6
|
+
{
|
|
7
|
+
"title": "🎉 Features",
|
|
8
|
+
"audience": "all",
|
|
9
|
+
"items": [
|
|
10
|
+
{
|
|
11
|
+
"description": "Makes a delegation wait while another delegation from the same worktree holds the host checkout, printing `nmr: waiting for <command> in <dir> (pid <pid>) to finish on <host>` and leaving the wait out of the verdict's duration. (#1079)",
|
|
12
|
+
"hash": "ae83b07e7f9bc21cb6d2131595abaa437350d7b4",
|
|
13
|
+
"entry": 1
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"description": "Extends Ctrl-C, which previously ended only the run step on the host, to end the delegation during the wait for the checkout, the check-out step, and the install step as well. (#1079)",
|
|
17
|
+
"hash": "ae83b07e7f9bc21cb6d2131595abaa437350d7b4",
|
|
18
|
+
"entry": 2
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"description": "Makes `nmr --delegate` fail at the check-out step with `could not check out on <host>: node is not on the PATH that the interactive login shell sets there` when the host's interactive login shell does not put Node on `PATH`, and documents that Node on the host must satisfy nmr's `engines` range (`>=24.16.0`). (#1079)",
|
|
22
|
+
"hash": "ae83b07e7f9bc21cb6d2131595abaa437350d7b4",
|
|
23
|
+
"entry": 3
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"description": "Makes `nmr --delegate` and `NMR_DELEGATE` look up this machine's check-result cache before contacting the host, so that a tree with a pass recorded here is reported as `passed … ago on this tree` and an unknown command is reported here, without either one reaching the host. (#1080)",
|
|
27
|
+
"hash": "ab09b251d5f0d641264b17e458cab60245596e08",
|
|
28
|
+
"entry": 1
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"description": "Adds a record in this machine's check-result cache for each pass that a delegation host reports, so that a later delegation to the same host recalls it as `passed … ago on <host>` and `nmr --log` prints the host's transcript under a header that names the host. (#1080)",
|
|
32
|
+
"hash": "ab09b251d5f0d641264b17e458cab60245596e08",
|
|
33
|
+
"entry": 2
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"description": "Makes `nmr --delegate` record the passes that the host reports for a delegated composite's constituents, so that `nmr --delegate <host> check` after `nmr --delegate <host> ci` on the same tree recalls the pass without contacting the host. (#1082)",
|
|
37
|
+
"hash": "b6b75131145d5c2e9a57926f2016aa900fceff58",
|
|
38
|
+
"entry": 1
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"description": "Makes `nmr --delegate` record the excerpts that the host reports with each delegated pass, so that a recall of a delegated command, such as `ci`, replays them instead of nothing. (#1082)",
|
|
42
|
+
"hash": "b6b75131145d5c2e9a57926f2016aa900fceff58",
|
|
43
|
+
"entry": 2
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"description": "Lets `--delegate` and `NMR_DELEGATE` take a comma-separated list of hosts in order of preference, from which nmr chooses the first host on which the delegation would not wait for a lock, otherwise the first host that answered nmr's lock check, and never the delegating machine. (#1083)",
|
|
47
|
+
"hash": "9d1d63f29e3b1e0f90cd6ca5ee9cf9d43a2fa7a4",
|
|
48
|
+
"entry": 1
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"description": "Extends the check-result cache to recall a pass earned on any host in the list, without checking any host's locks. (#1083)",
|
|
52
|
+
"hash": "9d1d63f29e3b1e0f90cd6ca5ee9cf9d43a2fa7a4",
|
|
53
|
+
"entry": 2
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"description": "Makes `--delegate` a boolean flag, under which `nmr` runs the command on a host that `NMR_DELEGATE` or the user config names, and adds `--delegate-to <hosts>` to name the hosts for one run. (#1084)",
|
|
57
|
+
"breaking": true,
|
|
58
|
+
"migration": "Replace `--delegate <hosts>` and `--delegate=<hosts>` with `--delegate-to <hosts>`; `nmr` now reads a host written after `--delegate` as the command name and fails.",
|
|
59
|
+
"hash": "6fbf9c27c0ddefc337ac693929798922bed576fb",
|
|
60
|
+
"entry": 1
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"description": "Adds a machine-level user config, `~/.config/nmr/config.ts`, in which `delegate.hosts` names this machine's hosts in order of preference and `delegate.when` selects the runs that `nmr` delegates to them without a flag: runs from a coding agent (`'agent'`) or every run (`'always'`), except when `CI` is set and for a `-F` or `-R` invocation. (#1084)",
|
|
64
|
+
"hash": "6fbf9c27c0ddefc337ac693929798922bed576fb",
|
|
65
|
+
"entry": 2
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"description": "Adds the repo config key `delegate`, whose only accepted value, `false`, makes `nmr` run every check on the machine that has the working tree, overriding `NMR_DELEGATE` and the user config but not a delegation flag. (#1084)",
|
|
69
|
+
"hash": "6fbf9c27c0ddefc337ac693929798922bed576fb",
|
|
70
|
+
"entry": 3
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"description": "Adds a stderr line, printed by `nmr` when a delegation decided by the user config cannot reach a host, that names the config file and the remedies in order: network access to the hosts, then `nmr --no-delegate <command>`. (#1084)",
|
|
74
|
+
"hash": "6fbf9c27c0ddefc337ac693929798922bed576fb",
|
|
75
|
+
"entry": 4
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"description": "Updates the `nmr` rulebook to direct agents not to pass `--delegate` or `--delegate-to`, since the user config decides delegation, and to ask for network access to a host before running `nmr --no-delegate`. (#1084)",
|
|
79
|
+
"hash": "6fbf9c27c0ddefc337ac693929798922bed576fb",
|
|
80
|
+
"entry": 5
|
|
81
|
+
}
|
|
82
|
+
]
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"title": "🐛 Bug fixes",
|
|
86
|
+
"audience": "all",
|
|
87
|
+
"items": [
|
|
88
|
+
{
|
|
89
|
+
"description": "Fixes the issue that the snapshot sent to the host by `nmr --delegate` omitted a file edited in the same second as git's last write of the index. (#1078)",
|
|
90
|
+
"hash": "42cd3fb52a022010eccbf904a7d88358dd4e5759",
|
|
91
|
+
"entry": 2
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"description": "Fixes the issue that `NMR_NO_CACHE`, `NMR_DEBUG`, and `NMR_RUN_ID` set on this machine did not reach the delegation host, which left the host's cache in use under `NMR_NO_CACHE=1`. (#1080)",
|
|
95
|
+
"hash": "ab09b251d5f0d641264b17e458cab60245596e08",
|
|
96
|
+
"entry": 3
|
|
97
|
+
}
|
|
98
|
+
]
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"title": "⚡ Performance",
|
|
102
|
+
"audience": "all",
|
|
103
|
+
"items": [
|
|
104
|
+
{
|
|
105
|
+
"description": "Keys the check cache on the git tree id that `git add --all` would record for the working tree, which lets `nmr` skip a check after the checked tree is committed, and invalidates every pass recorded by earlier versions once. (#1078)",
|
|
106
|
+
"hash": "42cd3fb52a022010eccbf904a7d88358dd4e5759",
|
|
107
|
+
"entry": 1
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"title": "♻️ Refactoring",
|
|
113
|
+
"audience": "dev",
|
|
114
|
+
"items": [
|
|
115
|
+
{
|
|
116
|
+
"description": "Splits the `nmr` source modules that exceeded the 300-line `max-lines` limit, such as `check-cache.ts` and `commands/build.ts`, into one module per concern, and moves each module's tests with its code. (#1061)",
|
|
117
|
+
"hash": "a28ac5ee6fed7fec2c4c00e08c85b9e6a9093ec8",
|
|
118
|
+
"entry": 1
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"description": "Splits `config.ts`, `steps.ts`, and the default readyup kit `.readyup/kits/default.ts` to bring each under the 300-line `max-lines` limit, moving field-shape validation into `config-validation.ts`, the `checkCache` name check into `config-check-cache.ts`, shell tokenizing and quoting into `shell-syntax.ts`, and each kit section into a module under `.readyup/lib/`. (#1063)",
|
|
122
|
+
"hash": "aded5d14580b39162df66f707708b684e4d71149",
|
|
123
|
+
"entry": 1
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"description": "Moves the argument parser, the invocation types, pnpm fan-out, the delegate host, chain assembly, hook wrapping, crossing diagnostics, the check-cache gate and its recording, the child environment, and presentation out of `runCli.ts` into modules of their own, leaving `runCli.ts` with the run orchestration and bringing it under the 300-line `max-lines` limit. (#1064)",
|
|
127
|
+
"hash": "854be914eaa92d5b25e0a7f8fb15aab4ac1fc4af",
|
|
128
|
+
"entry": 1
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"description": "Rewrites the code that the new and widened rules in `eslint-plugin-unicorn` 78 report, mostly by changing `flatMap` callbacks to return a single value rather than a one-element array. (#1072)",
|
|
132
|
+
"hash": "0eef39d82b4eb46f8d55f1cefe673bc8f54ee2dd",
|
|
133
|
+
"entry": 2
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"description": "Renames nmr's default Prettier config from `prettier-default-config.ts` to `prettier-default.config.ts`, so that the upstream exemption of tool-loaded `*.config.*` files from `unicorn/no-top-level-side-effects` covers it, and updates `nmr-fmt` to resolve the new name. (#1072)",
|
|
137
|
+
"hash": "0eef39d82b4eb46f8d55f1cefe673bc8f54ee2dd",
|
|
138
|
+
"entry": 3
|
|
139
|
+
}
|
|
140
|
+
]
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"title": "🧪 Tests",
|
|
144
|
+
"audience": "dev",
|
|
145
|
+
"items": [
|
|
146
|
+
{
|
|
147
|
+
"description": "Splits the `nmr` test files that exceeded the 500-line `max-lines` limit for tests into files by aspect, and moves the fixtures and fake-spawn helpers that the new files share into `test-utils/`. (#1061)",
|
|
148
|
+
"hash": "a28ac5ee6fed7fec2c4c00e08c85b9e6a9093ec8",
|
|
149
|
+
"entry": 2
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"description": "Splits `runCli.unit.test.ts` into four files named for the aspect that each covers and moves the pre/post hooks suite out of `cli.tool.test.ts` into `cli.hooks.tool.test.ts`, with the workspace-tree factory, the in-process runners, and the bin harness moved into shared files under `test-utils/`. (#1064)",
|
|
153
|
+
"hash": "854be914eaa92d5b25e0a7f8fb15aab4ac1fc4af",
|
|
154
|
+
"entry": 2
|
|
155
|
+
}
|
|
156
|
+
]
|
|
157
|
+
}
|
|
158
|
+
]
|
|
159
|
+
},
|
|
2
160
|
{
|
|
3
161
|
"version": "0.48.0",
|
|
4
162
|
"date": "2026-10-17",
|