@elliotding/ai-agent-mcp 0.1.24 → 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/README.md +27 -0
- 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 -169
- package/dist/prompts/manager.d.ts.map +0 -1
- package/dist/prompts/manager.js +0 -488
- 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 -200
- 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 -12
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -28
- 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 -314
- 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/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 -733
- 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 -235
- 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 -613
- 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 -204
- 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 -12
- package/src/tools/manage-subscription.ts +0 -385
- package/src/tools/registry.ts +0 -97
- package/src/tools/search-resources.ts +0 -185
- package/src/tools/sync-resources.ts +0 -827
- 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 -284
- 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,235 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Filesystem Manager
|
|
3
|
-
* Atomic filesystem operations for resource management
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import * as fs from 'fs/promises';
|
|
7
|
-
import * as fsSync from 'fs';
|
|
8
|
-
import * as path from 'path';
|
|
9
|
-
import { logger } from '../utils/logger';
|
|
10
|
-
import { createFileSystemError, createValidationError } from '../types/errors';
|
|
11
|
-
|
|
12
|
-
class FilesystemManager {
|
|
13
|
-
/**
|
|
14
|
-
* Write resource file atomically
|
|
15
|
-
*/
|
|
16
|
-
async writeResource(filePath: string, content: string): Promise<void> {
|
|
17
|
-
const tempPath = `${filePath}.tmp`;
|
|
18
|
-
|
|
19
|
-
try {
|
|
20
|
-
// Ensure directory exists
|
|
21
|
-
const dir = path.dirname(filePath);
|
|
22
|
-
await fs.mkdir(dir, { recursive: true });
|
|
23
|
-
|
|
24
|
-
// Write to temporary file
|
|
25
|
-
await fs.writeFile(tempPath, content, 'utf-8');
|
|
26
|
-
|
|
27
|
-
// Validate content (basic check)
|
|
28
|
-
await this.validateResourceContent(tempPath, content);
|
|
29
|
-
|
|
30
|
-
// Atomic rename
|
|
31
|
-
await fs.rename(tempPath, filePath);
|
|
32
|
-
|
|
33
|
-
logger.debug({ filePath }, 'Resource file written successfully');
|
|
34
|
-
} catch (error) {
|
|
35
|
-
// Cleanup temporary file
|
|
36
|
-
try {
|
|
37
|
-
await fs.unlink(tempPath);
|
|
38
|
-
} catch {
|
|
39
|
-
// Ignore cleanup errors
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
throw createFileSystemError('write', filePath, error as Error & { code?: string });
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Read resource file with validation
|
|
48
|
-
*/
|
|
49
|
-
async readResource(filePath: string): Promise<string> {
|
|
50
|
-
try {
|
|
51
|
-
// Check if file exists
|
|
52
|
-
await fs.access(filePath, fsSync.constants.R_OK);
|
|
53
|
-
|
|
54
|
-
// Read file
|
|
55
|
-
const content = await fs.readFile(filePath, 'utf-8');
|
|
56
|
-
|
|
57
|
-
// Validate format
|
|
58
|
-
await this.validateResourceContent(filePath, content);
|
|
59
|
-
|
|
60
|
-
return content;
|
|
61
|
-
} catch (error) {
|
|
62
|
-
throw createFileSystemError('read', filePath, error as Error & { code?: string });
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Delete resource file with backup
|
|
68
|
-
*/
|
|
69
|
-
async deleteResource(filePath: string): Promise<void> {
|
|
70
|
-
const backupPath = `${filePath}.backup`;
|
|
71
|
-
|
|
72
|
-
try {
|
|
73
|
-
// Create backup
|
|
74
|
-
if (fsSync.existsSync(filePath)) {
|
|
75
|
-
await fs.copyFile(filePath, backupPath);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// Delete file
|
|
79
|
-
await fs.unlink(filePath);
|
|
80
|
-
|
|
81
|
-
// Remove backup on success
|
|
82
|
-
try {
|
|
83
|
-
await fs.unlink(backupPath);
|
|
84
|
-
} catch {
|
|
85
|
-
// Ignore backup cleanup errors
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
logger.debug({ filePath }, 'Resource file deleted successfully');
|
|
89
|
-
} catch (error) {
|
|
90
|
-
// Restore from backup on failure
|
|
91
|
-
try {
|
|
92
|
-
if (fsSync.existsSync(backupPath)) {
|
|
93
|
-
await fs.copyFile(backupPath, filePath);
|
|
94
|
-
await fs.unlink(backupPath);
|
|
95
|
-
}
|
|
96
|
-
} catch {
|
|
97
|
-
// Ignore restore errors
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
throw createFileSystemError('delete', filePath, error as Error & { code?: string });
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Validate resource content
|
|
106
|
-
*/
|
|
107
|
-
private async validateResourceContent(filePath: string, content: string): Promise<void> {
|
|
108
|
-
const ext = path.extname(filePath);
|
|
109
|
-
|
|
110
|
-
// Check if empty
|
|
111
|
-
if (!content || content.trim().length === 0) {
|
|
112
|
-
throw createValidationError(filePath, ext, 'File content is empty');
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// Validate based on file type
|
|
116
|
-
if (ext === '.json') {
|
|
117
|
-
try {
|
|
118
|
-
JSON.parse(content);
|
|
119
|
-
} catch (error) {
|
|
120
|
-
throw createValidationError(filePath, 'json', 'Invalid JSON format');
|
|
121
|
-
}
|
|
122
|
-
} else if (ext === '.md') {
|
|
123
|
-
// Basic markdown validation (check for minimum content)
|
|
124
|
-
if (content.length < 10) {
|
|
125
|
-
throw createValidationError(filePath, 'markdown', 'Markdown content too short');
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* Check if file exists
|
|
132
|
-
*/
|
|
133
|
-
async fileExists(filePath: string): Promise<boolean> {
|
|
134
|
-
try {
|
|
135
|
-
await fs.access(filePath, fsSync.constants.F_OK);
|
|
136
|
-
return true;
|
|
137
|
-
} catch {
|
|
138
|
-
return false;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* List files in directory
|
|
144
|
-
*/
|
|
145
|
-
async listFiles(dirPath: string, pattern?: RegExp): Promise<string[]> {
|
|
146
|
-
try {
|
|
147
|
-
const files = await fs.readdir(dirPath, { recursive: true });
|
|
148
|
-
|
|
149
|
-
if (pattern) {
|
|
150
|
-
return files.filter((file) => pattern.test(file));
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
return files;
|
|
154
|
-
} catch (error) {
|
|
155
|
-
throw createFileSystemError('list', dirPath, error as Error & { code?: string });
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Recursively scan a directory and return all text files as FileEntry[]
|
|
161
|
-
* Supported extensions: .md, .mdc, .txt, .yaml, .yml, .json
|
|
162
|
-
*/
|
|
163
|
-
async scanDirectory(dirPath: string): Promise<Array<{ path: string; content: string }>> {
|
|
164
|
-
const TEXT_EXTENSIONS = new Set(['.md', '.mdc', '.txt', '.yaml', '.yml', '.json']);
|
|
165
|
-
const results: Array<{ path: string; content: string }> = [];
|
|
166
|
-
|
|
167
|
-
const walk = async (currentPath: string, relBase: string): Promise<void> => {
|
|
168
|
-
let entries: fsSync.Dirent[];
|
|
169
|
-
try {
|
|
170
|
-
entries = await fs.readdir(currentPath, { withFileTypes: true });
|
|
171
|
-
} catch (error) {
|
|
172
|
-
throw createFileSystemError('list', currentPath, error as Error & { code?: string });
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
for (const entry of entries) {
|
|
176
|
-
const fullPath = path.join(currentPath, entry.name);
|
|
177
|
-
const relPath = path.join(relBase, entry.name);
|
|
178
|
-
|
|
179
|
-
if (entry.isDirectory()) {
|
|
180
|
-
await walk(fullPath, relPath);
|
|
181
|
-
} else if (entry.isFile()) {
|
|
182
|
-
const ext = path.extname(entry.name).toLowerCase();
|
|
183
|
-
if (TEXT_EXTENSIONS.has(ext)) {
|
|
184
|
-
try {
|
|
185
|
-
const content = await fs.readFile(fullPath, 'utf-8');
|
|
186
|
-
if (content.trim().length > 0) {
|
|
187
|
-
results.push({ path: relPath, content });
|
|
188
|
-
}
|
|
189
|
-
} catch {
|
|
190
|
-
// Skip unreadable files silently
|
|
191
|
-
logger.warn({ filePath: fullPath }, 'Skipped unreadable file during directory scan');
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
};
|
|
197
|
-
|
|
198
|
-
await walk(dirPath, '');
|
|
199
|
-
|
|
200
|
-
if (results.length === 0) {
|
|
201
|
-
throw createValidationError(
|
|
202
|
-
dirPath,
|
|
203
|
-
'directory',
|
|
204
|
-
`No text files found in directory: ${dirPath}`
|
|
205
|
-
);
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
logger.debug({ dirPath, fileCount: results.length }, 'Directory scan completed');
|
|
209
|
-
return results;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
/**
|
|
213
|
-
* Remove empty directories recursively
|
|
214
|
-
*/
|
|
215
|
-
async removeEmptyDirs(dirPath: string): Promise<void> {
|
|
216
|
-
try {
|
|
217
|
-
const files = await fs.readdir(dirPath);
|
|
218
|
-
|
|
219
|
-
if (files.length === 0) {
|
|
220
|
-
await fs.rmdir(dirPath);
|
|
221
|
-
logger.debug({ dirPath }, 'Empty directory removed');
|
|
222
|
-
|
|
223
|
-
// Check parent directory
|
|
224
|
-
const parentDir = path.dirname(dirPath);
|
|
225
|
-
if (parentDir !== dirPath) {
|
|
226
|
-
await this.removeEmptyDirs(parentDir);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
} catch (error) {
|
|
230
|
-
// Ignore errors (directory might not be empty or already deleted)
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
export const filesystemManager = new FilesystemManager();
|