@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.
- package/CHANGELOG.md +41 -0
- package/dist/cli.js +4 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/connect.js +23 -13
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/disconnect.js +22 -12
- package/dist/commands/disconnect.js.map +1 -1
- package/dist/commands/doctor.js +26 -12
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.js +10 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/mcp-add.js +24 -16
- package/dist/commands/mcp-add.js.map +1 -1
- package/dist/commands/mcp-list.js +25 -6
- package/dist/commands/mcp-list.js.map +1 -1
- package/dist/commands/mcp-remove.js +14 -4
- package/dist/commands/mcp-remove.js.map +1 -1
- package/dist/commands/mcp-test.js +57 -28
- package/dist/commands/mcp-test.js.map +1 -1
- package/dist/commands/migrate.d.ts +4 -0
- package/dist/commands/migrate.js +71 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/reset.js +9 -3
- package/dist/commands/reset.js.map +1 -1
- package/dist/commands/status.js +40 -30
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/sync.js +25 -3
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/watch.js +17 -8
- package/dist/commands/watch.js.map +1 -1
- package/dist/core/catalog.d.ts +8 -0
- package/dist/core/catalog.js +141 -0
- package/dist/core/catalog.js.map +1 -0
- package/dist/core/linking.d.ts +8 -0
- package/dist/core/linking.js +41 -0
- package/dist/core/linking.js.map +1 -0
- package/dist/core/ui.d.ts +155 -0
- package/dist/core/ui.js +350 -0
- package/dist/core/ui.js.map +1 -0
- package/package.json +2 -4
package/dist/core/ui.js
ADDED
|
@@ -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.
|
|
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",
|