@agents-dev/cli 0.7.7 → 0.8.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 (40) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/dist/cli.js +4 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/connect.js +23 -13
  5. package/dist/commands/connect.js.map +1 -1
  6. package/dist/commands/disconnect.js +22 -12
  7. package/dist/commands/disconnect.js.map +1 -1
  8. package/dist/commands/doctor.js +26 -12
  9. package/dist/commands/doctor.js.map +1 -1
  10. package/dist/commands/init.js +10 -3
  11. package/dist/commands/init.js.map +1 -1
  12. package/dist/commands/mcp-add.js +24 -16
  13. package/dist/commands/mcp-add.js.map +1 -1
  14. package/dist/commands/mcp-list.js +25 -6
  15. package/dist/commands/mcp-list.js.map +1 -1
  16. package/dist/commands/mcp-remove.js +14 -4
  17. package/dist/commands/mcp-remove.js.map +1 -1
  18. package/dist/commands/mcp-test.js +57 -28
  19. package/dist/commands/mcp-test.js.map +1 -1
  20. package/dist/commands/migrate.d.ts +4 -0
  21. package/dist/commands/migrate.js +71 -0
  22. package/dist/commands/migrate.js.map +1 -0
  23. package/dist/commands/reset.js +9 -3
  24. package/dist/commands/reset.js.map +1 -1
  25. package/dist/commands/status.js +40 -30
  26. package/dist/commands/status.js.map +1 -1
  27. package/dist/commands/sync.js +25 -3
  28. package/dist/commands/sync.js.map +1 -1
  29. package/dist/commands/watch.js +17 -8
  30. package/dist/commands/watch.js.map +1 -1
  31. package/dist/core/catalog.d.ts +8 -0
  32. package/dist/core/catalog.js +141 -0
  33. package/dist/core/catalog.js.map +1 -0
  34. package/dist/core/linking.d.ts +8 -0
  35. package/dist/core/linking.js +41 -0
  36. package/dist/core/linking.js.map +1 -0
  37. package/dist/core/ui.d.ts +155 -0
  38. package/dist/core/ui.js +350 -0
  39. package/dist/core/ui.js.map +1 -0
  40. package/package.json +2 -4
