veryfront 0.1.871 → 0.1.873

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 (139) hide show
  1. package/esm/cli/commands/eval/command-help.d.ts +3 -0
  2. package/esm/cli/commands/eval/command-help.d.ts.map +1 -0
  3. package/esm/cli/commands/eval/command-help.js +42 -0
  4. package/esm/cli/commands/eval/command.d.ts +21 -0
  5. package/esm/cli/commands/eval/command.d.ts.map +1 -0
  6. package/esm/cli/commands/eval/command.js +289 -0
  7. package/esm/cli/commands/eval/handler.d.ts +26 -0
  8. package/esm/cli/commands/eval/handler.d.ts.map +1 -0
  9. package/esm/cli/commands/eval/handler.js +28 -0
  10. package/esm/cli/help/command-definitions.d.ts.map +1 -1
  11. package/esm/cli/help/command-definitions.js +2 -0
  12. package/esm/cli/router.d.ts.map +1 -1
  13. package/esm/cli/router.js +2 -0
  14. package/esm/deno.d.ts +5 -2
  15. package/esm/deno.js +7 -4
  16. package/esm/src/agent/runtime/client-profile.d.ts.map +1 -1
  17. package/esm/src/agent/runtime/client-profile.js +10 -1
  18. package/esm/src/chat/ag-ui.d.ts.map +1 -1
  19. package/esm/src/chat/protocol.d.ts.map +1 -1
  20. package/esm/src/chat/protocol.js +0 -1
  21. package/esm/src/config/schemas/config.schema.d.ts +12 -0
  22. package/esm/src/config/schemas/config.schema.d.ts.map +1 -1
  23. package/esm/src/config/schemas/config.schema.js +12 -0
  24. package/esm/src/discovery/discovery-engine.d.ts.map +1 -1
  25. package/esm/src/discovery/discovery-engine.js +6 -1
  26. package/esm/src/discovery/handlers/eval-handler.d.ts +7 -0
  27. package/esm/src/discovery/handlers/eval-handler.d.ts.map +1 -0
  28. package/esm/src/discovery/handlers/eval-handler.js +16 -0
  29. package/esm/src/discovery/handlers/index.d.ts +1 -0
  30. package/esm/src/discovery/handlers/index.d.ts.map +1 -1
  31. package/esm/src/discovery/handlers/index.js +1 -0
  32. package/esm/src/discovery/import-rewriter.d.ts +1 -1
  33. package/esm/src/discovery/import-rewriter.d.ts.map +1 -1
  34. package/esm/src/discovery/import-rewriter.js +1 -0
  35. package/esm/src/discovery/project-discovery-config.d.ts +2 -0
  36. package/esm/src/discovery/project-discovery-config.d.ts.map +1 -1
  37. package/esm/src/discovery/project-discovery-config.js +2 -0
  38. package/esm/src/discovery/transpiler.d.ts.map +1 -1
  39. package/esm/src/discovery/transpiler.js +2 -0
  40. package/esm/src/discovery/types.d.ts +3 -0
  41. package/esm/src/discovery/types.d.ts.map +1 -1
  42. package/esm/src/eval/datasets.d.ts +8 -0
  43. package/esm/src/eval/datasets.d.ts.map +1 -0
  44. package/esm/src/eval/datasets.js +66 -0
  45. package/esm/src/eval/discovery.d.ts +43 -0
  46. package/esm/src/eval/discovery.d.ts.map +1 -0
  47. package/esm/src/eval/discovery.js +123 -0
  48. package/esm/src/eval/expect.d.ts +16 -0
  49. package/esm/src/eval/expect.d.ts.map +1 -0
  50. package/esm/src/eval/expect.js +62 -0
  51. package/esm/src/eval/factory.d.ts +6 -0
  52. package/esm/src/eval/factory.d.ts.map +1 -0
  53. package/esm/src/eval/factory.js +50 -0
  54. package/esm/src/eval/index.d.ts +33 -0
  55. package/esm/src/eval/index.d.ts.map +1 -0
  56. package/esm/src/eval/index.js +29 -0
  57. package/esm/src/eval/metrics.d.ts +55 -0
  58. package/esm/src/eval/metrics.d.ts.map +1 -0
  59. package/esm/src/eval/metrics.js +223 -0
  60. package/esm/src/eval/report.d.ts +12 -0
  61. package/esm/src/eval/report.d.ts.map +1 -0
  62. package/esm/src/eval/report.js +64 -0
  63. package/esm/src/eval/runner.d.ts +4 -0
  64. package/esm/src/eval/runner.d.ts.map +1 -0
  65. package/esm/src/eval/runner.js +101 -0
  66. package/esm/src/eval/studio.d.ts +177 -0
  67. package/esm/src/eval/studio.d.ts.map +1 -0
  68. package/esm/src/eval/studio.js +176 -0
  69. package/esm/src/eval/types.d.ts +221 -0
  70. package/esm/src/eval/types.d.ts.map +1 -0
  71. package/esm/src/eval/types.js +6 -0
  72. package/esm/src/eval/validation.d.ts +4 -0
  73. package/esm/src/eval/validation.d.ts.map +1 -0
  74. package/esm/src/eval/validation.js +41 -0
  75. package/esm/src/runs/index.d.ts +1 -1
  76. package/esm/src/runs/index.js +1 -1
  77. package/esm/src/runs/schemas.d.ts +9 -9
  78. package/esm/src/runs/schemas.d.ts.map +1 -1
  79. package/esm/src/runs/schemas.js +1 -1
  80. package/esm/src/utils/version-constant.d.ts +1 -1
  81. package/esm/src/utils/version-constant.js +1 -1
  82. package/package.json +12 -4
  83. package/esm/src/agent/testing/agent-tester.d.ts +0 -53
  84. package/esm/src/agent/testing/agent-tester.d.ts.map +0 -1
  85. package/esm/src/agent/testing/agent-tester.js +0 -132
  86. package/esm/src/agent/testing/durable-run-canaries/cli-runner.d.ts +0 -21
  87. package/esm/src/agent/testing/durable-run-canaries/cli-runner.d.ts.map +0 -1
  88. package/esm/src/agent/testing/durable-run-canaries/cli-runner.js +0 -66
  89. package/esm/src/agent/testing/durable-run-canaries/environment.d.ts +0 -14
  90. package/esm/src/agent/testing/durable-run-canaries/environment.d.ts.map +0 -1
  91. package/esm/src/agent/testing/durable-run-canaries/environment.js +0 -15
  92. package/esm/src/agent/testing/durable-run-canaries/index.d.ts +0 -5
  93. package/esm/src/agent/testing/durable-run-canaries/index.d.ts.map +0 -1
  94. package/esm/src/agent/testing/durable-run-canaries/index.js +0 -4
  95. package/esm/src/agent/testing/durable-run-canaries/runner.d.ts +0 -118
  96. package/esm/src/agent/testing/durable-run-canaries/runner.d.ts.map +0 -1
  97. package/esm/src/agent/testing/durable-run-canaries/runner.js +0 -391
  98. package/esm/src/agent/testing/durable-run-canaries/validation.d.ts +0 -12
  99. package/esm/src/agent/testing/durable-run-canaries/validation.d.ts.map +0 -1
  100. package/esm/src/agent/testing/durable-run-canaries/validation.js +0 -71
  101. package/esm/src/agent/testing/index.d.ts +0 -10
  102. package/esm/src/agent/testing/index.d.ts.map +0 -1
  103. package/esm/src/agent/testing/index.js +0 -9
  104. package/esm/src/agent/testing/live-evals/api-client.d.ts +0 -102
  105. package/esm/src/agent/testing/live-evals/api-client.d.ts.map +0 -1
  106. package/esm/src/agent/testing/live-evals/api-client.js +0 -313
  107. package/esm/src/agent/testing/live-evals/cli-runner.d.ts +0 -40
  108. package/esm/src/agent/testing/live-evals/cli-runner.d.ts.map +0 -1
  109. package/esm/src/agent/testing/live-evals/cli-runner.js +0 -144
  110. package/esm/src/agent/testing/live-evals/environment.d.ts +0 -15
  111. package/esm/src/agent/testing/live-evals/environment.d.ts.map +0 -1
  112. package/esm/src/agent/testing/live-evals/environment.js +0 -20
  113. package/esm/src/agent/testing/live-evals/formatting.d.ts +0 -15
  114. package/esm/src/agent/testing/live-evals/formatting.d.ts.map +0 -1
  115. package/esm/src/agent/testing/live-evals/formatting.js +0 -75
  116. package/esm/src/agent/testing/live-evals/index.d.ts +0 -12
  117. package/esm/src/agent/testing/live-evals/index.d.ts.map +0 -1
  118. package/esm/src/agent/testing/live-evals/index.js +0 -11
  119. package/esm/src/agent/testing/live-evals/metadata.d.ts +0 -34
  120. package/esm/src/agent/testing/live-evals/metadata.d.ts.map +0 -1
  121. package/esm/src/agent/testing/live-evals/metadata.js +0 -116
  122. package/esm/src/agent/testing/live-evals/performance.d.ts +0 -19
  123. package/esm/src/agent/testing/live-evals/performance.d.ts.map +0 -1
  124. package/esm/src/agent/testing/live-evals/performance.js +0 -22
  125. package/esm/src/agent/testing/live-evals/preflight.d.ts +0 -12
  126. package/esm/src/agent/testing/live-evals/preflight.d.ts.map +0 -1
  127. package/esm/src/agent/testing/live-evals/preflight.js +0 -27
  128. package/esm/src/agent/testing/live-evals/report.d.ts +0 -55
  129. package/esm/src/agent/testing/live-evals/report.d.ts.map +0 -1
  130. package/esm/src/agent/testing/live-evals/report.js +0 -79
  131. package/esm/src/agent/testing/live-evals/request.d.ts +0 -31
  132. package/esm/src/agent/testing/live-evals/request.d.ts.map +0 -1
  133. package/esm/src/agent/testing/live-evals/request.js +0 -48
  134. package/esm/src/agent/testing/live-evals/result.d.ts +0 -56
  135. package/esm/src/agent/testing/live-evals/result.d.ts.map +0 -1
  136. package/esm/src/agent/testing/live-evals/result.js +0 -36
  137. package/esm/src/agent/testing/live-evals/runner.d.ts +0 -135
  138. package/esm/src/agent/testing/live-evals/runner.d.ts.map +0 -1
  139. package/esm/src/agent/testing/live-evals/runner.js +0 -396
