refactor: remove lite-plan-c workflow and update orchestrator UI components

- Deleted the lite-plan-c workflow file to streamline the planning process.
- Updated orchestrator localization files to include new variable picker and multi-node selector messages.
- Modified PropertyPanel to support new execution modes and added output variable input fields.
- Enhanced SlashCommandNode to reflect changes in execution modes.
- Introduced MultiNodeSelector component for better node selection management.
- Added VariablePicker component for selecting variables with improved UX.
This commit is contained in:
catlog22
2026-02-03 21:24:34 +08:00
parent 9bb50a13fa
commit a806d70d9b
13 changed files with 233 additions and 3084 deletions

View File

@@ -74,16 +74,16 @@ function SlashCommandProperties({
<div>
<label className="block text-sm font-medium text-foreground mb-1">{formatMessage({ id: 'orchestrator.propertyPanel.labels.executionMode' })}</label>
<select
value={data.execution?.mode || 'analysis'}
value={data.execution?.mode || 'mainprocess'}
onChange={(e) =>
onChange({
execution: { ...data.execution, mode: e.target.value as 'analysis' | 'write' },
execution: { ...data.execution, mode: e.target.value as 'mainprocess' | 'async' },
})
}
className="w-full h-10 px-3 rounded-md border border-border bg-background text-foreground text-sm"
>
<option value="analysis">{formatMessage({ id: 'orchestrator.propertyPanel.options.modeAnalysis' })}</option>
<option value="write">{formatMessage({ id: 'orchestrator.propertyPanel.options.modeWrite' })}</option>
<option value="mainprocess">{formatMessage({ id: 'orchestrator.propertyPanel.options.modeMainprocess' })}</option>
<option value="async">{formatMessage({ id: 'orchestrator.propertyPanel.options.modeAsync' })}</option>
</select>
</div>
@@ -109,7 +109,7 @@ function SlashCommandProperties({
onChange({
execution: {
...data.execution,
mode: data.execution?.mode || 'analysis',
mode: data.execution?.mode || 'mainprocess',
timeout: e.target.value ? parseInt(e.target.value) : undefined,
},
})
@@ -117,6 +117,15 @@ function SlashCommandProperties({
placeholder={formatMessage({ id: 'orchestrator.propertyPanel.placeholders.timeout' })}
/>
</div>
<div>
<label className="block text-sm font-medium text-foreground mb-1">{formatMessage({ id: 'orchestrator.propertyPanel.labels.outputVariable' })}</label>
<Input
value={data.outputVariable || ''}
onChange={(e) => onChange({ outputVariable: e.target.value })}
placeholder={formatMessage({ id: 'orchestrator.propertyPanel.placeholders.variableName' })}
/>
</div>
</div>
);
}
@@ -270,6 +279,15 @@ function ConditionalProperties({
/>
</div>
</div>
<div>
<label className="block text-sm font-medium text-foreground mb-1">{formatMessage({ id: 'orchestrator.propertyPanel.labels.outputVariable' })}</label>
<Input
value={data.outputVariable || ''}
onChange={(e) => onChange({ outputVariable: e.target.value })}
placeholder={formatMessage({ id: 'orchestrator.propertyPanel.placeholders.variableName' })}
/>
</div>
</div>
);
}
@@ -334,6 +352,15 @@ function ParallelProperties({
{formatMessage({ id: 'orchestrator.propertyPanel.labels.failFast' })}
</label>
</div>
<div>
<label className="block text-sm font-medium text-foreground mb-1">{formatMessage({ id: 'orchestrator.propertyPanel.labels.outputVariable' })}</label>
<Input
value={data.outputVariable || ''}
onChange={(e) => onChange({ outputVariable: e.target.value })}
placeholder={formatMessage({ id: 'orchestrator.propertyPanel.placeholders.variableName' })}
/>
</div>
</div>
);
}

View File

@@ -17,12 +17,12 @@ interface SlashCommandNodeProps {
// Mode badge styling
const MODE_STYLES = {
analysis: 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',
write: 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400',
mainprocess: 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400',
async: 'bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-400',
};
export const SlashCommandNode = memo(({ data, selected }: SlashCommandNodeProps) => {
const executionMode = data.execution?.mode || 'analysis';
const executionMode = data.execution?.mode || 'mainprocess';
return (
<NodeWrapper