agent-tank 0.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.
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Snapshot metrics extraction utilities.
3
+ *
4
+ * Extracts key metrics from agent usage data for snapshot storage.
5
+ */
6
+
7
+ /**
8
+ * Extract Claude metrics from usage data.
9
+ * @param {Object} usage - Claude usage data
10
+ * @returns {Object} Extracted metrics
11
+ */
12
+ function extractClaudeMetrics(usage) {
13
+ return {
14
+ session: usage.session?.percent ?? null,
15
+ weeklyAll: usage.weeklyAll?.percent ?? null,
16
+ weeklySonnet: usage.weeklySonnet?.percent ?? null,
17
+ weekly: usage.weekly?.percent ?? null,
18
+ extraUsage: usage.extraUsage?.percent ?? null
19
+ };
20
+ }
21
+
22
+ /**
23
+ * Extract Gemini metrics from usage data.
24
+ * @param {Object} usage - Gemini usage data
25
+ * @returns {Object|null} Extracted metrics or null
26
+ */
27
+ function extractGeminiMetrics(usage) {
28
+ if (!usage.models || !Array.isArray(usage.models)) {
29
+ return null;
30
+ }
31
+ const models = {};
32
+ for (const model of usage.models) {
33
+ models[model.model] = model.percentUsed ?? null;
34
+ }
35
+ return { models };
36
+ }
37
+
38
+ /**
39
+ * Extract Codex metrics from usage data.
40
+ * @param {Object} usage - Codex usage data
41
+ * @returns {Object} Extracted metrics
42
+ */
43
+ function extractCodexMetrics(usage) {
44
+ return {
45
+ fiveHour: usage.fiveHour?.percentUsed ?? null,
46
+ weekly: usage.weekly?.percentUsed ?? null,
47
+ modelLimits: usage.modelLimits?.map(ml => ({
48
+ name: ml.name,
49
+ fiveHour: ml.fiveHour?.percentUsed ?? null,
50
+ weekly: ml.weekly?.percentUsed ?? null
51
+ })) ?? null
52
+ };
53
+ }
54
+
55
+ /**
56
+ * Extract key metrics from usage data for snapshot storage.
57
+ * @param {string} agentName - Name of the agent
58
+ * @param {Object} usage - Usage data object
59
+ * @returns {Object|null} Extracted metrics for storage
60
+ */
61
+ function extractSnapshotMetrics(agentName, usage) {
62
+ switch (agentName) {
63
+ case 'claude':
64
+ return extractClaudeMetrics(usage);
65
+ case 'gemini':
66
+ return extractGeminiMetrics(usage);
67
+ case 'codex':
68
+ return extractCodexMetrics(usage);
69
+ default:
70
+ return usage;
71
+ }
72
+ }
73
+
74
+ module.exports = {
75
+ extractSnapshotMetrics,
76
+ extractClaudeMetrics,
77
+ extractGeminiMetrics,
78
+ extractCodexMetrics
79
+ };