@plumloom/cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +2 -0
  3. package/README.md +71 -0
  4. package/dist/actions/configured-runs.d.ts +25 -0
  5. package/dist/actions/configured-runs.d.ts.map +1 -0
  6. package/dist/actions/configured-runs.js +35 -0
  7. package/dist/actions/configured-runs.js.map +1 -0
  8. package/dist/actions/context.d.ts +5 -0
  9. package/dist/actions/context.d.ts.map +1 -0
  10. package/dist/actions/context.js +2 -0
  11. package/dist/actions/context.js.map +1 -0
  12. package/dist/actions/doctor.d.ts +46 -0
  13. package/dist/actions/doctor.d.ts.map +1 -0
  14. package/dist/actions/doctor.js +130 -0
  15. package/dist/actions/doctor.js.map +1 -0
  16. package/dist/actions/evaluations.d.ts +87 -0
  17. package/dist/actions/evaluations.d.ts.map +1 -0
  18. package/dist/actions/evaluations.js +307 -0
  19. package/dist/actions/evaluations.js.map +1 -0
  20. package/dist/actions/gate.d.ts +63 -0
  21. package/dist/actions/gate.d.ts.map +1 -0
  22. package/dist/actions/gate.js +272 -0
  23. package/dist/actions/gate.js.map +1 -0
  24. package/dist/actions/identity.d.ts +4 -0
  25. package/dist/actions/identity.d.ts.map +1 -0
  26. package/dist/actions/identity.js +4 -0
  27. package/dist/actions/identity.js.map +1 -0
  28. package/dist/actions/models.d.ts +4 -0
  29. package/dist/actions/models.d.ts.map +1 -0
  30. package/dist/actions/models.js +4 -0
  31. package/dist/actions/models.js.map +1 -0
  32. package/dist/actions/quality-standards.d.ts +30 -0
  33. package/dist/actions/quality-standards.d.ts.map +1 -0
  34. package/dist/actions/quality-standards.js +86 -0
  35. package/dist/actions/quality-standards.js.map +1 -0
  36. package/dist/actions/results.d.ts +12 -0
  37. package/dist/actions/results.d.ts.map +1 -0
  38. package/dist/actions/results.js +65 -0
  39. package/dist/actions/results.js.map +1 -0
  40. package/dist/actions/runs.d.ts +22 -0
  41. package/dist/actions/runs.d.ts.map +1 -0
  42. package/dist/actions/runs.js +59 -0
  43. package/dist/actions/runs.js.map +1 -0
  44. package/dist/actions/suite-gate.d.ts +24 -0
  45. package/dist/actions/suite-gate.d.ts.map +1 -0
  46. package/dist/actions/suite-gate.js +40 -0
  47. package/dist/actions/suite-gate.js.map +1 -0
  48. package/dist/actions/suite.d.ts +49 -0
  49. package/dist/actions/suite.d.ts.map +1 -0
  50. package/dist/actions/suite.js +68 -0
  51. package/dist/actions/suite.js.map +1 -0
  52. package/dist/actions/validation.d.ts +3 -0
  53. package/dist/actions/validation.d.ts.map +1 -0
  54. package/dist/actions/validation.js +26 -0
  55. package/dist/actions/validation.js.map +1 -0
  56. package/dist/actions/workspaces.d.ts +13 -0
  57. package/dist/actions/workspaces.d.ts.map +1 -0
  58. package/dist/actions/workspaces.js +18 -0
  59. package/dist/actions/workspaces.js.map +1 -0
  60. package/dist/api/api.d.ts +237 -0
  61. package/dist/api/api.d.ts.map +1 -0
  62. package/dist/api/api.js +396 -0
  63. package/dist/api/api.js.map +1 -0
  64. package/dist/api/client.d.ts +38 -0
  65. package/dist/api/client.d.ts.map +1 -0
  66. package/dist/api/client.js +295 -0
  67. package/dist/api/client.js.map +1 -0
  68. package/dist/api/endpoints.d.ts +31 -0
  69. package/dist/api/endpoints.d.ts.map +1 -0
  70. package/dist/api/endpoints.js +32 -0
  71. package/dist/api/endpoints.js.map +1 -0
  72. package/dist/api/errors.d.ts +22 -0
  73. package/dist/api/errors.d.ts.map +1 -0
  74. package/dist/api/errors.js +84 -0
  75. package/dist/api/errors.js.map +1 -0
  76. package/dist/api/schemas.d.ts +169 -0
  77. package/dist/api/schemas.d.ts.map +1 -0
  78. package/dist/api/schemas.js +194 -0
  79. package/dist/api/schemas.js.map +1 -0
  80. package/dist/auth/credential-store.d.ts +9 -0
  81. package/dist/auth/credential-store.d.ts.map +1 -0
  82. package/dist/auth/credential-store.js +2 -0
  83. package/dist/auth/credential-store.js.map +1 -0
  84. package/dist/auth/credentials.d.ts +27 -0
  85. package/dist/auth/credentials.d.ts.map +1 -0
  86. package/dist/auth/credentials.js +81 -0
  87. package/dist/auth/credentials.js.map +1 -0
  88. package/dist/auth/keyring-store.d.ts +9 -0
  89. package/dist/auth/keyring-store.d.ts.map +1 -0
  90. package/dist/auth/keyring-store.js +57 -0
  91. package/dist/auth/keyring-store.js.map +1 -0
  92. package/dist/auth/login.d.ts +28 -0
  93. package/dist/auth/login.d.ts.map +1 -0
  94. package/dist/auth/login.js +27 -0
  95. package/dist/auth/login.js.map +1 -0
  96. package/dist/auth/password-prompt.d.ts +5 -0
  97. package/dist/auth/password-prompt.d.ts.map +1 -0
  98. package/dist/auth/password-prompt.js +10 -0
  99. package/dist/auth/password-prompt.js.map +1 -0
  100. package/dist/auth/redact.d.ts +3 -0
  101. package/dist/auth/redact.d.ts.map +1 -0
  102. package/dist/auth/redact.js +69 -0
  103. package/dist/auth/redact.js.map +1 -0
  104. package/dist/cli.d.ts +3 -0
  105. package/dist/cli.d.ts.map +1 -0
  106. package/dist/cli.js +4 -0
  107. package/dist/cli.js.map +1 -0
  108. package/dist/commands/executor.d.ts +36 -0
  109. package/dist/commands/executor.d.ts.map +1 -0
  110. package/dist/commands/executor.js +1218 -0
  111. package/dist/commands/executor.js.map +1 -0
  112. package/dist/commands/program.d.ts +21 -0
  113. package/dist/commands/program.d.ts.map +1 -0
  114. package/dist/commands/program.js +588 -0
  115. package/dist/commands/program.js.map +1 -0
  116. package/dist/commands/types.d.ts +139 -0
  117. package/dist/commands/types.d.ts.map +1 -0
  118. package/dist/commands/types.js +2 -0
  119. package/dist/commands/types.js.map +1 -0
  120. package/dist/config.d.ts +12 -0
  121. package/dist/config.d.ts.map +1 -0
  122. package/dist/config.js +57 -0
  123. package/dist/config.js.map +1 -0
  124. package/dist/configured-run/file-inputs.d.ts +8 -0
  125. package/dist/configured-run/file-inputs.d.ts.map +1 -0
  126. package/dist/configured-run/file-inputs.js +160 -0
  127. package/dist/configured-run/file-inputs.js.map +1 -0
  128. package/dist/configured-run/validation.d.ts +103 -0
  129. package/dist/configured-run/validation.d.ts.map +1 -0
  130. package/dist/configured-run/validation.js +327 -0
  131. package/dist/configured-run/validation.js.map +1 -0
  132. package/dist/domain/common.d.ts +6 -0
  133. package/dist/domain/common.d.ts.map +1 -0
  134. package/dist/domain/common.js +10 -0
  135. package/dist/domain/common.js.map +1 -0
  136. package/dist/domain/types.d.ts +117 -0
  137. package/dist/domain/types.d.ts.map +1 -0
  138. package/dist/domain/types.js +2 -0
  139. package/dist/domain/types.js.map +1 -0
  140. package/dist/errors/autoeval-error.d.ts +13 -0
  141. package/dist/errors/autoeval-error.d.ts.map +1 -0
  142. package/dist/errors/autoeval-error.js +36 -0
  143. package/dist/errors/autoeval-error.js.map +1 -0
  144. package/dist/errors/hints.d.ts +3 -0
  145. package/dist/errors/hints.d.ts.map +1 -0
  146. package/dist/errors/hints.js +43 -0
  147. package/dist/errors/hints.js.map +1 -0
  148. package/dist/gate/decision.d.ts +97 -0
  149. package/dist/gate/decision.d.ts.map +1 -0
  150. package/dist/gate/decision.js +436 -0
  151. package/dist/gate/decision.js.map +1 -0
  152. package/dist/gate/policy.d.ts +31 -0
  153. package/dist/gate/policy.d.ts.map +1 -0
  154. package/dist/gate/policy.js +26 -0
  155. package/dist/gate/policy.js.map +1 -0
  156. package/dist/guide/eval-creation-backend.d.ts +20 -0
  157. package/dist/guide/eval-creation-backend.d.ts.map +1 -0
  158. package/dist/guide/eval-creation-backend.js +16 -0
  159. package/dist/guide/eval-creation-backend.js.map +1 -0
  160. package/dist/guide/eval-guide.d.ts +24 -0
  161. package/dist/guide/eval-guide.d.ts.map +1 -0
  162. package/dist/guide/eval-guide.js +219 -0
  163. package/dist/guide/eval-guide.js.map +1 -0
  164. package/dist/mcp/context.d.ts +21 -0
  165. package/dist/mcp/context.d.ts.map +1 -0
  166. package/dist/mcp/context.js +19 -0
  167. package/dist/mcp/context.js.map +1 -0
  168. package/dist/mcp/schemas.d.ts +206 -0
  169. package/dist/mcp/schemas.d.ts.map +1 -0
  170. package/dist/mcp/schemas.js +80 -0
  171. package/dist/mcp/schemas.js.map +1 -0
  172. package/dist/mcp/server.d.ts +5 -0
  173. package/dist/mcp/server.d.ts.map +1 -0
  174. package/dist/mcp/server.js +10 -0
  175. package/dist/mcp/server.js.map +1 -0
  176. package/dist/mcp/tools.d.ts +42 -0
  177. package/dist/mcp/tools.d.ts.map +1 -0
  178. package/dist/mcp/tools.js +287 -0
  179. package/dist/mcp/tools.js.map +1 -0
  180. package/dist/mcp.d.ts +3 -0
  181. package/dist/mcp.d.ts.map +1 -0
  182. package/dist/mcp.js +32 -0
  183. package/dist/mcp.js.map +1 -0
  184. package/dist/output/big-digits.d.ts +7 -0
  185. package/dist/output/big-digits.d.ts.map +1 -0
  186. package/dist/output/big-digits.js +43 -0
  187. package/dist/output/big-digits.js.map +1 -0
  188. package/dist/output/clipboard.d.ts +29 -0
  189. package/dist/output/clipboard.d.ts.map +1 -0
  190. package/dist/output/clipboard.js +82 -0
  191. package/dist/output/clipboard.js.map +1 -0
  192. package/dist/output/colors.d.ts +21 -0
  193. package/dist/output/colors.d.ts.map +1 -0
  194. package/dist/output/colors.js +21 -0
  195. package/dist/output/colors.js.map +1 -0
  196. package/dist/output/digest.d.ts +165 -0
  197. package/dist/output/digest.d.ts.map +1 -0
  198. package/dist/output/digest.js +771 -0
  199. package/dist/output/digest.js.map +1 -0
  200. package/dist/output/human.d.ts +95 -0
  201. package/dist/output/human.d.ts.map +1 -0
  202. package/dist/output/human.js +643 -0
  203. package/dist/output/human.js.map +1 -0
  204. package/dist/output/json.d.ts +2 -0
  205. package/dist/output/json.d.ts.map +1 -0
  206. package/dist/output/json.js +5 -0
  207. package/dist/output/json.js.map +1 -0
  208. package/dist/output/layout.d.ts +18 -0
  209. package/dist/output/layout.d.ts.map +1 -0
  210. package/dist/output/layout.js +64 -0
  211. package/dist/output/layout.js.map +1 -0
  212. package/dist/output/markdown.d.ts +16 -0
  213. package/dist/output/markdown.d.ts.map +1 -0
  214. package/dist/output/markdown.js +38 -0
  215. package/dist/output/markdown.js.map +1 -0
  216. package/dist/output/progress.d.ts +29 -0
  217. package/dist/output/progress.d.ts.map +1 -0
  218. package/dist/output/progress.js +136 -0
  219. package/dist/output/progress.js.map +1 -0
  220. package/dist/output/safe-text.d.ts +11 -0
  221. package/dist/output/safe-text.d.ts.map +1 -0
  222. package/dist/output/safe-text.js +44 -0
  223. package/dist/output/safe-text.js.map +1 -0
  224. package/dist/output/scorecard.d.ts +23 -0
  225. package/dist/output/scorecard.d.ts.map +1 -0
  226. package/dist/output/scorecard.js +506 -0
  227. package/dist/output/scorecard.js.map +1 -0
  228. package/dist/output/section.d.ts +15 -0
  229. package/dist/output/section.d.ts.map +1 -0
  230. package/dist/output/section.js +44 -0
  231. package/dist/output/section.js.map +1 -0
  232. package/dist/output/spinner.d.ts +24 -0
  233. package/dist/output/spinner.d.ts.map +1 -0
  234. package/dist/output/spinner.js +34 -0
  235. package/dist/output/spinner.js.map +1 -0
  236. package/dist/output/splash.d.ts +37 -0
  237. package/dist/output/splash.d.ts.map +1 -0
  238. package/dist/output/splash.js +169 -0
  239. package/dist/output/splash.js.map +1 -0
  240. package/dist/output/table.d.ts +33 -0
  241. package/dist/output/table.d.ts.map +1 -0
  242. package/dist/output/table.js +105 -0
  243. package/dist/output/table.js.map +1 -0
  244. package/dist/output/trend.d.ts +19 -0
  245. package/dist/output/trend.d.ts.map +1 -0
  246. package/dist/output/trend.js +38 -0
  247. package/dist/output/trend.js.map +1 -0
  248. package/dist/output/writer.d.ts +14 -0
  249. package/dist/output/writer.d.ts.map +1 -0
  250. package/dist/output/writer.js +33 -0
  251. package/dist/output/writer.js.map +1 -0
  252. package/dist/polling/clock.d.ts +9 -0
  253. package/dist/polling/clock.d.ts.map +1 -0
  254. package/dist/polling/clock.js +23 -0
  255. package/dist/polling/clock.js.map +1 -0
  256. package/dist/polling/wait-for-result.d.ts +16 -0
  257. package/dist/polling/wait-for-result.d.ts.map +1 -0
  258. package/dist/polling/wait-for-result.js +29 -0
  259. package/dist/polling/wait-for-result.js.map +1 -0
  260. package/dist/polling/wait-for-run.d.ts +14 -0
  261. package/dist/polling/wait-for-run.d.ts.map +1 -0
  262. package/dist/polling/wait-for-run.js +36 -0
  263. package/dist/polling/wait-for-run.js.map +1 -0
  264. package/dist/quickstart/prompt.d.ts +18 -0
  265. package/dist/quickstart/prompt.d.ts.map +1 -0
  266. package/dist/quickstart/prompt.js +37 -0
  267. package/dist/quickstart/prompt.js.map +1 -0
  268. package/dist/quickstart/sample.d.ts +28 -0
  269. package/dist/quickstart/sample.d.ts.map +1 -0
  270. package/dist/quickstart/sample.js +235 -0
  271. package/dist/quickstart/sample.js.map +1 -0
  272. package/dist/quickstart/selection.d.ts +53 -0
  273. package/dist/quickstart/selection.d.ts.map +1 -0
  274. package/dist/quickstart/selection.js +97 -0
  275. package/dist/quickstart/selection.js.map +1 -0
  276. package/dist/run.d.ts +28 -0
  277. package/dist/run.d.ts.map +1 -0
  278. package/dist/run.js +134 -0
  279. package/dist/run.js.map +1 -0
  280. package/dist/runtime/action-context.d.ts +19 -0
  281. package/dist/runtime/action-context.d.ts.map +1 -0
  282. package/dist/runtime/action-context.js +40 -0
  283. package/dist/runtime/action-context.js.map +1 -0
  284. package/dist/suite/execution.d.ts +46 -0
  285. package/dist/suite/execution.d.ts.map +1 -0
  286. package/dist/suite/execution.js +97 -0
  287. package/dist/suite/execution.js.map +1 -0
  288. package/dist/suite/manifest.d.ts +16 -0
  289. package/dist/suite/manifest.d.ts.map +1 -0
  290. package/dist/suite/manifest.js +92 -0
  291. package/dist/suite/manifest.js.map +1 -0
  292. package/dist/suite/reporting.d.ts +35 -0
  293. package/dist/suite/reporting.d.ts.map +1 -0
  294. package/dist/suite/reporting.js +131 -0
  295. package/dist/suite/reporting.js.map +1 -0
  296. package/dist/trace/deepseek-harness.d.ts +31 -0
  297. package/dist/trace/deepseek-harness.d.ts.map +1 -0
  298. package/dist/trace/deepseek-harness.js +412 -0
  299. package/dist/trace/deepseek-harness.js.map +1 -0
  300. package/dist/trace/import.d.ts +9 -0
  301. package/dist/trace/import.d.ts.map +1 -0
  302. package/dist/trace/import.js +45 -0
  303. package/dist/trace/import.js.map +1 -0
  304. package/dist/version.d.ts +3 -0
  305. package/dist/version.d.ts.map +1 -0
  306. package/dist/version.js +3 -0
  307. package/dist/version.js.map +1 -0
  308. package/package.json +82 -0
