stageflow 0.25.0 → 0.27.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.
- package/README.md +10 -3
- package/dist/a2a/contracts.d.ts +1 -0
- package/dist/a2a/contracts.js +1 -0
- package/dist/a2a/registry.d.ts +2 -0
- package/dist/a2a/registry.js +20 -1
- package/dist/a2a/server.d.ts +7 -0
- package/dist/a2a/server.js +5 -2
- package/dist/a2a/service.d.ts +1 -1
- package/dist/a2a/service.js +57 -8
- package/dist/a2a/store.d.ts +8 -5
- package/dist/a2a/store.js +24 -67
- package/dist/agent/activity.d.ts +3 -0
- package/dist/agent/bootProviderConfig.d.ts +21 -0
- package/dist/agent/bootProviderConfig.js +74 -0
- package/dist/agent/piAdapter.d.ts +9 -1
- package/dist/agent/piAdapter.js +58 -3
- package/dist/agent/piIsolatedMcp.d.ts +2 -0
- package/dist/agent/piIsolatedMcp.js +10 -2
- package/dist/agent/port.d.ts +6 -0
- package/dist/agent/streamLogRedact.d.ts +1 -1
- package/dist/agent/streamLogRedact.js +4 -11
- package/dist/cli/artifactCommand.js +9 -16
- package/dist/cli/backupCommand.d.ts +9 -0
- package/dist/cli/backupCommand.js +111 -0
- package/dist/cli/debugRunCommand.d.ts +10 -0
- package/dist/cli/debugRunCommand.js +109 -0
- package/dist/cli/doctorCommand.d.ts +32 -0
- package/dist/cli/doctorCommand.js +453 -0
- package/dist/cli/envelopeCommand.js +9 -2
- package/dist/cli/exportAllCommand.d.ts +55 -0
- package/dist/cli/exportAllCommand.js +218 -0
- package/dist/cli/exportRunCommand.js +23 -21
- package/dist/cli/hostClient.d.ts +21 -3
- package/dist/cli/hostClient.js +93 -12
- package/dist/cli/initTemplates.d.ts +1 -1
- package/dist/cli/initTemplates.js +8 -1
- package/dist/cli/resolveSafeOutPath.d.ts +2 -0
- package/dist/cli/resolveSafeOutPath.js +40 -0
- package/dist/cli/restoreCommand.d.ts +10 -0
- package/dist/cli/restoreCommand.js +90 -0
- package/dist/cli/runCommand.d.ts +3 -2
- package/dist/cli/runCommand.js +93 -11
- package/dist/cli/runOutput.d.ts +4 -0
- package/dist/cli/runOutput.js +33 -7
- package/dist/cli/runStageCommand.d.ts +1 -0
- package/dist/cli/runStageCommand.js +44 -25
- package/dist/cli/runsCommand.d.ts +1 -1
- package/dist/cli/runsCommand.js +162 -8
- package/dist/cli.js +171 -30
- package/dist/config/catalogRelativePath.d.ts +62 -0
- package/dist/config/catalogRelativePath.js +118 -0
- package/dist/config/configOrigin.d.ts +27 -0
- package/dist/config/configOrigin.js +59 -0
- package/dist/config/hostConfig.d.ts +55 -0
- package/dist/config/hostConfig.js +333 -0
- package/dist/config/listSkills.d.ts +26 -0
- package/dist/config/listSkills.js +190 -3
- package/dist/config/loadOutcome.d.ts +1 -1
- package/dist/config/loadPipeline.js +23 -2
- package/dist/config/loadStage.js +18 -0
- package/dist/config/loadTask.d.ts +2 -0
- package/dist/config/loadTask.js +57 -18
- package/dist/config/materializeStageModels.js +5 -1
- package/dist/config/mergePipelineIncludes.d.ts +3 -0
- package/dist/config/mergePipelineIncludes.js +19 -0
- package/dist/config/migrateYaml.js +6 -11
- package/dist/config/multiProjectCatalog.d.ts +30 -0
- package/dist/config/multiProjectCatalog.js +142 -0
- package/dist/config/normalizePipelineStageEntry.js +20 -1
- package/dist/config/pipelineStageKeys.js +2 -0
- package/dist/config/resolveCatalogRoots.d.ts +27 -0
- package/dist/config/resolveCatalogRoots.js +76 -0
- package/dist/config/resolveModel.d.ts +7 -1
- package/dist/config/resolveModel.js +11 -1
- package/dist/config/resolveStageMcpServers.d.ts +9 -1
- package/dist/config/resolveStageMcpServers.js +36 -9
- package/dist/config/secretFromEnvOrFile.d.ts +9 -0
- package/dist/config/secretFromEnvOrFile.js +34 -0
- package/dist/config/seededCatalog.d.ts +11 -0
- package/dist/config/seededCatalog.js +29 -0
- package/dist/config/toolRequires.d.ts +24 -0
- package/dist/config/toolRequires.js +115 -0
- package/dist/config/validateCatalog.d.ts +5 -1
- package/dist/config/validateCatalog.js +140 -1
- package/dist/diagnostics/checks.d.ts +39 -0
- package/dist/diagnostics/checks.js +135 -0
- package/dist/errors/codes.d.ts +14 -0
- package/dist/errors/codes.js +59 -0
- package/dist/git/cache.d.ts +14 -0
- package/dist/git/cache.js +150 -0
- package/dist/git/credentials.d.ts +9 -0
- package/dist/git/credentials.js +88 -0
- package/dist/git/errors.d.ts +20 -0
- package/dist/git/errors.js +94 -0
- package/dist/git/exec.d.ts +16 -0
- package/dist/git/exec.js +135 -0
- package/dist/git/operations.d.ts +29 -0
- package/dist/git/operations.js +153 -0
- package/dist/git/version.d.ts +1 -0
- package/dist/git/version.js +10 -0
- package/dist/logging/audit.d.ts +16 -0
- package/dist/logging/audit.js +19 -0
- package/dist/logging/commonWords.d.ts +2 -0
- package/dist/logging/commonWords.js +13 -0
- package/dist/logging/logger.d.ts +49 -0
- package/dist/logging/logger.js +193 -0
- package/dist/logging/namedSecrets.d.ts +6 -0
- package/dist/logging/namedSecrets.js +58 -0
- package/dist/logging/redact.d.ts +13 -0
- package/dist/logging/redact.js +88 -0
- package/dist/mcp/catalogTools.js +456 -80
- package/dist/mcp/checkoutTools.d.ts +52 -0
- package/dist/mcp/checkoutTools.js +332 -0
- package/dist/mcp/controlTools.js +179 -5
- package/dist/mcp/deps.d.ts +1 -0
- package/dist/mcp/getStartedTool.d.ts +3 -0
- package/dist/mcp/getStartedTool.js +62 -0
- package/dist/mcp/readArtifact.d.ts +11 -0
- package/dist/mcp/readArtifact.js +46 -30
- package/dist/mcp/server.js +1 -0
- package/dist/mcp/tools.js +4 -0
- package/dist/net/proxy.d.ts +14 -0
- package/dist/net/proxy.js +78 -0
- package/dist/package-meta.d.ts +2 -1
- package/dist/package-meta.js +2 -1
- package/dist/preflight/bash.d.ts +8 -0
- package/dist/preflight/bash.js +34 -0
- package/dist/preflight/claudeRoot.d.ts +11 -0
- package/dist/preflight/claudeRoot.js +23 -0
- package/dist/preflight/mcpCommands.d.ts +8 -0
- package/dist/preflight/mcpCommands.js +36 -0
- package/dist/preflight/pipelinePreflight.d.ts +40 -0
- package/dist/preflight/pipelinePreflight.js +192 -0
- package/dist/preflight/tls.d.ts +6 -0
- package/dist/preflight/tls.js +18 -0
- package/dist/preflight/toolchain.d.ts +45 -0
- package/dist/preflight/toolchain.js +219 -0
- package/dist/project/findProjectRoot.js +3 -4
- package/dist/project/globalHome.d.ts +7 -0
- package/dist/project/globalHome.js +63 -2
- package/dist/project/resolveProjectContext.js +2 -2
- package/dist/project/resolveStageflowContext.js +2 -2
- package/dist/projection/projectRun.d.ts +2 -1
- package/dist/projection/projectRun.js +1 -0
- package/dist/runstore/assertTmpdir.d.ts +1 -0
- package/dist/runstore/assertTmpdir.js +21 -0
- package/dist/runstore/backup.d.ts +52 -0
- package/dist/runstore/backup.js +292 -0
- package/dist/runstore/createStore.d.ts +18 -1
- package/dist/runstore/createStore.js +64 -5
- package/dist/runstore/debugBundle.d.ts +60 -0
- package/dist/runstore/debugBundle.js +143 -0
- package/dist/runstore/diskUsage.d.ts +50 -0
- package/dist/runstore/diskUsage.js +214 -0
- package/dist/runstore/exportRunPayload.d.ts +8 -0
- package/dist/runstore/exportRunPayload.js +23 -0
- package/dist/runstore/normalizeCatalogPath.d.ts +1 -0
- package/dist/runstore/normalizeCatalogPath.js +10 -0
- package/dist/runstore/paths.d.ts +5 -0
- package/dist/runstore/paths.js +145 -1
- package/dist/runstore/port.d.ts +111 -13
- package/dist/runstore/port.js +8 -1
- package/dist/runstore/restore.d.ts +81 -0
- package/dist/runstore/restore.js +355 -0
- package/dist/runstore/retention.d.ts +27 -0
- package/dist/runstore/retention.js +74 -0
- package/dist/runstore/runManifest.d.ts +146 -0
- package/dist/runstore/runManifest.js +288 -0
- package/dist/runstore/runProjection.d.ts +3 -1
- package/dist/runstore/runProjection.js +63 -1
- package/dist/runstore/sqlite/SqliteRunStore.d.ts +28 -3
- package/dist/runstore/sqlite/SqliteRunStore.js +352 -219
- package/dist/runstore/sqlite/applyStorePragmas.d.ts +39 -0
- package/dist/runstore/sqlite/applyStorePragmas.js +145 -0
- package/dist/runstore/sqlite/migrations/001-baseline.d.ts +7 -0
- package/dist/runstore/sqlite/migrations/001-baseline.js +10 -0
- package/dist/runstore/sqlite/migrations/002-repository-binding.d.ts +7 -0
- package/dist/runstore/sqlite/migrations/002-repository-binding.js +29 -0
- package/dist/runstore/sqlite/migrations/003-run-lifecycle.d.ts +7 -0
- package/dist/runstore/sqlite/migrations/003-run-lifecycle.js +28 -0
- package/dist/runstore/sqlite/migrations/004-auto-resume-count.d.ts +7 -0
- package/dist/runstore/sqlite/migrations/004-auto-resume-count.js +19 -0
- package/dist/runstore/sqlite/migrations/005-config-origins.d.ts +7 -0
- package/dist/runstore/sqlite/migrations/005-config-origins.js +19 -0
- package/dist/runstore/sqlite/migrations/006-pipeline-body-and-caller.d.ts +7 -0
- package/dist/runstore/sqlite/migrations/006-pipeline-body-and-caller.js +28 -0
- package/dist/runstore/sqlite/migrations/007-projects-registry.d.ts +7 -0
- package/dist/runstore/sqlite/migrations/007-projects-registry.js +31 -0
- package/dist/runstore/sqlite/migrations/index.d.ts +21 -0
- package/dist/runstore/sqlite/migrations/index.js +72 -0
- package/dist/runstore/sqlite/schema.d.ts +20 -1
- package/dist/runstore/sqlite/schema.js +277 -1
- package/dist/runstore/sqlite/storeOpenError.d.ts +6 -0
- package/dist/runstore/sqlite/storeOpenError.js +11 -0
- package/dist/runstore/sqlite/storeSchemaError.d.ts +5 -0
- package/dist/runstore/sqlite/storeSchemaError.js +8 -0
- package/dist/runstore/stageExecution.js +3 -0
- package/dist/runstore/storeFilesystem.d.ts +32 -0
- package/dist/runstore/storeFilesystem.js +148 -0
- package/dist/runstore/trackProjection.js +2 -0
- package/dist/runstore/workspaceLayout.d.ts +13 -0
- package/dist/runstore/workspaceLayout.js +76 -0
- package/dist/runtime/completionCheckRunner.d.ts +3 -0
- package/dist/runtime/completionCheckRunner.js +45 -7
- package/dist/runtime/containerLimits.d.ts +16 -0
- package/dist/runtime/containerLimits.js +84 -0
- package/dist/runtime/credentialMaterialisation.d.ts +28 -0
- package/dist/runtime/credentialMaterialisation.js +128 -0
- package/dist/runtime/gitCheckoutCapability.js +7 -13
- package/dist/runtime/pipelineRunner.d.ts +36 -1
- package/dist/runtime/pipelineRunner.js +178 -17
- package/dist/runtime/pipelineScheduler.d.ts +15 -0
- package/dist/runtime/pipelineScheduler.js +135 -27
- package/dist/runtime/reloadRunCatalog.js +6 -1
- package/dist/runtime/repositoryMaterialize.d.ts +47 -0
- package/dist/runtime/repositoryMaterialize.js +235 -0
- package/dist/runtime/resumeTimedOut.d.ts +1 -1
- package/dist/runtime/resumeTimedOut.js +5 -2
- package/dist/runtime/runChangeBus.js +9 -0
- package/dist/runtime/runDeletion.d.ts +7 -0
- package/dist/runtime/runDeletion.js +37 -0
- package/dist/runtime/runManager.d.ts +158 -4
- package/dist/runtime/runManager.js +1596 -79
- package/dist/runtime/runRetentionSweep.d.ts +31 -0
- package/dist/runtime/runRetentionSweep.js +328 -0
- package/dist/runtime/runRetryCoordinator.d.ts +2 -0
- package/dist/runtime/runRetryCoordinator.js +19 -2
- package/dist/runtime/runSkills.d.ts +40 -0
- package/dist/runtime/runSkills.js +173 -0
- package/dist/runtime/stageAttemptBootstrap.d.ts +5 -1
- package/dist/runtime/stageAttemptBootstrap.js +195 -24
- package/dist/runtime/stageCacheEnv.d.ts +6 -0
- package/dist/runtime/stageCacheEnv.js +34 -0
- package/dist/runtime/stageConcurrency.d.ts +2 -1
- package/dist/runtime/stageConcurrency.js +4 -2
- package/dist/runtime/stageEnvironment.d.ts +38 -0
- package/dist/runtime/stageEnvironment.js +193 -0
- package/dist/runtime/stageProcessLauncher.d.ts +18 -0
- package/dist/runtime/stageProcessLauncher.js +194 -38
- package/dist/runtime/stageRecovery.d.ts +3 -1
- package/dist/runtime/stageRecovery.js +19 -4
- package/dist/runtime/stageRoots.d.ts +38 -1
- package/dist/runtime/stageRoots.js +118 -0
- package/dist/runtime/stageRunner.d.ts +1 -0
- package/dist/runtime/stageRunner.js +3 -1
- package/dist/runtime/stageSecretDecl.d.ts +9 -0
- package/dist/runtime/stageSecretDecl.js +102 -0
- package/dist/runtime/stageSecrets.d.ts +40 -0
- package/dist/runtime/stageSecrets.js +181 -0
- package/dist/runtime/stageWorker.d.ts +3 -2
- package/dist/runtime/stageWorker.js +58 -10
- package/dist/runtime/stageWorkerProtocol.d.ts +5 -0
- package/dist/runtime/stageWorkerProtocol.js +8 -0
- package/dist/runtime/startPayload.d.ts +32 -0
- package/dist/runtime/startPayload.js +59 -0
- package/dist/runtime/taskInput.js +14 -5
- package/dist/runtime/verifiedStageExecution.d.ts +1 -0
- package/dist/runtime/verifiedStageExecution.js +2 -1
- package/dist/runtime/workspaceBinding.d.ts +20 -0
- package/dist/runtime/workspaceBinding.js +60 -0
- package/dist/server/allowedHosts.d.ts +19 -0
- package/dist/server/allowedHosts.js +179 -0
- package/dist/server/bootstrap.d.ts +36 -2
- package/dist/server/bootstrap.js +209 -5
- package/dist/server/controlToken.d.ts +47 -0
- package/dist/server/controlToken.js +241 -0
- package/dist/server/createHttpHost.d.ts +11 -2
- package/dist/server/createHttpHost.js +103 -10
- package/dist/server/ensureGlobalService.d.ts +5 -1
- package/dist/server/ensureGlobalService.js +35 -1
- package/dist/server/healthSurfaces.d.ts +6 -0
- package/dist/server/healthSurfaces.js +98 -0
- package/dist/server/http.d.ts +12 -1
- package/dist/server/http.js +1085 -485
- package/dist/server/listenHost.d.ts +5 -0
- package/dist/server/listenHost.js +56 -0
- package/dist/server/mcpHost.d.ts +10 -1
- package/dist/server/mcpHost.js +36 -6
- package/dist/server/operatorResults.d.ts +2 -2
- package/dist/server/operatorResults.js +40 -29
- package/dist/server/requestAuthContext.d.ts +12 -0
- package/dist/server/requestAuthContext.js +21 -0
- package/dist/server/shutdown.d.ts +69 -0
- package/dist/server/shutdown.js +219 -0
- package/dist/types/pipeline.d.ts +7 -0
- package/dist/types/stage.d.ts +8 -0
- package/dist/types/task.d.ts +8 -0
- package/dist/ui/assets/index-B6hlSXXn.js +120 -0
- package/dist/ui/index.html +1 -1
- package/examples/README.md +98 -0
- package/examples/archify-on-pr/README.md +213 -0
- package/examples/archify-on-pr/archify-on-pr.pipeline.yaml +19 -0
- package/examples/archify-on-pr/archify-on-pr.task.yaml +19 -0
- package/examples/archify-on-pr/author-diagrams.yaml +106 -0
- package/examples/archify-on-pr/detect-changes.yaml +89 -0
- package/examples/ci-validate/README.md +35 -0
- package/examples/ci-validate/check.yaml +13 -0
- package/examples/ci-validate/ci-demo.pipeline.yaml +4 -0
- package/examples/ci-validate/validate.sh +5 -0
- package/examples/compliance-review-demo/README.md +125 -0
- package/examples/compliance-review-demo/compliance-review-demo.pipeline.yaml +29 -0
- package/examples/compliance-review-demo/connect-account.yaml +47 -0
- package/examples/compliance-review-demo/map-to-control.yaml +123 -0
- package/examples/compliance-review-demo/poll-bucket-config.yaml +103 -0
- package/examples/compliance-review-demo/publish-report.yaml +79 -0
- package/examples/compliance-review-demo/review-verdict.yaml +122 -0
- package/examples/compliance-review-demo/run-compliance-check.yaml +96 -0
- package/examples/compliance-review-demo/store-evidence.yaml +143 -0
- package/examples/conditional-fork/README.md +89 -0
- package/examples/conditional-fork/branch-a.yaml +13 -0
- package/examples/conditional-fork/branch-b.yaml +13 -0
- package/examples/conditional-fork/decide.yaml +35 -0
- package/examples/conditional-fork/fork-demo.pipeline.yaml +20 -0
- package/examples/conditional-fork/fork-demo.task.yaml +8 -0
- package/examples/context7-mcp/README.md +42 -0
- package/examples/context7-mcp/context7-mcp.pipeline.yaml +15 -0
- package/examples/context7-mcp/context7-mcp.task.yaml +4 -0
- package/examples/context7-mcp/fetch-docs.yaml +52 -0
- package/examples/context7-mcp/resolve-library.yaml +31 -0
- package/examples/context7-mcp/write-brief.yaml +52 -0
- package/examples/feature-loop/README.md +104 -0
- package/examples/feature-loop/address-feedback.yaml +148 -0
- package/examples/feature-loop/align.yaml +116 -0
- package/examples/feature-loop/decompose.yaml +86 -0
- package/examples/feature-loop/default-model-hierarchy.task.yaml +58 -0
- package/examples/feature-loop/feature-loop.pipeline.yaml +140 -0
- package/examples/feature-loop/feature-loop.task.yaml +25 -0
- package/examples/feature-loop/implement.yaml +128 -0
- package/examples/feature-loop/plan.yaml +111 -0
- package/examples/feature-loop/publish.yaml +167 -0
- package/examples/feature-loop/review.yaml +146 -0
- package/examples/feature-loop/verify.yaml +106 -0
- package/examples/feedback-loop/README.md +72 -0
- package/examples/feedback-loop/VERIFY.md +208 -0
- package/examples/feedback-loop/continue-only.task.yaml +4 -0
- package/examples/feedback-loop/exhaust-require-continue.task.yaml +6 -0
- package/examples/feedback-loop/exhaust-wait-human.task.yaml +11 -0
- package/examples/feedback-loop/feedback-loop-wait-human.pipeline.yaml +23 -0
- package/examples/feedback-loop/feedback-loop.pipeline.yaml +23 -0
- package/examples/feedback-loop/feedback-loop.task.yaml +4 -0
- package/examples/feedback-loop/implement.yaml +14 -0
- package/examples/feedback-loop/plan.yaml +14 -0
- package/examples/feedback-loop/review.yaml +15 -0
- package/examples/feedback-loop/send-back-once.task.yaml +6 -0
- package/examples/feedback-loop/submit.yaml +12 -0
- package/examples/generic-fan-in/README.md +151 -0
- package/examples/generic-fan-in/clarify.yaml +18 -0
- package/examples/generic-fan-in/generic-fan-in-accepted.pipeline.yaml +19 -0
- package/examples/generic-fan-in/generic-fan-in-accepted.task.yaml +8 -0
- package/examples/generic-fan-in/generic-fan-in.pipeline.yaml +18 -0
- package/examples/generic-fan-in/generic-fan-in.task.yaml +9 -0
- package/examples/generic-fan-in/research.yaml +45 -0
- package/examples/generic-fan-in/synthesize.yaml +66 -0
- package/examples/generic-fan-in/validation.yaml +45 -0
- package/examples/github-release/README.md +78 -0
- package/examples/github-release/draft-release-notes.yaml +64 -0
- package/examples/github-release/github-release.pipeline.yaml +11 -0
- package/examples/github-release/github-release.task.yaml +13 -0
- package/examples/github-release/publish-github-release.yaml +64 -0
- package/examples/hello-world/README.md +28 -0
- package/examples/hello-world/hello.pipeline.yaml +4 -0
- package/examples/hello-world/my-task.task.yaml +6 -0
- package/examples/hello-world/research.yaml +18 -0
- package/examples/mcp-hitl-tour/README.md +113 -0
- package/examples/mcp-hitl-tour/draft-angle.yaml +33 -0
- package/examples/mcp-hitl-tour/draft-short.yaml +32 -0
- package/examples/mcp-hitl-tour/emit-angles.yaml +45 -0
- package/examples/mcp-hitl-tour/gather.yaml +31 -0
- package/examples/mcp-hitl-tour/intake.yaml +62 -0
- package/examples/mcp-hitl-tour/mcp-hitl-tour-exhaust.task.yaml +13 -0
- package/examples/mcp-hitl-tour/mcp-hitl-tour.pipeline.yaml +54 -0
- package/examples/mcp-hitl-tour/mcp-hitl-tour.task.yaml +16 -0
- package/examples/mcp-hitl-tour/polish.yaml +33 -0
- package/examples/mcp-hitl-tour/review.yaml +17 -0
- package/examples/mcp-hitl-tour/ship.yaml +25 -0
- package/examples/oss-issue-contribution/README.md +218 -0
- package/examples/oss-issue-contribution/oss-address-review-feedback.yaml +117 -0
- package/examples/oss-issue-contribution/oss-approve-contribution.yaml +181 -0
- package/examples/oss-issue-contribution/oss-approve-plan.yaml +111 -0
- package/examples/oss-issue-contribution/oss-explain-fix.yaml +108 -0
- package/examples/oss-issue-contribution/oss-explain-issue.yaml +114 -0
- package/examples/oss-issue-contribution/oss-implement-source-fix.yaml +171 -0
- package/examples/oss-issue-contribution/oss-investigate-area.yaml +116 -0
- package/examples/oss-issue-contribution/oss-issue-contribution.pipeline.yaml +125 -0
- package/examples/oss-issue-contribution/oss-issue-intake.yaml +106 -0
- package/examples/oss-issue-contribution/oss-plan-investigation.yaml +112 -0
- package/examples/oss-issue-contribution/oss-plan-review.yaml +109 -0
- package/examples/oss-issue-contribution/oss-reproduce-issue.yaml +140 -0
- package/examples/oss-issue-contribution/oss-review-change.yaml +107 -0
- package/examples/oss-issue-contribution/oss-verify-fix.yaml +130 -0
- package/examples/oss-issue-contribution/oss-write-regression-test.yaml +135 -0
- package/examples/oss-issue-contribution/pi-7629.task.yaml +79 -0
- package/examples/oss-issue-contribution/pi-8919.task.yaml +75 -0
- package/examples/oss-issue-contribution/pydantic-ai-7971.task.yaml +53 -0
- package/examples/oss-quick-fix/README.md +65 -0
- package/examples/oss-quick-fix/implement-fix.yaml +84 -0
- package/examples/oss-quick-fix/oss-quick-fix.pipeline.yaml +35 -0
- package/examples/oss-quick-fix/oss-quick-fix.task.yaml +19 -0
- package/examples/oss-quick-fix/ship-fix.yaml +81 -0
- package/examples/oss-quick-fix/understand-issue.yaml +67 -0
- package/examples/oss-quick-fix/verify-fix.yaml +73 -0
- package/examples/plan-review/README.md +37 -0
- package/examples/plan-review/plan-review-followup.yaml +13 -0
- package/examples/plan-review/plan-review.pipeline.yaml +9 -0
- package/examples/plan-review/plan-review.task.yaml +9 -0
- package/examples/plan-review/plan-review.yaml +25 -0
- package/examples/playwright-mcp/README.md +39 -0
- package/examples/playwright-mcp/playwright-mcp.pipeline.yaml +5 -0
- package/examples/playwright-mcp/playwright-mcp.task.yaml +4 -0
- package/examples/playwright-mcp/screenshot.yaml +40 -0
- package/examples/retry-tour/README.md +75 -0
- package/examples/retry-tour/retry-tour.pipeline.yaml +122 -0
- package/examples/retry-tour/retry-tour.task.yaml +9 -0
- package/examples/route-if-tour/README.md +202 -0
- package/examples/route-if-tour/route-if-tour.pipeline.yaml +950 -0
- package/examples/route-if-tour/route-if-tour.task.yaml +4 -0
- package/examples/route-wiring-smoke-test/01-core-routing.pipeline.yaml +168 -0
- package/examples/route-wiring-smoke-test/02-on-gating.pipeline.yaml +44 -0
- package/examples/route-wiring-smoke-test/03-two-entry-points.pipeline.yaml +28 -0
- package/examples/route-wiring-smoke-test/04-entry-false-equivalent-to-omitted.pipeline.yaml +27 -0
- package/examples/route-wiring-smoke-test/05-fork-choice.pipeline.yaml +110 -0
- package/examples/route-wiring-smoke-test/06-fan-out-fan-in.pipeline.yaml +82 -0
- package/examples/route-wiring-smoke-test/07-loop-human-decision.pipeline.yaml +82 -0
- package/examples/route-wiring-smoke-test/08-skip-fallback-and-multi-on-gate.pipeline.yaml +77 -0
- package/examples/route-wiring-smoke-test/09-multi-loop-targets.pipeline.yaml +102 -0
- package/examples/route-wiring-smoke-test/10-uses-dialect-fork.pipeline.yaml +23 -0
- package/examples/route-wiring-smoke-test/11-sequential-io-handoff.pipeline.yaml +37 -0
- package/examples/route-wiring-smoke-test/12-complex-io-schemas.pipeline.yaml +138 -0
- package/examples/route-wiring-smoke-test/13-ref-io-handoff.pipeline.yaml +84 -0
- package/examples/route-wiring-smoke-test/14-if-eq-gating.pipeline.yaml +50 -0
- package/examples/route-wiring-smoke-test/15-if-all-gated.pipeline.yaml +37 -0
- package/examples/route-wiring-smoke-test/16-if-composition.pipeline.yaml +65 -0
- package/examples/route-wiring-smoke-test/17-if-join.pipeline.yaml +80 -0
- package/examples/route-wiring-smoke-test/README.md +377 -0
- package/examples/route-wiring-smoke-test/rejected/01-reject-legacy-needs.pipeline.yaml +26 -0
- package/examples/route-wiring-smoke-test/rejected/02-reject-legacy-fork.pipeline.yaml +25 -0
- package/examples/route-wiring-smoke-test/rejected/03-reject-legacy-feedback-loop.pipeline.yaml +30 -0
- package/examples/route-wiring-smoke-test/rejected/04-reject-missing-entry.pipeline.yaml +24 -0
- package/examples/route-wiring-smoke-test/rejected/05-reject-unreachable.pipeline.yaml +35 -0
- package/examples/route-wiring-smoke-test/rejected/06-reject-allow-none-without-route-select.pipeline.yaml +37 -0
- package/examples/route-wiring-smoke-test/rejected/07-reject-cycle.pipeline.yaml +27 -0
- package/examples/route-wiring-smoke-test/rejected/08-reject-loop-non-ancestor.pipeline.yaml +42 -0
- package/examples/route-wiring-smoke-test/rejected/09-reject-route-select-leaf.pipeline.yaml +26 -0
- package/examples/route-wiring-smoke-test/rejected/12-reject-loop-replay-unsafe.pipeline.yaml +55 -0
- package/examples/route-wiring-smoke-test/rejected/13-reject-multiple-loop-entries.pipeline.yaml +51 -0
- package/examples/route-wiring-smoke-test/rejected/14-reject-duplicate-stage-id.pipeline.yaml +35 -0
- package/examples/route-wiring-smoke-test/rejected/15-reject-unknown-route-target.pipeline.yaml +15 -0
- package/examples/route-wiring-smoke-test/rejected/16-reject-malformed-route-item.pipeline.yaml +15 -0
- package/examples/route-wiring-smoke-test/rejected/17-reject-io-incompatible.pipeline.yaml +33 -0
- package/examples/route-wiring-smoke-test/rejected/18-reject-nested-io.pipeline.yaml +51 -0
- package/examples/route-wiring-smoke-test/rejected/19-reject-array-item-io.pipeline.yaml +55 -0
- package/examples/route-wiring-smoke-test/rejected/20-reject-closed-io.pipeline.yaml +36 -0
- package/examples/route-wiring-smoke-test/rejected/21-reject-ref-io.pipeline.yaml +42 -0
- package/examples/route-wiring-smoke-test/rejected/22-reject-if-unknown-field.pipeline.yaml +33 -0
- package/examples/route-wiring-smoke-test/rejected/23-reject-if-optional-field.pipeline.yaml +32 -0
- package/examples/route-wiring-smoke-test/rejected/24-reject-if-empty-all.pipeline.yaml +31 -0
- package/examples/route-wiring-smoke-test/rejected/25-reject-if-gt-on-string.pipeline.yaml +33 -0
- package/examples/route-wiring-smoke-test/rejected/26-reject-if-optional-nested.pipeline.yaml +36 -0
- package/examples/route-wiring-smoke-test/rejected/27-reject-if-on-loop.pipeline.yaml +63 -0
- package/examples/route-wiring-smoke-test/rejected/29-reject-if-on-failed.pipeline.yaml +46 -0
- package/examples/route-wiring-smoke-test/smoke-test.task.yaml +4 -0
- package/examples/route-wiring-smoke-test/stages/branch-a.yaml +12 -0
- package/examples/route-wiring-smoke-test/stages/branch-b.yaml +12 -0
- package/examples/route-wiring-smoke-test/stages/decide.yaml +12 -0
- package/examples/route-wiring-smoke-test/stages/finish.yaml +12 -0
- package/examples/ship-feature/README.md +190 -0
- package/examples/ship-feature/feat-address-feedback.yaml +119 -0
- package/examples/ship-feature/feat-implement.yaml +180 -0
- package/examples/ship-feature/feat-plan.yaml +120 -0
- package/examples/ship-feature/feat-review.yaml +109 -0
- package/examples/ship-feature/feat-ship.yaml +203 -0
- package/examples/ship-feature/ship-feature.pipeline.yaml +44 -0
- package/examples/ship-feature/ship-feature.task.yaml +78 -0
- package/examples/stage-mcp/README.md +144 -0
- package/examples/stage-mcp/echo-mcp.mjs +20 -0
- package/examples/stage-mcp/stage-mcp-dead.pipeline.yaml +5 -0
- package/examples/stage-mcp/stage-mcp-dead.task.yaml +3 -0
- package/examples/stage-mcp/stage-mcp-missing-var.pipeline.yaml +5 -0
- package/examples/stage-mcp/stage-mcp-missing-var.task.yaml +3 -0
- package/examples/stage-mcp/stage-mcp.pipeline.yaml +5 -0
- package/examples/stage-mcp/stage-mcp.task.yaml +4 -0
- package/examples/stage-mcp/use-echo.yaml +20 -0
- package/examples/verify-tour/README.md +80 -0
- package/examples/verify-tour/verify-tour.pipeline.yaml +162 -0
- package/examples/verify-tour/verify-tour.task.yaml +11 -0
- package/package.json +5 -1
- package/skills/stageflow/SKILL.md +6 -6
- package/skills/stageflow/references/control-surface.md +11 -5
- package/skills/stageflow/scripts/detect-host.mjs +14 -1
- package/skills/stageflow/scripts/detect-host.test.mjs +29 -1
- package/skills/stageflow-author/SKILL.md +4 -3
- package/skills/stageflow-author/references/catalog-mapping.md +16 -0
- package/skills/stageflow-author/references/catalog-write-conventions.md +1 -1
- package/skills/stageflow-run/SKILL.md +20 -12
- package/skills/stageflow-run/references/mcp-call.md +9 -1
- package/skills/stageflow-run/references/task-and-pipeline-selection.md +16 -5
- package/skills/stageflow-run/scripts/mcp-call.mjs +46 -6
- package/skills/stageflow-run/scripts/mcp-call.test.mjs +64 -0
- package/skills/stageflow-session-capture/references/catalog-authoring.md +2 -0
- package/skills/stageflow-setup/SKILL.md +40 -8
- package/dist/ui/assets/index-Da5EHU6M.js +0 -119
|
@@ -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
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
id: review
|
|
2
|
+
system_prompt: |
|
|
3
|
+
Review the entire implementation as one change — every story's edits
|
|
4
|
+
together, not per-story. Work the way a compound-engineering
|
|
5
|
+
ce-code-review run would: report-only, persona-quality findings,
|
|
6
|
+
no checkout edits. Do not commit, push, or open a pull request.
|
|
7
|
+
|
|
8
|
+
This is a whole-diff review. coverage.md and the union of implement
|
|
9
|
+
reports are context; git diff against the feature branch merge base
|
|
10
|
+
is the code under review. Emit success even when verdict is
|
|
11
|
+
changes_required — failure only if the review itself cannot be
|
|
12
|
+
performed.
|
|
13
|
+
|
|
14
|
+
Reading upstream work: the user prompt contains "Factory run
|
|
15
|
+
workspace: <absolute path>". Read coverage.md and inherited artifacts
|
|
16
|
+
at <Factory run workspace>/<path>. If this attempt includes Feedback
|
|
17
|
+
Loop Context, that envelope is the address-feedback send-back: review
|
|
18
|
+
the current checkout plus what that pass claimed to fix, not the
|
|
19
|
+
original review-report.md as if nothing changed.
|
|
20
|
+
|
|
21
|
+
Definition of done — every line must hold before you emit success:
|
|
22
|
+
- You ran git diff against the merge base (origin/main or the task's
|
|
23
|
+
base branch) and read every changed file, not hunks alone.
|
|
24
|
+
- review-report.md was written through write_stage_artifact and
|
|
25
|
+
appears in the emitted artifacts list.
|
|
26
|
+
- Every publication-blocking issue is in blocking_findings with
|
|
27
|
+
file:line evidence. Describing a blocker only in prose findings
|
|
28
|
+
while leaving blocking_findings empty is a contract violation.
|
|
29
|
+
- verdict is pass only when blocking_findings is empty.
|
|
30
|
+
- The working tree is unchanged by this stage.
|
|
31
|
+
|
|
32
|
+
1. Read the task, coverage.md, aligned-plans.md, and every
|
|
33
|
+
implementation-report.md you can resolve. Run git diff and
|
|
34
|
+
git diff --name-only against the merge base.
|
|
35
|
+
2. Review correctness, regressions, tests, security, and whether the
|
|
36
|
+
landed diff still matches the aligned plans as a whole (cross-story
|
|
37
|
+
seams, duplicated abstractions, missed acceptance).
|
|
38
|
+
3. Classify findings. Blocking: correctness, regression, missing
|
|
39
|
+
required tests, security, or broken acceptance. Suggestions stay
|
|
40
|
+
out of blocking_findings.
|
|
41
|
+
4. Call write_stage_artifact with path review-report.md: verdict,
|
|
42
|
+
answers, findings, evidence, and concrete remediation for each
|
|
43
|
+
blocker.
|
|
44
|
+
5. Emit success with a payload matching the schema, including
|
|
45
|
+
review-report.md and inherited evidence.
|
|
46
|
+
|
|
47
|
+
Required files must be created with write_stage_artifact. Checkout
|
|
48
|
+
write/edit does not satisfy after-phase verify.
|
|
49
|
+
|
|
50
|
+
summary and payload are handed to the next stage verbatim. State
|
|
51
|
+
verdict, whether blockers exist, and the artifact pointer. Do not
|
|
52
|
+
repeat this stage's prohibitions in summary.
|
|
53
|
+
|
|
54
|
+
When finished, call emit_stage_envelope exactly once with status,
|
|
55
|
+
summary, artifacts, and a payload matching the schema. Your last
|
|
56
|
+
tool call in this attempt must be emit_stage_envelope. An empty
|
|
57
|
+
final message is a stage failure.
|
|
58
|
+
model: cursor/auto
|
|
59
|
+
timeout_ms: 3600000
|
|
60
|
+
io:
|
|
61
|
+
input:
|
|
62
|
+
schema:
|
|
63
|
+
type: object
|
|
64
|
+
required:
|
|
65
|
+
- expected_story_ids
|
|
66
|
+
- implemented_story_ids
|
|
67
|
+
- missing_story_ids
|
|
68
|
+
- extra_story_ids
|
|
69
|
+
- coverage_complete
|
|
70
|
+
- changed_files
|
|
71
|
+
properties:
|
|
72
|
+
expected_story_ids:
|
|
73
|
+
type: array
|
|
74
|
+
minItems: 1
|
|
75
|
+
items:
|
|
76
|
+
type: string
|
|
77
|
+
implemented_story_ids:
|
|
78
|
+
type: array
|
|
79
|
+
minItems: 1
|
|
80
|
+
items:
|
|
81
|
+
type: string
|
|
82
|
+
missing_story_ids:
|
|
83
|
+
type: array
|
|
84
|
+
items:
|
|
85
|
+
type: string
|
|
86
|
+
extra_story_ids:
|
|
87
|
+
type: array
|
|
88
|
+
items:
|
|
89
|
+
type: string
|
|
90
|
+
coverage_complete:
|
|
91
|
+
type: boolean
|
|
92
|
+
changed_files:
|
|
93
|
+
type: array
|
|
94
|
+
minItems: 1
|
|
95
|
+
items:
|
|
96
|
+
type: string
|
|
97
|
+
output:
|
|
98
|
+
schema:
|
|
99
|
+
type: object
|
|
100
|
+
required:
|
|
101
|
+
- verdict
|
|
102
|
+
- findings
|
|
103
|
+
- blocking_findings
|
|
104
|
+
- suggestions
|
|
105
|
+
- evidence
|
|
106
|
+
- reviewed_files
|
|
107
|
+
properties:
|
|
108
|
+
verdict:
|
|
109
|
+
type: string
|
|
110
|
+
enum:
|
|
111
|
+
- pass
|
|
112
|
+
- changes_required
|
|
113
|
+
findings:
|
|
114
|
+
type: array
|
|
115
|
+
items:
|
|
116
|
+
type: string
|
|
117
|
+
blocking_findings:
|
|
118
|
+
type: array
|
|
119
|
+
items:
|
|
120
|
+
type: string
|
|
121
|
+
suggestions:
|
|
122
|
+
type: array
|
|
123
|
+
items:
|
|
124
|
+
type: string
|
|
125
|
+
evidence:
|
|
126
|
+
type: array
|
|
127
|
+
items:
|
|
128
|
+
type: string
|
|
129
|
+
reviewed_files:
|
|
130
|
+
type: array
|
|
131
|
+
minItems: 1
|
|
132
|
+
items:
|
|
133
|
+
type: string
|
|
134
|
+
verify:
|
|
135
|
+
- id: review-report-declared
|
|
136
|
+
type: artifact
|
|
137
|
+
basename: review-report.md
|
|
138
|
+
when:
|
|
139
|
+
- emit
|
|
140
|
+
- id: review-report
|
|
141
|
+
type: artifact
|
|
142
|
+
path: review-report.md
|
|
143
|
+
nonempty: true
|
|
144
|
+
when:
|
|
145
|
+
- after
|
|
146
|
+
gate_kinds: []
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
id: verify
|
|
2
|
+
system_prompt: |
|
|
3
|
+
You are the join after implement. Confirm every aligned
|
|
4
|
+
story was implemented and none were skipped, then hand a coverage
|
|
5
|
+
ledger to review. Do not edit source, commit, push, or open a pull
|
|
6
|
+
|
|
7
|
+
Read each prior implement payload.story_id and changed_files.
|
|
8
|
+
aligned-plans.md is the expected story set and implementation_order.
|
|
9
|
+
|
|
10
|
+
Reading upstream work: the user prompt contains "Factory run
|
|
11
|
+
workspace: <absolute path>". Read artifacts at <Factory run
|
|
12
|
+
workspace>/<artifact path>. Also run git diff --name-only in the
|
|
13
|
+
checkout so the ledger matches the tree, not just envelopes.
|
|
14
|
+
|
|
15
|
+
Definition of done — every line must hold before you emit success:
|
|
16
|
+
- expected_story_ids is the full implementation_order from
|
|
17
|
+
aligned-plans.md.
|
|
18
|
+
- implemented_story_ids is every implement payload.story_id.
|
|
19
|
+
- missing_story_ids is empty. extra_story_ids is empty.
|
|
20
|
+
- coverage_complete is true only when those sets match and every
|
|
21
|
+
expected story has a non-empty changed_files list that exists in
|
|
22
|
+
git diff --name-only.
|
|
23
|
+
- coverage.md was written through write_stage_artifact and appears in
|
|
24
|
+
the emitted artifacts list.
|
|
25
|
+
|
|
26
|
+
1. Read aligned-plans.md and every implement envelope/report.
|
|
27
|
+
2. Build the expected vs implemented sets. Union changed_files across
|
|
28
|
+
implement reports and intersect with git diff --name-only.
|
|
29
|
+
3. If any story is missing, extra, or claimed files that are not in
|
|
30
|
+
the checkout diff, write coverage.md describing the gap and emit
|
|
31
|
+
failure. Do not present partial coverage as success.
|
|
32
|
+
4. Otherwise write coverage.md with the story matrix, files per
|
|
33
|
+
story, union diff, and residual risk from implement reports.
|
|
34
|
+
5. Emit success with a payload matching the schema, including
|
|
35
|
+
coverage.md and inherited evidence.
|
|
36
|
+
|
|
37
|
+
Required files must be created with write_stage_artifact. Checkout
|
|
38
|
+
write/edit does not satisfy after-phase verify.
|
|
39
|
+
|
|
40
|
+
summary and payload are handed to the next stage verbatim. State
|
|
41
|
+
that coverage is complete, list story_ids, and point at coverage.md.
|
|
42
|
+
Do not repeat this stage's prohibitions in summary.
|
|
43
|
+
|
|
44
|
+
When finished, call emit_stage_envelope exactly once with status,
|
|
45
|
+
summary, artifacts, and a payload matching the schema. Your last
|
|
46
|
+
tool call in this attempt must be emit_stage_envelope. An empty
|
|
47
|
+
final message is a stage failure.
|
|
48
|
+
model: cursor/auto
|
|
49
|
+
timeout_ms: 1800000
|
|
50
|
+
io:
|
|
51
|
+
input:
|
|
52
|
+
schema:
|
|
53
|
+
type: object
|
|
54
|
+
output:
|
|
55
|
+
schema:
|
|
56
|
+
type: object
|
|
57
|
+
required:
|
|
58
|
+
- expected_story_ids
|
|
59
|
+
- implemented_story_ids
|
|
60
|
+
- missing_story_ids
|
|
61
|
+
- extra_story_ids
|
|
62
|
+
- coverage_complete
|
|
63
|
+
- changed_files
|
|
64
|
+
properties:
|
|
65
|
+
expected_story_ids:
|
|
66
|
+
type: array
|
|
67
|
+
minItems: 1
|
|
68
|
+
items:
|
|
69
|
+
type: string
|
|
70
|
+
implemented_story_ids:
|
|
71
|
+
type: array
|
|
72
|
+
minItems: 1
|
|
73
|
+
items:
|
|
74
|
+
type: string
|
|
75
|
+
missing_story_ids:
|
|
76
|
+
type: array
|
|
77
|
+
items:
|
|
78
|
+
type: string
|
|
79
|
+
extra_story_ids:
|
|
80
|
+
type: array
|
|
81
|
+
items:
|
|
82
|
+
type: string
|
|
83
|
+
coverage_complete:
|
|
84
|
+
type: boolean
|
|
85
|
+
changed_files:
|
|
86
|
+
type: array
|
|
87
|
+
minItems: 1
|
|
88
|
+
items:
|
|
89
|
+
type: string
|
|
90
|
+
verify:
|
|
91
|
+
- id: coverage-declared
|
|
92
|
+
type: artifact
|
|
93
|
+
basename: coverage.md
|
|
94
|
+
when:
|
|
95
|
+
- emit
|
|
96
|
+
- id: coverage
|
|
97
|
+
type: artifact
|
|
98
|
+
path: coverage.md
|
|
99
|
+
nonempty: true
|
|
100
|
+
when:
|
|
101
|
+
- after
|
|
102
|
+
- id: coverage-payload
|
|
103
|
+
type: payload_schema
|
|
104
|
+
when:
|
|
105
|
+
- after
|
|
106
|
+
gate_kinds: []
|