@trentapps/manager-protocol 1.1.1

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.
Files changed (151) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +446 -0
  3. package/dist/analyzers/ArchitectureDetector.d.ts +44 -0
  4. package/dist/analyzers/ArchitectureDetector.d.ts.map +1 -0
  5. package/dist/analyzers/ArchitectureDetector.js +218 -0
  6. package/dist/analyzers/ArchitectureDetector.js.map +1 -0
  7. package/dist/analyzers/CSSAnalyzer.d.ts +104 -0
  8. package/dist/analyzers/CSSAnalyzer.d.ts.map +1 -0
  9. package/dist/analyzers/CSSAnalyzer.js +578 -0
  10. package/dist/analyzers/CSSAnalyzer.js.map +1 -0
  11. package/dist/analyzers/index.d.ts +5 -0
  12. package/dist/analyzers/index.d.ts.map +1 -0
  13. package/dist/analyzers/index.js +5 -0
  14. package/dist/analyzers/index.js.map +1 -0
  15. package/dist/cli.d.ts +8 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +174 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/design-system/index.d.ts +6 -0
  20. package/dist/design-system/index.d.ts.map +1 -0
  21. package/dist/design-system/index.js +6 -0
  22. package/dist/design-system/index.js.map +1 -0
  23. package/dist/design-system/tokens.d.ts +106 -0
  24. package/dist/design-system/tokens.d.ts.map +1 -0
  25. package/dist/design-system/tokens.js +554 -0
  26. package/dist/design-system/tokens.js.map +1 -0
  27. package/dist/engine/AppMonitor.d.ts +162 -0
  28. package/dist/engine/AppMonitor.d.ts.map +1 -0
  29. package/dist/engine/AppMonitor.js +754 -0
  30. package/dist/engine/AppMonitor.js.map +1 -0
  31. package/dist/engine/AuditLogger.d.ts +138 -0
  32. package/dist/engine/AuditLogger.d.ts.map +1 -0
  33. package/dist/engine/AuditLogger.js +448 -0
  34. package/dist/engine/AuditLogger.js.map +1 -0
  35. package/dist/engine/GitHubApprovalManager.d.ts +106 -0
  36. package/dist/engine/GitHubApprovalManager.d.ts.map +1 -0
  37. package/dist/engine/GitHubApprovalManager.js +315 -0
  38. package/dist/engine/GitHubApprovalManager.js.map +1 -0
  39. package/dist/engine/RateLimiter.d.ts +79 -0
  40. package/dist/engine/RateLimiter.d.ts.map +1 -0
  41. package/dist/engine/RateLimiter.js +232 -0
  42. package/dist/engine/RateLimiter.js.map +1 -0
  43. package/dist/engine/RulesEngine.d.ts +77 -0
  44. package/dist/engine/RulesEngine.d.ts.map +1 -0
  45. package/dist/engine/RulesEngine.js +400 -0
  46. package/dist/engine/RulesEngine.js.map +1 -0
  47. package/dist/engine/TaskManager.d.ts +173 -0
  48. package/dist/engine/TaskManager.d.ts.map +1 -0
  49. package/dist/engine/TaskManager.js +678 -0
  50. package/dist/engine/TaskManager.js.map +1 -0
  51. package/dist/engine/index.d.ts +9 -0
  52. package/dist/engine/index.d.ts.map +1 -0
  53. package/dist/engine/index.js +9 -0
  54. package/dist/engine/index.js.map +1 -0
  55. package/dist/index.d.ts +21 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +29 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/rules/architecture.d.ts +9 -0
  60. package/dist/rules/architecture.d.ts.map +1 -0
  61. package/dist/rules/architecture.js +322 -0
  62. package/dist/rules/architecture.js.map +1 -0
  63. package/dist/rules/azure.d.ts +7 -0
  64. package/dist/rules/azure.d.ts.map +1 -0
  65. package/dist/rules/azure.js +138 -0
  66. package/dist/rules/azure.js.map +1 -0
  67. package/dist/rules/compliance.d.ts +9 -0
  68. package/dist/rules/compliance.d.ts.map +1 -0
  69. package/dist/rules/compliance.js +304 -0
  70. package/dist/rules/compliance.js.map +1 -0
  71. package/dist/rules/css.d.ts +10 -0
  72. package/dist/rules/css.d.ts.map +1 -0
  73. package/dist/rules/css.js +1239 -0
  74. package/dist/rules/css.js.map +1 -0
  75. package/dist/rules/flask.d.ts +7 -0
  76. package/dist/rules/flask.d.ts.map +1 -0
  77. package/dist/rules/flask.js +155 -0
  78. package/dist/rules/flask.js.map +1 -0
  79. package/dist/rules/index.d.ts +607 -0
  80. package/dist/rules/index.d.ts.map +1 -0
  81. package/dist/rules/index.js +401 -0
  82. package/dist/rules/index.js.map +1 -0
  83. package/dist/rules/ml-ai.d.ts +7 -0
  84. package/dist/rules/ml-ai.d.ts.map +1 -0
  85. package/dist/rules/ml-ai.js +150 -0
  86. package/dist/rules/ml-ai.js.map +1 -0
  87. package/dist/rules/operational.d.ts +9 -0
  88. package/dist/rules/operational.d.ts.map +1 -0
  89. package/dist/rules/operational.js +318 -0
  90. package/dist/rules/operational.js.map +1 -0
  91. package/dist/rules/security.d.ts +9 -0
  92. package/dist/rules/security.d.ts.map +1 -0
  93. package/dist/rules/security.js +287 -0
  94. package/dist/rules/security.js.map +1 -0
  95. package/dist/rules/storage.d.ts +7 -0
  96. package/dist/rules/storage.d.ts.map +1 -0
  97. package/dist/rules/storage.js +134 -0
  98. package/dist/rules/storage.js.map +1 -0
  99. package/dist/rules/stripe.d.ts +7 -0
  100. package/dist/rules/stripe.d.ts.map +1 -0
  101. package/dist/rules/stripe.js +140 -0
  102. package/dist/rules/stripe.js.map +1 -0
  103. package/dist/rules/testing.d.ts +7 -0
  104. package/dist/rules/testing.d.ts.map +1 -0
  105. package/dist/rules/testing.js +135 -0
  106. package/dist/rules/testing.js.map +1 -0
  107. package/dist/rules/ux.d.ts +9 -0
  108. package/dist/rules/ux.d.ts.map +1 -0
  109. package/dist/rules/ux.js +280 -0
  110. package/dist/rules/ux.js.map +1 -0
  111. package/dist/rules/websocket.d.ts +7 -0
  112. package/dist/rules/websocket.d.ts.map +1 -0
  113. package/dist/rules/websocket.js +136 -0
  114. package/dist/rules/websocket.js.map +1 -0
  115. package/dist/server.d.ts +49 -0
  116. package/dist/server.d.ts.map +1 -0
  117. package/dist/server.js +2330 -0
  118. package/dist/server.js.map +1 -0
  119. package/dist/supervisor/AgentSupervisor.d.ts +235 -0
  120. package/dist/supervisor/AgentSupervisor.d.ts.map +1 -0
  121. package/dist/supervisor/AgentSupervisor.js +596 -0
  122. package/dist/supervisor/AgentSupervisor.js.map +1 -0
  123. package/dist/supervisor/ManagedServerRegistry.d.ts +48 -0
  124. package/dist/supervisor/ManagedServerRegistry.d.ts.map +1 -0
  125. package/dist/supervisor/ManagedServerRegistry.js +145 -0
  126. package/dist/supervisor/ManagedServerRegistry.js.map +1 -0
  127. package/dist/supervisor/ProjectTracker.d.ts +188 -0
  128. package/dist/supervisor/ProjectTracker.d.ts.map +1 -0
  129. package/dist/supervisor/ProjectTracker.js +617 -0
  130. package/dist/supervisor/ProjectTracker.js.map +1 -0
  131. package/dist/supervisor/index.d.ts +6 -0
  132. package/dist/supervisor/index.d.ts.map +1 -0
  133. package/dist/supervisor/index.js +6 -0
  134. package/dist/supervisor/index.js.map +1 -0
  135. package/dist/types/index.d.ts +1176 -0
  136. package/dist/types/index.d.ts.map +1 -0
  137. package/dist/types/index.js +391 -0
  138. package/dist/types/index.js.map +1 -0
  139. package/dist/utils/errors.d.ts +86 -0
  140. package/dist/utils/errors.d.ts.map +1 -0
  141. package/dist/utils/errors.js +171 -0
  142. package/dist/utils/errors.js.map +1 -0
  143. package/dist/utils/index.d.ts +5 -0
  144. package/dist/utils/index.d.ts.map +1 -0
  145. package/dist/utils/index.js +5 -0
  146. package/dist/utils/index.js.map +1 -0
  147. package/dist/utils/shell.d.ts +22 -0
  148. package/dist/utils/shell.d.ts.map +1 -0
  149. package/dist/utils/shell.js +29 -0
  150. package/dist/utils/shell.js.map +1 -0
  151. package/package.json +63 -0
