@agentlensai/server 0.13.0 → 0.14.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.
Files changed (82) hide show
  1. package/dist/app.d.ts +27 -0
  2. package/dist/app.d.ts.map +1 -0
  3. package/dist/app.js +178 -0
  4. package/dist/app.js.map +1 -0
  5. package/dist/config.d.ts +2 -6
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/config.js +13 -10
  8. package/dist/config.js.map +1 -1
  9. package/dist/health.d.ts +22 -0
  10. package/dist/health.d.ts.map +1 -0
  11. package/dist/health.js +34 -0
  12. package/dist/health.js.map +1 -0
  13. package/dist/index.d.ts +17 -31
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +28 -502
  16. package/dist/index.js.map +1 -1
  17. package/dist/lib/api-schema.d.ts +126 -0
  18. package/dist/lib/api-schema.d.ts.map +1 -0
  19. package/dist/lib/api-schema.js +69 -0
  20. package/dist/lib/api-schema.js.map +1 -0
  21. package/dist/lib/api-version.d.ts +21 -0
  22. package/dist/lib/api-version.d.ts.map +1 -0
  23. package/dist/lib/api-version.js +36 -0
  24. package/dist/lib/api-version.js.map +1 -0
  25. package/dist/lib/lore-client.d.ts +64 -112
  26. package/dist/lib/lore-client.d.ts.map +1 -1
  27. package/dist/lib/lore-client.js +120 -155
  28. package/dist/lib/lore-client.js.map +1 -1
  29. package/dist/routes/agents.d.ts.map +1 -1
  30. package/dist/routes/agents.js +73 -0
  31. package/dist/routes/agents.js.map +1 -1
  32. package/dist/routes/alerts.d.ts.map +1 -1
  33. package/dist/routes/alerts.js +13 -36
  34. package/dist/routes/alerts.js.map +1 -1
  35. package/dist/routes/analytics.d.ts.map +1 -1
  36. package/dist/routes/analytics.js +93 -0
  37. package/dist/routes/analytics.js.map +1 -1
  38. package/dist/routes/api-version.d.ts +9 -0
  39. package/dist/routes/api-version.d.ts.map +1 -0
  40. package/dist/routes/api-version.js +19 -0
  41. package/dist/routes/api-version.js.map +1 -0
  42. package/dist/routes/audit-verify.d.ts +3 -2
  43. package/dist/routes/audit-verify.d.ts.map +1 -1
  44. package/dist/routes/audit-verify.js +91 -27
  45. package/dist/routes/audit-verify.js.map +1 -1
  46. package/dist/routes/cost-budgets.d.ts.map +1 -1
  47. package/dist/routes/cost-budgets.js +19 -36
  48. package/dist/routes/cost-budgets.js.map +1 -1
  49. package/dist/routes/guardrails.d.ts.map +1 -1
  50. package/dist/routes/guardrails.js +121 -37
  51. package/dist/routes/guardrails.js.map +1 -1
  52. package/dist/routes/helpers.d.ts +27 -0
  53. package/dist/routes/helpers.d.ts.map +1 -0
  54. package/dist/routes/helpers.js +46 -0
  55. package/dist/routes/helpers.js.map +1 -0
  56. package/dist/routes/lore-proxy.d.ts +8 -6
  57. package/dist/routes/lore-proxy.d.ts.map +1 -1
  58. package/dist/routes/lore-proxy.js +39 -193
  59. package/dist/routes/lore-proxy.js.map +1 -1
  60. package/dist/routes/mcp-policies.d.ts +40 -0
  61. package/dist/routes/mcp-policies.d.ts.map +1 -0
  62. package/dist/routes/mcp-policies.js +200 -0
  63. package/dist/routes/mcp-policies.js.map +1 -0
  64. package/dist/routes/optimization-advisor.d.ts +13 -0
  65. package/dist/routes/optimization-advisor.d.ts.map +1 -0
  66. package/dist/routes/optimization-advisor.js +42 -0
  67. package/dist/routes/optimization-advisor.js.map +1 -0
  68. package/dist/routes/recall.d.ts.map +1 -1
  69. package/dist/routes/recall.js +7 -3
  70. package/dist/routes/recall.js.map +1 -1
  71. package/dist/routes/registration.d.ts +27 -0
  72. package/dist/routes/registration.d.ts.map +1 -0
  73. package/dist/routes/registration.js +311 -0
  74. package/dist/routes/registration.js.map +1 -0
  75. package/dist/routes/replay.d.ts.map +1 -1
  76. package/dist/routes/replay.js +51 -0
  77. package/dist/routes/replay.js.map +1 -1
  78. package/dist/services/optimization-advisor.d.ts +37 -0
  79. package/dist/services/optimization-advisor.d.ts.map +1 -0
  80. package/dist/services/optimization-advisor.js +239 -0
  81. package/dist/services/optimization-advisor.js.map +1 -0
  82. package/package.json +1 -1
