feat: Add orchestrator template and roles for executor and planner

- Created a new orchestrator template for Codex skill design, detailing structure and execution phases.
- Introduced the executor role with responsibilities for task execution, including routing to backends and handling implementation.
- Added the planner role for requirement breakdown, issue creation, and task dispatching, ensuring a structured planning process.
This commit is contained in:
catlog22
2026-02-16 00:17:15 +08:00
parent dc03862ca7
commit a4fff6a591
36 changed files with 4168 additions and 2589 deletions

View File

@@ -18,6 +18,10 @@ import { AgentList } from '@/components/terminal-dashboard/AgentList';
import { IssuePanel } from '@/components/terminal-dashboard/IssuePanel';
import { QueuePanel } from '@/components/terminal-dashboard/QueuePanel';
import { InspectorContent } from '@/components/terminal-dashboard/BottomInspector';
import { FloatingFileBrowser } from '@/components/terminal-dashboard/FloatingFileBrowser';
import { useWorkflowStore, selectProjectPath } from '@/stores/workflowStore';
import { useTerminalGridStore, selectTerminalGridFocusedPaneId } from '@/stores/terminalGridStore';
import { sendCliSessionText } from '@/lib/api';
// ========== Main Page Component ==========
@@ -25,6 +29,10 @@ export function TerminalDashboardPage() {
const { formatMessage } = useIntl();
const [activePanel, setActivePanel] = useState<PanelId | null>(null);
const projectPath = useWorkflowStore(selectProjectPath);
const focusedPaneId = useTerminalGridStore(selectTerminalGridFocusedPaneId);
const panes = useTerminalGridStore((s) => s.panes);
const togglePanel = useCallback((panelId: PanelId) => {
setActivePanel((prev) => (prev === panelId ? null : panelId));
}, []);
@@ -33,6 +41,20 @@ export function TerminalDashboardPage() {
setActivePanel(null);
}, []);
const handleInsertPath = useCallback(
(path: string) => {
if (!focusedPaneId) return;
const sessionId = panes[focusedPaneId]?.sessionId;
if (!sessionId) return;
sendCliSessionText(
sessionId,
{ text: path, appendNewline: false },
projectPath ?? undefined
).catch((err) => console.error('[TerminalDashboard] insert path failed:', err));
},
[focusedPaneId, panes, projectPath]
);
return (
<div className="-m-4 md:-m-6 flex flex-col h-[calc(100vh-56px)] overflow-hidden">
<AssociationHighlightProvider>
@@ -90,6 +112,15 @@ export function TerminalDashboardPage() {
>
<InspectorContent />
</FloatingPanel>
{/* File browser (half screen, right side) */}
<FloatingFileBrowser
isOpen={activePanel === 'files'}
onClose={closePanel}
rootPath={projectPath ?? '/'}
onInsertPath={focusedPaneId ? handleInsertPath : undefined}
width="50vw"
/>
</AssociationHighlightProvider>
</div>
);