agentic-qe 1.8.3 → 1.9.0
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/skills/agentic-jujutsu/SKILL.md +645 -0
- package/.claude/skills/cicd-pipeline-qe-orchestrator/README.md +2 -2
- package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +6 -6
- package/CHANGELOG.md +595 -0
- package/README.md +117 -16
- package/config/constitution.schema.json +423 -0
- package/config/otel-collector.yaml +234 -0
- package/dist/App.d.ts +5 -0
- package/dist/App.d.ts.map +1 -0
- package/dist/App.js +15 -0
- package/dist/App.js.map +1 -0
- package/dist/cli/commands/constitution.d.ts +34 -0
- package/dist/cli/commands/constitution.d.ts.map +1 -0
- package/dist/cli/commands/constitution.js +679 -0
- package/dist/cli/commands/constitution.js.map +1 -0
- package/dist/cli/commands/init-claude-md-template.js +3 -3
- package/dist/cli/commands/init.d.ts +8 -75
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +22 -2292
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/telemetry.d.ts +36 -0
- package/dist/cli/commands/telemetry.d.ts.map +1 -0
- package/dist/cli/commands/telemetry.js +364 -0
- package/dist/cli/commands/telemetry.js.map +1 -0
- package/dist/cli/index.js +66 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/agents.d.ts +22 -0
- package/dist/cli/init/agents.d.ts.map +1 -0
- package/dist/cli/init/agents.js +522 -0
- package/dist/cli/init/agents.js.map +1 -0
- package/dist/cli/init/bash-wrapper.d.ts +14 -0
- package/dist/cli/init/bash-wrapper.d.ts.map +1 -0
- package/dist/cli/init/bash-wrapper.js +47 -0
- package/dist/cli/init/bash-wrapper.js.map +1 -0
- package/dist/cli/init/claude-config.d.ts +24 -0
- package/dist/cli/init/claude-config.d.ts.map +1 -0
- package/dist/cli/init/claude-config.js +275 -0
- package/dist/cli/init/claude-config.js.map +1 -0
- package/dist/cli/init/claude-md.d.ts +19 -0
- package/dist/cli/init/claude-md.d.ts.map +1 -0
- package/dist/cli/init/claude-md.js +153 -0
- package/dist/cli/init/claude-md.js.map +1 -0
- package/dist/cli/init/commands.d.ts +6 -0
- package/dist/cli/init/commands.d.ts.map +1 -0
- package/dist/cli/init/commands.js +83 -0
- package/dist/cli/init/commands.js.map +1 -0
- package/dist/cli/init/database-init.d.ts +15 -0
- package/dist/cli/init/database-init.d.ts.map +1 -0
- package/dist/cli/init/database-init.js +203 -0
- package/dist/cli/init/database-init.js.map +1 -0
- package/dist/cli/init/directory-structure.d.ts +14 -0
- package/dist/cli/init/directory-structure.d.ts.map +1 -0
- package/dist/cli/init/directory-structure.js +107 -0
- package/dist/cli/init/directory-structure.js.map +1 -0
- package/dist/cli/init/documentation.d.ts +14 -0
- package/dist/cli/init/documentation.d.ts.map +1 -0
- package/dist/cli/init/documentation.js +195 -0
- package/dist/cli/init/documentation.js.map +1 -0
- package/dist/cli/init/fleet-config.d.ts +34 -0
- package/dist/cli/init/fleet-config.d.ts.map +1 -0
- package/dist/cli/init/fleet-config.js +269 -0
- package/dist/cli/init/fleet-config.js.map +1 -0
- package/dist/cli/init/helpers.d.ts +6 -0
- package/dist/cli/init/helpers.d.ts.map +1 -0
- package/dist/cli/init/helpers.js +94 -0
- package/dist/cli/init/helpers.js.map +1 -0
- package/dist/cli/init/index.d.ts +32 -0
- package/dist/cli/init/index.d.ts.map +1 -0
- package/dist/cli/init/index.js +294 -0
- package/dist/cli/init/index.js.map +1 -0
- package/dist/cli/init/skills.d.ts +6 -0
- package/dist/cli/init/skills.d.ts.map +1 -0
- package/dist/cli/init/skills.js +138 -0
- package/dist/cli/init/skills.js.map +1 -0
- package/dist/cli/init/utils/file-utils.d.ts +74 -0
- package/dist/cli/init/utils/file-utils.d.ts.map +1 -0
- package/dist/cli/init/utils/file-utils.js +187 -0
- package/dist/cli/init/utils/file-utils.js.map +1 -0
- package/dist/cli/init/utils/index.d.ts +18 -0
- package/dist/cli/init/utils/index.d.ts.map +1 -0
- package/dist/cli/init/utils/index.js +48 -0
- package/dist/cli/init/utils/index.js.map +1 -0
- package/dist/cli/init/utils/log-utils.d.ts +47 -0
- package/dist/cli/init/utils/log-utils.d.ts.map +1 -0
- package/dist/cli/init/utils/log-utils.js +68 -0
- package/dist/cli/init/utils/log-utils.js.map +1 -0
- package/dist/cli/init/utils/path-utils.d.ts +91 -0
- package/dist/cli/init/utils/path-utils.d.ts.map +1 -0
- package/dist/cli/init/utils/path-utils.js +208 -0
- package/dist/cli/init/utils/path-utils.js.map +1 -0
- package/dist/cli/init/utils/validation-utils.d.ts +44 -0
- package/dist/cli/init/utils/validation-utils.d.ts.map +1 -0
- package/dist/cli/init/utils/validation-utils.js +68 -0
- package/dist/cli/init/utils/validation-utils.js.map +1 -0
- package/dist/cli/init/utils.d.ts +183 -0
- package/dist/cli/init/utils.d.ts.map +1 -0
- package/dist/cli/init/utils.js +354 -0
- package/dist/cli/init/utils.js.map +1 -0
- package/dist/components/Dashboard/Dashboard.d.ts +4 -0
- package/dist/components/Dashboard/Dashboard.d.ts.map +1 -0
- package/dist/components/Dashboard/Dashboard.js +148 -0
- package/dist/components/Dashboard/Dashboard.js.map +1 -0
- package/dist/components/Dashboard/DashboardHeader.d.ts +4 -0
- package/dist/components/Dashboard/DashboardHeader.d.ts.map +1 -0
- package/dist/components/Dashboard/DashboardHeader.js +138 -0
- package/dist/components/Dashboard/DashboardHeader.js.map +1 -0
- package/dist/constitution/evaluators/ast-evaluator.d.ts +42 -0
- package/dist/constitution/evaluators/ast-evaluator.d.ts.map +1 -0
- package/dist/constitution/evaluators/ast-evaluator.js +303 -0
- package/dist/constitution/evaluators/ast-evaluator.js.map +1 -0
- package/dist/constitution/evaluators/base.d.ts +144 -0
- package/dist/constitution/evaluators/base.d.ts.map +1 -0
- package/dist/constitution/evaluators/base.js +144 -0
- package/dist/constitution/evaluators/base.js.map +1 -0
- package/dist/constitution/evaluators/index.d.ts +19 -0
- package/dist/constitution/evaluators/index.d.ts.map +1 -0
- package/dist/constitution/evaluators/index.js +56 -0
- package/dist/constitution/evaluators/index.js.map +1 -0
- package/dist/constitution/evaluators/metric-evaluator.d.ts +59 -0
- package/dist/constitution/evaluators/metric-evaluator.d.ts.map +1 -0
- package/dist/constitution/evaluators/metric-evaluator.js +195 -0
- package/dist/constitution/evaluators/metric-evaluator.js.map +1 -0
- package/dist/constitution/evaluators/pattern-evaluator.d.ts +66 -0
- package/dist/constitution/evaluators/pattern-evaluator.d.ts.map +1 -0
- package/dist/constitution/evaluators/pattern-evaluator.js +221 -0
- package/dist/constitution/evaluators/pattern-evaluator.js.map +1 -0
- package/dist/constitution/evaluators/semantic-evaluator.d.ts +68 -0
- package/dist/constitution/evaluators/semantic-evaluator.d.ts.map +1 -0
- package/dist/constitution/evaluators/semantic-evaluator.js +250 -0
- package/dist/constitution/evaluators/semantic-evaluator.js.map +1 -0
- package/dist/constitution/index.d.ts +105 -0
- package/dist/constitution/index.d.ts.map +1 -0
- package/dist/constitution/index.js +207 -0
- package/dist/constitution/index.js.map +1 -0
- package/dist/constitution/loader.d.ts +141 -0
- package/dist/constitution/loader.d.ts.map +1 -0
- package/dist/constitution/loader.js +515 -0
- package/dist/constitution/loader.js.map +1 -0
- package/dist/constitution/schema.d.ts +409 -0
- package/dist/constitution/schema.d.ts.map +1 -0
- package/dist/constitution/schema.js +71 -0
- package/dist/constitution/schema.js.map +1 -0
- package/dist/contexts/DashboardContext.d.ts +41 -0
- package/dist/contexts/DashboardContext.d.ts.map +1 -0
- package/dist/contexts/DashboardContext.js +187 -0
- package/dist/contexts/DashboardContext.js.map +1 -0
- package/dist/core/memory/MemoryManagerFactory.d.ts +77 -0
- package/dist/core/memory/MemoryManagerFactory.d.ts.map +1 -0
- package/dist/core/memory/MemoryManagerFactory.js +270 -0
- package/dist/core/memory/MemoryManagerFactory.js.map +1 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts +58 -0
- package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
- package/dist/core/memory/SwarmMemoryManager.js +375 -131
- package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
- package/dist/core/memory/index.d.ts +1 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +12 -1
- package/dist/core/memory/index.js.map +1 -1
- package/dist/hooks/useKeyboardShortcuts.d.ts +12 -0
- package/dist/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/dist/hooks/useKeyboardShortcuts.js +69 -0
- package/dist/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/mcp/handlers/memory/memory-backup.js +6 -6
- package/dist/mcp/handlers/memory/memory-backup.js.map +1 -1
- package/dist/mcp/handlers/phase2/Phase2Tools.d.ts.map +1 -1
- package/dist/mcp/handlers/phase2/Phase2Tools.js +4 -2
- package/dist/mcp/handlers/phase2/Phase2Tools.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +4 -38
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
- package/dist/mcp/services/AgentRegistry.js +4 -4
- package/dist/mcp/services/AgentRegistry.js.map +1 -1
- package/dist/persistence/event-store.d.ts +162 -0
- package/dist/persistence/event-store.d.ts.map +1 -0
- package/dist/persistence/event-store.js +315 -0
- package/dist/persistence/event-store.js.map +1 -0
- package/dist/persistence/index.d.ts +145 -0
- package/dist/persistence/index.d.ts.map +1 -0
- package/dist/persistence/index.js +227 -0
- package/dist/persistence/index.js.map +1 -0
- package/dist/persistence/metrics-aggregator.d.ts +187 -0
- package/dist/persistence/metrics-aggregator.d.ts.map +1 -0
- package/dist/persistence/metrics-aggregator.js +495 -0
- package/dist/persistence/metrics-aggregator.js.map +1 -0
- package/dist/persistence/reasoning-store.d.ts +178 -0
- package/dist/persistence/reasoning-store.d.ts.map +1 -0
- package/dist/persistence/reasoning-store.js +440 -0
- package/dist/persistence/reasoning-store.js.map +1 -0
- package/dist/persistence/schema.d.ts +181 -0
- package/dist/persistence/schema.d.ts.map +1 -0
- package/dist/persistence/schema.js +186 -0
- package/dist/persistence/schema.js.map +1 -0
- package/dist/telemetry/bootstrap.d.ts +67 -0
- package/dist/telemetry/bootstrap.d.ts.map +1 -0
- package/dist/telemetry/bootstrap.js +320 -0
- package/dist/telemetry/bootstrap.js.map +1 -0
- package/dist/telemetry/index.d.ts +16 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +84 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/instrumentation/agent.d.ts +158 -0
- package/dist/telemetry/instrumentation/agent.d.ts.map +1 -0
- package/dist/telemetry/instrumentation/agent.js +372 -0
- package/dist/telemetry/instrumentation/agent.js.map +1 -0
- package/dist/telemetry/instrumentation/index.d.ts +24 -0
- package/dist/telemetry/instrumentation/index.d.ts.map +1 -0
- package/dist/telemetry/instrumentation/index.js +54 -0
- package/dist/telemetry/instrumentation/index.js.map +1 -0
- package/dist/telemetry/instrumentation/memory.d.ts +313 -0
- package/dist/telemetry/instrumentation/memory.d.ts.map +1 -0
- package/dist/telemetry/instrumentation/memory.js +552 -0
- package/dist/telemetry/instrumentation/memory.js.map +1 -0
- package/dist/telemetry/instrumentation/task.d.ts +146 -0
- package/dist/telemetry/instrumentation/task.d.ts.map +1 -0
- package/dist/telemetry/instrumentation/task.js +305 -0
- package/dist/telemetry/instrumentation/task.js.map +1 -0
- package/dist/telemetry/metrics/agent-metrics.d.ts +109 -0
- package/dist/telemetry/metrics/agent-metrics.d.ts.map +1 -0
- package/dist/telemetry/metrics/agent-metrics.js +213 -0
- package/dist/telemetry/metrics/agent-metrics.js.map +1 -0
- package/dist/telemetry/metrics/collectors/cost.d.ts +246 -0
- package/dist/telemetry/metrics/collectors/cost.d.ts.map +1 -0
- package/dist/telemetry/metrics/collectors/cost.js +526 -0
- package/dist/telemetry/metrics/collectors/cost.js.map +1 -0
- package/dist/telemetry/metrics/collectors/pricing-config.d.ts +87 -0
- package/dist/telemetry/metrics/collectors/pricing-config.d.ts.map +1 -0
- package/dist/telemetry/metrics/collectors/pricing-config.js +207 -0
- package/dist/telemetry/metrics/collectors/pricing-config.js.map +1 -0
- package/dist/telemetry/metrics/index.d.ts +54 -0
- package/dist/telemetry/metrics/index.d.ts.map +1 -0
- package/dist/telemetry/metrics/index.js +116 -0
- package/dist/telemetry/metrics/index.js.map +1 -0
- package/dist/telemetry/metrics/quality-metrics.d.ts +171 -0
- package/dist/telemetry/metrics/quality-metrics.d.ts.map +1 -0
- package/dist/telemetry/metrics/quality-metrics.js +259 -0
- package/dist/telemetry/metrics/quality-metrics.js.map +1 -0
- package/dist/telemetry/metrics/system-metrics.d.ts +129 -0
- package/dist/telemetry/metrics/system-metrics.d.ts.map +1 -0
- package/dist/telemetry/metrics/system-metrics.js +380 -0
- package/dist/telemetry/metrics/system-metrics.js.map +1 -0
- package/dist/telemetry/types.d.ts +195 -0
- package/dist/telemetry/types.d.ts.map +1 -0
- package/dist/telemetry/types.js +90 -0
- package/dist/telemetry/types.js.map +1 -0
- package/dist/visualization/api/RestEndpoints.d.ts +136 -0
- package/dist/visualization/api/RestEndpoints.d.ts.map +1 -0
- package/dist/visualization/api/RestEndpoints.js +428 -0
- package/dist/visualization/api/RestEndpoints.js.map +1 -0
- package/dist/visualization/api/WebSocketServer.d.ts +165 -0
- package/dist/visualization/api/WebSocketServer.d.ts.map +1 -0
- package/dist/visualization/api/WebSocketServer.js +518 -0
- package/dist/visualization/api/WebSocketServer.js.map +1 -0
- package/dist/visualization/core/DataTransformer.d.ts +89 -0
- package/dist/visualization/core/DataTransformer.d.ts.map +1 -0
- package/dist/visualization/core/DataTransformer.js +478 -0
- package/dist/visualization/core/DataTransformer.js.map +1 -0
- package/dist/visualization/index.d.ts +92 -0
- package/dist/visualization/index.d.ts.map +1 -0
- package/dist/visualization/index.js +121 -0
- package/dist/visualization/index.js.map +1 -0
- package/dist/visualization/types.d.ts +148 -0
- package/dist/visualization/types.d.ts.map +1 -0
- package/dist/visualization/types.js +7 -0
- package/dist/visualization/types.js.map +1 -0
- package/dist/voting/consensus.d.ts +87 -0
- package/dist/voting/consensus.d.ts.map +1 -0
- package/dist/voting/consensus.js +568 -0
- package/dist/voting/consensus.js.map +1 -0
- package/dist/voting/index.d.ts +12 -0
- package/dist/voting/index.d.ts.map +1 -0
- package/dist/voting/index.js +36 -0
- package/dist/voting/index.js.map +1 -0
- package/dist/voting/orchestrator.d.ts +65 -0
- package/dist/voting/orchestrator.d.ts.map +1 -0
- package/dist/voting/orchestrator.js +306 -0
- package/dist/voting/orchestrator.js.map +1 -0
- package/dist/voting/panel-assembly.d.ts +54 -0
- package/dist/voting/panel-assembly.d.ts.map +1 -0
- package/dist/voting/panel-assembly.js +192 -0
- package/dist/voting/panel-assembly.js.map +1 -0
- package/dist/voting/protocol.d.ts +119 -0
- package/dist/voting/protocol.d.ts.map +1 -0
- package/dist/voting/protocol.js +18 -0
- package/dist/voting/protocol.js.map +1 -0
- package/dist/voting/types.d.ts +125 -0
- package/dist/voting/types.d.ts.map +1 -0
- package/dist/voting/types.js +7 -0
- package/dist/voting/types.js.map +1 -0
- package/package.json +43 -2
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Agent Performance Metrics for Agentic QE Fleet
|
|
4
|
+
*
|
|
5
|
+
* Metrics for tracking agent task execution, performance, and resource usage.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.createAgentMetrics = createAgentMetrics;
|
|
9
|
+
exports.getAgentMetrics = getAgentMetrics;
|
|
10
|
+
exports.recordAgentTask = recordAgentTask;
|
|
11
|
+
exports.recordAgentCount = recordAgentCount;
|
|
12
|
+
exports.createModelRoutingMetrics = createModelRoutingMetrics;
|
|
13
|
+
exports.createLearningMetrics = createLearningMetrics;
|
|
14
|
+
const bootstrap_1 = require("../bootstrap");
|
|
15
|
+
const types_1 = require("../types");
|
|
16
|
+
// Singleton metrics instance
|
|
17
|
+
let agentMetrics = null;
|
|
18
|
+
/**
|
|
19
|
+
* Initialize agent metrics
|
|
20
|
+
*
|
|
21
|
+
* @param meter - OpenTelemetry Meter instance
|
|
22
|
+
* @returns Agent metrics registry
|
|
23
|
+
*/
|
|
24
|
+
function createAgentMetrics(meter) {
|
|
25
|
+
if (agentMetrics) {
|
|
26
|
+
return agentMetrics;
|
|
27
|
+
}
|
|
28
|
+
const m = meter || (0, bootstrap_1.getMeter)();
|
|
29
|
+
agentMetrics = {
|
|
30
|
+
taskCount: m.createCounter(types_1.METRIC_NAMES.AGENT_TASK_COUNT, {
|
|
31
|
+
description: 'Total number of tasks executed by agents',
|
|
32
|
+
unit: 'tasks',
|
|
33
|
+
}),
|
|
34
|
+
taskDuration: m.createHistogram(types_1.METRIC_NAMES.AGENT_TASK_DURATION, {
|
|
35
|
+
description: 'Distribution of agent task execution durations',
|
|
36
|
+
unit: 'ms',
|
|
37
|
+
advice: {
|
|
38
|
+
explicitBucketBoundaries: types_1.HISTOGRAM_BOUNDARIES.taskDuration,
|
|
39
|
+
},
|
|
40
|
+
}),
|
|
41
|
+
successCount: m.createCounter(`${types_1.METRIC_NAMES.AGENT_TASK_COUNT}.success`, {
|
|
42
|
+
description: 'Total number of successful agent tasks',
|
|
43
|
+
unit: 'tasks',
|
|
44
|
+
}),
|
|
45
|
+
errorCount: m.createCounter(types_1.METRIC_NAMES.AGENT_ERROR_COUNT, {
|
|
46
|
+
description: 'Total number of failed agent tasks',
|
|
47
|
+
unit: 'errors',
|
|
48
|
+
}),
|
|
49
|
+
tokenUsage: m.createCounter(types_1.METRIC_NAMES.AGENT_TOKEN_USAGE, {
|
|
50
|
+
description: 'Total tokens consumed by agents',
|
|
51
|
+
unit: 'tokens',
|
|
52
|
+
}),
|
|
53
|
+
costTotal: m.createCounter(types_1.METRIC_NAMES.AGENT_COST, {
|
|
54
|
+
description: 'Total cost incurred by agent operations',
|
|
55
|
+
unit: 'USD',
|
|
56
|
+
}),
|
|
57
|
+
activeAgents: m.createUpDownCounter(types_1.METRIC_NAMES.AGENT_ACTIVE_COUNT, {
|
|
58
|
+
description: 'Number of currently active agents in the fleet',
|
|
59
|
+
unit: 'agents',
|
|
60
|
+
}),
|
|
61
|
+
};
|
|
62
|
+
return agentMetrics;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get initialized agent metrics
|
|
66
|
+
*
|
|
67
|
+
* @returns Agent metrics registry
|
|
68
|
+
*/
|
|
69
|
+
function getAgentMetrics() {
|
|
70
|
+
if (!agentMetrics) {
|
|
71
|
+
return createAgentMetrics();
|
|
72
|
+
}
|
|
73
|
+
return agentMetrics;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Record a completed agent task
|
|
77
|
+
*
|
|
78
|
+
* @param agentType - Type of agent (e.g., test-generator, coverage-analyzer)
|
|
79
|
+
* @param taskType - Type of task executed
|
|
80
|
+
* @param durationMs - Task duration in milliseconds
|
|
81
|
+
* @param success - Whether the task succeeded
|
|
82
|
+
* @param options - Additional recording options
|
|
83
|
+
*/
|
|
84
|
+
function recordAgentTask(agentType, taskType, durationMs, success, options) {
|
|
85
|
+
const metrics = getAgentMetrics();
|
|
86
|
+
const attributes = {
|
|
87
|
+
'agent.type': agentType,
|
|
88
|
+
'task.type': taskType,
|
|
89
|
+
'task.status': success ? 'success' : 'failed',
|
|
90
|
+
};
|
|
91
|
+
if (options?.agentId) {
|
|
92
|
+
attributes['agent.id'] = options.agentId;
|
|
93
|
+
}
|
|
94
|
+
if (options?.taskId) {
|
|
95
|
+
attributes['task.id'] = options.taskId;
|
|
96
|
+
}
|
|
97
|
+
if (options?.priority) {
|
|
98
|
+
attributes['task.priority'] = options.priority;
|
|
99
|
+
}
|
|
100
|
+
// Record task count
|
|
101
|
+
metrics.taskCount.add(1, attributes);
|
|
102
|
+
// Record duration
|
|
103
|
+
metrics.taskDuration.record(durationMs, attributes);
|
|
104
|
+
// Record success/failure
|
|
105
|
+
if (success) {
|
|
106
|
+
metrics.successCount.add(1, attributes);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
metrics.errorCount.add(1, attributes);
|
|
110
|
+
}
|
|
111
|
+
// Record token usage if provided
|
|
112
|
+
if (options?.tokensUsed && options.tokensUsed > 0) {
|
|
113
|
+
metrics.tokenUsage.add(options.tokensUsed, attributes);
|
|
114
|
+
}
|
|
115
|
+
// Record cost if provided
|
|
116
|
+
if (options?.cost && options.cost > 0) {
|
|
117
|
+
metrics.costTotal.add(options.cost, attributes);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Record agent spawn/despawn
|
|
122
|
+
*
|
|
123
|
+
* @param agentType - Type of agent
|
|
124
|
+
* @param delta - Change in agent count (+1 for spawn, -1 for despawn)
|
|
125
|
+
* @param attributes - Additional attributes
|
|
126
|
+
*/
|
|
127
|
+
function recordAgentCount(agentType, delta, attributes) {
|
|
128
|
+
const metrics = getAgentMetrics();
|
|
129
|
+
metrics.activeAgents.add(delta, {
|
|
130
|
+
'agent.type': agentType,
|
|
131
|
+
...attributes,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Create model routing metrics
|
|
136
|
+
*
|
|
137
|
+
* @param meter - OpenTelemetry Meter instance
|
|
138
|
+
* @returns Model routing metrics
|
|
139
|
+
*/
|
|
140
|
+
function createModelRoutingMetrics(meter) {
|
|
141
|
+
const m = meter || (0, bootstrap_1.getMeter)();
|
|
142
|
+
return {
|
|
143
|
+
routingCount: m.createCounter('aqe.model.routing.count', {
|
|
144
|
+
description: 'Number of model routing decisions',
|
|
145
|
+
unit: 'routes',
|
|
146
|
+
}),
|
|
147
|
+
routingLatency: m.createHistogram('aqe.model.routing.latency', {
|
|
148
|
+
description: 'Model routing decision latency',
|
|
149
|
+
unit: 'ms',
|
|
150
|
+
advice: {
|
|
151
|
+
explicitBucketBoundaries: [1, 5, 10, 25, 50, 100, 250, 500],
|
|
152
|
+
},
|
|
153
|
+
}),
|
|
154
|
+
modelInvocationCount: m.createCounter('aqe.model.invocation.count', {
|
|
155
|
+
description: 'Number of model invocations',
|
|
156
|
+
unit: 'invocations',
|
|
157
|
+
}),
|
|
158
|
+
modelTokensInput: m.createCounter('aqe.model.tokens.input', {
|
|
159
|
+
description: 'Total input tokens sent to models',
|
|
160
|
+
unit: 'tokens',
|
|
161
|
+
}),
|
|
162
|
+
modelTokensOutput: m.createCounter('aqe.model.tokens.output', {
|
|
163
|
+
description: 'Total output tokens received from models',
|
|
164
|
+
unit: 'tokens',
|
|
165
|
+
}),
|
|
166
|
+
modelCost: m.createCounter('aqe.model.cost', {
|
|
167
|
+
description: 'Total cost of model invocations',
|
|
168
|
+
unit: 'USD',
|
|
169
|
+
}),
|
|
170
|
+
modelLatency: m.createHistogram('aqe.model.invocation.latency', {
|
|
171
|
+
description: 'Model invocation latency',
|
|
172
|
+
unit: 'ms',
|
|
173
|
+
advice: {
|
|
174
|
+
explicitBucketBoundaries: [100, 250, 500, 1000, 2500, 5000, 10000, 30000],
|
|
175
|
+
},
|
|
176
|
+
}),
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Learning and pattern metrics for agents
|
|
181
|
+
*/
|
|
182
|
+
function createLearningMetrics(meter) {
|
|
183
|
+
const m = meter || (0, bootstrap_1.getMeter)();
|
|
184
|
+
return {
|
|
185
|
+
patternMatchCount: m.createCounter('aqe.learning.pattern.match.count', {
|
|
186
|
+
description: 'Number of pattern matches found',
|
|
187
|
+
unit: 'matches',
|
|
188
|
+
}),
|
|
189
|
+
patternMatchScore: m.createHistogram('aqe.learning.pattern.match.score', {
|
|
190
|
+
description: 'Distribution of pattern match scores',
|
|
191
|
+
unit: 'score',
|
|
192
|
+
advice: {
|
|
193
|
+
explicitBucketBoundaries: [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0],
|
|
194
|
+
},
|
|
195
|
+
}),
|
|
196
|
+
learningEpisodeCount: m.createCounter('aqe.learning.episode.count', {
|
|
197
|
+
description: 'Number of learning episodes recorded',
|
|
198
|
+
unit: 'episodes',
|
|
199
|
+
}),
|
|
200
|
+
rewardScore: m.createHistogram('aqe.learning.reward.score', {
|
|
201
|
+
description: 'Distribution of reward scores',
|
|
202
|
+
unit: 'score',
|
|
203
|
+
advice: {
|
|
204
|
+
explicitBucketBoundaries: [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0],
|
|
205
|
+
},
|
|
206
|
+
}),
|
|
207
|
+
experienceBufferSize: m.createUpDownCounter('aqe.learning.buffer.size', {
|
|
208
|
+
description: 'Current size of experience replay buffer',
|
|
209
|
+
unit: 'experiences',
|
|
210
|
+
}),
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=agent-metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-metrics.js","sourceRoot":"","sources":["../../../src/telemetry/metrics/agent-metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token and Cost Tracking Collector (Phase 2 - Action A5)
|
|
3
|
+
*
|
|
4
|
+
* Implements middleware for tracking LLM token usage and costs across agents,
|
|
5
|
+
* tasks, and fleet operations. Supports multiple LLM providers with accurate
|
|
6
|
+
* cost calculations based on pricing tables.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Token counting for input/output from all LLM API responses
|
|
10
|
+
* - Per-agent cost tracking with attribution
|
|
11
|
+
* - Fleet-wide cost aggregation
|
|
12
|
+
* - Support for Anthropic, OpenRouter, ONNX (local), OpenAI
|
|
13
|
+
* - Prometheus-compatible metric export
|
|
14
|
+
* - Cache-aware cost calculation (write premium, read discount)
|
|
15
|
+
*
|
|
16
|
+
* @module telemetry/metrics/collectors/cost
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* LLM provider pricing configuration
|
|
20
|
+
*
|
|
21
|
+
* Prices are per million tokens (input/output).
|
|
22
|
+
* Updated: January 2025
|
|
23
|
+
*/
|
|
24
|
+
export interface ProviderPricing {
|
|
25
|
+
/** Provider name */
|
|
26
|
+
provider: 'anthropic' | 'openrouter' | 'openai' | 'onnx';
|
|
27
|
+
/** Model identifier */
|
|
28
|
+
model: string;
|
|
29
|
+
/** Input token cost per million */
|
|
30
|
+
inputCostPerMillion: number;
|
|
31
|
+
/** Output token cost per million */
|
|
32
|
+
outputCostPerMillion: number;
|
|
33
|
+
/** Cache write cost per million (if supported) */
|
|
34
|
+
cacheWriteCostPerMillion?: number;
|
|
35
|
+
/** Cache read cost per million (if supported) */
|
|
36
|
+
cacheReadCostPerMillion?: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Pricing table for supported LLM providers
|
|
40
|
+
*
|
|
41
|
+
* Anthropic pricing (January 2025):
|
|
42
|
+
* - Claude Sonnet 4.5: $3.00 input / $15.00 output per 1M tokens
|
|
43
|
+
* - Cache write: 25% premium ($3.75/M)
|
|
44
|
+
* - Cache read: 90% discount ($0.30/M)
|
|
45
|
+
*
|
|
46
|
+
* OpenRouter: ~99% cost savings vs Anthropic
|
|
47
|
+
* ONNX: $0 (local inference)
|
|
48
|
+
*/
|
|
49
|
+
export declare const PRICING_TABLE: ProviderPricing[];
|
|
50
|
+
/**
|
|
51
|
+
* Token usage from LLM API response
|
|
52
|
+
*/
|
|
53
|
+
export interface TokenUsage {
|
|
54
|
+
/** Input tokens (prompt) */
|
|
55
|
+
inputTokens: number;
|
|
56
|
+
/** Output tokens (completion) */
|
|
57
|
+
outputTokens: number;
|
|
58
|
+
/** Cache creation tokens (Anthropic only) */
|
|
59
|
+
cacheCreationTokens?: number;
|
|
60
|
+
/** Cache read tokens (Anthropic only) */
|
|
61
|
+
cacheReadTokens?: number;
|
|
62
|
+
/** Total tokens */
|
|
63
|
+
totalTokens: number;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Cost breakdown for an LLM call
|
|
67
|
+
*/
|
|
68
|
+
export interface CostBreakdown {
|
|
69
|
+
/** Input cost in USD */
|
|
70
|
+
inputCost: number;
|
|
71
|
+
/** Output cost in USD */
|
|
72
|
+
outputCost: number;
|
|
73
|
+
/** Cache write cost in USD (if applicable) */
|
|
74
|
+
cacheWriteCost?: number;
|
|
75
|
+
/** Cache read cost in USD (if applicable) */
|
|
76
|
+
cacheReadCost?: number;
|
|
77
|
+
/** Total cost in USD */
|
|
78
|
+
totalCost: number;
|
|
79
|
+
/** Cost savings from caching in USD (if applicable) */
|
|
80
|
+
cacheSavings?: number;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Token and cost metrics for an agent or task
|
|
84
|
+
*/
|
|
85
|
+
export interface TokenMetrics {
|
|
86
|
+
/** Agent or task identifier */
|
|
87
|
+
id: string;
|
|
88
|
+
/** Type (agent or task) */
|
|
89
|
+
type: 'agent' | 'task' | 'fleet';
|
|
90
|
+
/** Token usage */
|
|
91
|
+
tokens: TokenUsage;
|
|
92
|
+
/** Cost breakdown */
|
|
93
|
+
cost: CostBreakdown;
|
|
94
|
+
/** Provider and model used */
|
|
95
|
+
provider: string;
|
|
96
|
+
model: string;
|
|
97
|
+
/** Timestamp */
|
|
98
|
+
timestamp: number;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* CostTracker
|
|
102
|
+
*
|
|
103
|
+
* Middleware for tracking LLM token usage and costs with OpenTelemetry metrics.
|
|
104
|
+
*
|
|
105
|
+
* Usage:
|
|
106
|
+
* 1. Wrap LLM calls with trackTokens()
|
|
107
|
+
* 2. Extract usage from API response
|
|
108
|
+
* 3. Metrics automatically exported to OTEL collector
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* const costTracker = new CostTracker();
|
|
113
|
+
*
|
|
114
|
+
* // Track Anthropic call
|
|
115
|
+
* const response = await anthropic.messages.create({...});
|
|
116
|
+
* costTracker.trackTokens({
|
|
117
|
+
* agentId: 'test-gen-001',
|
|
118
|
+
* taskId: 'task-123',
|
|
119
|
+
* provider: 'anthropic',
|
|
120
|
+
* model: 'claude-sonnet-4',
|
|
121
|
+
* usage: {
|
|
122
|
+
* inputTokens: response.usage.input_tokens,
|
|
123
|
+
* outputTokens: response.usage.output_tokens,
|
|
124
|
+
* cacheCreationTokens: response.usage.cache_creation_input_tokens,
|
|
125
|
+
* cacheReadTokens: response.usage.cache_read_input_tokens,
|
|
126
|
+
* totalTokens: response.usage.input_tokens + response.usage.output_tokens,
|
|
127
|
+
* },
|
|
128
|
+
* });
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
export declare class CostTracker {
|
|
132
|
+
private tokenCounter;
|
|
133
|
+
private costCounter;
|
|
134
|
+
private tokenHistogram;
|
|
135
|
+
private costHistogram;
|
|
136
|
+
private activeAgentsGauge;
|
|
137
|
+
private agentMetrics;
|
|
138
|
+
private taskMetrics;
|
|
139
|
+
private fleetMetrics;
|
|
140
|
+
constructor();
|
|
141
|
+
/**
|
|
142
|
+
* Track token usage and costs for an LLM call
|
|
143
|
+
*
|
|
144
|
+
* Extracts token counts from API response, calculates costs using pricing table,
|
|
145
|
+
* and records metrics to OpenTelemetry.
|
|
146
|
+
*
|
|
147
|
+
* @param params - Tracking parameters
|
|
148
|
+
*/
|
|
149
|
+
trackTokens(params: {
|
|
150
|
+
agentId: string;
|
|
151
|
+
taskId?: string;
|
|
152
|
+
provider: string;
|
|
153
|
+
model: string;
|
|
154
|
+
usage: TokenUsage;
|
|
155
|
+
attributes?: Record<string, string | number>;
|
|
156
|
+
}): void;
|
|
157
|
+
/**
|
|
158
|
+
* Get pricing configuration for a provider/model
|
|
159
|
+
*/
|
|
160
|
+
private getPricing;
|
|
161
|
+
/**
|
|
162
|
+
* Calculate cost breakdown from token usage
|
|
163
|
+
*/
|
|
164
|
+
private calculateCost;
|
|
165
|
+
/**
|
|
166
|
+
* Update agent-level metrics (accumulate)
|
|
167
|
+
*/
|
|
168
|
+
private updateAgentMetrics;
|
|
169
|
+
/**
|
|
170
|
+
* Update task-level metrics
|
|
171
|
+
*/
|
|
172
|
+
private updateTaskMetrics;
|
|
173
|
+
/**
|
|
174
|
+
* Update fleet-wide metrics
|
|
175
|
+
*/
|
|
176
|
+
private updateFleetMetrics;
|
|
177
|
+
/**
|
|
178
|
+
* Initialize empty fleet metrics
|
|
179
|
+
*/
|
|
180
|
+
private initializeFleetMetrics;
|
|
181
|
+
/**
|
|
182
|
+
* Record metrics to OpenTelemetry
|
|
183
|
+
*/
|
|
184
|
+
private recordMetrics;
|
|
185
|
+
/**
|
|
186
|
+
* Get metrics for a specific agent
|
|
187
|
+
*/
|
|
188
|
+
getAgentMetrics(agentId: string): TokenMetrics | null;
|
|
189
|
+
/**
|
|
190
|
+
* Get metrics for a specific task
|
|
191
|
+
*/
|
|
192
|
+
getTaskMetrics(taskId: string): TokenMetrics | null;
|
|
193
|
+
/**
|
|
194
|
+
* Get fleet-wide metrics
|
|
195
|
+
*/
|
|
196
|
+
getFleetMetrics(): TokenMetrics | null;
|
|
197
|
+
/**
|
|
198
|
+
* Get all agent metrics
|
|
199
|
+
*/
|
|
200
|
+
getAllAgentMetrics(): Map<string, TokenMetrics>;
|
|
201
|
+
/**
|
|
202
|
+
* Reset all metrics (for testing)
|
|
203
|
+
*/
|
|
204
|
+
reset(): void;
|
|
205
|
+
/**
|
|
206
|
+
* Export metrics in Prometheus format
|
|
207
|
+
*/
|
|
208
|
+
exportPrometheusMetrics(): string;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Get or create the global CostTracker instance
|
|
212
|
+
*/
|
|
213
|
+
export declare function getCostTracker(): CostTracker;
|
|
214
|
+
/**
|
|
215
|
+
* Middleware wrapper for LLM calls with automatic token tracking
|
|
216
|
+
*
|
|
217
|
+
* @example
|
|
218
|
+
* ```typescript
|
|
219
|
+
* const callLLM = withTokenTracking(
|
|
220
|
+
* async (prompt: string) => {
|
|
221
|
+
* const response = await anthropic.messages.create({
|
|
222
|
+
* model: 'claude-sonnet-4',
|
|
223
|
+
* messages: [{ role: 'user', content: prompt }],
|
|
224
|
+
* });
|
|
225
|
+
* return response;
|
|
226
|
+
* },
|
|
227
|
+
* {
|
|
228
|
+
* agentId: 'test-gen-001',
|
|
229
|
+
* taskId: 'task-123',
|
|
230
|
+
* provider: 'anthropic',
|
|
231
|
+
* model: 'claude-sonnet-4',
|
|
232
|
+
* }
|
|
233
|
+
* );
|
|
234
|
+
*
|
|
235
|
+
* const result = await callLLM('Generate tests for...');
|
|
236
|
+
* ```
|
|
237
|
+
*/
|
|
238
|
+
export declare function withTokenTracking<T extends {
|
|
239
|
+
usage: any;
|
|
240
|
+
}>(fn: (...args: any[]) => Promise<T>, context: {
|
|
241
|
+
agentId: string;
|
|
242
|
+
taskId?: string;
|
|
243
|
+
provider: string;
|
|
244
|
+
model: string;
|
|
245
|
+
}): (...args: any[]) => Promise<T>;
|
|
246
|
+
//# sourceMappingURL=cost.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../../../../src/telemetry/metrics/collectors/cost.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,oBAAoB;IACpB,QAAQ,EAAE,WAAW,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;IACzD,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oCAAoC;IACpC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kDAAkD;IAClD,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,iDAAiD;IACjD,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,EAAE,eAAe,EA8E1C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,yCAAyC;IACzC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6CAA6C;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,2BAA2B;IAC3B,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IACjC,kBAAkB;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,qBAAqB;IACrB,IAAI,EAAE,aAAa,CAAC;IACpB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,WAAW;IAEtB,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,cAAc,CAAY;IAClC,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,iBAAiB,CAAgB;IAGzC,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,WAAW,CAAwC;IAC3D,OAAO,CAAC,YAAY,CAA6B;;IAsCjD;;;;;;;OAOG;IACH,WAAW,CAAC,MAAM,EAAE;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,UAAU,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;KAC9C,GAAG,IAAI;IAuCR;;OAEG;IACH,OAAO,CAAC,UAAU;IASlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAoCrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsC1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAKzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoC1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAyB9B;;OAEG;IACH,OAAO,CAAC,aAAa;IAsDrB;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAIrD;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAInD;;OAEG;IACH,eAAe,IAAI,YAAY,GAAG,IAAI;IAItC;;OAEG;IACH,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;IAI/C;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,uBAAuB,IAAI,MAAM;CAmClC;AAOD;;GAEG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAK5C;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS;IAAE,KAAK,EAAE,GAAG,CAAA;CAAE,EACxD,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,EAClC,OAAO,EAAE;IACP,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,GACA,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAsBhC"}
|