ЮИ - Перенести настройки ассистента в управление автопрогонами и убрать верхний режим Ассистент

This commit is contained in:
2026-04-16 20:18:23 +03:00
parent f1333c457e
commit f3255cb3b8
37 changed files with 2987 additions and 166 deletions
@@ -22,14 +22,46 @@ import type {
PromptState
} from "../state/types";
import { AssistantPanel } from "./AssistantPanel";
import { ConnectionPanel } from "./ConnectionPanel";
import { JsonView } from "./JsonView";
import { PanelFrame } from "./PanelFrame";
import { PromptPanel } from "./PromptPanel";
interface AutoRunsHistoryPanelProps {
connection: ConnectionState;
modelOptions: string[];
modelsBusy: boolean;
connectionStatus: string;
connectionBusy: boolean;
onConnectionChange: (next: ConnectionState) => void;
onReloadModels: () => Promise<void> | void;
onSaveLocalConfig: () => void;
onTestConnection: () => Promise<void> | void;
prompts: PromptState;
onPromptsChange: (next: PromptState) => void;
promptPresets: Array<{
id: string;
name: string;
prompt_version: string;
systemPrompt: string;
developerPrompt: string;
domainPrompt: string;
schemaNotes?: string;
fewShotExamples?: string;
}>;
selectedPresetId: string;
onSelectPreset: (id: string) => void;
onLoadPreset: () => void;
onSavePreset: () => void;
onResetDefaults: () => void;
onDiffPrevious: () => void;
presetName: string;
onPresetNameChange: (name: string) => void;
diffSummary: string;
assistantPromptVersion: string;
decompositionPromptVersion: string;
showSettingsMode: boolean;
showAutoRunsMode: boolean;
showAssistantMode: boolean;
showDecompositionMode: boolean;
showProgressMode: boolean;
@@ -470,9 +502,30 @@ function CopyOutlineIcon() {
export function AutoRunsHistoryPanel({
connection,
modelOptions,
modelsBusy,
connectionStatus,
connectionBusy,
onConnectionChange,
onReloadModels,
onSaveLocalConfig,
onTestConnection,
prompts,
onPromptsChange,
promptPresets,
selectedPresetId,
onSelectPreset,
onLoadPreset,
onSavePreset,
onResetDefaults,
onDiffPrevious,
presetName,
onPresetNameChange,
diffSummary,
assistantPromptVersion,
decompositionPromptVersion,
showSettingsMode,
showAutoRunsMode,
showAssistantMode,
showDecompositionMode,
showProgressMode,
@@ -1726,9 +1779,47 @@ export function AutoRunsHistoryPanel({
hideHeader
>
<div className="autoruns-columns">
<section className="autoruns-col">
{showSettingsMode ? (
<section className="autoruns-col autoruns-settings-col">
<div className="autoruns-col-header">
<h3>Настройки</h3>
</div>
<div className="autoruns-settings-stack">
<ConnectionPanel
embedded
value={connection}
modelOptions={modelOptions}
modelsBusy={modelsBusy}
onChange={onConnectionChange}
onReloadModels={onReloadModels}
onSaveLocalConfig={onSaveLocalConfig}
onTestConnection={onTestConnection}
lastStatus={connectionStatus}
busy={connectionBusy}
/>
<PromptPanel
embedded
value={prompts}
onChange={onPromptsChange}
presets={promptPresets}
selectedPresetId={selectedPresetId}
onSelectPreset={onSelectPreset}
onLoadPreset={onLoadPreset}
onSavePreset={onSavePreset}
onResetDefaults={onResetDefaults}
onDiffPrevious={onDiffPrevious}
presetName={presetName}
onPresetNameChange={onPresetNameChange}
diffSummary={diffSummary}
/>
</div>
</section>
) : null}
{showAutoRunsMode ? (
<section className="autoruns-col">
<div className="autoruns-col-header">
<h3>Настройки</h3>
<h3>Автопрогоны</h3>
</div>
<h4>Настройки выборки</h4>
@@ -2086,6 +2177,7 @@ export function AutoRunsHistoryPanel({
{errorText ? <p className="error-text">{errorText}</p> : null}
</section>
) : null}
<section className="autoruns-col">
<div className="autoruns-col-header">
@@ -63,6 +63,7 @@ interface ConnectionPanelProps {
onSaveLocalConfig: () => void;
lastStatus: string;
busy: boolean;
embedded?: boolean;
}
export function ConnectionPanel({
@@ -74,7 +75,8 @@ export function ConnectionPanel({
onTestConnection,
onSaveLocalConfig,
lastStatus,
busy
busy,
embedded = false
}: ConnectionPanelProps) {
const isLocal = value.llmProvider === "local";
const providerPreset = deriveProviderPreset(value);
@@ -121,12 +123,8 @@ export function ConnectionPanel({
setMaxOutputTokensInput(String(parsed));
};
return (
<PanelFrame
title="LLM Connection"
subtitle="Switch between OpenAI cloud and local OpenAI-compatible server."
actions={<span className="status-chip">{lastStatus || "Status: not checked"}</span>}
>
const content = (
<>
<div className="grid-two">
<label>
Provider
@@ -269,6 +267,31 @@ export function ConnectionPanel({
{busy ? "Checking..." : "Test connection"}
</button>
</div>
</>
);
if (embedded) {
return (
<section className="embedded-panel-section">
<div className="embedded-panel-section-header">
<div>
<h4>LLM Connector</h4>
<p>Switch between OpenAI cloud and local OpenAI-compatible server.</p>
</div>
<span className="status-chip">{lastStatus || "Status: not checked"}</span>
</div>
{content}
</section>
);
}
return (
<PanelFrame
title="LLM Connector"
subtitle="Switch between OpenAI cloud and local OpenAI-compatible server."
actions={<span className="status-chip">{lastStatus || "Status: not checked"}</span>}
>
{content}
</PanelFrame>
);
}
@@ -25,6 +25,7 @@ interface PromptPanelProps {
presetName: string;
onPresetNameChange: (name: string) => void;
diffSummary: string;
embedded?: boolean;
}
export function PromptPanel({
@@ -39,10 +40,11 @@ export function PromptPanel({
onDiffPrevious,
presetName,
onPresetNameChange,
diffSummary
diffSummary,
embedded = false
}: PromptPanelProps) {
return (
<PanelFrame title="Prompt Manager" subtitle="Системный, developer и domain уровни управляются отдельно.">
const content = (
<>
<div className="prompt-manager-grid">
<label>
Системный prompt
@@ -101,6 +103,26 @@ export function PromptPanel({
</button>
</div>
{diffSummary ? <p className="diff-summary">{diffSummary}</p> : null}
</>
);
if (embedded) {
return (
<section className="embedded-panel-section">
<div className="embedded-panel-section-header">
<div>
<h4>Prompt Manager</h4>
<p>Системный, developer и domain уровни управляются отдельно.</p>
</div>
</div>
{content}
</section>
);
}
return (
<PanelFrame title="Prompt Manager" subtitle="Системный, developer и domain уровни управляются отдельно.">
{content}
</PanelFrame>
);
}