@wrongstack/webui 0.284.1 → 0.286.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/App.d.ts +2 -0
- package/dist/App.d.ts.map +1 -0
- package/dist/assets/{AnalyticsDashboard-BBoAzpgL.js → AnalyticsDashboard-BDpQqHtX.js} +1 -1
- package/dist/assets/AutoPhaseView-BL_RSAcj.js +1 -0
- package/dist/assets/{ChangesView-4X9cQM4r.js → ChangesView-Dqfa8YFA.js} +1 -1
- package/dist/assets/{CodeEditor-C8hiA7LI.js → CodeEditor-De8voGEi.js} +1 -1
- package/dist/assets/DebugDashboard-D0C8_NWJ.js +1 -0
- package/dist/assets/{DesignGalleryView-CzF24Ppi.js → DesignGalleryView-Dwn2JYAL.js} +1 -1
- package/dist/assets/KanbanView-BUugea4e.js +1 -0
- package/dist/assets/MailboxDetailView-DCjSrQNI.js +1 -0
- package/dist/assets/OfficeMapPanel-Bqqys7xo.js +4 -0
- package/dist/assets/{ProcessMonitor-pm8Ih7-q.js → ProcessMonitor-CS1LSf39.js} +1 -1
- package/dist/assets/{QueuePanel-Lv54tvvk.js → QueuePanel-Cs7k3M-4.js} +1 -1
- package/dist/assets/{RefreshDebugView-0VzJJqhZ.js → RefreshDebugView-Di0lyXKv.js} +1 -1
- package/dist/assets/SddBoardView-Dv9R7tBM.js +2 -0
- package/dist/assets/SddFlowGraph-BGPIWq7W.js +1 -0
- package/dist/assets/SddWizard-BWaJb5ZH.js +1 -0
- package/dist/assets/SessionsDashboard-B1u7rjTK.js +1 -0
- package/dist/assets/SetupScreen-nZMY7jM6.js +1 -0
- package/dist/assets/SkillDetailView-CQevybc9.js +3 -0
- package/dist/assets/SpecsView-Xw9k8Llw.js +1 -0
- package/dist/assets/TerminalPanel-CPuqFiXC.js +1 -0
- package/dist/assets/{activity-CcEdxJjx.js → activity-Bt5JliZ2.js} +2 -2
- package/dist/assets/activity-DVbfo6OS.js +5 -0
- package/dist/assets/activity-DkmpcH1_.js +5 -0
- package/dist/assets/{activity-T9kySYDT.js → activity-HUfcj2wp.js} +3 -3
- package/dist/assets/activity-lQ47COGt.js +5 -0
- package/dist/assets/activity-mgahm8RV.js +5 -0
- package/dist/assets/activity-naMKylQi.js +5 -0
- package/dist/assets/chat-BNf8yQ-i.js +1 -0
- package/dist/assets/chat-BwmYDkLr.js +1 -0
- package/dist/assets/chat-C_9_T_Py.js +1 -0
- package/dist/assets/chat-CmZiF8Sm.js +1 -0
- package/dist/assets/chat-DW62ursN.js +1 -0
- package/dist/assets/chat-DfjGjYKF.js +1 -0
- package/dist/assets/chat-eXJFi4bY.js +1 -0
- package/dist/assets/chat-store-Dy1m3oen.js +5 -0
- package/dist/assets/commandPalette-BcMV6x3_.js +1 -0
- package/dist/assets/commandPalette-C4o2rUOp.js +1 -0
- package/dist/assets/commandPalette-C5U6qfth.js +1 -0
- package/dist/assets/commandPalette-CBJfByB7.js +1 -0
- package/dist/assets/commandPalette-CrYfIhnW.js +1 -0
- package/dist/assets/commandPalette-Dgd8HfNm.js +1 -0
- package/dist/assets/common-D8_r1x8x.js +1 -0
- package/dist/assets/common-suUxW9sA.js +1 -0
- package/dist/assets/{i18n-CkkVJCs9.js → i18n-ClFSbktB.js} +2 -2
- package/dist/assets/index-DGwt4pL3.js +157 -0
- package/dist/assets/index-pw_NYdQ9.css +1 -0
- package/dist/assets/local-prefs-DUm4LFyu.js +1 -0
- package/dist/assets/markdown-BRAejDWd.js +44 -0
- package/dist/assets/{monaco-XnLmrAXJ.js → monaco-MjnRih9i.js} +1 -1
- package/dist/assets/{monaco-theme-Lsd14tM-.js → monaco-theme-DhdHiZEb.js} +1 -1
- package/dist/assets/{session-store-P-JnaPPK.js → session-store-BOmBeF9r.js} +1 -1
- package/dist/assets/settings-BehzuKKh.js +1 -0
- package/dist/assets/settings-CO8sA1-8.js +1 -0
- package/dist/assets/settings-CSb_3QO0.js +1 -0
- package/dist/assets/settings-CVkZ15Hv.js +1 -0
- package/dist/assets/settings-DRDu_6WL.js +1 -0
- package/dist/assets/settings-Dj8eonZG.js +1 -0
- package/dist/assets/settings-DkZAyCk6.js +1 -0
- package/dist/assets/ui-store-LCpXBvQT.js +1 -0
- package/dist/assets/utils-Bl7Yr7Bw.js +1 -0
- package/dist/assets/{vendor-CyLvG8N0.js → vendor-C9iFsXuW.js} +28 -28
- package/dist/assets/ws-client-WVS5hdJj.js +1 -0
- package/dist/assets/{xyflow-oYDGUYW6.js → xyflow-YzHYNDhB.js} +3 -3
- package/dist/components/AgentTranscript.d.ts +13 -0
- package/dist/components/AgentTranscript.d.ts.map +1 -0
- package/dist/components/AgentsMonitor.d.ts +26 -0
- package/dist/components/AgentsMonitor.d.ts.map +1 -0
- package/dist/components/AgentsPage/format.d.ts +23 -0
- package/dist/components/AgentsPage/format.d.ts.map +1 -0
- package/dist/components/AgentsPage.d.ts +49 -0
- package/dist/components/AgentsPage.d.ts.map +1 -0
- package/dist/components/AnalyticsDashboard.d.ts +2 -0
- package/dist/components/AnalyticsDashboard.d.ts.map +1 -0
- package/dist/components/AutoPhaseView.d.ts +15 -0
- package/dist/components/AutoPhaseView.d.ts.map +1 -0
- package/dist/components/AutonomyPicker.d.ts +21 -0
- package/dist/components/AutonomyPicker.d.ts.map +1 -0
- package/dist/components/BoardView.d.ts +14 -0
- package/dist/components/BoardView.d.ts.map +1 -0
- package/dist/components/ChangesView.d.ts +10 -0
- package/dist/components/ChangesView.d.ts.map +1 -0
- package/dist/components/ChatInput/code-detect.d.ts +20 -0
- package/dist/components/ChatInput/code-detect.d.ts.map +1 -0
- package/dist/components/ChatInput/file-mention-picker.d.ts +15 -0
- package/dist/components/ChatInput/file-mention-picker.d.ts.map +1 -0
- package/dist/components/ChatInput/image-attachments.d.ts +58 -0
- package/dist/components/ChatInput/image-attachments.d.ts.map +1 -0
- package/dist/components/ChatInput/queued-messages.d.ts +9 -0
- package/dist/components/ChatInput/queued-messages.d.ts.map +1 -0
- package/dist/components/ChatInput/slash-commands.d.ts +17 -0
- package/dist/components/ChatInput/slash-commands.d.ts.map +1 -0
- package/dist/components/ChatInput/slash-routing.d.ts +87 -0
- package/dist/components/ChatInput/slash-routing.d.ts.map +1 -0
- package/dist/components/ChatInput/use-paste-drop.d.ts +39 -0
- package/dist/components/ChatInput/use-paste-drop.d.ts.map +1 -0
- package/dist/components/ChatInput.d.ts +5 -0
- package/dist/components/ChatInput.d.ts.map +1 -0
- package/dist/components/ChatView/ThinkingBubble.d.ts +8 -0
- package/dist/components/ChatView/ThinkingBubble.d.ts.map +1 -0
- package/dist/components/ChatView/index.d.ts +2 -0
- package/dist/components/ChatView/index.d.ts.map +1 -0
- package/dist/components/ChatView/utils.d.ts +44 -0
- package/dist/components/ChatView/utils.d.ts.map +1 -0
- package/dist/components/ChatView.d.ts +2 -0
- package/dist/components/ChatView.d.ts.map +1 -0
- package/dist/components/CheckpointTimeline.d.ts +7 -0
- package/dist/components/CheckpointTimeline.d.ts.map +1 -0
- package/dist/components/CodeEditor.d.ts +3 -0
- package/dist/components/CodeEditor.d.ts.map +1 -0
- package/dist/components/CollabPanel.d.ts +28 -0
- package/dist/components/CollabPanel.d.ts.map +1 -0
- package/dist/components/CommandPalette/export-utils.d.ts +10 -0
- package/dist/components/CommandPalette/export-utils.d.ts.map +1 -0
- package/dist/components/CommandPalette/index.d.ts +2 -0
- package/dist/components/CommandPalette/index.d.ts.map +1 -0
- package/dist/components/CommandPalette.d.ts +3 -0
- package/dist/components/CommandPalette.d.ts.map +1 -0
- package/dist/components/ConfirmDialog.d.ts +2 -0
- package/dist/components/ConfirmDialog.d.ts.map +1 -0
- package/dist/components/ConfirmModal.d.ts +59 -0
- package/dist/components/ConfirmModal.d.ts.map +1 -0
- package/dist/components/ConnectionBanner.d.ts +13 -0
- package/dist/components/ConnectionBanner.d.ts.map +1 -0
- package/dist/components/ContextBar.d.ts +35 -0
- package/dist/components/ContextBar.d.ts.map +1 -0
- package/dist/components/ContextBreakdownModal.d.ts +7 -0
- package/dist/components/ContextBreakdownModal.d.ts.map +1 -0
- package/dist/components/ContextModePicker.d.ts +2 -0
- package/dist/components/ContextModePicker.d.ts.map +1 -0
- package/dist/components/CostChip.d.ts +12 -0
- package/dist/components/CostChip.d.ts.map +1 -0
- package/dist/components/DebugDashboard.d.ts +2 -0
- package/dist/components/DebugDashboard.d.ts.map +1 -0
- package/dist/components/DependencyGraph.d.ts +13 -0
- package/dist/components/DependencyGraph.d.ts.map +1 -0
- package/dist/components/DesignGalleryView.d.ts +14 -0
- package/dist/components/DesignGalleryView.d.ts.map +1 -0
- package/dist/components/DiffView.d.ts +33 -0
- package/dist/components/DiffView.d.ts.map +1 -0
- package/dist/components/ErrorBoundary.d.ts +40 -0
- package/dist/components/ErrorBoundary.d.ts.map +1 -0
- package/dist/components/FallbackEditor.d.ts +15 -0
- package/dist/components/FallbackEditor.d.ts.map +1 -0
- package/dist/components/FileExplorer.d.ts +2 -0
- package/dist/components/FileExplorer.d.ts.map +1 -0
- package/dist/components/FilePicker.d.ts +16 -0
- package/dist/components/FilePicker.d.ts.map +1 -0
- package/dist/components/FileReferenceChip.d.ts +8 -0
- package/dist/components/FileReferenceChip.d.ts.map +1 -0
- package/dist/components/FleetMonitor.d.ts +27 -0
- package/dist/components/FleetMonitor.d.ts.map +1 -0
- package/dist/components/FleetPanel.d.ts +17 -0
- package/dist/components/FleetPanel.d.ts.map +1 -0
- package/dist/components/GoalPanel.d.ts +7 -0
- package/dist/components/GoalPanel.d.ts.map +1 -0
- package/dist/components/InspectorPanel.d.ts +14 -0
- package/dist/components/InspectorPanel.d.ts.map +1 -0
- package/dist/components/KanbanView.d.ts +4 -0
- package/dist/components/KanbanView.d.ts.map +1 -0
- package/dist/components/MailboxDetailView.d.ts +8 -0
- package/dist/components/MailboxDetailView.d.ts.map +1 -0
- package/dist/components/MailboxPanel.d.ts +4 -0
- package/dist/components/MailboxPanel.d.ts.map +1 -0
- package/dist/components/MessageBubble/AttachmentGallery.d.ts +12 -0
- package/dist/components/MessageBubble/AttachmentGallery.d.ts.map +1 -0
- package/dist/components/MessageBubble/CopyButton.d.ts +6 -0
- package/dist/components/MessageBubble/CopyButton.d.ts.map +1 -0
- package/dist/components/MessageBubble/ErrorBody.d.ts +4 -0
- package/dist/components/MessageBubble/ErrorBody.d.ts.map +1 -0
- package/dist/components/MessageBubble/LazyMarkdown.d.ts +27 -0
- package/dist/components/MessageBubble/LazyMarkdown.d.ts.map +1 -0
- package/dist/components/MessageBubble/StreamingMarkdown.d.ts +24 -0
- package/dist/components/MessageBubble/StreamingMarkdown.d.ts.map +1 -0
- package/dist/components/MessageBubble/ToolInputView.d.ts +4 -0
- package/dist/components/MessageBubble/ToolInputView.d.ts.map +1 -0
- package/dist/components/MessageBubble/index.d.ts +9 -0
- package/dist/components/MessageBubble/index.d.ts.map +1 -0
- package/dist/components/MessageBubble/utils.d.ts +17 -0
- package/dist/components/MessageBubble/utils.d.ts.map +1 -0
- package/dist/components/MessageBubble.d.ts +2 -0
- package/dist/components/MessageBubble.d.ts.map +1 -0
- package/dist/components/ModePicker.d.ts +9 -0
- package/dist/components/ModePicker.d.ts.map +1 -0
- package/dist/components/ModelPickDialog.d.ts +22 -0
- package/dist/components/ModelPickDialog.d.ts.map +1 -0
- package/dist/components/ModelPicker.d.ts +18 -0
- package/dist/components/ModelPicker.d.ts.map +1 -0
- package/dist/components/MonacoDiffView.d.ts +13 -0
- package/dist/components/MonacoDiffView.d.ts.map +1 -0
- package/dist/components/NextStepsBar.d.ts +39 -0
- package/dist/components/NextStepsBar.d.ts.map +1 -0
- package/dist/components/OfficeMapCanvas/resolve.d.ts +48 -0
- package/dist/components/OfficeMapCanvas/resolve.d.ts.map +1 -0
- package/dist/components/OfficeMapCanvas/utils.d.ts +57 -0
- package/dist/components/OfficeMapCanvas/utils.d.ts.map +1 -0
- package/dist/components/OfficeMapCanvas.d.ts +10 -0
- package/dist/components/OfficeMapCanvas.d.ts.map +1 -0
- package/dist/components/OfficeMapPanel.d.ts +6 -0
- package/dist/components/OfficeMapPanel.d.ts.map +1 -0
- package/dist/components/OfficeMapSettingsPanel.d.ts +10 -0
- package/dist/components/OfficeMapSettingsPanel.d.ts.map +1 -0
- package/dist/components/PhasePanel.d.ts +42 -0
- package/dist/components/PhasePanel.d.ts.map +1 -0
- package/dist/components/PlanPanel.d.ts +14 -0
- package/dist/components/PlanPanel.d.ts.map +1 -0
- package/dist/components/ProcessMonitor.d.ts +7 -0
- package/dist/components/ProcessMonitor.d.ts.map +1 -0
- package/dist/components/PromptLibraryModal.d.ts +7 -0
- package/dist/components/PromptLibraryModal.d.ts.map +1 -0
- package/dist/components/QueuePanel.d.ts +11 -0
- package/dist/components/QueuePanel.d.ts.map +1 -0
- package/dist/components/QuickModelSwitcher.d.ts +10 -0
- package/dist/components/QuickModelSwitcher.d.ts.map +1 -0
- package/dist/components/QuickModelSwitcher.filter.d.ts +33 -0
- package/dist/components/QuickModelSwitcher.filter.d.ts.map +1 -0
- package/dist/components/RefinePanel.d.ts +24 -0
- package/dist/components/RefinePanel.d.ts.map +1 -0
- package/dist/components/RefreshDebugView.d.ts +32 -0
- package/dist/components/RefreshDebugView.d.ts.map +1 -0
- package/dist/components/SddActivityFeed.d.ts +11 -0
- package/dist/components/SddActivityFeed.d.ts.map +1 -0
- package/dist/components/SddBoardView.d.ts +9 -0
- package/dist/components/SddBoardView.d.ts.map +1 -0
- package/dist/components/SddDestroyDialog.d.ts +16 -0
- package/dist/components/SddDestroyDialog.d.ts.map +1 -0
- package/dist/components/SddFlowGraph.d.ts +23 -0
- package/dist/components/SddFlowGraph.d.ts.map +1 -0
- package/dist/components/SddKanbanView.d.ts +12 -0
- package/dist/components/SddKanbanView.d.ts.map +1 -0
- package/dist/components/SddTaskDrawer.d.ts +28 -0
- package/dist/components/SddTaskDrawer.d.ts.map +1 -0
- package/dist/components/SddWizard.d.ts +10 -0
- package/dist/components/SddWizard.d.ts.map +1 -0
- package/dist/components/SearchOverlay.d.ts +12 -0
- package/dist/components/SearchOverlay.d.ts.map +1 -0
- package/dist/components/SendButton.d.ts +2 -0
- package/dist/components/SendButton.d.ts.map +1 -0
- package/dist/components/SessionWatchPanel.d.ts +17 -0
- package/dist/components/SessionWatchPanel.d.ts.map +1 -0
- package/dist/components/SessionsDashboard.d.ts +3 -0
- package/dist/components/SessionsDashboard.d.ts.map +1 -0
- package/dist/components/SettingsPanel/BrainSection.d.ts +3 -0
- package/dist/components/SettingsPanel/BrainSection.d.ts.map +1 -0
- package/dist/components/SettingsPanel/ClearAllowlistDialog.d.ts +19 -0
- package/dist/components/SettingsPanel/ClearAllowlistDialog.d.ts.map +1 -0
- package/dist/components/SettingsPanel/MCPSection.d.ts +48 -0
- package/dist/components/SettingsPanel/MCPSection.d.ts.map +1 -0
- package/dist/components/SettingsPanel/ModelSection.d.ts +31 -0
- package/dist/components/SettingsPanel/ModelSection.d.ts.map +1 -0
- package/dist/components/SettingsPanel/OAuthLoginSection.d.ts +14 -0
- package/dist/components/SettingsPanel/OAuthLoginSection.d.ts.map +1 -0
- package/dist/components/SettingsPanel/PreferenceControls.d.ts +23 -0
- package/dist/components/SettingsPanel/PreferenceControls.d.ts.map +1 -0
- package/dist/components/SettingsPanel/PreferenceToggle.d.ts +25 -0
- package/dist/components/SettingsPanel/PreferenceToggle.d.ts.map +1 -0
- package/dist/components/SettingsPanel/ProviderModelsPanel.d.ts +46 -0
- package/dist/components/SettingsPanel/ProviderModelsPanel.d.ts.map +1 -0
- package/dist/components/SettingsPanel/ProviderModelsPanel.filter.d.ts +110 -0
- package/dist/components/SettingsPanel/ProviderModelsPanel.filter.d.ts.map +1 -0
- package/dist/components/SettingsPanel/ProviderSection.d.ts +63 -0
- package/dist/components/SettingsPanel/ProviderSection.d.ts.map +1 -0
- package/dist/components/SettingsPanel/RoutingSection.d.ts +6 -0
- package/dist/components/SettingsPanel/RoutingSection.d.ts.map +1 -0
- package/dist/components/SettingsPanel/ShadowSection.d.ts +3 -0
- package/dist/components/SettingsPanel/ShadowSection.d.ts.map +1 -0
- package/dist/components/SettingsPanel/ToolsSection.d.ts +12 -0
- package/dist/components/SettingsPanel/ToolsSection.d.ts.map +1 -0
- package/dist/components/SettingsPanel/index.d.ts +2 -0
- package/dist/components/SettingsPanel/index.d.ts.map +1 -0
- package/dist/components/SettingsPanel/local-presets.d.ts +31 -0
- package/dist/components/SettingsPanel/local-presets.d.ts.map +1 -0
- package/dist/components/SettingsPanel/official-servers.d.ts +30 -0
- package/dist/components/SettingsPanel/official-servers.d.ts.map +1 -0
- package/dist/components/SettingsPanel/settings-panel-reducers.d.ts +40 -0
- package/dist/components/SettingsPanel/settings-panel-reducers.d.ts.map +1 -0
- package/dist/components/SettingsPanel/undo-send-decision.d.ts +42 -0
- package/dist/components/SettingsPanel/undo-send-decision.d.ts.map +1 -0
- package/dist/components/SettingsPanel.d.ts +3 -0
- package/dist/components/SettingsPanel.d.ts.map +1 -0
- package/dist/components/SetupScreen.d.ts +2 -0
- package/dist/components/SetupScreen.d.ts.map +1 -0
- package/dist/components/ShortcutsOverlay.d.ts +2 -0
- package/dist/components/ShortcutsOverlay.d.ts.map +1 -0
- package/dist/components/SideEffectTimeline.d.ts +11 -0
- package/dist/components/SideEffectTimeline.d.ts.map +1 -0
- package/dist/components/SidePanel/AgentsPanel.d.ts +8 -0
- package/dist/components/SidePanel/AgentsPanel.d.ts.map +1 -0
- package/dist/components/SidePanel/ChangesPanel.d.ts +8 -0
- package/dist/components/SidePanel/ChangesPanel.d.ts.map +1 -0
- package/dist/components/SidePanel/DesignStudioPanel.d.ts +12 -0
- package/dist/components/SidePanel/DesignStudioPanel.d.ts.map +1 -0
- package/dist/components/SidePanel/HistoryPanel.d.ts +7 -0
- package/dist/components/SidePanel/HistoryPanel.d.ts.map +1 -0
- package/dist/components/SidePanel/SessionList.d.ts +24 -0
- package/dist/components/SidePanel/SessionList.d.ts.map +1 -0
- package/dist/components/SidePanel/SessionPanel.d.ts +10 -0
- package/dist/components/SidePanel/SessionPanel.d.ts.map +1 -0
- package/dist/components/SidePanel/SkillsList.d.ts +8 -0
- package/dist/components/SidePanel/SkillsList.d.ts.map +1 -0
- package/dist/components/SidePanel/WorktreesPanel.d.ts +8 -0
- package/dist/components/SidePanel/WorktreesPanel.d.ts.map +1 -0
- package/dist/components/SidePanel/index.d.ts +11 -0
- package/dist/components/SidePanel/index.d.ts.map +1 -0
- package/dist/components/SkillDetailView.d.ts +8 -0
- package/dist/components/SkillDetailView.d.ts.map +1 -0
- package/dist/components/SpecsView.d.ts +9 -0
- package/dist/components/SpecsView.d.ts.map +1 -0
- package/dist/components/TaskBoard.d.ts +20 -0
- package/dist/components/TaskBoard.d.ts.map +1 -0
- package/dist/components/TaskCard.d.ts +43 -0
- package/dist/components/TaskCard.d.ts.map +1 -0
- package/dist/components/TasksPanel.d.ts +14 -0
- package/dist/components/TasksPanel.d.ts.map +1 -0
- package/dist/components/TerminalPanel.d.ts +12 -0
- package/dist/components/TerminalPanel.d.ts.map +1 -0
- package/dist/components/ThemeProvider.d.ts +15 -0
- package/dist/components/ThemeProvider.d.ts.map +1 -0
- package/dist/components/Toaster.d.ts +33 -0
- package/dist/components/Toaster.d.ts.map +1 -0
- package/dist/components/TodosPanel.d.ts +14 -0
- package/dist/components/TodosPanel.d.ts.map +1 -0
- package/dist/components/ToolGroup.d.ts +18 -0
- package/dist/components/ToolGroup.d.ts.map +1 -0
- package/dist/components/ToolResult.d.ts +33 -0
- package/dist/components/ToolResult.d.ts.map +1 -0
- package/dist/components/WatchMessageBubble.d.ts +30 -0
- package/dist/components/WatchMessageBubble.d.ts.map +1 -0
- package/dist/components/WelcomeScreen.d.ts +9 -0
- package/dist/components/WelcomeScreen.d.ts.map +1 -0
- package/dist/components/WorkDashboard.d.ts +11 -0
- package/dist/components/WorkDashboard.d.ts.map +1 -0
- package/dist/components/WorkspaceDock.d.ts +16 -0
- package/dist/components/WorkspaceDock.d.ts.map +1 -0
- package/dist/components/WorktreeGraph.d.ts +21 -0
- package/dist/components/WorktreeGraph.d.ts.map +1 -0
- package/dist/components/WorktreeLanes.d.ts +11 -0
- package/dist/components/WorktreeLanes.d.ts.map +1 -0
- package/dist/components/WorktreeOrphans.d.ts +9 -0
- package/dist/components/WorktreeOrphans.d.ts.map +1 -0
- package/dist/components/activity-bar/index.d.ts +14 -0
- package/dist/components/activity-bar/index.d.ts.map +1 -0
- package/dist/components/activity-bar/nav.d.ts +17 -0
- package/dist/components/activity-bar/nav.d.ts.map +1 -0
- package/dist/components/dashboard-primitives.d.ts +22 -0
- package/dist/components/dashboard-primitives.d.ts.map +1 -0
- package/dist/components/index.d.ts +32 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/monaco-theme.d.ts +6 -0
- package/dist/components/monaco-theme.d.ts.map +1 -0
- package/dist/components/toaster-helpers.d.ts +34 -0
- package/dist/components/toaster-helpers.d.ts.map +1 -0
- package/dist/components/ui/badge.d.ts +10 -0
- package/dist/components/ui/badge.d.ts.map +1 -0
- package/dist/components/ui/button.d.ts +12 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/concurrency-gauge.d.ts +18 -0
- package/dist/components/ui/concurrency-gauge.d.ts.map +1 -0
- package/dist/components/ui/dialog.d.ts +29 -0
- package/dist/components/ui/dialog.d.ts.map +1 -0
- package/dist/components/ui/dropdown-menu.d.ts +28 -0
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/components/ui/event-timeline.d.ts +15 -0
- package/dist/components/ui/event-timeline.d.ts.map +1 -0
- package/dist/components/ui/index.d.ts +11 -0
- package/dist/components/ui/index.d.ts.map +1 -0
- package/dist/components/ui/input.d.ts +6 -0
- package/dist/components/ui/input.d.ts.map +1 -0
- package/dist/components/ui/scroll-area.d.ts +6 -0
- package/dist/components/ui/scroll-area.d.ts.map +1 -0
- package/dist/components/ui/sheet.d.ts +32 -0
- package/dist/components/ui/sheet.d.ts.map +1 -0
- package/dist/components/ui/sparkline.d.ts +16 -0
- package/dist/components/ui/sparkline.d.ts.map +1 -0
- package/dist/components/ui/tabs.d.ts +8 -0
- package/dist/components/ui/tabs.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/use-ws-handlers.d.ts +24 -0
- package/dist/hooks/use-ws-handlers.d.ts.map +1 -0
- package/dist/hooks/useGitInfo.d.ts +4 -0
- package/dist/hooks/useGitInfo.d.ts.map +1 -0
- package/dist/hooks/useProviderModels.d.ts +15 -0
- package/dist/hooks/useProviderModels.d.ts.map +1 -0
- package/dist/hooks/useWebSocket.d.ts +85 -0
- package/dist/hooks/useWebSocket.d.ts.map +1 -0
- package/dist/hooks/ws-handlers/chat-handlers.d.ts +21 -0
- package/dist/hooks/ws-handlers/chat-handlers.d.ts.map +1 -0
- package/dist/hooks/ws-handlers/coordinator-handlers.d.ts +3 -0
- package/dist/hooks/ws-handlers/coordinator-handlers.d.ts.map +1 -0
- package/dist/hooks/ws-handlers/files-mailbox-handlers.d.ts +17 -0
- package/dist/hooks/ws-handlers/files-mailbox-handlers.d.ts.map +1 -0
- package/dist/hooks/ws-handlers/fleet-handlers.d.ts +13 -0
- package/dist/hooks/ws-handlers/fleet-handlers.d.ts.map +1 -0
- package/dist/hooks/ws-handlers/misc-handlers.d.ts +21 -0
- package/dist/hooks/ws-handlers/misc-handlers.d.ts.map +1 -0
- package/dist/hooks/ws-handlers/session-handlers.d.ts +34 -0
- package/dist/hooks/ws-handlers/session-handlers.d.ts.map +1 -0
- package/dist/hooks/ws-handlers.d.ts +24 -0
- package/dist/hooks/ws-handlers.d.ts.map +1 -0
- package/dist/i18n/index.d.ts +12 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/languages.d.ts +40 -0
- package/dist/i18n/languages.d.ts.map +1 -0
- package/dist/index.css +2 -2
- package/dist/index.css.map +7 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.html +16 -16
- package/dist/index.js +21624 -19624
- package/dist/index.js.map +7 -1
- package/dist/lib/accent-colors.d.ts +136 -0
- package/dist/lib/accent-colors.d.ts.map +1 -0
- package/dist/lib/agent-status.d.ts +41 -0
- package/dist/lib/agent-status.d.ts.map +1 -0
- package/dist/lib/analytics.d.ts +38 -0
- package/dist/lib/analytics.d.ts.map +1 -0
- package/dist/lib/chime.d.ts +20 -0
- package/dist/lib/chime.d.ts.map +1 -0
- package/dist/lib/color.d.ts +15 -0
- package/dist/lib/color.d.ts.map +1 -0
- package/dist/lib/completion.d.ts +27 -0
- package/dist/lib/completion.d.ts.map +1 -0
- package/dist/lib/core-browser-shim.d.ts +22 -0
- package/dist/lib/core-browser-shim.d.ts.map +1 -0
- package/dist/lib/default-prompt-pools.d.ts +27 -0
- package/dist/lib/default-prompt-pools.d.ts.map +1 -0
- package/dist/lib/desktop-host.d.ts +24 -0
- package/dist/lib/desktop-host.d.ts.map +1 -0
- package/dist/lib/desktop-shell.d.ts +3 -0
- package/dist/lib/desktop-shell.d.ts.map +1 -0
- package/dist/lib/favicon.d.ts +21 -0
- package/dist/lib/favicon.d.ts.map +1 -0
- package/dist/lib/file-icons.d.ts +10 -0
- package/dist/lib/file-icons.d.ts.map +1 -0
- package/dist/lib/goal.d.ts +32 -0
- package/dist/lib/goal.d.ts.map +1 -0
- package/dist/lib/index.d.ts +4 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/model-matrix-routes.d.ts +203 -0
- package/dist/lib/model-matrix-routes.d.ts.map +1 -0
- package/dist/lib/notify.d.ts +15 -0
- package/dist/lib/notify.d.ts.map +1 -0
- package/dist/lib/sdd-theme.d.ts +52 -0
- package/dist/lib/sdd-theme.d.ts.map +1 -0
- package/dist/lib/stream-coalescer.d.ts +46 -0
- package/dist/lib/stream-coalescer.d.ts.map +1 -0
- package/dist/lib/terminal-dock.d.ts +6 -0
- package/dist/lib/terminal-dock.d.ts.map +1 -0
- package/dist/lib/tool-icon.d.ts +19 -0
- package/dist/lib/tool-icon.d.ts.map +1 -0
- package/dist/lib/tool-summary.d.ts +2 -0
- package/dist/lib/tool-summary.d.ts.map +1 -0
- package/dist/lib/utils.d.ts +10 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/view-navigation.d.ts +15 -0
- package/dist/lib/view-navigation.d.ts.map +1 -0
- package/dist/lib/ws-client-helpers.d.ts +46 -0
- package/dist/lib/ws-client-helpers.d.ts.map +1 -0
- package/dist/lib/ws-client-utils.d.ts +87 -0
- package/dist/lib/ws-client-utils.d.ts.map +1 -0
- package/dist/lib/ws-client.d.ts +239 -0
- package/dist/lib/ws-client.d.ts.map +1 -0
- package/dist/main.d.ts +8 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/stores/auto-submit-streak.d.ts +40 -0
- package/dist/stores/auto-submit-streak.d.ts.map +1 -0
- package/dist/stores/autophase-store.d.ts +50 -0
- package/dist/stores/autophase-store.d.ts.map +1 -0
- package/dist/stores/chat-store.d.ts +137 -0
- package/dist/stores/chat-store.d.ts.map +1 -0
- package/dist/stores/config-store.d.ts +67 -0
- package/dist/stores/config-store.d.ts.map +1 -0
- package/dist/stores/coordinator-monitor-store.d.ts +133 -0
- package/dist/stores/coordinator-monitor-store.d.ts.map +1 -0
- package/dist/stores/file-reference-store.d.ts +36 -0
- package/dist/stores/file-reference-store.d.ts.map +1 -0
- package/dist/stores/file-store.d.ts +40 -0
- package/dist/stores/file-store.d.ts.map +1 -0
- package/dist/stores/fleet-store.d.ts +29 -0
- package/dist/stores/fleet-store.d.ts.map +1 -0
- package/dist/stores/git-changes-store.d.ts +38 -0
- package/dist/stores/git-changes-store.d.ts.map +1 -0
- package/dist/stores/git-info-store.d.ts +18 -0
- package/dist/stores/git-info-store.d.ts.map +1 -0
- package/dist/stores/goal-store.d.ts +12 -0
- package/dist/stores/goal-store.d.ts.map +1 -0
- package/dist/stores/history-store.d.ts +15 -0
- package/dist/stores/history-store.d.ts.map +1 -0
- package/dist/stores/index.d.ts +36 -0
- package/dist/stores/index.d.ts.map +1 -0
- package/dist/stores/kanban-store.d.ts +22 -0
- package/dist/stores/kanban-store.d.ts.map +1 -0
- package/dist/stores/local-prefs.d.ts +135 -0
- package/dist/stores/local-prefs.d.ts.map +1 -0
- package/dist/stores/mailbox-store.d.ts +63 -0
- package/dist/stores/mailbox-store.d.ts.map +1 -0
- package/dist/stores/monitor-store.d.ts +116 -0
- package/dist/stores/monitor-store.d.ts.map +1 -0
- package/dist/stores/office-map-store.d.ts +47 -0
- package/dist/stores/office-map-store.d.ts.map +1 -0
- package/dist/stores/sdd-board-store.d.ts +88 -0
- package/dist/stores/sdd-board-store.d.ts.map +1 -0
- package/dist/stores/sdd-wizard-store.d.ts +64 -0
- package/dist/stores/sdd-wizard-store.d.ts.map +1 -0
- package/dist/stores/session-store.d.ts +125 -0
- package/dist/stores/session-store.d.ts.map +1 -0
- package/dist/stores/side-effect-store.d.ts +18 -0
- package/dist/stores/side-effect-store.d.ts.map +1 -0
- package/dist/stores/specs-store.d.ts +67 -0
- package/dist/stores/specs-store.d.ts.map +1 -0
- package/dist/stores/types.d.ts +254 -0
- package/dist/stores/types.d.ts.map +1 -0
- package/dist/stores/ui-store.d.ts +307 -0
- package/dist/stores/ui-store.d.ts.map +1 -0
- package/dist/stores/viz-store.d.ts +126 -0
- package/dist/stores/viz-store.d.ts.map +1 -0
- package/dist/stores/worktree-store.d.ts +47 -0
- package/dist/stores/worktree-store.d.ts.map +1 -0
- package/dist/types.d.ts +321 -119
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -1
- package/dist/types.js.map +7 -1
- package/package.json +13 -14
- package/dist/assets/AutoPhaseView-D053zOhN.js +0 -1
- package/dist/assets/DebugDashboard-DBPKvghW.js +0 -1
- package/dist/assets/KanbanView-DWBGErwm.js +0 -1
- package/dist/assets/MailboxDetailView-CCtq-c8u.js +0 -1
- package/dist/assets/OfficeMapPanel-BBKsytG0.js +0 -4
- package/dist/assets/SddBoardView-Q-k1UjLv.js +0 -2
- package/dist/assets/SddFlowGraph-BaWwH9Zc.js +0 -1
- package/dist/assets/SddWizard-C4wdyhYe.js +0 -1
- package/dist/assets/SessionsDashboard-CveBdrQJ.js +0 -1
- package/dist/assets/SkillDetailView-B4U0AtHj.js +0 -2
- package/dist/assets/SpecsView-QssXs9kF.js +0 -1
- package/dist/assets/TerminalPanel-CSDEzJNZ.js +0 -1
- package/dist/assets/activity-3lpGdUIy.js +0 -5
- package/dist/assets/activity-Bi6wI_Cg.js +0 -5
- package/dist/assets/activity-CSPSX--m.js +0 -5
- package/dist/assets/activity-Cv0CmTyM.js +0 -5
- package/dist/assets/activity-Doy5Yots.js +0 -5
- package/dist/assets/chat--Zry3Atx.js +0 -1
- package/dist/assets/chat-0DeGMNFQ.js +0 -1
- package/dist/assets/chat-BErfSQjE.js +0 -1
- package/dist/assets/chat-CX5cjaC-.js +0 -1
- package/dist/assets/chat-CibJIps5.js +0 -1
- package/dist/assets/chat-Dr5SJikx.js +0 -1
- package/dist/assets/chat-Siz8aWTB.js +0 -1
- package/dist/assets/chat-store-De7J1E26.js +0 -5
- package/dist/assets/commandPalette-2M1hYRuH.js +0 -1
- package/dist/assets/commandPalette-BE_ljQwl.js +0 -1
- package/dist/assets/commandPalette-BYf22WAi.js +0 -1
- package/dist/assets/commandPalette-BZhacjvy.js +0 -1
- package/dist/assets/commandPalette-CTE9ITWg.js +0 -1
- package/dist/assets/commandPalette-RxWSjQIg.js +0 -1
- package/dist/assets/common-B28qhvZh.js +0 -1
- package/dist/assets/common-CeTsF3jX.js +0 -1
- package/dist/assets/index-BqAVsSCe.js +0 -154
- package/dist/assets/index-DTFjO9oF.css +0 -1
- package/dist/assets/local-prefs-C1YdbI5g.js +0 -1
- package/dist/assets/markdown-D0X23O-i.js +0 -44
- package/dist/assets/settings-BVvx94WK.js +0 -1
- package/dist/assets/settings-CQ4x-iFD.js +0 -1
- package/dist/assets/settings-CmHCQRVI.js +0 -1
- package/dist/assets/settings-DgGu17XI.js +0 -1
- package/dist/assets/settings-Os0ifjjB.js +0 -1
- package/dist/assets/settings-TqprB9wO.js +0 -1
- package/dist/assets/settings-UGa_oSYC.js +0 -1
- package/dist/assets/ui-store-FTgDlcX2.js +0 -1
- package/dist/assets/utils-CU_o9ioU.js +0 -1
- package/dist/assets/ws-client-lDxBz-7w.js +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-D0X23O-i.js";import{Fr as r,It as i,Kt as a,Lr as o,Pn as s,Wr as c,X as l,Xt as u,Z as d,ai as f,br as p,bt as m,ct as h,dt as g,er as ee,fi as _,hi as v,jr as y,ni as b,or as x,ot as S,ur as C,xt as w}from"./vendor-CyLvG8N0.js";import"./i18n-CkkVJCs9.js";import{t as T}from"./utils-CU_o9ioU.js";import{C as E,_ as D,a as te,b as O,g as k,h as A,k as j,m as M,o as N,v as P,y as F}from"./index-BqAVsSCe.js";import{a as I,c as L,i as R,l as ne,n as z,o as B,r as V,s as re,t as H}from"./SddFlowGraph-BaWwH9Zc.js";var U=e(t(),1),W=n();function ie({feed:e,now:t}){let{t:n}=_();return(0,W.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5 border-b border-border px-3 py-2 text-xs font-semibold text-foreground`,children:[(0,W.jsx)(r,{className:`h-3.5 w-3.5 text-warning`}),n(`activity:sdd.activityHeading`)]}),(0,W.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 space-y-1 overflow-auto p-2`,children:e.length===0?(0,W.jsx)(`p`,{className:`px-1 pt-4 text-center text-[11px] text-muted-foreground`,children:n(`activity:sdd.feedEmpty`)}):e.map((e,n)=>{let r=V[e.kind]??V.started,i=r.icon;return(0,W.jsxs)(`div`,{className:T(`sdd-rise flex items-start gap-2 rounded-md px-2 py-1.5 text-[11px]`,n===0?`bg-muted`:`hover:bg-muted`),children:[(0,W.jsx)(i,{className:T(`mt-0.5 h-3.5 w-3.5 shrink-0`,r.color)}),(0,W.jsx)(`span`,{className:`flex-1 leading-snug text-foreground`,children:e.text}),(0,W.jsx)(`span`,{className:`shrink-0 tabular-nums text-[10px] text-muted-foreground`,children:B(e.ts,t)})]},`${e.ts}-${n}`)})})]})}function G({open:e,onOpenChange:t,snapshot:n,busy:r,onConfirm:i}){let{t:a}=_(),s=n?.mergedCommits?.length??0,l=n?.baseBranch,[u,d]=(0,U.useState)(!1);(0,U.useEffect)(()=>{e&&d(!1)},[e]);let f=n?.status===`running`||n?.status===`paused`,p=(0,U.useMemo)(()=>{let e=new Set;for(let t of n?.tasks??[])t.worktreeBranch&&e.add(t.worktreeBranch);return e.size},[n?.tasks]),m=(0,U.useMemo)(()=>{let e=new Set;for(let t of n?.tasks??[])t.displayStatus===`in_progress`&&t.agentName&&e.add(t.agentName);return e.size},[n?.tasks]);return(0,W.jsx)(A,{open:e,onOpenChange:e=>!r&&t(e),children:(0,W.jsxs)(k,{className:`sm:max-w-lg border-destructive/50`,children:[(0,W.jsxs)(F,{children:[(0,W.jsxs)(O,{className:`flex items-center gap-2`,children:[(0,W.jsx)(g,{className:`h-5 w-5 text-destructive`}),a(`activity:sdd.destroyTitle`)]}),(0,W.jsx)(D,{children:a(`activity:sdd.destroyDesc`)})]}),(0,W.jsxs)(`ul`,{className:`space-y-1.5 py-1 text-sm`,children:[f&&(0,W.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,W.jsx)(`span`,{className:`mt-0.5 text-destructive`,children:`■`}),(0,W.jsx)(`span`,{children:m>0?a(`activity:sdd.stopRunAgents`,{count:m}):a(`activity:sdd.stopRun`)})]}),(0,W.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,W.jsx)(`span`,{className:`mt-0.5 text-destructive`,children:`■`}),(0,W.jsx)(`span`,{children:p>0?a(`activity:sdd.removeWorktreesCount`,{count:p}):a(`activity:sdd.removeWorktreesAll`)})]}),(0,W.jsxs)(`li`,{className:`flex items-start gap-2`,children:[(0,W.jsx)(`span`,{className:`mt-0.5 text-destructive`,children:`■`}),(0,W.jsx)(`span`,{children:a(`activity:sdd.deleteArtifacts`)})]})]}),s>0&&(0,W.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-2 rounded-md border border-warning/30 bg-warning/5 p-2.5 text-sm`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:u,onChange:e=>d(e.target.checked),className:`mt-0.5 h-4 w-4 accent-warning`}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`span`,{className:`font-medium`,children:a(`activity:sdd.revertMerged`,{count:s})}),` `,`on `,(0,W.jsx)(`code`,{className:`text-xs`,children:l??a(`activity:sdd.baseBranchFallback`)}),(0,W.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:a(`activity:sdd.revertHint`)})]})]}),(0,W.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md bg-muted/50 p-2 text-xs text-muted-foreground`,children:[(0,W.jsx)(o,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-warning`}),a(s>0&&!u?`activity:sdd.noteLeaveMerged`:`activity:sdd.noteAbandon`)]}),(0,W.jsxs)(P,{className:`gap-2 sm:gap-2`,children:[(0,W.jsx)(M,{variant:`outline`,size:`sm`,disabled:r,onClick:()=>t(!1),children:a(`common:action.cancel`)}),(0,W.jsx)(M,{size:`sm`,disabled:r,onClick:()=>i(u),className:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,children:r?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(c,{className:`mr-1 h-3.5 w-3.5 animate-spin`}),` `,a(`activity:sdd.destroying`)]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(g,{className:`mr-1 h-3.5 w-3.5`}),` `,a(`activity:sdd.destroyAll`)]})})]})]})})}var K=[{key:`pending`,labelKey:`kanbanBacklog`,accent:`border-border/70`,head:`text-muted-foreground`},{key:`queued`,labelKey:`kanbanReady`,accent:`border-primary/35`,head:`text-primary`},{key:`in_progress`,labelKey:`kanbanRunning`,accent:`border-warning/45`,head:`text-warning`},{key:`review`,labelKey:`kanbanReview`,accent:`border-primary/35`,head:`text-primary`},{key:`failed`,labelKey:`kanbanFailed`,accent:`border-destructive/35`,head:`text-destructive`},{key:`completed`,labelKey:`kanbanDone`,accent:`border-success/35`,head:`text-success`}];function q({tasks:e,selectedId:t,onTaskClick:n}){let{t:r}=_(),i=(0,U.useMemo)(()=>{let t=new Map;for(let e of K)t.set(e.key,[]);for(let n of e){let e=n.displayStatus===`blocked`?`pending`:n.displayStatus===`cancelled`?`failed`:n.displayStatus;(t.get(e)??t.get(`pending`))?.push(n)}return t},[e]);return(0,W.jsx)(`div`,{className:`flex h-full min-h-0 min-w-0 gap-3 overflow-x-auto p-4`,children:K.map(e=>{let a=i.get(e.key)??[];return(0,W.jsxs)(`div`,{className:`flex min-h-0 w-64 shrink-0 flex-col`,children:[(0,W.jsxs)(`div`,{className:T(`mb-2 flex items-center gap-2 border-b-2 pb-1.5`,e.accent),children:[(0,W.jsx)(`span`,{className:T(`text-xs font-bold uppercase tracking-wide`,e.head),children:r(`activity:sdd.${e.labelKey}`)}),(0,W.jsx)(`span`,{className:`rounded-full bg-muted px-1.5 text-[10px] text-muted-foreground`,children:a.length})]}),(0,W.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-2 overflow-y-auto pr-1`,children:[a.map(e=>(0,W.jsx)(J,{task:e,selected:e.id===t,onClick:()=>n(e.id)},e.id)),a.length===0&&(0,W.jsx)(`div`,{className:`rounded-md border border-dashed border-border py-6 text-center text-[10px] text-muted-foreground`,children:r(`activity:sdd.kanbanEmpty`)})]})]},e.key)})})}function J({task:e,selected:t,onClick:n}){let r=e.displayStatus===`in_progress`;return(0,W.jsxs)(`button`,{type:`button`,onClick:n,className:T(`sdd-node-enter w-full rounded-lg border bg-card/85 p-2 text-left shadow-sm transition hover:border-primary/35 hover:bg-accent/35`,t?`border-primary/55 ring-1 ring-primary/35`:`border-border/70`,r&&`sdd-node-running`,e.displayStatus===`completed`&&`sdd-node-complete`,e.displayStatus===`failed`&&`sdd-node-failed`),children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[r&&(0,W.jsx)(c,{className:`h-3 w-3 animate-spin text-warning`}),e.displayStatus===`completed`&&(0,W.jsx)(p,{className:`h-3 w-3 text-success`}),e.displayStatus===`failed`&&(0,W.jsx)(d,{className:`h-3 w-3 text-destructive`}),(0,W.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:e.shortId}),(0,W.jsx)(`span`,{className:T(`ml-auto rounded px-1.5 text-[9px] font-bold uppercase`,L(e.priority).chip),children:e.priority})]}),(0,W.jsx)(`p`,{className:`mt-1 line-clamp-2 text-[11px] leading-snug text-foreground`,children:e.title}),(e.agentName||e.worktreeBranch||e.retries)&&(0,W.jsxs)(`div`,{className:`mt-1.5 flex items-center gap-1.5`,children:[e.agentName&&(0,W.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,W.jsx)(`span`,{className:T(`flex h-4 w-4 items-center justify-center rounded-full text-[8px] font-bold text-white`,r?`bg-warning sdd-agent-live`:`bg-muted-foreground`),children:I(e.agentName)}),(0,W.jsx)(`span`,{className:`max-w-[80px] truncate text-[10px] text-muted-foreground`,children:e.agentName})]}),e.retries?(0,W.jsxs)(`span`,{className:`flex items-center gap-0.5 text-[9px] text-destructive`,children:[(0,W.jsx)(i,{className:`h-2.5 w-2.5`}),e.retries]}):null,e.worktreeBranch&&(0,W.jsx)(s,{className:`ml-auto h-2.5 w-2.5 text-muted-foreground`})]})]})}function ae({task:e,allTasks:t,feed:n,now:r,modelCandidates:a,defaultModel:o,onClose:c,onRetry:l,onReassign:u,onSetModel:f,onSetVerification:h,onCancel:ee,onDelete:v,onSplit:b,onSelectTask:x}){let{t:E}=_(),D=ne(e.displayStatus),O=D.icon,k=e.displayStatus===`in_progress`,A=e.displayStatus===`pending`||e.displayStatus===`blocked`||e.displayStatus===`queued`,[j,M]=(0,U.useState)(!1),[N,P]=(0,U.useState)(``),[F,R]=(0,U.useState)(null),[z,B]=(0,U.useState)(!1),[V,H]=(0,U.useState)(``),[ie,G]=(0,U.useState)(!1),[K,q]=(0,U.useState)(e.verificationCommand??``),J=()=>{N.trim()&&(u(e.id,N.trim()),M(!1),P(``))},ae=()=>{let t=V.split(`
|
|
2
|
-
`).map(e=>e.trim()).filter(Boolean).map(e=>{let[t,...n]=e.split(`::`),r=(t??``).trim();return{title:r,description:n.join(`::`).trim()||r}}).filter(e=>e.title);t.length&&(b(e.id,t),B(!1),H(``))},se=(0,U.useMemo)(()=>new Map(t.map(e=>[e.shortId,e])),[t]),X=(0,U.useMemo)(()=>t.filter(t=>t.deps.includes(e.shortId)),[t,e.shortId]),Z=(0,U.useMemo)(()=>n.filter(t=>t.taskShortId===e.shortId),[n,e.shortId]),ce=e.startedAt&&!e.completedAt?re(r-e.startedAt):e.startedAt&&e.completedAt?re(e.completedAt-e.startedAt):null;return(0,W.jsxs)(`div`,{className:`sdd-rise flex h-full min-h-0 min-w-0 flex-col`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border/70 bg-card/70 px-3 py-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:c,className:`text-muted-foreground hover:text-foreground`,title:E(`activity:sddTask.backTitle`),children:(0,W.jsx)(y,{className:`h-4 w-4`})}),(0,W.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:e.shortId}),(0,W.jsxs)(`span`,{className:T(`ml-auto flex items-center gap-1 rounded-full border px-2 py-0.5 text-[11px]`,D.ring,D.text),children:[(0,W.jsx)(O,{className:T(`h-3 w-3`,k&&`animate-spin`)}),D.label]})]}),(0,W.jsxs)(`div`,{className:`min-h-0 min-w-0 flex-1 space-y-3 overflow-auto p-3`,children:[(0,W.jsx)(`h3`,{className:`text-sm font-semibold leading-snug text-foreground`,children:e.title}),e.agentName&&(0,W.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg border border-border/70 bg-muted/45 p-2`,children:[(0,W.jsx)(`span`,{className:T(`flex h-7 w-7 items-center justify-center rounded-full text-[10px] font-bold text-white`,k?`bg-warning sdd-agent-live`:`bg-muted-foreground`),children:I(e.agentName)}),(0,W.jsxs)(`div`,{className:`leading-tight`,children:[(0,W.jsx)(`div`,{className:`text-xs font-medium text-foreground`,children:e.agentName}),(0,W.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:E(k?`activity:sddTask.workingOn`:`activity:sddTask.assigned`)})]})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-1.5 text-[11px]`,children:[(0,W.jsx)(Y,{label:E(`activity:sddTask.metaPriority`),children:(0,W.jsx)(`span`,{className:T(`font-medium uppercase`,L(e.priority).text),children:e.priority})}),(0,W.jsx)(Y,{label:E(`activity:sddTask.metaType`),children:e.type}),ce&&(0,W.jsx)(Y,{label:e.completedAt?E(`activity:sddTask.metaDuration`):E(`activity:sddTask.metaElapsed`),children:(0,W.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,W.jsx)(C,{className:`h-3 w-3 text-muted-foreground`}),ce]})}),e.retries?(0,W.jsx)(Y,{label:E(`activity:sddTask.metaRetries`),children:(0,W.jsxs)(`span`,{className:`flex items-center gap-1 text-destructive`,children:[(0,W.jsx)(i,{className:`h-3 w-3`}),e.retries]})}):null,e.worktreeBranch&&(0,W.jsx)(Y,{label:E(`activity:sddTask.metaWorktree`),full:!0,children:(0,W.jsxs)(`span`,{className:`flex items-center gap-1 font-mono text-foreground`,title:e.worktreeBranch,children:[(0,W.jsx)(s,{className:`h-3 w-3 text-muted-foreground`}),(0,W.jsx)(`span`,{className:`truncate`,children:e.worktreeBranch})]})})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:[E(`activity:sddTask.workerModel`),!e.model&&o&&(0,W.jsxs)(`span`,{className:`font-normal normal-case text-muted-foreground`,children:[`· `,E(`activity:sddTask.runDefault`,{model:o})]})]}),(0,W.jsx)(te,{value:e.model,provider:e.provider,candidates:a,placeholder:o?E(`activity:sddTask.runDefaultPlaceholderModel`,{model:o}):E(`activity:sddTask.runDefaultPlaceholder`),onPick:(t,n)=>f(e.id,t,n),onReset:e.model?()=>f(e.id,void 0,void 0):void 0}),e.fallbackModels&&e.fallbackModels.length>0&&(0,W.jsx)(`div`,{className:`mt-1 flex flex-wrap gap-1`,children:e.fallbackModels.map((e,t)=>(0,W.jsxs)(`span`,{className:`rounded bg-muted px-1.5 py-0.5 font-mono text-[9px] text-muted-foreground`,children:[`↳ `,e]},t))})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:[E(`activity:sddTask.verificationCmd`),(0,W.jsxs)(`span`,{className:`font-normal normal-case text-muted-foreground`,children:[`· `,E(`activity:sddTask.gatesCompletion`)]})]}),ie?(0,W.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,W.jsx)(`input`,{autoFocus:!0,value:K,onChange:e=>q(e.target.value),onKeyDown:t=>{t.key===`Enter`?(h(e.id,K.trim()||void 0),G(!1)):t.key===`Escape`&&(q(e.verificationCommand??``),G(!1))},placeholder:E(`activity:sddTask.verifyPlaceholder`),className:`w-full rounded border border-border bg-background px-2 py-1 font-mono text-[11px] text-foreground`}),(0,W.jsxs)(`div`,{className:`flex gap-1`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>{h(e.id,K.trim()||void 0),G(!1)},className:`rounded bg-primary px-2 py-0.5 text-[10px] text-primary-foreground hover:opacity-90`,children:E(`common:action.save`)}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{q(e.verificationCommand??``),G(!1)},className:`rounded bg-muted px-2 py-0.5 text-[10px] text-muted-foreground hover:bg-muted/80`,children:E(`common:action.cancel`)})]})]}):e.verificationCommand?(0,W.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,W.jsx)(`code`,{className:`flex-1 truncate rounded bg-muted px-1.5 py-0.5 font-mono text-[10px] text-foreground`,children:e.verificationCommand}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>G(!0),className:`rounded bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground hover:bg-muted/80`,children:E(`common:action.edit`)}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>h(e.id,void 0),className:`rounded bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground hover:bg-muted/80`,children:E(`common:action.clear`)})]}):(0,W.jsx)(`button`,{type:`button`,onClick:()=>G(!0),className:`rounded border border-dashed border-border px-2 py-1 text-[10px] text-muted-foreground hover:bg-muted`,children:E(`activity:sddTask.addVerify`)})]}),e.description&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:E(`activity:sddTask.description`)}),(0,W.jsx)(`p`,{className:`whitespace-pre-wrap rounded-md bg-muted p-2 text-[11px] leading-relaxed text-foreground`,children:e.description})]}),Z.length>0&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:E(`activity:sddTask.timeline`)}),(0,W.jsx)(`div`,{className:`space-y-1 border-l border-border pl-2.5`,children:Z.map((e,t)=>(0,W.jsxs)(`div`,{className:`relative text-[11px] leading-snug text-foreground`,children:[(0,W.jsx)(`span`,{className:T(`absolute -left-[14px] top-1 h-1.5 w-1.5 rounded-full`,e.kind===`completed`?`bg-success`:e.kind===`failed`?`bg-destructive`:e.kind===`retrying`?`bg-warning`:`bg-primary`)}),e.text]},`${e.ts}-${t}`))})]}),e.deps.length>0&&(0,W.jsx)(oe,{title:E(`activity:sddTask.dependsOn`),shortIds:e.deps,byShort:se,onSelectTask:x}),X.length>0&&(0,W.jsx)(oe,{title:E(`activity:sddTask.blocks`),shortIds:X.map(e=>e.shortId),byShort:se,onSelectTask:x})]}),(0,W.jsxs)(`div`,{className:`border-t border-border p-2`,children:[j?(0,W.jsxs)(`div`,{className:`sdd-rise flex items-center gap-1.5`,children:[(0,W.jsx)(`input`,{autoFocus:!0,value:N,onChange:e=>P(e.target.value),onKeyDown:e=>{e.key===`Enter`&&J(),e.key===`Escape`&&M(!1)},placeholder:E(`activity:sddTask.newWorkerPlaceholder`),className:`min-w-0 flex-1 rounded-md border border-border/70 bg-background px-2 py-1.5 text-xs outline-none focus:border-primary/60`}),(0,W.jsx)(`button`,{type:`button`,onClick:J,disabled:!N.trim(),className:`rounded-md bg-primary/10 px-2 py-1.5 text-xs font-medium text-primary hover:bg-primary/15 disabled:opacity-40`,children:(0,W.jsx)(p,{className:`h-3.5 w-3.5`})}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>M(!1),className:`rounded-md bg-muted px-2 py-1.5 text-xs text-muted-foreground hover:bg-muted`,children:(0,W.jsx)(d,{className:`h-3.5 w-3.5`})})]}):F?(0,W.jsxs)(`div`,{className:`sdd-rise flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`flex-1 text-xs text-foreground`,children:E(F===`stop`?`activity:sddTask.confirmStop`:`activity:sddTask.confirmDelete`)}),(0,W.jsxs)(`button`,{type:`button`,onClick:()=>{F===`stop`?ee(e.id):v(e.id),R(null)},className:`inline-flex items-center gap-1 rounded-md bg-destructive/10 px-2.5 py-1.5 text-xs font-medium text-destructive hover:bg-destructive/15`,children:[(0,W.jsx)(p,{className:`h-3.5 w-3.5`}),` `,E(F===`stop`?`common:action.stop`:`common:action.delete`)]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>R(null),className:`rounded-md bg-muted px-2 py-1.5 text-xs text-muted-foreground hover:bg-muted`,children:(0,W.jsx)(d,{className:`h-3.5 w-3.5`})})]}):(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>l(e.id),title:E(`activity:sddTask.retryTitle`),className:`inline-flex flex-1 items-center justify-center gap-1 rounded-md bg-warning/12 py-1.5 text-xs font-medium text-warning hover:bg-warning/18`,children:[(0,W.jsx)(i,{className:`h-3.5 w-3.5`}),` `,E(`common:action.retry`)]}),(0,W.jsxs)(`button`,{type:`button`,onClick:()=>M(!0),className:`inline-flex flex-1 items-center justify-center gap-1 rounded-md bg-primary/10 py-1.5 text-xs font-medium text-primary hover:bg-primary/15`,children:[(0,W.jsx)(S,{className:`h-3.5 w-3.5`}),` `,E(`activity:sddTask.reassign`)]}),k&&(0,W.jsxs)(`button`,{type:`button`,onClick:()=>R(`stop`),title:E(`activity:sddTask.stopTitle`),className:`inline-flex flex-1 items-center justify-center gap-1 rounded-md bg-destructive/10 py-1.5 text-xs font-medium text-destructive hover:bg-destructive/15`,children:[(0,W.jsx)(m,{className:`h-3.5 w-3.5`}),` `,E(`common:action.stop`)]}),!k&&(0,W.jsxs)(`button`,{type:`button`,onClick:()=>B(!0),title:E(`activity:sddTask.splitTitle`),className:`inline-flex flex-1 items-center justify-center gap-1 rounded-md bg-primary/10 py-1.5 text-xs font-medium text-primary hover:bg-primary/15`,children:[(0,W.jsx)(w,{className:`h-3.5 w-3.5`}),` `,E(`activity:sddTask.split`)]}),A&&(0,W.jsxs)(`button`,{type:`button`,onClick:()=>R(`delete`),title:E(`activity:sddTask.deleteTitle`),className:`inline-flex flex-1 items-center justify-center gap-1 rounded-md bg-destructive/10 py-1.5 text-xs font-medium text-destructive hover:bg-destructive/15`,children:[(0,W.jsx)(g,{className:`h-3.5 w-3.5`}),` `,E(`common:action.delete`)]})]}),z&&(0,W.jsxs)(`div`,{className:`mt-2 flex flex-col gap-2`,children:[(0,W.jsx)(`label`,{className:`text-[11px] text-muted-foreground`,htmlFor:`sdd-split-input`,children:E(`activity:sddTask.splitHint`)}),(0,W.jsx)(`textarea`,{id:`sdd-split-input`,autoFocus:!0,rows:3,value:V,onChange:e=>H(e.target.value),placeholder:E(`activity:sddTask.splitPlaceholder`),className:`w-full resize-y rounded-md border border-border/70 bg-background px-2 py-1.5 text-xs text-foreground focus:outline-none focus:ring-1 focus:ring-ring`}),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:ae,className:`inline-flex flex-1 items-center justify-center gap-1 rounded-md bg-primary/10 py-1.5 text-xs font-medium text-primary hover:bg-primary/15`,children:[(0,W.jsx)(w,{className:`h-3.5 w-3.5`}),` `,E(`activity:sddTask.splitInto`)]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{B(!1),H(``)},className:`rounded-md bg-muted px-2 py-1.5 text-xs text-muted-foreground hover:bg-muted`,children:(0,W.jsx)(d,{className:`h-3.5 w-3.5`})})]})]})]})]})}function Y({label:e,children:t,full:n}){return(0,W.jsxs)(`div`,{className:T(`rounded-md border border-border bg-muted/50 px-2 py-1`,n&&`col-span-2`),children:[(0,W.jsx)(`div`,{className:`text-[9px] uppercase tracking-wide text-muted-foreground`,children:e}),(0,W.jsx)(`div`,{className:`text-foreground`,children:t})]})}function oe({title:e,shortIds:t,byShort:n,onSelectTask:r}){return(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:e}),(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:t.map(e=>{let t=n.get(e);return(0,W.jsxs)(`button`,{type:`button`,disabled:!t,onClick:()=>t&&r(t.id),className:`flex items-center gap-1 rounded-full border border-border bg-muted px-2 py-0.5 text-[10px] text-foreground hover:bg-muted disabled:opacity-50`,title:t?.title,children:[(0,W.jsx)(`span`,{className:T(`h-1.5 w-1.5 rounded-full`,ne(t?.displayStatus??`pending`).dot)}),(0,W.jsx)(`span`,{className:`font-mono`,children:e})]},e)})})]})}function se({pct:e}){let t=2*Math.PI*26,n=t-Math.max(0,Math.min(100,e))/100*t;return(0,W.jsxs)(`div`,{className:`relative h-16 w-16 shrink-0`,children:[(0,W.jsxs)(`svg`,{viewBox:`0 0 64 64`,className:`h-16 w-16 -rotate-90`,children:[(0,W.jsx)(`circle`,{cx:`32`,cy:`32`,r:26,fill:`none`,stroke:`hsl(var(--muted))`,strokeWidth:`6`}),(0,W.jsx)(`circle`,{cx:`32`,cy:`32`,r:26,fill:`none`,stroke:`url(#sddgrad)`,strokeWidth:`6`,strokeLinecap:`round`,strokeDasharray:t,strokeDashoffset:n,style:{transition:`stroke-dashoffset 0.6s cubic-bezier(0.16,1,0.3,1)`}}),(0,W.jsx)(`defs`,{children:(0,W.jsxs)(`linearGradient`,{id:`sddgrad`,x1:`0`,y1:`0`,x2:`1`,y2:`1`,children:[(0,W.jsx)(`stop`,{offset:`0%`,stopColor:`hsl(var(--primary))`}),(0,W.jsx)(`stop`,{offset:`100%`,stopColor:`hsl(var(--info))`})]})})]}),(0,W.jsxs)(`div`,{className:`absolute inset-0 flex items-center justify-center text-sm font-bold text-foreground`,children:[Math.round(e),`%`]})]})}function X({onClose:e}){let{t}=_(),{client:n}=E(),s=j(e=>e.snapshot),c=j(e=>e.lifecycleResult),f=j(e=>e.destroying),p=j(e=>e.setDestroying),v=j(e=>e.setLifecycleResult),[y,b]=(0,U.useState)(()=>Date.now()),[S,C]=(0,U.useState)(null),[w,D]=(0,U.useState)(`graph`),[te,O]=(0,U.useState)(!1);(0,U.useEffect)(()=>{n?.send?.({type:`sdd.board.get`})},[n]);let k=s&&(s.status===`running`||s.status===`paused`);(0,U.useEffect)(()=>{if(!k)return;let e=setInterval(()=>b(Date.now()),1e3);return b(Date.now()),()=>clearInterval(e)},[k]);let A=(0,U.useCallback)(e=>n?.send?.(e),[n]),P=(0,U.useRef)(null),F=(0,U.useCallback)(e=>{P.current=null,A({type:`sdd.board.destroy`,payload:{revertMerged:e}})},[A]),L=(0,U.useCallback)(e=>{O(!1),v(null),p(!0),k?(A({type:`sdd.board.stop`,payload:{}}),P.current={revertMerged:e,deadline:Date.now()+2e4}):F(e)},[k,A,F,p,v]);(0,U.useEffect)(()=>{let e=P.current;e&&(!k||Date.now()>=e.deadline)&&F(e.revertMerged)},[k,s,F]);let ne=(0,U.useCallback)(()=>{v(null),A({type:`sdd.board.cleanup_worktrees`,payload:{}})},[A,v]),B=(0,U.useCallback)(()=>{v(null),A({type:`sdd.board.rollback`,payload:{}})},[A,v]),V=(0,U.useMemo)(()=>(s?.tasks??[]).map(e=>({id:e.id,shortId:e.shortId,title:e.title,displayStatus:e.displayStatus,priority:e.priority,deps:e.deps,agentName:e.agentName,worktreeBranch:e.worktreeBranch})),[s?.tasks]),K=(0,U.useMemo)(()=>{let e=new Map;for(let t of s?.tasks??[])t.displayStatus===`in_progress`&&t.agentName&&e.set(t.agentName,{name:t.agentName,task:t.title});return[...e.values()]},[s?.tasks]),J=(0,U.useCallback)(e=>C(e),[]),Y=(0,U.useCallback)(e=>A({type:`sdd.board.retry`,payload:{taskId:e}}),[A]),oe=(0,U.useCallback)(()=>A({type:`sdd.board.retry_all_failed`,payload:{}}),[A]),X=(0,U.useCallback)((e,t)=>{let n=t.trim();n&&A({type:`sdd.board.reassign`,payload:{taskId:e,agentName:n}})},[A]),Z=(0,U.useCallback)((e,t,n)=>A({type:`sdd.board.set_task_model`,payload:{taskId:e,model:t,provider:n}}),[A]),le=(0,U.useCallback)((e,t)=>A({type:`sdd.board.set_task_verification`,payload:{taskId:e,verificationCommand:t}}),[A]),ue=(0,U.useCallback)(e=>A({type:`sdd.board.cancel_task`,payload:{taskId:e}}),[A]),de=(0,U.useCallback)(e=>{A({type:`sdd.board.delete_task`,payload:{taskId:e}}),C(null)},[A]),fe=(0,U.useCallback)((e,t)=>{A({type:`sdd.board.split_task`,payload:{taskId:e,subtasks:t}}),C(null)},[A]),pe=N(S!==null),me=(0,U.useMemo)(()=>s?.tasks.find(e=>e.id===S)??null,[s?.tasks,S]),$=s?.progress,he=s?.diagnostics?.deadlockChains??[];return(0,W.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col bg-background`,children:[(0,W.jsxs)(`header`,{className:`sdd-sheen shrink-0 border-b border-border px-4 pb-3 pt-2.5`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(r,{className:`h-5 w-5 text-warning`}),(0,W.jsx)(`h1`,{className:`text-lg font-semibold text-foreground`,children:s?.title??t(`activity:sddBoard.titleFallback`)}),s&&(0,W.jsx)(`span`,{className:T(`rounded-full border px-2 py-0.5 text-[11px] font-medium capitalize`,R[s.status]??R.idle),children:s.status}),s?.defaultModel&&(0,W.jsxs)(`span`,{className:`flex items-center gap-1 rounded-full border border-border bg-muted px-2 py-0.5 text-[10px] text-muted-foreground`,title:t(`activity:sddBoard.defaultModelTitle`),children:[(0,W.jsx)(x,{className:`h-3 w-3 text-primary`}),s.defaultModel]})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[s&&(0,W.jsx)(`div`,{className:`flex items-center rounded-md border border-border bg-muted p-0.5 text-[11px]`,children:[`graph`,`kanban`].map(e=>(0,W.jsx)(`button`,{type:`button`,onClick:()=>D(e),className:T(`rounded px-2 py-0.5 capitalize transition`,w===e?`bg-primary/12 text-primary`:`text-muted-foreground hover:text-foreground`),children:t(e===`graph`?`activity:sddBoard.graphLabel`:`activity:sddBoard.kanbanLabel`)},e))}),k&&($?.failed??0)>0&&(0,W.jsxs)(`button`,{type:`button`,onClick:oe,title:t(`activity:sddBoard.retryAllTitle`),className:`inline-flex items-center gap-1 rounded-md bg-warning/15 px-2.5 py-1 text-xs font-medium text-warning hover:bg-warning/25`,children:[(0,W.jsx)(i,{className:`h-3.5 w-3.5`}),` `,t(`activity:sddBoard.retryFailed`,{count:$?.failed??0})]}),k&&(0,W.jsxs)(W.Fragment,{children:[s?.status===`paused`?(0,W.jsxs)(`button`,{type:`button`,onClick:()=>A({type:`sdd.board.resume`,payload:{}}),className:`inline-flex items-center gap-1 rounded-md bg-success/15 px-2.5 py-1 text-xs font-medium text-success hover:bg-success/25`,children:[(0,W.jsx)(a,{className:`h-3.5 w-3.5`}),` `,t(`activity:sddBoard.resume`)]}):(0,W.jsxs)(`button`,{type:`button`,onClick:()=>A({type:`sdd.board.pause`,payload:{}}),className:`inline-flex items-center gap-1 rounded-md bg-warning/15 px-2.5 py-1 text-xs font-medium text-warning hover:bg-warning/25`,children:[(0,W.jsx)(u,{className:`h-3.5 w-3.5`}),` `,t(`activity:sddBoard.pause`)]}),(0,W.jsxs)(`button`,{type:`button`,onClick:()=>A({type:`sdd.board.stop`,payload:{}}),className:`inline-flex items-center gap-1 rounded-md bg-destructive/15 px-2.5 py-1 text-xs font-medium text-destructive hover:bg-destructive/25`,children:[(0,W.jsx)(m,{className:`h-3.5 w-3.5`}),` `,t(`activity:sddBoard.stop`)]})]}),s&&!k&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`button`,{type:`button`,onClick:ne,title:t(`activity:sddBoard.cleanTitle`),className:`inline-flex items-center gap-1 rounded-md bg-muted px-2.5 py-1 text-xs font-medium text-muted-foreground hover:bg-muted/80`,children:[(0,W.jsx)(ee,{className:`h-3.5 w-3.5`}),` `,t(`activity:sddBoard.cleanWorktrees`)]}),(s.mergedCommits?.length??0)>0&&(0,W.jsxs)(`button`,{type:`button`,onClick:B,title:t(`activity:sddBoard.rollbackTitle`,{count:s.mergedCommits?.length??0,base:s.baseBranch??t(`activity:sdd.baseBranchFallback`)}),className:`inline-flex items-center gap-1 rounded-md bg-warning/15 px-2.5 py-1 text-xs font-medium text-warning hover:bg-warning/25`,children:[(0,W.jsx)(h,{className:`h-3.5 w-3.5`}),` `,t(`activity:sddBoard.rollback`,{count:s.mergedCommits?.length??0})]})]}),s&&(f?(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 rounded-md bg-destructive/15 px-2.5 py-1 text-xs font-medium text-destructive`,children:[(0,W.jsx)(i,{className:`h-3.5 w-3.5 animate-spin`}),` `,t(k?`activity:sddBoard.stopping`:`activity:sddBoard.destroying`)]}):(0,W.jsxs)(`button`,{type:`button`,onClick:()=>O(!0),title:t(`activity:sddBoard.destroyTitle`),className:`inline-flex items-center gap-1 rounded-md bg-destructive px-2.5 py-1 text-xs font-medium text-destructive-foreground hover:bg-destructive/90`,children:[(0,W.jsx)(g,{className:`h-3.5 w-3.5`}),` `,t(`activity:sddBoard.destroy`)]})),(0,W.jsx)(M,{variant:`ghost`,size:`icon`,onClick:e,children:(0,W.jsx)(d,{className:`h-4 w-4`})})]})]}),s&&$&&(0,W.jsxs)(`div`,{className:`mt-2.5 flex items-center gap-5`,children:[(0,W.jsx)(se,{pct:$.percentComplete}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3 text-xs`,children:[(0,W.jsx)(Q,{label:t(`activity:sddBoard.statDone`),value:`${$.completed}/${$.total}`,color:`text-success`}),$.inProgress>0&&(0,W.jsx)(Q,{label:t(`activity:sddBoard.statRunning`),value:$.inProgress,color:`text-warning`}),$.failed>0&&(0,W.jsx)(Q,{label:t(`activity:sddBoard.statFailed`),value:$.failed,color:`text-destructive`}),(0,W.jsx)(Q,{label:t(`activity:sddBoard.statWave`),value:s.wave+1,color:`text-primary`}),k&&s.startedAt>0&&(0,W.jsx)(Q,{label:t(`activity:sddBoard.statElapsed`),value:re(y-s.startedAt),color:`text-foreground`})]}),(0,W.jsx)(`div`,{className:`flex min-h-[24px] items-center gap-1.5`,children:K.length===0?(0,W.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:t(`activity:sddBoard.noActiveWorkers`)}):K.map((e,t)=>(0,W.jsxs)(`span`,{title:`${e.name} → ${e.task}`,className:`flex items-center gap-1 rounded-full bg-muted py-0.5 pl-0.5 pr-2`,children:[(0,W.jsx)(`span`,{className:T(`sdd-agent-live flex h-5 w-5 items-center justify-center rounded-full text-[9px] font-bold text-white`,z[t%z.length]),children:I(e.name)}),(0,W.jsx)(`span`,{className:`max-w-[90px] truncate text-[11px] text-foreground`,children:e.name})]},e.name))})]})]})]}),c&&(0,W.jsx)(ce,{result:c,onDismiss:()=>v(null)}),he.length>0&&(0,W.jsxs)(`div`,{className:`flex items-start gap-2 border-b border-destructive/30 bg-destructive/5 px-4 py-2 text-xs text-destructive`,children:[(0,W.jsx)(o,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`font-semibold`,children:t(`activity:sddBoard.deadlock`)}),he.map(e=>(0,W.jsxs)(`div`,{className:`font-mono`,children:[e.blocked,` ← `,e.blockedBy.join(`, `)]},e.blocked))]})]}),(0,W.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-1`,children:[(0,W.jsx)(`div`,{className:`relative min-h-0 min-w-0 flex-1 overflow-hidden`,children:s?w===`graph`?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(H,{tasks:V,columns:s.columns,onTaskClick:J}),(0,W.jsx)(`div`,{className:`pointer-events-none absolute bottom-2 left-1/2 -translate-x-1/2 rounded-full bg-black/40 px-2 py-0.5 text-[10px] text-muted-foreground backdrop-blur`,children:t(`activity:sddBoard.clickTaskHint`)})]}):(0,W.jsx)(q,{tasks:s.tasks,selectedId:S,onTaskClick:J}):(0,W.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3 text-sm text-muted-foreground`,children:[(0,W.jsx)(l,{className:`h-10 w-10 text-primary/40`}),(0,W.jsx)(`p`,{className:`text-foreground`,children:t(`activity:sddBoard.noRunTitle`)}),(0,W.jsx)(`p`,{className:`max-w-sm text-center text-xs text-muted-foreground`,children:t(`activity:sddBoard.noRunBody`)})]})}),s&&(0,W.jsx)(`aside`,{className:`w-80 shrink-0 border-l border-border bg-card`,children:me?(0,W.jsx)(ae,{task:me,allTasks:s.tasks,feed:s.feed??[],now:y,modelCandidates:pe,defaultModel:s.defaultModel,onClose:()=>C(null),onRetry:Y,onReassign:X,onSetModel:Z,onSetVerification:le,onCancel:ue,onDelete:de,onSplit:fe,onSelectTask:C},me.id):(0,W.jsx)(ie,{feed:s.feed??[],now:y})})]}),(0,W.jsx)(G,{open:te,onOpenChange:O,snapshot:s,busy:f,onConfirm:L})]})}function Z(e){let t=e.op===`cleanup_worktrees`?`lcClean`:e.op===`rollback`?`lcRollback`:`lcDestroy`,n=v.t(`activity:sddBoard.${t}`);if(!e.ok)return v.t(`activity:sddBoard.lcFailed`,{op:n,reason:e.reason??v.t(`activity:sddBoard.lcUnknownError`)});let r=[];typeof e.removed==`number`&&r.push(v.t(`activity:sddBoard.lcWorktrees`,{count:e.removed})),typeof e.reverted==`number`&&e.reverted>0&&r.push(v.t(`activity:sddBoard.lcCommits`,{count:e.reverted})),e.deleted?.length&&r.push(v.t(`activity:sddBoard.lcDeleted`,{items:e.deleted.join(`, `)}));let i=r.length?r.join(` · `):v.t(`activity:sddBoard.lcNothing`);return e.reason?v.t(`activity:sddBoard.lcNote`,{op:n,body:i,reason:e.reason}):v.t(`activity:sddBoard.lcOk`,{op:n,body:i})}function ce({result:e,onDismiss:t}){let n=!e.ok||!!e.reason;return(0,W.jsxs)(`div`,{className:T(`flex items-start gap-2 border-b px-4 py-2 text-xs`,n?`border-warning/30 bg-warning/5 text-warning`:`border-success/30 bg-success/5 text-success`),children:[n?(0,W.jsx)(b,{className:`mt-0.5 h-4 w-4 shrink-0`}):(0,W.jsx)(f,{className:`mt-0.5 h-4 w-4 shrink-0`}),(0,W.jsx)(`span`,{className:`flex-1`,children:Z(e)}),(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`shrink-0 opacity-60 hover:opacity-100`,children:(0,W.jsx)(d,{className:`h-3.5 w-3.5`})})]})}function Q({label:e,value:t,color:n}){return(0,W.jsxs)(`span`,{className:`flex items-baseline gap-1`,children:[(0,W.jsx)(`span`,{className:T(`font-semibold tabular-nums`,n),children:t}),(0,W.jsx)(`span`,{className:`text-[10px] uppercase tracking-wide text-muted-foreground`,children:e})]})}export{X as SddBoardView};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-D0X23O-i.js";import{Er as r,Et as i,Gr as a,It as o,Kt as s,Lr as c,Mn as l,Pn as u,Sr as d,Wr as f,Z as p,br as m,fi as h,pr as g,xt as _}from"./vendor-CyLvG8N0.js";import"./i18n-CkkVJCs9.js";import{t as v}from"./utils-CU_o9ioU.js";import{a as y,c as b,m as x,n as S,o as C,p as w,r as T,t as E,u as D}from"./xyflow-oYDGUYW6.js";var O=e(t(),1),k={pending:{label:`Pending`,icon:g,text:`text-muted-foreground`,ring:`border-border/70 bg-muted/45`,dot:`bg-muted-foreground`,hex:`hsl(var(--muted-foreground))`},queued:{label:`Ready`,icon:g,text:`text-primary`,ring:`border-primary/35 bg-primary/10`,dot:`bg-primary`,hex:`hsl(var(--primary))`},in_progress:{label:`Running`,icon:f,spin:!0,text:`text-warning`,ring:`border-warning/45 bg-warning/10`,dot:`bg-warning`,hex:`hsl(var(--warning))`},blocked:{label:`Blocked`,icon:g,text:`text-destructive`,ring:`border-destructive/30 bg-destructive/10`,dot:`bg-destructive`,hex:`hsl(var(--destructive))`},review:{label:`Review`,icon:g,text:`text-primary`,ring:`border-primary/35 bg-primary/10`,dot:`bg-primary`,hex:`hsl(var(--info))`},failed:{label:`Failed`,icon:p,text:`text-destructive`,ring:`border-destructive/45 bg-destructive/10`,dot:`bg-destructive`,hex:`hsl(var(--destructive))`},completed:{label:`Done`,icon:m,text:`text-success`,ring:`border-success/35 bg-success/10`,dot:`bg-success`,hex:`hsl(var(--success))`},cancelled:{label:`Cancelled`,icon:r,text:`text-muted-foreground`,ring:`border-border/70 bg-muted/45`,dot:`bg-muted-foreground`,hex:`hsl(var(--muted-foreground))`}};function A(e){return k[e]??k.pending}var j={critical:{text:`text-destructive`,chip:`bg-destructive/10 text-destructive`},high:{text:`text-warning`,chip:`bg-warning/12 text-warning`},medium:{text:`text-primary`,chip:`bg-primary/10 text-primary`},low:{text:`text-muted-foreground`,chip:`bg-muted text-muted-foreground`}};function M(e){return j[e]??j.medium}var N={running:`border-primary/35 bg-primary/10 text-primary`,paused:`border-warning/35 bg-warning/10 text-warning`,stopped:`border-border/70 bg-muted text-muted-foreground`,completed:`border-success/35 bg-success/10 text-success`,failed:`border-destructive/35 bg-destructive/10 text-destructive`,deadlocked:`border-destructive/35 bg-destructive/10 text-destructive`,idle:`border-border bg-muted text-muted-foreground`},P=[`bg-warning`,`bg-primary`,`bg-success`,`bg-destructive`,`bg-secondary`,`bg-muted-foreground`,`bg-accent`],F={started:{icon:s,color:`text-warning`},completed:{icon:m,color:`text-success`},failed:{icon:p,color:`text-destructive`},retrying:{icon:o,color:`text-warning`},wave:{icon:a,color:`text-primary`},deadlock:{icon:c,color:`text-destructive`},verification_failed:{icon:i,color:`text-destructive`},conflict:{icon:l,color:`text-warning`},split:{icon:_,color:`text-primary`},supervisor:{icon:d,color:`text-primary`}};function I(e){let t=e.trim().split(/\s+/);return((t[0]?.[0]??``)+(t[1]?.[0]??``)).toUpperCase()||`·`}function L(e){let t=Math.max(0,Math.floor(e/1e3));if(t<60)return`${t}s`;let n=Math.floor(t/60);return n<60?t%60?`${n}m ${t%60}s`:`${n}m`:`${Math.floor(n/60)}h ${n%60}m`}function R(e,t){let n=Math.max(0,Math.floor((t-e)/1e3));if(n<60)return`${n}s`;let r=Math.floor(n/60);return r<60?`${r}m`:`${Math.floor(r/60)}h`}var z=n(),B=300,V=128,H=240,U={pending:{ring:`border-border/70`,chip:`bg-muted text-muted-foreground`,dot:`bg-muted-foreground`},queued:{ring:`border-primary/35`,chip:`bg-primary/10 text-primary`,dot:`bg-primary`},in_progress:{ring:`border-warning/45`,chip:`bg-warning/12 text-warning`,dot:`bg-warning`},blocked:{ring:`border-destructive/30`,chip:`bg-destructive/10 text-destructive`,dot:`bg-destructive`},review:{ring:`border-primary/35`,chip:`bg-primary/10 text-primary`,dot:`bg-primary`},failed:{ring:`border-destructive/45`,chip:`bg-destructive/10 text-destructive`,dot:`bg-destructive`},completed:{ring:`border-success/35`,chip:`bg-success/12 text-success`,dot:`bg-success`},cancelled:{ring:`border-border/70`,chip:`bg-muted text-muted-foreground`,dot:`bg-muted-foreground`}};function W({data:e}){let t=e.task,{t:n}=h(),r=U[t.displayStatus],i=t.displayStatus===`in_progress`,a=t.displayStatus===`completed`?m:t.displayStatus===`failed`?p:i?f:g;return(0,z.jsxs)(`div`,{className:v(`sdd-node-enter group relative rounded-lg border bg-card/95 px-2.5 py-2 text-left shadow-lg backdrop-blur`,r.ring,i&&`sdd-node-running`,t.displayStatus===`completed`&&`sdd-node-complete`,t.displayStatus===`failed`&&`sdd-node-failed`,e.onTaskClick&&`cursor-pointer hover:brightness-125`),style:{width:H,animationDelay:`${Math.min(e.index*45,600)}ms`},onClick:()=>e.onTaskClick?.(t.id),role:e.onTaskClick?`button`:void 0,tabIndex:e.onTaskClick?0:void 0,onKeyDown:n=>{e.onTaskClick&&(n.key===`Enter`||n.key===` `)&&(n.preventDefault(),e.onTaskClick(t.id))},children:[(0,z.jsx)(y,{type:`target`,position:x.Left,isConnectable:!1,className:`!h-1.5 !w-1.5 !border-0 !bg-border`}),(0,z.jsx)(y,{type:`source`,position:x.Right,isConnectable:!1,className:`!h-1.5 !w-1.5 !border-0 !bg-border`}),(0,z.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,z.jsx)(a,{className:v(`h-3.5 w-3.5`,i&&`animate-spin`,r.chip.split(` `).find(e=>e.startsWith(`text`)))}),(0,z.jsx)(`span`,{className:`font-mono text-[10px] text-muted-foreground`,children:t.shortId}),(0,z.jsx)(`span`,{className:v(`font-mono text-[10px] font-bold uppercase`,M(t.priority).text),children:t.priority[0]}),(0,z.jsx)(`span`,{className:v(`ml-auto rounded px-1.5 py-px text-[9px] font-medium`,r.chip),children:n(`activity:sdd.status.${t.displayStatus}`)})]}),(0,z.jsx)(`p`,{className:`mt-1 line-clamp-2 text-[11px] leading-snug text-foreground`,children:t.title}),(t.agentName||t.worktreeBranch)&&(0,z.jsxs)(`div`,{className:`mt-1.5 flex items-center gap-1.5`,children:[t.agentName&&(0,z.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,z.jsx)(`span`,{className:v(`flex h-4 w-4 items-center justify-center rounded-full text-[8px] font-bold text-white`,i?`bg-warning sdd-agent-live`:`bg-muted-foreground`),children:I(t.agentName)}),(0,z.jsx)(`span`,{className:`max-w-[88px] truncate text-[10px] text-muted-foreground`,children:t.agentName})]}),t.retries?(0,z.jsxs)(`span`,{className:`flex items-center gap-0.5 text-[9px] text-destructive`,children:[(0,z.jsx)(o,{className:`h-2.5 w-2.5`}),t.retries]}):null,t.worktreeBranch&&(0,z.jsxs)(`span`,{className:`ml-auto flex items-center gap-0.5 text-[9px] text-muted-foreground`,title:t.worktreeBranch,children:[(0,z.jsx)(u,{className:`h-2.5 w-2.5`}),(0,z.jsx)(`span`,{className:`max-w-[70px] truncate`,children:t.worktreeBranch.replace(/^.*\//,``)})]})]})]})}function G({data:e}){return(0,z.jsx)(`div`,{className:`whitespace-nowrap text-[11px] font-bold uppercase text-muted-foreground`,children:e.label})}var K={task:W,colLabel:G};function q(e,t,n){let r=new Map(e.map(e=>[e.shortId,e])),i=[],a=0;t.forEach((e,t)=>{i.push({id:`__col_${t}`,position:{x:t*B,y:-52},data:{label:e.label},draggable:!1,selectable:!1,type:`colLabel`,style:{pointerEvents:`none`}}),e.taskIds.forEach((e,o)=>{let s=r.get(e);s&&i.push({id:s.id,position:{x:t*B,y:o*V},data:{task:s,index:a++,onTaskClick:n},type:`task`,draggable:!0})})});let o=[];for(let t of e)for(let e of t.deps){let n=r.get(e);if(!n)continue;let i=n.displayStatus===`completed`&&(t.displayStatus===`in_progress`||t.displayStatus===`queued`);o.push({id:`${n.id}->${t.id}`,source:n.id,target:t.id,animated:i,className:i?`sdd-edge-flow`:void 0,style:{stroke:A(t.displayStatus).hex,strokeWidth:i?2.2:1.4,opacity:t.displayStatus===`pending`?.4:.85}})}return{nodes:i,edges:o}}function J({tasks:e,columns:t,onTaskClick:n}){let{fitView:r}=w(),{nodes:i,edges:a}=(0,O.useMemo)(()=>q(e,t,n),[e,t,n]),o=e.length;return(0,O.useEffect)(()=>{let e=setTimeout(()=>r({padding:.18,duration:400}),60);return()=>clearTimeout(e)},[o,r]),(0,z.jsxs)(D,{nodes:i,edges:a,nodeTypes:K,fitView:!0,fitViewOptions:{padding:.18},minZoom:.2,maxZoom:1.6,proOptions:{hideAttribution:!0},nodesConnectable:!1,elementsSelectable:!!n,children:[(0,z.jsx)(E,{variant:S.Dots,gap:22,size:1,color:`hsl(var(--border))`}),(0,z.jsx)(T,{showInteractive:!1,className:`!bottom-2 !left-2`}),(0,z.jsx)(C,{pannable:!0,zoomable:!0,nodeStrokeWidth:2,maskColor:`hsl(var(--background) / 0.65)`,nodeColor:e=>{let t=e.data?.task?.displayStatus;return t?A(t).hex:`hsl(var(--muted-foreground))`},className:`!bottom-2 !right-2 !h-24 !w-40 overflow-hidden rounded-md border border-border/70 bg-card`})]})}function Y({tasks:e,columns:t,onTaskClick:n}){return(0,z.jsx)(b,{children:(0,z.jsx)(J,{tasks:e,columns:t,onTaskClick:n})})}export{I as a,M as c,N as i,A as l,P as n,R as o,F as r,L as s,Y as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-D0X23O-i.js";import{Cr as r,Lt as i,St as a,Wr as o,Z as s,br as c,en as ee,fi as l,gr as u,it as d,jt as f,mt as te,yr as p,zr as m}from"./vendor-CyLvG8N0.js";import"./i18n-CkkVJCs9.js";import{t as h}from"./utils-CU_o9ioU.js";import{C as ne,O as g,a as re,i as ie,m as _,o as ae,w as oe}from"./index-BqAVsSCe.js";import{c as se,t as ce}from"./SddFlowGraph-BaWwH9Zc.js";var v=e(t(),1),y=n(),b={idle:`phaseStart`,questioning:`phaseInterview`,spec_review:`phaseSpecReview`,implementation:`phasePlanning`,task_review:`phaseTaskReview`,executing:`phaseRunning`,done:`phaseDone`},x=[`questioning`,`spec_review`,`implementation`,`task_review`,`executing`];function S({onClose:e}){let{t}=l(),{client:n}=ne(),r=g(e=>e.snapshot),d=g(e=>e.agentText),S=g(e=>e.error),T=g(e=>e.startedRunId),E=g(e=>e.setStartedRunId),[D,le]=(0,v.useState)(``),[O,k]=(0,v.useState)(``),[A,j]=(0,v.useState)(!1),[M,ue]=(0,v.useState)(!0),[N,P]=(0,v.useState)(!0),[F,I]=(0,v.useState)(!1),[L,R]=(0,v.useState)(void 0),[z,B]=(0,v.useState)(void 0),[V,H]=(0,v.useState)([]),[U,de]=(0,v.useState)(4),[W,fe]=(0,v.useState)(!0),G=ae(F),K=(0,v.useCallback)(e=>n?.send?.(e),[n]),q=(0,v.useRef)(null);(0,v.useEffect)(()=>{K({type:`sdd.spec.get`})},[K]),(0,v.useEffect)(()=>{q.current?.scrollIntoView({behavior:`smooth`,block:`end`})},[r?.answers.length??0,d]),(0,v.useEffect)(()=>{T&&(oe(`sddboard`),E(null))},[T,E]);let J=r?.busy??!1,Y=r?.phase??`idle`,X=!!r;(0,v.useEffect)(()=>{X&&j(!1)},[X]);let pe=r?.answers[r.answers.length-1]?.question??``,me=!!r&&(r.taskCount>0||!!r.graphId||Y===`task_review`||Y===`executing`),Z=()=>{let e=D.trim();!e||J||A||(j(!0),K({type:`sdd.spec.start`,payload:{goal:e}}))},Q=()=>{let e=O.trim();!e||J||(K({type:`sdd.spec.message`,payload:{text:e}}),k(``))},he=()=>!J&&K({type:`sdd.spec.approve`,payload:{}}),ge=()=>{K({type:`sdd.run.start`,payload:{parallelSlots:U,worktrees:W,...L?{model:L,provider:z}:{},...V.length?{fallbackModels:V}:{}}}),I(!1)},$=(0,v.useMemo)(()=>(r?.board?.tasks??[]).map(e=>({id:e.id,shortId:e.shortId,title:e.title,displayStatus:e.displayStatus,priority:e.priority,deps:e.deps,agentName:e.agentName,worktreeBranch:e.worktreeBranch,retries:e.retries})),[r?.board]),_e=$.length>0;return(0,y.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col bg-background`,children:[(0,y.jsxs)(`header`,{className:`sdd-sheen flex shrink-0 items-center justify-between border-b border-border px-4 py-2`,children:[(0,y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,y.jsx)(m,{className:`h-5 w-5 text-primary`}),(0,y.jsxs)(`div`,{children:[(0,y.jsx)(`h1`,{className:`text-lg font-semibold`,children:r?.title||t(`activity:sddWizard.titleFallback`)}),X&&(0,y.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[t(`activity:sddWizard.${b[Y]??`phaseStart`}`),Y===`questioning`&&` · ${t(`activity:sddWizard.questionsSuffix`,{cur:r?.questionCount??0,max:r?.maxQuestions??0})}`,r&&r.taskCount>0?` · ${t(`activity:sddWizard.tasksSuffix`,{count:r.taskCount})}`:``]})]}),J&&(0,y.jsx)(o,{className:`h-4 w-4 animate-spin text-muted-foreground`})]}),(0,y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[me&&(0,y.jsxs)(`div`,{className:`relative flex items-center gap-1.5`,children:[(0,y.jsxs)(`button`,{type:`button`,onClick:()=>I(e=>!e),title:t(`activity:sddWizard.runCfgTitle`),className:h(`inline-flex items-center gap-1 rounded-md border px-2 py-1 text-xs font-medium`,L||V.length?`border-primary/40 bg-primary/10 text-primary`:`border-border bg-muted text-muted-foreground hover:text-foreground`),children:[(0,y.jsx)(a,{className:`h-3.5 w-3.5`}),L||t(`activity:sddWizard.modelsLabel`)]}),(0,y.jsxs)(`button`,{type:`button`,onClick:ge,className:`inline-flex items-center gap-1 rounded-md bg-success/15 px-2.5 py-1 text-xs font-medium text-success hover:bg-success/25`,children:[(0,y.jsx)(i,{className:`h-3.5 w-3.5`}),` `,t(`activity:sddWizard.startRun`)]}),F&&(0,y.jsxs)(`div`,{className:`sdd-rise absolute right-0 top-9 z-50 w-72 rounded-lg border border-border bg-popover p-3 shadow-xl`,children:[(0,y.jsx)(`div`,{className:`mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:t(`activity:sddWizard.defaultWorkerModel`)}),(0,y.jsx)(re,{value:L,provider:z,candidates:G,placeholder:t(`activity:sddWizard.leaderDefaultPlaceholder`),resetLabel:t(`activity:sddWizard.useSessionDefault`),onPick:(e,t)=>{R(e),B(t)},onReset:L?()=>{R(void 0),B(void 0)}:void 0}),(0,y.jsx)(`div`,{className:`mb-1 mt-3 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:t(`activity:sddWizard.fallbackChain`)}),(0,y.jsx)(ie,{value:V,candidates:G,onChange:H}),(0,y.jsx)(`p`,{className:`mt-2 text-[10px] text-muted-foreground`,children:t(`activity:sddWizard.appliesToAll`)}),(0,y.jsxs)(`div`,{className:`mt-3 flex items-center justify-between gap-2`,children:[(0,y.jsx)(`label`,{htmlFor:`sdd-slots`,className:`text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:t(`activity:sddWizard.parallelAgents`)}),(0,y.jsx)(`input`,{id:`sdd-slots`,type:`number`,min:1,max:16,value:U,onChange:e=>{let t=Number.parseInt(e.target.value,10);de(Number.isFinite(t)?Math.min(16,Math.max(1,t)):1)},className:`w-16 rounded-md border border-border bg-background px-2 py-1 text-right text-xs outline-none focus:border-primary`})]}),(0,y.jsxs)(`label`,{className:`mt-2 flex cursor-pointer items-center justify-between gap-2`,children:[(0,y.jsx)(`span`,{className:`text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:t(`activity:sddWizard.isolateWorktrees`)}),(0,y.jsx)(`input`,{type:`checkbox`,checked:W,onChange:e=>fe(e.target.checked),className:`h-3.5 w-3.5 accent-primary`})]}),(0,y.jsx)(`p`,{className:`mt-1 text-[10px] text-muted-foreground`,children:t(W?`activity:sddWizard.worktreeOn`:`activity:sddWizard.worktreeOff`)})]})]}),(0,y.jsx)(_,{variant:`ghost`,size:`icon`,onClick:e,children:(0,y.jsx)(s,{className:`h-4 w-4`})})]})]}),X&&(0,y.jsx)(`div`,{className:`flex shrink-0 items-center gap-1 border-b bg-card/50 px-4 py-1.5 text-[11px]`,children:x.map((e,n)=>{let r=e===Y,i=x.indexOf(Y)>n;return(0,y.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,y.jsxs)(`span`,{className:h(`rounded-full px-2 py-0.5`,r?`bg-primary/15 text-primary`:i?`text-success`:`text-muted-foreground`),children:[i&&(0,y.jsx)(c,{className:`mr-0.5 inline h-3 w-3`}),t(`activity:sddWizard.${b[e]}`)]}),n<x.length-1&&(0,y.jsx)(`span`,{className:`text-muted-foreground/40`,children:`→`})]},e)})}),(0,y.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-auto p-4`,children:[S&&(0,y.jsx)(`div`,{className:`mb-3 rounded-md border border-destructive/40 bg-destructive/5 p-2 text-xs text-destructive`,children:S}),X?(0,y.jsxs)(`div`,{className:`space-y-4`,children:[_e&&(0,y.jsxs)(`div`,{className:`sdd-rise overflow-hidden rounded-lg border border-primary/20 bg-[hsl(var(--surface-2)/0.85)]`,children:[(0,y.jsxs)(`button`,{type:`button`,onClick:()=>ue(e=>!e),className:`flex w-full items-center gap-1.5 border-b border-border/60 px-3 py-1.5 text-[11px] font-medium text-primary hover:bg-muted/40`,children:[M?(0,y.jsx)(p,{className:`h-3.5 w-3.5`}):(0,y.jsx)(u,{className:`h-3.5 w-3.5`}),(0,y.jsx)(ee,{className:`h-3.5 w-3.5`}),t(`activity:sddWizard.taskGraphSummary`,{count:r?.taskCount??0}),(0,y.jsx)(`span`,{className:`ml-auto text-muted-foreground`,children:t(M?`activity:sddWizard.dragToExplore`:`activity:sddWizard.show`)})]}),M&&(0,y.jsx)(`div`,{className:`h-[32dvh] min-h-[200px]`,children:(0,y.jsx)(ce,{tasks:$,columns:r?.board?.columns??[]})})]}),(0,y.jsxs)(`div`,{className:`mx-auto max-w-2xl space-y-3`,children:[r?.goal&&(0,y.jsxs)(`div`,{className:`rounded-md border border-border bg-muted/30 px-3 py-2`,children:[(0,y.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground`,children:[(0,y.jsx)(te,{className:`h-3 w-3`}),` `,t(`activity:sddWizard.goalLabel`)]}),(0,y.jsx)(`p`,{className:`whitespace-pre-wrap text-sm leading-relaxed text-foreground/90`,children:r.goal})]}),r?.answers.length||d&&Y===`questioning`||J?(0,y.jsxs)(`div`,{className:`space-y-2.5`,children:[r?.answers.map((e,t)=>(0,y.jsxs)(`div`,{className:`space-y-2.5`,children:[(0,y.jsx)(w,{role:`assistant`,text:e.question}),(0,y.jsx)(w,{role:`user`,text:e.answer})]},t)),d&&Y===`questioning`&&d!==pe&&(0,y.jsx)(w,{role:`assistant`,text:d}),J&&(0,y.jsx)(w,{role:`assistant`,text:``,thinking:!0})]}):null,r?.spec&&(0,y.jsxs)(`div`,{className:`sdd-rise rounded-md border border-border bg-card p-3`,children:[(0,y.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-sm font-semibold`,children:[(0,y.jsx)(m,{className:`h-3.5 w-3.5 text-primary`}),r.spec.title]}),(0,y.jsx)(`p`,{className:`mb-2 text-xs text-muted-foreground`,children:r.spec.overview}),(0,y.jsx)(`ul`,{className:`space-y-0.5 text-xs`,children:r.spec.requirements.map((e,t)=>(0,y.jsxs)(`li`,{className:`flex gap-1.5`,children:[(0,y.jsx)(`span`,{className:h(`shrink-0 font-mono uppercase`,se(e.priority).text),children:e.priority[0]}),(0,y.jsx)(`span`,{children:e.description})]},t))})]}),d&&(Y===`implementation`||Y===`task_review`)&&(0,y.jsxs)(`div`,{className:`sdd-rise rounded-md border border-border bg-card`,children:[(0,y.jsxs)(`button`,{type:`button`,onClick:()=>P(e=>!e),className:`flex w-full items-center gap-1.5 border-b border-border/60 px-3 py-2 text-sm font-semibold hover:bg-muted/40`,children:[N?(0,y.jsx)(p,{className:`h-3.5 w-3.5`}):(0,y.jsx)(u,{className:`h-3.5 w-3.5`}),(0,y.jsx)(m,{className:`h-3.5 w-3.5 text-primary`}),` `,t(`activity:sddWizard.implementationPlan`)]}),N&&(0,y.jsx)(`div`,{className:`max-h-[40dvh] overflow-auto px-3 py-2`,children:(0,y.jsx)(`p`,{className:`whitespace-pre-wrap text-sm leading-relaxed text-foreground/90`,children:C(d)})})]}),d&&Y!==`questioning`&&Y!==`implementation`&&Y!==`task_review`&&!r?.spec&&(0,y.jsx)(w,{role:`assistant`,text:d}),(Y===`spec_review`||Y===`implementation`||Y===`task_review`)&&(0,y.jsxs)(_,{variant:`secondary`,onClick:he,disabled:J,children:[(0,y.jsx)(c,{className:`mr-1.5 h-4 w-4`}),t(Y===`spec_review`?`activity:sddWizard.approveSpec`:Y===`task_review`?`activity:sddWizard.approveTasks`:`activity:sddWizard.approvePlan`)]}),(0,y.jsx)(`div`,{ref:q})]})]}):(0,y.jsxs)(`div`,{className:`mx-auto mt-8 max-w-xl`,children:[(0,y.jsx)(`label`,{className:`mb-2 block text-sm font-medium`,htmlFor:`sdd-goal`,children:t(`activity:sddWizard.goalPrompt`)}),(0,y.jsx)(`textarea`,{id:`sdd-goal`,value:D,onChange:e=>le(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&Z()},rows:4,placeholder:t(`activity:sddWizard.goalPlaceholder`),className:`w-full resize-none rounded-md border border-border bg-card px-3 py-2 text-sm outline-none focus:border-primary`}),(0,y.jsx)(_,{className:`mt-3`,onClick:Z,disabled:!D.trim()||A,children:A?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(o,{className:`mr-1.5 h-4 w-4 animate-spin`}),` `,t(`activity:sddWizard.startingInterview`)]}):(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(m,{className:`mr-1.5 h-4 w-4`}),` `,t(`activity:sddWizard.startInterview`)]})}),(0,y.jsx)(`p`,{className:`mt-3 text-xs text-muted-foreground`,children:t(`activity:sddWizard.introBody`)})]})]}),X&&Y!==`executing`&&Y!==`done`&&(0,y.jsxs)(`div`,{className:`flex shrink-0 items-end gap-2 border-t bg-card px-4 py-2`,children:[(0,y.jsx)(`textarea`,{value:O,onChange:e=>k(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),Q())},rows:1,placeholder:t(Y===`questioning`?`activity:sddWizard.answerPlaceholder`:`activity:sddWizard.changePlaceholder`),disabled:J,className:`max-h-32 flex-1 resize-none rounded-md border border-border bg-background px-3 py-2 text-sm outline-none focus:border-primary disabled:opacity-50`}),(0,y.jsx)(_,{size:`icon`,onClick:Q,disabled:J||!O.trim(),children:(0,y.jsx)(f,{className:`h-4 w-4`})})]})]})}function C(e){let t=e.replace(/```json[\s\S]*?```/gi,``).trim();return t.length>0?t:e.trim()}function w({role:e,text:t,live:n,thinking:i}){let a=e===`user`;return(0,y.jsxs)(`div`,{className:h(`sdd-rise flex items-start gap-2`,a&&`flex-row-reverse`),children:[(0,y.jsx)(`span`,{className:h(`mt-0.5 flex h-6 w-6 shrink-0 items-center justify-center rounded-full`,a?`bg-info/15 text-info`:`bg-primary/15 text-primary`,(n||i)&&`sdd-agent-live`),children:a?(0,y.jsx)(d,{className:`h-3.5 w-3.5`}):(0,y.jsx)(r,{className:`h-3.5 w-3.5`})}),(0,y.jsx)(`div`,{className:h(`max-w-[80%] whitespace-pre-wrap rounded-2xl px-3 py-2 text-sm leading-relaxed text-foreground`,a?`rounded-tr-sm bg-info/10`:`rounded-tl-sm bg-muted`),children:i?(0,y.jsxs)(`span`,{className:`flex items-center gap-1 py-0.5`,children:[(0,y.jsx)(`span`,{className:`h-1.5 w-1.5 animate-bounce rounded-full bg-muted-foreground [animation-delay:-200ms]`}),(0,y.jsx)(`span`,{className:`h-1.5 w-1.5 animate-bounce rounded-full bg-muted-foreground [animation-delay:-100ms]`}),(0,y.jsx)(`span`,{className:`h-1.5 w-1.5 animate-bounce rounded-full bg-muted-foreground`})]}):t})]})}export{S as SddWizard};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-D0X23O-i.js";import{$ as r,Fr as i,Hn as a,Vt as o,Wr as s,ai as c,et as l,fi as u,hi as d,ii as f,oi as p,or as m,ur as h}from"./vendor-CyLvG8N0.js";import"./i18n-CkkVJCs9.js";import{t as g}from"./utils-CU_o9ioU.js";var _=e(t(),1),v=n();async function y(e){try{let t=await e.clone().json(),n=typeof t.error==`string`?t.error:t.message;if(typeof n==`string`&&n.trim())return n}catch{try{let t=await e.text();if(t.trim())return t.trim()}catch{}}return e.statusText||`HTTP ${e.status}`}function b(e){switch(e){case`running`:return{icon:(0,v.jsx)(i,{className:`h-3.5 w-3.5`}),cls:`text-success`};case`streaming`:return{icon:(0,v.jsx)(o,{className:`h-3.5 w-3.5`}),cls:`text-primary`};case`waiting_user`:return{icon:(0,v.jsx)(h,{className:`h-3.5 w-3.5`}),cls:`text-warning`};case`error`:return{icon:(0,v.jsx)(p,{className:`h-3.5 w-3.5`}),cls:`text-destructive`};case`idle`:return{icon:(0,v.jsx)(f,{className:`h-3.5 w-3.5`}),cls:`text-muted-foreground`};default:return{icon:(0,v.jsx)(c,{className:`h-3.5 w-3.5`}),cls:`text-muted-foreground`}}}function x(e){switch(e){case`active`:return{icon:(0,v.jsx)(r,{className:`h-3.5 w-3.5`}),cls:`text-success`,badge:`border-success/25 bg-success/8 text-success`};case`idle`:return{icon:(0,v.jsx)(l,{className:`h-3.5 w-3.5`}),cls:`text-primary`,badge:`border-primary/25 bg-primary/10 text-primary`};case`closing`:return{icon:(0,v.jsx)(h,{className:`h-3.5 w-3.5`}),cls:`text-warning`,badge:`border-warning/25 bg-warning/10 text-warning`};default:return{icon:(0,v.jsx)(l,{className:`h-3.5 w-3.5`}),cls:`text-muted-foreground`,badge:`border-border bg-muted text-muted-foreground`}}}function S(e){let t=Date.now()-new Date(e).getTime(),n=Math.floor(t/6e4);if(n<1)return`<1m`;if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d`}function C(e){let t=Date.now()-new Date(e).getTime(),n=Math.floor(t/1e3);if(n<10)return d.t(`common:time.justNow`);if(n<60)return d.t(`common:time.secondsAgo`,{count:n});let r=Math.floor(n/60);return r<60?d.t(`common:time.minutesAgo`,{count:r}):d.t(`common:time.hoursAgo`,{count:Math.floor(r/60)})}function w(){let{t:e}=u(),[t,n]=(0,_.useState)([]),[i,o]=(0,_.useState)(!0),[c,d]=(0,_.useState)(null),f=(0,_.useCallback)(async()=>{try{let e=await fetch(`/api/sessions`);if(!e.ok){if(e.status===404){d(null),n([]);return}throw Error(`HTTP ${e.status}: ${await y(e)}`)}if(!(e.headers.get(`content-type`)?.toLowerCase()??``).includes(`application/json`)){d(null),n([]);return}let t=await e.json();if(!Array.isArray(t)){d(null),n([]);return}n(t),d(null)}catch(e){if(e instanceof SyntaxError){d(null),n([]);return}d(e instanceof Error?e.message:String(e))}finally{o(!1)}},[]);(0,_.useEffect)(()=>{f();let e=setInterval(f,5e3);return()=>clearInterval(e)},[f]);let w=t.filter(e=>e.status===`active`).length,T=t.reduce((e,t)=>e+t.agentCount,0);return i?(0,v.jsx)(`div`,{className:`flex h-full min-h-0 items-center justify-center bg-[hsl(var(--surface-2)/0.45)] p-4`,children:(0,v.jsxs)(`div`,{className:`ws-surface flex items-center gap-2 rounded-xl px-4 py-3 text-sm text-muted-foreground`,children:[(0,v.jsx)(s,{className:`h-4 w-4 animate-spin text-primary`}),e(`activity:liveSessions.loading`)]})}):c?(0,v.jsx)(`div`,{className:`flex h-full min-h-0 items-center justify-center bg-[hsl(var(--surface-2)/0.45)] p-4`,children:(0,v.jsxs)(`div`,{className:`ws-surface max-w-lg rounded-xl p-5 text-center`,children:[(0,v.jsx)(p,{className:`mx-auto h-8 w-8 text-warning`}),(0,v.jsx)(`p`,{className:`mt-3 text-sm font-medium`,children:e(`activity:liveSessions.apiUnavailable`)}),(0,v.jsx)(`p`,{className:`mt-1 break-words text-xs text-muted-foreground`,children:c})]})}):t.length===0?(0,v.jsx)(`div`,{className:`flex h-full min-h-0 items-center justify-center bg-[hsl(var(--surface-2)/0.45)] p-4`,children:(0,v.jsxs)(`div`,{className:`ws-surface max-w-md rounded-xl p-6 text-center text-muted-foreground`,children:[(0,v.jsx)(l,{className:`mx-auto h-9 w-9 opacity-50`}),(0,v.jsx)(`p`,{className:`mt-3 text-sm font-medium text-foreground`,children:e(`activity:liveSessions.empty`)}),(0,v.jsx)(`p`,{className:`mt-1 text-xs`,children:e(`activity:liveSessions.autoRefresh`)})]})}):(0,v.jsx)(`div`,{className:`h-full min-h-0 overflow-y-auto bg-[hsl(var(--surface-2)/0.45)] p-4 sm:p-6`,children:(0,v.jsxs)(`div`,{className:`mx-auto flex w-full max-w-6xl flex-col gap-4`,children:[(0,v.jsx)(`header`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:(0,v.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,children:[(0,v.jsxs)(`div`,{className:`min-w-0`,children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,v.jsx)(r,{className:`h-4 w-4 text-primary`}),(0,v.jsx)(`h2`,{className:`text-base font-semibold`,children:e(`activity:liveSessions.heading`,{count:t.length})})]}),(0,v.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:e(`activity:liveSessions.autoRefresh`)})]}),(0,v.jsxs)(`div`,{className:`grid grid-cols-3 gap-2 text-center sm:min-w-[22rem]`,children:[(0,v.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/60 px-3 py-2`,children:[(0,v.jsx)(`div`,{className:`text-lg font-semibold tabular-nums`,children:t.length}),(0,v.jsx)(`div`,{className:`text-[10px] uppercase text-muted-foreground`,children:`Sessions`})]}),(0,v.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/60 px-3 py-2`,children:[(0,v.jsx)(`div`,{className:`text-lg font-semibold tabular-nums text-success`,children:w}),(0,v.jsx)(`div`,{className:`text-[10px] uppercase text-muted-foreground`,children:`Active`})]}),(0,v.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/60 px-3 py-2`,children:[(0,v.jsx)(`div`,{className:`text-lg font-semibold tabular-nums`,children:T}),(0,v.jsx)(`div`,{className:`text-[10px] uppercase text-muted-foreground`,children:`Agents`})]})]})]})}),(0,v.jsx)(`div`,{className:`grid gap-3`,children:t.map(t=>{let n=x(t.status);return(0,v.jsxs)(`article`,{className:`rounded-xl border border-border/70 bg-card/75 p-3 shadow-sm sm:p-4`,children:[(0,v.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-3 lg:flex-row lg:items-start lg:justify-between`,children:[(0,v.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,v.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,v.jsx)(`span`,{className:n.cls,children:n.icon}),(0,v.jsx)(`h3`,{className:`min-w-0 truncate text-sm font-semibold`,title:t.projectName,children:t.projectName}),(0,v.jsx)(`span`,{className:`rounded bg-muted px-1.5 py-0.5 font-mono text-[10px] text-muted-foreground`,children:t.projectSlug}),(0,v.jsx)(`span`,{className:`inline-flex items-center rounded-md border px-1.5 py-0.5 text-[10px] font-semibold uppercase ${n.badge}`,children:t.status})]}),(0,v.jsxs)(`div`,{className:`mt-2 grid gap-1.5 text-xs text-muted-foreground md:grid-cols-[minmax(0,1fr)_auto]`,children:[(0,v.jsxs)(`div`,{className:`flex min-w-0 items-center gap-1.5`,children:[(0,v.jsx)(m,{className:`h-3.5 w-3.5 shrink-0`}),(0,v.jsx)(`span`,{className:`min-w-0 truncate font-mono`,title:t.workingDir,children:t.workingDir})]}),(0,v.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[t.gitBranch?(0,v.jsxs)(`span`,{className:`inline-flex min-w-0 max-w-full items-center gap-1 text-primary`,children:[(0,v.jsx)(a,{className:`h-3.5 w-3.5 shrink-0`}),(0,v.jsx)(`span`,{className:`truncate font-mono`,children:t.gitBranch})]}):null,(0,v.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,v.jsx)(h,{className:`h-3.5 w-3.5`}),S(t.startedAt)]}),(0,v.jsx)(`span`,{className:`font-mono`,children:e(`activity:liveSessions.pidLabel`,{pid:t.pid})})]})]})]}),(0,v.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 text-xs sm:grid-cols-3 lg:w-64`,children:[(0,v.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-2 py-1.5`,children:[(0,v.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:`Agents`}),(0,v.jsx)(`div`,{className:`font-semibold tabular-nums`,children:t.agentCount})]}),(0,v.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-2 py-1.5`,children:[(0,v.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:`Status`}),(0,v.jsx)(`div`,{className:`truncate font-mono font-semibold`,children:t.status})]}),(0,v.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-2 py-1.5`,children:[(0,v.jsx)(`div`,{className:`text-[10px] text-muted-foreground`,children:`Runtime`}),(0,v.jsx)(`div`,{className:`font-mono font-semibold`,children:S(t.startedAt)})]})]})]}),(0,v.jsxs)(`div`,{className:`mt-3 overflow-hidden rounded-lg border border-border/70 bg-background/45`,children:[t.agents.length===0?(0,v.jsx)(`div`,{className:`px-3 py-3 text-xs text-muted-foreground`,children:e(`activity:liveSessions.noAgents`)}):(0,v.jsx)(`div`,{className:`divide-y divide-border/60`,children:t.agents.slice(0,5).map(t=>{let n=b(t.status);return(0,v.jsxs)(`div`,{className:`grid min-w-0 grid-cols-[auto_minmax(0,1fr)] gap-x-2 gap-y-1 px-3 py-2 text-xs sm:grid-cols-[auto_minmax(0,1fr)_minmax(0,14rem)_auto]`,children:[(0,v.jsx)(`span`,{className:g(`mt-0.5 shrink-0`,n.cls),children:n.icon}),(0,v.jsxs)(`div`,{className:`min-w-0`,children:[(0,v.jsx)(`div`,{className:`truncate font-medium`,title:t.name,children:t.name}),(0,v.jsx)(`div`,{className:`font-mono text-[10px] text-muted-foreground`,children:e(`activity:liveSessions.agentMeta`,{iter:t.iterations,tools:t.toolCalls,ago:C(t.lastActivityAt)})})]}),(0,v.jsx)(`div`,{className:`min-w-0 font-mono text-[10px] text-muted-foreground sm:text-xs`,children:t.currentTool?(0,v.jsx)(`span`,{className:`block truncate`,title:t.currentTool,children:t.currentTool}):(0,v.jsx)(`span`,{className:`text-muted-foreground/60`,children:t.status})}),(0,v.jsx)(`span`,{className:`hidden font-mono text-[10px] text-muted-foreground sm:block`,children:C(t.lastActivityAt)})]},t.id)})}),t.agents.length>5?(0,v.jsx)(`div`,{className:`border-t border-border/60 px-3 py-2 text-xs text-muted-foreground`,children:e(`activity:liveSessions.andMore`,{count:t.agents.length-5})}):null]})]},t.sessionId)})})]})})}export{w as SessionsDashboard};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{c as t,m as n,o as r,p as i}from"./markdown-D0X23O-i.js";import{Bn as ee,Bt as te,Kn as ne,Or as a,Wr as o,Yt as re,Z as ie,Zt as ae,br as oe,cr as se,dt as s,fi as c,gr as l,hi as u,jn as ce,t as le,tr as ue,vr as de,wr as fe,zr as pe}from"./vendor-CyLvG8N0.js";import"./i18n-CkkVJCs9.js";import{n as me}from"./ui-store-FTgDlcX2.js";import{t as d}from"./utils-CU_o9ioU.js";import{C as he,T as ge,d as f}from"./index-BqAVsSCe.js";var p=e(n(),1),m=i();function h(e){return e===`project`||e===`user`}function g(e){let t=e.match(/^(.+?)\/SKILL(?:\.save)?\.md$/);return t?t[1]:null}function _e({source:e}){let{t}=c(),n=e===`project`?`project`:e===`user`?`user`:`bundled`;return(0,m.jsx)(`span`,{className:d(`inline-flex items-center rounded-md border px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide`,n===`project`&&`border-success/25 bg-success/8 text-success`,n===`user`&&`border-primary/25 bg-primary/10 text-primary`,n===`bundled`&&`border-border/70 bg-muted/60 text-muted-foreground`),children:t(`activity:skillDetail.${{project:`scopeProject`,user:`scopeGlobal`,bundled:`scopeBundled`}[n]}`)})}function _({className:e}){let{t:n}=c(),{client:i}=he(),_=me(e=>e.skillsState),v=me(e=>e.setSkillsState),y=_.selectedSkill,b=_.navHistory,x=_.historyIndex,[S,C]=(0,p.useState)(null),[ve,w]=(0,p.useState)(!1),[T,E]=(0,p.useState)(null),[D,O]=(0,p.useState)(!1),[k,A]=(0,p.useState)(``),[j,M]=(0,p.useState)(!1),[N,P]=(0,p.useState)(null),[F,I]=(0,p.useState)(!1),[L,R]=(0,p.useState)(null),[z,B]=(0,p.useState)(!1),V=(0,p.useRef)(``),[H,ye]=(0,p.useState)(!1),[U,W]=(0,p.useState)(null),[be,xe]=(0,p.useState)(!1),[G,K]=(0,p.useState)(null),[q,Se]=(0,p.useState)(!1);(0,p.useEffect)(()=>{if(!G)return;let e=e=>{e.key===`Escape`&&K(null)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[G]);let[Ce,we]=(0,p.useState)([]),J=(0,p.useRef)(_);J.current=_;let Y=(0,p.useRef)(!1),X=(0,p.useMemo)(()=>k?{lines:k.split(`
|
|
2
|
-
`).length,words:k.trim()?k.trim().split(/\s+/).length:0,chars:k.length}:{lines:0,words:0,chars:0},[k]),Z=(0,p.useMemo)(()=>{if(!k)return null;let e=5*1024*1024,t=new Blob([k]).size;return t>=e?{level:`critical`,used:t,limit:e}:t>=4194304?{level:`warn`,used:t,limit:e}:null},[k]);(0,p.useEffect)(()=>{if(!L)return;let e=setTimeout(()=>R(null),2e3);return()=>clearTimeout(e)},[L]),(0,p.useEffect)(()=>{if(!D||!y)return;let e=setInterval(()=>{k&&k!==V.current&&(V.current=k,localStorage.setItem(`skills_draft_${y.name}`,JSON.stringify({content:k,savedAt:Date.now()})),R(Date.now()))},5e3);return()=>clearInterval(e)},[D,k,y]),(0,p.useEffect)(()=>{if(!y||!D)return;let e=localStorage.getItem(`skills_draft_${y.name}`);if(e)try{let{content:t}=JSON.parse(e);t&&t!==k&&t!==V.current&&(A(t),V.current=t,B(!0))}catch{}},[y?.name,D]),(0,p.useEffect)(()=>{if(!i||!y)return;w(!0),C(null),E(null);let e=setTimeout(()=>{w(!1),E(u.t(`activity:skillDetail.timeoutError`))},1e4),t=t=>{clearTimeout(e);let n=t;n.payload.error?E(n.payload.error):n.payload.name&&C(n.payload),w(!1)},n=e=>{let t=e;ye(!1);let n=J.current;if(t.payload.success){let e={...n.knownRefs};for(let n of t.payload.updated??[])e[n.name]=n.newRef;v({...n,knownRefs:e,updateAvailableCount:0}),W({updated:t.payload.updated??[],unchanged:t.payload.unchanged??[],errors:t.payload.errors??[]}),i.send({type:`skills.list`})}else W({updated:[],unchanged:[],errors:[{name:``,error:t.payload.error??u.t(`activity:skillDetail.updateFailed`)}]})},r=e=>{let t=e;t.payload.skills&&we(t.payload.skills)};return i.on(`skills.content`,t),i.on(`skills.updated`,n),i.on(`skills.list`,r),i.send({type:`skills.content`,payload:{name:y.name,source:y.source}}),()=>{clearTimeout(e),i.off(`skills.content`,t),i.off(`skills.updated`,n),i.off(`skills.list`,r)}},[i,y?.name,y?.source]),(0,p.useEffect)(()=>{D&&(O(!1),A(``),P(null))},[y?.name]);let Q=(0,p.useCallback)(e=>Ce.find(t=>t.name.toLowerCase()===e.toLowerCase()),[Ce]),Te=(0,p.useCallback)(e=>{let t=Q(e);if(t){Y.current=!1;let e=b.slice(0,x+1);e.push(t),v({...J.current,selectedSkill:t,navHistory:e,historyIndex:e.length-1}),O(!1),A(``),W(null)}},[Q,b,x,v]),Ee=(0,p.useCallback)(()=>{if(x<=0)return;Y.current=!0;let e=x-1,t=b[e];v({...J.current,selectedSkill:t,historyIndex:e}),O(!1),A(``),W(null)},[x,b,v]),De=(0,p.useCallback)(()=>{if(x>=b.length-1)return;Y.current=!0;let e=x+1,t=b[e];v({...J.current,selectedSkill:t,historyIndex:e}),O(!1),A(``),W(null)},[x,b,v]),$=(0,p.useCallback)(()=>{ge(`chat`)},[]),Oe=(0,p.useCallback)(()=>{S&&(A(S.body),V.current=S.body,B(!1),P(null),O(!0),I(!1))},[S]),ke=(0,p.useCallback)(()=>{O(!1),A(``),P(null),I(!1),B(!1),y&&localStorage.removeItem(`skills_draft_${y.name}`)},[y]),Ae=(0,p.useCallback)(()=>{!y||!S||(B(!1),A(S.body),V.current=S.body,y&&localStorage.removeItem(`skills_draft_${y.name}`))},[y,S]),je=(0,p.useCallback)(()=>{if(!i||!y||!k.trim())return;M(!0),P(null);let e=t=>{let n=t;M(!1),n.payload.success?(V.current=``,localStorage.removeItem(`skills_draft_${y.name}`),B(!1),O(!1),i.send({type:`skills.content`,payload:{name:y.name,source:y.source}}),i.send({type:`skills.list`})):P(n.payload.error??u.t(`activity:skillDetail.saveFailed`)),i.off(`skills.edited`,e)};i.on(`skills.edited`,e),i.editSkill(y.name,k)},[i,y,k]),Me=(0,p.useCallback)(()=>{!i||!y||(ye(!0),W(null),i.checkForUpdates(y.name,y.source===`user`))},[i,y]),Ne=(0,p.useCallback)(()=>{y?.sourceUrl&&navigator.clipboard.writeText(y.sourceUrl).then(()=>{xe(!0),setTimeout(()=>xe(!1),2e3)})},[y]),Pe=(0,p.useCallback)(()=>{if(!S?.body)return;let e=new Blob([S.body],{type:`text/markdown`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`${S.name.replace(/\//g,`_`)}-SKILL.md`,document.body.appendChild(n),n.click(),document.body.removeChild(n),URL.revokeObjectURL(t)},[S]),Fe=(0,p.useCallback)(async e=>{if(!i||!e)return;Se(!0);let t=e=>{let n=e;Se(!1),n.payload.success?(K(null),i.send({type:`skills.list`}),$()):P(n.payload.error??u.t(`activity:skillDetail.uninstallFailed`)),i.off(`skills.uninstalled`,t)};i.on(`skills.uninstalled`,t),i.uninstallSkill(e.name,e.source===`user`)},[i,$]);return y?(0,m.jsxs)(`div`,{className:d(`flex h-full min-h-0 min-w-0 flex-col gap-3 overflow-hidden bg-[hsl(var(--surface-2)/0.45)] p-3`,e),children:[(0,m.jsxs)(`div`,{className:`shrink-0 rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,m.jsxs)(`div`,{className:`flex flex-col gap-3 lg:flex-row lg:items-start lg:justify-between`,children:[(0,m.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,m.jsx)(`span`,{className:`flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary`,children:(0,m.jsx)(pe,{className:`h-4 w-4`})}),(0,m.jsx)(`h1`,{className:`min-w-0 truncate text-base font-semibold`,children:y.name}),y.version&&(0,m.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`v`,y.version]}),(0,m.jsx)(_e,{source:y.source})]}),(0,m.jsx)(`p`,{className:`text-sm text-muted-foreground mt-1 line-clamp-2`,children:y.description||y.trigger}),y.sourceUrl&&(0,m.jsxs)(`div`,{className:`mt-2 flex min-w-0 items-center gap-1`,children:[(0,m.jsxs)(`a`,{href:`https://${y.sourceUrl.replace(`github:`,``)}`,target:`_blank`,rel:`noopener noreferrer`,className:`flex min-w-0 items-center gap-1 text-xs text-muted-foreground transition-colors hover:text-foreground`,title:n(`activity:skillDetail.openSourceRepo`),children:[(0,m.jsx)(ce,{className:`h-3 w-3 shrink-0`}),(0,m.jsx)(`span`,{className:`truncate font-mono`,children:y.sourceUrl})]}),(0,m.jsx)(`button`,{type:`button`,onClick:Ne,className:`flex shrink-0 items-center text-muted-foreground transition-colors hover:text-foreground`,title:n(`activity:skillDetail.copySourceUrl`),children:be?(0,m.jsx)(oe,{className:`h-3 w-3 text-success`}):(0,m.jsx)(se,{className:`h-3 w-3`})})]}),y.scope.length>0&&(0,m.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-2`,children:y.scope.map(e=>(0,m.jsx)(`span`,{className:`px-1.5 py-0.5 text-[10px] rounded bg-muted text-muted-foreground`,children:e},e))}),U&&(0,m.jsxs)(`div`,{className:`mt-2 text-xs space-y-1`,children:[U.updated.length>0&&(0,m.jsx)(`div`,{className:`text-success`,children:n(`activity:skillDetail.updatedLabel`,{list:U.updated.map(e=>`${e.name} (${e.oldRef} → ${e.newRef})`).join(`, `)})}),U.unchanged.length>0&&(0,m.jsx)(`div`,{className:`text-muted-foreground`,children:n(`activity:skillDetail.upToDateLabel`,{list:U.unchanged.join(`, `)})}),U.errors.length>0&&(0,m.jsx)(`div`,{className:`text-destructive`,children:n(`activity:skillDetail.errorsLabel`,{list:U.errors.map(e=>`${e.name?`${e.name}: `:``}${e.error}`).join(`; `)})})]})]}),(0,m.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1 lg:ml-auto lg:shrink-0 lg:justify-end`,children:[h(y.source)&&y.sourceUrl&&(0,m.jsx)(`button`,{type:`button`,onClick:Me,disabled:H,className:`flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:opacity-50`,title:n(`activity:skillDetail.checkUpdatesTitle`),children:H?(0,m.jsx)(o,{className:`h-3.5 w-3.5 animate-spin`}):(0,m.jsx)(te,{className:`h-3.5 w-3.5`})}),y.source!==`bundled`&&!D&&(0,m.jsx)(`button`,{type:`button`,onClick:Pe,className:`flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`,title:n(`activity:skillDetail.exportTitle`),children:(0,m.jsx)(ue,{className:`h-3.5 w-3.5`})}),h(y.source)&&!D&&(0,m.jsx)(`button`,{type:`button`,onClick:Oe,className:`flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`,title:n(`activity:skillDetail.editTitle`),children:(0,m.jsx)(re,{className:`h-3.5 w-3.5`})}),h(y.source)&&(0,m.jsx)(`button`,{type:`button`,onClick:()=>K(y),className:`flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-destructive/10 hover:text-destructive`,title:n(`activity:skillDetail.uninstallTitle`),children:(0,m.jsx)(s,{className:`h-3.5 w-3.5`})}),(0,m.jsx)(`button`,{type:`button`,onClick:$,className:`flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-foreground`,title:n(`activity:skillDetail.closeTitle`),children:(0,m.jsx)(ie,{className:`h-4 w-4`})})]})]}),b.length>1&&(0,m.jsxs)(`div`,{className:`mt-3 flex min-w-0 items-center gap-1 rounded-lg border border-border/60 bg-muted/35 px-2 py-1`,children:[(0,m.jsx)(`button`,{type:`button`,onClick:Ee,disabled:x<=0,className:d(`rounded p-1 transition-colors`,x<=0?`text-muted-foreground/40 cursor-not-allowed`:`hover:bg-accent text-muted-foreground cursor-pointer`),title:n(`activity:skillDetail.backTitle`),children:(0,m.jsx)(de,{className:`h-4 w-4`})}),(0,m.jsx)(`button`,{type:`button`,onClick:De,disabled:x>=b.length-1,className:d(`rounded p-1 transition-colors`,x>=b.length-1?`text-muted-foreground/40 cursor-not-allowed`:`hover:bg-accent text-muted-foreground cursor-pointer`),title:n(`activity:skillDetail.forwardTitle`),children:(0,m.jsx)(l,{className:`h-4 w-4`})}),(0,m.jsx)(`div`,{className:`flex items-center gap-0.5 overflow-x-auto text-xs`,children:b.map((e,t)=>(0,m.jsxs)(`span`,{className:`flex items-center shrink-0`,children:[t>0&&(0,m.jsx)(l,{className:`h-3 w-3 text-muted-foreground/40 mx-0.5 shrink-0`}),(0,m.jsx)(`button`,{type:`button`,onClick:()=>{t<x&&(Y.current=!0,v({...J.current,selectedSkill:e,historyIndex:t}),O(!1),A(``),W(null))},className:d(`hover:text-primary cursor-pointer transition-colors`,t===x?`text-primary font-medium`:`text-muted-foreground`),children:e.name})]},e.name+t))})]})]}),S&&(S.relatedFiles.length>0||S.references.length>0)&&(0,m.jsxs)(`div`,{className:`shrink-0 space-y-2 rounded-xl border border-border/70 bg-card/70 px-4 py-3 shadow-sm`,children:[S.relatedFiles.length>0&&(0,m.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-1 text-[10px] text-muted-foreground`,children:[(0,m.jsx)(ee,{className:`h-3 w-3`}),(0,m.jsx)(`span`,{className:`font-medium uppercase tracking-wide`,children:n(`activity:skillDetail.relatedFiles`)})]}),S.relatedFiles.map(e=>{let t=g(e);return t&&Q(t)?(0,m.jsxs)(`button`,{type:`button`,onClick:()=>Te(t),className:`inline-flex min-w-0 items-center gap-1 rounded-md border border-border/70 bg-background/60 px-1.5 py-0.5 text-[10px] transition-colors hover:border-primary/40 hover:text-primary`,title:n(`activity:skillDetail.goToSkillTitle`,{name:t}),children:[(0,m.jsx)(a,{className:`h-2.5 w-2.5`}),e]},e):(0,m.jsx)(`span`,{className:`rounded-md border border-border/70 bg-background/60 px-1.5 py-0.5 text-[10px] text-muted-foreground`,children:e},e)})]}),S.references.length>0&&(0,m.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-1 text-[10px] text-muted-foreground`,children:[(0,m.jsx)(ne,{className:`h-3 w-3`}),(0,m.jsx)(`span`,{className:`font-medium uppercase tracking-wide`,children:n(`activity:skillDetail.references`)})]}),S.references.map(e=>{let t=g(e)??e.replace(/\.md$/,``);return Q(t)?(0,m.jsxs)(`button`,{type:`button`,onClick:()=>Te(t),className:`inline-flex min-w-0 items-center gap-1 rounded-md border border-primary/20 bg-primary/5 px-1.5 py-0.5 text-[10px] text-primary transition-colors hover:border-primary/30 hover:bg-primary/10`,title:n(`activity:skillDetail.goToSkillTitle`,{name:t}),children:[(0,m.jsx)(a,{className:`h-2.5 w-2.5`}),t]},e):(0,m.jsx)(`span`,{className:`rounded-md bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground`,children:t},e)})]})]}),(0,m.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-hidden rounded-xl border border-border/70 bg-card/70 shadow-sm`,children:ve?(0,m.jsxs)(`div`,{className:`flex h-full min-h-[16rem] flex-col items-center justify-center p-8 text-center text-muted-foreground`,children:[(0,m.jsx)(o,{className:`mx-auto mb-2 h-6 w-6 animate-spin text-primary`}),(0,m.jsx)(`p`,{children:n(`activity:skillDetail.loadingContent`)})]}):D?(0,m.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col`,children:[(0,m.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-2 border-b border-border/70 bg-muted/30 px-4 py-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1`,children:[(0,m.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:n(`activity:skillDetail.editingLabel`,{name:y.name})}),(0,m.jsx)(`span`,{className:`text-xs text-muted-foreground tabular-nums`,children:n(`activity:skillDetail.editStats`,{lines:X.lines,words:X.words,chars:X.chars})}),Z&&(0,m.jsx)(`span`,{className:`text-xs tabular-nums ${Z.level===`critical`?`font-medium text-destructive`:`text-warning`}`,children:n(`activity:skillDetail.charsWarningFmt`,{used:(Z.used/(1024*1024)).toFixed(1),limit:(Z.limit/(1024*1024)).toFixed(0)})}),L&&(0,m.jsx)(`span`,{className:`text-xs text-success animate-pulse`,children:n(`activity:skillDetail.draftSaved`)}),z&&(0,m.jsx)(`span`,{className:`animate-pulse text-xs text-warning`,children:n(`activity:skillDetail.draftRestored`)})]}),(0,m.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[N&&(0,m.jsx)(`span`,{className:`text-xs text-destructive`,children:N}),z&&(0,m.jsx)(`button`,{type:`button`,onClick:Ae,className:`rounded-md border border-warning/35 px-2 py-1 text-[10px] text-warning transition-colors hover:bg-warning/10`,children:n(`activity:skillDetail.discardDraft`)}),(0,m.jsx)(`button`,{type:`button`,onClick:ke,className:`rounded-md border border-border/70 px-2 py-1 text-xs transition-colors hover:bg-accent`,children:n(`common:action.cancel`)}),(0,m.jsx)(`button`,{type:`button`,onClick:()=>I(e=>!e),title:n(F?`activity:skillDetail.hidePreviewTitle`:`activity:skillDetail.splitViewTitle`),className:`rounded-md border px-2 py-1 text-xs transition-colors ${F?`border-primary/40 bg-primary/10 text-primary`:`border-border/70 text-muted-foreground hover:bg-accent`}`,children:(0,m.jsx)(ae,{className:`h-3 w-3 inline`})}),(0,m.jsx)(`button`,{type:`button`,onClick:je,disabled:j||!k.trim(),className:`rounded-md bg-primary px-3 py-1 text-xs text-primary-foreground shadow-sm shadow-primary/15 transition-colors hover:bg-primary/90 disabled:opacity-50`,children:j?(0,m.jsx)(o,{className:`h-3 w-3 animate-spin inline`}):n(`common:action.save`)})]})]}),F?(0,m.jsxs)(`div`,{className:`flex flex-1 min-h-0 gap-0.5`,children:[(0,m.jsx)(`div`,{className:`flex-1 min-w-0 flex flex-col min-h-0`,children:(0,m.jsx)(le,{value:k,onChange:e=>A(e.target.value??``),language:`markdown`,className:`flex-1`,style:{fontSize:12,backgroundColor:`transparent`,minHeight:0},placeholder:n(`activity:skillDetail.contentPlaceholder`)})}),(0,m.jsx)(`div`,{className:`w-px bg-border flex-shrink-0`}),(0,m.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto bg-background/45 p-4 prose prose-sm dark:prose-invert max-w-none`,children:(0,m.jsx)(t,{rehypePlugins:[r],components:f,children:k})})]}):(0,m.jsx)(le,{value:k,onChange:e=>A(e.target.value??``),language:`markdown`,className:`flex-1`,style:{fontSize:12,backgroundColor:`transparent`,minHeight:0},placeholder:n(`activity:skillDetail.contentPlaceholder`)})]}):S?(0,m.jsx)(`div`,{className:`h-full min-h-0 overflow-y-auto p-5 sm:p-6 prose prose-sm dark:prose-invert max-w-none`,children:(0,m.jsx)(t,{rehypePlugins:[r],components:f,children:S.body})}):T?(0,m.jsxs)(`div`,{className:`flex h-full min-h-[16rem] flex-col items-center justify-center p-8 text-center`,children:[(0,m.jsx)(`p`,{className:`text-destructive mb-2`,children:n(`activity:skillDetail.loadFailed`)}),(0,m.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:T}),(0,m.jsx)(`button`,{type:`button`,onClick:()=>{i&&y&&(w(!0),E(null),i.send({type:`skills.content`,payload:{name:y.name,source:y.source}}))},className:`mt-4 rounded-md border border-border/70 px-3 py-1.5 text-xs transition-colors hover:bg-accent`,children:n(`common:action.retry`)})]}):(0,m.jsx)(`div`,{className:`flex h-full min-h-[16rem] items-center justify-center p-8 text-center text-muted-foreground`,children:n(`activity:skillDetail.noContent`)})}),G&&(0,m.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/45 p-4 backdrop-blur-sm`,onClick:e=>{e.target===e.currentTarget&&K(null)},children:(0,m.jsxs)(`div`,{role:`dialog`,"aria-modal":`true`,"aria-label":n(`activity:skillDetail.uninstallSkillHeading`),className:`flex max-h-[calc(100dvh-2rem)] w-[380px] max-w-[90vw] flex-col overflow-hidden rounded-xl border border-border/70 bg-card shadow-2xl`,children:[(0,m.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between border-b border-border/70 p-4`,children:[(0,m.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,m.jsx)(s,{className:`h-4 w-4 text-destructive`}),(0,m.jsx)(`span`,{className:`font-semibold text-sm`,children:n(`activity:skillDetail.uninstallSkillHeading`)})]}),(0,m.jsx)(`button`,{type:`button`,onClick:()=>K(null),"aria-label":n(`common:action.close`),className:`rounded p-1 text-muted-foreground hover:bg-accent hover:text-accent-foreground`,children:(0,m.jsx)(ie,{className:`h-4 w-4`})})]}),(0,m.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-2 overflow-y-auto p-4`,children:[(0,m.jsx)(`p`,{className:`text-sm`,children:n(`activity:skillDetail.uninstallConfirm`,{name:G.name})}),(0,m.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n(`activity:skillDetail.uninstallRemovePath`,{path:G.source===`user`?`~/.wrongstack/skills`:`.wrongstack/skills`})})]}),(0,m.jsxs)(`div`,{className:`flex shrink-0 justify-end gap-2 border-t border-border/70 bg-muted/20 p-4`,children:[(0,m.jsx)(`button`,{type:`button`,onClick:()=>K(null),disabled:q,className:`rounded-md border border-border/70 px-3 py-1.5 text-xs transition-colors hover:bg-accent disabled:opacity-50`,children:n(`common:action.cancel`)}),(0,m.jsxs)(`button`,{type:`button`,onClick:()=>Fe(G),disabled:q,className:`flex items-center gap-1.5 rounded-md bg-destructive px-3 py-1.5 text-xs text-destructive-foreground transition-colors hover:bg-destructive/90 disabled:cursor-not-allowed disabled:opacity-50`,children:[q&&(0,m.jsx)(o,{className:`h-3 w-3 animate-spin`}),n(`activity:skillDetail.uninstallAction`)]})]})]})})]}):(0,m.jsx)(`div`,{className:d(`flex h-full min-h-0 flex-1 items-center justify-center bg-[hsl(var(--surface-2)/0.45)] p-4 text-muted-foreground`,e),children:(0,m.jsxs)(`div`,{className:`ws-surface flex max-w-md flex-col items-center gap-3 rounded-xl p-6 text-center`,children:[(0,m.jsx)(`span`,{className:`flex h-12 w-12 items-center justify-center rounded-xl bg-primary/10 text-primary`,children:(0,m.jsx)(fe,{className:`h-6 w-6`})}),(0,m.jsxs)(`div`,{children:[(0,m.jsx)(`p`,{className:`text-base font-medium text-foreground`,children:n(`activity:skillDetail.noSkillSelected`)}),(0,m.jsx)(`p`,{className:`mt-1 text-sm`,children:n(`activity:skillDetail.selectSkillHint`)})]}),(0,m.jsx)(`button`,{type:`button`,onClick:$,className:`mt-1 rounded-md border border-border/70 bg-card/70 px-4 py-2 text-sm text-foreground shadow-sm transition-colors hover:bg-accent`,children:n(`activity:skillDetail.goToChat`)})]})})}export{_ as SkillDetailView};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-D0X23O-i.js";import{Er as r,It as i,Kn as a,Kt as o,Wr as s,Z as c,ai as l,en as u,fi as d,fr as f,gr as p,hn as m,ni as h,ur as g,xn as _,yr as v}from"./vendor-CyLvG8N0.js";import"./i18n-CkkVJCs9.js";import{t as y}from"./utils-CU_o9ioU.js";import{C as b,D as x,m as S,w as C}from"./index-BqAVsSCe.js";var w=e(t(),1),T=n(),E={completed:{icon:(0,T.jsx)(l,{className:`h-3.5 w-3.5`}),label:`Completed`,text:`text-success`,ring:`border-success/35`},in_progress:{icon:(0,T.jsx)(s,{className:`h-3.5 w-3.5 animate-spin`}),label:`Running`,text:`text-primary`,ring:`border-primary/45`},queued:{icon:(0,T.jsx)(g,{className:`h-3.5 w-3.5`}),label:`Queued`,text:`text-warning`,ring:`border-warning/35`},blocked:{icon:(0,T.jsx)(m,{className:`h-3.5 w-3.5`}),label:`Blocked`,text:`text-destructive`,ring:`border-destructive/30`},pending:{icon:(0,T.jsx)(f,{className:`h-3.5 w-3.5`}),label:`Pending`,text:`text-muted-foreground`,ring:`border-border/70`},review:{icon:(0,T.jsx)(i,{className:`h-3.5 w-3.5`}),label:`Review`,text:`text-primary`,ring:`border-primary/35`},failed:{icon:(0,T.jsx)(h,{className:`h-3.5 w-3.5`}),label:`Failed`,text:`text-destructive`,ring:`border-destructive/45`},cancelled:{icon:(0,T.jsx)(r,{className:`h-3.5 w-3.5`}),label:`Cancelled`,text:`text-muted-foreground`,ring:`border-border/70`}},D=[`completed`,`in_progress`,`queued`,`blocked`,`pending`,`failed`],O={critical:{label:`Crit`,cls:`bg-destructive/10 text-destructive`},high:{label:`High`,cls:`bg-destructive/10 text-destructive`},medium:{label:`Med`,cls:`bg-warning/12 text-warning`},low:{label:`Low`,cls:`bg-success/12 text-success`}};function k({columns:e,onTaskClick:t}){let{t:n}=d();return e.length===0?(0,T.jsx)(`div`,{className:`flex h-40 items-center justify-center text-sm text-muted-foreground`,children:n(`activity:board.emptySpec`)}):(0,T.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,T.jsx)(`h3`,{className:`mb-3 text-sm font-semibold text-foreground`,children:n(`activity:board.depGraphHeading`)}),(0,T.jsx)(`div`,{className:`mb-4 flex flex-wrap items-center gap-x-4 gap-y-1 text-xs`,children:D.map(e=>(0,T.jsxs)(`span`,{className:y(`inline-flex items-center gap-1.5`,E[e].text),children:[E[e].icon,(0,T.jsx)(`span`,{className:`text-muted-foreground`,children:n(`activity:board.status.${e}`)})]},e))}),(0,T.jsx)(`div`,{className:`flex gap-3 overflow-x-auto pb-2`,children:e.map((n,r)=>(0,T.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,T.jsxs)(`div`,{className:`w-60 shrink-0`,children:[(0,T.jsx)(`div`,{className:`mb-2 border-b border-border/60 pb-1 text-center text-xs font-medium uppercase text-muted-foreground`,children:n.label}),(0,T.jsx)(`div`,{className:`space-y-2`,children:n.tasks.map(e=>(0,T.jsx)(A,{task:e,onClick:t},e.id))})]}),r<e.length-1&&(0,T.jsx)(`div`,{className:`flex h-full items-center pt-8 text-muted-foreground/60`,children:(0,T.jsx)(p,{className:`h-5 w-5`})})]},n.label))})]})}function A({task:e,onClick:t}){let n=E[e.displayStatus],r=O[e.priority],{t:i}=d();return(0,T.jsxs)(`button`,{type:`button`,onClick:()=>t?.(e.id),className:y(`w-full rounded-lg border bg-background/55 p-2.5 text-left shadow-sm transition-colors hover:border-primary/35 hover:bg-accent/35`,n.ring),children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,T.jsxs)(`span`,{className:y(`inline-flex items-center gap-1.5 text-xs font-medium`,n.text),children:[n.icon,(0,T.jsx)(`span`,{className:`font-mono text-foreground`,children:e.shortId})]}),(0,T.jsx)(`span`,{className:y(`rounded px-1.5 py-0.5 text-[10px] font-medium`,r.cls),children:r.label})]}),(0,T.jsx)(`p`,{className:`mt-1.5 text-xs text-foreground`,children:e.title}),e.deps.length>0&&(0,T.jsxs)(`p`,{className:`mt-1 font-mono text-[10px] text-muted-foreground`,children:[`← `,e.deps.join(`, `)]}),e.agentName&&(0,T.jsxs)(`div`,{className:y(`mt-1.5 inline-flex items-center gap-1 rounded-full px-1.5 py-0.5 text-[10px]`,e.displayStatus===`in_progress`?`bg-primary/10 text-primary`:`bg-muted text-muted-foreground`),title:e.worktreeBranch?i(`activity:board.worktreePrefix`,{branch:e.worktreeBranch}):void 0,children:[e.displayStatus===`in_progress`&&(0,T.jsx)(s,{className:`h-3 w-3 animate-spin`}),(0,T.jsx)(`span`,{children:e.agentName})]})]})}function j(e){return e.columns.map(e=>({name:e.label,description:``,priority:`medium`,estimateHours:e.tasks.length,parallelizable:!1,taskTemplates:e.tasks.map(e=>({title:e.title,description:e.description,type:e.type,priority:e.priority,estimateHours:1}))}))}function M({onClose:e}){let{client:t}=b(),{t:n}=d(),r=x(e=>e.specs),i=x(e=>e.detail),s=x(e=>e.expandedSpecId),l=x(e=>e.setExpanded),[f,m]=(0,w.useState)(`graph`),h=(0,w.useCallback)(e=>{!i||i.specId!==e.id||(t?.send?.({type:`autophase.start`,payload:{title:e.title,phases:j(i),autonomous:!0}}),C(`autophase`))},[i,t]);(0,w.useEffect)(()=>{t?.send?.({type:`specs.list`})},[t]);let g=(0,w.useCallback)(e=>{s===e.id?l(null):(l(e.id),t?.send?.({type:`specs.get`,payload:{specId:e.id}}))},[s,l,t]),E=i?.columns.flatMap(e=>e.tasks)??[],D={done:E.filter(e=>e.status===`completed`).length,running:E.filter(e=>e.status===`in_progress`).length,pending:E.filter(e=>e.status===`pending`||e.displayStatus===`queued`).length};return(0,T.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-col bg-background`,children:[(0,T.jsxs)(`header`,{className:`flex shrink-0 items-center justify-between border-b bg-card px-4 py-2`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(a,{className:`h-5 w-5 text-warning`}),(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`h1`,{className:`text-lg font-semibold`,children:n(`activity:specs.heading`)}),(0,T.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n(`activity:specs.subtitle`)})]})]}),(0,T.jsx)(S,{variant:`ghost`,size:`icon`,onClick:e,children:(0,T.jsx)(c,{className:`h-4 w-4`})})]}),(0,T.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-4`,children:r.length===0?(0,T.jsx)(`div`,{className:`flex h-40 items-center justify-center text-sm text-muted-foreground`,children:n(`activity:specs.empty`,{command:`/sdd`})}):(0,T.jsx)(`div`,{className:`space-y-3`,children:r.map(e=>{let t=s===e.id,r=e.total>0?Math.round(e.completed/e.total*100):0;return(0,T.jsxs)(`div`,{className:`rounded-lg border border-border bg-card/60`,children:[(0,T.jsxs)(`button`,{type:`button`,onClick:()=>g(e),className:`flex w-full items-start gap-3 p-4 text-left`,children:[(0,T.jsx)(`span`,{className:`mt-1 text-muted-foreground`,children:t?(0,T.jsx)(v,{className:`h-4 w-4`}):(0,T.jsx)(p,{className:`h-4 w-4`})}),(0,T.jsx)(a,{className:`mt-0.5 h-4 w-4 text-muted-foreground`}),(0,T.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:e.displayId}),(0,T.jsx)(`span`,{className:`rounded bg-muted px-1.5 py-0.5 text-[10px] capitalize text-muted-foreground`,children:e.status})]}),(0,T.jsx)(`h2`,{className:`mt-1 text-base font-semibold`,children:e.title}),(0,T.jsxs)(`div`,{className:`mt-2 flex items-center gap-2`,children:[(0,T.jsx)(`div`,{className:`h-2 flex-1 overflow-hidden rounded-full bg-muted`,children:(0,T.jsx)(`div`,{className:`h-full rounded-full bg-success transition-all`,style:{width:`${r}%`}})}),(0,T.jsxs)(`span`,{className:`shrink-0 font-mono text-xs text-muted-foreground`,children:[e.completed,`/`,e.total]})]})]})]}),t&&(0,T.jsxs)(`div`,{className:`border-t border-border p-4`,children:[(0,T.jsxs)(`div`,{className:`mb-3 flex items-center justify-between`,children:[(0,T.jsxs)(`div`,{className:`text-sm font-medium`,children:[n(`activity:specs.tasks`,{count:i?.total??e.total}),i&&(0,T.jsxs)(`span`,{className:`ml-3 text-xs font-normal text-muted-foreground`,children:[(0,T.jsx)(`span`,{className:`text-success`,children:n(`activity:specs.doneCount`,{count:D.done})}),` `,(0,T.jsx)(`span`,{className:`text-primary`,children:n(`activity:specs.runningCount`,{count:D.running})}),` `,(0,T.jsx)(`span`,{children:n(`activity:specs.pendingCount`,{count:D.pending})})]})]}),(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsxs)(`button`,{type:`button`,disabled:!i||i.specId!==e.id,onClick:()=>h(e),title:n(`activity:specs.runTitle`),className:`inline-flex items-center gap-1 rounded-md bg-warning/15 px-2.5 py-1 text-xs font-medium text-warning transition-colors hover:bg-warning/25 disabled:opacity-40`,children:[(0,T.jsx)(o,{className:`h-3.5 w-3.5`}),` `,n(`activity:specs.run`)]}),(0,T.jsxs)(`div`,{className:`flex items-center gap-1 rounded-md border border-border p-0.5`,children:[(0,T.jsxs)(`button`,{type:`button`,onClick:()=>m(`list`),className:y(`inline-flex items-center gap-1 rounded px-2 py-1 text-xs`,f===`list`?`bg-primary/15 text-primary`:`text-muted-foreground`),children:[(0,T.jsx)(_,{className:`h-3.5 w-3.5`}),` `,n(`activity:specs.list`)]}),(0,T.jsxs)(`button`,{type:`button`,onClick:()=>m(`graph`),className:y(`inline-flex items-center gap-1 rounded px-2 py-1 text-xs`,f===`graph`?`bg-primary/15 text-primary`:`text-muted-foreground`),children:[(0,T.jsx)(u,{className:`h-3.5 w-3.5`}),` `,n(`activity:specs.graph`)]})]})]})]}),!i||i.specId!==e.id?(0,T.jsx)(`div`,{className:`flex h-24 items-center justify-center text-sm text-muted-foreground`,children:n(`activity:specs.loadingTasks`)}):f===`graph`?(0,T.jsx)(k,{columns:i.columns}):(0,T.jsx)(`div`,{className:`space-y-1.5`,children:E.map(e=>(0,T.jsxs)(`div`,{className:`flex items-center gap-3 rounded-md border border-border bg-card px-3 py-2`,children:[(0,T.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:e.shortId}),(0,T.jsx)(`span`,{className:`flex-1 text-sm`,children:e.title}),(0,T.jsx)(`span`,{className:`text-xs capitalize text-muted-foreground`,children:e.displayStatus.replace(`_`,` `)})]},e.id))})]})]},e.id)})})})]})}export{M as SpecsView};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{m as t,p as n}from"./markdown-D0X23O-i.js";import{Gt as r,It as i,Rr as a,Z as o,dt as s,fi as c,hi as l}from"./vendor-CyLvG8N0.js";import"./i18n-CkkVJCs9.js";import{t as u}from"./ws-client-lDxBz-7w.js";import{t as d}from"./session-store-P-JnaPPK.js";import{n as f}from"./ui-store-FTgDlcX2.js";import{t as p}from"./utils-CU_o9ioU.js";import{z as m}from"./index-BqAVsSCe.js";import{n as h,t as g}from"./xterm-B9RXJkIu.js";var _=e(t(),1),v=`wrongstack.terminalDockHeight`;function y(e){let t=typeof window>`u`?640:Math.max(140,Math.min(640,Math.floor(window.innerHeight*.55),window.innerHeight-260));return Math.min(Math.max(Math.round(e),140),t)}var b=n(),x={background:`#1e1e2e`,foreground:`#cdd6f4`,cursor:`#f5e0dc`,selectionBackground:`#585b70`,black:`#45475a`,red:`#f38ba8`,green:`#a6e3a1`,yellow:`#f9e2af`,blue:`#89b4fa`,magenta:`#f5c2e7`,cyan:`#94e2d5`,white:`#bac2de`,brightBlack:`#585b70`,brightRed:`#f38ba8`,brightGreen:`#a6e3a1`,brightYellow:`#f9e2af`,brightBlue:`#89b4fa`,brightMagenta:`#f5c2e7`,brightCyan:`#94e2d5`,brightWhite:`#a6adc8`},S=8;function C(e=!1){return typeof window>`u`?300:y(window.innerHeight*(e?.32:.4))}function w(e=!1){if(typeof window>`u`)return C(e);try{let t=window.localStorage.getItem(v),n=t?Number.parseInt(t,10):NaN;return Number.isFinite(n)?y(n):C(e)}catch{return C(e)}}function T(e){try{window.localStorage.setItem(v,String(y(e)))}catch{}}function E(){try{return crypto.randomUUID()}catch{return`term-${Date.now()}-${Math.floor(Math.random()*1e6)}`}}function D(e){return{id:E(),name:`Terminal ${e}`,status:`starting`}}function O({desktopShell:e=!1,onClose:t}){let n=(0,_.useRef)(null),{t:l}=c(),u=(0,_.useRef)(1),[m,h]=(0,_.useState)(()=>w(e)),[g,v]=(0,_.useState)(()=>[D(1)]),[x,C]=(0,_.useState)(()=>g[0]?.id??``),O=f(e=>e.terminalCreateNonce),A=(0,_.useRef)(O),j=d(e=>e.projectName),M=d(e=>e.cwd);(0,_.useEffect)(()=>{let e=()=>{h(e=>{let t=y(e);return T(t),t})};return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]);let N=e=>{e.preventDefault(),n.current?.();let t=e.clientY,r=m,i=document.body.style.cursor,a=document.body.style.userSelect;document.body.style.cursor=`ns-resize`,document.body.style.userSelect=`none`;let o=e=>{let n=y(r+t-e.clientY);h(n),T(n)},s=()=>{document.body.style.cursor=i,document.body.style.userSelect=a,window.removeEventListener(`pointermove`,o),window.removeEventListener(`pointerup`,s),window.removeEventListener(`pointercancel`,s),n.current===s&&(n.current=null)};n.current=s,window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,s,{once:!0}),window.addEventListener(`pointercancel`,s,{once:!0})};(0,_.useEffect)(()=>()=>n.current?.(),[]);let P=()=>{v(e=>{if(e.length>=S)return e;u.current+=1;let t=D(u.current);return C(t.id),[...e,t]})};(0,_.useEffect)(()=>{O!==A.current&&(A.current=O,P())},[O]);let F=e=>{v(n=>{let r=n.findIndex(t=>t.id===e);if(r===-1)return n;let i=n.filter(t=>t.id!==e);return i.length===0?(queueMicrotask(t),i):(x===e&&C(i[Math.max(0,r-1)]?.id??i[0]?.id??``),i)})},I=e=>{let t=E();v(n=>{let r=!1,i=n.map(n=>n.id===e?(r=!0,{...n,id:t,status:`starting`,exitCode:void 0}):n);return r&&C(t),i})},L=()=>{v([]),C(``),queueMicrotask(t)},R=(e,t)=>{v(n=>n.map(n=>n.id===e?{...n,...t}:n))},z=g.find(e=>e.id===x)??g[0]??null;return(0,b.jsxs)(`div`,{"data-terminal-dock":!0,style:{height:m},"data-shell":e?`desktop`:`browser`,className:p(`z-30 flex min-h-0 shrink-0 flex-col border-t border-border/70 bg-card shadow-2xl`,e&&`ws-terminal-desktop`),children:[(0,b.jsx)(`div`,{role:`separator`,"aria-orientation":`horizontal`,title:l(`activity:terminal.resize`),onPointerDown:N,className:`h-1.5 cursor-ns-resize bg-muted/70 transition-colors hover:bg-primary/35`}),(0,b.jsxs)(`div`,{className:p(`flex min-w-0 items-center justify-between gap-3 border-b border-border/70 bg-card/85`,e?`px-2 py-1`:`px-3 py-1.5`),children:[(0,b.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2 text-xs text-foreground`,children:[(0,b.jsx)(a,{className:`h-3.5 w-3.5 shrink-0 text-primary`}),(0,b.jsx)(`span`,{className:`font-medium`,children:l(e?`activity:terminal.labelSingular`:`activity:terminal.labelPlural`)}),(0,b.jsx)(`span`,{className:`min-w-0 truncate text-muted-foreground`,children:j||M||l(`activity:terminal.projectShell`)})]}),(0,b.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,b.jsx)(`button`,{type:`button`,onClick:P,disabled:g.length>=S,title:g.length>=S?l(`activity:terminal.maxTerminals`,{count:S}):l(`activity:terminal.newTerminal`),className:`inline-flex h-6 w-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:cursor-not-allowed disabled:opacity-40`,children:(0,b.jsx)(r,{className:`h-4 w-4`})}),(0,b.jsx)(`button`,{type:`button`,onClick:()=>z&&I(z.id),disabled:!z,title:l(`activity:terminal.restart`),className:`inline-flex h-6 w-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:cursor-not-allowed disabled:opacity-40`,children:(0,b.jsx)(i,{className:`h-3.5 w-3.5`})}),(0,b.jsx)(`button`,{type:`button`,onClick:L,disabled:g.length===0,title:l(`activity:terminal.closeAll`),className:`inline-flex h-6 w-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:cursor-not-allowed disabled:opacity-40`,children:(0,b.jsx)(s,{className:`h-3.5 w-3.5`})}),(0,b.jsx)(`button`,{type:`button`,onClick:t,title:l(`activity:terminal.closeDock`),className:`inline-flex h-6 w-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground`,children:(0,b.jsx)(o,{className:`h-4 w-4`})})]})]}),(0,b.jsx)(`div`,{className:p(`flex min-w-0 items-center gap-1 overflow-x-auto border-b border-border/70 bg-[hsl(var(--surface-2)/0.45)]`,e?`px-1.5 py-0.5`:`px-2 py-1`),children:g.map(t=>(0,b.jsxs)(`div`,{className:p(`group inline-flex items-center rounded border text-xs transition-colors`,e?`h-6 min-w-[92px] max-w-[148px]`:`h-7 min-w-[112px] max-w-[180px]`,x===t.id?`border-primary/35 bg-primary/10 text-primary`:`border-transparent bg-transparent text-muted-foreground hover:bg-accent hover:text-foreground`),children:[(0,b.jsxs)(`button`,{type:`button`,onClick:()=>C(t.id),title:t.status===`exited`?`${t.name} exited`:t.name,className:`inline-flex min-w-0 flex-1 items-center gap-2 px-2 text-left`,children:[(0,b.jsx)(`span`,{className:p(`h-1.5 w-1.5 shrink-0 rounded-full`,t.status===`running`&&`bg-success`,t.status===`starting`&&`bg-primary`,t.status===`exited`&&`bg-destructive`)}),(0,b.jsxs)(`span`,{className:`min-w-0 flex-1 truncate`,children:[t.name,t.status===`exited`&&typeof t.exitCode==`number`?` (${t.exitCode})`:``]})]}),(0,b.jsx)(`button`,{type:`button`,onClick:e=>{e.stopPropagation(),F(t.id)},className:`mr-1 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded text-muted-foreground opacity-70 hover:bg-accent hover:text-foreground hover:opacity-100`,title:l(`activity:terminal.closeTab`,{name:t.name}),children:(0,b.jsx)(o,{className:`h-3 w-3`})})]},t.id))}),M&&!e&&(0,b.jsx)(`div`,{className:`min-w-0 truncate border-b border-border/60 bg-muted/30 px-3 py-1 text-[11px] font-mono text-muted-foreground`,children:M}),(0,b.jsx)(`div`,{className:`relative min-h-0 min-w-0 flex-1 overflow-hidden`,children:g.map(e=>(0,b.jsx)(k,{id:e.id,active:e.id===x,onRunning:()=>R(e.id,{status:`running`}),onExit:t=>R(e.id,{status:`exited`,exitCode:t})},e.id))})]})}function k({id:e,active:t,onRunning:n,onExit:r}){let i=(0,_.useRef)(null),a=(0,_.useRef)(null),o=(0,_.useRef)(null),s=(0,_.useRef)(n),c=(0,_.useRef)(r),d=m(e=>e.wsConnected);return(0,_.useEffect)(()=>{s.current=n,c.current=r},[r,n]),(0,_.useEffect)(()=>{let t=i.current;if(!t)return;let n=new g({fontFamily:`"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace`,fontSize:13,cursorBlink:!0,theme:x,scrollback:5e3}),r=new h;a.current=n,o.current=r,n.loadAddon(r),n.open(t);try{r.fit()}catch{}let d=u(m.getState().wsUrl);d.send({type:`terminal.create`,payload:{id:e,cols:n.cols,rows:n.rows}});let f=!1,p=d.on(`terminal.output`,t=>{t.type===`terminal.output`&&t.payload.id===e&&(f||(f=!0,s.current()),n.write(t.payload.data))}),_=d.on(`terminal.exit`,t=>{t.type===`terminal.exit`&&t.payload.id===e&&(n.write(`\r\n\x1b[2m${l.t(`activity:terminal.processExited`,{code:t.payload.exitCode})}\x1b[0m\r\n`),c.current(t.payload.exitCode))}),v=n.onData(t=>{d.send({type:`terminal.input`,payload:{id:e,data:t}})}),y=new ResizeObserver(()=>{if(t.offsetParent)try{r.fit(),d.send({type:`terminal.resize`,payload:{id:e,cols:n.cols,rows:n.rows}})}catch{}});return y.observe(t),()=>{p(),_(),v.dispose(),y.disconnect(),d.send({type:`terminal.close`,payload:{id:e}}),n.dispose(),a.current=null,o.current=null}},[e,d]),(0,_.useEffect)(()=>{t&&window.requestAnimationFrame(()=>{try{o.current?.fit();let t=a.current;t&&(u(m.getState().wsUrl).send({type:`terminal.resize`,payload:{id:e,cols:t.cols,rows:t.rows}}),t.focus())}catch{}})},[t,e]),(0,b.jsx)(`div`,{ref:i,className:p(`absolute inset-0 min-h-0 min-w-0 overflow-hidden px-2 py-1`,t?`block`:`hidden`)})}export{O as TerminalPanel};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
var e={chat:`Sitzung`,agents:`Agents`,history:`Verlauf`,files:`Dateien`,changes:`Änderungen`,mailbox:`Postfach`,skills:`Skills`,worktrees:`Worktrees`,design:`Design Studio`,officemap:`Bürokarte`,settings:`Einstellungen`,sddwizard:`Neues SDD-Projekt`,specs:`Spezifikationen`,sddboard:`Live-Board`,autophase:`Phasen`,fleet:`Fleet`,inspector:`Inspektor`,prompts:`Prompts`},t={returnToChat:`{{name}} — zurück zum Chat`,returnToChatDefault:`WrongStack — zurück zum Chat`},n={connected:`Verbunden`,disconnected:`Getrennt`,idle:`Inaktiv`,thinking:`Denkt nach`,running:`Läuft`,waiting:`Wartend`,done:`Fertig`,stopped:`Gestoppt`},r={moreWithHidden:`Mehr, {{count}} ausgeblendete Elemente`,moreOptions:`Weitere Optionen`,moreCompactHidden:`Mehr — {{count}} ausgeblendete Panels/Ansichten, Palette, Design, Monitore`,moreCompact:`Mehr — Palette, Design, Monitore`,moreFull:`Mehr — Palette, Design, Tastenkürzel, Monitore`,commandPalette:`Befehls-Palette`,keyboardShortcuts:`Tastenkürzel`,panels:`Panels`,views:`Ansichten`,theme:`Design`,monitors:`Monitore`,fleetMonitor:`Fleet-Monitor`,agentsMonitor:`Agents-Monitor`},i={dragHint:`Ziehen zum Skalieren · Doppelklick zum Zurücksetzen`,collapse:`Panel einklappen (Ctrl+\\)`},a={openDashboard:`Sitzungs-Dashboard öffnen`},o={pending:`ausstehend…`,empty:`Noch keine Agents`,emptyHint:`Subagents erscheinen hier, wenn die Fleet aktiv ist.`,runningCount:`{{count}} läuft`,totalCount:`{{count}} gesamt`,openFull:`Vollständige Agents-Ansicht öffnen`,agentsLive:`AGENTS · LIVE`,doneCount:`{{count}} fertig`,failedCount:`{{count}} fehlgeschlagen`,modelsLabel:`Modelle`,shownLabel:`angezeigt`,totalLabel:`gesamt`,leaderFleetTotals:`(Leader {{leader}} · Fleet {{fleet}})`,navHintJk:`j/k oder ↑↓ zum Navigieren`,escCloseDetail:`· Esc um Detail zu schließen`,noAgentsRunning:`Keine Agents aktiv.`,contextUsage:`Kontext-Nutzung`,lastToolLabel:`zuletzt:`,unknownSession:`Unbekannte Session`,sessionCopyTitle:`Session: {{sid}} — klicken zum Kopieren`,sessionWord:`Session`,agentsCountSuffix_one:`{{count}} Agent`,agentsCountSuffix_other:`{{count}} Agents`,sessionTitle:`Session: {{sid}}`,projectSuffix:` · Projekt: {{name}}`,statusIdle:`idle`},s={fileCount_one:`{{count}} Datei`,fileCount_other:`{{count}} Dateien`,refreshTitle:`Änderungen aktualisieren`,loading:`Änderungen werden geladen…`,clean:`Keine Änderungen — Arbeitsbaum ist sauber.`,selectPrompt:`Wähle eine geänderte Datei, um den Diff anzuzeigen.`,unified:`Vereinigt`,unifiedTitle:`Vereinigter Diff`,edit:`Bearbeiten`,editTitle:`Side-by-side bearbeitbarer Diff`,loadingDiff:`Diff wird geladen…`,diffTimeout:`Das Diff ist nicht angekommen. Die Datei wurde evtl. geändert oder die Verbindung getrennt.`,binary:`Binärdatei — Diff nicht angezeigt.`,tooLarge:`Datei zu groß für Diff.`},c={showPanel:`Inspektor-Panel anzeigen (Fleet / Agents / Audit)`,hidePanel:`Inspektor-Panel ausblenden`,label:`Inspektor`,openAudit:`Audit-Tab öffnen`,tabFleet:`Fleet`,tabAgents:`Agents`,tabAudit:`Audit`,collapseAria:`Inspektor-Panel einklappen`,collapseTitle:`Einklappen (Esc)`,noAgentsActive:`Keine Agents aktiv`,agentsAppearHint:`Agents erscheinen hier, wenn die Fleet aktiv ist.`,selected:`{{name}} (ausgewählt)`},l={header:`Nächste Schritte`,autoSubmitting:`automatisches Senden in`,clickToFill:`Klicken zum Ausfüllen`,clickToFillTitle:`Klicken zum Ausfüllen: {{text}}`,auto:`auto`,willAutoSubmit:`Wird nach Countdown automatisch gesendet`},u={onlineCount:`{{count}} online`,messages:`Nachrichten`,deleteAllTitle:`Alle Nachrichten löschen`,deleteAll:`Alle löschen`,deleting:`Wird gelöscht…`,purgeTitle:`Veraltete/verwaiste Nachrichten bereinigen`,purge:`Bereinigen`,purging:`Wird bereinigt…`,newLabel:`NEU`,empty:`Noch keine Nachrichten.`,offlineCount:`+{{count}} offline`,timeNow:`jetzt`,deleteAllConfirmTitle_one:`{{count}} Nachricht löschen?`,deleteAllConfirmTitle_other:`Alle {{count}} Nachrichten löschen?`,deleteAllConfirmBody:`Die Mailbox-Datei wird für jeden Agent abgeschnitten. Dies kann nicht rückgängig gemacht werden.`,purgeConfirmTitle:`Veraltete Nachrichten bereinigen?`,purgeConfirmBody:`Entfernt abgeschlossene Nachrichten älter als 1 Tag und unvollständige Nachrichten älter als 7 Tage. Aktive Nachrichten bleiben erhalten.`,type:{note:`Notiz`,ask:`Frage`,assign:`Zuweisung`,steer:`Lenken`,btw:`Nebenbei`,broadcast:`Rundruf`,status:`Status`,result:`Ergebnis`},emptyDetail:`Keine Nachricht ausgewählt`,emptyDetailHint:`Klicke im Mailbox-Panel auf eine Nachricht, um sie hier anzuzeigen.`,readBy:`Gelesen von`,backToChat:`Zurück zum Chat`,completed:`Erledigt`,everyone:`alle`,closeTitle:`Schließen (Esc)`,replyTo:`Antwort auf: {{id}}`,completedBy:`Von {{name}} erledigt`,completedByAt:`Von {{name}} am {{time}} erledigt`,outcome:`Ergebnis:`,task:`Aufgabe:`,messageNotFound:`Nachricht nicht gefunden`,messageNotFoundHint:`Diese Nachricht wurde möglicherweise gelöscht oder bereinigt.`},d={recentSessions:`Letzte Sitzungen`,deleteEmptyTitle_one:`{{count}} leere Sitzung löschen?`,deleteEmptyTitle_other:`{{count}} leere Sitzungen löschen?`,deleteEmptyConfirmBody:`Sitzungen ohne Token-Nutzung werden von der Festplatte entfernt.`,filterPlaceholder:`Titel, Modell, Anbieter filtern…`,clearFilter:`Filter löschen`,noHistory:`Noch kein Verlauf`,noHistoryHint:`Deine Konversationen erscheinen hier`,noMatches:`Keine Treffer`,noMatchesHint:`Versuche einen anderen Filter`,group:{favorites:`Favoriten`,today:`Heute`,yesterday:`Gestern`,thisWeek:`Diese Woche`,earlier:`Früher`},nicknamePlaceholder:`Spitzname`,empty:`(leer)`,resuming:`wird fortgesetzt…`,active:`aktiv`,renameTitleNickname:`{{nickname}} — original: {{title}}`,renameTitle:`{{title}}
|
|
2
|
-
|
|
3
|
-
Doppelklick zum Umbenennen`,unfavorite:`Aus Favoriten entfernen`,markFavorite:`Als Favorit markieren`,deleteSessionConfirmTitle:`Sitzung löschen?`,deleteSessionConfirmBody:`"{{name}}" wird von der Festplatte entfernt. Dies kann nicht rückgängig gemacht werden.`,deleteSessionTitle:`Sitzung löschen`},f={actions:{abort:`Abbrechen`,newSession:`Neue Sitzung`,export:`Export`,compact:`Komprimieren`,newSessionTitle:`Neue Sitzung starten (Ctrl+N)`,exportTitle:`Chat als Markdown exportieren (Ctrl+E)`,compactTitle:`Kontextfenster komprimieren`,clearTitle:`Kontext löschen (Ctrl+L)`},model:`Modell`,modelTitle:`Modell ändern (Ctrl+M)`,context:`Kontext`,contextTitle:`Klicken für eine Kontextaufschlüsselung`,sessionLabel:`Sitzung`,stats:{messages:`Nachrichten`,elapsed:`Verstrichen`,tokens:`Tokens`,cost:`Kosten`,iteration:`Iteration`,agents:`Agents`,tokensSub:`{{in}} rein / {{out}} raus`,iterationOf:`von {{max}}`,agentsRunning:`{{count}} läuft`},plan:`Plan`,planComplete:`{{pct}}% fertig`,pinned:`Angeheftet`,quickSettings:`Schnelleinstellungen`,autonomy:`Autonomie`,autonomyOptions:{off:`Aus`,suggest:`Vorschlagen`,auto:`Auto`,eternal:`Endlos`,"eternal-parallel":`Endlos Parallel`},yolo:`YOLO-Modus`,yoloTitle:`Tool-Bestätigungsdialoge überspringen`,refine:`Prompts verfeinern`,refineTitle:`Prompts vor dem Senden umschreiben`,sound:`Ton bei Fertigstellung`,soundTitle:`Sanften Gong abspielen, wenn ein Lauf endet`,sessionId:`Sitzung {{id}}`},p={status:{running:`läuft`,done:`fertig`,failed:`fehlgeschlagen`,timeout:`Zeitüberschreitung`,stopped:`gestoppt`},leader:`Leader`,providerModel:`Anbieter / Modell`,elapsed:`Verstrichen`,running:`läuft…`,iterations:`Iterationen`,toolCalls:`Tool-Aufrufe`,cost:`Kosten`,budgetExtensions:`Budget-Erweiterungen`,activity:`Aktivität`,budgetWarning:`Budget-Warnung`,contextWindow:`Kontextfenster`,tokensUsed:`{{used}} / {{max}} Tokens`,toolRunning:`läuft…`,lastTool:`letztes Tool`,error:`Fehler`,finalOutput:`Endgültige Ausgabe`,copyOutput:`Ausgabe kopieren`,liveOutput:`Live-Ausgabe`,waitingOutput:`Warte auf Ausgabe…`,outputHint:`Die Ausgabe erscheint hier, sobald der Agent Text streamt.`,toolLog:`Tool-Log ({{count}} Aufrufe)`,fail:`Fehlschlag`,moreTools:`+{{count}} weitere Tools`,cardRunning:`läuft {{tool}}`,cardLastTool:`zuletzt: {{tool}}`,contextPercent:`Kontext {{pct}}%`,doneCount:`{{count}} fertig`,errCount:`{{count}} Fehler`,statusRunning:`läuft`,statusDone:`fertig`,statusFailed:`fehlgeschlagen`,statusTimeout:`Timeout`,statusStopped:`gestoppt`,sessionPrefix:`Session:`,currentTask:`Aktuelle Task`,performance:`Performance`,uniqueTools:`Eindeutige Tools`,avgPerTool:`ø {{ms}}ms pro Tool`,context:`Kontext`,tokens:`Token`,ctxUsed:`{{pct}}% genutzt`,completed:`abgeschlossen`,budgetWarningTitle:`⚡ Budget-Warnung`,hittingLimit:`Erreicht {{kind}}-Limit ({{used}}/{{limit}})`,hittingLimitTitle:`⚡ erreicht {{kind}}-Limit ({{used}}/{{limit}})`,budgetExt_one:`{{count}} Budget-Erweiterung`,budgetExt_other:`{{count}} Budget-Erweiterungen`,extendedTimes_one:`Agent hat sein Budget {{count}}-mal wegen langer Tasks erweitert`,extendedTimes_other:`Agent hat sein Budget {{count}}-mal wegen langer Tasks erweitert`,errorLabel:`Fehler`,failureReason:`Fehlergrund`,failed:`Fehlgeschlagen`,fleetMonitor:`FLEET-MONITOR`,runningCount:`{{count}} läuft`,totalAgents_one:`{{count}} Agent gesamt`,totalAgents_other:`{{count}} Agents gesamt`,noLeader:`kein Leader`,closeFleet:`Fleet-Monitor schließen`,colName:`Name`,colStatus:`Status`,colActivity:`Aktivität`,colIters:`Iter.`,colTools:`Tools`,colCost:`Kosten`,colCtx:`CTX`,colExt:`Erw.`,colReason:`Grund`,noAgentsActive:`Keine Agents aktiv`,agentsAppear:`Agents erscheinen hier, wenn die Fleet aktiv ist.`,agentTimeline:`Agent-Zeitleiste`,noAgentEvents:`Noch keine Agent-Konversationsereignisse.`,navHint:`↑↓ navigieren`,selectDetailHint:`↵ Detail wählen`,escHint:`Esc Auswahl aufheben / schließen`,detailedView:`Detailansicht`,closeBtn:`✕ schließen`,selectAgentDetail:`Wähle einen Agent für detaillierte Informationen`,selectAgentBody:`Klicke einen Agent in der Liste für detaillierte Metriken, Tool-Logs, Streaming-Ausgabe und mehr — ähnlich der Chat-Verlauf-Detailansicht.`,navigateWord:`navigieren`,selectWord:`wählen`,deselectWord:`aufheben`},m={wsNotConnected:`WebSocket nicht verbunden`,noData:`Keine Debug-Daten empfangen. Der Server unterstützt möglicherweise kein Context-Debugging.`,title:`Kontext-Aufschlüsselung`,windowUsage:`Fensterauslastung`,contextMode:`Kontextmodus`,fetching:`Kontext-Aufschlüsselung wird geladen…`,systemPrompt:`System-Prompt`,tools:`Tools`,messages:`Nachrichten`,tokenAllocation:`Token-Verteilung`,systemTitle:`System: {{tokens}}`,toolsTitle:`Tools: {{tokens}}`,messagesTitle:`Nachrichten: {{tokens}}`,system:`System`,toolBreakdown:`Tool-Aufschlüsselung`,messagesSummary:`Nachrichten ({{count}}) — {{total}} Tok`,barWithTokens:`Kontextfenster: {{tokens}} / {{max}} Token ({{pct}})`,barPct:`Kontextfenster: {{pct}}`,barClick:` — für Aufschlüsselung klicken`},h={header:`✨ Prompt verfeinern`,autoSend:`Auto-Send in {{count}} s`,cancelTitle:`Abbrechen (Esc)`,editLabel:`Verfeinerten Prompt bearbeiten:`,editPlaceholder:`Verfeinerten Prompt bearbeiten ...`,useEdit:`Bearbeitung verwenden`,original:`Original`,refined:`Verfeinert`,yourLanguage:`(deine Sprache)`,refinedTitle:`Klicken oder Enter drücken, um diese Version zu verwenden`,english:`Englisch`,englishTitle:`e drücken, um die englische Version zu verwenden`,hintRefined:`verfeinert`,hintEnglish:`Englisch`,hintOriginal:`original`,hintEdit:`bearbeiten`,edit:`Bearbeiten`,useRefined:`Verfeinerte verwenden`},g={heading:`Spezifikationen`,subtitle:`Spezifikationsgetriebene Entwicklung anzeigen und verwalten`,empty:`Keine Specs gefunden. Mit {{command}} eine erstellen.`,tasks:`Aufgaben ({{count}})`,doneCount:`{{count}} erledigt`,runningCount:`{{count}} läuft`,pendingCount:`{{count}} ausstehend`,runTitle:`Dieses Spec als Live-AutoPhase-Board ausführen`,run:`Ausführen`,list:`Liste`,graph:`Graph`,loadingTasks:`Aufgaben werden geladen…`},_={heading:`F5-Resilienz-Prüfer`,subtitle:`Bestätigt, dass die letzte aktive Sitzung, das Transkript und der UI-Zustand einen Page-Refresh überstehen. Öffne diese Ansicht und drücke F5 — jede grüne Zeile sollte grün bleiben.`,recordProbe:`Probe aufzeichnen`,latestSession:`Letzte aktive Sitzung`,restoredLocal:`Aus localStorage wiederhergestellt`,sessionIdExtra:`Session-ID: {{id}}`,noSessionYet:`es wurde noch keine Sitzung gestartet`,activePointer:`Aktiver Session-Zeiger`,lastVisited:`lastVisitedAt-Zeitstempel`,never:`nie`,persistedEnv:`Persistierte Umgebung`,transcriptRehydrate:`Chat-Transkript-Rehydratation`,localTranscript:`Lokales Transkript wiederhergestellt`,messagesExtra:`{{count}} Nachrichten, {{queued}} in Warteschlange`,noMessages:`0 Nachrichten`,noBleed:`Kein Session-Übergriff`,bleedExtra:`gebunden={{bound}} vs aktiv={{active}}`,transcriptBinds:`Transkript bindet an die aktive Sitzung`,uiWorkspace:`UI-Workspace`,noneValue:`(keine)`,payloadSize:`localStorage-Payload (4 Schlüssel): {{count}} Zeichen`,probeLog:`Probe-Protokoll`,noProbes:`Noch keine Probes — drücke oben "Probe aufzeichnen" oder F5 in dieser Ansicht, um einen Rehydratations-Check aufzuzeichnen.`,simulatedF5:`simuliertes F5: persist rehydrate erneut ausführen`},v={status:{pending:`Ausstehend`,in_progress:`In Arbeit`,review:`Review`,failed:`Fehlgeschlagen`,completed:`Erledigt`,queued:`In Warteschlange`,blocked:`Blockiert`,cancelled:`Abgebrochen`},newTaskTitle:`Neue Aufgabe`,newTaskPlaceholder:`Aufgabentitel…`,addTask:`Aufgabe hinzufügen`,empty:`Noch keine Phasen — starte einen AutoPhase-Lauf, um das Board zu füllen.`,summary:`{{phases}} Phasen · {{tasks}} Aufgaben`,phases:`Phasen`,statusTab:`Status`,dropHere:`Aufgaben hier ablegen`,emptySpec:`Noch keine Aufgaben in dieser Spec.`,depGraphHeading:`Abhängigkeitsgraph`,worktreePrefix:`Worktree: {{branch}}`},y={trendUp:`Steigend`,trendDown:`Fallend`,trendStable:`Stabil`,heading:`Debug-Dashboard`,subtitle:`Echtzeit-Monitoring für WrongStack WebUI`,refreshLabel:`Aktualisieren:`,lastUpdated:`Zuletzt aktualisiert: {{time}}`,fetchFailed:`Metriken konnten nicht abgerufen werden`,fileWatcher:`File-Watcher`,watcherStatus:`Watcher-Status`,running:`Läuft`,stopped:`Gestoppt`,activeProjects:`Aktive Projekte`,projectsWatched:`Überwachte Projekte`,fileChanges:`Dateiänderungen`,totalDetected:`Gesamt erkannt`,filesProcessed:`Verarbeitete Dateien`,afterHash:`Nach Hash-Filter`,broadcastsSent:`Gesendete Broadcasts`,toClients:`An WebUI-Clients`,debounceResets:`Debounce-Zurücksetzungen`,rapidWrites:`Schnelle aufeinanderfolgende Schreibvorgänge`,avgDebounce:`Ø Debounce-Verzögerung`,actualDelay:`Tatsächliche Verzögerung`,totalDelay:`Gesamtverzögerung`,sumDelays:`Summe aller Verzögerungen`,browserPerf:`Browser-Leistung`,heapUsed:`Heap verwendet`,jsHeap:`JavaScript-Heap`,heapTotal:`Heap gesamt`,totalHeap:`Gesamte Heap-Größe`,pageUptime:`Seiten-Laufzeit`,sinceLoad:`Seit Seitenladung`,rawData:`Rohdaten`},b={using:`Verwendet`,noModelPicked:`(kein Modell gewählt)`,clearAllowlist:`Allowlist löschen`,clearAllowlistAria:`Gespeicherte Allowlist für {{provider}} löschen`,refresh:`Vom Server aktualisieren`,refreshAria:`Modellliste für {{provider}} aktualisieren`,probing:`Prüfe…`,use:`Verwenden`,useModelAria:`Modell {{model}} für {{provider}} verwenden`,differsHint:`Die geprüfte Liste weicht von der gespeicherten Allowlist ab — führe {{command}} erneut aus, um zu speichern.`},x={expandChip:`{{label}} ausklappen`,collapseChip:`{{label}} einklappen`,ahead:`{{count}} voraus`,behind:`{{count}} hinterher`,linesAdded:`{{count}} Zeilen hinzugefügt`,linesDeleted:`{{count}} Zeilen gelöscht`,untrackedFiles:`{{count}} unversionierte Dateien`,customizeTitle:`Dock-Chips anpassen`,dockChips:`Dock-Chips`,noActiveGoal:`Kein aktives Ziel`,noActiveGoalDetail:`Starte ein Ziel aus dem Chat oder dem Goal-Befehl.`},S={leaderBadge:`LEADER`,iters:`Iter.`,tools:`Tools`,activityBins:`Aktivität (12 Bins)`,streamingOutput:`Streaming-Ausgabe`,recentTools:`Letzte Tools`,finalOutput:`Endgültige Ausgabe`,heading:`Agents-Monitor`,prevAgent:`Vorheriger Agent`,nextAgent:`Nächster Agent`,closeAria:`Agents-Monitor schließen`,hintPage:`←→ Seite`,hintNavigate:`↑↓ Liste navigieren`,hintEsc:`Esc schließen`},C={resize:`Terminals skalieren`,labelSingular:`Terminal`,labelPlural:`Terminals`,projectShell:`Projekt-Shell`,maxTerminals:`Maximal {{count}} Terminals`,newTerminal:`Neues Terminal`,restart:`Aktives Terminal neu starten`,closeAll:`Alle Terminals schließen`,closeDock:"Terminal-Dock schließen (Ctrl+`)",closeTab:`{{name}} schließen`,processExited:`[Prozess mit Code {{code}} beendet]`},w={liveStream:`Live-Stream`,events_one:`{{count}} Ereignis`,events_other:`{{count}} Ereignisse`,interruptTitle:`Diesen Agenten kooperativ beim nächsten Schritt stoppen (kein Process-Kill)`,interrupt:`⏸ Unterbrechen`,interrupting:`…`,loading:`Sitzung wird geladen…`,done:`✓✓ erledigt`,read:`✓ gelesen`,delivered:`⏳ zugestellt`,agent:`Agent`,you:`Du`,working:`{{name}} · arbeitet`,claude:`Claude`,priority:`Priorität`,placeholder:`{{label}} → an diese Sitzung…`,send:`Senden`,sendHint:`⌘/Ctrl+Enter zum Senden · beim nächsten Iterationsschritt des Agenten sichtbar`,msgType:{steerLabel:`🔄 Lenken`,steerHint:`Verhalten während der Aufgabe anpassen`,askLabel:`❓ Fragen`,askHint:`Frage — erwartet eine Antwort`,assignLabel:`📋 Zuweisen`,assignHint:`Eine zu erledigende Aufgabe`,noteLabel:`💬 Notiz`,noteHint:`Zur Info, nicht dringend`},sentRunning:`Zugestellt — der laufende Agent sieht es beim nächsten Schritt`,sentIdle:`Zugestellt — Ziel ist inaktiv; erscheint im Postfach, gelesen beim nächsten Lauf`,sentFailed:`Fehlgeschlagen: {{error}}`,interruptReason:`Operator hat Stopp aus Fleet HQ angefordert`,interruptSent:`Unterbrechung gesendet — Agent stoppt beim nächsten Schritt (kein Kill)`,interruptFailed:`Unterbrechung fehlgeschlagen: {{error}}`},T={empty:`Noch keine Seiteneffekte aufgezeichnet.`,emptyHint:`Bash-Befehle, Paketinstallationen und Netzwerkanfragen erscheinen hier.`,heading:`Seiteneffekte`,exportTitle:`Gefilterte Seiteneffekte als CSV exportieren`,all:`Alle`,colTime:`Zeit`,colTool:`Tool`,colRisk:`Risiko`,colDetail:`Detail`,colOutcome:`Ergebnis`},E={elapsedHm:`vor {{h}}h {{m}}m`,elapsedMs:`vor {{m}}m {{s}}s`,elapsedS:`vor {{s}}s`,heading:`Fleet-Monitor`,clientsHeading:`Verbundene Clients`,terminal:`Terminal`,webui:`Web-UI`,repl:`REPL`,totalConnected:`insgesamt verbunden`,mailQueue:`Mail-Warteschlange`,total:`Gesamt`,open:`Offen`,unread:`Ungelesen`,agents:`Agents`,messagesSub:`Nachrichten`,uncompletedSub:`unabgeschlossen`,waitingSub:`wartend`,ofTotal:`von {{count}} gesamt`,agentRoster:`Agenten-Roster`,liveMailActivity:`Live-Mail-Aktivität`,noActivity:`Keine aktuelle Aktivität`,mailboxAgents:`Mailbox-Agents`,noMailboxAgents:`Keine Agents registriert`,moreCount:`+{{count}} weitere`,agentFallback:`Agent`,fleetAgents:`Fleet-Agents`,noFleetAgents:`Keine Fleet-Agents aktiv`,iter:`Iter.`,mailType:{sent:`Gesendet`,delivered:`Zugestellt`,read:`Gelesen`,completed:`Abgeschlossen`}},D={status:{pending:`ausstehend`,queued:`in Warteschlange`,in_progress:`läuft`,blocked:`blockiert`,review:`Review`,failed:`fehlgeschlagen`,completed:`erledigt`,cancelled:`abgebrochen`},activityHeading:`Aktivität`,feedEmpty:`Noch nichts — Ereignisse erscheinen hier, sobald Agents Aufgaben übernehmen und abschließen.`,destroyTitle:`SDD-Projekt zerstören?`,destroyDesc:`Das löscht den Run und seine Arbeit. Nicht rückgängig zu machen (das optionale Commit-Revert ist historienwahrend).`,stopRun:`Run stoppen`,stopRunAgents_one:`Run stoppen ({{count}} Agent arbeitet)`,stopRunAgents_other:`Run stoppen ({{count}} Agents arbeiten)`,removeWorktreesAll:`Alle Git-Worktrees + wstack/ap/*-Branches entfernen — inklusive nicht gemergter Arbeit`,removeWorktreesCount_one:`{{count}} Git-Worktree + wstack/ap/*-Branches entfernen — inklusive nicht gemergter Arbeit`,removeWorktreesCount_other:`{{count}} Git-Worktrees + wstack/ap/*-Branches entfernen — inklusive nicht gemergter Arbeit`,deleteArtifacts:`Alle SDD-Artefakte löschen (Specs, Task-Graph, Board, Session)`,revertMerged_one:`Auch {{count}} gemergtes Commit revertieren`,revertMerged_other:`Auch {{count}} gemergte Commits revertieren`,revertHint:`Fügt Revert-Commits hinzu (Historie bleibt). Wird verweigert, wenn der Working Tree dirty ist.`,baseBranchFallback:`der Basis-Branch`,noteLeaveMerged:`Gemergte Commits bleiben auf dem Basis-Branch. Setze den Haken oben, um sie auch rückgängig zu machen.`,noteAbandon:`Stelle sicher, dass du diesen Run wirklich aufgeben willst.`,destroying:`Zerstöre…`,destroyAll:`Alles zerstören`,kanbanBacklog:`Backlog`,kanbanReady:`Bereit`,kanbanRunning:`Läuft`,kanbanReview:`Review`,kanbanFailed:`Fehlgeschlagen`,kanbanDone:`Erledigt`,kanbanEmpty:`leer`},O={collapseToLines:`Auf erste {{count}} Zeilen einklappen`,showAllLines:`Alle {{total}} Zeilen anzeigen ({{more}} mehr)`,exitCode:`Exit-Code:`,jsonLines:`JSON · {{count}} Zeilen`,collapse:`einklappen`,expand:`ausklappen`},k={heading:`Design Studio — Galerie`,kitsCount:`{{count}} Kits`,searchPlaceholder:`Kits suchen…`,stackTitle:`Stack für Use + Materialize`,wrote:`{{path}} geschrieben`,materializeFailed:`Materialize fehlgeschlagen: {{error}}`,verifyError:`Prüfen: {{error}}`,verifyOffPalette:`Prüfen: {{pct}}% on-palette — {{count}} off-palette in {{files}} Datei(en)`,verifyClean:`Prüfen: sauber ✓ ({{files}} Datei(en) on-palette)`,writing:`Theme-Datei wird geschrieben…`,scanning:`UI-Dateien werden gescannt…`,active:`Aktiv`,reapply:`Erneut anwenden`,use:`Verwenden`,materializeTitle:`Tokens in eine {{stack}}-Theme-Datei schreiben`,materialize:`Materialisieren`,verifyTitle:`UI-Dateien auf Off-Palette-Farben prüfen`,verify:`Prüfen`,colors:`Farben`},A={summary_one:`{{count}} Phase · {{pct}}% fertig`,summary_other:`{{count}} Phasen · {{pct}}% fertig`,switchBoard:`Board wechseln`,boardsCount_one:`{{count}} Board…`,boardsCount_other:`{{count}} Boards…`,toggleAutonomousTitle:`Autonomen Modus umschalten`,autonomous:`Autonom`,manual:`Manuell`,resumeTitle:`Lauf fortsetzen`,pauseTitle:`Lauf pausieren`,resume:`Fortsetzen`,pause:`Pausieren`,stopTitle:`Lauf stoppen — bricht laufende Agents sofort ab`,stop:`Stopp`,newTitle:`Dieses Board löschen und einen neuen AutoPhase-Lauf starten`,newLabel:`Neu`,revertConfirm:`Commits des Laufs zurücksetzen?`,revertTitle:`Diesen Lauf zurücknehmen — gelandete Commits per git-revert und Worktrees entfernen`,revert:`Zurücknehmen`,goal:`Ziel`,planning:`Phasen werden geplant…`,planningBody:`Dein Ziel wurde empfangen. WrongStack zerlegt es in Phasen und Aufgaben — das Board erscheint hier, sobald der Plan steht.`,startHeading:`Phasenplan starten`,startBody:`Beschreibe, was du bauen willst. WrongStack plant Phasen und Aufgaben und führt sie aus — beobachte und lenke den Lauf auf dem Board.`,startPlaceholder:`z.B. Eine REST-API für Benutzerverwaltung mit Express und SQLite bauen...`,isolateLabel:`Jede Phase im eigenen Git-Worktree isolieren`,startButton:`AutoPhase starten`,ctrlHint:`Ctrl+Enter zum Starten`,isolateOn:`Phasen laufen in isolierten Worktrees, squash-merged zurück`,isolateOff:`Phasen laufen direkt auf dem aktuellen Branch`,lanes:`Spuren`,graph:`Graph`,planningAck:`🚀 **AutoPhase** — verstanden. Plane Phasen für dein Ziel…`},j={noObservers:`Keine Live-Beobachter`,observerTitle:`Als nur-lesen-Beobachter beitreten (Phase 1)`,observerRole:`Beobachter`,annotatorTitle:`Als Annotator beitreten — hinterlasse Notizen zu Tool-Aufrufen (Phase 2)`,annotatorRole:`Annotator`,controllerTitle:`Als Controller beitreten — kann die Agent-Schleife pausieren (Phase 3)`,controllerRole:`Controller`,errorPrefix:`Collab: {{error}}`,dismiss:`verwerfen`,observers_one:`{{count}} Beobachter`,observers_other:`{{count}} Beobachter`,annotationsTitle:`{{count}} offene Anmerkung(en) — Annotatoren prüfen diese Sitzung`,notes_one:`{{count}} Notiz`,notes_other:`{{count}} Notizen`,pausedTitle:`Agent-Schleife pausiert — ein Controller prüft`,paused:`pausiert`,joinedTitle:`Beigetreten {{time}}`,grantTitle:`Kontrolle geben — diesen Teilnehmer zum Controller befördern`,injectTitle:`Ein synthetisches Ergebnis für einen laufenden Tool-Aufruf injizieren`,inject:`Injizieren`,resumeTitle:`Agent-Schleife fortsetzen`,resume:`Fortsetzen`,pauseTitle:`Agent vor dem nächsten Tool-Aufruf pausieren`,pauseAgent:`Agent pausieren`,leaveTitle:`Beobachter-Sitzung verlassen`,leave:`Verlassen`,injectToolResult:`Tool-Ergebnis injizieren`,close:`schließen`,targetTool:`Ziel-tool_use-id`,targetPlaceholder:`laufenden Aufruf wählen oder tool_use-id eingeben`,toolFallback:`Tool`,noPendingTools:`Keine laufenden Tool-Aufrufe — gib eine tool_use-id ein oder pausiere den Agent zuerst.`,resultContent:`Ergebnisinhalt`,resultPlaceholder:`Synthetisches Tool-Ergebnis, das dem Agent statt der Ausführung zugeführt wird`,markError:`als Fehler markieren`,reasonPlaceholder:`Grund (Audit-Log)`,queueInjection:`Injektion einreihen`,controllerInjection:`Controller-Injektion`},M={reconnecting:`Verbinde erneut mit Backend (Versuch {{attempt}}) — erneut in {{remaining}} s`,disconnected:`Verbindung zum Backend getrennt`,retry:`Jetzt erneut versuchen`,retryTitle:`Verbindung jetzt erneut versuchen`,dismissTitle:`Verwerfen (Chip in der Topbar zeigt weiterhin den Status)`},N={modePrefix:`Modus:`,activeTitle:`Aktiver Modus`,heading:`Modus`,defaultName:`Standard`,defaultDesc:`Standard-Agent-Verhalten`},P={clickTitle:`Klicken für Kostenaufschlüsselung pro Zug`,heading:`Kostenaufschlüsselung`,noPricing:`Keine Preisgebung für das aktuelle Modell — Kostenwerte sind null.`,noTurns:`Noch keine abgeschlossenen Züge. Führe einen Prompt aus, um hier die Kosten pro Zug zu sehen.`,topExpensive_one:`Teuerster Zug`,topExpensive_other:`Die {{count}} teuersten Züge`},F={runDefault:`Run-Standard`,useRunDefault:`Run-Standard verwenden`,filterPlaceholder:`Modelle filtern…`,loading:`Modelle werden geladen…`,noMatch:`Kein Treffer`},I={filterPlaceholder:`Anbieter und Modelle filtern…`,noSavedProviders:`Keine gespeicherten Anbieter — zuerst einen Schlüssel in den Einstellungen registrieren.`,active:`aktiv`},L={todos:`Todos`,tasks:`Aufgaben`,plan:`Plan`},R={toggleAria:`Umschalten: {{content}}`,removeTitle:`Todo entfernen`,removeAria:`"{{content}}" entfernen`,completedCount_one:`{{count}} erledigt`,completedCount_other:`{{count}} erledigt`},z={start:`Starten`,complete:`Abschließen`,retry:`Erneut versuchen`,assign:`Zuweisen`,assignTitle:`Agent zuweisen`,unassigned:`Nicht zugewiesen`,statusPending:`Ausstehend`,statusInProgress:`In Arbeit`,statusBlocked:`Blockiert`,statusFailed:`Fehlgeschlagen`,statusReview:`Review`,statusDone:`Erledigt`,startTitle:`Starten`,completeTitle:`Abschließen`,fail:`Fehlschlagen`,failTitle:`Als fehlgeschlagen markieren`,boardCount:`{{total}} Aufgaben · {{done}} erledigt`},B={toolCalls_one:`{{count}} Werkzeugaufruf`,toolCalls_other:`{{count}} Werkzeugaufrufe`},V={removeTitle:`Referenz entfernen`,linesCount_one:`{{count}} Zeile`,linesCount_other:`{{count}} Zeilen`},H={statusOpen:`Offen`,statusInProgress:`In Arbeit`,statusDone:`Erledigt`,startTitle:`Starten`,doneTitle:`Als erledigt markieren`,reopenTitle:`Wieder öffnen`,reopen:`Wieder öffnen`},U={heading:`@ Dateien`,noMatch:`Keine Dateien passen zu „{{query}}“`,searching:`Projekt wird durchsucht…`},W={dismiss:`Verwerfen`},G={placeholder:`Im Chat suchen…`,prevHit:`Vorheriger Treffer`,nextHit:`Nächster Treffer`,close:`Schließen (Esc)`},K={statusPending:`Ausstehend`,statusReady:`Bereit`,statusRunning:`Läuft`,statusPaused:`Pausiert`,statusCompleted:`Abgeschlossen`,statusFailed:`Fehlgeschlagen`,statusSkipped:`Übersprungen`,heading:`Phasen`,autonomousOn:`● Autonom`,autonomousOff:`○ Manuell`,autonomousOnTitle:`Autonomer Modus aktiv — klicken zum Pausieren`,autonomousOffTitle:`Manueller Modus — klicken zum Aktivieren des autonomen Modus`,overallProgress:`Gesamtfortschritt`,tasksSuffix:`{{done}}/{{total}} Aufgaben`,agentsSuffix_one:`{{count}} Agent`,agentsSuffix_other:`{{count}} Agents`},q={triggerTitle:`Kontextfenster-Modus`,ctxPrefix:`ctx:`,opsHeading:`Kontextoperationen`,compactNow:`Jetzt komprimieren`,compactNowDesc:`Alte Tool-Ausgaben kürzen`,compactAggressive:`Aggressiv komprimieren`,compactAggressiveDesc:`Maximale Kürzung jetzt`,repairContext:`Kontext reparieren`,repairDesc:`Verwaiste Tool-Use-Blöcke beheben`,debugContext:`Kontext debuggen`,debugDesc:`Größenaufschlüsselung pro Abschnitt`,windowHeading:`Kontextfenster`,keepElide:`{{k}} letzte behalten · {{t}}+ Token kürzen`,fallbackName:`Ausgeglichen`,fallbackDesc:`Standard-Rolling-Komprimierung`},J={kindAssistant:`Assistent`,kindThinking:`Denken`,kindToolCall:`Werkzeugaufruf`,kindToolResult:`Werkzeugergebnis`,kindError:`Fehler`,kindStatus:`Status`,kindSystem:`System`,title:`Chat-Verlauf`,copyTitle:`Agenten-Chatverlauf kopieren`,empty:`Noch kein Chat-Verlauf für diesen Agenten.`},Y={heading:`Autonomiemodus`,titlePrefix:`Autonomie: {{label}}`,descOff:`Volle manuelle Kontrolle — Agent wartet auf deine Eingabe.`,descSuggest:`Agent schlägt nächste Schritte vor, wartet aber auf Genehmigung.`,descAuto:`Agent setzt nach kurzer Bestätigungsverzögerung automatisch fort.`,descEternal:`Agent läuft autonom, bis das Ziel erreicht ist.`,descEternalParallel:`Multi-Agenten autonome Ausführung — Fleet-Modus.`},X={heading:`Nachrichtenwarteschlange`,subtitle:`{{count}} in Warteschlange · Nachrichten werden gesendet, bevor der Agent fertig ist`,btwTitle:`Nebenbei — als Folgenachricht gesendet, ohne den laufenden Agent zu unterbrechen`,steerTitle:`Lenken — unterbricht den laufenden Agent und leitet ihn mit dieser Nachricht um`,queueTitle:`Eingereiht — zurückgehalten bis der aktuelle Agent-Lauf endet, dann in Reihenfolge gesendet`,sortNewestTitle:`Nach neuesten sortiert — klicken für älteste zuerst`,sortOldestTitle:`Nach ältesten sortiert — klicken für neueste zuerst`,newest:`Neueste`,oldest:`Älteste`,clear:`Leeren`,clearTitle:`Alle Nachrichten aus der Warteschlange löschen`,closeTitle:`Schließen`,emptyTitle:`Warteschlange ist leer`,emptyBody:`Nutze die btw-/steer-/„Zur Warteschlange“-Schaltflächen neben der Eingabe, um Nachrichten hinzuzufügen. Eingereihte Einträge werden in Reihenfolge gesendet, wenn der aktuelle Agent-Lauf endet.`,removeTitle:`Aus Warteschlange entfernen`,footer:`Nachrichten werden in Ankunftsreihenfolge gesendet, wenn der aktuelle Agent-Lauf endet. Nutze die Sortierung, um neueste zuerst zu sehen.`},Z={heading:`Sitzungs-Checkpoints`,countSuffix_one:`{{count}} Checkpoint`,countSuffix_other:`{{count}} Checkpoints`,description:`Sitzung zu einem beliebigen Checkpoint zurückspulen. Nachrichten und Dateiänderungen kehren zu diesem Punkt zurück — das LLM setzt von dort fort, als wäre nichts danach passiert.`,emptyTitle:`Noch keine Checkpoints`,emptyBody:`Checkpoints werden automatisch bei jeder gesendeten Nachricht erstellt. Sende ein paar Nachrichten und komme zurück.`,latest:`aktuell`,msgSuffix_one:`{{count}} Nachricht`,msgSuffix_other:`{{count}} Nachrichten`,footerPre:`Beliebigen Checkpoint zum Zurückspulen klicken`,footerPost:`zum Schließen`},Q={statusActive:`Aktiv`,statusPaused:`Pausiert`,statusDone:`Erledigt`,statusFailed:`Fehlgeschlagen`,statusAbandoned:`Aufgegeben`,heading:`Ziel`,refined:`Verfeinert`,progress:`Fortschritt`,iterations:`Iterationen`,deliverables:`Lieferobjekte`,recentActivity:`Letzte Aktivität`},$={cleanTitle_one:`{{count}} verwaisten Worktree entfernen?`,cleanTitle_other:`{{count}} verwaiste Worktrees entfernen?`,cleanMessage:`Entfernt jeden übriggebliebenen Git-Worktree + wstack/ap-Branch vorheriger Läufe zwangsweise. Nicht gemergte Arbeit darin geht verloren.`,cleanConfirm:`Verwaiste entfernen`,orphanCount_one:`{{count}} verwaister Worktree aus vorherigen Läufen`,orphanCount_other:`{{count}} verwaiste Worktrees aus vorherigen Läufen`,andMore:`…und {{count}} weitere`,cleanButtonTitle:`Alle verwaisten Worktrees + Branches zwangsweise entfernen`,removed_one:`✓ {{count}} verwaister Worktree entfernt.`,removed_other:`✓ {{count}} verwaiste Worktrees entfernt.`,cleanupFailed:`Bereinigung fehlgeschlagen`,lanesHeading:`Worktrees`,base:`Basis`,isolatedCount_one:`{{count}} isoliert`,isolatedCount_other:`{{count}} isoliert`,statusAllocating:`zuweisend`,statusActive:`aktiv`,statusCommitting:`committend`,statusMerging:`mergend`,statusMerged:`gemergt`,statusConflict:`Konflikt`,statusFailed:`fehlgeschlagen`,conflictBadge:`KONFLIKT`,graphAria:`Worktree-Branch-Graph ab {{base}}`,mergedLabel:`✓ gemergt → {{base}}`},ee={heading:`Laufende Prozesse`,subtitle:`{{active}} aktiv · {{total}} gesamt`,killAll:`Alle beenden`,emptyTitle:`Keine Prozesse verfolgt`,emptyBody:`Prozesse erscheinen hier, wenn der Agent bash- oder exec-Tools ausführt. Aktive Prozesse zeigen eine pulsierende LED.`,pidLabel:`PID {{pid}}`,protected:`geschützt`,protectedTitle:`Geschützt — überlebt kill/killAll`,killTitle:`PID {{pid}} beenden`},te={tooLarge:`Diff ausgelassen (Datei zu groß für die Inline-Darstellung).`},ne={placeholder:`Ausweichmodell hinzufügen…`,emptyHint:`Wird in Reihenfolge versucht, wenn das primäre Modell ratelimitiert oder hängt.`,moveUp:`Nach oben`,moveDown:`Nach unten`,manualPlaceholder:`anbieter/modell`,addTitle:`Modellreferenz hinzufügen`},re={loading:`Sitzungen werden geladen...`,apiUnavailable:`Sitzungs-API nicht verfügbar:`,empty:`Keine Live-Sitzungen. Öffne eine weitere wstack-Instanz, um sie hier zu sehen.`,heading:`Live-Sitzungen ({{count}})`,autoRefresh:`Auto-Aktualisierung alle 5 s`,pidLabel:`PID {{pid}}`,agentMeta:`{{iter}} Iterationen · {{tools}} Tools · {{ago}}`,andMore:`... und {{count}} weitere`,noAgents:`Keine Agents`},ie={applyTitle:`Die bearbeitete Version auf die Festplatte schreiben`,applying:`Anwenden…`,applied:`Angewandt`,apply:`Anwenden`},ae={showStack_one:`Stack-Trace zeigen ({{count}} Frame)`,showStack_other:`Stack-Trace zeigen ({{count}} Frames)`,hideStack_one:`Stack-Trace verbergen ({{count}} Frame)`,hideStack_other:`Stack-Trace verbergen ({{count}} Frames)`},oe={liveHeading:`Live`,clients:`Clients`,agents:`Agents`,model:`Modell`,mode:`Modus`,toolCalls:`Tool-Aufrufe`,displayHeading:`Anzeige`,statsHud:`Stats-HUD`,legends:`Legenden`,minimap:`Minimap`,zoomControls:`Zoom-Steuerung`,animateWires:`Kabel animieren`,backgroundHeading:`Hintergrund`,bgDots:`Punkte`,bgLines:`Linien`,bgCross:`Kreuz`,bgNone:`Keine`},se={noParams:`(keine Parameter)`,itemCount_one:`{{count}} Element`,itemCount_other:`{{count}} Elemente`,keyCount_one:`{{count}} Schlüssel`,keyCount_other:`{{count}} Schlüssel`},ce={roleYou:`Du`,roleTool:`Tool`,roleThinking:`Denken`,roleAssistant:`Assistent`,inputLabel:`Eingabe`,downloadTitle:`Als Datei herunterladen`,empty:`(leer)`,hideDetails:`Details verbergen`,showDetails:`Details zeigen`,showDetailsLines_one:`Details zeigen ({{count}} Zeile)`,showDetailsLines_other:`Details zeigen ({{count}} Zeilen)`,editHint:`⌘/Ctrl+Enter zum Speichern · Esc zum Abbrechen`,saveResend:`Speichern & erneut senden`,thinkingProcess:`Denkprozess`,thinkingMeta:`Iter {{iter}} · {{dur}} · {{lines}}`,replay:`Replay`,linesSuffix_one:`{{count}} Zeile`,linesSuffix_other:`{{count}} Zeilen`,copyLog:`Log kopieren`,showFullLog:`Vollständiges Log zeigen`,typing:`Tippt…`,noContent:`Kein Inhalt`,failedToSend:`⚠ Senden fehlgeschlagen`,autoPaused:`⚠️ _Auto-Fortsetzen pausiert — maximale aufeinanderfolgende automatische Züge erreicht. Tippe etwas zum Fortfahren (Autonomie bleibt an)._`,rsIterations:`Iterationen: {{n}}`,rsTools:`Tool-Aufrufe: {{n}}`,rsElapsed:`Verstrichen: {{s}}`,rsCost:`Kosten: {{c}}`,useInput:`Eingabe: {{n}}`,useOutput:`Ausgabe: {{n}}`,useCacheRead:`Cache-Lesung: {{n}}`,useCost:`Kosten: {{c}}`,renderedLabel:`Gerendert`,rawLabel:`Raw`,showRenderedTitle:`Gerendertes Markdown zeigen`,showRawTitle:`Raw-Markdown-Quelle zeigen`,editTitle:`Diesen Prompt bearbeiten & erneut senden`,editLabel:`Bearbeiten`,unpinTitle:`Lösen`,pinTitle:`Diese Antwort anheften`,pinnedLabel:`Angeheftet`,pinLabel:`Anheften`,regenerateTitle:`Diese Antwort neu generieren`,retryLabel:`Erneut versuchen`},le={toolFallback:`Tool`,toolFailed:`Tool fehlgeschlagen`},ue={heading:`Tastaturkürzel`,footerPre:`Jederzeit`,footerPost:`drücken, um diese Liste wieder zu öffnen.`,sectionGlobal:`Global`,sectionTuiParity:`TUI-Panel-Parität`,sectionFleet:`Fleet & Agents`,sectionChatInput:`Chat-Eingabe`,sectionChat:`Chat`,sectionChatNav:`Chat-Navigation (beim Nicht-Tippen)`,dCommandPalette:`Befehls-Palette öffnen`,dShowOverlay:`Diese Kürzel-Overlay zeigen`,dToggleSidebar:`Seitenleiste umschalten`,dOpenPanel:`Seitenleiste öffnen (Session, Agents, Verlauf, Dateien, Changes, Mailbox, Skills, Office Map)`,dDesignStudio:`Design-Studio-Seitenleiste öffnen`,dWorktrees:`Worktree-Seitenleiste öffnen`,dFocusInput:`Nachrichteneingabe fokussieren`,dSessionPanel:`Session-Panel`,dFleetOverlay:`Fleet-Monitor-Overlay`,dAgentsOverlay:`Agents-Monitor-Overlay`,dWorktreeMonitor:`Worktree-Monitor`,dPlanPanel:`Plan-Panel`,dTodosPanel:`Todos-Panel`,dQueuePanel:`Queue-Panel`,dProcessMonitor:`Prozess-Monitor`,dGoalPanel:`Ziel-Panel`,dSessionsDashboard:`Session-Dashboard`,dOfficeMap:`Koordinator-Office-Map`,dDockPicker:`Dock-Chip-Wähler`,dOpenFleet:`Fleet-Monitor-Overlay öffnen`,dOpenAgents:`Agents-Monitor-Overlay öffnen`,dNavigateAgents:`Agents im Monitor navigieren`,dSelectAgent:`Fokussierten Agent wählen`,dCloseOverlay:`Aktives Overlay schließen`,dSendMessage:`Nachricht senden`,dNewline:`Zeilenumbruch einfügen`,dRecallPrev:`Vorherigen Prompt abrufen (bei leerer Eingabe)`,dRecallNext:`Nächsten Prompt abrufen`,dSlashPopup:`Slash-Befehl-Popup öffnen`,dAutocomplete:`Hervorgehobenen Befehl autovervollständigen`,dDismissPopup:`Popup schließen / Eingabe löschen`,dSearchChat:`Im aktuellen Chat suchen`,dClearContext:`Kontext löschen (wie /clear)`,dNewSession:`Neue Session starten (wie /new)`,dExportMarkdown:`Chat als Markdown exportieren`,dModelSwitcher:`Quick-Model-Switcher-Overlay`,dCompactDensity:`Kompakte UI-Dichte umschalten`,dAbortRun:`Aktuellen Run abbrechen (während läuft)`,dFocusNext:`Nächste Nachricht fokussieren (Alias: ↓)`,dFocusPrev:`Vorherige Nachricht fokussieren (Alias: ↑)`,dJumpFirst:`Zur ersten Nachricht springen`,dJumpLast:`Zur letzten Nachricht springen`,dCopyFocused:`Fokussierten Nachrichtentext kopieren`,dClearFocused:`Fokussierte Nachricht löschen`},de={titleFallback:`Live SDD Board`,defaultModelTitle:`Run-Standard-Workermodell (pro-Task-Overrides haben Vorrang)`,graphLabel:`Graph`,kanbanLabel:`Kanban`,retryAllTitle:`Jede fehlgeschlagene Task zurück in pending einreihen`,retryFailed:`Fehlgeschlagene erneut ({{count}})`,resume:`Fortsetzen`,pause:`Pausieren`,stop:`Stopp`,cleanTitle:`Git-Worktrees + wstack/ap-Branches des Runs entfernen`,cleanWorktrees:`Worktrees bereinigen`,rollbackTitle:`{{count}} gemergte(s) Commit(s) auf {{base}} revertieren`,rollback:`Rollback ({{count}})`,stopping:`Stoppt…`,destroying:`Zerstört…`,destroyTitle:`Stoppen, alle Worktrees entfernen, optional gemergte Commits revertieren und das SDD-Projekt löschen`,destroy:`Zerstören`,statDone:`fertig`,statRunning:`läuft`,statFailed:`fehlgeschlagen`,statWave:`welle`,statElapsed:`verstrichen`,noActiveWorkers:`keine aktiven Worker`,deadlock:`Deadlock — Tasks blockiert durch fehlgeschlagene Arbeit:`,noRunTitle:`Kein aktiver SDD-Run.`,noRunBody:`Starte einen im New-SDD-Project-Assistenten oder per /sdd execute in der CLI — Agents erscheinen hier live, jeder in einem isolierten Worktree.`,clickTaskHint:`Task für Details klicken`,lcClean:`Bereinigen`,lcRollback:`Rollback`,lcDestroy:`Zerstören`,lcFailed:`{{op}} fehlgeschlagen: {{reason}}`,lcUnknownError:`unbekannter Fehler`,lcWorktrees_one:`{{count}} Worktree entfernt`,lcWorktrees_other:`{{count}} Worktrees entfernt`,lcCommits_one:`{{count}} Commit revertiert`,lcCommits_other:`{{count}} Commits revertiert`,lcDeleted:`gelöscht {{items}}`,lcNothing:`nichts zu tun`,lcNote:`{{op}}: {{body}} — Hinweis: {{reason}}`,lcOk:`{{op}}: {{body}}`},fe={backTitle:`Zur Aktivität zurück`,workingOn:`arbeitet an dieser Task`,assigned:`zugewiesen`,metaPriority:`Priorität`,metaType:`Typ`,metaDuration:`Dauer`,metaElapsed:`Verstrichen`,metaRetries:`Versuche`,metaWorktree:`Worktree`,workerModel:`Worker-Modell`,runDefault:`Run-Standard: {{model}}`,runDefaultPlaceholder:`Run-Standard`,runDefaultPlaceholderModel:`Run-Standard ({{model}})`,verificationCmd:`Verifikationsbefehl`,gatesCompletion:`schließt Completion ab (exit 0)`,verifyPlaceholder:`z. B. pnpm vitest run path/to/file`,addVerify:`+ Verifikationsbefehl hinzufügen`,description:`Beschreibung`,timeline:`Zeitleiste`,dependsOn:`Hängt ab von`,blocks:`Blockiert`,newWorkerPlaceholder:`Neuer Worker-Name…`,confirmStop:`Diese laufende Task stoppen?`,confirmDelete:`Diese Task aus dem Run löschen?`,retryTitle:`Diese Task zurück in pending einreihen`,reassign:`Neu zuweisen`,stopTitle:`Den Worker auf dieser Task abbrechen`,splitTitle:`Diese Task in separate Worker-Sub-Tasks aufteilen`,split:`Aufteilen`,splitHint:`Eine Sub-Task pro Zeile — Titel :: Beschreibung (Beschreibung optional)`,splitPlaceholder:`Datenlayer schreiben :: Repository hinzufügen
|
|
4
|
-
UI verdrahten`,splitInto:`In Sub-Tasks aufteilen`,deleteTitle:`Diese nicht gestartete Task aus dem Run entfernen`},pe={phaseStart:`Start`,phaseInterview:`Interview`,phaseSpecReview:`Spec-Review`,phasePlanning:`Planung`,phaseTaskReview:`Task-Review`,phaseRunning:`Läuft`,phaseDone:`Fertig`,titleFallback:`Neues SDD-Projekt`,questionsSuffix:`{{cur}}/{{max}} Fragen`,tasksSuffix:`{{count}} Tasks`,runCfgTitle:`Run-Konfiguration — Standardmodell + Fallback-Kette`,modelsLabel:`Modelle`,startRun:`Run starten`,defaultWorkerModel:`Standard-Worker-Modell`,leaderDefaultPlaceholder:`Leader / Session-Standard`,useSessionDefault:`Session-Standard verwenden`,fallbackChain:`Fallback-Kette`,appliesToAll:`Gilt für jede Task. Pro-Task vom Live-Board nach Run-Start überschreiben.`,parallelAgents:`Parallele Agents`,isolateWorktrees:`In Git-Worktrees isolieren`,worktreeOn:`Jede Task läuft im eigenen Worktree, bei Abschluss squash-gemergt.`,worktreeOff:`Tasks laufen direkt auf dem aktuellen Branch (keine Isolation).`,goalPrompt:`Was willst du bauen?`,goalPlaceholder:`z. B. OAuth-Login (Google + GitHub) mit Session-Management hinzufügen`,startingInterview:`Interview startet…`,startInterview:`Interview starten`,introBody:`Ein isolierter Agent interviewt dich, um eine Spec zu bauen, zerlegt sie in einen abhängigkeitsgeordneten Task-Graphen, dann führt eine echte Multi-Agenten-Fleet ihn aus — live auf dem Board schauen.`,taskGraphSummary:`Task-Graph · {{count}} Tasks, abhängigkeitsgeordnet`,dragToExplore:`ziehen zum Erkunden`,show:`zeigen`,goalLabel:`Ziel`,implementationPlan:`Implementationsplan`,approveSpec:`Spec genehmigen → Implementation planen`,approveTasks:`Tasks genehmigen`,approvePlan:`Plan genehmigen`,answerPlaceholder:`Frage beantworten…`,changePlaceholder:`Änderung anfordern…`},me={emptyDir:`leer`,loadFailed:`Dateien konnten nicht geladen werden: {{error}}`,expandAllTitle:`Alle Verzeichnisse aufklappen`,expandAll:`Alle aufklappen`,collapseAllTitle:`Alle Verzeichnisse zuklappen`,collapse:`Zuklappen`,folders_one:`{{count}} Ordner`,folders_other:`{{count}} Ordner`,currentDirTitle:`Aktuelles Verzeichnis: {{path}}`,navigateToTitle:`Nach {{path}} navigieren`,filesSuffix_one:`{{count}} Datei`,filesSuffix_other:`{{count}} Dateien`,goToDir:`zum Ordner`,navigateParentTitle:`Zum übergeordneten Ordner von {{path}} navigieren`,parentDirectory:`übergeordneter Ordner`,noFiles:`Keine Dateien gefunden`,copyAbsPath:`Absoluten Pfad kopieren`,copyRelPath:`Relativen Pfad kopieren`,openInTerminal:`Im Terminal öffnen`,openInFileManager:`Im Dateimanager öffnen`,mentionInChat:`Im Chat erwähnen`,copyPath:`Pfad kopieren`},he={sendSelectionAction:`Auswahl an Chat senden`,noFilesOpen:`Keine Dateien offen`,selectToEdit:`Wähle eine Datei aus dem Explorer zum Bearbeiten`,sendSelectedTitle:`Ausgewählte Zeilen an Chat senden`,mentionFileTitle:`Diese Datei im Chat erwähnen`,sendToChat:`An Chat senden`,mentionFile:`Datei erwähnen`,loadingEditor:`Editor wird geladen…`,selectTab:`Wähle einen Tab um den Inhalt zu sehen`},ge={loading:`Analytics werden geladen…`,heading:`Analytics-Dashboard`,autoRefresh:`Auto-Aktualisierung alle 10 s`,liveSessions:`Live-Sessions`,agents:`Agents`,agentsActive:`{{count}} aktiv`,totalEvents:`Ereignisse gesamt`,categoriesSub:`{{count}} Kategorien`,toolCalls:`Tool-Aufrufe`,iterationsSub:`{{count}} Iterationen`,sessionCost:`Session-Kosten`,tokensSub:`{{input}} rein / {{output}} raus`,sessionDuration:`Session-Dauer`,messagesSub:`{{count}} Nachrichten`,eventsByCategory:`Ereignisse nach Kategorie`,noEvents:`Noch keine Ereignisse aufgezeichnet.`,topEvents:`Top-Ereignisse`,activeSessionUsage:`Aktive Session-Nutzung`,provider:`Anbieter`,model:`Modell`,inputTokens:`Eingabe-Token`,outputTokens:`Ausgabe-Token`,cacheRatio:`Cache-Verhältnis`,filesRead:`Gelesene Dateien`,noSession:`Keine aktive Session oder warte auf Daten…`,healthErrors:`Health & Fehler`,errorEvents:`Fehler-Ereignisse`,warningEvents:`Warn-Ereignisse`,cacheHitRate:`Cache-Trefferquote`,totalCategories:`Kategorien gesamt`,waitingData:`Warte auf Daten…`,recentEvents:`Letzte Ereignisse`,noRecentEvents:`Keine aktuellen Ereignisse. Interagiere mit der UI um Ereignisse zu erzeugen.`},_e={searchPlaceholder:`Prompts suchen…`,newPrompt:`+ Neues Prompt`,all:`Alle`,recent:`◷ Zuletzt`,favorites:`★ Favoriten`,noMatch:`Keine passenden Prompts.`,newPromptHeading:`Neues Prompt`,titlePlaceholder:`Titel *`,descPlaceholder:`Einzeilige Beschreibung`,categoryPlaceholder:`Kategorie`,tagsPlaceholder:`tags, kommasepariert`,contentPlaceholder:`Prompt-Inhalt * — {{name}} für Variablen`,variables:`Variablen`,addVar:`+ Var`,varNamePlaceholder:`Name`,varDescPlaceholder:`Beschreibung`,removeVarTitle:`Variable entfernen`,required:`erforderlich`,multiline:`mehrzeilig`,enumPlaceholder:`enum: a, b, c`,savePrompt:`Prompt speichern`,saveFailed:`Prompt konnte nicht gespeichert werden.`,titleContentRequired:`Titel und Inhalt sind erforderlich.`,toggleFavoriteTitle:`Favorit umschalten`,selectOption:`— wählen —`,fillMissing:`Ausfüllen: {{missing}}`,insertIntoChat:`In Chat einfügen`,selectPromptHint:`Prompt zum Vorschauen und Einfügen wählen.`},ve={scopeProject:`Projekt`,scopeGlobal:`Global`,scopeBundled:`Gebündelt`,timeoutError:`Zeitüberschreitung der Anfrage. Bitte erneut versuchen.`,updateFailed:`Update fehlgeschlagen`,saveFailed:`Speichern fehlgeschlagen`,uninstallFailed:`Deinstallation fehlgeschlagen`,noSkillSelected:`Kein Skill gewählt`,selectSkillHint:`Wähle einen Skill aus der Sidebar um die Doku zu sehen`,goToChat:`Zum Chat`,openSourceRepo:`Quell-Repo öffnen`,copySourceUrl:`Quell-URL kopieren`,updatedLabel:`↑ Aktualisiert: {{list}}`,upToDateLabel:`— Aktuell: {{list}}`,errorsLabel:`✗ {{list}}`,checkUpdatesTitle:`Auf Updates prüfen`,exportTitle:`Skill als .md exportieren`,editTitle:`Skill bearbeiten`,uninstallTitle:`Skill deinstallieren`,closeTitle:`Schließen und zum Chat`,backTitle:`Zurück`,forwardTitle:`Vor`,relatedFiles:`Verwandte Dateien`,references:`Referenzen`,goToSkillTitle:`Zu {{name}}`,loadingContent:`Skill-Inhalt wird geladen…`,editingLabel:`Bearbeite {{name}}`,editStats:`{{lines}} Zeilen · {{words}} Wörter · {{chars}} Zeichen`,charsWarningFmt:`⚠ {{used}} MB / {{limit}} MB`,draftSaved:`Entwurf gespeichert`,draftRestored:`Entwurf wiederhergestellt`,discardDraft:`Entwurf verwerfen`,splitViewTitle:`Geteilte Ansicht`,hidePreviewTitle:`Vorschau verbergen`,contentPlaceholder:`Skill-Inhalt (Markdown)...`,loadFailed:`Skill-Inhalt konnte nicht geladen werden`,noContent:`Kein Skill-Inhalt verfügbar`,uninstallSkillHeading:`Skill deinstallieren`,uninstallConfirm:`{{name}} deinstallieren?`,uninstallRemovePath:`Dies entfernt den Skill aus {{path}} und kann nicht rückgängig gemacht werden.`,uninstallAction:`Deinstallieren`},ye={sessionStats:`Session-Stats`,clients:`Clients`,input:`Eingabe`,output:`Ausgabe`,cost:`Kosten`,agentsSuffix:`Agents`,upPrefix:`seit {{time}}`,webuiClient:`WebUI-Client`,disconnected:`Getrennt`,connected:`Verbunden`,tuiClient:`TUI-Client`,terminal:`Terminal`,repl:`REPL`,coordinator:`KOORDINATOR`,fleetSummary:`Fleet-Zusammenfassung`,toolCallsLabel:`Tool-Aufrufe`,tokensLabel:`Token`,coordinatingFleet:`Koordiniert Fleet`,donePrefix:`✓ fertig ·`,failedPrefix:`✕ fehlgeschlagen ·`,seenPrefix:`vor {{time}} gesehen`,availableDesk:`Freier Schreibtisch`,mailboxHub:`Postfach-Zentrale`,unreadSuffix_one:`{{count}} ungelesen`,unreadSuffix_other:`{{count}} ungelesen`,allClear:`Alles erledigt`,total:`Gesamt`,unreadLabel:`Ungelesen`,liveActivity:`Live-Aktivität`,waitingActivity:`Warte auf Aktivität…`,now:`jetzt`,fleetHq:`WrongStack Fleet-Zentrale`,live:`LIVE`,legendStatus:`Status`,legendActive:`Aktiv`,legendIdle:`Idle`,legendError:`Fehler`,legendConnections:`Verbindungen`,legendMail:`Mail`,legendTask:`Task`,legendStatusConn:`Status`,arrange:`Anordnen`,arrangeTitle:`Knoten zurück zum Grundriss`,feed:`Feed`,feedTitle:`Live-Aktivitäts-Feed umschalten`,broadcast:`Broadcast`,broadcastTitle:`Nachricht an jede Live-Session im Projekt`,broadcastToAll:`An alle Sessions broadcasten`,broadcastPlaceholder:`Nachricht an jeden Live-Agent im Projekt…`,broadcastSendHint:`⌘/Ctrl+Enter zum Senden`,openFullView:`Vollständige Operationsansicht öffnen`,rowStatus:`Status`,rowModel:`Modell`,rowTool:`Tool`,rowIterations:`Iterationen`,rowToolCalls:`Tool-Aufrufe`,rowTokensIn:`Token rein`,rowTokensOut:`Token raus`,rowTokensTotal:`Token gesamt`,rowContext:`Kontext`,rowCost:`Kosten`,rowLastSeen:`Zuletzt gesehen`,rowSurface:`Oberfläche`,rowBranch:`Branch`,rowPid:`PID`,rowDir:`Verz.`,rowAgents:`Agents`,rowUptime:`Uptime`,rowConnections:`Verbindungen`,rowTotalMessages:`Nachrichten gesamt`,rowUnread:`Ungelesen`,recent:`Neueste`,noSubject:`(kein Betreff)`,fullOperationStream:`Vollständiger Operations-Stream`,closeEsc:`Schließen (Esc)`,idleDesk:`Freier Platz`,fleetHqLabel:`Fleet-Zentrale`,clientsSuffix_one:`{{count}} Client`,clientsSuffix_other:`{{count}} Clients`,taskFallback:`Task`,controlLabel:`Steuerung`},be={installTitle:`Skill installieren`,createTitle:`Skill erstellen`,exportTitle:`Alle Skills als .zip exportieren`,checkUpdatesTitle:`Auf Updates prüfen (alle Skills)`,searchPlaceholder:`Skills suchen…`,loading:`Lädt…`,noSkills:`Keine Skills installiert`,noMatch:`Keine Skills passen zum Filter`,noDescription:`Keine Beschreibung`,scopeForeign:`Fremd`,installHeading:`Skill Installieren`,installHint:`GitHub-Repo-Referenz (owner/repo) oder vollständige URL eingeben.`,installPlaceholder:`z. B. wrongstack/skill-name oder https://github.com/owner/repo`,installScope:`Installations-Scope:`,installBtn:`Installieren`,installedMsg:`Installiert: {{names}}`,installFailed:`Installation fehlgeschlagen`,createHeading:`Skill Erstellen`,createHint:`Neuen Skill scaffolding. Erste Zeile ist der Trigger; weitere Zeilen die Beschreibung.`,nameLabel:`Name`,namePlaceholder:`z. B. mein-neuer-skill`,descLabel:`Beschreibung / Trigger`,descPlaceholder:`Verwende diesen Skill bei <Trigger-Situation>.
|
|
5
|
-
Trigger: User sagt "Schlüsselwort", "anderes".`,saveIn:`Speichern in:`,createBtn:`Skill Erstellen`,createdMsg:`Erstellt: {{name}}`,createFailed:`Erstellung fehlgeschlagen`},xe={noEvents:`Noch keine Ereignisse.`},Se={pickHint:`Kit wählen — der Agent hält sich daran.`,gallery:`Galerie`,galleryTitle:`Live-Vorschau-Galerie öffnen`,stackTitle:`Ziel-Stack`,loading:`Kits werden geladen…`,notFound:`Keine Design-Kits gefunden.`,bestFor:`Am besten für:`,light:`Hell`,dark:`Dunkel`},Ce={detached:`(losgelöst)`,count_one:`{{count}} Worktree`,count_other:`{{count}} Worktrees`,baseSuffix:` · Basis {{base}}`,baseLabel:`Basis`,cleanOrphans:`Verwaiste entfernen`,cleanOrphansTitle:`Alle verwaisten Worktrees entfernen`,liveBusyTitle:`Ein Lauf ist aktiv — zuerst stoppen`,rescanTitle:`Neu scannen`,removed_one:`{{count}} Worktree entfernt.`,removed_other:`{{count}} Worktrees entfernt.`,failed:`Fehlgeschlagen`,mergedIntoBase:`{{branch}} in Basis zusammengeführt.`,conflictMerge:`Konflikt beim Zusammenführen von {{branch}}: {{files}}`,seeGit:`siehe git`,mergeFailed:`Zusammenführen fehlgeschlagen: {{reason}}`,unknownReason:`unbekannt`,mergeConfirmTitle:`{{branch}} in {{base}} zusammenführen?`,mergeConfirmMsg:`Squash-merged diesen Branch auf den Basis-Branch. Bricht sauber ab bei Konflikten.`,mergeAction:`Zusammenführen`,removeConfirmTitle:`{{branch}} entfernen?`,removeConfirmMsg:`Entfernt das Worktree-Checkout und löscht seinen Branch. Nicht zusammengeführte Arbeit geht verloren.`,empty:`Keine Worktrees.`,emptyHint:`SDD-/AutoPhase-Läufe erstellen hier isolierte Worktrees. Verwaiste abgestürzter Läufe erscheinen ebenfalls.`,actOpenTerm:`Im Terminal öffnen`,actOpenFolder:`Ordner öffnen`,actViewChanges:`Änderungen ansehen`,actMerge:`In Basis zusammenführen`,actRemove:`Entfernen / verwerfen`,live:`live`,noUncommitted:`Keine ungespeicherten Änderungen`,commitsAhead_one:`{{count}} Commit voraus`,commitsAhead_other:`{{count}} Commits voraus`,more:`…{{count}} mehr`},we={heading:`Bürokarte`,headingHint:`Visualisieren Sie Ihre Flotte als Bürogrundriss mit Live-Agent-Status.`,statAgents:`Agenten`,statMail:`Post`,unreadSuffix:` ungelesen`,sectionView:`Ansicht`,sectionDisplay:`Anzeige`,sectionBackground:`Hintergrund`,sectionRecent:`Letzte Aktivität`,eventsTrackedSuffix:` Ereignisse verfolgt`,recentHint:`Post-Sends, Agent-Spawns und Statusänderungen erscheinen hier.`,sectionShortcuts:`Tastenkürzel`,sectionLegend:`Legende`,hudLabel:`HUD`,hudDesc:`Echtzeit-Sitzungsstatistik-Overlay anzeigen`,hudToggle:`HUD umschalten`,minimapLabel:`Minimap`,minimapDesc:`Übersichts-Minimap anzeigen`,minimapToggle:`Minimap umschalten`,controlsLabel:`Steuerung`,controlsDesc:`Zoom- und Fit-Steuerung anzeigen`,controlsToggle:`Steuerung umschalten`,animateLabel:`Kanten animieren`,animateDesc:`Fluss auf aktiven Verbindungen animieren`,animateToggle:`Kantenanimation umschalten`,legendLabel:`Legende anzeigen`,legendDesc:`Status- und Verbindungslegende anzeigen`,legendToggle:`Legende umschalten`,feedLabel:`Live-Feed`,feedDesc:`Unterer Streifen mit letzter prozessübergreifender Aktivität`,feedToggle:`Live-Feed umschalten`,fitView:`Anpassen`,zoomIn:`Vergrößern`,zoomOut:`Verkleinern`,resetZoom:`Zoom zurücksetzen`,legendActive:`Aktiv (läuft)`,legendIdle:`Inaktiv`,legendError:`Fehler`,legendOffline:`Offline`,bg:{dots:`Punkte`,lines:`Linien`,cross:`Kreuz`,none:`Keine`}},Te={nav:e,brand:t,status:n,menu:r,sidePanel:i,history:a,agents:o,changes:s,inspector:c,nextSteps:l,mailbox:u,sessions:d,sessionPanel:f,fleet:p,context:m,refine:h,specs:g,refresh:_,board:v,debug:y,providerModels:b,dock:x,agentsMonitor:S,terminal:C,sessionWatch:w,sideEffects:T,monitor:E,sdd:D,toolResult:O,design:k,autoPhase:A,collab:j,connection:M,mode:N,cost:P,model:F,modelSwitcher:I,work:L,todos:R,task:z,toolGroup:B,fileRef:V,plan:H,filePicker:U,toast:W,search:G,phase:K,ctxMode:q,transcript:J,autonomy:Y,queue:X,checkpoint:Z,goal:Q,worktree:$,process:ee,diff:te,fallback:ne,liveSessions:re,monacoDiff:ie,errorBody:ae,officeMap:oe,toolInput:se,message:ce,watch:le,shortcuts:ue,sddBoard:de,sddTask:fe,sddWizard:pe,fileExplorer:me,codeEditor:he,analytics:ge,promptLib:_e,skillDetail:ve,office:ye,skillsList:be,timeline:xe,designStudio:Se,worktrees:Ce,officeSettings:we};export{o as agents,S as agentsMonitor,ge as analytics,A as autoPhase,Y as autonomy,v as board,t as brand,s as changes,Z as checkpoint,he as codeEditor,j as collab,M as connection,m as context,P as cost,q as ctxMode,y as debug,Te as default,k as design,Se as designStudio,te as diff,x as dock,ae as errorBody,ne as fallback,me as fileExplorer,U as filePicker,V as fileRef,p as fleet,Q as goal,a as history,c as inspector,re as liveSessions,u as mailbox,r as menu,ce as message,N as mode,F as model,I as modelSwitcher,ie as monacoDiff,E as monitor,e as nav,l as nextSteps,ye as office,oe as officeMap,we as officeSettings,K as phase,H as plan,ee as process,_e as promptLib,b as providerModels,X as queue,h as refine,_ as refresh,D as sdd,de as sddBoard,fe as sddTask,pe as sddWizard,G as search,f as sessionPanel,w as sessionWatch,d as sessions,ue as shortcuts,T as sideEffects,i as sidePanel,ve as skillDetail,be as skillsList,g as specs,n as status,z as task,C as terminal,xe as timeline,W as toast,R as todos,B as toolGroup,se as toolInput,O as toolResult,J as transcript,le as watch,L as work,$ as worktree,Ce as worktrees};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
var e={chat:`Sessione`,agents:`Agenti`,history:`Cronologia`,files:`File`,changes:`Modifiche`,mailbox:`Posta`,skills:`Skill`,worktrees:`Worktree`,design:`Design Studio`,officemap:`Mappa uffici`,settings:`Impostazioni`,sddwizard:`Nuovo progetto SDD`,specs:`Specifiche`,sddboard:`Bacheca live`,autophase:`Fasi`,fleet:`Flotta`,inspector:`Ispettore`,prompts:`Prompt`},t={returnToChat:`{{name}} — torna alla chat`,returnToChatDefault:`WrongStack — torna alla chat`},n={connected:`Connesso`,disconnected:`Disconnesso`,idle:`Inattivo`,thinking:`In riflessione`,running:`In esecuzione`,waiting:`In attesa`,done:`Completato`,stopped:`Fermato`},r={moreWithHidden:`Altro, {{count}} elementi nascosti`,moreOptions:`Altre opzioni`,moreCompactHidden:`Altro — {{count}} pannelli/viste nascosti, palette, tema, monitor`,moreCompact:`Altro — palette, tema, monitor`,moreFull:`Altro — palette, tema, scorciatoie, monitor`,commandPalette:`Palette dei comandi`,keyboardShortcuts:`Scorciatoie da tastiera`,panels:`Pannelli`,views:`Viste`,theme:`Tema`,monitors:`Monitor`,fleetMonitor:`Monitor della flotta`,agentsMonitor:`Monitor degli agenti`},i={dragHint:`Trascina per ridimensionare · doppio clic per ripristinare`,collapse:`Comprimi pannello (Ctrl+\\)`},a={openDashboard:`Apri dashboard delle sessioni`},o={pending:`in attesa…`,empty:`Nessun agente`,emptyHint:`I sotto-agenti appaiono qui quando la flotta è attiva.`,runningCount:`{{count}} in esecuzione`,totalCount:`{{count}} totali`,openFull:`Apri vista agenti completa`,agentsLive:`AGENTI · LIVE`,doneCount:`{{count}} completati`,failedCount:`{{count}} falliti`,modelsLabel:`modelli`,shownLabel:`mostrati`,totalLabel:`totale`,leaderFleetTotals:`(leader {{leader}} · flotta {{fleet}})`,navHintJk:`j/k o ↑↓ per navigare`,escCloseDetail:`· Esc per chiudere il dettaglio`,noAgentsRunning:`Nessun agente in corso.`,contextUsage:`Utilizzo contesto`,lastToolLabel:`ultimo:`,unknownSession:`Sessione sconosciuta`,sessionCopyTitle:`Sessione: {{sid}} — clicca per copiare`,sessionWord:`sessione`,agentsCountSuffix_one:`{{count}} agente`,agentsCountSuffix_other:`{{count}} agenti`,sessionTitle:`Sessione: {{sid}}`,projectSuffix:` · Progetto: {{name}}`,statusIdle:`inattivo`},s={fileCount_one:`{{count}} file`,fileCount_other:`{{count}} file`,refreshTitle:`Aggiorna modifiche`,loading:`Caricamento modifiche…`,clean:`Nessuna modifica — l'albero di lavoro è pulito.`,selectPrompt:`Seleziona un file modificato per vederne il diff.`,unified:`Unificato`,unifiedTitle:`Diff unificato`,edit:`Modifica`,editTitle:`Diff side-by-side modificabile`,loadingDiff:`Caricamento diff…`,diffTimeout:`Il diff non è arrivato. Il file potrebbe essere cambiato o la connessione persa.`,binary:`File binario — diff non mostrato.`,tooLarge:`File troppo grande per il diff.`},c={showPanel:`Mostra pannello Ispettore (Flotta / Agenti / Audit)`,hidePanel:`Nascondi pannello Ispettore`,label:`Ispettore`,openAudit:`Apri scheda Audit`,tabFleet:`Flotta`,tabAgents:`Agenti`,tabAudit:`Audit`,collapseAria:`Comprimi pannello Ispettore`,collapseTitle:`Comprimi (Esc)`,noAgentsActive:`Nessun agente attivo`,agentsAppearHint:`Gli agenti appaiono qui quando la flotta è attiva.`,selected:`{{name}} (selezionato)`},l={header:`Prossimi passi`,autoSubmitting:`invio automatico tra`,clickToFill:`clic per compilare`,clickToFillTitle:`Clic per compilare: {{text}}`,auto:`auto`,willAutoSubmit:`Invio automatico dopo il countdown`},u={onlineCount:`{{count}} online`,messages:`Messaggi`,deleteAllTitle:`Elimina tutti i messaggi`,deleteAll:`Elimina tutti`,deleting:`Eliminazione…`,purgeTitle:`Purga messaggi obsoleti/orfani`,purge:`Purga`,purging:`Purga in corso…`,newLabel:`NUOVO`,empty:`Nessun messaggio.`,offlineCount:`+{{count}} offline`,timeNow:`ora`,deleteAllConfirmTitle_one:`Eliminare {{count}} messaggio?`,deleteAllConfirmTitle_other:`Eliminare tutti i {{count}} messaggi?`,deleteAllConfirmBody:`Il file della mailbox viene troncato per ogni agente. Operazione irreversibile.`,purgeConfirmTitle:`Purgare i messaggi obsoleti?`,purgeConfirmBody:`Rimuove i messaggi completati più vecchi di 1 giorno e quelli incompleti più vecchi di 7 giorni. I messaggi attivi vengono conservati.`,type:{note:`Nota`,ask:`Domanda`,assign:`Assegnazione`,steer:`Dirigi`,btw:`A proposito`,broadcast:`Broadcast`,status:`Stato`,result:`Risultato`},emptyDetail:`Nessun messaggio selezionato`,emptyDetailHint:`Clicca un messaggio nel pannello Mailbox per vederlo qui.`,readBy:`Letto da`,backToChat:`Torna alla chat`,completed:`Completato`,everyone:`tutti`,closeTitle:`Chiudi (Esc)`,replyTo:`In risposta a: {{id}}`,completedBy:`Completato da {{name}}`,completedByAt:`Completato da {{name}} il {{time}}`,outcome:`Risultato:`,task:`Attività:`,messageNotFound:`Messaggio non trovato`,messageNotFoundHint:`Questo messaggio potrebbe essere stato eliminato o rimosso.`},d={recentSessions:`Sessioni recenti`,deleteEmptyTitle_one:`Eliminare {{count}} sessione vuota?`,deleteEmptyTitle_other:`Eliminare {{count}} sessioni vuote?`,deleteEmptyConfirmBody:`Le sessioni senza utilizzo di token vengono rimosse dal disco.`,filterPlaceholder:`Filtra per titolo, modello, provider…`,clearFilter:`Cancella filtro`,noHistory:`Nessuna cronologia`,noHistoryHint:`Le tue conversazioni appariranno qui`,noMatches:`Nessuna corrispondenza`,noMatchesHint:`Prova un filtro diverso`,group:{favorites:`Preferiti`,today:`Oggi`,yesterday:`Ieri`,thisWeek:`Questa settimana`,earlier:`Precedenti`},nicknamePlaceholder:`Soprannome`,empty:`(vuoto)`,resuming:`riprende…`,active:`attiva`,renameTitleNickname:`{{nickname}} — originale: {{title}}`,renameTitle:`{{title}}
|
|
2
|
-
|
|
3
|
-
Doppio clic per rinominare`,unfavorite:`Rimuovi dai preferiti`,markFavorite:`Segna come preferito`,deleteSessionConfirmTitle:`Eliminare la sessione?`,deleteSessionConfirmBody:`"{{name}}" verrà rimossa dal disco. Operazione irreversibile.`,deleteSessionTitle:`Elimina sessione`},f={actions:{abort:`Interrompi`,newSession:`Nuova sessione`,export:`Esporta`,compact:`Comprimi`,newSessionTitle:`Avvia una nuova sessione (Ctrl+N)`,exportTitle:`Esporta la chat come markdown (Ctrl+E)`,compactTitle:`Comprimi la finestra di contesto`,clearTitle:`Cancella il contesto (Ctrl+L)`},model:`Modello`,modelTitle:`Cambia modello (Ctrl+M)`,context:`Contesto`,contextTitle:`Clicca per un dettaglio del contesto`,sessionLabel:`Sessione`,stats:{messages:`Messaggi`,elapsed:`Trascorso`,tokens:`Token`,cost:`Costo`,iteration:`Iterazione`,agents:`Agenti`,tokensSub:`{{in}} in / {{out}} out`,iterationOf:`di {{max}}`,agentsRunning:`{{count}} in esecuzione`},plan:`Piano`,planComplete:`{{pct}}% completato`,pinned:`Fissati`,quickSettings:`Impostazioni rapide`,autonomy:`Autonomia`,autonomyOptions:{off:`Off`,suggest:`Suggerisci`,auto:`Auto`,eternal:`Perpetuo`,"eternal-parallel":`Perpetuo Parallelo`},yolo:`Modalità YOLO`,yoloTitle:`Ignora le conferme degli strumenti`,refine:`Affina i prompt`,refineTitle:`Riscrivi i prompt prima dell'invio`,sound:`Suono al completamento`,soundTitle:`Riproduci un dolce suono al termine di un'esecuzione`,sessionId:`sessione {{id}}`},p={status:{running:`in esecuzione`,done:`completato`,failed:`fallito`,timeout:`timeout`,stopped:`fermato`},leader:`leader`,providerModel:`Provider / Modello`,elapsed:`Trascorso`,running:`in corso…`,iterations:`Iterazioni`,toolCalls:`Chiamate strum.`,cost:`Costo`,budgetExtensions:`Estensioni budget`,activity:`Attività`,budgetWarning:`avviso budget`,contextWindow:`Finestra di contesto`,tokensUsed:`{{used}} / {{max}} token`,toolRunning:`in esecuzione…`,lastTool:`ultimo strumento`,error:`Errore`,finalOutput:`Output finale`,copyOutput:`Copia output`,liveOutput:`Output live`,waitingOutput:`In attesa di output…`,outputHint:`L'output appare qui mentre l'agente trasmette il testo.`,toolLog:`Log strumenti ({{count}} chiamate)`,fail:`fallito`,moreTools:`+{{count}} altri strumenti`,cardRunning:`in esecuzione {{tool}}`,cardLastTool:`ultimo: {{tool}}`,contextPercent:`Contesto {{pct}}%`,doneCount:`{{count}} completati`,errCount:`{{count}} err`,statusRunning:`in corso`,statusDone:`completato`,statusFailed:`fallito`,statusTimeout:`timeout`,statusStopped:`fermato`,sessionPrefix:`sessione:`,currentTask:`Attività corrente`,performance:`Prestazioni`,uniqueTools:`Strumenti unici`,avgPerTool:`media {{ms}}ms per strumento`,context:`Contesto`,tokens:`Token`,ctxUsed:`{{pct}}% usato`,completed:`completato`,budgetWarningTitle:`⚡ Avviso budget`,hittingLimit:`Raggiunge il limite {{kind}} ({{used}}/{{limit}})`,hittingLimitTitle:`⚡ raggiunge il limite {{kind}} ({{used}}/{{limit}})`,budgetExt_one:`{{count}} estensione budget`,budgetExt_other:`{{count}} estensioni budget`,extendedTimes_one:`L'agente ha esteso il budget {{count}} volta per attività lunghe`,extendedTimes_other:`L'agente ha esteso il budget {{count}} volte per attività lunghe`,errorLabel:`Errore`,failureReason:`Motivo fallimento`,failed:`Fallito`,fleetMonitor:`MONITOR FLOTTA`,runningCount:`{{count}} in corso`,totalAgents_one:`{{count}} agente in totale`,totalAgents_other:`{{count}} agenti in totale`,noLeader:`nessun leader`,closeFleet:`Chiudi monitor flotta`,colName:`Nome`,colStatus:`Stato`,colActivity:`Attività`,colIters:`Iter.`,colTools:`Strum.`,colCost:`Costo`,colCtx:`CTX`,colExt:`Est.`,colReason:`Motivo`,noAgentsActive:`Nessun agente attivo`,agentsAppear:`Gli agenti appaiono qui quando la flotta è attiva.`,agentTimeline:`Cronologia agenti`,noAgentEvents:`Nessun evento di conversazione agente ancora.`,navHint:`↑↓ naviga`,selectDetailHint:`↵ seleziona dettaglio`,escHint:`Esc deseleziona / chiudi`,detailedView:`vista dettagliata`,closeBtn:`✕ chiudi`,selectAgentDetail:`Seleziona un agente per informazioni dettagliate`,selectAgentBody:`Clicca un agente della lista per metriche dettagliate, log strumenti, output in streaming e altro — simile alla vista dettagliata della cronologia chat.`,navigateWord:`naviga`,selectWord:`seleziona`,deselectWord:`deseleziona`},m={wsNotConnected:`WebSocket non connesso`,noData:`Nessun dato di debug ricevuto. Il server potrebbe non supportare il debug del contesto.`,title:`Dettaglio contesto`,windowUsage:`Utilizzo finestra`,contextMode:`Modalità contesto`,fetching:`Recupero del dettaglio del contesto…`,systemPrompt:`Prompt di sistema`,tools:`Strumenti`,messages:`Messaggi`,tokenAllocation:`Allocazione token`,systemTitle:`Sistema: {{tokens}}`,toolsTitle:`Strumenti: {{tokens}}`,messagesTitle:`Messaggi: {{tokens}}`,system:`Sistema`,toolBreakdown:`Dettaglio strumenti`,messagesSummary:`Messaggi ({{count}}) — {{total}} tok`,barWithTokens:`Finestra di contesto: {{tokens}} / {{max}} token ({{pct}})`,barPct:`Finestra di contesto: {{pct}}`,barClick:` — clicca per il dettaglio`},h={header:`✨ Affina prompt`,autoSend:`invio automatico in {{count}} s`,cancelTitle:`Annulla (Esc)`,editLabel:`Modifica il prompt affinato:`,editPlaceholder:`Modifica il prompt affinato...`,useEdit:`Usa modifica`,original:`Originale`,refined:`Affinato`,yourLanguage:`(la tua lingua)`,refinedTitle:`Clicca o premi Invio per usare questa versione`,english:`Inglese`,englishTitle:`Premi e per la versione inglese`,hintRefined:`affinato`,hintEnglish:`Inglese`,hintOriginal:`originale`,hintEdit:`modifica`,edit:`Modifica`,useRefined:`Usa affinato`},g={heading:`Specifiche`,subtitle:`Visualizza e gestisci lo sviluppo guidato dalle specifiche`,empty:`Nessuna spec trovata. Usa {{command}} per crearne una.`,tasks:`Attività ({{count}})`,doneCount:`{{count}} completate`,runningCount:`{{count}} in corso`,pendingCount:`{{count}} in attesa`,runTitle:`Esegui questa spec come una bacheca AutoPhase live`,run:`Esegui`,list:`Lista`,graph:`Grafo`,loadingTasks:`Caricamento attività…`},_={heading:`Verificatore di resilienza F5`,subtitle:`Conferma che l'ultima sessione attiva, la trascrizione e lo stato UI sopravvivono a un aggiornamento della pagina. Apri questa vista, poi premi F5 — ogni riga verde dovrebbe restare verde.`,recordProbe:`Registra sondaggio`,latestSession:`Ultima sessione attiva`,restoredLocal:`Ripristinato da localStorage`,sessionIdExtra:`id sessione: {{id}}`,noSessionYet:`nessuna sessione è ancora stata avviata`,activePointer:`Puntatore sessione attiva`,lastVisited:`timestamp lastVisitedAt`,never:`mai`,persistedEnv:`Ambiente persistente`,transcriptRehydrate:`Reidratazione trascrizione chat`,localTranscript:`Trascrizione locale recuperata`,messagesExtra:`{{count}} messaggi, {{queued}} in coda`,noMessages:`0 messaggi`,noBleed:`Nessuna perdita tra sessioni`,bleedExtra:`collegato={{bound}} vs attivo={{active}}`,transcriptBinds:`la trascrizione si lega alla sessione attiva`,uiWorkspace:`Area di lavoro UI`,noneValue:`(nessuno)`,payloadSize:`Carico utile localStorage (4 chiavi): {{count}} caratteri`,probeLog:`Registro sondaggi`,noProbes:`Nessun sondaggio ancora — premi il pulsante "Registra sondaggio" in alto, oppure F5 in questa vista, per registrare un controllo di reidratazione.`,simulatedF5:`F5 simulato: riesecuzione di persist rehydrate`},v={status:{pending:`In attesa`,in_progress:`In corso`,review:`Revisione`,failed:`Fallito`,completed:`Completato`,queued:`In coda`,blocked:`Bloccato`,cancelled:`Annullato`},newTaskTitle:`Nuova attività`,newTaskPlaceholder:`Titolo attività…`,addTask:`Aggiungi attività`,empty:`Nessuna fase ancora — avvia un'esecuzione AutoPhase per popolare la bacheca.`,summary:`{{phases}} fasi · {{tasks}} attività`,phases:`Fasi`,statusTab:`Stato`,dropHere:`Trascina le attività qui`,emptySpec:`Nessuna attività in questa spec ancora.`,depGraphHeading:`Grafo delle dipendenze`,worktreePrefix:`worktree: {{branch}}`},y={trendUp:`In aumento`,trendDown:`In diminuzione`,trendStable:`Stabile`,heading:`Dashboard di debug`,subtitle:`Monitoraggio in tempo reale per WrongStack WebUI`,refreshLabel:`Aggiorna:`,lastUpdated:`Ultimo aggiornamento: {{time}}`,fetchFailed:`Recupero delle metriche non riuscito`,fileWatcher:`File Watcher`,watcherStatus:`Stato watcher`,running:`In esecuzione`,stopped:`Fermo`,activeProjects:`Progetti attivi`,projectsWatched:`Progetti monitorati`,fileChanges:`Modifiche file`,totalDetected:`Totale rilevato`,filesProcessed:`File elaborati`,afterHash:`Dopo filtro hash`,broadcastsSent:`Broadcast inviati`,toClients:`Ai client WebUI`,debounceResets:`Reset debounce`,rapidWrites:`Scritture rapide successive`,avgDebounce:`Ritardo debounce medio`,actualDelay:`Ritardo effettivo applicato`,totalDelay:`Ritardo totale`,sumDelays:`Somma di tutti i ritardi`,browserPerf:`Prestazioni browser`,heapUsed:`Heap usato`,jsHeap:`Heap JavaScript`,heapTotal:`Heap totale`,totalHeap:`Dimensione totale heap`,pageUptime:`Tempo di attività pagina`,sinceLoad:`Dal caricamento`,rawData:`Dati grezzi`},b={using:`In uso`,noModelPicked:`(nessun modello scelto)`,clearAllowlist:`Cancella allowlist`,clearAllowlistAria:`Cancella l'allowlist salvata per {{provider}}`,refresh:`Aggiorna dal server`,refreshAria:`Aggiorna l'elenco modelli per {{provider}}`,probing:`Verifica…`,use:`Usa`,useModelAria:`Usa il modello {{model}} per {{provider}}`,differsHint:`L'elenco verificato differisce dall'allowlist salvata — riesegui {{command}} per rendere permanente.`},x={expandChip:`Espandi {{label}}`,collapseChip:`Comprimi {{label}}`,ahead:`{{count}} in avanti`,behind:`{{count}} indietro`,linesAdded:`{{count}} righe aggiunte`,linesDeleted:`{{count}} righe eliminate`,untrackedFiles:`{{count}} file non tracciati`,customizeTitle:`Personalizza chip del dock`,dockChips:`Chip del dock`,noActiveGoal:`Nessun obiettivo attivo`,noActiveGoalDetail:`Avvia un obiettivo dalla chat o dal comando goal.`},S={leaderBadge:`LEADER`,iters:`Iter.`,tools:`Strumenti`,activityBins:`Attività (12 bin)`,streamingOutput:`Output in streaming`,recentTools:`Strumenti recenti`,finalOutput:`Output finale`,heading:`Monitor agenti`,prevAgent:`Agente precedente`,nextAgent:`Agente successivo`,closeAria:`Chiudi monitor agenti`,hintPage:`←→ pagina`,hintNavigate:`↑↓ naviga elenco`,hintEsc:`Esc chiudi`},C={resize:`Ridimensiona terminali`,labelSingular:`Terminale`,labelPlural:`Terminali`,projectShell:`Shell del progetto`,maxTerminals:`Massimo {{count}} terminali`,newTerminal:`Nuovo terminale`,restart:`Riavvia terminale attivo`,closeAll:`Chiudi tutti i terminali`,closeDock:"Chiudi dock del terminale (Ctrl+`)",closeTab:`Chiudi {{name}}`,processExited:`[processo terminato con codice {{code}}]`},w={liveStream:`Stream dal vivo`,events_one:`{{count}} evento`,events_other:`{{count}} eventi`,interruptTitle:`Ferma cooperativamente questo agente al prossimo passo (non un kill)`,interrupt:`⏸ Interrompi`,interrupting:`…`,loading:`Caricamento sessione…`,done:`✓✓ fatto`,read:`✓ letto`,delivered:`⏳ consegnato`,agent:`Agente`,you:`Tu`,working:`{{name}} · in lavoro`,claude:`Claude`,priority:`Priorità`,placeholder:`{{label}} → questa sessione…`,send:`Invia`,sendHint:`⌘/Ctrl+Invio per inviare · visibile alla prossima iterazione dell'agente`,msgType:{steerLabel:`🔄 Dirigi`,steerHint:`Regola il comportamento durante l'attività`,askLabel:`❓ Chiedi`,askHint:`Domanda — attende una risposta`,assignLabel:`📋 Assegna`,assignHint:`Un'attività da svolgere`,noteLabel:`💬 Nota`,noteHint:`Per info, non urgente`},sentRunning:`Consegnato — l'agente in esecuzione lo vedrà al prossimo passo`,sentIdle:`Consegnato — il target è inattivo; appare nella sua mailbox, letto alla prossima esecuzione`,sentFailed:`Non riuscito: {{error}}`,interruptReason:`L'operatore ha richiesto l'arresto da Fleet HQ`,interruptSent:`Interruzione inviata — l'agente si ferma al prossimo passo (non un kill)`,interruptFailed:`Interruzione non riuscita: {{error}}`},T={empty:`Nessun effetto collaterale registrato ancora.`,emptyHint:`I comandi bash, le installazioni di pacchetti e le richieste di rete appariranno qui.`,heading:`Effetti collaterali`,exportTitle:`Esporta gli effetti collaterali filtrati come CSV`,all:`Tutti`,colTime:`Ora`,colTool:`Strumento`,colRisk:`Rischio`,colDetail:`Dettaglio`,colOutcome:`Esito`},E={elapsedHm:`{{h}}h {{m}}m fa`,elapsedMs:`{{m}}m {{s}}s fa`,elapsedS:`{{s}}s fa`,heading:`Monitor della flotta`,clientsHeading:`Client connessi`,terminal:`Terminale`,webui:`UI Web`,repl:`REPL`,totalConnected:`connessi in totale`,mailQueue:`Coda di posta`,total:`Totale`,open:`Aperti`,unread:`Non letti`,agents:`Agenti`,messagesSub:`messaggi`,uncompletedSub:`non completati`,waitingSub:`in attesa`,ofTotal:`su {{count}} totali`,agentRoster:`Elenco agenti`,liveMailActivity:`Attività posta dal vivo`,noActivity:`Nessuna attività recente`,mailboxAgents:`Agenti mailbox`,noMailboxAgents:`Nessun agente registrato`,moreCount:`+{{count}} altri`,agentFallback:`agente`,fleetAgents:`Agenti flotta`,noFleetAgents:`Nessun agente flotta in esecuzione`,iter:`iter.`,mailType:{sent:`Inviato`,delivered:`Consegnato`,read:`Letto`,completed:`Completato`}},D={status:{pending:`in attesa`,queued:`in coda`,in_progress:`in corso`,blocked:`bloccato`,review:`revisione`,failed:`fallito`,completed:`completato`,cancelled:`annullato`},activityHeading:`Attività`,feedEmpty:`Ancora nulla — gli eventi appaiono qui man mano che gli agenti prendono e completano le attività.`,destroyTitle:`Distruggere il progetto SDD?`,destroyDesc:`Questo cancella il run e il suo lavoro. Non può essere annullato (il revert opzionale preserva la cronologia).`,stopRun:`Ferma il run`,stopRunAgents_one:`Ferma il run ({{count}} agente attivo)`,stopRunAgents_other:`Ferma il run ({{count}} agenti attivi)`,removeWorktreesAll:`Rimuovi tutti i worktree git + branch wstack/ap/* — incluso il lavoro non mergiato`,removeWorktreesCount_one:`Rimuovi {{count}} worktree git + branch wstack/ap/* — incluso il lavoro non mergiato`,removeWorktreesCount_other:`Rimuovi {{count}} worktree git + branch wstack/ap/* — incluso il lavoro non mergiato`,deleteArtifacts:`Elimina tutti gli artefatti SDD (spec, grafo attività, board, sessione)`,revertMerged_one:`Revert anche {{count}} commit mergiato`,revertMerged_other:`Revert anche {{count}} commit mergiati`,revertHint:`Aggiunge commit di revert (cronologia preservata). Rifiutato se l'albero di lavoro è sporco.`,baseBranchFallback:`il branch di base`,noteLeaveMerged:`I commit mergiati resteranno sul branch di base. Spunta la casella sopra per annullare anche quelli.`,noteAbandon:`Assicurati di voler davvero abbandonare questo run.`,destroying:`Distruzione…`,destroyAll:`Distruggi tutto`,kanbanBacklog:`Backlog`,kanbanReady:`Pronto`,kanbanRunning:`In corso`,kanbanReview:`Revisione`,kanbanFailed:`Fallito`,kanbanDone:`Completato`,kanbanEmpty:`vuoto`},O={collapseToLines:`Comprimi alle prime {{count}} righe`,showAllLines:`Mostra tutte le {{total}} righe ({{more}} in più)`,exitCode:`codice di uscita:`,jsonLines:`JSON · {{count}} righe`,collapse:`comprimi`,expand:`espandi`},k={heading:`Design Studio — Galleria`,kitsCount:`{{count}} kit`,searchPlaceholder:`Cerca kit…`,stackTitle:`Stack per Use + Materialize`,wrote:`Scritto {{path}}`,materializeFailed:`Materialize non riuscito: {{error}}`,verifyError:`Verifica: {{error}}`,verifyOffPalette:`Verifica: {{pct}}% on-palette — {{count}} off-palette in {{files}} file`,verifyClean:`Verifica: pulito ✓ ({{files}} file on-palette)`,writing:`Scrittura del file di tema…`,scanning:`Scansione dei file UI…`,active:`Attivo`,reapply:`Riapplica`,use:`Usa`,materializeTitle:`Scrivi i token in un file di tema {{stack}}`,materialize:`Materializza`,verifyTitle:`Scansiona i file UI per colori fuori palette`,verify:`Verifica`,colors:`Colori`},A={summary_one:`{{count}} fase · {{pct}}% completato`,summary_other:`{{count}} fasi · {{pct}}% completato`,switchBoard:`Cambia bacheca`,boardsCount_one:`{{count}} bacheca…`,boardsCount_other:`{{count}} bacheche…`,toggleAutonomousTitle:`Attiva/disattiva modalità autonoma`,autonomous:`Autonomo`,manual:`Manuale`,resumeTitle:`Riprendi l'esecuzione`,pauseTitle:`Sospendi l'esecuzione`,resume:`Riprendi`,pause:`Sospendi`,stopTitle:`Ferma l'esecuzione — annulla immediatamente gli agenti in corso`,stop:`Ferma`,newTitle:`Cancella questa bacheca e avvia una nuova esecuzione AutoPhase`,newLabel:`Nuovo`,revertConfirm:`Annullare i commit dell'esecuzione?`,revertTitle:`Annulla questa esecuzione — git-revert dei commit effettuati e rimozione dei worktree`,revert:`Annulla`,goal:`Obiettivo`,planning:`Pianificazione delle fasi…`,planningBody:`Il tuo obiettivo è stato ricevuto. WrongStack lo sta scomponendo in fasi e attività — la bacheca appare qui appena il piano è pronto.`,startHeading:`Avvia un piano di fasi`,startBody:`Descrivi cosa vuoi costruire. WrongStack pianificherà fasi e attività, poi le eseguirà — osserva e guida l'esecuzione sulla bacheca.`,startPlaceholder:`es. Crea un'API REST per la gestione utenti con Express e SQLite...`,isolateLabel:`Isola ogni fase nel suo worktree git`,startButton:`Avvia AutoPhase`,ctrlHint:`Ctrl+Invio per avviare`,isolateOn:`le fasi girano in worktree isolati, uniti in squash`,isolateOff:`le fasi girano direttamente sul ramo corrente`,lanes:`Corsie`,graph:`Grafo`,planningAck:`🚀 **AutoPhase** — ricevuto. Sto pianificando le fasi per il tuo obiettivo…`},j={noObservers:`Nessun osservatore dal vivo`,observerTitle:`Entra come osservatore in sola lettura (Fase 1)`,observerRole:`osservatore`,annotatorTitle:`Entra come annotatore — lascia note sugli strumenti (Fase 2)`,annotatorRole:`annotatore`,controllerTitle:`Entra come controllore — può mettere in pausa l'agente (Fase 3)`,controllerRole:`controllore`,errorPrefix:`Collab: {{error}}`,dismiss:`chiudi`,observers_one:`{{count}} osservatore`,observers_other:`{{count}} osservatori`,annotationsTitle:`{{count}} annotazione/i aperte — annotatori in revisione`,notes_one:`{{count}} nota`,notes_other:`{{count}} note`,pausedTitle:`Ciclo agente in pausa — un controllore sta revisionando`,paused:`in pausa`,joinedTitle:`Entrato {{time}}`,grantTitle:`Cedi controllo — promuovi questo partecipante a controllore`,injectTitle:`Inietta un risultato sintetico per una chiamata strumento in corso`,inject:`Inietta`,resumeTitle:`Riprendi il ciclo dell'agente`,resume:`Riprendi`,pauseTitle:`Metti in pausa l'agente prima della prossima chiamata strumento`,pauseAgent:`Metti in pausa agente`,leaveTitle:`Lascia la sessione di osservazione`,leave:`Lascia`,injectToolResult:`Inietta risultato strumento`,close:`chiudi`,targetTool:`id tool_use target`,targetPlaceholder:`scegli una chiamata in corso o digita un id tool_use`,toolFallback:`strumento`,noPendingTools:`Nessuna chiamata strumento in corso — digita un id tool_use o metti prima in pausa l'agente.`,resultContent:`Contenuto risultato`,resultPlaceholder:`Risultato strumento sintetico fornito all'agente al posto dell'esecuzione`,markError:`segna come errore`,reasonPlaceholder:`motivo (registro audit)`,queueInjection:`Metti in coda iniezione`,controllerInjection:`iniezione controllore`},M={reconnecting:`Riconnessione al backend (tentativo {{attempt}}) — nuovo tentativo tra {{remaining}} s`,disconnected:`Disconnesso dal backend`,retry:`Riprova ora`,retryTitle:`Riprova la connessione ora`,dismissTitle:`Chiudi (il chip nella barra superiore mostra ancora lo stato)`},N={modePrefix:`modalità:`,activeTitle:`Modalità attiva`,heading:`Modalità`,defaultName:`Predefinito`,defaultDesc:`Comportamento standard dell'agente`},P={clickTitle:`Clicca per il dettaglio dei costi per turno`,heading:`Dettaglio costi`,noPricing:`Nessuna tariffazione per il modello attuale — i valori di costo sono zero.`,noTurns:`Nessun turno completato ancora. Esegui un prompt per vedere il costo per turno qui.`,topExpensive_one:`Turno più costoso`,topExpensive_other:`I {{count}} turni più costosi`},F={runDefault:`Predefinito del run`,useRunDefault:`Usa predefinito del run`,filterPlaceholder:`Filtra modelli…`,loading:`Caricamento modelli…`,noMatch:`Nessuna corrispondenza`},I={filterPlaceholder:`Filtra provider e modelli…`,noSavedProviders:`Nessun provider salvato — registra prima una chiave nelle Impostazioni.`,active:`attivo`},L={todos:`Da fare`,tasks:`Attività`,plan:`Piano`},R={toggleAria:`Attiva/disattiva: {{content}}`,removeTitle:`Rimuovi attività`,removeAria:`Rimuovi "{{content}}"`,completedCount_one:`{{count}} completata`,completedCount_other:`{{count}} completate`},z={start:`Avvia`,complete:`Completa`,retry:`Riprova`,assign:`Assegna`,assignTitle:`Assegna agente`,unassigned:`Non assegnato`,statusPending:`In attesa`,statusInProgress:`In corso`,statusBlocked:`Bloccato`,statusFailed:`Fallito`,statusReview:`Revisione`,statusDone:`Completato`,startTitle:`Avvia`,completeTitle:`Completa`,fail:`Fallisci`,failTitle:`Segna come fallito`,boardCount:`{{total}} attività · {{done}} completate`},B={toolCalls_one:`{{count}} chiamata strumento`,toolCalls_other:`{{count}} chiamate strumento`},V={removeTitle:`Rimuovi riferimento`,linesCount_one:`{{count}} riga`,linesCount_other:`{{count}} righe`},H={statusOpen:`Aperto`,statusInProgress:`In corso`,statusDone:`Completato`,startTitle:`Avvia`,doneTitle:`Segna come completato`,reopenTitle:`Riapri`,reopen:`Riapri`},U={heading:`@ File`,noMatch:`Nessun file corrisponde a "{{query}}"`,searching:`Ricerca nel progetto…`},W={dismiss:`Chiudi`},G={placeholder:`Cerca nella chat…`,prevHit:`Risultato precedente`,nextHit:`Risultato successivo`,close:`Chiudi (Esc)`},K={statusPending:`In attesa`,statusReady:`Pronto`,statusRunning:`In esecuzione`,statusPaused:`In pausa`,statusCompleted:`Completato`,statusFailed:`Fallito`,statusSkipped:`Saltato`,heading:`Fasi`,autonomousOn:`● Autonomo`,autonomousOff:`○ Manuale`,autonomousOnTitle:`Modalità autonoma attiva — clicca per mettere in pausa`,autonomousOffTitle:`Modalità manuale — clicca per attivare l'autonomo`,overallProgress:`Progresso complessivo`,tasksSuffix:`{{done}}/{{total}} attività`,agentsSuffix_one:`{{count}} agente`,agentsSuffix_other:`{{count}} agenti`},q={triggerTitle:`Modalità finestra di contesto`,ctxPrefix:`ctx:`,opsHeading:`Operazioni di contesto`,compactNow:`Compatta ora`,compactNowDesc:`Ometti output strumento vecchi`,compactAggressive:`Compattazione aggressiva`,compactAggressiveDesc:`Omissione massima ora`,repairContext:`Ripara contesto`,repairDesc:`Correggi blocchi tool-use orfani`,debugContext:`Debug contesto`,debugDesc:`Dettaglio dimensioni per sezione`,windowHeading:`Finestra di contesto`,keepElide:`mantieni {{k}} recenti · ometti {{t}}+ token`,fallbackName:`Bilanciato`,fallbackDesc:`Compattazione rolling predefinita`},J={kindAssistant:`Assistente`,kindThinking:`Pensiero`,kindToolCall:`Chiamata strumento`,kindToolResult:`Risultato strumento`,kindError:`Errore`,kindStatus:`Stato`,kindSystem:`Sistema`,title:`Cronologia chat`,copyTitle:`Copia cronologia chat agente`,empty:`Nessuna cronologia chat per questo agente ancora.`},Y={heading:`Modalità autonomia`,titlePrefix:`Autonomia: {{label}}`,descOff:`Controllo manuale totale — l'agente attende il tuo input.`,descSuggest:`L'agente suggerisce i prossimi passi ma attende approvazione.`,descAuto:`L'agente procede automaticamente dopo un breve ritardo di conferma.`,descEternal:`L'agente gira in autonomia fino al completamento dell'obiettivo.`,descEternalParallel:`Esecuzione autonoma multi-agente — modalità flotta.`},X={heading:`Coda dei messaggi`,subtitle:`{{count}} in coda · messaggi inviati prima che l'agente finisca`,btwTitle:`A proposito — inviato come follow-up senza interrompere l'agente in corso`,steerTitle:`Guida — interrompe l'agente in corso e lo reindirizza con questo messaggio`,queueTitle:`In coda — trattenuto fino al completamento del run dell'agente, poi inviato in ordine`,sortNewestTitle:`Ordinato dal più recente — clicca per ordinare dal più vecchio`,sortOldestTitle:`Ordinato dal più vecchio — clicca per ordinare dal più recente`,newest:`Più recente`,oldest:`Più vecchio`,clear:`Svuota`,clearTitle:`Cancella tutti i messaggi in coda`,closeTitle:`Chiudi`,emptyTitle:`La coda è vuota`,emptyBody:`Usa i pulsanti btw / steer / aggiungi a coda accanto all'input per aggiungere messaggi. Gli elementi in coda sono inviati in ordine al completamento del run dell'agente.`,removeTitle:`Rimuovi dalla coda`,footer:`I messaggi sono inviati in ordine di arrivo al completamento del run dell'agente. Usa l'ordinamento per vedere i più recenti prima.`},Z={heading:`Checkpoint di sessione`,countSuffix_one:`{{count}} checkpoint`,countSuffix_other:`{{count}} checkpoint`,description:`Riavvolgi la sessione a qualsiasi checkpoint. Messaggi e modifiche ai file tornano a quel punto — l'LLM continua da lì come se nulla fosse successo dopo.`,emptyTitle:`Nessun checkpoint ancora`,emptyBody:`I checkpoint sono creati automaticamente a ogni messaggio inviato. Invia qualche messaggio e torna.`,latest:`recente`,msgSuffix_one:`{{count}} msg`,msgSuffix_other:`{{count}} msg`,footerPre:`Clicca un checkpoint per riavvolgere`,footerPost:`per chiudere`},Q={statusActive:`Attivo`,statusPaused:`In pausa`,statusDone:`Completato`,statusFailed:`Fallito`,statusAbandoned:`Abbandonato`,heading:`Obiettivo`,refined:`Raffinato`,progress:`Progresso`,iterations:`iterazioni`,deliverables:`Deliverable`,recentActivity:`Attività recente`},$={cleanTitle_one:`Pulire {{count}} worktree orfano?`,cleanTitle_other:`Pulire {{count}} worktree orfani?`,cleanMessage:`Rimuove forzatamente ogni worktree git + branch wstack/ap residuo da run precedenti. Il lavoro non mergiato al loro interno va perso.`,cleanConfirm:`Pulisci orfani`,orphanCount_one:`{{count}} worktree orfano da run precedenti`,orphanCount_other:`{{count}} worktree orfani da run precedenti`,andMore:`…e {{count}} altri`,cleanButtonTitle:`Rimuovi forzatamente tutti i worktree + branch orfani`,removed_one:`✓ {{count}} worktree orfano rimosso.`,removed_other:`✓ {{count}} worktree orfani rimossi.`,cleanupFailed:`pulizia fallita`,lanesHeading:`Worktree`,base:`base`,isolatedCount_one:`{{count}} isolato`,isolatedCount_other:`{{count}} isolati`,statusAllocating:`allocazione`,statusActive:`attivo`,statusCommitting:`commit`,statusMerging:`merge`,statusMerged:`mergiato`,statusConflict:`conflitto`,statusFailed:`fallito`,conflictBadge:`CONFLITTO`,graphAria:`Grafo dei branch worktree da {{base}}`,mergedLabel:`✓ mergiato → {{base}}`},ee={heading:`Processi in esecuzione`,subtitle:`{{active}} attivi · {{total}} totali`,killAll:`Termina tutti`,emptyTitle:`Nessun processo tracciato`,emptyBody:`I processi appaiono qui quando l'agente esegue strumenti bash o exec. I processi attivi mostrano un LED pulsante.`,pidLabel:`PID {{pid}}`,protected:`protetto`,protectedTitle:`Protetto — sopravvive a kill/killAll`,killTitle:`Termina PID {{pid}}`},te={tooLarge:`Diff omesso (file troppo grande per il rendering in linea).`},ne={placeholder:`Aggiungi un modello di fallback…`,emptyHint:`Provati in ordine quando il modello primario è limitato o si blocca.`,moveUp:`Sposta su`,moveDown:`Sposta giù`,manualPlaceholder:`provider/modello`,addTitle:`Aggiungi riferimento modello`},re={loading:`Caricamento sessioni...`,apiUnavailable:`API di sessione non disponibile:`,empty:`Nessuna sessione live. Apri un'altra istanza wstack per vederla qui.`,heading:`Sessioni live ({{count}})`,autoRefresh:`aggiornamento automatico ogni 5 s`,pidLabel:`PID {{pid}}`,agentMeta:`{{iter}} iter · {{tools}} strumenti · {{ago}}`,andMore:`... e altre {{count}}`,noAgents:`Nessun agente`},ie={applyTitle:`Scrivi la versione modificata sul disco`,applying:`Applicazione…`,applied:`Applicato`,apply:`Applica`},ae={showStack_one:`Mostra trace dello stack ({{count}} frame)`,showStack_other:`Mostra trace dello stack ({{count}} frame)`,hideStack_one:`Nascondi trace dello stack ({{count}} frame)`,hideStack_other:`Nascondi trace dello stack ({{count}} frame)`},oe={liveHeading:`Live`,clients:`Client`,agents:`Agenti`,model:`Modello`,mode:`Modalità`,toolCalls:`Chiamate strum.`,displayHeading:`Display`,statsHud:`HUD stat`,legends:`Legende`,minimap:`Minimappa`,zoomControls:`Controlli zoom`,animateWires:`Anima fili`,backgroundHeading:`Sfondo`,bgDots:`Punti`,bgLines:`Linee`,bgCross:`Croce`,bgNone:`Nessuno`},se={noParams:`(nessun parametro)`,itemCount_one:`{{count}} elemento`,itemCount_other:`{{count}} elementi`,keyCount_one:`{{count}} chiave`,keyCount_other:`{{count}} chiavi`},ce={roleYou:`Tu`,roleTool:`Strumento`,roleThinking:`Pensiero`,roleAssistant:`Assistente`,inputLabel:`Input`,downloadTitle:`Scarica come file`,empty:`(vuoto)`,hideDetails:`Nascondi dettagli`,showDetails:`Mostra dettagli`,showDetailsLines_one:`Mostra dettagli ({{count}} riga)`,showDetailsLines_other:`Mostra dettagli ({{count}} righe)`,editHint:`⌘/Ctrl+Invio per salvare · Esc per annullare`,saveResend:`Salva e reinvia`,thinkingProcess:`Processo di pensiero`,thinkingMeta:`iter {{iter}} · {{dur}} · {{lines}}`,replay:`replay`,linesSuffix_one:`{{count}} riga`,linesSuffix_other:`{{count}} righe`,copyLog:`Copia log`,showFullLog:`Mostra log completo`,typing:`Scrive…`,noContent:`Nessun contenuto`,failedToSend:`⚠ Invio fallito`,autoPaused:`⚠️ _Avanzamento automatico in pausa — raggiunto il numero massimo di turni automatici consecutivi. Digita qualcosa per continuare (l'autonomia resta attiva)._`,rsIterations:`Iterazioni: {{n}}`,rsTools:`Chiamate strum.: {{n}}`,rsElapsed:`Trascorso: {{s}}`,rsCost:`Costo: {{c}}`,useInput:`Input: {{n}}`,useOutput:`Output: {{n}}`,useCacheRead:`Lettura cache: {{n}}`,useCost:`Costo: {{c}}`,renderedLabel:`Renderizzato`,rawLabel:`Grezzo`,showRenderedTitle:`Mostra markdown renderizzato`,showRawTitle:`Mostra sorgente markdown grezzo`,editTitle:`Modifica e reinvia questo prompt`,editLabel:`Modifica`,unpinTitle:`Rimuovi pin`,pinTitle:`Fissa questa risposta`,pinnedLabel:`Fissato`,pinLabel:`Fissa`,regenerateTitle:`Rigenera questa risposta`,retryLabel:`Riprova`},le={toolFallback:`strumento`,toolFailed:`Strumento fallito`},ue={heading:`Scorciatoie da tastiera`,footerPre:`Premi`,footerPost:`in qualsiasi momento per riaprire questa lista.`,sectionGlobal:`Globali`,sectionTuiParity:`Parità pannello TUI`,sectionFleet:`Flotta & Agenti`,sectionChatInput:`Input chat`,sectionChat:`Chat`,sectionChatNav:`Navigazione chat (senza scrivere)`,dCommandPalette:`Apri palette comandi`,dShowOverlay:`Mostra questa overlay scorciatoie`,dToggleSidebar:`Mostra/nascondi barra laterale`,dOpenPanel:`Apri pannello laterale (Sessione, Agenti, Cronologia, File, Changes, Messaggi, Competenze, Office Map)`,dDesignStudio:`Apri pannello Design Studio`,dWorktrees:`Apri pannello Worktree`,dFocusInput:`Focalizza l'input dei messaggi`,dSessionPanel:`Pannello sessione`,dFleetOverlay:`Overlay monitor flotta`,dAgentsOverlay:`Overlay monitor agenti`,dWorktreeMonitor:`Monitor worktree`,dPlanPanel:`Pannello piano`,dTodosPanel:`Pannello attività`,dQueuePanel:`Pannello coda`,dProcessMonitor:`Monitor processi`,dGoalPanel:`Pannello obiettivo`,dSessionsDashboard:`Dashboard sessioni`,dOfficeMap:`Office map del coordinatore`,dDockPicker:`Selettore chip del dock`,dOpenFleet:`Apri overlay monitor flotta`,dOpenAgents:`Apri overlay monitor agenti`,dNavigateAgents:`Naviga gli agenti nel monitor`,dSelectAgent:`Seleziona agente focalizzato`,dCloseOverlay:`Chiudi overlay attivo`,dSendMessage:`Invia messaggio`,dNewline:`Inserisci una nuova riga`,dRecallPrev:`Riprendi prompt precedente (input vuoto)`,dRecallNext:`Riprendi prompt successivo`,dSlashPopup:`Apri popup comandi slash`,dAutocomplete:`Autocompleta comando evidenziato`,dDismissPopup:`Chiudi popup / pulisci input`,dSearchChat:`Cerca nella chat attuale`,dClearContext:`Pulisci contesto (come /clear)`,dNewSession:`Avvia nuova sessione (come /new)`,dExportMarkdown:`Esporta chat come markdown`,dModelSwitcher:`Overlay selettore modello rapido`,dCompactDensity:`Attiva/disattiva densità UI compatta`,dAbortRun:`Interrompi run in corso (durante esecuzione)`,dFocusNext:`Focalizza messaggio successivo (alias: ↓)`,dFocusPrev:`Focalizza messaggio precedente (alias: ↑)`,dJumpFirst:`Vai al primo messaggio`,dJumpLast:`Vai all'ultimo messaggio`,dCopyFocused:`Copia testo messaggio focalizzato`,dClearFocused:`Cancella messaggio focalizzato`},de={titleFallback:`Board SDD live`,defaultModelTitle:`Modello worker predefinito a livello di run (gli override per task hanno la precedenza)`,graphLabel:`Grafo`,kanbanLabel:`Kanban`,retryAllTitle:`Rimetti ogni attività fallita in pending`,retryFailed:`Riprova fallite ({{count}})`,resume:`Riprendi`,pause:`Pausa`,stop:`Ferma`,cleanTitle:`Rimuovi i worktree git + branch wstack/ap del run`,cleanWorktrees:`Pulisci worktree`,rollbackTitle:`Revert di {{count}} commit mergiati su {{base}}`,rollback:`Rollback ({{count}})`,stopping:`Arresto…`,destroying:`Distruzione…`,destroyTitle:`Ferma, rimuovi tutti i worktree, revert opzionale dei commit mergiati ed elimina il progetto SDD`,destroy:`Distruggi`,statDone:`fatti`,statRunning:`in corso`,statFailed:`falliti`,statWave:`ondata`,statElapsed:`trascorso`,noActiveWorkers:`nessun worker attivo`,deadlock:`Stallo — attività bloccate da lavoro fallito:`,noRunTitle:`Nessun run SDD attivo.`,noRunBody:`Avviane uno dalla procedura New SDD Project o tramite /sdd execute nella CLI — gli agenti appaiono qui live, ciascuno in un worktree isolato.`,clickTaskHint:`clicca un'attività per i dettagli`,lcClean:`Pulizia`,lcRollback:`Rollback`,lcDestroy:`Distruzione`,lcFailed:`{{op}} fallito: {{reason}}`,lcUnknownError:`errore sconosciuto`,lcWorktrees_one:`{{count}} worktree rimosso`,lcWorktrees_other:`{{count}} worktree rimossi`,lcCommits_one:`{{count}} commit revertato`,lcCommits_other:`{{count}} commit revertati`,lcDeleted:`eliminato {{items}}`,lcNothing:`nulla da fare`,lcNote:`{{op}}: {{body}} — nota: {{reason}}`,lcOk:`{{op}}: {{body}}`},fe={backTitle:`Torna all'attività`,workingOn:`lavora a questa attività`,assigned:`assegnato`,metaPriority:`Priorità`,metaType:`Tipo`,metaDuration:`Durata`,metaElapsed:`Trascorso`,metaRetries:`Tentativi`,metaWorktree:`Worktree`,workerModel:`Modello worker`,runDefault:`predefinito del run: {{model}}`,runDefaultPlaceholder:`Predefinito del run`,runDefaultPlaceholderModel:`Predefinito del run ({{model}})`,verificationCmd:`Comando di verifica`,gatesCompletion:`gating del completamento (exit 0)`,verifyPlaceholder:`es. pnpm vitest run path/to/file`,addVerify:`+ Aggiungi comando di verifica`,description:`Descrizione`,timeline:`Cronologia`,dependsOn:`Dipende da`,blocks:`Blocca`,newWorkerPlaceholder:`Nome nuovo worker…`,confirmStop:`Fermare questa attività in corso?`,confirmDelete:`Eliminare questa attività dal run?`,retryTitle:`Rimetti questa attività in pending`,reassign:`Riassegna`,stopTitle:`Interrompi il worker su questa attività`,splitTitle:`Dividi questa attività in sotto-attività delegate a worker separati`,split:`Dividi`,splitHint:`Una sotto-attività per riga — Titolo :: descrizione (descrizione facoltativa)`,splitPlaceholder:`Scrivi il layer dati :: aggiungi il repository
|
|
4
|
-
Collega l'UI`,splitInto:`Dividi in sotto-attività`,deleteTitle:`Rimuovi questa attività non avviata dal run`},pe={phaseStart:`Avvia`,phaseInterview:`Intervista`,phaseSpecReview:`Revisione spec`,phasePlanning:`Pianificazione`,phaseTaskReview:`Revisione attività`,phaseRunning:`In corso`,phaseDone:`Completato`,titleFallback:`Nuovo progetto SDD`,questionsSuffix:`{{cur}}/{{max}} domande`,tasksSuffix:`{{count}} attività`,runCfgTitle:`Config del run — modello predefinito + catena di fallback`,modelsLabel:`Modelli`,startRun:`Avvia run`,defaultWorkerModel:`Modello worker predefinito`,leaderDefaultPlaceholder:`Leader / predefinito sessione`,useSessionDefault:`Usa predefinito sessione`,fallbackChain:`Catena di fallback`,appliesToAll:`Si applica a ogni attività. Override per attività dal board live dopo l'avvio.`,parallelAgents:`Agenti paralleli`,isolateWorktrees:`Isola in worktree git`,worktreeOn:`Ogni attività gira nel proprio worktree, squash-mergiato al completamento.`,worktreeOff:`Le attività girano direttamente sul branch corrente (nessun isolamento).`,goalPrompt:`Cosa vuoi costruire?`,goalPlaceholder:`es. Aggiungi login OAuth (Google + GitHub) con gestione sessione`,startingInterview:`Avvio intervista…`,startInterview:`Avvia intervista`,introBody:`Un agente isolato ti intervista per costruire una spec, la scompone in un grafo di attività ordinato per dipendenze, poi una vera flotta multi-agente la esegue — da seguire live sul board.`,taskGraphSummary:`Grafo attività · {{count}} attività, ordinate per dipendenze`,dragToExplore:`trascina per esplorare`,show:`mostra`,goalLabel:`Obiettivo`,implementationPlan:`Piano di implementazione`,approveSpec:`Approva spec → pianifica implementazione`,approveTasks:`Approva attività`,approvePlan:`Approva piano`,answerPlaceholder:`Rispondi alla domanda…`,changePlaceholder:`Richiedi una modifica…`},me={emptyDir:`vuoto`,loadFailed:`Caricamento file fallito: {{error}}`,expandAllTitle:`Espandi tutte le cartelle`,expandAll:`Espandi tutto`,collapseAllTitle:`Comprimi tutte le cartelle`,collapse:`Comprimi`,folders_one:`{{count}} cartella`,folders_other:`{{count}} cartelle`,currentDirTitle:`Cartella corrente: {{path}}`,navigateToTitle:`Vai a {{path}}`,filesSuffix_one:`{{count}} file`,filesSuffix_other:`{{count}} file`,goToDir:`vai alla cartella`,navigateParentTitle:`Vai alla cartella padre di {{path}}`,parentDirectory:`cartella padre`,noFiles:`Nessun file trovato`,copyAbsPath:`Copia percorso assoluto`,copyRelPath:`Copia percorso relativo`,openInTerminal:`Apri nel terminale`,openInFileManager:`Apri nel file manager`,mentionInChat:`Menziona in chat`,copyPath:`Copia percorso`},he={sendSelectionAction:`Invia selezione alla chat`,noFilesOpen:`Nessun file aperto`,selectToEdit:`Seleziona un file dall'esploratore per modificare`,sendSelectedTitle:`Invia le righe selezionate alla chat`,mentionFileTitle:`Menziona questo file in chat`,sendToChat:`Invia alla chat`,mentionFile:`Menziona file`,loadingEditor:`Caricamento editor…`,selectTab:`Seleziona una scheda per vedere il contenuto`},ge={loading:`Caricamento analytics…`,heading:`Dashboard Analytics`,autoRefresh:`aggiornamento ogni 10 s`,liveSessions:`Sessioni live`,agents:`Agenti`,agentsActive:`{{count}} attivi`,totalEvents:`Eventi totali`,categoriesSub:`{{count}} categorie`,toolCalls:`Chiamate strum.`,iterationsSub:`{{count}} iterazioni`,sessionCost:`Costo sessione`,tokensSub:`{{input}} in / {{output}} out`,sessionDuration:`Durata sessione`,messagesSub:`{{count}} messaggi`,eventsByCategory:`Eventi per categoria`,noEvents:`Nessun evento registrato.`,topEvents:`Eventi principali`,activeSessionUsage:`Utilizzo sessione attiva`,provider:`Provider`,model:`Modello`,inputTokens:`Token in ingresso`,outputTokens:`Token in uscita`,cacheRatio:`Rapporto cache`,filesRead:`File letti`,noSession:`Nessuna sessione attiva o in attesa di dati…`,healthErrors:`Salute & errori`,errorEvents:`Eventi di errore`,warningEvents:`Eventi di avviso`,cacheHitRate:`Tasso di hit cache`,totalCategories:`Categorie totali`,waitingData:`In attesa di dati…`,recentEvents:`Eventi recenti`,noRecentEvents:`Nessun evento recente. Interagisci con l'UI per generare eventi.`},_e={searchPlaceholder:`Cerca prompt…`,newPrompt:`+ Nuovo prompt`,all:`Tutti`,recent:`🕘 Recenti`,favorites:`★ Preferiti`,noMatch:`Nessun prompt corrisponde.`,newPromptHeading:`Nuovo prompt`,titlePlaceholder:`Titolo *`,descPlaceholder:`Descrizione su una riga`,categoryPlaceholder:`Categoria`,tagsPlaceholder:`tag, separati, da virgola`,contentPlaceholder:`Contenuto del prompt * — usa {{name}} per le variabili`,variables:`Variabili`,addVar:`+ var`,varNamePlaceholder:`nome`,varDescPlaceholder:`descrizione`,removeVarTitle:`Rimuovi variabile`,required:`obbligatorio`,multiline:`multiriga`,enumPlaceholder:`enum: a, b, c`,savePrompt:`Salva prompt`,saveFailed:`Impossibile salvare il prompt.`,titleContentRequired:`Titolo e contenuto sono obbligatori.`,toggleFavoriteTitle:`Toggle preferito`,selectOption:`— scegli —`,fillMissing:`Compila: {{missing}}`,insertIntoChat:`Inserisci nella chat`,selectPromptHint:`Seleziona un prompt per anteprima e inserimento.`},ve={scopeProject:`Progetto`,scopeGlobal:`Globale`,scopeBundled:`Incluso`,timeoutError:`Timeout della richiesta. Riprova.`,updateFailed:`Aggiornamento fallito`,saveFailed:`Salvataggio fallito`,uninstallFailed:`Disinstallazione fallita`,noSkillSelected:`Nessuna competenza selezionata`,selectSkillHint:`Seleziona una competenza dalla sidebar per vederne la documentazione`,goToChat:`Vai alla chat`,openSourceRepo:`Apri repo sorgente`,copySourceUrl:`Copia URL sorgente`,updatedLabel:`↑ Aggiornato: {{list}}`,upToDateLabel:`— Aggiornato: {{list}}`,errorsLabel:`✗ {{list}}`,checkUpdatesTitle:`Cerca aggiornamenti`,exportTitle:`Esporta competenza come .md`,editTitle:`Modifica competenza`,uninstallTitle:`Disinstalla competenza`,closeTitle:`Chiudi e vai alla chat`,backTitle:`Indietro`,forwardTitle:`Avanti`,relatedFiles:`File correlati`,references:`Riferimenti`,goToSkillTitle:`Vai a {{name}}`,loadingContent:`Caricamento contenuto…`,editingLabel:`Modifica di {{name}}`,editStats:`{{lines}} righe · {{words}} parole · {{chars}} caratteri`,charsWarningFmt:`⚠ {{used}} MB / {{limit}} MB`,draftSaved:`Bozza salvata`,draftRestored:`Bozza ripristinata`,discardDraft:`Scarta bozza`,splitViewTitle:`Vista divisa`,hidePreviewTitle:`Nascondi anteprima`,contentPlaceholder:`Contenuto competenza (markdown)...`,loadFailed:`Caricamento contenuto fallito`,noContent:`Nessun contenuto disponibile`,uninstallSkillHeading:`Disinstalla competenza`,uninstallConfirm:`Disinstallare {{name}}?`,uninstallRemovePath:`Questo rimuoverà la competenza da {{path}} e non può essere annullato.`,uninstallAction:`Disinstalla`},ye={sessionStats:`Statistiche sessione`,clients:`Client`,input:`Ingresso`,output:`Uscita`,cost:`Costo`,agentsSuffix:`agenti`,upPrefix:`da {{time}}`,webuiClient:`Client WebUI`,disconnected:`Disconnesso`,connected:`Connesso`,tuiClient:`Client TUI`,terminal:`Terminale`,repl:`REPL`,coordinator:`COORDINATORE`,fleetSummary:`Riepilogo flotta`,toolCallsLabel:`Chiamate strum.`,tokensLabel:`Token`,coordinatingFleet:`Coordina la flotta`,donePrefix:`✓ completato ·`,failedPrefix:`✕ fallito ·`,seenPrefix:`visto {{time}} fa`,availableDesk:`Scrivania libera`,mailboxHub:`Hub Posta`,unreadSuffix_one:`{{count}} non letto`,unreadSuffix_other:`{{count}} non letti`,allClear:`Tutto letto`,total:`Totale`,unreadLabel:`Non letti`,liveActivity:`Attività live`,waitingActivity:`In attesa di attività…`,now:`ora`,fleetHq:`QG Flotta WrongStack`,live:`LIVE`,legendStatus:`Stato`,legendActive:`Attivo`,legendIdle:`Inattivo`,legendError:`Errore`,legendConnections:`Connessioni`,legendMail:`Posta`,legendTask:`Attività`,legendStatusConn:`Stato`,arrange:`Disponi`,arrangeTitle:`Riporta i nodi alla piantina`,feed:`Feed`,feedTitle:`Mostra/nascondi feed attività live`,broadcast:`Trasmetti`,broadcastTitle:`Trasmetti un messaggio a ogni sessione live del progetto`,broadcastToAll:`Trasmetti a tutte le sessioni`,broadcastPlaceholder:`Messaggio a ogni agente live del progetto…`,broadcastSendHint:`⌘/Ctrl+Invio per inviare`,openFullView:`Apri vista operazioni completa`,rowStatus:`Stato`,rowModel:`Modello`,rowTool:`Strumento`,rowIterations:`Iterazioni`,rowToolCalls:`Chiamate strum.`,rowTokensIn:`Token in`,rowTokensOut:`Token out`,rowTokensTotal:`Token totali`,rowContext:`Contesto`,rowCost:`Costo`,rowLastSeen:`Ultima volta visto`,rowSurface:`Superficie`,rowBranch:`Branch`,rowPid:`PID`,rowDir:`Dir.`,rowAgents:`Agenti`,rowUptime:`Uptime`,rowConnections:`Connessioni`,rowTotalMessages:`Messaggi totali`,rowUnread:`Non letti`,recent:`Recenti`,noSubject:`(nessun oggetto)`,fullOperationStream:`Flusso operazioni completo`,closeEsc:`Chiudi (Esc)`,idleDesk:`Scrivania inattiva`,fleetHqLabel:`QG Flotta`,clientsSuffix_one:`{{count}} client`,clientsSuffix_other:`{{count}} client`,taskFallback:`attività`,controlLabel:`controllo`},be={installTitle:`Installa competenza`,createTitle:`Crea competenza`,exportTitle:`Esporta tutte le competenze come .zip`,checkUpdatesTitle:`Cerca aggiornamenti (tutte)`,searchPlaceholder:`Cerca competenze…`,loading:`Caricamento…`,noSkills:`Nessuna competenza installata`,noMatch:`Nessuna competenza corrisponde al filtro`,noDescription:`Nessuna descrizione`,scopeForeign:`Esterno`,installHeading:`Installa Competenza`,installHint:`Inserisci un riferimento repo GitHub (owner/repo) o URL completo.`,installPlaceholder:`es. wrongstack/skill-name o https://github.com/owner/repo`,installScope:`Ambito installazione:`,installBtn:`Installa`,installedMsg:`Installata: {{names}}`,installFailed:`Installazione fallita`,createHeading:`Crea Competenza`,createHint:`Scaffold una nuova competenza. La prima riga è il trigger.`,nameLabel:`Nome`,namePlaceholder:`es. mia-nuova-competenza`,descLabel:`Descrizione / Trigger`,descPlaceholder:`Usa questa competenza quando <situazione>.
|
|
5
|
-
Trigger: l'utente dice "parola chiave", "altra".`,saveIn:`Salva in:`,createBtn:`Crea Competenza`,createdMsg:`Creata: {{name}}`,createFailed:`Creazione fallita`},xe={noEvents:`Nessun evento.`},Se={pickHint:`Scegli un kit — l'agent vi si atterrà.`,gallery:`Galleria`,galleryTitle:`Apri galleria anteprima live`,stackTitle:`Stack target`,loading:`Caricamento kit…`,notFound:`Nessun design kit trovato.`,bestFor:`Ideale per:`,light:`Chiaro`,dark:`Scuro`},Ce={detached:`(scollegato)`,count_one:`{{count}} worktree`,count_other:`{{count}} worktree`,baseSuffix:` · base {{base}}`,baseLabel:`base`,cleanOrphans:`Pulisci orfani`,cleanOrphansTitle:`Rimuovi tutti i worktree orfani`,liveBusyTitle:`Un run è attivo — fermalo prima`,rescanTitle:`Riscansiona`,removed_one:`Rimosso {{count}} worktree.`,removed_other:`Rimossi {{count}} worktree.`,failed:`Fallito`,mergedIntoBase:`{{branch}} unito alla base.`,conflictMerge:`Conflitto unendo {{branch}}: {{files}}`,seeGit:`vedi git`,mergeFailed:`Unione fallita: {{reason}}`,unknownReason:`sconosciuto`,mergeConfirmTitle:`Unire {{branch}} in {{base}}?`,mergeConfirmMsg:`Squash-merge questo branch sul branch base. Si annulla pulitamente in caso di conflitto.`,mergeAction:`Unisci`,removeConfirmTitle:`Rimuovere {{branch}}?`,removeConfirmMsg:`Rimuove forzatamente il checkout del worktree ed elimina il suo branch. Il lavoro non unito viene perso.`,empty:`Nessun worktree.`,emptyHint:`I run SDD / AutoPhase creano worktree isolati qui. Anche gli orfani dei run crashati appaiono.`,actOpenTerm:`Apri nel terminale`,actOpenFolder:`Apri cartella`,actViewChanges:`Vedi modifiche`,actMerge:`Unisci alla base`,actRemove:`Rimuovi / scarta`,live:`live`,noUncommitted:`Nessuna modifica non confermata`,commitsAhead_one:`{{count}} commit avanti`,commitsAhead_other:`{{count}} commit avanti`,more:`…{{count}} altri`},we={heading:`Mappa Ufficio`,headingHint:`Visualizza la tua flotta come piantina d'ufficio con stato agenti live.`,statAgents:`Agenti`,statMail:`Posta`,unreadSuffix:` non letti`,sectionView:`Vista`,sectionDisplay:`Visualizzazione`,sectionBackground:`Sfondo`,sectionRecent:`Attività Recente`,eventsTrackedSuffix:` eventi tracciati`,recentHint:`Invii posta, spawn agenti e cambi di stato appaiono qui.`,sectionShortcuts:`Scorciatoie`,sectionLegend:`Legenda`,hudLabel:`HUD`,hudDesc:`Mostra overlay statistiche sessione in tempo reale`,hudToggle:`Attiva HUD`,minimapLabel:`Minimappa`,minimapDesc:`Mostra la minimappa di panoramica`,minimapToggle:`Attiva minimappa`,controlsLabel:`Controlli`,controlsDesc:`Mostra controlli zoom e adatta`,controlsToggle:`Attiva controlli`,animateLabel:`Anima archi`,animateDesc:`Anima il flusso sulle connessioni attive`,animateToggle:`Attiva animazione archi`,legendLabel:`Mostra legenda`,legendDesc:`Mostra legenda di stato e connessione`,legendToggle:`Attiva legenda`,feedLabel:`Feed live`,feedDesc:`Striscia inferiore di attività cross-processo recente`,feedToggle:`Attiva feed live`,fitView:`Adatta`,zoomIn:`Ingrandisci`,zoomOut:`Riduci`,resetZoom:`Reimposta zoom`,legendActive:`Attivo (in corso)`,legendIdle:`Inattivo`,legendError:`Errore`,legendOffline:`Offline`,bg:{dots:`Punti`,lines:`Linee`,cross:`Croce`,none:`Nessuno`}},Te={nav:e,brand:t,status:n,menu:r,sidePanel:i,history:a,agents:o,changes:s,inspector:c,nextSteps:l,mailbox:u,sessions:d,sessionPanel:f,fleet:p,context:m,refine:h,specs:g,refresh:_,board:v,debug:y,providerModels:b,dock:x,agentsMonitor:S,terminal:C,sessionWatch:w,sideEffects:T,monitor:E,sdd:D,toolResult:O,design:k,autoPhase:A,collab:j,connection:M,mode:N,cost:P,model:F,modelSwitcher:I,work:L,todos:R,task:z,toolGroup:B,fileRef:V,plan:H,filePicker:U,toast:W,search:G,phase:K,ctxMode:q,transcript:J,autonomy:Y,queue:X,checkpoint:Z,goal:Q,worktree:$,process:ee,diff:te,fallback:ne,liveSessions:re,monacoDiff:ie,errorBody:ae,officeMap:oe,toolInput:se,message:ce,watch:le,shortcuts:ue,sddBoard:de,sddTask:fe,sddWizard:pe,fileExplorer:me,codeEditor:he,analytics:ge,promptLib:_e,skillDetail:ve,office:ye,skillsList:be,timeline:xe,designStudio:Se,worktrees:Ce,officeSettings:we};export{o as agents,S as agentsMonitor,ge as analytics,A as autoPhase,Y as autonomy,v as board,t as brand,s as changes,Z as checkpoint,he as codeEditor,j as collab,M as connection,m as context,P as cost,q as ctxMode,y as debug,Te as default,k as design,Se as designStudio,te as diff,x as dock,ae as errorBody,ne as fallback,me as fileExplorer,U as filePicker,V as fileRef,p as fleet,Q as goal,a as history,c as inspector,re as liveSessions,u as mailbox,r as menu,ce as message,N as mode,F as model,I as modelSwitcher,ie as monacoDiff,E as monitor,e as nav,l as nextSteps,ye as office,oe as officeMap,we as officeSettings,K as phase,H as plan,ee as process,_e as promptLib,b as providerModels,X as queue,h as refine,_ as refresh,D as sdd,de as sddBoard,fe as sddTask,pe as sddWizard,G as search,f as sessionPanel,w as sessionWatch,d as sessions,ue as shortcuts,T as sideEffects,i as sidePanel,ve as skillDetail,be as skillsList,g as specs,n as status,z as task,C as terminal,xe as timeline,W as toast,R as todos,B as toolGroup,se as toolInput,O as toolResult,J as transcript,le as watch,L as work,$ as worktree,Ce as worktrees};
|