stageflow 0.40.0 → 0.42.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 (326) hide show
  1. package/README.md +3 -1
  2. package/dist/agents/authorChat.d.ts +4 -0
  3. package/dist/agents/authorChat.js +113 -12
  4. package/dist/agents/authorSessionStore.d.ts +35 -0
  5. package/dist/agents/authorSessionStore.js +152 -0
  6. package/dist/agents/chatTurn.d.ts +2 -0
  7. package/dist/agents/chatTurn.js +17 -1
  8. package/dist/agents/errors.d.ts +1 -1
  9. package/dist/agents/errors.js +1 -0
  10. package/dist/agents/evalGate.d.ts +61 -0
  11. package/dist/agents/evalGate.js +103 -0
  12. package/dist/agents/evalSession.d.ts +26 -0
  13. package/dist/agents/evalSession.js +29 -0
  14. package/dist/agents/hostContext.d.ts +3 -0
  15. package/dist/agents/hostContext.js +4 -1
  16. package/dist/agents/runtime/piRuntime.d.ts +1 -1
  17. package/dist/agents/runtime/piRuntime.js +4 -4
  18. package/dist/agents/runtime/types.d.ts +3 -1
  19. package/dist/agents/service.d.ts +27 -2
  20. package/dist/agents/service.js +88 -13
  21. package/dist/agents/sessions.d.ts +8 -0
  22. package/dist/agents/sessions.js +50 -10
  23. package/dist/agents/store.d.ts +14 -3
  24. package/dist/agents/store.js +45 -7
  25. package/dist/agents/toolRisk.d.ts +21 -0
  26. package/dist/agents/toolRisk.js +50 -0
  27. package/dist/cli/doctorCommand.js +26 -0
  28. package/dist/cli/evalCommand.d.ts +20 -0
  29. package/dist/cli/evalCommand.js +720 -0
  30. package/dist/cli/exportAllCommand.js +1 -1
  31. package/dist/cli/hostClient.d.ts +60 -0
  32. package/dist/cli/hostClient.js +71 -0
  33. package/dist/cli/validateOutput.d.ts +2 -2
  34. package/dist/cli/validateOutput.js +2 -2
  35. package/dist/cli.js +10 -0
  36. package/dist/config/atomicWrite.d.ts +15 -0
  37. package/dist/config/atomicWrite.js +43 -0
  38. package/dist/config/browseCatalog.d.ts +2 -0
  39. package/dist/config/browseCatalog.js +4 -2
  40. package/dist/config/csv.d.ts +9 -0
  41. package/dist/config/csv.js +81 -0
  42. package/dist/config/datasetAgentCheck.d.ts +18 -0
  43. package/dist/config/datasetAgentCheck.js +109 -0
  44. package/dist/config/datasetCandidates.d.ts +22 -0
  45. package/dist/config/datasetCandidates.js +86 -0
  46. package/dist/config/datasetFromSessions.d.ts +34 -0
  47. package/dist/config/datasetFromSessions.js +105 -0
  48. package/dist/config/datasetHash.d.ts +1 -0
  49. package/dist/config/datasetHash.js +4 -0
  50. package/dist/config/datasetImport.d.ts +21 -0
  51. package/dist/config/datasetImport.js +120 -0
  52. package/dist/config/datasetStageCheck.d.ts +9 -0
  53. package/dist/config/datasetStageCheck.js +17 -0
  54. package/dist/config/datasetTypes.d.ts +27 -0
  55. package/dist/config/datasetTypes.js +1 -0
  56. package/dist/config/ensureCatalogScanRoot.d.ts +2 -1
  57. package/dist/config/ensureCatalogScanRoot.js +2 -6
  58. package/dist/config/evalCatalog.d.ts +22 -0
  59. package/dist/config/evalCatalog.js +67 -0
  60. package/dist/config/evalWriteRoots.d.ts +17 -0
  61. package/dist/config/evalWriteRoots.js +109 -0
  62. package/dist/config/hostConfig.js +1 -0
  63. package/dist/config/installEvalSample.d.ts +34 -0
  64. package/dist/config/installEvalSample.js +182 -0
  65. package/dist/config/loadDataset.d.ts +16 -0
  66. package/dist/config/loadDataset.js +318 -0
  67. package/dist/config/loadEval.d.ts +32 -0
  68. package/dist/config/loadEval.js +1085 -0
  69. package/dist/config/loadOutcome.d.ts +5 -0
  70. package/dist/config/loadStageflowManifest.js +64 -0
  71. package/dist/config/resolveAgentTarget.d.ts +32 -0
  72. package/dist/config/resolveAgentTarget.js +118 -0
  73. package/dist/config/resolveEvalTarget.d.ts +21 -0
  74. package/dist/config/resolveEvalTarget.js +89 -0
  75. package/dist/config/scanCatalogPaths.d.ts +1 -1
  76. package/dist/config/scanCatalogPaths.js +17 -5
  77. package/dist/config/validateCatalog.d.ts +1 -1
  78. package/dist/config/validateCatalog.js +9 -1
  79. package/dist/config/validateEval.d.ts +36 -0
  80. package/dist/config/validateEval.js +405 -0
  81. package/dist/config/writeDataset.d.ts +54 -0
  82. package/dist/config/writeDataset.js +186 -0
  83. package/dist/config/writeEval.d.ts +25 -0
  84. package/dist/config/writeEval.js +398 -0
  85. package/dist/diagnostics/checks.js +1 -1
  86. package/dist/evals/agentDiff.d.ts +13 -0
  87. package/dist/evals/agentDiff.js +11 -0
  88. package/dist/evals/canonical.d.ts +3 -0
  89. package/dist/evals/canonical.js +24 -0
  90. package/dist/evals/caseTask.d.ts +3 -0
  91. package/dist/evals/caseTask.js +9 -0
  92. package/dist/evals/compare.d.ts +94 -0
  93. package/dist/evals/compare.js +201 -0
  94. package/dist/evals/constants.d.ts +60 -0
  95. package/dist/evals/constants.js +95 -0
  96. package/dist/evals/engine/FakeEngine.d.ts +33 -0
  97. package/dist/evals/engine/FakeEngine.js +176 -0
  98. package/dist/evals/engine/index.d.ts +9 -0
  99. package/dist/evals/engine/index.js +19 -0
  100. package/dist/evals/engine/promptfoo/PromptfooEngine.d.ts +52 -0
  101. package/dist/evals/engine/promptfoo/PromptfooEngine.js +311 -0
  102. package/dist/evals/engine/promptfoo/errors.d.ts +5 -0
  103. package/dist/evals/engine/promptfoo/errors.js +8 -0
  104. package/dist/evals/engine/promptfoo/generate.d.ts +30 -0
  105. package/dist/evals/engine/promptfoo/generate.js +342 -0
  106. package/dist/evals/engine/promptfoo/guard.d.ts +10 -0
  107. package/dist/evals/engine/promptfoo/guard.js +116 -0
  108. package/dist/evals/engine/promptfoo/install.d.ts +17 -0
  109. package/dist/evals/engine/promptfoo/install.js +73 -0
  110. package/dist/evals/engine/promptfoo/judgeProviders.d.ts +2 -0
  111. package/dist/evals/engine/promptfoo/judgeProviders.js +9 -0
  112. package/dist/evals/engine/promptfoo/judgeServices.d.ts +6 -0
  113. package/dist/evals/engine/promptfoo/judgeServices.js +41 -0
  114. package/dist/evals/engine/promptfoo/locate.d.ts +21 -0
  115. package/dist/evals/engine/promptfoo/locate.js +68 -0
  116. package/dist/evals/engine/promptfoo/nodeVersion.d.ts +7 -0
  117. package/dist/evals/engine/promptfoo/nodeVersion.js +14 -0
  118. package/dist/evals/engine/promptfoo/normalize.d.ts +66 -0
  119. package/dist/evals/engine/promptfoo/normalize.js +261 -0
  120. package/dist/evals/engine/promptfoo/pinned.d.ts +5 -0
  121. package/dist/evals/engine/promptfoo/pinned.js +5 -0
  122. package/dist/evals/engine/promptfoo/rubricPrompt.d.ts +14 -0
  123. package/dist/evals/engine/promptfoo/rubricPrompt.js +103 -0
  124. package/dist/evals/engine/promptfoo/runTokens.d.ts +18 -0
  125. package/dist/evals/engine/promptfoo/runTokens.js +31 -0
  126. package/dist/evals/engine/promptfoo/status.d.ts +13 -0
  127. package/dist/evals/engine/promptfoo/status.js +16 -0
  128. package/dist/evals/estimate.d.ts +56 -0
  129. package/dist/evals/estimate.js +66 -0
  130. package/dist/evals/graders/codeGrader.d.ts +6 -0
  131. package/dist/evals/graders/codeGrader.js +85 -0
  132. package/dist/evals/graders/conversationCheckGrader.d.ts +6 -0
  133. package/dist/evals/graders/conversationCheckGrader.js +62 -0
  134. package/dist/evals/graders/fieldGrader.d.ts +11 -0
  135. package/dist/evals/graders/fieldGrader.js +117 -0
  136. package/dist/evals/graders/goal.d.ts +3 -0
  137. package/dist/evals/graders/goal.js +14 -0
  138. package/dist/evals/graders/index.d.ts +18 -0
  139. package/dist/evals/graders/index.js +34 -0
  140. package/dist/evals/graders/notApplicable.d.ts +5 -0
  141. package/dist/evals/graders/notApplicable.js +9 -0
  142. package/dist/evals/graders/path.d.ts +26 -0
  143. package/dist/evals/graders/path.js +75 -0
  144. package/dist/evals/graders/referenceGrader.d.ts +5 -0
  145. package/dist/evals/graders/referenceGrader.js +59 -0
  146. package/dist/evals/graders/schemaGrader.d.ts +5 -0
  147. package/dist/evals/graders/schemaGrader.js +29 -0
  148. package/dist/evals/graders/subject.d.ts +6 -0
  149. package/dist/evals/graders/subject.js +33 -0
  150. package/dist/evals/graders/toolCallsGrader.d.ts +6 -0
  151. package/dist/evals/graders/toolCallsGrader.js +100 -0
  152. package/dist/evals/graders/transcript.d.ts +12 -0
  153. package/dist/evals/graders/transcript.js +57 -0
  154. package/dist/evals/graders/types.d.ts +20 -0
  155. package/dist/evals/graders/types.js +1 -0
  156. package/dist/evals/judgeProviders.d.ts +16 -0
  157. package/dist/evals/judgeProviders.js +27 -0
  158. package/dist/evals/lineDiff.d.ts +5 -0
  159. package/dist/evals/lineDiff.js +34 -0
  160. package/dist/evals/listStatus.d.ts +31 -0
  161. package/dist/evals/listStatus.js +48 -0
  162. package/dist/evals/manager.d.ts +174 -0
  163. package/dist/evals/manager.js +787 -0
  164. package/dist/evals/plan.d.ts +58 -0
  165. package/dist/evals/plan.js +602 -0
  166. package/dist/evals/providerKeys.d.ts +1 -0
  167. package/dist/evals/providerKeys.js +21 -0
  168. package/dist/evals/read/agentTargets.d.ts +37 -0
  169. package/dist/evals/read/agentTargets.js +101 -0
  170. package/dist/evals/read/api.d.ts +196 -0
  171. package/dist/evals/read/api.js +358 -0
  172. package/dist/evals/read/compare.d.ts +4 -0
  173. package/dist/evals/read/compare.js +39 -0
  174. package/dist/evals/read/datasets.d.ts +105 -0
  175. package/dist/evals/read/datasets.js +318 -0
  176. package/dist/evals/read/list.d.ts +66 -0
  177. package/dist/evals/read/list.js +173 -0
  178. package/dist/evals/read/results.d.ts +46 -0
  179. package/dist/evals/read/results.js +107 -0
  180. package/dist/evals/read/runs.d.ts +149 -0
  181. package/dist/evals/read/runs.js +289 -0
  182. package/dist/evals/read/suggestions.d.ts +43 -0
  183. package/dist/evals/read/suggestions.js +73 -0
  184. package/dist/evals/runner/FakeAgentBackend.d.ts +40 -0
  185. package/dist/evals/runner/FakeAgentBackend.js +82 -0
  186. package/dist/evals/runner/agentCaseRunner.d.ts +24 -0
  187. package/dist/evals/runner/agentCaseRunner.js +388 -0
  188. package/dist/evals/runner/caseRunner.d.ts +7 -0
  189. package/dist/evals/runner/caseRunner.js +17 -0
  190. package/dist/evals/runner/conversationSubject.d.ts +18 -0
  191. package/dist/evals/runner/conversationSubject.js +123 -0
  192. package/dist/evals/runner/simulatorModel.d.ts +51 -0
  193. package/dist/evals/runner/simulatorModel.js +58 -0
  194. package/dist/evals/runner/simulatorPrompt.d.ts +29 -0
  195. package/dist/evals/runner/simulatorPrompt.js +59 -0
  196. package/dist/evals/runner/stageCaseRunner.d.ts +30 -0
  197. package/dist/evals/runner/stageCaseRunner.js +279 -0
  198. package/dist/evals/runner/userDriver.d.ts +71 -0
  199. package/dist/evals/runner/userDriver.js +104 -0
  200. package/dist/evals/scoring.d.ts +34 -0
  201. package/dist/evals/scoring.js +67 -0
  202. package/dist/evals/snapshot.d.ts +183 -0
  203. package/dist/evals/snapshot.js +65 -0
  204. package/dist/evals/stageDiff.d.ts +8 -0
  205. package/dist/evals/stageDiff.js +48 -0
  206. package/dist/evals/stats.d.ts +95 -0
  207. package/dist/evals/stats.js +220 -0
  208. package/dist/evals/statsAdapter.d.ts +4 -0
  209. package/dist/evals/statsAdapter.js +30 -0
  210. package/dist/evals/statsTypes.d.ts +51 -0
  211. package/dist/evals/statsTypes.js +18 -0
  212. package/dist/evals/storeError.d.ts +5 -0
  213. package/dist/evals/storeError.js +8 -0
  214. package/dist/evals/storeTypes.d.ts +207 -0
  215. package/dist/evals/storeTypes.js +1 -0
  216. package/dist/evals/tTable.d.ts +3 -0
  217. package/dist/evals/tTable.js +15 -0
  218. package/dist/evals/triage/constants.d.ts +26 -0
  219. package/dist/evals/triage/constants.js +33 -0
  220. package/dist/evals/triage/credentials.d.ts +13 -0
  221. package/dist/evals/triage/credentials.js +20 -0
  222. package/dist/evals/triage/jevClassifier.d.ts +14 -0
  223. package/dist/evals/triage/jevClassifier.js +124 -0
  224. package/dist/evals/triage/judgeClassifier.d.ts +10 -0
  225. package/dist/evals/triage/judgeClassifier.js +76 -0
  226. package/dist/evals/triage/prompts.d.ts +16 -0
  227. package/dist/evals/triage/prompts.js +64 -0
  228. package/dist/evals/triage/service.d.ts +79 -0
  229. package/dist/evals/triage/service.js +217 -0
  230. package/dist/evals/triage/stateBuilder.d.ts +19 -0
  231. package/dist/evals/triage/stateBuilder.js +125 -0
  232. package/dist/evals/triage/types.d.ts +60 -0
  233. package/dist/evals/triage/types.js +8 -0
  234. package/dist/evals/types.d.ts +347 -0
  235. package/dist/evals/types.js +1 -0
  236. package/dist/mcp/deps.d.ts +7 -0
  237. package/dist/mcp/evalTools.d.ts +3 -0
  238. package/dist/mcp/evalTools.js +280 -0
  239. package/dist/mcp/server.js +1 -0
  240. package/dist/mcp/tools.js +2 -0
  241. package/dist/models/response.d.ts +7 -2
  242. package/dist/models/response.js +6 -1
  243. package/dist/operatorAgent/agentAuthorContext.d.ts +1 -1
  244. package/dist/operatorAgent/agentAuthorContext.js +1 -1
  245. package/dist/operatorAgent/piModel.js +17 -4
  246. package/dist/operatorAgent/profiles/agentAuthor.d.ts +3 -1
  247. package/dist/operatorAgent/profiles/agentAuthor.js +145 -20
  248. package/dist/operatorAgent/profiles/agentAuthorPlaybook.d.ts +1 -1
  249. package/dist/operatorAgent/profiles/agentAuthorPlaybook.js +48 -15
  250. package/dist/operatorAgent/profiles/authorReadable.d.ts +2 -0
  251. package/dist/operatorAgent/profiles/authorReadable.js +26 -0
  252. package/dist/package-meta.d.ts +1 -1
  253. package/dist/package-meta.js +1 -1
  254. package/dist/runstore/port.d.ts +43 -0
  255. package/dist/runstore/sqlite/SqliteRunStore.d.ts +28 -0
  256. package/dist/runstore/sqlite/SqliteRunStore.js +99 -5
  257. package/dist/runstore/sqlite/evalStore.d.ts +20 -0
  258. package/dist/runstore/sqlite/evalStore.js +541 -0
  259. package/dist/runstore/sqlite/migrations/015-evals.d.ts +12 -0
  260. package/dist/runstore/sqlite/migrations/015-evals.js +157 -0
  261. package/dist/runstore/sqlite/migrations/016-eval-subject-ref.d.ts +12 -0
  262. package/dist/runstore/sqlite/migrations/016-eval-subject-ref.js +20 -0
  263. package/dist/runstore/sqlite/migrations/017-eval-result-suggestions.d.ts +11 -0
  264. package/dist/runstore/sqlite/migrations/017-eval-result-suggestions.js +36 -0
  265. package/dist/runstore/sqlite/migrations/index.js +6 -0
  266. package/dist/runstore/sqlite/suggestionStore.d.ts +14 -0
  267. package/dist/runstore/sqlite/suggestionStore.js +132 -0
  268. package/dist/runtime/pipelineRunner.d.ts +2 -1
  269. package/dist/runtime/pipelineRunner.js +2 -0
  270. package/dist/runtime/runManager.d.ts +2 -1
  271. package/dist/runtime/runManager.js +8 -6
  272. package/dist/runtime/runRetentionSweep.js +2 -2
  273. package/dist/server/agentAuthorRoutes.js +50 -1
  274. package/dist/server/bootstrap.d.ts +8 -0
  275. package/dist/server/bootstrap.js +56 -0
  276. package/dist/server/controlToken.js +3 -0
  277. package/dist/server/evalInternalRoutes.d.ts +14 -0
  278. package/dist/server/evalInternalRoutes.js +87 -0
  279. package/dist/server/evalRouteContext.d.ts +46 -0
  280. package/dist/server/evalRouteContext.js +43 -0
  281. package/dist/server/evalRoutes.d.ts +5 -0
  282. package/dist/server/evalRoutes.js +1427 -0
  283. package/dist/server/evalTriageRoutes.d.ts +2 -0
  284. package/dist/server/evalTriageRoutes.js +95 -0
  285. package/dist/server/http.d.ts +5 -0
  286. package/dist/server/http.js +32 -2
  287. package/dist/server/mcpHost.js +3 -0
  288. package/dist/toolkit/meta.d.ts +1 -1
  289. package/dist/toolkit/meta.js +15 -0
  290. package/dist/toolkit/profiles.js +1 -1
  291. package/dist/types/stageflowManifest.d.ts +6 -0
  292. package/dist/ui/assets/AssistantRuntimeProvider-qIX1xNoH.js +9 -0
  293. package/dist/ui/assets/{MarkdownText-D7tYaIFO.js → MarkdownText-BTrOqu5J.js} +1 -1
  294. package/dist/ui/assets/chat-Df_wCpak.js +5 -0
  295. package/dist/ui/assets/chat-P7KQznHm.css +2 -0
  296. package/dist/ui/assets/{main-BFo79krC.css → main-CHlmTNJe.css} +1 -1
  297. package/dist/ui/assets/main-CvVfxmMd.js +271 -0
  298. package/dist/ui/chat.html +3 -3
  299. package/dist/ui/index.html +3 -3
  300. package/examples/README.md +2 -0
  301. package/examples/document-policy-review/README.md +35 -0
  302. package/examples/document-policy-review/agents/compliance.agent.yaml +42 -0
  303. package/examples/document-policy-review/documents/acme-vendor-sow.md +15 -0
  304. package/examples/document-policy-review/documents/support-runbook.md +13 -0
  305. package/examples/document-policy-review/policies/acceptable-use.md +13 -0
  306. package/examples/document-policy-review/policies/data-handling.md +17 -0
  307. package/examples/document-policy-review/policies/vendor-security.md +17 -0
  308. package/examples/evals/README.md +123 -0
  309. package/examples/evals/critique-sample.dataset.jsonl +8 -0
  310. package/examples/evals/critique-sample.eval.yaml +34 -0
  311. package/examples/evals/critique-sample.task.yaml +4 -0
  312. package/examples/evals/eval-sample.pipeline.yaml +35 -0
  313. package/examples/evals/support-sample.agent.yaml +20 -0
  314. package/examples/evals/support-sample.dataset.jsonl +6 -0
  315. package/examples/evals/support-sample.eval.yaml +38 -0
  316. package/examples/stageflow.yaml +6 -0
  317. package/package.json +1 -1
  318. package/skills/stageflow/SKILL.md +5 -2
  319. package/skills/stageflow/references/control-surface.md +4 -2
  320. package/skills/stageflow/references/evals.md +68 -0
  321. package/skills/stageflow-author/SKILL.md +4 -0
  322. package/skills/stageflow-run/SKILL.md +4 -0
  323. package/dist/ui/assets/AssistantRuntimeProvider-CsiPFhCT.js +0 -9
  324. package/dist/ui/assets/chat-BbLukq9W.js +0 -5
  325. package/dist/ui/assets/chat-zIZU_bP1.css +0 -2
  326. package/dist/ui/assets/main-CijYMeM0.js +0 -259
