@indy2kro/agentenv 1.0.1 → 1.1.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.
Files changed (130) hide show
  1. package/dist/adapters/agent-dirs.d.ts +29 -0
  2. package/dist/adapters/agent-dirs.d.ts.map +1 -0
  3. package/dist/adapters/agent-dirs.js +46 -0
  4. package/dist/adapters/agent-dirs.js.map +1 -0
  5. package/dist/adapters/base.d.ts +7 -1
  6. package/dist/adapters/base.d.ts.map +1 -1
  7. package/dist/adapters/base.js.map +1 -1
  8. package/dist/adapters/claude.d.ts.map +1 -1
  9. package/dist/adapters/claude.js +18 -10
  10. package/dist/adapters/claude.js.map +1 -1
  11. package/dist/adapters/cline.d.ts.map +1 -1
  12. package/dist/adapters/cline.js +2 -2
  13. package/dist/adapters/cline.js.map +1 -1
  14. package/dist/adapters/codex.d.ts.map +1 -1
  15. package/dist/adapters/codex.js +3 -2
  16. package/dist/adapters/codex.js.map +1 -1
  17. package/dist/adapters/copilot.d.ts.map +1 -1
  18. package/dist/adapters/copilot.js +3 -4
  19. package/dist/adapters/copilot.js.map +1 -1
  20. package/dist/adapters/cursor.d.ts.map +1 -1
  21. package/dist/adapters/cursor.js +7 -6
  22. package/dist/adapters/cursor.js.map +1 -1
  23. package/dist/adapters/detect.d.ts.map +1 -1
  24. package/dist/adapters/detect.js +1 -0
  25. package/dist/adapters/detect.js.map +1 -1
  26. package/dist/adapters/gemini.d.ts.map +1 -1
  27. package/dist/adapters/gemini.js +2 -2
  28. package/dist/adapters/gemini.js.map +1 -1
  29. package/dist/adapters/index.d.ts +4 -0
  30. package/dist/adapters/index.d.ts.map +1 -1
  31. package/dist/adapters/index.js +21 -0
  32. package/dist/adapters/index.js.map +1 -1
  33. package/dist/adapters/opencode.d.ts.map +1 -1
  34. package/dist/adapters/opencode.js +2 -2
  35. package/dist/adapters/opencode.js.map +1 -1
  36. package/dist/adapters/rtk-delegation.d.ts.map +1 -1
  37. package/dist/adapters/rtk-delegation.js +16 -1
  38. package/dist/adapters/rtk-delegation.js.map +1 -1
  39. package/dist/adapters/vibe.d.ts.map +1 -1
  40. package/dist/adapters/vibe.js +2 -2
  41. package/dist/adapters/vibe.js.map +1 -1
  42. package/dist/adapters/windsurf.d.ts.map +1 -1
  43. package/dist/adapters/windsurf.js +2 -2
  44. package/dist/adapters/windsurf.js.map +1 -1
  45. package/dist/cli/exit.d.ts +17 -6
  46. package/dist/cli/exit.d.ts.map +1 -1
  47. package/dist/cli/exit.js +17 -7
  48. package/dist/cli/exit.js.map +1 -1
  49. package/dist/commands/apply.d.ts +77 -0
  50. package/dist/commands/apply.d.ts.map +1 -1
  51. package/dist/commands/apply.js +202 -27
  52. package/dist/commands/apply.js.map +1 -1
  53. package/dist/commands/config-edit.d.ts +33 -0
  54. package/dist/commands/config-edit.d.ts.map +1 -0
  55. package/dist/commands/config-edit.js +216 -0
  56. package/dist/commands/config-edit.js.map +1 -0
  57. package/dist/commands/doctor.d.ts +57 -0
  58. package/dist/commands/doctor.d.ts.map +1 -1
  59. package/dist/commands/doctor.js +233 -59
  60. package/dist/commands/doctor.js.map +1 -1
  61. package/dist/commands/setup.d.ts +4 -0
  62. package/dist/commands/setup.d.ts.map +1 -1
  63. package/dist/commands/setup.js +58 -5
  64. package/dist/commands/setup.js.map +1 -1
  65. package/dist/commands/status.d.ts.map +1 -1
  66. package/dist/commands/status.js +40 -16
  67. package/dist/commands/status.js.map +1 -1
  68. package/dist/commands/uninstall.d.ts +78 -1
  69. package/dist/commands/uninstall.d.ts.map +1 -1
  70. package/dist/commands/uninstall.js +329 -31
  71. package/dist/commands/uninstall.js.map +1 -1
  72. package/dist/commands/update.d.ts +51 -0
  73. package/dist/commands/update.d.ts.map +1 -1
  74. package/dist/commands/update.js +172 -71
  75. package/dist/commands/update.js.map +1 -1
  76. package/dist/commands/wizard.d.ts +27 -1
  77. package/dist/commands/wizard.d.ts.map +1 -1
  78. package/dist/commands/wizard.js +48 -31
  79. package/dist/commands/wizard.js.map +1 -1
  80. package/dist/config/schema.d.ts +28 -3
  81. package/dist/config/schema.d.ts.map +1 -1
  82. package/dist/config/schema.js +206 -54
  83. package/dist/config/schema.js.map +1 -1
  84. package/dist/config/scopes.d.ts +4 -2
  85. package/dist/config/scopes.d.ts.map +1 -1
  86. package/dist/config/scopes.js +23 -4
  87. package/dist/config/scopes.js.map +1 -1
  88. package/dist/generate/agentsmd.d.ts +54 -0
  89. package/dist/generate/agentsmd.d.ts.map +1 -1
  90. package/dist/generate/agentsmd.js +222 -143
  91. package/dist/generate/agentsmd.js.map +1 -1
  92. package/dist/index.js +9 -2
  93. package/dist/index.js.map +1 -1
  94. package/dist/integrations/render.d.ts.map +1 -1
  95. package/dist/integrations/render.js +25 -10
  96. package/dist/integrations/render.js.map +1 -1
  97. package/dist/integrations/superpowers.d.ts.map +1 -1
  98. package/dist/integrations/superpowers.js +2 -0
  99. package/dist/integrations/superpowers.js.map +1 -1
  100. package/dist/shell/detector.d.ts +63 -5
  101. package/dist/shell/detector.d.ts.map +1 -1
  102. package/dist/shell/detector.js +253 -65
  103. package/dist/shell/detector.js.map +1 -1
  104. package/dist/toolchain/gh.d.ts.map +1 -1
  105. package/dist/toolchain/gh.js +1 -0
  106. package/dist/toolchain/gh.js.map +1 -1
  107. package/dist/toolchain/mise.d.ts +7 -0
  108. package/dist/toolchain/mise.d.ts.map +1 -1
  109. package/dist/toolchain/mise.js +20 -3
  110. package/dist/toolchain/mise.js.map +1 -1
  111. package/dist/toolchain/rtk.d.ts +71 -3
  112. package/dist/toolchain/rtk.d.ts.map +1 -1
  113. package/dist/toolchain/rtk.js +115 -7
  114. package/dist/toolchain/rtk.js.map +1 -1
  115. package/dist/ui/output.d.ts.map +1 -1
  116. package/dist/ui/output.js +10 -2
  117. package/dist/ui/output.js.map +1 -1
  118. package/dist/ui/spinner.d.ts +15 -3
  119. package/dist/ui/spinner.d.ts.map +1 -1
  120. package/dist/ui/spinner.js +52 -4
  121. package/dist/ui/spinner.js.map +1 -1
  122. package/dist/ui/theme.d.ts +27 -1
  123. package/dist/ui/theme.d.ts.map +1 -1
  124. package/dist/ui/theme.js +73 -8
  125. package/dist/ui/theme.js.map +1 -1
  126. package/dist/utils/fs-retry.d.ts +16 -0
  127. package/dist/utils/fs-retry.d.ts.map +1 -1
  128. package/dist/utils/fs-retry.js +28 -0
  129. package/dist/utils/fs-retry.js.map +1 -1
  130. package/package.json +6 -5
