@amodalai/runtime 0.1.15 → 0.1.17

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 (121) hide show
  1. package/dist/src/agent/agent-runner.js +13 -1
  2. package/dist/src/agent/agent-runner.js.map +1 -1
  3. package/dist/src/agent/config-watcher.d.ts +2 -2
  4. package/dist/src/agent/config-watcher.js +28 -15
  5. package/dist/src/agent/config-watcher.js.map +1 -1
  6. package/dist/src/agent/config-watcher.test.js +13 -4
  7. package/dist/src/agent/config-watcher.test.js.map +1 -1
  8. package/dist/src/agent/eval-store.d.ts +14 -0
  9. package/dist/src/agent/eval-store.js +44 -0
  10. package/dist/src/agent/eval-store.js.map +1 -1
  11. package/dist/src/agent/feedback-store.d.ts +39 -0
  12. package/dist/src/agent/feedback-store.js +98 -0
  13. package/dist/src/agent/feedback-store.js.map +1 -0
  14. package/dist/src/agent/local-server.d.ts +1 -1
  15. package/dist/src/agent/local-server.js +48 -28
  16. package/dist/src/agent/local-server.js.map +1 -1
  17. package/dist/src/agent/local-server.test.js +2 -1
  18. package/dist/src/agent/local-server.test.js.map +1 -1
  19. package/dist/src/agent/proactive/proactive-runner.d.ts +3 -3
  20. package/dist/src/agent/proactive/proactive-runner.js +3 -3
  21. package/dist/src/agent/proactive/proactive-runner.js.map +1 -1
  22. package/dist/src/agent/proactive/proactive-runner.test.js +2 -2
  23. package/dist/src/agent/proactive/proactive-runner.test.js.map +1 -1
  24. package/dist/src/agent/routes/admin-chat.d.ts +3 -2
  25. package/dist/src/agent/routes/admin-chat.js +3 -3
  26. package/dist/src/agent/routes/admin-chat.js.map +1 -1
  27. package/dist/src/agent/routes/chat.d.ts +6 -6
  28. package/dist/src/agent/routes/chat.js +3 -3
  29. package/dist/src/agent/routes/chat.js.map +1 -1
  30. package/dist/src/agent/routes/chat.test.js +7 -6
  31. package/dist/src/agent/routes/chat.test.js.map +1 -1
  32. package/dist/src/agent/routes/evals.d.ts +2 -2
  33. package/dist/src/agent/routes/evals.js +143 -68
  34. package/dist/src/agent/routes/evals.js.map +1 -1
  35. package/dist/src/agent/routes/feedback.d.ts +11 -0
  36. package/dist/src/agent/routes/feedback.js +72 -0
  37. package/dist/src/agent/routes/feedback.js.map +1 -0
  38. package/dist/src/agent/routes/files.js +118 -12
  39. package/dist/src/agent/routes/files.js.map +1 -1
  40. package/dist/src/agent/routes/inspect.d.ts +2 -2
  41. package/dist/src/agent/routes/inspect.js +44 -22
  42. package/dist/src/agent/routes/inspect.js.map +1 -1
  43. package/dist/src/agent/routes/inspect.test.js +11 -16
  44. package/dist/src/agent/routes/inspect.test.js.map +1 -1
  45. package/dist/src/agent/routes/task.d.ts +2 -2
  46. package/dist/src/agent/routes/task.js +4 -4
  47. package/dist/src/agent/routes/task.js.map +1 -1
  48. package/dist/src/agent/routes/task.test.js.map +1 -1
  49. package/dist/src/agent/session-store.d.ts +2 -2
  50. package/dist/src/agent/session-store.js +9 -6
  51. package/dist/src/agent/session-store.js.map +1 -1
  52. package/dist/src/agent/snapshot-server.js +10 -2
  53. package/dist/src/agent/snapshot-server.js.map +1 -1
  54. package/dist/src/cron/heartbeat-runner.d.ts +3 -6
  55. package/dist/src/cron/heartbeat-runner.js +1 -10
  56. package/dist/src/cron/heartbeat-runner.js.map +1 -1
  57. package/dist/src/index.d.ts +5 -3
  58. package/dist/src/index.js +4 -9
  59. package/dist/src/index.js.map +1 -1
  60. package/dist/src/middleware/auth.d.ts +3 -19
  61. package/dist/src/middleware/auth.js +0 -118
  62. package/dist/src/middleware/auth.js.map +1 -1
  63. package/dist/src/routes/ai-stream.d.ts +8 -7
  64. package/dist/src/routes/ai-stream.js +3 -16
  65. package/dist/src/routes/ai-stream.js.map +1 -1
  66. package/dist/src/routes/chat-stream.d.ts +4 -3
  67. package/dist/src/routes/chat-stream.js +5 -17
  68. package/dist/src/routes/chat-stream.js.map +1 -1
  69. package/dist/src/routes/chat.d.ts +4 -2
  70. package/dist/src/routes/chat.js +2 -14
  71. package/dist/src/routes/chat.js.map +1 -1
  72. package/dist/src/routes/chat.test.js +2 -2
  73. package/dist/src/routes/chat.test.js.map +1 -1
  74. package/dist/src/server.d.ts +16 -3
  75. package/dist/src/server.js +24 -27
  76. package/dist/src/server.js.map +1 -1
  77. package/dist/src/server.test.js +37 -6
  78. package/dist/src/server.test.js.map +1 -1
  79. package/dist/src/session/admin-file-tools.d.ts +136 -0
  80. package/dist/src/session/admin-file-tools.js +240 -0
  81. package/dist/src/session/admin-file-tools.js.map +1 -0
  82. package/dist/src/session/custom-tool-adapter.d.ts +74 -0
  83. package/dist/src/session/custom-tool-adapter.js +149 -0
  84. package/dist/src/session/custom-tool-adapter.js.map +1 -0
  85. package/dist/src/session/session-manager.d.ts +101 -3
  86. package/dist/src/session/session-manager.js +467 -31
  87. package/dist/src/session/session-manager.js.map +1 -1
  88. package/dist/src/session/session-manager.test.js +93 -58
  89. package/dist/src/session/session-manager.test.js.map +1 -1
  90. package/dist/src/session/session-runner.d.ts +29 -13
  91. package/dist/src/session/session-runner.js +40 -91
  92. package/dist/src/session/session-runner.js.map +1 -1
  93. package/dist/src/session/session-runner.test.js +70 -80
  94. package/dist/src/session/session-runner.test.js.map +1 -1
  95. package/dist/src/types.d.ts +1 -0
  96. package/dist/tsconfig.tsbuildinfo +1 -1
  97. package/package.json +2 -2
  98. package/dist/src/agent/agent-runner.test.d.ts +0 -6
  99. package/dist/src/agent/agent-runner.test.js +0 -552
  100. package/dist/src/agent/agent-runner.test.js.map +0 -1
  101. package/dist/src/agent/session-manager.d.ts +0 -88
  102. package/dist/src/agent/session-manager.js +0 -341
  103. package/dist/src/agent/session-manager.js.map +0 -1
  104. package/dist/src/agent/session-manager.test.d.ts +0 -6
  105. package/dist/src/agent/session-manager.test.js +0 -145
  106. package/dist/src/agent/session-manager.test.js.map +0 -1
  107. package/dist/src/audit/audit-client.d.ts +0 -46
  108. package/dist/src/audit/audit-client.js +0 -83
  109. package/dist/src/audit/audit-client.js.map +0 -1
  110. package/dist/src/middleware/auth.test.d.ts +0 -6
  111. package/dist/src/middleware/auth.test.js +0 -260
  112. package/dist/src/middleware/auth.test.js.map +0 -1
  113. package/dist/src/routes/sessions.d.ts +0 -14
  114. package/dist/src/routes/sessions.js +0 -82
  115. package/dist/src/routes/sessions.js.map +0 -1
  116. package/dist/src/utils/jwt-verify.d.ts +0 -19
  117. package/dist/src/utils/jwt-verify.js +0 -32
  118. package/dist/src/utils/jwt-verify.js.map +0 -1
  119. package/dist/src/utils/jwt-verify.test.d.ts +0 -6
  120. package/dist/src/utils/jwt-verify.test.js +0 -150
  121. package/dist/src/utils/jwt-verify.test.js.map +0 -1
