claude-flow-novice 1.6.2 → 1.6.4
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/.claude/settings.json +16 -5
- package/.claude/settings.local.json +3 -2
- package/.claude-flow-novice/dist/src/api/auth-service.js +84 -38
- package/.claude-flow-novice/dist/src/api/auth-service.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/index.js +3 -0
- package/.claude-flow-novice/dist/src/coordination/index.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v1-transparency/interfaces/v1-transparency-system.js +12 -0
- package/.claude-flow-novice/dist/src/coordination/v1-transparency/interfaces/v1-transparency-system.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v1-transparency/v1-to-v2-bridge.js +433 -0
- package/.claude-flow-novice/dist/src/coordination/v1-transparency/v1-to-v2-bridge.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v1-transparency/v1-transparency-adapter.js +1468 -0
- package/.claude-flow-novice/dist/src/coordination/v1-transparency/v1-transparency-adapter.js.map +1 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/apm-integration.js +724 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/apm-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/datadog-collector.js +363 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/datadog-collector.js.map +1 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/index.js +97 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/newrelic-collector.js +384 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/newrelic-collector.js.map +1 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/performance-optimizer.js +612 -0
- package/.claude-flow-novice/dist/src/monitoring/apm/performance-optimizer.js.map +1 -0
- package/.claude-flow-novice/dist/src/monitoring/metrics-collector.js +282 -0
- package/.claude-flow-novice/dist/src/monitoring/metrics-collector.js.map +1 -0
- package/.claude-flow-novice/dist/src/providers/provider-manager.js +5 -3
- package/.claude-flow-novice/dist/src/providers/provider-manager.js.map +1 -1
- package/.claude-flow-novice/dist/src/providers/tiered-router.js +9 -17
- package/.claude-flow-novice/dist/src/providers/tiered-router.js.map +1 -1
- package/.claude-flow-novice/dist/src/web/api/apm-routes.js +355 -0
- package/.claude-flow-novice/dist/src/web/api/apm-routes.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/frontend/src/utils/security.js +425 -0
- package/.claude-flow-novice/dist/src/web/frontend/src/utils/security.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/security/security-middleware.js +379 -0
- package/.claude-flow-novice/dist/src/web/security/security-middleware.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/websocket/apm-websocket-handler.js +441 -0
- package/.claude-flow-novice/dist/src/web/websocket/apm-websocket-handler.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/websocket/websocket-manager.js +255 -1
- package/.claude-flow-novice/dist/src/web/websocket/websocket-manager.js.map +1 -1
- package/.claude-flow-novice/metrics.db +0 -0
- package/AGENT_PERFORMANCE_GUIDELINES.md +88 -0
- package/CLAUDE.md +103 -3
- package/config/hooks/post-edit-pipeline.js +68 -118
- package/config/hooks/pre-tool-memory-safety.js +209 -0
- package/package.json +9 -4
- package/scripts/cleanup-idle-sessions.sh +59 -0
- package/scripts/monitor-loop.sh +65 -0
- package/scripts/monitor-memory.sh +47 -0
- package/scripts/monitor.py +43 -0
- package/scripts/test-provider-routing.cjs +7 -9
- package/wiki/Provider-Routing.md +57 -69
- package/.claude-flow-novice/metrics.db-shm +0 -0
- package/.claude-flow-novice/metrics.db-wal +0 -0
|
@@ -0,0 +1,433 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V1 to V2 Transparency Bridge
|
|
3
|
+
*
|
|
4
|
+
* Bridges V1 transparency data to V2 transparency interfaces, enabling
|
|
5
|
+
* unified monitoring across both coordination systems. Allows V1 data to be
|
|
6
|
+
* displayed using V2 dashboard components.
|
|
7
|
+
*
|
|
8
|
+
* @module coordination/v1-transparency/v1-to-v2-bridge
|
|
9
|
+
*/ /**
|
|
10
|
+
* V1 to V2 Data Converter
|
|
11
|
+
*
|
|
12
|
+
* Converts V1 transparency data structures to V2-compatible formats
|
|
13
|
+
*/ export class V1ToV2Bridge {
|
|
14
|
+
/**
|
|
15
|
+
* Convert V1 agents to V2 agent hierarchy nodes
|
|
16
|
+
*/ static convertV1AgentsToHierarchy(v1Agents) {
|
|
17
|
+
return v1Agents.map((agent)=>({
|
|
18
|
+
agentId: agent.agentId,
|
|
19
|
+
type: agent.agentType,
|
|
20
|
+
level: agent.level,
|
|
21
|
+
parentAgentId: agent.coordinatorId,
|
|
22
|
+
childAgentIds: agent.childAgentIds,
|
|
23
|
+
priority: agent.capabilities.priority,
|
|
24
|
+
state: this.convertV1StatusToV2(agent.status),
|
|
25
|
+
sessionId: this.generateSessionId(agent.coordinatorId),
|
|
26
|
+
createdAt: agent.timestamps.spawnedAt,
|
|
27
|
+
lastStateChange: agent.timestamps.lastStateChange,
|
|
28
|
+
tokensUsed: this.estimateTokenUsage(agent),
|
|
29
|
+
tokenBudget: agent.capabilities.maxConcurrentTasks * 1000,
|
|
30
|
+
isPaused: agent.status === 'degraded' || agent.status === 'offline',
|
|
31
|
+
metadata: {
|
|
32
|
+
capabilities: agent.capabilities,
|
|
33
|
+
health: agent.health,
|
|
34
|
+
topology: agent.topology,
|
|
35
|
+
dependencies: agent.dependencies
|
|
36
|
+
},
|
|
37
|
+
metrics: {
|
|
38
|
+
spawnTimeMs: this.estimateSpawnTime(agent),
|
|
39
|
+
totalExecutionTimeMs: this.calculateExecutionTime(agent),
|
|
40
|
+
pauseCount: this.estimatePauseCount(agent),
|
|
41
|
+
resumeCount: this.estimateResumeCount(agent),
|
|
42
|
+
checkpointCount: 0
|
|
43
|
+
},
|
|
44
|
+
currentTask: agent.currentTasks[0] || undefined,
|
|
45
|
+
waitingFor: agent.dependencies.waitingFor,
|
|
46
|
+
completedDependencies: []
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Convert V1 agents to V2 agent status
|
|
51
|
+
*/ static convertV1AgentsToStatus(v1Agents) {
|
|
52
|
+
return v1Agents.map((agent)=>({
|
|
53
|
+
agentId: agent.agentId,
|
|
54
|
+
state: this.convertV1StatusToV2(agent.status),
|
|
55
|
+
isPaused: agent.status === 'degraded' || agent.status === 'offline',
|
|
56
|
+
activity: this.getActivityDescription(agent),
|
|
57
|
+
progress: this.calculateProgress(agent),
|
|
58
|
+
estimatedCompletion: this.estimateCompletion(agent),
|
|
59
|
+
tokensUsed: this.estimateTokenUsage(agent),
|
|
60
|
+
tokenUsageRate: this.calculateTokenUsageRate(agent),
|
|
61
|
+
memoryUsage: agent.resources.memoryUsage,
|
|
62
|
+
cpuUsage: agent.resources.cpuUsage,
|
|
63
|
+
lastHeartbeat: agent.timestamps.lastActivity,
|
|
64
|
+
currentMessage: this.getCurrentMessage(agent),
|
|
65
|
+
recentErrors: this.getRecentErrors(agent)
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Convert V1 events to V2 lifecycle events
|
|
70
|
+
*/ static convertV1EventsToLifecycle(v1Events) {
|
|
71
|
+
return v1Events.map((event)=>({
|
|
72
|
+
eventId: event.eventId,
|
|
73
|
+
timestamp: event.timestamp,
|
|
74
|
+
agentId: event.eventData.agentId || 'system',
|
|
75
|
+
eventType: this.convertV1EventTypeToV2(event.eventType),
|
|
76
|
+
eventData: {
|
|
77
|
+
reason: event.eventData.reason,
|
|
78
|
+
previousState: event.eventData.previousState,
|
|
79
|
+
newState: event.eventData.newState,
|
|
80
|
+
checkpointId: undefined,
|
|
81
|
+
taskDescription: this.getTaskDescription(event),
|
|
82
|
+
errorMessage: event.eventData.error,
|
|
83
|
+
metadata: {
|
|
84
|
+
coordinatorId: event.eventData.coordinatorId,
|
|
85
|
+
v1Event: event
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
level: this.getAgentLevel(event),
|
|
89
|
+
parentAgentId: event.eventData.coordinatorId,
|
|
90
|
+
sessionId: this.generateSessionId(event.eventData.coordinatorId || 'system'),
|
|
91
|
+
tokensUsed: this.estimateTokenUsageForEvent(event),
|
|
92
|
+
performanceImpact: {
|
|
93
|
+
duration: this.estimateEventDuration(event),
|
|
94
|
+
memoryDelta: this.estimateMemoryDelta(event),
|
|
95
|
+
tokenCost: this.estimateTokenUsageForEvent(event)
|
|
96
|
+
}
|
|
97
|
+
}));
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Convert V1 metrics to V2 metrics
|
|
101
|
+
*/ static convertV1MetricsToV2(v1Metrics) {
|
|
102
|
+
return {
|
|
103
|
+
totalAgents: v1Metrics.agents.total,
|
|
104
|
+
agentsByLevel: this.groupAgentsByLevel(v1Metrics),
|
|
105
|
+
agentsByState: this.groupAgentsByState(v1Metrics),
|
|
106
|
+
agentsByType: v1Metrics.agents.byType,
|
|
107
|
+
totalTokensConsumed: this.estimateTotalTokens(v1Metrics),
|
|
108
|
+
totalTokensSaved: this.estimateSavedTokens(v1Metrics),
|
|
109
|
+
averageExecutionTimeMs: v1Metrics.performance.averageResponseTime,
|
|
110
|
+
failureRate: v1Metrics.performance.errorRate,
|
|
111
|
+
averagePauseResumeLatencyMs: 0,
|
|
112
|
+
hierarchyDepth: this.calculateHierarchyDepth(v1Metrics),
|
|
113
|
+
dependencyResolutionRate: this.estimateDependencyResolution(v1Metrics),
|
|
114
|
+
eventStreamStats: {
|
|
115
|
+
totalEvents: v1Metrics.events.totalEvents,
|
|
116
|
+
eventsPerSecond: v1Metrics.events.eventsPerSecond,
|
|
117
|
+
eventTypes: v1Metrics.events.eventsByType
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
// ===========================
|
|
122
|
+
// Private Conversion Helpers
|
|
123
|
+
// ===========================
|
|
124
|
+
static convertV1StatusToV2(v1Status) {
|
|
125
|
+
const statusMap = {
|
|
126
|
+
idle: 'idle',
|
|
127
|
+
busy: 'active',
|
|
128
|
+
ready: 'active',
|
|
129
|
+
working: 'active',
|
|
130
|
+
completed: 'completing',
|
|
131
|
+
failed: 'error',
|
|
132
|
+
degraded: 'paused',
|
|
133
|
+
offline: 'terminated',
|
|
134
|
+
initializing: 'checkpointing',
|
|
135
|
+
active: 'active'
|
|
136
|
+
};
|
|
137
|
+
return statusMap[v1Status] || 'idle';
|
|
138
|
+
}
|
|
139
|
+
static generateSessionId(coordinatorId) {
|
|
140
|
+
return `v1-${coordinatorId}`;
|
|
141
|
+
}
|
|
142
|
+
static estimateTokenUsage(agent) {
|
|
143
|
+
// Estimate based on tasks completed and current activity
|
|
144
|
+
const completedTasks = agent.taskStats.completed;
|
|
145
|
+
const currentTasks = agent.currentTasks.length;
|
|
146
|
+
return completedTasks * 50 + currentTasks * 25; // Rough estimate
|
|
147
|
+
}
|
|
148
|
+
static estimateSpawnTime(agent) {
|
|
149
|
+
// V1 agents typically spawn faster than V2
|
|
150
|
+
return agent.agentType.includes('worker') ? 50 : 100;
|
|
151
|
+
}
|
|
152
|
+
static calculateExecutionTime(agent) {
|
|
153
|
+
const timeSinceSpawn = Date.now() - agent.timestamps.spawnedAt.getTime();
|
|
154
|
+
const pauseTime = this.estimatePauseTime(agent);
|
|
155
|
+
return Math.max(0, timeSinceSpawn - pauseTime);
|
|
156
|
+
}
|
|
157
|
+
static estimatePauseCount(agent) {
|
|
158
|
+
return agent.health.consecutiveFailures > 0 ? 1 : 0;
|
|
159
|
+
}
|
|
160
|
+
static estimateResumeCount(agent) {
|
|
161
|
+
return agent.health.consecutiveFailures > 0 ? 1 : 0;
|
|
162
|
+
}
|
|
163
|
+
static getActivityDescription(agent) {
|
|
164
|
+
if (agent.currentTasks.length > 0) {
|
|
165
|
+
return `Processing ${agent.currentTasks.length} task(s)`;
|
|
166
|
+
}
|
|
167
|
+
switch(agent.status){
|
|
168
|
+
case 'idle':
|
|
169
|
+
return 'Idle, waiting for tasks';
|
|
170
|
+
case 'busy':
|
|
171
|
+
return 'Busy with assigned tasks';
|
|
172
|
+
case 'ready':
|
|
173
|
+
return 'Ready for task assignment';
|
|
174
|
+
case 'working':
|
|
175
|
+
return 'Actively working';
|
|
176
|
+
case 'degraded':
|
|
177
|
+
return 'Performance degraded';
|
|
178
|
+
case 'offline':
|
|
179
|
+
return 'Agent offline';
|
|
180
|
+
default:
|
|
181
|
+
return `Status: ${agent.status}`;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
static calculateProgress(agent) {
|
|
185
|
+
if (agent.taskStats.total === 0) return 0;
|
|
186
|
+
return agent.taskStats.completed / agent.taskStats.total * 100;
|
|
187
|
+
}
|
|
188
|
+
static estimateCompletion(agent) {
|
|
189
|
+
// Estimate completion based on current workload
|
|
190
|
+
const remainingTasks = agent.taskStats.total - agent.taskStats.completed;
|
|
191
|
+
if (remainingTasks === 0) return undefined;
|
|
192
|
+
const avgTaskTime = agent.health.averageResponseTime;
|
|
193
|
+
const remainingTime = remainingTasks * avgTaskTime;
|
|
194
|
+
return new Date(Date.now() + remainingTime);
|
|
195
|
+
}
|
|
196
|
+
static calculateTokenUsageRate(agent) {
|
|
197
|
+
// Rough estimate based on recent activity
|
|
198
|
+
const timeSinceLastActivity = Date.now() - agent.timestamps.lastActivity.getTime();
|
|
199
|
+
if (timeSinceLastActivity > 60000) return 0; // No activity for 1 minute
|
|
200
|
+
return agent.resources.cpuUsage * 10; // Estimate based on CPU usage
|
|
201
|
+
}
|
|
202
|
+
static getCurrentMessage(agent) {
|
|
203
|
+
if (agent.currentTasks.length === 0) return undefined;
|
|
204
|
+
return {
|
|
205
|
+
uuid: agent.currentTasks[0],
|
|
206
|
+
type: agent.agentType,
|
|
207
|
+
startedAt: agent.timestamps.lastActivity,
|
|
208
|
+
estimatedDuration: agent.health.averageResponseTime
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
static getRecentErrors(agent) {
|
|
212
|
+
const errors = [];
|
|
213
|
+
// Convert health issues to error entries
|
|
214
|
+
if (agent.health.consecutiveFailures > 0) {
|
|
215
|
+
errors.push({
|
|
216
|
+
timestamp: agent.health.lastHealthCheck,
|
|
217
|
+
error: `Agent has ${agent.health.consecutiveFailures} consecutive failures`,
|
|
218
|
+
severity: agent.health.consecutiveFailures > 3 ? 'critical' : 'error'
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
if (agent.status === 'degraded') {
|
|
222
|
+
errors.push({
|
|
223
|
+
timestamp: agent.timestamps.lastStateChange,
|
|
224
|
+
error: 'Agent performance degraded',
|
|
225
|
+
severity: 'warning'
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
return errors;
|
|
229
|
+
}
|
|
230
|
+
static convertV1EventTypeToV2(v1EventType) {
|
|
231
|
+
const eventMap = {
|
|
232
|
+
'agent_spawned': 'spawned',
|
|
233
|
+
'agent_status_changed': 'state_changed',
|
|
234
|
+
'task_delegated': 'task_assigned',
|
|
235
|
+
'task_completed': 'task_completed',
|
|
236
|
+
'task_failed': 'error_occurred',
|
|
237
|
+
'coordinator_initialized': 'spawned',
|
|
238
|
+
'coordinator_status_changed': 'state_changed',
|
|
239
|
+
'error_occurred': 'error_occurred'
|
|
240
|
+
};
|
|
241
|
+
return eventMap[v1EventType] || 'state_changed';
|
|
242
|
+
}
|
|
243
|
+
static getTaskDescription(event) {
|
|
244
|
+
if (event.eventData.taskId) {
|
|
245
|
+
return `Task ${event.eventData.taskId} ${event.eventType}`;
|
|
246
|
+
}
|
|
247
|
+
return undefined;
|
|
248
|
+
}
|
|
249
|
+
static getAgentLevel(event) {
|
|
250
|
+
if (event.eventData.agentId) {
|
|
251
|
+
// V1 agents are typically level 2 under coordinators
|
|
252
|
+
return 2;
|
|
253
|
+
}
|
|
254
|
+
return 1; // Coordinators are level 1
|
|
255
|
+
}
|
|
256
|
+
static estimateTokenUsageForEvent(event) {
|
|
257
|
+
// Estimate token cost based on event type
|
|
258
|
+
const eventCosts = {
|
|
259
|
+
'agent_spawned': 100,
|
|
260
|
+
'task_assigned': 50,
|
|
261
|
+
'task_completed': 25,
|
|
262
|
+
'task_failed': 10,
|
|
263
|
+
'error_occurred': 5,
|
|
264
|
+
'state_changed': 2
|
|
265
|
+
};
|
|
266
|
+
return eventCosts[event.eventType] || 5;
|
|
267
|
+
}
|
|
268
|
+
static estimateEventDuration(event) {
|
|
269
|
+
// Estimate event processing time
|
|
270
|
+
const eventDurations = {
|
|
271
|
+
'agent_spawned': 100,
|
|
272
|
+
'task_assigned': 50,
|
|
273
|
+
'task_completed': 25,
|
|
274
|
+
'task_failed': 30,
|
|
275
|
+
'error_occurred': 10,
|
|
276
|
+
'state_changed': 5
|
|
277
|
+
};
|
|
278
|
+
return eventDurations[event.eventType] || 5;
|
|
279
|
+
}
|
|
280
|
+
static estimateMemoryDelta(event) {
|
|
281
|
+
// Estimate memory impact of event
|
|
282
|
+
const eventMemory = {
|
|
283
|
+
'agent_spawned': 1024,
|
|
284
|
+
'task_assigned': 512,
|
|
285
|
+
'task_completed': 256,
|
|
286
|
+
'task_failed': 128,
|
|
287
|
+
'error_occurred': 64,
|
|
288
|
+
'state_changed': 32
|
|
289
|
+
};
|
|
290
|
+
return eventMemory[event.eventType] || 32;
|
|
291
|
+
}
|
|
292
|
+
static groupAgentsByLevel(v1Metrics) {
|
|
293
|
+
// V1 has coordinators at level 1 and agents at level 2
|
|
294
|
+
return {
|
|
295
|
+
1: v1Metrics.coordinators.total,
|
|
296
|
+
2: v1Metrics.agents.total
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
static groupAgentsByState(v1Metrics) {
|
|
300
|
+
return {
|
|
301
|
+
idle: v1Metrics.agents.idle,
|
|
302
|
+
active: v1Metrics.agents.active,
|
|
303
|
+
busy: v1Metrics.agents.busy,
|
|
304
|
+
degraded: v1Metrics.agents.degraded,
|
|
305
|
+
offline: v1Metrics.agents.offline
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
static estimateTotalTokens(v1Metrics) {
|
|
309
|
+
// Rough estimate based on task completion
|
|
310
|
+
return v1Metrics.tasks.completed * 75 + v1Metrics.tasks.active * 50;
|
|
311
|
+
}
|
|
312
|
+
static estimateSavedTokens(v1Metrics) {
|
|
313
|
+
// Estimate tokens saved by paused/degraded agents
|
|
314
|
+
const pausedAgents = v1Metrics.agents.degraded + v1Metrics.agents.offline;
|
|
315
|
+
return pausedAgents * 100; // Rough estimate
|
|
316
|
+
}
|
|
317
|
+
static calculateHierarchyDepth(v1Metrics) {
|
|
318
|
+
// V1 has coordinator (level 1) and agents (level 2)
|
|
319
|
+
return v1Metrics.coordinators.total > 0 ? 2 : 0;
|
|
320
|
+
}
|
|
321
|
+
static estimateDependencyResolution(v1Metrics) {
|
|
322
|
+
// V1 dependency tracking is different from V2
|
|
323
|
+
return 85; // Rough estimate
|
|
324
|
+
}
|
|
325
|
+
static estimatePauseTime(agent) {
|
|
326
|
+
// Estimate time spent in degraded state
|
|
327
|
+
return agent.status === 'degraded' ? 30000 : 0; // 30 seconds for degraded
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* V1-to-V2 Transparency Bridge Factory
|
|
332
|
+
*
|
|
333
|
+
* Creates bridge instances for seamless integration between V1 and V2 systems
|
|
334
|
+
*/ export class V1ToV2BridgeFactory {
|
|
335
|
+
/**
|
|
336
|
+
* Create a bridge that wraps V1 transparency system with V2 interface
|
|
337
|
+
*/ static createBridge(v1System) {
|
|
338
|
+
return {
|
|
339
|
+
async getHierarchyNodes () {
|
|
340
|
+
const v1Agents = await v1System.getAllAgents();
|
|
341
|
+
return V1ToV2Bridge.convertV1AgentsToHierarchy(v1Agents);
|
|
342
|
+
},
|
|
343
|
+
async getAgentStatuses () {
|
|
344
|
+
const v1Agents = await v1System.getAllAgents();
|
|
345
|
+
return V1ToV2Bridge.convertV1AgentsToStatus(v1Agents);
|
|
346
|
+
},
|
|
347
|
+
async getLifecycleEvents (limit = 100, eventType) {
|
|
348
|
+
const v1Events = await v1System.getRecentEvents(limit, eventType);
|
|
349
|
+
return V1ToV2Bridge.convertV1EventsToLifecycle(v1Events);
|
|
350
|
+
},
|
|
351
|
+
async getMetrics () {
|
|
352
|
+
const v1Metrics = await v1System.getTransparencyMetrics();
|
|
353
|
+
return V1ToV2Bridge.convertV1MetricsToV2(v1Metrics);
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Create a hybrid transparency system that works with both V1 and V2
|
|
359
|
+
*/ static createHybridTransparencySystem(v1System, v2System// V2 transparency system if available
|
|
360
|
+
) {
|
|
361
|
+
return {
|
|
362
|
+
async getHierarchyNodes () {
|
|
363
|
+
// If V2 is available, try to get V2 data, otherwise use V1
|
|
364
|
+
if (v2System) {
|
|
365
|
+
try {
|
|
366
|
+
return await v2System.getAgentHierarchy();
|
|
367
|
+
} catch (error) {
|
|
368
|
+
console.warn('V2 system not available, falling back to V1');
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
const v1Agents = await v1System.getAllAgents();
|
|
372
|
+
return V1ToV2Bridge.convertV1AgentsToHierarchy(v1Agents);
|
|
373
|
+
},
|
|
374
|
+
async getAgentStatuses () {
|
|
375
|
+
if (v2System) {
|
|
376
|
+
try {
|
|
377
|
+
return await v2System.getAllAgentStatuses();
|
|
378
|
+
} catch (error) {
|
|
379
|
+
console.warn('V2 system not available, falling back to V1');
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
const v1Agents = await v1System.getAllAgents();
|
|
383
|
+
return V1ToV2Bridge.convertV1AgentsToStatus(v1Agents);
|
|
384
|
+
},
|
|
385
|
+
async getLifecycleEvents (limit = 100, eventType) {
|
|
386
|
+
if (v2System) {
|
|
387
|
+
try {
|
|
388
|
+
const v2Events = await v2System.getRecentEvents(limit, eventType);
|
|
389
|
+
const v1Events = await v1System.getRecentEvents(limit, eventType);
|
|
390
|
+
// Combine and sort events
|
|
391
|
+
const allEvents = [
|
|
392
|
+
...v2Events,
|
|
393
|
+
...V1ToV2Bridge.convertV1EventsToLifecycle(v1Events)
|
|
394
|
+
];
|
|
395
|
+
return allEvents.sort((a, b)=>b.timestamp.getTime() - a.timestamp.getTime()).slice(0, limit);
|
|
396
|
+
} catch (error) {
|
|
397
|
+
console.warn('V2 system not available, falling back to V1');
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
const v1Events = await v1System.getRecentEvents(limit, eventType);
|
|
401
|
+
return V1ToV2Bridge.convertV1EventsToLifecycle(v1Events);
|
|
402
|
+
},
|
|
403
|
+
async getMetrics () {
|
|
404
|
+
if (v2System) {
|
|
405
|
+
try {
|
|
406
|
+
const v2Metrics = await v2System.getTransparencyMetrics();
|
|
407
|
+
const v1Metrics = await v1System.getTransparencyMetrics();
|
|
408
|
+
// Combine metrics
|
|
409
|
+
return {
|
|
410
|
+
...v2Metrics,
|
|
411
|
+
totalAgents: v2Metrics.totalAgents + v1Metrics.agents.total,
|
|
412
|
+
agentsByLevel: {
|
|
413
|
+
...v2Metrics.agentsByLevel,
|
|
414
|
+
...V1ToV2Bridge.groupAgentsByLevel(v1Metrics)
|
|
415
|
+
},
|
|
416
|
+
// Add V1-specific metrics
|
|
417
|
+
v1Specific: {
|
|
418
|
+
coordinators: v1Metrics.coordinators,
|
|
419
|
+
v1Agents: v1Metrics.agents
|
|
420
|
+
}
|
|
421
|
+
};
|
|
422
|
+
} catch (error) {
|
|
423
|
+
console.warn('V2 system not available, falling back to V1');
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
const v1Metrics = await v1System.getTransparencyMetrics();
|
|
427
|
+
return V1ToV2Bridge.convertV1MetricsToV2(v1Metrics);
|
|
428
|
+
}
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
//# sourceMappingURL=v1-to-v2-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/coordination/v1-transparency/v1-to-v2-bridge.ts"],"names":["V1ToV2Bridge","convertV1AgentsToHierarchy","v1Agents","map","agent","agentId","type","agentType","level","parentAgentId","coordinatorId","childAgentIds","priority","capabilities","state","convertV1StatusToV2","status","sessionId","generateSessionId","createdAt","timestamps","spawnedAt","lastStateChange","tokensUsed","estimateTokenUsage","tokenBudget","maxConcurrentTasks","isPaused","metadata","health","topology","dependencies","metrics","spawnTimeMs","estimateSpawnTime","totalExecutionTimeMs","calculateExecutionTime","pauseCount","estimatePauseCount","resumeCount","estimateResumeCount","checkpointCount","currentTask","currentTasks","undefined","waitingFor","completedDependencies","convertV1AgentsToStatus","activity","getActivityDescription","progress","calculateProgress","estimatedCompletion","estimateCompletion","tokenUsageRate","calculateTokenUsageRate","memoryUsage","resources","cpuUsage","lastHeartbeat","lastActivity","currentMessage","getCurrentMessage","recentErrors","getRecentErrors","convertV1EventsToLifecycle","v1Events","event","eventId","timestamp","eventData","eventType","convertV1EventTypeToV2","reason","previousState","newState","checkpointId","taskDescription","getTaskDescription","errorMessage","error","v1Event","getAgentLevel","estimateTokenUsageForEvent","performanceImpact","duration","estimateEventDuration","memoryDelta","estimateMemoryDelta","tokenCost","convertV1MetricsToV2","v1Metrics","totalAgents","agents","total","agentsByLevel","groupAgentsByLevel","agentsByState","groupAgentsByState","agentsByType","byType","totalTokensConsumed","estimateTotalTokens","totalTokensSaved","estimateSavedTokens","averageExecutionTimeMs","performance","averageResponseTime","failureRate","errorRate","averagePauseResumeLatencyMs","hierarchyDepth","calculateHierarchyDepth","dependencyResolutionRate","estimateDependencyResolution","eventStreamStats","totalEvents","events","eventsPerSecond","eventTypes","eventsByType","v1Status","statusMap","idle","busy","ready","working","completed","failed","degraded","offline","initializing","active","completedTasks","taskStats","length","includes","timeSinceSpawn","Date","now","getTime","pauseTime","estimatePauseTime","Math","max","consecutiveFailures","remainingTasks","avgTaskTime","remainingTime","timeSinceLastActivity","uuid","startedAt","estimatedDuration","errors","push","lastHealthCheck","severity","v1EventType","eventMap","taskId","eventCosts","eventDurations","eventMemory","coordinators","tasks","pausedAgents","V1ToV2BridgeFactory","createBridge","v1System","getHierarchyNodes","getAllAgents","getAgentStatuses","getLifecycleEvents","limit","getRecentEvents","getMetrics","getTransparencyMetrics","createHybridTransparencySystem","v2System","getAgentHierarchy","console","warn","getAllAgentStatuses","v2Events","allEvents","sort","a","b","slice","v2Metrics","v1Specific"],"mappings":"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"}
|