atlas-pipeline-mcp 1.0.19 → 1.0.20

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/dist/tools/git.js CHANGED
@@ -2,91 +2,188 @@
2
2
  * Atlas Server - Git Context Tool
3
3
  *
4
4
  * Provides git repository context including:
5
- * - Current branch and status
6
- * - Recent commit history
7
- * - Uncommitted changes
5
+ * - Current branch and status (cached for performance)
6
+ * - Recent commit history with filtering
7
+ * - Uncommitted changes and diffs
8
8
  * - File history and blame information
9
+ * - Resource-managed git instances
10
+ *
11
+ * Features:
12
+ * - Automatic git instance caching and cleanup
13
+ * - Parallel git operations where safe
14
+ * - Comprehensive error handling
15
+ * - Request deduplication for concurrent calls
16
+ *
17
+ * @module git
18
+ * @version 2.0.0
9
19
  */
10
20
  import { simpleGit } from 'simple-git';
11
- import { logger, getErrorMessage } from '../utils.js';
21
+ import { logger, getErrorMessage, LRUCache, RequestDeduplicator, globalMetrics } from '../utils.js';
22
+ import { ManagedGitInstance, globalResourceManager } from './resource-manager.js';
12
23
  // ============================================================================
13
- // Configuration
24
+ // Configuration and Caching
14
25
  // ============================================================================
26
+ /** Default number of commits to fetch */
15
27
  const DEFAULT_COMMIT_LIMIT = 10;
16
- // Git instance cache to avoid creating new instances for the same repo
17
- const gitInstanceCache = new Map();
18
- const CACHE_TTL_MS = 60000; // 1 minute cache
19
- const MAX_CACHE_SIZE = 10;
28
+ /** Maximum number of commits to fetch (prevents memory issues) */
29
+ const MAX_COMMIT_LIMIT = 1000;
30
+ /** Git operation timeout (30 seconds) */
31
+ const GIT_TIMEOUT_MS = 30000;
32
+ /** Cache TTL for git context (2 minutes) */
33
+ const GIT_CONTEXT_CACHE_TTL = 120000;
34
+ /** Cache size for git operations */
35
+ const GIT_CACHE_SIZE = 50;
36
+ /** Cache for git context results */
37
+ const gitContextCache = new LRUCache(GIT_CACHE_SIZE, GIT_CONTEXT_CACHE_TTL);
38
+ /** Deduplicator for concurrent git operations */
39
+ const gitDeduplicator = new RequestDeduplicator();
40
+ /** Cache for repository validation */
41
+ const repoValidationCache = new LRUCache(100, 300000); // 5 min TTL
20
42
  /**
21
- * Get or create a cached git instance for a repository
43
+ * Get or create a resource-managed git instance for a repository
44
+ * Automatically registers for cleanup and lifecycle management
45
+ *
46
+ * @param repoPath - Repository path
47
+ * @returns SimpleGit instance
22
48
  */
