agentinit 1.6.0 → 1.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 +40 -0
- package/README.md +220 -114
- package/dist/agents/Agent.d.ts +44 -0
- package/dist/agents/Agent.d.ts.map +1 -1
- package/dist/agents/Agent.js +111 -22
- package/dist/agents/Agent.js.map +1 -1
- package/dist/agents/AiderAgent.d.ts +9 -0
- package/dist/agents/AiderAgent.d.ts.map +1 -0
- package/dist/agents/AiderAgent.js +135 -0
- package/dist/agents/AiderAgent.js.map +1 -0
- package/dist/agents/ClaudeAgent.d.ts +4 -0
- package/dist/agents/ClaudeAgent.d.ts.map +1 -1
- package/dist/agents/ClaudeAgent.js +33 -18
- package/dist/agents/ClaudeAgent.js.map +1 -1
- package/dist/agents/ClaudeDesktopAgent.d.ts +5 -0
- package/dist/agents/ClaudeDesktopAgent.d.ts.map +1 -1
- package/dist/agents/ClaudeDesktopAgent.js +31 -1
- package/dist/agents/ClaudeDesktopAgent.js.map +1 -1
- package/dist/agents/ClineAgent.d.ts +8 -0
- package/dist/agents/ClineAgent.d.ts.map +1 -0
- package/dist/agents/ClineAgent.js +42 -0
- package/dist/agents/ClineAgent.js.map +1 -0
- package/dist/agents/CodexCliAgent.d.ts +4 -0
- package/dist/agents/CodexCliAgent.d.ts.map +1 -1
- package/dist/agents/CodexCliAgent.js +38 -8
- package/dist/agents/CodexCliAgent.js.map +1 -1
- package/dist/agents/CopilotAgent.d.ts +9 -0
- package/dist/agents/CopilotAgent.d.ts.map +1 -0
- package/dist/agents/CopilotAgent.js +131 -0
- package/dist/agents/CopilotAgent.js.map +1 -0
- package/dist/agents/CursorAgent.d.ts +4 -4
- package/dist/agents/CursorAgent.d.ts.map +1 -1
- package/dist/agents/CursorAgent.js +32 -43
- package/dist/agents/CursorAgent.js.map +1 -1
- package/dist/agents/DroidAgent.d.ts +5 -0
- package/dist/agents/DroidAgent.d.ts.map +1 -1
- package/dist/agents/DroidAgent.js +37 -18
- package/dist/agents/DroidAgent.js.map +1 -1
- package/dist/agents/GeminiCliAgent.d.ts +4 -0
- package/dist/agents/GeminiCliAgent.d.ts.map +1 -1
- package/dist/agents/GeminiCliAgent.js +37 -8
- package/dist/agents/GeminiCliAgent.js.map +1 -1
- package/dist/agents/MarkdownRulesAgent.d.ts +13 -0
- package/dist/agents/MarkdownRulesAgent.d.ts.map +1 -0
- package/dist/agents/MarkdownRulesAgent.js +53 -0
- package/dist/agents/MarkdownRulesAgent.js.map +1 -0
- package/dist/agents/RooCodeAgent.d.ts +9 -0
- package/dist/agents/RooCodeAgent.d.ts.map +1 -0
- package/dist/agents/RooCodeAgent.js +131 -0
- package/dist/agents/RooCodeAgent.js.map +1 -0
- package/dist/agents/WindsurfAgent.d.ts +9 -0
- package/dist/agents/WindsurfAgent.d.ts.map +1 -0
- package/dist/agents/WindsurfAgent.js +127 -0
- package/dist/agents/WindsurfAgent.js.map +1 -0
- package/dist/agents/ZedAgent.d.ts +9 -0
- package/dist/agents/ZedAgent.d.ts.map +1 -0
- package/dist/agents/ZedAgent.js +127 -0
- package/dist/agents/ZedAgent.js.map +1 -0
- package/dist/cli.js +29992 -11107
- package/dist/cli.js.map +1 -1
- package/dist/commands/apply.d.ts +10 -0
- package/dist/commands/apply.d.ts.map +1 -1
- package/dist/commands/apply.js +136 -5
- package/dist/commands/apply.js.map +1 -1
- package/dist/commands/detect.d.ts.map +1 -1
- package/dist/commands/detect.js +25 -0
- package/dist/commands/detect.js.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/mcp.d.ts +2 -7
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +541 -110
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/plugins.d.ts +3 -0
- package/dist/commands/plugins.d.ts.map +1 -0
- package/dist/commands/plugins.js +309 -0
- package/dist/commands/plugins.js.map +1 -0
- package/dist/commands/revert.d.ts +7 -0
- package/dist/commands/revert.d.ts.map +1 -0
- package/dist/commands/revert.js +48 -0
- package/dist/commands/revert.js.map +1 -0
- package/dist/commands/rules.d.ts +3 -0
- package/dist/commands/rules.d.ts.map +1 -0
- package/dist/commands/rules.js +354 -0
- package/dist/commands/rules.js.map +1 -0
- package/dist/commands/skills.d.ts +3 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +179 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/sync.d.ts +1 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +18 -1
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/verifyMcp.d.ts.map +1 -1
- package/dist/commands/verifyMcp.js +27 -5
- package/dist/commands/verifyMcp.js.map +1 -1
- package/dist/constants/index.d.ts +1 -1
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +1 -1
- package/dist/constants/index.js.map +1 -1
- package/dist/constants/mcp.d.ts +1 -0
- package/dist/constants/mcp.d.ts.map +1 -1
- package/dist/constants/mcp.js +2 -0
- package/dist/constants/mcp.js.map +1 -1
- package/dist/core/agentDetector.d.ts.map +1 -1
- package/dist/core/agentDetector.js +8 -2
- package/dist/core/agentDetector.js.map +1 -1
- package/dist/core/agentManager.d.ts.map +1 -1
- package/dist/core/agentManager.js +12 -0
- package/dist/core/agentManager.js.map +1 -1
- package/dist/core/gitignoreManager.d.ts +8 -0
- package/dist/core/gitignoreManager.d.ts.map +1 -0
- package/dist/core/gitignoreManager.js +114 -0
- package/dist/core/gitignoreManager.js.map +1 -0
- package/dist/core/managedState.d.ts +42 -0
- package/dist/core/managedState.d.ts.map +1 -0
- package/dist/core/managedState.js +194 -0
- package/dist/core/managedState.js.map +1 -0
- package/dist/core/mcpClient.d.ts +124 -6
- package/dist/core/mcpClient.d.ts.map +1 -1
- package/dist/core/mcpClient.js +385 -39
- package/dist/core/mcpClient.js.map +1 -1
- package/dist/core/pluginManager.d.ts +134 -0
- package/dist/core/pluginManager.d.ts.map +1 -0
- package/dist/core/pluginManager.js +845 -0
- package/dist/core/pluginManager.js.map +1 -0
- package/dist/core/projectSkills.d.ts +19 -0
- package/dist/core/projectSkills.d.ts.map +1 -0
- package/dist/core/projectSkills.js +105 -0
- package/dist/core/projectSkills.js.map +1 -0
- package/dist/core/propagator.d.ts +8 -1
- package/dist/core/propagator.d.ts.map +1 -1
- package/dist/core/propagator.js +179 -36
- package/dist/core/propagator.js.map +1 -1
- package/dist/core/rulesApplicator.d.ts +0 -4
- package/dist/core/rulesApplicator.d.ts.map +1 -1
- package/dist/core/rulesApplicator.js +8 -39
- package/dist/core/rulesApplicator.js.map +1 -1
- package/dist/core/rulesTemplateLoader.js +2 -2
- package/dist/core/rulesTemplateLoader.js.map +1 -1
- package/dist/core/skillsManager.d.ts +61 -0
- package/dist/core/skillsManager.d.ts.map +1 -0
- package/dist/core/skillsManager.js +407 -0
- package/dist/core/skillsManager.js.map +1 -0
- package/dist/lib/utils/index.d.ts +3 -1
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/index.js +4 -1
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/types/index.d.ts +24 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/jsonSchema.d.ts +31 -0
- package/dist/types/jsonSchema.d.ts.map +1 -0
- package/dist/types/jsonSchema.js +6 -0
- package/dist/types/jsonSchema.js.map +1 -0
- package/dist/types/plugins.d.ts +161 -0
- package/dist/types/plugins.d.ts.map +1 -0
- package/dist/types/plugins.js +2 -0
- package/dist/types/plugins.js.map +1 -0
- package/dist/types/skills.d.ts +50 -0
- package/dist/types/skills.d.ts.map +1 -0
- package/dist/types/skills.js +2 -0
- package/dist/types/skills.js.map +1 -0
- package/dist/utils/packageVersion.d.ts +105 -0
- package/dist/utils/packageVersion.d.ts.map +1 -0
- package/dist/utils/packageVersion.js +219 -0
- package/dist/utils/packageVersion.js.map +1 -0
- package/package.json +7 -2
- package/dist/agentinit-1.6.0.tgz +0 -0
- package/dist/registry/mcpRegistry.d.ts +0 -12
- package/dist/registry/mcpRegistry.d.ts.map +0 -1
- package/dist/registry/mcpRegistry.js +0 -114
- package/dist/registry/mcpRegistry.js.map +0 -1
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Package Version Utilities
|
|
3
|
+
*
|
|
4
|
+
* Utilities for extracting package names and versions from command strings
|
|
5
|
+
* and fetching version information from package registries (npm, PyPI).
|
|
6
|
+
*/
|
|
7
|
+
import { logger } from './logger.js';
|
|
8
|
+
/**
|
|
9
|
+
* Cache for registry API responses to avoid repeated requests
|
|
10
|
+
* Key: package name, Value: { version: string, timestamp: number }
|
|
11
|
+
*/
|
|
12
|
+
const versionCache = new Map();
|
|
13
|
+
const CACHE_TTL_MS = 5 * 60 * 1000; // 5 minutes
|
|
14
|
+
/**
|
|
15
|
+
* Extract explicit version from a package specifier
|
|
16
|
+
*
|
|
17
|
+
* @param packageSpec - Package specification (e.g., "chrome-devtools-mcp@0.7.0")
|
|
18
|
+
* @returns Version string or null if not found
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* extractExplicitVersion("chrome-devtools-mcp@0.7.0") // "0.7.0"
|
|
23
|
+
* extractExplicitVersion("@org/package@1.2.3") // "1.2.3"
|
|
24
|
+
* extractExplicitVersion("package@latest") // null (not explicit)
|
|
25
|
+
* extractExplicitVersion("package") // null (no version)
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export function extractExplicitVersion(packageSpec) {
|
|
29
|
+
// Match semantic version patterns: @1.2.3, @1.2.3-beta.1, etc.
|
|
30
|
+
const versionMatch = packageSpec.match(/@([\d]+\.[\d]+\.[\d]+(?:[-+].+)?$)/);
|
|
31
|
+
if (versionMatch && versionMatch[1]) {
|
|
32
|
+
logger.debug(`[extractExplicitVersion] Found explicit version: ${versionMatch[1]} in "${packageSpec}"`);
|
|
33
|
+
return versionMatch[1];
|
|
34
|
+
}
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Extract package name from a package specifier
|
|
39
|
+
*
|
|
40
|
+
* Strips version tags and handles scoped packages.
|
|
41
|
+
*
|
|
42
|
+
* @param packageSpec - Package specification with or without version
|
|
43
|
+
* @returns Clean package name
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* extractPackageName("chrome-devtools-mcp@latest") // "chrome-devtools-mcp"
|
|
48
|
+
* extractPackageName("@modelcontextprotocol/server@1.0.0") // "@modelcontextprotocol/server"
|
|
49
|
+
* extractPackageName("package") // "package"
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export function extractPackageName(packageSpec) {
|
|
53
|
+
// Remove version specifiers (@1.2.3, @latest, @next, etc.)
|
|
54
|
+
return packageSpec
|
|
55
|
+
.replace(/@[\d]+\.[\d]+\.[\d]+(?:[-+].+)?$/, '') // Remove semantic versions
|
|
56
|
+
.replace(/@latest$/, '') // Remove @latest
|
|
57
|
+
.replace(/@next$/, '') // Remove @next
|
|
58
|
+
.replace(/@canary$/, ''); // Remove @canary
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Extract package information from a command and its arguments
|
|
62
|
+
*
|
|
63
|
+
* Handles various package managers and command formats:
|
|
64
|
+
* - npx, bunx, pnpm dlx
|
|
65
|
+
* - With or without -y flag
|
|
66
|
+
* - Scoped and unscoped packages
|
|
67
|
+
* - Version specifiers (@version, @latest)
|
|
68
|
+
*
|
|
69
|
+
* @param command - Command being executed (e.g., "npx", "bunx")
|
|
70
|
+
* @param args - Command arguments array
|
|
71
|
+
* @returns Package name/specifier or null if not found
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* extractPackageFromCommand("npx", ["-y", "chrome-devtools-mcp@latest"])
|
|
76
|
+
* // "chrome-devtools-mcp@latest"
|
|
77
|
+
*
|
|
78
|
+
* extractPackageFromCommand("bunx", ["@modelcontextprotocol/server-everything"])
|
|
79
|
+
* // "@modelcontextprotocol/server-everything"
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export function extractPackageFromCommand(command, args) {
|
|
83
|
+
if (!command || !args || args.length === 0) {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
// Only handle package manager commands
|
|
87
|
+
const packageManagers = ['npx', 'bunx', 'pnpm', 'yarn'];
|
|
88
|
+
if (!packageManagers.includes(command)) {
|
|
89
|
+
logger.debug(`[extractPackageFromCommand] Not a package manager command: ${command}`);
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
// Skip flags and find the first package-like argument
|
|
93
|
+
for (const arg of args) {
|
|
94
|
+
// Skip flags
|
|
95
|
+
if (arg.startsWith('-')) {
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
// Skip special pnpm/yarn subcommands
|
|
99
|
+
if (arg === 'dlx' || arg === 'exec') {
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
// Check if looks like a package name
|
|
103
|
+
// Scoped: @scope/package or @scope/package@version
|
|
104
|
+
// Unscoped: package or package@version
|
|
105
|
+
// Allow letters, numbers, hyphens, and underscores
|
|
106
|
+
const packagePattern = /^(@[a-z0-9-]+\/)?[a-z0-9_-]+(@[\w.-]+)?$/i;
|
|
107
|
+
if (packagePattern.test(arg)) {
|
|
108
|
+
logger.debug(`[extractPackageFromCommand] Found package: ${arg}`);
|
|
109
|
+
return arg;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
logger.debug(`[extractPackageFromCommand] No package found in args: ${args.join(' ')}`);
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Fetch the latest version of an npm package from the registry
|
|
117
|
+
*
|
|
118
|
+
* Uses in-memory caching to avoid repeated API calls. Handles network
|
|
119
|
+
* errors and invalid package names gracefully.
|
|
120
|
+
*
|
|
121
|
+
* @param packageSpec - Package name or specification
|
|
122
|
+
* @param options - Fetch options
|
|
123
|
+
* @param options.timeout - Request timeout in milliseconds (default: 5000)
|
|
124
|
+
* @param options.useCache - Whether to use cached results (default: true)
|
|
125
|
+
* @returns Version string or null if not found
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```typescript
|
|
129
|
+
* const version = await fetchLatestVersion("chrome-devtools-mcp");
|
|
130
|
+
* // "0.7.0"
|
|
131
|
+
*
|
|
132
|
+
* const version = await fetchLatestVersion("@modelcontextprotocol/server-everything");
|
|
133
|
+
* // "0.6.2"
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
export async function fetchLatestVersion(packageSpec, options = {}) {
|
|
137
|
+
const { timeout = 5000, useCache = true } = options;
|
|
138
|
+
// First, check for explicit version in the package spec
|
|
139
|
+
const explicitVersion = extractExplicitVersion(packageSpec);
|
|
140
|
+
if (explicitVersion) {
|
|
141
|
+
return explicitVersion;
|
|
142
|
+
}
|
|
143
|
+
// Clean the package name (remove @latest, @next, etc.)
|
|
144
|
+
const cleanPackageName = extractPackageName(packageSpec);
|
|
145
|
+
// Check cache first
|
|
146
|
+
if (useCache) {
|
|
147
|
+
const cached = versionCache.get(cleanPackageName);
|
|
148
|
+
if (cached && Date.now() - cached.timestamp < CACHE_TTL_MS) {
|
|
149
|
+
logger.debug(`[fetchLatestVersion] Cache hit for: ${cleanPackageName} -> ${cached.version}`);
|
|
150
|
+
return cached.version;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
try {
|
|
154
|
+
logger.debug(`[fetchLatestVersion] Fetching from npm registry: ${cleanPackageName}`);
|
|
155
|
+
// Create abort controller for timeout
|
|
156
|
+
const controller = new AbortController();
|
|
157
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
158
|
+
const url = `https://registry.npmjs.org/${cleanPackageName}/latest`;
|
|
159
|
+
const response = await fetch(url, {
|
|
160
|
+
headers: { Accept: 'application/json' },
|
|
161
|
+
signal: controller.signal,
|
|
162
|
+
});
|
|
163
|
+
clearTimeout(timeoutId);
|
|
164
|
+
if (!response.ok) {
|
|
165
|
+
logger.debug(`[fetchLatestVersion] npm registry returned ${response.status} for ${cleanPackageName}`);
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
const data = await response.json();
|
|
169
|
+
if (!data.version) {
|
|
170
|
+
logger.debug(`[fetchLatestVersion] No version field in response for ${cleanPackageName}`);
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
// Cache the result
|
|
174
|
+
versionCache.set(cleanPackageName, {
|
|
175
|
+
version: data.version,
|
|
176
|
+
timestamp: Date.now(),
|
|
177
|
+
});
|
|
178
|
+
logger.debug(`[fetchLatestVersion] Success: ${cleanPackageName}@${data.version}`);
|
|
179
|
+
return data.version;
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
if (error instanceof Error) {
|
|
183
|
+
if (error.name === 'AbortError') {
|
|
184
|
+
logger.debug(`[fetchLatestVersion] Timeout fetching version for ${cleanPackageName}`);
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
logger.debug(`[fetchLatestVersion] Error fetching version: ${error.message}`);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Clear the version cache
|
|
195
|
+
*
|
|
196
|
+
* Useful for testing or when you want to force fresh registry lookups.
|
|
197
|
+
*/
|
|
198
|
+
export function clearVersionCache() {
|
|
199
|
+
versionCache.clear();
|
|
200
|
+
logger.debug('[clearVersionCache] Cache cleared');
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Get cache statistics
|
|
204
|
+
*
|
|
205
|
+
* @returns Object with cache size and entry details
|
|
206
|
+
*/
|
|
207
|
+
export function getVersionCacheStats() {
|
|
208
|
+
const now = Date.now();
|
|
209
|
+
const entries = Array.from(versionCache.entries()).map(([pkg, data]) => ({
|
|
210
|
+
package: pkg,
|
|
211
|
+
version: data.version,
|
|
212
|
+
age: now - data.timestamp,
|
|
213
|
+
}));
|
|
214
|
+
return {
|
|
215
|
+
size: versionCache.size,
|
|
216
|
+
entries,
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=packageVersion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../../src/utils/packageVersion.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentinit",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"description": "CLI tool and library for managing AI coding agents and verifying MCP servers",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/agentinit/agentinit.git"
|
|
8
|
+
},
|
|
5
9
|
"main": "dist/index.js",
|
|
6
10
|
"types": "dist/index.d.ts",
|
|
7
11
|
"type": "module",
|
|
@@ -62,6 +66,7 @@
|
|
|
62
66
|
],
|
|
63
67
|
"dependencies": {
|
|
64
68
|
"@iarna/toml": "^2.2.5",
|
|
69
|
+
"@inquirer/prompts": "^8.3.2",
|
|
65
70
|
"@modelcontextprotocol/sdk": "^1.18.0",
|
|
66
71
|
"commander": "^12.1.0",
|
|
67
72
|
"contextcalc": "^1.3.5",
|
|
@@ -79,7 +84,7 @@
|
|
|
79
84
|
"@types/node": "^22.18.5",
|
|
80
85
|
"@types/prompts": "^2.4.9",
|
|
81
86
|
"@vitest/ui": "^3.2.4",
|
|
82
|
-
"semantic-release": "^
|
|
87
|
+
"semantic-release": "^25.0.3",
|
|
83
88
|
"typescript": "^5.6.3",
|
|
84
89
|
"vitest": "^3.2.4"
|
|
85
90
|
},
|
package/dist/agentinit-1.6.0.tgz
DELETED
|
Binary file
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { MCPItem } from '../types/index.js';
|
|
2
|
-
export declare class MCPRegistryManager {
|
|
3
|
-
private readonly registry;
|
|
4
|
-
getMCPs(): MCPItem[];
|
|
5
|
-
searchMCPs(query: string): MCPItem[];
|
|
6
|
-
getMCPsByCategory(category: string): MCPItem[];
|
|
7
|
-
getMCPsForStack(stack: string): MCPItem[];
|
|
8
|
-
getTopMCPs(limit?: number): MCPItem[];
|
|
9
|
-
getMCPByName(name: string): MCPItem | undefined;
|
|
10
|
-
getCategories(): string[];
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=mcpRegistry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcpRegistry.d.ts","sourceRoot":"","sources":["../../src/registry/mcpRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,mBAAmB,CAAC;AAE9D,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAmFvB;IAEF,OAAO,IAAI,OAAO,EAAE;IAIpB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE;IASpC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,EAAE;IAI9C,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE;IAMzC,UAAU,CAAC,KAAK,GAAE,MAAU,GAAG,OAAO,EAAE;IAMxC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAI/C,aAAa,IAAI,MAAM,EAAE;CAI1B"}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
export class MCPRegistryManager {
|
|
2
|
-
registry = {
|
|
3
|
-
mcps: [
|
|
4
|
-
{
|
|
5
|
-
name: 'playwright',
|
|
6
|
-
category: 'testing',
|
|
7
|
-
description: 'E2E testing and browser automation',
|
|
8
|
-
stackCompatibility: ['javascript', 'typescript'],
|
|
9
|
-
installCommand: 'npm install -D @playwright/test',
|
|
10
|
-
agentInstructions: 'Use Playwright for E2E testing. Run tests with `npx playwright test`. Always write comprehensive tests that cover user workflows.',
|
|
11
|
-
popularity: 9500,
|
|
12
|
-
verified: true
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
name: 'context7',
|
|
16
|
-
category: 'documentation',
|
|
17
|
-
description: 'Fetch and analyze documentation from URLs',
|
|
18
|
-
stackCompatibility: ['javascript', 'typescript', 'python', 'rust', 'go'],
|
|
19
|
-
installCommand: 'npm install -g @context7/cli',
|
|
20
|
-
agentInstructions: 'Use Context7 to fetch latest documentation. Always reference official docs when implementing features.',
|
|
21
|
-
popularity: 7200,
|
|
22
|
-
verified: true
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
name: '21st.dev',
|
|
26
|
-
category: 'ui',
|
|
27
|
-
description: 'UI component registry and design system tools',
|
|
28
|
-
stackCompatibility: ['javascript', 'typescript'],
|
|
29
|
-
installCommand: 'npm install @21st/components',
|
|
30
|
-
agentInstructions: 'Use 21st.dev components for consistent UI. Follow the design system guidelines and accessibility standards.',
|
|
31
|
-
popularity: 6800,
|
|
32
|
-
verified: true
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
name: 'sequential-thinking',
|
|
36
|
-
category: 'quality',
|
|
37
|
-
description: 'Enhanced AI reasoning and step-by-step problem solving',
|
|
38
|
-
stackCompatibility: ['javascript', 'typescript', 'python', 'rust', 'go'],
|
|
39
|
-
installCommand: 'npm install -g @sequential/thinking',
|
|
40
|
-
agentInstructions: 'Use sequential thinking for complex problems. Break down tasks into logical steps and validate each step.',
|
|
41
|
-
popularity: 8900,
|
|
42
|
-
verified: true
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
name: 'agent-warden',
|
|
46
|
-
category: 'quality',
|
|
47
|
-
description: 'Prevent common AI coding mistakes and enforce best practices',
|
|
48
|
-
stackCompatibility: ['javascript', 'typescript', 'python', 'rust', 'go'],
|
|
49
|
-
installCommand: 'npm install -g @warden/agent',
|
|
50
|
-
agentInstructions: 'Agent Warden will monitor for anti-patterns. Always follow the warnings and suggestions it provides.',
|
|
51
|
-
popularity: 5400,
|
|
52
|
-
verified: true
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
name: 'supabase-mcp',
|
|
56
|
-
category: 'database',
|
|
57
|
-
description: 'Supabase database integration and management',
|
|
58
|
-
stackCompatibility: ['javascript', 'typescript'],
|
|
59
|
-
installCommand: 'npm install @supabase/mcp',
|
|
60
|
-
agentInstructions: 'Use Supabase MCP for database operations. Always use proper RLS policies and type-safe queries.',
|
|
61
|
-
popularity: 7800,
|
|
62
|
-
verified: true
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
name: 'git-mcp',
|
|
66
|
-
category: 'version-control',
|
|
67
|
-
description: 'Enhanced Git operations and workflow automation',
|
|
68
|
-
stackCompatibility: ['javascript', 'typescript', 'python', 'rust', 'go'],
|
|
69
|
-
installCommand: 'npm install -g @git/mcp',
|
|
70
|
-
agentInstructions: 'Use Git MCP for advanced version control. Always create meaningful commits and follow branch conventions.',
|
|
71
|
-
popularity: 8200,
|
|
72
|
-
verified: true
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
name: 'docker-mcp',
|
|
76
|
-
category: 'devops',
|
|
77
|
-
description: 'Docker container management and optimization',
|
|
78
|
-
stackCompatibility: ['javascript', 'typescript', 'python', 'rust', 'go'],
|
|
79
|
-
installCommand: 'npm install -g @docker/mcp',
|
|
80
|
-
agentInstructions: 'Use Docker MCP for containerization. Always optimize for security and performance.',
|
|
81
|
-
popularity: 6900,
|
|
82
|
-
verified: true
|
|
83
|
-
}
|
|
84
|
-
]
|
|
85
|
-
};
|
|
86
|
-
getMCPs() {
|
|
87
|
-
return this.registry.mcps;
|
|
88
|
-
}
|
|
89
|
-
searchMCPs(query) {
|
|
90
|
-
const lowercaseQuery = query.toLowerCase();
|
|
91
|
-
return this.registry.mcps.filter(mcp => mcp.name.toLowerCase().includes(lowercaseQuery) ||
|
|
92
|
-
mcp.description.toLowerCase().includes(lowercaseQuery) ||
|
|
93
|
-
mcp.category.toLowerCase().includes(lowercaseQuery));
|
|
94
|
-
}
|
|
95
|
-
getMCPsByCategory(category) {
|
|
96
|
-
return this.registry.mcps.filter(mcp => mcp.category === category);
|
|
97
|
-
}
|
|
98
|
-
getMCPsForStack(stack) {
|
|
99
|
-
return this.registry.mcps.filter(mcp => mcp.stackCompatibility.includes(stack));
|
|
100
|
-
}
|
|
101
|
-
getTopMCPs(limit = 5) {
|
|
102
|
-
return this.registry.mcps
|
|
103
|
-
.sort((a, b) => b.popularity - a.popularity)
|
|
104
|
-
.slice(0, limit);
|
|
105
|
-
}
|
|
106
|
-
getMCPByName(name) {
|
|
107
|
-
return this.registry.mcps.find(mcp => mcp.name === name);
|
|
108
|
-
}
|
|
109
|
-
getCategories() {
|
|
110
|
-
const categories = new Set(this.registry.mcps.map(mcp => mcp.category));
|
|
111
|
-
return Array.from(categories).sort();
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
//# sourceMappingURL=mcpRegistry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcpRegistry.js","sourceRoot":"","sources":["../../src/registry/mcpRegistry.ts"],"names":[],"mappings":"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"}
|