@agents-dev/cli 0.7.7

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 (152) hide show
  1. package/AGENTS.md +400 -0
  2. package/CHANGELOG.md +297 -0
  3. package/CONTRIBUTING.md +164 -0
  4. package/LICENSE +21 -0
  5. package/README.md +117 -0
  6. package/bin/agents +24 -0
  7. package/dist/cli.d.ts +1 -0
  8. package/dist/cli.js +282 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/commands/connect.d.ts +7 -0
  11. package/dist/commands/connect.js +48 -0
  12. package/dist/commands/connect.js.map +1 -0
  13. package/dist/commands/disconnect.d.ts +7 -0
  14. package/dist/commands/disconnect.js +47 -0
  15. package/dist/commands/disconnect.js.map +1 -0
  16. package/dist/commands/doctor.d.ts +6 -0
  17. package/dist/commands/doctor.js +430 -0
  18. package/dist/commands/doctor.js.map +1 -0
  19. package/dist/commands/init.d.ts +5 -0
  20. package/dist/commands/init.js +24 -0
  21. package/dist/commands/init.js.map +1 -0
  22. package/dist/commands/mcp-add.d.ts +20 -0
  23. package/dist/commands/mcp-add.js +250 -0
  24. package/dist/commands/mcp-add.js.map +1 -0
  25. package/dist/commands/mcp-import.d.ts +13 -0
  26. package/dist/commands/mcp-import.js +207 -0
  27. package/dist/commands/mcp-import.js.map +1 -0
  28. package/dist/commands/mcp-list.d.ts +5 -0
  29. package/dist/commands/mcp-list.js +34 -0
  30. package/dist/commands/mcp-list.js.map +1 -0
  31. package/dist/commands/mcp-remove.d.ts +7 -0
  32. package/dist/commands/mcp-remove.js +34 -0
  33. package/dist/commands/mcp-remove.js.map +1 -0
  34. package/dist/commands/mcp-test.d.ts +8 -0
  35. package/dist/commands/mcp-test.js +402 -0
  36. package/dist/commands/mcp-test.js.map +1 -0
  37. package/dist/commands/reset.d.ts +6 -0
  38. package/dist/commands/reset.js +76 -0
  39. package/dist/commands/reset.js.map +1 -0
  40. package/dist/commands/start.d.ts +6 -0
  41. package/dist/commands/start.js +292 -0
  42. package/dist/commands/start.js.map +1 -0
  43. package/dist/commands/status.d.ts +7 -0
  44. package/dist/commands/status.js +278 -0
  45. package/dist/commands/status.js.map +1 -0
  46. package/dist/commands/sync.d.ts +6 -0
  47. package/dist/commands/sync.js +22 -0
  48. package/dist/commands/sync.js.map +1 -0
  49. package/dist/commands/watch.d.ts +7 -0
  50. package/dist/commands/watch.js +117 -0
  51. package/dist/commands/watch.js.map +1 -0
  52. package/dist/core/claudeCli.d.ts +7 -0
  53. package/dist/core/claudeCli.js +35 -0
  54. package/dist/core/claudeCli.js.map +1 -0
  55. package/dist/core/config.d.ts +17 -0
  56. package/dist/core/config.js +121 -0
  57. package/dist/core/config.js.map +1 -0
  58. package/dist/core/cursorCli.d.ts +9 -0
  59. package/dist/core/cursorCli.js +60 -0
  60. package/dist/core/cursorCli.js.map +1 -0
  61. package/dist/core/fs.d.ts +11 -0
  62. package/dist/core/fs.js +76 -0
  63. package/dist/core/fs.js.map +1 -0
  64. package/dist/core/gitignore.d.ts +3 -0
  65. package/dist/core/gitignore.js +54 -0
  66. package/dist/core/gitignore.js.map +1 -0
  67. package/dist/core/mcp.d.ts +8 -0
  68. package/dist/core/mcp.js +134 -0
  69. package/dist/core/mcp.js.map +1 -0
  70. package/dist/core/mcpCrud.d.ts +34 -0
  71. package/dist/core/mcpCrud.js +105 -0
  72. package/dist/core/mcpCrud.js.map +1 -0
  73. package/dist/core/mcpImport.d.ts +14 -0
  74. package/dist/core/mcpImport.js +507 -0
  75. package/dist/core/mcpImport.js.map +1 -0
  76. package/dist/core/mcpSecrets.d.ts +27 -0
  77. package/dist/core/mcpSecrets.js +144 -0
  78. package/dist/core/mcpSecrets.js.map +1 -0
  79. package/dist/core/mcpValidation.d.ts +19 -0
  80. package/dist/core/mcpValidation.js +78 -0
  81. package/dist/core/mcpValidation.js.map +1 -0
  82. package/dist/core/paths.d.ts +37 -0
  83. package/dist/core/paths.js +43 -0
  84. package/dist/core/paths.js.map +1 -0
  85. package/dist/core/project.d.ts +16 -0
  86. package/dist/core/project.js +34 -0
  87. package/dist/core/project.js.map +1 -0
  88. package/dist/core/renderers.d.ts +14 -0
  89. package/dist/core/renderers.js +113 -0
  90. package/dist/core/renderers.js.map +1 -0
  91. package/dist/core/shell.d.ts +8 -0
  92. package/dist/core/shell.js +21 -0
  93. package/dist/core/shell.js.map +1 -0
  94. package/dist/core/shellWords.d.ts +1 -0
  95. package/dist/core/shellWords.js +84 -0
  96. package/dist/core/shellWords.js.map +1 -0
  97. package/dist/core/skills.d.ts +8 -0
  98. package/dist/core/skills.js +150 -0
  99. package/dist/core/skills.js.map +1 -0
  100. package/dist/core/skillsValidation.d.ts +1 -0
  101. package/dist/core/skillsValidation.js +68 -0
  102. package/dist/core/skillsValidation.js.map +1 -0
  103. package/dist/core/sync.d.ts +2 -0
  104. package/dist/core/sync.js +427 -0
  105. package/dist/core/sync.js.map +1 -0
  106. package/dist/core/syncLock.d.ts +1 -0
  107. package/dist/core/syncLock.js +84 -0
  108. package/dist/core/syncLock.js.map +1 -0
  109. package/dist/core/templates.d.ts +1 -0
  110. package/dist/core/templates.js +38 -0
  111. package/dist/core/templates.js.map +1 -0
  112. package/dist/core/trust.d.ts +7 -0
  113. package/dist/core/trust.js +51 -0
  114. package/dist/core/trust.js.map +1 -0
  115. package/dist/core/vscodeSettings.d.ts +17 -0
  116. package/dist/core/vscodeSettings.js +212 -0
  117. package/dist/core/vscodeSettings.js.map +1 -0
  118. package/dist/core/warnings.d.ts +2 -0
  119. package/dist/core/warnings.js +26 -0
  120. package/dist/core/warnings.js.map +1 -0
  121. package/dist/integrations/antigravity.d.ts +9 -0
  122. package/dist/integrations/antigravity.js +13 -0
  123. package/dist/integrations/antigravity.js.map +1 -0
  124. package/dist/integrations/claude.d.ts +1 -0
  125. package/dist/integrations/claude.js +4 -0
  126. package/dist/integrations/claude.js.map +1 -0
  127. package/dist/integrations/codex.d.ts +5 -0
  128. package/dist/integrations/codex.js +5 -0
  129. package/dist/integrations/codex.js.map +1 -0
  130. package/dist/integrations/copilotVscode.d.ts +7 -0
  131. package/dist/integrations/copilotVscode.js +9 -0
  132. package/dist/integrations/copilotVscode.js.map +1 -0
  133. package/dist/integrations/cursor.d.ts +7 -0
  134. package/dist/integrations/cursor.js +9 -0
  135. package/dist/integrations/cursor.js.map +1 -0
  136. package/dist/integrations/gemini.d.ts +12 -0
  137. package/dist/integrations/gemini.js +15 -0
  138. package/dist/integrations/gemini.js.map +1 -0
  139. package/dist/integrations/registry.d.ts +9 -0
  140. package/dist/integrations/registry.js +21 -0
  141. package/dist/integrations/registry.js.map +1 -0
  142. package/dist/types.d.ts +85 -0
  143. package/dist/types.js +2 -0
  144. package/dist/types.js.map +1 -0
  145. package/docs/EXAMPLES.md +211 -0
  146. package/docs/README.md +26 -0
  147. package/docs/agents-system.md +178 -0
  148. package/package.json +77 -0
  149. package/templates/agents/AGENTS.md +23 -0
  150. package/templates/agents/README.md +25 -0
  151. package/templates/agents/skills/README.md +27 -0
  152. package/templates/agents/skills/skill-guide/SKILL.md +29 -0
