@indy2kro/agentenv 0.3.2 → 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.
Files changed (69) hide show
  1. package/README.md +63 -354
  2. package/dist/adapters/claude.d.ts.map +1 -1
  3. package/dist/adapters/claude.js +12 -4
  4. package/dist/adapters/claude.js.map +1 -1
  5. package/dist/adapters/opencode.d.ts.map +1 -1
  6. package/dist/adapters/opencode.js +5 -8
  7. package/dist/adapters/opencode.js.map +1 -1
  8. package/dist/commands/apply.d.ts.map +1 -1
  9. package/dist/commands/apply.js +8 -3
  10. package/dist/commands/apply.js.map +1 -1
  11. package/dist/commands/completion.d.ts.map +1 -1
  12. package/dist/commands/completion.js +15 -1
  13. package/dist/commands/completion.js.map +1 -1
  14. package/dist/commands/doctor.d.ts.map +1 -1
  15. package/dist/commands/doctor.js +21 -8
  16. package/dist/commands/doctor.js.map +1 -1
  17. package/dist/commands/setup.d.ts +2 -1
  18. package/dist/commands/setup.d.ts.map +1 -1
  19. package/dist/commands/setup.js +9 -4
  20. package/dist/commands/setup.js.map +1 -1
  21. package/dist/commands/shell-fix.d.ts +29 -0
  22. package/dist/commands/shell-fix.d.ts.map +1 -0
  23. package/dist/commands/shell-fix.js +111 -0
  24. package/dist/commands/shell-fix.js.map +1 -0
  25. package/dist/commands/status.d.ts +5 -1
  26. package/dist/commands/status.d.ts.map +1 -1
  27. package/dist/commands/status.js +30 -8
  28. package/dist/commands/status.js.map +1 -1
  29. package/dist/commands/uninstall.d.ts +2 -1
  30. package/dist/commands/uninstall.d.ts.map +1 -1
  31. package/dist/commands/uninstall.js +11 -5
  32. package/dist/commands/uninstall.js.map +1 -1
  33. package/dist/commands/update.d.ts.map +1 -1
  34. package/dist/commands/update.js +11 -5
  35. package/dist/commands/update.js.map +1 -1
  36. package/dist/config/schema.d.ts.map +1 -1
  37. package/dist/config/schema.js +54 -5
  38. package/dist/config/schema.js.map +1 -1
  39. package/dist/config/scopes.d.ts +13 -0
  40. package/dist/config/scopes.d.ts.map +1 -1
  41. package/dist/config/scopes.js +15 -0
  42. package/dist/config/scopes.js.map +1 -1
  43. package/dist/generate/agentsmd.d.ts.map +1 -1
  44. package/dist/generate/agentsmd.js +15 -2
  45. package/dist/generate/agentsmd.js.map +1 -1
  46. package/dist/index.js +2 -0
  47. package/dist/index.js.map +1 -1
  48. package/dist/integrations/base.d.ts +1 -1
  49. package/dist/integrations/base.js +1 -1
  50. package/dist/shell/detector.d.ts +36 -1
  51. package/dist/shell/detector.d.ts.map +1 -1
  52. package/dist/shell/detector.js +279 -47
  53. package/dist/shell/detector.js.map +1 -1
  54. package/dist/shell/shell-fix-state.d.ts +43 -0
  55. package/dist/shell/shell-fix-state.d.ts.map +1 -0
  56. package/dist/shell/shell-fix-state.js +70 -0
  57. package/dist/shell/shell-fix-state.js.map +1 -0
  58. package/dist/toolchain/gh.d.ts +12 -3
  59. package/dist/toolchain/gh.d.ts.map +1 -1
  60. package/dist/toolchain/gh.js +23 -8
  61. package/dist/toolchain/gh.js.map +1 -1
  62. package/dist/toolchain/mise.d.ts +22 -5
  63. package/dist/toolchain/mise.d.ts.map +1 -1
  64. package/dist/toolchain/mise.js +36 -22
  65. package/dist/toolchain/mise.js.map +1 -1
  66. package/dist/toolchain/rtk.d.ts.map +1 -1
  67. package/dist/toolchain/rtk.js +1 -1
  68. package/dist/toolchain/rtk.js.map +1 -1
  69. package/package.json +1 -1
package/README.md CHANGED
@@ -1,83 +1,28 @@
1
- # agentenv
1
+ # agentenv (CLI source)
2
2
 
