veryfront 0.1.876 → 0.1.877

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 (68) hide show
  1. package/esm/deno.d.ts +3 -2
  2. package/esm/deno.js +4 -3
  3. package/esm/src/eval/agent-service.d.ts +88 -0
  4. package/esm/src/eval/agent-service.d.ts.map +1 -0
  5. package/esm/src/eval/agent-service.js +274 -0
  6. package/esm/src/eval/index.d.ts +22 -0
  7. package/esm/src/eval/index.d.ts.map +1 -1
  8. package/esm/src/eval/index.js +22 -0
  9. package/esm/src/utils/version-constant.d.ts +1 -1
  10. package/esm/src/utils/version-constant.js +1 -1
  11. package/package.json +5 -5
  12. package/esm/src/agent/testing/agent-tester.d.ts +0 -53
  13. package/esm/src/agent/testing/agent-tester.d.ts.map +0 -1
  14. package/esm/src/agent/testing/agent-tester.js +0 -132
  15. package/esm/src/agent/testing/durable-run-canaries/cli-runner.d.ts +0 -21
  16. package/esm/src/agent/testing/durable-run-canaries/cli-runner.d.ts.map +0 -1
  17. package/esm/src/agent/testing/durable-run-canaries/cli-runner.js +0 -66
  18. package/esm/src/agent/testing/durable-run-canaries/environment.d.ts +0 -14
  19. package/esm/src/agent/testing/durable-run-canaries/environment.d.ts.map +0 -1
  20. package/esm/src/agent/testing/durable-run-canaries/environment.js +0 -15
  21. package/esm/src/agent/testing/durable-run-canaries/index.d.ts +0 -5
  22. package/esm/src/agent/testing/durable-run-canaries/index.d.ts.map +0 -1
  23. package/esm/src/agent/testing/durable-run-canaries/index.js +0 -4
  24. package/esm/src/agent/testing/durable-run-canaries/runner.d.ts +0 -118
  25. package/esm/src/agent/testing/durable-run-canaries/runner.d.ts.map +0 -1
  26. package/esm/src/agent/testing/durable-run-canaries/runner.js +0 -391
  27. package/esm/src/agent/testing/durable-run-canaries/validation.d.ts +0 -12
  28. package/esm/src/agent/testing/durable-run-canaries/validation.d.ts.map +0 -1
  29. package/esm/src/agent/testing/durable-run-canaries/validation.js +0 -71
  30. package/esm/src/agent/testing/index.d.ts +0 -10
  31. package/esm/src/agent/testing/index.d.ts.map +0 -1
  32. package/esm/src/agent/testing/index.js +0 -9
  33. package/esm/src/agent/testing/live-evals/api-client.d.ts +0 -102
  34. package/esm/src/agent/testing/live-evals/api-client.d.ts.map +0 -1
  35. package/esm/src/agent/testing/live-evals/api-client.js +0 -313
  36. package/esm/src/agent/testing/live-evals/cli-runner.d.ts +0 -40
  37. package/esm/src/agent/testing/live-evals/cli-runner.d.ts.map +0 -1
  38. package/esm/src/agent/testing/live-evals/cli-runner.js +0 -144
  39. package/esm/src/agent/testing/live-evals/environment.d.ts +0 -15
  40. package/esm/src/agent/testing/live-evals/environment.d.ts.map +0 -1
  41. package/esm/src/agent/testing/live-evals/environment.js +0 -20
  42. package/esm/src/agent/testing/live-evals/formatting.d.ts +0 -15
  43. package/esm/src/agent/testing/live-evals/formatting.d.ts.map +0 -1
  44. package/esm/src/agent/testing/live-evals/formatting.js +0 -75
  45. package/esm/src/agent/testing/live-evals/index.d.ts +0 -12
  46. package/esm/src/agent/testing/live-evals/index.d.ts.map +0 -1
  47. package/esm/src/agent/testing/live-evals/index.js +0 -11
  48. package/esm/src/agent/testing/live-evals/metadata.d.ts +0 -34
  49. package/esm/src/agent/testing/live-evals/metadata.d.ts.map +0 -1
  50. package/esm/src/agent/testing/live-evals/metadata.js +0 -116
  51. package/esm/src/agent/testing/live-evals/performance.d.ts +0 -19
  52. package/esm/src/agent/testing/live-evals/performance.d.ts.map +0 -1
  53. package/esm/src/agent/testing/live-evals/performance.js +0 -22
  54. package/esm/src/agent/testing/live-evals/preflight.d.ts +0 -12
  55. package/esm/src/agent/testing/live-evals/preflight.d.ts.map +0 -1
  56. package/esm/src/agent/testing/live-evals/preflight.js +0 -27
  57. package/esm/src/agent/testing/live-evals/report.d.ts +0 -55
  58. package/esm/src/agent/testing/live-evals/report.d.ts.map +0 -1
  59. package/esm/src/agent/testing/live-evals/report.js +0 -79
  60. package/esm/src/agent/testing/live-evals/request.d.ts +0 -31
  61. package/esm/src/agent/testing/live-evals/request.d.ts.map +0 -1
  62. package/esm/src/agent/testing/live-evals/request.js +0 -48
  63. package/esm/src/agent/testing/live-evals/result.d.ts +0 -56
  64. package/esm/src/agent/testing/live-evals/result.d.ts.map +0 -1
  65. package/esm/src/agent/testing/live-evals/result.js +0 -36
  66. package/esm/src/agent/testing/live-evals/runner.d.ts +0 -135
  67. package/esm/src/agent/testing/live-evals/runner.d.ts.map +0 -1
  68. package/esm/src/agent/testing/live-evals/runner.js +0 -396
