import { SimulationSettingsEditor } from "../settings/SimulationSettingsEditor"; import { useSettingsOptions } from "../settings/useSettingsOptions"; import { ResearchDataInput, researchSelection, } from "../preparations/ResearchDataInput"; import { ResearchList, ResearchDetail } from "./ResearchList"; import { ResearchSelect } from "./ResearchSelect"; import { useEffect, useRef, useState } from "react"; import { Banner, Button, Input, InputNumber, Table, TextArea, Toast, } from "@douyinfe/semi-ui-19"; import { ResearchInput } from "../ai/ResearchInput"; import { IconAIEditLevel3 } from "@douyinfe/semi-icons"; import { api, post, formatTime } from "../api"; import type { PageContext, UIAction } from "../ai/types"; import { initialSettings, type SimulationSettings } from "../backtests/types"; import { blankTemplate, type Asset, type Experiment, type InputSnapshot, type Template, } from "./workspaceTypes"; import { TemplateEditor } from "./TemplateEditor"; import { ExperimentView } from "./ExperimentView"; import { DeleteResearchButton } from "./DeleteResearchButton"; import { ComparisonPanel } from "./ComparisonPanel"; import "./workspace.css"; type ImportResult = { templates: Template[]; digest: string; conflicts: unknown[]; errors: unknown[]; differences?: unknown[]; }; export function ResearchWorkspace({ page, active, action, onAction, onContext, }: { page: "templates" | "variants"; active: boolean; action: UIAction | null; onAction: (action: UIAction) => void; onContext: (context: PageContext) => void; }) { const [detailOpen, setDetailOpen] = useState(false); const [detailMode, setDetailMode] = useState<"editor" | "experiment">( "editor", ); const [listMode, setListMode] = useState("assets"); const processedAction = useRef(null); const [assets, setAssets] = useState([]); const [inputs, setInputs] = useState([]); const [inputIds, setInputIds] = useState([]); const [template, setTemplate] = useState