context-tracker-mcp1.0 1.0.6
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/bin/context-tracker-mcp.cmd +2 -0
- package/bin/context-tracker-mcp.js +4 -0
- package/dist/config-manager.d.ts +32 -0
- package/dist/config-manager.d.ts.map +1 -0
- package/dist/config-manager.js +103 -0
- package/dist/config-manager.js.map +1 -0
- package/dist/context-tracker.d.ts +73 -0
- package/dist/context-tracker.d.ts.map +1 -0
- package/dist/context-tracker.js +375 -0
- package/dist/context-tracker.js.map +1 -0
- package/dist/documentation-generator.d.ts +13 -0
- package/dist/documentation-generator.d.ts.map +1 -0
- package/dist/documentation-generator.js +308 -0
- package/dist/documentation-generator.js.map +1 -0
- package/dist/error-analyzer.d.ts +21 -0
- package/dist/error-analyzer.d.ts.map +1 -0
- package/dist/error-analyzer.js +69 -0
- package/dist/error-analyzer.js.map +1 -0
- package/dist/file-watcher.d.ts +36 -0
- package/dist/file-watcher.d.ts.map +1 -0
- package/dist/file-watcher.js +225 -0
- package/dist/file-watcher.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +476 -0
- package/dist/index.js.map +1 -0
- package/dist/mutex.d.ts +137 -0
- package/dist/mutex.d.ts.map +1 -0
- package/dist/mutex.js +276 -0
- package/dist/mutex.js.map +1 -0
- package/dist/project-intelligence.d.ts +24 -0
- package/dist/project-intelligence.d.ts.map +1 -0
- package/dist/project-intelligence.js +101 -0
- package/dist/project-intelligence.js.map +1 -0
- package/dist/resource-manager.d.ts +33 -0
- package/dist/resource-manager.d.ts.map +1 -0
- package/dist/resource-manager.js +188 -0
- package/dist/resource-manager.js.map +1 -0
- package/mcp-config.json +125 -0
- package/package.json +56 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,476 @@
|
|
|
1
|
+
import { promises as fs } from 'fs';
|
|
2
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
3
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
5
|
+
import { ContextTracker } from './context-tracker.js';
|
|
6
|
+
import { DocumentationGenerator } from './documentation-generator.js';
|
|
7
|
+
import { FileWatcher } from './file-watcher.js';
|
|
8
|
+
import { ErrorAnalyzer } from './error-analyzer.js';
|
|
9
|
+
import { ProjectIntelligence } from './project-intelligence.js';
|
|
10
|
+
import { ConfigManager } from './config-manager.js';
|
|
11
|
+
const server = new Server({
|
|
12
|
+
name: 'context-tracker-mcp',
|
|
13
|
+
version: '1.0.0',
|
|
14
|
+
}, {
|
|
15
|
+
capabilities: {
|
|
16
|
+
tools: {},
|
|
17
|
+
resources: {},
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
const configManager = new ConfigManager();
|
|
21
|
+
const contextTracker = new ContextTracker();
|
|
22
|
+
const docGenerator = new DocumentationGenerator(contextTracker);
|
|
23
|
+
const fileWatcher = new FileWatcher(contextTracker);
|
|
24
|
+
const errorAnalyzer = new ErrorAnalyzer();
|
|
25
|
+
const projectIntel = new ProjectIntelligence('./');
|
|
26
|
+
// Initialize system with configuration
|
|
27
|
+
async function initializeSystem() {
|
|
28
|
+
try {
|
|
29
|
+
const config = await configManager.loadConfig();
|
|
30
|
+
// Initialize file watching with config paths
|
|
31
|
+
await fileWatcher.initialize(config.watchPaths);
|
|
32
|
+
// Auto-detect current work on startup if enabled
|
|
33
|
+
if (config.autoTrack) {
|
|
34
|
+
try {
|
|
35
|
+
// Check if package.json exists before reading
|
|
36
|
+
await fs.access('./package.json');
|
|
37
|
+
const packageJson = await fs.readFile('./package.json', 'utf-8');
|
|
38
|
+
const packageData = JSON.parse(packageJson);
|
|
39
|
+
if (packageData.scripts && packageData.scripts.dev) {
|
|
40
|
+
await contextTracker.trackContext('start', {
|
|
41
|
+
description: `Development session started - Project: ${packageData.name || 'Unknown'}`,
|
|
42
|
+
files: [],
|
|
43
|
+
autoDetected: true,
|
|
44
|
+
config: config
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
if (error.code !== 'ENOENT') {
|
|
50
|
+
console.error('Failed to auto-detect project:', error);
|
|
51
|
+
}
|
|
52
|
+
// ENOENT means no package.json, which is fine - skip auto-tracking
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
console.log('System initialized with config:', config);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
console.error('Failed to initialize system:', error);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// List available tools
|
|
62
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
63
|
+
return {
|
|
64
|
+
tools: [
|
|
65
|
+
{
|
|
66
|
+
name: 'track_context',
|
|
67
|
+
description: 'Track current development context and maintain complete history of your work',
|
|
68
|
+
inputSchema: {
|
|
69
|
+
type: 'object',
|
|
70
|
+
properties: {
|
|
71
|
+
action: {
|
|
72
|
+
type: 'string',
|
|
73
|
+
enum: ['start', 'update', 'complete'],
|
|
74
|
+
description: 'Action to perform'
|
|
75
|
+
},
|
|
76
|
+
description: {
|
|
77
|
+
type: 'string',
|
|
78
|
+
description: 'Description of the current work'
|
|
79
|
+
},
|
|
80
|
+
files: {
|
|
81
|
+
type: 'array',
|
|
82
|
+
items: { type: 'string' },
|
|
83
|
+
description: 'Files being modified'
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
required: ['action']
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: 'get_context_history',
|
|
91
|
+
description: 'Retrieve complete development history with all tracked context entries',
|
|
92
|
+
inputSchema: {
|
|
93
|
+
type: 'object',
|
|
94
|
+
properties: {
|
|
95
|
+
limit: {
|
|
96
|
+
type: 'number',
|
|
97
|
+
description: 'Number of recent entries to retrieve'
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: 'generate_documentation',
|
|
104
|
+
description: 'Auto-generate comprehensive project documentation from tracked context',
|
|
105
|
+
inputSchema: {
|
|
106
|
+
type: 'object',
|
|
107
|
+
properties: {
|
|
108
|
+
type: {
|
|
109
|
+
type: 'string',
|
|
110
|
+
enum: ['features', 'errors', 'styling', 'complete'],
|
|
111
|
+
description: 'Type of documentation to generate'
|
|
112
|
+
},
|
|
113
|
+
format: {
|
|
114
|
+
type: 'string',
|
|
115
|
+
enum: ['markdown', 'json'],
|
|
116
|
+
description: 'Output format'
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
name: 'log_error',
|
|
123
|
+
description: 'Record errors with detailed context and solutions for future reference',
|
|
124
|
+
inputSchema: {
|
|
125
|
+
type: 'object',
|
|
126
|
+
properties: {
|
|
127
|
+
error: {
|
|
128
|
+
type: 'string',
|
|
129
|
+
description: 'Error message'
|
|
130
|
+
},
|
|
131
|
+
solution: {
|
|
132
|
+
type: 'string',
|
|
133
|
+
description: 'How the error was fixed'
|
|
134
|
+
},
|
|
135
|
+
context: {
|
|
136
|
+
type: 'string',
|
|
137
|
+
description: 'Context when error occurred'
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
required: ['error', 'solution']
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
name: 'smart_context',
|
|
145
|
+
description: 'Get AI-powered context suggestions based on current work patterns',
|
|
146
|
+
inputSchema: {
|
|
147
|
+
type: 'object',
|
|
148
|
+
properties: {
|
|
149
|
+
currentFiles: {
|
|
150
|
+
type: 'array',
|
|
151
|
+
items: { type: 'string' },
|
|
152
|
+
description: 'Currently open files'
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
name: 'track_styling',
|
|
159
|
+
description: 'Monitor and record CSS styling changes with element and location tracking',
|
|
160
|
+
inputSchema: {
|
|
161
|
+
type: 'object',
|
|
162
|
+
properties: {
|
|
163
|
+
element: {
|
|
164
|
+
type: 'string',
|
|
165
|
+
description: 'CSS element or component'
|
|
166
|
+
},
|
|
167
|
+
styles: {
|
|
168
|
+
type: 'object',
|
|
169
|
+
description: 'Applied styles'
|
|
170
|
+
},
|
|
171
|
+
location: {
|
|
172
|
+
type: 'string',
|
|
173
|
+
description: 'File location'
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
required: ['element', 'styles']
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
name: 'analyze_project',
|
|
181
|
+
description: 'Get AI-powered project analysis and recommendations',
|
|
182
|
+
inputSchema: {
|
|
183
|
+
type: 'object',
|
|
184
|
+
properties: {
|
|
185
|
+
includeMetrics: {
|
|
186
|
+
type: 'boolean',
|
|
187
|
+
description: 'Include detailed project metrics'
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
name: 'get_error_patterns',
|
|
194
|
+
description: 'Analyze error patterns and get prevention suggestions',
|
|
195
|
+
inputSchema: {
|
|
196
|
+
type: 'object',
|
|
197
|
+
properties: {
|
|
198
|
+
timeframe: {
|
|
199
|
+
type: 'string',
|
|
200
|
+
enum: ['day', 'week', 'month'],
|
|
201
|
+
description: 'Timeframe for analysis'
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
name: 'get_config',
|
|
208
|
+
description: 'Get current MCP configuration',
|
|
209
|
+
inputSchema: {
|
|
210
|
+
type: 'object',
|
|
211
|
+
properties: {
|
|
212
|
+
section: {
|
|
213
|
+
type: 'string',
|
|
214
|
+
description: 'Configuration section to retrieve (all if not specified)'
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
name: 'update_config',
|
|
221
|
+
description: 'Update MCP configuration settings',
|
|
222
|
+
inputSchema: {
|
|
223
|
+
type: 'object',
|
|
224
|
+
properties: {
|
|
225
|
+
watchPaths: {
|
|
226
|
+
type: 'array',
|
|
227
|
+
items: { type: 'string' },
|
|
228
|
+
description: 'Paths to watch for changes'
|
|
229
|
+
},
|
|
230
|
+
autoTrack: {
|
|
231
|
+
type: 'boolean',
|
|
232
|
+
description: 'Enable automatic context tracking'
|
|
233
|
+
},
|
|
234
|
+
logLevel: {
|
|
235
|
+
type: 'string',
|
|
236
|
+
enum: ['debug', 'info', 'warn', 'error'],
|
|
237
|
+
description: 'Logging level'
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
name: 'create_default_config',
|
|
244
|
+
description: 'Create default configuration file',
|
|
245
|
+
inputSchema: {
|
|
246
|
+
type: 'object',
|
|
247
|
+
properties: {
|
|
248
|
+
overwrite: {
|
|
249
|
+
type: 'boolean',
|
|
250
|
+
description: 'Overwrite existing configuration file'
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
]
|
|
256
|
+
};
|
|
257
|
+
});
|
|
258
|
+
// Initialize system
|
|
259
|
+
initializeSystem();
|
|
260
|
+
// Handle tool calls
|
|
261
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
262
|
+
const { name, arguments: args } = request.params;
|
|
263
|
+
try {
|
|
264
|
+
switch (name) {
|
|
265
|
+
case 'track_context':
|
|
266
|
+
const result = await contextTracker.trackContext(args?.action, args || {});
|
|
267
|
+
return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
|
|
268
|
+
case 'get_context_history':
|
|
269
|
+
const history = contextTracker.getHistory(args?.limit);
|
|
270
|
+
return { content: [{ type: 'text', text: JSON.stringify(history, null, 2) }] };
|
|
271
|
+
case 'generate_documentation':
|
|
272
|
+
const docs = await docGenerator.generate(args?.type, args?.format || 'markdown');
|
|
273
|
+
return { content: [{ type: 'text', text: docs }] };
|
|
274
|
+
case 'log_error':
|
|
275
|
+
await contextTracker.logError(args?.error, args?.solution, args?.context);
|
|
276
|
+
return { content: [{ type: 'text', text: 'Error logged successfully' }] };
|
|
277
|
+
case 'track_styling':
|
|
278
|
+
await contextTracker.trackStyling(args?.element, args?.styles, args?.location);
|
|
279
|
+
return { content: [{ type: 'text', text: 'Styling tracked successfully' }] };
|
|
280
|
+
case 'analyze_project':
|
|
281
|
+
const analysis = await projectIntel.analyzeProject();
|
|
282
|
+
return { content: [{ type: 'text', text: JSON.stringify(analysis, null, 2) }] };
|
|
283
|
+
case 'get_error_patterns':
|
|
284
|
+
const errorStats = errorAnalyzer.getErrorStatistics();
|
|
285
|
+
return { content: [{ type: 'text', text: JSON.stringify(errorStats, null, 2) }] };
|
|
286
|
+
case 'get_config':
|
|
287
|
+
const config = await configManager.loadConfig();
|
|
288
|
+
const section = args?.section || 'all';
|
|
289
|
+
if (section === 'all') {
|
|
290
|
+
return { content: [{ type: 'text', text: JSON.stringify(config, null, 2) }] };
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
const sectionConfig = config[section] || {};
|
|
294
|
+
return { content: [{ type: 'text', text: JSON.stringify(sectionConfig, null, 2) }] };
|
|
295
|
+
}
|
|
296
|
+
case 'update_config':
|
|
297
|
+
const updates = args;
|
|
298
|
+
const validation = await configManager.validateConfig(updates);
|
|
299
|
+
if (!validation.isValid) {
|
|
300
|
+
return {
|
|
301
|
+
content: [{
|
|
302
|
+
type: 'text',
|
|
303
|
+
text: `Configuration validation failed: ${validation.errors.join(', ')}`
|
|
304
|
+
}]
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
const newConfig = await configManager.updateConfig(updates);
|
|
308
|
+
return { content: [{ type: 'text', text: `Configuration updated successfully. New config: ${JSON.stringify(newConfig, null, 2)}` }] };
|
|
309
|
+
case 'create_default_config':
|
|
310
|
+
const overwrite = args?.overwrite || false;
|
|
311
|
+
if (!overwrite) {
|
|
312
|
+
try {
|
|
313
|
+
await fs.readFile(configManager.getConfigPath());
|
|
314
|
+
return {
|
|
315
|
+
content: [{
|
|
316
|
+
type: 'text',
|
|
317
|
+
text: 'Configuration file already exists. Use overwrite: true to replace it.'
|
|
318
|
+
}]
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
catch (err) {
|
|
322
|
+
// Only proceed if file doesn't exist (ENOENT)
|
|
323
|
+
if (err.code !== 'ENOENT') {
|
|
324
|
+
throw err; // Re-throw unexpected errors
|
|
325
|
+
}
|
|
326
|
+
// File doesn't exist, proceed
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
await configManager.createDefaultConfig();
|
|
330
|
+
return { content: [{ type: 'text', text: 'Default configuration created successfully.' }] };
|
|
331
|
+
default:
|
|
332
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
catch (error) {
|
|
336
|
+
return {
|
|
337
|
+
content: [
|
|
338
|
+
{
|
|
339
|
+
type: 'text',
|
|
340
|
+
text: JSON.stringify({
|
|
341
|
+
error: error instanceof Error ? error.message : String(error)
|
|
342
|
+
})
|
|
343
|
+
}
|
|
344
|
+
]
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
});
|
|
348
|
+
// List resources
|
|
349
|
+
server.setRequestHandler(ListResourcesRequestSchema, async () => {
|
|
350
|
+
return {
|
|
351
|
+
resources: [
|
|
352
|
+
{
|
|
353
|
+
uri: 'context://history',
|
|
354
|
+
name: 'Complete Context History',
|
|
355
|
+
description: 'Full history of all tracked context and changes',
|
|
356
|
+
mimeType: 'application/json'
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
uri: 'context://documentation',
|
|
360
|
+
name: 'Generated Documentation',
|
|
361
|
+
description: 'Comprehensive documentation of the project',
|
|
362
|
+
mimeType: 'text/markdown'
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
uri: 'context://errors',
|
|
366
|
+
name: 'Error Log',
|
|
367
|
+
description: 'Complete log of errors and their solutions',
|
|
368
|
+
mimeType: 'application/json'
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
uri: 'context://styling',
|
|
372
|
+
name: 'Styling History',
|
|
373
|
+
description: 'History of all styling changes',
|
|
374
|
+
mimeType: 'application/json'
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
uri: 'context://health',
|
|
378
|
+
name: 'Health Check',
|
|
379
|
+
description: 'Service health status and uptime',
|
|
380
|
+
mimeType: 'application/json'
|
|
381
|
+
}
|
|
382
|
+
]
|
|
383
|
+
};
|
|
384
|
+
});
|
|
385
|
+
// Read resources
|
|
386
|
+
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
387
|
+
const { uri } = request.params;
|
|
388
|
+
switch (uri) {
|
|
389
|
+
case 'context://history':
|
|
390
|
+
return {
|
|
391
|
+
contents: [
|
|
392
|
+
{
|
|
393
|
+
uri,
|
|
394
|
+
mimeType: 'application/json',
|
|
395
|
+
text: JSON.stringify(await contextTracker.getHistory(), null, 2)
|
|
396
|
+
}
|
|
397
|
+
]
|
|
398
|
+
};
|
|
399
|
+
case 'context://documentation':
|
|
400
|
+
return {
|
|
401
|
+
contents: [
|
|
402
|
+
{
|
|
403
|
+
uri,
|
|
404
|
+
mimeType: 'text/markdown',
|
|
405
|
+
text: await docGenerator.generate('complete', 'markdown')
|
|
406
|
+
}
|
|
407
|
+
]
|
|
408
|
+
};
|
|
409
|
+
case 'context://errors':
|
|
410
|
+
return {
|
|
411
|
+
contents: [
|
|
412
|
+
{
|
|
413
|
+
uri,
|
|
414
|
+
mimeType: 'application/json',
|
|
415
|
+
text: JSON.stringify(await contextTracker.getErrorLog(), null, 2)
|
|
416
|
+
}
|
|
417
|
+
]
|
|
418
|
+
};
|
|
419
|
+
case 'context://styling':
|
|
420
|
+
return {
|
|
421
|
+
contents: [
|
|
422
|
+
{
|
|
423
|
+
uri,
|
|
424
|
+
mimeType: 'application/json',
|
|
425
|
+
text: JSON.stringify(await contextTracker.getStylingHistory(), null, 2)
|
|
426
|
+
}
|
|
427
|
+
]
|
|
428
|
+
};
|
|
429
|
+
case 'context://health':
|
|
430
|
+
return {
|
|
431
|
+
contents: [
|
|
432
|
+
{
|
|
433
|
+
uri,
|
|
434
|
+
mimeType: 'application/json',
|
|
435
|
+
text: JSON.stringify({
|
|
436
|
+
status: 'healthy',
|
|
437
|
+
uptime: process.uptime(),
|
|
438
|
+
timestamp: new Date().toISOString(),
|
|
439
|
+
version: '1.0.0',
|
|
440
|
+
pid: process.pid
|
|
441
|
+
}, null, 2)
|
|
442
|
+
}
|
|
443
|
+
]
|
|
444
|
+
};
|
|
445
|
+
default:
|
|
446
|
+
throw new Error(`Unknown resource: ${uri}`);
|
|
447
|
+
}
|
|
448
|
+
});
|
|
449
|
+
async function main() {
|
|
450
|
+
const transport = new StdioServerTransport();
|
|
451
|
+
await server.connect(transport);
|
|
452
|
+
console.error('Context Tracker MCP server running on stdio');
|
|
453
|
+
// Graceful shutdown handlers
|
|
454
|
+
const shutdown = async (signal) => {
|
|
455
|
+
console.error(`Received ${signal}, shutting down gracefully...`);
|
|
456
|
+
try {
|
|
457
|
+
// Stop file watcher
|
|
458
|
+
await fileWatcher.stop();
|
|
459
|
+
// Clean up context tracker (stops cleanup interval)
|
|
460
|
+
await contextTracker.destroy?.();
|
|
461
|
+
console.error('Shutdown complete');
|
|
462
|
+
process.exit(0);
|
|
463
|
+
}
|
|
464
|
+
catch (error) {
|
|
465
|
+
console.error('Error during shutdown:', error);
|
|
466
|
+
process.exit(1);
|
|
467
|
+
}
|
|
468
|
+
};
|
|
469
|
+
process.on('SIGINT', () => shutdown('SIGINT'));
|
|
470
|
+
process.on('SIGTERM', () => shutdown('SIGTERM'));
|
|
471
|
+
}
|
|
472
|
+
main().catch((error) => {
|
|
473
|
+
console.error('Server error:', error);
|
|
474
|
+
process.exit(1);
|
|
475
|
+
});
|
|
476
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/mutex.d.ts
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mutex implementation for concurrency control
|
|
3
|
+
* Prevents race conditions in critical sections
|
|
4
|
+
*/
|
|
5
|
+
export declare class Mutex {
|
|
6
|
+
private locked;
|
|
7
|
+
private queue;
|
|
8
|
+
private name;
|
|
9
|
+
constructor(name?: string);
|
|
10
|
+
/**
|
|
11
|
+
* Acquire the mutex lock
|
|
12
|
+
* Returns a promise that resolves when the lock is acquired
|
|
13
|
+
*/
|
|
14
|
+
acquire(): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Release the mutex lock
|
|
17
|
+
* Allows the next waiting operation to proceed
|
|
18
|
+
*/
|
|
19
|
+
release(): void;
|
|
20
|
+
/**
|
|
21
|
+
* Check if the mutex is currently locked
|
|
22
|
+
*/
|
|
23
|
+
isLocked(): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Get the number of operations waiting for the lock
|
|
26
|
+
*/
|
|
27
|
+
getQueueLength(): number;
|
|
28
|
+
/**
|
|
29
|
+
* Execute a function with automatic lock acquisition and release
|
|
30
|
+
* This is the recommended way to use the mutex
|
|
31
|
+
*/
|
|
32
|
+
withLock<T>(fn: () => Promise<T>): Promise<T>;
|
|
33
|
+
/**
|
|
34
|
+
* Try to acquire the lock without blocking
|
|
35
|
+
* Returns true if lock was acquired, false otherwise
|
|
36
|
+
*/
|
|
37
|
+
tryAcquire(): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Get mutex statistics for monitoring
|
|
40
|
+
*/
|
|
41
|
+
getStats(): {
|
|
42
|
+
name: string;
|
|
43
|
+
locked: boolean;
|
|
44
|
+
queueLength: number;
|
|
45
|
+
isContended: boolean;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Read-Write Lock implementation
|
|
50
|
+
* Allows multiple concurrent readers but exclusive writers
|
|
51
|
+
*/
|
|
52
|
+
export declare class ReadWriteLock {
|
|
53
|
+
private readers;
|
|
54
|
+
private writer;
|
|
55
|
+
private readQueue;
|
|
56
|
+
private writeQueue;
|
|
57
|
+
private name;
|
|
58
|
+
constructor(name?: string);
|
|
59
|
+
/**
|
|
60
|
+
* Acquire read lock
|
|
61
|
+
* Multiple readers can hold the lock simultaneously
|
|
62
|
+
*/
|
|
63
|
+
acquireRead(): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Release read lock
|
|
66
|
+
*/
|
|
67
|
+
releaseRead(): void;
|
|
68
|
+
/**
|
|
69
|
+
* Acquire write lock
|
|
70
|
+
* Only one writer can hold the lock, and no readers
|
|
71
|
+
*/
|
|
72
|
+
acquireWrite(): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Release write lock
|
|
75
|
+
*/
|
|
76
|
+
releaseWrite(): void;
|
|
77
|
+
/**
|
|
78
|
+
* Execute a function with automatic read lock acquisition and release
|
|
79
|
+
*/
|
|
80
|
+
withReadLock<T>(fn: () => T | Promise<T>): Promise<T>;
|
|
81
|
+
/**
|
|
82
|
+
* Execute a function with automatic write lock acquisition and release
|
|
83
|
+
*/
|
|
84
|
+
withWriteLock<T>(fn: () => T | Promise<T>): Promise<T>;
|
|
85
|
+
/**
|
|
86
|
+
* Get lock statistics
|
|
87
|
+
*/
|
|
88
|
+
getStats(): {
|
|
89
|
+
name: string;
|
|
90
|
+
readers: number;
|
|
91
|
+
writer: boolean;
|
|
92
|
+
readQueueLength: number;
|
|
93
|
+
writeQueueLength: number;
|
|
94
|
+
isContended: boolean;
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Semaphore implementation for limiting concurrent operations
|
|
99
|
+
* Useful for resource pooling and rate limiting
|
|
100
|
+
*/
|
|
101
|
+
export declare class Semaphore {
|
|
102
|
+
private permits;
|
|
103
|
+
private queue;
|
|
104
|
+
private name;
|
|
105
|
+
constructor(permits: number, name?: string);
|
|
106
|
+
/**
|
|
107
|
+
* Acquire a permit
|
|
108
|
+
*/
|
|
109
|
+
acquire(): Promise<void>;
|
|
110
|
+
/**
|
|
111
|
+
* Release a permit
|
|
112
|
+
*/
|
|
113
|
+
release(): void;
|
|
114
|
+
/**
|
|
115
|
+
* Execute a function with automatic permit acquisition and release
|
|
116
|
+
*/
|
|
117
|
+
withPermit<T>(fn: () => Promise<T>): Promise<T>;
|
|
118
|
+
/**
|
|
119
|
+
* Get available permits
|
|
120
|
+
*/
|
|
121
|
+
availablePermits(): number;
|
|
122
|
+
/**
|
|
123
|
+
* Get queue length
|
|
124
|
+
*/
|
|
125
|
+
getQueueLength(): number;
|
|
126
|
+
/**
|
|
127
|
+
* Get semaphore statistics
|
|
128
|
+
*/
|
|
129
|
+
getStats(): {
|
|
130
|
+
name: string;
|
|
131
|
+
availablePermits: number;
|
|
132
|
+
queueLength: number;
|
|
133
|
+
totalPermits: number;
|
|
134
|
+
isContended: boolean;
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=mutex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutex.d.ts","sourceRoot":"","sources":["../src/mutex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,IAAI,CAAS;gBAET,IAAI,GAAE,MAAkB;IAIpC;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B;;;OAGG;IACH,OAAO,IAAI,IAAI;IAYf;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;;OAGG;IACG,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IASnD;;;OAGG;IACH,UAAU,IAAI,OAAO;IAQrB;;OAEG;IACH,QAAQ,IAAI;QACV,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,OAAO,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,OAAO,CAAC;KACtB;CAQF;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,IAAI,CAAS;gBAET,IAAI,GAAE,MAAqB;IAIvC;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAWlC;;OAEG;IACH,WAAW,IAAI,IAAI;IASnB;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAWnC;;OAEG;IACH,YAAY,IAAI,IAAI;IAgBpB;;OAEG;IACG,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAS3D;;OAEG;IACG,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAS5D;;OAEG;IACH,QAAQ,IAAI;QACV,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,OAAO,CAAC;QAChB,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,OAAO,CAAC;KACtB;CAUF;AAED;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,IAAI,CAAS;gBAET,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAA4B;IAK/D;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B;;OAEG;IACH,OAAO,IAAI,IAAI;IASf;;OAEG;IACG,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IASrD;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,QAAQ,IAAI;QACV,IAAI,EAAE,MAAM,CAAC;QACb,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,OAAO,CAAC;KACtB;CASF"}
|