@@ -5,25 +5,60 @@ import { loadConfig, validateConfig } from '../config/schema.js';
5
5
  import { configFilePath, findConfigPath, parseScopeFlag, resolveScopeDir, } from '../config/scopes.js';
6
6
  import { shellFixStatePath } from '../shell/shell-fix-state.js';
7
7
  import { ensureGlobalShimsDir, getMiseVersion, getUpgradeableTools, isMiseInstalled, miseActivationHint, miseInstallInstructions, runMiseSelfUpdate, runMiseUpgrade, shimsDir, shimsDirOnPath, toolAvailabilityLine, trustMiseToml, verifyHintNeeded, verifySummaryLine, verifyToolAvailability, } from '../toolchain/mise.js';
8
- import { renderLogo } from '../ui/output.js';
8
+ import { renderLogo, setQuietEnabled } from '../ui/output.js';
9
9
  import { printConfigPath, printResult, reportValidation } from '../ui/report.js';
10
10
  import { normalizeOutput } from '../utils/output.js';
11
- async function doUpdate(options) {
11
+ export async function doUpdate(options, deps = {}) {
12
12
  const startedAt = Date.now();
13
- if (!isMiseInstalled()) {
14
- console.error('agentenv update requires mise, but mise was not found.');
13
+ const json = options.json === true;
14
+ if (json)
15
+ setQuietEnabled(true);
16
+ const isMiseInstalledFn = deps.isMiseInstalled ?? isMiseInstalled;
17
+ const getMiseVersionFn = deps.getMiseVersion ?? getMiseVersion;
18
+ const ensureGlobalShimsDirFn = deps.ensureGlobalShimsDir ?? ensureGlobalShimsDir;
19
+ const runMiseSelfUpdateFn = deps.runMiseSelfUpdate ?? runMiseSelfUpdate;
20
+ const trustMiseTomlFn = deps.trustMiseToml ?? trustMiseToml;
21
+ const runMiseUpgradeFn = deps.runMiseUpgrade ?? runMiseUpgrade;
22
+ const verifyToolAvailabilityFn = deps.verifyToolAvailability ?? verifyToolAvailability;
23
+ const loadConfigFn = deps.loadConfig ?? loadConfig;
24
+ const watchMiseTomlFn = deps.watchMiseToml ?? watchMiseToml;
25
+ // In --json mode every line that would otherwise print live is collected
26
+ // instead, so the command emits exactly one JSON document at the end —
27
+ // the same {success, messages, errors} shape `apply --json` uses.
28
+ const messages = [];
29
+ const errors = [];
30
+ const log = (line) => {
31
+ if (json)
32
+ messages.push(line);
33
+ else
34
+ console.log(line);
35
+ };
36
+ const logErr = (line) => {
37
+ if (json)
38
+ errors.push(line);
39
+ else
40
+ console.error(line);
41
+ };
42
+ const finish = (success, elapsedMs) => {
43
+ if (json)
44
+ console.log(JSON.stringify({ success, messages, errors, elapsedMs }, null, 2));
45
+ };
46
+ if (!isMiseInstalledFn()) {
47
+ logErr('agentenv update requires mise, but mise was not found.');
15
48
  for (const line of miseInstallInstructions())
16
- console.error(` ${line}`);
49
+ logErr(` ${line}`);
50
+ finish(false);
17
51
  process.exitCode = 1;
18
52
  return;
19
53
  }
20
54
  renderLogo();
21
- console.log(`Mise: ${getMiseVersion()}\n`);
55
+ log(`Mise: ${getMiseVersionFn()}\n`);
22
56
  let configPath;
23
57
  if (options.scope) {
24
58
  configPath = configFilePath(options.scope);
25
59
  if (!fs.existsSync(configPath)) {
26
- console.error(`No agentenv.toml found at ${configPath} (scope ${options.scope}).`);
60
+ logErr(`No agentenv.toml found at ${configPath} (scope ${options.scope}).`);
61
+ finish(false);
27
62
  process.exitCode = 1;
28
63
  return;
29
64
  }
@@ -31,29 +66,39 @@ async function doUpdate(options) {
31
66
  else {
32
67
  configPath = findConfigPath() ?? null;
33
68
  if (!configPath) {
34
- console.error('No agentenv.toml found. Run `agentenv setup` first.');
69
+ logErr('No agentenv.toml found. Run `agentenv setup` first.');
70
+ finish(false);
35
71
  process.exitCode = 1;
36
72
  return;
37
73
  }
38
74
  }
39
- printConfigPath(configPath);
75
+ if (!json)
76
+ printConfigPath(configPath);
40
77
  let config;
41
78
  try {
42
- config = loadConfig(configPath);
79
+ config = loadConfigFn(configPath, { layerUserConfig: true });
43
80
  }
44
81
  catch (error) {
45
- console.error(error instanceof Error ? error.message : String(error));
82
+ logErr(error instanceof Error ? error.message : String(error));
83
+ finish(false);
46
84
  process.exitCode = 1;
47
85
  return;
48
86
  }
49
87
  const report = validateConfig(config);
50
- if (!reportValidation(report, 'Configuration invalid — not applying.')) {
88
+ if (report.errors.length > 0) {
89
+ if (json)
90
+ errors.push(...report.errors);
91
+ else
92
+ reportValidation(report, 'Configuration invalid — not applying.');
93
+ finish(false);
51
94
  process.exitCode = 1;
52
95
  return;
53
96
  }
97
+ if (!json)
98
+ reportValidation(report, 'Configuration invalid — not applying.');
54
99
  const dryRun = options.dryRun === true || options.check === true;
55
100
  if (dryRun)
56
- console.log('\n[DRY RUN] Printing the update plan; nothing will be changed.\n');
101
+ log('\n[DRY RUN] Printing the update plan; nothing will be changed.\n');
57
102
  const doSelf = options.self === true || (options.tools === undefined && options.self === undefined);
58
103
  const doTools = options.tools === true || (options.tools === undefined && options.self === undefined);
59
104
  let failed = false;
@@ -62,104 +107,114 @@ async function doUpdate(options) {
62
107
  const pathLine = shimsDirOnPath()
63
108
  ? `${dir} is on PATH`
64
109
  : `would add ${dir} to the global mise config PATH`;
65
- console.log(`Shims: ${pathLine}`);
110
+ log(`Shims: ${pathLine}`);
66
111
  }
67
112
  else {
68
- const shims = ensureGlobalShimsDir(shellFixStatePath());
113
+ const shims = ensureGlobalShimsDirFn(shellFixStatePath());
69
114
  if (shims.success) {
70
- console.log(`Shims: ${shims.message}`);
115
+ log(`Shims: ${shims.message}`);
71
116
  }
72
117
  else {
73
- console.error(`Shims: ${shims.message}`);
118
+ logErr(`Shims: ${shims.message}`);
74
119
  failed = true;
75
120
  }
76
121
  }
77
122
  if (doSelf) {
78
123
  if (dryRun) {
79
- console.log('\nWould run `mise self-update`.');
124
+ log('\nWould run `mise self-update`.');
80
125
  }
81
126
  else {
82
- console.log('\nUpdating mise itself...');
83
- const result = await runMiseSelfUpdate();
127
+ log('\nUpdating mise itself...');
128
+ const result = await runMiseSelfUpdateFn();
84
129
  if (result.success) {
85
- console.log(` mise self-update: ${result.output || 'already up to date'}`);
130
+ log(` mise self-update: ${result.output || 'already up to date'}`);
86
131
  }
87
132
  else {
88
- console.error(` mise self-update failed: ${result.output || 'no output'} (some install methods, e.g. winget, do not support self-update)`);
133
+ logErr(` mise self-update failed: ${result.output || 'no output'} (some install methods, e.g. winget, do not support self-update)`);
89
134
  failed = true;
90
135
  }
91
136
  }
92
137
  }
93
138
  if (doTools) {
94
139
  if (dryRun) {
95
- console.log('\nUpgrade plan for mise-managed tools:');
140
+ log('\nUpgrade plan for mise-managed tools:');
96
141
  }
97
142
  else {
98
- console.log('\nUpgrading mise-managed tools...');
143
+ log('\nUpgrading mise-managed tools...');
99
144
  }
100
145
  const scopeDir = resolveScopeDir(config.scope ?? 'project');
101
146
  const miseTomlPath = path.join(scopeDir, 'mise.toml');
102
147
  if (!fs.existsSync(miseTomlPath)) {
103
- console.error(` ${miseTomlPath} not found — run \`agentenv apply\` first.`);
148
+ logErr(` ${miseTomlPath} not found — run \`agentenv apply\` first.`);
104
149
  failed = true;
105
150
  }
106
151
  else {
107
152
  if (dryRun) {
108
- console.log(` would trust ${miseTomlPath}`);
153
+ log(` would trust ${miseTomlPath}`);
109
154
  }
110
155
  else {
111
- const trust = trustMiseToml(miseTomlPath, scopeDir);
156
+ const trust = trustMiseTomlFn(miseTomlPath, scopeDir);
112
157
  if (trust.success)
113
- console.log(` ${trust.message}`);
158
+ log(` ${trust.message}`);
114
159
  else
115
- console.error(` ${trust.message}`);
160
+ logErr(` ${trust.message}`);
116
161
  if (!trust.success)
117
162
  failed = true;
118
163
  }
119
164
  const targets = getUpgradeableTools(config);
120
165
  if (targets.length === 0) {
121
- console.log(' No upgradeable tools: everything enabled is pinned to a version.');
166
+ log(' No upgradeable tools: everything enabled is pinned to a version.');
122
167
  }
123
168
  else {
124
- console.log(` mise up ${targets.join(' ')}${dryRun ? ' (would run)' : ''}`);
169
+ log(` mise up ${targets.join(' ')}${dryRun ? ' (would run)' : ''}`);
125
170
  if (!dryRun) {
126
- const upgrade = await runMiseUpgrade(targets, scopeDir);
171
+ const upgrade = await runMiseUpgradeFn(targets, scopeDir);
127
172
  if (upgrade.success) {
128
- console.log(` ${(upgrade.stdout || upgrade.stderr || '').trim() || 'all tools up to date'}`);
173
+ log(` ${(upgrade.stdout || upgrade.stderr || '').trim() || 'all tools up to date'}`);
129
174
  }
130
175
  else {
131
- console.error(` mise up failed (exit ${upgrade.exitCode ?? 'null'}): ${normalizeOutput(upgrade.stderr || upgrade.stdout).trim()}`);
176
+ logErr(` mise up failed (exit ${upgrade.exitCode ?? 'null'}): ${normalizeOutput(upgrade.stderr || upgrade.stdout).trim()}`);
132
177
  failed = true;
133
178
  }
134
179
  }
135
- const availability = verifyToolAvailability(config, {
180
+ const availability = verifyToolAvailabilityFn(config, {
136
181
  cwd: scopeDir,
137
182
  miseTomlPath: path.join(scopeDir, 'mise.toml'),
138
183
  });
139
- console.log(` ${verifySummaryLine(availability)}`);
184
+ log(` ${verifySummaryLine(availability)}`);
140
185
  for (const tool of availability)
141
- console.log(` ${toolAvailabilityLine(tool)}`);
186
+ log(` ${toolAvailabilityLine(tool)}`);
142
187
  if (verifyHintNeeded(availability)) {
143
- console.log();
188
+ log('');
144
189
  for (const line of miseActivationHint().split('\n')) {
145
- console.log(` ${line}`);
190
+ log(` ${line}`);
146
191
  }
147
192
  }
148
193
  }
149
194
  }
150
195
  }
196
+ const elapsedMs = Date.now() - startedAt;
151
197
  if (failed) {
152
198
  process.exitCode = 1;
153
- printResult('fail', 'Update failed', 'one or more tools could not be upgraded — see the messages above', Date.now() - startedAt);
199
+ finish(false, elapsedMs);
200
+ if (!json) {
201
+ printResult('fail', 'Update failed', 'one or more tools could not be upgraded — see the messages above', elapsedMs);
202
+ }
154
203
  }
155
204
  else if (dryRun) {
156
- printResult('ok', 'Dry run complete', 'no changes were made', Date.now() - startedAt);
205
+ finish(true, elapsedMs);
206
+ if (!json)
207
+ printResult('ok', 'Dry run complete', 'no changes were made', elapsedMs);
157
208
  }
158
209
  else {
159
- printResult('ok', 'Update complete!', 'tools are up to date', Date.now() - startedAt);
210
+ finish(true, elapsedMs);
211
+ if (!json)
212
+ printResult('ok', 'Update complete!', 'tools are up to date', elapsedMs);
160
213
  }
161
- // Optional file watching mode
162
- if (options.watch && doTools) {
214
+ // Optional file watching mode. --json prints a single terminal document,
215
+ // which a live watcher can never provide, so it's rejected earlier
216
+ // (see updateCommand's action) rather than silently ignored here.
217
+ if (options.watch && doTools && !json) {
163
218
  if (dryRun) {
164
219
  console.log('\nSkipping watch mode (dry run).');
165
220
  }
@@ -167,43 +222,82 @@ async function doUpdate(options) {
167
222
  console.log('\nWatching mise.toml for changes (Ctrl+C to stop)...');
168
223
  const scopeDir = resolveScopeDir(config.scope ?? 'project');
169
224
  const miseTomlPath = path.join(scopeDir, 'mise.toml');
170
- watchMiseToml(miseTomlPath, scopeDir, config);
225
+ watchMiseTomlFn(miseTomlPath, scopeDir, configPath);
171
226
  }
172
227
  }
173
228
  }
174
229
  /**
175
- * Watch mise.toml for changes and trigger mise up when modified.
176
- * Windows-safe: uses path.resolve() and normalizes paths properly.
230
+ * Watch mise.toml's directory for changes and trigger mise up when it
231
+ * changes, re-reading agentenv.toml fresh each time so a `[tools]` edit
232
+ * made since watch started (via `agentenv apply`, which regenerates
233
+ * mise.toml) is picked up instead of upgrading whatever was enabled when
234
+ * `--watch` started.
235
+ *
236
+ * Watches the *directory*, not the file itself: most editors save via an
237
+ * atomic rename (write a temp file, rename over the original), which
238
+ * replaces the file's inode. A watch on the specific path stops firing
239
+ * after that rename on several platforms/filesystems — a directory watch
240
+ * keeps working, since the directory itself is never replaced.
241
+ *
242
+ * Returns the underlying watcher so callers (and tests) can close it;
243
+ * `debounceMs` is overridable so tests don't have to wait out the real
244
+ * 1000ms debounce.
177
245
  */
178
- function watchMiseToml(miseTomlPath, scopeDir, config) {
246
+ export function watchMiseToml(miseTomlPath, scopeDir, configPath, debounceMs = 1000) {
179
247
  const resolvedPath = path.resolve(miseTomlPath);
180
- const resolvedDir = path.resolve(scopeDir);
181
- // Normalize the path for Windows (remove redundant segments, etc.)
182
- const normalizedPath = path.normalize(resolvedPath);
248
+ // fs.realpathSync.native canonicalizes 8.3-short-name vs. long-name and
249
+ // casing differences that path.resolve() leaves alone. On Windows, a
250
+ // mismatch between this and what ReadDirectoryChangesW reports back trips
251
+ // a known libuv assertion ("Assertion failed: !_wcsnicmp(filename, dir,
252
+ // dirlen)", src/win/fs-event.c) that aborts the whole process, not just
253
+ // this watch — seen on GitHub Actions Windows runners, whose temp dir can
254
+ // resolve to a short-name form (e.g. RUNNER~1).
255
+ let resolvedDir;
256
+ try {
257
+ resolvedDir = fs.realpathSync.native(path.resolve(scopeDir));
258
+ }
259
+ catch {
260
+ resolvedDir = path.resolve(scopeDir);
261
+ }
262
+ const watchedName = path.basename(resolvedPath);
183
263
  let timeout = null;
184
- const DEBOUNCE_MS = 1000;
185
264
  try {
186
- const watcher = fs.watch(normalizedPath, (eventType) => {
187
- if (eventType === 'change') {
188
- if (timeout)
189
- clearTimeout(timeout);
190
- timeout = setTimeout(async () => {
191
- console.log(`\nDetected change in ${normalizedPath}, running mise up...`);
192
- const targets = getUpgradeableTools(config);
193
- if (targets.length > 0) {
194
- const upgrade = await runMiseUpgrade(targets, resolvedDir);
195
- if (upgrade.success) {
196
- console.log(` ${(upgrade.stdout || upgrade.stderr || '').trim() || 'all tools up to date'}`);
197
- }
198
- else {
199
- console.error(` mise up failed (exit ${upgrade.exitCode ?? 'null'}): ${upgrade.stderr || upgrade.stdout}`);
200
- }
265
+ const watcher = fs.watch(resolvedDir, (_eventType, filename) => {
266
+ // A directory watch fires for every file in resolvedDir; only react
267
+ // to mise.toml itself. When the platform can't report a filename,
268
+ // don't filter it out — better an extra check than a missed one.
269
+ if (filename && filename !== watchedName)
270
+ return;
271
+ if (timeout)
272
+ clearTimeout(timeout);
273
+ timeout = setTimeout(async () => {
274
+ // An atomic-rename save briefly removes the old path before the
275
+ // new one lands; nothing to do yet if it hasn't landed.
276
+ if (!fs.existsSync(resolvedPath))
277
+ return;
278
+ console.log(`\nDetected change in ${resolvedPath}, running mise up...`);
279
+ let config;
280
+ try {
281
+ config = loadConfig(configPath, { layerUserConfig: true });
282
+ }
283
+ catch (error) {
284
+ console.error(` Could not re-read ${configPath}: ${error instanceof Error ? error.message : String(error)}`);
285
+ return;
286
+ }
287
+ const targets = getUpgradeableTools(config);
288
+ if (targets.length > 0) {
289
+ const upgrade = await runMiseUpgrade(targets, resolvedDir);
290
+ if (upgrade.success) {
291
+ console.log(` ${(upgrade.stdout || upgrade.stderr || '').trim() || 'all tools up to date'}`);
201
292
  }
202
293
  else {
203
- console.log(' No upgradeable tools: everything enabled is pinned to a version.');
294
+ console.error(` mise up failed (exit ${upgrade.exitCode ?? 'null'}): ${upgrade.stderr || upgrade.stdout}`);
204
295
  }
205
- }, DEBOUNCE_MS);
206
- }
296
+ }
297
+ else {
298
+ console.log(' No upgradeable tools: everything enabled is pinned to a version.');
299
+ }
300
+ }, debounceMs);
207
301
  });
208
302
  watcher.on('error', (err) => {
209
303
  console.error(`Watch error: ${err instanceof Error ? err.message : String(err)}`);
@@ -214,9 +308,11 @@ function watchMiseToml(miseTomlPath, scopeDir, config) {
214
308
  watcher.close();
215
309
  process.exit(0);
216
310
  });
311
+ return watcher;
217
312
  }
218
313
  catch (err) {
219
- console.error(`Failed to watch ${normalizedPath}: ${err instanceof Error ? err.message : String(err)}`);
314
+ console.error(`Failed to watch ${resolvedDir}: ${err instanceof Error ? err.message : String(err)}`);
315
+ return undefined;
220
316
  }
221
317
  }
222
318
  export const updateCommand = new Command()
@@ -228,12 +324,17 @@ export const updateCommand = new Command()
228
324
  .option('--watch', 'watch mise.toml for changes and auto-run mise up (optional)')
229
325
  .option('--dry-run', 'print the update plan without changing anything')
230
326
  .option('--check', 'alias for --dry-run')
327
+ .option('--json', 'emit a machine-readable JSON document on stdout (not with --watch)')
231
328
  .action((options, command) => {
232
329
  const scope = parseScopeFlag(options.scope);
233
330
  if (scope.error) {
234
331
  command.error(scope.error);
235
332
  return;
236
333
  }
334
+ if (options.json && options.watch) {
335
+ command.error('--json cannot be combined with --watch (a live watcher has no single result)');
336
+ return;
337
+ }
237
338
  return doUpdate({ ...options, scope: scope.scope });
238
339
  });
239
340
  //# sourceMappingURL=update.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,34 @@
1
+ import { checkbox, confirm, input, select } from '@inquirer/prompts';
2
+ import { detectInstalledAgents } from '../adapters/detect.js';
3
+ import { loadConfig } from '../config/schema.js';
4
+ import { findConfigPath } from '../config/scopes.js';
5
+ import { saveAndApply } from './setup.js';
6
+ import { getMiseVersion, isMiseInstalled } from '../toolchain/mise.js';
7
+ /**
8
+ * Injectable seams for `runConfigWizard()`. Every field defaults to the real
9
+ * implementation; tests override just the prompt functions (with canned
10
+ * answers driven off the prompt `message`) and the mise/config probes, so
11
+ * the full 7-step flow can run without a TTY or a real mise install.
12
+ */
13
+ export interface WizardDeps {
14
+ checkbox?: typeof checkbox;
15
+ confirm?: typeof confirm;
16
+ input?: typeof input;
17
+ select?: typeof select;
18
+ isMiseInstalled?: typeof isMiseInstalled;
19
+ getMiseVersion?: typeof getMiseVersion;
20
+ loadConfig?: typeof loadConfig;
21
+ findConfigPath?: typeof findConfigPath;
22
+ detectInstalledAgents?: typeof detectInstalledAgents;
23
+ saveAndApply?: typeof saveAndApply;
24
+ /** Overrides the stdin/stdout TTY check (real process streams by default). */
25
+ isTTY?: () => boolean;
26
+ }
1
27
  /**
2
28
  * Shared interactive setup wizard — the single flow behind `agentenv setup`
3
29
  * and the `configure` alias:
4
30
  * 1. agents -> 2. tools (all tiers, one page, no wrap) -> 3. custom binaries
5
31
  * -> 4. scope -> 5. rtk -> 6. Superpowers -> 7. diff review -> apply
6
32
  */
7
- export declare function runConfigWizard(): Promise<void>;
33
+ export declare function runConfigWizard(deps?: WizardDeps): Promise<void>;
8
34
  //# sourceMappingURL=wizard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../src/commands/wizard.ts"],"names":[],"mappings":"AAwBA;;;;;GAKG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAoPrD"}
1
+ {"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../src/commands/wizard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAa,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAA+B,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE9E,OAAO,EAAkB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAU1C,OAAO,EACL,cAAc,EACd,eAAe,EAGhB,MAAM,sBAAsB,CAAC;AAI9B;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,OAAO,QAAQ,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,eAAe,CAAC;IACzC,cAAc,CAAC,EAAE,OAAO,cAAc,CAAC;IACvC,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;IAC/B,cAAc,CAAC,EAAE,OAAO,cAAc,CAAC;IACvC,qBAAqB,CAAC,EAAE,OAAO,qBAAqB,CAAC;IACrD,YAAY,CAAC,EAAE,OAAO,YAAY,CAAC;IACnC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAsQ1E"}