@@ -1,7 +1,11 @@
1
1
  import Database from "better-sqlite3";
2
+ import type { CreateEvalRunInput, EvalCaseInput, EvalCaseRow, EvalGraderVersionInput, EvalResultInput, EvalResultWithGrades, EvalReviewPatch, EvalReviewRow, EvalRunPage, EvalRunProgress, EvalRunRow, FinishEvalRunInput, ListEvalRunsQuery } from "../../evals/storeTypes.js";
3
+ import type { EvalTargetKind } from "../../evals/constants.js";
2
4
  import type { StageEnvelope } from "../../types/envelope.js";
3
5
  import type { StageLogLine } from "../../agent/activity.js";
4
6
  import { type CreateFeedbackLoopInput, type CreateFeedbackReplayInput, type CreateFeedbackReplayStagePassInput, type CreateForkGenerationInput, type CreateRunInput, type CreatedRun, type FeedbackLoopPatch, type FeedbackLoopRecord, type FeedbackLoopState, type FeedbackReplayPatch, type FeedbackReplayRecord, type FeedbackReplayStagePassPatch, type FeedbackReplayStagePassRecord, type ForkGenerationPatch, type ForkGenerationRecord, type ListRunsFilter, type RunDetail, type RunMeta, type RunPipelineDagSnapshot, type RunStatus, type RunStore, type RunSummary, type StageExecution, type StageExecutionPatch, type StageLogEvent, type TriggerRecord, type UpsertTriggerInput, type VerificationCheckResult, type VerificationCheckResultPatch, type ConfigOriginRecord } from "../port.js";
