@yama662607/agent-config-sync 0.2.0 → 0.3.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/dist/cli-init.js +92 -53
- package/dist/cli-init.js.map +1 -1
- package/dist/cli.js +34 -12
- package/dist/cli.js.map +1 -1
- package/dist/prompts/custom-multiselect.d.ts +21 -0
- package/dist/prompts/custom-multiselect.js +94 -1
- package/dist/prompts/custom-multiselect.js.map +1 -1
- package/dist/prompts/index.d.ts +2 -2
- package/dist/prompts/index.js +2 -2
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/mcp-prompt.d.ts +5 -2
- package/dist/prompts/mcp-prompt.js +24 -3
- package/dist/prompts/mcp-prompt.js.map +1 -1
- package/dist/prompts/skill-prompt.d.ts +5 -2
- package/dist/prompts/skill-prompt.js +24 -3
- package/dist/prompts/skill-prompt.js.map +1 -1
- package/dist/tui/catalog-tui.d.ts +29 -0
- package/dist/tui/catalog-tui.js +395 -0
- package/dist/tui/catalog-tui.js.map +1 -0
- package/dist/tui/index.d.ts +8 -0
- package/dist/tui/index.js +8 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/mcp-tui.d.ts +27 -0
- package/dist/tui/mcp-tui.js +408 -0
- package/dist/tui/mcp-tui.js.map +1 -0
- package/dist/tui/skill-tui.d.ts +29 -0
- package/dist/tui/skill-tui.js +373 -0
- package/dist/tui/skill-tui.js.map +1 -0
- package/dist/tui/tui-base.d.ts +36 -0
- package/dist/tui/tui-base.js +64 -0
- package/dist/tui/tui-base.js.map +1 -0
- package/package.json +1 -1
|
@@ -3,11 +3,14 @@ const require = createRequire(import.meta.url);
|
|
|
3
3
|
// @ts-ignore - enquirer uses CommonJS exports
|
|
4
4
|
const AutoComplete = require('enquirer/lib/prompts/autocomplete.js');
|
|
5
5
|
import { listSkills } from '../catalog.js';
|
|
6
|
+
/** Special return value indicating user wants to go back */
|
|
7
|
+
export const SKILL_BACK = '__SKILL_BACK__';
|
|
6
8
|
/**
|
|
7
9
|
* Prompt user to select skills from catalog.
|
|
8
|
-
* @
|
|
10
|
+
* @param allowBack - Whether to show "Back" option (default: false)
|
|
11
|
+
* @returns Selected skill IDs, or [SKILL_BACK] if user chose to go back
|
|
9
12
|
*/
|
|
10
|
-
export async function promptSkills() {
|
|
13
|
+
export async function promptSkills(allowBack = false) {
|
|
11
14
|
const skills = await listSkills();
|
|
12
15
|
if (skills.length === 0) {
|
|
13
16
|
console.log('No skill entries in catalog.\n');
|
|
@@ -22,9 +25,20 @@ export async function promptSkills() {
|
|
|
22
25
|
value: skill.id,
|
|
23
26
|
hint: skill.description.slice(0, 50)
|
|
24
27
|
}));
|
|
28
|
+
// Add back option if allowed
|
|
29
|
+
if (allowBack) {
|
|
30
|
+
choices.unshift({
|
|
31
|
+
name: SKILL_BACK,
|
|
32
|
+
message: '← Back to MCP selection',
|
|
33
|
+
value: SKILL_BACK,
|
|
34
|
+
hint: 'Return to previous step'
|
|
35
|
+
});
|
|
36
|
+
}
|
|
25
37
|
const prompt = new AutoComplete({
|
|
26
38
|
name: 'skills',
|
|
27
|
-
message:
|
|
39
|
+
message: allowBack
|
|
40
|
+
? 'Select skills (type to search, or select ← Back to return)'
|
|
41
|
+
: 'Select skills (type to search)',
|
|
28
42
|
multiple: true,
|
|
29
43
|
choices: choices,
|
|
30
44
|
limit: 10,
|
|
@@ -39,6 +53,9 @@ export async function promptSkills() {
|
|
|
39
53
|
// Simple fuzzy search - matches if input is substring of name or message
|
|
40
54
|
const lowerInput = input.toLowerCase();
|
|
41
55
|
return choices.filter(choice => {
|
|
56
|
+
// Always show back option when filtering
|
|
57
|
+
if (choice.name === SKILL_BACK)
|
|
58
|
+
return true;
|
|
42
59
|
const name = (choice.name || '').toLowerCase();
|
|
43
60
|
const message = (choice.message || '').toLowerCase();
|
|
44
61
|
return name.includes(lowerInput) || message.includes(lowerInput);
|
|
@@ -47,6 +64,10 @@ export async function promptSkills() {
|
|
|
47
64
|
});
|
|
48
65
|
try {
|
|
49
66
|
const result = await prompt.run();
|
|
67
|
+
// If back was selected, return special value
|
|
68
|
+
if (result && result.includes(SKILL_BACK)) {
|
|
69
|
+
return [SKILL_BACK];
|
|
70
|
+
}
|
|
50
71
|
return result || [];
|
|
51
72
|
}
|
|
52
73
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-prompt.js","sourceRoot":"","sources":["../../src/prompts/skill-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,8CAA8C;AAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,sCAAsC,CAAC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C
|
|
1
|
+
{"version":3,"file":"skill-prompt.js","sourceRoot":"","sources":["../../src/prompts/skill-prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Catalog TUI
|
|
3
|
+
*
|
|
4
|
+
* Interactive catalog browser with list view, details, and actions.
|
|
5
|
+
*/
|
|
6
|
+
import type { TuiState, ScreenAction } from './tui-base.js';
|
|
7
|
+
/**
|
|
8
|
+
* Catalog TUI Screen
|
|
9
|
+
*/
|
|
10
|
+
export declare class CatalogTuiScreen {
|
|
11
|
+
name: "catalog";
|
|
12
|
+
render(state: TuiState): Promise<TuiState | null>;
|
|
13
|
+
private renderHeader;
|
|
14
|
+
private selectTab;
|
|
15
|
+
private renderTab;
|
|
16
|
+
private renderMcpCatalog;
|
|
17
|
+
private renderSkillCatalog;
|
|
18
|
+
private renderRegistry;
|
|
19
|
+
private showMcpDetails;
|
|
20
|
+
private showSkillDetails;
|
|
21
|
+
private addMcpToCatalog;
|
|
22
|
+
private importSkill;
|
|
23
|
+
private addMcpToProject;
|
|
24
|
+
private addSkillToProject;
|
|
25
|
+
private deleteMcpFromCatalog;
|
|
26
|
+
private deleteSkillFromCatalog;
|
|
27
|
+
private pressEnter;
|
|
28
|
+
handleAction(state: TuiState, action: ScreenAction): Promise<TuiState>;
|
|
29
|
+
}
|
|
@@ -0,0 +1,395 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Catalog TUI
|
|
3
|
+
*
|
|
4
|
+
* Interactive catalog browser with list view, details, and actions.
|
|
5
|
+
*/
|
|
6
|
+
import { createRequire } from 'node:module';
|
|
7
|
+
const require = createRequire(import.meta.url);
|
|
8
|
+
// @ts-ignore - enquirer uses CommonJS exports
|
|
9
|
+
const { Select } = require('enquirer');
|
|
10
|
+
import { listMcps, listSkills } from '../catalog.js';
|
|
11
|
+
/**
|
|
12
|
+
* Catalog TUI Screen
|
|
13
|
+
*/
|
|
14
|
+
export class CatalogTuiScreen {
|
|
15
|
+
name = 'catalog';
|
|
16
|
+
async render(state) {
|
|
17
|
+
console.clear();
|
|
18
|
+
this.renderHeader();
|
|
19
|
+
// Let user select tab first
|
|
20
|
+
const tab = await this.selectTab();
|
|
21
|
+
if (!tab)
|
|
22
|
+
return null; // Exit
|
|
23
|
+
// Main loop for this tab
|
|
24
|
+
while (true) {
|
|
25
|
+
const action = await this.renderTab(tab, state);
|
|
26
|
+
if (action === 'exit')
|
|
27
|
+
return null;
|
|
28
|
+
if (action === 'back')
|
|
29
|
+
break;
|
|
30
|
+
// Handle other actions...
|
|
31
|
+
}
|
|
32
|
+
return state;
|
|
33
|
+
}
|
|
34
|
+
renderHeader() {
|
|
35
|
+
console.log('╔═══════════════════════════════════════════════════════════════════╗');
|
|
36
|
+
console.log('║ 📚 Catalog Browser ║');
|
|
37
|
+
console.log('╚═══════════════════════════════════════════════════════════════════╝');
|
|
38
|
+
console.log();
|
|
39
|
+
}
|
|
40
|
+
async selectTab() {
|
|
41
|
+
const prompt = new Select({
|
|
42
|
+
name: 'tab',
|
|
43
|
+
message: 'Select catalog section:',
|
|
44
|
+
choices: [
|
|
45
|
+
{ name: 'mcp', message: '📦 MCP Servers' },
|
|
46
|
+
{ name: 'skill', message: '📚 Skills' },
|
|
47
|
+
{ name: 'registry', message: '🔍 Skill Registry' },
|
|
48
|
+
{ name: 'exit', message: '🚪 Exit' },
|
|
49
|
+
],
|
|
50
|
+
actions: {
|
|
51
|
+
ctrl: { n: 'down', p: 'up' }
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
try {
|
|
55
|
+
const result = await prompt.run();
|
|
56
|
+
if (result === 'exit')
|
|
57
|
+
return null;
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async renderTab(tab, state) {
|
|
65
|
+
console.log(`\n─── ${tab.toUpperCase()} CATALOG ───\n`);
|
|
66
|
+
switch (tab) {
|
|
67
|
+
case 'mcp':
|
|
68
|
+
return await this.renderMcpCatalog(state);
|
|
69
|
+
case 'skill':
|
|
70
|
+
return await this.renderSkillCatalog(state);
|
|
71
|
+
case 'registry':
|
|
72
|
+
return await this.renderRegistry(state);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async renderMcpCatalog(state) {
|
|
76
|
+
const mcps = await listMcps();
|
|
77
|
+
if (mcps.length === 0) {
|
|
78
|
+
console.log('No MCP entries in catalog.');
|
|
79
|
+
console.log('\nTip: Use "acsync catalog mcp add <package>" to add entries.');
|
|
80
|
+
await this.pressEnter();
|
|
81
|
+
return 'back';
|
|
82
|
+
}
|
|
83
|
+
// Create choices with actions
|
|
84
|
+
const choices = mcps.map(mcp => ({
|
|
85
|
+
name: mcp.id,
|
|
86
|
+
message: `📦 ${mcp.displayName || mcp.id}`,
|
|
87
|
+
value: mcp.id,
|
|
88
|
+
hint: mcp.description?.slice(0, 40)
|
|
89
|
+
}));
|
|
90
|
+
choices.push({ name: 'add', message: '➕ Add new MCP to catalog', value: '__add__', hint: '' }, { name: 'back', message: '← Back to tabs', value: '__back__', hint: '' }, { name: 'exit', message: '🚪 Exit', value: '__exit__', hint: '' });
|
|
91
|
+
const prompt = new Select({
|
|
92
|
+
name: 'mcp',
|
|
93
|
+
message: 'Select MCP (or action):',
|
|
94
|
+
choices,
|
|
95
|
+
actions: {
|
|
96
|
+
ctrl: { n: 'down', p: 'up' }
|
|
97
|
+
},
|
|
98
|
+
footer: 'Use ↑↓ to navigate, Enter to select'
|
|
99
|
+
});
|
|
100
|
+
try {
|
|
101
|
+
const selected = await prompt.run();
|
|
102
|
+
if (selected === '__exit__')
|
|
103
|
+
return 'exit';
|
|
104
|
+
if (selected === '__back__')
|
|
105
|
+
return 'back';
|
|
106
|
+
if (selected === '__add__') {
|
|
107
|
+
await this.addMcpToCatalog();
|
|
108
|
+
return 'back'; // Return to refresh
|
|
109
|
+
}
|
|
110
|
+
// Show MCP details and actions
|
|
111
|
+
return await this.showMcpDetails(selected, mcps.find(m => m.id === selected), state);
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return 'exit';
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
async renderSkillCatalog(state) {
|
|
118
|
+
const skills = await listSkills();
|
|
119
|
+
if (skills.length === 0) {
|
|
120
|
+
console.log('No skill entries in catalog.');
|
|
121
|
+
console.log('\nTip: Use "acsync catalog skill import <path>" to add skills.');
|
|
122
|
+
await this.pressEnter();
|
|
123
|
+
return 'back';
|
|
124
|
+
}
|
|
125
|
+
const choices = skills.map(skill => ({
|
|
126
|
+
name: skill.id,
|
|
127
|
+
message: `📚 ${skill.displayName || skill.id}`,
|
|
128
|
+
value: skill.id,
|
|
129
|
+
hint: skill.description?.slice(0, 40)
|
|
130
|
+
}));
|
|
131
|
+
choices.push({ name: 'import', message: '📥 Import local skill', value: '__import__', hint: '' }, { name: 'back', message: '← Back to tabs', value: '__back__', hint: '' }, { name: 'exit', message: '🚪 Exit', value: '__exit__', hint: '' });
|
|
132
|
+
const prompt = new Select({
|
|
133
|
+
name: 'skill',
|
|
134
|
+
message: 'Select skill (or action):',
|
|
135
|
+
choices,
|
|
136
|
+
actions: {
|
|
137
|
+
ctrl: { n: 'down', p: 'up' }
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
try {
|
|
141
|
+
const selected = await prompt.run();
|
|
142
|
+
if (selected === '__exit__')
|
|
143
|
+
return 'exit';
|
|
144
|
+
if (selected === '__back__')
|
|
145
|
+
return 'back';
|
|
146
|
+
if (selected === '__import__') {
|
|
147
|
+
await this.importSkill();
|
|
148
|
+
return 'back';
|
|
149
|
+
}
|
|
150
|
+
// Show skill details and actions
|
|
151
|
+
return await this.showSkillDetails(selected, skills.find(s => s.id === selected), state);
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
return 'exit';
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
async renderRegistry(state) {
|
|
158
|
+
const { prompt } = await import('enquirer');
|
|
159
|
+
console.log('Search skills.directory registry...\n');
|
|
160
|
+
try {
|
|
161
|
+
const response = await prompt({
|
|
162
|
+
type: 'input',
|
|
163
|
+
name: 'query',
|
|
164
|
+
message: 'Enter search query (or press Enter to go back):'
|
|
165
|
+
});
|
|
166
|
+
if (!response.query)
|
|
167
|
+
return 'back';
|
|
168
|
+
// Search registry (delegate to existing CLI)
|
|
169
|
+
const { catalogSkillSearch } = await import('../cli-catalog.js');
|
|
170
|
+
await catalogSkillSearch(response.query);
|
|
171
|
+
await this.pressEnter();
|
|
172
|
+
return 'back';
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
return 'back';
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
async showMcpDetails(id, mcp, state) {
|
|
179
|
+
console.clear();
|
|
180
|
+
this.renderHeader();
|
|
181
|
+
console.log(`\n📦 ${mcp.displayName || id}`);
|
|
182
|
+
console.log('─'.repeat(60));
|
|
183
|
+
console.log(`ID: ${mcp.id}`);
|
|
184
|
+
console.log(`Description: ${mcp.description || 'No description'}`);
|
|
185
|
+
if (mcp.recipe) {
|
|
186
|
+
console.log('\nConfiguration:');
|
|
187
|
+
if (mcp.recipe.url) {
|
|
188
|
+
console.log(` Transport: HTTP/SSE`);
|
|
189
|
+
console.log(` URL: ${mcp.recipe.url}`);
|
|
190
|
+
}
|
|
191
|
+
else if (mcp.recipe.command) {
|
|
192
|
+
console.log(` Transport: stdio`);
|
|
193
|
+
console.log(` Command: ${mcp.recipe.command}`);
|
|
194
|
+
if (mcp.recipe.args)
|
|
195
|
+
console.log(` Args: ${JSON.stringify(mcp.recipe.args)}`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
console.log('\n' + '─'.repeat(60));
|
|
199
|
+
const prompt = new Select({
|
|
200
|
+
name: 'action',
|
|
201
|
+
message: 'What would you like to do?',
|
|
202
|
+
choices: [
|
|
203
|
+
{ name: 'add', message: '➕ Add to project' },
|
|
204
|
+
{ name: 'delete', message: '🗑️ Delete from catalog' },
|
|
205
|
+
{ name: 'back', message: '← Back to list' },
|
|
206
|
+
{ name: 'exit', message: '🚪 Exit' },
|
|
207
|
+
],
|
|
208
|
+
actions: {
|
|
209
|
+
ctrl: { n: 'down', p: 'up' }
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
try {
|
|
213
|
+
const action = await prompt.run();
|
|
214
|
+
if (action === 'exit')
|
|
215
|
+
return 'exit';
|
|
216
|
+
if (action === 'back')
|
|
217
|
+
return 'back';
|
|
218
|
+
if (action === 'add') {
|
|
219
|
+
await this.addMcpToProject(mcp, state);
|
|
220
|
+
}
|
|
221
|
+
if (action === 'delete') {
|
|
222
|
+
await this.deleteMcpFromCatalog(id);
|
|
223
|
+
}
|
|
224
|
+
return 'back'; // Return to list
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
return 'exit';
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
async showSkillDetails(id, skill, state) {
|
|
231
|
+
console.clear();
|
|
232
|
+
this.renderHeader();
|
|
233
|
+
console.log(`\n📚 ${skill.displayName || id}`);
|
|
234
|
+
console.log('─'.repeat(60));
|
|
235
|
+
console.log(`ID: ${skill.id}`);
|
|
236
|
+
console.log(`Description: ${skill.description || 'No description'}`);
|
|
237
|
+
console.log('\n' + '─'.repeat(60));
|
|
238
|
+
const prompt = new Select({
|
|
239
|
+
name: 'action',
|
|
240
|
+
message: 'What would you like to do?',
|
|
241
|
+
choices: [
|
|
242
|
+
{ name: 'add', message: '➕ Add to project' },
|
|
243
|
+
{ name: 'delete', message: '🗑️ Delete from catalog' },
|
|
244
|
+
{ name: 'back', message: '← Back to list' },
|
|
245
|
+
{ name: 'exit', message: '🚪 Exit' },
|
|
246
|
+
],
|
|
247
|
+
actions: {
|
|
248
|
+
ctrl: { n: 'down', p: 'up' }
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
try {
|
|
252
|
+
const action = await prompt.run();
|
|
253
|
+
if (action === 'exit')
|
|
254
|
+
return 'exit';
|
|
255
|
+
if (action === 'back')
|
|
256
|
+
return 'back';
|
|
257
|
+
if (action === 'add') {
|
|
258
|
+
await this.addSkillToProject(skill, state);
|
|
259
|
+
}
|
|
260
|
+
if (action === 'delete') {
|
|
261
|
+
await this.deleteSkillFromCatalog(id);
|
|
262
|
+
}
|
|
263
|
+
return 'back';
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
return 'exit';
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
async addMcpToCatalog() {
|
|
270
|
+
const { prompt } = await import('enquirer');
|
|
271
|
+
try {
|
|
272
|
+
const response = await prompt({
|
|
273
|
+
type: 'input',
|
|
274
|
+
name: 'packageId',
|
|
275
|
+
message: 'Enter npm package ID (e.g., @modelcontextprotocol/server-github):'
|
|
276
|
+
});
|
|
277
|
+
if (!response.packageId)
|
|
278
|
+
return;
|
|
279
|
+
const { catalogMcpAdd } = await import('../cli-catalog.js');
|
|
280
|
+
await catalogMcpAdd({ packageId: response.packageId });
|
|
281
|
+
console.log('\n✅ Added to catalog!');
|
|
282
|
+
}
|
|
283
|
+
catch (error) {
|
|
284
|
+
console.error(`\n❌ Error: ${error.message}`);
|
|
285
|
+
}
|
|
286
|
+
await this.pressEnter();
|
|
287
|
+
}
|
|
288
|
+
async importSkill() {
|
|
289
|
+
const { prompt } = await import('enquirer');
|
|
290
|
+
try {
|
|
291
|
+
const response = await prompt({
|
|
292
|
+
type: 'input',
|
|
293
|
+
name: 'path',
|
|
294
|
+
message: 'Enter skill directory path:'
|
|
295
|
+
});
|
|
296
|
+
if (!response.path)
|
|
297
|
+
return;
|
|
298
|
+
const { catalogSkillImport } = await import('../cli-catalog.js');
|
|
299
|
+
await catalogSkillImport({ path: response.path });
|
|
300
|
+
console.log('\n✅ Imported to catalog!');
|
|
301
|
+
}
|
|
302
|
+
catch (error) {
|
|
303
|
+
console.error(`\n❌ Error: ${error.message}`);
|
|
304
|
+
}
|
|
305
|
+
await this.pressEnter();
|
|
306
|
+
}
|
|
307
|
+
async addMcpToProject(mcp, state) {
|
|
308
|
+
// Select targets
|
|
309
|
+
const { promptTargets } = await import('../prompts/index.js');
|
|
310
|
+
const targets = await promptTargets([state.target]);
|
|
311
|
+
// Add MCP
|
|
312
|
+
const { mcpAdd } = await import('../cli-mcp.js');
|
|
313
|
+
try {
|
|
314
|
+
await mcpAdd({
|
|
315
|
+
packageId: mcp.id,
|
|
316
|
+
targets,
|
|
317
|
+
noRegister: true // Already in catalog
|
|
318
|
+
});
|
|
319
|
+
console.log('\n✅ Added to project!');
|
|
320
|
+
}
|
|
321
|
+
catch (error) {
|
|
322
|
+
console.error(`\n❌ Error: ${error.message}`);
|
|
323
|
+
}
|
|
324
|
+
await this.pressEnter();
|
|
325
|
+
}
|
|
326
|
+
async addSkillToProject(skill, state) {
|
|
327
|
+
// Select targets
|
|
328
|
+
const { promptTargets } = await import('../prompts/index.js');
|
|
329
|
+
const targets = await promptTargets([state.target]);
|
|
330
|
+
// Add skill
|
|
331
|
+
const { skillAdd } = await import('../cli-skill.js');
|
|
332
|
+
try {
|
|
333
|
+
await skillAdd({
|
|
334
|
+
skillId: skill.id,
|
|
335
|
+
targets,
|
|
336
|
+
noRegister: true // Already in catalog
|
|
337
|
+
});
|
|
338
|
+
console.log('\n✅ Added to project!');
|
|
339
|
+
}
|
|
340
|
+
catch (error) {
|
|
341
|
+
console.error(`\n❌ Error: ${error.message}`);
|
|
342
|
+
}
|
|
343
|
+
await this.pressEnter();
|
|
344
|
+
}
|
|
345
|
+
async deleteMcpFromCatalog(id) {
|
|
346
|
+
const { prompt } = await import('enquirer');
|
|
347
|
+
try {
|
|
348
|
+
const confirm = await prompt({
|
|
349
|
+
type: 'confirm',
|
|
350
|
+
name: 'confirmed',
|
|
351
|
+
message: `Delete "${id}" from catalog?`,
|
|
352
|
+
initial: false
|
|
353
|
+
});
|
|
354
|
+
if (!confirm)
|
|
355
|
+
return;
|
|
356
|
+
const { catalogMcpRemove } = await import('../cli-catalog.js');
|
|
357
|
+
await catalogMcpRemove(id);
|
|
358
|
+
console.log('\n✅ Deleted from catalog!');
|
|
359
|
+
}
|
|
360
|
+
catch (error) {
|
|
361
|
+
console.error(`\n❌ Error: ${error.message}`);
|
|
362
|
+
}
|
|
363
|
+
await this.pressEnter();
|
|
364
|
+
}
|
|
365
|
+
async deleteSkillFromCatalog(id) {
|
|
366
|
+
const { prompt } = await import('enquirer');
|
|
367
|
+
try {
|
|
368
|
+
const confirm = await prompt({
|
|
369
|
+
type: 'confirm',
|
|
370
|
+
name: 'confirmed',
|
|
371
|
+
message: `Delete "${id}" from catalog?`,
|
|
372
|
+
initial: false
|
|
373
|
+
});
|
|
374
|
+
if (!confirm)
|
|
375
|
+
return;
|
|
376
|
+
const { catalogSkillRemove } = await import('../cli-catalog.js');
|
|
377
|
+
await catalogSkillRemove(id);
|
|
378
|
+
console.log('\n✅ Deleted from catalog!');
|
|
379
|
+
}
|
|
380
|
+
catch (error) {
|
|
381
|
+
console.error(`\n❌ Error: ${error.message}`);
|
|
382
|
+
}
|
|
383
|
+
await this.pressEnter();
|
|
384
|
+
}
|
|
385
|
+
pressEnter() {
|
|
386
|
+
return new Promise(resolve => {
|
|
387
|
+
process.stdin.once('data', () => resolve());
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
handleAction(state, action) {
|
|
391
|
+
// Implement action handling
|
|
392
|
+
return Promise.resolve(state);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
//# sourceMappingURL=catalog-tui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-tui.js","sourceRoot":"","sources":["../../src/tui/catalog-tui.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI Module Entry Point
|
|
3
|
+
*/
|
|
4
|
+
export { TuiApp } from './tui-base.js';
|
|
5
|
+
export { CatalogTuiScreen } from './catalog-tui.js';
|
|
6
|
+
export { McpTuiScreen } from './mcp-tui.js';
|
|
7
|
+
export { SkillTuiScreen } from './skill-tui.js';
|
|
8
|
+
export type { TuiState, ScreenAction, ScreenName } from './tui-base.js';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI Module Entry Point
|
|
3
|
+
*/
|
|
4
|
+
export { TuiApp } from './tui-base.js';
|
|
5
|
+
export { CatalogTuiScreen } from './catalog-tui.js';
|
|
6
|
+
export { McpTuiScreen } from './mcp-tui.js';
|
|
7
|
+
export { SkillTuiScreen } from './skill-tui.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tui/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Project TUI
|
|
3
|
+
*
|
|
4
|
+
* Manage MCP servers for the current project with visual status display.
|
|
5
|
+
*/
|
|
6
|
+
import type { TuiState, ScreenAction } from './tui-base.js';
|
|
7
|
+
/**
|
|
8
|
+
* MCP TUI Screen
|
|
9
|
+
*/
|
|
10
|
+
export declare class McpTuiScreen {
|
|
11
|
+
name: "mcp";
|
|
12
|
+
render(state: TuiState): Promise<TuiState | null>;
|
|
13
|
+
private renderHeader;
|
|
14
|
+
private getDefaultConfigPath;
|
|
15
|
+
private renderMain;
|
|
16
|
+
private renderStatusTable;
|
|
17
|
+
private handleSwitchTarget;
|
|
18
|
+
private handleAdd;
|
|
19
|
+
private addToProject;
|
|
20
|
+
private addFromNpm;
|
|
21
|
+
private addCustom;
|
|
22
|
+
private handleServerAction;
|
|
23
|
+
private toggleServer;
|
|
24
|
+
private removeServer;
|
|
25
|
+
private pressEnter;
|
|
26
|
+
handleAction(state: TuiState, action: ScreenAction): Promise<TuiState>;
|
|
27
|
+
}
|