@@ -0,0 +1,402 @@
1
+ import path from 'node:path';
2
+ import { listMcpEntries, loadMcpState } from '../core/mcpCrud.js';
3
+ import { commandExists, runCommand } from '../core/shell.js';
4
+ import { listCursorMcpStatuses } from '../core/cursorCli.js';
5
+ import { toManagedClaudeName } from '../integrations/claude.js';
6
+ const ALL_INTEGRATIONS = [
7
+ 'codex',
8
+ 'claude',
9
+ 'gemini',
10
+ 'copilot_vscode',
11
+ 'cursor',
12
+ 'antigravity'
13
+ ];
14
+ const DEFAULT_RUNTIME_TIMEOUT_MS = 8000;
15
+ export async function runMcpTest(options) {
16
+ const state = await loadMcpState(options.projectRoot);
17
+ const entries = listMcpEntries(state);
18
+ const filtered = options.name
19
+ ? entries.filter((entry) => entry.name === options.name)
20
+ : entries;
21
+ if (options.name && filtered.length === 0) {
22
+ throw new Error(`MCP server "${options.name}" does not exist.`);
23
+ }
24
+ const runtimeEnabled = options.runtime === true;
25
+ const runtimeTimeoutMs = options.runtimeTimeoutMs ?? DEFAULT_RUNTIME_TIMEOUT_MS;
26
+ const runtime = runtimeEnabled
27
+ ? runRuntimeChecks(filtered, options.projectRoot, runtimeTimeoutMs)
28
+ : null;
29
+ const results = filtered.map((entry) => {
30
+ const tested = testServer(entry.name, entry.mergedServer);
31
+ if (runtimeEnabled && runtime) {
32
+ tested.runtime = runtime.perServer[entry.name] ?? {};
33
+ }
34
+ return tested;
35
+ });
36
+ const staticErrors = results.filter((result) => result.status === 'error').length;
37
+ const runtimeErrors = runtime?.errors ?? 0;
38
+ const totalErrors = runtimeEnabled ? staticErrors + runtimeErrors : staticErrors;
39
+ const payload = {
40
+ projectRoot: path.resolve(options.projectRoot),
41
+ tested: results.length,
42
+ errors: totalErrors,
43
+ results
44
+ };
45
+ if (runtimeEnabled && runtime) {
46
+ payload.runtime = {
47
+ enabled: true,
48
+ timeoutMs: runtimeTimeoutMs,
49
+ availableIntegrations: runtime.availableIntegrations,
50
+ errors: runtime.errors
51
+ };
52
+ }
53
+ if (options.json) {
54
+ process.stdout.write(`${JSON.stringify(payload, null, 2)}\n`);
55
+ }
56
+ else if (results.length === 0) {
57
+ process.stdout.write('No MCP servers configured.\n');
58
+ }
59
+ else {
60
+ process.stdout.write(`MCP test results (${String(results.length)}):\n`);
61
+ for (const result of results) {
62
+ process.stdout.write(`- ${result.name}: ${result.status}\n`);
63
+ for (const message of result.messages) {
64
+ process.stdout.write(` - ${message}\n`);
65
+ }
66
+ if (runtimeEnabled && result.runtime) {
67
+ for (const integration of Object.keys(result.runtime).sort()) {
68
+ const typed = integration;
69
+ const runtimeResult = result.runtime[typed];
70
+ if (!runtimeResult)
71
+ continue;
72
+ process.stdout.write(` - runtime/${typed}: ${runtimeResult.status} (${runtimeResult.message})\n`);
73
+ }
74
+ }
75
+ }
76
+ if (runtimeEnabled && payload.runtime) {
77
+ process.stdout.write(`Runtime summary: ${payload.runtime.availableIntegrations.length} integration(s) available, ${payload.runtime.errors} error(s).\n`);
78
+ }
79
+ }
80
+ if (totalErrors > 0) {
81
+ process.exitCode = 1;
82
+ }
83
+ }
84
+ function testServer(name, server) {
85
+ const messages = [];
86
+ if (server.enabled === false) {
87
+ return {
88
+ name,
89
+ status: 'ok',
90
+ messages: ['disabled']
91
+ };
92
+ }
93
+ const missingEnv = (server.requiredEnv ?? []).filter((entry) => !process.env[entry]);
94
+ if (missingEnv.length > 0) {
95
+ messages.push(`missing required env: ${missingEnv.join(', ')}`);
96
+ }
97
+ if (server.transport === 'stdio') {
98
+ if (!server.command) {
99
+ messages.push('missing command');
100
+ }
101
+ else if (!commandExists(server.command)) {
102
+ messages.push(`command not found in PATH: ${server.command}`);
103
+ }
104
+ }
105
+ else {
106
+ if (!server.url) {
107
+ messages.push('missing url');
108
+ }
109
+ else if (!isValidHttpUrl(server.url)) {
110
+ messages.push(`invalid URL: ${server.url}`);
111
+ }
112
+ }
113
+ const status = messages.length > 0 ? 'error' : 'ok';
114
+ return {
115
+ name,
116
+ status,
117
+ messages: messages.length > 0 ? messages : ['ok']
118
+ };
119
+ }
120
+ function runRuntimeChecks(entries, projectRoot, timeoutMs) {
121
+ const claudeProbe = probeClaude(projectRoot, timeoutMs);
122
+ const geminiProbe = probeGemini(projectRoot, timeoutMs);
123
+ const cursorProbe = probeCursor(projectRoot, timeoutMs);
124
+ const availableIntegrations = [];
125
+ if (claudeProbe.available)
126
+ availableIntegrations.push('claude');
127
+ if (geminiProbe.available)
128
+ availableIntegrations.push('gemini');
129
+ if (cursorProbe.available)
130
+ availableIntegrations.push('cursor');
131
+ const perServer = {};
132
+ let errors = 0;
133
+ for (const entry of entries) {
134
+ const targets = resolveTargets(entry.server);
135
+ const runtimeByIntegration = {};
136
+ for (const integration of targets) {
137
+ if (integration === 'codex' || integration === 'copilot_vscode' || integration === 'antigravity') {
138
+ runtimeByIntegration[integration] = {
139
+ status: 'unsupported',
140
+ message: 'Runtime health introspection is not supported for this integration.'
141
+ };
142
+ continue;
143
+ }
144
+ if (integration === 'claude') {
145
+ runtimeByIntegration.claude = checkClaudeServer(entry.name, claudeProbe);
146
+ if (claudeProbe.available && runtimeByIntegration.claude.status === 'error')
147
+ errors += 1;
148
+ continue;
149
+ }
150
+ if (integration === 'gemini') {
151
+ runtimeByIntegration.gemini = checkGeminiServer(entry.name, geminiProbe);
152
+ if (geminiProbe.available && runtimeByIntegration.gemini.status === 'error')
153
+ errors += 1;
154
+ continue;
155
+ }
156
+ if (integration === 'cursor') {
157
+ runtimeByIntegration.cursor = checkCursorServer(entry.name, cursorProbe);
158
+ if (cursorProbe.available && runtimeByIntegration.cursor.status === 'error')
159
+ errors += 1;
160
+ }
161
+ }
162
+ perServer[entry.name] = runtimeByIntegration;
163
+ }
164
+ return {
165
+ perServer,
166
+ availableIntegrations,
167
+ errors
168
+ };
169
+ }
170
+ function checkClaudeServer(name, probe) {
171
+ if (!probe.available || !probe.data) {
172
+ return {
173
+ status: 'unavailable',
174
+ message: probe.detail
175
+ };
176
+ }
177
+ const managed = toManagedClaudeName(name);
178
+ const status = probe.data[managed];
179
+ if (status === 'ok') {
180
+ return {
181
+ status: 'ok',
182
+ message: 'Connected'
183
+ };
184
+ }
185
+ if (status === 'error') {
186
+ return {
187
+ status: 'error',
188
+ message: 'Failed/Disconnected'
189
+ };
190
+ }
191
+ if (status === 'unknown') {
192
+ return {
193
+ status: 'unknown',
194
+ message: 'Unknown runtime state'
195
+ };
196
+ }
197
+ return {
198
+ status: 'error',
199
+ message: `Missing from claude mcp list as ${managed}`
200
+ };
201
+ }
202
+ function checkGeminiServer(name, probe) {
203
+ if (!probe.available || !probe.data) {
204
+ return {
205
+ status: 'unavailable',
206
+ message: probe.detail
207
+ };
208
+ }
209
+ const status = probe.data[name];
210
+ if (status === 'ok') {
211
+ return {
212
+ status: 'ok',
213
+ message: 'Connected'
214
+ };
215
+ }
216
+ if (status === 'error') {
217
+ return {
218
+ status: 'error',
219
+ message: 'Disconnected/Failed'
220
+ };
221
+ }
222
+ if (status === 'unknown') {
223
+ return {
224
+ status: 'unknown',
225
+ message: 'Unknown runtime state'
226
+ };
227
+ }
228
+ return {
229
+ status: 'error',
230
+ message: `Missing from gemini mcp list as ${name}`
231
+ };
232
+ }
233
+ function checkCursorServer(name, probe) {
234
+ if (!probe.available || !probe.data) {
235
+ return {
236
+ status: 'unavailable',
237
+ message: probe.detail
238
+ };
239
+ }
240
+ const status = probe.data[name];
241
+ if (status === undefined) {
242
+ return {
243
+ status: 'error',
244
+ message: `Missing from cursor mcp list as ${name}`
245
+ };
246
+ }
247
+ if (status === 'ready') {
248
+ return {
249
+ status: 'ok',
250
+ message: 'Ready'
251
+ };
252
+ }
253
+ if (status === 'needs-approval') {
254
+ return {
255
+ status: 'error',
256
+ message: 'Needs approval'
257
+ };
258
+ }
259
+ if (status === 'disabled') {
260
+ return {
261
+ status: 'error',
262
+ message: 'Disabled'
263
+ };
264
+ }
265
+ if (status === 'error') {
266
+ return {
267
+ status: 'error',
268
+ message: 'Connection failed'
269
+ };
270
+ }
271
+ return {
272
+ status: 'unknown',
273
+ message: 'Unknown runtime state'
274
+ };
275
+ }
276
+ function probeClaude(projectRoot, timeoutMs) {
277
+ if (!commandExists('claude')) {
278
+ return {
279
+ available: false,
280
+ detail: 'claude CLI not found'
281
+ };
282
+ }
283
+ const result = runCommand('claude', ['mcp', 'list'], projectRoot, timeoutMs);
284
+ if (!result.ok) {
285
+ return {
286
+ available: false,
287
+ detail: compact(result.stderr) || 'claude mcp list failed'
288
+ };
289
+ }
290
+ return {
291
+ available: true,
292
+ detail: 'ok',
293
+ data: parseClaudeRuntimeStatuses(`${result.stdout}\n${result.stderr}`)
294
+ };
295
+ }
296
+ function probeGemini(projectRoot, timeoutMs) {
297
+ if (!commandExists('gemini')) {
298
+ return {
299
+ available: false,
300
+ detail: 'gemini CLI not found'
301
+ };
302
+ }
303
+ const result = runCommand('gemini', ['mcp', 'list'], projectRoot, timeoutMs);
304
+ if (!result.ok) {
305
+ return {
306
+ available: false,
307
+ detail: compact(result.stderr) || 'gemini mcp list failed'
308
+ };
309
+ }
310
+ return {
311
+ available: true,
312
+ detail: 'ok',
313
+ data: parseGeminiRuntimeStatuses(`${result.stdout}\n${result.stderr}`)
314
+ };
315
+ }
316
+ function probeCursor(projectRoot, timeoutMs) {
317
+ if (!commandExists('cursor-agent')) {
318
+ return {
319
+ available: false,
320
+ detail: 'cursor-agent CLI not found'
321
+ };
322
+ }
323
+ const listed = listCursorMcpStatuses(projectRoot, timeoutMs);
324
+ if (!listed.ok) {
325
+ return {
326
+ available: false,
327
+ detail: compact(listed.stderr) || 'cursor-agent mcp list failed'
328
+ };
329
+ }
330
+ return {
331
+ available: true,
332
+ detail: 'ok',
333
+ data: listed.statuses
334
+ };
335
+ }
336
+ function parseClaudeRuntimeStatuses(output) {
337
+ const statuses = {};
338
+ const lines = output
339
+ .split('\n')
340
+ .map((line) => line.replace(/\u001B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~]|\][^\u0007]*(?:\u0007|\u001B\\))/g, '').trim())
341
+ .filter(Boolean);
342
+ for (const line of lines) {
343
+ const match = line.match(/^([a-zA-Z0-9._:-]+):\s*(.+)$/);
344
+ if (!match?.[1] || !match[2])
345
+ continue;
346
+ const name = match[1];
347
+ const detail = match[2].toLowerCase();
348
+ if (detail.includes('✗') || detail.includes('failed') || detail.includes('disconnected') || detail.includes('error')) {
349
+ statuses[name] = 'error';
350
+ continue;
351
+ }
352
+ if (detail.includes('✓') || detail.includes('connected')) {
353
+ statuses[name] = 'ok';
354
+ continue;
355
+ }
356
+ statuses[name] = 'unknown';
357
+ }
358
+ return statuses;
359
+ }
360
+ function parseGeminiRuntimeStatuses(output) {
361
+ const statuses = {};
362
+ const lines = output
363
+ .split('\n')
364
+ .map((line) => line.replace(/\u001B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~]|\][^\u0007]*(?:\u0007|\u001B\\))/g, '').trim())
365
+ .filter(Boolean);
366
+ for (const line of lines) {
367
+ const match = line.match(/^(?:[✓✗]\s*)?([a-zA-Z0-9._:-]+):\s*(.+)$/);
368
+ if (!match?.[1] || !match[2])
369
+ continue;
370
+ const name = match[1];
371
+ const detail = match[2].toLowerCase();
372
+ if (line.includes('✗') || detail.includes('disconnected') || detail.includes('failed') || detail.includes('error')) {
373
+ statuses[name] = 'error';
374
+ continue;
375
+ }
376
+ if (line.includes('✓') || detail.includes('connected')) {
377
+ statuses[name] = 'ok';
378
+ continue;
379
+ }
380
+ statuses[name] = 'unknown';
381
+ }
382
+ return statuses;
383
+ }
384
+ function resolveTargets(server) {
385
+ if (!server.targets || server.targets.length === 0) {
386
+ return ALL_INTEGRATIONS;
387
+ }
388
+ return [...new Set(server.targets)];
389
+ }
390
+ function isValidHttpUrl(value) {
391
+ try {
392
+ const parsed = new URL(value);
393
+ return parsed.protocol === 'http:' || parsed.protocol === 'https:';
394
+ }
395
+ catch {
396
+ return false;
397
+ }
398
+ }
399
+ function compact(input) {
400
+ return input.trim().split('\n').at(-1) ?? '';
401
+ }
402
+ //# sourceMappingURL=mcp-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-test.js","sourceRoot":"","sources":["../../src/commands/mcp-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface ResetOptions {
2
+ projectRoot: string;
3
+ localOnly: boolean;
4
+ hard: boolean;
5
+ }
6
+ export declare function runReset(options: ResetOptions): Promise<void>;
@@ -0,0 +1,76 @@
1
+ import path from 'node:path';
2
+ import { cleanupManagedGitignore } from '../core/gitignore.js';
3
+ import { getProjectPaths } from '../core/paths.js';
4
+ import { pathExists, removeIfExists } from '../core/fs.js';
5
+ import { cleanupVscodeSettingsIfManaged } from '../core/vscodeSettings.js';
6
+ export async function runReset(options) {
7
+ const projectRoot = path.resolve(options.projectRoot);
8
+ const paths = getProjectPaths(projectRoot);
9
+ const legacyAgentDir = path.join(projectRoot, '.agent');
10
+ const removed = [];
11
+ if (options.hard) {
12
+ const vscodeSettingsRemoved = await cleanupVscodeSettingsIfManaged({
13
+ settingsPath: paths.vscodeSettings,
14
+ statePath: paths.generatedVscodeSettingsState
15
+ });
16
+ if (vscodeSettingsRemoved) {
17
+ removed.push(path.relative(projectRoot, paths.vscodeSettings) || paths.vscodeSettings);
18
+ }
19
+ }
20
+ const targets = options.hard
21
+ ? [
22
+ paths.agentsDir,
23
+ paths.rootAgentsMd,
24
+ paths.codexDir,
25
+ paths.geminiDir,
26
+ paths.cursorDir,
27
+ paths.antigravityDir,
28
+ legacyAgentDir,
29
+ paths.vscodeMcp,
30
+ paths.claudeDir
31
+ ]
32
+ : options.localOnly
33
+ ? [
34
+ paths.codexDir,
35
+ paths.geminiDir,
36
+ paths.cursorDir,
37
+ paths.antigravityDir,
38
+ legacyAgentDir,
39
+ paths.vscodeMcp,
40
+ paths.claudeSkillsBridge,
41
+ paths.cursorSkillsBridge
42
+ ]
43
+ : [
44
+ paths.generatedDir,
45
+ paths.codexDir,
46
+ paths.geminiDir,
47
+ paths.cursorDir,
48
+ paths.antigravityDir,
49
+ legacyAgentDir,
50
+ paths.vscodeMcp,
51
+ paths.claudeSkillsBridge,
52
+ paths.cursorSkillsBridge
53
+ ];
54
+ for (const target of targets) {
55
+ if (!(await pathExists(target)))
56
+ continue;
57
+ await removeIfExists(target);
58
+ removed.push(path.relative(projectRoot, target) || target);
59
+ }
60
+ if (options.hard) {
61
+ const gitignoreChanged = await cleanupManagedGitignore(projectRoot);
62
+ if (gitignoreChanged) {
63
+ removed.push('.gitignore (managed agents entries)');
64
+ }
65
+ }
66
+ if (removed.length === 0) {
67
+ process.stdout.write('Reset: nothing to clean.\n');
68
+ return;
69
+ }
70
+ const mode = options.hard ? 'hard' : options.localOnly ? 'local-only' : 'safe';
71
+ process.stdout.write(`Reset (${mode}) cleaned ${removed.length} path(s):\n- ${removed.join('\n- ')}\n`);
72
+ if (!options.hard && !options.localOnly) {
73
+ process.stdout.write('Safe reset keeps .agents source files, root AGENTS.md, and managed .gitignore entries. Use --hard to remove all agents-managed setup.\n');
74
+ }
75
+ }
76
+ //# sourceMappingURL=reset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset.js","sourceRoot":"","sources":["../../src/commands/reset.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface StartOptions {
2
+ projectRoot: string;
3
+ nonInteractive: boolean;
4
+ yes: boolean;
5
+ }
6
+ export declare function runStart(options: StartOptions): Promise<void>;