3
- > Give AI coding agents a consistent, capable shell environment on Windows,
4
- > macOS, and Linux — with minimal setup friction, and without maintaining any
5
- > dev tools yourself.
3
+ This directory is the active implementation of `agentenv`: a TypeScript CLI
4
+ that gives AI coding agents (Claude Code, Codex CLI, GitHub Copilot, OpenCode,
5
+ Gemini CLI, Cursor, Windsurf, Cline CLI, Mistral Vibe) a consistent shell
6
+ environment. It drives [mise](https://mise.jdx.dev) for tool installation,
7
+ [rtk](https://github.com/rtk-ai/rtk) for command rewriting + hooks, and
8
+ generates `AGENTS.md`/`CLAUDE.md` from one `agentenv.toml`.
6
9
 
7
- `agentenv` is a thin orchestration + config layer on top of
8
- [mise](https://mise.jdx.dev) (tool installation), [rtk](https://github.com/rtk-ai/rtk)
9
- (command rewriting + hooks), and [AGENTS.md](https://agents.md) (repo-level
10
- instructions). It never re-implements any dev tool — it just drives mise/rtk
11
- and writes config files for you.
12
-
13
- It supports nine AI coding agents: **Claude Code**, **OpenAI Codex CLI**,
14
- **GitHub Copilot** (CLI/Chat), **OpenCode**, **Gemini CLI**, **Cursor**,
15
- **Windsurf**, **Cline CLI**, and **Mistral Vibe**. Claude Code and Codex CLI
16
- are enabled by default; the remaining agents are opt-in.
17
-
18
- > **📦 Published as `@indy2kro/agentenv`.** The npm package name is scoped
19
- > (`agentenv` was already taken) — install with
20
- > `npm install -g @indy2kro/agentenv`. The command it installs is still
21
- > plain `agentenv`. See [Install](#install) below.
22
-
23
- ## Contents
24
-
25
- - [Why agentenv](#why-agentenv)
26
- - [Requirements](#requirements)
27
- - [Install](#install)
28
- - [Quick start](#quick-start)
29
- - [Commands](#commands)
30
- - [Configuration (`agentenv.toml`)](#configuration-agentenvtoml)
31
- - [Tool catalog](#tool-catalog)
32
- - [Custom tools](#custom-tools)
33
- - [Optional integrations](#optional-integrations)
34
- - [Troubleshooting](#troubleshooting)
35
- - [Development](#development)
36
-
37
- ## Why agentenv
38
-
39
- If you've ever had an AI coding agent fumble because `grep`/`fd`/`jq` weren't
40
- on PATH, or watched every agent redo the same hook-wiring dance for a
41
- different config file format, that's what this fixes:
42
-
43
- - **One command** (`agentenv setup`) gets a fresh machine — Windows included
44
- — to a working state for whichever supported agents you have installed.
45
- - **A single source of truth** (`agentenv.toml`) drives everything else:
46
- `mise.toml`, `AGENTS.md`/`CLAUDE.md`, and each agent's own hook files are
47
- all generated from it, never hand-maintained.
48
- - **Nothing is reinstalled or reinvented.** Tool installation is 100% mise;
49
- command rewriting/hooks are 100% rtk. agentenv only ever calls out to them
50
- and writes config.
51
- - **Safe to re-run.** `agentenv apply` is idempotent — run it as often as you
52
- like; with no config change it touches nothing and reinstalls nothing.
53
-
54
- ## Requirements
55
-
56
- - **Node.js >= 22.13** to run the CLI itself.
57
- - **[mise](https://mise.jdx.dev)** installed and on PATH — a hard
58
- prerequisite. agentenv never installs tools itself: it generates a
59
- `mise.toml` and delegates 100% of tool installation to mise (whose shims dir
60
- is where agent PATH stays consistent). `agentenv apply`/`setup` fail fast
61
- with install instructions when mise is missing; the only exception is
62
- `apply --skip-mise-install`, which generates files without installing
63
- (advanced/CI). See [`../../docs/guides/installing.md`](../../docs/guides/installing.md).
64
- - **Git for Windows**, if you're on Windows — agentenv's Tier 0 shell fix
65
- relies on the POSIX toolchain it bundles.
66
- - Optionally, whichever supported agents you want configured already
67
- installed (agentenv detects what's present; it doesn't install the agents
68
- themselves).
10
+ - **User guide** (install, every command, exit codes, troubleshooting):
11
+ [`../../docs/usage.md`](../../docs/usage.md)
12
+ - **Config reference** (all of `agentenv.toml`, the tool catalog, custom
13
+ tools, integrations): [`../../docs/configuration.md`](../../docs/configuration.md)
14
+ - **Docs index**: [`../../docs/README.md`](../../docs/README.md)
69
15
 
70
16
  ## Install
71
17
 
72
- ### From npm (recommended)
18
+ ### From npm
73
19
 
74
20
  ```sh
75
21
  npm install -g @indy2kro/agentenv
76
22
  ```
77
23
 
78
- This installs the `agentenv` command itself, unchanged. The package is
79
- published under the scoped name `@indy2kro/agentenv` (plain `agentenv` was
80
- already taken on the registry).
24
+ The package is scoped (plain `agentenv` was taken); the installed command is
25
+ still plain `agentenv`.
81
26
 
82
27
  ### From source
83
28
 
@@ -90,300 +35,64 @@ npm link # makes `agentenv` available globally on PATH
90
35
  ```
91
36
 
92
37
  `npm link` symlinks this checkout's `dist/index.js` as the global `agentenv`
93
- binary — rerun `npm run build` after pulling changes, no need to `npm link`
94
- again. Prefer not to touch global state? Run it in place instead:
38
+ binary — rerun `npm run build` after pulling, no need to link again. Prefer
39
+ not to touch global state? Run in place:
95
40
 
96
41
  ```sh
97
42
  node dist/index.js setup
98
43
  ```
99
44
 
100
- Releases are one button: run the `Release` GitHub Actions workflow from the
101
- repo's Actions tab (patch/minor/major or an exact version). It bumps the
102
- version in `package.json` + `package-lock.json`, gates the tree, publishes
103
- with npm provenance, tags the release, and creates the GitHub release.
104
- Maintainers: see [`docs/guides/releasing.md`](../../docs/guides/releasing.md).
105
-
106
- ## Quick start
107
-
108
- ```sh
109
- agentenv setup
110
- ```
111
-
112
- The wizard walks you through agents, the full tool picker (Tiers 1–3 on one
113
- page; Tier 1 and Tier 2 pre-checked, Tier 3 off), optional custom binaries,
114
- scope, rtk, and the optional Superpowers integration, then shows you a diff
115
- and applies in one pass — including the Windows shell fix if you're on
116
- Windows. It pre-fills every prompt from an existing `agentenv.toml`, so it's
117
- safe to re-run any time.
118
-
119
- The same flow is also reached via `agentenv configure` (an alias of `setup`;
120
- see [Commands](#commands)).
121
-
122
- Not in an interactive terminal (CI, a script)? The interactive
123
- `setup`/`configure` wizard requires a TTY and refuses to run without one —
124
- instead use unattended `agentenv setup --yes` (defaults from detected agents,
125
- or re-applies your existing `agentenv.toml`) or `agentenv apply` against a
126
- hand-written or previously-saved config.
127
-
128
- ## Commands
129
-
130
- | Command | What it does |
131
- |---|---|
132
- | `agentenv setup` (alias `configure`) | Interactive wizard: pick agents, the full Tier 1–3 tool picker (one page, Tier 1+2 pre-checked), add custom binaries, choose scope, toggle rtk, optionally opt into Superpowers, review a diff of what will change, then confirm before applying. Re-run any time — it pre-fills every prompt from your current `agentenv.toml`. |
133
- | `agentenv apply [--skip-mise-install]` | Non-interactive: read `agentenv.toml` and (re)generate everything — `mise.toml`, `AGENTS.md`/`CLAUDE.md`, per-agent hook files, the Tier 0 shell fix. Safe to run in CI or a script. `--skip-mise-install` generates files only, without running `mise install` (useful for a fast dry-run or when mise isn't available). |
134
- | `agentenv status` | Read-only report: what's configured, what's actually installed, and where the two disagree (drift) — per agent, per tool, per generated file. |
135
- | `agentenv uninstall` | Remove mise-managed tools in your config from the mise store (cleanup); `agentenv apply` reinstalls them. `--dry-run` previews the plan without changing anything, `--yes` skips the confirmation prompt. |
136
- | `agentenv --version` / `agentenv --help` | Standard `commander`-generated version/help output; every subcommand also takes `--help`. |
137
-
138
- `setup` (alias `configure`) writes `agentenv.toml` and then calls the same
139
- `apply` logic internally, so a hand-run `apply` reaches the same end state.
140
-
141
- Output is colorized when your terminal supports it (auto-detected, honors
142
- `NO_COLOR`/`FORCE_COLOR`); pass `--no-color` (before or after the subcommand)
143
- to force it off.
144
-
145
- ## Configuration (`agentenv.toml`)
146
-
147
- Everything flows from one file. It lives either in the project root
148
- (`./agentenv.toml`, scope = `"project"`, committed to the repo so your whole
149
- team shares it) or in your user config dir
150
- (`~/.config/agentenv/agentenv.toml` — or the Windows equivalent via
151
- `%USERPROFILE%`, scope = `"user"`). `agentenv apply`/`status` look in the
152
- project directory first, then fall back to the user-scope file.
153
-
154
- `mise.toml`, `AGENTS.md`, `CLAUDE.md`, and the per-agent hook files are all
155
- **generated outputs** of `agentenv apply` — never hand-edit them; edit
156
- `agentenv.toml` and re-run `apply` instead (or run the `setup` wizard to
157
- edit interactively). Regeneration
158
- only touches a marker-block section of `AGENTS.md`/`CLAUDE.md`, so any
159
- content you've added outside that block survives.
160
-
161
- Full annotated example:
162
-
163
- ```toml
164
- # "project" (default, committed to the repo) or "user" (global, ~/.config/agentenv/)
165
- scope = "project"
166
-
167
- [agents]
168
- claude_code = true
169
- codex_cli = true
170
- copilot = true
171
- opencode = true
172
- gemini_cli = false
173
- cursor = false
174
- windsurf = false
175
- cline = false
176
- vibe = false
177
-
178
- [tools]
179
- # Tier 1 (essential, on by default)
180
- ripgrep = true
181
- fd = true
182
- jq = true
183
- rtk = true
184
- # Tier 2 (AI-coding value-add, on by default)
185
- ast_grep = true
186
- git_delta = true
187
- gh = true
188
- difftastic = true
189
- # Tier 3 (power-user, off by default) — see the Tool catalog below for the full list
190
- yq = false
191
- bat = false
192
- eza = false
193
- miller = false
194
- tokei = false
195
- hyperfine = false
196
- fzf = false
197
- just = false
198
- watchexec = false
199
- direnv = false
200
- ripgrep_all = false
201
- zoxide = false
202
- shellcheck = false
203
- uv = false
204
- xh = false
205
- actionlint = false
206
- gitleaks = false
207
- gum = false
208
- glow = false
209
- jless = false
210
- sd = false
211
- tealdeer = false
212
- duckdb = false
213
- qsv = false
214
-
215
- # Your own tool, already installed somewhere on the machine
216
- [[custom_tools]]
217
- name = "mytool"
218
- description = "Internal linter wrapper"
219
- already_installed = true
220
- path_windows = "C:\\tools\\mytool.exe"
221
- path_macos = "/usr/local/bin/mytool"
222
- path_linux = "/usr/local/bin/mytool"
223
-
224
- # Your own tool, installable via mise (e.g. it publishes GitHub releases)
225
- [[custom_tools]]
226
- name = "otherthing"
227
- mise_source = "github:someorg/otherthing"
228
- version = "latest"
229
-
230
- [rtk]
231
- enabled = true
232
- [rtk.init]
233
- claude_code = true
234
- codex_cli = true
235
- copilot = true
236
- opencode = true
237
-
238
- [tier0]
239
- check_enabled = true # Windows POSIX-shell fix; set false to skip it
240
-
241
- [generate]
242
- marker_start = "<!-- agentenv-managed-start -->"
243
- marker_end = "<!-- agentenv-managed-end -->"
244
- files = ["AGENTS.md", "CLAUDE.md"]
245
-
246
- # See "Optional integrations" below.
247
- [integrations.superpowers]
248
- enabled = false
249
- ```
250
-
251
- Every field is optional — omit anything and it falls back to the documented
252
- default. Run `agentenv setup` if you'd rather build this file
253
- interactively than hand-write it; the review screen at the end shows you the
254
- exact diff before anything is written.
255
-
256
- ## Supported agents
257
-
258
- | Agent | Config key | Default |
259
- |---|---|---|
260
- | Claude Code | `claude_code` | on |
261
- | OpenAI Codex CLI | `codex_cli` | on |
262
- | GitHub Copilot | `copilot` | off |
263
- | OpenCode | `opencode` | off |
264
- | Gemini CLI | `gemini_cli` | off |
265
- | Cursor | `cursor` | off |
266
- | Windsurf | `windsurf` | off |
267
- | Cline CLI | `cline` | off |
268
- | Mistral Vibe | `vibe` | off |
269
-
270
- `agentenv setup` detects installed agents and pre-checks them in the wizard.
271
- Use `--agents` (with unattended `setup --yes`) when you need to select the
272
- supported set explicitly without the wizard.
273
-
274
- ## Tool catalog
275
-
276
- | Tier | Tools | Default |
277
- |---|---|---|
278
- | **1 — essential** | `ripgrep` (rg), `fd`, `jq`, `rtk` | always on |
279
- | **2 — AI-coding value-add** | `ast_grep` (sg), `git_delta` (delta), `gh`, `difftastic` (difft) | on by default (pre-checked in the wizard) |
280
- | **3 — power-user** | `yq`, `bat`, `eza`, `miller` (mlr), `tokei`, `hyperfine`, `fzf`, `just`, `watchexec`, `direnv`, `ripgrep_all` (rga), `zoxide`, `shellcheck`, `uv`, `xh`, `actionlint`, `gitleaks`, `gum`, `glow`, `jless`, `sd`, `tealdeer` (tldr), `duckdb`, `qsv` | off by default — toggle any in the wizard |
281
-
282
- All of Tiers 1–3 install through mise the same way — no separate mechanism.
283
- One tool (`tokei`) isn't in mise's registry on every platform; enabling it
284
- prints a validation warning suggesting a `custom_tools` fallback entry
285
- instead.
286
-
287
- ## Custom tools
288
-
289
- Anything not in the catalog — an internal CLI, a niche tool, anything you
290
- already have — goes in `[[custom_tools]]` (see the example above). Two
291
- supported shapes:
292
-
293
- - **Already installed:** `already_installed = true` plus whichever of
294
- `path_windows`/`path_macos`/`path_linux` apply. `agentenv status` checks
295
- the path for your current OS and flags it if missing.
296
- - **Installable via mise:** `mise_source = "github:owner/repo"` (mise's
297
- generic backend, works for most tools that publish GitHub release
298
- archives) plus an optional `version` (defaults to `"latest"`).
299
-
300
- Custom tools flow through the exact same "config changed → regenerate
301
- `AGENTS.md`/hooks" pipeline as catalog tools.
302
-
303
- ## Optional integrations
304
-
305
- Agentenv can optionally install third-party skill/methodology integrations
306
- through their own documented native installers — never bundled, never
307
- forked. The first is [Superpowers](https://github.com/obra/superpowers).
308
- Superpowers itself now supports a long list of coding agents/harnesses, but
309
- of agentenv's original four v1 targets, only Claude Code has a documented,
310
- non-interactive, ref-pinnable installer today
311
- (`claude plugin marketplace add` / `claude plugin install`). Copilot
312
- documents a command of the same shape but no way to pin a ref, and Codex
313
- CLI/OpenCode have no fixed non-interactive command at all — so those three
314
- are always reported as `unsupported` in `agentenv status`, with manual
315
- install hints, rather than run unpinned or unreviewed. See
316
- [`docs/research/superpowers-install-mechanisms.md`](../../docs/research/superpowers-install-mechanisms.md)
317
- for the per-agent findings and why.
318
-
319
- Disabled by default. To opt in:
320
-
321
- ```toml
322
- [integrations.superpowers]
323
- enabled = true
324
- source = "github:obra/superpowers"
325
- ref = "v6.3.0"
326
- scope = "user"
327
- agents = ["claude_code"]
328
- allow_hooks = true # Superpowers registers a SessionStart hook
329
- allow_external_requests = false
330
- ```
331
-
332
- `agentenv apply` installs/updates it idempotently for Claude Code (skipping
333
- and warning if `allow_hooks` isn't explicitly `true`, since Superpowers
334
- registers a `SessionStart` hook), and `agentenv status` reports an
335
- **Integrations** section with enabled/disabled, source, ref, scope, and each
336
- agent's installed/missing/unsupported/drifted state. The `setup` wizard
337
- offers this as an explicit opt-in step (Step 6), showing the full
338
- source/ref/scope/agents/hooks/external-request summary before installing
339
- anything. Outside the wizard, `apply`/`status` always preserve whatever is
340
- already configured.
341
-
342
- `agentenv` also never touches GitHub credentials: `agentenv status` reports
343
- `gh` authentication (authenticated/unauthenticated/unknown) via a read-only
344
- `gh auth status --hostname github.com` probe; agentenv never runs
345
- `gh auth login` or reads token values.
346
-
347
- ## Troubleshooting
348
-
349
- - **`agentenv setup` exits immediately saying it's interactive** — you're
350
- running it in a non-TTY context (CI, a piped script). Use `agentenv apply`
351
- against a config file instead (or unattended `agentenv setup --yes`).
352
- - **A tool shows as enabled in `agentenv status` but not found on PATH** —
353
- run `agentenv apply` (it calls `mise install`), or check that mise itself
354
- is installed and on PATH. `--skip-mise-install` intentionally leaves tools
355
- uninstalled; don't use it for your real run.
356
- - **Windows: agents aren't picking up ripgrep/fd/etc.** — check the "Tier 0
357
- (shell)" block in `agentenv status`. It lists each enabled agent's shell
358
- override state; if any show `✗` or it says "Fix: run `agentenv apply`",
359
- re-run `agentenv apply`. If Git Bash truly isn't installed, install
360
- [Git for Windows](https://gitforwindows.org) first.
361
- - **A hook file has content you added by hand, and you're worried `apply`
362
- will clobber it** — it won't. Regeneration only replaces the marker-block
363
- section (`<!-- agentenv-managed-start -->` … `<!-- agentenv-managed-end
364
- -->`); everything else in the file is left alone.
365
- - **`agentenv apply` reports a validation error and refuses to run** — fix
366
- the listed field in `agentenv.toml`; errors block `apply` deliberately
367
- (warnings don't).
368
-
369
45
  ## Development
370
46
 
47
+ All commands run from this directory.
48
+
371
49
  ```sh
372
- npm install
373
- npm run build # tsc -> dist/
374
- npm test # build + node:test suites
375
- npm run lint # eslint --max-warnings 0
376
- npm run format:check
377
- npm run smoke # stub mode — deterministic, no real mise/rtk
378
- npm run smoke:real # real mise + rtk; installs the full tool catalog, verifies every binary, and exercises the install→uninstall roundtrip (destructive on dev machines: the uninstall step removes every installed version of each catalog tool, including ones you already had)
50
+ npm run build # tsc -> dist/
51
+ npm test # build + run every dist/**/*.test.js via node:test
52
+ npm run lint # eslint src --max-warnings 0
53
+ npm run format:check # prettier --check src
54
+ npm run smoke # stub mode — deterministic, no real mise/rtk
55
+ npm run smoke:real # real mise + rtk; installs the full catalog and runs the
56
+ # install -> uninstall roundtrip (destructive — removes
57
+ # every installed version of each catalog tool)
379
58
  ```
380
59
 
381
- See [`docs/guides/adding-an-adapter.md`](../../docs/guides/adding-an-adapter.md)
382
- for wiring in a fifth agent, [`docs/guides/releasing.md`](../../docs/guides/releasing.md)
383
- for shipping a new npm version (one-button `Release` workflow), and
384
- [`docs/plans/agentenv-dev-plan.md`](../../docs/plans/agentenv-dev-plan.md)
385
- for the full design, config schema rationale, and phase roadmap.
60
+ To target a single test file: `npm run build && node --test dist/config/schema.test.js`.
61
+
62
+ A new `*.test.ts` alongside the module it covers (mirroring `foo.ts` →
63
+ `foo.test.ts`) is picked up automatically by Node's recursive test discovery.
64
+ Tests use injectable dependencies for anything that would hit the real world
65
+ (e.g. `rtkInit`, `superpowersDeps`, `resolveBinary` — see `ApplyOptions` in
66
+ `src/commands/apply.ts`).
67
+
68
+ CI (`.github/workflows/ci.yml`) runs build/lint/format/test/smoke on a
69
+ windows/macos/ubuntu matrix, then a real-mise acceptance job on PRs and
70
+ `main`.
71
+
72
+ ## Architecture
73
+
74
+ - `agentenv.toml` (schema: `src/config/schema.ts`) resolved from the project
75
+ root or `~/.config/agentenv/` (`src/config/scopes.ts`).
76
+ - `agentenv apply` (`src/commands/apply.ts`) is the single pipeline
77
+ `setup`/`configure`/`apply` funnel into: prerequisite check → Tier 0 Windows
78
+ shell fix → `mise.toml` + `mise install` + verify → marker-block
79
+ `AGENTS.md`/`CLAUDE.md` regeneration → per-agent adapters → optional
80
+ integrations.
81
+ - Per-agent adapters in `src/adapters/`: a hand-written `claude.ts` plus
82
+ rtk-delegating adapters for the rest (see
83
+ [`../../docs/research/rtk-init-delegation.md`](../../docs/research/rtk-init-delegation.md)).
84
+ - `src/integrations/` holds the second, parallel adapter contract for
85
+ third-party installers agentenv invokes but doesn't own (Superpowers).
86
+ - `agentenv status` (`src/commands/status.ts`) reports drift using the same
87
+ per-tool classification as `apply`'s verify step
88
+ (`toolAvailabilityClassification` in `src/toolchain/mise.ts`), so a tool
89
+ `apply` deliberately skips is never flagged as drift elsewhere.
90
+
91
+ For wiring in a new agent, see
92
+ [`../../docs/guides/adding-an-adapter.md`](../../docs/guides/adding-an-adapter.md);
93
+ for the design rationale and roadmap,
94
+ [`../../docs/plans/agentenv-dev-plan.md`](../../docs/plans/agentenv-dev-plan.md).
386
95
 
387
96
  ## License
388
97
 
389
- MIT
98
+ MIT
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAGtE,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,aAAa;IAMjC,OAAO,IAAI,MAAM;IAIjB,YAAY,IAAI,MAAM;IAItB,WAAW,IAAI,OAAO;IAIhB,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IA2CpC,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC;IAqFxC,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;IA8CvC,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAWpC;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAmBhC"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAItE,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,aAAa;IAMjC,OAAO,IAAI,MAAM;IAIjB,YAAY,IAAI,MAAM;IAItB,WAAW,IAAI,OAAO;IAIhB,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IA2CpC,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC;IAqFxC,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;IAsDvC,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAWpC;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAmBhC"}
@@ -6,6 +6,7 @@ import * as fs from 'fs';
6
6
  import * as path from 'path';
7
7
  import { BaseAdapter } from './base.js';
8
8
  import { isAgentInstalled } from './detect.js';
9
+ import { writeFileWithRetry } from '../utils/fs-retry.js';
9
10
  export class ClaudeCodeAdapter extends BaseAdapter {
10
11
  constructor(config) {
11
12
  super(config);
@@ -140,20 +141,27 @@ export class ClaudeCodeAdapter extends BaseAdapter {
140
141
  const settingsPath = path.join(this.configDir, 'settings.json');
141
142
  try {
142
143
  if (fs.existsSync(settingsPath)) {
143
- let settings = {};
144
+ let settings;
144
145
  const content = fs.readFileSync(settingsPath, 'utf-8');
145
146
  try {
146
147
  settings = JSON.parse(content);
147
148
  }
148
149
  catch {
150
+ result.success = false;
151
+ result.errors.push(`Failed to cleanup Claude Code: settings.json is not valid JSON at ${settingsPath}`);
152
+ result.message = 'Claude Code adapter cleanup failed';
149
153
  return result;
150
154
  }
151
- // Remove RTK hooks
155
+ // Remove RTK hooks, but only rewrite when the filter actually removed
156
+ // something (a second cleanup is a no-op and must not churn the file).
152
157
  if (Array.isArray(settings.hooks?.PreToolUse)) {
158
+ const before = settings.hooks.PreToolUse.length;
153
159
  settings.hooks.PreToolUse = settings.hooks.PreToolUse.filter((entry) => !(entry.matcher === 'Bash' &&
154
160
  entry.hooks?.some((hook) => hook.command === 'rtk hook claude')));
155
- fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2));
156
- result.filesModified.push(settingsPath);
161
+ if (settings.hooks.PreToolUse.length !== before) {
162
+ writeFileWithRetry(settingsPath, JSON.stringify(settings, null, 2));
163
+ result.filesModified.push(settingsPath);
164
+ }
157
165
  }
158
166
  }
159
167
  }
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/adapters/opencode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAItE,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,aAAa;IAMjC,OAAO,IAAI,MAAM;IAIjB,YAAY,IAAI,MAAM;IAItB,WAAW,IAAI,OAAO;IAIhB,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IAgCpC,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC;IAkCxC,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;IAWvC,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CASrC"}
1
+ {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/adapters/opencode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAItE,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,aAAa;IAMjC,OAAO,IAAI,MAAM;IAIjB,YAAY,IAAI,MAAM;IAItB,WAAW,IAAI,OAAO;IAIhB,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IAgCpC,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC;IA+BxC,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;IAWvC,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CASrC"}
@@ -71,14 +71,11 @@ export class OpenCodeAdapter extends BaseAdapter {
71
71
  const existed = fs.existsSync(pluginPath);
72
72
  const run = resolveRtkInit(this.config.rtkInit)(flags, this.config.baseDir);
73
73
  if (run.success) {
74
- if (run.stdout.includes('already up to date')) {
75
- result.message = 'OpenCode rtk plugin already up to date';
76
- }
77
- else {
78
- if (!existed && fs.existsSync(pluginPath))
79
- result.filesCreated.push(pluginPath);
80
- result.message = rtkMessage(run);
81
- }
74
+ if (!existed && fs.existsSync(pluginPath))
75
+ result.filesCreated.push(pluginPath);
76
+ else if (existed)
77
+ result.filesModified.push(pluginPath);
78
+ result.message = rtkMessage(run);
82
79
  }
83
80
  else {
84
81
  result.success = false;
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/adapters/opencode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/adapters/opencode.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/commands/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AA2BrD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,wDAAwD;IACxD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,8EAA8E;IAC9E,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC;;;;;OAKG;IACH,aAAa,CAAC,EAAE;QACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC;QAChE,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;KACpB,CAAC;CACH;AAmCD,iFAAiF;AACjF,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CA2HtB;AAED,eAAO,MAAM,YAAY,SAuErB,CAAC"}
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/commands/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AA2BrD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,wDAAwD;IACxD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,8EAA8E;IAC9E,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC;;;;;OAKG;IACH,aAAa,CAAC,EAAE;QACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC;QAChE,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;KACpB,CAAC;CACH;AAmCD,iFAAiF;AACjF,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CA2HtB;AAED,eAAO,MAAM,YAAY,SA4ErB,CAAC"}
@@ -3,7 +3,7 @@ import * as path from 'path';
3
3
  import { ClaudeCodeAdapter, CodexCliAdapter, CopilotAdapter, OpenCodeAdapter, GeminiCliAdapter, CursorAdapter, WindsurfAdapter, ClineAdapter, VibeAdapter, } from '../adapters/index.js';
4
4
  import { getEnabledAgents, loadConfig, validateConfig } from '../config/schema.js';
5
5
  import { resolveScopeDir } from '../config/scopes.js';
6
- import { configFilePath, findConfigPath } from '../config/scopes.js';
6
+ import { findConfigPath } from '../config/scopes.js';
7
7
  import { SuperpowersAdapter, integrationResultLines } from '../integrations/index.js';
8
8
  import { generateInstructionFiles, updateWithMarkers } from '../generate/agentsmd.js';
9
9
  import { fixShellConfiguration } from '../shell/detector.js';
@@ -174,15 +174,20 @@ export const applyCommand = new Command()
174
174
  renderLogo();
175
175
  const dryRun = options.dryRun === true;
176
176
  let config;
177
+ const configPath = findConfigPath();
178
+ if (!configPath) {
179
+ console.error('No agentenv.toml found. Run `agentenv setup` first.');
180
+ process.exitCode = 1;
181
+ return;
182
+ }
177
183
  try {
178
- config = loadConfig();
184
+ config = loadConfig(configPath);
179
185
  }
180
186
  catch (error) {
181
187
  console.error(theme.fail(error instanceof Error ? error.message : String(error)));
182
188
  process.exitCode = 1;
183
189
  return;
184
190
  }
185
- const configPath = findConfigPath() ?? configFilePath(config.scope ?? 'project');
186
191
  printConfigPath(configPath);
187
192
  const report = validateConfig(config);
188
193
  if (!reportValidation(report, 'Configuration invalid — not applying.')) {