feat: merge task-broker into superplane#4873
Open
superleomori wants to merge 12 commits into
Open
Conversation
|
👋 Commands for maintainers:
|
ec9bd7a to
62b8f7e
Compare
Collaborator
|
/sem-approve |
shiroyasha
previously approved these changes
May 19, 2026
cb857ad to
3796aab
Compare
Absorbs the standalone task-broker service directly into SuperPlane so fleet-manager instances can be configured and managed without a separate deployment. - Add `runner_fleets` and `runner_tasks` DB tables (migration) - New `pkg/runners/` package: RunnerFleet/RunnerTask models, postgres store, FleetClient (replaces BrokerClient) - Runner component now resolves fleet from DB (by spec `fleet_id`) or falls back to TASK_BROKER_* env vars for backwards compatibility - Webhook URL now points to `POST /webhooks/runner/complete/:runnerTaskID` which looks up the RunnerTask and dispatches to the action handler - Fleet management REST API: POST/GET/DELETE `/admin/api/v1/runner/fleets` (installation-admin only) - Live log stream resolves fleet via DB before falling back to env vars Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Igor Sarcevic <igor@superplane.com> Signed-off-by: Igor Šarčević <igor@operately.com>
- Regenerate docs/components/Core.mdx with updated runner documentation (broker → fleet terminology) - Update db/structure.sql to include runner_fleets and runner_tasks tables from the 20260518120000 migration Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Igor Sarcevic <igor@superplane.com> Signed-off-by: Igor Šarčević <igor@operately.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Signed-off-by: Igor Sarcevic <igor@superplane.com> Signed-off-by: Igor Šarčević <igor@operately.com>
…ates Signed-off-by: Igor Sarcevic <igor@superplane.com> Signed-off-by: Igor Šarčević <igor@operately.com>
Signed-off-by: Igor Sarcevic <igor@superplane.com> Signed-off-by: Igor Šarčević <igor@operately.com>
Signed-off-by: Igor Sarcevic <igor@superplane.com> Signed-off-by: Igor Šarčević <igor@operately.com>
Signed-off-by: Igor Sarcevic <igor@superplane.com> Signed-off-by: Igor Šarčević <igor@operately.com>
SuperPlane holds the job queue; fleet-manager pulls via sync and reports completion with task_log metadata. Bridge fleets enqueue without pushing to fleet_url. Live logs tail CloudWatch directly. Includes migration, FM API routes, and EC2-oriented store fixes. Co-authored-by: Cursor <cursoragent@cursor.com> Signed-off-by: Igor Šarčević <igor@operately.com>
f52408d to
5138f51
Compare
Signed-off-by: Igor Šarčević <igor@operately.com>
Signed-off-by: Igor Šarčević <igor@operately.com>
Signed-off-by: Igor Šarčević <igor@operately.com>
Signed-off-by: Igor Šarčević <igor@operately.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.
Summary
Closes #4872. Absorbs the standalone
task-brokerservice directly into SuperPlane so fleet-manager instances can be registered, managed, and used without a separate deployment.runner_fleets(installation-scoped fleet registry) andrunner_tasks(per-execution task linkage) tablespkg/runners/package:RunnerFleet/RunnerTaskGORM models,Storeinterface + Postgres implementation,FleetClientthat talks to fleet-manager (replacesBrokerClient)spec.fleet_id; falls back toTASK_BROKER_*env vars for zero-downtime backwards compatibility. Webhook URL now points to the newPOST /webhooks/runner/complete/:runnerTaskIDendpointPOST /api/v1/webhooks/runner/complete/:runnerTaskID): looks upRunnerTask→CanvasNodeExecution→ dispatches to the runner action handlerPOST /admin/api/v1/runner/fleets— register a fleetGET /admin/api/v1/runner/fleets— list fleetsDELETE /admin/api/v1/runner/fleets/{id}— remove a fleetrunner_live_log_stream.go): resolves fleet URL/token via DB before env-var fallbackTest plan
go test ./pkg/components/runner/... -short— all runner unit tests pass (mock store, no DB needed)go test ./pkg/runners/... -short— compiles cleanly (no test files yet; store tested via integration)runner_fleetsandrunner_taskstables are created after running migrationsPOST /admin/api/v1/runner/fleetsand confirm it is returned byGETfleet_idset; confirm execution dispatches to the correct fleet-managerTASK_BROKER_*env-var path still works when nofleet_idis specified🤖 Generated with Claude Code