23
49
  function getGitInstance(repoPath) {
24
- const now = Date.now();
25
- const cached = gitInstanceCache.get(repoPath);
26
- if (cached) {
27
- cached.lastAccess = now;
28
- return cached.git;
50
+ const resourceId = `git:${repoPath}`;
51
+ // Check if already registered
52
+ const existing = globalResourceManager.get(resourceId);
53
+ if (existing) {
54
+ return existing.getGit();
29
55
  }
30
- // Cleanup old entries if cache is full
31
- if (gitInstanceCache.size >= MAX_CACHE_SIZE) {
32
- const oldestKey = [...gitInstanceCache.entries()]
33
- .sort((a, b) => a[1].lastAccess - b[1].lastAccess)[0]?.[0];
34
- if (oldestKey)
35
- gitInstanceCache.delete(oldestKey);
36
- }
37
- const git = simpleGit(repoPath);
38
- gitInstanceCache.set(repoPath, { git, lastAccess: now });
56
+ // Create new instance and register it
57
+ const git = simpleGit({
58
+ baseDir: repoPath,
59
+ binary: 'git',
60
+ maxConcurrentProcesses: 6,
61
+ trimmed: false,
62
+ });
63
+ const managedGit = new ManagedGitInstance(repoPath, git);
64
+ globalResourceManager.register(managedGit);
39
65
  return git;
40
66
  }
41
67
  /**
42
- * Wrapper for git operations with consistent error handling
68
+ * Wrapper for git operations with consistent error handling and timeout
69
+ *
70
+ * @template T - Return type
71
+ * @param operation - Operation name for logging
72
+ * @param context - Context for logging
73
+ * @param fn - Async function to execute
74
+ * @param fallback - Fallback value if operation fails
75
+ * @param timeoutMs - Optional timeout in milliseconds
76
+ * @returns Result or fallback value
43
77
  */
44
- async function withGitErrorHandling(operation, context, fn, fallback) {
78
+ async function withGitErrorHandling(operation, context, fn, fallback, timeoutMs = GIT_TIMEOUT_MS) {
45
79
  try {
46
- return await fn();
80
+ // Add timeout to prevent hanging
81
+ const result = await Promise.race([
82
+ fn(),
83
+ new Promise((_, reject) => setTimeout(() => reject(new Error(`Git operation timed out after ${timeoutMs}ms`)), timeoutMs)),
84
+ ]);
85
+ return result;
47
86
  }
48
87
  catch (error) {
49
- logger.error({ error: getErrorMessage(error), ...context }, `Failed to ${operation}`);
88
+ const errorMsg = getErrorMessage(error);
89
+ logger.error({ error: errorMsg, ...context }, `Failed to ${operation}`);
50
90
  return fallback;
51
91
  }
52
92
  }
53
93
  // ============================================================================
54
- // Git Context
94
+ // Git Context Retrieval (Enhanced)
55
95
  // ============================================================================
56
96
  /**
57
- * Get comprehensive git context for a repository
97
+ * Get comprehensive git context for a repository with caching and deduplication
98
+ *
99
+ * @param repoPath - Repository path (will be validated)
100
+ * @param commitLimit - Number of commits to fetch (default: 10, max: 1000)
101
+ * @returns Git context or null if not a valid repository
102
+ *
103
+ * @example
104
+ * ```typescript
105
+ * const context = await getGitContext('/path/to/repo', 20);
106
+ * if (context) {
107
+ * console.log(`Branch: ${context.currentBranch}`);
108
+ * console.log(`Commits: ${context.recentCommits.length}`);
109
+ * }
110
+ * ```
58
111
  */
59
112
  export async function getGitContext(repoPath, commitLimit = DEFAULT_COMMIT_LIMIT) {
60
- return withGitErrorHandling('get git context', { repoPath }, async () => {
61
- const git = getGitInstance(repoPath);
62
- // Check if this is a git repository
113
+ // Input validation
114
+ if (!repoPath || typeof repoPath !== 'string') {
115
+ logger.warn('Invalid repoPath provided to getGitContext');
116
+ return null;
117
+ }
118
+ // Clamp commit limit to prevent excessive memory usage
119
+ const safeCommitLimit = Math.min(Math.max(1, commitLimit), MAX_COMMIT_LIMIT);
120
+ // Check cache first (with commit limit as part of key)
121
+ const cacheKey = `${repoPath}:${safeCommitLimit}`;
122
+ const cached = gitContextCache.get(cacheKey);
123
+ if (cached) {
124
+ logger.debug({ repoPath }, 'Using cached git context');
125
+ return cached;
126
+ }
127
+ // Deduplicate concurrent requests for same repo
128
+ return gitDeduplicator.execute(cacheKey, async () => {
129
+ return globalMetrics.measure('git_get_context', async () => {
130
+ const context = await withGitErrorHandling('get git context', { repoPath }, async () => {
131
+ const git = getGitInstance(repoPath);
132
+ // Check if this is a git repository (with caching)
133
+ const isRepo = await checkIsRepo(repoPath, git);
134
+ if (!isRepo) {
135
+ logger.debug({ repoPath }, 'Not a git repository');
136
+ return null;
137
+ }
138
+ // Gather all context in parallel for performance
139
+ const [branch, status, log, remotes] = await Promise.all([
140
+ git.branch(),
141
+ git.status(),
142
+ git.log({ maxCount: safeCommitLimit }),
143
+ git.getRemotes(true),
144
+ ]);
145
+ const context = {
146
+ currentBranch: branch.current,
147
+ recentCommits: formatCommits(log),
148
+ uncommittedChanges: formatChanges(status),
149
+ remoteUrl: remotes[0]?.refs?.fetch,
150
+ isDirty: !status.isClean(),
151
+ };
152
+ logger.debug({
153
+ branch: context.currentBranch,
154
+ commits: context.recentCommits.length,
155
+ changes: context.uncommittedChanges.length,
156
+ isDirty: context.isDirty,
157
+ }, 'Git context retrieved');
158
+ // Cache the result
159
+ gitContextCache.set(cacheKey, context);
160
+ return context;
161
+ }, null);
162
+ return context;
163
+ }, { repoPath });
164
+ });
165
+ }
166
+ /**
167
+ * Check if directory is a git repository (with caching)
168
+ *
169
+ * @param repoPath - Repository path
170
+ * @param git - Git instance
171
+ * @returns True if valid git repository
172
+ */
173
+ async function checkIsRepo(repoPath, git) {
174
+ const cached = repoValidationCache.get(repoPath);
175
+ if (cached !== undefined) {
176
+ return cached;
177
+ }
178
+ try {
63
179
  const isRepo = await git.checkIsRepo();
64
- if (!isRepo) {
65
- logger.debug({ repoPath }, 'Not a git repository');
66
- return null;
67
- }
68
- // Gather all context in parallel
69
- const [branch, status, log, remotes] = await Promise.all([
70
- git.branch(),
71
- git.status(),
72
- git.log({ maxCount: commitLimit }),
73
- git.getRemotes(true),
74
- ]);
75
- const context = {
76
- currentBranch: branch.current,
77
- recentCommits: formatCommits(log),
78
- uncommittedChanges: formatChanges(status),
79
- remoteUrl: remotes[0]?.refs?.fetch,
80
- isDirty: !status.isClean(),
81
- };
82
- logger.debug({
83
- branch: context.currentBranch,
84
- commits: context.recentCommits.length,
85
- changes: context.uncommittedChanges.length,
86
- isDirty: context.isDirty,
87
- }, 'Git context retrieved');
88
- return context;
89
- }, null);
180
+ repoValidationCache.set(repoPath, isRepo);
181
+ return isRepo;
182
+ }
183
+ catch {
184
+ repoValidationCache.set(repoPath, false);
185
+ return false;
186
+ }
90
187
  }
91
188
  /**
92
189
  * Get the diff for uncommitted changes
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/tools/git.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/tools/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Atlas Server - Resource Management and Cleanup
3
+ *
4
+ * Comprehensive resource lifecycle management to prevent memory leaks:
5
+ * - Automatic cleanup of resources
6
+ * - Graceful shutdown handling
7
+ * - Resource pooling and recycling
8
+ * - Memory usage tracking
9
+ * - File handle management
10
+ *
11
+ * @module resource-manager
12
+ * @version 1.0.0
13
+ */
14
+ import type { SimpleGit } from 'simple-git';
15
+ /**
16
+ * Resource that requires cleanup
17
+ */
18
+ export interface ManagedResource {
19
+ /** Unique identifier for the resource */
20
+ readonly id: string;
21
+ /** Resource type for tracking */
22
+ readonly type: ResourceType;
23
+ /** Timestamp when resource was created */
24
+ readonly createdAt: number;
25
+ /** Last access timestamp for LRU eviction */
26
+ lastAccessedAt: number;
27
+ /** Cleanup function to release the resource */
28
+ cleanup(): Promise<void> | void;
29
+ /** Check if resource is still valid */
30
+ isValid(): boolean;
31
+ }
32
+ /**
33
+ * Types of managed resources
34
+ */
35
+ export type ResourceType = 'git-instance' | 'file-handle' | 'cache' | 'timer' | 'connection' | 'stream' | 'subprocess' | 'other';
36
+ /**
37
+ * Git instance wrapper with lifecycle management
38
+ */
39
+ export declare class ManagedGitInstance implements ManagedResource {
40
+ readonly repoPath: string;
41
+ private git;
42
+ readonly id: string;
43
+ readonly type: ResourceType;
44
+ readonly createdAt: number;
45
+ lastAccessedAt: number;
46
+ constructor(repoPath: string, git: SimpleGit);
47
+ /** Get the git instance and update access time */
48
+ getGit(): SimpleGit;
49
+ /** Check if instance is still valid */
50
+ isValid(): boolean;
51
+ /** Cleanup the git instance */
52
+ cleanup(): Promise<void>;
53
+ }
54
+ /**
55
+ * Centralized resource manager for automatic cleanup
56
+ */
57
+ export declare class ResourceManager {
58
+ private readonly options;
59
+ private resources;
60
+ private cleanupTimer;
61
+ private shutdownHandlers;
62
+ private isShuttingDown;
63
+ constructor(options?: {
64
+ /** Cleanup interval in milliseconds */
65
+ cleanupIntervalMs?: number;
66
+ /** Maximum idle time before resource cleanup (milliseconds) */
67
+ maxIdleTimeMs?: number;
68
+ /** Maximum number of resources to keep */
69
+ maxResources?: number;
70
+ });
71
+ /**
72
+ * Register a resource for management
73
+ */
74
+ register(resource: ManagedResource): void;
75
+ /**
76
+ * Unregister and cleanup a resource
77
+ */
78
+ unregister(id: string): Promise<void>;
79
+ /**
80
+ * Get a resource by ID
81
+ */
82
+ get<T extends ManagedResource>(id: string): T | null;
83
+ /**
84
+ * Check if a resource exists
85
+ */
86
+ has(id: string): boolean;
87
+ /**
88
+ * Get all resources of a specific type
89
+ */
90
+ getByType<T extends ManagedResource>(type: ResourceType): T[];
91
+ /**
92
+ * Perform periodic cleanup of idle resources
93
+ */
94
+ private performCleanup;
95
+ /**
96
+ * Cleanup a single resource
97
+ */
98
+ private cleanupResource;
99
+ /**
100
+ * Register a custom shutdown handler
101
+ */
102
+ onShutdown(handler: () => Promise<void> | void): void;
103
+ /**
104
+ * Graceful shutdown - cleanup all resources
105
+ */
106
+ shutdown(): Promise<void>;
107
+ /**
108
+ * Register signal handlers for graceful shutdown
109
+ */
110
+ private registerShutdownHandlers;
111
+ /**
112
+ * Get resource statistics
113
+ */
114
+ getStats(): {
115
+ total: number;
116
+ byType: Record<ResourceType, number>;
117
+ oldestResourceAge: number;
118
+ };
119
+ }
120
+ /** Global resource manager instance */
121
+ export declare const globalResourceManager: ResourceManager;
122
+ /**
123
+ * Create a managed resource with automatic cleanup
124
+ *
125
+ * @param create - Function to create the resource
126
+ * @param cleanup - Function to cleanup the resource
127
+ * @param options - Resource options
128
+ * @returns The created resource
129
+ */
130
+ export declare function withManagedResource<T>(create: () => Promise<T> | T, cleanup: (resource: T) => Promise<void> | void, options: {
131
+ id: string;
132
+ type: ResourceType;
133
+ autoRegister?: boolean;
134
+ }): Promise<T>;
135
+ /**
136
+ * Execute a function with automatic resource cleanup
137
+ *
138
+ * @param fn - Function to execute
139
+ * @param resources - Resources to cleanup after execution
140
+ * @returns Result of the function
141
+ */
142
+ export declare function withCleanup<T>(fn: () => Promise<T> | T, resources: ManagedResource[]): Promise<T>;
143
+ /**
144
+ * Memory usage monitor
145
+ */
146
+ export declare class MemoryMonitor {
147
+ private readonly threshold;
148
+ private warnings;
149
+ constructor(thresholdMB?: number);
150
+ /**
151
+ * Check current memory usage
152
+ */
153
+ check(): {
154
+ heapUsed: number;
155
+ heapTotal: number;
156
+ external: number;
157
+ rss: number;
158
+ isOverThreshold: boolean;
159
+ };
160
+ /**
161
+ * Force garbage collection if available
162
+ */
163
+ forceGC(): boolean;
164
+ }
165
+ /** Global memory monitor */
166
+ export declare const globalMemoryMonitor: MemoryMonitor;
167
+ //# sourceMappingURL=resource-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-manager.d.ts","sourceRoot":"","sources":["../../src/tools/resource-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAM5C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,6CAA6C;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAChC,uCAAuC;IACvC,OAAO,IAAI,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,cAAc,GACd,aAAa,GACb,OAAO,GACP,OAAO,GACP,YAAY,GACZ,QAAQ,GACR,YAAY,GACZ,OAAO,CAAC;AAEZ;;GAEG;AACH,qBAAa,kBAAmB,YAAW,eAAe;IAOtD,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,OAAO,CAAC,GAAG;IAPb,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAkB;IAC7C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;gBAGZ,QAAQ,EAAE,MAAM,EACjB,GAAG,EAAE,SAAS;IAOxB,kDAAkD;IAClD,MAAM,IAAI,SAAS;IAKnB,uCAAuC;IACvC,OAAO,IAAI,OAAO;IAKlB,+BAA+B;IACzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAK/B;AAMD;;GAEG;AACH,qBAAa,eAAe;IAOxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,OAAO,CAAC,SAAS,CAAsC;IACvD,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,gBAAgB,CAAyC;IACjE,OAAO,CAAC,cAAc,CAAS;gBAGZ,OAAO,GAAE;QACxB,uCAAuC;QACvC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,+DAA+D;QAC/D,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,0CAA0C;QAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;KAClB;IAiBR;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAazC;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3C;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,eAAe,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IASpD;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;OAEG;IACH,SAAS,CAAC,CAAC,SAAS,eAAe,EAAE,IAAI,EAAE,YAAY,GAAG,CAAC,EAAE;IAU7D;;OAEG;YACW,cAAc;IAsC5B;;OAEG;YACW,eAAe;IAY7B;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;IAIrD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAmC/B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA+BhC;;OAEG;IACH,QAAQ,IAAI;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACrC,iBAAiB,EAAE,MAAM,CAAC;KAC3B;CAmBF;AAMD,uCAAuC;AACvC,eAAO,MAAM,qBAAqB,iBAIhC,CAAC;AAMH;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAC5B,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EAC9C,OAAO,EAAE;IACP,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,GACA,OAAO,CAAC,CAAC,CAAC,CAmBZ;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EACxB,SAAS,EAAE,eAAe,EAAE,GAC3B,OAAO,CAAC,CAAC,CAAC,CASZ;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAK;gBAET,WAAW,GAAE,MAAY;IAIrC;;OAEG;IACH,KAAK,IAAI;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;QACZ,eAAe,EAAE,OAAO,CAAC;KAC1B;IA0BD;;OAEG;IACH,OAAO,IAAI,OAAO;CASnB;AAED,4BAA4B;AAC5B,eAAO,MAAM,mBAAmB,eAAyB,CAAC"}