stageflow 0.25.0 → 0.30.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 (681) hide show
  1. package/README.md +14 -3
  2. package/builtin-skills/browser/SKILL.md +42 -0
  3. package/dist/a2a/contracts.d.ts +1 -0
  4. package/dist/a2a/contracts.js +1 -0
  5. package/dist/a2a/registry.d.ts +2 -0
  6. package/dist/a2a/registry.js +20 -1
  7. package/dist/a2a/server.d.ts +7 -0
  8. package/dist/a2a/server.js +5 -2
  9. package/dist/a2a/service.d.ts +1 -1
  10. package/dist/a2a/service.js +57 -8
  11. package/dist/a2a/store.d.ts +8 -5
  12. package/dist/a2a/store.js +24 -67
  13. package/dist/agent/activity.d.ts +3 -0
  14. package/dist/agent/bootProviderConfig.d.ts +21 -0
  15. package/dist/agent/bootProviderConfig.js +74 -0
  16. package/dist/agent/claudeAdapter.js +2 -2
  17. package/dist/agent/cursorProvider.d.ts +2 -0
  18. package/dist/agent/cursorProvider.js +30 -5
  19. package/dist/agent/fakeAgent.d.ts +1 -0
  20. package/dist/agent/fakeAgent.js +13 -0
  21. package/dist/agent/piAdapter.d.ts +11 -24
  22. package/dist/agent/piAdapter.js +107 -50
  23. package/dist/agent/piIsolatedMcp.d.ts +2 -0
  24. package/dist/agent/piIsolatedMcp.js +10 -2
  25. package/dist/agent/piSessionFactory.d.ts +38 -0
  26. package/dist/agent/piSessionFactory.js +60 -0
  27. package/dist/agent/port.d.ts +8 -0
  28. package/dist/agent/streamLogRedact.d.ts +7 -1
  29. package/dist/agent/streamLogRedact.js +26 -11
  30. package/dist/browser/anchor.d.ts +27 -0
  31. package/dist/browser/anchor.js +127 -0
  32. package/dist/browser/auditSink.d.ts +38 -0
  33. package/dist/browser/auditSink.js +34 -0
  34. package/dist/browser/browserHost.d.ts +86 -0
  35. package/dist/browser/browserHost.js +7 -0
  36. package/dist/browser/browserSweep.d.ts +14 -0
  37. package/dist/browser/browserSweep.js +54 -0
  38. package/dist/browser/browserTeardown.d.ts +56 -0
  39. package/dist/browser/browserTeardown.js +235 -0
  40. package/dist/browser/fakeRemoteBrowserHost.d.ts +2 -0
  41. package/dist/browser/fakeRemoteBrowserHost.js +34 -0
  42. package/dist/browser/gateHandoff.d.ts +25 -0
  43. package/dist/browser/gateHandoff.js +83 -0
  44. package/dist/browser/humanLogin.d.ts +18 -0
  45. package/dist/browser/humanLogin.js +34 -0
  46. package/dist/browser/keyProvider.d.ts +10 -0
  47. package/dist/browser/keyProvider.js +39 -0
  48. package/dist/browser/localBrowserHost.d.ts +10 -0
  49. package/dist/browser/localBrowserHost.js +152 -0
  50. package/dist/browser/localProfileLock.d.ts +2 -0
  51. package/dist/browser/localProfileLock.js +218 -0
  52. package/dist/browser/localProfileStore.d.ts +5 -0
  53. package/dist/browser/localProfileStore.js +91 -0
  54. package/dist/browser/loginCheck.d.ts +53 -0
  55. package/dist/browser/loginCheck.js +147 -0
  56. package/dist/browser/memoryProfileLock.d.ts +2 -0
  57. package/dist/browser/memoryProfileLock.js +53 -0
  58. package/dist/browser/memoryProfileStore.d.ts +2 -0
  59. package/dist/browser/memoryProfileStore.js +31 -0
  60. package/dist/browser/navigationAudit.d.ts +16 -0
  61. package/dist/browser/navigationAudit.js +53 -0
  62. package/dist/browser/persistedEnv.d.ts +3 -0
  63. package/dist/browser/persistedEnv.js +15 -0
  64. package/dist/browser/profileLock.d.ts +40 -0
  65. package/dist/browser/profileLock.js +10 -0
  66. package/dist/browser/profileStore.d.ts +23 -0
  67. package/dist/browser/profileStore.js +39 -0
  68. package/dist/browser/runLiveness.d.ts +13 -0
  69. package/dist/browser/runLiveness.js +39 -0
  70. package/dist/browser/sitePolicy.d.ts +10 -0
  71. package/dist/browser/sitePolicy.js +61 -0
  72. package/dist/browser/stageBrowserEnv.d.ts +22 -0
  73. package/dist/browser/stageBrowserEnv.js +147 -0
  74. package/dist/browser/stageProfileLock.d.ts +17 -0
  75. package/dist/browser/stageProfileLock.js +39 -0
  76. package/dist/cli/artifactCommand.js +9 -16
  77. package/dist/cli/backupCommand.d.ts +9 -0
  78. package/dist/cli/backupCommand.js +111 -0
  79. package/dist/cli/browserCommand.d.ts +44 -0
  80. package/dist/cli/browserCommand.js +472 -0
  81. package/dist/cli/debugRunCommand.d.ts +10 -0
  82. package/dist/cli/debugRunCommand.js +109 -0
  83. package/dist/cli/doctorCommand.d.ts +32 -0
  84. package/dist/cli/doctorCommand.js +453 -0
  85. package/dist/cli/envelopeCommand.js +9 -2
  86. package/dist/cli/exportAllCommand.d.ts +55 -0
  87. package/dist/cli/exportAllCommand.js +218 -0
  88. package/dist/cli/exportRunCommand.js +23 -21
  89. package/dist/cli/hostClient.d.ts +41 -3
  90. package/dist/cli/hostClient.js +129 -14
  91. package/dist/cli/initCommand.d.ts +1 -0
  92. package/dist/cli/initCommand.js +23 -7
  93. package/dist/cli/initTemplates.d.ts +5 -2
  94. package/dist/cli/initTemplates.js +32 -2
  95. package/dist/cli/resolveSafeOutPath.d.ts +2 -0
  96. package/dist/cli/resolveSafeOutPath.js +40 -0
  97. package/dist/cli/restoreCommand.d.ts +10 -0
  98. package/dist/cli/restoreCommand.js +90 -0
  99. package/dist/cli/runCommand.d.ts +3 -2
  100. package/dist/cli/runCommand.js +93 -11
  101. package/dist/cli/runOutput.d.ts +4 -0
  102. package/dist/cli/runOutput.js +33 -7
  103. package/dist/cli/runStageCommand.d.ts +1 -0
  104. package/dist/cli/runStageCommand.js +44 -25
  105. package/dist/cli/runsCommand.d.ts +1 -1
  106. package/dist/cli/runsCommand.js +168 -10
  107. package/dist/cli/triggerCommand.d.ts +12 -0
  108. package/dist/cli/triggerCommand.js +183 -0
  109. package/dist/cli/validateCommand.d.ts +1 -1
  110. package/dist/cli/validateCommand.js +23 -6
  111. package/dist/cli.js +202 -32
  112. package/dist/config/browseCatalog.d.ts +1 -0
  113. package/dist/config/browseCatalog.js +5 -4
  114. package/dist/config/builtinSkills.d.ts +4 -0
  115. package/dist/config/builtinSkills.js +23 -0
  116. package/dist/config/catalogRelativePath.d.ts +63 -0
  117. package/dist/config/catalogRelativePath.js +126 -0
  118. package/dist/config/configOrigin.d.ts +27 -0
  119. package/dist/config/configOrigin.js +59 -0
  120. package/dist/config/createTrigger.d.ts +27 -0
  121. package/dist/config/createTrigger.js +232 -0
  122. package/dist/config/draftPackage.d.ts +117 -0
  123. package/dist/config/draftPackage.js +550 -0
  124. package/dist/config/ensureCatalogScanRoot.d.ts +16 -0
  125. package/dist/config/ensureCatalogScanRoot.js +73 -0
  126. package/dist/config/hostConfig.d.ts +57 -0
  127. package/dist/config/hostConfig.js +360 -0
  128. package/dist/config/listSkills.d.ts +26 -0
  129. package/dist/config/listSkills.js +206 -5
  130. package/dist/config/loadOutcome.d.ts +7 -1
  131. package/dist/config/loadPipeline.js +39 -2
  132. package/dist/config/loadStage.js +25 -0
  133. package/dist/config/loadStageflowManifest.js +25 -0
  134. package/dist/config/loadTask.d.ts +2 -0
  135. package/dist/config/loadTask.js +57 -18
  136. package/dist/config/loadTrigger.d.ts +9 -0
  137. package/dist/config/loadTrigger.js +120 -0
  138. package/dist/config/materializeStageModels.js +5 -1
  139. package/dist/config/mergePipelineIncludes.d.ts +3 -0
  140. package/dist/config/mergePipelineIncludes.js +19 -0
  141. package/dist/config/migrateYaml.js +6 -11
  142. package/dist/config/multiProjectCatalog.d.ts +32 -0
  143. package/dist/config/multiProjectCatalog.js +150 -0
  144. package/dist/config/normalizePipelineStageEntry.js +27 -1
  145. package/dist/config/parseCompletionContract.js +6 -0
  146. package/dist/config/pipelineStageKeys.js +3 -0
  147. package/dist/config/publishDraftPackage.d.ts +7 -0
  148. package/dist/config/publishDraftPackage.js +25 -0
  149. package/dist/config/resolveCatalogContext.js +1 -1
  150. package/dist/config/resolveCatalogRoots.d.ts +27 -0
  151. package/dist/config/resolveCatalogRoots.js +76 -0
  152. package/dist/config/resolveModel.d.ts +7 -1
  153. package/dist/config/resolveModel.js +11 -1
  154. package/dist/config/resolvePipelineDag.js +1 -1
  155. package/dist/config/resolveStageMcpServers.d.ts +9 -1
  156. package/dist/config/resolveStageMcpServers.js +36 -9
  157. package/dist/config/scanCatalogPaths.d.ts +1 -1
  158. package/dist/config/scanCatalogPaths.js +6 -2
  159. package/dist/config/secretFromEnvOrFile.d.ts +9 -0
  160. package/dist/config/secretFromEnvOrFile.js +34 -0
  161. package/dist/config/seededCatalog.d.ts +11 -0
  162. package/dist/config/seededCatalog.js +29 -0
  163. package/dist/config/stageBrowser.d.ts +12 -0
  164. package/dist/config/stageBrowser.js +118 -0
  165. package/dist/config/toolRequires.d.ts +24 -0
  166. package/dist/config/toolRequires.js +115 -0
  167. package/dist/config/triggerCatalog.d.ts +10 -0
  168. package/dist/config/triggerCatalog.js +37 -0
  169. package/dist/config/validateCatalog.d.ts +17 -3
  170. package/dist/config/validateCatalog.js +223 -3
  171. package/dist/config/validateCompletionContract.js +8 -0
  172. package/dist/diagnostics/checks.d.ts +39 -0
  173. package/dist/diagnostics/checks.js +135 -0
  174. package/dist/envelope/preEmitChecks.d.ts +1 -1
  175. package/dist/envelope/preEmitChecks.js +8 -0
  176. package/dist/errors/codes.d.ts +14 -0
  177. package/dist/errors/codes.js +59 -0
  178. package/dist/git/cache.d.ts +14 -0
  179. package/dist/git/cache.js +150 -0
  180. package/dist/git/credentials.d.ts +9 -0
  181. package/dist/git/credentials.js +88 -0
  182. package/dist/git/errors.d.ts +20 -0
  183. package/dist/git/errors.js +94 -0
  184. package/dist/git/exec.d.ts +16 -0
  185. package/dist/git/exec.js +135 -0
  186. package/dist/git/operations.d.ts +29 -0
  187. package/dist/git/operations.js +153 -0
  188. package/dist/git/version.d.ts +1 -0
  189. package/dist/git/version.js +10 -0
  190. package/dist/logging/audit.d.ts +16 -0
  191. package/dist/logging/audit.js +19 -0
  192. package/dist/logging/commonWords.d.ts +2 -0
  193. package/dist/logging/commonWords.js +13 -0
  194. package/dist/logging/logger.d.ts +49 -0
  195. package/dist/logging/logger.js +193 -0
  196. package/dist/logging/namedSecrets.d.ts +6 -0
  197. package/dist/logging/namedSecrets.js +58 -0
  198. package/dist/logging/redact.d.ts +17 -0
  199. package/dist/logging/redact.js +105 -0
  200. package/dist/mcp/catalogTools.js +492 -81
  201. package/dist/mcp/checkoutTools.d.ts +52 -0
  202. package/dist/mcp/checkoutTools.js +332 -0
  203. package/dist/mcp/controlTools.js +182 -6
  204. package/dist/mcp/deps.d.ts +3 -0
  205. package/dist/mcp/getStartedTool.d.ts +3 -0
  206. package/dist/mcp/getStartedTool.js +62 -0
  207. package/dist/mcp/readArtifact.d.ts +11 -0
  208. package/dist/mcp/readArtifact.js +46 -30
  209. package/dist/mcp/server.js +2 -0
  210. package/dist/mcp/tools.js +6 -0
  211. package/dist/mcp/triggerTools.d.ts +3 -0
  212. package/dist/mcp/triggerTools.js +176 -0
  213. package/dist/net/proxy.d.ts +14 -0
  214. package/dist/net/proxy.js +78 -0
  215. package/dist/operatorAgent/docsRetrieval.d.ts +40 -0
  216. package/dist/operatorAgent/docsRetrieval.js +269 -0
  217. package/dist/operatorAgent/draftContext.d.ts +16 -0
  218. package/dist/operatorAgent/draftContext.js +68 -0
  219. package/dist/operatorAgent/fakeHost.d.ts +39 -0
  220. package/dist/operatorAgent/fakeHost.js +92 -0
  221. package/dist/operatorAgent/host.d.ts +40 -0
  222. package/dist/operatorAgent/host.js +179 -0
  223. package/dist/operatorAgent/index.d.ts +9 -0
  224. package/dist/operatorAgent/index.js +8 -0
  225. package/dist/operatorAgent/piModel.d.ts +80 -0
  226. package/dist/operatorAgent/piModel.js +528 -0
  227. package/dist/operatorAgent/profiles/workshopAuthor.d.ts +23 -0
  228. package/dist/operatorAgent/profiles/workshopAuthor.js +338 -0
  229. package/dist/operatorAgent/profiles/workshopAuthorPlaybook.d.ts +6 -0
  230. package/dist/operatorAgent/profiles/workshopAuthorPlaybook.js +103 -0
  231. package/dist/operatorAgent/profiles/workshopAuthorTools.d.ts +57 -0
  232. package/dist/operatorAgent/profiles/workshopAuthorTools.js +623 -0
  233. package/dist/operatorAgent/proposals.d.ts +32 -0
  234. package/dist/operatorAgent/proposals.js +144 -0
  235. package/dist/operatorAgent/types.d.ts +128 -0
  236. package/dist/operatorAgent/types.js +1 -0
  237. package/dist/package-meta.d.ts +2 -1
  238. package/dist/package-meta.js +2 -1
  239. package/dist/preflight/bash.d.ts +8 -0
  240. package/dist/preflight/bash.js +34 -0
  241. package/dist/preflight/claudeRoot.d.ts +11 -0
  242. package/dist/preflight/claudeRoot.js +23 -0
  243. package/dist/preflight/mcpCommands.d.ts +8 -0
  244. package/dist/preflight/mcpCommands.js +36 -0
  245. package/dist/preflight/pipelinePreflight.d.ts +40 -0
  246. package/dist/preflight/pipelinePreflight.js +192 -0
  247. package/dist/preflight/tls.d.ts +6 -0
  248. package/dist/preflight/tls.js +18 -0
  249. package/dist/preflight/toolchain.d.ts +45 -0
  250. package/dist/preflight/toolchain.js +219 -0
  251. package/dist/project/findManifestRoot.d.ts +3 -0
  252. package/dist/project/findManifestRoot.js +35 -0
  253. package/dist/project/findProjectRoot.js +3 -4
  254. package/dist/project/globalHome.d.ts +7 -0
  255. package/dist/project/globalHome.js +63 -2
  256. package/dist/project/resolveProjectContext.js +2 -2
  257. package/dist/project/resolveStageflowContext.d.ts +7 -0
  258. package/dist/project/resolveStageflowContext.js +46 -30
  259. package/dist/projection/projectRun.d.ts +2 -1
  260. package/dist/projection/projectRun.js +1 -0
  261. package/dist/runstore/assertTmpdir.d.ts +1 -0
  262. package/dist/runstore/assertTmpdir.js +25 -0
  263. package/dist/runstore/backup.d.ts +52 -0
  264. package/dist/runstore/backup.js +292 -0
  265. package/dist/runstore/createStore.d.ts +18 -1
  266. package/dist/runstore/createStore.js +64 -5
  267. package/dist/runstore/debugBundle.d.ts +60 -0
  268. package/dist/runstore/debugBundle.js +143 -0
  269. package/dist/runstore/diskUsage.d.ts +50 -0
  270. package/dist/runstore/diskUsage.js +214 -0
  271. package/dist/runstore/exportRunPayload.d.ts +8 -0
  272. package/dist/runstore/exportRunPayload.js +23 -0
  273. package/dist/runstore/normalizeCatalogPath.d.ts +1 -0
  274. package/dist/runstore/normalizeCatalogPath.js +10 -0
  275. package/dist/runstore/paths.d.ts +5 -0
  276. package/dist/runstore/paths.js +145 -1
  277. package/dist/runstore/port.d.ts +139 -13
  278. package/dist/runstore/port.js +8 -1
  279. package/dist/runstore/restore.d.ts +81 -0
  280. package/dist/runstore/restore.js +355 -0
  281. package/dist/runstore/retention.d.ts +27 -0
  282. package/dist/runstore/retention.js +74 -0
  283. package/dist/runstore/runManifest.d.ts +146 -0
  284. package/dist/runstore/runManifest.js +288 -0
  285. package/dist/runstore/runProjection.d.ts +3 -1
  286. package/dist/runstore/runProjection.js +63 -1
  287. package/dist/runstore/sqlite/SqliteRunStore.d.ts +35 -3
  288. package/dist/runstore/sqlite/SqliteRunStore.js +442 -219
  289. package/dist/runstore/sqlite/applyStorePragmas.d.ts +39 -0
  290. package/dist/runstore/sqlite/applyStorePragmas.js +145 -0
  291. package/dist/runstore/sqlite/migrations/001-baseline.d.ts +7 -0
  292. package/dist/runstore/sqlite/migrations/001-baseline.js +10 -0
  293. package/dist/runstore/sqlite/migrations/002-repository-binding.d.ts +7 -0
  294. package/dist/runstore/sqlite/migrations/002-repository-binding.js +29 -0
  295. package/dist/runstore/sqlite/migrations/003-run-lifecycle.d.ts +7 -0
  296. package/dist/runstore/sqlite/migrations/003-run-lifecycle.js +28 -0
  297. package/dist/runstore/sqlite/migrations/004-auto-resume-count.d.ts +7 -0
  298. package/dist/runstore/sqlite/migrations/004-auto-resume-count.js +19 -0
  299. package/dist/runstore/sqlite/migrations/005-config-origins.d.ts +7 -0
  300. package/dist/runstore/sqlite/migrations/005-config-origins.js +19 -0
  301. package/dist/runstore/sqlite/migrations/006-pipeline-body-and-caller.d.ts +7 -0
  302. package/dist/runstore/sqlite/migrations/006-pipeline-body-and-caller.js +28 -0
  303. package/dist/runstore/sqlite/migrations/007-projects-registry.d.ts +7 -0
  304. package/dist/runstore/sqlite/migrations/007-projects-registry.js +31 -0
  305. package/dist/runstore/sqlite/migrations/008-triggers-table.d.ts +7 -0
  306. package/dist/runstore/sqlite/migrations/008-triggers-table.js +19 -0
  307. package/dist/runstore/sqlite/migrations/009-trigger-next-run.d.ts +7 -0
  308. package/dist/runstore/sqlite/migrations/009-trigger-next-run.js +19 -0
  309. package/dist/runstore/sqlite/migrations/010-trigger-adapter-state.d.ts +7 -0
  310. package/dist/runstore/sqlite/migrations/010-trigger-adapter-state.js +17 -0
  311. package/dist/runstore/sqlite/migrations/index.d.ts +21 -0
  312. package/dist/runstore/sqlite/migrations/index.js +78 -0
  313. package/dist/runstore/sqlite/schema.d.ts +20 -1
  314. package/dist/runstore/sqlite/schema.js +277 -1
  315. package/dist/runstore/sqlite/storeOpenError.d.ts +6 -0
  316. package/dist/runstore/sqlite/storeOpenError.js +11 -0
  317. package/dist/runstore/sqlite/storeSchemaError.d.ts +5 -0
  318. package/dist/runstore/sqlite/storeSchemaError.js +8 -0
  319. package/dist/runstore/stageExecution.js +3 -0
  320. package/dist/runstore/storeFilesystem.d.ts +32 -0
  321. package/dist/runstore/storeFilesystem.js +148 -0
  322. package/dist/runstore/trackProjection.js +2 -0
  323. package/dist/runstore/workspaceLayout.d.ts +13 -0
  324. package/dist/runstore/workspaceLayout.js +76 -0
  325. package/dist/runtime/answerResume.d.ts +1 -0
  326. package/dist/runtime/answerResume.js +3 -1
  327. package/dist/runtime/completionCheckRunner.d.ts +15 -1
  328. package/dist/runtime/completionCheckRunner.js +67 -7
  329. package/dist/runtime/containerLimits.d.ts +16 -0
  330. package/dist/runtime/containerLimits.js +84 -0
  331. package/dist/runtime/credentialBinding.d.ts +2 -0
  332. package/dist/runtime/credentialBinding.js +3 -0
  333. package/dist/runtime/credentialMaterialisation.d.ts +28 -0
  334. package/dist/runtime/credentialMaterialisation.js +128 -0
  335. package/dist/runtime/emailSource.d.ts +72 -0
  336. package/dist/runtime/emailSource.js +304 -0
  337. package/dist/runtime/gitCheckoutCapability.js +7 -13
  338. package/dist/runtime/githubPollSource.d.ts +86 -0
  339. package/dist/runtime/githubPollSource.js +284 -0
  340. package/dist/runtime/pipelineRunner.d.ts +40 -1
  341. package/dist/runtime/pipelineRunner.js +181 -17
  342. package/dist/runtime/pipelineScheduler.d.ts +17 -0
  343. package/dist/runtime/pipelineScheduler.js +220 -28
  344. package/dist/runtime/reloadRunCatalog.js +6 -1
  345. package/dist/runtime/repositoryMaterialize.d.ts +47 -0
  346. package/dist/runtime/repositoryMaterialize.js +235 -0
  347. package/dist/runtime/resumeTimedOut.d.ts +1 -1
  348. package/dist/runtime/resumeTimedOut.js +5 -2
  349. package/dist/runtime/runChangeBus.js +9 -0
  350. package/dist/runtime/runDeletion.d.ts +7 -0
  351. package/dist/runtime/runDeletion.js +37 -0
  352. package/dist/runtime/runManager.d.ts +169 -4
  353. package/dist/runtime/runManager.js +1748 -83
  354. package/dist/runtime/runRetentionSweep.d.ts +31 -0
  355. package/dist/runtime/runRetentionSweep.js +328 -0
  356. package/dist/runtime/runRetryCoordinator.d.ts +4 -0
  357. package/dist/runtime/runRetryCoordinator.js +20 -2
  358. package/dist/runtime/runSkills.d.ts +40 -0
  359. package/dist/runtime/runSkills.js +173 -0
  360. package/dist/runtime/scheduleSource.d.ts +38 -0
  361. package/dist/runtime/scheduleSource.js +119 -0
  362. package/dist/runtime/settingsFile.d.ts +5 -0
  363. package/dist/runtime/settingsFile.js +61 -54
  364. package/dist/runtime/stageAttemptBootstrap.d.ts +5 -1
  365. package/dist/runtime/stageAttemptBootstrap.js +250 -27
  366. package/dist/runtime/stageCacheEnv.d.ts +6 -0
  367. package/dist/runtime/stageCacheEnv.js +34 -0
  368. package/dist/runtime/stageConcurrency.d.ts +2 -1
  369. package/dist/runtime/stageConcurrency.js +4 -2
  370. package/dist/runtime/stageEnvironment.d.ts +38 -0
  371. package/dist/runtime/stageEnvironment.js +194 -0
  372. package/dist/runtime/stageHitl.d.ts +1 -0
  373. package/dist/runtime/stageHitl.js +5 -1
  374. package/dist/runtime/stageProcessLauncher.d.ts +20 -0
  375. package/dist/runtime/stageProcessLauncher.js +236 -41
  376. package/dist/runtime/stageRecovery.d.ts +3 -1
  377. package/dist/runtime/stageRecovery.js +19 -4
  378. package/dist/runtime/stageRoots.d.ts +38 -1
  379. package/dist/runtime/stageRoots.js +118 -0
  380. package/dist/runtime/stageRunner.d.ts +6 -0
  381. package/dist/runtime/stageRunner.js +32 -6
  382. package/dist/runtime/stageSecretDecl.d.ts +9 -0
  383. package/dist/runtime/stageSecretDecl.js +102 -0
  384. package/dist/runtime/stageSecrets.d.ts +40 -0
  385. package/dist/runtime/stageSecrets.js +181 -0
  386. package/dist/runtime/stageStreamLog.d.ts +1 -0
  387. package/dist/runtime/stageStreamLog.js +2 -1
  388. package/dist/runtime/stageWorker.d.ts +3 -2
  389. package/dist/runtime/stageWorker.js +58 -10
  390. package/dist/runtime/stageWorkerProtocol.d.ts +5 -0
  391. package/dist/runtime/stageWorkerProtocol.js +8 -0
  392. package/dist/runtime/startPayload.d.ts +32 -0
  393. package/dist/runtime/startPayload.js +59 -0
  394. package/dist/runtime/taskInput.js +14 -5
  395. package/dist/runtime/triggerCatalog.d.ts +6 -0
  396. package/dist/runtime/triggerCatalog.js +24 -0
  397. package/dist/runtime/triggerEventMatch.d.ts +2 -0
  398. package/dist/runtime/triggerEventMatch.js +6 -0
  399. package/dist/runtime/triggerPort.d.ts +14 -0
  400. package/dist/runtime/triggerPort.js +1 -0
  401. package/dist/runtime/triggerRunner.d.ts +17 -0
  402. package/dist/runtime/triggerRunner.js +89 -0
  403. package/dist/runtime/verifiedStageExecution.d.ts +8 -0
  404. package/dist/runtime/verifiedStageExecution.js +16 -1
  405. package/dist/runtime/webhookSignature.d.ts +1 -0
  406. package/dist/runtime/webhookSignature.js +12 -0
  407. package/dist/runtime/workspaceBinding.d.ts +20 -0
  408. package/dist/runtime/workspaceBinding.js +60 -0
  409. package/dist/server/allowedHosts.d.ts +19 -0
  410. package/dist/server/allowedHosts.js +179 -0
  411. package/dist/server/bootstrap.d.ts +42 -2
  412. package/dist/server/bootstrap.js +273 -5
  413. package/dist/server/controlToken.d.ts +47 -0
  414. package/dist/server/controlToken.js +254 -0
  415. package/dist/server/createHttpHost.d.ts +11 -2
  416. package/dist/server/createHttpHost.js +106 -10
  417. package/dist/server/ensureGlobalService.d.ts +5 -1
  418. package/dist/server/ensureGlobalService.js +35 -1
  419. package/dist/server/healthSurfaces.d.ts +6 -0
  420. package/dist/server/healthSurfaces.js +123 -0
  421. package/dist/server/http.d.ts +27 -1
  422. package/dist/server/http.js +2254 -477
  423. package/dist/server/listenHost.d.ts +5 -0
  424. package/dist/server/listenHost.js +56 -0
  425. package/dist/server/mcpHost.d.ts +10 -1
  426. package/dist/server/mcpHost.js +36 -6
  427. package/dist/server/operatorResults.d.ts +2 -2
  428. package/dist/server/operatorResults.js +40 -29
  429. package/dist/server/requestAuthContext.d.ts +12 -0
  430. package/dist/server/requestAuthContext.js +21 -0
  431. package/dist/server/shutdown.d.ts +69 -0
  432. package/dist/server/shutdown.js +219 -0
  433. package/dist/server/triggerRoutes.d.ts +15 -0
  434. package/dist/server/triggerRoutes.js +268 -0
  435. package/dist/tools/askOperator.d.ts +3 -2
  436. package/dist/types/completion.d.ts +3 -0
  437. package/dist/types/pipeline.d.ts +10 -1
  438. package/dist/types/preEmitCheck.d.ts +7 -0
  439. package/dist/types/stage.d.ts +22 -0
  440. package/dist/types/stageflowManifest.d.ts +3 -0
  441. package/dist/types/task.d.ts +8 -0
  442. package/dist/types/trigger.d.ts +18 -0
  443. package/dist/types/trigger.js +1 -0
  444. package/dist/ui/assets/{index-CSsDued1.css → index-Bv4p1aPK.css} +1 -1
  445. package/dist/ui/assets/index-CntB4bZR.js +133 -0
  446. package/dist/ui/index.html +2 -2
  447. package/dist/workshop/autosave.d.ts +58 -0
  448. package/dist/workshop/autosave.js +222 -0
  449. package/dist/workshop/buildStore.d.ts +79 -0
  450. package/dist/workshop/buildStore.js +326 -0
  451. package/dist/workshop/chatTurn.d.ts +232 -0
  452. package/dist/workshop/chatTurn.js +475 -0
  453. package/dist/workshop/modelSettings.d.ts +18 -0
  454. package/dist/workshop/modelSettings.js +44 -0
  455. package/dist/workshop/sessionStore.d.ts +61 -0
  456. package/dist/workshop/sessionStore.js +254 -0
  457. package/dist/workshop/workshopPin.d.ts +72 -0
  458. package/dist/workshop/workshopPin.js +193 -0
  459. package/examples/README.md +99 -0
  460. package/examples/archify-on-pr/README.md +213 -0
  461. package/examples/archify-on-pr/archify-on-pr.pipeline.yaml +19 -0
  462. package/examples/archify-on-pr/archify-on-pr.task.yaml +19 -0
  463. package/examples/archify-on-pr/author-diagrams.yaml +106 -0
  464. package/examples/archify-on-pr/detect-changes.yaml +89 -0
  465. package/examples/browser-session/README.md +77 -0
  466. package/examples/browser-session/browser-session.pipeline.yaml +50 -0
  467. package/examples/browser-session/browser-session.task.yaml +6 -0
  468. package/examples/browser-session/check-login.yaml +22 -0
  469. package/examples/browser-session/fixture-server.mjs +64 -0
  470. package/examples/browser-session/human-login.yaml +31 -0
  471. package/examples/browser-session/merge.yaml +36 -0
  472. package/examples/browser-session/work-a.yaml +41 -0
  473. package/examples/browser-session/work-b.yaml +41 -0
  474. package/examples/ci-validate/README.md +35 -0
  475. package/examples/ci-validate/check.yaml +13 -0
  476. package/examples/ci-validate/ci-demo.pipeline.yaml +4 -0
  477. package/examples/ci-validate/validate.sh +5 -0
  478. package/examples/compliance-review-demo/README.md +125 -0
  479. package/examples/compliance-review-demo/compliance-review-demo.pipeline.yaml +29 -0
  480. package/examples/compliance-review-demo/connect-account.yaml +47 -0
  481. package/examples/compliance-review-demo/map-to-control.yaml +123 -0
  482. package/examples/compliance-review-demo/poll-bucket-config.yaml +103 -0
  483. package/examples/compliance-review-demo/publish-report.yaml +79 -0
  484. package/examples/compliance-review-demo/review-verdict.yaml +122 -0
  485. package/examples/compliance-review-demo/run-compliance-check.yaml +96 -0
  486. package/examples/compliance-review-demo/store-evidence.yaml +143 -0
  487. package/examples/conditional-fork/README.md +89 -0
  488. package/examples/conditional-fork/branch-a.yaml +13 -0
  489. package/examples/conditional-fork/branch-b.yaml +13 -0
  490. package/examples/conditional-fork/decide.yaml +35 -0
  491. package/examples/conditional-fork/fork-demo.pipeline.yaml +20 -0
  492. package/examples/conditional-fork/fork-demo.task.yaml +8 -0
  493. package/examples/context7-mcp/README.md +42 -0
  494. package/examples/context7-mcp/context7-mcp.pipeline.yaml +15 -0
  495. package/examples/context7-mcp/context7-mcp.task.yaml +4 -0
  496. package/examples/context7-mcp/fetch-docs.yaml +52 -0
  497. package/examples/context7-mcp/resolve-library.yaml +31 -0
  498. package/examples/context7-mcp/write-brief.yaml +52 -0
  499. package/examples/feature-loop/README.md +104 -0
  500. package/examples/feature-loop/address-feedback.yaml +148 -0
  501. package/examples/feature-loop/align.yaml +116 -0
  502. package/examples/feature-loop/decompose.yaml +86 -0
  503. package/examples/feature-loop/default-model-hierarchy.task.yaml +58 -0
  504. package/examples/feature-loop/feature-loop.pipeline.yaml +140 -0
  505. package/examples/feature-loop/feature-loop.task.yaml +25 -0
  506. package/examples/feature-loop/implement.yaml +128 -0
  507. package/examples/feature-loop/plan.yaml +111 -0
  508. package/examples/feature-loop/publish.yaml +167 -0
  509. package/examples/feature-loop/review.yaml +146 -0
  510. package/examples/feature-loop/verify.yaml +106 -0
  511. package/examples/feedback-loop/README.md +72 -0
  512. package/examples/feedback-loop/VERIFY.md +208 -0
  513. package/examples/feedback-loop/continue-only.task.yaml +4 -0
  514. package/examples/feedback-loop/exhaust-require-continue.task.yaml +6 -0
  515. package/examples/feedback-loop/exhaust-wait-human.task.yaml +11 -0
  516. package/examples/feedback-loop/feedback-loop-wait-human.pipeline.yaml +23 -0
  517. package/examples/feedback-loop/feedback-loop.pipeline.yaml +23 -0
  518. package/examples/feedback-loop/feedback-loop.task.yaml +4 -0
  519. package/examples/feedback-loop/implement.yaml +14 -0
  520. package/examples/feedback-loop/plan.yaml +14 -0
  521. package/examples/feedback-loop/review.yaml +15 -0
  522. package/examples/feedback-loop/send-back-once.task.yaml +6 -0
  523. package/examples/feedback-loop/submit.yaml +12 -0
  524. package/examples/generic-fan-in/README.md +151 -0
  525. package/examples/generic-fan-in/clarify.yaml +18 -0
  526. package/examples/generic-fan-in/generic-fan-in-accepted.pipeline.yaml +19 -0
  527. package/examples/generic-fan-in/generic-fan-in-accepted.task.yaml +8 -0
  528. package/examples/generic-fan-in/generic-fan-in.pipeline.yaml +18 -0
  529. package/examples/generic-fan-in/generic-fan-in.task.yaml +9 -0
  530. package/examples/generic-fan-in/research.yaml +45 -0
  531. package/examples/generic-fan-in/synthesize.yaml +66 -0
  532. package/examples/generic-fan-in/validation.yaml +45 -0
  533. package/examples/github-release/README.md +78 -0
  534. package/examples/github-release/draft-release-notes.yaml +64 -0
  535. package/examples/github-release/github-release.pipeline.yaml +11 -0
  536. package/examples/github-release/github-release.task.yaml +13 -0
  537. package/examples/github-release/publish-github-release.yaml +64 -0
  538. package/examples/hello-world/README.md +28 -0
  539. package/examples/hello-world/hello.pipeline.yaml +4 -0
  540. package/examples/hello-world/my-task.task.yaml +6 -0
  541. package/examples/hello-world/research.yaml +18 -0
  542. package/examples/mcp-hitl-tour/README.md +113 -0
  543. package/examples/mcp-hitl-tour/draft-angle.yaml +33 -0
  544. package/examples/mcp-hitl-tour/draft-short.yaml +32 -0
  545. package/examples/mcp-hitl-tour/emit-angles.yaml +45 -0
  546. package/examples/mcp-hitl-tour/gather.yaml +31 -0
  547. package/examples/mcp-hitl-tour/intake.yaml +62 -0
  548. package/examples/mcp-hitl-tour/mcp-hitl-tour-exhaust.task.yaml +13 -0
  549. package/examples/mcp-hitl-tour/mcp-hitl-tour.pipeline.yaml +54 -0
  550. package/examples/mcp-hitl-tour/mcp-hitl-tour.task.yaml +16 -0
  551. package/examples/mcp-hitl-tour/polish.yaml +33 -0
  552. package/examples/mcp-hitl-tour/review.yaml +17 -0
  553. package/examples/mcp-hitl-tour/ship.yaml +25 -0
  554. package/examples/oss-issue-contribution/README.md +218 -0
  555. package/examples/oss-issue-contribution/oss-address-review-feedback.yaml +117 -0
  556. package/examples/oss-issue-contribution/oss-approve-contribution.yaml +181 -0
  557. package/examples/oss-issue-contribution/oss-approve-plan.yaml +111 -0
  558. package/examples/oss-issue-contribution/oss-explain-fix.yaml +108 -0
  559. package/examples/oss-issue-contribution/oss-explain-issue.yaml +114 -0
  560. package/examples/oss-issue-contribution/oss-implement-source-fix.yaml +171 -0
  561. package/examples/oss-issue-contribution/oss-investigate-area.yaml +116 -0
  562. package/examples/oss-issue-contribution/oss-issue-contribution.pipeline.yaml +125 -0
  563. package/examples/oss-issue-contribution/oss-issue-intake.yaml +106 -0
  564. package/examples/oss-issue-contribution/oss-plan-investigation.yaml +112 -0
  565. package/examples/oss-issue-contribution/oss-plan-review.yaml +109 -0
  566. package/examples/oss-issue-contribution/oss-reproduce-issue.yaml +140 -0
  567. package/examples/oss-issue-contribution/oss-review-change.yaml +107 -0
  568. package/examples/oss-issue-contribution/oss-verify-fix.yaml +130 -0
  569. package/examples/oss-issue-contribution/oss-write-regression-test.yaml +135 -0
  570. package/examples/oss-issue-contribution/pi-7629.task.yaml +79 -0
  571. package/examples/oss-issue-contribution/pi-8919.task.yaml +75 -0
  572. package/examples/oss-issue-contribution/pydantic-ai-7971.task.yaml +53 -0
  573. package/examples/oss-quick-fix/README.md +65 -0
  574. package/examples/oss-quick-fix/implement-fix.yaml +84 -0
  575. package/examples/oss-quick-fix/oss-quick-fix.pipeline.yaml +35 -0
  576. package/examples/oss-quick-fix/oss-quick-fix.task.yaml +19 -0
  577. package/examples/oss-quick-fix/ship-fix.yaml +81 -0
  578. package/examples/oss-quick-fix/understand-issue.yaml +67 -0
  579. package/examples/oss-quick-fix/verify-fix.yaml +73 -0
  580. package/examples/plan-review/README.md +37 -0
  581. package/examples/plan-review/plan-review-followup.yaml +13 -0
  582. package/examples/plan-review/plan-review.pipeline.yaml +9 -0
  583. package/examples/plan-review/plan-review.task.yaml +9 -0
  584. package/examples/plan-review/plan-review.yaml +25 -0
  585. package/examples/playwright-mcp/README.md +39 -0
  586. package/examples/playwright-mcp/playwright-mcp.pipeline.yaml +5 -0
  587. package/examples/playwright-mcp/playwright-mcp.task.yaml +4 -0
  588. package/examples/playwright-mcp/screenshot.yaml +40 -0
  589. package/examples/retry-tour/README.md +75 -0
  590. package/examples/retry-tour/retry-tour.pipeline.yaml +122 -0
  591. package/examples/retry-tour/retry-tour.task.yaml +9 -0
  592. package/examples/route-if-tour/README.md +202 -0
  593. package/examples/route-if-tour/route-if-tour.pipeline.yaml +950 -0
  594. package/examples/route-if-tour/route-if-tour.task.yaml +4 -0
  595. package/examples/route-wiring-smoke-test/01-core-routing.pipeline.yaml +168 -0
  596. package/examples/route-wiring-smoke-test/02-on-gating.pipeline.yaml +44 -0
  597. package/examples/route-wiring-smoke-test/03-two-entry-points.pipeline.yaml +28 -0
  598. package/examples/route-wiring-smoke-test/04-entry-false-equivalent-to-omitted.pipeline.yaml +27 -0
  599. package/examples/route-wiring-smoke-test/05-fork-choice.pipeline.yaml +110 -0
  600. package/examples/route-wiring-smoke-test/06-fan-out-fan-in.pipeline.yaml +82 -0
  601. package/examples/route-wiring-smoke-test/07-loop-human-decision.pipeline.yaml +82 -0
  602. package/examples/route-wiring-smoke-test/08-skip-fallback-and-multi-on-gate.pipeline.yaml +77 -0
  603. package/examples/route-wiring-smoke-test/09-multi-loop-targets.pipeline.yaml +102 -0
  604. package/examples/route-wiring-smoke-test/10-uses-dialect-fork.pipeline.yaml +23 -0
  605. package/examples/route-wiring-smoke-test/11-sequential-io-handoff.pipeline.yaml +37 -0
  606. package/examples/route-wiring-smoke-test/12-complex-io-schemas.pipeline.yaml +138 -0
  607. package/examples/route-wiring-smoke-test/13-ref-io-handoff.pipeline.yaml +84 -0
  608. package/examples/route-wiring-smoke-test/14-if-eq-gating.pipeline.yaml +50 -0
  609. package/examples/route-wiring-smoke-test/15-if-all-gated.pipeline.yaml +37 -0
  610. package/examples/route-wiring-smoke-test/16-if-composition.pipeline.yaml +65 -0
  611. package/examples/route-wiring-smoke-test/17-if-join.pipeline.yaml +80 -0
  612. package/examples/route-wiring-smoke-test/README.md +377 -0
  613. package/examples/route-wiring-smoke-test/rejected/01-reject-legacy-needs.pipeline.yaml +26 -0
  614. package/examples/route-wiring-smoke-test/rejected/02-reject-legacy-fork.pipeline.yaml +25 -0
  615. package/examples/route-wiring-smoke-test/rejected/03-reject-legacy-feedback-loop.pipeline.yaml +30 -0
  616. package/examples/route-wiring-smoke-test/rejected/04-reject-missing-entry.pipeline.yaml +24 -0
  617. package/examples/route-wiring-smoke-test/rejected/05-reject-unreachable.pipeline.yaml +35 -0
  618. package/examples/route-wiring-smoke-test/rejected/06-reject-allow-none-without-route-select.pipeline.yaml +37 -0
  619. package/examples/route-wiring-smoke-test/rejected/07-reject-cycle.pipeline.yaml +27 -0
  620. package/examples/route-wiring-smoke-test/rejected/08-reject-loop-non-ancestor.pipeline.yaml +42 -0
  621. package/examples/route-wiring-smoke-test/rejected/09-reject-route-select-leaf.pipeline.yaml +26 -0
  622. package/examples/route-wiring-smoke-test/rejected/12-reject-loop-replay-unsafe.pipeline.yaml +55 -0
  623. package/examples/route-wiring-smoke-test/rejected/13-reject-multiple-loop-entries.pipeline.yaml +51 -0
  624. package/examples/route-wiring-smoke-test/rejected/14-reject-duplicate-stage-id.pipeline.yaml +35 -0
  625. package/examples/route-wiring-smoke-test/rejected/15-reject-unknown-route-target.pipeline.yaml +15 -0
  626. package/examples/route-wiring-smoke-test/rejected/16-reject-malformed-route-item.pipeline.yaml +15 -0
  627. package/examples/route-wiring-smoke-test/rejected/17-reject-io-incompatible.pipeline.yaml +33 -0
  628. package/examples/route-wiring-smoke-test/rejected/18-reject-nested-io.pipeline.yaml +51 -0
  629. package/examples/route-wiring-smoke-test/rejected/19-reject-array-item-io.pipeline.yaml +55 -0
  630. package/examples/route-wiring-smoke-test/rejected/20-reject-closed-io.pipeline.yaml +36 -0
  631. package/examples/route-wiring-smoke-test/rejected/21-reject-ref-io.pipeline.yaml +42 -0
  632. package/examples/route-wiring-smoke-test/rejected/22-reject-if-unknown-field.pipeline.yaml +33 -0
  633. package/examples/route-wiring-smoke-test/rejected/23-reject-if-optional-field.pipeline.yaml +32 -0
  634. package/examples/route-wiring-smoke-test/rejected/24-reject-if-empty-all.pipeline.yaml +31 -0
  635. package/examples/route-wiring-smoke-test/rejected/25-reject-if-gt-on-string.pipeline.yaml +33 -0
  636. package/examples/route-wiring-smoke-test/rejected/26-reject-if-optional-nested.pipeline.yaml +36 -0
  637. package/examples/route-wiring-smoke-test/rejected/27-reject-if-on-loop.pipeline.yaml +63 -0
  638. package/examples/route-wiring-smoke-test/rejected/29-reject-if-on-failed.pipeline.yaml +46 -0
  639. package/examples/route-wiring-smoke-test/smoke-test.task.yaml +4 -0
  640. package/examples/route-wiring-smoke-test/stages/branch-a.yaml +12 -0
  641. package/examples/route-wiring-smoke-test/stages/branch-b.yaml +12 -0
  642. package/examples/route-wiring-smoke-test/stages/decide.yaml +12 -0
  643. package/examples/route-wiring-smoke-test/stages/finish.yaml +12 -0
  644. package/examples/ship-feature/README.md +190 -0
  645. package/examples/ship-feature/feat-address-feedback.yaml +119 -0
  646. package/examples/ship-feature/feat-implement.yaml +180 -0
  647. package/examples/ship-feature/feat-plan.yaml +120 -0
  648. package/examples/ship-feature/feat-review.yaml +109 -0
  649. package/examples/ship-feature/feat-ship.yaml +203 -0
  650. package/examples/ship-feature/ship-feature.pipeline.yaml +44 -0
  651. package/examples/ship-feature/ship-feature.task.yaml +78 -0
  652. package/examples/stage-mcp/README.md +145 -0
  653. package/examples/stage-mcp/echo-mcp.mjs +20 -0
  654. package/examples/stage-mcp/stage-mcp-dead.pipeline.yaml +5 -0
  655. package/examples/stage-mcp/stage-mcp-dead.task.yaml +3 -0
  656. package/examples/stage-mcp/stage-mcp-missing-var.pipeline.yaml +5 -0
  657. package/examples/stage-mcp/stage-mcp-missing-var.task.yaml +3 -0
  658. package/examples/stage-mcp/stage-mcp.pipeline.yaml +5 -0
  659. package/examples/stage-mcp/stage-mcp.task.yaml +4 -0
  660. package/examples/stage-mcp/use-echo.yaml +20 -0
  661. package/examples/stageflow.yaml +51 -0
  662. package/examples/verify-tour/README.md +80 -0
  663. package/examples/verify-tour/verify-tour.pipeline.yaml +162 -0
  664. package/examples/verify-tour/verify-tour.task.yaml +11 -0
  665. package/package.json +9 -1
  666. package/skills/stageflow/SKILL.md +6 -6
  667. package/skills/stageflow/references/control-surface.md +13 -5
  668. package/skills/stageflow/scripts/detect-host.mjs +14 -1
  669. package/skills/stageflow/scripts/detect-host.test.mjs +29 -1
  670. package/skills/stageflow-author/SKILL.md +4 -3
  671. package/skills/stageflow-author/references/catalog-mapping.md +16 -0
  672. package/skills/stageflow-author/references/catalog-write-conventions.md +1 -1
  673. package/skills/stageflow-author/references/stage-prompt-template.md +4 -4
  674. package/skills/stageflow-run/SKILL.md +22 -12
  675. package/skills/stageflow-run/references/mcp-call.md +9 -1
  676. package/skills/stageflow-run/references/task-and-pipeline-selection.md +19 -6
  677. package/skills/stageflow-run/scripts/mcp-call.mjs +46 -6
  678. package/skills/stageflow-run/scripts/mcp-call.test.mjs +64 -0
  679. package/skills/stageflow-session-capture/references/catalog-authoring.md +2 -0
  680. package/skills/stageflow-setup/SKILL.md +51 -8
  681. package/dist/ui/assets/index-Da5EHU6M.js +0 -119