7
+ import type { SuggestionStatus } from "../../evals/triage/constants.js";
8
+ import type { SuggestionInput, SuggestionRow } from "../../evals/triage/types.js";
5
9
  import type { OverviewRunRow } from "../overviewSummary.js";
6
10
  import { type RunSubmissionRecord } from "../submission.js";
7
11
  type SqliteRunStoreOpenerMode = "assert" | "migrate";
@@ -78,6 +82,30 @@ export declare class SqliteRunStore implements RunStore {
78
82
  listStageEvents(runId: string, stageId: string, attempt?: number): Promise<StageLogEvent[]>;
79
83
  listRuns(filter?: ListRunsFilter): Promise<RunSummary[]>;
80
84
  listRunOverviewRows(since: string): Promise<OverviewRunRow[]>;
85
+ createEvalRun(input: CreateEvalRunInput): Promise<EvalRunRow>;
86
+ insertEvalCases(evalRunId: string, cases: EvalCaseInput[]): Promise<void>;
87
+ upsertEvalResult(result: EvalResultInput): Promise<void>;
88
+ updateEvalRunProgress(evalRunId: string, progress: EvalRunProgress): Promise<void>;
89
+ finishEvalRun(evalRunId: string, input: FinishEvalRunInput): Promise<void>;
90
+ getEvalRun(evalRunId: string): Promise<EvalRunRow | null>;
91
+ getEvalRunByNumber(projectRoot: string, evalId: string, runNumber: number): Promise<EvalRunRow | null>;
92
+ listEvalRuns(query: ListEvalRunsQuery): Promise<EvalRunPage>;
93
+ listEvalResults(evalRunId: string): Promise<EvalResultWithGrades[]>;
94
+ getEvalResultsForCase(evalRunId: string, caseId: string): Promise<EvalResultWithGrades[]>;
95
+ getEvalCases(evalRunId: string): Promise<EvalCaseRow[]>;
96
+ putEvalReview(evalRunId: string, caseId: string, repeatIndex: number, patch: EvalReviewPatch): Promise<EvalReviewRow>;
97
+ getEvalReviews(evalRunId: string): Promise<EvalReviewRow[]>;
98
+ listFailureTypes(projectRoot: string, evalId: string): Promise<string[]>;
99
+ recordGraderVersions(projectRoot: string, evalId: string, graders: EvalGraderVersionInput[]): Promise<Record<string, number>>;
100
+ listEvalSubjectRefs(evalRunId: string, targetKind: EvalTargetKind): Promise<string[]>;
101
+ upsertEvalSuggestions(evalRunId: string, inputs: SuggestionInput[]): Promise<SuggestionRow[]>;
102
+ listEvalSuggestions(evalRunId: string, status?: SuggestionStatus): Promise<SuggestionRow[]>;
103
+ dismissEvalSuggestions(evalRunId: string, ids: string[]): Promise<number>;
104
+ acceptEvalSuggestions(evalRunId: string, ids: string[]): Promise<{
105
+ accepted: number;
106
+ tagged: number;
107
+ }>;
108
+ deleteEvalRun(evalRunId: string): Promise<string[]>;
81
109
  ensureProject(absPath: string): Promise<string>;
82
110
  listRegisteredProjects(): Promise<string[]>;
83
111
  upsertTrigger(input: UpsertTriggerInput): Promise<TriggerRecord>;
@@ -9,6 +9,8 @@ import { parsePipelineDagSnapshot } from "../pipelineDagSnapshot.js";
9
9
  import { newRunId, runWorkspaceDir } from "../paths.js";
10
10
  import { attemptAgentDir, attemptArtifactsDir, stageDir, } from "../workspaceLayout.js";
11
11
  import { importDiskRunsIfEmpty } from "./migrateFromDisk.js";
12
+ import * as evalStore from "./evalStore.js";
13
+ import * as suggestionStore from "./suggestionStore.js";
12
14
  import { applyPendingMigrations, assertSchemaVersion, } from "./migrations/index.js";
13
15
  import { StoreSchemaError } from "./storeSchemaError.js";
14
16
  import { applyStorePragmas } from "./applyStorePragmas.js";
@@ -220,9 +222,9 @@ export class SqliteRunStore {
220
222
  }
221
223
  const inserted = this.db
222
224
  .prepare(`INSERT INTO runs
223
- (run_id, pipeline_id, task_id, task_yaml, status, created_at, updated_at, checkout_root, pipeline_dag_json, git_sha, ci_pr_url, ci_job_url, pipeline_path, task_path, project_root, repository, ref, resolved_sha, run_branch, git_author_name, git_author_email, pipeline_source, pipeline_body, caller_id, run_manifest, skip_gates, dispatch_key)
225
+ (run_id, pipeline_id, task_id, task_yaml, status, created_at, updated_at, checkout_root, pipeline_dag_json, git_sha, ci_pr_url, ci_job_url, pipeline_path, task_path, project_root, repository, ref, resolved_sha, run_branch, git_author_name, git_author_email, pipeline_source, pipeline_body, caller_id, origin, run_manifest, skip_gates, dispatch_key)
224
226
  VALUES
225
- (@run_id, @pipeline_id, @task_id, @task_yaml, @status, @created_at, @updated_at, @checkout_root, @pipeline_dag_json, @git_sha, @ci_pr_url, @ci_job_url, @pipeline_path, @task_path, @project_root, @repository, @ref, @resolved_sha, @run_branch, @git_author_name, @git_author_email, @pipeline_source, @pipeline_body, @caller_id, @run_manifest, @skip_gates, @dispatch_key)
227
+ (@run_id, @pipeline_id, @task_id, @task_yaml, @status, @created_at, @updated_at, @checkout_root, @pipeline_dag_json, @git_sha, @ci_pr_url, @ci_job_url, @pipeline_path, @task_path, @project_root, @repository, @ref, @resolved_sha, @run_branch, @git_author_name, @git_author_email, @pipeline_source, @pipeline_body, @caller_id, @origin, @run_manifest, @skip_gates, @dispatch_key)
226
228
  ON CONFLICT(dispatch_key) DO NOTHING`)
227
229
  .run({
228
230
  run_id: runId,
@@ -252,6 +254,7 @@ export class SqliteRunStore {
252
254
  pipeline_source: pipelineSource,
253
255
  pipeline_body: pipelineBody,
254
256
  caller_id: input.callerId ?? null,
257
+ origin: input.origin ?? null,
255
258
  run_manifest: input.runManifest !== undefined
256
259
  ? JSON.stringify(input.runManifest)
257
260
  : null,
@@ -854,9 +857,15 @@ export class SqliteRunStore {
854
857
  clauses.push("caller_id = ?");
855
858
  params.push(filter.caller_id);
856
859
  }
860
+ if (filter?.origin === "eval") {
861
+ clauses.push("origin = 'eval'");
862
+ }
863
+ else if (filter?.origin !== "any") {
864
+ clauses.push("origin IS NOT 'eval'");
865
+ }
857
866
  const where = clauses.length > 0 ? `WHERE ${clauses.join(" AND ")}` : "";
858
867
  const rows = this.db
859
- .prepare(`SELECT run_id, pipeline_id, task_id, task_yaml, status, created_at, updated_at, checkout_root, pipeline_dag_json, git_sha, ci_pr_url, ci_job_url, pipeline_path, task_path, project_root, repository, ref, resolved_sha, run_branch, git_author_name, git_author_email, cancel_reason, finished_at, slimmed_at, disk_bytes, disk_measured_at, config_origins_json, pipeline_source, pipeline_body, caller_id, run_manifest, skip_gates
868
+ .prepare(`SELECT run_id, pipeline_id, task_id, task_yaml, status, created_at, updated_at, checkout_root, pipeline_dag_json, git_sha, ci_pr_url, ci_job_url, pipeline_path, task_path, project_root, repository, ref, resolved_sha, run_branch, git_author_name, git_author_email, cancel_reason, finished_at, slimmed_at, disk_bytes, disk_measured_at, config_origins_json, pipeline_source, pipeline_body, caller_id, origin, run_manifest, skip_gates
860
869
  FROM runs ${where} ORDER BY created_at DESC`)
861
870
  .all(...params);
862
871
  const summaries = [];
@@ -876,7 +885,7 @@ export class SqliteRunStore {
876
885
  .prepare(`SELECT r.run_id, r.pipeline_id, r.status, r.created_at, r.finished_at,
877
886
  (SELECT SUM(e.cost_usd) FROM stage_executions e WHERE e.run_id = r.run_id) AS cost_usd
878
887
  FROM runs r
879
- WHERE r.created_at >= ?
888
+ WHERE r.created_at >= ? AND r.origin IS NOT 'eval'
880
889
  ORDER BY r.created_at DESC`)
881
890
  .all(since);
882
891
  return rows.map((row) => ({
@@ -888,6 +897,90 @@ export class SqliteRunStore {
888
897
  ...(row.cost_usd != null ? { cost_usd: row.cost_usd } : {}),
889
898
  }));
890
899
  }
900
+ async createEvalRun(input) {
901
+ await this.ready();
902
+ return evalStore.createEvalRun(this.db, input);
903
+ }
904
+ async insertEvalCases(evalRunId, cases) {
905
+ await this.ready();
906
+ evalStore.insertEvalCases(this.db, evalRunId, cases);
907
+ }
908
+ async upsertEvalResult(result) {
909
+ await this.ready();
910
+ evalStore.upsertEvalResult(this.db, result);
911
+ }
912
+ async updateEvalRunProgress(evalRunId, progress) {
913
+ await this.ready();
914
+ evalStore.updateEvalRunProgress(this.db, evalRunId, progress);
915
+ }
916
+ async finishEvalRun(evalRunId, input) {
917
+ await this.ready();
918
+ evalStore.finishEvalRun(this.db, evalRunId, input);
919
+ }
920
+ async getEvalRun(evalRunId) {
921
+ await this.ready();
922
+ return evalStore.getEvalRun(this.db, evalRunId);
923
+ }
924
+ async getEvalRunByNumber(projectRoot, evalId, runNumber) {
925
+ await this.ready();
926
+ return evalStore.getEvalRunByNumber(this.db, projectRoot, evalId, runNumber);
927
+ }
928
+ async listEvalRuns(query) {
929
+ await this.ready();
930
+ return evalStore.listEvalRuns(this.db, query);
931
+ }
932
+ async listEvalResults(evalRunId) {
933
+ await this.ready();
934
+ return evalStore.listEvalResults(this.db, evalRunId);
935
+ }
936
+ async getEvalResultsForCase(evalRunId, caseId) {
937
+ await this.ready();
938
+ return evalStore.getEvalResultsForCase(this.db, evalRunId, caseId);
939
+ }
940
+ async getEvalCases(evalRunId) {
941
+ await this.ready();
942
+ return evalStore.getEvalCases(this.db, evalRunId);
943
+ }
944
+ async putEvalReview(evalRunId, caseId, repeatIndex, patch) {
945
+ await this.ready();
946
+ return evalStore.putEvalReview(this.db, evalRunId, caseId, repeatIndex, patch);
947
+ }
948
+ async getEvalReviews(evalRunId) {
949
+ await this.ready();
950
+ return evalStore.getEvalReviews(this.db, evalRunId);
951
+ }
952
+ async listFailureTypes(projectRoot, evalId) {
953
+ await this.ready();
954
+ return evalStore.listFailureTypes(this.db, projectRoot, evalId);
955
+ }
956
+ async recordGraderVersions(projectRoot, evalId, graders) {
957
+ await this.ready();
958
+ return evalStore.recordGraderVersions(this.db, projectRoot, evalId, graders);
959
+ }
960
+ async listEvalSubjectRefs(evalRunId, targetKind) {
961
+ await this.ready();
962
+ return evalStore.listEvalSubjectRefs(this.db, evalRunId, targetKind);
963
+ }
964
+ async upsertEvalSuggestions(evalRunId, inputs) {
965
+ await this.ready();
966
+ return suggestionStore.upsertEvalSuggestions(this.db, evalRunId, inputs);
967
+ }
968
+ async listEvalSuggestions(evalRunId, status) {
969
+ await this.ready();
970
+ return suggestionStore.listEvalSuggestions(this.db, evalRunId, status);
971
+ }
972
+ async dismissEvalSuggestions(evalRunId, ids) {
973
+ await this.ready();
974
+ return suggestionStore.dismissEvalSuggestions(this.db, evalRunId, ids);
975
+ }
976
+ async acceptEvalSuggestions(evalRunId, ids) {
977
+ await this.ready();
978
+ return suggestionStore.acceptEvalSuggestions(this.db, evalRunId, ids);
979
+ }
980
+ async deleteEvalRun(evalRunId) {
981
+ await this.ready();
982
+ return evalStore.deleteEvalRun(this.db, evalRunId);
983
+ }
891
984
  async ensureProject(absPath) {
892
985
  await this.ready();
893
986
  const resolved = path.resolve(absPath);
@@ -1450,6 +1543,7 @@ export class SqliteRunStore {
1450
1543
  ? { pipeline_source: row.pipeline_source }
1451
1544
  : {}),
1452
1545
  ...(row.caller_id != null ? { caller_id: row.caller_id } : {}),
1546
+ ...(row.origin === "eval" ? { origin: "eval" } : {}),
1453
1547
  ...(row.run_manifest
1454
1548
  ? { run_manifest: JSON.parse(row.run_manifest) }
1455
1549
  : {}),
@@ -1464,7 +1558,7 @@ export class SqliteRunStore {
1464
1558
  }
1465
1559
  getRunRow(runId) {
1466
1560
  const row = this.db
1467
- .prepare(`SELECT run_id, pipeline_id, task_id, task_yaml, status, created_at, updated_at, checkout_root, pipeline_dag_json, git_sha, ci_pr_url, ci_job_url, pipeline_path, task_path, project_root, repository, ref, resolved_sha, run_branch, git_author_name, git_author_email, cancel_reason, finished_at, slimmed_at, disk_bytes, disk_measured_at, config_origins_json, pipeline_source, pipeline_body, caller_id, run_manifest, skip_gates
1561
+ .prepare(`SELECT run_id, pipeline_id, task_id, task_yaml, status, created_at, updated_at, checkout_root, pipeline_dag_json, git_sha, ci_pr_url, ci_job_url, pipeline_path, task_path, project_root, repository, ref, resolved_sha, run_branch, git_author_name, git_author_email, cancel_reason, finished_at, slimmed_at, disk_bytes, disk_measured_at, config_origins_json, pipeline_source, pipeline_body, caller_id, origin, run_manifest, skip_gates
1468
1562
  FROM runs WHERE run_id = ?`)
1469
1563
  .get(runId);
1470
1564
  if (!row)
@@ -0,0 +1,20 @@
1
+ import type Database from "better-sqlite3";
2
+ import { type EvalTargetKind } from "../../evals/constants.js";
3
+ import type { CreateEvalRunInput, EvalCaseInput, EvalCaseRow, EvalGraderVersionInput, EvalResultInput, EvalResultWithGrades, EvalReviewPatch, EvalReviewRow, EvalRunPage, EvalRunProgress, EvalRunRow, FinishEvalRunInput, ListEvalRunsQuery } from "../../evals/storeTypes.js";
4
+ export declare function createEvalRun(db: Database.Database, input: CreateEvalRunInput): EvalRunRow;
5
+ export declare function insertEvalCases(db: Database.Database, evalRunId: string, cases: EvalCaseInput[]): void;
6
+ export declare function upsertEvalResult(db: Database.Database, input: EvalResultInput): void;
7
+ export declare function updateEvalRunProgress(db: Database.Database, evalRunId: string, progress: EvalRunProgress): void;
8
+ export declare function finishEvalRun(db: Database.Database, evalRunId: string, input: FinishEvalRunInput): void;
9
+ export declare function getEvalRun(db: Database.Database, evalRunId: string): EvalRunRow | null;
10
+ export declare function getEvalRunByNumber(db: Database.Database, projectRoot: string, evalId: string, runNumber: number): EvalRunRow | null;
11
+ export declare function listEvalRuns(db: Database.Database, query: ListEvalRunsQuery): EvalRunPage;
12
+ export declare function listEvalResults(db: Database.Database, evalRunId: string): EvalResultWithGrades[];
13
+ export declare function getEvalResultsForCase(db: Database.Database, evalRunId: string, caseId: string): EvalResultWithGrades[];
14
+ export declare function getEvalCases(db: Database.Database, evalRunId: string): EvalCaseRow[];
15
+ export declare function putEvalReview(db: Database.Database, evalRunId: string, caseId: string, repeatIndex: number, patch: EvalReviewPatch): EvalReviewRow;
16
+ export declare function getEvalReviews(db: Database.Database, evalRunId: string): EvalReviewRow[];
17
+ export declare function listFailureTypes(db: Database.Database, projectRoot: string, evalId: string): string[];
18
+ export declare function recordGraderVersions(db: Database.Database, projectRoot: string, evalId: string, graders: EvalGraderVersionInput[]): Record<string, number>;
19
+ export declare function listEvalSubjectRefs(db: Database.Database, evalRunId: string, targetKind: EvalTargetKind): string[];
20
+ export declare function deleteEvalRun(db: Database.Database, evalRunId: string): string[];