Skip to content

feat(orchestration): director-type picker + DirectorBackend abstraction (#11, #8) - #25

Merged
zaridan merged 1 commit into
mainfrom
zaridan/feat-orch-11-8-director-picker
Jun 24, 2026
Merged

feat(orchestration): director-type picker + DirectorBackend abstraction (#11, #8)#25
zaridan merged 1 commit into
mainfrom
zaridan/feat-orch-11-8-director-picker

Conversation

@zaridan

@zaridan zaridan commented Jun 24, 2026

Copy link
Copy Markdown
Owner

What

Adds a director-type picker to the ORCASTRATORS launch flow, dispatching the user's choice through a new DirectorBackend abstraction. Closes #11 and #8.

#8DirectorBackend (src/renderer/src/lib/director-backend.ts)

A deliberately thin abstraction that wraps the two existing launchers (it does not reimplement them):

It earns its keep precisely because the picker dispatches through it (no premature standalone abstraction; no Hybrid backend yet).

#11 — director-type picker (DirectorTypePicker + modal wiring)

The ORCASTRATORS + modal now picks the director type first:

  • Smart director — your default LLM + /orcastrate (the existing behavior).
  • Recipe director — copy: "No director LLM; runs a fixed workflow." — answers "why spend tokens on a director?" before it's asked. A recipe dropdown is sourced from getRecipes().

On confirm the modal dispatches via new LlmDirectorBackend() / new RecipeDirectorBackend(recipe).launch(project, …).

Gating: the picker is the gate for experimentalOrchestratorslaunchRecipeDirector is ungated by design (per #9), so the Recipe option only appears under the flag. With the flag off, the modal behaves exactly as before (Smart only; agent + task fields shown). In Recipe mode the coordinator-LLM inputs (agent, task prompt) are hidden, since a recipe director seeds no director LLM.

shadcn Dialog/Select + selectable radio cards, design tokens only, all strings i18n'd, cross-platform.

Tests

  • director-backend.test.ts — Smart → LlmDirectorBackendlaunchOrchestratorForProject; Recipe+recipe → RecipeDirectorBackend(recipe)launchRecipeDirector with that recipe (launch fns mocked; args asserted).
  • DirectorTypePicker.test.tsx — Smart always offered; Recipe only under the flag; dropdown lists every getRecipes() recipe; recipe dropdown hidden in Smart mode.

Green: vitest (8 new), typecheck, electron-vite build, oxlint, localization catalog.

Dependency on #10

Sources the recipe dropdown from getRecipes() in recipe-director-recipes.ts (#10). #10 is merged to main; this branch has been merged up to origin/main and imports getRecipes() directly. Per the lane split, this PR only reads recipe-director-recipes.ts — it does not modify it.

🤖 Generated with Claude Code

…on (#11, #8)

#8 — new src/renderer/src/lib/director-backend.ts: a thin DirectorBackend
abstraction wrapping the two existing launchers, not reimplementing them.
LlmDirectorBackend wraps launchOrchestratorForProject (the Smart/LLM director);
RecipeDirectorBackend carries a Recipe and wraps launchRecipeDirector (#9). It
earns its keep because the picker dispatches the user's choice through it.

#11 — the ORCASTRATORS `+` modal now picks the director TYPE first via a new
DirectorTypePicker (shadcn cards + recipe Select, tokens, i18n): Smart director
(default LLM + /orcastrate) vs Recipe director ("No director LLM; runs a fixed
workflow"), with a recipe dropdown sourced from getRecipes(). The picker is the
gate for experimentalOrchestrators — launchRecipeDirector is ungated by design,
so the Recipe option only appears under the flag; with it off the modal behaves
exactly as before. On confirm the modal dispatches via the DirectorBackend.

Tests: director-backend (Smart -> LlmDirectorBackend -> launchOrchestratorForProject;
Recipe+recipe -> RecipeDirectorBackend(recipe) -> launchRecipeDirector with that
recipe) and DirectorTypePicker (Smart always; Recipe only under the flag; dropdown
lists getRecipes()). vitest + typecheck + electron-vite build + oxlint green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@zaridan
zaridan merged commit 82196e9 into main Jun 24, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Director-type picker UI (Smart / Recipe), gated by experimentalOrchestrators

1 participant