@@ -0,0 +1,177 @@
1
+ import type { InferSchema } from "../extensions/schema/index.js";
2
+ import type { DiscoveredEval } from "./discovery.js";
3
+ /** Schema for Eval Studio capabilities. */
4
+ export declare const getEvalStudioCapabilitySchema: () => import("../internal-agents/schema.js").Schema<"project.evals.read" | "project.evals.write">;
5
+ /** Schema for an editable Eval source field name. */
6
+ export declare const getEvalEditableFieldSchema: () => import("../internal-agents/schema.js").Schema<"target" | "description" | "metrics" | "name" | "metadata" | "tags" | "check" | "dataset" | "repetitions">;
7
+ /** Schema for an Eval source reference. */
8
+ export declare const getEvalSourceReferenceSchema: () => import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
9
+ filePath: import("../internal-agents/schema.js").Schema<string>;
10
+ exportName: import("../internal-agents/schema.js").Schema<string>;
11
+ content: import("../internal-agents/schema.js").Schema<string | undefined>;
12
+ }>>;
13
+ /** Schema for an Eval example in Studio source documents. */
14
+ export declare const getEvalSourceExampleSchema: () => import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
15
+ id: import("../internal-agents/schema.js").Schema<string>;
16
+ input: import("../internal-agents/schema.js").Schema<unknown>;
17
+ reference: import("../internal-agents/schema.js").Schema<unknown>;
18
+ metadata: import("../internal-agents/schema.js").Schema<Record<string, unknown> | undefined>;
19
+ }>>;
20
+ /** Schema for an Eval dataset in Studio source documents. */
21
+ export declare const getEvalSourceDatasetSchema: () => import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
22
+ kind: import("../internal-agents/schema.js").Schema<"json" | "dynamic" | "inline" | "jsonl">;
23
+ path: import("../internal-agents/schema.js").Schema<string | undefined>;
24
+ examples: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
25
+ id: import("../internal-agents/schema.js").Schema<string>;
26
+ input: import("../internal-agents/schema.js").Schema<unknown>;
27
+ reference: import("../internal-agents/schema.js").Schema<unknown>;
28
+ metadata: import("../internal-agents/schema.js").Schema<Record<string, unknown> | undefined>;
29
+ }>[] | undefined>;
30
+ editable: import("../internal-agents/schema.js").Schema<boolean>;
31
+ dynamic: import("../internal-agents/schema.js").Schema<boolean>;
32
+ }>>;
33
+ /** Schema for an Eval metric in Studio source documents. */
34
+ export declare const getEvalSourceMetricSchema: () => import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
35
+ name: import("../internal-agents/schema.js").Schema<string>;
36
+ family: import("../internal-agents/schema.js").Schema<"agent" | "check" | "answer" | "ops" | "judge">;
37
+ severity: import("../internal-agents/schema.js").Schema<"gate" | "soft" | "budget">;
38
+ threshold: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
39
+ min: import("../internal-agents/schema.js").Schema<number | undefined>;
40
+ max: import("../internal-agents/schema.js").Schema<number | undefined>;
41
+ }> | undefined>;
42
+ config: import("../internal-agents/schema.js").Schema<Record<string, unknown> | undefined>;
43
+ editable: import("../internal-agents/schema.js").Schema<boolean>;
44
+ dynamic: import("../internal-agents/schema.js").Schema<boolean>;
45
+ }>>;
46
+ /** Schema for a Studio-editable Eval source document. */
47
+ export declare const getEvalSourceDocumentSchema: () => import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
48
+ kind: import("../internal-agents/schema.js").Schema<"eval-source-document">;
49
+ id: import("../internal-agents/schema.js").Schema<string>;
50
+ name: import("../internal-agents/schema.js").Schema<string>;
51
+ description: import("../internal-agents/schema.js").Schema<string | undefined>;
52
+ targetKind: import("../internal-agents/schema.js").Schema<"agent">;
53
+ target: import("../internal-agents/schema.js").Schema<string>;
54
+ source: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
55
+ filePath: import("../internal-agents/schema.js").Schema<string>;
56
+ exportName: import("../internal-agents/schema.js").Schema<string>;
57
+ content: import("../internal-agents/schema.js").Schema<string | undefined>;
58
+ }>>;
59
+ dataset: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
60
+ kind: import("../internal-agents/schema.js").Schema<"json" | "dynamic" | "inline" | "jsonl">;
61
+ path: import("../internal-agents/schema.js").Schema<string | undefined>;
62
+ examples: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
63
+ id: import("../internal-agents/schema.js").Schema<string>;
64
+ input: import("../internal-agents/schema.js").Schema<unknown>;
65
+ reference: import("../internal-agents/schema.js").Schema<unknown>;
66
+ metadata: import("../internal-agents/schema.js").Schema<Record<string, unknown> | undefined>;
67
+ }>[] | undefined>;
68
+ editable: import("../internal-agents/schema.js").Schema<boolean>;
69
+ dynamic: import("../internal-agents/schema.js").Schema<boolean>;
70
+ }>>;
71
+ metrics: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
72
+ name: import("../internal-agents/schema.js").Schema<string>;
73
+ family: import("../internal-agents/schema.js").Schema<"agent" | "check" | "answer" | "ops" | "judge">;
74
+ severity: import("../internal-agents/schema.js").Schema<"gate" | "soft" | "budget">;
75
+ threshold: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
76
+ min: import("../internal-agents/schema.js").Schema<number | undefined>;
77
+ max: import("../internal-agents/schema.js").Schema<number | undefined>;
78
+ }> | undefined>;
79
+ config: import("../internal-agents/schema.js").Schema<Record<string, unknown> | undefined>;
80
+ editable: import("../internal-agents/schema.js").Schema<boolean>;
81
+ dynamic: import("../internal-agents/schema.js").Schema<boolean>;
82
+ }>[]>;
83
+ repetitions: import("../internal-agents/schema.js").Schema<number>;
84
+ tags: import("../internal-agents/schema.js").Schema<string[]>;
85
+ metadata: import("../internal-agents/schema.js").Schema<Record<string, unknown>>;
86
+ editableFields: import("../internal-agents/schema.js").Schema<("target" | "description" | "metrics" | "name" | "metadata" | "tags" | "check" | "dataset" | "repetitions")[]>;
87
+ dynamicFields: import("../internal-agents/schema.js").Schema<("target" | "description" | "metrics" | "name" | "metadata" | "tags" | "check" | "dataset" | "repetitions")[]>;
88
+ capabilities: import("../internal-agents/schema.js").Schema<("project.evals.read" | "project.evals.write")[]>;
89
+ }>>;
90
+ /** Schema for a source patch submitted from an Eval editor. */
91
+ export declare const getEvalSourcePatchSchema: () => import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
92
+ kind: import("../internal-agents/schema.js").Schema<"eval-source-patch">;
93
+ id: import("../internal-agents/schema.js").Schema<string>;
94
+ source: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
95
+ filePath: import("../internal-agents/schema.js").Schema<string>;
96
+ exportName: import("../internal-agents/schema.js").Schema<string>;
97
+ content: import("../internal-agents/schema.js").Schema<string | undefined>;
98
+ }>>;
99
+ fields: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
100
+ name: import("../internal-agents/schema.js").Schema<string | undefined>;
101
+ description: import("../internal-agents/schema.js").Schema<string | undefined>;
102
+ target: import("../internal-agents/schema.js").Schema<string | undefined>;
103
+ dataset: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
104
+ kind: import("../internal-agents/schema.js").Schema<"json" | "dynamic" | "inline" | "jsonl">;
105
+ path: import("../internal-agents/schema.js").Schema<string | undefined>;
106
+ examples: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
107
+ id: import("../internal-agents/schema.js").Schema<string>;
108
+ input: import("../internal-agents/schema.js").Schema<unknown>;
109
+ reference: import("../internal-agents/schema.js").Schema<unknown>;
110
+ metadata: import("../internal-agents/schema.js").Schema<Record<string, unknown> | undefined>;
111
+ }>[] | undefined>;
112
+ editable: import("../internal-agents/schema.js").Schema<boolean>;
113
+ dynamic: import("../internal-agents/schema.js").Schema<boolean>;
114
+ }> | undefined>;
115
+ repetitions: import("../internal-agents/schema.js").Schema<number | undefined>;
116
+ tags: import("../internal-agents/schema.js").Schema<string[] | undefined>;
117
+ metadata: import("../internal-agents/schema.js").Schema<Record<string, unknown> | undefined>;
118
+ metrics: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
119
+ name: import("../internal-agents/schema.js").Schema<string>;
120
+ family: import("../internal-agents/schema.js").Schema<"agent" | "check" | "answer" | "ops" | "judge">;
121
+ severity: import("../internal-agents/schema.js").Schema<"gate" | "soft" | "budget">;
122
+ threshold: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
123
+ min: import("../internal-agents/schema.js").Schema<number | undefined>;
124
+ max: import("../internal-agents/schema.js").Schema<number | undefined>;
125
+ }> | undefined>;
126
+ config: import("../internal-agents/schema.js").Schema<Record<string, unknown> | undefined>;
127
+ editable: import("../internal-agents/schema.js").Schema<boolean>;
128
+ dynamic: import("../internal-agents/schema.js").Schema<boolean>;
129
+ }>[] | undefined>;
130
+ }>>;
131
+ }>>;
132
+ /** Schema for V2-ready Eval run projections. */
133
+ export declare const getEvalRunSchema: () => import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
134
+ kind: import("../internal-agents/schema.js").Schema<"eval-run">;
135
+ runId: import("../internal-agents/schema.js").Schema<string>;
136
+ evalId: import("../internal-agents/schema.js").Schema<string>;
137
+ status: import("../internal-agents/schema.js").Schema<"waiting" | "failed" | "completed" | "pending" | "cancelled" | "running">;
138
+ targetKind: import("../internal-agents/schema.js").Schema<"agent">;
139
+ target: import("../internal-agents/schema.js").Schema<string>;
140
+ source: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
141
+ filePath: import("../internal-agents/schema.js").Schema<string>;
142
+ exportName: import("../internal-agents/schema.js").Schema<string>;
143
+ content: import("../internal-agents/schema.js").Schema<string | undefined>;
144
+ }> | undefined>;
145
+ summary: import("../internal-agents/schema.js").Schema<import("../extensions/schema/schema-validator.js").InferShape<{
146
+ records: import("../internal-agents/schema.js").Schema<number>;
147
+ passed: import("../internal-agents/schema.js").Schema<number>;
148
+ failed: import("../internal-agents/schema.js").Schema<number>;
149
+ passRate: import("../internal-agents/schema.js").Schema<number>;
150
+ }> | null>;
151
+ reportPath: import("../internal-agents/schema.js").Schema<string | null>;
152
+ error: import("../internal-agents/schema.js").Schema<unknown>;
153
+ metadata: import("../internal-agents/schema.js").Schema<Record<string, unknown>>;
154
+ createdAt: import("../internal-agents/schema.js").Schema<string>;
155
+ startedAt: import("../internal-agents/schema.js").Schema<string | null>;
156
+ completedAt: import("../internal-agents/schema.js").Schema<string | null>;
157
+ }>>;
158
+ /** Capability string Studio uses for Eval read and write access. */
159
+ export type EvalStudioCapability = InferSchema<ReturnType<typeof getEvalStudioCapabilitySchema>>;
160
+ /** Form-editable Eval source field name. */
161
+ export type EvalEditableField = InferSchema<ReturnType<typeof getEvalEditableFieldSchema>>;
162
+ /** Source location for an Eval definition. */
163
+ export type EvalSourceReference = InferSchema<ReturnType<typeof getEvalSourceReferenceSchema>>;
164
+ /** Studio-editable Eval source document. */
165
+ export type EvalSourceDocument = InferSchema<ReturnType<typeof getEvalSourceDocumentSchema>>;
166
+ /** Eval source patch submitted by Studio forms. */
167
+ export type EvalSourcePatch = InferSchema<ReturnType<typeof getEvalSourcePatchSchema>>;
168
+ /** V2-ready Eval run projection. */
169
+ export type EvalRun = InferSchema<ReturnType<typeof getEvalRunSchema>>;
170
+ /** Options for creating a Studio source document from a discovered eval. */
171
+ export interface CreateEvalSourceDocumentOptions {
172
+ sourceText?: string;
173
+ capabilities?: EvalStudioCapability[];
174
+ }
175
+ /** Create the normalized Eval document Studio can list, inspect, and edit. */
176
+ export declare function createEvalSourceDocument(discovered: DiscoveredEval, options?: CreateEvalSourceDocumentOptions): EvalSourceDocument;
177
+ //# sourceMappingURL=studio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"studio.d.ts","sourceRoot":"","sources":["../../../src/src/eval/studio.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,2CAA2C;AAC3C,eAAO,MAAM,6BAA6B,mGAEzC,CAAC;AAEF,qDAAqD;AACrD,eAAO,MAAM,0BAA0B,gKActC,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,4BAA4B;;;;GAMxC,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,0BAA0B;;;;;GAOtC,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,0BAA0B;;;;;;;;;;;GAQtC,CAAC;AAEF,4DAA4D;AAC5D,eAAO,MAAM,yBAAyB;;;;;;;;;;;GAarC,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkBvC,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgBpC,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;GAsB5B,CAAC;AAEF,oEAAoE;AACpE,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC,CAAC;AACjG,4CAA4C;AAC5C,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC,CAAC;AAC3F,8CAA8C;AAC9C,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAC;AAC/F,4CAA4C;AAC5C,MAAM,MAAM,kBAAkB,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC,CAAC;AAC7F,mDAAmD;AACnD,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC;AACvF,oCAAoC;AACpC,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC;AAEvE,4EAA4E;AAC5E,MAAM,WAAW,+BAA+B;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACvC;AAsDD,8EAA8E;AAC9E,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,cAAc,EAC1B,OAAO,GAAE,+BAAoC,GAC5C,kBAAkB,CAyBpB"}
@@ -0,0 +1,176 @@
1
+ import { defineSchema } from "../schemas/index.js";
2
+ /** Schema for Eval Studio capabilities. */
3
+ export const getEvalStudioCapabilitySchema = defineSchema((v) => v.enum(["project.evals.read", "project.evals.write"]));
4
+ /** Schema for an editable Eval source field name. */
5
+ export const getEvalEditableFieldSchema = defineSchema((v) => v.enum([
6
+ "name",
7
+ "description",
8
+ "target",
9
+ "dataset",
10
+ "repetitions",
11
+ "tags",
12
+ "metadata",
13
+ "metrics",
14
+ "check",
15
+ ]));
16
+ /** Schema for an Eval source reference. */
17
+ export const getEvalSourceReferenceSchema = defineSchema((v) => v.object({
18
+ filePath: v.string(),
19
+ exportName: v.string(),
20
+ content: v.string().optional(),
21
+ }));
22
+ /** Schema for an Eval example in Studio source documents. */
23
+ export const getEvalSourceExampleSchema = defineSchema((v) => v.object({
24
+ id: v.string(),
25
+ input: v.unknown(),
26
+ reference: v.unknown().optional(),
27
+ metadata: v.record(v.string(), v.unknown()).optional(),
28
+ }));
29
+ /** Schema for an Eval dataset in Studio source documents. */
30
+ export const getEvalSourceDatasetSchema = defineSchema((v) => v.object({
31
+ kind: v.enum(["inline", "json", "jsonl", "dynamic"]),
32
+ path: v.string().optional(),
33
+ examples: v.array(getEvalSourceExampleSchema()).optional(),
34
+ editable: v.boolean(),
35
+ dynamic: v.boolean(),
36
+ }));
37
+ /** Schema for an Eval metric in Studio source documents. */
38
+ export const getEvalSourceMetricSchema = defineSchema((v) => v.object({
39
+ name: v.string(),
40
+ family: v.enum(["answer", "agent", "ops", "judge", "check"]),
41
+ severity: v.enum(["gate", "soft", "budget"]),
42
+ threshold: v.object({
43
+ min: v.number().optional(),
44
+ max: v.number().optional(),
45
+ }).optional(),
46
+ config: v.record(v.string(), v.unknown()).optional(),
47
+ editable: v.boolean(),
48
+ dynamic: v.boolean(),
49
+ }));
50
+ /** Schema for a Studio-editable Eval source document. */
51
+ export const getEvalSourceDocumentSchema = defineSchema((v) => v.object({
52
+ kind: v.literal("eval-source-document"),
53
+ id: v.string(),
54
+ name: v.string(),
55
+ description: v.string().optional(),
56
+ targetKind: v.literal("agent"),
57
+ target: v.string(),
58
+ source: getEvalSourceReferenceSchema(),
59
+ dataset: getEvalSourceDatasetSchema(),
60
+ metrics: v.array(getEvalSourceMetricSchema()),
61
+ repetitions: v.number().int().positive(),
62
+ tags: v.array(v.string()),
63
+ metadata: v.record(v.string(), v.unknown()),
64
+ editableFields: v.array(getEvalEditableFieldSchema()),
65
+ dynamicFields: v.array(getEvalEditableFieldSchema()),
66
+ capabilities: v.array(getEvalStudioCapabilitySchema()),
67
+ }));
68
+ /** Schema for a source patch submitted from an Eval editor. */
69
+ export const getEvalSourcePatchSchema = defineSchema((v) => v.object({
70
+ kind: v.literal("eval-source-patch"),
71
+ id: v.string(),
72
+ source: getEvalSourceReferenceSchema(),
73
+ fields: v.object({
74
+ name: v.string().optional(),
75
+ description: v.string().optional(),
76
+ target: v.string().optional(),
77
+ dataset: getEvalSourceDatasetSchema().optional(),
78
+ repetitions: v.number().int().positive().optional(),
79
+ tags: v.array(v.string()).optional(),
80
+ metadata: v.record(v.string(), v.unknown()).optional(),
81
+ metrics: v.array(getEvalSourceMetricSchema()).optional(),
82
+ }).strict(),
83
+ }));
84
+ /** Schema for V2-ready Eval run projections. */
85
+ export const getEvalRunSchema = defineSchema((v) => v.object({
86
+ kind: v.literal("eval-run"),
87
+ runId: v.string(),
88
+ evalId: v.string(),
89
+ status: v.enum(["pending", "running", "waiting", "completed", "failed", "cancelled"]),
90
+ targetKind: v.literal("agent"),
91
+ target: v.string(),
92
+ source: getEvalSourceReferenceSchema().optional(),
93
+ summary: v.object({
94
+ records: v.number().int().nonnegative(),
95
+ passed: v.number().int().nonnegative(),
96
+ failed: v.number().int().nonnegative(),
97
+ passRate: v.number(),
98
+ }).nullable(),
99
+ reportPath: v.string().nullable(),
100
+ error: v.unknown().nullable(),
101
+ metadata: v.record(v.string(), v.unknown()),
102
+ createdAt: v.string(),
103
+ startedAt: v.string().nullable(),
104
+ completedAt: v.string().nullable(),
105
+ }));
106
+ const DEFAULT_EVAL_STUDIO_CAPABILITIES = [
107
+ "project.evals.read",
108
+ "project.evals.write",
109
+ ];
110
+ const BASE_EDITABLE_FIELDS = [
111
+ "name",
112
+ "description",
113
+ "target",
114
+ "dataset",
115
+ "repetitions",
116
+ "tags",
117
+ "metadata",
118
+ "metrics",
119
+ ];
120
+ function normalizeDataset(definition) {
121
+ const dataset = definition.dataset;
122
+ const dynamic = !["inline", "json", "jsonl"].includes(dataset.kind);
123
+ return {
124
+ kind: dynamic ? "dynamic" : dataset.kind,
125
+ ...(dataset.path ? { path: dataset.path } : {}),
126
+ ...(dataset.examples ? { examples: dataset.examples.map(copyExample) } : {}),
127
+ editable: !dynamic,
128
+ dynamic,
129
+ };
130
+ }
131
+ function copyExample(example) {
132
+ return {
133
+ id: example.id,
134
+ input: example.input,
135
+ ...(example.reference !== undefined ? { reference: example.reference } : {}),
136
+ ...(example.metadata ? { metadata: { ...example.metadata } } : {}),
137
+ };
138
+ }
139
+ function createSourceMetric(metric) {
140
+ const dynamic = metric.family === "judge" || metric.family === "check";
141
+ return {
142
+ name: metric.name,
143
+ family: metric.family,
144
+ severity: metric.severity,
145
+ ...(metric.threshold ? { threshold: { ...metric.threshold } } : {}),
146
+ ...(metric.config ? { config: { ...metric.config } } : {}),
147
+ editable: !!metric.config || metric.name === "agent.noFailedTools",
148
+ dynamic,
149
+ };
150
+ }
151
+ /** Create the normalized Eval document Studio can list, inspect, and edit. */
152
+ export function createEvalSourceDocument(discovered, options = {}) {
153
+ const { definition } = discovered;
154
+ const dynamicFields = definition.check ? ["check"] : [];
155
+ return getEvalSourceDocumentSchema().parse({
156
+ kind: "eval-source-document",
157
+ id: discovered.id,
158
+ name: definition.name,
159
+ ...(definition.description ? { description: definition.description } : {}),
160
+ targetKind: definition.targetKind,
161
+ target: definition.target,
162
+ source: {
163
+ filePath: discovered.filePath,
164
+ exportName: discovered.exportName,
165
+ ...(options.sourceText ? { content: options.sourceText } : {}),
166
+ },
167
+ dataset: normalizeDataset(definition),
168
+ metrics: definition.metrics.map(createSourceMetric),
169
+ repetitions: definition.repetitions,
170
+ tags: [...definition.tags],
171
+ metadata: { ...definition.metadata },
172
+ editableFields: BASE_EDITABLE_FIELDS,
173
+ dynamicFields,
174
+ capabilities: options.capabilities ?? DEFAULT_EVAL_STUDIO_CAPABILITIES,
175
+ });
176
+ }
@@ -0,0 +1,221 @@
1
+ /**
2
+ * Types for Veryfront eval definitions, datasets, metrics, and reports.
3
+ *
4
+ * @module eval
5
+ */
6
+ /** Primitive kind an eval can execute. V1 supports agent targets. */
7
+ export type EvalTargetKind = "agent";
8
+ /** How a metric result affects the final eval result. */
9
+ export type EvalSeverity = "gate" | "soft" | "budget";
10
+ /** Metric family used for grouping report summaries. */
11
+ export type EvalMetricFamily = "answer" | "agent" | "ops" | "judge" | "check";
12
+ /** Numeric threshold attached to score-based metrics. */
13
+ export type EvalMetricThreshold = {
14
+ min?: number;
15
+ max?: number;
16
+ };
17
+ /** Value that can be returned synchronously or as a promise. */
18
+ export type EvalMaybePromise<T> = T | Promise<T>;
19
+ /** Normalized dataset example used by eval runners and reports. */
20
+ export interface EvalExample {
21
+ id: string;
22
+ input: unknown;
23
+ reference?: unknown;
24
+ metadata?: Record<string, unknown>;
25
+ }
26
+ /** Dataset example shape accepted by eval definitions. */
27
+ export type EvalExampleInput = {
28
+ id: string;
29
+ input: unknown;
30
+ reference?: unknown;
31
+ metadata?: Record<string, unknown>;
32
+ };
33
+ /** Context passed to dataset loaders. */
34
+ export interface EvalDatasetLoadContext {
35
+ baseDir: string;
36
+ }
37
+ /** Dataset loader used by an eval definition. */
38
+ export interface EvalDataset {
39
+ kind: "inline" | "json" | "jsonl";
40
+ path?: string;
41
+ examples?: EvalExample[];
42
+ load(context: EvalDatasetLoadContext): Promise<EvalExample[]>;
43
+ }
44
+ /** Token and cost usage captured for one eval record. */
45
+ export interface EvalUsage {
46
+ inputTokens?: number;
47
+ outputTokens?: number;
48
+ totalTokens?: number;
49
+ costUsd?: number;
50
+ }
51
+ /** Tool call metadata captured during one eval record. */
52
+ export interface EvalToolCall {
53
+ name: string;
54
+ status?: "ok" | "error" | "skipped";
55
+ error?: string;
56
+ metadata?: Record<string, unknown>;
57
+ }
58
+ /** Trace metadata captured for one eval record. */
59
+ export interface EvalTrace {
60
+ events: unknown[];
61
+ toolCalls: EvalToolCall[];
62
+ }
63
+ /** One executed example and repetition inside an eval report. */
64
+ export interface EvalRecord {
65
+ id: string;
66
+ evalId: string;
67
+ exampleId: string;
68
+ repetition: number;
69
+ input: unknown;
70
+ output: unknown;
71
+ reference?: unknown;
72
+ metadata: Record<string, unknown>;
73
+ trace: EvalTrace;
74
+ usage: EvalUsage;
75
+ durationMs: number;
76
+ completed: boolean;
77
+ error?: string;
78
+ metrics?: EvalMetricResult[];
79
+ checks?: EvalMetricResult[];
80
+ }
81
+ /** Result emitted by a metric or check assertion. */
82
+ export interface EvalMetricResult {
83
+ name: string;
84
+ family: EvalMetricFamily;
85
+ severity: EvalSeverity;
86
+ score?: number;
87
+ pass?: boolean;
88
+ skipped?: boolean;
89
+ label?: string;
90
+ explanation?: string;
91
+ evidence?: Record<string, unknown>;
92
+ }
93
+ /** Optional runtime context passed to metric evaluators. */
94
+ export interface EvalMetricContext {
95
+ now?: () => Date;
96
+ }
97
+ /** Metric contract used by eval definitions. */
98
+ export interface EvalMetric {
99
+ name: string;
100
+ family: EvalMetricFamily;
101
+ severity: EvalSeverity;
102
+ threshold?: EvalMetricThreshold;
103
+ config?: Record<string, unknown>;
104
+ evaluate(record: EvalRecord, context?: EvalMetricContext): EvalMaybePromise<EvalMetricResult>;
105
+ gate(threshold?: EvalMetricThreshold): EvalMetric;
106
+ soft(threshold?: EvalMetricThreshold): EvalMetric;
107
+ budget(threshold?: EvalMetricThreshold): EvalMetric;
108
+ }
109
+ /** Fluent severity helpers for `check` expectations. */
110
+ export interface EvalExpectation {
111
+ gate(threshold?: EvalMetricThreshold): EvalMetricResult;
112
+ soft(threshold?: EvalMetricThreshold): EvalMetricResult;
113
+ budget(threshold?: EvalMetricThreshold): EvalMetricResult;
114
+ }
115
+ /** Built-in expectation helpers available inside `check`. */
116
+ export interface EvalExpect {
117
+ completed(): EvalExpectation;
118
+ outputContains(text: string): EvalExpectation;
119
+ noFailedTools(): EvalExpectation;
120
+ }
121
+ /** Context passed to an eval definition's `check` callback. */
122
+ export interface EvalCheckContext {
123
+ definition: EvalDefinition;
124
+ example: EvalExample;
125
+ repetition: number;
126
+ record: EvalRecord;
127
+ expect: EvalExpect;
128
+ }
129
+ /** Source location for a discovered eval definition. */
130
+ export interface EvalSource {
131
+ filePath: string;
132
+ exportName: string;
133
+ }
134
+ /** First-class eval definition discovered from project source. */
135
+ export interface EvalDefinition {
136
+ kind: "eval";
137
+ targetKind: EvalTargetKind;
138
+ id: string;
139
+ name: string;
140
+ description?: string;
141
+ target: string;
142
+ dataset: EvalDataset;
143
+ metrics: EvalMetric[];
144
+ repetitions: number;
145
+ tags: string[];
146
+ metadata: Record<string, unknown>;
147
+ source?: EvalSource;
148
+ check?: (context: EvalCheckContext) => EvalMaybePromise<void>;
149
+ }
150
+ /** Input accepted by `evalAgent`. */
151
+ export interface EvalAgentInput {
152
+ id?: string;
153
+ name?: string;
154
+ description?: string;
155
+ target: string;
156
+ dataset: EvalDataset | EvalExampleInput[];
157
+ metrics?: EvalMetric[];
158
+ repetitions?: number;
159
+ tags?: string[];
160
+ metadata?: Record<string, unknown>;
161
+ check?: (context: EvalCheckContext) => EvalMaybePromise<void>;
162
+ }
163
+ /** Context passed to an agent adapter when `runEval` executes an example. */
164
+ export interface EvalAgentAdapterContext {
165
+ definition: EvalDefinition;
166
+ example: EvalExample;
167
+ repetition: number;
168
+ }
169
+ /** Agent adapter result normalized into an eval record. */
170
+ export interface EvalAgentAdapterResult {
171
+ text?: string;
172
+ json?: unknown;
173
+ output?: unknown;
174
+ trace?: Partial<EvalTrace>;
175
+ usage?: EvalUsage;
176
+ durationMs?: number;
177
+ completed?: boolean;
178
+ error?: string;
179
+ }
180
+ /** Adapter used by `runEval` to execute V1 agent targets. */
181
+ export type EvalAgentAdapter = (context: EvalAgentAdapterContext) => EvalMaybePromise<string | EvalAgentAdapterResult>;
182
+ /** Options for running an eval locally. */
183
+ export interface RunEvalOptions {
184
+ adapters: {
185
+ agent: EvalAgentAdapter;
186
+ };
187
+ baseDir?: string;
188
+ runId?: string;
189
+ now?: () => Date;
190
+ }
191
+ /** Aggregate pass/fail summary for one metric. */
192
+ export interface EvalMetricSummary {
193
+ name: string;
194
+ family: EvalMetricFamily;
195
+ severity: EvalSeverity;
196
+ passed: number;
197
+ failed: number;
198
+ skipped: number;
199
+ passRate: number;
200
+ }
201
+ /** Aggregate pass/fail summary for one eval report. */
202
+ export interface EvalReportSummary {
203
+ records: number;
204
+ passed: number;
205
+ failed: number;
206
+ passRate: number;
207
+ metrics: EvalMetricSummary[];
208
+ }
209
+ /** JSON-serializable report produced by `runEval`. */
210
+ export interface EvalReport {
211
+ kind: "eval-report";
212
+ runId: string;
213
+ definitionId: string;
214
+ targetKind: EvalTargetKind;
215
+ target: string;
216
+ startedAt: string;
217
+ endedAt: string;
218
+ summary: EvalReportSummary;
219
+ records: EvalRecord[];
220
+ }
221
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/src/eval/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Types for Veryfront eval definitions, datasets, metrics, and reports.
3
+ *
4
+ * @module eval
5
+ */
6
+ export {};
@@ -0,0 +1,4 @@
1
+ import type { EvalExample, EvalExampleInput } from "./types.js";
2
+ export declare function createEvalValidationError(message: string): Error;
3
+ export declare function normalizeEvalExamples(examples: readonly EvalExampleInput[], source: string): EvalExample[];
4
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/src/eval/validation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEhE,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAEhE;AAWD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,EACrC,MAAM,EAAE,MAAM,GACb,WAAW,EAAE,CAmCf"}
@@ -0,0 +1,41 @@
1
+ import { INVALID_ARGUMENT } from "../errors/index.js";
2
+ export function createEvalValidationError(message) {
3
+ return INVALID_ARGUMENT.create({ message });
4
+ }
5
+ function isRecord(value) {
6
+ return typeof value === "object" && value !== null && !Array.isArray(value);
7
+ }
8
+ function assertMetadata(value, label) {
9
+ if (value === undefined || isRecord(value))
10
+ return;
11
+ throw createEvalValidationError(`${label} metadata must be an object when provided`);
12
+ }
13
+ export function normalizeEvalExamples(examples, source) {
14
+ if (!Array.isArray(examples)) {
15
+ throw createEvalValidationError(`${source} must be an array of eval examples`);
16
+ }
17
+ const seenIds = new Set();
18
+ return examples.map((example, index) => {
19
+ if (!isRecord(example)) {
20
+ throw createEvalValidationError(`${source}[${index}] must be an object`);
21
+ }
22
+ const id = example.id;
23
+ if (typeof id !== "string" || id.trim() === "") {
24
+ throw createEvalValidationError(`${source}[${index}] id must be a non-empty string`);
25
+ }
26
+ if (seenIds.has(id)) {
27
+ throw createEvalValidationError(`Duplicate eval example id "${id}" in ${source}`);
28
+ }
29
+ seenIds.add(id);
30
+ if (!Object.hasOwn(example, "input")) {
31
+ throw createEvalValidationError(`${source}[${index}] input is required`);
32
+ }
33
+ assertMetadata(example.metadata, `${source}[${index}]`);
34
+ return {
35
+ id,
36
+ input: example.input,
37
+ ...(Object.hasOwn(example, "reference") ? { reference: example.reference } : {}),
38
+ ...(example.metadata ? { metadata: example.metadata } : {}),
39
+ };
40
+ });
41
+ }