Skip to content

Add natural language pipeline builder with cron/stage generation#81

Merged
fuzziecoder merged 1 commit intocodex/fix-remaining-issues-and-raise-prfrom
codex/implement-natural-language-pipeline-builder
Feb 24, 2026
Merged

Add natural language pipeline builder with cron/stage generation#81
fuzziecoder merged 1 commit intocodex/fix-remaining-issues-and-raise-prfrom
codex/implement-natural-language-pipeline-builder

Conversation

@fuzziecoder
Copy link
Copy Markdown
Owner

@fuzziecoder fuzziecoder commented Feb 24, 2026

Motivation

  • Provide a next-level UX that allows users to describe a pipeline in natural language and have the app generate a structured pipeline plan, schedule, and stage configs automatically.
  • Reduce friction when creating pipelines by inferring common sources, transforms and destinations (e.g. S3, pandas, PostgreSQL) and producing a ready-to-submit plan.

Description

  • Added a new utility src/lib/nlPipelineBuilder.ts that parses a natural language prompt to infer a cron schedule, human-readable schedule, pipeline name/description, and stage configurations (source/transform/destination).
  • Integrated the builder into the Create Pipeline modal (src/components/modals/CreatePipelineModal.tsx) by adding a prompt textarea, Generate Plan button, preview panel, and logic to populate the form with the generated plan.
  • Wired generated metadata into the pipeline creation payload so the config includes schedule, stage_config, and generated_from_prompt when a plan is generated from NL input.
  • Kept generated plan timezone defaulted to UTC and included a human-readable schedule string in the preview output.

Testing

  • Ran npm run build which completed successfully and produced a production build.
  • Ran npm run lint which completed successfully (the repo retains unrelated pre-existing ESLint warnings that are unchanged by this PR).
  • Attempted an automated Playwright UI run to capture a screenshot of the modal, but the Chromium process crashed in this environment (SIGSEGV) so no screenshot was produced.

Codex Task


Open with Devin

@vercel
Copy link
Copy Markdown

vercel Bot commented Feb 24, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
flexi-roaster Ready Ready Preview, Comment Feb 24, 2026 2:59pm

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Feb 24, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch codex/implement-natural-language-pipeline-builder

Comment @coderabbitai help to get the list of available commands and usage tips.

@fuzziecoder fuzziecoder self-assigned this Feb 24, 2026
@fuzziecoder fuzziecoder merged commit 1d9a645 into codex/fix-remaining-issues-and-raise-pr Feb 24, 2026
6 of 7 checks passed
Copy link
Copy Markdown

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

View 6 additional findings in Devin Review.

Open in Devin Review

Comment on lines +66 to +75
...(generatedPlan
? {
schedule: {
cron: generatedPlan.cron,
timezone: generatedPlan.timezone,
},
stage_config: generatedPlan.stages,
generated_from_prompt: generatedPlan.config.generatedFromPrompt,
}
: {}),
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Stale generatedPlan included in submission payload after user edits stages

When a user generates a plan and then manually edits the stages (adding, removing, or renaming), the generatedPlan state is never cleared or updated. On form submission, the payload includes stage_config: generatedPlan.stages (line 72) which contains the original generated stages, while config.stages (lines 62-65) contains the user's edited stages. This creates a data inconsistency in the persisted pipeline config.

Root Cause and Impact

The generatedPlan state is set in handleGenerateFromPrompt (src/components/modals/CreatePipelineModal.tsx:101-102) but is never cleared when the user subsequently edits the form fields via handleStageChange, handleAddStage, or handleRemoveStage.

For example:

  1. User generates a plan → generatedPlan.stages = [{name: 'Fetch from S3', ...}, {name: 'Load to PostgreSQL', ...}]
  2. User removes 'Fetch from S3' and adds 'Read from API' manually
  3. User submits → payload config contains:
    • stages: [{name: 'Read from API', order: 0}, {name: 'Load to PostgreSQL', order: 1}] (user's edits)
    • stage_config: [{name: 'Fetch from S3', ...}, {name: 'Load to PostgreSQL', ...}] (stale generated data)

Any downstream code that reads stage_config will see stages that don't match the actual pipeline stages, leading to potential confusion or incorrect behavior.

Prompt for agents
In src/components/modals/CreatePipelineModal.tsx, clear the generatedPlan state whenever the user manually modifies the form after a plan has been generated. Add setGeneratedPlan(null) calls inside handleStageChange (around line 34), handleAddStage (around line 26), and handleRemoveStage (around line 30). This ensures that stale generated metadata is not included in the submission payload when the user has manually diverged from the generated plan.
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant