@patchen0518/agentbrew 1.0.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/LICENSE +21 -0
- package/README.md +137 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.js +362 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +13 -0
- package/dist/config.js +30 -0
- package/dist/config.js.map +1 -0
- package/dist/dispatcher.d.ts +39 -0
- package/dist/dispatcher.js +245 -0
- package/dist/dispatcher.js.map +1 -0
- package/dist/installer.d.ts +8 -0
- package/dist/installer.js +357 -0
- package/dist/installer.js.map +1 -0
- package/dist/logger.d.ts +6 -0
- package/dist/logger.js +22 -0
- package/dist/logger.js.map +1 -0
- package/dist/migration.d.ts +21 -0
- package/dist/migration.js +344 -0
- package/dist/migration.js.map +1 -0
- package/dist/registry.d.ts +51 -0
- package/dist/registry.js +432 -0
- package/dist/registry.js.map +1 -0
- package/dist/router.d.ts +47 -0
- package/dist/router.js +272 -0
- package/dist/router.js.map +1 -0
- package/dist/state.d.ts +8 -0
- package/dist/state.js +63 -0
- package/dist/state.js.map +1 -0
- package/dist/updater.d.ts +2 -0
- package/dist/updater.js +76 -0
- package/dist/updater.js.map +1 -0
- package/package.json +55 -0
package/dist/logger.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Logger = void 0;
|
|
4
|
+
// src/logger.ts
|
|
5
|
+
class Logger {
|
|
6
|
+
static info(message, ...args) {
|
|
7
|
+
console.error(`[INFO] ${message}`, ...args);
|
|
8
|
+
}
|
|
9
|
+
static warn(message, ...args) {
|
|
10
|
+
console.error(`[WARN] ${message}`, ...args);
|
|
11
|
+
}
|
|
12
|
+
static error(message, ...args) {
|
|
13
|
+
console.error(`[ERROR] ${message}`, ...args);
|
|
14
|
+
}
|
|
15
|
+
static debug(message, ...args) {
|
|
16
|
+
if (process.env.DEBUG) {
|
|
17
|
+
console.error(`[DEBUG] ${message}`, ...args);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.Logger = Logger;
|
|
22
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;AAAA,gBAAgB;AAChB,MAAa,MAAM;IACjB,MAAM,CAAC,IAAI,CAAC,OAAe,EAAE,GAAG,IAAW;QACzC,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe,EAAE,GAAG,IAAW;QACzC,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAe,EAAE,GAAG,IAAW;QAC1C,OAAO,CAAC,KAAK,CAAC,WAAW,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAe,EAAE,GAAG,IAAW;QAC1C,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,WAAW,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;CACF;AAlBD,wBAkBC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface DiscoveredServer {
|
|
2
|
+
name: string;
|
|
3
|
+
command: string;
|
|
4
|
+
args: string[];
|
|
5
|
+
env?: Record<string, string>;
|
|
6
|
+
source: string;
|
|
7
|
+
repoUrl?: string;
|
|
8
|
+
cwd?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface DiscoveredSkill {
|
|
11
|
+
name: string;
|
|
12
|
+
path: string;
|
|
13
|
+
source: string;
|
|
14
|
+
repoUrl?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface DiscoveryResult {
|
|
17
|
+
servers: DiscoveredServer[];
|
|
18
|
+
skills: DiscoveredSkill[];
|
|
19
|
+
}
|
|
20
|
+
export declare function runMigration(): Promise<DiscoveryResult | undefined>;
|
|
21
|
+
export declare function discoverExternalConfigs(): DiscoveryResult;
|
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.runMigration = runMigration;
|
|
40
|
+
exports.discoverExternalConfigs = discoverExternalConfigs;
|
|
41
|
+
const fs_1 = __importDefault(require("fs"));
|
|
42
|
+
const path_1 = __importDefault(require("path"));
|
|
43
|
+
const os_1 = __importDefault(require("os"));
|
|
44
|
+
const readline = __importStar(require("readline"));
|
|
45
|
+
const toml = __importStar(require("smol-toml"));
|
|
46
|
+
const logger_1 = require("./logger");
|
|
47
|
+
const installer_1 = require("./installer");
|
|
48
|
+
const config_1 = require("./config");
|
|
49
|
+
async function runMigration() {
|
|
50
|
+
const result = discoverExternalConfigs();
|
|
51
|
+
if (result.servers.length === 0 && result.skills.length === 0) {
|
|
52
|
+
logger_1.Logger.info('No external configurations found to migrate.');
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
// Print descriptive notice detailing the difference between copied skills and linked references for servers
|
|
56
|
+
logger_1.Logger.info("\n--- AgentBrew Migration ---");
|
|
57
|
+
logger_1.Logger.info("How Migration Works:");
|
|
58
|
+
logger_1.Logger.info("1. Skills (Markdown files) are copied into AgentBrew's directory to ensure they remain functional and independent.");
|
|
59
|
+
logger_1.Logger.info("2. Servers are linked as references to their original executables and run directories, avoiding duplication.");
|
|
60
|
+
logger_1.Logger.info("---------------------------\n");
|
|
61
|
+
const rl = readline.createInterface({
|
|
62
|
+
input: process.stdin,
|
|
63
|
+
output: process.stdout,
|
|
64
|
+
});
|
|
65
|
+
const question = (query) => new Promise((resolve) => rl.question(query, resolve));
|
|
66
|
+
try {
|
|
67
|
+
for (const srv of result.servers) {
|
|
68
|
+
const answer = (await question(`Found ${srv.source} server '${srv.name}'. Migrate? [L]ink, [I]nstall (if Git), [S]kip: `)).toLowerCase();
|
|
69
|
+
if (answer === 'l') {
|
|
70
|
+
try {
|
|
71
|
+
await (0, installer_1.createLinkPackage)(srv.name, srv.command, srv.args, srv.env, srv.cwd);
|
|
72
|
+
logger_1.Logger.info(`Successfully linked ${srv.name} (referencing original directory: ${srv.cwd || 'default'})`);
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
logger_1.Logger.error(`Failed to link ${srv.name}: ${e.message}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else if (answer === 'i') {
|
|
79
|
+
if (srv.repoUrl) {
|
|
80
|
+
try {
|
|
81
|
+
await (0, installer_1.installPackage)(srv.repoUrl);
|
|
82
|
+
logger_1.Logger.info(`Successfully installed ${srv.name} from repository ${srv.repoUrl}`);
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
logger_1.Logger.error(`Failed to install ${srv.name}: ${e.message}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
logger_1.Logger.info(`No repository URL found for ${srv.name}, falling back to Link...`);
|
|
90
|
+
try {
|
|
91
|
+
await (0, installer_1.createLinkPackage)(srv.name, srv.command, srv.args, srv.env, srv.cwd);
|
|
92
|
+
logger_1.Logger.info(`Successfully linked ${srv.name} (referencing original directory: ${srv.cwd || 'default'})`);
|
|
93
|
+
}
|
|
94
|
+
catch (e) {
|
|
95
|
+
logger_1.Logger.error(`Failed to link ${srv.name}: ${e.message}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
for (const skill of result.skills) {
|
|
101
|
+
// Automatically migrate skills without prompting
|
|
102
|
+
const migratedSkillsDir = path_1.default.join((0, config_1.getPackagesDir)(), 'migrated-skills');
|
|
103
|
+
if (!fs_1.default.existsSync(migratedSkillsDir)) {
|
|
104
|
+
fs_1.default.mkdirSync(migratedSkillsDir, { recursive: true });
|
|
105
|
+
}
|
|
106
|
+
const tomlPath = path_1.default.join(migratedSkillsDir, 'agentbrew.toml');
|
|
107
|
+
if (!fs_1.default.existsSync(tomlPath)) {
|
|
108
|
+
const manifest = {
|
|
109
|
+
name: 'migrated-skills',
|
|
110
|
+
version: '1.0.0',
|
|
111
|
+
description: 'Skills migrated from other platforms'
|
|
112
|
+
};
|
|
113
|
+
fs_1.default.writeFileSync(tomlPath, toml.stringify(manifest), 'utf-8');
|
|
114
|
+
}
|
|
115
|
+
// To avoid collisions in migrated-skills directory, we'll use a unique name
|
|
116
|
+
// based on the path if it's a generic "SKILL.md" or similar.
|
|
117
|
+
let targetFileName = path_1.default.basename(skill.path);
|
|
118
|
+
if (targetFileName.toUpperCase() === 'SKILL.MD') {
|
|
119
|
+
const parentDir = path_1.default.basename(path_1.default.dirname(skill.path));
|
|
120
|
+
targetFileName = `${parentDir}-SKILL.md`;
|
|
121
|
+
}
|
|
122
|
+
const targetPath = path_1.default.join(migratedSkillsDir, targetFileName);
|
|
123
|
+
if (!fs_1.default.existsSync(targetPath)) {
|
|
124
|
+
fs_1.default.copyFileSync(skill.path, targetPath);
|
|
125
|
+
logger_1.Logger.info(`Successfully migrated skill: ${skill.name} (copied from ${skill.path})`);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
// Skip silently or log if already exists
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (result.skills.length > 0) {
|
|
132
|
+
logger_1.Logger.info("\nNote: AgentBrew has made a copy of the migrated skills in its own directory.");
|
|
133
|
+
logger_1.Logger.info("The original files still exist. You can safely remove them if you only plan to use them via AgentBrew.");
|
|
134
|
+
}
|
|
135
|
+
return result;
|
|
136
|
+
}
|
|
137
|
+
catch (e) {
|
|
138
|
+
logger_1.Logger.error(`Migration failed: ${e.message}`);
|
|
139
|
+
return undefined;
|
|
140
|
+
}
|
|
141
|
+
finally {
|
|
142
|
+
rl.close();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
function discoverExternalConfigs() {
|
|
146
|
+
const result = {
|
|
147
|
+
servers: [],
|
|
148
|
+
skills: [],
|
|
149
|
+
};
|
|
150
|
+
const home = os_1.default.homedir();
|
|
151
|
+
// 1. Gemini
|
|
152
|
+
const geminiConfigs = [
|
|
153
|
+
path_1.default.join(home, '.gemini', 'config', 'mcp_config.json'),
|
|
154
|
+
path_1.default.join(home, '.gemini', 'antigravity', 'mcp_config.json'),
|
|
155
|
+
];
|
|
156
|
+
for (const configPath of geminiConfigs) {
|
|
157
|
+
if (fs_1.default.existsSync(configPath)) {
|
|
158
|
+
try {
|
|
159
|
+
const content = fs_1.default.readFileSync(configPath, 'utf-8');
|
|
160
|
+
if (!content.trim())
|
|
161
|
+
continue; // Skip empty files
|
|
162
|
+
const config = JSON.parse(content);
|
|
163
|
+
if (config.mcpServers) {
|
|
164
|
+
for (const [name, serverConfig] of Object.entries(config.mcpServers)) {
|
|
165
|
+
const sc = serverConfig;
|
|
166
|
+
result.servers.push({
|
|
167
|
+
name,
|
|
168
|
+
command: sc.command,
|
|
169
|
+
args: sc.args || [],
|
|
170
|
+
env: sc.env,
|
|
171
|
+
source: 'Gemini',
|
|
172
|
+
cwd: sc.cwd,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
catch (e) {
|
|
178
|
+
logger_1.Logger.error(`Failed to parse Gemini config at ${configPath}:`, e);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
// Gemini Skills
|
|
183
|
+
const extensionsDir = path_1.default.join(home, '.gemini', 'extensions');
|
|
184
|
+
if (fs_1.default.existsSync(extensionsDir)) {
|
|
185
|
+
try {
|
|
186
|
+
const extensionDirs = fs_1.default.readdirSync(extensionsDir);
|
|
187
|
+
for (const extDir of extensionDirs) {
|
|
188
|
+
const fullExtPath = path_1.default.join(extensionsDir, extDir);
|
|
189
|
+
if (!fs_1.default.statSync(fullExtPath).isDirectory())
|
|
190
|
+
continue;
|
|
191
|
+
const skillsDir = path_1.default.join(fullExtPath, 'skills');
|
|
192
|
+
if (fs_1.default.existsSync(skillsDir)) {
|
|
193
|
+
let repoUrl;
|
|
194
|
+
const pkgJsonPath = path_1.default.join(fullExtPath, 'package.json');
|
|
195
|
+
if (fs_1.default.existsSync(pkgJsonPath)) {
|
|
196
|
+
try {
|
|
197
|
+
const pkgJson = JSON.parse(fs_1.default.readFileSync(pkgJsonPath, 'utf-8'));
|
|
198
|
+
repoUrl = extractRepoUrl(pkgJson);
|
|
199
|
+
}
|
|
200
|
+
catch (e) { }
|
|
201
|
+
}
|
|
202
|
+
const files = findFilesRecursive(skillsDir, '.md');
|
|
203
|
+
for (const file of files) {
|
|
204
|
+
let name = path_1.default.parse(file).name;
|
|
205
|
+
if (name.toUpperCase() === 'SKILL') {
|
|
206
|
+
name = `${path_1.default.basename(path_1.default.dirname(file))}/SKILL`;
|
|
207
|
+
}
|
|
208
|
+
result.skills.push({
|
|
209
|
+
name,
|
|
210
|
+
path: file,
|
|
211
|
+
source: 'Gemini',
|
|
212
|
+
repoUrl
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
catch (e) {
|
|
219
|
+
// Ignore
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// 2. Claude
|
|
223
|
+
const claudePluginsConfig = path_1.default.join(home, '.claude', 'plugins', 'installed_plugins.json');
|
|
224
|
+
if (fs_1.default.existsSync(claudePluginsConfig)) {
|
|
225
|
+
try {
|
|
226
|
+
const content = fs_1.default.readFileSync(claudePluginsConfig, 'utf-8');
|
|
227
|
+
const plugins = JSON.parse(content);
|
|
228
|
+
const pluginList = Array.isArray(plugins) ? plugins : Object.values(plugins);
|
|
229
|
+
for (const plugin of pluginList) {
|
|
230
|
+
const installPath = plugin.installPath;
|
|
231
|
+
if (installPath && fs_1.default.existsSync(installPath)) {
|
|
232
|
+
// MCP Server
|
|
233
|
+
const mcpJsonPath = path_1.default.join(installPath, '.mcp.json');
|
|
234
|
+
if (fs_1.default.existsSync(mcpJsonPath)) {
|
|
235
|
+
try {
|
|
236
|
+
const mcpContent = fs_1.default.readFileSync(mcpJsonPath, 'utf-8');
|
|
237
|
+
const mcpConfig = JSON.parse(mcpContent);
|
|
238
|
+
const pkgJsonPath = path_1.default.join(installPath, 'package.json');
|
|
239
|
+
let repoUrl;
|
|
240
|
+
if (fs_1.default.existsSync(pkgJsonPath)) {
|
|
241
|
+
try {
|
|
242
|
+
const pkgJson = JSON.parse(fs_1.default.readFileSync(pkgJsonPath, 'utf-8'));
|
|
243
|
+
repoUrl = extractRepoUrl(pkgJson);
|
|
244
|
+
}
|
|
245
|
+
catch (e) { }
|
|
246
|
+
}
|
|
247
|
+
result.servers.push({
|
|
248
|
+
name: mcpConfig.name || path_1.default.basename(installPath),
|
|
249
|
+
command: mcpConfig.command,
|
|
250
|
+
args: mcpConfig.args || [],
|
|
251
|
+
env: mcpConfig.env,
|
|
252
|
+
source: 'Claude',
|
|
253
|
+
repoUrl,
|
|
254
|
+
cwd: mcpConfig.cwd || installPath,
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
catch (e) {
|
|
258
|
+
logger_1.Logger.error(`Failed to parse Claude MCP config at ${mcpJsonPath}:`, e);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
// Skills
|
|
262
|
+
const skillsPath = path_1.default.join(installPath, 'skills');
|
|
263
|
+
if (fs_1.default.existsSync(skillsPath)) {
|
|
264
|
+
const files = findFilesRecursive(skillsPath, '.md');
|
|
265
|
+
for (const file of files) {
|
|
266
|
+
let name = path_1.default.parse(file).name;
|
|
267
|
+
if (name.toUpperCase() === 'SKILL') {
|
|
268
|
+
name = `${path_1.default.basename(path_1.default.dirname(file))}/SKILL`;
|
|
269
|
+
}
|
|
270
|
+
result.skills.push({
|
|
271
|
+
name,
|
|
272
|
+
path: file,
|
|
273
|
+
source: 'Claude',
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
catch (e) {
|
|
281
|
+
logger_1.Logger.error(`Failed to parse Claude plugins config at ${claudePluginsConfig}:`, e);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
// 3. Cursor
|
|
285
|
+
const cursorConfig = path_1.default.join(home, '.cursor', 'mcp.json');
|
|
286
|
+
if (fs_1.default.existsSync(cursorConfig)) {
|
|
287
|
+
try {
|
|
288
|
+
const content = fs_1.default.readFileSync(cursorConfig, 'utf-8');
|
|
289
|
+
const config = JSON.parse(content);
|
|
290
|
+
if (config.mcpServers) {
|
|
291
|
+
for (const [name, serverConfig] of Object.entries(config.mcpServers)) {
|
|
292
|
+
const sc = serverConfig;
|
|
293
|
+
result.servers.push({
|
|
294
|
+
name,
|
|
295
|
+
command: sc.command,
|
|
296
|
+
args: sc.args || [],
|
|
297
|
+
env: sc.env,
|
|
298
|
+
source: 'Cursor',
|
|
299
|
+
cwd: sc.cwd,
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
catch (e) {
|
|
305
|
+
logger_1.Logger.error(`Failed to parse Cursor config at ${cursorConfig}:`, e);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
return result;
|
|
309
|
+
}
|
|
310
|
+
function findFilesRecursive(dir, ext) {
|
|
311
|
+
let results = [];
|
|
312
|
+
try {
|
|
313
|
+
const list = fs_1.default.readdirSync(dir);
|
|
314
|
+
for (const file of list) {
|
|
315
|
+
const fullPath = path_1.default.join(dir, file);
|
|
316
|
+
const stat = fs_1.default.statSync(fullPath);
|
|
317
|
+
if (stat && stat.isDirectory()) {
|
|
318
|
+
results = results.concat(findFilesRecursive(fullPath, ext));
|
|
319
|
+
}
|
|
320
|
+
else if (file.endsWith(ext)) {
|
|
321
|
+
results.push(fullPath);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
catch (e) {
|
|
326
|
+
// Ignore
|
|
327
|
+
}
|
|
328
|
+
return results;
|
|
329
|
+
}
|
|
330
|
+
function extractRepoUrl(pkgJson) {
|
|
331
|
+
if (pkgJson.repository) {
|
|
332
|
+
if (typeof pkgJson.repository === 'string') {
|
|
333
|
+
return pkgJson.repository;
|
|
334
|
+
}
|
|
335
|
+
else if (typeof pkgJson.repository === 'object' && pkgJson.repository.url) {
|
|
336
|
+
return pkgJson.repository.url;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
if (pkgJson.homepage) {
|
|
340
|
+
return pkgJson.homepage;
|
|
341
|
+
}
|
|
342
|
+
return undefined;
|
|
343
|
+
}
|
|
344
|
+
//# sourceMappingURL=migration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.js","sourceRoot":"","sources":["../src/migration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export interface PackageManifest {
|
|
2
|
+
name: string;
|
|
3
|
+
version: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
servers?: {
|
|
6
|
+
name: string;
|
|
7
|
+
command: string;
|
|
8
|
+
args: string[];
|
|
9
|
+
description?: string;
|
|
10
|
+
build_command?: string;
|
|
11
|
+
env?: Record<string, string>;
|
|
12
|
+
cwd?: string;
|
|
13
|
+
}[];
|
|
14
|
+
prompts?: {
|
|
15
|
+
name: string;
|
|
16
|
+
file: string;
|
|
17
|
+
description: string;
|
|
18
|
+
}[];
|
|
19
|
+
instructions?: {
|
|
20
|
+
name: string;
|
|
21
|
+
file: string;
|
|
22
|
+
}[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Static cache of capabilities discovered from an MCP server.
|
|
26
|
+
* Saved as mcp-manifest.json in the package directory.
|
|
27
|
+
*/
|
|
28
|
+
export interface McpManifestCache extends PackageManifest {
|
|
29
|
+
discovered?: {
|
|
30
|
+
tools?: Record<string, any[]>;
|
|
31
|
+
prompts?: Record<string, any[]>;
|
|
32
|
+
resources?: Record<string, any[]>;
|
|
33
|
+
resourceTemplates?: Record<string, any[]>;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export interface PackageInfo {
|
|
37
|
+
packageName: string;
|
|
38
|
+
subPath: string;
|
|
39
|
+
path: string;
|
|
40
|
+
manifest: PackageManifest;
|
|
41
|
+
isEnabled: boolean;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Discovers capabilities by briefly running the server and saves them to mcp-manifest.json.
|
|
45
|
+
*/
|
|
46
|
+
export declare function generateMcpManifest(pkgPath: string, manifest: PackageManifest, throwOnError?: boolean): Promise<McpManifestCache>;
|
|
47
|
+
export declare function discoverPackages(includeDisabled?: boolean): PackageInfo[];
|
|
48
|
+
export declare function findManifests(currentPath: string, depth: number): {
|
|
49
|
+
path: string;
|
|
50
|
+
manifest: PackageManifest;
|
|
51
|
+
}[];
|