stageflow 0.40.0 → 0.44.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 (519) hide show
  1. package/README.md +15 -4
  2. package/dist/agent/activity.d.ts +18 -0
  3. package/dist/agent/claudeAdapter.js +7 -0
  4. package/dist/agent/claudeTools.d.ts +27 -18
  5. package/dist/agent/claudeTools.js +54 -15
  6. package/dist/agent/compactionEvents.d.ts +34 -0
  7. package/dist/agent/compactionEvents.js +37 -0
  8. package/dist/agent/openRouterRouting.d.ts +7 -0
  9. package/dist/agent/openRouterRouting.js +23 -0
  10. package/dist/agent/piAdapter.d.ts +6 -0
  11. package/dist/agent/piAdapter.js +128 -27
  12. package/dist/agent/piSettings.d.ts +7 -0
  13. package/dist/agent/piSettings.js +9 -0
  14. package/dist/agent/sandboxPiTools.d.ts +3 -1
  15. package/dist/agent/sandboxPiTools.js +8 -2
  16. package/dist/agent/stageTurnDriver.d.ts +11 -2
  17. package/dist/agent/stageTurnDriver.js +45 -4
  18. package/dist/agent/toolOutputBudget.d.ts +15 -1
  19. package/dist/agent/toolOutputBudget.js +18 -0
  20. package/dist/agent/toolOutputBudgetExtension.d.ts +2 -0
  21. package/dist/agent/toolOutputBudgetExtension.js +40 -3
  22. package/dist/agents/authorChat.d.ts +5 -0
  23. package/dist/agents/authorChat.js +120 -12
  24. package/dist/agents/authorSessionStore.d.ts +38 -0
  25. package/dist/agents/authorSessionStore.js +167 -0
  26. package/dist/agents/chatTurn.d.ts +2 -0
  27. package/dist/agents/chatTurn.js +17 -1
  28. package/dist/agents/errors.d.ts +1 -1
  29. package/dist/agents/errors.js +1 -0
  30. package/dist/agents/evalGate.d.ts +61 -0
  31. package/dist/agents/evalGate.js +103 -0
  32. package/dist/agents/evalSession.d.ts +26 -0
  33. package/dist/agents/evalSession.js +29 -0
  34. package/dist/agents/hostContext.d.ts +4 -1
  35. package/dist/agents/hostContext.js +4 -1
  36. package/dist/agents/runtime/piRuntime.d.ts +6 -2
  37. package/dist/agents/runtime/piRuntime.js +50 -16
  38. package/dist/agents/runtime/types.d.ts +3 -1
  39. package/dist/agents/service.d.ts +27 -2
  40. package/dist/agents/service.js +91 -15
  41. package/dist/agents/sessions.d.ts +8 -0
  42. package/dist/agents/sessions.js +53 -11
  43. package/dist/agents/store.d.ts +14 -3
  44. package/dist/agents/store.js +45 -7
  45. package/dist/agents/toolRisk.d.ts +21 -0
  46. package/dist/agents/toolRisk.js +50 -0
  47. package/dist/cli/doctorCommand.js +26 -0
  48. package/dist/cli/evalCommand.d.ts +20 -0
  49. package/dist/cli/evalCommand.js +720 -0
  50. package/dist/cli/exportAllCommand.js +1 -1
  51. package/dist/cli/hostClient.d.ts +60 -0
  52. package/dist/cli/hostClient.js +71 -0
  53. package/dist/cli/validateOutput.d.ts +2 -2
  54. package/dist/cli/validateOutput.js +2 -2
  55. package/dist/cli.js +10 -0
  56. package/dist/compaction/directives.d.ts +18 -0
  57. package/dist/compaction/directives.js +119 -0
  58. package/dist/compaction/extension.d.ts +20 -0
  59. package/dist/compaction/extension.js +78 -0
  60. package/dist/compaction/mask.d.ts +18 -0
  61. package/dist/compaction/mask.js +155 -0
  62. package/dist/compaction/pin.d.ts +21 -0
  63. package/dist/compaction/pin.js +270 -0
  64. package/dist/compaction/scrub.d.ts +7 -0
  65. package/dist/compaction/scrub.js +26 -0
  66. package/dist/compaction/sessionWiring.d.ts +22 -0
  67. package/dist/compaction/sessionWiring.js +26 -0
  68. package/dist/compaction/summarize.d.ts +79 -0
  69. package/dist/compaction/summarize.js +171 -0
  70. package/dist/compaction/toolPolicy.d.ts +3 -0
  71. package/dist/compaction/toolPolicy.js +33 -0
  72. package/dist/compaction/types.d.ts +45 -0
  73. package/dist/compaction/types.js +7 -0
  74. package/dist/compaction/workingState.d.ts +56 -0
  75. package/dist/compaction/workingState.js +198 -0
  76. package/dist/config/atomicWrite.d.ts +15 -0
  77. package/dist/config/atomicWrite.js +43 -0
  78. package/dist/config/browseCatalog.d.ts +2 -0
  79. package/dist/config/browseCatalog.js +4 -2
  80. package/dist/config/createPipeline.js +2 -0
  81. package/dist/config/createTrigger.js +7 -1
  82. package/dist/config/csv.d.ts +9 -0
  83. package/dist/config/csv.js +81 -0
  84. package/dist/config/datasetAgentCheck.d.ts +18 -0
  85. package/dist/config/datasetAgentCheck.js +109 -0
  86. package/dist/config/datasetCandidates.d.ts +22 -0
  87. package/dist/config/datasetCandidates.js +86 -0
  88. package/dist/config/datasetFromSessions.d.ts +34 -0
  89. package/dist/config/datasetFromSessions.js +105 -0
  90. package/dist/config/datasetHash.d.ts +1 -0
  91. package/dist/config/datasetHash.js +4 -0
  92. package/dist/config/datasetImport.d.ts +21 -0
  93. package/dist/config/datasetImport.js +120 -0
  94. package/dist/config/datasetStageCheck.d.ts +9 -0
  95. package/dist/config/datasetStageCheck.js +17 -0
  96. package/dist/config/datasetTypes.d.ts +27 -0
  97. package/dist/config/datasetTypes.js +1 -0
  98. package/dist/config/ensureCatalogScanRoot.d.ts +4 -1
  99. package/dist/config/ensureCatalogScanRoot.js +8 -6
  100. package/dist/config/evalCatalog.d.ts +22 -0
  101. package/dist/config/evalCatalog.js +95 -0
  102. package/dist/config/evalWriteRoots.d.ts +17 -0
  103. package/dist/config/evalWriteRoots.js +109 -0
  104. package/dist/config/githubTriggerAction.d.ts +8 -0
  105. package/dist/config/githubTriggerAction.js +29 -0
  106. package/dist/config/hostConfig.js +3 -0
  107. package/dist/config/installEvalSample.d.ts +34 -0
  108. package/dist/config/installEvalSample.js +182 -0
  109. package/dist/config/loadDataset.d.ts +16 -0
  110. package/dist/config/loadDataset.js +318 -0
  111. package/dist/config/loadEval.d.ts +32 -0
  112. package/dist/config/loadEval.js +1103 -0
  113. package/dist/config/loadOutcome.d.ts +5 -0
  114. package/dist/config/loadStageflowManifest.js +64 -0
  115. package/dist/config/pipelineNeeds.d.ts +2 -0
  116. package/dist/config/pipelineNeeds.js +16 -3
  117. package/dist/config/pipelineRoute.js +5 -4
  118. package/dist/config/resolveAgentTarget.d.ts +32 -0
  119. package/dist/config/resolveAgentTarget.js +118 -0
  120. package/dist/config/resolveEvalTarget.d.ts +21 -0
  121. package/dist/config/resolveEvalTarget.js +89 -0
  122. package/dist/config/scanCatalogPaths.d.ts +1 -1
  123. package/dist/config/scanCatalogPaths.js +17 -5
  124. package/dist/config/validateCatalog.d.ts +2 -2
  125. package/dist/config/validateCatalog.js +21 -1
  126. package/dist/config/validateEval.d.ts +36 -0
  127. package/dist/config/validateEval.js +446 -0
  128. package/dist/config/writeDataset.d.ts +54 -0
  129. package/dist/config/writeDataset.js +186 -0
  130. package/dist/config/writeEval.d.ts +25 -0
  131. package/dist/config/writeEval.js +398 -0
  132. package/dist/diagnostics/checks.js +1 -1
  133. package/dist/envelope/assertEmittedArtifacts.d.ts +12 -0
  134. package/dist/envelope/assertEmittedArtifacts.js +43 -0
  135. package/dist/envelope/preEmitChecks.d.ts +3 -0
  136. package/dist/evals/agentDiff.d.ts +13 -0
  137. package/dist/evals/agentDiff.js +11 -0
  138. package/dist/evals/canonical.d.ts +3 -0
  139. package/dist/evals/canonical.js +24 -0
  140. package/dist/evals/caseTask.d.ts +3 -0
  141. package/dist/evals/caseTask.js +9 -0
  142. package/dist/evals/compare.d.ts +94 -0
  143. package/dist/evals/compare.js +201 -0
  144. package/dist/evals/constants.d.ts +62 -0
  145. package/dist/evals/constants.js +97 -0
  146. package/dist/evals/engine/FakeEngine.d.ts +33 -0
  147. package/dist/evals/engine/FakeEngine.js +177 -0
  148. package/dist/evals/engine/index.d.ts +9 -0
  149. package/dist/evals/engine/index.js +19 -0
  150. package/dist/evals/engine/promptfoo/PromptfooEngine.d.ts +52 -0
  151. package/dist/evals/engine/promptfoo/PromptfooEngine.js +312 -0
  152. package/dist/evals/engine/promptfoo/errors.d.ts +5 -0
  153. package/dist/evals/engine/promptfoo/errors.js +8 -0
  154. package/dist/evals/engine/promptfoo/generate.d.ts +30 -0
  155. package/dist/evals/engine/promptfoo/generate.js +345 -0
  156. package/dist/evals/engine/promptfoo/guard.d.ts +10 -0
  157. package/dist/evals/engine/promptfoo/guard.js +116 -0
  158. package/dist/evals/engine/promptfoo/install.d.ts +17 -0
  159. package/dist/evals/engine/promptfoo/install.js +73 -0
  160. package/dist/evals/engine/promptfoo/judgeProviders.d.ts +2 -0
  161. package/dist/evals/engine/promptfoo/judgeProviders.js +9 -0
  162. package/dist/evals/engine/promptfoo/judgeServices.d.ts +6 -0
  163. package/dist/evals/engine/promptfoo/judgeServices.js +41 -0
  164. package/dist/evals/engine/promptfoo/locate.d.ts +21 -0
  165. package/dist/evals/engine/promptfoo/locate.js +68 -0
  166. package/dist/evals/engine/promptfoo/nodeVersion.d.ts +7 -0
  167. package/dist/evals/engine/promptfoo/nodeVersion.js +14 -0
  168. package/dist/evals/engine/promptfoo/normalize.d.ts +66 -0
  169. package/dist/evals/engine/promptfoo/normalize.js +261 -0
  170. package/dist/evals/engine/promptfoo/pinned.d.ts +5 -0
  171. package/dist/evals/engine/promptfoo/pinned.js +5 -0
  172. package/dist/evals/engine/promptfoo/rubricPrompt.d.ts +14 -0
  173. package/dist/evals/engine/promptfoo/rubricPrompt.js +105 -0
  174. package/dist/evals/engine/promptfoo/runTokens.d.ts +18 -0
  175. package/dist/evals/engine/promptfoo/runTokens.js +31 -0
  176. package/dist/evals/engine/promptfoo/status.d.ts +13 -0
  177. package/dist/evals/engine/promptfoo/status.js +16 -0
  178. package/dist/evals/estimate.d.ts +56 -0
  179. package/dist/evals/estimate.js +66 -0
  180. package/dist/evals/graders/codeGrader.d.ts +6 -0
  181. package/dist/evals/graders/codeGrader.js +85 -0
  182. package/dist/evals/graders/conversationCheckGrader.d.ts +6 -0
  183. package/dist/evals/graders/conversationCheckGrader.js +62 -0
  184. package/dist/evals/graders/fieldGrader.d.ts +11 -0
  185. package/dist/evals/graders/fieldGrader.js +117 -0
  186. package/dist/evals/graders/goal.d.ts +3 -0
  187. package/dist/evals/graders/goal.js +14 -0
  188. package/dist/evals/graders/index.d.ts +18 -0
  189. package/dist/evals/graders/index.js +34 -0
  190. package/dist/evals/graders/notApplicable.d.ts +5 -0
  191. package/dist/evals/graders/notApplicable.js +9 -0
  192. package/dist/evals/graders/path.d.ts +26 -0
  193. package/dist/evals/graders/path.js +75 -0
  194. package/dist/evals/graders/referenceGrader.d.ts +5 -0
  195. package/dist/evals/graders/referenceGrader.js +59 -0
  196. package/dist/evals/graders/schemaGrader.d.ts +5 -0
  197. package/dist/evals/graders/schemaGrader.js +29 -0
  198. package/dist/evals/graders/subject.d.ts +6 -0
  199. package/dist/evals/graders/subject.js +33 -0
  200. package/dist/evals/graders/toolCallsGrader.d.ts +6 -0
  201. package/dist/evals/graders/toolCallsGrader.js +100 -0
  202. package/dist/evals/graders/transcript.d.ts +12 -0
  203. package/dist/evals/graders/transcript.js +57 -0
  204. package/dist/evals/graders/types.d.ts +20 -0
  205. package/dist/evals/graders/types.js +1 -0
  206. package/dist/evals/judgeProviders.d.ts +16 -0
  207. package/dist/evals/judgeProviders.js +27 -0
  208. package/dist/evals/lineDiff.d.ts +5 -0
  209. package/dist/evals/lineDiff.js +34 -0
  210. package/dist/evals/listStatus.d.ts +31 -0
  211. package/dist/evals/listStatus.js +48 -0
  212. package/dist/evals/manager.d.ts +187 -0
  213. package/dist/evals/manager.js +795 -0
  214. package/dist/evals/plan.d.ts +65 -0
  215. package/dist/evals/plan.js +621 -0
  216. package/dist/evals/planInternalAgent.d.ts +19 -0
  217. package/dist/evals/planInternalAgent.js +205 -0
  218. package/dist/evals/providerKeys.d.ts +1 -0
  219. package/dist/evals/providerKeys.js +21 -0
  220. package/dist/evals/read/agentTargets.d.ts +37 -0
  221. package/dist/evals/read/agentTargets.js +101 -0
  222. package/dist/evals/read/api.d.ts +208 -0
  223. package/dist/evals/read/api.js +363 -0
  224. package/dist/evals/read/compare.d.ts +4 -0
  225. package/dist/evals/read/compare.js +39 -0
  226. package/dist/evals/read/datasets.d.ts +105 -0
  227. package/dist/evals/read/datasets.js +318 -0
  228. package/dist/evals/read/list.d.ts +66 -0
  229. package/dist/evals/read/list.js +182 -0
  230. package/dist/evals/read/results.d.ts +46 -0
  231. package/dist/evals/read/results.js +107 -0
  232. package/dist/evals/read/runs.d.ts +154 -0
  233. package/dist/evals/read/runs.js +295 -0
  234. package/dist/evals/read/suggestions.d.ts +43 -0
  235. package/dist/evals/read/suggestions.js +73 -0
  236. package/dist/evals/runner/FakeAgentBackend.d.ts +40 -0
  237. package/dist/evals/runner/FakeAgentBackend.js +82 -0
  238. package/dist/evals/runner/agentCaseRunner.d.ts +24 -0
  239. package/dist/evals/runner/agentCaseRunner.js +388 -0
  240. package/dist/evals/runner/caseRunner.d.ts +8 -0
  241. package/dist/evals/runner/caseRunner.js +28 -0
  242. package/dist/evals/runner/conversationSubject.d.ts +18 -0
  243. package/dist/evals/runner/conversationSubject.js +123 -0
  244. package/dist/evals/runner/internalAgentCaseRunner.d.ts +6 -0
  245. package/dist/evals/runner/internalAgentCaseRunner.js +250 -0
  246. package/dist/evals/runner/simulatorModel.d.ts +51 -0
  247. package/dist/evals/runner/simulatorModel.js +58 -0
  248. package/dist/evals/runner/simulatorPrompt.d.ts +29 -0
  249. package/dist/evals/runner/simulatorPrompt.js +59 -0
  250. package/dist/evals/runner/stageCaseRunner.d.ts +30 -0
  251. package/dist/evals/runner/stageCaseRunner.js +279 -0
  252. package/dist/evals/runner/userDriver.d.ts +71 -0
  253. package/dist/evals/runner/userDriver.js +104 -0
  254. package/dist/evals/scoring.d.ts +34 -0
  255. package/dist/evals/scoring.js +67 -0
  256. package/dist/evals/snapshot.d.ts +191 -0
  257. package/dist/evals/snapshot.js +70 -0
  258. package/dist/evals/stageDiff.d.ts +8 -0
  259. package/dist/evals/stageDiff.js +48 -0
  260. package/dist/evals/stats.d.ts +95 -0
  261. package/dist/evals/stats.js +220 -0
  262. package/dist/evals/statsAdapter.d.ts +4 -0
  263. package/dist/evals/statsAdapter.js +30 -0
  264. package/dist/evals/statsTypes.d.ts +51 -0
  265. package/dist/evals/statsTypes.js +18 -0
  266. package/dist/evals/storeError.d.ts +5 -0
  267. package/dist/evals/storeError.js +8 -0
  268. package/dist/evals/storeTypes.d.ts +207 -0
  269. package/dist/evals/storeTypes.js +1 -0
  270. package/dist/evals/tTable.d.ts +3 -0
  271. package/dist/evals/tTable.js +15 -0
  272. package/dist/evals/triage/constants.d.ts +26 -0
  273. package/dist/evals/triage/constants.js +33 -0
  274. package/dist/evals/triage/credentials.d.ts +13 -0
  275. package/dist/evals/triage/credentials.js +20 -0
  276. package/dist/evals/triage/jevClassifier.d.ts +14 -0
  277. package/dist/evals/triage/jevClassifier.js +124 -0
  278. package/dist/evals/triage/judgeClassifier.d.ts +10 -0
  279. package/dist/evals/triage/judgeClassifier.js +76 -0
  280. package/dist/evals/triage/prompts.d.ts +16 -0
  281. package/dist/evals/triage/prompts.js +64 -0
  282. package/dist/evals/triage/service.d.ts +79 -0
  283. package/dist/evals/triage/service.js +217 -0
  284. package/dist/evals/triage/stateBuilder.d.ts +19 -0
  285. package/dist/evals/triage/stateBuilder.js +125 -0
  286. package/dist/evals/triage/types.d.ts +60 -0
  287. package/dist/evals/triage/types.js +8 -0
  288. package/dist/evals/types.d.ts +357 -0
  289. package/dist/evals/types.js +4 -0
  290. package/dist/guide/cardContract.d.ts +133 -0
  291. package/dist/guide/cardContract.js +156 -0
  292. package/dist/guide/chat.d.ts +45 -0
  293. package/dist/guide/chat.js +378 -0
  294. package/dist/guide/knowledge/index.d.ts +14 -0
  295. package/dist/guide/knowledge/index.js +109 -0
  296. package/dist/guide/knowledge/topics/agents.d.ts +2 -0
  297. package/dist/guide/knowledge/topics/agents.js +58 -0
  298. package/dist/guide/knowledge/topics/bestPractices.d.ts +2 -0
  299. package/dist/guide/knowledge/topics/bestPractices.js +67 -0
  300. package/dist/guide/knowledge/topics/connections.d.ts +2 -0
  301. package/dist/guide/knowledge/topics/connections.js +66 -0
  302. package/dist/guide/knowledge/topics/consoleMap.d.ts +2 -0
  303. package/dist/guide/knowledge/topics/consoleMap.js +55 -0
  304. package/dist/guide/knowledge/topics/evals.d.ts +2 -0
  305. package/dist/guide/knowledge/topics/evals.js +72 -0
  306. package/dist/guide/knowledge/topics/limitations.d.ts +2 -0
  307. package/dist/guide/knowledge/topics/limitations.js +84 -0
  308. package/dist/guide/knowledge/topics/mcpSkillsBrowser.d.ts +2 -0
  309. package/dist/guide/knowledge/topics/mcpSkillsBrowser.js +57 -0
  310. package/dist/guide/knowledge/topics/memories.d.ts +2 -0
  311. package/dist/guide/knowledge/topics/memories.js +63 -0
  312. package/dist/guide/knowledge/topics/modelsAndProviders.d.ts +2 -0
  313. package/dist/guide/knowledge/topics/modelsAndProviders.js +56 -0
  314. package/dist/guide/knowledge/topics/overview.d.ts +2 -0
  315. package/dist/guide/knowledge/topics/overview.js +56 -0
  316. package/dist/guide/knowledge/topics/pipelines.d.ts +2 -0
  317. package/dist/guide/knowledge/topics/pipelines.js +93 -0
  318. package/dist/guide/knowledge/topics/stages.d.ts +2 -0
  319. package/dist/guide/knowledge/topics/stages.js +54 -0
  320. package/dist/guide/knowledge/topics/tasks.d.ts +2 -0
  321. package/dist/guide/knowledge/topics/tasks.js +52 -0
  322. package/dist/guide/knowledge/topics/triggers.d.ts +2 -0
  323. package/dist/guide/knowledge/topics/triggers.js +68 -0
  324. package/dist/guide/knowledge/topics/troubleshooting.d.ts +2 -0
  325. package/dist/guide/knowledge/topics/troubleshooting.js +85 -0
  326. package/dist/guide/knowledgeTools.d.ts +2 -0
  327. package/dist/guide/knowledgeTools.js +56 -0
  328. package/dist/guide/showUi.d.ts +6 -0
  329. package/dist/guide/showUi.js +546 -0
  330. package/dist/guide/threadStore.d.ts +48 -0
  331. package/dist/guide/threadStore.js +189 -0
  332. package/dist/guide/writeRoot.d.ts +11 -0
  333. package/dist/guide/writeRoot.js +70 -0
  334. package/dist/hosted/translate.js +2 -0
  335. package/dist/mcp/agentTools.js +12 -0
  336. package/dist/mcp/catalogTools.js +18 -20
  337. package/dist/mcp/catalogWriteTools.d.ts +8 -0
  338. package/dist/mcp/catalogWriteTools.js +225 -0
  339. package/dist/mcp/connectionTools.d.ts +3 -0
  340. package/dist/mcp/connectionTools.js +85 -0
  341. package/dist/mcp/controlTools.js +34 -1
  342. package/dist/mcp/deps.d.ts +16 -0
  343. package/dist/mcp/evalTools.d.ts +3 -0
  344. package/dist/mcp/evalTools.js +943 -0
  345. package/dist/mcp/memoryHostTools.d.ts +3 -0
  346. package/dist/mcp/memoryHostTools.js +72 -0
  347. package/dist/mcp/pipelineAuthorTools.js +14 -1
  348. package/dist/mcp/server.js +6 -0
  349. package/dist/mcp/tools.js +8 -0
  350. package/dist/mcp/triggerTools.js +77 -31
  351. package/dist/models/response.d.ts +7 -2
  352. package/dist/models/response.js +6 -1
  353. package/dist/operatorAgent/agentAuthorContext.d.ts +1 -1
  354. package/dist/operatorAgent/agentAuthorContext.js +1 -1
  355. package/dist/operatorAgent/evalGate.d.ts +22 -0
  356. package/dist/operatorAgent/evalGate.js +77 -0
  357. package/dist/operatorAgent/fakeHost.js +10 -2
  358. package/dist/operatorAgent/host.js +18 -2
  359. package/dist/operatorAgent/index.d.ts +1 -0
  360. package/dist/operatorAgent/index.js +1 -0
  361. package/dist/operatorAgent/internalAgents.d.ts +11 -0
  362. package/dist/operatorAgent/internalAgents.js +13 -0
  363. package/dist/operatorAgent/piModel.d.ts +5 -1
  364. package/dist/operatorAgent/piModel.js +32 -14
  365. package/dist/operatorAgent/profiles/agentAuthor.d.ts +3 -1
  366. package/dist/operatorAgent/profiles/agentAuthor.js +201 -32
  367. package/dist/operatorAgent/profiles/agentAuthorPlaybook.d.ts +1 -1
  368. package/dist/operatorAgent/profiles/agentAuthorPlaybook.js +48 -15
  369. package/dist/operatorAgent/profiles/authorReadable.d.ts +2 -0
  370. package/dist/operatorAgent/profiles/authorReadable.js +26 -0
  371. package/dist/operatorAgent/profiles/guideConfirm.d.ts +21 -0
  372. package/dist/operatorAgent/profiles/guideConfirm.js +100 -0
  373. package/dist/operatorAgent/profiles/guideTools.d.ts +7 -0
  374. package/dist/operatorAgent/profiles/guideTools.js +123 -0
  375. package/dist/operatorAgent/profiles/stageflowGuide.d.ts +7 -0
  376. package/dist/operatorAgent/profiles/stageflowGuide.js +132 -0
  377. package/dist/operatorAgent/profiles/workshopAuthor.js +23 -0
  378. package/dist/operatorAgent/profiles/workshopAuthorPlaybook.d.ts +1 -1
  379. package/dist/operatorAgent/profiles/workshopAuthorPlaybook.js +9 -1
  380. package/dist/operatorAgent/profiles/workshopAuthorTools.d.ts +2 -0
  381. package/dist/operatorAgent/profiles/workshopAuthorTools.js +197 -9
  382. package/dist/operatorAgent/types.d.ts +23 -0
  383. package/dist/package-meta.d.ts +1 -1
  384. package/dist/package-meta.js +1 -1
  385. package/dist/runstore/port.d.ts +43 -0
  386. package/dist/runstore/retention.d.ts +2 -1
  387. package/dist/runstore/retention.js +3 -7
  388. package/dist/runstore/runStatusClock.d.ts +17 -0
  389. package/dist/runstore/runStatusClock.js +19 -0
  390. package/dist/runstore/sqlite/SqliteRunStore.d.ts +29 -0
  391. package/dist/runstore/sqlite/SqliteRunStore.js +144 -50
  392. package/dist/runstore/sqlite/evalStore.d.ts +20 -0
  393. package/dist/runstore/sqlite/evalStore.js +541 -0
  394. package/dist/runstore/sqlite/migrations/015-evals.d.ts +12 -0
  395. package/dist/runstore/sqlite/migrations/015-evals.js +157 -0
  396. package/dist/runstore/sqlite/migrations/016-eval-subject-ref.d.ts +12 -0
  397. package/dist/runstore/sqlite/migrations/016-eval-subject-ref.js +20 -0
  398. package/dist/runstore/sqlite/migrations/017-eval-result-suggestions.d.ts +11 -0
  399. package/dist/runstore/sqlite/migrations/017-eval-result-suggestions.js +36 -0
  400. package/dist/runstore/sqlite/migrations/index.js +6 -0
  401. package/dist/runstore/sqlite/suggestionStore.d.ts +14 -0
  402. package/dist/runstore/sqlite/suggestionStore.js +132 -0
  403. package/dist/runstore/workspaceLayout.js +6 -1
  404. package/dist/runtime/artifactDiskInspect.d.ts +14 -0
  405. package/dist/runtime/artifactDiskInspect.js +52 -0
  406. package/dist/runtime/artifactPath.d.ts +24 -0
  407. package/dist/runtime/artifactPath.js +84 -0
  408. package/dist/runtime/completionCheckRunner.js +15 -43
  409. package/dist/runtime/githubPollSource.d.ts +22 -4
  410. package/dist/runtime/githubPollSource.js +93 -8
  411. package/dist/runtime/pipelineRunner.d.ts +2 -1
  412. package/dist/runtime/pipelineRunner.js +2 -0
  413. package/dist/runtime/priorArtifactGrants.d.ts +8 -0
  414. package/dist/runtime/priorArtifactGrants.js +105 -0
  415. package/dist/runtime/runActionEligibility.d.ts +46 -0
  416. package/dist/runtime/runActionEligibility.js +123 -0
  417. package/dist/runtime/runManager.d.ts +6 -2
  418. package/dist/runtime/runManager.js +60 -16
  419. package/dist/runtime/runRetentionSweep.js +2 -2
  420. package/dist/runtime/runRetryCoordinator.d.ts +2 -14
  421. package/dist/runtime/runRetryCoordinator.js +3 -67
  422. package/dist/runtime/sandboxContainer.d.ts +7 -0
  423. package/dist/runtime/sandboxContainer.js +48 -6
  424. package/dist/runtime/sandboxDesk.d.ts +2 -1
  425. package/dist/runtime/sandboxDesk.js +11 -12
  426. package/dist/runtime/stageEnvironment.js +1 -0
  427. package/dist/runtime/stageRoots.d.ts +12 -0
  428. package/dist/runtime/stageSandbox.d.ts +2 -1
  429. package/dist/runtime/stageSandbox.js +18 -2
  430. package/dist/runtime/stageWorker.js +20 -0
  431. package/dist/server/agentAuthorRoutes.js +59 -1
  432. package/dist/server/bootstrap.d.ts +13 -0
  433. package/dist/server/bootstrap.js +69 -0
  434. package/dist/server/controlToken.js +3 -0
  435. package/dist/server/evalInternalRoutes.d.ts +14 -0
  436. package/dist/server/evalInternalRoutes.js +87 -0
  437. package/dist/server/evalRouteContext.d.ts +46 -0
  438. package/dist/server/evalRouteContext.js +43 -0
  439. package/dist/server/evalRoutes.d.ts +5 -0
  440. package/dist/server/evalRoutes.js +1456 -0
  441. package/dist/server/evalTriageRoutes.d.ts +2 -0
  442. package/dist/server/evalTriageRoutes.js +95 -0
  443. package/dist/server/guideRoutes.d.ts +5 -0
  444. package/dist/server/guideRoutes.js +166 -0
  445. package/dist/server/http.d.ts +15 -0
  446. package/dist/server/http.js +67 -3
  447. package/dist/server/internalAgentRoutes.d.ts +6 -0
  448. package/dist/server/internalAgentRoutes.js +12 -0
  449. package/dist/server/mcpHost.js +5 -0
  450. package/dist/toolkit/meta.d.ts +1 -1
  451. package/dist/toolkit/meta.js +53 -0
  452. package/dist/toolkit/profiles.d.ts +5 -0
  453. package/dist/toolkit/profiles.js +13 -1
  454. package/dist/tools/askOperator.js +2 -1
  455. package/dist/tools/emitStageEnvelope.d.ts +17 -16
  456. package/dist/tools/emitStageEnvelope.js +46 -32
  457. package/dist/tools/stageToolNames.d.ts +4 -0
  458. package/dist/tools/stageToolNames.js +4 -0
  459. package/dist/tools/workingState.d.ts +40 -0
  460. package/dist/tools/workingState.js +108 -0
  461. package/dist/tools/writeStageArtifact.d.ts +0 -9
  462. package/dist/tools/writeStageArtifact.js +2 -1
  463. package/dist/types/stageflowManifest.d.ts +6 -0
  464. package/dist/ui/assets/{MarkdownText-D7tYaIFO.js → MarkdownText-S5C_vemc.js} +2 -2
  465. package/dist/ui/assets/adapters-C0l4ruiR.js +17 -0
  466. package/dist/ui/assets/chat-CjnsmvqR.js +2 -0
  467. package/dist/ui/assets/chat-DFDd4UjS.css +2 -0
  468. package/dist/ui/assets/{main-BFo79krC.css → main-Del1GeLf.css} +1 -1
  469. package/dist/ui/assets/main-_yXVqcW9.js +277 -0
  470. package/dist/ui/chat.html +3 -4
  471. package/dist/ui/index.html +3 -4
  472. package/dist/workshop/chatTurn.js +1 -1
  473. package/dist/workshop/workshopPin.d.ts +3 -3
  474. package/dist/workshop/workshopPin.js +16 -15
  475. package/examples/README.md +2 -0
  476. package/examples/compaction-stress/README.md +30 -0
  477. package/examples/compaction-stress/check-run.mjs +53 -0
  478. package/examples/compaction-stress/collect-evidence.yaml +60 -0
  479. package/examples/compaction-stress/compaction-stress.pipeline.yaml +141 -0
  480. package/examples/compaction-stress/compaction-stress.task.yaml +15 -0
  481. package/examples/compaction-stress/generate-evidence.mjs +110 -0
  482. package/examples/compaction-stress/root-cause.yaml +26 -0
  483. package/examples/compaction-stress/stageflow.yaml +9 -0
  484. package/examples/compaction-stress/write-postmortem.yaml +40 -0
  485. package/examples/document-policy-review/README.md +35 -0
  486. package/examples/document-policy-review/agents/compliance.agent.yaml +42 -0
  487. package/examples/document-policy-review/documents/acme-vendor-sow.md +15 -0
  488. package/examples/document-policy-review/documents/support-runbook.md +13 -0
  489. package/examples/document-policy-review/policies/acceptable-use.md +13 -0
  490. package/examples/document-policy-review/policies/data-handling.md +17 -0
  491. package/examples/document-policy-review/policies/vendor-security.md +17 -0
  492. package/examples/evals/README.md +141 -0
  493. package/examples/evals/critique-sample.dataset.jsonl +8 -0
  494. package/examples/evals/critique-sample.eval.yaml +34 -0
  495. package/examples/evals/critique-sample.task.yaml +4 -0
  496. package/examples/evals/eval-sample.pipeline.yaml +35 -0
  497. package/examples/evals/guide-behavior.dataset.jsonl +15 -0
  498. package/examples/evals/guide-behavior.eval.yaml +35 -0
  499. package/examples/evals/guide-depth.dataset.jsonl +35 -0
  500. package/examples/evals/guide-depth.eval.yaml +169 -0
  501. package/examples/evals/support-sample.agent.yaml +20 -0
  502. package/examples/evals/support-sample.dataset.jsonl +6 -0
  503. package/examples/evals/support-sample.eval.yaml +38 -0
  504. package/examples/memory/evals/guide-behavior.dataset.jsonl +15 -0
  505. package/examples/memory/evals/guide-behavior.eval.yaml +35 -0
  506. package/examples/memory/evals/guide-depth.dataset.jsonl +35 -0
  507. package/examples/memory/evals/guide-depth.eval.yaml +169 -0
  508. package/examples/stageflow.yaml +6 -0
  509. package/package.json +1 -1
  510. package/skills/stageflow/SKILL.md +5 -2
  511. package/skills/stageflow/references/control-surface.md +4 -2
  512. package/skills/stageflow/references/evals.md +68 -0
  513. package/skills/stageflow-author/SKILL.md +4 -0
  514. package/skills/stageflow-run/SKILL.md +4 -0
  515. package/dist/ui/assets/AssistantRuntimeProvider-CsiPFhCT.js +0 -9
  516. package/dist/ui/assets/ReadonlyStore-BfXqHykm.js +0 -6
  517. package/dist/ui/assets/chat-BbLukq9W.js +0 -5
  518. package/dist/ui/assets/chat-zIZU_bP1.css +0 -2
  519. package/dist/ui/assets/main-CijYMeM0.js +0 -259
