stageflow 0.32.0 → 0.35.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 +4 -3
- package/dist/agent/adapterSpill.d.ts +14 -0
- package/dist/agent/adapterSpill.js +83 -0
- package/dist/agent/agentBackend.d.ts +2 -2
- package/dist/agent/agentBackend.js +2 -2
- package/dist/agent/claudeAdapter.d.ts +13 -2
- package/dist/agent/claudeAdapter.js +50 -6
- package/dist/agent/cursorProvider.d.ts +3 -0
- package/dist/agent/cursorProvider.js +23 -6
- package/dist/agent/fakeAgent.d.ts +3 -3
- package/dist/agent/fakeAgent.js +0 -6
- package/dist/agent/piAdapter.d.ts +2 -2
- package/dist/agent/piAdapter.js +116 -15
- package/dist/agent/piIsolatedMcp.d.ts +1 -0
- package/dist/agent/piIsolatedMcp.js +19 -1
- package/dist/agent/piIsolatedMcpProbe.d.ts +11 -0
- package/dist/agent/piIsolatedMcpProbe.js +20 -0
- package/dist/agent/port.d.ts +2 -2
- package/dist/agent/providerAuth.d.ts +6 -0
- package/dist/agent/providerAuth.js +86 -17
- package/dist/agent/{resolveAgentPort.d.ts → resolveStagePort.d.ts} +8 -6
- package/dist/agent/{resolveAgentPort.js → resolveStagePort.js} +13 -9
- package/dist/agent/stageTurnDriver.d.ts +33 -0
- package/dist/agent/stageTurnDriver.js +64 -0
- package/dist/agent/toolOutputBudget.d.ts +46 -0
- package/dist/agent/toolOutputBudget.js +97 -0
- package/dist/agent/toolOutputBudgetExtension.d.ts +22 -0
- package/dist/agent/toolOutputBudgetExtension.js +141 -0
- package/dist/agent/toolOutputSpill.d.ts +34 -0
- package/dist/agent/toolOutputSpill.js +85 -0
- package/dist/browser/agentBrowserLiveViewRelay.d.ts +41 -0
- package/dist/browser/agentBrowserLiveViewRelay.js +801 -0
- package/dist/browser/anchor.d.ts +2 -0
- package/dist/browser/anchor.js +2 -1
- package/dist/browser/auditSink.d.ts +8 -0
- package/dist/browser/browserHost.d.ts +29 -0
- package/dist/browser/browserSweep.d.ts +4 -1
- package/dist/browser/browserSweep.js +7 -0
- package/dist/browser/browserTeardown.d.ts +1 -0
- package/dist/browser/browserTeardown.js +32 -2
- package/dist/browser/containerBrowserEndpoint.d.ts +11 -0
- package/dist/browser/containerBrowserEndpoint.js +57 -0
- package/dist/browser/containerBrowserHost.d.ts +24 -0
- package/dist/browser/containerBrowserHost.js +147 -0
- package/dist/browser/dockerSandboxOrchestrator.d.ts +26 -0
- package/dist/browser/dockerSandboxOrchestrator.js +142 -0
- package/dist/browser/fakeLiveViewRelay.d.ts +15 -0
- package/dist/browser/fakeLiveViewRelay.js +94 -0
- package/dist/browser/fakeLiveViewSource.d.ts +6 -0
- package/dist/browser/fakeLiveViewSource.js +16 -0
- package/dist/browser/fakeRemoteBrowserHost.d.ts +2 -1
- package/dist/browser/fakeRemoteBrowserHost.js +2 -1
- package/dist/browser/fakeSandboxOrchestrator.d.ts +9 -0
- package/dist/browser/fakeSandboxOrchestrator.js +44 -0
- package/dist/browser/gateHandoff.d.ts +0 -2
- package/dist/browser/gateHandoff.js +5 -11
- package/dist/browser/hostCapabilities.d.ts +23 -0
- package/dist/browser/hostCapabilities.js +23 -0
- package/dist/browser/humanLogin.d.ts +2 -2
- package/dist/browser/humanLogin.js +11 -2
- package/dist/browser/liveViewPersisted.d.ts +11 -0
- package/dist/browser/liveViewPersisted.js +22 -0
- package/dist/browser/liveViewRelay.d.ts +76 -0
- package/dist/browser/liveViewRelay.js +1 -0
- package/dist/browser/liveViewSessions.d.ts +25 -0
- package/dist/browser/liveViewSessions.js +139 -0
- package/dist/browser/liveViewSource.d.ts +25 -0
- package/dist/browser/liveViewSource.js +7 -0
- package/dist/browser/liveViewTickets.d.ts +46 -0
- package/dist/browser/liveViewTickets.js +122 -0
- package/dist/browser/localBrowserHost.d.ts +10 -0
- package/dist/browser/localBrowserHost.js +53 -7
- package/dist/browser/ownerScope.d.ts +10 -0
- package/dist/browser/ownerScope.js +6 -0
- package/dist/browser/profileStore.d.ts +5 -2
- package/dist/browser/profileStore.js +3 -5
- package/dist/browser/sandboxOrchestrator.d.ts +60 -0
- package/dist/browser/sandboxOrchestrator.js +8 -0
- package/dist/browser/sessionApiSandboxOrchestrator.d.ts +34 -0
- package/dist/browser/sessionApiSandboxOrchestrator.js +108 -0
- package/dist/browser/stageBrowserEnv.d.ts +7 -0
- package/dist/browser/stageBrowserEnv.js +53 -15
- package/dist/browser/stageHandoff.d.ts +47 -0
- package/dist/browser/stageHandoff.js +101 -0
- package/dist/browser/stageProfileLock.d.ts +1 -0
- package/dist/browser/stageProfileLock.js +1 -3
- package/dist/browser/volumeProfileStore.d.ts +7 -0
- package/dist/browser/volumeProfileStore.js +35 -0
- package/dist/cli/browserCommand.d.ts +3 -1
- package/dist/cli/browserCommand.js +25 -20
- package/dist/cli/resolveCliProjectRoot.d.ts +7 -0
- package/dist/cli/resolveCliProjectRoot.js +27 -0
- package/dist/cli/runCommand.d.ts +1 -1
- package/dist/cli/runCommand.js +59 -17
- package/dist/cli/skillsCommand.d.ts +20 -0
- package/dist/cli/skillsCommand.js +74 -31
- package/dist/cli/validateCommand.d.ts +1 -1
- package/dist/cli/validateCommand.js +22 -4
- package/dist/cli.js +4 -4
- package/dist/config/browseCatalog.d.ts +2 -0
- package/dist/config/browseCatalog.js +6 -0
- package/dist/config/catalogRelativePath.d.ts +4 -0
- package/dist/config/catalogRelativePath.js +37 -9
- package/dist/config/createStage.d.ts +1 -0
- package/dist/config/createStage.js +11 -2
- package/dist/config/createTask.d.ts +30 -0
- package/dist/config/createTask.js +161 -0
- package/dist/config/createTrigger.d.ts +15 -0
- package/dist/config/createTrigger.js +32 -25
- package/dist/config/draftPackage.d.ts +41 -0
- package/dist/config/draftPackage.js +216 -23
- package/dist/config/ensureCatalogScanRoot.d.ts +2 -1
- package/dist/config/ensureCatalogScanRoot.js +6 -2
- package/dist/config/findTaskInCatalog.d.ts +33 -0
- package/dist/config/findTaskInCatalog.js +69 -0
- package/dist/config/hostConfig.d.ts +21 -0
- package/dist/config/hostConfig.js +113 -1
- package/dist/config/importTask.d.ts +19 -0
- package/dist/config/importTask.js +133 -0
- package/dist/config/installSkillRequest.d.ts +40 -0
- package/dist/config/installSkillRequest.js +286 -0
- package/dist/config/listConfig.d.ts +0 -16
- package/dist/config/listConfig.js +0 -3
- package/dist/config/loadOutcome.d.ts +11 -6
- package/dist/config/loadPipeline.js +0 -1
- package/dist/config/loadStage.js +2 -0
- package/dist/config/loadStageflowManifest.js +4 -1
- package/dist/config/loadTask.js +2 -0
- package/dist/config/loadTrigger.js +2 -0
- package/dist/config/mergePipelineIncludes.js +3 -0
- package/dist/config/normalizePipelineStageEntry.js +10 -1
- package/dist/config/printTargetYaml.js +0 -1
- package/dist/config/publishDraftPackage.d.ts +5 -1
- package/dist/config/publishDraftPackage.js +4 -1
- package/dist/config/resolveCatalogRoots.d.ts +4 -1
- package/dist/config/resolveCatalogRoots.js +18 -1
- package/dist/config/skillUsageIndex.d.ts +6 -0
- package/dist/config/skillUsageIndex.js +39 -0
- package/dist/config/stageBrowser.js +13 -0
- package/dist/config/triggerAdapterStatus.d.ts +11 -0
- package/dist/config/triggerAdapterStatus.js +90 -0
- package/dist/config/triggerCatalog.d.ts +41 -2
- package/dist/config/triggerCatalog.js +107 -15
- package/dist/config/updateTask.d.ts +30 -0
- package/dist/config/updateTask.js +119 -0
- package/dist/config/updateTrigger.d.ts +38 -0
- package/dist/config/updateTrigger.js +220 -0
- package/dist/config/validateCatalog.d.ts +6 -2
- package/dist/config/validateCatalog.js +48 -7
- package/dist/config/workshopCatalogFilenames.d.ts +37 -0
- package/dist/config/workshopCatalogFilenames.js +125 -0
- package/dist/config/workshopCatalogRepair.d.ts +7 -0
- package/dist/config/workshopCatalogRepair.js +144 -0
- package/dist/config/yamlParsePosition.d.ts +4 -0
- package/dist/config/yamlParsePosition.js +9 -0
- package/dist/hosted/containment.d.ts +3 -0
- package/dist/hosted/containment.js +36 -0
- package/dist/hosted/errors.d.ts +21 -0
- package/dist/hosted/errors.js +30 -0
- package/dist/hosted/packageSkills.d.ts +3 -0
- package/dist/hosted/packageSkills.js +80 -0
- package/dist/hosted/runtime.d.ts +12 -0
- package/dist/hosted/runtime.js +596 -0
- package/dist/hosted/sequencer.d.ts +28 -0
- package/dist/hosted/sequencer.js +129 -0
- package/dist/hosted/translate.d.ts +3 -0
- package/dist/hosted/translate.js +43 -0
- package/dist/hosted/types.d.ts +108 -0
- package/dist/hosted/types.js +10 -0
- package/dist/index.d.ts +9 -1
- package/dist/index.js +6 -0
- package/dist/mcp/getStartedTool.js +15 -6
- package/dist/mcp/triggerTools.js +2 -8
- package/dist/operatorAgent/agentPort.d.ts +11 -0
- package/dist/operatorAgent/agentPort.js +12 -0
- package/dist/operatorAgent/index.d.ts +1 -0
- package/dist/operatorAgent/index.js +1 -0
- package/dist/operatorAgent/piModel.js +26 -6
- package/dist/operatorAgent/profiles/workshopAuthorPlaybook.d.ts +1 -1
- package/dist/operatorAgent/profiles/workshopAuthorPlaybook.js +4 -2
- package/dist/operatorAgent/profiles/workshopAuthorTools.js +103 -16
- package/dist/package-meta.d.ts +1 -1
- package/dist/package-meta.js +1 -1
- package/dist/project/ensureProjectRootsFromEnv.d.ts +3 -0
- package/dist/project/ensureProjectRootsFromEnv.js +22 -0
- package/dist/project/globalHome.d.ts +1 -0
- package/dist/project/globalHome.js +18 -0
- package/dist/project/workspaceCatalog.d.ts +10 -0
- package/dist/project/workspaceCatalog.js +91 -0
- package/dist/projection/projectRun.d.ts +0 -1
- package/dist/projection/projectRun.js +0 -1
- package/dist/runstore/backup.js +14 -4
- package/dist/runstore/port.d.ts +11 -1
- package/dist/runstore/restore.js +5 -2
- package/dist/runstore/sqlite/SqliteRunStore.d.ts +8 -0
- package/dist/runstore/sqlite/SqliteRunStore.js +29 -9
- package/dist/runstore/sqlite/migrations/012-trigger-fires.d.ts +7 -0
- package/dist/runstore/sqlite/migrations/012-trigger-fires.js +18 -0
- package/dist/runstore/sqlite/migrations/index.js +2 -0
- package/dist/runstore/stageSnapshot.d.ts +3 -1
- package/dist/runstore/stageSnapshot.js +19 -0
- package/dist/runstore/workspaceLayout.js +27 -0
- package/dist/runstore/writeContainedArtifact.d.ts +1 -0
- package/dist/runstore/writeContainedArtifact.js +52 -0
- package/dist/runtime/containerLimits.d.ts +0 -3
- package/dist/runtime/containerLimits.js +0 -5
- package/dist/runtime/credentialBinding.d.ts +3 -0
- package/dist/runtime/credentialBinding.js +23 -6
- package/dist/runtime/emailSource.js +20 -28
- package/dist/runtime/githubPollSource.js +20 -28
- package/dist/runtime/pipelineRunner.d.ts +4 -4
- package/dist/runtime/pipelineScheduler.d.ts +2 -2
- package/dist/runtime/pipelineScheduler.js +3 -0
- package/dist/runtime/resumeReconstruct.d.ts +2 -2
- package/dist/runtime/resumeTimedOut.d.ts +2 -2
- package/dist/runtime/runManager.d.ts +18 -2
- package/dist/runtime/runManager.js +95 -30
- package/dist/runtime/runRetentionSweep.d.ts +0 -2
- package/dist/runtime/runRetentionSweep.js +0 -8
- package/dist/runtime/runRetryCoordinator.d.ts +2 -2
- package/dist/runtime/scheduleSource.js +15 -24
- package/dist/runtime/stageAttemptBootstrap.d.ts +2 -2
- package/dist/runtime/stageAttemptBootstrap.js +10 -1
- package/dist/runtime/stageProcessLauncher.js +2 -2
- package/dist/runtime/stageRoots.js +12 -1
- package/dist/runtime/stageRunner.d.ts +2 -2
- package/dist/runtime/stageRunner.js +8 -2
- package/dist/runtime/stageWorker.js +2 -2
- package/dist/runtime/triggerPort.d.ts +5 -3
- package/dist/runtime/triggerRunner.d.ts +1 -0
- package/dist/runtime/triggerRunner.js +27 -20
- package/dist/runtime/webhookAccept.d.ts +25 -0
- package/dist/runtime/webhookAccept.js +56 -0
- package/dist/server/bootstrap.d.ts +7 -2
- package/dist/server/bootstrap.js +15 -1
- package/dist/server/controlToken.d.ts +1 -1
- package/dist/server/controlToken.js +18 -2
- package/dist/server/healthSurfaces.d.ts +12 -0
- package/dist/server/healthSurfaces.js +27 -6
- package/dist/server/http.d.ts +19 -10
- package/dist/server/http.js +605 -85
- package/dist/server/liveViewPath.d.ts +9 -0
- package/dist/server/liveViewPath.js +8 -0
- package/dist/server/liveViewRoutes.d.ts +58 -0
- package/dist/server/liveViewRoutes.js +565 -0
- package/dist/server/mcpHost.d.ts +4 -2
- package/dist/server/mcpHost.js +2 -0
- package/dist/server/readCatalogFile.d.ts +29 -0
- package/dist/server/readCatalogFile.js +215 -0
- package/dist/server/triggerRoutes.d.ts +1 -0
- package/dist/server/triggerRoutes.js +200 -73
- package/dist/tools/readEmail.d.ts +3 -3
- package/dist/tools/writeStageArtifact.d.ts +9 -0
- package/dist/tools/writeStageArtifact.js +2 -47
- package/dist/types/pipeline.d.ts +1 -1
- package/dist/types/stage.d.ts +1 -1
- package/dist/types/stageflowManifest.d.ts +1 -1
- package/dist/ui/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
- package/dist/ui/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
- package/dist/ui/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
- package/dist/ui/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
- package/dist/ui/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2 +0 -0
- package/dist/ui/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2 +0 -0
- package/dist/ui/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2 +0 -0
- package/dist/ui/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2 +0 -0
- package/dist/ui/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2 +0 -0
- package/dist/ui/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2 +0 -0
- package/dist/ui/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
- package/dist/ui/assets/index-BoFPkKFg.js +256 -0
- package/dist/ui/assets/{index-Bv4p1aPK.css → index-CIPbbBUi.css} +1 -1
- package/dist/ui/index.html +4 -4
- package/dist/workshop/autosave.d.ts +2 -2
- package/dist/workshop/autosave.js +4 -6
- package/dist/workshop/buildStore.d.ts +2 -0
- package/dist/workshop/chatAttachments.d.ts +27 -0
- package/dist/workshop/chatAttachments.js +98 -0
- package/dist/workshop/chatTurn.d.ts +5 -2
- package/dist/workshop/chatTurn.js +22 -18
- package/dist/workshop/sessionMutations.d.ts +17 -0
- package/dist/workshop/sessionMutations.js +107 -0
- package/dist/workshop/sessionStore.d.ts +10 -0
- package/dist/workshop/sessionStore.js +52 -0
- package/dist/workshop/workshopPin.d.ts +4 -3
- package/dist/workshop/workshopPin.js +26 -6
- package/dist/workshop/workshopTranscriptTurn.d.ts +8 -0
- package/dist/workshop/workshopTranscriptTurn.js +46 -0
- package/examples/README.md +1 -1
- package/examples/archify-on-pr/README.md +1 -1
- package/examples/archify-on-pr/archify-on-pr.pipeline.yaml +0 -1
- package/examples/archify-on-pr/author-diagrams.yaml +1 -0
- package/examples/conditional-fork/branch-a.yaml +1 -1
- package/examples/conditional-fork/decide.yaml +2 -1
- package/examples/feature-loop/{implement.yaml → feature-implement.yaml} +1 -1
- package/examples/feature-loop/feature-loop.pipeline.yaml +10 -10
- package/examples/feature-loop/{plan.yaml → feature-plan.yaml} +1 -1
- package/examples/feature-loop/{review.yaml → feature-review.yaml} +1 -1
- package/examples/feedback-loop/{implement.yaml → feedback-implement.yaml} +1 -1
- package/examples/feedback-loop/feedback-loop-wait-human.pipeline.yaml +9 -9
- package/examples/feedback-loop/feedback-loop.pipeline.yaml +9 -9
- package/examples/feedback-loop/{plan.yaml → feedback-plan.yaml} +1 -1
- package/examples/feedback-loop/{review.yaml → feedback-review.yaml} +1 -1
- package/examples/generic-fan-in/{research.yaml → fan-in-research.yaml} +1 -1
- package/examples/generic-fan-in/generic-fan-in-accepted.pipeline.yaml +3 -3
- package/examples/generic-fan-in/generic-fan-in.pipeline.yaml +3 -3
- package/examples/hello-world/{research.yaml → hello-research.yaml} +1 -1
- package/examples/hello-world/hello.pipeline.yaml +2 -2
- package/examples/mcp-hitl-tour/{review.yaml → mcp-hitl-review.yaml} +1 -1
- package/examples/mcp-hitl-tour/mcp-hitl-tour.pipeline.yaml +3 -3
- package/examples/oss-issue-contribution/oss-explain-fix.yaml +1 -0
- package/examples/oss-issue-contribution/oss-explain-issue.yaml +1 -0
- package/examples/oss-issue-contribution/oss-issue-contribution.pipeline.yaml +0 -2
- package/examples/stageflow.yaml +6 -0
- package/examples/triggers/sample-github-pr.trigger.yaml +12 -0
- package/examples/triggers/sample-inbox-email.trigger.yaml +14 -0
- package/examples/triggers/sample-manual-hello.trigger.yaml +5 -0
- package/examples/triggers/sample-nightly-hello.trigger.yaml +8 -0
- package/examples/triggers/sample-signed-webhook.trigger.yaml +11 -0
- package/examples/triggers-readiness/README.md +48 -0
- package/examples/triggers-readiness/readiness-emit.yaml +18 -0
- package/examples/triggers-readiness/readiness.pipeline.yaml +4 -0
- package/examples/triggers-readiness/readiness.task.yaml +6 -0
- package/examples/triggers-readiness/stageflow.yaml +13 -0
- package/examples/triggers-readiness/triggers/readiness-dynamic-manual.trigger.yaml +4 -0
- package/examples/triggers-readiness/triggers/readiness-email.trigger.yaml +12 -0
- package/examples/triggers-readiness/triggers/readiness-github-pr.trigger.yaml +12 -0
- package/examples/triggers-readiness/triggers/readiness-manual.trigger.yaml +5 -0
- package/examples/triggers-readiness/triggers/readiness-schedule.trigger.yaml +8 -0
- package/examples/triggers-readiness/triggers/readiness-webhook.trigger.yaml +11 -0
- package/package.json +9 -1
- package/skills/stageflow/references/control-surface.md +1 -1
- package/skills/stageflow-author/references/catalog-write-conventions.md +2 -2
- package/skills/stageflow-run/SKILL.md +1 -1
- package/skills/stageflow-run/references/mcp-call.md +1 -1
- package/skills/stageflow-setup/SKILL.md +1 -1
- package/dist/ui/assets/index-59cjF0OA.js +0 -133
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { mutationSnapshotsFromProposals, } from "./sessionMutations.js";
|
|
2
|
+
export function assistantTranscriptTextFromEvents(events) {
|
|
3
|
+
const parts = [];
|
|
4
|
+
for (const event of events) {
|
|
5
|
+
if (event.type === "message" && event.role === "assistant") {
|
|
6
|
+
parts.push(event.text);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
return parts.join("\n\n").trim();
|
|
10
|
+
}
|
|
11
|
+
export function proposalPayloadsFromEvents(events) {
|
|
12
|
+
const proposals = [];
|
|
13
|
+
for (const event of events) {
|
|
14
|
+
if (event.type === "proposal") {
|
|
15
|
+
proposals.push(event.proposal);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return proposals;
|
|
19
|
+
}
|
|
20
|
+
export function transcriptMessagesForTurn(userMessage, attachments, events, options) {
|
|
21
|
+
const messages = [
|
|
22
|
+
{
|
|
23
|
+
role: "user",
|
|
24
|
+
text: userMessage,
|
|
25
|
+
...(attachments.length > 0 ? { attachments: [...attachments] } : {}),
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
for (const event of events) {
|
|
29
|
+
if (event.type === "message" && event.role !== "assistant") {
|
|
30
|
+
messages.push({ role: event.role, text: event.text });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const assistantText = assistantTranscriptTextFromEvents(events);
|
|
34
|
+
const proposals = proposalPayloadsFromEvents(events);
|
|
35
|
+
const mutations = proposals.length > 0
|
|
36
|
+
? mutationSnapshotsFromProposals(proposals, options?.autoApply === true)
|
|
37
|
+
: [];
|
|
38
|
+
if (assistantText.length > 0 || mutations.length > 0) {
|
|
39
|
+
messages.push({
|
|
40
|
+
role: "assistant",
|
|
41
|
+
text: assistantText,
|
|
42
|
+
...(mutations.length > 0 ? { mutations } : {}),
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
return messages;
|
|
46
|
+
}
|
package/examples/README.md
CHANGED
|
@@ -14,7 +14,7 @@ Upgrading older YAML: [`sf migrate-yaml`](../docs/cli-reference.md#sf-migrate-ya
|
|
|
14
14
|
|
|
15
15
|
- **Route `if`** — `detect-changes` emits `author_diagrams` and skips `author-diagrams` when the PR diff has no diagram-relevant types
|
|
16
16
|
- **Multi-type output** — one pipeline authors 1–5 Archify diagram specs (`architecture`, `workflow`, `sequence`, `dataflow`, `lifecycle`)
|
|
17
|
-
- **Skill binding** — `skill: archify` on the
|
|
17
|
+
- **Skill binding** — `skill: archify` on the stage file; GHA provisions the skill via `sf skills install`
|
|
18
18
|
- **Deterministic handoff** — agents emit JSON specs; GHA runs `sf envelope get --format handoff` and Archify `deliver` outside the agent
|
|
19
19
|
- **Real automation** — [`.github/workflows/archify-pr-diagrams.yml`](../.github/workflows/archify-pr-diagrams.yml) posts sticky PR comments with browser-viewable HTML artifacts
|
|
20
20
|
|
|
@@ -10,7 +10,7 @@ for GHA to deliver as HTML.
|
|
|
10
10
|
|------|------|
|
|
11
11
|
| `archify-on-pr.pipeline.yaml` | detect-changes Route `if` → author-diagrams; `verify` + `on_verify_fail` on detect |
|
|
12
12
|
| `detect-changes.yaml` | Thin copy/emit from `ci-context.json` → `changes.json` + envelope |
|
|
13
|
-
| `author-diagrams.yaml` | Writes `{type}.spec.json` per selected type (skill: archify on
|
|
13
|
+
| `author-diagrams.yaml` | Writes `{type}.spec.json` per selected type (`skill: archify` on the stage file) |
|
|
14
14
|
| `archify-on-pr.task.yaml` | Task bound at run time |
|
|
15
15
|
| `../../scripts/prepare-ci-context.sh` | Deterministic PR/git context + diagram type selection before `sf run` |
|
|
16
16
|
| `../../scripts/validate-detect-envelope.mjs` | Verify helper: `changes.json` / envelope match `ci-context.json` |
|
|
@@ -3,7 +3,7 @@ system_prompt: |
|
|
|
3
3
|
You are branch-a. Call emit_stage_envelope exactly once with status success,
|
|
4
4
|
a short summary that acknowledges branch-a ran, and artifacts []. Do not call
|
|
5
5
|
ask_operator.
|
|
6
|
-
model:
|
|
6
|
+
model: cursor/composer-2-5
|
|
7
7
|
io:
|
|
8
8
|
input:
|
|
9
9
|
schema:
|
|
@@ -65,14 +65,14 @@ stages:
|
|
|
65
65
|
clone_cap: 8
|
|
66
66
|
clone_mode: parallel
|
|
67
67
|
route:
|
|
68
|
-
- to: plan
|
|
68
|
+
- to: feature-plan
|
|
69
69
|
on_verify_fail:
|
|
70
70
|
mode: repair
|
|
71
71
|
max_attempts: 3
|
|
72
72
|
retry_safety: idempotent
|
|
73
73
|
include_failed_checks: true
|
|
74
|
-
- id: plan
|
|
75
|
-
uses: ./plan.yaml
|
|
74
|
+
- id: feature-plan
|
|
75
|
+
uses: ./feature-plan.yaml
|
|
76
76
|
route:
|
|
77
77
|
- to: align
|
|
78
78
|
on_verify_fail:
|
|
@@ -85,14 +85,14 @@ stages:
|
|
|
85
85
|
clone_cap: 8
|
|
86
86
|
clone_mode: sequential
|
|
87
87
|
route:
|
|
88
|
-
- to: implement
|
|
88
|
+
- to: feature-implement
|
|
89
89
|
on_verify_fail:
|
|
90
90
|
mode: repair
|
|
91
91
|
max_attempts: 3
|
|
92
92
|
retry_safety: idempotent
|
|
93
93
|
include_failed_checks: true
|
|
94
|
-
- id: implement
|
|
95
|
-
uses: ./implement.yaml
|
|
94
|
+
- id: feature-implement
|
|
95
|
+
uses: ./feature-implement.yaml
|
|
96
96
|
route:
|
|
97
97
|
- to: verify
|
|
98
98
|
on_verify_fail:
|
|
@@ -103,14 +103,14 @@ stages:
|
|
|
103
103
|
- id: verify
|
|
104
104
|
uses: ./verify.yaml
|
|
105
105
|
route:
|
|
106
|
-
- to: review
|
|
106
|
+
- to: feature-review
|
|
107
107
|
on_verify_fail:
|
|
108
108
|
mode: repair
|
|
109
109
|
max_attempts: 3
|
|
110
110
|
retry_safety: idempotent
|
|
111
111
|
include_failed_checks: true
|
|
112
|
-
- id: review
|
|
113
|
-
uses: ./review.yaml
|
|
112
|
+
- id: feature-review
|
|
113
|
+
uses: ./feature-review.yaml
|
|
114
114
|
route:
|
|
115
115
|
- to: address-feedback
|
|
116
116
|
on_verify_fail:
|
|
@@ -123,7 +123,7 @@ stages:
|
|
|
123
123
|
route:
|
|
124
124
|
- to: publish
|
|
125
125
|
- type: loop
|
|
126
|
-
to: review
|
|
126
|
+
to: feature-review
|
|
127
127
|
max_replays: 2
|
|
128
128
|
on_max_replays: wait_for_human
|
|
129
129
|
replay_session: new_session
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
id: feedback-loop-wait-human
|
|
2
2
|
stages:
|
|
3
|
-
- id: plan
|
|
3
|
+
- id: feedback-plan
|
|
4
4
|
entry: true
|
|
5
5
|
route:
|
|
6
|
-
- to: implement
|
|
7
|
-
uses: ./plan.yaml
|
|
8
|
-
- id: implement
|
|
6
|
+
- to: feedback-implement
|
|
7
|
+
uses: ./feedback-plan.yaml
|
|
8
|
+
- id: feedback-implement
|
|
9
9
|
route:
|
|
10
|
-
- to: review
|
|
11
|
-
uses: ./implement.yaml
|
|
12
|
-
- id: review
|
|
10
|
+
- to: feedback-review
|
|
11
|
+
uses: ./feedback-implement.yaml
|
|
12
|
+
- id: feedback-review
|
|
13
13
|
route:
|
|
14
14
|
- to: submit
|
|
15
15
|
- type: loop
|
|
16
|
-
to: implement
|
|
16
|
+
to: feedback-implement
|
|
17
17
|
max_replays: 1
|
|
18
18
|
on_max_replays: wait_for_human
|
|
19
19
|
replay_session: resume
|
|
20
|
-
uses: ./review.yaml
|
|
20
|
+
uses: ./feedback-review.yaml
|
|
21
21
|
- id: submit
|
|
22
22
|
uses: ./submit.yaml
|
|
23
23
|
replay_safe: false
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
id: feedback-loop
|
|
2
2
|
stages:
|
|
3
|
-
- id: plan
|
|
3
|
+
- id: feedback-plan
|
|
4
4
|
entry: true
|
|
5
5
|
route:
|
|
6
|
-
- to: implement
|
|
7
|
-
uses: ./plan.yaml
|
|
8
|
-
- id: implement
|
|
6
|
+
- to: feedback-implement
|
|
7
|
+
uses: ./feedback-plan.yaml
|
|
8
|
+
- id: feedback-implement
|
|
9
9
|
route:
|
|
10
|
-
- to: review
|
|
11
|
-
uses: ./implement.yaml
|
|
12
|
-
- id: review
|
|
10
|
+
- to: feedback-review
|
|
11
|
+
uses: ./feedback-implement.yaml
|
|
12
|
+
- id: feedback-review
|
|
13
13
|
route:
|
|
14
14
|
- to: submit
|
|
15
15
|
- type: loop
|
|
16
|
-
to: implement
|
|
16
|
+
to: feedback-implement
|
|
17
17
|
max_replays: 2
|
|
18
18
|
on_max_replays: require_continue
|
|
19
19
|
replay_session: resume
|
|
20
|
-
uses: ./review.yaml
|
|
20
|
+
uses: ./feedback-review.yaml
|
|
21
21
|
- id: submit
|
|
22
22
|
uses: ./submit.yaml
|
|
23
23
|
replay_safe: false
|
|
@@ -3,14 +3,14 @@ stages:
|
|
|
3
3
|
- id: clarify
|
|
4
4
|
entry: true
|
|
5
5
|
route:
|
|
6
|
-
- to: research
|
|
6
|
+
- to: fan-in-research
|
|
7
7
|
- to: validation
|
|
8
8
|
uses: ./clarify.yaml
|
|
9
|
-
- id: research
|
|
9
|
+
- id: fan-in-research
|
|
10
10
|
route:
|
|
11
11
|
- to: synthesize
|
|
12
12
|
on: [succeeded, failed, skipped]
|
|
13
|
-
uses: ./research.yaml
|
|
13
|
+
uses: ./fan-in-research.yaml
|
|
14
14
|
- id: validation
|
|
15
15
|
route:
|
|
16
16
|
- to: synthesize
|
|
@@ -3,13 +3,13 @@ stages:
|
|
|
3
3
|
- id: clarify
|
|
4
4
|
entry: true
|
|
5
5
|
route:
|
|
6
|
-
- to: research
|
|
6
|
+
- to: fan-in-research
|
|
7
7
|
- to: validation
|
|
8
8
|
uses: ./clarify.yaml
|
|
9
|
-
- id: research
|
|
9
|
+
- id: fan-in-research
|
|
10
10
|
route:
|
|
11
11
|
- to: synthesize
|
|
12
|
-
uses: ./research.yaml
|
|
12
|
+
uses: ./fan-in-research.yaml
|
|
13
13
|
- id: validation
|
|
14
14
|
route:
|
|
15
15
|
- to: synthesize
|
|
@@ -13,7 +13,6 @@ stages:
|
|
|
13
13
|
include_failed_checks: true
|
|
14
14
|
- id: oss-explain-issue
|
|
15
15
|
uses: ./oss-explain-issue.yaml
|
|
16
|
-
skill: ce-explain
|
|
17
16
|
on_verify_fail:
|
|
18
17
|
mode: repair
|
|
19
18
|
max_attempts: 3
|
|
@@ -85,7 +84,6 @@ stages:
|
|
|
85
84
|
include_failed_checks: true
|
|
86
85
|
- id: oss-explain-fix
|
|
87
86
|
uses: ./oss-explain-fix.yaml
|
|
88
|
-
skill: ce-explain
|
|
89
87
|
on_verify_fail:
|
|
90
88
|
mode: repair
|
|
91
89
|
max_attempts: 3
|
package/examples/stageflow.yaml
CHANGED
|
@@ -21,6 +21,7 @@ catalog:
|
|
|
21
21
|
- mcp-hitl-tour
|
|
22
22
|
- feature-loop
|
|
23
23
|
- ship-feature
|
|
24
|
+
- triggers-readiness
|
|
24
25
|
tasks:
|
|
25
26
|
- generic-fan-in
|
|
26
27
|
- stage-mcp
|
|
@@ -42,9 +43,14 @@ catalog:
|
|
|
42
43
|
- mcp-hitl-tour
|
|
43
44
|
- feature-loop
|
|
44
45
|
- ship-feature
|
|
46
|
+
- triggers-readiness
|
|
47
|
+
triggers:
|
|
48
|
+
- triggers
|
|
49
|
+
- triggers-readiness/triggers
|
|
45
50
|
patterns:
|
|
46
51
|
pipeline: "*.pipeline.yaml"
|
|
47
52
|
task: "*.task.yaml"
|
|
53
|
+
trigger: "*.trigger.yaml"
|
|
48
54
|
exclude:
|
|
49
55
|
- route-wiring-smoke-test/rejected
|
|
50
56
|
- stage-mcp/stage-mcp-dead.pipeline.yaml
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
id: sample-inbox-email
|
|
2
|
+
pipeline: hello
|
|
3
|
+
task: my-task
|
|
4
|
+
kind: event
|
|
5
|
+
enabled: false
|
|
6
|
+
event:
|
|
7
|
+
source: email.message
|
|
8
|
+
match:
|
|
9
|
+
subject: Invoice
|
|
10
|
+
config:
|
|
11
|
+
host: imap.example.com
|
|
12
|
+
port: 993
|
|
13
|
+
user: notifications@example.com
|
|
14
|
+
secretRef: EMAIL_PASSWORD
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Triggers readiness smoke catalog
|
|
2
|
+
|
|
3
|
+
Self-contained catalog for [Triggers readiness](../../docs/triggers-readiness.md). One trigger per checklist row, all targeting the minimal `readiness` pipeline.
|
|
4
|
+
|
|
5
|
+
| Trigger id | Kind | Default `enabled` | How to test |
|
|
6
|
+
|------------|------|-------------------|-------------|
|
|
7
|
+
| `readiness-manual` | manual | **true** | Triggers → **Fire** (or `sf trigger fire --run readiness-manual` via API id) |
|
|
8
|
+
| `readiness-schedule` | schedule | false | Enable in UI; cron `*/5 * * * *` UTC; needs Host scheduler |
|
|
9
|
+
| `readiness-github-pr` | event (`github.pull_request`) | false | Set `event.config.repo`, enable; needs `GITHUB_TOKEN` on Host |
|
|
10
|
+
| `readiness-webhook` | event (`webhook`) | false | Set `WEBHOOK_SECRET` on Host, enable; `POST /api/triggers/readiness-webhook/webhook` |
|
|
11
|
+
| `readiness-email` | event (`email.message`) | false | Edit IMAP `config`, set `EMAIL_PASSWORD`, enable; restart Host after create |
|
|
12
|
+
| `readiness-dynamic-manual` | manual (no `task`) | false | UI **Fire** disabled; `sf trigger fire readiness-dynamic-manual --task-inline '{"id":"t","goal":"Dynamic smoke"}'` |
|
|
13
|
+
|
|
14
|
+
## Validate and run pipeline (no trigger)
|
|
15
|
+
|
|
16
|
+
From the repository root:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
sf validate --strict \
|
|
20
|
+
--pipeline examples/triggers-readiness/readiness.pipeline.yaml \
|
|
21
|
+
--task examples/triggers-readiness/readiness.task.yaml
|
|
22
|
+
sf run \
|
|
23
|
+
--pipeline examples/triggers-readiness/readiness.pipeline.yaml \
|
|
24
|
+
--task examples/triggers-readiness/readiness.task.yaml
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Docker Compose
|
|
28
|
+
|
|
29
|
+
The image copies this tree to `/opt/stageflow/catalog/triggers-readiness` and registers it via `STAGEFLOW_ENSURE_PROJECT_ROOTS`. After `docker compose up --build -d`, open **Triggers** — you should see six `readiness-*` triggers.
|
|
30
|
+
|
|
31
|
+
Optional `.env` for event triggers:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
GITHUB_TOKEN=… # readiness-github-pr
|
|
35
|
+
WEBHOOK_SECRET=… # readiness-webhook (use a long random string)
|
|
36
|
+
EMAIL_PASSWORD=… # readiness-email (after you point config at a real mailbox)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Webhook smoke (replace secret and use the trigger id from the console if namespaced):
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
BODY='{"hello":"triggers"}'
|
|
43
|
+
SIG=$(printf '%s' "$BODY" | openssl dgst -sha256 -hmac "$WEBHOOK_SECRET" | awk '{print $2}')
|
|
44
|
+
curl -sS -X POST "http://127.0.0.1:3847/api/triggers/readiness-webhook/webhook" \
|
|
45
|
+
-H "Content-Type: application/json" \
|
|
46
|
+
-H "x-hub-signature-256: $SIG" \
|
|
47
|
+
-d "$BODY"
|
|
48
|
+
```
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
id: readiness-emit
|
|
2
|
+
system_prompt: |
|
|
3
|
+
You are a trigger smoke-test stage. Reply with one short acknowledgment, then call emit_stage_envelope once with
|
|
4
|
+
status: success, a non-empty summary, artifacts: [], and payload: { "trigger_test": true }.
|
|
5
|
+
io:
|
|
6
|
+
input:
|
|
7
|
+
schema:
|
|
8
|
+
type: object
|
|
9
|
+
additionalProperties: true
|
|
10
|
+
output:
|
|
11
|
+
schema:
|
|
12
|
+
type: object
|
|
13
|
+
required:
|
|
14
|
+
- trigger_test
|
|
15
|
+
properties:
|
|
16
|
+
trigger_test:
|
|
17
|
+
type: boolean
|
|
18
|
+
additionalProperties: false
|
package/package.json
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stageflow",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.35.0",
|
|
4
4
|
"description": "Stageflow — CLI pipeline runtime for configurable stages on Pi",
|
|
5
5
|
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
6
14
|
"bin": {
|
|
7
15
|
"sf": "./dist/cli.js",
|
|
8
16
|
"stageflow": "./dist/cli.js"
|