@@ -0,0 +1,350 @@
1
+ /**
2
+ * Unified UI module for @agents-dev/cli
3
+ *
4
+ * Provides consistent formatting, colors, and symbols across all commands.
5
+ * Features:
6
+ * - Unicode symbols with ASCII fallback
7
+ * - Minimalist colors (only for status indicators)
8
+ * - Context-aware output (respects --json, NO_COLOR)
9
+ * - Spinner wrapper for async operations
10
+ */
11
+ import * as clack from '@clack/prompts';
12
+ import color from 'picocolors';
13
+ // ---------------------------------------------------------------------------
14
+ // Terminal Detection
15
+ // ---------------------------------------------------------------------------
16
+ /**
17
+ * Detect if terminal supports Unicode characters
18
+ */
19
+ function detectUnicodeSupport() {
20
+ // Windows Terminal and modern terminals support Unicode
21
+ if (process.env.WT_SESSION)
22
+ return true;
23
+ if (process.env.TERM_PROGRAM === 'vscode')
24
+ return true;
25
+ if (process.env.TERM_PROGRAM === 'iTerm.app')
26
+ return true;
27
+ if (process.env.TERM_PROGRAM === 'Apple_Terminal')
28
+ return true;
29
+ // Check locale settings
30
+ const locale = (process.env.LC_ALL ?? process.env.LC_CTYPE ?? process.env.LANG ?? '').toLowerCase();
31
+ if (locale.includes('utf-8') || locale.includes('utf8'))
32
+ return true;
33
+ // Check TERM
34
+ const term = (process.env.TERM ?? '').toLowerCase();
35
+ if (term.includes('xterm') || term.includes('256color') || term.includes('kitty') || term.includes('alacritty')) {
36
+ return true;
37
+ }
38
+ // CI environments usually support Unicode
39
+ if (process.env.CI)
40
+ return true;
41
+ // Default to ASCII for unknown terminals
42
+ return false;
43
+ }
44
+ /**
45
+ * Check if colors should be disabled
46
+ */
47
+ function isNoColor() {
48
+ return Boolean(process.env.NO_COLOR) || process.argv.includes('--no-color');
49
+ }
50
+ /**
51
+ * Check if we're in a TTY (interactive terminal)
52
+ */
53
+ function isTTY() {
54
+ return Boolean(process.stdout.isTTY);
55
+ }
56
+ // ---------------------------------------------------------------------------
57
+ // Symbols
58
+ // ---------------------------------------------------------------------------
59
+ const UNICODE_SYMBOLS = {
60
+ success: '\u2713', // ✓
61
+ error: '\u2717', // ✗
62
+ warning: '\u26a0', // ⚠
63
+ info: '\u25cb', // ○
64
+ bullet: '\u2022', // •
65
+ arrow: '\u2192', // →
66
+ ellipsis: '\u2026' // …
67
+ };
68
+ const ASCII_SYMBOLS = {
69
+ success: '[ok]',
70
+ error: '[error]',
71
+ warning: '[warn]',
72
+ info: '[info]',
73
+ bullet: '-',
74
+ arrow: '->',
75
+ ellipsis: '...'
76
+ };
77
+ const supportsUnicode = detectUnicodeSupport();
78
+ export const symbols = supportsUnicode ? UNICODE_SYMBOLS : ASCII_SYMBOLS;
79
+ const context = {
80
+ json: false,
81
+ quiet: false,
82
+ noColor: isNoColor()
83
+ };
84
+ /**
85
+ * Set UI context flags (call at command start)
86
+ */
87
+ export function setContext(options) {
88
+ if (options.json !== undefined)
89
+ context.json = options.json;
90
+ if (options.quiet !== undefined)
91
+ context.quiet = options.quiet;
92
+ if (options.noColor !== undefined)
93
+ context.noColor = options.noColor;
94
+ }
95
+ /**
96
+ * Reset UI context to defaults
97
+ */
98
+ export function resetContext() {
99
+ context.json = false;
100
+ context.quiet = false;
101
+ context.noColor = isNoColor();
102
+ }
103
+ /**
104
+ * Check if output should be suppressed
105
+ */
106
+ function shouldSuppress() {
107
+ return context.json || context.quiet;
108
+ }
109
+ // ---------------------------------------------------------------------------
110
+ // Color Helpers
111
+ // ---------------------------------------------------------------------------
112
+ function applyColor(fn, text) {
113
+ if (context.noColor)
114
+ return text;
115
+ return fn(text);
116
+ }
117
+ const colors = {
118
+ success: (s) => applyColor(color.green, s),
119
+ error: (s) => applyColor(color.red, s),
120
+ warning: (s) => applyColor(color.yellow, s),
121
+ info: (s) => applyColor(color.cyan, s),
122
+ dim: (s) => applyColor(color.dim, s),
123
+ bold: (s) => applyColor(color.bold, s)
124
+ };
125
+ // ---------------------------------------------------------------------------
126
+ // Output Functions
127
+ // ---------------------------------------------------------------------------
128
+ /**
129
+ * Write raw text to stdout
130
+ */
131
+ export function write(text) {
132
+ if (shouldSuppress())
133
+ return;
134
+ process.stdout.write(text);
135
+ }
136
+ /**
137
+ * Write a line to stdout
138
+ */
139
+ export function writeln(text = '') {
140
+ write(`${text}\n`);
141
+ }
142
+ /**
143
+ * Output success message: ✓ message (green)
144
+ */
145
+ export function success(message) {
146
+ if (shouldSuppress())
147
+ return;
148
+ writeln(`${colors.success(symbols.success)} ${message}`);
149
+ }
150
+ /**
151
+ * Output error message: ✗ message (red)
152
+ */
153
+ export function error(message) {
154
+ if (shouldSuppress())
155
+ return;
156
+ writeln(`${colors.error(symbols.error)} ${message}`);
157
+ }
158
+ /**
159
+ * Output warning message: ⚠ message (yellow)
160
+ */
161
+ export function warning(message) {
162
+ if (shouldSuppress())
163
+ return;
164
+ writeln(`${colors.warning(symbols.warning)} ${message}`);
165
+ }
166
+ /**
167
+ * Output info message: ○ message (cyan)
168
+ */
169
+ export function info(message) {
170
+ if (shouldSuppress())
171
+ return;
172
+ writeln(`${colors.info(symbols.info)} ${message}`);
173
+ }
174
+ /**
175
+ * Output dim/secondary text
176
+ */
177
+ export function dim(message) {
178
+ if (shouldSuppress())
179
+ return;
180
+ writeln(colors.dim(message));
181
+ }
182
+ /**
183
+ * Output a blank line
184
+ */
185
+ export function blank() {
186
+ if (shouldSuppress())
187
+ return;
188
+ writeln();
189
+ }
190
+ // ---------------------------------------------------------------------------
191
+ // Layout Helpers
192
+ // ---------------------------------------------------------------------------
193
+ /**
194
+ * Output key-value pair with aligned formatting
195
+ * Example: "Project: /path/to/project"
196
+ */
197
+ export function keyValue(key, value, keyWidth = 14) {
198
+ if (shouldSuppress())
199
+ return;
200
+ const paddedKey = key.padEnd(keyWidth);
201
+ writeln(`${paddedKey} ${value}`);
202
+ }
203
+ /**
204
+ * Output a bulleted list
205
+ * Example:
206
+ * • item1
207
+ * • item2
208
+ */
209
+ export function list(items, indent = 2) {
210
+ if (shouldSuppress())
211
+ return;
212
+ const padding = ' '.repeat(indent);
213
+ for (const item of items) {
214
+ writeln(`${padding}${symbols.bullet} ${item}`);
215
+ }
216
+ }
217
+ /**
218
+ * Output a list with status indicators
219
+ * Example:
220
+ * ✓ file1.json
221
+ * ✗ file2.json (missing)
222
+ */
223
+ export function statusList(items, indent = 2) {
224
+ if (shouldSuppress())
225
+ return;
226
+ const padding = ' '.repeat(indent);
227
+ for (const item of items) {
228
+ const symbol = item.ok ? colors.success(symbols.success) : colors.error(symbols.error);
229
+ const detail = item.detail ? colors.dim(` (${item.detail})`) : '';
230
+ writeln(`${padding}${symbol} ${item.label}${detail}`);
231
+ }
232
+ }
233
+ /**
234
+ * Output a section with title
235
+ * Example:
236
+ * Files:
237
+ * ✓ config.json
238
+ * ✗ local.json
239
+ */
240
+ export function section(title, content) {
241
+ if (shouldSuppress())
242
+ return;
243
+ writeln(`${title}:`);
244
+ if (typeof content === 'function') {
245
+ content();
246
+ }
247
+ else {
248
+ for (const line of content) {
249
+ writeln(` ${line}`);
250
+ }
251
+ }
252
+ }
253
+ /**
254
+ * Output items with arrow prefix (for "changed" lists)
255
+ * Example:
256
+ * → file1.json
257
+ * → file2.json
258
+ */
259
+ export function arrowList(items, indent = 2) {
260
+ if (shouldSuppress())
261
+ return;
262
+ const padding = ' '.repeat(indent);
263
+ for (const item of items) {
264
+ writeln(`${padding}${colors.dim(symbols.arrow)} ${item}`);
265
+ }
266
+ }
267
+ /**
268
+ * Output a hint/help message
269
+ */
270
+ export function hint(message) {
271
+ if (shouldSuppress())
272
+ return;
273
+ writeln(colors.dim(`Hint: ${message}`));
274
+ }
275
+ /**
276
+ * Output next steps
277
+ */
278
+ export function nextSteps(message) {
279
+ if (shouldSuppress())
280
+ return;
281
+ writeln(`Next: ${message}`);
282
+ }
283
+ /**
284
+ * Create a spinner for async operations
285
+ * Returns a no-op spinner if in JSON mode or non-TTY
286
+ */
287
+ export function spinner() {
288
+ // No spinner in JSON mode or non-TTY
289
+ if (context.json || context.quiet || !isTTY()) {
290
+ return {
291
+ start: () => { },
292
+ stop: () => { },
293
+ message: () => { }
294
+ };
295
+ }
296
+ const spin = clack.spinner();
297
+ return {
298
+ start: (message) => spin.start(message ?? 'Working...'),
299
+ stop: (message) => spin.stop(message ?? 'Done'),
300
+ message: (message) => spin.message(message)
301
+ };
302
+ }
303
+ // ---------------------------------------------------------------------------
304
+ // JSON Output
305
+ // ---------------------------------------------------------------------------
306
+ /**
307
+ * Output JSON and exit (for --json flag handling)
308
+ */
309
+ export function json(data) {
310
+ process.stdout.write(`${JSON.stringify(data, null, 2)}\n`);
311
+ }
312
+ // ---------------------------------------------------------------------------
313
+ // Formatting Utilities
314
+ // ---------------------------------------------------------------------------
315
+ /**
316
+ * Format a count with singular/plural label
317
+ * Example: formatCount(1, 'file', 'files') => '1 file'
318
+ * Example: formatCount(3, 'file', 'files') => '3 files'
319
+ */
320
+ export function formatCount(count, singular, plural) {
321
+ return `${count} ${count === 1 ? singular : plural}`;
322
+ }
323
+ /**
324
+ * Format a list of items with "none" fallback
325
+ * Example: formatList(['a', 'b']) => 'a, b'
326
+ * Example: formatList([]) => '(none)'
327
+ */
328
+ export function formatList(items, fallback = '(none)') {
329
+ return items.length > 0 ? items.join(', ') : fallback;
330
+ }
331
+ /**
332
+ * Format enabled/disabled status
333
+ */
334
+ export function formatEnabled(enabled) {
335
+ return enabled ? 'enabled' : 'disabled';
336
+ }
337
+ /**
338
+ * Format ok/missing status for files
339
+ */
340
+ export function formatExists(exists) {
341
+ if (exists) {
342
+ return colors.success(symbols.success);
343
+ }
344
+ return `${colors.error(symbols.error)} ${colors.dim('(missing)')}`;
345
+ }
346
+ // ---------------------------------------------------------------------------
347
+ // Re-exports for convenience
348
+ // ---------------------------------------------------------------------------
349
+ export { color, clack };
350
+ //# sourceMappingURL=ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/core/ui.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agents-dev/cli",
3
- "version": "0.7.7",
3
+ "version": "0.8.0",
4
4
  "description": "One config to rule them all — Practical standard layer for multi-LLM development. Sync MCP servers, skills, and AGENTS.md across Codex, Claude Code, Gemini CLI, Cursor, Copilot, and Antigravity.",
5
5
  "main": "dist/cli.js",
6
6
  "scripts": {
@@ -61,12 +61,10 @@
61
61
  "@iarna/toml": "^2.2.5",
62
62
  "commander": "^14.0.3",
63
63
  "jsonc-parser": "^3.3.1",
64
- "picocolors": "^1.1.1",
65
- "prompts": "^2.4.2"
64
+ "picocolors": "^1.1.1"
66
65
  },
67
66
  "devDependencies": {
68
67
  "@types/node": "^25.2.0",
69
- "@types/prompts": "^2.4.9",
70
68
  "@typescript-eslint/eslint-plugin": "^8.54.0",
71
69
  "@typescript-eslint/parser": "^8.54.0",
72
70
  "eslint": "^9.39.2",