feat(dagster): expand integration with 9 new tools and full GraphQL validation#4013
feat(dagster): expand integration with 9 new tools and full GraphQL validation#4013waleedlatif1 merged 12 commits intostagingfrom
Conversation
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
…alidation - Add 9 new tools: delete_run, get_run_logs, reexecute_run, list_schedules, start_schedule, stop_schedule, list_sensors, start_sensor, stop_sensor - Fix GraphQL union type handling across all tools (replace invalid `... on Error` with concrete union member fragments per Dagster schema) - Fix TerminateRunFailure, InvalidStepError, InvalidOutputError handling in existing tools - Rename graphql.ts → utils.ts for clarity - Wire all 14 operations into the Dagster block with proper conditions and param remapping - Update icon to dagster logo SVG and set bgColor to white - Add block wiring guidance to the add-tools skill
PR SummaryMedium Risk Overview Implements and registers 14 Dagster GraphQL tools (launch/get/list runs & jobs, get logs, reexecute/terminate/delete runs, list/start/stop schedules and sensors) under Updates product surfaces to expose Dagster: new Reviewed by Cursor Bugbot for commit 7e26b13. Configure here. |
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
…oncrete union members - list_runs: InvalidPipelineRunsFilterError + PythonError - list_jobs: RepositoryNotFoundError + PythonError - reexecute_run: PipelineNotFoundError, RunConflict, UnauthorizedError, PythonError - terminate_run: RunNotFoundError, UnauthorizedError, PythonError - delete_run: RunNotFoundError, UnauthorizedError, PythonError - list_sensors: RepositoryNotFoundError + PythonError - start_sensor: SensorNotFoundError, UnauthorizedError, PythonError - stop_sensor: UnauthorizedError + PythonError - stop_schedule: fix $id variable type String! → String (matches nullable schema arg) - dagster.mdx: add manual intro description section
Greptile SummaryThis PR expands the Dagster integration from 5 to 14 tools, adding full coverage of the run lifecycle (
Confidence Score: 5/5Safe to merge — no correctness bugs found; all three prior review concerns have been resolved in follow-up commits All 14 tools follow consistent patterns with correct GraphQL union type handling, accurate block param remapping, and proper type safety throughout. The three issues raised in previous review rounds (abstract error fragments, nullable $id intent, RepositoryNotFoundError SDL membership) were each verified and resolved. No P0 or P1 issues remain. No files require special attention; dagster.ts block config is intentionally complex to wire 14 operations but is correctly implemented Important Files Changed
Sequence DiagramsequenceDiagram
participant U as User
participant SB as Dagster Block
participant TC as Tool Config
participant EX as Executor
participant DA as Dagster GraphQL API
participant RT as transformResponse
U->>SB: Select operation (e.g. launch_run)<br/>Fill params (host, jobName, etc.)
SB->>TC: config.tool(params) → "dagster_launch_run"
SB->>TC: config.params(params) → coerce + remap fields
EX->>DA: POST {host}/graphql<br/>Dagster-Cloud-Api-Token header<br/>Dynamic mutation/query + variables
alt Success
DA-->>EX: 200 { data: { launchRun: { __typename: "LaunchRunSuccess", run: { runId } } } }
EX->>RT: parseDagsterGraphqlResponse → check HTTP ok + errors[]
RT-->>SB: { success: true, output: { runId } }
SB-->>U: runId output
else Concrete union error (e.g. RunConfigValidationInvalid)
DA-->>EX: 200 { data: { launchRun: { __typename: "RunConfigValidationInvalid", errors: [...] } } }
EX->>RT: parseDagsterGraphqlResponse → no top-level errors, proceeds
RT->>RT: concrete type check → throw RunConfigValidationInvalid: ...
RT-->>SB: Error thrown
SB-->>U: Typed error message
else HTTP / transport failure
DA-->>EX: 4xx/5xx or invalid JSON
EX->>RT: response.ok === false → throw from parseDagsterGraphqlResponse
RT-->>SB: HTTP error
SB-->>U: Transport error
end
Reviews (4): Last reviewed commit: "fix(dagster): always override jobName in..." | Re-trigger Greptile |
…nd use concrete error types
…ythonError in get_run and get_run_logs
|
@greptile |
|
@cursor review |
…tError, PresetNotFoundError, ConflictingExecutionParamsError, NoModeProvidedError)
|
@greptile |
|
@cursor review |
…stale launch_run value leaking
|
@greptile |
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 7e26b13. Configure here.
Summary
delete_run,get_run_logs,reexecute_run,list_schedules,start_schedule,stop_schedule,list_sensors,start_sensor,stop_sensor... on Errorcatch-alls with concrete union member fragments per the Dagster schema (fixesTerminateRunFailure,InvalidStepError,InvalidOutputError,RunConfigValidationInvalid)graphql.ts→utils.tsfor claritywandConfigfor AI-assisted fieldsbgColorto white/add-toolsskillType of Change
Testing
Tested manually
Checklist