@@ -0,0 +1,617 @@
1
+ /**
2
+ * Project Tracker - Tracks agent activity across projects
3
+ *
4
+ * This system monitors:
5
+ * - Which agents are working in which projects
6
+ * - Real-time agent activity logs per project
7
+ * - Project metadata (git info, path, status)
8
+ * - Historical activity and statistics
9
+ */
10
+ import { exec } from 'child_process';
11
+ import { promisify } from 'util';
12
+ import path from 'path';
13
+ import fs from 'fs';
14
+ const execAsync = promisify(exec);
15
+ class ProjectTracker {
16
+ projects = new Map();
17
+ agents = new Map();
18
+ activityLog = new Map(); // projectId -> activities
19
+ agentActivityIndex = new Map(); // agentId -> activities (performance index)
20
+ agentToProject = new Map(); // agentId -> projectId
21
+ // Configuration
22
+ maxActivitiesPerProject = 1000;
23
+ activityRetentionMs = 24 * 60 * 60 * 1000; // 24 hours
24
+ agentIdleTimeoutMs = 5 * 60 * 1000; // 5 minutes of inactivity = idle
25
+ agentDisconnectTimeoutMs = 30 * 60 * 1000; // 30 minutes = disconnected
26
+ /**
27
+ * Register or update a project
28
+ */
29
+ async registerProject(projectPath) {
30
+ const projectId = this.getProjectId(projectPath);
31
+ let project = this.projects.get(projectId);
32
+ if (!project) {
33
+ project = await this.createProjectInfo(projectPath);
34
+ this.projects.set(projectId, project);
35
+ this.activityLog.set(projectId, []);
36
+ }
37
+ else {
38
+ // Update git info
39
+ await this.updateGitInfo(project, projectPath);
40
+ }
41
+ return project;
42
+ }
43
+ /**
44
+ * Record agent activity in a project
45
+ * NO LONGER auto-creates agent entries - use registerSession() explicitly
46
+ */
47
+ recordActivity(projectPath, agentId, sessionId, activity) {
48
+ const projectId = this.getProjectId(projectPath);
49
+ // Ensure project exists
50
+ if (!this.projects.has(projectId)) {
51
+ // Auto-register project
52
+ this.registerProject(projectPath).catch(console.error);
53
+ }
54
+ // Record activity
55
+ const fullActivity = {
56
+ agentId,
57
+ sessionId,
58
+ timestamp: new Date().toISOString(),
59
+ ...activity
60
+ };
61
+ const activities = this.activityLog.get(projectId) || [];
62
+ activities.unshift(fullActivity); // Add to beginning
63
+ // Trim old activities
64
+ if (activities.length > this.maxActivitiesPerProject) {
65
+ activities.splice(this.maxActivitiesPerProject);
66
+ }
67
+ this.activityLog.set(projectId, activities);
68
+ // Update agent activity index for efficient agent-based queries
69
+ const agentActivities = this.agentActivityIndex.get(agentId) || [];
70
+ agentActivities.unshift(fullActivity);
71
+ if (agentActivities.length > this.maxActivitiesPerProject) {
72
+ agentActivities.splice(this.maxActivitiesPerProject);
73
+ }
74
+ this.agentActivityIndex.set(agentId, agentActivities);
75
+ // Update project stats
76
+ this.updateProjectStats(projectId);
77
+ // Only update agent if it's already registered
78
+ if (this.agents.has(agentId)) {
79
+ this.updateAgentInfo(agentId, sessionId, projectPath);
80
+ this.agentToProject.set(agentId, projectId);
81
+ }
82
+ }
83
+ /**
84
+ * Explicitly register a session/agent working on a project
85
+ * Must be called by services or Claude instances to appear in agent list
86
+ */
87
+ registerSession(params) {
88
+ const projectId = this.getProjectId(params.projectPath);
89
+ // Ensure project exists
90
+ if (!this.projects.has(projectId)) {
91
+ this.registerProject(params.projectPath).catch(console.error);
92
+ }
93
+ let agent = this.agents.get(params.agentId);
94
+ if (!agent) {
95
+ agent = {
96
+ agentId: params.agentId,
97
+ sessionId: params.sessionId,
98
+ currentProject: projectId,
99
+ startTime: new Date().toISOString(),
100
+ lastActivity: new Date().toISOString(),
101
+ actionsCount: 0,
102
+ status: 'active',
103
+ ...(params.agentType && { type: params.agentType }),
104
+ ...(params.metadata && { metadata: params.metadata })
105
+ };
106
+ }
107
+ else {
108
+ agent.currentProject = projectId;
109
+ agent.lastActivity = new Date().toISOString();
110
+ agent.status = 'active';
111
+ if (params.metadata) {
112
+ agent.metadata = { ...agent.metadata, ...params.metadata };
113
+ }
114
+ }
115
+ this.agents.set(params.agentId, agent);
116
+ this.agentToProject.set(params.agentId, projectId);
117
+ return agent;
118
+ }
119
+ /**
120
+ * Explicitly unregister/complete a session
121
+ */
122
+ completeSession(agentId, outcome) {
123
+ const agent = this.agents.get(agentId);
124
+ if (agent) {
125
+ agent.status = 'disconnected';
126
+ agent.completedAt = new Date().toISOString();
127
+ if (outcome) {
128
+ agent.outcome = outcome;
129
+ }
130
+ this.agents.set(agentId, agent);
131
+ // Will be cleaned up by cleanupStaleAgents after retention period
132
+ }
133
+ }
134
+ /**
135
+ * Get all projects
136
+ */
137
+ getProjects() {
138
+ return Array.from(this.projects.values())
139
+ .sort((a, b) => {
140
+ // Sort by last activity, most recent first
141
+ if (!a.lastActivity && !b.lastActivity)
142
+ return 0;
143
+ if (!a.lastActivity)
144
+ return 1;
145
+ if (!b.lastActivity)
146
+ return -1;
147
+ return new Date(b.lastActivity).getTime() - new Date(a.lastActivity).getTime();
148
+ });
149
+ }
150
+ /**
151
+ * Get project by ID or path
152
+ */
153
+ getProject(idOrPath) {
154
+ const projectId = idOrPath.startsWith('/') ? this.getProjectId(idOrPath) : idOrPath;
155
+ return this.projects.get(projectId);
156
+ }
157
+ /**
158
+ * Get project activities
159
+ */
160
+ getProjectActivities(projectId, limit = 100) {
161
+ const activities = this.activityLog.get(projectId) || [];
162
+ return activities.slice(0, limit);
163
+ }
164
+ /**
165
+ * Get agent activities efficiently (uses index, no N+1 queries)
166
+ */
167
+ getAgentActivities(agentId, limit = 100) {
168
+ const activities = this.agentActivityIndex.get(agentId) || [];
169
+ return activities.slice(0, limit);
170
+ }
171
+ /**
172
+ * Get recent activities across all projects efficiently
173
+ * Uses k-way merge for optimal performance (O(n log k) where n=limit, k=projects)
174
+ * Avoids fetching and sorting thousands of activities when only need a few
175
+ */
176
+ getAllRecentActivities(limit = 50) {
177
+ // Create iterators for each project's activity log
178
+ const projectIterators = [];
179
+ for (const [projectId, activities] of this.activityLog.entries()) {
180
+ if (activities.length > 0) {
181
+ const project = this.projects.get(projectId);
182
+ projectIterators.push({
183
+ projectId,
184
+ projectName: project?.name || projectId,
185
+ activities,
186
+ index: 0
187
+ });
188
+ }
189
+ }
190
+ // K-way merge using a simple approach
191
+ const result = [];
192
+ while (result.length < limit && projectIterators.length > 0) {
193
+ // Find the iterator with the most recent activity
194
+ let maxTimestamp = 0;
195
+ let maxIteratorIndex = -1;
196
+ for (let i = 0; i < projectIterators.length; i++) {
197
+ const iterator = projectIterators[i];
198
+ if (iterator.index < iterator.activities.length) {
199
+ const activity = iterator.activities[iterator.index];
200
+ const timestamp = new Date(activity.timestamp).getTime();
201
+ if (timestamp > maxTimestamp) {
202
+ maxTimestamp = timestamp;
203
+ maxIteratorIndex = i;
204
+ }
205
+ }
206
+ }
207
+ // If we found an activity, add it to results
208
+ if (maxIteratorIndex >= 0) {
209
+ const iterator = projectIterators[maxIteratorIndex];
210
+ const activity = iterator.activities[iterator.index];
211
+ result.push({
212
+ ...activity,
213
+ projectId: iterator.projectId,
214
+ projectName: iterator.projectName
215
+ });
216
+ // Move iterator forward
217
+ iterator.index++;
218
+ // Remove iterator if exhausted
219
+ if (iterator.index >= iterator.activities.length) {
220
+ projectIterators.splice(maxIteratorIndex, 1);
221
+ }
222
+ }
223
+ else {
224
+ // No more activities
225
+ break;
226
+ }
227
+ }
228
+ return result;
229
+ }
230
+ /**
231
+ * Clean up stale agents (remove disconnected agents older than retention period)
232
+ */
233
+ cleanupStaleAgents() {
234
+ const now = Date.now();
235
+ const disconnectedRetentionMs = 60 * 60 * 1000; // Keep disconnected for 1 hour
236
+ for (const [agentId, agent] of this.agents.entries()) {
237
+ const lastActivityTime = new Date(agent.lastActivity).getTime();
238
+ const inactiveDuration = now - lastActivityTime;
239
+ // Remove agents that have been disconnected for too long
240
+ if (agent.status === 'disconnected' && inactiveDuration > disconnectedRetentionMs) {
241
+ this.agents.delete(agentId);
242
+ this.agentToProject.delete(agentId);
243
+ continue;
244
+ }
245
+ // Mark idle agents as disconnected if inactive for 30+ minutes
246
+ if (inactiveDuration > this.agentDisconnectTimeoutMs) {
247
+ agent.status = 'disconnected';
248
+ this.agents.set(agentId, agent);
249
+ }
250
+ // Mark active agents as idle if inactive for 5+ minutes
251
+ else if (agent.status === 'active' && inactiveDuration > this.agentIdleTimeoutMs) {
252
+ agent.status = 'idle';
253
+ this.agents.set(agentId, agent);
254
+ }
255
+ }
256
+ }
257
+ /**
258
+ * Get all agents (automatically cleans up stale entries)
259
+ */
260
+ getAgents() {
261
+ this.cleanupStaleAgents();
262
+ return Array.from(this.agents.values())
263
+ .sort((a, b) => new Date(b.lastActivity).getTime() - new Date(a.lastActivity).getTime());
264
+ }
265
+ /**
266
+ * Get agents working in a specific project
267
+ */
268
+ getProjectAgents(projectId) {
269
+ const agents = [];
270
+ for (const [agentId, currentProjectId] of this.agentToProject.entries()) {
271
+ if (currentProjectId === projectId) {
272
+ const agent = this.agents.get(agentId);
273
+ if (agent) {
274
+ agents.push(agent);
275
+ }
276
+ }
277
+ }
278
+ return agents.sort((a, b) => new Date(b.lastActivity).getTime() - new Date(a.lastActivity).getTime());
279
+ }
280
+ /**
281
+ * Get agent by ID
282
+ */
283
+ getAgent(agentId) {
284
+ return this.agents.get(agentId);
285
+ }
286
+ /**
287
+ * Get overall metrics summary
288
+ */
289
+ getMetrics() {
290
+ const now = Date.now();
291
+ const last24h = now - (24 * 60 * 60 * 1000);
292
+ let totalTokens = 0;
293
+ let totalCost = 0;
294
+ let totalLatency = 0;
295
+ let latencyCount = 0;
296
+ let requestCount = 0;
297
+ let errorCount = 0;
298
+ let tokens24h = 0;
299
+ let cost24h = 0;
300
+ let requests24h = 0;
301
+ let errors24h = 0;
302
+ // Aggregate from all project activities
303
+ for (const activities of this.activityLog.values()) {
304
+ for (const activity of activities) {
305
+ const activityTime = new Date(activity.timestamp).getTime();
306
+ const isRecent = activityTime > last24h;
307
+ requestCount++;
308
+ if (isRecent)
309
+ requests24h++;
310
+ if (activity.tokensUsed) {
311
+ totalTokens += activity.tokensUsed;
312
+ if (isRecent)
313
+ tokens24h += activity.tokensUsed;
314
+ }
315
+ if (activity.estimatedCost) {
316
+ totalCost += activity.estimatedCost;
317
+ if (isRecent)
318
+ cost24h += activity.estimatedCost;
319
+ }
320
+ if (activity.latencyMs) {
321
+ totalLatency += activity.latencyMs;
322
+ latencyCount++;
323
+ }
324
+ if (activity.outcome === 'failure') {
325
+ errorCount++;
326
+ if (isRecent)
327
+ errors24h++;
328
+ }
329
+ }
330
+ }
331
+ return {
332
+ totalTokens,
333
+ totalCost,
334
+ avgLatency: latencyCount > 0 ? totalLatency / latencyCount : 0,
335
+ errorRate: requestCount > 0 ? errorCount / requestCount : 0,
336
+ requestCount,
337
+ last24h: {
338
+ tokens: tokens24h,
339
+ cost: cost24h,
340
+ requests: requests24h,
341
+ errors: errors24h
342
+ }
343
+ };
344
+ }
345
+ /**
346
+ * Get metrics for a specific project
347
+ */
348
+ getProjectMetrics(projectId) {
349
+ const now = Date.now();
350
+ const last24h = now - (24 * 60 * 60 * 1000);
351
+ let totalTokens = 0;
352
+ let totalCost = 0;
353
+ let totalLatency = 0;
354
+ let latencyCount = 0;
355
+ let requestCount = 0;
356
+ let errorCount = 0;
357
+ let tokens24h = 0;
358
+ let cost24h = 0;
359
+ let requests24h = 0;
360
+ let errors24h = 0;
361
+ const activities = this.activityLog.get(projectId) || [];
362
+ for (const activity of activities) {
363
+ const activityTime = new Date(activity.timestamp).getTime();
364
+ const isRecent = activityTime > last24h;
365
+ requestCount++;
366
+ if (isRecent)
367
+ requests24h++;
368
+ if (activity.tokensUsed) {
369
+ totalTokens += activity.tokensUsed;
370
+ if (isRecent)
371
+ tokens24h += activity.tokensUsed;
372
+ }
373
+ if (activity.estimatedCost) {
374
+ totalCost += activity.estimatedCost;
375
+ if (isRecent)
376
+ cost24h += activity.estimatedCost;
377
+ }
378
+ if (activity.latencyMs) {
379
+ totalLatency += activity.latencyMs;
380
+ latencyCount++;
381
+ }
382
+ if (activity.outcome === 'failure') {
383
+ errorCount++;
384
+ if (isRecent)
385
+ errors24h++;
386
+ }
387
+ }
388
+ return {
389
+ totalTokens,
390
+ totalCost,
391
+ avgLatency: latencyCount > 0 ? totalLatency / latencyCount : 0,
392
+ errorRate: requestCount > 0 ? errorCount / requestCount : 0,
393
+ requestCount,
394
+ last24h: {
395
+ tokens: tokens24h,
396
+ cost: cost24h,
397
+ requests: requests24h,
398
+ errors: errors24h
399
+ }
400
+ };
401
+ }
402
+ /**
403
+ * Mark agent as disconnected
404
+ */
405
+ markAgentDisconnected(agentId) {
406
+ const agent = this.agents.get(agentId);
407
+ if (agent) {
408
+ agent.status = 'disconnected';
409
+ this.agents.set(agentId, agent);
410
+ }
411
+ // Remove from project mapping
412
+ this.agentToProject.delete(agentId);
413
+ // Update project active agent count
414
+ for (const project of this.projects.values()) {
415
+ project.activeAgents = this.getProjectAgents(project.id).filter(a => a.status === 'active').length;
416
+ }
417
+ }
418
+ /**
419
+ * Clean up old data
420
+ */
421
+ cleanup() {
422
+ const now = Date.now();
423
+ const cutoff = now - this.activityRetentionMs;
424
+ // Clean up old activities
425
+ for (const [projectId, activities] of this.activityLog.entries()) {
426
+ const filtered = activities.filter(a => new Date(a.timestamp).getTime() > cutoff);
427
+ this.activityLog.set(projectId, filtered);
428
+ }
429
+ // Mark idle agents as disconnected
430
+ const idleThreshold = 5 * 60 * 1000; // 5 minutes
431
+ for (const agent of this.agents.values()) {
432
+ const lastActivity = new Date(agent.lastActivity).getTime();
433
+ if (now - lastActivity > idleThreshold && agent.status === 'active') {
434
+ agent.status = 'idle';
435
+ }
436
+ }
437
+ }
438
+ /**
439
+ * Get project ID from path
440
+ */
441
+ getProjectId(projectPath) {
442
+ // Use basename as ID, or full path hash if needed
443
+ const normalized = path.resolve(projectPath);
444
+ return path.basename(normalized) + '-' + this.hashString(normalized);
445
+ }
446
+ /**
447
+ * Create project info from path
448
+ */
449
+ async createProjectInfo(projectPath) {
450
+ const projectId = this.getProjectId(projectPath);
451
+ const name = path.basename(projectPath);
452
+ const info = {
453
+ id: projectId,
454
+ name,
455
+ path: projectPath,
456
+ type: 'directory',
457
+ activeAgents: 0,
458
+ totalActions: 0,
459
+ stats: {
460
+ totalEvents: 0,
461
+ successRate: 0,
462
+ avgRiskScore: 0,
463
+ topCategories: []
464
+ }
465
+ };
466
+ // Check if it's a git repo and get git info
467
+ try {
468
+ const gitDir = path.join(projectPath, '.git');
469
+ if (fs.existsSync(gitDir)) {
470
+ info.type = 'git';
471
+ await this.updateGitInfo(info, projectPath);
472
+ }
473
+ }
474
+ catch (err) {
475
+ // Not a git repo or error reading git info
476
+ }
477
+ return info;
478
+ }
479
+ /**
480
+ * Update git information for a project with proper error handling
481
+ */
482
+ async updateGitInfo(project, projectPath) {
483
+ const timeout = 5000; // 5 second timeout for git commands
484
+ try {
485
+ // Get branch
486
+ try {
487
+ const { stdout: branch } = await execAsync('git rev-parse --abbrev-ref HEAD', {
488
+ cwd: projectPath,
489
+ timeout
490
+ });
491
+ if (branch && branch.trim()) {
492
+ project.gitBranch = branch.trim();
493
+ }
494
+ }
495
+ catch (branchErr) {
496
+ console.warn(`[ProjectTracker] Failed to get git branch for ${projectPath}:`, branchErr.message);
497
+ }
498
+ // Get remote URL
499
+ try {
500
+ const { stdout: remote } = await execAsync('git remote get-url origin', {
501
+ cwd: projectPath,
502
+ timeout
503
+ });
504
+ if (remote && remote.trim()) {
505
+ project.gitRemote = remote.trim();
506
+ // Extract repo name from remote URL
507
+ const match = remote.trim().match(/([^/]+\/[^/]+?)(\.git)?$/);
508
+ if (match) {
509
+ project.gitRepo = match[1].replace('.git', '');
510
+ }
511
+ }
512
+ }
513
+ catch (remoteErr) {
514
+ // Remote might not exist (not pushed yet) - this is normal, don't log
515
+ if (remoteErr.code !== 128) { // Git error code 128 = no remote
516
+ console.warn(`[ProjectTracker] Failed to get git remote for ${projectPath}:`, remoteErr.message);
517
+ }
518
+ }
519
+ // Get latest commit
520
+ try {
521
+ const { stdout: commit } = await execAsync('git rev-parse --short HEAD', {
522
+ cwd: projectPath,
523
+ timeout
524
+ });
525
+ if (commit && commit.trim()) {
526
+ project.gitCommit = commit.trim();
527
+ }
528
+ }
529
+ catch (commitErr) {
530
+ console.warn(`[ProjectTracker] Failed to get git commit for ${projectPath}:`, commitErr.message);
531
+ }
532
+ }
533
+ catch (err) {
534
+ // Overall git failure - log for debugging
535
+ console.error(`[ProjectTracker] Git info update failed for ${projectPath}:`, err);
536
+ }
537
+ }
538
+ /**
539
+ * Update project statistics
540
+ */
541
+ updateProjectStats(projectId) {
542
+ const project = this.projects.get(projectId);
543
+ if (!project)
544
+ return;
545
+ const activities = this.activityLog.get(projectId) || [];
546
+ project.stats.totalEvents = activities.length;
547
+ project.totalActions = activities.length;
548
+ if (activities.length > 0) {
549
+ // Last activity
550
+ project.lastActivity = activities[0].timestamp;
551
+ // Success rate
552
+ const successes = activities.filter(a => a.outcome === 'success').length;
553
+ project.stats.successRate = successes / activities.length;
554
+ // Average risk score
555
+ const withRisk = activities.filter(a => a.riskScore !== undefined);
556
+ if (withRisk.length > 0) {
557
+ const totalRisk = withRisk.reduce((sum, a) => sum + (a.riskScore || 0), 0);
558
+ project.stats.avgRiskScore = totalRisk / withRisk.length;
559
+ }
560
+ // Top categories
561
+ const categoryCounts = new Map();
562
+ for (const activity of activities) {
563
+ const count = categoryCounts.get(activity.category) || 0;
564
+ categoryCounts.set(activity.category, count + 1);
565
+ }
566
+ project.stats.topCategories = Array.from(categoryCounts.entries())
567
+ .map(([category, count]) => ({ category, count }))
568
+ .sort((a, b) => b.count - a.count)
569
+ .slice(0, 5);
570
+ }
571
+ // Update active agents count
572
+ project.activeAgents = this.getProjectAgents(projectId).filter(a => a.status === 'active').length;
573
+ }
574
+ /**
575
+ * Update agent information
576
+ */
577
+ updateAgentInfo(agentId, sessionId, projectPath) {
578
+ const projectId = this.getProjectId(projectPath);
579
+ let agent = this.agents.get(agentId);
580
+ if (!agent) {
581
+ agent = {
582
+ agentId,
583
+ sessionId,
584
+ currentProject: projectId,
585
+ startTime: new Date().toISOString(),
586
+ lastActivity: new Date().toISOString(),
587
+ actionsCount: 1,
588
+ status: 'active'
589
+ };
590
+ }
591
+ else {
592
+ agent.currentProject = projectId;
593
+ agent.lastActivity = new Date().toISOString();
594
+ agent.actionsCount++;
595
+ agent.status = 'active';
596
+ }
597
+ this.agents.set(agentId, agent);
598
+ }
599
+ /**
600
+ * Simple string hash for generating IDs
601
+ */
602
+ hashString(str) {
603
+ let hash = 0;
604
+ for (let i = 0; i < str.length; i++) {
605
+ const char = str.charCodeAt(i);
606
+ hash = ((hash << 5) - hash) + char;
607
+ hash = hash & hash; // Convert to 32bit integer
608
+ }
609
+ return Math.abs(hash).toString(36).substring(0, 8);
610
+ }
611
+ }
612
+ export const projectTracker = new ProjectTracker();
613
+ // Cleanup old data every hour
614
+ setInterval(() => {
615
+ projectTracker.cleanup();
616
+ }, 60 * 60 * 1000);
617
+ //# sourceMappingURL=ProjectTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectTracker.js","sourceRoot":"","sources":["../../src/supervisor/ProjectTracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Supervisor module exports
3
+ */
4
+ export { AgentSupervisor, supervisor, type AgentSupervisorOptions } from './AgentSupervisor.js';
5
+ export { projectTracker, type ProjectInfo, type AgentInfo, type AgentActivity } from './ProjectTracker.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/supervisor/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Supervisor module exports
3
+ */
4
+ export { AgentSupervisor, supervisor } from './AgentSupervisor.js';
5
+ export { projectTracker } from './ProjectTracker.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/supervisor/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,UAAU,EAA+B,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,cAAc,EAAwD,MAAM,qBAAqB,CAAC"}