Add orchestrator types and error handling configurations

- Introduced new TypeScript types for orchestrator functionality, including `SessionStrategy`, `ErrorHandlingStrategy`, and `OrchestrationStep`.
- Defined interfaces for `OrchestrationPlan` and `ManualOrchestrationParams` to facilitate orchestration management.
- Added a new PNG image file for visual representation.
- Created a placeholder file named 'nul' for future use.
This commit is contained in:
catlog22
2026-02-14 12:54:08 +08:00
parent cdb240d2c2
commit 4d22ae4b2f
56 changed files with 4767 additions and 425 deletions

View File

@@ -17,6 +17,8 @@ import {
Terminal,
Bell,
Clock,
Monitor,
SquareTerminal,
} from 'lucide-react';
import { cn } from '@/lib/utils';
import { Button } from '@/components/ui/Button';
@@ -25,6 +27,7 @@ import { useTheme } from '@/hooks';
import { WorkspaceSelector } from '@/components/workspace/WorkspaceSelector';
import { useCliStreamStore, selectActiveExecutionCount } from '@/stores/cliStreamStore';
import { useNotificationStore } from '@/stores';
import { useTerminalPanelStore, selectTerminalCount } from '@/stores/terminalPanelStore';
export interface HeaderProps {
/** Callback for refresh action */
@@ -43,6 +46,8 @@ export function Header({
const { formatMessage } = useIntl();
const { isDark, toggleTheme } = useTheme();
const activeCliCount = useCliStreamStore(selectActiveExecutionCount);
const terminalCount = useTerminalPanelStore(selectTerminalCount);
const toggleTerminalPanel = useTerminalPanelStore((s) => s.togglePanel);
// Notification state for badge
const persistentNotifications = useNotificationStore((state) => state.persistentNotifications);
@@ -106,6 +111,35 @@ export function Header({
)}
</Button>
{/* Terminal Panel toggle */}
<Button
variant="ghost"
size="sm"
onClick={toggleTerminalPanel}
className="gap-2"
>
<SquareTerminal className="h-4 w-4" />
<span className="hidden sm:inline">{formatMessage({ id: 'home.terminalPanel.title' })}</span>
{terminalCount > 0 && (
<Badge variant="default" className="h-5 px-1.5 text-xs">
{terminalCount}
</Badge>
)}
</Button>
{/* CLI Viewer page link */}
<Button
variant="ghost"
size="sm"
asChild
className="gap-2"
>
<Link to="/cli-viewer" className="inline-flex items-center gap-2">
<Monitor className="h-4 w-4" />
<span className="hidden sm:inline">{formatMessage({ id: 'navigation.main.cliViewer' })}</span>
</Link>
</Button>
{/* Workspace selector */}
<WorkspaceSelector />