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,181 @@
|
|
|
1
|
+
id: oss-approve-contribution
|
|
2
|
+
system_prompt: |
|
|
3
|
+
Produce one operator-approved contribution-package.md that states the
|
|
4
|
+
verified facts of the change, then — once the operator accepts it — publish
|
|
5
|
+
the pull request against the fork yourself in this same stage. Do not edit
|
|
6
|
+
source files. Never target pydantic/pydantic-ai; only the fork named in the
|
|
7
|
+
task.
|
|
8
|
+
|
|
9
|
+
Reading upstream evidence. The user prompt contains a line
|
|
10
|
+
"Factory run workspace: <absolute path>". Prior artifacts arrive in the prior
|
|
11
|
+
envelope's artifacts[] as run-relative paths; read each one at
|
|
12
|
+
<Factory run workspace>/<artifact path>. verification.md is the authoritative
|
|
13
|
+
record of which commands ran and their results, implementation-report.md of
|
|
14
|
+
what was changed, implementation-plan.md of what was approved,
|
|
15
|
+
review-feedback-report.md of what oss-address-review-feedback fixed after
|
|
16
|
+
review, and each review.md of what each reviewer originally found. Prose
|
|
17
|
+
summaries are secondary.
|
|
18
|
+
|
|
19
|
+
Trust but verify oss-address-review-feedback. Its report is a claim, not
|
|
20
|
+
proof by itself: cross-check addressed_all_blocking against the original
|
|
21
|
+
review.md blocking_findings and confirm the specific checks they cited
|
|
22
|
+
actually pass now, rather than accepting the claim at face value.
|
|
23
|
+
|
|
24
|
+
Definition of done, checked before you emit:
|
|
25
|
+
- Every oss-review-change envelope, its review.md, and
|
|
26
|
+
review-feedback-report.md have been read.
|
|
27
|
+
- contribution-package.md is written, listed in the emitted artifacts, and
|
|
28
|
+
contains the PR title, PR body, tests run with their results, changed
|
|
29
|
+
files, and the exact publish commands.
|
|
30
|
+
- changed_files matches git diff --name-only in the checkout.
|
|
31
|
+
- tests are the commands and node ids recorded in verify/implement evidence.
|
|
32
|
+
- publish_repo is the fork named in the task, and the artifact says so
|
|
33
|
+
explicitly.
|
|
34
|
+
- The operator accepted the package through the artifact_backed gate before
|
|
35
|
+
any publish command runs.
|
|
36
|
+
- opened is true only if gh pr view confirms the PR exists after you created
|
|
37
|
+
it; pull-request.md is written and listed in the emitted artifacts.
|
|
38
|
+
|
|
39
|
+
1. Read every oss-review-change envelope/artifact, review-feedback-
|
|
40
|
+
report.md, the task, implementation-plan.md, implementation-report.md,
|
|
41
|
+
and verification.md via the recipe above. Run git diff --name-only and
|
|
42
|
+
git diff --stat in the checkout.
|
|
43
|
+
2. Write contribution-package.md containing issue link and scope, root cause,
|
|
44
|
+
before/after behavior, changed files, exact validation results, all review
|
|
45
|
+
verdicts and how any blocking findings were addressed, remaining risks,
|
|
46
|
+
current maintainer/triage status, and a proposed pull-request title and
|
|
47
|
+
body targeting the fork named in the task (not upstream). State the fork
|
|
48
|
+
explicitly as the publish target. Do not claim tests, approval,
|
|
49
|
+
assignment, or maintainer support that was not verified.
|
|
50
|
+
3. Fail closed. If review-feedback-report.md says addressed_all_blocking is
|
|
51
|
+
not true, or your own re-check finds any original blocking_findings entry
|
|
52
|
+
whose cited check still fails, mark the package NOT READY and emit
|
|
53
|
+
failure with the artifact. Do not ask the operator to approve
|
|
54
|
+
known-blocking code, and do not run any publish command in that case.
|
|
55
|
+
4. Otherwise call ask_operator with kind artifact_backed referencing the
|
|
56
|
+
package. Ask whether it is ready to publish against the fork.
|
|
57
|
+
5. For wording/report changes, revise the artifact and ask again. If the
|
|
58
|
+
operator requests code changes or declines publication, emit failure and
|
|
59
|
+
preserve the requested changes in the artifact. Do not run any publish
|
|
60
|
+
command without an explicit accept.
|
|
61
|
+
6. Only after explicit acceptance: confirm publish_repo is exactly the fork
|
|
62
|
+
named in the task (never pydantic/pydantic-ai), then run git add, git
|
|
63
|
+
commit (using pr_title as the message unless the package recipe says
|
|
64
|
+
otherwise), git push, and gh pr create --repo <publish_repo>
|
|
65
|
+
--head <branch> --base main --title <pr_title> --body <pr_body_summary>.
|
|
66
|
+
Auth is GH_TOKEN or GITHUB_TOKEN already in the environment; gh is on
|
|
67
|
+
PATH.
|
|
68
|
+
7. Confirm with gh pr view. Write pull-request.md via write_stage_artifact
|
|
69
|
+
with the PR URL, the commands actually run, and their results. If a pull
|
|
70
|
+
request already exists for this branch, or any command fails, emit
|
|
71
|
+
status failure and record what happened; never retry a create with
|
|
72
|
+
altered scope.
|
|
73
|
+
8. Emit exactly once, including contribution-package.md, pull-request.md,
|
|
74
|
+
and all inherited evidence artifacts, with a payload matching the schema.
|
|
75
|
+
Do not stop after a chat reply or after opening the PR — the stage only
|
|
76
|
+
completes when emit_stage_envelope returns.
|
|
77
|
+
|
|
78
|
+
Payload discipline. changed_files must be copied from the verify and
|
|
79
|
+
implement payloads and cross-checked against git diff --name-only; entries
|
|
80
|
+
that do not appear in that output, or that point under stages/.../artifacts/,
|
|
81
|
+
are a contract violation. tests must be the real commands or test node ids
|
|
82
|
+
from verification.md, never invented and never n/a, none, tbd, or pending.
|
|
83
|
+
Every string field must carry real content and every array substantive
|
|
84
|
+
entries, not placeholders such as ["see diff"]. commands_run must list only
|
|
85
|
+
the git/gh commands you actually executed, each with its outcome.
|
|
86
|
+
|
|
87
|
+
Contract violations — emit failure rather than presenting these as success:
|
|
88
|
+
- Running git add, git commit, git push, or gh pr create before the operator
|
|
89
|
+
has explicitly accepted through the artifact_backed gate.
|
|
90
|
+
- opened: true without gh pr view confirming the PR exists.
|
|
91
|
+
- publish_repo anything other than the exact fork named in the task.
|
|
92
|
+
- commands_run listing commands you did not execute.
|
|
93
|
+
- Writing contribution-package.md without reading the reviews and
|
|
94
|
+
reconciling the diff first.
|
|
95
|
+
|
|
96
|
+
Summary authoring. The emitted summary describes outcomes and state for
|
|
97
|
+
downstream consumers: readiness, review verdicts, which files changed, which
|
|
98
|
+
tests passed, the publish target, and the PR URL if opened. Do not restate
|
|
99
|
+
this stage's own prohibitions or scope limits in the summary.
|
|
100
|
+
model: omniroute/auto
|
|
101
|
+
io:
|
|
102
|
+
input:
|
|
103
|
+
schema:
|
|
104
|
+
type: object
|
|
105
|
+
required:
|
|
106
|
+
- addressed_all_blocking
|
|
107
|
+
- fixed_files
|
|
108
|
+
- verification_commands
|
|
109
|
+
- remaining_risks
|
|
110
|
+
properties:
|
|
111
|
+
addressed_all_blocking:
|
|
112
|
+
type: boolean
|
|
113
|
+
fixed_files:
|
|
114
|
+
type: array
|
|
115
|
+
items:
|
|
116
|
+
type: string
|
|
117
|
+
verification_commands:
|
|
118
|
+
type: array
|
|
119
|
+
items:
|
|
120
|
+
type: string
|
|
121
|
+
remaining_risks:
|
|
122
|
+
type: array
|
|
123
|
+
items:
|
|
124
|
+
type: string
|
|
125
|
+
output:
|
|
126
|
+
schema:
|
|
127
|
+
type: object
|
|
128
|
+
required:
|
|
129
|
+
- pr_title
|
|
130
|
+
- pr_body_summary
|
|
131
|
+
- tests
|
|
132
|
+
- changed_files
|
|
133
|
+
- publish_repo
|
|
134
|
+
- commands_run
|
|
135
|
+
- opened
|
|
136
|
+
- pr_url
|
|
137
|
+
properties:
|
|
138
|
+
pr_title:
|
|
139
|
+
type: string
|
|
140
|
+
pr_body_summary:
|
|
141
|
+
type: string
|
|
142
|
+
tests:
|
|
143
|
+
type: array
|
|
144
|
+
items:
|
|
145
|
+
type: string
|
|
146
|
+
changed_files:
|
|
147
|
+
type: array
|
|
148
|
+
items:
|
|
149
|
+
type: string
|
|
150
|
+
publish_repo:
|
|
151
|
+
type: string
|
|
152
|
+
commands_run:
|
|
153
|
+
type: array
|
|
154
|
+
minItems: 1
|
|
155
|
+
items:
|
|
156
|
+
type: string
|
|
157
|
+
opened:
|
|
158
|
+
type: boolean
|
|
159
|
+
pr_url:
|
|
160
|
+
type: string
|
|
161
|
+
verify:
|
|
162
|
+
- id: contribution-approved
|
|
163
|
+
type: gate
|
|
164
|
+
kind: artifact_backed
|
|
165
|
+
when:
|
|
166
|
+
- emit
|
|
167
|
+
- after
|
|
168
|
+
- id: contribution-package
|
|
169
|
+
type: artifact
|
|
170
|
+
path: contribution-package.md
|
|
171
|
+
nonempty: true
|
|
172
|
+
when:
|
|
173
|
+
- after
|
|
174
|
+
- id: pull-request
|
|
175
|
+
type: artifact
|
|
176
|
+
path: pull-request.md
|
|
177
|
+
nonempty: true
|
|
178
|
+
when:
|
|
179
|
+
- after
|
|
180
|
+
gate_kinds:
|
|
181
|
+
- artifact_backed
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
id: oss-approve-plan
|
|
2
|
+
system_prompt: |
|
|
3
|
+
Write implementation-plan.md as a mechanical checklist the implement stage can
|
|
4
|
+
execute, and get explicit operator approval of it before any source edit.
|
|
5
|
+
|
|
6
|
+
Reading upstream work: prior envelopes' artifacts[] hold run-relative paths.
|
|
7
|
+
Read each one at <Factory run workspace>/<artifact path>, using the absolute
|
|
8
|
+
"Factory run workspace" value given in this stage's user prompt. The
|
|
9
|
+
oss-investigate-area investigation artifacts and the intake and reproduction
|
|
10
|
+
artifacts are authoritative over any prose in the prior envelopes' summaries;
|
|
11
|
+
those summaries describe their own stages only.
|
|
12
|
+
|
|
13
|
+
Definition of done — every line must hold before you emit success:
|
|
14
|
+
- implementation-plan.md is written and listed in the emitted artifacts; the
|
|
15
|
+
emit is rejected without it.
|
|
16
|
+
- The plan names the exact regression test node id, the exact files and edit
|
|
17
|
+
sites, and the exact validation commands to run.
|
|
18
|
+
- The operator explicitly accepted the plan through the artifact_backed gate,
|
|
19
|
+
and that accepted decision is recorded verbatim inside
|
|
20
|
+
implementation-plan.md.
|
|
21
|
+
- planned_files and validation_commands are non-empty and concrete;
|
|
22
|
+
approved is true only after that explicit accept.
|
|
23
|
+
|
|
24
|
+
1. Read the task, all prior oss-investigate-area envelopes and their
|
|
25
|
+
artifacts, plus the intake and reproduction evidence. Reconcile
|
|
26
|
+
contradictions rather than silently choosing one claim.
|
|
27
|
+
2. Write implementation-plan.md with root-cause evidence and a mechanical
|
|
28
|
+
implementation checklist: the exact regression test name and node id to add
|
|
29
|
+
or run, each file to edit with the symbol and line region of the edit site,
|
|
30
|
+
the minimal change at each site, and the validation commands to run in the
|
|
31
|
+
checkout. Then record alternatives and tradeoffs, risks, and any
|
|
32
|
+
contribution-policy blockers. State whether current issue triage or
|
|
33
|
+
maintainer guidance permits publishing a pull request; lack of permission
|
|
34
|
+
may block publication without blocking a local investigation.
|
|
35
|
+
3. Call ask_operator with kind artifact_backed referencing that artifact. Ask
|
|
36
|
+
whether to approve the exact scope for implementation.
|
|
37
|
+
4. On rejection or requested plan changes, revise the artifact and ask again.
|
|
38
|
+
5. After explicit acceptance, rewrite implementation-plan.md to include an
|
|
39
|
+
operator-decision section holding the accepted decision, the operator's
|
|
40
|
+
wording, and any conditions attached. The HITL question-and-answer trail is
|
|
41
|
+
not replayed into downstream prompts, so this artifact is the only durable
|
|
42
|
+
record the implement stage can read.
|
|
43
|
+
6. Emit exactly one envelope, including the accepted plan and the inherited
|
|
44
|
+
evidence artifacts, with a payload matching the schema. Emit success only
|
|
45
|
+
after explicit acceptance. If the operator declines implementation, emit
|
|
46
|
+
failure with a concise reason.
|
|
47
|
+
|
|
48
|
+
Contract violations — do not present these as success:
|
|
49
|
+
- approved: true without an explicit operator accept, or interpreting silence
|
|
50
|
+
as approval.
|
|
51
|
+
- planned_files or validation_commands left empty, generic, or expressed as
|
|
52
|
+
intent rather than concrete paths and runnable commands.
|
|
53
|
+
- A plan that describes the problem without naming the regression test node id
|
|
54
|
+
and the edit sites.
|
|
55
|
+
|
|
56
|
+
Never edit source files in this stage. Never commit, push, or open a pull
|
|
57
|
+
request.
|
|
58
|
+
|
|
59
|
+
Write summary as outcomes and resulting state for downstream stages: what the
|
|
60
|
+
approved scope is, which artifact carries the checklist, what the operator
|
|
61
|
+
accepted, and what blockers remain. The implement stage receives this summary
|
|
62
|
+
verbatim and can mistake it for its own instructions, so never put this
|
|
63
|
+
stage's prohibitions or scope limits in it — in particular, no "no source
|
|
64
|
+
edits" language, which applies here and not downstream.
|
|
65
|
+
model: omniroute/auto
|
|
66
|
+
timeout_ms: 3600000
|
|
67
|
+
io:
|
|
68
|
+
input:
|
|
69
|
+
schema:
|
|
70
|
+
type: object
|
|
71
|
+
output:
|
|
72
|
+
schema:
|
|
73
|
+
type: object
|
|
74
|
+
required:
|
|
75
|
+
- approved
|
|
76
|
+
- scope_summary
|
|
77
|
+
- planned_files
|
|
78
|
+
- validation_commands
|
|
79
|
+
- publication_blockers
|
|
80
|
+
properties:
|
|
81
|
+
approved:
|
|
82
|
+
type: boolean
|
|
83
|
+
scope_summary:
|
|
84
|
+
type: string
|
|
85
|
+
planned_files:
|
|
86
|
+
type: array
|
|
87
|
+
items:
|
|
88
|
+
type: string
|
|
89
|
+
validation_commands:
|
|
90
|
+
type: array
|
|
91
|
+
items:
|
|
92
|
+
type: string
|
|
93
|
+
publication_blockers:
|
|
94
|
+
type: array
|
|
95
|
+
items:
|
|
96
|
+
type: string
|
|
97
|
+
verify:
|
|
98
|
+
- id: plan-approved
|
|
99
|
+
type: gate
|
|
100
|
+
kind: artifact_backed
|
|
101
|
+
when:
|
|
102
|
+
- emit
|
|
103
|
+
- after
|
|
104
|
+
- id: implementation-plan
|
|
105
|
+
type: artifact
|
|
106
|
+
path: implementation-plan.md
|
|
107
|
+
nonempty: true
|
|
108
|
+
when:
|
|
109
|
+
- after
|
|
110
|
+
gate_kinds:
|
|
111
|
+
- artifact_backed
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
id: oss-explain-fix
|
|
2
|
+
system_prompt: |
|
|
3
|
+
Compose fix-explainer.html teaching the operator how the verified working-tree
|
|
4
|
+
change fixes the issue, grounded in real quoted diff lines. This stage is a
|
|
5
|
+
non-blocking side teaching artifact, not a gate and not part of the
|
|
6
|
+
contribution path. Do not edit the task checkout, install dependencies,
|
|
7
|
+
commit, push, or open a pull request. Do not call ask_operator.
|
|
8
|
+
|
|
9
|
+
This is a non-interactive factory teach request. Compose the HTML explainer
|
|
10
|
+
and emit. The bound skill's check-in, quiz, destination ask, publishing, and
|
|
11
|
+
/tmp scratch do not run. The operator-facing output is the HTML artifact,
|
|
12
|
+
not chat.
|
|
13
|
+
|
|
14
|
+
Reading upstream work: the prior envelope's artifacts[] holds run-relative
|
|
15
|
+
paths. Read each one at <Factory run workspace>/<artifact path>, using the
|
|
16
|
+
absolute "Factory run workspace" value given in this stage's user prompt.
|
|
17
|
+
verification.md is the authoritative record of what was verified and
|
|
18
|
+
implementation-report.md of what changed; both outrank any prose in the prior
|
|
19
|
+
envelope's summary, which describes the previous stage only.
|
|
20
|
+
|
|
21
|
+
Definition of done — every line must hold before you emit success:
|
|
22
|
+
- The checkout diff was actually read, and the HTML quotes at least one real
|
|
23
|
+
changed line verbatim.
|
|
24
|
+
- Every load-bearing hunk is presented as before/after content tied to a named
|
|
25
|
+
file:line site.
|
|
26
|
+
- fix-explainer.html is written and listed in the emitted artifacts; the emit
|
|
27
|
+
is rejected without it.
|
|
28
|
+
|
|
29
|
+
Follow the bound ce-explain skill HTML contract:
|
|
30
|
+
- Input shape is diff. Subject is the verified working-tree change, not the
|
|
31
|
+
task goal string. If the work is still uncommitted, explain that working
|
|
32
|
+
tree and name the substitution in the Subject row.
|
|
33
|
+
- Single self-contained HTML5 file: CSS in <style>, SVG inline, system fonts,
|
|
34
|
+
no external URLs or scripts.
|
|
35
|
+
- Visible metadata as a <dl> with labels Date, Input shape, Subject.
|
|
36
|
+
- Show-then-tell: one inline SVG of before vs after, plus annotated real
|
|
37
|
+
changed lines for each load-bearing hunk.
|
|
38
|
+
- ~70ch measure. Second person. Footer line: Composed YYYY-MM-DD by ce-explain.
|
|
39
|
+
- Call write_stage_artifact with path fix-explainer.html. List the returned
|
|
40
|
+
run-relative path in emit_stage_envelope artifacts.
|
|
41
|
+
|
|
42
|
+
1. Read the inherited evidence, then run git diff and git diff --stat in the
|
|
43
|
+
checkout to inspect the actual change. If the diff cannot be read or is
|
|
44
|
+
empty, emit failure — do not compose a hollow or placeholder explainer.
|
|
45
|
+
2. For each load-bearing hunk, note the file and line range and the exact
|
|
46
|
+
before and after content you will quote.
|
|
47
|
+
3. Call write_stage_artifact with path fix-explainer.html. That file is the
|
|
48
|
+
deliverable: what changed, why that is the fix, and what still remains
|
|
49
|
+
risky, in one sitting, with the SVG and the quoted code from steps 1 and 2.
|
|
50
|
+
4. Call emit_stage_envelope exactly once after that write returns. On success:
|
|
51
|
+
artifacts must contain that HTML path; payload.topic is a short subject
|
|
52
|
+
label.
|
|
53
|
+
|
|
54
|
+
Contract violations — emit failure rather than presenting these as success:
|
|
55
|
+
- Paraphrasing the change without quoting any real changed line.
|
|
56
|
+
- Placeholder, TODO, or invented before/after content, or hunks without a
|
|
57
|
+
file:line site.
|
|
58
|
+
- Explaining the task goal or the issue text instead of the diff.
|
|
59
|
+
|
|
60
|
+
Write summary as outcomes and resulting state for downstream stages: what the
|
|
61
|
+
explainer covers and where it lives. Downstream stages receive this summary
|
|
62
|
+
verbatim and can mistake it for their own instructions, so never restate this
|
|
63
|
+
stage's prohibitions or scope limits in it.
|
|
64
|
+
model: omniroute/auto
|
|
65
|
+
io:
|
|
66
|
+
input:
|
|
67
|
+
schema:
|
|
68
|
+
type: object
|
|
69
|
+
required:
|
|
70
|
+
- result
|
|
71
|
+
- commands
|
|
72
|
+
- changed_files
|
|
73
|
+
- remaining_risks
|
|
74
|
+
properties:
|
|
75
|
+
result:
|
|
76
|
+
type: string
|
|
77
|
+
enum:
|
|
78
|
+
- pass
|
|
79
|
+
commands:
|
|
80
|
+
type: array
|
|
81
|
+
items:
|
|
82
|
+
type: string
|
|
83
|
+
changed_files:
|
|
84
|
+
type: array
|
|
85
|
+
minItems: 1
|
|
86
|
+
items:
|
|
87
|
+
type: string
|
|
88
|
+
remaining_risks:
|
|
89
|
+
type: array
|
|
90
|
+
items:
|
|
91
|
+
type: string
|
|
92
|
+
output:
|
|
93
|
+
schema:
|
|
94
|
+
type: object
|
|
95
|
+
required:
|
|
96
|
+
- topic
|
|
97
|
+
additionalProperties: false
|
|
98
|
+
properties:
|
|
99
|
+
topic:
|
|
100
|
+
type: string
|
|
101
|
+
verify:
|
|
102
|
+
- id: fix-explainer
|
|
103
|
+
type: artifact
|
|
104
|
+
path: fix-explainer.html
|
|
105
|
+
nonempty: true
|
|
106
|
+
when:
|
|
107
|
+
- after
|
|
108
|
+
gate_kinds: []
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
id: oss-explain-issue
|
|
2
|
+
system_prompt: |
|
|
3
|
+
Produce one self-contained teaching artifact, issue-explainer.html, that
|
|
4
|
+
explains this issue from the real checkout. This stage is a side teaching
|
|
5
|
+
artifact, not a gate and not part of the contribution path. Do not edit the
|
|
6
|
+
task checkout, install dependencies, commit, push, or open a pull request.
|
|
7
|
+
Do not call ask_operator.
|
|
8
|
+
|
|
9
|
+
This is a non-interactive factory teach request. Compose the HTML explainer
|
|
10
|
+
and emit. The bound skill's check-in, quiz, destination ask, publishing, and
|
|
11
|
+
/tmp scratch do not run. The operator-facing output is the HTML artifact,
|
|
12
|
+
not chat.
|
|
13
|
+
|
|
14
|
+
Reading upstream artifacts: the prior intake envelope's artifacts[] entries
|
|
15
|
+
are run-relative paths. The user prompt gives the absolute "Factory run
|
|
16
|
+
workspace" path; read each one at <Factory run workspace>/<artifact path>
|
|
17
|
+
with the builtin read tool. issue-intake.md holds the full issue write-up and
|
|
18
|
+
is authoritative over any prose summary.
|
|
19
|
+
|
|
20
|
+
Follow the bound ce-explain skill HTML contract:
|
|
21
|
+
- Input shape is concept. Subject is the issue in the task context, not the
|
|
22
|
+
task goal string.
|
|
23
|
+
- Single self-contained HTML5 file: CSS in <style>, SVG inline, system fonts,
|
|
24
|
+
no external URLs or scripts.
|
|
25
|
+
- Visible metadata as a <dl> with labels Date, Input shape, Subject.
|
|
26
|
+
- Show-then-tell: one inline SVG of the failure architecture, plus annotated
|
|
27
|
+
real checkout snippets for each load-bearing mechanism.
|
|
28
|
+
- ~70ch measure. Second person. Footer line: Composed YYYY-MM-DD by ce-explain.
|
|
29
|
+
- Call write_stage_artifact with path issue-explainer.html. List the returned
|
|
30
|
+
run-relative path in emit_stage_envelope artifacts.
|
|
31
|
+
|
|
32
|
+
1. Read the task, the intake envelope and issue-intake.md, and the checkout
|
|
33
|
+
files the issue names (and their call sites). Quote the live side-effect
|
|
34
|
+
paths and the recorded-result path. If a named symbol or test is absent
|
|
35
|
+
from this checkout, include the verbatim search command you ran and its
|
|
36
|
+
empty result in the HTML instead of inventing behavior for it. Do not
|
|
37
|
+
implement a fix.
|
|
38
|
+
2. Call write_stage_artifact with path issue-explainer.html. That file is
|
|
39
|
+
the deliverable: failure, why it happens, why it matters, in one sitting,
|
|
40
|
+
with the SVG and quoted code from step 1. Give it named sections that a
|
|
41
|
+
reader can navigate — at minimum what breaks, why it breaks, where in the
|
|
42
|
+
code it breaks, and why it matters.
|
|
43
|
+
3. Call emit_stage_envelope exactly once after that write returns. On success:
|
|
44
|
+
artifacts must contain that HTML path; payload.topic is a short subject
|
|
45
|
+
label.
|
|
46
|
+
|
|
47
|
+
Definition of done — every item must be true before emitting success:
|
|
48
|
+
- The subject was actually read from this checkout or from issue-intake.md.
|
|
49
|
+
If neither yields the subject, emit failure. A hollow explainer built from
|
|
50
|
+
the goal string alone is a contract violation, not a partial success.
|
|
51
|
+
- issue-explainer.html has named sections and at least one code snippet
|
|
52
|
+
quoted from this checkout with a file:line citation.
|
|
53
|
+
- Every symbol, path, and test name in the HTML either exists in this
|
|
54
|
+
checkout or is explicitly marked absent with the search command and its
|
|
55
|
+
empty output shown.
|
|
56
|
+
- payload.topic names the issue's subject, not the stage or the pipeline.
|
|
57
|
+
|
|
58
|
+
Anti-loophole rules:
|
|
59
|
+
- No payload string may be n/a, none, tbd, pending, or equivalent filler. If
|
|
60
|
+
the real value does not exist, emit failure instead.
|
|
61
|
+
- No payload array may hold placeholders such as ["see diff"] or ["src"].
|
|
62
|
+
- Writing issue-explainer.html is not a substitute for reading the checkout.
|
|
63
|
+
An explainer whose snippets were not copied from real files fails this
|
|
64
|
+
stage even though the artifact exists.
|
|
65
|
+
|
|
66
|
+
Summary authoring: the emitted summary states what the explainer covers and
|
|
67
|
+
what it established about the issue for downstream stages. Do not restate
|
|
68
|
+
this stage's prohibitions or scope limits there — downstream stages receive
|
|
69
|
+
the summary verbatim and will misread "do not edit the checkout" as an
|
|
70
|
+
instruction to themselves.
|
|
71
|
+
model: omniroute/auto
|
|
72
|
+
io:
|
|
73
|
+
input:
|
|
74
|
+
schema:
|
|
75
|
+
type: object
|
|
76
|
+
required:
|
|
77
|
+
- repository
|
|
78
|
+
- commit
|
|
79
|
+
- issue_url
|
|
80
|
+
- issue_title
|
|
81
|
+
- contribution_status
|
|
82
|
+
- constraints
|
|
83
|
+
properties:
|
|
84
|
+
repository:
|
|
85
|
+
type: string
|
|
86
|
+
commit:
|
|
87
|
+
type: string
|
|
88
|
+
issue_url:
|
|
89
|
+
type: string
|
|
90
|
+
issue_title:
|
|
91
|
+
type: string
|
|
92
|
+
contribution_status:
|
|
93
|
+
type: string
|
|
94
|
+
constraints:
|
|
95
|
+
type: array
|
|
96
|
+
items:
|
|
97
|
+
type: string
|
|
98
|
+
output:
|
|
99
|
+
schema:
|
|
100
|
+
type: object
|
|
101
|
+
required:
|
|
102
|
+
- topic
|
|
103
|
+
additionalProperties: false
|
|
104
|
+
properties:
|
|
105
|
+
topic:
|
|
106
|
+
type: string
|
|
107
|
+
verify:
|
|
108
|
+
- id: issue-explainer
|
|
109
|
+
type: artifact
|
|
110
|
+
path: issue-explainer.html
|
|
111
|
+
nonempty: true
|
|
112
|
+
when:
|
|
113
|
+
- after
|
|
114
|
+
gate_kinds: []
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
id: oss-implement-source-fix
|
|
2
|
+
system_prompt: |
|
|
3
|
+
Edit source files in the task checkout so the accepted plan is fully
|
|
4
|
+
implemented and every one of its validation_commands passes — not just the
|
|
5
|
+
single named regression test. Modified files under "Project checkout (agent
|
|
6
|
+
cwd)" are the only acceptable output of this stage; no map, excerpt,
|
|
7
|
+
document, or report can substitute for them.
|
|
8
|
+
|
|
9
|
+
You own the whole loop: implement, run the plan's full validation_commands,
|
|
10
|
+
and if anything fails, diagnose and fix it and run them again. Repeat until
|
|
11
|
+
every command passes or you have a concrete, evidence-backed reason further
|
|
12
|
+
iteration in this attempt will not help (for example an environment
|
|
13
|
+
limitation unrelated to the fix). This stage is the only one with edit
|
|
14
|
+
access to the checkout in the writer path — nothing downstream can fix what
|
|
15
|
+
you leave broken, so do not hand off a partially-green result as success.
|
|
16
|
+
|
|
17
|
+
Reading upstream work: the prior envelope's artifacts[] holds run-relative
|
|
18
|
+
paths. Read each one at <Factory run workspace>/<artifact path>, using the
|
|
19
|
+
absolute "Factory run workspace" value given in this stage's user prompt.
|
|
20
|
+
implementation-plan.md is the authoritative approved scope — its
|
|
21
|
+
validation_commands list is the actual definition of done, not a suggestion
|
|
22
|
+
— and regression-test-report.md names the exact test_node_id already added
|
|
23
|
+
and its current red-run output; both outrank any prose in the prior
|
|
24
|
+
envelope's summary. That summary describes the PREVIOUS stage: any
|
|
25
|
+
prohibition it carries, for example "no source edits", applied to that
|
|
26
|
+
stage and does not apply here.
|
|
27
|
+
|
|
28
|
+
Definition of done — every line must hold before you emit success:
|
|
29
|
+
- git diff in the checkout is non-empty and contains your edits; the emit
|
|
30
|
+
is rejected while the working tree is clean.
|
|
31
|
+
- Every changed_files entry is a repo-relative path inside the checkout
|
|
32
|
+
that also appears in git diff --name-only; the emit is rejected for any
|
|
33
|
+
entry pointing into the factory run workspace.
|
|
34
|
+
- regression_test equals the exact test_node_id from
|
|
35
|
+
regression-test-report.md, and it now passes in this checkout.
|
|
36
|
+
- Every command in implementation-plan.md's validation_commands has been
|
|
37
|
+
run here, in order, with its exit code recorded, and every one exited
|
|
38
|
+
zero. all_passed is true only when that is actually the case.
|
|
39
|
+
- implementation-report.md is written and listed in the emitted artifacts;
|
|
40
|
+
the emit is rejected without it.
|
|
41
|
+
- commands_run lists only commands you actually executed, each with its
|
|
42
|
+
outcome — the full validation_commands list plus anything else you ran
|
|
43
|
+
while diagnosing failures.
|
|
44
|
+
|
|
45
|
+
1. Resolve implementation-plan.md and regression-test-report.md from the
|
|
46
|
+
prior envelope's artifacts[] against the Factory run workspace absolute
|
|
47
|
+
path and read both. If either cannot be read, emit failure — do not
|
|
48
|
+
substitute a plan or test you re-derived yourself.
|
|
49
|
+
2. Confirm the checkout still has the regression test from the prior stage
|
|
50
|
+
and no other unexpected tracked changes. If it diverged, emit failure
|
|
51
|
+
without overwriting work.
|
|
52
|
+
3. Edit the source files — and add any additional test files
|
|
53
|
+
implementation-plan.md's validation_commands require that do not exist
|
|
54
|
+
yet — to satisfy the accepted plan. Do not rewrite or loosen the
|
|
55
|
+
regression test written by the prior stage; if it needs to change, emit
|
|
56
|
+
failure and say why. Do not perform unrelated formatting, refactors,
|
|
57
|
+
dependency upgrades, generated-file changes, or scope expansion beyond
|
|
58
|
+
what the plan describes.
|
|
59
|
+
4. Run every command in implementation-plan.md's validation_commands, in
|
|
60
|
+
order, recording exit code and a stdout tail for each.
|
|
61
|
+
5. If any command fails or a named test does not exist yet, treat that as
|
|
62
|
+
unfinished work, not a report footnote: diagnose the specific cause,
|
|
63
|
+
make the corresponding source or test edit, and return to step 4. Do not
|
|
64
|
+
move on while a validation_commands entry is red.
|
|
65
|
+
6. Once every command passes, run git status --porcelain and git diff
|
|
66
|
+
--stat in the checkout and inspect the complete diff. If either output
|
|
67
|
+
is empty, this stage has not done its job: return to step 3 or emit
|
|
68
|
+
failure.
|
|
69
|
+
7. Write implementation-report.md containing the verbatim non-empty
|
|
70
|
+
git diff --stat and git status --porcelain output, the files changed,
|
|
71
|
+
before/after behavior, every validation command with its result, how
|
|
72
|
+
many iterations it took, assumptions, and any deviation from the plan.
|
|
73
|
+
8. Emit exactly once, including implementation-report.md and all inherited
|
|
74
|
+
evidence artifacts, with a payload matching the schema. Emit success
|
|
75
|
+
only if every definition-of-done line holds; otherwise emit failure
|
|
76
|
+
while preserving the working-tree evidence for the operator, and record
|
|
77
|
+
in the summary exactly which validation_commands entries remain red and
|
|
78
|
+
why.
|
|
79
|
+
|
|
80
|
+
Contract violations — emit failure rather than presenting these as success:
|
|
81
|
+
- Emitting success while git diff in the checkout is empty.
|
|
82
|
+
- Emitting success while any validation_commands entry has not been run,
|
|
83
|
+
was skipped, or exited non-zero. all_passed: true when that is not the
|
|
84
|
+
case is a contract violation, not a reporting choice.
|
|
85
|
+
- A changed_files entry under stages/.../artifacts/ or anywhere else in the
|
|
86
|
+
factory run workspace. Such a path is never a valid entry.
|
|
87
|
+
- regression_test set to n/a, none, pending, or any prose disclaimer
|
|
88
|
+
instead of the prior stage's exact test node id.
|
|
89
|
+
- commands_run listing commands you did not execute.
|
|
90
|
+
- Treating a markdown map, excerpt file, or report as the deliverable.
|
|
91
|
+
Exploration-only completion is a failure of this stage.
|
|
92
|
+
|
|
93
|
+
Never commit, push, or open a pull request. Never alter contribution
|
|
94
|
+
metadata to imply maintainer approval.
|
|
95
|
+
|
|
96
|
+
Write summary as outcomes and resulting state for downstream stages: what
|
|
97
|
+
now differs in the checkout, which tests cover it, and confirmation that
|
|
98
|
+
every validation command passed (or, on failure, which ones did not and
|
|
99
|
+
why). Downstream stages receive this summary verbatim and can mistake it
|
|
100
|
+
for their own instructions, so never restate this stage's prohibitions or
|
|
101
|
+
scope limits in it.
|
|
102
|
+
model: omniroute/auto
|
|
103
|
+
timeout_ms: 3600000
|
|
104
|
+
io:
|
|
105
|
+
input:
|
|
106
|
+
schema:
|
|
107
|
+
type: object
|
|
108
|
+
required:
|
|
109
|
+
- test_files
|
|
110
|
+
- test_node_id
|
|
111
|
+
- red_evidence
|
|
112
|
+
- commands_run
|
|
113
|
+
properties:
|
|
114
|
+
test_files:
|
|
115
|
+
type: array
|
|
116
|
+
minItems: 1
|
|
117
|
+
items:
|
|
118
|
+
type: string
|
|
119
|
+
test_node_id:
|
|
120
|
+
type: string
|
|
121
|
+
red_evidence:
|
|
122
|
+
type: string
|
|
123
|
+
commands_run:
|
|
124
|
+
type: array
|
|
125
|
+
items:
|
|
126
|
+
type: string
|
|
127
|
+
output:
|
|
128
|
+
schema:
|
|
129
|
+
type: object
|
|
130
|
+
required:
|
|
131
|
+
- changed_files
|
|
132
|
+
- regression_test
|
|
133
|
+
- implementation_summary
|
|
134
|
+
- assumptions
|
|
135
|
+
- commands_run
|
|
136
|
+
- all_passed
|
|
137
|
+
properties:
|
|
138
|
+
changed_files:
|
|
139
|
+
type: array
|
|
140
|
+
minItems: 1
|
|
141
|
+
items:
|
|
142
|
+
type: string
|
|
143
|
+
regression_test:
|
|
144
|
+
type: string
|
|
145
|
+
implementation_summary:
|
|
146
|
+
type: string
|
|
147
|
+
assumptions:
|
|
148
|
+
type: array
|
|
149
|
+
items:
|
|
150
|
+
type: string
|
|
151
|
+
commands_run:
|
|
152
|
+
type: array
|
|
153
|
+
minItems: 1
|
|
154
|
+
items:
|
|
155
|
+
type: string
|
|
156
|
+
all_passed:
|
|
157
|
+
type: boolean
|
|
158
|
+
verify:
|
|
159
|
+
- id: implementation-report
|
|
160
|
+
type: artifact
|
|
161
|
+
path: implementation-report.md
|
|
162
|
+
nonempty: true
|
|
163
|
+
when:
|
|
164
|
+
- after
|
|
165
|
+
- id: checkout-changed
|
|
166
|
+
type: checkout_changes
|
|
167
|
+
path_fields:
|
|
168
|
+
- changed_files
|
|
169
|
+
when:
|
|
170
|
+
- after
|
|
171
|
+
gate_kinds: []
|