@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.
@@ -0,0 +1,432 @@
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.generateMcpManifest = generateMcpManifest;
40
+ exports.discoverPackages = discoverPackages;
41
+ exports.findManifests = findManifests;
42
+ const fs_1 = __importDefault(require("fs"));
43
+ const path_1 = __importDefault(require("path"));
44
+ const toml = __importStar(require("smol-toml"));
45
+ const state_1 = require("./state");
46
+ const logger_1 = require("./logger");
47
+ const config_1 = require("./config");
48
+ const index_js_1 = require("@modelcontextprotocol/sdk/client/index.js");
49
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/client/stdio.js");
50
+ async function withTimeout(promise, ms, errorMessage) {
51
+ let timeoutId;
52
+ const timeoutPromise = new Promise((_, reject) => {
53
+ timeoutId = setTimeout(() => reject(new Error(errorMessage)), ms);
54
+ });
55
+ return Promise.race([promise, timeoutPromise]).finally(() => clearTimeout(timeoutId));
56
+ }
57
+ /**
58
+ * Discovers capabilities by briefly running the server and saves them to mcp-manifest.json.
59
+ */
60
+ async function generateMcpManifest(pkgPath, manifest, throwOnError = false) {
61
+ const cache = { ...manifest, discovered: { tools: {}, prompts: {}, resources: {}, resourceTemplates: {} } };
62
+ // Add auto-detected prompts to discovered
63
+ if (manifest.prompts) {
64
+ cache.discovered.prompts["local"] = manifest.prompts.map(p => ({
65
+ name: p.name,
66
+ description: p.description
67
+ }));
68
+ }
69
+ // Add instructions to discovered resources
70
+ if (manifest.instructions) {
71
+ cache.discovered.resources["local"] = manifest.instructions.map(i => ({
72
+ name: i.name,
73
+ uri: `file://${path_1.default.join(pkgPath, i.file)}`,
74
+ description: `Instruction file: ${i.file}`
75
+ }));
76
+ }
77
+ if (manifest.servers) {
78
+ for (const server of manifest.servers) {
79
+ logger_1.Logger.info(`Discovering capabilities for server: ${server.name}...`);
80
+ const transport = new stdio_js_1.StdioClientTransport({
81
+ command: server.command,
82
+ args: server.args,
83
+ env: server.env,
84
+ cwd: pkgPath,
85
+ stderr: 'inherit'
86
+ });
87
+ const client = new index_js_1.Client({ name: "agentbrew-discovery", version: "1.0.0" }, { capabilities: {} });
88
+ try {
89
+ await withTimeout(client.connect(transport), 10000, "Connection timeout of 10s exceeded");
90
+ let toolsList = [];
91
+ let promptsList = [];
92
+ let resourcesList = [];
93
+ let resourceTemplatesList = [];
94
+ try {
95
+ const result = await client.listTools();
96
+ toolsList = result.tools || [];
97
+ }
98
+ catch (e) {
99
+ logger_1.Logger.info(`Server ${server.name} does not support tools discovery: ${e.message}`);
100
+ }
101
+ try {
102
+ const result = await client.listPrompts();
103
+ promptsList = result.prompts || [];
104
+ }
105
+ catch (e) {
106
+ logger_1.Logger.info(`Server ${server.name} does not support prompts discovery: ${e.message}`);
107
+ }
108
+ try {
109
+ const result = await client.listResources();
110
+ resourcesList = result.resources || [];
111
+ }
112
+ catch (e) {
113
+ logger_1.Logger.info(`Server ${server.name} does not support resources discovery: ${e.message}`);
114
+ }
115
+ try {
116
+ const result = await client.listResourceTemplates();
117
+ resourceTemplatesList = result.resourceTemplates || [];
118
+ }
119
+ catch (e) {
120
+ logger_1.Logger.info(`Server ${server.name} does not support resource templates discovery: ${e.message}`);
121
+ }
122
+ if (cache.discovered) {
123
+ cache.discovered.tools[server.name] = toolsList;
124
+ cache.discovered.prompts[server.name] = promptsList;
125
+ cache.discovered.resources[server.name] = resourcesList;
126
+ cache.discovered.resourceTemplates = cache.discovered.resourceTemplates || {};
127
+ cache.discovered.resourceTemplates[server.name] = resourceTemplatesList;
128
+ }
129
+ await client.close();
130
+ }
131
+ catch (e) {
132
+ logger_1.Logger.error(`Failed to connect or discover capabilities for ${server.name}: ${e.message}`);
133
+ try {
134
+ await transport.close();
135
+ }
136
+ catch (closeErr) { }
137
+ if (throwOnError) {
138
+ throw e;
139
+ }
140
+ }
141
+ }
142
+ }
143
+ const cachePath = path_1.default.join(pkgPath, 'mcp-manifest.json');
144
+ fs_1.default.writeFileSync(cachePath, JSON.stringify(cache, null, 2), 'utf-8');
145
+ return cache;
146
+ }
147
+ function discoverPackages(includeDisabled = false) {
148
+ const packagesDir = (0, config_1.getPackagesDir)();
149
+ if (!fs_1.default.existsSync(packagesDir))
150
+ return [];
151
+ const packages = [];
152
+ const rootDirs = fs_1.default.readdirSync(packagesDir);
153
+ for (const rootDir of rootDirs) {
154
+ const rootPath = path_1.default.join(packagesDir, rootDir);
155
+ try {
156
+ if (!fs_1.default.statSync(rootPath).isDirectory())
157
+ continue;
158
+ }
159
+ catch (e) {
160
+ logger_1.Logger.error(`statSync failed for ${rootPath}:`, e);
161
+ continue;
162
+ }
163
+ // Recursive search up to 2 levels
164
+ const manifests = findManifests(rootPath, 2);
165
+ for (const manifestInfo of manifests) {
166
+ const subPath = path_1.default.relative(rootPath, manifestInfo.path);
167
+ const isEnabled = (0, state_1.isPackageEnabled)(rootDir, manifestInfo.manifest.name);
168
+ if (isEnabled || includeDisabled) {
169
+ packages.push({
170
+ packageName: rootDir,
171
+ subPath: subPath,
172
+ path: manifestInfo.path,
173
+ manifest: manifestInfo.manifest,
174
+ isEnabled
175
+ });
176
+ }
177
+ }
178
+ }
179
+ return packages;
180
+ }
181
+ function findManifests(currentPath, depth) {
182
+ const results = [];
183
+ let manifest = null;
184
+ let foundCache = false;
185
+ // Check for cached manifest first
186
+ const cachePath = path_1.default.join(currentPath, 'mcp-manifest.json');
187
+ if (fs_1.default.existsSync(cachePath)) {
188
+ try {
189
+ manifest = JSON.parse(fs_1.default.readFileSync(cachePath, 'utf-8'));
190
+ foundCache = true;
191
+ }
192
+ catch (e) {
193
+ logger_1.Logger.error(`Failed to parse cache ${cachePath}:`, e);
194
+ }
195
+ }
196
+ if (!manifest) {
197
+ const manifestPath = path_1.default.join(currentPath, 'agentbrew.toml');
198
+ if (fs_1.default.existsSync(manifestPath)) {
199
+ try {
200
+ const content = fs_1.default.readFileSync(manifestPath, 'utf-8');
201
+ manifest = toml.parse(content);
202
+ }
203
+ catch (e) {
204
+ logger_1.Logger.error(`Failed to parse ${manifestPath}:`, e);
205
+ }
206
+ }
207
+ }
208
+ const autoManifest = autoDetectManifest(currentPath);
209
+ if (manifest) {
210
+ // Merge auto-detected into explicit manifest or cache
211
+ // Explicit/Cache takes precedence for same-named items
212
+ if (autoManifest.servers) {
213
+ manifest.servers = manifest.servers || [];
214
+ for (const autoSrv of autoManifest.servers) {
215
+ if (!manifest.servers.find(s => s.name === autoSrv.name)) {
216
+ manifest.servers.push(autoSrv);
217
+ }
218
+ }
219
+ }
220
+ if (autoManifest.prompts) {
221
+ manifest.prompts = manifest.prompts || [];
222
+ for (const autoPrompt of autoManifest.prompts) {
223
+ if (!manifest.prompts.find(p => p.name === autoPrompt.name)) {
224
+ manifest.prompts.push(autoPrompt);
225
+ }
226
+ }
227
+ }
228
+ if (autoManifest.instructions) {
229
+ manifest.instructions = manifest.instructions || [];
230
+ for (const autoInstr of autoManifest.instructions) {
231
+ if (!manifest.instructions.find(i => i.name === autoInstr.name)) {
232
+ manifest.instructions.push(autoInstr);
233
+ }
234
+ }
235
+ }
236
+ results.push({ path: currentPath, manifest });
237
+ }
238
+ else {
239
+ // Only include auto-detected if it found something useful
240
+ if (fs_1.default.existsSync(path_1.default.join(currentPath, 'package.json')) ||
241
+ fs_1.default.existsSync(path_1.default.join(currentPath, 'requirements.txt')) ||
242
+ fs_1.default.existsSync(path_1.default.join(currentPath, 'pyproject.toml')) ||
243
+ fs_1.default.existsSync(path_1.default.join(currentPath, 'poetry.lock')) ||
244
+ fs_1.default.existsSync(path_1.default.join(currentPath, 'uv.lock')) ||
245
+ (autoManifest.prompts && autoManifest.prompts.length > 0) ||
246
+ (autoManifest.instructions && autoManifest.instructions.length > 0)) {
247
+ results.push({ path: currentPath, manifest: autoManifest });
248
+ }
249
+ }
250
+ // Continue recursion even if we found a manifest at this level,
251
+ // to find skills in subdirectories.
252
+ if (depth > 0) {
253
+ try {
254
+ const files = fs_1.default.readdirSync(currentPath);
255
+ const subdirs = files.filter(f => {
256
+ const fullPath = path_1.default.join(currentPath, f);
257
+ try {
258
+ return fs_1.default.statSync(fullPath).isDirectory() && f !== 'node_modules' && !f.startsWith('.');
259
+ }
260
+ catch (e) {
261
+ return false;
262
+ }
263
+ });
264
+ for (const subdir of subdirs) {
265
+ results.push(...findManifests(path_1.default.join(currentPath, subdir), depth - 1));
266
+ }
267
+ }
268
+ catch (e) {
269
+ // Likely not a directory or permission error
270
+ }
271
+ }
272
+ return results;
273
+ }
274
+ function autoDetectManifest(pkgPath) {
275
+ const pkgName = path_1.default.basename(pkgPath);
276
+ const manifest = {
277
+ name: pkgName,
278
+ version: '0.0.0-auto',
279
+ };
280
+ const packageJsonPath = path_1.default.join(pkgPath, 'package.json');
281
+ if (fs_1.default.existsSync(packageJsonPath)) {
282
+ try {
283
+ const pkgJson = JSON.parse(fs_1.default.readFileSync(packageJsonPath, 'utf-8'));
284
+ manifest.name = pkgJson.name || pkgName;
285
+ manifest.version = pkgJson.version || '0.0.0-auto';
286
+ manifest.description = pkgJson.description || "";
287
+ const hasMcpSdk = pkgJson.dependencies?.['@modelcontextprotocol/sdk'] ||
288
+ pkgJson.devDependencies?.['@modelcontextprotocol/sdk'];
289
+ // Improved auto-detection for bin entries
290
+ if (pkgJson.bin) {
291
+ const binName = typeof pkgJson.bin === 'string' ? manifest.name : Object.keys(pkgJson.bin)[0];
292
+ const binPath = typeof pkgJson.bin === 'string' ? pkgJson.bin : pkgJson.bin[binName];
293
+ manifest.servers = [{
294
+ name: binName,
295
+ command: 'node',
296
+ args: [binPath],
297
+ description: `Node.js server from ${binName}`
298
+ }];
299
+ }
300
+ else if (hasMcpSdk) {
301
+ // If it has MCP SDK but no bin, try common patterns
302
+ const commonNodeEntryPoints = ['dist/index.js', 'dist/server.js', 'index.js', 'server.js'];
303
+ const entryPoint = commonNodeEntryPoints.find(f => fs_1.default.existsSync(path_1.default.join(pkgPath, f)));
304
+ if (entryPoint) {
305
+ manifest.servers = [{
306
+ name: manifest.name,
307
+ command: 'node',
308
+ args: [entryPoint],
309
+ description: `Detected Node.js MCP server`
310
+ }];
311
+ }
312
+ else if (pkgJson.scripts?.start) {
313
+ manifest.servers = [{
314
+ name: manifest.name,
315
+ command: 'npm',
316
+ args: ['start'],
317
+ description: `npm start server for ${manifest.name}`
318
+ }];
319
+ }
320
+ }
321
+ }
322
+ catch (e) {
323
+ logger_1.Logger.error(`Failed to parse ${packageJsonPath}:`, e);
324
+ }
325
+ }
326
+ // Detect Python projects
327
+ const requirementsPath = path_1.default.join(pkgPath, 'requirements.txt');
328
+ const pyprojectPath = path_1.default.join(pkgPath, 'pyproject.toml');
329
+ const poetryLockPath = path_1.default.join(pkgPath, 'poetry.lock');
330
+ if (fs_1.default.existsSync(requirementsPath) || fs_1.default.existsSync(pyprojectPath)) {
331
+ let isMcp = false;
332
+ if (fs_1.default.existsSync(requirementsPath)) {
333
+ const reqs = fs_1.default.readFileSync(requirementsPath, 'utf-8');
334
+ if (reqs.includes('mcp'))
335
+ isMcp = true;
336
+ }
337
+ if (fs_1.default.existsSync(pyprojectPath)) {
338
+ const pyproj = fs_1.default.readFileSync(pyprojectPath, 'utf-8');
339
+ if (pyproj.includes('mcp'))
340
+ isMcp = true;
341
+ }
342
+ if (isMcp) {
343
+ manifest.servers = manifest.servers || [];
344
+ // Check for local .venv or Poetry
345
+ let pythonCmd = 'python3';
346
+ if (fs_1.default.existsSync(poetryLockPath)) {
347
+ pythonCmd = 'poetry run python';
348
+ }
349
+ else {
350
+ const venvDir = '.venv';
351
+ const venvPath = path_1.default.join(pkgPath, venvDir);
352
+ if (fs_1.default.existsSync(venvPath)) {
353
+ const venvPython = process.platform === 'win32'
354
+ ? path_1.default.join(venvPath, 'Scripts', 'python.exe')
355
+ : path_1.default.join(venvPath, 'bin', 'python3');
356
+ if (fs_1.default.existsSync(venvPython)) {
357
+ pythonCmd = venvPython;
358
+ }
359
+ }
360
+ }
361
+ // Improved entry point detection
362
+ const commonEntryPoints = ['src/mcp_server.py', 'src/server.py', 'mcp_server.py', 'server.py', 'app.py', 'main.py'];
363
+ const entryPoint = commonEntryPoints.find(f => fs_1.default.existsSync(path_1.default.join(pkgPath, f))) || 'main.py';
364
+ manifest.servers.push({
365
+ name: `${manifest.name}-python`,
366
+ command: pythonCmd,
367
+ args: [entryPoint],
368
+ description: `Python server from ${entryPoint}`
369
+ });
370
+ }
371
+ }
372
+ // Detect instruction files (GEMINI.md, CLAUDE.md)
373
+ const instructionFiles = ['GEMINI.md', 'CLAUDE.md'];
374
+ for (const file of instructionFiles) {
375
+ const filePath = path_1.default.join(pkgPath, file);
376
+ if (fs_1.default.existsSync(filePath)) {
377
+ manifest.instructions = manifest.instructions || [];
378
+ manifest.instructions.push({
379
+ name: path_1.default.parse(file).name,
380
+ file: file
381
+ });
382
+ }
383
+ }
384
+ // Detect Markdown skills (only in skills/, prompts/, or migrated-skills/ directories)
385
+ const dirName = path_1.default.basename(pkgPath).toLowerCase();
386
+ const isSkillDir = dirName === 'skills' || dirName === 'prompts' || dirName === 'migrated-skills';
387
+ if (isSkillDir) {
388
+ try {
389
+ const detectSkillsRecursive = (dir, baseDir) => {
390
+ const files = fs_1.default.readdirSync(dir);
391
+ for (const file of files) {
392
+ const fullPath = path_1.default.join(dir, file);
393
+ const relativePath = path_1.default.relative(baseDir, fullPath);
394
+ if (fs_1.default.statSync(fullPath).isDirectory()) {
395
+ if (file !== 'node_modules' && !file.startsWith('.')) {
396
+ detectSkillsRecursive(fullPath, baseDir);
397
+ }
398
+ }
399
+ else if (file.endsWith('.md')) {
400
+ if (!instructionFiles.includes(file.toUpperCase()) && file.toLowerCase() !== 'readme.md') {
401
+ let description = `Markdown skill: ${relativePath}`;
402
+ try {
403
+ const firstLines = fs_1.default.readFileSync(fullPath, 'utf-8').split('\n');
404
+ const firstNonEmpty = firstLines.find(l => l.trim().length > 0);
405
+ if (firstNonEmpty) {
406
+ description = firstNonEmpty.replace(/^#+\s*/, '').trim();
407
+ }
408
+ }
409
+ catch (e) { }
410
+ manifest.prompts = manifest.prompts || [];
411
+ let skillName = path_1.default.parse(file).name;
412
+ if (skillName.toUpperCase() === 'SKILL' && dir !== pkgPath) {
413
+ skillName = path_1.default.basename(dir);
414
+ }
415
+ manifest.prompts.push({
416
+ name: skillName,
417
+ file: relativePath,
418
+ description: description
419
+ });
420
+ }
421
+ }
422
+ }
423
+ };
424
+ detectSkillsRecursive(pkgPath, pkgPath);
425
+ }
426
+ catch (e) {
427
+ // Ignore
428
+ }
429
+ }
430
+ return manifest;
431
+ }
432
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
2
+ export declare enum ClientStatus {
3
+ DISCONNECTED = "DISCONNECTED",
4
+ CONNECTING = "CONNECTING",
5
+ CONNECTED = "CONNECTED",
6
+ RETRYING = "RETRYING",
7
+ FAILED = "FAILED"
8
+ }
9
+ export declare class ManagedClient {
10
+ prefix: string;
11
+ private pkgPath;
12
+ private serverConfig;
13
+ private client;
14
+ private transport;
15
+ private status;
16
+ private retryCount;
17
+ private lastError;
18
+ private maxRetries;
19
+ private connectingPromise;
20
+ constructor(prefix: string, pkgPath: string, serverConfig: {
21
+ command: string;
22
+ args: string[];
23
+ env?: Record<string, string>;
24
+ cwd?: string;
25
+ });
26
+ private spawnClient;
27
+ getClient(): Promise<Client>;
28
+ private handleCrash;
29
+ stop(): Promise<void>;
30
+ isConnected(): boolean;
31
+ }
32
+ export declare class Router {
33
+ private managedClients;
34
+ private localPrompts;
35
+ private mcpServer;
36
+ private dispatcher;
37
+ private cachedTools;
38
+ private cachedPrompts;
39
+ private cachedResources;
40
+ private cachedResourceTemplates;
41
+ constructor();
42
+ private setupMcpHandlers;
43
+ start(): Promise<boolean>;
44
+ private registerPackage;
45
+ stop(): Promise<void>;
46
+ }
47
+ export declare function startRouter(): Promise<Router>;