@@ -0,0 +1,327 @@
1
+ import { z } from 'zod';
2
+ import { AutoevalError } from '../errors/autoeval-error.js';
3
+ const referenceDocumentSchema = z
4
+ .object({
5
+ filename: z.string().trim().min(1),
6
+ content: z.string(),
7
+ })
8
+ .strict();
9
+ const configuredRunNormalizedConfigurationSchema = z.discriminatedUnion('contextType', [
10
+ z
11
+ .object({
12
+ evaluationName: z.string().trim().min(1).max(120).optional(),
13
+ contextName: z.string().trim().min(1),
14
+ contextType: z.literal('scenario'),
15
+ artifact: z.record(z.string(), z.json()),
16
+ expected: z.string().min(1),
17
+ referenceDocuments: z.array(referenceDocumentSchema).optional(),
18
+ selectedMetrics: z.array(z.string().trim().min(1)).min(1),
19
+ temperatureContext: z.number().optional(),
20
+ // Ignored: run planning is controlled by the evaluation service; retained for compatibility.
21
+ autoStopEnabled: z.boolean().optional(),
22
+ scenarioGeneration: z.record(z.string(), z.json()).optional(),
23
+ })
24
+ .strict(),
25
+ z
26
+ .object({
27
+ evaluationName: z.string().trim().min(1).max(120).optional(),
28
+ contextName: z.string().trim().min(1),
29
+ contextType: z.literal('conversation'),
30
+ artifact: z.record(z.string(), z.json()),
31
+ expected: z.string().min(1),
32
+ referenceDocuments: z.array(referenceDocumentSchema).optional(),
33
+ selectedMetrics: z.array(z.string().trim().min(1)).min(1),
34
+ temperatureContext: z.number().optional(),
35
+ // Ignored: run planning is controlled by the evaluation service; retained for compatibility.
36
+ autoStopEnabled: z.boolean().optional(),
37
+ })
38
+ .strict(),
39
+ z
40
+ .object({
41
+ evaluationName: z.string().trim().min(1).max(120).optional(),
42
+ contextName: z.string().trim().min(1),
43
+ contextType: z.literal('agent_trace'),
44
+ artifact: z.record(z.string(), z.json()),
45
+ expected: z.string().min(1),
46
+ referenceDocuments: z.array(referenceDocumentSchema).optional(),
47
+ selectedMetrics: z.array(z.string().trim().min(1)).min(1),
48
+ temperatureContext: z.number().optional(),
49
+ // Ignored: run planning is controlled by the evaluation service; retained for compatibility.
50
+ autoStopEnabled: z.boolean().optional(),
51
+ })
52
+ .strict(),
53
+ ]);
54
+ const configuredRunLegacyScenarioConfigurationSchema = z
55
+ .object({
56
+ evaluationName: z.string().trim().min(1).max(120).optional(),
57
+ contextName: z.string().trim().min(1).optional(),
58
+ primaryModelId: z.uuid(),
59
+ comparisonModelIds: z.array(z.uuid()).default([]),
60
+ promptText: z.string().min(1),
61
+ scenarios: z.union([
62
+ z.array(z.array(z.record(z.string(), z.json())).min(1)).min(1),
63
+ z.array(z.record(z.string(), z.json())).min(1),
64
+ ]),
65
+ referenceDocuments: z.array(referenceDocumentSchema).optional(),
66
+ selectedMetrics: z.array(z.string().trim().min(1)).min(1),
67
+ expected: z.string().min(1).optional(),
68
+ temperatureContext: z.number().optional(),
69
+ // Ignored: run planning is controlled by the evaluation service; retained for compatibility.
70
+ autoStopEnabled: z.boolean().optional(),
71
+ })
72
+ .strict();
73
+ export const configuredRunFileSchema = z
74
+ .object({
75
+ methodology: z
76
+ .object({
77
+ userSystemId: z.string().trim().min(1).optional(),
78
+ judgeModel: z.string().trim().min(1),
79
+ judgeModelId: z.uuid(),
80
+ runsPerScenario: z.number().int().min(1).max(10).optional(),
81
+ evaluatorInstructions: z.string().min(1),
82
+ changeLog: z.string().optional(),
83
+ })
84
+ .strict(),
85
+ configuration: z.union([
86
+ configuredRunNormalizedConfigurationSchema,
87
+ configuredRunLegacyScenarioConfigurationSchema,
88
+ ]),
89
+ })
90
+ .strict();
91
+ const scenarioArtifactSchema = z
92
+ .object({
93
+ primaryModelId: z.uuid(),
94
+ comparisonModelIds: z.array(z.uuid()),
95
+ promptText: z.string().min(1),
96
+ scenarios: z.union([
97
+ z.array(z.array(z.record(z.string(), z.json())).min(1)).min(1),
98
+ z.array(z.record(z.string(), z.json())).min(1),
99
+ ]),
100
+ })
101
+ .loose();
102
+ const conversationArtifactSchema = z
103
+ .object({
104
+ messages: z
105
+ .array(z
106
+ .object({
107
+ role: z.string().trim().min(1),
108
+ content: z.string(),
109
+ })
110
+ .loose())
111
+ .min(1),
112
+ })
113
+ .loose();
114
+ const agentTraceArtifactSchema = z
115
+ .object({
116
+ trace: z
117
+ .object({
118
+ resourceSpans: z.array(z.record(z.string(), z.json())).min(1),
119
+ })
120
+ .loose(),
121
+ })
122
+ .loose();
123
+ const PUBLIC_JUDGE_MODEL_PLACEHOLDER = '11111111-1111-4111-8111-111111111111';
124
+ const PUBLIC_PRIMARY_MODEL_PLACEHOLDER = '22222222-2222-4222-8222-222222222222';
125
+ function issuePath(path) {
126
+ return path.length === 0 ? 'input' : path.map(String).join('.');
127
+ }
128
+ function invalidInput(error) {
129
+ const details = error.issues
130
+ .slice(0, 8)
131
+ .map((issue) => `${issuePath(issue.path)}: ${issue.message}`)
132
+ .join('; ');
133
+ return new AutoevalError(`Configured run input is invalid: ${details}. Fix the listed fields and run "autoeval eval validate --input <file>" again`, {
134
+ kind: 'validation',
135
+ code: 'INVALID_CONFIGURED_RUN_SCHEMA',
136
+ cause: error,
137
+ });
138
+ }
139
+ export function parseConfiguredRunInput(parsedJson) {
140
+ const parsed = configuredRunFileSchema.safeParse(parsedJson);
141
+ if (!parsed.success) {
142
+ throw invalidInput(parsed.error);
143
+ }
144
+ const parsedInput = parsed.data;
145
+ const methodology = {
146
+ ...(parsedInput.methodology.userSystemId !== undefined
147
+ ? { userSystemId: parsedInput.methodology.userSystemId }
148
+ : {}),
149
+ judgeModel: parsedInput.methodology.judgeModel,
150
+ judgeModelId: parsedInput.methodology.judgeModelId,
151
+ ...(parsedInput.methodology.runsPerScenario !== undefined
152
+ ? { runsPerScenario: parsedInput.methodology.runsPerScenario }
153
+ : {}),
154
+ evaluatorInstructions: parsedInput.methodology.evaluatorInstructions,
155
+ ...(parsedInput.methodology.changeLog !== undefined
156
+ ? { changeLog: parsedInput.methodology.changeLog }
157
+ : {}),
158
+ };
159
+ let evaluationName;
160
+ let configuration;
161
+ if ('contextType' in parsedInput.configuration) {
162
+ evaluationName = parsedInput.configuration.evaluationName;
163
+ const common = {
164
+ contextName: parsedInput.configuration.contextName,
165
+ artifact: parsedInput.configuration.artifact,
166
+ expected: parsedInput.configuration.expected,
167
+ referenceDocuments: parsedInput.configuration.referenceDocuments ?? [],
168
+ selectedMetrics: parsedInput.configuration.selectedMetrics,
169
+ ...(parsedInput.configuration.temperatureContext !== undefined
170
+ ? { temperatureContext: parsedInput.configuration.temperatureContext }
171
+ : {}),
172
+ };
173
+ if (parsedInput.configuration.contextType === 'scenario') {
174
+ configuration = {
175
+ ...common,
176
+ contextType: 'scenario',
177
+ ...(parsedInput.configuration.scenarioGeneration !== undefined
178
+ ? { scenarioGeneration: parsedInput.configuration.scenarioGeneration }
179
+ : {}),
180
+ };
181
+ }
182
+ else if (parsedInput.configuration.contextType === 'conversation') {
183
+ configuration = { ...common, contextType: 'conversation' };
184
+ }
185
+ else {
186
+ configuration = { ...common, contextType: 'agent_trace' };
187
+ }
188
+ }
189
+ else {
190
+ evaluationName = parsedInput.configuration.evaluationName;
191
+ const scenarioArtifact = {
192
+ primaryModelId: parsedInput.configuration.primaryModelId,
193
+ comparisonModelIds: parsedInput.configuration.comparisonModelIds,
194
+ promptText: parsedInput.configuration.promptText,
195
+ scenarios: parsedInput.configuration.scenarios,
196
+ };
197
+ configuration = {
198
+ contextName: parsedInput.configuration.contextName ?? 'Scenario Evaluation',
199
+ contextType: 'scenario',
200
+ artifact: scenarioArtifact,
201
+ expected: parsedInput.configuration.expected ?? parsedInput.configuration.promptText,
202
+ referenceDocuments: parsedInput.configuration.referenceDocuments ?? [],
203
+ selectedMetrics: parsedInput.configuration.selectedMetrics,
204
+ ...(parsedInput.configuration.temperatureContext !== undefined
205
+ ? { temperatureContext: parsedInput.configuration.temperatureContext }
206
+ : {}),
207
+ };
208
+ }
209
+ return {
210
+ methodology,
211
+ ...(evaluationName !== undefined ? { evaluationName } : {}),
212
+ configuration,
213
+ };
214
+ }
215
+ function availableModelById(models) {
216
+ return new Map(models
217
+ .filter((model) => !model.isDeprecated && !model.isLocked)
218
+ .map((model) => [model.id.toLowerCase(), model]));
219
+ }
220
+ function requireEnabledModel(modelId, role, modelsById) {
221
+ const parsedId = z.uuid().safeParse(modelId);
222
+ if (!parsedId.success) {
223
+ throw new AutoevalError(`${role} model ID "${modelId}" must be a UUID. Replace it with an ID from "autoeval models"`, { kind: 'validation', code: 'INVALID_MODEL_ID', cause: parsedId.error });
224
+ }
225
+ const model = modelsById.get(parsedId.data.toLowerCase());
226
+ if (!model) {
227
+ throw new AutoevalError(`${role} model ID ${parsedId.data} is not enabled for this account. Run "autoeval models" and choose an enabled model ID`, { kind: 'validation', code: 'MODEL_NOT_ENABLED' });
228
+ }
229
+ return model;
230
+ }
231
+ function modelRoleError(message) {
232
+ throw new AutoevalError(`${message}. Choose a different model ID for that role`, {
233
+ kind: 'validation',
234
+ code: 'MODEL_ROLE_CONFLICT',
235
+ });
236
+ }
237
+ export function validateConfiguredRunInput(input, enabledModels) {
238
+ const modelsById = availableModelById(enabledModels);
239
+ const judge = requireEnabledModel(input.methodology.judgeModelId, 'Judge', modelsById);
240
+ const judgeId = judge.id.toLowerCase();
241
+ if (input.configuration.contextType === 'conversation') {
242
+ const artifact = conversationArtifactSchema.safeParse(input.configuration.artifact);
243
+ if (!artifact.success)
244
+ throw invalidInput(artifact.error);
245
+ return {
246
+ valid: true,
247
+ contextType: 'conversation',
248
+ artifactCount: artifact.data.messages.length,
249
+ models: { judge, comparisons: [] },
250
+ };
251
+ }
252
+ if (input.configuration.contextType === 'agent_trace') {
253
+ const artifact = agentTraceArtifactSchema.safeParse(input.configuration.artifact);
254
+ if (!artifact.success)
255
+ throw invalidInput(artifact.error);
256
+ return {
257
+ valid: true,
258
+ contextType: 'agent_trace',
259
+ artifactCount: artifact.data.trace.resourceSpans.length,
260
+ models: { judge, comparisons: [] },
261
+ };
262
+ }
263
+ const artifact = scenarioArtifactSchema.safeParse(input.configuration.artifact);
264
+ if (!artifact.success)
265
+ throw invalidInput(artifact.error);
266
+ const primary = requireEnabledModel(artifact.data.primaryModelId, 'Primary', modelsById);
267
+ const primaryId = primary.id.toLowerCase();
268
+ if (primaryId === judgeId) {
269
+ modelRoleError('The judge model cannot also be the primary model');
270
+ }
271
+ const seenComparisonIds = new Set();
272
+ const comparisons = artifact.data.comparisonModelIds.map((modelId, index) => {
273
+ const comparison = requireEnabledModel(modelId, `Comparison ${index + 1}`, modelsById);
274
+ const comparisonId = comparison.id.toLowerCase();
275
+ if (comparisonId === judgeId) {
276
+ modelRoleError('The judge model cannot also be a comparison model');
277
+ }
278
+ if (comparisonId === primaryId) {
279
+ modelRoleError('The primary model cannot also be a comparison model');
280
+ }
281
+ if (seenComparisonIds.has(comparisonId)) {
282
+ throw new AutoevalError(`Comparison model ID ${comparison.id} is duplicated. Remove duplicate comparison models and validate again`, { kind: 'validation', code: 'DUPLICATE_COMPARISON_MODEL' });
283
+ }
284
+ seenComparisonIds.add(comparisonId);
285
+ return comparison;
286
+ });
287
+ const scenarios = artifact.data.scenarios;
288
+ const artifactCount = Array.isArray(scenarios[0]) ? scenarios[0].length : scenarios.length;
289
+ return {
290
+ valid: true,
291
+ contextType: 'scenario',
292
+ artifactCount,
293
+ models: { judge, primary, comparisons },
294
+ };
295
+ }
296
+ /** Applies explicit CLI model UUIDs without mutating the parsed file input. */
297
+ export function applyModelOverrides(input, overrides) {
298
+ const methodology = {
299
+ ...input.methodology,
300
+ ...(overrides.judgeModelId === undefined ? {} : { judgeModelId: overrides.judgeModelId }),
301
+ };
302
+ if (input.configuration.contextType !== 'scenario' || overrides.primaryModelId === undefined) {
303
+ return { ...input, methodology };
304
+ }
305
+ return {
306
+ ...input,
307
+ methodology,
308
+ configuration: {
309
+ ...input.configuration,
310
+ artifact: {
311
+ ...input.configuration.artifact,
312
+ primaryModelId: overrides.primaryModelId,
313
+ },
314
+ },
315
+ };
316
+ }
317
+ /** Fails fast when a sanitized public fixture was not given account model UUIDs. */
318
+ export function requireModelOverridesForPublicPlaceholders(input) {
319
+ if (input.methodology.judgeModelId === PUBLIC_JUDGE_MODEL_PLACEHOLDER) {
320
+ throw new AutoevalError('This eval file contains a synthetic judge model UUID. Run "autoeval models" and pass --judge-model-id <uuid>', { kind: 'validation', code: 'MODEL_OVERRIDE_REQUIRED' });
321
+ }
322
+ if (input.configuration.contextType === 'scenario' &&
323
+ input.configuration.artifact.primaryModelId === PUBLIC_PRIMARY_MODEL_PLACEHOLDER) {
324
+ throw new AutoevalError('This eval file contains a synthetic primary model UUID. Run "autoeval models" and pass --primary-model-id <uuid>', { kind: 'validation', code: 'MODEL_OVERRIDE_REQUIRED' });
325
+ }
326
+ }
327
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/configured-run/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { z } from 'zod';
2
+ export declare const uuidSchema: z.ZodUUID;
3
+ export type JsonValue = z.infer<ReturnType<typeof z.json>>;
4
+ export type JsonObject = Record<string, JsonValue>;
5
+ export declare function parseUuid(input: string, label: string): string;
6
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/domain/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,UAAU,WAAW,CAAC;AACnC,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEnD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAM9D"}
@@ -0,0 +1,10 @@
1
+ import { z } from 'zod';
2
+ export const uuidSchema = z.uuid();
3
+ export function parseUuid(input, label) {
4
+ const parsed = uuidSchema.safeParse(input);
5
+ if (!parsed.success) {
6
+ throw new Error(`${label} must be a valid UUID.`);
7
+ }
8
+ return parsed.data;
9
+ }
10
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/domain/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAInC,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,KAAa;IACpD,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,wBAAwB,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
@@ -0,0 +1,117 @@
1
+ import type { JsonObject } from './common.js';
2
+ export type UserIdentity = {
3
+ id: string;
4
+ userSystemId: string;
5
+ email: string;
6
+ name?: string;
7
+ };
8
+ export type Workspace = {
9
+ id: string;
10
+ name: string;
11
+ description?: string;
12
+ evaluationCount: number;
13
+ updatedAt?: string;
14
+ qualityStandardId?: string;
15
+ };
16
+ export type WorkspacePage = {
17
+ items: Workspace[];
18
+ total: number;
19
+ page: number;
20
+ size: number;
21
+ totalPages: number;
22
+ };
23
+ export type EvaluationSummary = {
24
+ id: string;
25
+ name: string;
26
+ workspaceId?: string;
27
+ updatedAt?: string;
28
+ };
29
+ export type EvaluationPage = {
30
+ items: EvaluationSummary[];
31
+ total: number;
32
+ page: number;
33
+ size: number;
34
+ totalPages: number;
35
+ };
36
+ export type EvaluationContextType = 'scenario' | 'conversation' | 'agent_trace';
37
+ export type EvaluationVersionSummary = {
38
+ version: number;
39
+ methodologyVersionId: string;
40
+ configVersionId: string;
41
+ isCurrent: boolean;
42
+ createdAt?: string;
43
+ };
44
+ export type EvaluationVersionHistory = {
45
+ evaluationId: string;
46
+ contextType: EvaluationContextType;
47
+ currentVersion?: number;
48
+ versions: EvaluationVersionSummary[];
49
+ raw: JsonObject;
50
+ };
51
+ export type EvaluationVersion = {
52
+ version?: number;
53
+ evaluationId: string;
54
+ methodologyVersionId: string;
55
+ configVersionId: string;
56
+ isCurrent?: boolean;
57
+ createdAt?: string;
58
+ contextType: EvaluationContextType;
59
+ raw: JsonObject;
60
+ };
61
+ export type Evaluation = EvaluationVersion & {
62
+ configuration: JsonObject;
63
+ };
64
+ export type SupportedModel = {
65
+ id: string;
66
+ provider: string;
67
+ displayName: string;
68
+ apiModelId: string;
69
+ isDeprecated: boolean;
70
+ isLocked: boolean;
71
+ modelKey?: string;
72
+ };
73
+ export type RunHandle = {
74
+ evaluationId: string;
75
+ runId: string;
76
+ status: string;
77
+ configVersionId: string;
78
+ methodologyVersionId: string;
79
+ };
80
+ export type RunStatus = {
81
+ evaluationId: string;
82
+ runId: string;
83
+ state: string;
84
+ progress?: {
85
+ percentage?: number;
86
+ runsCompleted?: number;
87
+ totalRuns?: number;
88
+ };
89
+ errorMessage?: string;
90
+ failureCode?: string;
91
+ raw: JsonObject;
92
+ };
93
+ export type PollOutcome = {
94
+ status: RunStatus;
95
+ elapsedMs: number;
96
+ };
97
+ export type RunExecution = {
98
+ run: RunHandle;
99
+ outcome: PollOutcome;
100
+ };
101
+ export type ScenarioResults = {
102
+ contextType: 'scenario';
103
+ modelPerformance: JsonObject;
104
+ scenarioComparison: JsonObject;
105
+ modelResponses: JsonObject;
106
+ };
107
+ export type ConversationResults = {
108
+ contextType: 'conversation';
109
+ conversation: JsonObject;
110
+ };
111
+ export type AgentTraceResults = {
112
+ contextType: 'agent_trace';
113
+ agentTrace: JsonObject;
114
+ trajectory?: JsonObject;
115
+ };
116
+ export type EvaluationResults = ScenarioResults | ConversationResults | AgentTraceResults;
117
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/domain/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/domain/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ export type AutoevalErrorKind = 'usage' | 'authentication' | 'authorization' | 'plan_restriction' | 'validation' | 'network' | 'upstream' | 'run_failed' | 'gate_failed' | 'timeout' | 'unsupported';
2
+ export declare class AutoevalError extends Error {
3
+ readonly kind: AutoevalErrorKind;
4
+ readonly code: string | undefined;
5
+ readonly exitCode: number;
6
+ constructor(message: string, options: {
7
+ kind: AutoevalErrorKind;
8
+ code?: string;
9
+ cause?: unknown;
10
+ });
11
+ }
12
+ export declare function asAutoevalError(error: unknown): AutoevalError;
13
+ //# sourceMappingURL=autoeval-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoeval-error.d.ts","sourceRoot":"","sources":["../../src/errors/autoeval-error.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GACzB,OAAO,GACP,gBAAgB,GAChB,eAAe,GACf,kBAAkB,GAClB,YAAY,GACZ,SAAS,GACT,UAAU,GACV,YAAY,GACZ,aAAa,GACb,SAAS,GACT,aAAa,CAAC;AAgBlB,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAGxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,IAAI,EAAE,iBAAiB,CAAC;QACxB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB;CAQJ;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAU7D"}
@@ -0,0 +1,36 @@
1
+ const EXIT_CODES = {
2
+ usage: 2,
3
+ authentication: 3,
4
+ authorization: 3,
5
+ plan_restriction: 3,
6
+ validation: 2,
7
+ network: 4,
8
+ upstream: 4,
9
+ run_failed: 5,
10
+ gate_failed: 1,
11
+ timeout: 4,
12
+ unsupported: 2,
13
+ };
14
+ export class AutoevalError extends Error {
15
+ kind;
16
+ code;
17
+ exitCode;
18
+ constructor(message, options) {
19
+ super(message, { cause: options.cause });
20
+ this.name = 'AutoevalError';
21
+ this.kind = options.kind;
22
+ this.code = options.code;
23
+ this.exitCode = EXIT_CODES[options.kind];
24
+ }
25
+ }
26
+ export function asAutoevalError(error) {
27
+ if (error instanceof AutoevalError) {
28
+ return error;
29
+ }
30
+ return new AutoevalError('Autoeval could not complete the request.', {
31
+ kind: 'upstream',
32
+ code: 'UNEXPECTED_ERROR',
33
+ cause: error,
34
+ });
35
+ }
36
+ //# sourceMappingURL=autoeval-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoeval-error.js","sourceRoot":"","sources":["../../src/errors/autoeval-error.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,GAAgD;IAC9D,KAAK,EAAE,CAAC;IACR,cAAc,EAAE,CAAC;IACjB,aAAa,EAAE,CAAC;IAChB,gBAAgB,EAAE,CAAC;IACnB,UAAU,EAAE,CAAC;IACb,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IACX,UAAU,EAAE,CAAC;IACb,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,CAAC;IACV,WAAW,EAAE,CAAC;CACf,CAAC;AAEF,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,IAAI,CAAoB;IACxB,IAAI,CAAqB;IACzB,QAAQ,CAAS;IAE1B,YACE,OAAe,EACf,OAIC;QAED,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,aAAa,CAAC,0CAA0C,EAAE;QACnE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AutoevalError } from './autoeval-error.js';
2
+ export declare function hintForError(error: Pick<AutoevalError, 'kind' | 'code'>): string | undefined;
3
+ //# sourceMappingURL=hints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hints.d.ts","sourceRoot":"","sources":["../../src/errors/hints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,qBAAqB,CAAC;AAkD5E,wBAAgB,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAG5F"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Remediation hints are advisory only. They never contain credentials, request
3
+ * payloads, or upstream implementation details.
4
+ */
5
+ const HINTS_BY_CODE = {
6
+ CREDENTIAL_REQUIRED: 'Run `autoeval login` (it will prompt for a key), pass `autoeval login --key <pl_sk_...>`, or set AUTOEVAL_API_KEY',
7
+ INVALID_CLI_KEY_FORMAT: 'Create a current CLI key at https://app.plumloom.ai (it starts with pl_sk_), then run `autoeval login` or `autoeval login --key <key>`',
8
+ MISSING_API_BASE_URL: 'Set AUTOEVAL_API_BASE_URL to the Autoeval API origin',
9
+ INVALID_BASE_URL: 'Set AUTOEVAL_API_BASE_URL to an https origin without a path or query',
10
+ INSECURE_BASE_URL: 'Use an https origin; http is allowed only for localhost',
11
+ INVALID_ENVIRONMENT: 'Check the Autoeval environment variables listed in .env.example',
12
+ RUN_POLL_TIMEOUT: 'Check progress later with `autoeval status <evaluation-id> <run-id>`; the run keeps going server-side',
13
+ RESULT_POLL_TIMEOUT: 'Results are still being prepared; retry `autoeval results <evaluation-id> <run-id>` shortly',
14
+ REQUEST_ABORTED: 'The command was interrupted; rerun it when ready',
15
+ INVALID_QUALITY_STANDARD_SCHEMA: 'Compare your file with the canonical schema in docs/command-reference.md',
16
+ INVALID_QUALITY_STANDARD_JSON: 'Validate the file with a JSON linter, then retry',
17
+ QUALITY_STANDARD_INPUT_READ_FAILED: 'Check the --input path relative to your current directory',
18
+ CONFIGURED_RUN_INPUT_READ_FAILED: 'Check the --input path relative to your current directory',
19
+ INVALID_CONFIGURED_RUN_JSON: 'Validate the file with a JSON linter, then retry',
20
+ GATE_THRESHOLD_NOT_MET: 'Review the threshold table above, then fix the regression or update the gate thresholds',
21
+ INVALID_GATE_THRESHOLD: 'Thresholds must be numbers, for example --min-overall 4.0',
22
+ NO_GATE_THRESHOLD: 'Set at least one threshold, for example --min-overall 4.0, or pass --thresholds <file>',
23
+ GATE_THRESHOLDS_READ_FAILED: 'Check the --thresholds path relative to your current directory',
24
+ INVALID_GATE_THRESHOLDS_JSON: 'Validate the thresholds file with a JSON linter, then retry',
25
+ };
26
+ const HINTS_BY_KIND = {
27
+ authentication: 'Run `autoeval login`, or set AUTOEVAL_API_KEY in your environment',
28
+ authorization: 'Confirm your account has access to this workspace or evaluation',
29
+ plan_restriction: 'This action needs a different Plumloom plan; contact your workspace owner',
30
+ network: 'Check your connection and AUTOEVAL_API_BASE_URL, then retry',
31
+ timeout: 'The request timed out; retry, or poll status separately for long runs',
32
+ usage: 'Run the command with --help to see required options and examples',
33
+ validation: 'Run the command with --help to see required options and examples',
34
+ run_failed: 'Inspect the run with `autoeval status <evaluation-id> <run-id>`',
35
+ gate_failed: 'Inspect the failing metric with `autoeval results <evaluation-id> <run-id>`, then adjust the evaluation or the thresholds',
36
+ upstream: 'Retry shortly; rerun with --debug to capture redacted request diagnostics',
37
+ unsupported: 'Run `autoeval --help` to see the supported commands',
38
+ };
39
+ export function hintForError(error) {
40
+ const byCode = error.code === undefined ? undefined : HINTS_BY_CODE[error.code];
41
+ return byCode ?? HINTS_BY_KIND[error.kind];
42
+ }
43
+ //# sourceMappingURL=hints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hints.js","sourceRoot":"","sources":["../../src/errors/hints.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,aAAa,GAAqC;IACtD,mBAAmB,EACjB,mHAAmH;IACrH,sBAAsB,EACpB,wIAAwI;IAC1I,oBAAoB,EAAE,sDAAsD;IAC5E,gBAAgB,EAAE,sEAAsE;IACxF,iBAAiB,EAAE,yDAAyD;IAC5E,mBAAmB,EAAE,iEAAiE;IACtF,gBAAgB,EACd,uGAAuG;IACzG,mBAAmB,EACjB,6FAA6F;IAC/F,eAAe,EAAE,kDAAkD;IACnE,+BAA+B,EAC7B,0EAA0E;IAC5E,6BAA6B,EAAE,kDAAkD;IACjF,kCAAkC,EAAE,2DAA2D;IAC/F,gCAAgC,EAAE,2DAA2D;IAC7F,2BAA2B,EAAE,kDAAkD;IAC/E,sBAAsB,EACpB,yFAAyF;IAC3F,sBAAsB,EAAE,2DAA2D;IACnF,iBAAiB,EACf,wFAAwF;IAC1F,2BAA2B,EAAE,gEAAgE;IAC7F,4BAA4B,EAAE,6DAA6D;CAC5F,CAAC;AAEF,MAAM,aAAa,GAAyD;IAC1E,cAAc,EAAE,mEAAmE;IACnF,aAAa,EAAE,iEAAiE;IAChF,gBAAgB,EAAE,2EAA2E;IAC7F,OAAO,EAAE,6DAA6D;IACtE,OAAO,EAAE,uEAAuE;IAChF,KAAK,EAAE,kEAAkE;IACzE,UAAU,EAAE,kEAAkE;IAC9E,UAAU,EAAE,iEAAiE;IAC7E,WAAW,EACT,2HAA2H;IAC7H,QAAQ,EAAE,2EAA2E;IACrF,WAAW,EAAE,qDAAqD;CACnE,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,KAA2C;IACtE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChF,OAAO,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC"}