@@ -7,9 +7,9 @@ import { describe, it, expect, vi, beforeEach } from 'vitest';
7
7
  import express from 'express';
8
8
  import request from 'supertest';
9
9
  import { createChatRouter } from './chat.js';
10
- // Mock agent-runner
11
- vi.mock('../agent-runner.js', () => ({
12
- runAgentTurn: vi.fn(async function* () {
10
+ // Mock session-runner
11
+ vi.mock('../../session/session-runner.js', () => ({
12
+ streamMessage: vi.fn(async function* () {
13
13
  yield { type: 'text_delta', content: 'Hello!', timestamp: new Date().toISOString() };
14
14
  yield { type: 'done', timestamp: new Date().toISOString() };
15
15
  }),
@@ -75,7 +75,7 @@ describe('repo-chat route', () => {
75
75
  await request(app)
76
76
  .post('/chat')
77
77
  .send({ message: 'hello', app_id: 'tenant-1' });
78
- expect(sessionManager.create).toHaveBeenCalledWith('tenant-1', undefined);
78
+ expect(sessionManager.create).toHaveBeenCalledWith('tenant-1');
79
79
  });
80
80
  it('should reuse existing session if session_id provided', async () => {
81
81
  const app = createTestApp(sessionManager);
@@ -104,12 +104,13 @@ describe('repo-chat route', () => {
104
104
  .send({ message: 'hello', app_id: 'tenant-1' });
105
105
  expect(res.text).toContain('"type":"error"');
106
106
  });
107
- it('should pass app_token when provided', async () => {
107
+ it('should create session with app_id as role', async () => {
108
108
  const app = createTestApp(sessionManager);
109
109
  await request(app)
110
110
  .post('/chat')
111
111
  .send({ message: 'hello', app_id: 'tenant-1', app_token: 'tok-123' });
112
- expect(sessionManager.create).toHaveBeenCalledWith('tenant-1', 'tok-123');
112
+ // app_id is passed as role to SessionManager.create()
113
+ expect(sessionManager.create).toHaveBeenCalledWith('tenant-1');
113
114
  });
114
115
  });
115
116
  //# sourceMappingURL=chat.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat.test.js","sourceRoot":"","sources":["../../../../src/agent/routes/chat.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.test.js","sourceRoot":"","sources":["../../../../src/agent/routes/chat.test.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,10 @@
4
4
  * SPDX-License-Identifier: MIT
5
5
  */
6
6
  import { Router } from 'express';
7
- import type { AgentSessionManager } from '../session-manager.js';
7
+ import type { SessionManager } from '../../session/session-manager.js';
8
8
  import type { EvalStore } from '../eval-store.js';
9
9
  export interface EvalRouterOptions {
10
- sessionManager: AgentSessionManager;
10
+ sessionManager: SessionManager;
11
11
  evalStore: EvalStore;
12
12
  repoPath: string;
13
13
  /** Port the server is listening on — used by eval query provider to call /chat */
@@ -4,16 +4,12 @@
4
4
  * SPDX-License-Identifier: MIT
5
5
  */
6
6
  import { Router } from 'express';
7
- import { buildEvalRun, judgeAllAssertions, computeEvalCost, aggregateRunCost } from '@amodalai/core';
8
- /**
9
- * Run a query against /chat and stream events back to the eval client.
10
- * Returns the accumulated response, tool calls, and usage.
11
- */
12
- async function streamQuery(baseUrl, message, evalRes, evalName, appId) {
7
+ import { buildEvalRun, judgeAllAssertions, computeEvalCost, aggregateRunCost, createRuntimeProvider } from '@amodalai/core';
8
+ async function streamQuery(baseUrl, message, evalRes, evalName, appId, sessionId) {
13
9
  const chatRes = await fetch(`${baseUrl}/chat`, {
14
10
  method: 'POST',
15
11
  headers: { 'Content-Type': 'application/json' },
16
- body: JSON.stringify({ message, app_id: appId ?? 'eval-runner' }),
12
+ body: JSON.stringify({ message, app_id: appId ?? 'eval-runner', ...(sessionId ? { session_id: sessionId } : {}) }),
17
13
  });
18
14
  const text = await chatRes.text();
19
15
  const lines = text.split('\n');
@@ -21,6 +17,7 @@ async function streamQuery(baseUrl, message, evalRes, evalName, appId) {
21
17
  const toolCalls = [];
22
18
  const toolResults = [];
23
19
  let usage;
20
+ let queryError;
24
21
  for (const line of lines) {
25
22
  if (!line.startsWith('data: '))
26
23
  continue;
@@ -39,16 +36,30 @@ async function streamQuery(baseUrl, message, evalRes, evalName, appId) {
39
36
  writeSSE(evalRes, { type: 'agent_tool', evalName, toolName: event['tool_name'], parameters: params });
40
37
  }
41
38
  else if (eventType === 'tool_call_result') {
42
- // Capture result data so the judge knows tool calls returned real data
43
- const resultPreview = String(event['result'] ?? event['error'] ?? '');
44
- toolResults.push(`${String(event['tool_name'] ?? 'request')}: ${resultPreview.slice(0, 500)}`);
39
+ const resultRaw = String(event['result'] ?? event['error'] ?? '');
40
+ toolResults.push(`${String(event['tool_name'] ?? 'request')}: ${resultRaw}`);
45
41
  writeSSE(evalRes, { type: 'agent_tool_result', evalName, toolName: event['tool_name'] ?? 'request', status: event['status'], durationMs: event['duration_ms'] });
46
42
  }
47
- else if (eventType === 'done' && event['usage']) {
48
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
49
- const u = event['usage'];
50
- if (u.input_tokens > 0 || u.output_tokens > 0) {
51
- usage = { inputTokens: u.input_tokens, outputTokens: u.output_tokens };
43
+ else if (eventType === 'error') {
44
+ queryError = String(event['message'] ?? event['error'] ?? 'Unknown error');
45
+ writeSSE(evalRes, { type: 'agent_error', evalName, error: queryError });
46
+ }
47
+ else if (eventType === 'done') {
48
+ const u = (event['usage'] ?? {});
49
+ // Accumulate tokens across multiple done events (multi-turn agent loops
50
+ // may emit one done per turn in the session runner)
51
+ if ((u.input_tokens ?? 0) > 0 || (u.output_tokens ?? 0) > 0 || (u.cached_tokens ?? 0) > 0) {
52
+ if (!usage) {
53
+ usage = { inputTokens: 0, outputTokens: 0 };
54
+ }
55
+ usage.inputTokens += u.input_tokens ?? 0;
56
+ usage.outputTokens += u.output_tokens ?? 0;
57
+ if (u.cached_tokens) {
58
+ usage.cacheReadInputTokens = (usage.cacheReadInputTokens ?? 0) + u.cached_tokens;
59
+ }
60
+ if (u.cache_creation_tokens) {
61
+ usage.cacheCreationInputTokens = (usage.cacheCreationInputTokens ?? 0) + u.cache_creation_tokens;
62
+ }
52
63
  }
53
64
  }
54
65
  }
@@ -61,49 +72,40 @@ async function streamQuery(baseUrl, message, evalRes, evalName, appId) {
61
72
  const estimatedOutput = Math.ceil(outputChars / 4);
62
73
  usage = { inputTokens: estimatedOutput * 3, outputTokens: estimatedOutput };
63
74
  }
64
- return { response: fullResponse, toolCalls, toolResults, usage };
75
+ return { response: fullResponse, toolCalls, toolResults, usage, ...(queryError ? { error: queryError } : {}) };
65
76
  }
66
77
  /**
67
- * Create a JudgeProvider that uses the local /chat endpoint and tracks token usage.
78
+ * Create a JudgeProvider that calls the LLM directly no session, no tools,
79
+ * no system prompt overhead. Just a simple prompt→response for each assertion.
80
+ * This is ~10x cheaper than routing through /chat with the full agent context.
68
81
  */
69
- function createLocalJudgeProvider(baseUrl) {
82
+ function createDirectJudgeProvider(modelConfig) {
83
+ const provider = createRuntimeProvider(modelConfig);
70
84
  const tracked = {
71
85
  totalInputTokens: 0,
72
86
  totalOutputTokens: 0,
73
87
  judge: async (prompt) => {
74
- const response = await fetch(`${baseUrl}/chat`, {
75
- method: 'POST',
76
- headers: { 'Content-Type': 'application/json' },
77
- body: JSON.stringify({ message: prompt, app_id: 'eval-judge', session_id: `judge-${Date.now()}` }),
78
- });
79
- const text = await response.text();
80
- let result = '';
81
- for (const line of text.split('\n')) {
82
- if (!line.startsWith('data: '))
83
- continue;
84
- try {
85
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- SSE parsing
86
- const event = JSON.parse(line.substring(6));
87
- if (event['type'] === 'text_delta') {
88
- result += String(event['content'] ?? '');
89
- }
90
- else if (event['type'] === 'done' && event['usage']) {
91
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
92
- const u = event['usage'];
93
- tracked.totalInputTokens += u.input_tokens || 0;
94
- tracked.totalOutputTokens += u.output_tokens || 0;
95
- }
96
- }
97
- catch {
98
- // skip
88
+ try {
89
+ const response = await provider.chat({
90
+ model: modelConfig.model,
91
+ systemPrompt: 'You are an eval judge. Be concise.',
92
+ messages: [{ role: 'user', content: prompt }],
93
+ tools: [],
94
+ maxTokens: 256,
95
+ });
96
+ const text = response.content
97
+ .filter((b) => b.type === 'text')
98
+ .map((b) => b.text)
99
+ .join('');
100
+ if (response.usage) {
101
+ tracked.totalInputTokens += response.usage.inputTokens + (response.usage.cacheReadInputTokens ?? 0) + (response.usage.cacheCreationInputTokens ?? 0);
102
+ tracked.totalOutputTokens += response.usage.outputTokens;
99
103
  }
104
+ return text;
100
105
  }
101
- // Estimate if no usage reported
102
- if (tracked.totalInputTokens === 0) {
103
- tracked.totalInputTokens += Math.ceil(prompt.length / 4);
104
- tracked.totalOutputTokens += Math.ceil(result.length / 4);
106
+ catch (err) {
107
+ return `Judge error: ${err instanceof Error ? err.message : String(err)}`;
105
108
  }
106
- return result;
107
109
  },
108
110
  };
109
111
  return tracked;
@@ -159,7 +161,17 @@ export function createEvalRouter(options) {
159
161
  }
160
162
  const baseUrl = `http://127.0.0.1:${port}`;
161
163
  const repo = options.sessionManager.getRepo();
162
- const evals = repo.evals;
164
+ // Read optional eval names and model override from POST body
165
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- request body
166
+ const body = (req.body ?? {});
167
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- request body
168
+ const evalNames = body['evalNames'];
169
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- request body
170
+ const modelOverride = body['model'];
171
+ let evals = repo.evals;
172
+ if (evalNames && evalNames.length > 0) {
173
+ evals = evals.filter((e) => evalNames.includes(e.name));
174
+ }
163
175
  if (evals.length === 0) {
164
176
  res.status(400).json({ error: 'No evals defined' });
165
177
  return;
@@ -169,7 +181,17 @@ export function createEvalRouter(options) {
169
181
  'Cache-Control': 'no-cache',
170
182
  'Connection': 'keep-alive',
171
183
  });
172
- const judgeProvider = createLocalJudgeProvider(baseUrl);
184
+ // Save original model config for restoration after override
185
+ const originalModelConfig = repo.config?.models?.['main'];
186
+ // If model override provided, swap main model config
187
+ if (modelOverride && repo.config?.models) {
188
+ repo.config.models['main'] = {
189
+ provider: modelOverride.provider,
190
+ model: modelOverride.model,
191
+ };
192
+ }
193
+ const evalSessionId = `eval-${Date.now()}`;
194
+ const judgeProvider = createDirectJudgeProvider(originalModelConfig);
173
195
  const modelInfo = repo.config ? {
174
196
  provider: repo.config.models?.['main']?.provider ?? 'unknown',
175
197
  model: repo.config.models?.['main']?.model ?? 'unknown',
@@ -177,30 +199,51 @@ export function createEvalRouter(options) {
177
199
  const results = [];
178
200
  const perCaseCosts = [];
179
201
  const startTime = Date.now();
202
+ // Restore original model before judging so judge uses the original model
203
+ const restoreModel = () => {
204
+ if (originalModelConfig && repo.config?.models) {
205
+ repo.config.models['main'] = originalModelConfig;
206
+ }
207
+ };
180
208
  for (let i = 0; i < evals.length; i++) {
181
209
  const ev = evals[i];
182
210
  writeSSE(res, { type: 'eval_start', evalName: ev.name, current: i + 1, total: evals.length });
183
211
  const evalStart = Date.now();
184
212
  try {
185
213
  // Run the query — streams agent events to client
186
- const { response, toolCalls, toolResults, usage } = await streamQuery(baseUrl, ev.query, res, ev.name, ev.setup.app);
187
- // Build enriched response for the judge — include tool results so it knows data was fetched
188
- let enriched = response;
189
- if (toolCalls.length > 0) {
190
- enriched += '\n\n[Tool calls made: ' + toolCalls.map((tc) => `${tc.name}(${JSON.stringify(tc.parameters)})`).join(', ') + ']';
214
+ const { response, toolCalls, toolResults, usage, error: queryError } = await streamQuery(baseUrl, ev.query, res, ev.name, ev.setup.app, evalSessionId);
215
+ // Restore original model for judging
216
+ restoreModel();
217
+ let assertions = [];
218
+ let passed = false;
219
+ let judgeCost;
220
+ // Skip judging if query had an error
221
+ if (!queryError) {
222
+ // Build enriched response for the judge — include tool results so it knows data was fetched
223
+ let enriched = response;
224
+ if (toolCalls.length > 0) {
225
+ enriched += '\n\n[Tool calls made: ' + toolCalls.map((tc) => `${tc.name}(${JSON.stringify(tc.parameters)})`).join(', ') + ']';
226
+ }
227
+ if (toolResults.length > 0) {
228
+ enriched += '\n\n[Tool results received:\n' + toolResults.join('\n') + ']';
229
+ }
230
+ // Judge assertions — track judge tokens separately
231
+ const judgeInputBefore = judgeProvider.totalInputTokens;
232
+ const judgeOutputBefore = judgeProvider.totalOutputTokens;
233
+ assertions = await judgeAllAssertions(enriched, ev.assertions, judgeProvider);
234
+ passed = assertions.every((a) => a.passed);
235
+ const judgeInputUsed = judgeProvider.totalInputTokens - judgeInputBefore;
236
+ const judgeOutputUsed = judgeProvider.totalOutputTokens - judgeOutputBefore;
237
+ judgeCost = judgeInputUsed > 0 ? computeEvalCost(judgeInputUsed, judgeOutputUsed, originalModelConfig?.model ?? modelInfo.model) : undefined;
191
238
  }
192
- if (toolResults.length > 0) {
193
- enriched += '\n\n[Tool results received:\n' + toolResults.join('\n') + ']';
239
+ // Re-apply model override for next eval query
240
+ if (modelOverride && repo.config?.models) {
241
+ repo.config.models['main'] = {
242
+ provider: modelOverride.provider,
243
+ model: modelOverride.model,
244
+ };
194
245
  }
195
- // Judge assertions track judge tokens separately
196
- const judgeInputBefore = judgeProvider.totalInputTokens;
197
- const judgeOutputBefore = judgeProvider.totalOutputTokens;
198
- const assertions = await judgeAllAssertions(enriched, ev.assertions, judgeProvider);
199
- const passed = assertions.every((a) => a.passed);
200
- const queryCost = usage ? computeEvalCost(usage.inputTokens, usage.outputTokens, modelInfo.model) : undefined;
201
- const judgeInputUsed = judgeProvider.totalInputTokens - judgeInputBefore;
202
- const judgeOutputUsed = judgeProvider.totalOutputTokens - judgeOutputBefore;
203
- const judgeCost = judgeInputUsed > 0 ? computeEvalCost(judgeInputUsed, judgeOutputUsed, modelInfo.model) : undefined;
246
+ const queryCost = usage ? computeEvalCost(usage.inputTokens, usage.outputTokens, modelInfo.model, usage.cacheReadInputTokens, usage.cacheCreationInputTokens) : undefined;
204
247
  if (queryCost)
205
248
  perCaseCosts.push(queryCost);
206
249
  const result = {
@@ -211,6 +254,7 @@ export function createEvalRouter(options) {
211
254
  passed,
212
255
  durationMs: Date.now() - evalStart,
213
256
  cost: queryCost,
257
+ ...(queryError ? { error: queryError } : {}),
214
258
  };
215
259
  results.push(result);
216
260
  // Send full result with eval_complete — separate query and judge costs
@@ -221,17 +265,27 @@ export function createEvalRouter(options) {
221
265
  current: i + 1,
222
266
  total: evals.length,
223
267
  result: {
224
- response: response.length > 1000 ? response.slice(0, 1000) + '...' : response,
268
+ response,
225
269
  toolCalls,
270
+ toolResults,
226
271
  assertions,
227
272
  durationMs: result.durationMs,
228
273
  queryCost,
229
274
  judgeCost,
275
+ ...(queryError ? { error: queryError } : {}),
230
276
  },
231
277
  });
232
278
  }
233
279
  catch (err) {
234
280
  const msg = err instanceof Error ? err.message : String(err);
281
+ // Restore original model on error too
282
+ restoreModel();
283
+ if (modelOverride && repo.config?.models) {
284
+ repo.config.models['main'] = {
285
+ provider: modelOverride.provider,
286
+ model: modelOverride.model,
287
+ };
288
+ }
235
289
  const result = {
236
290
  eval: ev,
237
291
  response: '',
@@ -252,6 +306,8 @@ export function createEvalRouter(options) {
252
306
  });
253
307
  }
254
308
  }
309
+ // Restore original model config
310
+ restoreModel();
255
311
  // Build suite result
256
312
  const totalCost = perCaseCosts.length > 0 ? aggregateRunCost(perCaseCosts) : undefined;
257
313
  const suiteResult = {
@@ -266,10 +322,18 @@ export function createEvalRouter(options) {
266
322
  };
267
323
  const run = buildEvalRun(suiteResult, modelInfo, { orgId: 'local', triggeredBy: 'manual' });
268
324
  options.evalStore.save(run); // eslint-disable-line @typescript-eslint/no-unsafe-type-assertion
325
+ // Suppress unused variable warnings
326
+ void evalSessionId;
269
327
  writeSSE(res, { type: 'run_complete', run });
270
328
  writeSSE(res, { type: 'done' });
271
329
  res.end();
272
330
  });
331
+ /** Get eval history for a specific eval */
332
+ router.get('/api/evals/runs/by-eval/:evalName', (req, res) => {
333
+ const evalName = req.params['evalName'] ?? '';
334
+ const entries = options.evalStore.listByEval(evalName);
335
+ res.json({ entries });
336
+ });
273
337
  /** Get arena model config */
274
338
  router.get('/api/evals/arena/models', (_req, res) => {
275
339
  const repo = options.sessionManager.getRepo();
@@ -281,12 +345,23 @@ export function createEvalRouter(options) {
281
345
  // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- config shape
282
346
  const configModels = arena?.['models'];
283
347
  const models = configModels ?? [
284
- { provider: 'anthropic', model: 'claude-sonnet-4-20250514', label: 'Claude Sonnet 4' },
348
+ { provider: 'anthropic', model: 'claude-opus-4-6', label: 'Claude Opus 4.6' },
349
+ { provider: 'anthropic', model: 'claude-sonnet-4-6', label: 'Claude Sonnet 4.6' },
285
350
  { provider: 'anthropic', model: 'claude-haiku-4-5-20251001', label: 'Claude Haiku 4.5' },
286
351
  { provider: 'openai', model: 'gpt-4o', label: 'GPT-4o' },
287
352
  { provider: 'openai', model: 'gpt-4o-mini', label: 'GPT-4o Mini' },
353
+ { provider: 'openai', model: 'gpt-4.1', label: 'GPT-4.1' },
354
+ { provider: 'openai', model: 'gpt-4.1-mini', label: 'GPT-4.1 Mini' },
288
355
  { provider: 'google', model: 'gemini-2.5-pro', label: 'Gemini 2.5 Pro' },
289
356
  { provider: 'google', model: 'gemini-2.5-flash', label: 'Gemini 2.5 Flash' },
357
+ { provider: 'deepseek', model: 'deepseek-chat', label: 'DeepSeek Chat' },
358
+ { provider: 'deepseek', model: 'deepseek-reasoner', label: 'DeepSeek Reasoner' },
359
+ { provider: 'groq', model: 'llama-3.3-70b-versatile', label: 'Llama 3.3 70B (Groq)' },
360
+ { provider: 'groq', model: 'llama-3.1-8b-instant', label: 'Llama 3.1 8B (Groq)' },
361
+ { provider: 'groq', model: 'meta-llama/llama-4-scout-17b-16e-instruct', label: 'Llama 4 Scout (Groq)' },
362
+ { provider: 'groq', model: 'qwen/qwen3-32b', label: 'Qwen 3 32B (Groq)' },
363
+ { provider: 'groq', model: 'moonshotai/kimi-k2-instruct', label: 'Kimi K2 (Groq)' },
364
+ { provider: 'groq', model: 'openai/gpt-oss-120b', label: 'GPT-OSS 120B (Groq)' },
290
365
  ];
291
366
  res.json({ models });
292
367
  });
@@ -1 +1 @@
1
- {"version":3,"file":"evals.js","sourceRoot":"","sources":["../../../../src/agent/routes/evals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evals.js","sourceRoot":"","sources":["../../../../src/agent/routes/evals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { Router } from 'express';
7
+ import type { FeedbackStore } from '../feedback-store.js';
8
+ export interface FeedbackRouterOptions {
9
+ feedbackStore: FeedbackStore;
10
+ }
11
+ export declare function createFeedbackRouter(options: FeedbackRouterOptions): Router;
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { Router } from 'express';
7
+ export function createFeedbackRouter(options) {
8
+ const router = Router();
9
+ /** Save a feedback rating */
10
+ router.post('/api/feedback', (req, res) => {
11
+ try {
12
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- request body
13
+ const body = (req.body ?? {});
14
+ const sessionId = String(body['sessionId'] ?? '');
15
+ const messageId = String(body['messageId'] ?? '');
16
+ const rating = String(body['rating'] ?? '');
17
+ const comment = body['comment'] ? String(body['comment']) : undefined;
18
+ const query = String(body['query'] ?? '');
19
+ const response = String(body['response'] ?? '');
20
+ const toolCalls = Array.isArray(body['toolCalls']) ? body['toolCalls'].map(String) : undefined;
21
+ const model = body['model'] ? String(body['model']) : undefined;
22
+ if (!sessionId || !messageId) {
23
+ res.status(400).json({ error: 'sessionId and messageId are required' });
24
+ return;
25
+ }
26
+ if (rating !== 'up' && rating !== 'down') {
27
+ res.status(400).json({ error: 'rating must be "up" or "down"' });
28
+ return;
29
+ }
30
+ const entry = options.feedbackStore.save({
31
+ sessionId,
32
+ messageId,
33
+ rating,
34
+ comment,
35
+ query,
36
+ response: response.slice(0, 2000),
37
+ toolCalls,
38
+ model,
39
+ });
40
+ res.json({ ok: true, id: entry.id });
41
+ }
42
+ catch (err) {
43
+ const msg = err instanceof Error ? err.message : String(err);
44
+ res.status(500).json({ error: msg });
45
+ }
46
+ });
47
+ /** List all feedback entries */
48
+ router.get('/api/feedback', (_req, res) => {
49
+ const limit = Number(_req.query['limit']) || 100;
50
+ const entries = options.feedbackStore.list(limit);
51
+ res.json({ entries });
52
+ });
53
+ /** Get feedback summary stats */
54
+ router.get('/api/feedback/summary', (_req, res) => {
55
+ const summary = options.feedbackStore.summary();
56
+ res.json(summary);
57
+ });
58
+ /** Mark feedback entries as reviewed */
59
+ router.post('/api/feedback/mark-reviewed', (req, res) => {
60
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- request body
61
+ const body = (req.body ?? {});
62
+ const ids = Array.isArray(body['ids']) ? body['ids'].map(String) : [];
63
+ if (ids.length === 0) {
64
+ res.status(400).json({ error: 'ids array is required' });
65
+ return;
66
+ }
67
+ options.feedbackStore.markReviewed(ids);
68
+ res.json({ ok: true, reviewed: ids.length });
69
+ });
70
+ return router;
71
+ }
72
+ //# sourceMappingURL=feedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../../../src/agent/routes/feedback.ts"],"names":[],"mappings":"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"}