@indy2kro/agentenv 0.1.2 → 0.2.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 (110) hide show
  1. package/README.md +105 -46
  2. package/dist/adapters/cline.d.ts +9 -0
  3. package/dist/adapters/cline.d.ts.map +1 -0
  4. package/dist/adapters/cline.js +19 -0
  5. package/dist/adapters/cline.js.map +1 -0
  6. package/dist/adapters/cursor.d.ts +9 -0
  7. package/dist/adapters/cursor.d.ts.map +1 -0
  8. package/dist/adapters/cursor.js +19 -0
  9. package/dist/adapters/cursor.js.map +1 -0
  10. package/dist/adapters/detect.d.ts +1 -1
  11. package/dist/adapters/detect.d.ts.map +1 -1
  12. package/dist/adapters/detect.js +6 -1
  13. package/dist/adapters/detect.js.map +1 -1
  14. package/dist/adapters/gemini.d.ts +9 -0
  15. package/dist/adapters/gemini.d.ts.map +1 -0
  16. package/dist/adapters/gemini.js +19 -0
  17. package/dist/adapters/gemini.js.map +1 -0
  18. package/dist/adapters/index.d.ts +6 -0
  19. package/dist/adapters/index.d.ts.map +1 -1
  20. package/dist/adapters/index.js +6 -0
  21. package/dist/adapters/index.js.map +1 -1
  22. package/dist/adapters/rtk-delegation.d.ts +28 -0
  23. package/dist/adapters/rtk-delegation.d.ts.map +1 -0
  24. package/dist/adapters/rtk-delegation.js +102 -0
  25. package/dist/adapters/rtk-delegation.js.map +1 -0
  26. package/dist/adapters/vibe.d.ts +9 -0
  27. package/dist/adapters/vibe.d.ts.map +1 -0
  28. package/dist/adapters/vibe.js +19 -0
  29. package/dist/adapters/vibe.js.map +1 -0
  30. package/dist/adapters/windsurf.d.ts +9 -0
  31. package/dist/adapters/windsurf.d.ts.map +1 -0
  32. package/dist/adapters/windsurf.js +19 -0
  33. package/dist/adapters/windsurf.js.map +1 -0
  34. package/dist/commands/apply.d.ts +9 -0
  35. package/dist/commands/apply.d.ts.map +1 -1
  36. package/dist/commands/apply.js +57 -21
  37. package/dist/commands/apply.js.map +1 -1
  38. package/dist/commands/configure.d.ts +2 -1
  39. package/dist/commands/configure.d.ts.map +1 -1
  40. package/dist/commands/configure.js +71 -16
  41. package/dist/commands/configure.js.map +1 -1
  42. package/dist/commands/doctor.d.ts.map +1 -1
  43. package/dist/commands/doctor.js +9 -3
  44. package/dist/commands/doctor.js.map +1 -1
  45. package/dist/commands/setup.d.ts +39 -0
  46. package/dist/commands/setup.d.ts.map +1 -1
  47. package/dist/commands/setup.js +43 -23
  48. package/dist/commands/setup.js.map +1 -1
  49. package/dist/commands/status.d.ts +6 -0
  50. package/dist/commands/status.d.ts.map +1 -1
  51. package/dist/commands/status.js +83 -21
  52. package/dist/commands/status.js.map +1 -1
  53. package/dist/commands/update.d.ts.map +1 -1
  54. package/dist/commands/update.js +67 -9
  55. package/dist/commands/update.js.map +1 -1
  56. package/dist/config/schema.d.ts +26 -2
  57. package/dist/config/schema.d.ts.map +1 -1
  58. package/dist/config/schema.js +142 -43
  59. package/dist/config/schema.js.map +1 -1
  60. package/dist/generate/agentsmd.d.ts.map +1 -1
  61. package/dist/generate/agentsmd.js +10 -0
  62. package/dist/generate/agentsmd.js.map +1 -1
  63. package/dist/index.js +10 -1
  64. package/dist/index.js.map +1 -1
  65. package/dist/integrations/index.d.ts +1 -0
  66. package/dist/integrations/index.d.ts.map +1 -1
  67. package/dist/integrations/index.js +1 -0
  68. package/dist/integrations/index.js.map +1 -1
  69. package/dist/integrations/render.d.ts +15 -0
  70. package/dist/integrations/render.d.ts.map +1 -0
  71. package/dist/integrations/render.js +51 -0
  72. package/dist/integrations/render.js.map +1 -0
  73. package/dist/integrations/superpowers.d.ts.map +1 -1
  74. package/dist/integrations/superpowers.js +3 -1
  75. package/dist/integrations/superpowers.js.map +1 -1
  76. package/dist/shell/detector.d.ts +9 -3
  77. package/dist/shell/detector.d.ts.map +1 -1
  78. package/dist/shell/detector.js +147 -101
  79. package/dist/shell/detector.js.map +1 -1
  80. package/dist/toolchain/fallbacks.d.ts.map +1 -1
  81. package/dist/toolchain/fallbacks.js +8 -3
  82. package/dist/toolchain/fallbacks.js.map +1 -1
  83. package/dist/toolchain/mise.d.ts +106 -6
  84. package/dist/toolchain/mise.d.ts.map +1 -1
  85. package/dist/toolchain/mise.js +248 -89
  86. package/dist/toolchain/mise.js.map +1 -1
  87. package/dist/toolchain/rtk.d.ts.map +1 -1
  88. package/dist/toolchain/rtk.js +6 -0
  89. package/dist/toolchain/rtk.js.map +1 -1
  90. package/dist/ui/spinner.d.ts +19 -0
  91. package/dist/ui/spinner.d.ts.map +1 -0
  92. package/dist/ui/spinner.js +27 -0
  93. package/dist/ui/spinner.js.map +1 -0
  94. package/dist/ui/theme.d.ts +22 -0
  95. package/dist/ui/theme.d.ts.map +1 -0
  96. package/dist/ui/theme.js +42 -0
  97. package/dist/ui/theme.js.map +1 -0
  98. package/dist/utils/fs-retry.d.ts +46 -0
  99. package/dist/utils/fs-retry.d.ts.map +1 -0
  100. package/dist/utils/fs-retry.js +94 -0
  101. package/dist/utils/fs-retry.js.map +1 -0
  102. package/dist/utils/output.d.ts +16 -0
  103. package/dist/utils/output.d.ts.map +1 -0
  104. package/dist/utils/output.js +20 -0
  105. package/dist/utils/output.js.map +1 -0
  106. package/dist/wizard/build.d.ts +2 -1
  107. package/dist/wizard/build.d.ts.map +1 -1
  108. package/dist/wizard/build.js +8 -7
  109. package/dist/wizard/build.js.map +1 -1
  110. package/package.json +4 -2