@@ -1,14 +1,3 @@
1
- /**
2
- * Custom Pi tool the stage agent must call once when finished.
3
- *
4
- * Parameter schemas use `typebox` (Pi's `defineTool` TSchema), not
5
- * `@sinclair/typebox`. An accepted emit returns `terminate: true` so Pi
6
- * ends the turn instead of asking the model to continue.
7
- *
8
- * Do not abort the session from inside `execute`: providers that bridge tools
9
- * (e.g. MCP) may still be waiting for this result, and abort-while-running
10
- * deadlocks waitForIdle so later pipeline stages never start.
11
- */
12
1
  import { Type } from "typebox";
13
2
  import type { TSchema } from "typebox/type";
14
3
  import { type PreEmitCheckOptions } from "../envelope/preEmitChecks.js";
@@ -23,20 +12,32 @@ export declare function createEmitStageEnvelopeTool(capture: EmitCapture, payloa
23
12
  name: string;
24
13
  label: string;
25
14
  description: string;
26
- parameters: Type.TObject<{
27
- status: Type.TUnion<[Type.TLiteral<"success">, Type.TLiteral<"failure">]>;
15
+ parameters: Type.TUnion<[Type.TObject<{
28
16
  summary: Type.TString;
29
17
  artifacts: Type.TArray<Type.TString>;
30
- payload: Type.TOptional<TSchema>;
18
+ checklist_attestations: Type.TOptional<Type.TArray<Type.TObject<{
19
+ check_id: Type.TString;
20
+ items: Type.TArray<Type.TString>;
21
+ }>>>;
22
+ stage_id: Type.TOptional<Type.TString>;
23
+ notes: Type.TOptional<Type.TString>;
24
+ status: Type.TLiteral<"success">;
25
+ payload: TSchema;
31
26
  fork_choice: Type.TArray<Type.TString>;
32
- feedback_loop?: Type.TOptional<TSchema> | undefined;
27
+ feedback_loop?: TSchema | undefined;
28
+ }>, Type.TObject<{
29
+ summary: Type.TString;
30
+ artifacts: Type.TArray<Type.TString>;
33
31
  checklist_attestations: Type.TOptional<Type.TArray<Type.TObject<{
34
32
  check_id: Type.TString;
35
33
  items: Type.TArray<Type.TString>;
36
34
  }>>>;
37
35
  stage_id: Type.TOptional<Type.TString>;
38
36
  notes: Type.TOptional<Type.TString>;
39
- }>;
37
+ status: Type.TLiteral<"failure">;
38
+ payload: Type.TOptional<TSchema>;
39
+ fork_choice: Type.TOptional<Type.TArray<Type.TString>>;
40
+ }>]>;
40
41
  prepareArguments: (args: unknown) => never;
41
42
  execute: (_toolCallId: string, params: unknown) => Promise<{
42
43
  content: {
@@ -9,11 +9,13 @@
9
9
  * (e.g. MCP) may still be waiting for this result, and abort-while-running
10
10
  * deadlocks waitForIdle so later pipeline stages never start.
11
11
  */
12
+ import { EMIT_STAGE_ENVELOPE_TOOL_NAME } from "./stageToolNames.js";
12
13
  import { Type } from "typebox";
13
14
  import { assertRequiredEnvelope, isAdvancingEnvelope, } from "../envelope/check.js";
14
15
  import { assertFeedbackLoopAction } from "../envelope/feedbackLoop.js";
15
16
  import { normalizeForkChoice } from "../envelope/forkChoice.js";
16
17
  import { assertEnvelopePayload, compilePayloadSchema, } from "../envelope/payloadSchema.js";
18
+ import { assertEmittedArtifactsOnDisk } from "../envelope/assertEmittedArtifacts.js";
17
19
  import { assertPreEmitChecks, } from "../envelope/preEmitChecks.js";
18
20
  import { prepareEmitStageEnvelopeArguments } from "./prepareToolArguments.js";
19
21
  function stringLiteralsSchema(values) {
@@ -22,16 +24,6 @@ function stringLiteralsSchema(values) {
22
24
  }
23
25
  return Type.Union(values.map((value) => Type.Literal(value)));
24
26
  }
25
- function stageEnvelopeSchema(payloadSchema) {
26
- return Type.Object({
27
- status: Type.Union([Type.Literal("success"), Type.Literal("failure")]),
28
- summary: Type.String({ minLength: 1 }),
29
- artifacts: Type.Array(Type.String()),
30
- payload: Type.Optional(payloadSchema !== undefined
31
- ? payloadSchema
32
- : Type.Record(Type.String(), Type.Unknown())),
33
- });
34
- }
35
27
  function feedbackLoopActionSchema(context) {
36
28
  return Type.Union([
37
29
  Type.Object({ action: Type.Literal("continue") }, { additionalProperties: false }),
@@ -41,6 +33,44 @@ function feedbackLoopActionSchema(context) {
41
33
  }, { additionalProperties: false }),
42
34
  ]);
43
35
  }
36
+ const closed = { additionalProperties: false };
37
+ function checklistAttestationsSchema() {
38
+ return Type.Optional(Type.Array(Type.Object({
39
+ check_id: Type.String({ minLength: 1 }),
40
+ items: Type.Array(Type.String()),
41
+ }, closed)));
42
+ }
43
+ function emitStageEnvelopeParameters(input) {
44
+ const freePayload = Type.Record(Type.String(), Type.Unknown());
45
+ const payloadValue = input.compiledPayload ?? freePayload;
46
+ const forkOptional = Type.Optional(Type.Array(Type.String()));
47
+ const forkOnSuccess = input.forkEmitContext !== undefined && input.feedbackLoopEmitContext === undefined
48
+ ? Type.Array(Type.String())
49
+ : forkOptional;
50
+ const shared = {
51
+ summary: Type.String({ minLength: 1 }),
52
+ artifacts: Type.Array(Type.String()),
53
+ checklist_attestations: checklistAttestationsSchema(),
54
+ stage_id: Type.Optional(Type.String()),
55
+ notes: Type.Optional(Type.String()),
56
+ };
57
+ const success = Type.Object({
58
+ status: Type.Literal("success"),
59
+ ...shared,
60
+ payload: input.compiledPayload !== undefined ? input.compiledPayload : Type.Optional(freePayload),
61
+ fork_choice: forkOnSuccess,
62
+ ...(input.feedbackLoopEmitContext !== undefined
63
+ ? { feedback_loop: feedbackLoopActionSchema(input.feedbackLoopEmitContext) }
64
+ : {}),
65
+ }, closed);
66
+ const failure = Type.Object({
67
+ status: Type.Literal("failure"),
68
+ ...shared,
69
+ payload: Type.Optional(payloadValue),
70
+ fork_choice: forkOptional,
71
+ }, closed);
72
+ return Type.Union([success, failure]);
73
+ }
44
74
  function toolResult(text, details, options) {
45
75
  return {
46
76
  content: [{ type: "text", text }],
@@ -54,30 +84,13 @@ export function createEmitStageEnvelopeTool(capture, payloadSchema, forkEmitCont
54
84
  ? compilePayloadSchema(payloadSchema)
55
85
  : undefined;
56
86
  return {
57
- name: "emit_stage_envelope",
87
+ name: EMIT_STAGE_ENVELOPE_TOOL_NAME,
58
88
  label: "Emit stage envelope",
59
89
  description: "Emit the shared stage handoff envelope. Call exactly once when the stage is complete. The pipeline cannot advance until this tool succeeds.",
60
- parameters: Type.Object({
61
- status: Type.Union([Type.Literal("success"), Type.Literal("failure")]),
62
- summary: Type.String({ minLength: 1 }),
63
- artifacts: Type.Array(Type.String()),
64
- payload: Type.Optional(compiledPayload !== undefined
65
- ? compiledPayload
66
- : Type.Record(Type.String(), Type.Unknown())),
67
- fork_choice: forkEmitContext !== undefined && feedbackLoopEmitContext === undefined
68
- ? Type.Array(Type.String())
69
- : Type.Optional(Type.Array(Type.String())),
70
- ...(feedbackLoopEmitContext !== undefined
71
- ? {
72
- feedback_loop: Type.Optional(feedbackLoopActionSchema(feedbackLoopEmitContext)),
73
- }
74
- : {}),
75
- checklist_attestations: Type.Optional(Type.Array(Type.Object({
76
- check_id: Type.String({ minLength: 1 }),
77
- items: Type.Array(Type.String()),
78
- }))),
79
- stage_id: Type.Optional(Type.String()),
80
- notes: Type.Optional(Type.String()),
90
+ parameters: emitStageEnvelopeParameters({
91
+ compiledPayload,
92
+ forkEmitContext,
93
+ feedbackLoopEmitContext,
81
94
  }),
82
95
  prepareArguments: prepareEmitStageEnvelopeArguments,
83
96
  execute: async (_toolCallId, params) => {
@@ -96,6 +109,7 @@ export function createEmitStageEnvelopeTool(capture, payloadSchema, forkEmitCont
96
109
  assertEnvelopePayload(envelope, payloadSchema);
97
110
  if (envelope.status !== "failure") {
98
111
  await assertPreEmitChecks(envelope, preEmitCheckOptions);
112
+ await assertEmittedArtifactsOnDisk(envelope.artifacts, preEmitCheckOptions?.artifactPresence);
99
113
  }
100
114
  capture.envelope = envelope;
101
115
  const advancing = isAdvancingEnvelope(envelope);
@@ -0,0 +1,4 @@
1
+ /** Names of the tools every stage session shares. The tools register under these names; consumers read them from here. */
2
+ export declare const EMIT_STAGE_ENVELOPE_TOOL_NAME = "emit_stage_envelope";
3
+ export declare const ASK_OPERATOR_TOOL_NAME = "ask_operator";
4
+ export declare const WRITE_STAGE_ARTIFACT_TOOL_NAME = "write_stage_artifact";
@@ -0,0 +1,4 @@
1
+ /** Names of the tools every stage session shares. The tools register under these names; consumers read them from here. */
2
+ export const EMIT_STAGE_ENVELOPE_TOOL_NAME = "emit_stage_envelope";
3
+ export const ASK_OPERATOR_TOOL_NAME = "ask_operator";
4
+ export const WRITE_STAGE_ARTIFACT_TOOL_NAME = "write_stage_artifact";
@@ -0,0 +1,40 @@
1
+ import type { ExtensionFactory } from "@earendil-works/pi-coding-agent";
2
+ import { Type } from "typebox";
3
+ import { WorkingStateStore, type WorkingStateEvent } from "../compaction/workingState.js";
4
+ export type WorkingStateToolOptions = {
5
+ store: WorkingStateStore;
6
+ persist: (event: WorkingStateEvent) => void;
7
+ now?: () => string;
8
+ };
9
+ type ToolResult = {
10
+ content: {
11
+ type: "text";
12
+ text: string;
13
+ }[];
14
+ details: unknown;
15
+ isError?: boolean;
16
+ };
17
+ export declare function createWorkingStateTool(options: WorkingStateToolOptions): {
18
+ name: string;
19
+ label: string;
20
+ description: string;
21
+ parameters: Type.TUnion<[Type.TObject<{
22
+ operation: Type.TLiteral<"set">;
23
+ key: Type.TString;
24
+ kind: Type.TUnion<[Type.TLiteral<Type.TLiteralValue>, Type.TLiteral<Type.TLiteralValue>, ...Type.TLiteral<Type.TLiteralValue>[]]>;
25
+ value: Type.TString;
26
+ }>, Type.TObject<{
27
+ operation: Type.TLiteral<"delete">;
28
+ key: Type.TString;
29
+ }>, Type.TObject<{
30
+ operation: Type.TLiteral<"list">;
31
+ }>]>;
32
+ execute(_toolCallId: string, input: unknown): Promise<ToolResult>;
33
+ };
34
+ /**
35
+ * Inline Pi extension: registers the tool, persists each change as a custom
36
+ * session entry and rebuilds the store from the session file on first use,
37
+ * so state survives process restarts and resume.
38
+ */
39
+ export declare function createWorkingStateExtension(): ExtensionFactory;
40
+ export {};
@@ -0,0 +1,108 @@
1
+ import { Type } from "typebox";
2
+ import { WORKING_STATE_CUSTOM_TYPE, WORKING_STATE_KINDS, WORKING_STATE_MAX_KEY, WORKING_STATE_MAX_VALUE, WorkingStateStore, workingStateEventsFromEntries, } from "../compaction/workingState.js";
3
+ import { WORKING_STATE_TOOL_NAME } from "../compaction/types.js";
4
+ const closed = { additionalProperties: false };
5
+ function workingStateKindSchema() {
6
+ return Type.Union(WORKING_STATE_KINDS.map((k) => Type.Literal(k)));
7
+ }
8
+ function workingStateParameters() {
9
+ return Type.Union([
10
+ Type.Object({
11
+ operation: Type.Literal("set"),
12
+ key: Type.String({ maxLength: WORKING_STATE_MAX_KEY }),
13
+ kind: workingStateKindSchema(),
14
+ value: Type.String({ maxLength: WORKING_STATE_MAX_VALUE }),
15
+ }, closed),
16
+ Type.Object({
17
+ operation: Type.Literal("delete"),
18
+ key: Type.String({ maxLength: WORKING_STATE_MAX_KEY }),
19
+ }, closed),
20
+ Type.Object({ operation: Type.Literal("list") }, closed),
21
+ ]);
22
+ }
23
+ function result(text, isError = false) {
24
+ return {
25
+ content: [{ type: "text", text }],
26
+ details: { isError },
27
+ ...(isError ? { isError: true } : {}),
28
+ };
29
+ }
30
+ export function createWorkingStateTool(options) {
31
+ const { store, persist } = options;
32
+ const now = options.now ?? (() => new Date().toISOString());
33
+ return {
34
+ name: WORKING_STATE_TOOL_NAME,
35
+ label: "Working state",
36
+ description: "Keep your own structured working state. Older messages and tool results are trimmed automatically, but this state is kept and shown to you again after every trim. Use `set` as soon as you know something you will need later: exact values and identifiers (fact), choices and reasons (decision), what is finished (progress), what remains (todo), what is stuck (blocker). Keep entries short (one or two lines). Reuse a key to update an entry instead of adding a duplicate; use `delete` when an entry no longer matters; `list` shows everything. Never store secrets.",
37
+ parameters: workingStateParameters(),
38
+ async execute(_toolCallId, input) {
39
+ const params = (input ?? {});
40
+ if (params.operation === "list") {
41
+ const rendered = store.render();
42
+ return result(rendered === "" ? "Working state is empty." : rendered);
43
+ }
44
+ if (params.operation === "delete") {
45
+ if (typeof params.key !== "string" || params.key.trim() === "") {
46
+ return result("delete requires key", true);
47
+ }
48
+ if (!store.delete(params.key)) {
49
+ return result(`No entry "${params.key}".`, true);
50
+ }
51
+ persist({ op: "delete", key: params.key.trim(), at: now() });
52
+ return result(`Deleted ${params.key.trim()}.`);
53
+ }
54
+ if (params.operation === "set") {
55
+ const at = now();
56
+ const outcome = store.set({
57
+ key: params.key ?? "",
58
+ kind: params.kind,
59
+ value: params.value ?? "",
60
+ updatedAt: at,
61
+ });
62
+ if (!outcome.ok)
63
+ return result(outcome.error, true);
64
+ persist({
65
+ op: "set",
66
+ key: outcome.entry.key,
67
+ kind: outcome.entry.kind,
68
+ value: outcome.entry.value,
69
+ at,
70
+ });
71
+ const dropped = outcome.dropped.length > 0
72
+ ? ` State was full; dropped oldest progress: ${outcome.dropped.join(", ")}.`
73
+ : "";
74
+ const redacted = outcome.redacted
75
+ ? " Part of it looked like a secret and was redacted; reword the entry if that removed a fact you need."
76
+ : "";
77
+ return result(`${outcome.replaced ? "Updated" : "Saved"} ${outcome.entry.key} (${store.size} entries).${dropped}${redacted}`);
78
+ }
79
+ return result("operation must be set, delete or list", true);
80
+ },
81
+ };
82
+ }
83
+ /**
84
+ * Inline Pi extension: registers the tool, persists each change as a custom
85
+ * session entry and rebuilds the store from the session file on first use,
86
+ * so state survives process restarts and resume.
87
+ */
88
+ export function createWorkingStateExtension() {
89
+ return (pi) => {
90
+ const store = new WorkingStateStore();
91
+ let restored = false;
92
+ const tool = createWorkingStateTool({
93
+ store,
94
+ persist: (event) => pi.appendEntry(WORKING_STATE_CUSTOM_TYPE, event),
95
+ });
96
+ pi.registerTool({
97
+ ...tool,
98
+ constrainedSampling: { type: "json_schema", strict: "prefer" },
99
+ async execute(toolCallId, params, _signal, _onUpdate, ctx) {
100
+ if (!restored) {
101
+ restored = true;
102
+ store.load(workingStateEventsFromEntries(ctx.sessionManager.getEntries()));
103
+ }
104
+ return tool.execute(toolCallId, params);
105
+ },
106
+ });
107
+ };
108
+ }
@@ -1,12 +1,3 @@
1
- /**
2
- * Custom Pi tool for writing factory stage artifact files under the run
3
- * workspace. Paths are relative to
4
- * `stages/<stageId>/attempts/<attempt>/artifacts/` and must resolve inside
5
- * that directory.
6
- *
7
- * Parameter schemas use `typebox` (Pi's `defineTool` TSchema), not
8
- * `@sinclair/typebox`. Unlike emit, this tool does not terminate the turn.
9
- */
10
1
  import { Type } from "typebox";
11
2
  export type WriteStageArtifactOptions = {
12
3
  runWorkspaceDir: string;
@@ -7,6 +7,7 @@
7
7
  * Parameter schemas use `typebox` (Pi's `defineTool` TSchema), not
8
8
  * `@sinclair/typebox`. Unlike emit, this tool does not terminate the turn.
9
9
  */
10
+ import { WRITE_STAGE_ARTIFACT_TOOL_NAME } from "./stageToolNames.js";
10
11
  import { Type } from "typebox";
11
12
  import { resolveArtifactTarget } from "../runstore/workspaceLayout.js";
12
13
  import { writeContainedArtifact } from "../runstore/writeContainedArtifact.js";
@@ -20,7 +21,7 @@ function toolResult(text, details, options) {
20
21
  export function createWriteStageArtifactTool(options) {
21
22
  const { runWorkspaceDir, stageId, attempt } = options;
22
23
  return {
23
- name: "write_stage_artifact",
24
+ name: WRITE_STAGE_ARTIFACT_TOOL_NAME,
24
25
  label: "Write stage artifact",
25
26
  description: "Write a factory artifact file under this stage attempt's artifacts directory in the run workspace. Pass a path relative to stages/<stageId>/attempts/<attempt>/artifacts/ and the file content. Returns the run-relative path to include in emit_stage_envelope artifacts.",
26
27
  parameters: Type.Object({
@@ -3,10 +3,14 @@ export type StageflowManifestCatalog = {
3
3
  pipelines: string[];
4
4
  tasks: string[];
5
5
  triggers?: string[];
6
+ evals?: string[];
7
+ datasets?: string[];
6
8
  patterns?: {
7
9
  pipeline?: string;
8
10
  task?: string;
9
11
  trigger?: string;
12
+ eval?: string;
13
+ dataset?: string | string[];
10
14
  };
11
15
  exclude?: string[];
12
16
  };
@@ -26,5 +30,7 @@ export type LoadedManifest = {
26
30
  pipeline: string;
27
31
  task: string;
28
32
  trigger: string;
33
+ eval: string;
34
+ dataset: string[];
29
35
  };
30
36
  };