{pendingImages.length > 0 && (
{pendingImages.map((img, i) => (
))}
)}
{
const file = e.target.files?.[0];
if (file) {
onImagesChange([
...pendingImages,
{ file, previewUrl: URL.createObjectURL(file) },
]);
e.target.value = "";
}
}}
style={{ display: "none" }}
/>
You can also paste images or drag & drop
{showDepDropdown && (
setDepSearch(e.target.value)}
onClick={(e) => e.stopPropagation()}
/>
{filteredDeps.length === 0 ? (
No available tasks
) : (
filteredDeps.map((t) => (
toggleDep(t.id)}
onMouseDown={(e) => e.preventDefault()}
>
{t.id}
{truncate(t.title || t.description || t.id, 30)}
))
)}
)}
{dependencies.length > 0 && (
{dependencies.map((depId) => (
{depId}
))}
)}
{modelsLoading ? (
Loading models…
) : availableModels.length === 0 ? (
No models available. Configure authentication in Settings.
) : (
<>
{presetMode === "preset" && selectedPreset ? (
Using preset: {selectedPreset.name}
) : null}
{presetMode === "preset" ? (
) : null}
{
onPresetModeChange("custom");
onSelectedPresetIdChange("");
onExecutorModelChange(value);
}}
models={availableModels}
disabled={disabled || presetMode === "preset"}
favoriteProviders={favoriteProviders}
onToggleFavorite={handleToggleFavorite}
favoriteModels={favoriteModels}
onToggleModelFavorite={handleToggleModelFavorite}
/>
{
onPresetModeChange("custom");
onSelectedPresetIdChange("");
onValidatorModelChange(value);
}}
models={availableModels}
disabled={disabled || presetMode === "preset"}
favoriteProviders={favoriteProviders}
onToggleFavorite={handleToggleFavorite}
favoriteModels={favoriteModels}
onToggleModelFavorite={handleToggleModelFavorite}
/>
{onPlanningModelChange && (
{
onPresetModeChange("custom");
onSelectedPresetIdChange("");
onPlanningModelChange(value);
}}
models={availableModels}
disabled={disabled || presetMode === "preset"}
favoriteProviders={favoriteProviders}
onToggleFavorite={handleToggleFavorite}
favoriteModels={favoriteModels}
onToggleModelFavorite={handleToggleModelFavorite}
/>
)}
{onThinkingLevelChange && (
)}
{onReviewLevelChange && (
)}
>
)}
Select steps to run after task implementation completes
{workflowSteps.length > 0 && workflowSteps.map((step) => (
))}
{/* Selected steps — execution order with reorder controls */}
{selectedWorkflowSteps.length > 1 && (
Execution order:
{selectedWorkflowSteps.map((stepId, index) => {
const stepInfo = workflowStepLookup.get(stepId);
return (
{index + 1}
{stepInfo?.name || stepId}
);
})}
)}