@@ -0,0 +1,58 @@
1
+ id: default-model-hierarchy
2
+ goal: >
3
+ Implement default model resolution across Stageflow YAML layers so a
4
+ model can be set once on stageflow.yaml or a pipeline and inherited by
5
+ stages that omit model. Resolution priority must be stage first, then
6
+ pipeline, then the global stageflow.yaml default. Split the work into
7
+ stories, plan each story, align the plans, implement them in the agreed
8
+ order, verify coverage, review the whole diff, address review feedback,
9
+ and open an operator-approved pull request.
10
+ context: |
11
+ This repository is Stageflow itself (tejasghutukade/stageflow). The
12
+ checkout for this run is a dedicated git worktree already on branch
13
+ scratch/extra-workspace, tracking origin/main.
14
+
15
+ Epic (pasted — treat this block as the requirements document):
16
+
17
+ Today every stage must declare model (string). Omitting it fails load.
18
+ There is no pipeline-level or stageflow.yaml default for model. The
19
+ agent backend already resolves as stage > pipeline > global > "pi";
20
+ model needs the same shape of hierarchy, without reusing the agent key.
21
+
22
+ Required behavior:
23
+ 1. Optional top-level model on stageflow.yaml (global default).
24
+ 2. Optional top-level model on *.pipeline.yaml (pipeline default for
25
+ all stages in that pipeline).
26
+ 3. Stage model remains allowed on inline stage bodies and external
27
+ stage YAML, but becomes optional when a higher default can fill it.
28
+ 4. Effective resolution for each stage at load or run time:
29
+ stage.model ?? pipeline.model ?? stageflow.yaml model.
30
+ If still unset after that chain, load/run must fail with a clear
31
+ error — never invent a silent hardcoded model string.
32
+ 5. Priority is always stage override, then pipeline, then global.
33
+
34
+ Likely touch points (verify against the tree; do not assume line
35
+ numbers): src/types/stageflowManifest.ts, src/types/pipeline.ts,
36
+ src/types for StageConfig, src/config/loadStageflowManifest.ts,
37
+ src/config load/merge pipeline helpers, src/config/loadStage.ts,
38
+ resolveAgentPort.ts (pattern to mirror for model, not to conflate),
39
+ stage worker / adapters that read stage.model, docs/yaml-catalog.md,
40
+ fixtures under tests/fixtures/, and any create/init surfaces that
41
+ currently require stage model.
42
+
43
+ Keep model (LLM id string) distinct from agent (pi | claude backend).
44
+
45
+ - Publish target: tejasghutukade/stageflow
46
+ - Base branch: main
47
+ - Head branch: the checkout's current branch (do not create or switch)
48
+ constraints: |
49
+ Do not create, rename, or switch branches — the checkout is already
50
+ on the correct feature branch (scratch/extra-workspace).
51
+ Do not commit, push, or open a pull request except in publish, and
52
+ only after the operator accepts ship-package.md.
53
+ Do not expand scope past the epic. Story plans and sequential
54
+ implement clones must stay inside their assigned slices.
55
+ Do not change agent-backend resolution semantics except where
56
+ documentation must clarify that model and agent are separate.
57
+ publish_repo and base_branch must be the values named here, never guessed.
58
+ checkout: /Users/tejasghutukade/Projects/software-factory/.worktrees/scratch/extra-workspace
@@ -0,0 +1,140 @@
1
+ id: feature-loop
2
+ schemas:
3
+ story-assignment:
4
+ type: object
5
+ required:
6
+ - story_id
7
+ - title
8
+ - epic_slice
9
+ - acceptance
10
+ - neighboring_story_ids
11
+ - constraints
12
+ properties:
13
+ story_id:
14
+ type: string
15
+ title:
16
+ type: string
17
+ epic_slice:
18
+ type: string
19
+ acceptance:
20
+ type: string
21
+ neighboring_story_ids:
22
+ type: array
23
+ items:
24
+ type: string
25
+ constraints:
26
+ type: array
27
+ items:
28
+ type: string
29
+ story-work:
30
+ type: object
31
+ required:
32
+ - story_id
33
+ - title
34
+ - plan_artifact
35
+ - order
36
+ - depends_on
37
+ - planned_files
38
+ - validation_commands
39
+ properties:
40
+ story_id:
41
+ type: string
42
+ title:
43
+ type: string
44
+ plan_artifact:
45
+ type: string
46
+ order:
47
+ type: integer
48
+ minimum: 1
49
+ depends_on:
50
+ type: array
51
+ items:
52
+ type: string
53
+ planned_files:
54
+ type: array
55
+ items:
56
+ type: string
57
+ validation_commands:
58
+ type: array
59
+ items:
60
+ type: string
61
+ stages:
62
+ - id: decompose
63
+ uses: ./decompose.yaml
64
+ entry: true
65
+ clone_cap: 8
66
+ clone_mode: parallel
67
+ route:
68
+ - to: plan
69
+ on_verify_fail:
70
+ mode: repair
71
+ max_attempts: 3
72
+ retry_safety: idempotent
73
+ include_failed_checks: true
74
+ - id: plan
75
+ uses: ./plan.yaml
76
+ route:
77
+ - to: align
78
+ on_verify_fail:
79
+ mode: repair
80
+ max_attempts: 3
81
+ retry_safety: idempotent
82
+ include_failed_checks: true
83
+ - id: align
84
+ uses: ./align.yaml
85
+ clone_cap: 8
86
+ clone_mode: sequential
87
+ route:
88
+ - to: implement
89
+ on_verify_fail:
90
+ mode: repair
91
+ max_attempts: 3
92
+ retry_safety: idempotent
93
+ include_failed_checks: true
94
+ - id: implement
95
+ uses: ./implement.yaml
96
+ route:
97
+ - to: verify
98
+ on_verify_fail:
99
+ mode: repair
100
+ max_attempts: 3
101
+ retry_safety: idempotent
102
+ include_failed_checks: true
103
+ - id: verify
104
+ uses: ./verify.yaml
105
+ route:
106
+ - to: review
107
+ on_verify_fail:
108
+ mode: repair
109
+ max_attempts: 3
110
+ retry_safety: idempotent
111
+ include_failed_checks: true
112
+ - id: review
113
+ uses: ./review.yaml
114
+ route:
115
+ - to: address-feedback
116
+ on_verify_fail:
117
+ mode: repair
118
+ max_attempts: 3
119
+ retry_safety: idempotent
120
+ include_failed_checks: true
121
+ - id: address-feedback
122
+ uses: ./address-feedback.yaml
123
+ route:
124
+ - to: publish
125
+ - type: loop
126
+ to: review
127
+ max_replays: 2
128
+ on_max_replays: wait_for_human
129
+ replay_session: new_session
130
+ on_verify_fail:
131
+ mode: repair
132
+ max_attempts: 3
133
+ retry_safety: idempotent
134
+ include_failed_checks: true
135
+ - id: publish
136
+ uses: ./publish.yaml
137
+ on_verify_fail:
138
+ mode: manual
139
+ retry_safety: side_effecting
140
+ replay_safe: false
@@ -0,0 +1,25 @@
1
+ id: feature-loop
2
+ goal: >
3
+ Implement the epic in the requirements document named in context:
4
+ split it into stories, plan each story, align the plans, implement
5
+ them in the agreed order, verify coverage, review the whole diff,
6
+ address review feedback, and open an operator-approved pull request.
7
+ context: |
8
+ Point this task at a real checkout already on the feature branch.
9
+ Name the requirements/epic path (checkout-relative), the publish
10
+ repository (owner/name), and the base branch.
11
+
12
+ Replace the placeholders below before running:
13
+
14
+ - Requirements/epic: <path-to-requirements.md>
15
+ - Publish target: <owner/repo>
16
+ - Base branch: main
17
+ - Head branch: the checkout's current branch (do not create or switch)
18
+ constraints: |
19
+ Do not create, rename, or switch branches — the checkout is already
20
+ on the correct feature branch.
21
+ Do not commit, push, or open a pull request except in publish, and
22
+ only after the operator accepts ship-package.md.
23
+ Do not expand scope past the epic. Story plans and sequential
24
+ implement clones must stay inside their assigned slices.
25
+ publish_repo and base_branch must be the values named here, never guessed.
@@ -0,0 +1,128 @@
1
+ id: implement
2
+ system_prompt: |
3
+ You are one sequential implementation clone among others. Work the way
4
+ a compound-engineering ce-work run would: execute only your assigned
5
+ plan, verify it locally, do not renegotiate scope. Do not commit,
6
+
7
+ Your assignment is the clone prior envelope payload: story_id, title,
8
+ plan_artifact, order, depends_on, planned_files, validation_commands.
9
+ Clones run in sequential mode. Instance implement~1 starts first;
10
+ implement~N starts only after ~N-1 succeeded. Earlier clones' checkout
11
+ edits are already in the working tree. Do not revert, reformat, or
12
+ rewrite them. Do not implement neighboring stories.
13
+
14
+ Reading upstream work: the user prompt contains "Factory run
15
+ workspace: <absolute path>". Read plan_artifact and aligned-plans.md
16
+ at <Factory run workspace>/<path>. The assigned story plan outranks
17
+ any prose summary. That summary describes the previous stage.
18
+
19
+ Success requires real checkout edits. Put checkout-relative paths in
20
+ payload.changed_files. Do not put stages/.../artifacts paths there. A
21
+ report or map alone is a failure emit, not success.
22
+
23
+ Definition of done — every line must hold before you emit success:
24
+ - git diff in the checkout is non-empty relative to the tree you
25
+ inherited at the start of this clone (your edits on top of earlier
26
+ clones). The emit is rejected while you added nothing.
27
+ - Every changed_files entry is a repo-relative checkout path that
28
+ appears in git diff --name-only and is in scope of your plan.
29
+ - Every assigned validation_commands entry was run here, in order,
30
+ with its exit code recorded, and every one exited zero. all_passed
31
+ is true only when that is the case.
32
+ - implementation-report.md was written through write_stage_artifact
33
+ and appears in the emitted artifacts list.
34
+ - You did not take files owned by stories later in
35
+ implementation_order except unavoidable shared seams named in
36
+ aligned-plans.md.
37
+
38
+ 1. Run git status --porcelain and git diff --stat. Treat that as the
39
+ inherited baseline from earlier clones.
40
+ 2. Resolve plan_artifact against the Factory run workspace and read
41
+ it. If it cannot be read, emit failure — do not re-derive a plan.
42
+ 3. If depends_on names stories whose files are missing from the
43
+ inherited tree, emit failure naming what is absent.
44
+ 4. Edit only what this story's plan requires, including tests the
45
+ plan calls for. Match existing style. No drive-by refactors.
46
+ 5. Run every assigned validation_commands entry in order. On failure,
47
+ diagnose, fix, and re-run until green or emit failure with
48
+ evidence.
49
+ 6. Call write_stage_artifact with path implementation-report.md
50
+ containing git diff --stat against the inherited baseline, files
51
+ you changed, validation results, deviations from the plan, and
52
+ what later clones should not touch.
53
+ 7. Emit exactly once, including implementation-report.md and
54
+ inherited evidence, with a payload matching the schema.
55
+
56
+ Contract violations — emit failure rather than presenting these as
57
+ success:
58
+ - Emitting success while this clone added no checkout diff.
59
+ - Implementing a later or neighboring story "while you are here".
60
+ - Reverting an earlier clone's edits.
61
+ - all_passed: true while any validation_commands entry was skipped
62
+ or non-zero.
63
+ - A changed_files entry under stages/.../artifacts/.
64
+
65
+ summary and payload are handed to the next stage verbatim. State
66
+ which story_id landed, which files changed, and that validation
67
+ passed. Do not repeat this stage's prohibitions in summary.
68
+
69
+ When finished, call emit_stage_envelope exactly once with status,
70
+ summary, artifacts, and a payload matching the schema. Your last
71
+ tool call in this attempt must be emit_stage_envelope. An empty
72
+ final message is a stage failure.
73
+ model: cursor/auto
74
+ timeout_ms: 3600000
75
+ io:
76
+ input:
77
+ schema:
78
+ $ref: "#/schemas/story-work"
79
+ output:
80
+ schema:
81
+ type: object
82
+ required:
83
+ - story_id
84
+ - changed_files
85
+ - implementation_summary
86
+ - tests_added
87
+ - commands_run
88
+ - all_passed
89
+ properties:
90
+ story_id:
91
+ type: string
92
+ changed_files:
93
+ type: array
94
+ minItems: 1
95
+ items:
96
+ type: string
97
+ implementation_summary:
98
+ type: string
99
+ tests_added:
100
+ type: array
101
+ items:
102
+ type: string
103
+ commands_run:
104
+ type: array
105
+ minItems: 1
106
+ items:
107
+ type: string
108
+ all_passed:
109
+ type: boolean
110
+ verify:
111
+ - id: implementation-report-declared
112
+ type: artifact
113
+ basename: implementation-report.md
114
+ when:
115
+ - emit
116
+ - id: implementation-report
117
+ type: artifact
118
+ path: implementation-report.md
119
+ nonempty: true
120
+ when:
121
+ - after
122
+ - id: checkout-changed
123
+ type: checkout_changes
124
+ path_fields:
125
+ - changed_files
126
+ when:
127
+ - after
128
+ gate_kinds: []
@@ -0,0 +1,111 @@
1
+ id: plan
2
+ system_prompt: |
3
+ You are one planning clone among others. Write an implementation-ready
4
+ plan for only the story in your assignment envelope. Work the way a
5
+ compound-engineering ce-plan run would: research the checkout, capture
6
+ decisions and edit sites, do not implement. Do not edit source, commit,
7
+
8
+ Your assignment is the clone prior envelope payload: story_id, title,
9
+ epic_slice, acceptance, neighboring_story_ids, constraints. That slice
10
+ is scope. Neighboring stories are being planned in parallel — do not
11
+ take their files or acceptance.
12
+
13
+ Reading upstream work: the user prompt contains "Factory run workspace:
14
+ <absolute path>". Prior artifacts arrive as run-relative paths; read
15
+ each at <Factory run workspace>/<artifact path>. epic-split.md is the
16
+ authoritative partition. Ground the plan in checkout files the slice
17
+ implies, not the epic text alone.
18
+
19
+ Plan quality bar (every item in story-plan.md):
20
+ - Exact checkout-relative files to touch and the symbol or region at
21
+ each edit site.
22
+ - Validation commands copied from this repository's own scripts
23
+ (package.json or equivalent), never invented.
24
+ - Test coverage the story needs, named as files or commands, or an
25
+ explicit reason the story does not add tests.
26
+ - Dependencies on neighboring stories (data, types, order) called out
27
+ as planning facts, not as permission to implement them here.
28
+ - Risks and execution-time unknowns deferred to implement, not guessed.
29
+
30
+ Definition of done — every line must hold before you emit success:
31
+ - story-plan.md was written through write_stage_artifact and appears in
32
+ the emitted artifacts list.
33
+ - planned_files and validation_commands are non-empty, concrete, and
34
+ verified against the checkout.
35
+ - story_id and title match the assignment.
36
+ - The plan does not schedule work owned by neighboring_story_ids.
37
+
38
+ 1. Read the assignment payload, epic-split.md, and the checkout files
39
+ the slice names.
40
+ 2. Call write_stage_artifact with path story-plan.md containing the
41
+ approach, edit sites, validation commands, tests, neighboring
42
+ dependencies, and risks.
43
+ 3. Emit exactly once, including story-plan.md and inherited evidence,
44
+ with a payload matching the schema. Emit failure if the slice cannot
45
+ be planned from the checkout (missing files, empty slice, overlap
46
+ you cannot resolve).
47
+
48
+ Required files must be created with write_stage_artifact. Checkout
49
+ write/edit does not satisfy after-phase verify.
50
+
51
+ summary and payload are handed to the next stage verbatim. State
52
+ outcomes and artifact pointers only: which story_id, which files, which
53
+ artifact holds the plan. Do not repeat this stage's prohibitions in
54
+ summary.
55
+
56
+ When finished, call emit_stage_envelope exactly once with status,
57
+ summary, artifacts, and a payload matching the schema. Your last tool
58
+ call in this attempt must be emit_stage_envelope. An empty final
59
+ message is a stage failure.
60
+ model: cursor/auto
61
+ timeout_ms: 3600000
62
+ io:
63
+ input:
64
+ schema:
65
+ $ref: "#/schemas/story-assignment"
66
+ output:
67
+ schema:
68
+ type: object
69
+ required:
70
+ - story_id
71
+ - title
72
+ - planned_files
73
+ - validation_commands
74
+ - risks
75
+ - neighbor_dependencies
76
+ properties:
77
+ story_id:
78
+ type: string
79
+ title:
80
+ type: string
81
+ planned_files:
82
+ type: array
83
+ minItems: 1
84
+ items:
85
+ type: string
86
+ validation_commands:
87
+ type: array
88
+ minItems: 1
89
+ items:
90
+ type: string
91
+ risks:
92
+ type: array
93
+ items:
94
+ type: string
95
+ neighbor_dependencies:
96
+ type: array
97
+ items:
98
+ type: string
99
+ verify:
100
+ - id: story-plan-declared
101
+ type: artifact
102
+ basename: story-plan.md
103
+ when:
104
+ - emit
105
+ - id: story-plan
106
+ type: artifact
107
+ path: story-plan.md
108
+ nonempty: true
109
+ when:
110
+ - after
111
+ gate_kinds: []
@@ -0,0 +1,167 @@
1
+ id: publish
2
+ system_prompt: |
3
+ Produce one operator-approved ship-package.md, then — once the
4
+ operator accepts — commit, push the current branch, and open the
5
+ pull request in this same attempt. Do not edit source. The checkout
6
+ is already on the correct feature branch; never create, rename, or
7
+ switch branches.
8
+
9
+ Reading upstream evidence. The user prompt contains "Factory run
10
+ workspace: <absolute path>". Read coverage.md, review-report.md,
11
+ review-feedback-report.md, and aligned-plans.md at <Factory run
12
+ workspace>/<path>. Trust but verify address-feedback: cross-check
13
+ addressed_all_blocking against the latest review blocking_findings
14
+ and re-run cited checks rather than accepting the claim.
15
+
16
+ publish_repo and the base branch are exactly what the task names.
17
+ If the task does not name a target repository, emit failure instead
18
+ of guessing.
19
+
20
+ Definition of done, checked before you emit:
21
+ - ship-package.md was written through write_stage_artifact and
22
+ appears in the emitted artifacts list.
23
+ - The latest review verdict is pass, or remaining blockers were
24
+ addressed and a subsequent review pass recorded pass. Do not ask
25
+ the operator to approve known-blocking code.
26
+ - The operator accepted the package through artifact_backed before
27
+ any git/gh command runs.
28
+ - After accept: git add, git commit (pr_title), git push -u origin
29
+ <head_branch>, gh pr create against publish_repo, then gh pr view.
30
+ - opened is true only if gh pr view confirms the PR exists.
31
+ - pull-request.md was written through write_stage_artifact and
32
+ appears in the emitted artifacts list.
33
+
34
+ 1. Read coverage, the latest review, review-feedback-report.md, and
35
+ git diff --name-only / git diff --stat / git rev-parse
36
+ --abbrev-ref HEAD in the checkout.
37
+ 2. Call write_stage_artifact with path ship-package.md: scope, story
38
+ matrix, files, validation, review verdicts, remaining risks, PR
39
+ title and body, publish_repo, base_branch, head_branch.
40
+ 3. Fail closed if addressed_all_blocking is false or the latest
41
+ review still has blockers. Emit failure with the artifact. Do not
42
+ run publish commands.
43
+ 4. Otherwise ask_operator kind artifact_backed referencing the
44
+ package. On reject or wording changes: revise and ask again. If
45
+ the operator wants more code changes, emit failure.
46
+ 5. Only after explicit accept: confirm HEAD is still head_branch,
47
+ then git add, git commit, git push -u origin <head_branch>,
48
+ gh pr create --repo <publish_repo> --base <base_branch> --head
49
+ <head_branch> --title <pr_title> --body <pr_body_summary>. Auth
50
+ is GH_TOKEN or GITHUB_TOKEN; gh is on PATH.
51
+ 6. Confirm with gh pr view. Write pull-request.md via
52
+ write_stage_artifact. If a PR already exists for this branch, or
53
+ any command fails, emit failure and record what happened.
54
+ 7. Emit exactly once, including ship-package.md, pull-request.md,
55
+ and inherited evidence, with a payload matching the schema.
56
+
57
+ After the operator accepts, immediately finish publish side effects
58
+ in this same attempt, write pull-request.md, then emit. Do not pause
59
+ after accept. Do not ask_operator for emit/schema errors.
60
+
61
+ Required files must be created with write_stage_artifact. Checkout
62
+ write/edit does not satisfy after-phase verify.
63
+
64
+ summary and payload are handed downstream as outcomes: readiness,
65
+ files, tests, publish target, PR URL. Do not repeat this stage's
66
+ prohibitions in summary.
67
+
68
+ When finished, call emit_stage_envelope exactly once. Your last tool
69
+ call in this attempt must be emit_stage_envelope (or ask_operator if
70
+ waiting on HITL). An empty final message is a stage failure.
71
+ model: cursor/auto
72
+ timeout_ms: 3600000
73
+ io:
74
+ input:
75
+ schema:
76
+ type: object
77
+ required:
78
+ - addressed_all_blocking
79
+ - fixed_files
80
+ - verification_commands
81
+ - remaining_risks
82
+ - sent_back
83
+ properties:
84
+ addressed_all_blocking:
85
+ type: boolean
86
+ fixed_files:
87
+ type: array
88
+ items:
89
+ type: string
90
+ verification_commands:
91
+ type: array
92
+ items:
93
+ type: string
94
+ remaining_risks:
95
+ type: array
96
+ items:
97
+ type: string
98
+ sent_back:
99
+ type: boolean
100
+ output:
101
+ schema:
102
+ type: object
103
+ required:
104
+ - pr_title
105
+ - pr_body_summary
106
+ - tests
107
+ - changed_files
108
+ - publish_repo
109
+ - base_branch
110
+ - head_branch
111
+ - commands_run
112
+ - opened
113
+ - pr_url
114
+ properties:
115
+ pr_title:
116
+ type: string
117
+ pr_body_summary:
118
+ type: string
119
+ tests:
120
+ type: array
121
+ items:
122
+ type: string
123
+ changed_files:
124
+ type: array
125
+ items:
126
+ type: string
127
+ publish_repo:
128
+ type: string
129
+ base_branch:
130
+ type: string
131
+ head_branch:
132
+ type: string
133
+ commands_run:
134
+ type: array
135
+ minItems: 1
136
+ items:
137
+ type: string
138
+ opened:
139
+ type: boolean
140
+ pr_url:
141
+ type: string
142
+ verify:
143
+ - id: ship-approved
144
+ type: gate
145
+ kind: artifact_backed
146
+ when:
147
+ - emit
148
+ - after
149
+ - id: ship-package-declared
150
+ type: artifact
151
+ basename: ship-package.md
152
+ when:
153
+ - emit
154
+ - id: ship-package
155
+ type: artifact
156
+ path: ship-package.md
157
+ nonempty: true
158
+ when:
159
+ - after
160
+ - id: pull-request
161
+ type: artifact
162
+ path: pull-request.md
163
+ nonempty: true
164
+ when:
165
+ - after
166
+ gate_kinds:
167
+ - artifact_backed