@elliotding/ai-agent-mcp 0.1.25 → 0.1.26
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/package.json +4 -1
- package/.prompt-cache/cmd-cmd-client-sdk-ai-hub-generate-testcase.md +0 -101
- package/.prompt-cache/cmd-cmd-client-sdk-ai-hub-submit_zct_job.md +0 -158
- package/.prompt-cache/skill-skill-client-sdk-ai-hub-analyze-conf-status.md +0 -311
- package/.prompt-cache/skill-skill-client-sdk-ai-hub-analyze-sdk-log.md +0 -64
- package/.prompt-cache/skill-skill-client-sdk-ai-hub-analyze-zmb-log-errors.md +0 -84
- package/ai-resource-telemetry.json +0 -40
- package/dist/api/cached-client.d.ts +0 -48
- package/dist/api/cached-client.d.ts.map +0 -1
- package/dist/api/cached-client.js +0 -126
- package/dist/api/cached-client.js.map +0 -1
- package/dist/api/client.d.ts +0 -281
- package/dist/api/client.d.ts.map +0 -1
- package/dist/api/client.js +0 -371
- package/dist/api/client.js.map +0 -1
- package/dist/auth/index.d.ts +0 -8
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/auth/index.js +0 -26
- package/dist/auth/index.js.map +0 -1
- package/dist/auth/middleware.d.ts +0 -36
- package/dist/auth/middleware.d.ts.map +0 -1
- package/dist/auth/middleware.js +0 -194
- package/dist/auth/middleware.js.map +0 -1
- package/dist/auth/permissions.d.ts +0 -60
- package/dist/auth/permissions.d.ts.map +0 -1
- package/dist/auth/permissions.js +0 -262
- package/dist/auth/permissions.js.map +0 -1
- package/dist/auth/token-validator.d.ts +0 -52
- package/dist/auth/token-validator.d.ts.map +0 -1
- package/dist/auth/token-validator.js +0 -215
- package/dist/auth/token-validator.js.map +0 -1
- package/dist/cache/cache-manager.d.ts +0 -49
- package/dist/cache/cache-manager.d.ts.map +0 -1
- package/dist/cache/cache-manager.js +0 -191
- package/dist/cache/cache-manager.js.map +0 -1
- package/dist/cache/index.d.ts +0 -6
- package/dist/cache/index.d.ts.map +0 -1
- package/dist/cache/index.js +0 -12
- package/dist/cache/index.js.map +0 -1
- package/dist/cache/redis-client.d.ts +0 -45
- package/dist/cache/redis-client.d.ts.map +0 -1
- package/dist/cache/redis-client.js +0 -210
- package/dist/cache/redis-client.js.map +0 -1
- package/dist/config/constants.d.ts +0 -28
- package/dist/config/constants.d.ts.map +0 -1
- package/dist/config/constants.js +0 -31
- package/dist/config/constants.js.map +0 -1
- package/dist/config/index.d.ts +0 -71
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -190
- package/dist/config/index.js.map +0 -1
- package/dist/filesystem/manager.d.ts +0 -45
- package/dist/filesystem/manager.d.ts.map +0 -1
- package/dist/filesystem/manager.js +0 -246
- package/dist/filesystem/manager.js.map +0 -1
- package/dist/git/multi-source-manager.d.ts +0 -78
- package/dist/git/multi-source-manager.d.ts.map +0 -1
- package/dist/git/multi-source-manager.js +0 -577
- package/dist/git/multi-source-manager.js.map +0 -1
- package/dist/git/operations.d.ts +0 -27
- package/dist/git/operations.d.ts.map +0 -1
- package/dist/git/operations.js +0 -83
- package/dist/git/operations.js.map +0 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -122
- package/dist/index.js.map +0 -1
- package/dist/monitoring/health.d.ts +0 -35
- package/dist/monitoring/health.d.ts.map +0 -1
- package/dist/monitoring/health.js +0 -105
- package/dist/monitoring/health.js.map +0 -1
- package/dist/prompts/cache.d.ts +0 -69
- package/dist/prompts/cache.d.ts.map +0 -1
- package/dist/prompts/cache.js +0 -163
- package/dist/prompts/cache.js.map +0 -1
- package/dist/prompts/generator.d.ts +0 -49
- package/dist/prompts/generator.d.ts.map +0 -1
- package/dist/prompts/generator.js +0 -160
- package/dist/prompts/generator.js.map +0 -1
- package/dist/prompts/index.d.ts +0 -13
- package/dist/prompts/index.d.ts.map +0 -1
- package/dist/prompts/index.js +0 -24
- package/dist/prompts/index.js.map +0 -1
- package/dist/prompts/manager.d.ts +0 -207
- package/dist/prompts/manager.d.ts.map +0 -1
- package/dist/prompts/manager.js +0 -566
- package/dist/prompts/manager.js.map +0 -1
- package/dist/resources/index.d.ts +0 -6
- package/dist/resources/index.d.ts.map +0 -1
- package/dist/resources/index.js +0 -10
- package/dist/resources/index.js.map +0 -1
- package/dist/resources/loader.d.ts +0 -88
- package/dist/resources/loader.d.ts.map +0 -1
- package/dist/resources/loader.js +0 -492
- package/dist/resources/loader.js.map +0 -1
- package/dist/server/http.d.ts +0 -57
- package/dist/server/http.d.ts.map +0 -1
- package/dist/server/http.js +0 -435
- package/dist/server/http.js.map +0 -1
- package/dist/server.d.ts +0 -13
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -201
- package/dist/server.js.map +0 -1
- package/dist/session/manager.d.ts +0 -91
- package/dist/session/manager.d.ts.map +0 -1
- package/dist/session/manager.js +0 -251
- package/dist/session/manager.js.map +0 -1
- package/dist/telemetry/index.d.ts +0 -3
- package/dist/telemetry/index.d.ts.map +0 -1
- package/dist/telemetry/index.js +0 -7
- package/dist/telemetry/index.js.map +0 -1
- package/dist/telemetry/manager.d.ts +0 -151
- package/dist/telemetry/manager.d.ts.map +0 -1
- package/dist/telemetry/manager.js +0 -367
- package/dist/telemetry/manager.js.map +0 -1
- package/dist/tools/index.d.ts +0 -13
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -29
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/manage-subscription.d.ts +0 -47
- package/dist/tools/manage-subscription.d.ts.map +0 -1
- package/dist/tools/manage-subscription.js +0 -317
- package/dist/tools/manage-subscription.js.map +0 -1
- package/dist/tools/registry.d.ts +0 -40
- package/dist/tools/registry.d.ts.map +0 -1
- package/dist/tools/registry.js +0 -85
- package/dist/tools/registry.js.map +0 -1
- package/dist/tools/resolve-prompt-content.d.ts +0 -35
- package/dist/tools/resolve-prompt-content.d.ts.map +0 -1
- package/dist/tools/resolve-prompt-content.js +0 -99
- package/dist/tools/resolve-prompt-content.js.map +0 -1
- package/dist/tools/search-resources.d.ts +0 -35
- package/dist/tools/search-resources.d.ts.map +0 -1
- package/dist/tools/search-resources.js +0 -159
- package/dist/tools/search-resources.js.map +0 -1
- package/dist/tools/sync-resources.d.ts +0 -54
- package/dist/tools/sync-resources.d.ts.map +0 -1
- package/dist/tools/sync-resources.js +0 -735
- package/dist/tools/sync-resources.js.map +0 -1
- package/dist/tools/track-usage.d.ts +0 -63
- package/dist/tools/track-usage.d.ts.map +0 -1
- package/dist/tools/track-usage.js +0 -90
- package/dist/tools/track-usage.js.map +0 -1
- package/dist/tools/uninstall-resource.d.ts +0 -30
- package/dist/tools/uninstall-resource.d.ts.map +0 -1
- package/dist/tools/uninstall-resource.js +0 -174
- package/dist/tools/uninstall-resource.js.map +0 -1
- package/dist/tools/upload-resource.d.ts +0 -81
- package/dist/tools/upload-resource.d.ts.map +0 -1
- package/dist/tools/upload-resource.js +0 -393
- package/dist/tools/upload-resource.js.map +0 -1
- package/dist/transport/sse.d.ts +0 -29
- package/dist/transport/sse.d.ts.map +0 -1
- package/dist/transport/sse.js +0 -271
- package/dist/transport/sse.js.map +0 -1
- package/dist/types/errors.d.ts +0 -60
- package/dist/types/errors.d.ts.map +0 -1
- package/dist/types/errors.js +0 -112
- package/dist/types/errors.js.map +0 -1
- package/dist/types/index.d.ts +0 -7
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -23
- package/dist/types/index.js.map +0 -1
- package/dist/types/mcp.d.ts +0 -50
- package/dist/types/mcp.d.ts.map +0 -1
- package/dist/types/mcp.js +0 -6
- package/dist/types/mcp.js.map +0 -1
- package/dist/types/resources.d.ts +0 -109
- package/dist/types/resources.d.ts.map +0 -1
- package/dist/types/resources.js +0 -7
- package/dist/types/resources.js.map +0 -1
- package/dist/types/tools.d.ts +0 -253
- package/dist/types/tools.d.ts.map +0 -1
- package/dist/types/tools.js +0 -6
- package/dist/types/tools.js.map +0 -1
- package/dist/utils/cursor-paths.d.ts +0 -84
- package/dist/utils/cursor-paths.d.ts.map +0 -1
- package/dist/utils/cursor-paths.js +0 -166
- package/dist/utils/cursor-paths.js.map +0 -1
- package/dist/utils/log-cleaner.d.ts +0 -18
- package/dist/utils/log-cleaner.d.ts.map +0 -1
- package/dist/utils/log-cleaner.js +0 -112
- package/dist/utils/log-cleaner.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -59
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -292
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/validation.d.ts +0 -58
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -214
- package/dist/utils/validation.js.map +0 -1
- package/src/api/cached-client.ts +0 -144
- package/src/api/client.ts +0 -697
- package/src/auth/index.ts +0 -11
- package/src/auth/middleware.ts +0 -244
- package/src/auth/permissions.ts +0 -323
- package/src/auth/token-validator.ts +0 -292
- package/src/cache/cache-manager.ts +0 -243
- package/src/cache/index.ts +0 -6
- package/src/cache/redis-client.ts +0 -249
- package/src/config/constants.ts +0 -33
- package/src/config/index.ts +0 -269
- package/src/filesystem/manager.ts +0 -235
- package/src/git/multi-source-manager.ts +0 -654
- package/src/git/operations.ts +0 -93
- package/src/index.ts +0 -157
- package/src/monitoring/health.ts +0 -132
- package/src/prompts/cache.ts +0 -140
- package/src/prompts/generator.ts +0 -143
- package/src/prompts/index.ts +0 -20
- package/src/prompts/manager.ts +0 -718
- package/src/resources/index.ts +0 -13
- package/src/resources/loader.ts +0 -563
- package/src/server/http.ts +0 -549
- package/src/server.ts +0 -206
- package/src/session/manager.ts +0 -296
- package/src/telemetry/index.ts +0 -10
- package/src/telemetry/manager.ts +0 -419
- package/src/tools/index.ts +0 -13
- package/src/tools/manage-subscription.ts +0 -388
- package/src/tools/registry.ts +0 -97
- package/src/tools/resolve-prompt-content.ts +0 -113
- package/src/tools/search-resources.ts +0 -185
- package/src/tools/sync-resources.ts +0 -829
- package/src/tools/track-usage.ts +0 -113
- package/src/tools/uninstall-resource.ts +0 -199
- package/src/tools/upload-resource.ts +0 -431
- package/src/transport/sse.ts +0 -308
- package/src/types/errors.ts +0 -146
- package/src/types/index.ts +0 -7
- package/src/types/mcp.ts +0 -61
- package/src/types/resources.ts +0 -141
- package/src/types/tools.ts +0 -305
- package/src/utils/cursor-paths.ts +0 -135
- package/src/utils/log-cleaner.ts +0 -92
- package/src/utils/logger.ts +0 -333
- package/src/utils/validation.ts +0 -262
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* search_resources Tool
|
|
3
|
-
* Search for available resources
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { logger, logToolCall } from '../utils/logger';
|
|
7
|
-
import { apiClient } from '../api/client';
|
|
8
|
-
import { filesystemManager } from '../filesystem/manager';
|
|
9
|
-
import { getCursorResourcePath } from '../utils/cursor-paths.js';
|
|
10
|
-
import { MCPServerError } from '../types/errors';
|
|
11
|
-
import type { SearchResourcesParams, SearchResourcesResult, ToolResult } from '../types/tools';
|
|
12
|
-
// Simple in-memory cache
|
|
13
|
-
const searchCache = new Map<string, { results: SearchResourcesResult; timestamp: number }>();
|
|
14
|
-
const CACHE_TTL = 5 * 60 * 1000; // 5 minutes
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Generate cache key from search parameters
|
|
18
|
-
*/
|
|
19
|
-
function getCacheKey(params: SearchResourcesParams): string {
|
|
20
|
-
return JSON.stringify({
|
|
21
|
-
team: params.team || '',
|
|
22
|
-
type: params.type || '',
|
|
23
|
-
keyword: params.keyword || '',
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Get cached search results if available and not expired
|
|
29
|
-
*/
|
|
30
|
-
function getCachedResults(cacheKey: string): SearchResourcesResult | null {
|
|
31
|
-
const cached = searchCache.get(cacheKey);
|
|
32
|
-
if (cached && Date.now() - cached.timestamp < CACHE_TTL) {
|
|
33
|
-
logger.debug({ cacheKey }, 'Search cache hit');
|
|
34
|
-
return cached.results;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
if (cached) {
|
|
38
|
-
// Remove expired cache entry
|
|
39
|
-
searchCache.delete(cacheKey);
|
|
40
|
-
logger.debug({ cacheKey }, 'Search cache expired, removed');
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Cache search results
|
|
48
|
-
*/
|
|
49
|
-
function cacheResults(cacheKey: string, results: SearchResourcesResult): void {
|
|
50
|
-
searchCache.set(cacheKey, {
|
|
51
|
-
results,
|
|
52
|
-
timestamp: Date.now(),
|
|
53
|
-
});
|
|
54
|
-
logger.debug({ cacheKey, total: results.total }, 'Search results cached');
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export async function searchResources(params: unknown): Promise<ToolResult<SearchResourcesResult>> {
|
|
58
|
-
const startTime = Date.now();
|
|
59
|
-
|
|
60
|
-
// Type assertion for params
|
|
61
|
-
const typedParams = params as SearchResourcesParams;
|
|
62
|
-
|
|
63
|
-
logger.info({ tool: 'search_resources', params }, 'search_resources called');
|
|
64
|
-
|
|
65
|
-
try {
|
|
66
|
-
// Generate cache key
|
|
67
|
-
const cacheKey = getCacheKey(typedParams);
|
|
68
|
-
|
|
69
|
-
// Check cache first
|
|
70
|
-
const cachedResult = getCachedResults(cacheKey);
|
|
71
|
-
if (cachedResult) {
|
|
72
|
-
const duration = Date.now() - startTime;
|
|
73
|
-
logToolCall('search_resources', 'user-id', params as Record<string, unknown>, duration);
|
|
74
|
-
|
|
75
|
-
logger.info({ total: cachedResult.total, duration, cached: true }, 'search_resources completed (cache hit)');
|
|
76
|
-
|
|
77
|
-
return {
|
|
78
|
-
success: true,
|
|
79
|
-
data: cachedResult,
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
// Search via API
|
|
84
|
-
logger.debug({ team: typedParams.team, type: typedParams.type, keyword: typedParams.keyword }, 'Searching resources...');
|
|
85
|
-
|
|
86
|
-
const searchResults = await apiClient.searchResources(
|
|
87
|
-
{
|
|
88
|
-
team: typedParams.team,
|
|
89
|
-
type: typedParams.type,
|
|
90
|
-
keyword: typedParams.keyword,
|
|
91
|
-
},
|
|
92
|
-
typedParams.user_token
|
|
93
|
-
);
|
|
94
|
-
|
|
95
|
-
// Check subscription and installation status for each result
|
|
96
|
-
const enhancedResults = await Promise.all(
|
|
97
|
-
searchResults.results.map(async (resource) => {
|
|
98
|
-
// Check if installed locally in the Cursor directory for this resource type
|
|
99
|
-
let isInstalled = false;
|
|
100
|
-
try {
|
|
101
|
-
const resourcePath = getCursorResourcePath(resource.type, resource.name);
|
|
102
|
-
isInstalled = await filesystemManager.fileExists(resourcePath);
|
|
103
|
-
} catch {
|
|
104
|
-
// Unknown type or path check failed — treat as not installed
|
|
105
|
-
isInstalled = false;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
return {
|
|
109
|
-
...resource,
|
|
110
|
-
is_installed: isInstalled,
|
|
111
|
-
};
|
|
112
|
-
})
|
|
113
|
-
);
|
|
114
|
-
|
|
115
|
-
// Build final result
|
|
116
|
-
const result: SearchResourcesResult = {
|
|
117
|
-
total: searchResults.total,
|
|
118
|
-
results: enhancedResults,
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
// Cache the results
|
|
122
|
-
cacheResults(cacheKey, result);
|
|
123
|
-
|
|
124
|
-
const duration = Date.now() - startTime;
|
|
125
|
-
logToolCall('search_resources', 'user-id', params as Record<string, unknown>, duration);
|
|
126
|
-
|
|
127
|
-
logger.info(
|
|
128
|
-
{
|
|
129
|
-
team: typedParams.team,
|
|
130
|
-
type: typedParams.type,
|
|
131
|
-
keyword: typedParams.keyword,
|
|
132
|
-
total: result.total,
|
|
133
|
-
duration,
|
|
134
|
-
cached: false,
|
|
135
|
-
},
|
|
136
|
-
'search_resources completed successfully'
|
|
137
|
-
);
|
|
138
|
-
|
|
139
|
-
return {
|
|
140
|
-
success: true,
|
|
141
|
-
data: result,
|
|
142
|
-
};
|
|
143
|
-
} catch (error) {
|
|
144
|
-
logger.error({ error, tool: 'search_resources', errorStack: error instanceof Error ? error.stack : undefined }, 'search_resources failed');
|
|
145
|
-
return {
|
|
146
|
-
success: false,
|
|
147
|
-
error: {
|
|
148
|
-
code: error instanceof MCPServerError ? error.code : 'UNKNOWN_ERROR',
|
|
149
|
-
message: error instanceof Error ? error.message : String(error),
|
|
150
|
-
},
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
// Tool definition for registry
|
|
156
|
-
export const searchResourcesTool = {
|
|
157
|
-
name: 'search_resources',
|
|
158
|
-
description: 'Search for available resources by team, type, or keyword',
|
|
159
|
-
inputSchema: {
|
|
160
|
-
type: 'object' as const,
|
|
161
|
-
properties: {
|
|
162
|
-
team: {
|
|
163
|
-
type: 'string',
|
|
164
|
-
description: 'Filter by team (empty = all teams)',
|
|
165
|
-
},
|
|
166
|
-
type: {
|
|
167
|
-
type: 'string',
|
|
168
|
-
description: 'Filter by resource type',
|
|
169
|
-
enum: ['command', 'skill', 'rule', 'mcp', ''],
|
|
170
|
-
},
|
|
171
|
-
keyword: {
|
|
172
|
-
type: 'string',
|
|
173
|
-
description: 'Search keyword (searches in name, description, tags)',
|
|
174
|
-
},
|
|
175
|
-
user_token: {
|
|
176
|
-
type: 'string',
|
|
177
|
-
description:
|
|
178
|
-
'DO NOT set this field — it is automatically injected by the MCP server from ' +
|
|
179
|
-
'the authenticated SSE connection. The server always provides the correct token.',
|
|
180
|
-
},
|
|
181
|
-
},
|
|
182
|
-
required: ['keyword'],
|
|
183
|
-
},
|
|
184
|
-
handler: searchResources,
|
|
185
|
-
};
|