feat(workflows): add pipeline step type for in-process command execution#14
Open
sfo2001 wants to merge 2 commits intoopenclaw:mainfrom
Open
feat(workflows): add pipeline step type for in-process command execution#14sfo2001 wants to merge 2 commits intoopenclaw:mainfrom
sfo2001 wants to merge 2 commits intoopenclaw:mainfrom
Conversation
Dead code left over from the clawd-only refactor in 5679042. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Workflow steps can now use `pipeline:` instead of `command:` to execute lobster pipeline expressions in-process via the registry, avoiding the overhead and context loss of shell-spawned bin wrappers. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
Workflow steps currently execute via
/bin/sh, so using lobster's stdlib commands (map, sort, jq-filter, each) from a workflow requires spawning a separate lobster process. Thepipelinestep type runs commands in-process through the existing registry, avoiding the shell round-trip and making stdlib commands first-class citizens in workflow definitions.Summary
pipeline: "command | chain"instead ofcommand: "shell string"map,sort,eachdirectly in workflow YAMLcommandorpipelineis required per step; validation rejects both or neithercwdis not supported for pipeline steps (raises clear error)registrythroughRunContextfrom CLI to workflow runnerChanges
src/workflows/file.ts(+runPipelineStep,stdinToStream, validation)src/cli.ts(passregistryinto workflow run context)src/commands/registry.ts(exportRegistryinterface)test/workflow_pipeline_step.test.ts(268 lines)+366 / -9 lines across 4 files.
Test plan
pnpm buildpassespnpm lintpassesnode --test dist/test/workflow_pipeline_step.test.jscommandsteps unchanged)Use of AI