@yama662607/agent-config-sync 0.3.2 → 0.4.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/README.md +24 -4
- package/dist/catalog.d.ts +36 -6
- package/dist/catalog.js +251 -12
- package/dist/catalog.js.map +1 -1
- package/dist/cli-catalog.js +28 -35
- package/dist/cli-catalog.js.map +1 -1
- package/dist/cli-mcp.js +15 -20
- package/dist/cli-mcp.js.map +1 -1
- package/dist/cli-skill.js +32 -27
- package/dist/cli-skill.js.map +1 -1
- package/dist/table-utils.d.ts +32 -0
- package/dist/table-utils.js +111 -0
- package/dist/table-utils.js.map +1 -0
- package/dist/tui/mcp-tui.js +14 -13
- package/dist/tui/mcp-tui.js.map +1 -1
- package/dist/tui/skill-tui.js +14 -10
- package/dist/tui/skill-tui.js.map +1 -1
- package/dist/types.d.ts +5 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# agent-config-sync
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/@yama662607/agent-config-sync)
|
|
4
|
+
[](https://www.npmjs.com/package/@yama662607/agent-config-sync)
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
[](https://github.com/yama662607/agent-config-sync)
|
|
7
|
+
|
|
3
8
|
`acsync` is a cross-agent configuration manager for MCP servers and skills. Unlike manifest-based tools, `acsync` directly edits native config files in your project—no intermediate manifest, no "sync" step.
|
|
4
9
|
|
|
5
10
|
## Design Principles
|
|
@@ -15,7 +20,7 @@
|
|
|
15
20
|
|
|
16
21
|
```bash
|
|
17
22
|
# Install
|
|
18
|
-
npm install -g agent-config-sync
|
|
23
|
+
npm install -g @yama662607/agent-config-sync
|
|
19
24
|
|
|
20
25
|
# Add an MCP server to your project
|
|
21
26
|
acsync mcp add @modelcontextprotocol/server-github --targets claude
|
|
@@ -39,7 +44,7 @@ acsync catalog skill list
|
|
|
39
44
|
Manage MCP servers for the current project.
|
|
40
45
|
|
|
41
46
|
```bash
|
|
42
|
-
# Show status (default)
|
|
47
|
+
# Show status (default) - Interactive TUI
|
|
43
48
|
acsync mcp
|
|
44
49
|
|
|
45
50
|
# Add a server
|
|
@@ -58,7 +63,7 @@ acsync mcp enable github --targets codex
|
|
|
58
63
|
Manage skills for the current project.
|
|
59
64
|
|
|
60
65
|
```bash
|
|
61
|
-
# Show status (default)
|
|
66
|
+
# Show status (default) - Interactive TUI
|
|
62
67
|
acsync skill
|
|
63
68
|
|
|
64
69
|
# Add a skill from catalog
|
|
@@ -171,4 +176,19 @@ my-project/ # Your project
|
|
|
171
176
|
|
|
172
177
|
## License
|
|
173
178
|
|
|
174
|
-
MIT
|
|
179
|
+
MIT © [Daisuke Yamashiki](https://github.com/yama662607)
|
|
180
|
+
|
|
181
|
+
## Links
|
|
182
|
+
|
|
183
|
+
- [npm Package](https://www.npmjs.com/package/@yama662607/agent-config-sync)
|
|
184
|
+
- [GitHub Repository](https://github.com/yama662607/agent-config-sync)
|
|
185
|
+
- [Issues](https://github.com/yama662607/agent-config-sync/issues)
|
|
186
|
+
- [Model Context Protocol](https://modelcontextprotocol.io)
|
|
187
|
+
|
|
188
|
+
## Contributing
|
|
189
|
+
|
|
190
|
+
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
191
|
+
|
|
192
|
+
## Support
|
|
193
|
+
|
|
194
|
+
If you encounter any issues or have questions, please [file an issue](https://github.com/yama662607/agent-config-sync/issues/new) on GitHub.
|
package/dist/catalog.d.ts
CHANGED
|
@@ -44,22 +44,52 @@ export declare function removeMcp(id: string): Promise<boolean>;
|
|
|
44
44
|
*/
|
|
45
45
|
export declare function normalizeMcpPackage(packageId: string, catalogEntry?: Partial<McpCatalogEntry>): McpCatalogEntry;
|
|
46
46
|
/**
|
|
47
|
-
*
|
|
47
|
+
* Get the skills directory path.
|
|
48
|
+
*/
|
|
49
|
+
export declare function getSkillsDir(): string;
|
|
50
|
+
/**
|
|
51
|
+
* Get a specific skill directory path.
|
|
52
|
+
*/
|
|
53
|
+
export declare function getSkillDir(id: string): string;
|
|
54
|
+
/**
|
|
55
|
+
* Get the SKILL.md file path for a skill.
|
|
56
|
+
*/
|
|
57
|
+
export declare function getSkillFilePath(id: string): string;
|
|
58
|
+
/**
|
|
59
|
+
* List all skill entries in the catalog (metadata only).
|
|
48
60
|
*/
|
|
49
61
|
export declare function listSkills(): Promise<SkillCatalogEntry[]>;
|
|
50
62
|
/**
|
|
51
|
-
* Get a specific skill entry by ID.
|
|
63
|
+
* Get a specific skill entry by ID (metadata only).
|
|
52
64
|
*/
|
|
53
65
|
export declare function getSkill(id: string): Promise<SkillCatalogEntry | null>;
|
|
54
66
|
/**
|
|
55
|
-
*
|
|
67
|
+
* Get full skill data including content from file.
|
|
56
68
|
*/
|
|
57
|
-
export declare function
|
|
69
|
+
export declare function getSkillWithContent(id: string): Promise<{
|
|
70
|
+
entry: SkillCatalogEntry;
|
|
71
|
+
content: string;
|
|
72
|
+
} | null>;
|
|
58
73
|
/**
|
|
59
|
-
*
|
|
74
|
+
* Add or update a skill entry in the catalog (file-based).
|
|
75
|
+
* Creates a directory and saves SKILL.md file.
|
|
76
|
+
*/
|
|
77
|
+
export declare function addSkill(entry: SkillCatalogEntry, content: string): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Add a skill from a local directory (copies all files).
|
|
80
|
+
*/
|
|
81
|
+
export declare function addSkillFromDir(id: string, sourceDir: string, metadata?: Partial<SkillCatalogEntry>): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* Remove a skill entry from the catalog (deletes directory).
|
|
60
84
|
*/
|
|
61
85
|
export declare function removeSkill(id: string): Promise<boolean>;
|
|
62
86
|
/**
|
|
63
|
-
* Normalize a skill identifier into a catalog entry.
|
|
87
|
+
* Normalize a skill identifier and content into a catalog entry.
|
|
88
|
+
* This extracts metadata from content but doesn't store the content.
|
|
64
89
|
*/
|
|
65
90
|
export declare function normalizeSkillPackage(packageId: string, content: string, catalogEntry?: Partial<SkillCatalogEntry>): SkillCatalogEntry;
|
|
91
|
+
/**
|
|
92
|
+
* Migrate all skills from old JSON format to new file-based format.
|
|
93
|
+
* Returns the number of skills migrated.
|
|
94
|
+
*/
|
|
95
|
+
export declare function migrateSkills(): Promise<number>;
|
package/dist/catalog.js
CHANGED
|
@@ -94,6 +94,8 @@ export async function loadCatalog() {
|
|
|
94
94
|
if (!parsed.skills) {
|
|
95
95
|
parsed.skills = {};
|
|
96
96
|
}
|
|
97
|
+
// Auto-migrate from old format if needed
|
|
98
|
+
await ensureMigrated();
|
|
97
99
|
return parsed;
|
|
98
100
|
}
|
|
99
101
|
/**
|
|
@@ -186,32 +188,171 @@ function extractDisplayName(packageId) {
|
|
|
186
188
|
.join(' ');
|
|
187
189
|
}
|
|
188
190
|
// ============================================================================
|
|
189
|
-
// Skill Catalog Operations
|
|
191
|
+
// Skill Catalog Operations (File-based storage)
|
|
190
192
|
// ============================================================================
|
|
191
193
|
/**
|
|
192
|
-
*
|
|
194
|
+
* Get the skills directory path.
|
|
195
|
+
*/
|
|
196
|
+
export function getSkillsDir() {
|
|
197
|
+
return path.join(getCatalogDir(), 'skills');
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Get a specific skill directory path.
|
|
201
|
+
*/
|
|
202
|
+
export function getSkillDir(id) {
|
|
203
|
+
return path.join(getSkillsDir(), id);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Get the SKILL.md file path for a skill.
|
|
207
|
+
*/
|
|
208
|
+
export function getSkillFilePath(id) {
|
|
209
|
+
return path.join(getSkillDir(id), 'SKILL.md');
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Ensure skills directory exists.
|
|
213
|
+
*/
|
|
214
|
+
async function ensureSkillsDir() {
|
|
215
|
+
await fs.mkdir(getSkillsDir(), { recursive: true });
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Validate skill ID to prevent path traversal.
|
|
219
|
+
*/
|
|
220
|
+
function validateSkillId(id) {
|
|
221
|
+
if (!id || id.length === 0) {
|
|
222
|
+
throw new Error('Skill ID cannot be empty');
|
|
223
|
+
}
|
|
224
|
+
if (id.length > 100) {
|
|
225
|
+
throw new Error('Skill ID too long (max 100 characters)');
|
|
226
|
+
}
|
|
227
|
+
// Prevent path traversal
|
|
228
|
+
if (id.includes('..') || id.includes('/') || id.includes('\\')) {
|
|
229
|
+
throw new Error('Skill ID cannot contain path traversal characters');
|
|
230
|
+
}
|
|
231
|
+
// Prevent leading/trailing dots and dashes
|
|
232
|
+
if (id.startsWith('.') || id.startsWith('-') || id.endsWith('.') || id.endsWith('-')) {
|
|
233
|
+
throw new Error('Skill ID cannot start or end with a dot or dash');
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* List all skill entries in the catalog (metadata only).
|
|
193
238
|
*/
|
|
194
239
|
export async function listSkills() {
|
|
195
240
|
const catalog = await loadCatalog();
|
|
196
241
|
return Object.values(catalog.skills);
|
|
197
242
|
}
|
|
198
243
|
/**
|
|
199
|
-
* Get a specific skill entry by ID.
|
|
244
|
+
* Get a specific skill entry by ID (metadata only).
|
|
200
245
|
*/
|
|
201
246
|
export async function getSkill(id) {
|
|
202
247
|
const catalog = await loadCatalog();
|
|
203
248
|
return catalog.skills[id] ?? null;
|
|
204
249
|
}
|
|
205
250
|
/**
|
|
206
|
-
*
|
|
251
|
+
* Get full skill data including content from file.
|
|
207
252
|
*/
|
|
208
|
-
export async function
|
|
253
|
+
export async function getSkillWithContent(id) {
|
|
254
|
+
const entry = await getSkill(id);
|
|
255
|
+
if (!entry) {
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
try {
|
|
259
|
+
const skillPath = getSkillFilePath(id);
|
|
260
|
+
const content = await fs.readFile(skillPath, 'utf8');
|
|
261
|
+
return { entry, content };
|
|
262
|
+
}
|
|
263
|
+
catch {
|
|
264
|
+
return null;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Add or update a skill entry in the catalog (file-based).
|
|
269
|
+
* Creates a directory and saves SKILL.md file.
|
|
270
|
+
*/
|
|
271
|
+
export async function addSkill(entry, content) {
|
|
272
|
+
validateSkillId(entry.id);
|
|
273
|
+
await ensureSkillsDir();
|
|
274
|
+
const skillDir = getSkillDir(entry.id);
|
|
275
|
+
const skillPath = getSkillFilePath(entry.id);
|
|
276
|
+
// Create skill directory
|
|
277
|
+
await fs.mkdir(skillDir, { recursive: true });
|
|
278
|
+
// Write SKILL.md atomically
|
|
279
|
+
const tempPath = `${skillPath}.tmp`;
|
|
280
|
+
await fs.writeFile(tempPath, content, 'utf8');
|
|
281
|
+
await fs.rename(tempPath, skillPath);
|
|
282
|
+
// Update catalog metadata
|
|
283
|
+
const catalog = await loadCatalog();
|
|
284
|
+
catalog.skills[entry.id] = {
|
|
285
|
+
id: entry.id,
|
|
286
|
+
displayName: entry.displayName,
|
|
287
|
+
description: entry.description,
|
|
288
|
+
path: `skills/${entry.id}`,
|
|
289
|
+
addedAt: entry.addedAt ?? new Date().toISOString(),
|
|
290
|
+
tags: entry.tags ?? [],
|
|
291
|
+
license: entry.license,
|
|
292
|
+
};
|
|
293
|
+
await writeCatalogAtomic(catalog);
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Add a skill from a local directory (copies all files).
|
|
297
|
+
*/
|
|
298
|
+
export async function addSkillFromDir(id, sourceDir, metadata = {}) {
|
|
299
|
+
validateSkillId(id);
|
|
300
|
+
await ensureSkillsDir();
|
|
301
|
+
const skillDir = getSkillDir(id);
|
|
302
|
+
// Create skill directory
|
|
303
|
+
await fs.mkdir(skillDir, { recursive: true });
|
|
304
|
+
// Copy all files from source directory
|
|
305
|
+
const entries = await fs.readdir(sourceDir, { withFileTypes: true });
|
|
306
|
+
for (const entry of entries) {
|
|
307
|
+
const srcPath = path.join(sourceDir, entry.name);
|
|
308
|
+
const destPath = path.join(skillDir, entry.name);
|
|
309
|
+
if (entry.isDirectory()) {
|
|
310
|
+
// Recursively copy subdirectories (e.g., references/)
|
|
311
|
+
await fs.mkdir(destPath, { recursive: true });
|
|
312
|
+
const subEntries = await fs.readdir(srcPath, { withFileTypes: true });
|
|
313
|
+
for (const subEntry of subEntries) {
|
|
314
|
+
if (subEntry.isFile()) {
|
|
315
|
+
const subSrcPath = path.join(srcPath, subEntry.name);
|
|
316
|
+
const subDestPath = path.join(destPath, subEntry.name);
|
|
317
|
+
await fs.copyFile(subSrcPath, subDestPath);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
else if (entry.isFile()) {
|
|
322
|
+
await fs.copyFile(srcPath, destPath);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
// Parse SKILL.md for metadata
|
|
326
|
+
const skillPath = getSkillFilePath(id);
|
|
327
|
+
let content = '';
|
|
328
|
+
let displayName = metadata.displayName ?? id;
|
|
329
|
+
let description = metadata.description ?? '';
|
|
330
|
+
let license = metadata.license;
|
|
331
|
+
try {
|
|
332
|
+
content = await fs.readFile(skillPath, 'utf8');
|
|
333
|
+
const recipe = parseSkillFrontmatter(content);
|
|
334
|
+
displayName = recipe.name || displayName;
|
|
335
|
+
description = recipe.description || description;
|
|
336
|
+
license = recipe.license || license;
|
|
337
|
+
}
|
|
338
|
+
catch {
|
|
339
|
+
// SKILL.md not found, use provided metadata
|
|
340
|
+
}
|
|
341
|
+
// Update catalog metadata
|
|
209
342
|
const catalog = await loadCatalog();
|
|
210
|
-
catalog.skills[
|
|
343
|
+
catalog.skills[id] = {
|
|
344
|
+
id,
|
|
345
|
+
displayName,
|
|
346
|
+
description,
|
|
347
|
+
path: `skills/${id}`,
|
|
348
|
+
addedAt: metadata.addedAt ?? new Date().toISOString(),
|
|
349
|
+
tags: metadata.tags ?? [],
|
|
350
|
+
license,
|
|
351
|
+
};
|
|
211
352
|
await writeCatalogAtomic(catalog);
|
|
212
353
|
}
|
|
213
354
|
/**
|
|
214
|
-
* Remove a skill entry from the catalog.
|
|
355
|
+
* Remove a skill entry from the catalog (deletes directory).
|
|
215
356
|
*/
|
|
216
357
|
export async function removeSkill(id) {
|
|
217
358
|
const catalog = await loadCatalog();
|
|
@@ -220,10 +361,14 @@ export async function removeSkill(id) {
|
|
|
220
361
|
}
|
|
221
362
|
delete catalog.skills[id];
|
|
222
363
|
await writeCatalogAtomic(catalog);
|
|
364
|
+
// Delete skill directory
|
|
365
|
+
const skillDir = getSkillDir(id);
|
|
366
|
+
await fs.rm(skillDir, { recursive: true, force: true });
|
|
223
367
|
return true;
|
|
224
368
|
}
|
|
225
369
|
/**
|
|
226
|
-
* Normalize a skill identifier into a catalog entry.
|
|
370
|
+
* Normalize a skill identifier and content into a catalog entry.
|
|
371
|
+
* This extracts metadata from content but doesn't store the content.
|
|
227
372
|
*/
|
|
228
373
|
export function normalizeSkillPackage(packageId, content, catalogEntry) {
|
|
229
374
|
const now = new Date().toISOString();
|
|
@@ -233,12 +378,10 @@ export function normalizeSkillPackage(packageId, content, catalogEntry) {
|
|
|
233
378
|
id: packageId,
|
|
234
379
|
displayName: catalogEntry?.displayName ?? recipe.name,
|
|
235
380
|
description: catalogEntry?.description ?? recipe.description,
|
|
236
|
-
|
|
237
|
-
...recipe,
|
|
238
|
-
content,
|
|
239
|
-
},
|
|
381
|
+
path: catalogEntry?.path ?? `skills/${packageId}`,
|
|
240
382
|
addedAt: catalogEntry?.addedAt ?? now,
|
|
241
383
|
tags: catalogEntry?.tags ?? [],
|
|
384
|
+
license: recipe.license,
|
|
242
385
|
};
|
|
243
386
|
}
|
|
244
387
|
/**
|
|
@@ -325,4 +468,100 @@ function parseSkillFrontmatter(content) {
|
|
|
325
468
|
recipe.description = recipe.description.slice(0, 500);
|
|
326
469
|
return recipe;
|
|
327
470
|
}
|
|
471
|
+
// ============================================================================
|
|
472
|
+
// Migration
|
|
473
|
+
// ============================================================================
|
|
474
|
+
/**
|
|
475
|
+
* Check if a skill entry uses the old format (with embedded content).
|
|
476
|
+
*/
|
|
477
|
+
function isOldSkillFormat(entry) {
|
|
478
|
+
return entry.recipe && typeof entry.recipe.content === 'string';
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* Migrate a single skill from old format to new file-based format.
|
|
482
|
+
*/
|
|
483
|
+
async function migrateSkill(id, oldEntry) {
|
|
484
|
+
if (!isOldSkillFormat(oldEntry)) {
|
|
485
|
+
return; // Already migrated or invalid format
|
|
486
|
+
}
|
|
487
|
+
const content = oldEntry.recipe.content;
|
|
488
|
+
if (!content) {
|
|
489
|
+
return;
|
|
490
|
+
}
|
|
491
|
+
// Create skill directory and write content
|
|
492
|
+
await ensureSkillsDir();
|
|
493
|
+
const skillDir = getSkillDir(id);
|
|
494
|
+
const skillPath = getSkillFilePath(id);
|
|
495
|
+
await fs.mkdir(skillDir, { recursive: true });
|
|
496
|
+
// Write SKILL.md atomically
|
|
497
|
+
const tempPath = `${skillPath}.tmp`;
|
|
498
|
+
await fs.writeFile(tempPath, content, 'utf8');
|
|
499
|
+
await fs.rename(tempPath, skillPath);
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* Migrate all skills from old JSON format to new file-based format.
|
|
503
|
+
* Returns the number of skills migrated.
|
|
504
|
+
*/
|
|
505
|
+
export async function migrateSkills() {
|
|
506
|
+
const catalogPath = getCatalogPath();
|
|
507
|
+
try {
|
|
508
|
+
await fs.access(catalogPath);
|
|
509
|
+
}
|
|
510
|
+
catch {
|
|
511
|
+
return 0; // Catalog doesn't exist, nothing to migrate
|
|
512
|
+
}
|
|
513
|
+
const raw = await fs.readFile(catalogPath, 'utf8');
|
|
514
|
+
const catalog = JSON.parse(raw);
|
|
515
|
+
if (!catalog.skills || Object.keys(catalog.skills).length === 0) {
|
|
516
|
+
return 0; // No skills to migrate
|
|
517
|
+
}
|
|
518
|
+
let migratedCount = 0;
|
|
519
|
+
const newSkills = {};
|
|
520
|
+
for (const [id, entry] of Object.entries(catalog.skills)) {
|
|
521
|
+
if (isOldSkillFormat(entry)) {
|
|
522
|
+
// Migrate to file-based format
|
|
523
|
+
await migrateSkill(id, entry);
|
|
524
|
+
// Create new entry structure
|
|
525
|
+
newSkills[id] = {
|
|
526
|
+
id: entry.id || id,
|
|
527
|
+
displayName: entry.displayName || entry.recipe.name || id,
|
|
528
|
+
description: entry.description || entry.recipe.description || '',
|
|
529
|
+
path: `skills/${id}`,
|
|
530
|
+
addedAt: entry.addedAt || new Date().toISOString(),
|
|
531
|
+
tags: entry.tags || [],
|
|
532
|
+
license: entry.recipe.license,
|
|
533
|
+
};
|
|
534
|
+
migratedCount++;
|
|
535
|
+
}
|
|
536
|
+
else {
|
|
537
|
+
// Already in new format, keep as-is
|
|
538
|
+
newSkills[id] = entry;
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
if (migratedCount > 0) {
|
|
542
|
+
// Update catalog with new format
|
|
543
|
+
catalog.skills = newSkills;
|
|
544
|
+
await writeCatalogAtomic(catalog);
|
|
545
|
+
}
|
|
546
|
+
return migratedCount;
|
|
547
|
+
}
|
|
548
|
+
/**
|
|
549
|
+
* Auto-migrate on catalog load if needed.
|
|
550
|
+
*/
|
|
551
|
+
let migrationChecked = false;
|
|
552
|
+
async function ensureMigrated() {
|
|
553
|
+
if (migrationChecked) {
|
|
554
|
+
return;
|
|
555
|
+
}
|
|
556
|
+
migrationChecked = true;
|
|
557
|
+
try {
|
|
558
|
+
const count = await migrateSkills();
|
|
559
|
+
if (count > 0) {
|
|
560
|
+
console.log(`Migrated ${count} skill(s) to file-based format.`);
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
catch {
|
|
564
|
+
// Silently ignore migration errors
|
|
565
|
+
}
|
|
566
|
+
}
|
|
328
567
|
//# sourceMappingURL=catalog.js.map
|
package/dist/catalog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|
package/dist/cli-catalog.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getMcp, listMcps, addMcp, removeMcp, normalizeMcpPackage, } from './catalog.js';
|
|
2
|
+
import { padRightWide, truncateWide } from './table-utils.js';
|
|
2
3
|
// ============================================================================
|
|
3
4
|
// List Command
|
|
4
5
|
// ============================================================================
|
|
@@ -14,33 +15,24 @@ export async function catalogMcpList() {
|
|
|
14
15
|
}
|
|
15
16
|
console.log(`MCP Catalog (${entries.length} entries):\n`);
|
|
16
17
|
const ID_WIDTH = 45;
|
|
17
|
-
const NAME_WIDTH =
|
|
18
|
-
const DESC_WIDTH =
|
|
18
|
+
const NAME_WIDTH = 25;
|
|
19
|
+
const DESC_WIDTH = 35;
|
|
19
20
|
const borderH = '┌' + '─'.repeat(ID_WIDTH + 2) + '┬' + '─'.repeat(NAME_WIDTH + 2) + '┬' + '─'.repeat(DESC_WIDTH + 2) + '┐';
|
|
20
21
|
const borderM = '├' + '─'.repeat(ID_WIDTH + 2) + '┼' + '─'.repeat(NAME_WIDTH + 2) + '┼' + '─'.repeat(DESC_WIDTH + 2) + '┤';
|
|
21
22
|
const borderF = '└' + '─'.repeat(ID_WIDTH + 2) + '┴' + '─'.repeat(NAME_WIDTH + 2) + '┴' + '─'.repeat(DESC_WIDTH + 2) + '┘';
|
|
22
23
|
console.log(borderH);
|
|
23
|
-
console.log('│ ' +
|
|
24
|
+
console.log('│ ' + padRightWide('ID', ID_WIDTH) + ' │ ' + padRightWide('Display Name', NAME_WIDTH) + ' │ ' + padRightWide('Description', DESC_WIDTH) + ' │');
|
|
24
25
|
console.log(borderM);
|
|
25
26
|
for (const entry of entries) {
|
|
26
|
-
const id =
|
|
27
|
-
const name =
|
|
28
|
-
const desc =
|
|
29
|
-
console.log('│ ' +
|
|
27
|
+
const id = truncateWide(entry.id, ID_WIDTH);
|
|
28
|
+
const name = padRightWide(entry.displayName, NAME_WIDTH);
|
|
29
|
+
const desc = truncateWide(entry.description, DESC_WIDTH);
|
|
30
|
+
console.log('│ ' + padRightWide(id, ID_WIDTH) + ' │ ' + name + ' │ ' + padRightWide(desc, DESC_WIDTH) + ' │');
|
|
30
31
|
}
|
|
31
32
|
console.log(borderF);
|
|
32
33
|
console.log();
|
|
33
34
|
console.log('Run `acsync catalog mcp show <id>` for details.');
|
|
34
35
|
}
|
|
35
|
-
function truncate(str, maxLen) {
|
|
36
|
-
if (str.length > maxLen) {
|
|
37
|
-
return str.slice(0, maxLen - 1) + '…';
|
|
38
|
-
}
|
|
39
|
-
return str;
|
|
40
|
-
}
|
|
41
|
-
function padRight(str, len) {
|
|
42
|
-
return str.padEnd(len, ' ');
|
|
43
|
-
}
|
|
44
36
|
// ============================================================================
|
|
45
37
|
// Show Command
|
|
46
38
|
// ============================================================================
|
|
@@ -171,7 +163,7 @@ export async function catalogSkillInstall(options) {
|
|
|
171
163
|
displayName: info.name,
|
|
172
164
|
description: info.description,
|
|
173
165
|
});
|
|
174
|
-
await addSkill(entry);
|
|
166
|
+
await addSkill(entry, content);
|
|
175
167
|
console.log(`\n✓ Added to catalog: ${entry.id}`);
|
|
176
168
|
console.log('\nRun `acsync skill add ' + entry.id + '` to add it to your project.');
|
|
177
169
|
}
|
|
@@ -198,13 +190,13 @@ export async function catalogSkillSearch(query) {
|
|
|
198
190
|
const borderM = '├' + '─'.repeat(NAME_WIDTH + 2) + '┼' + '─'.repeat(AUTHOR_WIDTH + 2) + '┼' + '─'.repeat(STARS_WIDTH + 2) + '┤';
|
|
199
191
|
const borderF = '└' + '─'.repeat(NAME_WIDTH + 2) + '┴' + '─'.repeat(AUTHOR_WIDTH + 2) + '┴' + '─'.repeat(STARS_WIDTH + 2) + '┘';
|
|
200
192
|
console.log(borderH);
|
|
201
|
-
console.log('│ ' +
|
|
193
|
+
console.log('│ ' + padRightWide('Name', NAME_WIDTH) + ' │ ' + padRightWide('Author', AUTHOR_WIDTH) + ' │ ' + padRightWide('Stars', STARS_WIDTH) + ' │');
|
|
202
194
|
console.log(borderM);
|
|
203
195
|
for (const skill of results.slice(0, 20)) {
|
|
204
|
-
const name =
|
|
205
|
-
const author =
|
|
206
|
-
const stars =
|
|
207
|
-
console.log('│ ' +
|
|
196
|
+
const name = truncateWide(skill.name, NAME_WIDTH);
|
|
197
|
+
const author = truncateWide(skill.author, AUTHOR_WIDTH);
|
|
198
|
+
const stars = padRightWide('★ ' + formatNumber(skill.stars), STARS_WIDTH);
|
|
199
|
+
console.log('│ ' + padRightWide(name, NAME_WIDTH) + ' │ ' + padRightWide(author, AUTHOR_WIDTH) + ' │ ' + stars + ' │');
|
|
208
200
|
}
|
|
209
201
|
console.log(borderF);
|
|
210
202
|
if (results.length > 20) {
|
|
@@ -304,7 +296,7 @@ export async function catalogSkillImport(options) {
|
|
|
304
296
|
displayName: options.displayName,
|
|
305
297
|
description: options.description,
|
|
306
298
|
});
|
|
307
|
-
await addSkill(entry);
|
|
299
|
+
await addSkill(entry, content);
|
|
308
300
|
console.log(`✓ Added to catalog: ${entry.id}`);
|
|
309
301
|
console.log('\nRun `acsync skill add ' + entry.id + '` to add it to your project.');
|
|
310
302
|
}
|
|
@@ -324,19 +316,19 @@ export async function catalogSkillList() {
|
|
|
324
316
|
}
|
|
325
317
|
console.log(`Skill Catalog (${entries.length} entries):\n`);
|
|
326
318
|
const ID_WIDTH = 45;
|
|
327
|
-
const NAME_WIDTH =
|
|
328
|
-
const DESC_WIDTH =
|
|
319
|
+
const NAME_WIDTH = 25;
|
|
320
|
+
const DESC_WIDTH = 35;
|
|
329
321
|
const borderH = '┌' + '─'.repeat(ID_WIDTH + 2) + '┬' + '─'.repeat(NAME_WIDTH + 2) + '┬' + '─'.repeat(DESC_WIDTH + 2) + '┐';
|
|
330
322
|
const borderM = '├' + '─'.repeat(ID_WIDTH + 2) + '┼' + '─'.repeat(NAME_WIDTH + 2) + '┼' + '─'.repeat(DESC_WIDTH + 2) + '┤';
|
|
331
323
|
const borderF = '└' + '─'.repeat(ID_WIDTH + 2) + '┴' + '─'.repeat(NAME_WIDTH + 2) + '┴' + '─'.repeat(DESC_WIDTH + 2) + '┘';
|
|
332
324
|
console.log(borderH);
|
|
333
|
-
console.log('│ ' +
|
|
325
|
+
console.log('│ ' + padRightWide('ID', ID_WIDTH) + ' │ ' + padRightWide('Display Name', NAME_WIDTH) + ' │ ' + padRightWide('Description', DESC_WIDTH) + ' │');
|
|
334
326
|
console.log(borderM);
|
|
335
327
|
for (const entry of entries) {
|
|
336
|
-
const id =
|
|
337
|
-
const name =
|
|
338
|
-
const desc =
|
|
339
|
-
console.log('│ ' +
|
|
328
|
+
const id = truncateWide(entry.id, ID_WIDTH);
|
|
329
|
+
const name = padRightWide(entry.displayName, NAME_WIDTH);
|
|
330
|
+
const desc = truncateWide(entry.description, DESC_WIDTH);
|
|
331
|
+
console.log('│ ' + padRightWide(id, ID_WIDTH) + ' │ ' + name + ' │ ' + padRightWide(desc, DESC_WIDTH) + ' │');
|
|
340
332
|
}
|
|
341
333
|
console.log(borderF);
|
|
342
334
|
console.log();
|
|
@@ -349,20 +341,21 @@ export async function catalogSkillList() {
|
|
|
349
341
|
* Show details of a specific skill catalog entry.
|
|
350
342
|
*/
|
|
351
343
|
export async function catalogSkillShow(id) {
|
|
352
|
-
const {
|
|
353
|
-
const
|
|
354
|
-
if (!
|
|
344
|
+
const { getSkillWithContent } = await import('./catalog.js');
|
|
345
|
+
const skillWithData = await getSkillWithContent(id);
|
|
346
|
+
if (!skillWithData) {
|
|
355
347
|
console.error(`Skill entry not found: ${id}\n`);
|
|
356
348
|
console.log('Run `acsync catalog skill list` to see available entries.');
|
|
357
349
|
process.exitCode = 1;
|
|
358
350
|
return;
|
|
359
351
|
}
|
|
352
|
+
const { entry, content } = skillWithData;
|
|
360
353
|
console.log(`Skill Entry: ${entry.id}\n`);
|
|
361
354
|
console.log(` Display Name: ${entry.displayName}`);
|
|
362
355
|
console.log(` Description: ${entry.description}`);
|
|
363
356
|
console.log(` Content:\n`);
|
|
364
357
|
// Show preview of skill content
|
|
365
|
-
const lines =
|
|
358
|
+
const lines = content.split('\n');
|
|
366
359
|
const previewLines = lines.slice(0, 20); // Show first 20 lines
|
|
367
360
|
console.log(previewLines.join('\n'));
|
|
368
361
|
if (lines.length > 20) {
|
|
@@ -409,7 +402,7 @@ Skill content for ${options.skillId}.
|
|
|
409
402
|
displayName: options.displayName,
|
|
410
403
|
description: options.description,
|
|
411
404
|
});
|
|
412
|
-
await addSkill(entry);
|
|
405
|
+
await addSkill(entry, content);
|
|
413
406
|
console.log(`Added to catalog: ${entry.id}\n`);
|
|
414
407
|
console.log('Run `acsync skill add <name>` to add it to your project.');
|
|
415
408
|
}
|