@@ -1,391 +0,0 @@
1
- import * as dntShim from "../../../../_dnt.shims.js";
2
- import { defineSchema } from "../../../schemas/index.js";
3
- import { ensureBuiltinSchemaValidator } from "../../../extensions/builtin-extensions.js";
4
- ensureBuiltinSchemaValidator();
5
- /** Zod schema for get durable run canary message. */
6
- export const getDurableRunCanaryMessageSchema = defineSchema((v) => v.object({
7
- id: v.string(),
8
- role: v.enum(["user", "assistant", "system", "tool"]),
9
- status: v.string().optional(),
10
- parts: v.array(v.object({ type: v.string() }).passthrough()).default([]),
11
- }).passthrough());
12
- const getSnakeRunSummarySchema = defineSchema((v) => v.object({
13
- run_id: v.string(),
14
- conversation_id: v.string().uuid(),
15
- message_id: v.string().uuid(),
16
- agent_id: v.string(),
17
- status: v.string(),
18
- latest_event_id: v.number().int().nonnegative(),
19
- latest_external_event_sequence: v.number().int().nonnegative().optional(),
20
- waiting_tool_call_id: v.string().nullable().optional(),
21
- waiting_tool_name: v.string().nullable().optional(),
22
- terminal_error_code: v.string().nullable().optional(),
23
- terminal_error_message: v.string().nullable().optional(),
24
- started_at: v.string().nullable().optional(),
25
- finished_at: v.string().nullable().optional(),
26
- }).passthrough());
27
- const getCamelRunSummarySchema = defineSchema((v) => v.object({
28
- runId: v.string(),
29
- conversationId: v.string().uuid(),
30
- messageId: v.string().uuid(),
31
- agentId: v.string(),
32
- status: v.string(),
33
- latestEventId: v.number().int().nonnegative(),
34
- latestExternalEventSequence: v.number().int().nonnegative().optional(),
35
- waitingToolCallId: v.string().nullable().optional(),
36
- waitingToolName: v.string().nullable().optional(),
37
- terminalErrorCode: v.string().nullable().optional(),
38
- terminalErrorMessage: v.string().nullable().optional(),
39
- startedAt: v.string().nullable().optional(),
40
- finishedAt: v.string().nullable().optional(),
41
- }).passthrough());
42
- const getDurableRunCanaryMessageListSchema = defineSchema((v) => v.object({
43
- data: v.array(getDurableRunCanaryMessageSchema()),
44
- }));
45
- /** Parses durable run canary run summary. */
46
- export function parseDurableRunCanaryRunSummary(value) {
47
- const snake = getSnakeRunSummarySchema().safeParse(value);
48
- if (snake.success) {
49
- return {
50
- runId: snake.data.run_id,
51
- conversationId: snake.data.conversation_id,
52
- messageId: snake.data.message_id,
53
- agentId: snake.data.agent_id,
54
- status: snake.data.status,
55
- latestEventId: snake.data.latest_event_id,
56
- latestExternalEventSequence: snake.data.latest_external_event_sequence ?? null,
57
- waitingToolCallId: snake.data.waiting_tool_call_id ?? null,
58
- waitingToolName: snake.data.waiting_tool_name ?? null,
59
- terminalErrorCode: snake.data.terminal_error_code ?? null,
60
- terminalErrorMessage: snake.data.terminal_error_message ?? null,
61
- startedAt: snake.data.started_at ?? null,
62
- finishedAt: snake.data.finished_at ?? null,
63
- };
64
- }
65
- const camel = getCamelRunSummarySchema().parse(value);
66
- return {
67
- runId: camel.runId,
68
- conversationId: camel.conversationId,
69
- messageId: camel.messageId,
70
- agentId: camel.agentId,
71
- status: camel.status,
72
- latestEventId: camel.latestEventId,
73
- latestExternalEventSequence: camel.latestExternalEventSequence ?? null,
74
- waitingToolCallId: camel.waitingToolCallId ?? null,
75
- waitingToolName: camel.waitingToolName ?? null,
76
- terminalErrorCode: camel.terminalErrorCode ?? null,
77
- terminalErrorMessage: camel.terminalErrorMessage ?? null,
78
- startedAt: camel.startedAt ?? null,
79
- finishedAt: camel.finishedAt ?? null,
80
- };
81
- }
82
- function createJsonHeaders(config, headers) {
83
- const result = new Headers(headers);
84
- if (!result.has("Content-Type")) {
85
- result.set("Content-Type", "application/json");
86
- }
87
- result.set("Authorization", `Bearer ${config.authToken}`);
88
- return result;
89
- }
90
- function createFetch(config) {
91
- return config.fetch ?? fetch;
92
- }
93
- function createApiUrl(config, path) {
94
- const baseHref = config.apiUrl.endsWith("/") ? config.apiUrl : `${config.apiUrl}/`;
95
- const relativePath = path.startsWith("/") ? path.slice(1) : path;
96
- return new URL(relativePath, baseHref);
97
- }
98
- function buildCreateRootRunTargetFields(config) {
99
- if (!config.projectId) {
100
- return {};
101
- }
102
- if (config.branchId) {
103
- return {
104
- source_target_kind: "preview_branch",
105
- runtime_target_kind: "preview_branch",
106
- source_target_branch_id: config.branchId,
107
- runtime_target_branch_id: config.branchId,
108
- };
109
- }
110
- return {
111
- source_target_kind: "project",
112
- runtime_target_kind: "main_branch",
113
- runtime_target_branch_id: null,
114
- };
115
- }
116
- function buildCreateRootRunBody(config, input) {
117
- return {
118
- kind: "agent",
119
- owner: {
120
- kind: "conversation",
121
- id: input.conversationId,
122
- },
123
- public_id: input.runId,
124
- request: {
125
- mode: "agent",
126
- agent_id: config.agentId,
127
- initial_status: "pending",
128
- ...buildCreateRootRunTargetFields(config),
129
- },
130
- };
131
- }
132
- function buildStartRunBody(config, input) {
133
- return {
134
- kind: "agent",
135
- owner: {
136
- kind: "conversation",
137
- id: input.conversationId,
138
- },
139
- public_id: input.runId,
140
- request: {
141
- mode: "agent",
142
- agent_id: config.agentId,
143
- input: {
144
- messages: [
145
- {
146
- id: input.userMessageId,
147
- role: "user",
148
- parts: [{ type: "text", text: input.prompt }],
149
- },
150
- ],
151
- context: {
152
- conversation_id: input.conversationId,
153
- project_id: config.projectId,
154
- branch_id: config.branchId ?? null,
155
- },
156
- durable_root_run: {
157
- run_id: input.runId,
158
- message_id: input.messageId,
159
- },
160
- },
161
- },
162
- };
163
- }
164
- /** Create durable run canary API client. */
165
- export function createDurableRunCanaryApiClient(config) {
166
- const request = createFetch(config);
167
- async function apiFetch(path, init, parse) {
168
- const response = await request(createApiUrl(config, path), {
169
- ...init,
170
- headers: createJsonHeaders(config, init?.headers),
171
- signal: AbortSignal.timeout(config.requestTimeoutMs),
172
- });
173
- if (!response.ok) {
174
- throw new Error(`API ${init?.method ?? "GET"} ${path} failed: ${response.status} ${await response.text()}`);
175
- }
176
- const payload = await response.json();
177
- return parse ? parse(payload) : payload;
178
- }
179
- async function sendUserMessageForCanary(input) {
180
- return apiFetch(`/conversations/${input.conversationId}/messages`, {
181
- method: "POST",
182
- body: JSON.stringify({
183
- role: "user",
184
- parts: [{ type: "text", text: input.prompt }],
185
- }),
186
- }, (value) => getDurableRunCanaryMessageSchema().parse(value));
187
- }
188
- async function createDurableRootRun(input) {
189
- await apiFetch("/runs", {
190
- method: "POST",
191
- body: JSON.stringify(buildCreateRootRunBody(config, input)),
192
- });
193
- }
194
- async function startDurableRun(input) {
195
- await apiFetch("/runs", {
196
- method: "POST",
197
- body: JSON.stringify(buildStartRunBody(config, input)),
198
- });
199
- }
200
- async function getRunSummary(input) {
201
- const response = await apiFetch(`/conversations/${input.conversationId}/runs/${input.runId}`);
202
- return parseDurableRunCanaryRunSummary(response);
203
- }
204
- async function listMessagesForCanary(input) {
205
- const payload = await apiFetch(`/conversations/${input.conversationId}/messages?limit=100`, undefined, (value) => getDurableRunCanaryMessageListSchema().parse(value));
206
- return payload.data;
207
- }
208
- return {
209
- createDurableRootRun,
210
- getRunSummary,
211
- listMessagesForCanary,
212
- sendUserMessageForCanary,
213
- startDurableRun,
214
- };
215
- }
216
- const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
217
- function isRecord(value) {
218
- return value !== null && typeof value === "object" && !Array.isArray(value);
219
- }
220
- function collectChildConversationIdsFromValue(value, childConversationIds, depth = 0) {
221
- if (depth > 8) {
222
- return;
223
- }
224
- if (typeof value === "string") {
225
- try {
226
- collectChildConversationIdsFromValue(JSON.parse(value), childConversationIds, depth + 1);
227
- }
228
- catch {
229
- return;
230
- }
231
- return;
232
- }
233
- if (Array.isArray(value)) {
234
- for (const entry of value) {
235
- collectChildConversationIdsFromValue(entry, childConversationIds, depth + 1);
236
- }
237
- return;
238
- }
239
- if (!isRecord(value)) {
240
- return;
241
- }
242
- for (const key of ["childConversationId", "child_conversation_id"]) {
243
- const childConversationId = value[key];
244
- if (typeof childConversationId === "string" && UUID_PATTERN.test(childConversationId)) {
245
- childConversationIds.add(childConversationId);
246
- }
247
- }
248
- for (const nestedValue of Object.values(value)) {
249
- collectChildConversationIdsFromValue(nestedValue, childConversationIds, depth + 1);
250
- }
251
- }
252
- function collectReferencedChildConversationIds(messages) {
253
- const childConversationIds = new Set();
254
- for (const message of messages) {
255
- for (const part of message.parts) {
256
- if (!isRecord(part) || (part.type !== "tool_result" && part.type !== "tool-result")) {
257
- continue;
258
- }
259
- collectChildConversationIdsFromValue(part.output, childConversationIds);
260
- }
261
- }
262
- return [...childConversationIds];
263
- }
264
- function sleep(ms) {
265
- return new Promise((resolve) => {
266
- dntShim.setTimeout(resolve, ms);
267
- });
268
- }
269
- function isTerminalRunStatus(status) {
270
- return status === "completed" || status === "failed" || status === "cancelled";
271
- }
272
- function createDurableRunCanaryRunId() {
273
- return `run_${dntShim.crypto.randomUUID()}`;
274
- }
275
- async function waitForRunSummaryVisibility(input) {
276
- const deadline = Date.now() + 30_000;
277
- while (Date.now() < deadline) {
278
- try {
279
- return await input.getRunSummary(input);
280
- }
281
- catch (error) {
282
- if (!(error instanceof Error) || !error.message.includes(" 404 ")) {
283
- throw error;
284
- }
285
- }
286
- await sleep(500);
287
- }
288
- throw new Error(`Run ${input.runId} did not become visible in time`);
289
- }
290
- async function waitForTerminalRun(input) {
291
- const deadline = Date.now() + input.requestTimeoutMs;
292
- while (Date.now() < deadline) {
293
- const run = await input.getRunSummary(input);
294
- if (isTerminalRunStatus(run.status)) {
295
- return run;
296
- }
297
- await sleep(1_500);
298
- }
299
- throw new Error(`Timed out waiting for run ${input.runId} to reach a terminal state`);
300
- }
301
- /** Create durable run canary runner. */
302
- export function createDurableRunCanaryRunner(config, apiClient = createDurableRunCanaryApiClient(config)) {
303
- const getRunSummary = apiClient.getRunSummary;
304
- async function listMessagesWithReferencedChildren(conversationId) {
305
- const messages = await apiClient.listMessagesForCanary({ conversationId });
306
- const childConversationIds = collectReferencedChildConversationIds(messages);
307
- const childMessages = await Promise.all(childConversationIds.map((childConversationId) => apiClient.listMessagesForCanary({ conversationId: childConversationId })));
308
- return [...messages, ...childMessages.flat()];
309
- }
310
- async function runCase(testCase) {
311
- const startedAt = Date.now();
312
- const prepared = await testCase.prepare();
313
- let runId = "unknown";
314
- const stopSidecar = await prepared.startSidecar?.();
315
- const resolveArtifactPaths = (currentRunId) => typeof prepared.artifactPaths === "function"
316
- ? prepared.artifactPaths(currentRunId)
317
- : prepared.artifactPaths;
318
- try {
319
- const userMessage = await apiClient.sendUserMessageForCanary({
320
- conversationId: prepared.conversationId,
321
- prompt: prepared.prompt,
322
- });
323
- runId = createDurableRunCanaryRunId();
324
- await apiClient.createDurableRootRun({
325
- conversationId: prepared.conversationId,
326
- runId,
327
- });
328
- const visibleRun = await waitForRunSummaryVisibility({
329
- conversationId: prepared.conversationId,
330
- getRunSummary,
331
- runId,
332
- });
333
- await apiClient.startDurableRun({
334
- conversationId: prepared.conversationId,
335
- messageId: visibleRun.messageId,
336
- prompt: prepared.prompt,
337
- runId,
338
- userMessageId: userMessage.id,
339
- });
340
- const terminalRun = await waitForTerminalRun({
341
- conversationId: prepared.conversationId,
342
- getRunSummary,
343
- requestTimeoutMs: config.requestTimeoutMs,
344
- runId,
345
- });
346
- const messages = await listMessagesWithReferencedChildren(prepared.conversationId);
347
- await prepared.validate({
348
- messages,
349
- run: terminalRun,
350
- });
351
- const artifactPaths = resolveArtifactPaths(runId);
352
- if (!config.keepSuccessfulEvidence) {
353
- await prepared.cleanup({ runId });
354
- }
355
- return {
356
- id: testCase.id,
357
- label: testCase.label,
358
- status: "pass",
359
- details: "OK",
360
- durationMs: Date.now() - startedAt,
361
- conversationId: prepared.conversationId,
362
- runId,
363
- ...(artifactPaths?.length ? { artifactPaths } : {}),
364
- };
365
- }
366
- catch (error) {
367
- const artifactPaths = resolveArtifactPaths(runId);
368
- return {
369
- id: testCase.id,
370
- label: testCase.label,
371
- status: "fail",
372
- details: error instanceof Error ? error.message : String(error),
373
- durationMs: Date.now() - startedAt,
374
- conversationId: prepared.conversationId,
375
- runId,
376
- ...(artifactPaths?.length ? { artifactPaths } : {}),
377
- };
378
- }
379
- finally {
380
- await stopSidecar?.();
381
- }
382
- }
383
- return {
384
- runCase,
385
- };
386
- }
387
- /** White-box helpers used by durable run canary tests. */
388
- export const durableRunCanaryRunnerInternals = {
389
- collectReferencedChildConversationIds,
390
- isTerminalRunStatus,
391
- };
@@ -1,12 +0,0 @@
1
- import type { DurableRunCanaryMessage, DurableRunCanaryRunSummary } from "./runner.js";
2
- /** Assert that a durable run canary completed successfully. */
3
- export declare function assertCompleted(run: DurableRunCanaryRunSummary): void;
4
- /** Message shape for find assistant. */
5
- export declare function findAssistantMessage(messages: DurableRunCanaryMessage[], messageId: string): DurableRunCanaryMessage;
6
- /** Stringify unknown helper. */
7
- export declare function stringifyUnknown(value: unknown): string;
8
- /** Collect assistant text helper. */
9
- export declare function collectAssistantText(message: DurableRunCanaryMessage): string;
10
- /** Assert no malformed create file tool calls helper. */
11
- export declare function assertNoMalformedCreateFileToolCalls(messages: DurableRunCanaryMessage[]): void;
12
- //# sourceMappingURL=validation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../../src/src/agent/testing/durable-run-canaries/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AA8BvF,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,GAAG,EAAE,0BAA0B,GAAG,IAAI,CAQrE;AAED,wCAAwC;AACxC,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,uBAAuB,EAAE,EACnC,SAAS,EAAE,MAAM,GAChB,uBAAuB,CASzB;AAED,gCAAgC;AAChC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAUvD;AAED,qCAAqC;AACrC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAK7E;AAED,yDAAyD;AACzD,wBAAgB,oCAAoC,CAAC,QAAQ,EAAE,uBAAuB,EAAE,GAAG,IAAI,CAY9F"}
@@ -1,71 +0,0 @@
1
- function isRecord(value) {
2
- return value !== null && typeof value === "object" && !Array.isArray(value);
3
- }
4
- function getStringProperty(record, key) {
5
- const value = record[key];
6
- return typeof value === "string" ? value : null;
7
- }
8
- function getToolCallName(part) {
9
- if (part.type === "tool_call") {
10
- return getStringProperty(part, "name");
11
- }
12
- if (part.type === "tool-call") {
13
- return getStringProperty(part, "toolName");
14
- }
15
- return null;
16
- }
17
- function hasCreateFileInput(value) {
18
- if (!isRecord(value)) {
19
- return false;
20
- }
21
- return getStringProperty(value, "path") !== null && getStringProperty(value, "content") !== null;
22
- }
23
- /** Assert that a durable run canary completed successfully. */
24
- export function assertCompleted(run) {
25
- if (run.status !== "completed") {
26
- throw new Error(`Expected completed run, got ${run.status} (${run.terminalErrorCode ?? "no-code"}: ${run.terminalErrorMessage ?? "no message"})`);
27
- }
28
- }
29
- /** Message shape for find assistant. */
30
- export function findAssistantMessage(messages, messageId) {
31
- const message = messages.find((candidate) => candidate.id === messageId);
32
- if (!message) {
33
- throw new Error(`Assistant message ${messageId} was not persisted`);
34
- }
35
- if (message.role !== "assistant") {
36
- throw new Error(`Expected assistant message ${messageId}, got role ${message.role}`);
37
- }
38
- return message;
39
- }
40
- /** Stringify unknown helper. */
41
- export function stringifyUnknown(value) {
42
- if (typeof value === "string") {
43
- return value;
44
- }
45
- try {
46
- return JSON.stringify(value);
47
- }
48
- catch {
49
- return String(value);
50
- }
51
- }
52
- /** Collect assistant text helper. */
53
- export function collectAssistantText(message) {
54
- return message.parts
55
- .filter((part) => part.type === "text" && typeof part.text === "string")
56
- .map((part) => part.text)
57
- .join("\n");
58
- }
59
- /** Assert no malformed create file tool calls helper. */
60
- export function assertNoMalformedCreateFileToolCalls(messages) {
61
- for (const message of messages) {
62
- for (const part of message.parts) {
63
- if (!isRecord(part) || getToolCallName(part) !== "create_file") {
64
- continue;
65
- }
66
- if (!hasCreateFileInput(part.input)) {
67
- throw new Error("Expected create_file tool_call input to include a path and content");
68
- }
69
- }
70
- }
71
- }
@@ -1,10 +0,0 @@
1
- /**
2
- * Agent Testing Utilities
3
- *
4
- * @module veryfront/agent/testing
5
- */
6
- import "../../../_dnt.polyfills.js";
7
- export { assertCompleted, assertContains, assertToolCalled, printTestResults, testAgent, type TestCase, type TestResult, type TestSuite, } from "./agent-tester.js";
8
- export { assertCompleted as assertDurableRunCanaryCompleted, assertNoMalformedCreateFileToolCalls, collectAssistantText, createDurableRunCanaryApiClient, createDurableRunCanaryRunner, DEFAULT_DURABLE_RUN_CANARY_TIMEOUT_MS, type DurableRunCanaryApiClient, type DurableRunCanaryApiConfig, type DurableRunCanaryCase, type DurableRunCanaryCliCaseFactoryInput, type DurableRunCanaryCreateRootRunInput, type DurableRunCanaryEnvironment, type DurableRunCanaryMessage, type DurableRunCanaryPreparedCase, type DurableRunCanaryResult, type DurableRunCanaryRunnerConfig, type DurableRunCanaryRunSummary, type DurableRunCanarySendUserMessageInput, type DurableRunCanaryStartRunInput, findAssistantMessage, getDurableRunCanaryMessageSchema, parseDurableRunCanaryRunSummary, resolveDurableRunCanaryEnvironment, runDurableRunCanaryCli, type RunDurableRunCanaryCliInput, stringifyUnknown, } from "./durable-run-canaries/index.js";
9
- export { buildFailureSuffix, buildLiveEvalCaseMetadata, type BuildLiveEvalCaseMetadataInput, buildLiveEvalCaseTagSummary, buildLiveEvalRequestBody, type BuildLiveEvalRequestBodyInput, buildLiveEvalRuntimeSummary, buildLiveEvalStatusSummary, buildProgressLine, buildRuntimePerformanceSummary, cancelLiveEvalInputRequest, containsOrderedSubsequence, containsSkillLoad, countStepStartedEvents, createFailedEvalResult, createLiveEvalApiClient, createLiveEvalCaseSupport, createLiveEvalConversation, createLiveEvalProjectUploadFixture, createLiveEvalRelease, createPassedEvalResult, createPlainTextPdf, createSkippedEvalResult, DEFAULT_LIVE_EVAL_AREA_TAG_RULES, DEFAULT_LIVE_EVAL_ENDPOINT, DEFAULT_LIVE_EVAL_OPTIONAL_JUDGE_CASE_PREFIXES, deleteLiveEvalConversation, deleteLiveEvalProjectFile, evaluateRuntimeConfidenceEnv, getLiveEvalProjectFile, hasEveryLiveEvalTag, hasFinished, listOpenLiveEvalInputRequests, type LiveEvalApiClient, type LiveEvalApiContext, type LiveEvalCase, type LiveEvalCaseMetadata, type LiveEvalCaseMetadataOptions, type LiveEvalCaseSelectionInput, type LiveEvalCaseSurface, type LiveEvalCaseTagRule, type LiveEvalCliCaseFactoryInput, type LiveEvalCliCaseGroups, type LiveEvalContext, type LiveEvalConversationInput, type LiveEvalCreateConversationInput, type LiveEvalCreateReleaseInput, type LiveEvalEnvironment, type LiveEvalInputRequestInput, type LiveEvalInputRequestRecord, type LiveEvalInputResponseValues, type LiveEvalProjectFile, type LiveEvalProjectFileInput, type LiveEvalProjectFileReaderInput, type LiveEvalProjectUploadFixtureInput, type LiveEvalRequestBody, type LiveEvalRequestTimeoutInput, type LiveEvalResultForPerformance, type LiveEvalResultForReport, type LiveEvalResultRecord, type LiveEvalRunnerConfig, type LiveEvalRuntime, type LiveEvalSubmitInputResponseInput, type LiveEvalWaitForOpenInputRequestInput, type PreparedLiveEvalInput, printRuntimeConfidencePreflight, resolveLiveEvalEnvironment, resolveLiveEvalRequestedCaseIds, runLiveEvalCli, type RunLiveEvalCliInput, type RuntimeConfidencePreflightResult, type RuntimePerformanceSummary, selectLiveEvalCases, submitLiveEvalInputResponse, waitForOpenLiveEvalInputRequest, withLiveEvalMetadata, } from "./live-evals/index.js";
10
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/testing/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,4BAA4B,CAAC;AAGpC,OAAO,EACL,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACT,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,SAAS,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,eAAe,IAAI,+BAA+B,EAClD,oCAAoC,EACpC,oBAAoB,EACpB,+BAA+B,EAC/B,4BAA4B,EAC5B,qCAAqC,EACrC,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,mCAAmC,EACxC,KAAK,kCAAkC,EACvC,KAAK,2BAA2B,EAChC,KAAK,uBAAuB,EAC5B,KAAK,4BAA4B,EACjC,KAAK,sBAAsB,EAC3B,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,oCAAoC,EACzC,KAAK,6BAA6B,EAClC,oBAAoB,EACpB,gCAAgC,EAChC,+BAA+B,EAC/B,kCAAkC,EAClC,sBAAsB,EACtB,KAAK,2BAA2B,EAChC,gBAAgB,GACjB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,KAAK,8BAA8B,EACnC,2BAA2B,EAC3B,wBAAwB,EACxB,KAAK,6BAA6B,EAClC,2BAA2B,EAC3B,0BAA0B,EAC1B,iBAAiB,EACjB,8BAA8B,EAC9B,0BAA0B,EAC1B,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,0BAA0B,EAC1B,kCAAkC,EAClC,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,gCAAgC,EAChC,0BAA0B,EAC1B,8CAA8C,EAC9C,0BAA0B,EAC1B,yBAAyB,EACzB,4BAA4B,EAC5B,sBAAsB,EACtB,mBAAmB,EACnB,WAAW,EACX,6BAA6B,EAC7B,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAChC,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,+BAA+B,EACpC,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EACnC,KAAK,iCAAiC,EACtC,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAChC,KAAK,4BAA4B,EACjC,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,gCAAgC,EACrC,KAAK,oCAAoC,EACzC,KAAK,qBAAqB,EAC1B,+BAA+B,EAC/B,0BAA0B,EAC1B,+BAA+B,EAC/B,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,gCAAgC,EACrC,KAAK,yBAAyB,EAC9B,mBAAmB,EACnB,2BAA2B,EAC3B,+BAA+B,EAC/B,oBAAoB,GACrB,MAAM,uBAAuB,CAAC"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Agent Testing Utilities
3
- *
4
- * @module veryfront/agent/testing
5
- */
6
- import "../../../_dnt.polyfills.js";
7
- export { assertCompleted, assertContains, assertToolCalled, printTestResults, testAgent, } from "./agent-tester.js";
8
- export { assertCompleted as assertDurableRunCanaryCompleted, assertNoMalformedCreateFileToolCalls, collectAssistantText, createDurableRunCanaryApiClient, createDurableRunCanaryRunner, DEFAULT_DURABLE_RUN_CANARY_TIMEOUT_MS, findAssistantMessage, getDurableRunCanaryMessageSchema, parseDurableRunCanaryRunSummary, resolveDurableRunCanaryEnvironment, runDurableRunCanaryCli, stringifyUnknown, } from "./durable-run-canaries/index.js";
9
- export { buildFailureSuffix, buildLiveEvalCaseMetadata, buildLiveEvalCaseTagSummary, buildLiveEvalRequestBody, buildLiveEvalRuntimeSummary, buildLiveEvalStatusSummary, buildProgressLine, buildRuntimePerformanceSummary, cancelLiveEvalInputRequest, containsOrderedSubsequence, containsSkillLoad, countStepStartedEvents, createFailedEvalResult, createLiveEvalApiClient, createLiveEvalCaseSupport, createLiveEvalConversation, createLiveEvalProjectUploadFixture, createLiveEvalRelease, createPassedEvalResult, createPlainTextPdf, createSkippedEvalResult, DEFAULT_LIVE_EVAL_AREA_TAG_RULES, DEFAULT_LIVE_EVAL_ENDPOINT, DEFAULT_LIVE_EVAL_OPTIONAL_JUDGE_CASE_PREFIXES, deleteLiveEvalConversation, deleteLiveEvalProjectFile, evaluateRuntimeConfidenceEnv, getLiveEvalProjectFile, hasEveryLiveEvalTag, hasFinished, listOpenLiveEvalInputRequests, printRuntimeConfidencePreflight, resolveLiveEvalEnvironment, resolveLiveEvalRequestedCaseIds, runLiveEvalCli, selectLiveEvalCases, submitLiveEvalInputResponse, waitForOpenLiveEvalInputRequest, withLiveEvalMetadata, } from "./live-evals/index.js";
@@ -1,102 +0,0 @@
1
- import type { InferSchema } from "../../../extensions/schema/index.js";
2
- import type { LiveEvalProjectFile } from "./runner.js";
3
- /** Context for live eval API. */
4
- export interface LiveEvalApiContext {
5
- apiUrl: string;
6
- authToken: string;
7
- projectId: string | null;
8
- fetch?: (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
9
- }
10
- /** Input payload for live eval request timeout. */
11
- export interface LiveEvalRequestTimeoutInput {
12
- requestTimeoutMs: number;
13
- }
14
- /** Input payload for live eval create conversation. */
15
- export interface LiveEvalCreateConversationInput extends LiveEvalRequestTimeoutInput {
16
- title: string;
17
- }
18
- /** Input payload for live eval conversation. */
19
- export interface LiveEvalConversationInput extends LiveEvalRequestTimeoutInput {
20
- conversationId: string;
21
- }
22
- /** Input payload for live eval project upload fixture. */
23
- export interface LiveEvalProjectUploadFixtureInput extends LiveEvalRequestTimeoutInput {
24
- filePath: string;
25
- contentType: string;
26
- body: BodyInit | Uint8Array;
27
- size?: number;
28
- pollIntervalMs?: number;
29
- maxAttempts?: number;
30
- }
31
- /** Input payload for live eval project file. */
32
- export interface LiveEvalProjectFileInput extends LiveEvalRequestTimeoutInput {
33
- filePath: string;
34
- }
35
- /** Input payload for live eval create release. */
36
- export interface LiveEvalCreateReleaseInput extends LiveEvalRequestTimeoutInput {
37
- description?: string;
38
- }
39
- /** Input payload for live eval wait for open input request. */
40
- export interface LiveEvalWaitForOpenInputRequestInput extends LiveEvalConversationInput {
41
- abortSignal: AbortSignal;
42
- pollIntervalMs?: number;
43
- timeoutMs?: number;
44
- }
45
- /** Public API contract for live eval input response values. */
46
- export interface LiveEvalInputResponseValues {
47
- [key: string]: string | boolean | number | null;
48
- }
49
- /** Input payload for live eval submit input response. */
50
- export interface LiveEvalSubmitInputResponseInput extends LiveEvalRequestTimeoutInput {
51
- conversationId: string;
52
- inputRequestId: string;
53
- values: LiveEvalInputResponseValues;
54
- }
55
- /** Input payload for live eval input request. */
56
- export interface LiveEvalInputRequestInput extends LiveEvalRequestTimeoutInput {
57
- conversationId: string;
58
- inputRequestId: string;
59
- }
60
- declare const getInputRequestRecordSchema: () => import("../../../internal-agents/schema.js").Schema<import("../../../extensions/schema/schema-validator.js").InferShape<{
61
- id: import("../../../internal-agents/schema.js").Schema<string>;
62
- status: import("../../../internal-agents/schema.js").Schema<string>;
63
- }>>;
64
- /** Record shape for live eval input request. */
65
- export type LiveEvalInputRequestRecord = InferSchema<ReturnType<typeof getInputRequestRecordSchema>>;
66
- /** Public API contract for live eval API client. */
67
- export interface LiveEvalApiClient {
68
- createConversation(input: LiveEvalCreateConversationInput): Promise<string>;
69
- deleteConversation(input: LiveEvalConversationInput): Promise<void>;
70
- createProjectUploadFixture(input: LiveEvalProjectUploadFixtureInput): Promise<string>;
71
- getProjectFile(input: LiveEvalProjectFileInput): Promise<LiveEvalProjectFile | null>;
72
- createRelease(input: LiveEvalCreateReleaseInput): Promise<string>;
73
- deleteProjectFile(input: LiveEvalProjectFileInput): Promise<void>;
74
- listOpenInputRequests(input: LiveEvalConversationInput): Promise<LiveEvalInputRequestRecord[]>;
75
- waitForOpenInputRequest(input: LiveEvalWaitForOpenInputRequestInput): Promise<string>;
76
- submitInputResponse(input: LiveEvalSubmitInputResponseInput): Promise<void>;
77
- cancelInputRequest(input: LiveEvalInputRequestInput): Promise<void>;
78
- }
79
- /** Create live eval API client. */
80
- export declare function createLiveEvalApiClient(context: LiveEvalApiContext): LiveEvalApiClient;
81
- /** Create live eval conversation. */
82
- export declare function createLiveEvalConversation(context: LiveEvalApiContext, input: LiveEvalCreateConversationInput): Promise<string>;
83
- /** Delete live eval conversation helper. */
84
- export declare function deleteLiveEvalConversation(context: LiveEvalApiContext, input: LiveEvalConversationInput): Promise<void>;
85
- /** Create live eval project upload fixture. */
86
- export declare function createLiveEvalProjectUploadFixture(context: LiveEvalApiContext, input: LiveEvalProjectUploadFixtureInput): Promise<string>;
87
- /** Return live eval project file. */
88
- export declare function getLiveEvalProjectFile(context: LiveEvalApiContext, input: LiveEvalProjectFileInput): Promise<LiveEvalProjectFile | null>;
89
- /** Create live eval release. */
90
- export declare function createLiveEvalRelease(context: LiveEvalApiContext, input: LiveEvalCreateReleaseInput): Promise<string>;
91
- /** Delete live eval project file helper. */
92
- export declare function deleteLiveEvalProjectFile(context: LiveEvalApiContext, input: LiveEvalProjectFileInput): Promise<void>;
93
- /** List open live eval input requests. */
94
- export declare function listOpenLiveEvalInputRequests(context: LiveEvalApiContext, input: LiveEvalConversationInput): Promise<LiveEvalInputRequestRecord[]>;
95
- /** Request payload for wait for open live eval input. */
96
- export declare function waitForOpenLiveEvalInputRequest(context: LiveEvalApiContext, input: LiveEvalWaitForOpenInputRequestInput): Promise<string>;
97
- /** Response payload for submit live eval input. */
98
- export declare function submitLiveEvalInputResponse(context: LiveEvalApiContext, input: LiveEvalSubmitInputResponseInput): Promise<void>;
99
- /** Request payload for cancel live eval input. */
100
- export declare function cancelLiveEvalInputRequest(context: LiveEvalApiContext, input: LiveEvalInputRequestInput): Promise<void>;
101
- export {};
102
- //# sourceMappingURL=api-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../../../../src/src/agent/testing/live-evals/api-client.ts"],"names":[],"mappings":"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"}