package/README.md CHANGED
@@ -10,8 +10,10 @@
10
10
  instructions). It never re-implements any dev tool — it just drives mise/rtk
11
11
  and writes config files for you.
12
12
 
13
- It targets four AI coding agents: **Claude Code**, **OpenAI Codex CLI**,
14
- **GitHub Copilot** (CLI/Chat), and **OpenCode**.
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.
15
17
 
16
18
  > **📦 Published as `@indy2kro/agentenv`.** The npm package name is scoped
17
19
  > (`agentenv` was already taken) — install with
@@ -28,10 +30,9 @@ It targets four AI coding agents: **Claude Code**, **OpenAI Codex CLI**,
28
30
  - [Configuration (`agentenv.toml`)](#configuration-agentenvtoml)
29
31
  - [Tool catalog](#tool-catalog)
30
32
  - [Custom tools](#custom-tools)
31
- - [Optional integrations (experimental, not yet active)](#optional-integrations-experimental-not-yet-active)
33
+ - [Optional integrations](#optional-integrations)
32
34
  - [Troubleshooting](#troubleshooting)
33
35
  - [Development](#development)
34
- - [What's still missing](#whats-still-missing)
35
36
 
36
37
  ## Why agentenv
37
38
 
@@ -40,7 +41,7 @@ on PATH, or watched every agent redo the same hook-wiring dance for a
40
41
  different config file format, that's what this fixes:
41
42
 
42
43
  - **One command** (`agentenv setup`) gets a fresh machine — Windows included
43
- — to a working state for whichever of the four agents you have installed.
44
+ — to a working state for whichever supported agents you have installed.
44
45
  - **A single source of truth** (`agentenv.toml`) drives everything else:
45
46
  `mise.toml`, `AGENTS.md`/`CLAUDE.md`, and each agent's own hook files are
46
47
  all generated from it, never hand-maintained.
@@ -59,7 +60,7 @@ different config file format, that's what this fixes:
59
60
  anything.
60
61
  - **Git for Windows**, if you're on Windows — agentenv's Tier 0 shell fix
61
62
  relies on the POSIX toolchain it bundles.
62
- - Optionally, whichever of the four agents you want configured already
63
+ - Optionally, whichever supported agents you want configured already
63
64
  installed (agentenv detects what's present; it doesn't install the agents
64
65
  themselves).
65
66
 
@@ -105,7 +106,7 @@ Maintainers: see [`docs/guides/releasing.md`](../../docs/guides/releasing.md).
105
106
  agentenv setup
106
107
  ```
107
108
 
108
- This is Simple mode: it auto-detects which of the four agents are installed,
109
+ This is Simple mode: it auto-detects which supported agents are installed,
109
110
  offers the default tool set (Tier 1 always, Tier 2 unless you decline),
110
111
  writes `agentenv.toml`, and wires everything up in one pass — including the
111
112
  Windows shell fix if you're on Windows. Answer three prompts (agents, Tier 2
@@ -132,6 +133,10 @@ previously-saved `agentenv.toml` instead.
132
133
  `apply` logic internally, so the end state is identical either way — the
133
134
  only difference is how you got there.
134
135
 
136
+ Output is colorized when your terminal supports it (auto-detected, honors
137
+ `NO_COLOR`/`FORCE_COLOR`); pass `--no-color` (before or after the subcommand)
138
+ to force it off.
139
+
135
140
  ## Configuration (`agentenv.toml`)
136
141
 
137
142
  Everything flows from one file. It lives either in the project root
@@ -158,6 +163,11 @@ claude_code = true
158
163
  codex_cli = true
159
164
  copilot = true
160
165
  opencode = true
166
+ gemini_cli = false
167
+ cursor = false
168
+ windsurf = false
169
+ cline = false
170
+ vibe = false
161
171
 
162
172
  [tools]
163
173
  # Tier 1 (essential, on by default)
@@ -171,9 +181,30 @@ git_delta = true
171
181
  gh = true
172
182
  difftastic = true
173
183
  # Tier 3 (power-user, off by default) — see the Tool catalog below for the full list
174
- yq = false
175
- bat = false
176
- # ...
184
+ yq = false
185
+ bat = false
186
+ eza = false
187
+ miller = false
188
+ tokei = false
189
+ hyperfine = false
190
+ fzf = false
191
+ just = false
192
+ watchexec = false
193
+ direnv = false
194
+ ripgrep_all = false
195
+ zoxide = false
196
+ shellcheck = false
197
+ uv = false
198
+ xh = false
199
+ actionlint = false
200
+ gitleaks = false
201
+ gum = false
202
+ glow = false
203
+ jless = false
204
+ sd = false
205
+ tealdeer = false
206
+ duckdb = false
207
+ qsv = false
177
208
 
178
209
  # Your own tool, already installed somewhere on the machine
179
210
  [[custom_tools]]
@@ -217,13 +248,31 @@ default. Run `agentenv configure` if you'd rather build this file
217
248
  interactively than hand-write it; the review screen at the end shows you the
218
249
  exact diff before anything is written.
219
250
 
251
+ ## Supported agents
252
+
253
+ | Agent | Config key | Default |
254
+ |---|---|---|
255
+ | Claude Code | `claude_code` | on |
256
+ | OpenAI Codex CLI | `codex_cli` | on |
257
+ | GitHub Copilot | `copilot` | off |
258
+ | OpenCode | `opencode` | off |
259
+ | Gemini CLI | `gemini_cli` | off |
260
+ | Cursor | `cursor` | off |
261
+ | Windsurf | `windsurf` | off |
262
+ | Cline CLI | `cline` | off |
263
+ | Mistral Vibe | `vibe` | off |
264
+
265
+ `agentenv setup` detects installed agents and offers the Simple-mode defaults.
266
+ Use `agentenv configure` or `--agents` when you need to select the full
267
+ supported set explicitly.
268
+
220
269
  ## Tool catalog
221
270
 
222
271
  | Tier | Tools | Default |
223
272
  |---|---|---|
224
273
  | **1 — essential** | `ripgrep` (rg), `fd`, `jq`, `rtk` | always on |
225
- | **2 — AI-coding value-add** | `ast_grep` (sg), `git_delta` (delta), `gh`, `difftastic` (difft) | on (Simple mode asks once) |
226
- | **3 — power-user** | `universal_ctags`, `yq`, `bat`, `eza`, `miller` (mlr), `tokei`, `hyperfine`, `fzf`, `just`, `watchexec`, `direnv` | off — pick individually via `agentenv configure` |
274
+ | **2 — AI-coding value-add** | `ast_grep` (sg), `git_delta` (delta), `universal_ctags`, `gh`, `difftastic` (difft) | on (Simple mode asks once) |
275
+ | **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 — pick individually via `agentenv configure` |
227
276
 
228
277
  All of Tiers 1–3 install through mise the same way — no separate mechanism.
229
278
  Two tools (`universal_ctags`, `tokei`) aren't in mise's registry on every
@@ -246,29 +295,49 @@ supported shapes:
246
295
  Custom tools flow through the exact same "config changed → regenerate
247
296
  `AGENTS.md`/hooks" pipeline as catalog tools.
248
297
 
249
- ## Optional integrations (experimental, not yet active)
250
-
251
- `agentenv.toml` has a `[integrations.superpowers]` section for optionally
252
- installing [Superpowers](https://github.com/obra/superpowers) — a
253
- third-party Claude Code skill/methodology plugin — through its own
254
- documented installer, never bundled or forked. The schema is fully
255
- implemented today (validation, defaults, `agentenv configure`'s pending
256
- opt-in step) but **`agentenv apply`/`status` do not act on it yet** — setting
257
- `enabled = true` today parses and validates cleanly but has no effect. See
258
- [What's still missing](#whats-still-missing).
259
-
260
- When it lands, only Claude Code will get a fully automated install (via
261
- `claude plugin marketplace add` / `claude plugin install`, pinned to a
262
- specific `ref`) — Codex CLI, Copilot, and OpenCode have no safe
263
- non-interactive installer documented upstream today, so they'll always
264
- report "unsupported" with manual-install instructions instead. See
298
+ ## Optional integrations
299
+
300
+ Agentenv can optionally install third-party skill/methodology integrations
301
+ through their own documented native installers — never bundled, never
302
+ forked. The first is [Superpowers](https://github.com/obra/superpowers).
303
+ Superpowers itself now supports a long list of coding agents/harnesses, but
304
+ of agentenv's original four v1 targets, only Claude Code has a documented,
305
+ non-interactive, ref-pinnable installer today
306
+ (`claude plugin marketplace add` / `claude plugin install`). Copilot
307
+ documents a command of the same shape but no way to pin a ref, and Codex
308
+ CLI/OpenCode have no fixed non-interactive command at all — so those three
309
+ are always reported as `unsupported` in `agentenv status`, with manual
310
+ install hints, rather than run unpinned or unreviewed. See
265
311
  [`docs/research/superpowers-install-mechanisms.md`](../../docs/research/superpowers-install-mechanisms.md)
266
- for why.
312
+ for the per-agent findings and why.
313
+
314
+ Disabled by default. To opt in:
315
+
316
+ ```toml
317
+ [integrations.superpowers]
318
+ enabled = true
319
+ source = "github:obra/superpowers"
320
+ ref = "v6.3.0"
321
+ scope = "user"
322
+ agents = ["claude_code"]
323
+ allow_hooks = true # Superpowers registers a SessionStart hook
324
+ allow_external_requests = false
325
+ ```
267
326
 
268
- `agentenv` also never touches GitHub credentials: a `gh` auth-status probe
269
- (`gh auth status --hostname github.com`, read-only, never `gh auth login`)
270
- exists in the codebase but — like the rest of this section — isn't wired
271
- into `agentenv status`'s output yet either.
327
+ `agentenv apply` installs/updates it idempotently for Claude Code (skipping
328
+ and warning if `allow_hooks` isn't explicitly `true`, since Superpowers
329
+ registers a `SessionStart` hook), and `agentenv status` reports an
330
+ **Integrations** section with enabled/disabled, source, ref, scope, and each
331
+ agent's installed/missing/unsupported/drifted state. `agentenv configure`
332
+ (Advanced mode) also offers this as an explicit opt-in step, showing the
333
+ full source/ref/scope/agents/hooks/external-request summary before
334
+ installing anything. `agentenv setup` (Simple mode) never enables it and
335
+ always preserves whatever is already configured.
336
+
337
+ `agentenv` also never touches GitHub credentials: `agentenv status` reports
338
+ `gh` authentication (authenticated/unauthenticated/unknown) via a read-only
339
+ `gh auth status --hostname github.com` probe; agentenv never runs
340
+ `gh auth login` or reads token values.
272
341
 
273
342
  ## Troubleshooting
274
343
 
@@ -280,8 +349,9 @@ into `agentenv status`'s output yet either.
280
349
  is installed and on PATH. `--skip-mise-install` intentionally leaves tools
281
350
  uninstalled; don't use it for your real run.
282
351
  - **Windows: agents aren't picking up ripgrep/fd/etc.** — check the "Tier 0
283
- (shell)" block in `agentenv status`. If it reports not POSIX-compatible,
284
- re-run `agentenv apply`; if Git Bash truly isn't installed, install
352
+ (shell)" block in `agentenv status`. It lists each enabled agent's shell
353
+ override state; if any show `✗` or it says "Fix: run `agentenv apply`",
354
+ re-run `agentenv apply`. If Git Bash truly isn't installed, install
285
355
  [Git for Windows](https://gitforwindows.org) first.
286
356
  - **A hook file has content you added by hand, and you're worried `apply`
287
357
  will clobber it** — it won't. Regeneration only replaces the marker-block
@@ -307,17 +377,6 @@ for shipping a new npm version (one-button `Release` workflow), and
307
377
  [`docs/plans/agentenv-dev-plan.md`](../../docs/plans/agentenv-dev-plan.md)
308
378
  for the full design, config schema rationale, and phase roadmap.
309
379
 
310
- ## What's still missing
311
-
312
- - **Optional integrations aren't wired up yet.** The `[integrations.superpowers]`
313
- config schema, its Claude Code installer adapter, and the read-only `gh`
314
- auth probe all exist and are tested, but nothing in `apply`, `status`,
315
- `setup`, or `configure` calls them yet — see
316
- [Optional integrations](#optional-integrations-experimental-not-yet-active)
317
- above. Tracked in
318
- [`docs/plans/agentenv-dev-plan.md`](../../docs/plans/agentenv-dev-plan.md)
319
- Phase 6.
320
-
321
380
  ## License
322
381
 
323
382
  MIT
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Cline CLI Adapter — delegates to `rtk init --agent cline`.
3
+ */
4
+ import { RtkDelegationAdapter } from './rtk-delegation.js';
5
+ import type { AdapterConfig } from './base.js';
6
+ export declare class ClineAdapter extends RtkDelegationAdapter {
7
+ constructor(config: AdapterConfig);
8
+ }
9
+ //# sourceMappingURL=cline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cline.d.ts","sourceRoot":"","sources":["../../src/adapters/cline.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG/C,qBAAa,YAAa,SAAQ,oBAAoB;gBACxC,MAAM,EAAE,aAAa;CAUlC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Cline CLI Adapter — delegates to `rtk init --agent cline`.
3
+ */
4
+ import * as path from 'path';
5
+ import { RtkDelegationAdapter } from './rtk-delegation.js';
6
+ import { RTK_INIT_FLAGS } from '../toolchain/rtk.js';
7
+ export class ClineAdapter extends RtkDelegationAdapter {
8
+ constructor(config) {
9
+ const home = process.env.HOME || process.env.USERPROFILE || '';
10
+ super(config, {
11
+ agentKey: 'cline',
12
+ label: 'Cline CLI',
13
+ rtkFlags: RTK_INIT_FLAGS.cline,
14
+ configDir: path.join(home, '.cline'),
15
+ expectedFile: 'RTK.md',
16
+ });
17
+ }
18
+ }
19
+ //# sourceMappingURL=cline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cline.js","sourceRoot":"","sources":["../../src/adapters/cline.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,OAAO,YAAa,SAAQ,oBAAoB;IACpD,YAAY,MAAqB;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAC/D,KAAK,CAAC,MAAM,EAAE;YACZ,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,WAAW;YAClB,QAAQ,EAAE,cAAc,CAAC,KAAK;YAC9B,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;YACpC,YAAY,EAAE,QAAQ;SACvB,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Cursor Adapter — delegates to `rtk init --agent cursor`.
3
+ */
4
+ import { RtkDelegationAdapter } from './rtk-delegation.js';
5
+ import type { AdapterConfig } from './base.js';
6
+ export declare class CursorAdapter extends RtkDelegationAdapter {
7
+ constructor(config: AdapterConfig);
8
+ }
9
+ //# sourceMappingURL=cursor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/adapters/cursor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG/C,qBAAa,aAAc,SAAQ,oBAAoB;gBACzC,MAAM,EAAE,aAAa;CAUlC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Cursor Adapter — delegates to `rtk init --agent cursor`.
3
+ */
4
+ import * as path from 'path';
5
+ import { RtkDelegationAdapter } from './rtk-delegation.js';
6
+ import { RTK_INIT_FLAGS } from '../toolchain/rtk.js';
7
+ export class CursorAdapter extends RtkDelegationAdapter {
8
+ constructor(config) {
9
+ const home = process.env.HOME || process.env.USERPROFILE || '';
10
+ super(config, {
11
+ agentKey: 'cursor',
12
+ label: 'Cursor',
13
+ rtkFlags: RTK_INIT_FLAGS.cursor,
14
+ configDir: path.join(home, '.cursor'),
15
+ expectedFile: 'RTK.md',
16
+ });
17
+ }
18
+ }
19
+ //# sourceMappingURL=cursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/adapters/cursor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,OAAO,aAAc,SAAQ,oBAAoB;IACrD,YAAY,MAAqB;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAC/D,KAAK,CAAC,MAAM,EAAE;YACZ,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,cAAc,CAAC,MAAM;YAC/B,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;YACrC,YAAY,EAAE,QAAQ;SACvB,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Agent Installation Detection
3
- * Determines which of the four v1 agents are installed, based on their CLI
3
+ * Determines which of the nine agents are installed, based on their CLI
4
4
  * binaries being resolvable on the machine (PATH lookup), which is what the
5
5
  * interactive wizard's pre-checked defaults depend on.
6
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/adapters/detect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAIpD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAKrD,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;AAapD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,GAAE,QAAwB,GAAG,QAAQ,EAAE,CAQlF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAE,QAAwB,GAAG,OAAO,CAE3F;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA4B5D"}
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/adapters/detect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAIpD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAUrD,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;AAapD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,GAAE,QAAwB,GAAG,QAAQ,EAAE,CAQlF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAE,QAAwB,GAAG,OAAO,CAE3F;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA4B5D"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Agent Installation Detection
3
- * Determines which of the four v1 agents are installed, based on their CLI
3
+ * Determines which of the nine agents are installed, based on their CLI
4
4
  * binaries being resolvable on the machine (PATH lookup), which is what the
5
5
  * interactive wizard's pre-checked defaults depend on.
6
6
  */
@@ -14,6 +14,11 @@ export const AGENT_COMMANDS = {
14
14
  codex_cli: ['codex'],
15
15
  copilot: ['gh'],
16
16
  opencode: ['opencode'],
17
+ gemini_cli: ['gemini'],
18
+ cursor: ['cursor'],
19
+ windsurf: ['windsurf'],
20
+ cline: ['cline'],
21
+ vibe: ['vibe'],
17
22
  };
18
23
  const defaultDetect = (command) => {
19
24
  if (command.includes('/') || command.includes('\\') || command.includes(' ')) {
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/adapters/detect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,aAAa,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD,0EAA0E;AAC1E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,cAAc,GAA+B;IACxD,WAAW,EAAE,CAAC,QAAQ,CAAC;IACvB,SAAS,EAAE,CAAC,OAAO,CAAC;IACpB,OAAO,EAAE,CAAC,IAAI,CAAC;IACf,QAAQ,EAAE,CAAC,UAAU,CAAC;CACvB,CAAC;AAIF,MAAM,aAAa,GAAa,CAAC,OAAO,EAAE,EAAE;IAC1C,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7E,OAAO,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,0EAA0E;IAC1E,uEAAuE;IACvE,0EAA0E;IAC1E,gDAAgD;IAChD,OAAO,aAAa,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;AACzC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAmB,aAAa;IACpE,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAe,EAAE,SAAmB,aAAa;IAChF,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,6EAA6E;IAC7E,gFAAgF;IAChF,0CAA0C;IAC1C,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7E,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;IAClE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE;YACtD,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;QAChC,OAAO,CACL,GAAG;aACA,KAAK,CAAC,OAAO,CAAC;aACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1B,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAC3C,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/adapters/detect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Gemini CLI Adapter — delegates to `rtk init --gemini`.
3
+ */
4
+ import { RtkDelegationAdapter } from './rtk-delegation.js';
5
+ import type { AdapterConfig } from './base.js';
6
+ export declare class GeminiCliAdapter extends RtkDelegationAdapter {
7
+ constructor(config: AdapterConfig);
8
+ }
9
+ //# sourceMappingURL=gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/adapters/gemini.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG/C,qBAAa,gBAAiB,SAAQ,oBAAoB;gBAC5C,MAAM,EAAE,aAAa;CAUlC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Gemini CLI Adapter — delegates to `rtk init --gemini`.
3
+ */
4
+ import * as path from 'path';
5
+ import { RtkDelegationAdapter } from './rtk-delegation.js';
6
+ import { RTK_INIT_FLAGS } from '../toolchain/rtk.js';
7
+ export class GeminiCliAdapter extends RtkDelegationAdapter {
8
+ constructor(config) {
9
+ const home = process.env.HOME || process.env.USERPROFILE || '';
10
+ super(config, {
11
+ agentKey: 'gemini_cli',
12
+ label: 'Gemini CLI',
13
+ rtkFlags: RTK_INIT_FLAGS.gemini_cli,
14
+ configDir: path.join(home, '.gemini'),
15
+ expectedFile: 'RTK.md',
16
+ });
17
+ }
18
+ }
19
+ //# sourceMappingURL=gemini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/adapters/gemini.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,OAAO,gBAAiB,SAAQ,oBAAoB;IACxD,YAAY,MAAqB;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAC/D,KAAK,CAAC,MAAM,EAAE;YACZ,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,YAAY;YACnB,QAAQ,EAAE,cAAc,CAAC,UAAU;YACnC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;YACrC,YAAY,EAAE,QAAQ;SACvB,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -9,4 +9,10 @@ export { ClaudeCodeAdapter } from './claude.js';
9
9
  export { CodexCliAdapter } from './codex.js';
10
10
  export { CopilotAdapter } from './copilot.js';
11
11
  export { OpenCodeAdapter } from './opencode.js';
12
+ export { GeminiCliAdapter } from './gemini.js';
13
+ export { CursorAdapter } from './cursor.js';
14
+ export { WindsurfAdapter } from './windsurf.js';
15
+ export { ClineAdapter } from './cline.js';
16
+ export { VibeAdapter } from './vibe.js';
17
+ export { RtkDelegationAdapter } from './rtk-delegation.js';
12
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpE,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpE,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -8,4 +8,10 @@ export { ClaudeCodeAdapter } from './claude.js';
8
8
  export { CodexCliAdapter } from './codex.js';
9
9
  export { CopilotAdapter } from './copilot.js';
10
10
  export { OpenCodeAdapter } from './opencode.js';
11
+ export { GeminiCliAdapter } from './gemini.js';
12
+ export { CursorAdapter } from './cursor.js';
13
+ export { WindsurfAdapter } from './windsurf.js';
14
+ export { ClineAdapter } from './cline.js';
15
+ export { VibeAdapter } from './vibe.js';
16
+ export { RtkDelegationAdapter } from './rtk-delegation.js';
11
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAA4C,MAAM,WAAW,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAA4C,MAAM,WAAW,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Shared adapter for agents whose hook/config wiring is 100% delegated to
3
+ * `rtk init <flags>` (Gemini CLI, Cursor, Windsurf, Cline, Mistral Vibe).
4
+ * Mirrors the proven Codex delegation shape: rtk owns every hook file and
5
+ * RTK.md; this adapter only creates the agent's config dir, runs `rtk init`,
6
+ * and reports what appeared.
7
+ */
8
+ import { BaseAdapter, type AdapterConfig, type AdapterResult } from './base.js';
9
+ import type { AgentKey } from '../config/schema.js';
10
+ export interface RtkDelegationOptions {
11
+ agentKey: AgentKey;
12
+ label: string;
13
+ rtkFlags: string[];
14
+ configDir: string;
15
+ /** Basename (within baseDir) whose appearance marks a successful `rtk init`. */
16
+ expectedFile: string;
17
+ }
18
+ export declare class RtkDelegationAdapter extends BaseAdapter {
19
+ private opts;
20
+ constructor(config: AdapterConfig, opts: RtkDelegationOptions);
21
+ getName(): string;
22
+ getConfigDir(): string;
23
+ isInstalled(): boolean;
24
+ initialize(): Promise<AdapterResult>;
25
+ configureHooks(): Promise<AdapterResult>;
26
+ cleanup(): Promise<AdapterResult>;
27
+ }
28
+ //# sourceMappingURL=rtk-delegation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtk-delegation.d.ts","sourceRoot":"","sources":["../../src/adapters/rtk-delegation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAEhF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGpD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,oBAAqB,SAAQ,WAAW;IACnD,OAAO,CAAC,IAAI,CAAuB;gBAEvB,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,oBAAoB;IAK7D,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;IA4BxC,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;CASxC"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Shared adapter for agents whose hook/config wiring is 100% delegated to
3
+ * `rtk init <flags>` (Gemini CLI, Cursor, Windsurf, Cline, Mistral Vibe).
4
+ * Mirrors the proven Codex delegation shape: rtk owns every hook file and
5
+ * RTK.md; this adapter only creates the agent's config dir, runs `rtk init`,
6
+ * and reports what appeared.
7
+ */
8
+ import * as fs from 'fs';
9
+ import * as path from 'path';
10
+ import { BaseAdapter } from './base.js';
11
+ import { isAgentInstalled } from './detect.js';
12
+ import { resolveRtkInit, rtkMessage } from '../toolchain/rtk.js';
13
+ export class RtkDelegationAdapter extends BaseAdapter {
14
+ constructor(config, opts) {
15
+ super(config);
16
+ this.opts = opts;
17
+ }
18
+ getName() {
19
+ return this.opts.label;
20
+ }
21
+ getConfigDir() {
22
+ return this.opts.configDir;
23
+ }
24
+ isInstalled() {
25
+ return isAgentInstalled(this.opts.agentKey);
26
+ }
27
+ async initialize() {
28
+ const result = {
29
+ success: true,
30
+ message: '',
31
+ filesCreated: [],
32
+ filesModified: [],
33
+ errors: [],
34
+ };
35
+ if (!this.config.enabled) {
36
+ result.message = `${this.opts.label} adapter not enabled`;
37
+ return result;
38
+ }
39
+ try {
40
+ if (!fs.existsSync(this.opts.configDir)) {
41
+ fs.mkdirSync(this.opts.configDir, { recursive: true });
42
+ result.filesCreated.push(this.opts.configDir);
43
+ }
44
+ }
45
+ catch (err) {
46
+ result.success = false;
47
+ result.errors.push(`Failed to create config directory: ${err instanceof Error ? err.message : String(err)}`);
48
+ }
49
+ if (this.config.rtkEnabled) {
50
+ const hookResult = await this.configureHooks();
51
+ if (hookResult.success) {
52
+ result.filesCreated.push(...hookResult.filesCreated);
53
+ result.filesModified.push(...hookResult.filesModified);
54
+ result.message = hookResult.message;
55
+ }
56
+ else {
57
+ result.success = false;
58
+ result.errors.push(...hookResult.errors);
59
+ }
60
+ }
61
+ else {
62
+ result.message = `RTK disabled; no ${this.opts.label} hooks configured`;
63
+ }
64
+ return result;
65
+ }
66
+ async configureHooks() {
67
+ const result = {
68
+ success: true,
69
+ message: '',
70
+ filesCreated: [],
71
+ filesModified: [],
72
+ errors: [],
73
+ };
74
+ if (!this.config.enabled) {
75
+ result.message = `${this.opts.label} adapter not enabled`;
76
+ return result;
77
+ }
78
+ const expectedPath = path.join(this.config.baseDir, this.opts.expectedFile);
79
+ const existed = fs.existsSync(expectedPath);
80
+ const run = resolveRtkInit(this.config.rtkInit)(this.opts.rtkFlags, this.config.baseDir);
81
+ if (run.success) {
82
+ if (!existed && fs.existsSync(expectedPath))
83
+ result.filesCreated.push(expectedPath);
84
+ result.message = rtkMessage(run);
85
+ }
86
+ else {
87
+ result.success = false;
88
+ result.errors.push(run.message + (run.stderr ? `: ${run.stderr.trim()}` : ''));
89
+ }
90
+ return result;
91
+ }
92
+ async cleanup() {
93
+ return {
94
+ success: true,
95
+ message: `${this.opts.label} adapter cleaned up`,
96
+ filesCreated: [],
97
+ filesModified: [],
98
+ errors: [],
99
+ };
100
+ }
101
+ }
102
+ //# sourceMappingURL=rtk-delegation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rtk-delegation.js","sourceRoot":"","sources":["../../src/adapters/rtk-delegation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Mistral Vibe Adapter — delegates to `rtk init --agent vibe`.
3
+ */
4
+ import { RtkDelegationAdapter } from './rtk-delegation.js';
5
+ import type { AdapterConfig } from './base.js';
6
+ export declare class VibeAdapter extends RtkDelegationAdapter {
7
+ constructor(config: AdapterConfig);
8
+ }
9
+ //# sourceMappingURL=vibe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vibe.d.ts","sourceRoot":"","sources":["../../src/adapters/vibe.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG/C,qBAAa,WAAY,SAAQ,oBAAoB;gBACvC,MAAM,EAAE,aAAa;CAUlC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Mistral Vibe Adapter — delegates to `rtk init --agent vibe`.
3
+ */
4
+ import * as path from 'path';
5
+ import { RtkDelegationAdapter } from './rtk-delegation.js';
6
+ import { RTK_INIT_FLAGS } from '../toolchain/rtk.js';
7
+ export class VibeAdapter extends RtkDelegationAdapter {
8
+ constructor(config) {
9
+ const home = process.env.HOME || process.env.USERPROFILE || '';
10
+ super(config, {
11
+ agentKey: 'vibe',
12
+ label: 'Mistral Vibe',
13
+ rtkFlags: RTK_INIT_FLAGS.vibe,
14
+ configDir: path.join(home, '.vibe'),
15
+ expectedFile: 'RTK.md',
16
+ });
17
+ }
18
+ }
19
+ //# sourceMappingURL=vibe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vibe.js","sourceRoot":"","sources":["../../src/adapters/vibe.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,OAAO,WAAY,SAAQ,oBAAoB;IACnD,YAAY,MAAqB;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAC/D,KAAK,CAAC,MAAM,EAAE;YACZ,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,cAAc;YACrB,QAAQ,EAAE,cAAc,CAAC,IAAI;YAC7B,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;YACnC,YAAY,EAAE,QAAQ;SACvB,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Windsurf Adapter — delegates to `rtk init --agent windsurf`.
3
+ */
4
+ import { RtkDelegationAdapter } from './rtk-delegation.js';
5
+ import type { AdapterConfig } from './base.js';
6
+ export declare class WindsurfAdapter extends RtkDelegationAdapter {
7
+ constructor(config: AdapterConfig);
8
+ }
9
+ //# sourceMappingURL=windsurf.d.ts.map