@@ -0,0 +1,239 @@
1
+ /**
2
+ * Autonomous Optimization Advisor (Feature 10)
3
+ *
4
+ * Analyzes recent sessions for a given agent and produces actionable
5
+ * optimization suggestions across three dimensions:
6
+ *
7
+ * 1. Model downgrade opportunities — expensive model used for simple tasks
8
+ * 2. Prompt optimization — repeated patterns that could be cached
9
+ * 3. Tool usage improvements — unused tools, redundant tool calls
10
+ */
11
+ import { lookupModelCost, DEFAULT_MODEL_COSTS } from '@agentlensai/core';
12
+ import { classifyCallComplexity } from '../lib/optimization/classifier.js';
13
+ // ─── Constants ────────────────────────────────────────
14
+ const ANALYSIS_PERIOD_DAYS = 14;
15
+ const MAX_EVENTS = 5_000;
16
+ const SIMPLE_TIER_EXPENSIVE_MODELS = [
17
+ 'claude-opus-4-6', 'claude-opus-4', 'gpt-4o', 'gpt-4.1',
18
+ ];
19
+ const SYSTEM_PROMPT_TOKEN_THRESHOLD = 4000;
20
+ const TOOL_REDUNDANCY_THRESHOLD = 0.5; // >50% consecutive duplicate tool calls
21
+ // ─── Service ──────────────────────────────────────────
22
+ /**
23
+ * Analyze recent sessions for a given agent and return optimization suggestions.
24
+ */
25
+ export async function getOptimizationSuggestions(store, agentId) {
26
+ const now = new Date();
27
+ const from = new Date(now.getTime() - ANALYSIS_PERIOD_DAYS * 24 * 60 * 60 * 1000).toISOString();
28
+ const to = now.toISOString();
29
+ // Fetch events
30
+ const [callResult, responseResult, toolResult] = await Promise.all([
31
+ store.queryEvents({ eventType: 'llm_call', agentId, from, to, limit: MAX_EVENTS, order: 'asc' }),
32
+ store.queryEvents({ eventType: 'llm_response', agentId, from, to, limit: MAX_EVENTS, order: 'asc' }),
33
+ store.queryEvents({ eventType: 'tool_call', agentId, from, to, limit: MAX_EVENTS, order: 'asc' }),
34
+ ]);
35
+ const callEvents = callResult.events;
36
+ const responseEvents = responseResult.events;
37
+ const toolEvents = toolResult.events;
38
+ // Build response lookup
39
+ const responseMap = new Map();
40
+ for (const evt of responseEvents) {
41
+ const payload = evt.payload;
42
+ if (payload.callId) {
43
+ responseMap.set(payload.callId, evt);
44
+ }
45
+ }
46
+ // Count unique sessions
47
+ const sessionIds = new Set();
48
+ for (const evt of callEvents) {
49
+ if (evt.sessionId)
50
+ sessionIds.add(evt.sessionId);
51
+ }
52
+ for (const evt of toolEvents) {
53
+ if (evt.sessionId)
54
+ sessionIds.add(evt.sessionId);
55
+ }
56
+ const suggestions = [];
57
+ // ── 1. Model downgrade opportunities ──────────────────
58
+ analyzeModelDowngrades(callEvents, responseMap, suggestions);
59
+ // ── 2. Prompt optimization ────────────────────────────
60
+ analyzePromptOptimization(callEvents, responseMap, suggestions);
61
+ // ── 3. Tool usage improvements ────────────────────────
62
+ analyzeToolUsage(toolEvents, suggestions);
63
+ const totalEstimatedSavings = suggestions.reduce((sum, s) => sum + s.estimatedSavings, 0);
64
+ return {
65
+ agentId,
66
+ suggestions,
67
+ analyzedSessions: sessionIds.size,
68
+ totalEstimatedSavings: Math.round(totalEstimatedSavings * 1_000_000) / 1_000_000,
69
+ };
70
+ }
71
+ /**
72
+ * Aggregate suggestions across all agents.
73
+ */
74
+ export async function getOptimizationSummary(store) {
75
+ const now = new Date();
76
+ const from = new Date(now.getTime() - ANALYSIS_PERIOD_DAYS * 24 * 60 * 60 * 1000).toISOString();
77
+ const to = now.toISOString();
78
+ // Get all recent agent IDs
79
+ const callResult = await store.queryEvents({
80
+ eventType: 'llm_call',
81
+ from,
82
+ to,
83
+ limit: MAX_EVENTS,
84
+ order: 'asc',
85
+ });
86
+ const agentIds = new Set();
87
+ for (const evt of callResult.events) {
88
+ if (evt.agentId)
89
+ agentIds.add(evt.agentId);
90
+ }
91
+ const agents = [];
92
+ for (const agentId of agentIds) {
93
+ const result = await getOptimizationSuggestions(store, agentId);
94
+ if (result.suggestions.length > 0) {
95
+ agents.push(result);
96
+ }
97
+ }
98
+ const totalEstimatedSavings = agents.reduce((sum, a) => sum + a.totalEstimatedSavings, 0);
99
+ return {
100
+ agents,
101
+ totalEstimatedSavings: Math.round(totalEstimatedSavings * 1_000_000) / 1_000_000,
102
+ };
103
+ }
104
+ // ─── Internal Analyzers ──────────────────────────────
105
+ function analyzeModelDowngrades(callEvents, responseMap, suggestions) {
106
+ // Count expensive model usage at simple/moderate tiers
107
+ const modelTierCounts = new Map();
108
+ for (const callEvent of callEvents) {
109
+ const callPayload = callEvent.payload;
110
+ const model = callPayload.model;
111
+ if (!model)
112
+ continue;
113
+ const responseEvent = callPayload.callId ? responseMap.get(callPayload.callId) : undefined;
114
+ if (!responseEvent)
115
+ continue;
116
+ const { tier } = classifyCallComplexity(callEvent, responseEvent);
117
+ if ((tier === 'simple' || tier === 'moderate') && SIMPLE_TIER_EXPENSIVE_MODELS.includes(model)) {
118
+ const key = `${model}::${tier}`;
119
+ const existing = modelTierCounts.get(key) ?? { count: 0, totalCost: 0 };
120
+ const respPayload = responseEvent.payload;
121
+ existing.count++;
122
+ existing.totalCost += respPayload.costUsd ?? 0;
123
+ modelTierCounts.set(key, existing);
124
+ }
125
+ }
126
+ for (const [key, stats] of modelTierCounts) {
127
+ if (stats.count < 5)
128
+ continue;
129
+ const [model, tier] = key.split('::');
130
+ const estimatedSavings = stats.totalCost * 0.6; // ~60% savings from downgrade
131
+ suggestions.push({
132
+ type: 'model_downgrade',
133
+ description: `${model} used ${stats.count} times for ${tier} tasks. Consider a cheaper model (e.g., sonnet/haiku) for these calls.`,
134
+ estimatedSavings: Math.round(estimatedSavings * 1_000_000) / 1_000_000,
135
+ confidence: stats.count > 50 ? 'high' : stats.count > 20 ? 'medium' : 'low',
136
+ metadata: { model, tier, callCount: stats.count, currentCost: stats.totalCost },
137
+ });
138
+ }
139
+ }
140
+ function analyzePromptOptimization(callEvents, responseMap, suggestions) {
141
+ // Detect oversized system prompts
142
+ const largeSystemPrompts = new Map();
143
+ for (const callEvent of callEvents) {
144
+ const callPayload = callEvent.payload;
145
+ const model = callPayload.model ?? 'unknown';
146
+ const messages = callPayload.messages;
147
+ if (!messages)
148
+ continue;
149
+ const systemMsg = messages.find((m) => m.role === 'system');
150
+ if (!systemMsg?.content)
151
+ continue;
152
+ // Rough token estimation: chars / 4
153
+ const estimatedTokens = Math.ceil(systemMsg.content.length / 4);
154
+ if (estimatedTokens > SYSTEM_PROMPT_TOKEN_THRESHOLD) {
155
+ const existing = largeSystemPrompts.get(model) ?? { count: 0, avgTokens: 0, totalInputCost: 0 };
156
+ existing.avgTokens = (existing.avgTokens * existing.count + estimatedTokens) / (existing.count + 1);
157
+ existing.count++;
158
+ // Estimate input cost for these tokens
159
+ const costInfo = lookupModelCost(model, DEFAULT_MODEL_COSTS);
160
+ if (costInfo) {
161
+ existing.totalInputCost += (estimatedTokens / 1_000_000) * costInfo.input;
162
+ }
163
+ largeSystemPrompts.set(model, existing);
164
+ }
165
+ }
166
+ for (const [model, stats] of largeSystemPrompts) {
167
+ if (stats.count < 3)
168
+ continue;
169
+ // Caching could save ~80% of repeated system prompt costs
170
+ const estimatedSavings = stats.totalInputCost * 0.8;
171
+ suggestions.push({
172
+ type: 'prompt_optimization',
173
+ description: `${stats.count} calls to ${model} have system prompts averaging ${Math.round(stats.avgTokens)} tokens. Consider prompt caching or shortening the system prompt.`,
174
+ estimatedSavings: Math.round(estimatedSavings * 1_000_000) / 1_000_000,
175
+ confidence: stats.count > 20 ? 'high' : 'medium',
176
+ metadata: { model, callCount: stats.count, avgSystemTokens: Math.round(stats.avgTokens) },
177
+ });
178
+ }
179
+ }
180
+ function analyzeToolUsage(toolEvents, suggestions) {
181
+ if (toolEvents.length < 5)
182
+ return;
183
+ // Group tool calls by session to find redundant consecutive calls
184
+ const sessionTools = new Map();
185
+ for (const evt of toolEvents) {
186
+ const sessionId = evt.sessionId ?? '';
187
+ const toolName = evt.payload?.toolName ?? evt.payload?.name ?? 'unknown';
188
+ const list = sessionTools.get(sessionId) ?? [];
189
+ list.push({ tool: toolName, timestamp: evt.timestamp });
190
+ sessionTools.set(sessionId, list);
191
+ }
192
+ // Detect consecutive duplicate tool calls across sessions
193
+ let totalCalls = 0;
194
+ let redundantCalls = 0;
195
+ const redundantTools = new Map();
196
+ for (const [, calls] of sessionTools) {
197
+ for (let i = 1; i < calls.length; i++) {
198
+ totalCalls++;
199
+ if (calls[i].tool === calls[i - 1].tool) {
200
+ redundantCalls++;
201
+ redundantTools.set(calls[i].tool, (redundantTools.get(calls[i].tool) ?? 0) + 1);
202
+ }
203
+ }
204
+ }
205
+ if (totalCalls > 0 && redundantCalls / totalCalls > TOOL_REDUNDANCY_THRESHOLD) {
206
+ const topRedundant = [...redundantTools.entries()]
207
+ .sort((a, b) => b[1] - a[1])
208
+ .slice(0, 3)
209
+ .map(([tool, count]) => `${tool} (${count}x)`);
210
+ suggestions.push({
211
+ type: 'tool_usage',
212
+ description: `${Math.round((redundantCalls / totalCalls) * 100)}% of consecutive tool calls are duplicates. Top: ${topRedundant.join(', ')}. Consider deduplication or caching.`,
213
+ estimatedSavings: 0, // Tool call cost is indirect
214
+ confidence: totalCalls > 100 ? 'high' : 'medium',
215
+ metadata: { totalCalls, redundantCalls, redundantRatio: redundantCalls / totalCalls },
216
+ });
217
+ }
218
+ // Detect tools that are declared but never called (if metadata available)
219
+ // This is a lightweight heuristic: if a tool appears < 1% of the time, flag it
220
+ const toolFrequency = new Map();
221
+ for (const evt of toolEvents) {
222
+ const toolName = evt.payload?.toolName ?? evt.payload?.name ?? 'unknown';
223
+ toolFrequency.set(toolName, (toolFrequency.get(toolName) ?? 0) + 1);
224
+ }
225
+ const totalToolCalls = toolEvents.length;
226
+ const rareTools = [...toolFrequency.entries()]
227
+ .filter(([, count]) => count / totalToolCalls < 0.01 && totalToolCalls > 50)
228
+ .map(([tool]) => tool);
229
+ if (rareTools.length > 0) {
230
+ suggestions.push({
231
+ type: 'tool_usage',
232
+ description: `Rarely used tools detected: ${rareTools.join(', ')}. Consider removing them from the tool list to reduce prompt size and model confusion.`,
233
+ estimatedSavings: 0,
234
+ confidence: 'low',
235
+ metadata: { rareTools, totalToolCalls },
236
+ });
237
+ }
238
+ }
239
+ //# sourceMappingURL=optimization-advisor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimization-advisor.js","sourceRoot":"","sources":["../../src/services/optimization-advisor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentlensai/server",
3
- "version": "0.13.0",
3
+ "version": "0.14.0",
4
4
  "description": "AgentLens API server — event ingestion, querying, dashboard, and alerting for AI agents",
5
5
  "type": "module",
6
6
  "license": "MIT",