@aintela/chat 0.2.15
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/README.md +161 -0
- package/dist/ClientMessage-EKgfuTp8.js +40 -0
- package/dist/ClientMessage-EKgfuTp8.js.map +1 -0
- package/dist/Memory-DjLZqgbF.js +84 -0
- package/dist/Memory-DjLZqgbF.js.map +1 -0
- package/dist/Prompt-DZb7OaPp.js +37 -0
- package/dist/Prompt-DZb7OaPp.js.map +1 -0
- package/dist/artifactHtmlHandler-CMQJf1cX.js +41 -0
- package/dist/artifactHtmlHandler-CMQJf1cX.js.map +1 -0
- package/dist/auth-CcTgInbY.js +524 -0
- package/dist/auth-CcTgInbY.js.map +1 -0
- package/dist/components.d.ts +2 -0
- package/dist/components.js +14159 -0
- package/dist/components.js.map +1 -0
- package/dist/environmentUtils-BaKw5_VD.js +462 -0
- package/dist/environmentUtils-BaKw5_VD.js.map +1 -0
- package/dist/hooks.d.ts +2 -0
- package/dist/hooks.js +9 -0
- package/dist/hooks.js.map +1 -0
- package/dist/httpArtifactService-BAR60Gu1.js +1802 -0
- package/dist/httpArtifactService-BAR60Gu1.js.map +1 -0
- package/dist/httpSessionService-5Kr__oQL.js +279 -0
- package/dist/httpSessionService-5Kr__oQL.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +226 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces.d.ts +2 -0
- package/dist/interfaces.js +11 -0
- package/dist/interfaces.js.map +1 -0
- package/dist/models.d.ts +2 -0
- package/dist/models.js +54 -0
- package/dist/models.js.map +1 -0
- package/dist/serializer-DyHZxlAG.js +1276 -0
- package/dist/serializer-DyHZxlAG.js.map +1 -0
- package/dist/services.d.ts +2 -0
- package/dist/services.js +16 -0
- package/dist/services.js.map +1 -0
- package/dist/sortable-table-DgQHxWIh.js +819 -0
- package/dist/sortable-table-DgQHxWIh.js.map +1 -0
- package/dist/src/ErrorBondary.d.ts +10 -0
- package/dist/src/components/AiChat/AiChat.d.ts +3 -0
- package/dist/src/components/AiChat/AiChatContext.d.ts +76 -0
- package/dist/src/components/AiChat/AiChatDrawer.d.ts +3 -0
- package/dist/src/components/AiChat/AiChatFloating.d.ts +3 -0
- package/dist/src/components/AiChat/AiChatProvider.d.ts +7 -0
- package/dist/src/components/AiChat/AiChatSessionStore.d.ts +1 -0
- package/dist/src/components/AiChat/AiChatTypes.d.ts +227 -0
- package/dist/src/components/AiChat/ChatPane/AlertDialog.d.ts +12 -0
- package/dist/src/components/AiChat/ChatPane/AskUserSheet.d.ts +25 -0
- package/dist/src/components/AiChat/ChatPane/ChatPane.d.ts +7 -0
- package/dist/src/components/AiChat/ChatPane/ConnectionState.d.ts +2 -0
- package/dist/src/components/AiChat/ChatPane/CurrentMessage.d.ts +12 -0
- package/dist/src/components/AiChat/ChatPane/Event.d.ts +6 -0
- package/dist/src/components/AiChat/ChatPane/FloatingConnectionStatus.d.ts +8 -0
- package/dist/src/components/AiChat/ChatPane/FriendlyPartDisplay.d.ts +13 -0
- package/dist/src/components/AiChat/ChatPane/LastPrompts.d.ts +9 -0
- package/dist/src/components/AiChat/ChatPane/Message.d.ts +11 -0
- package/dist/src/components/AiChat/ChatPane/MessageAgent.d.ts +16 -0
- package/dist/src/components/AiChat/ChatPane/MessageNonTextDisplay.d.ts +16 -0
- package/dist/src/components/AiChat/ChatPane/MessagePart.d.ts +15 -0
- package/dist/src/components/AiChat/ChatPane/MessagePersona.d.ts +13 -0
- package/dist/src/components/AiChat/ChatPane/MessageUser.d.ts +8 -0
- package/dist/src/components/AiChat/ChatPane/ModelSelector.d.ts +11 -0
- package/dist/src/components/AiChat/ChatPane/Prompt.d.ts +9 -0
- package/dist/src/components/AiChat/ChatPane/SessionDataDialog.d.ts +7 -0
- package/dist/src/components/AiChat/ChatPane/StickyQuestionHeader.d.ts +7 -0
- package/dist/src/components/AiChat/ChatPane/StreamStatistics.d.ts +32 -0
- package/dist/src/components/AiChat/ChatPane/SubAgentBox.d.ts +9 -0
- package/dist/src/components/AiChat/ChatPane/TaskList.d.ts +6 -0
- package/dist/src/components/AiChat/ChatPane/friendlyToolConfig.d.ts +11 -0
- package/dist/src/components/AiChat/ChatPane/parts/AskUserPart.d.ts +8 -0
- package/dist/src/components/AiChat/ChatPane/parts/BoxedPart.d.ts +4 -0
- package/dist/src/components/AiChat/ChatPane/parts/FunctionPart.d.ts +4 -0
- package/dist/src/components/AiChat/ChatPane/parts/SuspendedPart.d.ts +4 -0
- package/dist/src/components/AiChat/ChatPane/parts/TextPart.d.ts +4 -0
- package/dist/src/components/AiChat/ChatPane/parts/ThoughtPart.d.ts +4 -0
- package/dist/src/components/AiChat/ChatPane/parts/UiToolDispatcher.d.ts +16 -0
- package/dist/src/components/AiChat/ChatPane/parts/WaitingPart.d.ts +4 -0
- package/dist/src/components/AiChat/ChatPane/parts/index.d.ts +20 -0
- package/dist/src/components/AiChat/ChatPane/parts/index.test.d.ts +1 -0
- package/dist/src/components/AiChat/ChatPane/parts/types.d.ts +22 -0
- package/dist/src/components/AiChat/ChatPane/parts/uiToolRegistry.d.ts +121 -0
- package/dist/src/components/AiChat/index.d.ts +13 -0
- package/dist/src/components/AiChat/sessionStateManagerService.d.ts +47 -0
- package/dist/src/components/AiChat/stateConfiguration.d.ts +80 -0
- package/dist/src/components/Library/ArtifactRender.d.ts +18 -0
- package/dist/src/components/Library/DelayTextComponent.d.ts +9 -0
- package/dist/src/components/Library/LinearBackgroundProgress.d.ts +8 -0
- package/dist/src/components/Library/LinearProgressBarWithMarkers.d.ts +14 -0
- package/dist/src/components/Library/LoadingDots.d.ts +8 -0
- package/dist/src/components/Library/MarkdowmExtended.d.ts +32 -0
- package/dist/src/components/Library/VizLibrary/Skeletons/ChartSkeleton.d.ts +3 -0
- package/dist/src/components/Library/VizLibrary/Skeletons/IFrameSkeleton.d.ts +3 -0
- package/dist/src/components/Library/VizLibrary/Skeletons/MetricGroupSkeleton.d.ts +8 -0
- package/dist/src/components/Library/VizLibrary/Skeletons/MetricSkeleton.d.ts +7 -0
- package/dist/src/components/Library/VizLibrary/Skeletons/TableSkeleton.d.ts +7 -0
- package/dist/src/components/Library/VizLibrary/index.d.ts +5 -0
- package/dist/src/components/LlmResponseRender/EnvironmentContext.d.ts +33 -0
- package/dist/src/components/LlmResponseRender/GeneratingVisualization.d.ts +13 -0
- package/dist/src/components/LlmResponseRender/LiveJsxBlock.d.ts +55 -0
- package/dist/src/components/LlmResponseRender/LlmResponseRender.d.ts +29 -0
- package/dist/src/components/LlmResponseRender/index.d.ts +6 -0
- package/dist/src/components/LlmResponseRender/jsxScope.d.ts +41 -0
- package/dist/src/components/LlmResponseRender/liveTsxConfig.d.ts +18 -0
- package/dist/src/components/LlmResponseRender/parseBlocks.d.ts +39 -0
- package/dist/src/components/Stopwatch.d.ts +12 -0
- package/dist/src/components/index.d.ts +30 -0
- package/dist/src/components/v2/AgentActivityV2.d.ts +32 -0
- package/dist/src/components/v2/AiChatFloatingV2.d.ts +3 -0
- package/dist/src/components/v2/AiChatV2Pane.d.ts +20 -0
- package/dist/src/components/v2/AppBarV2.d.ts +38 -0
- package/dist/src/components/v2/AppRailV2.d.ts +21 -0
- package/dist/src/components/v2/AppShellV2.d.ts +13 -0
- package/dist/src/components/v2/ChatsHistoryV2.d.ts +47 -0
- package/dist/src/components/v2/LastPromptsV2.d.ts +6 -0
- package/dist/src/components/v2/MobileDrawerV2.d.ts +43 -0
- package/dist/src/components/v2/PromptV2.d.ts +164 -0
- package/dist/src/components/v2/RunProgressPanelV2.d.ts +28 -0
- package/dist/src/components/v2/RunProgressStripV2.d.ts +2 -0
- package/dist/src/components/v2/Sparkline.d.ts +10 -0
- package/dist/src/components/v2/SubAgentBoxV2.d.ts +15 -0
- package/dist/src/components/v2/TaskListV2.d.ts +8 -0
- package/dist/src/components/v2/icons.d.ts +42 -0
- package/dist/src/components/v2/index.d.ts +34 -0
- package/dist/src/components/v2/styles.d.ts +6 -0
- package/dist/src/components/v2/toolCategories.d.ts +18 -0
- package/dist/src/components/v2/useResponsiveLayout.d.ts +9 -0
- package/dist/src/hooks/index.d.ts +4 -0
- package/dist/src/hooks/useChatSessions.d.ts +68 -0
- package/dist/src/hooks/useContainerWidth.d.ts +2 -0
- package/dist/src/hooks/useIntervalHook.d.ts +2 -0
- package/dist/src/index.d.ts +7 -0
- package/dist/src/interfaces/IHeartbeatPort.d.ts +4 -0
- package/dist/src/interfaces/INotificationPort.d.ts +4 -0
- package/dist/src/interfaces/index.d.ts +4 -0
- package/dist/src/interfaces/memoryService.d.ts +37 -0
- package/dist/src/interfaces/schedulingService.d.ts +64 -0
- package/dist/src/models/Agent.d.ts +32 -0
- package/dist/src/models/Artifact.d.ts +21 -0
- package/dist/src/models/ArtifactData.d.ts +30 -0
- package/dist/src/models/ChatSession.d.ts +57 -0
- package/dist/src/models/ClientMessage.d.ts +38 -0
- package/dist/src/models/Customer.d.ts +7 -0
- package/dist/src/models/EndMessageData.d.ts +6 -0
- package/dist/src/models/IAbiContext.d.ts +8 -0
- package/dist/src/models/IDBStorable.d.ts +14 -0
- package/dist/src/models/Interaction.d.ts +36 -0
- package/dist/src/models/InteractionPart.d.ts +69 -0
- package/dist/src/models/LlmSession.d.ts +10 -0
- package/dist/src/models/Memory.d.ts +48 -0
- package/dist/src/models/Notification.d.ts +11 -0
- package/dist/src/models/Prompt.d.ts +20 -0
- package/dist/src/models/SendMessageResponse.d.ts +21 -0
- package/dist/src/models/ServerEvent.d.ts +130 -0
- package/dist/src/models/connectionState.d.ts +9 -0
- package/dist/src/models/contexts.d.ts +33 -0
- package/dist/src/models/enums.d.ts +333 -0
- package/dist/src/models/index.d.ts +36 -0
- package/dist/src/models/semanticKernelModel/index.d.ts +2 -0
- package/dist/src/models/semanticKernelModel/init.d.ts +1 -0
- package/dist/src/models/semanticKernelModel/models.d.ts +208 -0
- package/dist/src/models/semanticKernelModel/serializer.d.ts +40 -0
- package/dist/src/models/serverReponse.d.ts +5 -0
- package/dist/src/models/subAgentModel.d.ts +48 -0
- package/dist/src/models/todoListModel.d.ts +18 -0
- package/dist/src/services/WebSocketConnection/WebSocketConnectionV2.d.ts +163 -0
- package/dist/src/services/WebSocketConnection/webSocketConnection.d.ts +75 -0
- package/dist/src/services/artifactHtmlHandler.d.ts +6 -0
- package/dist/src/services/eventBusService.d.ts +119 -0
- package/dist/src/services/httpArtifactService.d.ts +25 -0
- package/dist/src/services/httpSessionService.d.ts +31 -0
- package/dist/src/services/index.d.ts +16 -0
- package/dist/src/services/interactionService.d.ts +28 -0
- package/dist/src/services/interactionService.test.d.ts +1 -0
- package/dist/src/services/interfaces/artifactService.d.ts +13 -0
- package/dist/src/services/servers/AgentGatewayService.d.ts +167 -0
- package/dist/src/services/servers/AgentGatewayWSAsync.d.ts +44 -0
- package/dist/src/services/servers/agentGatewayWSAsync.test.d.ts +1 -0
- package/dist/src/services/servers/sessionService/ISessionService.d.ts +20 -0
- package/dist/src/services/sessionEventDecoder.d.ts +22 -0
- package/dist/src/services/sessionEventDecoder.test.d.ts +1 -0
- package/dist/src/services/storageService.d.ts +73 -0
- package/dist/src/themes/index.d.ts +3 -0
- package/dist/src/themes/v2-chart-palette.d.ts +1 -0
- package/dist/src/themes/v2.d.ts +71 -0
- package/dist/src/utils/auth.d.ts +9 -0
- package/dist/src/utils/envOverrides.d.ts +23 -0
- package/dist/src/utils/envUtils.d.ts +13 -0
- package/dist/src/utils/environmentUtils.d.ts +43 -0
- package/dist/src/utils/fileUtils.d.ts +6 -0
- package/dist/src/utils/getAgentArtifactsBaseUrl.d.ts +1 -0
- package/dist/src/utils/getAgentBaseUrl.d.ts +1 -0
- package/dist/src/utils/getDotNetBaseUrl.d.ts +5 -0
- package/dist/src/utils/index.d.ts +17 -0
- package/dist/src/utils/interactionIdChecker.d.ts +27 -0
- package/dist/src/utils/jsonDetector.d.ts +50 -0
- package/dist/src/utils/jsonUtils.d.ts +1 -0
- package/dist/src/utils/materialIconsList.d.ts +42 -0
- package/dist/src/utils/materialIconsSvg.d.ts +51 -0
- package/dist/src/utils/objectUtils.d.ts +31 -0
- package/dist/src/utils/parseArtifact.d.ts +3 -0
- package/dist/src/utils/sessionWindowParameters.d.ts +3 -0
- package/dist/src/utils/sortable-table.d.ts +31 -0
- package/dist/src/utils/stringUtils.d.ts +8 -0
- package/dist/src/utils/uriUtils.d.ts +39 -0
- package/dist/src/utils/urlParser.d.ts +8 -0
- package/dist/style.css +94 -0
- package/dist/tests/fakes/fakeWebSocket.d.ts +32 -0
- package/dist/tests/fakes/makeGateway.d.ts +24 -0
- package/dist/tests/fixtures.d.ts +73 -0
- package/dist/useChatSessions-DttlifVk.js +107 -0
- package/dist/useChatSessions-DttlifVk.js.map +1 -0
- package/dist/useContainerWidth-Df2PmSoC.js +52 -0
- package/dist/useContainerWidth-Df2PmSoC.js.map +1 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.js +49 -0
- package/dist/utils.js.map +1 -0
- package/package.json +127 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components.js","sources":["../src/components/AiChat/AiChatContext.ts","../src/components/AiChat/sessionStateManagerService.ts","../src/components/AiChat/stateConfiguration.ts","../src/components/AiChat/AiChatProvider.tsx","../src/components/AiChat/ChatPane/LastPrompts.tsx","../src/components/Library/LinearProgressBarWithMarkers.tsx","../src/components/v2/icons.tsx","../src/components/AiChat/ChatPane/StreamStatistics.tsx","../src/components/Library/LinearBackgroundProgress.tsx","../src/components/AiChat/ChatPane/TaskList.tsx","../src/components/AiChat/ChatPane/ModelSelector.tsx","../src/components/AiChat/ChatPane/Prompt.tsx","../node_modules/@microlink/react-json-view/dist/main.js","../node_modules/@microlink/react-json-view/index.mjs","../src/components/AiChat/ChatPane/SessionDataDialog.tsx","../src/components/v2/LastPromptsV2.tsx","../src/components/v2/PromptV2.tsx","../src/components/Library/MarkdowmExtended.tsx","../src/components/AiChat/AiChatDrawer.tsx","../src/components/AiChat/AiChatFloating.tsx","../src/components/AiChat/ChatPane/parts/types.ts","../src/components/AiChat/ChatPane/parts/TextPart.tsx","../src/components/AiChat/ChatPane/parts/ThoughtPart.tsx","../src/components/Library/LoadingDots.tsx","../src/components/Stopwatch.tsx","../src/components/AiChat/ChatPane/MessageNonTextDisplay.tsx","../src/components/AiChat/ChatPane/friendlyToolConfig.ts","../src/components/AiChat/ChatPane/FriendlyPartDisplay.tsx","../src/components/AiChat/ChatPane/parts/FunctionPart.tsx","../src/components/AiChat/ChatPane/parts/WaitingPart.tsx","../src/components/AiChat/ChatPane/parts/SuspendedPart.tsx","../src/components/AiChat/ChatPane/parts/BoxedPart.tsx","../src/components/AiChat/ChatPane/parts/AskUserPart.tsx","../src/components/LlmResponseRender/EnvironmentContext.tsx","../src/components/AiChat/ChatPane/parts/uiToolRegistry.ts","../src/components/AiChat/ChatPane/parts/UiToolDispatcher.tsx","../src/components/AiChat/ChatPane/parts/index.ts","../src/components/AiChat/ChatPane/MessagePart.tsx","../src/components/AiChat/ChatPane/MessagePersona.tsx","../src/components/AiChat/ChatPane/MessageAgent.tsx","../src/components/AiChat/ChatPane/SubAgentBox.tsx","../src/components/AiChat/ChatPane/MessageUser.tsx","../src/components/AiChat/ChatPane/Message.tsx","../src/components/AiChat/ChatPane/StickyQuestionHeader.tsx","../src/components/AiChat/ChatPane/AlertDialog.tsx","../src/ErrorBondary.tsx","../src/components/AiChat/ChatPane/CurrentMessage.tsx","../src/components/AiChat/ChatPane/AskUserSheet.tsx","../src/components/AiChat/ChatPane/ConnectionState.tsx","../src/components/AiChat/ChatPane/ChatPane.tsx","../src/components/AiChat/AiChat.tsx","../src/components/Library/ArtifactRender.tsx","../src/components/Library/DelayTextComponent.tsx","../src/components/LlmResponseRender/parseBlocks.ts","../src/components/LlmResponseRender/liveTsxConfig.tsx","../src/components/LlmResponseRender/LlmResponseRender.tsx","../src/components/LlmResponseRender/jsxScope.ts","../src/components/Library/VizLibrary/Skeletons/ChartSkeleton.tsx","../src/components/Library/VizLibrary/Skeletons/MetricSkeleton.tsx","../src/components/Library/VizLibrary/Skeletons/MetricGroupSkeleton.tsx","../src/components/Library/VizLibrary/Skeletons/TableSkeleton.tsx","../src/components/Library/VizLibrary/Skeletons/IFrameSkeleton.tsx","../src/components/LlmResponseRender/GeneratingVisualization.tsx","../src/components/LlmResponseRender/LiveJsxBlock.tsx","../src/themes/v2.ts","../src/themes/v2-chart-palette.ts","../src/components/v2/styles.ts","../src/components/v2/Sparkline.tsx","../src/components/v2/AppShellV2.tsx","../src/components/v2/AppRailV2.tsx","../src/components/v2/AppBarV2.tsx","../src/components/v2/MobileDrawerV2.tsx","../src/components/v2/useResponsiveLayout.ts","../src/components/v2/RunProgressStripV2.tsx","../src/components/v2/AiChatFloatingV2.tsx","../src/components/v2/AiChatV2Pane.tsx","../src/components/v2/ChatsHistoryV2.tsx","../src/components/v2/TaskListV2.tsx","../src/components/v2/SubAgentBoxV2.tsx","../src/components/v2/AgentActivityV2.tsx","../src/components/v2/toolCategories.ts","../src/components/v2/RunProgressPanelV2.tsx"],"sourcesContent":["import { createContext, useContext, type ComponentType } from 'react';\nimport { useStore } from 'zustand';\nimport type { AgentGatewayService } from '@lib/services/servers/AgentGatewayService';\nimport type { EventBusService } from '@lib/services/eventBusService';\nimport type { IArtifactService } from '@lib/services/interfaces/artifactService';\nimport type { IStorageService } from '@lib/services/storageService';\nimport type { INotificationPort } from '@lib/interfaces/INotificationPort';\nimport type { AiChatState, AiChatStore } from './stateConfiguration';\nimport type { SessionStateManagerService } from './sessionStateManagerService';\nimport type { PartRendererMap, UiToolRegistry } from './ChatPane/parts';\nimport type { Interaction } from '@lib/models/Interaction';\nimport type { SendMessageOptions, UserMessageRendererProps } from './AiChatTypes';\nimport type { SendMessageResponse } from '@lib/models/SendMessageResponse';\n\nexport interface AiChatContextState {\n agentGatewayService: AgentGatewayService;\n eventBusService: EventBusService;\n artifactService: IArtifactService;\n storageService: IStorageService;\n notificationPort: INotificationPort;\n sessionStateManagerService: SessionStateManagerService;\n sessionStore: AiChatStore;\n showPromptHistory: boolean;\n showStatistics: boolean;\n showStickyHeader: boolean;\n showToolCalls: boolean;\n showModelSelector: boolean;\n showSessionInfo: boolean;\n showTaskList: boolean;\n showSubAgents: boolean;\n compactPrompt: boolean;\n showConnectionState: boolean;\n hidePromptInput: boolean;\n setShowToolCalls: (show: boolean) => void;\n friendlyMode: boolean;\n setFriendlyMode: (enabled: boolean) => void;\n currentModel: string | undefined;\n setCurrentModel: (modelId: string) => void;\n onVisibleQuestionChange?: (question: string | null) => void;\n onRenderPrompt?: (message: string) => { promptAsString?: string, json?: any };\n /**\n * Per-part renderer overrides. The dispatcher in `MessagePart` looks\n * up `partRenderers[kind]` first and falls back to the built-in\n * `DEFAULT_PART_RENDERERS[kind]` when an override isn't provided.\n * Hosts that want to swap a single kind (say, customize how\n * function calls render) provide a partial map; everything else\n * keeps the built-in.\n */\n partRenderers?: PartRendererMap;\n /**\n * UI-tool registry — maps a tool name to a React renderer or a fire-once\n * action. The built-in `uiTool` dispatcher (`DEFAULT_PART_RENDERERS.uiTool`)\n * resolves it; build one with `createUiToolRegistry()` and pass it as the\n * `uiTools` prop. Unregistered UI tools fall back to a plain tool-call render.\n */\n uiTools?: UiToolRegistry;\n /** Show a persona header row above each message (see AiChatProps.showPersona). */\n showPersona?: boolean;\n /** Formats a message's timestamp for the persona row. */\n formatTimestamp?: (date: Date) => string;\n /** Resolves the persona label + initials for a message. */\n resolvePersona?: (args: { isUser: boolean; message: Interaction }) => { label: string; initials?: string };\n /** Custom renderer for the user-message body (the persona row is still shown above it). */\n userMessageRenderer?: ComponentType<UserMessageRendererProps>;\n\n sendMessage: (text: string, options?: SendMessageOptions) => Promise<SendMessageResponse>;\n}\n\nexport const AiChatServiceContext = createContext<AiChatContextState | undefined>(undefined);\n\nexport const useAiChatServices = (): AiChatContextState => {\n const context = useContext(AiChatServiceContext);\n if (context === undefined) {\n throw new Error('useAiChatServices must be used within an AiChat component');\n }\n return context;\n};\n\nexport function useAiChatSessionStore<T>(selector: (state: AiChatState) => T): T {\n const { sessionStore } = useAiChatServices();\n return useStore(sessionStore, selector);\n}\n","import { type AiChatState, type AiChatStore } from \"./stateConfiguration\";\nimport type { ChatSession } from \"@lib/models/ChatSession\";\nimport { type SendMessageResponse } from \"@lib/models/SendMessageResponse\";\nimport { ConnectionState } from \"@lib/models/connectionState\";\nimport type { AgentContext } from \"@lib/models/contexts\";\nimport { type IArtifactService } from \"@lib/services/interfaces/artifactService\";\nimport type { AgentGatewayService } from \"@lib/services/servers/AgentGatewayService\";\nimport type { ISessionService } from \"@lib/services/servers/sessionService/ISessionService\";\n\nexport const WARNING_THRESHOLD = 0.75;\nexport const BASE_MULTIPLIER = 1000;\nexport const IDLE_TIMEOUT = 5 * 60 * 1000; // 10 minutes\nexport const DEFAULT_WAIT_TIME = 500;\nexport const MAX_RETRY_WAIT = 20_000;\n\nexport interface SessionStateManagerOptions {\n onSessionEstablished?: (sessionId: string) => void;\n}\n\nexport class SessionStateManagerService {\n private idleTime: number = 0;\n\n internalHearBeat: ReturnType<typeof setInterval> | null = null;\n lastConCheck: number = 0;\n sessionState: AiChatState;\n agentGatewayService: AgentGatewayService;\n paused: boolean = true;\n waitTimeForRetry: number = DEFAULT_WAIT_TIME;\n sessionService: ISessionService;\n workingContext?: AgentContext;\n artifactService: IArtifactService;\n workingSessionId?: string;\n pendingClosePromise?: Promise<SendMessageResponse | null>;\n private onSessionEstablished?: (sessionId: string) => void;\n\n constructor(\n agentGatewayService: AgentGatewayService,\n sessionService: ISessionService,\n artifactService: IArtifactService,\n sessionStore: AiChatStore,\n options: SessionStateManagerOptions = {},\n ) {\n this.sessionState = sessionStore.getState();\n this.agentGatewayService = agentGatewayService;\n this.sessionService = sessionService;\n this.artifactService = artifactService;\n this.onSessionEstablished = options.onSessionEstablished;\n\n sessionStore.subscribe((state, prevState) => {\n this.sessionState = state;\n // The post-turn delayedPatchActiveSession({ interactions }) write used to\n // push the rebuilt interactions array back to /ChatSession/{id}. After\n // the Session collection collapse, interactions are derived client-side\n // from Session.Events (which the server already keeps current), so this\n // write would be redundant — and the target ChatSessions collection is\n // on its way out anyway.\n void prevState;\n });\n\n this.paused = false;\n }\n\n /**\n * Update the agent context the manager will use on subsequent reconnects.\n * Called by AiChatProvider when its `agentContext` prop changes — without\n * this, the heartbeat-driven `processRetryLoop` would re-open with the\n * stale context captured at the initial bind.\n */\n setAgentContext(context: AgentContext): void {\n this.workingContext = context;\n }\n\n pause() {\n this.paused = true;\n if (this.internalHearBeat)\n clearInterval(this.internalHearBeat);\n }\n\n public start() {\n this.paused = false;\n this.internalHearBeat = setInterval(() => {\n this.beat();\n }, 2000);\n }\n\n beat() {\n if (this.paused)\n return;\n\n this.idleTime = new Date().getTime() - this.sessionState.lastActivity;\n if (this.idleTime > IDLE_TIMEOUT) {\n\n this.sessionState.setIsSessionActive(false);\n\n if (this.sessionState.connectionStatus == ConnectionState.Connected) {\n this.closeLiveConnection(false)\n .then(() => this.sessionState.setConnectionStatus(ConnectionState.Disconnected));\n }\n }\n else {\n if (!this.sessionState.sessionActive) {\n this.waitTimeForRetry = DEFAULT_WAIT_TIME;\n this.sessionState.setIsSessionActive(true);\n }\n\n this.processRetryLoop();\n }\n }\n\n async createSession(context: AgentContext, sessionId: string): Promise<ChatSession> {\n const session = await this.sessionService.createSession(sessionId, context?.agentConfig.name ?? '', context?.customer);\n\n if (!session?.id)\n throw new Error(`SessionStateManagerService.createSession: sessionService returned no id for ${sessionId}`);\n\n session.interactions.forEach((i) => {\n i.turn_complete = true;\n if (i.artifactData) {\n i.artifactData.forEach((a) => this.artifactService.addToCache(a));\n }\n });\n\n return session;\n }\n\n async retrieveSession(_context: AgentContext, sessionId: string): Promise<ChatSession | null> {\n const session = await this.sessionService.retrieveSession(sessionId);\n\n if (!session?.id)\n return null;\n\n session.interactions.forEach((i) => {\n i.turn_complete = true;\n if (i.artifactData) {\n i.artifactData.forEach((a) => this.artifactService.addToCache(a));\n }\n });\n\n return session;\n }\n\n async bindAndOpenLiveSession(context: AgentContext, sessionId?: string) {\n this.pause();\n\n if (this.sessionState.connectionStatus != ConnectionState.Disconnected)\n await this.stop();\n\n if (this.pendingClosePromise) {\n await this.pendingClosePromise;\n this.pendingClosePromise = undefined;\n }\n\n let session = this.sessionState.session;\n\n const loadingType = sessionId ? 'EXISTING' : 'NEW';\n this.sessionState.setLoadingInformation(ConnectionState.Connecting, false, loadingType);\n\n try {\n this.workingContext = context;\n this.workingSessionId = sessionId;\n\n if (sessionId && sessionId != this.sessionState.session?.id) {\n session = null;\n\n this.sessionState.setLoadingInformation(ConnectionState.Connecting, true, loadingType);\n try {\n session = await this.retrieveSession(context, sessionId);\n\n this.onSessionEstablished?.(sessionId);\n\n this.workingSessionId = sessionId;\n this.agentGatewayService.setSession(sessionId, '');\n }\n finally {\n this.sessionState.setLoadingInformation(ConnectionState.Connecting, false, loadingType);\n }\n }\n\n if (!sessionId)\n session = null;\n\n this.sessionState.setLoadingInformation(ConnectionState.Connecting, false, loadingType, session?.loadError);\n\n const socketSessionId = await this.agentGatewayService.openConnection(this.workingSessionId);\n\n if (!session || session?.id !== socketSessionId) {\n\n session = {\n fullyLoaded: true,\n id: socketSessionId,\n activityCount:0,\n artifacts:[],\n browserScopeId:'',\n interactions:[],\n user: session?.user!,\n overview: '',\n sessionRunMode: 'interactive',\n agentType: 'Unknown',\n created: new Date()\n }\n\n if (sessionId && sessionId !== socketSessionId)\n console.warn(`Session Id: ${sessionId} was not found a new one was created: ${socketSessionId}`);\n\n this.onSessionEstablished?.(socketSessionId);\n\n this.workingSessionId = session.id;\n this.sessionState.setSession(session);\n this.agentGatewayService.setSession(socketSessionId, '');\n }\n\n if (sessionId != this.sessionState.session?.id)\n this.sessionState.setSession(session);\n\n this.sessionState.setLoadingInformation(ConnectionState.Connected, false, undefined, undefined);\n }\n catch (error: any) {\n console.error(\"StateManager: Open Error \", sessionId, error);\n this.sessionState.setLoadingInformation(ConnectionState.Disconnected, false, undefined);\n throw error;\n }\n finally {\n this.start();\n }\n }\n\n async closeLiveConnection(stoneCold: boolean = false, closeTurn: boolean = true) {\n\n this.waitTimeForRetry = DEFAULT_WAIT_TIME;\n\n if (this.sessionState.connectionStatus != ConnectionState.Connected)\n throw new Error(\"SessionStateManagerService.closeLiveConnection: cannot close a disconnected session\");\n\n this.pause();\n try {\n await this.agentGatewayService.closeConnection(closeTurn);\n this.sessionState.setConnectionStatus(ConnectionState.Disconnected);\n }\n finally {\n if (!stoneCold)\n this.start();\n }\n }\n\n async stop() {\n if (this.internalHearBeat)\n clearInterval(this.internalHearBeat);\n this.internalHearBeat = null;\n if (this.sessionState.connectionStatus === ConnectionState.Connected) {\n await this.closeLiveConnection(true);\n }\n }\n\n processRetryLoop(_identification?: string) {\n const now = new Date().getTime();\n\n if (!this.workingContext)\n return;\n\n if (this.sessionState.sessionActive && (this.sessionState.connectionStatus == ConnectionState.Disconnected)) {\n const diff = now - this.lastConCheck;\n\n if (diff >= this.waitTimeForRetry) {\n // Exponential backoff: w_n+1 = min(w_n + w_n^2 / BASE, MAX). Pulled\n // out of the previous `Math.min(this.waitTimeForRetry = ...)` form\n // which mixed an assignment expression into the comparand.\n const nextWait = this.waitTimeForRetry + (this.waitTimeForRetry * this.waitTimeForRetry / BASE_MULTIPLIER);\n this.waitTimeForRetry = Math.min(nextWait, MAX_RETRY_WAIT);\n this.lastConCheck = now;\n\n this.bindAndOpenLiveSession(this.workingContext, this.workingSessionId)\n .catch((error) => console.error(\"Error bind and open\", error));\n }\n }\n else {\n this.waitTimeForRetry = DEFAULT_WAIT_TIME;\n }\n }\n}\n","import type { ChatSession } from \"@lib/models/ChatSession\";\nimport type { Interaction } from \"@lib/models/Interaction\";\nimport { ConnectionState } from \"@lib/models/connectionState\";\nimport { create, createStore, type StoreApi } from 'zustand'\nimport { RunMode, SkillLevel } from \"@lib/models/enums\";\nimport { devtools } from \"zustand/middleware\";\nimport type { ToolEventDetails } from \"@lib/models/ServerEvent\";\nimport type { InteractionStatistics } from \"@lib/models/semanticKernelModel/models\";\nimport type { AgentContext } from \"@lib/models/contexts\";\nimport type { ISessionService } from \"@lib/services/servers/sessionService/ISessionService\";\n\nexport type AiChatStore = StoreApi<AiChatState>;\n\nexport function createAiChatStore(sessionService: ISessionService, onRenderPrompt?: (prompt: string) => { promptAsString?: string, json?: string }): AiChatStore {\n return createStore<AiChatState>()(\n devtools(\n (set, get) => ({\n session: null,\n loading: false,\n bindingPromise: null,\n sessionActive: true,\n loadedInstructions: null,\n sendingMessage: false,\n lastActivity: new Date().getTime(),\n turnOpen: false,\n suspendState: 'idle' as SuspendState,\n message: null,\n messages: [],\n _turnCompleteCounter: 0,\n skillLevel: SkillLevel.LIVE,\n loadingType: null,\n onRenderPrompt,\n connectionStatus: ConnectionState.Disconnected,\n setSendingMessage: (sendingMessage: boolean) => {\n set({ sendingMessage });\n },\n setLoadedInstructions: (_instructions: string[]) => { },\n currentMessage: null,\n setCurrentMessage: (currentMessage: Interaction | null) => {\n set({ currentMessage });\n },\n setLastToolEvent: (toolEvent: ToolEventDetails) => {\n set({ lastToolEvent: toolEvent }, false, \"lastTooEvent\");\n },\n resetMessages: () => {\n const session = get().session;\n set({\n messages: [],\n currentMessage: null,\n ...(session && { session: { ...session, interactions: [] } }),\n });\n },\n setIsSessionActive: (active: boolean) => {\n set({ sessionActive: active });\n },\n setLastActivity: () => {\n set({ lastActivity: new Date().getTime() }, false, \"setLastActivity\");\n },\n setNewMessage: (msg: Interaction) => {\n let messages = get().messages;\n msg.turn_complete = true;\n const existingIndex = messages.findIndex((m) => m.interactionId == msg.interactionId);\n if (existingIndex == -1) {\n messages = [...messages, msg];\n } else {\n messages[existingIndex] = msg;\n messages = [...messages];\n }\n const session = get().session;\n set({\n messages,\n currentMessage: null,\n _turnCompleteCounter: get()._turnCompleteCounter + 1,\n ...(session && { session: { ...session, activityCount: session.activityCount + 1, interactions: messages } }),\n });\n },\n setTurnOpen: (status: boolean) => {\n // Closing the turn always invalidates suspend state —\n // the agent isn't running anymore, so \"suspended\"\n // would just freeze the prompt cluster on Continuar/\n // Stop indefinitely. Reset to idle here instead of\n // expecting every consumer to remember to do it.\n if (status) {\n set({ turnOpen: status });\n } else {\n set({ turnOpen: status, suspendState: 'idle' });\n }\n },\n setSuspendState: (status: SuspendState) => set({ suspendState: status }),\n setConnectionStatus: (status: ConnectionState) => {\n let loadingError = get().loadingError;\n let loading = get().loading;\n if (status == ConnectionState.Connected) {\n loadingError = null;\n loading = false;\n }\n set({ connectionStatus: status, loadingError, loading });\n },\n setStatistics: (stats) => {\n set({ statistics: stats })\n },\n setPartialSession: (session: Partial<ChatSession>) => {\n const updatedSession: ChatSession = { ...get().session, ...session as unknown as ChatSession };\n set({ session: updatedSession });\n },\n setSession: (session: ChatSession | null) => {\n if (session)\n session.activityCount++;\n\n set({ session, messages: session?.interactions ?? [], currentMessage: null });\n },\n subAgents: new Map<string, SubAgentState>(),\n setSubAgentMessage: (subAgentId: string, interaction: Interaction, name?: string) => {\n const prev = get().subAgents;\n const next = new Map(prev);\n const existing = next.get(subAgentId);\n next.set(subAgentId, {\n id: subAgentId,\n name: name ?? existing?.name ?? subAgentId,\n interaction,\n completed: existing?.completed ?? false,\n });\n set({ subAgents: next });\n\n },\n completeSubAgent: (subAgentId: string) => {\n const prev = get().subAgents;\n const existing = prev.get(subAgentId);\n if (!existing) return;\n const next = new Map(prev);\n next.set(subAgentId, { ...existing, completed: true });\n set({ subAgents: next });\n },\n removeSubAgent: (subAgentId: string) => {\n const prev = get().subAgents;\n if (!prev.has(subAgentId)) return;\n const next = new Map(prev);\n next.delete(subAgentId);\n set({ subAgents: next });\n },\n setLoadingInformation: (state: ConnectionState, loading: boolean, loadingType?: 'EXISTING' | 'NEW', loadingError?: string) => {\n set({ connectionStatus: state, loading, loadingType, loadingError: loadingError ?? get().loadingError });\n },\n } as AiChatState),\n { name: 'AiChatStore' }\n )\n );\n}\n\nexport interface SubAgentState {\n id: string;\n name?: string;\n interaction: Interaction;\n completed: boolean;\n}\n\n/**\n * Per-turn suspend state shared by every UI surface that exposes a\n * pause/continue/stop control (PromptV2's send-button cluster,\n * RunProgressPanelV2's header). v1 kept this state inside the Prompt\n * component because that was the only place it surfaced; v2 ships\n * the same control in two places, so a local state slice would let\n * them disagree (pause in one surface didn't flip the icon in the\n * other). The state machine is:\n *\n * idle ──pause()──> suspending ──ack──> suspended\n * │\n * ├── stop() ──> idle (turn killed)\n * ├── continue() ──> idle (partial finalized)\n * └── sendMessage ──> idle (auto-cleared by gateway)\n *\n * Reset to `idle` whenever the turn closes so the cluster doesn't get\n * stuck on \"Continuar\" between turns.\n */\nexport type SuspendState = 'idle' | 'suspending' | 'suspended';\n\nexport interface AiChatState {\n session: ChatSession | null\n sendingMessage: boolean,\n loading: boolean,\n loadingError?: string | null,\n sessionActive: boolean,\n loadingType: null | 'NEW' | 'EXISTING'\n skillLevel: SkillLevel,\n turnOpen: boolean,\n suspendState: SuspendState,\n statistics?: InteractionStatistics,\n connectionStatus: ConnectionState,\n lastToolEvent?: ToolEventDetails,\n lastActivity: number,\n messages: Interaction[],\n currentMessage: Interaction | null,\n _turnCompleteCounter: number,\n subAgents: Map<string, SubAgentState>,\n setStatistics: (stats: InteractionStatistics) => void;\n setIsSessionActive: (active: boolean) => void,\n setLastActivity: () => void;\n setLoadingInformation: (state: ConnectionState, loading: boolean, loadingType: 'EXISTING' | 'NEW' | undefined, loadingError?: string) => void;\n setSendingMessage: (newValue: boolean) => void,\n setLoadedInstructions: (instructions: string[]) => void,\n setCurrentMessage: (message: Interaction | null) => void,\n setLastToolEvent: (ToolEventDetails: ToolEventDetails | null) => void,\n resetMessages: () => void;\n setNewMessage: (message: Interaction) => void,\n setTurnOpen: (status: boolean) => void,\n setSuspendState: (status: SuspendState) => void,\n setConnectionStatus: (status: ConnectionState) => void,\n setSubAgentMessage: (subAgentId: string, interaction: Interaction, name?: string) => void,\n completeSubAgent: (subAgentId: string) => void,\n removeSubAgent: (subAgentId: string) => void,\n bindingPromise: Promise<ChatSession | null> | null,\n setPartialSession: (session: Partial<ChatSession | null>) => void,\n setSession: (session: ChatSession | null) => void,\n onRenderPrompt?: (prompt: string) => { promptAsString?: string, json?: any }\n}","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport type { AiChatProps, ConnectionInformation, SendMessageOptions } from './AiChatTypes';\nimport { AiChatServiceContext, type AiChatContextState } from './AiChatContext';\nimport { EventBusService } from '@lib/services/eventBusService';\nimport { AgentGatewayWSAsync } from '@lib/services/servers/AgentGatewayWSAsync';\nimport { LocalStorageService } from '@lib/services/storageService';\nimport { SessionStateManagerService } from './sessionStateManagerService';\nimport type { Interaction } from '@lib/models/Interaction';\nimport { createAiChatSessionStore } from './AiChatSessionStore';\nimport { ConnectionState } from '@lib/models/connectionState';\nimport type { INotificationPort } from '@lib/interfaces/INotificationPort';\nimport { WebSocketConnecionV2 } from '@lib/services/WebSocketConnection/WebSocketConnectionV2';\nimport type { IWebSocketConnection } from '@lib/services/WebSocketConnection/webSocketConnection';\nimport { getModelVendor } from '@lib/models/enums';\nimport { enqueueSnackbar } from 'notistack';\nimport { HttpSessionService } from '../../services/httpSessionService';\nimport { HttpArtifactService } from '../../services/httpArtifactService';\nimport { AiChatState } from '..';\nimport { useTheme } from '@mui/material/styles';\nimport { ClientMessage } from '@lib/models/ClientMessage';\n\ninterface AiChatProviderProps extends AiChatProps {\n children: ReactNode;\n}\n\nexport const AiChatProvider: React.FC<AiChatProviderProps> = ({\n agentContext,\n serverBaseUrl,\n user,\n sessionService = new HttpSessionService(serverBaseUrl,user.access_token),\n sessionId,\n artifactService = new HttpArtifactService(serverBaseUrl,user.access_token),\n storageService: externalStorageService,\n eventBusService: externalEventBusService,\n notificationPort: externalNotificationPort,\n showPromptHistory = true,\n showStatistics = true,\n showToolCalls = false,\n showStickyHeader = true,\n autoCreateSession = false,\n showModelSelector = true,\n showSessionInfo = true,\n // v2 is the default: TaskList and sub-agent boxes live in the\n // RunProgressPanel side rail, NOT inline in the chat. Legacy v1\n // surfaces opt back into inline rendering by passing\n // `showTaskList showSubAgents` explicitly.\n showTaskList = false,\n showSubAgents = false,\n // v2 minimal prompt — single sparkle menu + rotated send. v1\n // surfaces pass `compactPrompt={false}` to keep the full Prompt.\n compactPrompt = true,\n // v2 RunProgressPanel owns the connection-status display, so the\n // v1 ConnectionState chip in the chat header is hidden by default.\n // v1 surfaces pass `showConnectionState` explicitly to restore it.\n showConnectionState = false,\n // Hosts that own their own prompt input (e.g. v2 Composer's\n // UnifiedComposerV2) pass `true` to suppress ChatPane's internal\n // Prompt and use ChatPane purely as a transcript.\n hidePromptInput = false,\n friendlyMode = true,\n partRenderers,\n uiTools,\n showPersona,\n formatTimestamp,\n resolvePersona,\n userMessageRenderer,\n onMessage,\n onTurnComplete,\n onTurnOpen,\n onGetWebSocketProvider,\n onConnectionStateChange,\n onSessionCreated,\n onSessionEstablished,\n onError,\n onRenderPrompt,\n onGatewayReady,\n onVisibleQuestionChange,\n onFirstToken,\n children,\n}) => {\n const callbacksRef = useRef({ onMessage, onTurnComplete, onConnectionStateChange, onSessionCreated, onSessionEstablished, onError, onGatewayReady, onVisibleQuestionChange, onFirstToken, onTurnOpen });\n callbacksRef.current = { onMessage, onTurnComplete, onConnectionStateChange, onSessionCreated, onSessionEstablished, onError, onGatewayReady, onVisibleQuestionChange, onFirstToken, onTurnOpen };\n const sessionCallsRef = useRef<{ [key: string]: boolean }>({});\n const lastInformationRef = useRef<ConnectionInformation>({\n connectionState: ConnectionState.Disconnected,\n loading: false,\n sesssionActive: false,\n loadingError: \"------\"\n });\n\n const theme = useTheme(); \n\n const bindPromise = useRef<Promise<void> | null>(null);\n\n const eventBusService = useMemo(() => {\n return externalEventBusService ?? new EventBusService();\n }, [externalEventBusService]);\n\n const storageService = useMemo(() => {\n return externalStorageService ?? new LocalStorageService();\n }, [externalStorageService]);\n\n const defaultNotificationPort: INotificationPort = useMemo(() => ({\n pushNotification: (n) => {\n enqueueSnackbar(n.message, {\n variant: n.type,\n preventDuplicate: true,\n style: {\n backgroundColor: theme.palette.primary.softBg,\n color: theme.palette.text.secondary\n }\n });\n },\n }), []);\n\n const notificationPort = externalNotificationPort ?? defaultNotificationPort;\n\n const sessionStore = useMemo(() => createAiChatSessionStore(sessionService, onRenderPrompt), []);\n\n useEffect(() => {\n const subscriptMethod = (state: AiChatState, prevState:AiChatState) => {\n if (callbacksRef.current?.onSessionCreated && (state.session?.id !== prevState.session?.id)) {\n if (state.session) {\n const key = (state.session?.id ?? \"-\") + (prevState.session?.id ?? \"-\");\n\n if (callbacksRef.current?.onSessionCreated && state.session)\n callbacksRef.current.onSessionCreated(state.session)\n }\n }\n\n\n if (callbacksRef.current?.onConnectionStateChange && (state.connectionStatus != prevState.connectionStatus || state.loading != prevState.loading || state.loadingError != prevState.loadingError || state.sessionActive != prevState.sessionActive)) {\n const information = {\n connectionState: state.connectionStatus,\n loading: state.loading,\n sesssionActive: state.sessionActive,\n loadingError: state.loadingError\n }\n\n if (JSON.stringify(lastInformationRef.current) !== JSON.stringify(information))\n callbacksRef.current.onConnectionStateChange(information)\n\n lastInformationRef.current = information\n }\n }\n const subscribe = sessionStore.subscribe(subscriptMethod);\n \n return subscribe;\n }, [sessionStore])\n\n // Keep a ref to the latest user so the WS getToken callback always reads a fresh JWT after a\n // token refresh (the WebSocketConnecionV2 instance is created once via useMemo).\n const userRef = useRef(user);\n userRef.current = user;\n const getToken = useCallback(() => userRef.current?.access_token, []);\n\n // Gateway is constructed ONCE per provider lifetime — agent /\n // model changes flow through the gateway's `setAgentContext` /\n // `setModel` live-update methods, NOT through rebuild. This is\n // what makes the agent picker non-destructive: the WS stays\n // open, the chat history survives, and `sendMessageInternal`\n // (which reads `this.config.agentConfig?.id` at send time)\n // picks up the new agent on the very next message.\n //\n // The previous design rebuilt the gateway when an\n // `agentContextKey` derived from `agentContext.agentConfig.id`\n // changed; that forced a fresh WS connection AND lost in-flight\n // session state on every agent switch, which is exactly the\n // \"select Customer Dashboard Agent → nothing happens\" symptom\n // the host hit when the picker started writing through\n // `useDashboardAppStore.updateDashboardAgent`.\n const agentGatewayService = useMemo(() => {\n let ws: IWebSocketConnection;\n if (onGetWebSocketProvider)\n ws = onGetWebSocketProvider(serverBaseUrl);\n else\n ws = new WebSocketConnecionV2(serverBaseUrl, getToken);\n\n const gw = new AgentGatewayWSAsync(user, eventBusService, artifactService, serverBaseUrl, agentContext, sessionStore, notificationPort, ws, storageService);\n\n callbacksRef.current.onGatewayReady?.(gw);\n return gw;\n // Empty deps: the gateway lifetime is the provider lifetime.\n // Agent / model swaps mutate it via the setters below.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Propagate live changes to `agentContext` (e.g. admin picks a\n // new agent in the sketch's DatasetParameterizationControls,\n // which writes through `useDashboardAppStore.updateDashboardAgent`\n // → ComposerViewV2 recomputes `dashboardAgentContext` → this\n // prop changes). The setter mutates `gateway.config` in place\n // so the next `sendMessageInternal` ships the new\n // `AgentId` / `CustomerName` / `DataSet` fields. We DON'T tear\n // the WS down or reset the chat history — the session continues\n // with the new agent on its very next prompt.\n const sessionStateManagerService = useMemo(() => {\n return new SessionStateManagerService(\n agentGatewayService,\n sessionService,\n artifactService,\n sessionStore,\n {\n // Stable closure — reads the latest callback off the ref so\n // hosts can swap `onSessionEstablished` without rebuilding\n // the manager (which is constructed once per provider).\n onSessionEstablished: (id) => callbacksRef.current.onSessionEstablished?.(id),\n },\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Propagate `agentContext` prop changes to both the gateway AND the\n // session-state manager. Without the manager push, a heartbeat-driven\n // reconnect would re-open with the stale context captured at the\n // initial bind.\n useEffect(() => {\n agentGatewayService.setAgentContext(agentContext);\n sessionStateManagerService.setAgentContext(agentContext);\n }, [\n agentGatewayService,\n sessionStateManagerService,\n agentContext,\n agentContext.agentConfig?.id,\n agentContext.agentConfig?.name,\n agentContext.customer?.dataSetId,\n agentContext.customer?.name,\n ]);\n\n // Wire callbacks to EventBus events\n useEffect(() => {\n const handleTurnComplete = async (_interactionId: string, interaction: Interaction) => {\n callbacksRef.current.onTurnComplete?.(interaction);\n };\n\n const handleMessage = async (interaction: Interaction) => {\n callbacksRef.current.onMessage?.(interaction);\n };\n\n const handleFirstToken = async (details: { interactionId: string; callId?: string }) => {\n callbacksRef.current.onFirstToken?.(details);\n };\n\n const handleTurnOpen = async (interactionId: string) => {\n callbacksRef.current.onTurnOpen?.(interactionId);\n };\n\n eventBusService.gatewayOnTurnComplete(handleTurnComplete);\n eventBusService.gatewayOnMessage(handleMessage);\n eventBusService.gatewayOnTurnOpen(handleTurnOpen);\n eventBusService.gatewayOnFirstToken(handleFirstToken);\n\n return () => {\n eventBusService.gatewayOffTurnComplete(handleTurnComplete);\n eventBusService.gatewayOffMessage(handleMessage);\n eventBusService.gatewayOffTurnOpen(handleTurnOpen);\n eventBusService.gatewayOffFirstToken(handleFirstToken);\n };\n }, [eventBusService]);\n\n //69b0fd27062d53f869cb7563\n //69b0fd28062d53f869cb7564\n\n // Manage SessionStateManagerService lifecycle\n useEffect(() => {\n const resolvedSessionId = (!sessionId || sessionId === '' || sessionId === 'new') ? undefined : sessionId;\n\n if (!resolvedSessionId && !autoCreateSession) {\n sessionStore.getState().setConnectionStatus('Idle');\n return;\n };\n\n const mgr = sessionStateManagerService;\n\n bindPromise.current = bindPromise.current ?? mgr.bindAndOpenLiveSession(agentContext, resolvedSessionId)\n bindPromise.current\n .then(() => {\n\n })\n .catch((error) => {\n console.error('AiChat: connection error', error);\n callbacksRef.current.onError?.(error instanceof Error ? error : new Error(String(error)));\n })\n .finally(() => {\n bindPromise.current = null;\n })\n\n return () => {\n mgr.stop().catch(() => { });\n };\n }, [agentGatewayService, sessionStateManagerService, sessionId]);\n\n const stableOnVisibleQuestionChange = useCallback((question: string | null) => {\n callbacksRef.current.onVisibleQuestionChange?.(question);\n }, []);\n\n const [localShowToolCalls, setLocalShowToolCalls] = useState(showToolCalls);\n const [localFriendlyMode, setLocalFriendlyMode] = useState(friendlyMode);\n const [currentModel, setCurrentModelState] = useState(agentContext.model);\n const currentModelRef = useRef(agentContext.model);\n\n const setCurrentModel = useCallback((modelId: string) => {\n const prevVendor = getModelVendor(currentModelRef.current);\n const newVendor = getModelVendor(modelId);\n\n if (prevVendor !== 'Unknown' && newVendor !== 'Unknown' && prevVendor !== newVendor) {\n notificationPort.pushNotification({\n message: `Atenção migrando de ${prevVendor} para ${newVendor}.`,\n type: 'warning',\n });\n }\n\n agentGatewayService.setModel(modelId);\n currentModelRef.current = modelId;\n setCurrentModelState(modelId);\n }, [agentGatewayService, notificationPort]);\n\n const sendMessage = useCallback((text: string, options?: SendMessageOptions) => {\n const { ui, ...gatewayOptions } = options ?? {};\n const clientMessage = new ClientMessage(text, 'text/plain');\n if (ui) {\n // Serialize props to a JSON string (mirrors the server's UserUiContent.args). The\n // gateway carries this to the server as a client-only sibling and injects a matching\n // UserAnswer part on the live interaction so the component renders immediately.\n clientMessage.userUi = {\n name: ui.name,\n args: ui.args === undefined\n ? undefined\n : typeof ui.args === 'string' ? ui.args : JSON.stringify(ui.args),\n };\n }\n return agentGatewayService.sendMessage(clientMessage, gatewayOptions);\n }, [agentGatewayService]); \n\n const services = useMemo<AiChatContextState>(() => ({\n agentGatewayService,\n sendMessage,\n eventBusService,\n artifactService,\n storageService,\n notificationPort,\n sessionStore,\n showPromptHistory,\n sessionStateManagerService,\n showStatistics,\n showStickyHeader,\n showModelSelector,\n showSessionInfo,\n showTaskList,\n showSubAgents,\n compactPrompt,\n showConnectionState,\n hidePromptInput,\n onRenderPrompt,\n showToolCalls: localShowToolCalls,\n setShowToolCalls: setLocalShowToolCalls,\n friendlyMode: localFriendlyMode,\n setFriendlyMode: setLocalFriendlyMode,\n currentModel,\n setCurrentModel,\n onVisibleQuestionChange: stableOnVisibleQuestionChange,\n partRenderers,\n uiTools,\n showPersona,\n formatTimestamp,\n resolvePersona,\n userMessageRenderer,\n\n }), [onRenderPrompt, agentGatewayService, sendMessage, eventBusService, artifactService, storageService, notificationPort, sessionStore, showPromptHistory, showStatistics, showModelSelector, showSessionInfo, showTaskList, showSubAgents, compactPrompt, showConnectionState, hidePromptInput, localShowToolCalls, localFriendlyMode, currentModel, setCurrentModel, stableOnVisibleQuestionChange, partRenderers, uiTools, showPersona, formatTimestamp, resolvePersona, userMessageRenderer]);\n\n return (\n <AiChatServiceContext.Provider value={services}>\n {children}\n </AiChatServiceContext.Provider>\n );\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport Collapse from '@mui/material/Collapse';\nimport { PromptUtils, type Prompt } from '@lib/models/Prompt';\nimport Stack from '@mui/material/Stack';\nimport { ChevronLeft, ChevronRight } from '@mui/icons-material';\nimport { getConnectionStateColor } from '@lib/models/enums';\nimport { ConnectionState } from '@lib/models/connectionState';\nimport { useAiChatServices } from '../AiChatContext';\nimport { usePromptState } from '@lib/services/storageService';\nimport { useTheme } from '@mui/material/styles';\n\n\ninterface LastPromptsProps {\n onPromptSelected: (promptText: string, promptJson?: string) => void;\n forceExpanded?: number;\n cancelTimeout: () => void;\n children?: React.ReactNode;\n}\n\nconst LastPrompts: React.FC<LastPromptsProps> = ({ onPromptSelected, forceExpanded = 0, cancelTimeout, children }) => {\n const [prompts, setPrompts] = useState<Prompt[]>([]);\n const [isExpanded, setIsExpanded] = useState(false);\n const { storageService } = useAiChatServices();\n const { promptState } = usePromptState(storageService);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const listItemRefs = useRef<(HTMLLIElement | null)[]>([]);\n\n const theme = useTheme();\n // Load prompts on component mount and when refreshTrigger changes\n useEffect(() => {\n loadPrompts();\n }, [promptState]);\n\n useEffect(() => {\n if (forceExpanded > 0) {\n setIsExpanded(() => false);\n }\n }, [forceExpanded]);\n\n // ESC key listener to collapse prompt history\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n setIsExpanded(() => false);\n }\n };\n\n const handleMouseUp = (_e: MouseEvent) => {\n setIsExpanded(() => false);\n };\n\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('mouseup', handleMouseUp);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n }, []);\n\n const loadPrompts = () => {\n const savedPrompts = storageService.getPrompts();\n setPrompts(savedPrompts);\n };\n\n const handlePromptClick = (promptText: string, promptJson?: string) => {\n onPromptSelected(promptText, promptJson);\n setIsExpanded(() => false); // Collapse after selection\n };\n\n const toggleExpanded = () => {\n setIsExpanded(!isExpanded);\n cancelTimeout();\n };\n\n // If no prompts, don't render anything\n if (prompts.length === 0) {\n return null;\n }\n\n const connectionColor = getConnectionStateColor(ConnectionState.Connected, theme);\n const borderColor = isExpanded ? connectionColor : theme.palette.divider;\n\n const lastPrompt = prompts.length > 0 ? prompts[0] : { promptText: 'No prompts yet' };\n const truncatedText = PromptUtils.truncateText(lastPrompt.promptText, 50, prompts.length);\n\n return (\n <Box\n sx={{\n mt: 0,\n borderTop: 0,\n borderLeft: `1px solid ${borderColor}`,\n borderRight: `1px solid ${borderColor}`,\n borderBottom: `1px solid ${borderColor}`,\n borderTopLeftRadius: 0,\n borderTopRightRadius: 0,\n borderBottomLeftRadius: 10,\n borderBottomRightRadius: 10,\n zIndex: \"0\",\n position: 'relative',\n top: '0px',\n marginLeft: '2.5%',\n overflow: 'hidden',\n width: '95%',\n bgcolor: 'background.default',\n }}\n >\n {/* Collapsed Tab */}\n <Box\n sx={{\n paddingTop: 0.5,\n paddingBottom: 0.5,\n paddingLeft: 1,\n paddingRight: 1,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n bgcolor: 'rgba(255, 255, 255, 0.02)',\n borderTop: isExpanded ? '1px solid rgba(255, 255, 255, 0.1)' : 'none',\n '&:hover': {\n bgcolor: 'rgba(255, 255, 255, 0.05)'\n }\n }}\n onClick={toggleExpanded}\n >\n\n <Box sx={{ overflow: 'clip', width: '50%', textWrap: 'nowrap', borderBottom: 'none' }}>\n <Stack direction=\"row\" spacing={0}>\n <Typography\n variant=\"caption\"\n sx={{\n color: 'text.secondary',\n fontSize: '0.7rem'\n }}\n >\n {!isExpanded && `${truncatedText}`}\n {isExpanded && `Last ${prompts.length} prompt${prompts.length > 1 ? 's' : ''}`}\n </Typography>\n </Stack>\n </Box>\n\n <Box sx={{ width: '47%', textAlign: 'right' }}>\n {children}\n </Box>\n\n <Box sx={{ width: '3%', minWidth: '15px', textAlign: 'right' }}>\n {isExpanded ?\n <ChevronLeft sx={{ fontSize: '12px', transform: 'rotate(90deg)', marginLeft: '0.5rem', border: '1px solid rgba(255, 255, 255, 0.1)' }} /> :\n <ChevronRight sx={{ fontSize: '12px', transform: 'rotate(90deg)', marginLeft: '0.5rem', border: '1px solid rgba(255, 255, 255, 0.1)' }} />}\n </Box>\n </Box>\n\n {/* Expanded List */}\n <Collapse in={isExpanded}>\n <Box\n ref={scrollContainerRef}\n sx={{\n maxHeight: '30vh', // Maximum 30% of viewport height\n overflowY: 'auto'\n }}\n >\n {/* Prompts List */}\n <List sx={{ p: 0 }}>\n {prompts.map((prompt, index) => (\n <ListItem\n key={index + prompt.id}\n ref={(el) => {\n listItemRefs.current[index] = el;\n }}\n onClick={() => handlePromptClick(prompt.promptText, prompt.promptJson)}\n sx={{\n py: 1,\n px: 1,\n cursor: 'pointer',\n bgcolor: 'Background.dafault',\n border: 'none',\n borderBottom: `1px solid ${theme.palette.divider}`,\n borderRadius: 0,\n '&:hover': {\n bgcolor: 'rgba(255, 255, 255, 0.03)'\n }\n }}\n >\n <ListItemText\n primary={\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, verticalAlign: 'middle' }}>\n <Typography\n variant=\"caption\"\n sx={{\n color: 'text.secondary',\n fontSize: '0.7rem',\n fontWeight: 'bold',\n minWidth: '20px',\n textAlign: 'center',\n verticalAlign: 'middle',\n bgcolor: 'rgba(255, 255, 255, 0.05)',\n borderRadius: 1,\n pr: 0.5,\n pl: 0,\n py: 0.2,\n lineHeight: 1\n }}\n >\n #{prompts.length - index}\n </Typography>\n <Box\n color=\"text.secondary\"\n sx={{\n lineHeight: 1.3,\n fontSize: '0.8rem',\n display: '-webkit-box',\n WebkitLineClamp: 3, // Maximum 3 lines\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'pre-wrap',\n flex: 1\n }}\n >\n {prompt.promptText}\n {/* <Box\n component=\"div\"\n sx={{\n height: 20,\n ml: 1,\n lineHeight: 1,\n fontSize: '0.65rem',\n color: 'text.secondary',\n mt: 0.5,\n padding: '0 8px',\n borderRadius: '16px',\n border: '1px solid',\n borderColor: 'divider',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'background.paper'\n }}\n >\n {PromptUtils.formatTimeAgo(prompt.created.toISOString())}\n </Box> */}\n </Box>\n </Box>\n } />\n </ListItem>\n ))}\n </List>\n </Box>\n </Collapse>\n </Box>\n );\n};\n\nexport default LastPrompts;","import Box from '@mui/material/Box';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport { Tooltip, type SxProps, Typography, Stack } from '@mui/material';\n\n// Marker styles\nconst markerStyles = {\n position: 'absolute',\n top: '2px', // Adjust vertical position\n width: '2px',\n height: '10px',\n transform: 'translateX(-50%)', // Center the marker on its position\n};\n\ninterface Marker {\n position: number;\n label: string;\n color: string;\n}\n\nexport interface LinearProgressBarWithMarkersProps {\n value: number;\n valueBuffer: number;\n markers: Marker[];\n sx: SxProps;\n}\n\nfunction LinearProgressBarWithMarkers({ value, valueBuffer, markers, sx }: LinearProgressBarWithMarkersProps) {\n const cappedValue = Math.min(100, value);\n return (\n <Stack direction=\"row\" alignItems=\"center\" spacing={0.5} sx={{ width: '100%' }}>\n <Box sx={{ position: 'relative', ...sx }}>\n <LinearProgress variant=\"determinate\" value={cappedValue} valueBuffer={valueBuffer} color=\"inherit\" sx={{ height: 13, borderRadius: 1 }} />\n <Box sx={{ minWidth: '35px', position: 'absolute', transform: 'translateX(-20%)', top: '-2px', left: `${Math.min(cappedValue, 90).toFixed(2)}%` }}>\n <Typography\n variant=\"body2\"\n sx={{ color: cappedValue <= 70 ? 'text.secondary' : 'text.primary', fontWeight: cappedValue > 50 ? 600 : 400 }}\n >{`${Math.round(cappedValue)}%`}</Typography>\n </Box>\n {markers.map((marker, index) => (\n <Tooltip key={\"TT\" + index} title={marker.label} placement=\"top\" arrow>\n <Box\n key={index}\n sx={{ ...markerStyles, left: `${marker.position}%`, backgroundColor: marker.color }}\n >\n </Box>\n </Tooltip>\n ))}\n </Box>\n </Stack>\n );\n}\n\nexport default LinearProgressBarWithMarkers;","// Stroke icon set for the v2 layout. Mirrors the design reference's icon\n// vocabulary (1.8px stroke, currentColor) so colors flow from the surrounding\n// MUI palette / sx props.\n\nimport React from 'react';\n\ntype IconProps = React.SVGProps<SVGSVGElement> & { size?: number };\n\nconst base = (\n paths: React.ReactNode,\n { size = 14, ...rest }: IconProps,\n): React.ReactElement => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={1.8}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...rest}\n >\n {paths}\n </svg>\n);\n\nexport const SendIcon = (p: IconProps) => base(<><path d=\"M22 2 11 13\" /><path d=\"M22 2 15 22l-4-9-9-4 20-7Z\" /></>, p);\nexport const SearchIcon = (p: IconProps) => base(<><circle cx=\"11\" cy=\"11\" r=\"7\" /><path d=\"m20 20-3.5-3.5\" /></>, p);\nexport const ChatIcon = (p: IconProps) => base(<path d=\"M21 12a8 8 0 0 1-8 8H7l-4 3v-7a8 8 0 0 1 18-4Z\" />, p);\nexport const ChartIcon = (p: IconProps) => base(<><path d=\"M3 3v18h18\" /><path d=\"m7 14 4-4 4 3 5-7\" /></>, p);\nexport const TableIcon = (p: IconProps) => base(<><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" /><path d=\"M3 9h18M3 15h18M9 3v18\" /></>, p);\nexport const PlusIcon = (p: IconProps) => base(<path d=\"M12 5v14M5 12h14\" />, p);\nexport const PanelIcon = (p: IconProps) => base(<><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" /><path d=\"M9 3v18\" /></>, p);\nexport const SparkleIcon = (p: IconProps) => base(<path d=\"M12 3v4M12 17v4M3 12h4M17 12h4M5.6 5.6l2.8 2.8M15.6 15.6l2.8 2.8M5.6 18.4l2.8-2.8M15.6 8.4l2.8-2.8\" />, p);\nexport const CheckIcon = (p: IconProps) => base(<path d=\"M20 6 9 17l-5-5\" />, { strokeWidth: 2.5, ...p } as IconProps);\nexport const ChevronIcon = (p: IconProps) => base(<path d=\"m6 9 6 6 6-6\" />, { strokeWidth: 2, ...p } as IconProps);\nexport const ChevronRightIcon = (p: IconProps) => base(<path d=\"m9 6 6 6-6 6\" />, { strokeWidth: 2, ...p } as IconProps);\nexport const TrashIcon = (p: IconProps) => base(<path d=\"M3 6h18M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6\" />, p);\nexport const PinIcon = (p: IconProps) => base(<path d=\"M12 17v5M9 3h6l-1 6 4 3H6l4-3-1-6Z\" />, p);\nexport const BrainIcon = (p: IconProps) => base(<path d=\"M9 3a3 3 0 0 0-3 3 3 3 0 0 0-3 3v3a3 3 0 0 0 3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3ZM15 3a3 3 0 0 1 3 3 3 3 0 0 1 3 3v3a3 3 0 0 1-3 3 3 3 0 0 1-3 3 3 3 0 0 1-3-3\" />, p);\nexport const DashboardIcon = (p: IconProps) => base(<><rect x=\"3\" y=\"3\" width=\"7\" height=\"9\" rx=\"1.2\" /><rect x=\"14\" y=\"3\" width=\"7\" height=\"5\" rx=\"1.2\" /><rect x=\"14\" y=\"12\" width=\"7\" height=\"9\" rx=\"1.2\" /><rect x=\"3\" y=\"16\" width=\"7\" height=\"5\" rx=\"1.2\" /></>, p);\nexport const DataExplorerIcon = (p: IconProps) => base(<><ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\" /><path d=\"M3 5v6c0 1.66 4 3 9 3s9-1.34 9-3V5\" /><path d=\"M3 11v6c0 1.66 4 3 9 3s9-1.34 9-3v-6\" /></>, p);\nexport const ComposerIcon = (p: IconProps) => base(<><path d=\"M12 3v18M3 12h18\" /><circle cx=\"12\" cy=\"12\" r=\"9\" /></>, p);\nexport const CloseIcon = (p: IconProps) => base(<path d=\"M18 6 6 18M6 6l12 12\" />, { strokeWidth: 2, ...p } as IconProps);\nexport const PauseIcon = (p: IconProps) => base(<><rect x=\"6\" y=\"4\" width=\"4\" height=\"16\" rx=\"1\" /><rect x=\"14\" y=\"4\" width=\"4\" height=\"16\" rx=\"1\" /></>, p);\nexport const StopIcon = (p: IconProps) => base(<rect x=\"5\" y=\"5\" width=\"14\" height=\"14\" rx=\"2\" />, p);\nexport const HistoryIcon = (p: IconProps) => base(<><path d=\"M3 12a9 9 0 1 0 3-6.7L3 8\" /><path d=\"M3 3v5h5\" /><path d=\"M12 7v5l3 2\" /></>, p);\nexport const MenuIcon = (p: IconProps) => base(<path d=\"M4 6h16M4 12h16M4 18h16\" />, { strokeWidth: 2, ...p } as IconProps);\n\n// Tool-category icons used by the collapsed RunProgressPanel rail.\nexport const FileIcon = (p: IconProps) => base(<><path d=\"M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z\" /><path d=\"M14 3v5h5\" /></>, p);\nexport const TerminalIcon = (p: IconProps) => base(<><rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"2\" /><path d=\"m7 9 3 3-3 3M13 15h4\" /></>, p);\nexport const CodeIcon = (p: IconProps) => base(<path d=\"m8 8-5 4 5 4M16 8l5 4-5 4M14 4l-4 16\" />, p);\nexport const GlobeIcon = (p: IconProps) => base(<><circle cx=\"12\" cy=\"12\" r=\"9\" /><path d=\"M3 12h18\" /><path d=\"M12 3a13.5 13.5 0 0 1 0 18\" /><path d=\"M12 3a13.5 13.5 0 0 0 0 18\" /></>, p);\nexport const UsersIcon = (p: IconProps) => base(<><circle cx=\"9\" cy=\"8\" r=\"3\" /><path d=\"M3 21v-1a5 5 0 0 1 5-5h2a5 5 0 0 1 5 5v1\" /><circle cx=\"17\" cy=\"9\" r=\"2.5\" /><path d=\"M14 14h2.5a4 4 0 0 1 4 4v.5\" /></>, p);\nexport const ListCheckIcon = (p: IconProps) => base(<><path d=\"M9 6h11M9 12h11M9 18h11\" /><path d=\"m3 6 1.5 1.5L7 5M3 12l1.5 1.5L7 11M3 18l1.5 1.5L7 17\" /></>, p);\n\n// Lock states for the RunProgressPanel rail's per-tool tiles. Open\n// lock = in-flight (composing or executing — the agent is still\n// \"negotiating\" with the tool); closed lock = the call has produced\n// its final response.\nexport const LockOpenIcon = (p: IconProps) => base(<><rect x=\"4\" y=\"11\" width=\"16\" height=\"11\" rx=\"2\" /><path d=\"M8 11V7a4 4 0 0 1 7.5-2\" /></>, p);\nexport const LockClosedIcon = (p: IconProps) => base(<><rect x=\"4\" y=\"11\" width=\"16\" height=\"11\" rx=\"2\" /><path d=\"M8 11V7a4 4 0 0 1 8 0v4\" /></>, p);\n\n// Tool icons for AgentActivityV2 (keyed by canonical tool name)\nexport const ToolIcon = {\n list_tables: (p: IconProps) => base(<><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" /><path d=\"M3 9h18M3 15h18\" /></>, p),\n describe_schema: (p: IconProps) => base(<><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" /><path d=\"M14 2v6h6M9 13h6M9 17h6\" /></>, p),\n run_query: (p: IconProps) => base(<><path d=\"M8 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2h-3\" /><path d=\"m9 11 3 3 5-5\" /></>, p),\n render_chart: (p: IconProps) => base(<><path d=\"M3 3v18h18\" /><path d=\"m7 14 4-4 4 3 5-7\" /></>, p),\n generic: (p: IconProps) => base(<><path d=\"M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20Z\" /><path d=\"M8 14s1.5 2 4 2 4-2 4-2\" /></>, p),\n} as const;\n","import React, { useState, useEffect, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport Stack from '@mui/material/Stack';\nimport IconButton from '@mui/material/IconButton';\nimport Tooltip from '@mui/material/Tooltip';\n\n// Material Icons\nimport TimerIcon from '@mui/icons-material/Timer';\nimport StorageIcon from '@mui/icons-material/Storage';\nimport BufferingIcon from '@mui/icons-material/Memory';\nimport HelpOutlineIcon from '@mui/icons-material/HelpOutline';\nimport LinearProgressBarWithMarkers from '../../Library/LinearProgressBarWithMarkers';\nimport { grey } from '@mui/material/colors';\nimport { useAiChatSessionStore } from '../AiChatContext';\nimport { ConnectionState } from '@lib/models/connectionState';\nimport type { SessionInformation } from '@lib/models/semanticKernelModel/models';\nimport { useTheme } from '@mui/material/styles';\nimport { Timer } from '@mui/icons-material';\nimport { PauseIcon, StopIcon } from '../../v2/icons';\n\nconst MONO_FONT = '\"JetBrains Mono\", ui-monospace, SFMono-Regular, Menlo, monospace';\n\n/**\n * Optional inline Pause / Stop control mounted at the right end of the\n * stats row. When `pauseControl` is provided, StreamStatistics shows a\n * single state-driven button instead of a separate footer:\n *\n * - turnOpen=false → disabled Pause icon\n * - turnOpen=true, suspended=false → Pause icon (clickable, tooltip)\n * - suspended=true → Stop icon (cancel)\n *\n * Hosts wire `onPause` (suspend / resume) and `onCancel` (stop stream)\n * to the gateway. The component picks which one to call based on state.\n */\nexport interface StreamStatisticsPauseControl {\n turnOpen: boolean;\n suspended: boolean;\n suspending?: boolean;\n onPause: () => void;\n onCancel: () => void;\n}\n\nexport interface StreamStatisticsProps {\n /**\n * Compact v2 chrome — mono font everywhere, hides elapsed time,\n * renders a circle badge for session-size usage instead of a\n * progress bar. Defaults to `false` (legacy v1 chrome).\n */\n compact?: boolean;\n /** Optional inline Pause/Stop button. */\n pauseControl?: StreamStatisticsPauseControl;\n}\n\n/**\n * Small circular badge showing the integer % of the session-size\n * threshold currently used. Tooltip exposes the full numbers (size,\n * maxSize, threshold) so the bar's information stays accessible.\n */\nfunction SessionUsageBadge({ info }: { info: SessionInformation }) {\n const theme = useTheme();\n const integerPercent = Math.round(info.ratio * 100);\n const overThreshold = info.ratio >= info.threshold;\n const tooltipBody = (\n <Box sx={{ fontFamily: MONO_FONT, fontSize: 11, lineHeight: 1.5 }}>\n <Box sx={{ fontFamily: 'inherit', fontWeight: 500, mb: 0.25 }}>Tamanho do Contexto</Box>\n <Box>{`Uso atual: ${integerPercent}%`}</Box>\n <Box>{`${info.size.toLocaleString()} / ${info.maxSize.toLocaleString()} tokens`}</Box>\n <Box>{`Limite: ${Math.round(info.threshold * 100)}%`}</Box>\n </Box>\n );\n\n // Progress-arc geometry. The ring is drawn as an SVG circle with a\n // dashed stroke whose dash-length encodes the filled portion of the\n // circumference. Rotating the SVG -90° puts the dash start at 12\n // o'clock, so the arc fills clockwise like a typical progress ring.\n const SIZE = 26;\n const STROKE = 2;\n const RADIUS = (SIZE - STROKE) / 2;\n const CIRC = 2 * Math.PI * RADIUS;\n const clampedRatio = Math.max(0, Math.min(1, info.ratio));\n const dashFilled = CIRC * clampedRatio;\n const trackColor = '#26262d';\n const arcColor = overThreshold ? '#d97a7a' : theme.palette.primary.light;\n const textColor = overThreshold ? '#d97a7a' : '#ececef';\n\n return (\n <Tooltip title={tooltipBody} placement=\"top\" arrow>\n <Box\n sx={{\n position: 'relative',\n width: SIZE,\n height: SIZE,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n }}\n aria-label={`Tamanho do contexto: ${integerPercent}%`}\n >\n <Box\n component=\"svg\"\n width={SIZE}\n height={SIZE}\n viewBox={`0 0 ${SIZE} ${SIZE}`}\n sx={{\n position: 'absolute',\n inset: 0,\n transform: 'rotate(-90deg)',\n }}\n >\n {/* Background ring + filled inner disc */}\n <circle\n cx={SIZE / 2}\n cy={SIZE / 2}\n r={RADIUS}\n fill=\"#17171b\"\n stroke={trackColor}\n strokeWidth={STROKE}\n />\n {/* Progress arc */}\n <circle\n cx={SIZE / 2}\n cy={SIZE / 2}\n r={RADIUS}\n fill=\"none\"\n stroke={arcColor}\n strokeWidth={STROKE}\n strokeLinecap=\"round\"\n strokeDasharray={`${dashFilled} ${CIRC}`}\n style={{ transition: 'stroke-dasharray .25s ease' }}\n />\n </Box>\n <Box\n sx={{\n position: 'relative',\n fontFamily: MONO_FONT,\n fontSize: 10.5,\n fontWeight: 500,\n color: textColor,\n lineHeight: 1,\n }}\n >\n {integerPercent}\n </Box>\n </Box>\n </Tooltip>\n );\n}\n\nexport const StreamStatistics: React.FC<StreamStatisticsProps> = ({\n compact = false,\n pauseControl,\n}) => {\n const initialSessionInformation: SessionInformation = {\n size: 0,\n originalSize: 0,\n ratio: 0,\n previousRatio: 0,\n threshold: 0.9,\n maxSize: 0,\n }\n const [bufferSize, setBufferSize] = useState<number>(0);\n\n const theme = useTheme();\n\n const [sessionInformation, setSessionInformation] = useState<SessionInformation>(initialSessionInformation);\n const currentSession = useAiChatSessionStore((state) => state.session);\n const streamStats = useAiChatSessionStore((state) => state.statistics);\n const connectionStatus = useAiChatSessionStore((state) => state.connectionStatus);\n\n useEffect(() => {\n setSessionInformation(initialSessionInformation);\n }, [currentSession])\n\n useEffect(() => {\n const sessionInformation = streamStats?.sessionInformation;\n if (sessionInformation) {\n setSessionInformation(sessionInformation);\n }\n }, [streamStats])\n\n useEffect(() => {\n // Calculate buffering info\n if (!streamStats) return;\n setBufferSize(streamStats.buffer.reduce((acc, curr) => acc + curr.length, 0))\n\n }, [streamStats])\n\n // Pre-existing precedence bug: `?? 0 > 1` parses as `?? (0 > 1)`,\n // so when `buffer.length === 0` this resolved to `0` (numeric, not\n // boolean) and `{showBuffering && (...)}` rendered a stray `0`\n // glyph in the row. Parenthesise the nullish coalesce so we get\n // a real boolean.\n const showBuffering = (streamStats?.buffer.length ?? 0) > 1;\n // Calculate unknown/unparsed count\n const problemCount = (streamStats?.unknonwCount ?? 0) + (streamStats?.unparsedCount ?? 0);\n const showProblems = problemCount > 0;\n\n // Helper function to format elapsed time\n const formatElapsed = (elapsed: number): string => {\n if (elapsed < 60) {\n return `${elapsed.toFixed(2)}s`;\n } else {\n const minutes = Math.floor(elapsed / 60);\n const seconds = elapsed % 60;\n return `${minutes}.${Math.floor(seconds / 6)}min`;\n }\n };\n\n // Helper function to format file size\n const formatFileSize = useCallback((bytes: number): string => {\n if (bytes < 1024) {\n return `${bytes.toFixed(1)}B`;\n } else if (bytes < 1024 * 1024) {\n return `${(bytes / 1024).toFixed(1)}KB`;\n } else {\n return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;\n }\n }, [streamStats]);\n\n const getPerSecondColor = () => {\n const tokensPerSecond = streamStats?.tokensPerSecond ?? 0;\n const highest = 1000 / 50;\n\n if (tokensPerSecond > highest) {\n return theme.palette.warning.dark;\n }\n else if (tokensPerSecond > highest * 0.8) {\n return theme.palette.secondary.light;\n }\n else if (tokensPerSecond > highest * 0.6) {\n return theme.palette.secondary.dark;\n }\n else if (tokensPerSecond > highest * 0.4) {\n return theme.palette.primary.dark;\n }\n else if (tokensPerSecond > highest * 0.2) {\n return theme.palette.text.primary;\n }\n else {\n return theme.palette.text.secondary;\n }\n }\n\n const getGreyScale = useCallback((ratio: number) => {\n type greyScale = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;\n const scale = (900 - (Math.min(Math.round((1000 * Math.max(ratio, 0.2)) / 100), 9) * 100) + 100) as greyScale\n return grey[scale]\n }, [sessionInformation]);\n\n // Apply the mono font to every Typography in the row when in compact\n // (v2) mode. Centralising the override here keeps the per-segment sx\n // blocks below readable.\n const captionSx = compact\n ? { fontFamily: MONO_FONT, fontSize: '0.7rem' }\n : { fontSize: '0.7rem' };\n\n // Inline Pause/Stop button — only rendered when the host opts in via\n // `pauseControl`. Disabled when no turn is in flight; switches to a\n // Stop glyph once the agent is suspended, so a single button covers\n // pause / resume / stop in one place.\n const renderPauseButton = () => {\n if (!pauseControl) return null;\n const { turnOpen, suspended, suspending, onPause, onCancel } = pauseControl;\n const showStop = suspended;\n const enabled = turnOpen || suspended;\n const handleClick = () => { showStop ? onCancel() : onPause(); };\n const tooltipText = showStop\n ? 'Cancelar — encerra o turno em execução'\n : suspending\n ? 'Pausando…'\n : 'Para continuar envie uma nova mensagem; o agente vai seguir do ponto que parou';\n return (\n <Tooltip title={tooltipText} placement=\"top\" arrow>\n <Box component=\"span\" sx={{ display: 'inline-flex' }}>\n <IconButton\n size=\"small\"\n onClick={handleClick}\n disabled={!enabled || suspending}\n sx={{\n p: 0.5,\n color: showStop ? '#d97a7a' : '#e0a458',\n opacity: enabled ? 1 : 0.4,\n '&:hover': enabled ? { backgroundColor: '#1d1d22' } : undefined,\n }}\n aria-label={showStop ? 'Cancelar turno' : 'Pausar turno'}\n >\n {showStop ? <StopIcon size={14} /> : <PauseIcon size={14} />}\n </IconButton>\n </Box>\n </Tooltip>\n );\n };\n\n return (\n\n <Box\n sx={{\n paddingTop: 0.5,\n paddingBottom: 0.5,\n paddingLeft: 1,\n paddingRight: 1,\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n alignContent: 'center',\n bgcolor: 'rgba(255, 255, 255, 0.02)',\n }}\n >\n <Stack direction=\"row\" alignItems=\"center\" spacing={0.5} sx={{ width: '100%' }}>\n {connectionStatus == ConnectionState.Connected && (\n <>\n {/* Event Count */}\n <Timer sx={{ fontSize: '0.8rem', color: getPerSecondColor() }} />\n <Typography\n variant=\"caption\"\n sx={{ color: getPerSecondColor(), ...captionSx }}\n >\n {streamStats?.tokensPerSecond.toFixed(2) ?? \"-\"}\n </Typography>\n\n <Box sx={{ width: '5px' }} />\n\n {/* Elapsed Time — hidden in compact (v2) mode\n because the panel header already shows the\n turn elapsed time, making this redundant. */}\n {!compact && (\n <>\n <TimerIcon sx={{ fontSize: '0.8rem', color: 'text.secondary' }} />\n <Typography\n variant=\"caption\"\n sx={{ color: 'text.secondary', ...captionSx }}\n >\n {formatElapsed(streamStats?.elapsed ?? 0)}\n </Typography>\n\n <Box sx={{ width: '5px' }} />\n </>\n )}\n\n {/* Total Transferred */}\n <StorageIcon sx={{ fontSize: '0.8rem', color: 'text.secondary' }} />\n <Typography\n variant=\"caption\"\n sx={{ color: 'text.secondary', ...captionSx }}\n >\n {formatFileSize(streamStats?.totalTransfered ?? 0)}\n </Typography>\n\n <Box sx={{ width: '5px' }} />\n\n {/* Conditional Buffering */}\n {showBuffering && (\n <>\n <Box sx={{ width: '5px' }} />\n <BufferingIcon sx={{ fontSize: '0.8rem', color: 'text.primary' }} />\n <Typography\n variant=\"caption\"\n sx={{ color: 'text.primary', fontStyle: 'italic', ...captionSx }}\n >\n {formatFileSize(bufferSize)}\n </Typography>\n </>\n )}\n\n\n {/* Conditional Unknown/Unparsed Count */}\n {showProblems && (\n <>\n <Box sx={{ width: '5px' }} />\n <HelpOutlineIcon sx={{ fontSize: '0.8rem', color: 'text.secondary' }} />\n <Typography\n variant=\"caption\"\n sx={{ color: 'text.secondary', ...captionSx }}\n >\n {problemCount}\n </Typography>\n </>\n )}\n </>\n )}\n\n {(() => {\n // Only surface the session-size readout once it\n // would render as something meaningful. The store\n // seeds `size` early and `ratio` can be a tiny\n // positive number (e.g. 0.003 → rounds to 0%) for\n // the first turns of a fresh session — without\n // guarding on the rendered integer the compact\n // badge ends up showing \"0\", which conveys nothing\n // useful. Wait for ≥1% of context to be in use.\n const integerPercent = sessionInformation\n ? Math.round(sessionInformation.ratio * 100)\n : 0;\n const hasUsage = !!sessionInformation\n && sessionInformation.size > 0\n && integerPercent > 0;\n if (!hasUsage) return null;\n return compact ? (\n // v2 compact — replace the wide progress bar with\n // a small badge that surfaces the integer % and\n // exposes the full numbers via tooltip.\n <>\n <Box sx={{ flex: 1 }} />\n <SessionUsageBadge info={sessionInformation} />\n </>\n ) : (\n <LinearProgressBarWithMarkers\n value={sessionInformation.ratio * 100}\n valueBuffer={sessionInformation.previousRatio * 100}\n markers={[{ position: sessionInformation.threshold * 100, label: 'Limit', color: 'error.main' }]}\n sx={{ width: '100%', minWidth: '50px', color: getGreyScale(sessionInformation.ratio) }}\n />\n );\n })()}\n\n {compact && pauseControl && (\n <>\n {/* push the button to the right edge when there's\n no session info badge to the left of it. */}\n {!(sessionInformation\n && sessionInformation.size > 0\n && Math.round(sessionInformation.ratio * 100) > 0) && <Box sx={{ flex: 1 }} />}\n {renderPauseButton()}\n </>\n )}\n </Stack>\n </Box>\n\n );\n};\n\nexport default StreamStatistics;\n","import Box from '@mui/material/Box';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport { Tooltip, type SxProps, Typography, Stack } from '@mui/material';\n\n// Marker styles\nconst markerStyles = {\n position: 'absolute',\n top: '2px', // Adjust vertical position\n width: '2px',\n height: '10px',\n transform: 'translateX(-50%)', // Center the marker on its position\n};\n\ninterface Marker {\n position: number;\n label: string;\n color: string;\n}\n\nexport interface LinerBackgroundProgressProps {\n value: number;\n completedColor: string;\n unCompletedColor: string;\n children: React.ReactNode\n}\n\nfunction LinerBackgroundProgress({ value, children, completedColor, unCompletedColor }: LinerBackgroundProgressProps) {\n const cappedValue = Math.min(100, value);\n return (\n <Box sx={{ position: 'relative', paddingX: 1, paddingY:0.5, width: '100%', minHeight:'40px'}}>\n <Stack direction=\"row\" alignItems=\"center\" spacing={0} sx={{ position:'absolute',top:0,left:0, display: 'inline-flex', flexWrap: 'nowrap', width: '100%', minHeight:'40px' }}>\n <Box sx={{ width: `${cappedValue}%`, backgroundColor: completedColor, minHeight: '40px', borderTopLeftRadius: '5px', borderBottomLeftRadius: '5px', borderRight:`3px solid ${completedColor}` }}>\n </Box>\n <Box sx={{ width: `${100 - cappedValue}%`,backgroundColor: unCompletedColor, minHeight: '40px', borderTopRightRadius: '5px', borderBottomRightRadius: '5px' }}>\n </Box>\n </Stack>\n {children}\n </Box>\n );\n}\n\nexport default LinerBackgroundProgress;","import React, { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport { ChevronRight, CheckCircle, RadioButtonUnchecked, Pending, Error as ErrorIcon } from '@mui/icons-material';\nimport { useAiChatServices, useAiChatSessionStore } from '../AiChatContext';\nimport type { TodoList, TodoItem } from '@lib/models/todoListModel';\nimport Stack from '@mui/material/Stack';\nimport { Collapse, IconButton } from '@mui/material';\nimport LinerBackgroundProgress from '@lib/components/Library/LinearBackgroundProgress';\n\ninterface TaskListProps {\n forceExpanded?: number;\n}\n\nfunction StatusIcon({ status }: { status: TodoItem['status'] }) {\n switch (status) {\n case 'completed':\n return <CheckCircle sx={{ fontSize: '0.95rem' }} />;\n case 'in_progress':\n return <Pending sx={{ fontSize: '0.95rem' }} />;\n case 'failed':\n return <ErrorIcon sx={{ fontSize: '0.95rem' }} />;\n default:\n return <RadioButtonUnchecked sx={{ fontSize: '0.95rem' }} />;\n }\n}\n\nfunction statusColor(status: TodoItem['status']): string {\n switch (status) {\n case 'completed':\n return 'success.main';\n case 'in_progress':\n return 'primary.main';\n case 'failed':\n return 'error.main';\n default:\n return 'text.disabled';\n }\n}\n\nexport const TaskList: React.FC<TaskListProps> = ({ }) => {\n const [isExpanded, setIsExpanded] = useState<boolean | undefined>(true);\n const lastToolEvent = useAiChatSessionStore((state) => state.lastToolEvent);\n const { agentGatewayService } = useAiChatServices();\n\n if (lastToolEvent?.eventName !== 'todolistUpdated' || lastToolEvent?.subAgentId) {\n return null;\n }\n\n // const todoList: TodoList = {\n // items: [\n // {\n // key: \"1\",\n // label: \"item2 item2 item2 item2 item2\",\n // status: \"completed\",\n // detail: \"andandoandandoa ndandoandandoandand oandandoandand oandandoandandoandando andandoandandoandandoandandoandan doandandoandandoandandoandandoa ndandoandandoandandoandandoandandoandandoandandoandandoa ndandoandandoandandoandandoandandoandandoandando\"\n // },\n // {\n // key: \"2\",\n // label: \"item2\",\n // status: \"in_progress\",\n // detail: \"andando andando andando andando andando andando andando andando andando andando andando andando andando andando andando \"\n // },\n // {\n // key: \"3\",\n // label: \"item2\",\n // status: \"in_progress\",\n // detail: \"andando\"\n // },\n // ],\n // currentWorkingItemKey: \"1\"\n // }\n\n if (lastToolEvent.eventData == '' && !lastToolEvent.subAgentId) {\n return null;\n }\n\n const todoList: TodoList = JSON.parse(lastToolEvent.eventData);\n\n const currentInteraction = agentGatewayService.getCurrentInteraction();\n if (agentGatewayService && currentInteraction)\n currentInteraction.todoList = todoList;\n\n const completedCount = todoList.items.filter(item => item.status === 'completed').length;\n const totalCount = todoList.items.length;\n const position = totalCount > 0 ? (completedCount / totalCount) * 100 : 0;\n const oneOfN = completedCount > 0 ? `${completedCount} de ${totalCount} completos` : 'Iniciando...'\n const tasksSummary = `${oneOfN} - ${position.toFixed(0)}%`;\n\n if (totalCount == 0) return null;\n\n\n const currentItem = todoList.currentWorkingItemKey\n ? todoList.items.find(i => i.key === todoList.currentWorkingItemKey)\n : null;\n const onGoingSummary = currentItem\n ? `${currentItem.label}${currentItem.detail ? `: ${currentItem.detail}` : ''}`\n : '';\n\n return (<Box\n sx={{\n overflow: 'hidden',\n fontSize: '0.85rem',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n p: 0,\n position: 'relative'\n }}\n >\n <Stack gap={isExpanded ? 1 : 0} sx={{ display: 'inline-flex', width: '100%' }}>\n\n <Box sx={{ '&:hover': { cursor: \"pointer\" } }} onClick={() => setIsExpanded(!isExpanded)}>\n <LinerBackgroundProgress value={position} completedColor='rgba(120,120,120,0.3)' unCompletedColor='rgba(120,120,120,0.1)'>\n <Stack direction={'row'} sx={{ width: '100%', flexWrap: 'wrap', display: 'inline-flex', mb: isExpanded ? 0.5 : 1, alignItems: 'center' }}>\n <Box sx={{ overflow: 'clip', minWidth: '18%', maxWidth: '18%', textWrap: 'nowrap', pl: 0.5, borderBottom: 'none' }}>\n <Typography\n variant=\"body1\"\n sx={{\n color: 'text.primary'\n }}\n >\n {tasksSummary}\n </Typography>\n </Box>\n <Box sx={{ minWidth: '55%', maxWidth: '55%', px: 1, mx: 1, pl: 0.5, borderBottom: 'none' }}>\n <Typography\n variant=\"body1\"\n noWrap\n sx={{\n color: 'primary.main'\n }}\n >\n {onGoingSummary}\n </Typography>\n </Box>\n\n <Box sx={{ minWidth: '23%', maxWidth: '23%', overflow: 'clip', textAlign: 'end', justifyContent: 'end', flexWrap: 'wrap' }}>\n <Stack direction=\"row\" sx={{ width: '100%', display: 'inline-flex', overflow: 'clip', alignItems: 'center', justifyContent: 'end', flexWrap: 'nowrap' }} gap={0.5}>\n <Typography noWrap variant='body1' sx={{\n color: 'text.primary'\n }}>{todoList.title?.length ?? 0 > 0 ? todoList.title : \"Tarefas planejadas\"}</Typography>\n <IconButton size='small'>\n {isExpanded ? <ChevronRight fontSize='small' sx={{ rotate: '90deg' }} /> : <ChevronRight fontSize='small' sx={{ rotate: '-90deg' }} />}\n </IconButton>\n </Stack>\n </Box>\n </Stack>\n\n </LinerBackgroundProgress>\n </Box>\n\n\n <Collapse in={isExpanded} sx={{ maxHeight: '150px', overflow: 'auto', display: 'inline-flex' }}>\n\n <Stack gap={1} sx={{ display: 'inline-flex' }}>\n {todoList.items.map((item: TodoItem) => (\n <Box\n key={item.key}\n sx={{\n display: 'flex',\n alignItems: 'flex-start',\n gap: 0.75,\n py: 0.4,\n opacity: item.status === 'completed' ? 0.5 : 1,\n }}\n >\n <Box sx={{ mt: '1px', flexShrink: 0, color: statusColor(item.status) }}>\n <StatusIcon status={item.status} />\n </Box>\n <Box>\n <Typography variant=\"caption\" sx={{ display: 'block', fontSize: '0.78rem', lineHeight: 1.3, textDecoration: item.status === 'completed' ? 'line-through' : 'none' }}>\n {item.label}\n </Typography>\n {item.detail && (\n <Typography variant=\"caption\" sx={{ display: 'block', fontSize: '0.7rem', color: 'text.secondary', lineHeight: 1.3 }}>\n {item.detail}\n </Typography>\n )}\n </Box>\n </Box>\n ))}\n </Stack>\n </Collapse>\n </Stack>\n\n </Box>\n\n );\n};\n","import React, { useState, useCallback } from 'react';\nimport {\n IconButton, Popover, Box, Typography, Stack, Chip, Tooltip, alpha, useTheme, Divider,\n} from '@mui/material';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport SmartToyOutlinedIcon from '@mui/icons-material/SmartToyOutlined';\nimport { ModelConfig, ModelType, getModelVendor } from '@lib/models/enums';\nimport { useAiChatServices } from '../AiChatContext';\n\ntype ModelConfigEntry = (typeof ModelConfig)[keyof typeof ModelConfig];\n\ninterface ModelOption {\n id: string;\n config: ModelConfigEntry;\n vendor: string;\n}\n\nconst AVAILABLE_MODELS: ModelOption[] = Object.entries(ModelConfig).map(([id, config]) => ({\n id,\n config,\n vendor: getModelVendor(id),\n}));\n\nconst speedColor: Record<string, 'success' | 'info' | 'warning'> = {\n Fastest: 'success',\n Fast: 'success',\n Good: 'info',\n Moderate: 'warning',\n};\n\nconst qualityColor: Record<string, 'secondary' | 'info' | 'warning'> = {\n Highest: 'secondary',\n High: 'info',\n Good: 'warning',\n};\n\ninterface ModelSelectorProps {\n /**\n * Render the model list inline (no IconButton trigger, no popover)\n * — used by surfaces that already host their own settings menu and\n * want the model list embedded directly. Defaults to `false`.\n */\n inline?: boolean;\n}\n\nconst ModelSelector: React.FC<ModelSelectorProps> = ({ inline = false }) => {\n const theme = useTheme();\n const { currentModel, setCurrentModel } = useAiChatServices();\n const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\n\n const handleOpen = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(e.currentTarget);\n }, []);\n\n const handleClose = useCallback(() => {\n setAnchorEl(null);\n }, []);\n\n const handleSelect = useCallback((modelId: string) => {\n setCurrentModel(modelId);\n handleClose();\n }, [setCurrentModel, handleClose]);\n\n const currentConfig = currentModel ? (ModelConfig as Record<string, ModelConfigEntry>)[currentModel] : undefined;\n const CurrentIcon = currentConfig?.icon ?? SmartToyOutlinedIcon;\n\n const listContent = (\n <Stack direction=\"row\">\n <Stack spacing={0.5} sx={inline ? { maxWidth: 250, flex: '0 0 250px', minWidth: 0 } : undefined}>\n <Typography variant='h6' width={\"100%\"} textAlign={\"center\"}>Fast models</Typography>\n <Divider />\n {AVAILABLE_MODELS.map(({ id, config, vendor }) => {\n const isSelected = id === currentModel;\n const Icon = config.icon;\n\n if (config.speed !== 'Fast') return null;\n\n return (\n <Box\n key={id}\n onClick={() => handleSelect(id)}\n sx={{\n display: 'flex',\n alignItems: 'flex-start',\n gap: 1.5,\n p: 1.2,\n borderRadius: 1.5,\n cursor: 'pointer',\n border: '1px solid',\n borderColor: isSelected ? 'primary.main' : 'transparent',\n bgcolor: isSelected ? alpha(theme.palette.primary.main, 0.08) : 'transparent',\n transition: 'all 0.15s ease',\n '&:hover': {\n bgcolor: isSelected\n ? alpha(theme.palette.primary.main, 0.12)\n : 'action.hover',\n },\n }}\n >\n <Box sx={{ pt: 0.3 }}>\n <Icon fontSize=\"small\" sx={{ color: isSelected ? 'primary.main' : 'text.secondary' }} />\n </Box>\n\n <Box sx={{ flex: 1, minWidth: 0,minHeight: '120px' }}>\n <Stack direction=\"row\" alignItems=\"center\" spacing={0.5}>\n <Typography variant=\"body2\" sx={{ fontWeight: 600, fontSize: '0.8rem' }}>\n {config.name}\n </Typography>\n {isSelected && <CheckCircleIcon sx={{ fontSize: 14, color: 'primary.main' }} />}\n </Stack>\n\n <Typography variant=\"caption\" sx={{ color: 'text.secondary', fontSize: '0.68rem', display: 'block', mb: 0.5 }}>\n {id}\n </Typography>\n\n <Typography variant=\"caption\" sx={{ color: 'text.secondary', fontSize: '0.7rem', lineHeight: 1.3, display: 'block', whiteSpace: 'pre-line' }}>\n {config.description}\n </Typography>\n\n <Stack direction=\"row\" spacing={0.5} sx={{ mt: 0.8 }}>\n <Chip\n label={config.speed}\n size=\"small\"\n color={speedColor[config.speed] ?? 'default'}\n variant=\"outlined\"\n sx={{ height: 18, fontSize: '0.6rem', '& .MuiChip-label': { px: 0.8 } }}\n />\n <Chip\n label={config.quality}\n size=\"small\"\n color={qualityColor[config.quality] ?? 'default'}\n variant=\"outlined\"\n sx={{ height: 18, fontSize: '0.6rem', '& .MuiChip-label': { px: 0.8 } }}\n />\n <Chip\n label={vendor}\n size=\"small\"\n variant=\"filled\"\n sx={{ height: 18, fontSize: '0.6rem', '& .MuiChip-label': { px: 0.8 }, bgcolor: 'action.selected' }}\n />\n </Stack>\n </Box>\n </Box>\n );\n })}\n </Stack>\n <Stack spacing={0.5} sx={inline ? { maxWidth: 250, flex: '0 0 250px', minWidth: 0 } : undefined}>\n <Typography variant='h6' width={\"100%\"} textAlign={\"center\"}>High Precision</Typography>\n <Divider />\n {AVAILABLE_MODELS.map(({ id, config, vendor }) => {\n const isSelected = id === currentModel;\n const Icon = config.icon;\n\n if (config.quality !== 'Highest') return null;\n\n return (\n <Box\n key={id}\n onClick={() => handleSelect(id)}\n sx={{\n display: 'flex',\n alignItems: 'flex-start',\n gap: 1.5,\n p: 1.2,\n borderRadius: 1.5,\n cursor: 'pointer',\n border: '1px solid',\n borderColor: isSelected ? 'primary.main' : 'transparent',\n bgcolor: isSelected ? alpha(theme.palette.primary.main, 0.08) : 'transparent',\n transition: 'all 0.15s ease',\n '&:hover': {\n bgcolor: isSelected\n ? alpha(theme.palette.primary.main, 0.12)\n : 'action.hover',\n },\n }}\n >\n <Box sx={{ pt: 0.3 }}>\n <Icon fontSize=\"small\" sx={{ color: isSelected ? 'primary.main' : 'text.secondary' }} />\n </Box>\n\n <Box sx={{ flex: 1, minWidth: 0, minHeight: '120px', }}>\n <Stack direction=\"row\" alignItems=\"center\" spacing={0.5}>\n <Typography variant=\"body2\" sx={{ fontWeight: 600, fontSize: '0.8rem' }}>\n {config.name}\n </Typography>\n {isSelected && <CheckCircleIcon sx={{ fontSize: 14, color: 'primary.main' }} />}\n </Stack>\n\n <Typography variant=\"caption\" sx={{ color: 'text.secondary', fontSize: '0.68rem', display: 'block', mb: 0.5 }}>\n {id}\n </Typography>\n\n <Typography variant=\"caption\" sx={{ color: 'text.secondary', fontSize: '0.7rem', lineHeight: 1.3, display: 'block', whiteSpace: 'pre-line' }}>\n {config.description}\n </Typography>\n\n <Stack direction=\"row\" spacing={0.5} sx={{ mt: 0.8 }}>\n <Chip\n label={config.speed}\n size=\"small\"\n color={speedColor[config.speed] ?? 'default'}\n variant=\"outlined\"\n sx={{ height: 18, fontSize: '0.6rem', '& .MuiChip-label': { px: 0.8 } }}\n />\n <Chip\n label={config.quality}\n size=\"small\"\n color={qualityColor[config.quality] ?? 'default'}\n variant=\"outlined\"\n sx={{ height: 18, fontSize: '0.6rem', '& .MuiChip-label': { px: 0.8 } }}\n />\n <Chip\n label={vendor}\n size=\"small\"\n variant=\"filled\"\n sx={{ height: 18, fontSize: '0.6rem', '& .MuiChip-label': { px: 0.8 }, bgcolor: 'action.selected' }}\n />\n </Stack>\n </Box>\n </Box>\n );\n })}\n </Stack>\n </Stack>\n );\n\n if (inline) {\n return listContent;\n }\n\n return (\n <>\n <Tooltip title={currentConfig?.name ?? 'Select model'} placement=\"top\">\n <IconButton\n size=\"small\"\n onClick={handleOpen}\n sx={{\n color: 'text.secondary',\n '&:hover': { color: 'primary.main' },\n p: 1,\n }}\n >\n <CurrentIcon fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n\n <Popover\n open={Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{ vertical: 'top', horizontal: 'center' }}\n transformOrigin={{ vertical: 'bottom', horizontal: 'center' }}\n sx={{ mt: -1 }}\n >\n <Box sx={{ p: 2, minWidth: 340, maxWidth: 500, bgcolor: 'background.paper' }}>\n <Typography variant=\"subtitle2\" sx={{ mb: 1.5, fontWeight: 700, letterSpacing: 0.5, textTransform: 'uppercase', fontSize: '0.7rem', color: 'text.secondary' }}>\n Select Model\n </Typography>\n\n {listContent}\n </Box>\n </Popover>\n </>\n );\n};\n\nexport default ModelSelector;\n","import React, { useCallback, useEffect, useState, useRef } from 'react';\nimport Box from '@mui/material/Box';\nimport TextField from '@mui/material/TextField';\nimport StopCircle from '@mui/icons-material/StopCircle';\nimport IconButton from '@mui/material/IconButton';\nimport SendIcon from '@mui/icons-material/Send';\nimport Tooltip from '@mui/material/Tooltip';\nimport SettingsOverscanIcon from '@mui/icons-material/SettingsOverscan';\nimport { Stack } from '@mui/material';\nimport LastPrompts from './LastPrompts';\nimport StreamStatistics from './StreamStatistics';\nimport { getConnectionStateColor } from '@lib/models/enums';\nimport { useAiChatServices } from '../AiChatContext';\nimport { CircularProgress, useTheme, useMediaQuery } from '@mui/material';\nimport { ClientMessage } from '@lib/models/ClientMessage';\n// Inline-edit dialog was dropped in the v0.1 carve; stub keeps callers compiling.\nconst PromptEditorDialog: React.FC<any> = () => null;\nimport { useAiChatSessionStore } from '../AiChatContext';\nimport { ConnectionState } from '@lib/models/connectionState';\nimport { PauseCircle, PlayCircle } from '@mui/icons-material';\nimport { AgentGatewayWSAsync } from '@lib/services/servers/AgentGatewayWSAsync';\nimport { TaskList } from './TaskList';\nimport ModelSelector from './ModelSelector';\n// ChatSettings popover was dropped in the v0.1 carve; stub keeps callers compiling.\nconst ChatSettings: React.FC<any> = () => null;\nimport { useContainerRectangle } from '@lib/components';\n\ninterface PromptProps {\n forceMessage?: string | null;\n prompt?: string;\n isTurnOpen?: boolean;\n onHeightChange?: (newHeight: number) => void;\n}\n\nconst Prompt: React.FC<PromptProps> = ({ forceMessage, onHeightChange }) => {\n const [isLandscapeInSmallScreen, setIsLandscapeInSmallScreen] = useState(false);\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n const isLessThenMedium = useMediaQuery(\"(max-width: 900px)\");\n\n const [isSending, setIsSending] = useState<boolean | null>(false);\n const [isSuspending, setIsSuspending] = useState<boolean | null>(false);\n const [isSuspended, setIsSuspended] = useState<boolean>(false);\n const [forceTooltip, setForceTooltip] = useState<boolean>(false);\n const [forceExpanded, setForceExpanded] = useState<number>(0);\n\n const promptContainer = useRef<HTMLDivElement>(null);\n const [containerWidth, containerHeight] = useContainerRectangle(promptContainer, new Date().getTime().toString());\n\n useEffect(() => {\n if (onHeightChange)\n onHeightChange(containerHeight);\n }, [containerHeight])\n\n\n const [messageNumber, setMessageNumber] = useState(0);\n const inputRef = useRef<HTMLInputElement>(null);\n const { agentGatewayService, showPromptHistory, showStatistics, showModelSelector, showSessionInfo, showTaskList } = useAiChatServices();\n\n const [lastTimeout, setLastTimeout] = useState<NodeJS.Timeout | null>(null);\n\n const { notificationPort } = useAiChatServices();\n const pushNotification = notificationPort.pushNotification.bind(notificationPort);\n\n const isTurnOpen = useAiChatSessionStore((state) => state.turnOpen);\n const connectionStatus = useAiChatSessionStore((state) => state.connectionStatus);\n const currentSession = useAiChatSessionStore((state) => state.session);\n\n const lastToolEvent = useAiChatSessionStore((state) => state.lastToolEvent);\n\n let hasTodoList = false;\n if (lastToolEvent?.eventName === 'todolistUpdated' && lastToolEvent?.eventData !== \"\") {\n hasTodoList = true;\n }\n\n // hasTodoList =true;\n\n // Prompt editor dialog state\n const [isPromptEditorOpen, setIsPromptEditorOpen] = useState(false);\n\n useEffect(() => {\n if (isMobile && window) {\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n setIsLandscapeInSmallScreen(windowWidth > windowHeight && windowHeight < 400);\n }\n }, [isMobile]);\n\n // Auto-focus input field when component mounts\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.focus();\n }\n }, []);//test\n\n useEffect(() => {\n if (!isTurnOpen) {\n setIsSuspended(false);\n setIsSuspending(false);\n }\n }, [currentSession?.id])\n\n const awaitingState = isTurnOpen || isSending;\n\n const handleSend = (messageOverride?: string, stopOverride: boolean = false) => {\n if (!agentGatewayService) {\n pushNotification({\n message: \"Agent gateway is not available\",\n type: 'error'\n })\n return;\n }\n\n if (awaitingState && !stopOverride) {\n setForceTooltip(true);\n setTimeout(() => {\n setForceTooltip(false);\n }, 4000);\n return;\n }\n\n let message = messageOverride ?? inputRef.current?.value ?? '';\n if (inputRef.current) {\n inputRef.current.value = '';\n }\n\n if (isSuspended) {\n setIsSuspended(false);\n if (message.trim() == \"\")\n message = \"Continue, por favor\";\n }\n\n setMessageNumber(messageNumber + 1);\n\n setIsSending(() => true);\n // let totalTimer = InteractionPartUtils.createWaiting(true, true, \"Overall\", new Date());\n\n // agentGatewayService.sendStatusMessage(message, [totalTimer], messageNumber.toString() + \"1\");\n\n\n if (!currentSession) {\n pushNotification({\n message: \"There is no session to send a message\",\n type: 'error'\n })\n }\n\n agentGatewayService.sendMessage(new ClientMessage(message, \"text/plain\"))\n .catch((error) => {\n console.error(\"Prompt send\", error)\n })\n .finally(() => {\n setIsSending(() => false);\n setForceTooltip(false);\n setForceExpanded((p) => p + 1);\n })\n\n };\n\n //handle force message\n useEffect(() => {\n if (forceMessage) {\n handleSend(forceMessage);\n }\n }, [forceMessage]);\n\n const handlePromptSelected = useCallback((promptText: string, promptJson?: string) => {\n if (inputRef.current) {\n inputRef.current.value = promptText;\n }\n setForceExpanded((p) => p + 1);\n }, []);\n\n // Prompt editor dialog handlers\n const handleOpenEditorOrPauseOrSuspend = useCallback(() => {\n if (awaitingState) {\n if (!agentGatewayService)\n return;\n\n if (agentGatewayService instanceof AgentGatewayWSAsync) {\n\n setIsSuspending(true);\n agentGatewayService.suspend()\n .then(() => {\n setIsSuspended(true);\n setIsSending(false);\n })\n .catch((error: any) => {\n pushNotification({\n message: \"Error suspending\",\n type: 'error',\n details: error.toString()\n })\n console.error(\"Error suspending\", error.toString());\n })\n .finally(() => {\n setIsSuspending(false);\n })\n }\n }\n else {\n if (isSuspended) {\n if (agentGatewayService instanceof AgentGatewayWSAsync) {\n setIsSuspended(false);\n\n agentGatewayService.cancelSuspend()\n }\n }\n else {\n setIsPromptEditorOpen(true);\n }\n }\n }, [isTurnOpen, isSuspended, awaitingState]);\n\n const handleClosePromptEditor = useCallback(() => {\n setIsPromptEditorOpen(false);\n }, []);\n\n const handlePromptApply = useCallback((promptText: string) => {\n if (inputRef.current) {\n inputRef.current.value = promptText;\n }\n }, []);\n\n const handlePromptApplyAndSend = useCallback(async (promptText: string) => {\n if (inputRef.current) {\n inputRef.current.value = promptText;\n }\n handleSend(promptText);\n }, [handleSend]);\n\n const handleKeyDown = async (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n handleSend();\n }\n };\n\n\n const handleBlur = useCallback(() => {\n // Use a timeout to allow clicking on prompt history items\n setLastTimeout(setTimeout(() => {\n setForceExpanded((p) => p + 1);\n }, 150));\n }, [lastTimeout]);\n\n const cancelTimeout = useCallback(() => {\n if (lastTimeout) {\n clearTimeout(lastTimeout);\n setLastTimeout(null);\n }\n }, [lastTimeout]);\n\n const getConnectionIcon = () => {\n if (awaitingState) {\n return <CircularProgress size={18} sx={{ color: 'rgba(255, 255, 255, 1)' }} />;\n }\n if (isSuspended) {\n return <PlayCircle fontSize=\"medium\" />;\n }\n return <SendIcon fontSize=\"small\" />;\n };\n\n const getPlaceholder = () => {\n return \"\";\n };\n\n const getTooltipText = () => {\n if (isTurnOpen) {\n return \"Aguarde a resposta do agente...\";\n }\n return \"Click to send or hit ENTER.\";\n };\n\n\n if (!agentGatewayService || isLandscapeInSmallScreen) {\n return null;\n }\n\n\n function getCurrentState(): string {\n return isSending ? \"Sending message\" :\n isTurnOpen ? \"Suspend execution\" : \"Open prompt editor\"\n }\n\n const isConnecting = connectionStatus == ConnectionState.Connecting\n\n const baseStyle = {\n overflow: 'auto',\n borderTop: `1px solid rgba(50, 50, 50)`,\n bgcolor: 'rgba(30, 30, 30)',\n backdropFilter: \"blur(2px)\",\n zIndex: 200,\n mt: 1,\n paddingTop: 0.5,\n paddingBottom: 0.5,\n paddingLeft: 1,\n paddingRight: 1,\n\n position: 'relative',\n width: 'calc(100% + 20px)',\n left: '-16px'\n };\n\n let resolvedTyle = baseStyle;\n\n return (\n <Box ref={promptContainer} sx={{ mt: 1.5, alignItems: 'center', width: '100%', position: \"relative\" }}>\n <Box sx={{\n borderRadius: '5px',\n padding: '1px',\n display: 'flex',\n alignItems: 'flex-start',\n border: `1px solid ${getConnectionStateColor(connectionStatus, theme)}`,\n // borderRadius: 2,\n zIndex: \"100\",\n position: 'relative',\n bgcolor: 'background.paper',\n opacity: 1,\n transition: 'all 0.1s ease',\n\n // Animated border effect only when connecting\n ...(isConnecting && {\n animation: 'rotate 4s linear infinite',\n background: `conic-gradient(from var(--angle),\n ${theme.palette.info.dark},\n ${theme.palette.info.dark},\n ${theme.palette.info.dark},\n ${theme.palette.info.dark},\n #fff 25%,\n ${theme.palette.info.dark},\n ${theme.palette.info.dark},\n ${theme.palette.info.dark},\n ${theme.palette.info.dark}\n )\n `,\n }),\n }}>\n {/* Action Buttons Stack */}\n <Stack\n direction=\"column\"\n sx={{\n alignSelf: 'flex-end',\n bgcolor: 'background.paper',\n }}\n >\n {showModelSelector !== false && <ModelSelector />}\n {showSessionInfo !== false && <ChatSettings />}\n </Stack>\n\n <TextField\n disabled={connectionStatus === ConnectionState.Idle}\n inputRef={inputRef}\n multiline\n minRows={3}\n maxRows={8}\n variant=\"standard\"\n defaultValue={getPlaceholder()}\n size=\"medium\"\n sx={{\n pt: 0.2,\n textWrap: 'wrap',\n backgroundColor: 'background.paper',\n flex: 1,\n fontFamily: theme.typography.fontFamily,\n '& .MuiInputBase-input': {\n fontSize: isLessThenMedium ?\n isMobile ? '1.2rem' : '1rem' : '0.8rem',\n lineHeight: isLessThenMedium ?\n isMobile ? 1.2 : 1.2\n : 1.5,\n fontFamily: theme.typography.fontFamily,\n paddingTop: '4px',\n // Additional mobile-specific styles\n ...(isMobile && {\n fontSize: isLessThenMedium ?\n isMobile ? '1.2rem' : '0.8rem' : '0.8rem',\n WebkitTextSizeAdjust: '100%',\n MozTextSizeAdjust: '100%',\n msTextSizeAdjust: '100%'\n })\n },\n '& .MuiInputBase-root.Mui-disabled': {\n '& .MuiInputBase-input': {\n color: `${theme.palette.text.disabled} !important`,\n WebkitTextFillColor: `${theme.palette.text.disabled} !important`\n },\n '& .MuiInputBase-input::placeholder': {\n color: `${theme.palette.text.disabled} !important`,\n WebkitTextFillColor: `${theme.palette.text.disabled} !important`,\n opacity: 1\n }\n }\n }}\n slotProps={{\n input: {\n disableUnderline: true,\n style: {\n fontFamily: theme.typography.fontFamily,\n fontSize: isLessThenMedium ?\n isMobile ? '1.2rem' : '1rem' : '0.8rem',\n lineHeight: isLessThenMedium ?\n isMobile ? 1 : 1.2\n : 1.5,\n paddingTop: '4px',\n // Additional mobile-specific styles\n ...(isMobile && {\n fontSize: isLessThenMedium ?\n isMobile ? '1.2rem' : '1rem' : '0.8rem',\n WebkitTextSizeAdjust: '100%',\n MozTextSizeAdjust: '100%',\n msTextSizeAdjust: '100%'\n })\n }\n }\n }}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n />\n\n <Stack\n direction=\"column\"\n sx={{\n p: 1.2,\n pt: 0,\n bgcolor: 'background.paper',\n alignSelf: 'flex-end',\n }}\n >\n <Tooltip title={getTooltipText()} placement=\"top\" open={forceTooltip}>\n <IconButton\n color=\"primary\"\n size=\"small\"\n sx={{\n borderRadius: 1,\n mx: 0.5,\n pt: 1.3,\n fontSize: '1rem',\n alignContent: 'top',\n color: 'primary.main'\n }}\n onClick={async () => await handleSend()}>{\n }\n {getConnectionIcon()}\n </IconButton>\n </Tooltip>\n <Tooltip title={getCurrentState()} placement=\"top\">\n <IconButton\n size=\"small\"\n onClick={handleOpenEditorOrPauseOrSuspend}\n sx={{\n color: 'text.secondary',\n '&:hover': { color: 'primary.main' },\n p: 0.5,\n marginTop: '0px !important'\n }}\n >\n {(awaitingState) && (\n <Box sx={{ position: 'relative', p: 0, mt: 0 }}>\n <PauseCircle sx={{ p: 0, mt: 0 }} />\n {isSuspending && (\n <CircularProgress\n size=\"1.5rem\"\n color=\"primary\"\n sx={{\n position: 'absolute',\n top: 0,\n left: 0,\n zIndex: 1,\n }}\n />\n )}\n </Box>\n )}\n {!awaitingState && isSuspended && (\n <StopCircle sx={{ p: 0, mt: 0 }} />\n )}\n {!awaitingState && !isSuspended && <SettingsOverscanIcon fontSize=\"small\" />}\n </IconButton>\n </Tooltip>\n </Stack>\n </Box>\n\n\n {showPromptHistory && !(hasTodoList && showTaskList) && (\n <LastPrompts\n cancelTimeout={cancelTimeout}\n onPromptSelected={handlePromptSelected}\n forceExpanded={forceExpanded}\n >\n {showStatistics && <StreamStatistics />}\n </LastPrompts>\n\n )}\n {(showTaskList !== false && isTurnOpen && hasTodoList) &&\n (<Box sx={isTurnOpen ? resolvedTyle : { display: '' }}>\n <TaskList />\n </Box>)\n }\n\n {/* Prompt Editor Dialog */}\n <PromptEditorDialog\n open={isPromptEditorOpen}\n onClose={handleClosePromptEditor}\n initialPrompt={inputRef.current?.value || ''}\n onApply={handlePromptApply}\n onApplyAndSend={handlePromptApplyAndSend}\n />\n\n </Box >\n\n );\n};\n\nexport default Prompt; ","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"react\")):\"function\"==typeof define&&define.amd?define([\"react\"],t):\"object\"==typeof exports?exports.reactJsonView=t(require(\"react\")):e.reactJsonView=t(e.React)}(this,e=>(()=>{var t={165(e,t,n){const a=n(877),r={};for(const e of Object.keys(a))r[a[e]]=e;const o={rgb:{channels:3,labels:\"rgb\"},hsl:{channels:3,labels:\"hsl\"},hsv:{channels:3,labels:\"hsv\"},hwb:{channels:3,labels:\"hwb\"},cmyk:{channels:4,labels:\"cmyk\"},xyz:{channels:3,labels:\"xyz\"},lab:{channels:3,labels:\"lab\"},lch:{channels:3,labels:\"lch\"},hex:{channels:1,labels:[\"hex\"]},keyword:{channels:1,labels:[\"keyword\"]},ansi16:{channels:1,labels:[\"ansi16\"]},ansi256:{channels:1,labels:[\"ansi256\"]},hcg:{channels:3,labels:[\"h\",\"c\",\"g\"]},apple:{channels:3,labels:[\"r16\",\"g16\",\"b16\"]},gray:{channels:1,labels:[\"gray\"]}};e.exports=o;for(const e of Object.keys(o)){if(!(\"channels\"in o[e]))throw new Error(\"missing channels property: \"+e);if(!(\"labels\"in o[e]))throw new Error(\"missing channel labels property: \"+e);if(o[e].labels.length!==o[e].channels)throw new Error(\"channel and label counts mismatch: \"+e);const{channels:t,labels:n}=o[e];delete o[e].channels,delete o[e].labels,Object.defineProperty(o[e],\"channels\",{value:t}),Object.defineProperty(o[e],\"labels\",{value:n})}function s(e,t){return(e[0]-t[0])**2+(e[1]-t[1])**2+(e[2]-t[2])**2}o.rgb.hsl=function(e){const t=e[0]/255,n=e[1]/255,a=e[2]/255,r=Math.min(t,n,a),o=Math.max(t,n,a),s=o-r;let i,c;o===r?i=0:t===o?i=(n-a)/s:n===o?i=2+(a-t)/s:a===o&&(i=4+(t-n)/s),i=Math.min(60*i,360),i<0&&(i+=360);const l=(r+o)/2;return c=o===r?0:l<=.5?s/(o+r):s/(2-o-r),[i,100*c,100*l]},o.rgb.hsv=function(e){let t,n,a,r,o;const s=e[0]/255,i=e[1]/255,c=e[2]/255,l=Math.max(s,i,c),u=l-Math.min(s,i,c),b=function(e){return(l-e)/6/u+.5};return 0===u?(r=0,o=0):(o=u/l,t=b(s),n=b(i),a=b(c),s===l?r=a-n:i===l?r=1/3+t-a:c===l&&(r=2/3+n-t),r<0?r+=1:r>1&&(r-=1)),[360*r,100*o,100*l]},o.rgb.hwb=function(e){const t=e[0],n=e[1];let a=e[2];const r=o.rgb.hsl(e)[0],s=1/255*Math.min(t,Math.min(n,a));return a=1-1/255*Math.max(t,Math.max(n,a)),[r,100*s,100*a]},o.rgb.cmyk=function(e){const t=e[0]/255,n=e[1]/255,a=e[2]/255,r=Math.min(1-t,1-n,1-a);return[100*((1-t-r)/(1-r)||0),100*((1-n-r)/(1-r)||0),100*((1-a-r)/(1-r)||0),100*r]},o.rgb.keyword=function(e){const t=r[e];if(t)return t;let n,o=1/0;for(const t of Object.keys(a)){const r=s(e,a[t]);r<o&&(o=r,n=t)}return n},o.keyword.rgb=function(e){return a[e]},o.rgb.xyz=function(e){let t=e[0]/255,n=e[1]/255,a=e[2]/255;t=t>.04045?((t+.055)/1.055)**2.4:t/12.92,n=n>.04045?((n+.055)/1.055)**2.4:n/12.92,a=a>.04045?((a+.055)/1.055)**2.4:a/12.92;return[100*(.4124*t+.3576*n+.1805*a),100*(.2126*t+.7152*n+.0722*a),100*(.0193*t+.1192*n+.9505*a)]},o.rgb.lab=function(e){const t=o.rgb.xyz(e);let n=t[0],a=t[1],r=t[2];n/=95.047,a/=100,r/=108.883,n=n>.008856?n**(1/3):7.787*n+16/116,a=a>.008856?a**(1/3):7.787*a+16/116,r=r>.008856?r**(1/3):7.787*r+16/116;return[116*a-16,500*(n-a),200*(a-r)]},o.hsl.rgb=function(e){const t=e[0]/360,n=e[1]/100,a=e[2]/100;let r,o,s;if(0===n)return s=255*a,[s,s,s];r=a<.5?a*(1+n):a+n-a*n;const i=2*a-r,c=[0,0,0];for(let e=0;e<3;e++)o=t+1/3*-(e-1),o<0&&o++,o>1&&o--,s=6*o<1?i+6*(r-i)*o:2*o<1?r:3*o<2?i+(r-i)*(2/3-o)*6:i,c[e]=255*s;return c},o.hsl.hsv=function(e){const t=e[0];let n=e[1]/100,a=e[2]/100,r=n;const o=Math.max(a,.01);a*=2,n*=a<=1?a:2-a,r*=o<=1?o:2-o;return[t,100*(0===a?2*r/(o+r):2*n/(a+n)),100*((a+n)/2)]},o.hsv.rgb=function(e){const t=e[0]/60,n=e[1]/100;let a=e[2]/100;const r=Math.floor(t)%6,o=t-Math.floor(t),s=255*a*(1-n),i=255*a*(1-n*o),c=255*a*(1-n*(1-o));switch(a*=255,r){case 0:return[a,c,s];case 1:return[i,a,s];case 2:return[s,a,c];case 3:return[s,i,a];case 4:return[c,s,a];case 5:return[a,s,i]}},o.hsv.hsl=function(e){const t=e[0],n=e[1]/100,a=e[2]/100,r=Math.max(a,.01);let o,s;s=(2-n)*a;const i=(2-n)*r;return o=n*r,o/=i<=1?i:2-i,o=o||0,s/=2,[t,100*o,100*s]},o.hwb.rgb=function(e){const t=e[0]/360;let n=e[1]/100,a=e[2]/100;const r=n+a;let o;r>1&&(n/=r,a/=r);const s=Math.floor(6*t),i=1-a;o=6*t-s,1&s&&(o=1-o);const c=n+o*(i-n);let l,u,b;switch(s){default:case 6:case 0:l=i,u=c,b=n;break;case 1:l=c,u=i,b=n;break;case 2:l=n,u=i,b=c;break;case 3:l=n,u=c,b=i;break;case 4:l=c,u=n,b=i;break;case 5:l=i,u=n,b=c}return[255*l,255*u,255*b]},o.cmyk.rgb=function(e){const t=e[0]/100,n=e[1]/100,a=e[2]/100,r=e[3]/100;return[255*(1-Math.min(1,t*(1-r)+r)),255*(1-Math.min(1,n*(1-r)+r)),255*(1-Math.min(1,a*(1-r)+r))]},o.xyz.rgb=function(e){const t=e[0]/100,n=e[1]/100,a=e[2]/100;let r,o,s;return r=3.2406*t+-1.5372*n+-.4986*a,o=-.9689*t+1.8758*n+.0415*a,s=.0557*t+-.204*n+1.057*a,r=r>.0031308?1.055*r**(1/2.4)-.055:12.92*r,o=o>.0031308?1.055*o**(1/2.4)-.055:12.92*o,s=s>.0031308?1.055*s**(1/2.4)-.055:12.92*s,r=Math.min(Math.max(0,r),1),o=Math.min(Math.max(0,o),1),s=Math.min(Math.max(0,s),1),[255*r,255*o,255*s]},o.xyz.lab=function(e){let t=e[0],n=e[1],a=e[2];t/=95.047,n/=100,a/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,n=n>.008856?n**(1/3):7.787*n+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;return[116*n-16,500*(t-n),200*(n-a)]},o.lab.xyz=function(e){let t,n,a;n=(e[0]+16)/116,t=e[1]/500+n,a=n-e[2]/200;const r=n**3,o=t**3,s=a**3;return n=r>.008856?r:(n-16/116)/7.787,t=o>.008856?o:(t-16/116)/7.787,a=s>.008856?s:(a-16/116)/7.787,t*=95.047,n*=100,a*=108.883,[t,n,a]},o.lab.lch=function(e){const t=e[0],n=e[1],a=e[2];let r;r=360*Math.atan2(a,n)/2/Math.PI,r<0&&(r+=360);return[t,Math.sqrt(n*n+a*a),r]},o.lch.lab=function(e){const t=e[0],n=e[1],a=e[2]/360*2*Math.PI;return[t,n*Math.cos(a),n*Math.sin(a)]},o.rgb.ansi16=function(e,t=null){const[n,a,r]=e;let s=null===t?o.rgb.hsv(e)[2]:t;if(s=Math.round(s/50),0===s)return 30;let i=30+(Math.round(r/255)<<2|Math.round(a/255)<<1|Math.round(n/255));return 2===s&&(i+=60),i},o.hsv.ansi16=function(e){return o.rgb.ansi16(o.hsv.rgb(e),e[2])},o.rgb.ansi256=function(e){const t=e[0],n=e[1],a=e[2];if(t===n&&n===a)return t<8?16:t>248?231:Math.round((t-8)/247*24)+232;return 16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(a/255*5)},o.ansi16.rgb=function(e){let t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];const n=.5*(1+~~(e>50));return[(1&t)*n*255,(t>>1&1)*n*255,(t>>2&1)*n*255]},o.ansi256.rgb=function(e){if(e>=232){const t=10*(e-232)+8;return[t,t,t]}let t;e-=16;return[Math.floor(e/36)/5*255,Math.floor((t=e%36)/6)/5*255,t%6/5*255]},o.rgb.hex=function(e){const t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return\"000000\".substring(t.length)+t},o.hex.rgb=function(e){const t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let n=t[0];3===t[0].length&&(n=n.split(\"\").map(e=>e+e).join(\"\"));const a=parseInt(n,16);return[a>>16&255,a>>8&255,255&a]},o.rgb.hcg=function(e){const t=e[0]/255,n=e[1]/255,a=e[2]/255,r=Math.max(Math.max(t,n),a),o=Math.min(Math.min(t,n),a),s=r-o;let i,c;return i=s<1?o/(1-s):0,c=s<=0?0:r===t?(n-a)/s%6:r===n?2+(a-t)/s:4+(t-n)/s,c/=6,c%=1,[360*c,100*s,100*i]},o.hsl.hcg=function(e){const t=e[1]/100,n=e[2]/100,a=n<.5?2*t*n:2*t*(1-n);let r=0;return a<1&&(r=(n-.5*a)/(1-a)),[e[0],100*a,100*r]},o.hsv.hcg=function(e){const t=e[1]/100,n=e[2]/100,a=t*n;let r=0;return a<1&&(r=(n-a)/(1-a)),[e[0],100*a,100*r]},o.hcg.rgb=function(e){const t=e[0]/360,n=e[1]/100,a=e[2]/100;if(0===n)return[255*a,255*a,255*a];const r=[0,0,0],o=t%1*6,s=o%1,i=1-s;let c=0;switch(Math.floor(o)){case 0:r[0]=1,r[1]=s,r[2]=0;break;case 1:r[0]=i,r[1]=1,r[2]=0;break;case 2:r[0]=0,r[1]=1,r[2]=s;break;case 3:r[0]=0,r[1]=i,r[2]=1;break;case 4:r[0]=s,r[1]=0,r[2]=1;break;default:r[0]=1,r[1]=0,r[2]=i}return c=(1-n)*a,[255*(n*r[0]+c),255*(n*r[1]+c),255*(n*r[2]+c)]},o.hcg.hsv=function(e){const t=e[1]/100,n=t+e[2]/100*(1-t);let a=0;return n>0&&(a=t/n),[e[0],100*a,100*n]},o.hcg.hsl=function(e){const t=e[1]/100,n=e[2]/100*(1-t)+.5*t;let a=0;return n>0&&n<.5?a=t/(2*n):n>=.5&&n<1&&(a=t/(2*(1-n))),[e[0],100*a,100*n]},o.hcg.hwb=function(e){const t=e[1]/100,n=t+e[2]/100*(1-t);return[e[0],100*(n-t),100*(1-n)]},o.hwb.hcg=function(e){const t=e[1]/100,n=1-e[2]/100,a=n-t;let r=0;return a<1&&(r=(n-a)/(1-a)),[e[0],100*a,100*r]},o.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},o.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},o.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},o.gray.hsl=function(e){return[0,0,e[0]]},o.gray.hsv=o.gray.hsl,o.gray.hwb=function(e){return[0,100,e[0]]},o.gray.cmyk=function(e){return[0,0,0,e[0]]},o.gray.lab=function(e){return[e[0],0,0]},o.gray.hex=function(e){const t=255&Math.round(e[0]/100*255),n=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return\"000000\".substring(n.length)+n},o.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}},880(e,t,n){const a=n(165),r=n(985),o={};Object.keys(a).forEach(e=>{o[e]={},Object.defineProperty(o[e],\"channels\",{value:a[e].channels}),Object.defineProperty(o[e],\"labels\",{value:a[e].labels});const t=r(e);Object.keys(t).forEach(n=>{const a=t[n];o[e][n]=function(e){const t=function(...t){const n=t[0];if(null==n)return n;n.length>1&&(t=n);const a=e(t);if(\"object\"==typeof a)for(let e=a.length,t=0;t<e;t++)a[t]=Math.round(a[t]);return a};return\"conversion\"in e&&(t.conversion=e.conversion),t}(a),o[e][n].raw=function(e){const t=function(...t){const n=t[0];return null==n?n:(n.length>1&&(t=n),e(t))};return\"conversion\"in e&&(t.conversion=e.conversion),t}(a)})}),e.exports=o},985(e,t,n){const a=n(165);function r(e){const t=function(){const e={},t=Object.keys(a);for(let n=t.length,a=0;a<n;a++)e[t[a]]={distance:-1,parent:null};return e}(),n=[e];for(t[e].distance=0;n.length;){const e=n.pop(),r=Object.keys(a[e]);for(let a=r.length,o=0;o<a;o++){const a=r[o],s=t[a];-1===s.distance&&(s.distance=t[e].distance+1,s.parent=e,n.unshift(a))}}return t}function o(e,t){return function(n){return t(e(n))}}function s(e,t){const n=[t[e].parent,e];let r=a[t[e].parent][e],s=t[e].parent;for(;t[s].parent;)n.unshift(t[s].parent),r=o(a[t[s].parent][s],r),s=t[s].parent;return r.conversion=n,r}e.exports=function(e){const t=r(e),n={},a=Object.keys(t);for(let e=a.length,r=0;r<e;r++){const e=a[r];null!==t[e].parent&&(n[e]=s(e,t))}return n}},877(e){\"use strict\";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},138(e,t,n){var a=n(877),r=n(403),o=Object.hasOwnProperty,s=Object.create(null);for(var i in a)o.call(a,i)&&(s[a[i]]=i);var c=e.exports={to:{},get:{}};function l(e,t,n){return Math.min(Math.max(t,e),n)}function u(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?\"0\"+t:t}c.get=function(e){var t,n;switch(e.substring(0,3).toLowerCase()){case\"hsl\":t=c.get.hsl(e),n=\"hsl\";break;case\"hwb\":t=c.get.hwb(e),n=\"hwb\";break;default:t=c.get.rgb(e),n=\"rgb\"}return t?{model:n,value:t}:null},c.get.rgb=function(e){if(!e)return null;var t,n,r,s=[0,0,0,1];if(t=e.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(r=t[2],t=t[1],n=0;n<3;n++){var i=2*n;s[n]=parseInt(t.slice(i,i+2),16)}r&&(s[3]=parseInt(r,16)/255)}else if(t=e.match(/^#([a-f0-9]{3,4})$/i)){for(r=(t=t[1])[3],n=0;n<3;n++)s[n]=parseInt(t[n]+t[n],16);r&&(s[3]=parseInt(r+r,16)/255)}else if(t=e.match(/^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/)){for(n=0;n<3;n++)s[n]=parseInt(t[n+1],0);t[4]&&(t[5]?s[3]=.01*parseFloat(t[4]):s[3]=parseFloat(t[4]))}else{if(!(t=e.match(/^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/)))return(t=e.match(/^(\\w+)$/))?\"transparent\"===t[1]?[0,0,0,0]:o.call(a,t[1])?((s=a[t[1]])[3]=1,s):null:null;for(n=0;n<3;n++)s[n]=Math.round(2.55*parseFloat(t[n+1]));t[4]&&(t[5]?s[3]=.01*parseFloat(t[4]):s[3]=parseFloat(t[4]))}for(n=0;n<3;n++)s[n]=l(s[n],0,255);return s[3]=l(s[3],0,1),s},c.get.hsl=function(e){if(!e)return null;var t=e.match(/^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/);if(t){var n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,l(parseFloat(t[2]),0,100),l(parseFloat(t[3]),0,100),l(isNaN(n)?1:n,0,1)]}return null},c.get.hwb=function(e){if(!e)return null;var t=e.match(/^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/);if(t){var n=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,l(parseFloat(t[2]),0,100),l(parseFloat(t[3]),0,100),l(isNaN(n)?1:n,0,1)]}return null},c.to.hex=function(){var e=r(arguments);return\"#\"+u(e[0])+u(e[1])+u(e[2])+(e[3]<1?u(Math.round(255*e[3])):\"\")},c.to.rgb=function(){var e=r(arguments);return e.length<4||1===e[3]?\"rgb(\"+Math.round(e[0])+\", \"+Math.round(e[1])+\", \"+Math.round(e[2])+\")\":\"rgba(\"+Math.round(e[0])+\", \"+Math.round(e[1])+\", \"+Math.round(e[2])+\", \"+e[3]+\")\"},c.to.rgb.percent=function(){var e=r(arguments),t=Math.round(e[0]/255*100),n=Math.round(e[1]/255*100),a=Math.round(e[2]/255*100);return e.length<4||1===e[3]?\"rgb(\"+t+\"%, \"+n+\"%, \"+a+\"%)\":\"rgba(\"+t+\"%, \"+n+\"%, \"+a+\"%, \"+e[3]+\")\"},c.to.hsl=function(){var e=r(arguments);return e.length<4||1===e[3]?\"hsl(\"+e[0]+\", \"+e[1]+\"%, \"+e[2]+\"%)\":\"hsla(\"+e[0]+\", \"+e[1]+\"%, \"+e[2]+\"%, \"+e[3]+\")\"},c.to.hwb=function(){var e=r(arguments),t=\"\";return e.length>=4&&1!==e[3]&&(t=\", \"+e[3]),\"hwb(\"+e[0]+\", \"+e[1]+\"%, \"+e[2]+\"%\"+t+\")\"},c.to.keyword=function(e){return s[e.slice(0,3)]}},742(e,t,n){const a=n(138),r=n(880),o=[\"keyword\",\"gray\",\"hex\"],s={};for(const e of Object.keys(r))s[[...r[e].labels].sort().join(\"\")]=e;const i={};function c(e,t){if(!(this instanceof c))return new c(e,t);if(t&&t in o&&(t=null),t&&!(t in r))throw new Error(\"Unknown model: \"+t);let n,l;if(null==e)this.model=\"rgb\",this.color=[0,0,0],this.valpha=1;else if(e instanceof c)this.model=e.model,this.color=[...e.color],this.valpha=e.valpha;else if(\"string\"==typeof e){const t=a.get(e);if(null===t)throw new Error(\"Unable to parse color from string: \"+e);this.model=t.model,l=r[this.model].channels,this.color=t.value.slice(0,l),this.valpha=\"number\"==typeof t.value[l]?t.value[l]:1}else if(e.length>0){this.model=t||\"rgb\",l=r[this.model].channels;const n=Array.prototype.slice.call(e,0,l);this.color=d(n,l),this.valpha=\"number\"==typeof e[l]?e[l]:1}else if(\"number\"==typeof e)this.model=\"rgb\",this.color=[e>>16&255,e>>8&255,255&e],this.valpha=1;else{this.valpha=1;const t=Object.keys(e);\"alpha\"in e&&(t.splice(t.indexOf(\"alpha\"),1),this.valpha=\"number\"==typeof e.alpha?e.alpha:0);const a=t.sort().join(\"\");if(!(a in s))throw new Error(\"Unable to parse color from object: \"+JSON.stringify(e));this.model=s[a];const{labels:o}=r[this.model],i=[];for(n=0;n<o.length;n++)i.push(e[o[n]]);this.color=d(i)}if(i[this.model])for(l=r[this.model].channels,n=0;n<l;n++){const e=i[this.model][n];e&&(this.color[n]=e(this.color[n]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}c.prototype={toString(){return this.string()},toJSON(){return this[this.model]()},string(e){let t=this.model in a.to?this:this.rgb();t=t.round(\"number\"==typeof e?e:1);const n=1===t.valpha?t.color:[...t.color,this.valpha];return a.to[t.model](n)},percentString(e){const t=this.rgb().round(\"number\"==typeof e?e:1),n=1===t.valpha?t.color:[...t.color,this.valpha];return a.to.rgb.percent(n)},array(){return 1===this.valpha?[...this.color]:[...this.color,this.valpha]},object(){const e={},{channels:t}=r[this.model],{labels:n}=r[this.model];for(let a=0;a<t;a++)e[n[a]]=this.color[a];return 1!==this.valpha&&(e.alpha=this.valpha),e},unitArray(){const e=this.rgb().color;return e[0]/=255,e[1]/=255,e[2]/=255,1!==this.valpha&&e.push(this.valpha),e},unitObject(){const e=this.rgb().object();return e.r/=255,e.g/=255,e.b/=255,1!==this.valpha&&(e.alpha=this.valpha),e},round(e){return e=Math.max(e||0,0),new c([...this.color.map(l(e)),this.valpha],this.model)},alpha(e){return void 0!==e?new c([...this.color,Math.max(0,Math.min(1,e))],this.model):this.valpha},red:u(\"rgb\",0,b(255)),green:u(\"rgb\",1,b(255)),blue:u(\"rgb\",2,b(255)),hue:u([\"hsl\",\"hsv\",\"hsl\",\"hwb\",\"hcg\"],0,e=>(e%360+360)%360),saturationl:u(\"hsl\",1,b(100)),lightness:u(\"hsl\",2,b(100)),saturationv:u(\"hsv\",1,b(100)),value:u(\"hsv\",2,b(100)),chroma:u(\"hcg\",1,b(100)),gray:u(\"hcg\",2,b(100)),white:u(\"hwb\",1,b(100)),wblack:u(\"hwb\",2,b(100)),cyan:u(\"cmyk\",0,b(100)),magenta:u(\"cmyk\",1,b(100)),yellow:u(\"cmyk\",2,b(100)),black:u(\"cmyk\",3,b(100)),x:u(\"xyz\",0,b(95.047)),y:u(\"xyz\",1,b(100)),z:u(\"xyz\",2,b(108.833)),l:u(\"lab\",0,b(100)),a:u(\"lab\",1),b:u(\"lab\",2),keyword(e){return void 0!==e?new c(e):r[this.model].keyword(this.color)},hex(e){return void 0!==e?new c(e):a.to.hex(this.rgb().round().color)},hexa(e){if(void 0!==e)return new c(e);const t=this.rgb().round().color;let n=Math.round(255*this.valpha).toString(16).toUpperCase();return 1===n.length&&(n=\"0\"+n),a.to.hex(t)+n},rgbNumber(){const e=this.rgb().color;return(255&e[0])<<16|(255&e[1])<<8|255&e[2]},luminosity(){const e=this.rgb().color,t=[];for(const[n,a]of e.entries()){const e=a/255;t[n]=e<=.04045?e/12.92:((e+.055)/1.055)**2.4}return.2126*t[0]+.7152*t[1]+.0722*t[2]},contrast(e){const t=this.luminosity(),n=e.luminosity();return t>n?(t+.05)/(n+.05):(n+.05)/(t+.05)},level(e){const t=this.contrast(e);return t>=7?\"AAA\":t>=4.5?\"AA\":\"\"},isDark(){const e=this.rgb().color;return(2126*e[0]+7152*e[1]+722*e[2])/1e4<128},isLight(){return!this.isDark()},negate(){const e=this.rgb();for(let t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten(e){const t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken(e){const t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate(e){const t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate(e){const t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten(e){const t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken(e){const t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale(){const e=this.rgb().color,t=.3*e[0]+.59*e[1]+.11*e[2];return c.rgb(t,t,t)},fade(e){return this.alpha(this.valpha-this.valpha*e)},opaquer(e){return this.alpha(this.valpha+this.valpha*e)},rotate(e){const t=this.hsl();let n=t.color[0];return n=(n+e)%360,n=n<0?360+n:n,t.color[0]=n,t},mix(e,t){if(!e||!e.rgb)throw new Error('Argument to \"mix\" was not a Color instance, but rather an instance of '+typeof e);const n=e.rgb(),a=this.rgb(),r=void 0===t?.5:t,o=2*r-1,s=n.alpha()-a.alpha(),i=((o*s===-1?o:(o+s)/(1+o*s))+1)/2,l=1-i;return c.rgb(i*n.red()+l*a.red(),i*n.green()+l*a.green(),i*n.blue()+l*a.blue(),n.alpha()*r+a.alpha()*(1-r))}};for(const e of Object.keys(r)){if(o.includes(e))continue;const{channels:t}=r[e];c.prototype[e]=function(...t){return this.model===e?new c(this):t.length>0?new c(t,e):new c([...(n=r[this.model][e].raw(this.color),Array.isArray(n)?n:[n]),this.valpha],e);var n},c[e]=function(...n){let a=n[0];return\"number\"==typeof a&&(a=d(n,t)),new c(a,e)}}function l(e){return function(t){return function(e,t){return Number(e.toFixed(t))}(t,e)}}function u(e,t,n){e=Array.isArray(e)?e:[e];for(const a of e)(i[a]||(i[a]=[]))[t]=n;return e=e[0],function(a){let r;return void 0!==a?(n&&(a=n(a)),r=this[e](),r.color[t]=a,r):(r=this[e]().color[t],n&&(r=n(r)),r)}}function b(e){return function(t){return Math.max(0,Math.min(e,t))}}function d(e,t){for(let n=0;n<t;n++)\"number\"!=typeof e[n]&&(e[n]=0);return e}e.exports=c},784(e){\"use strict\";var t,n=\"object\"==typeof Reflect?Reflect:null,a=n&&\"function\"==typeof n.apply?n.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};t=n&&\"function\"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var r=Number.isNaN||function(e){return e!=e};function o(){o.init.call(this)}e.exports=o,e.exports.once=function(e,t){return new Promise(function(n,a){function r(n){e.removeListener(t,o),a(n)}function o(){\"function\"==typeof e.removeListener&&e.removeListener(\"error\",r),n([].slice.call(arguments))}f(e,t,o,{once:!0}),\"error\"!==t&&function(e,t,n){\"function\"==typeof e.on&&f(e,\"error\",t,n)}(e,r,{once:!0})})},o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var s=10;function i(e){if(\"function\"!=typeof e)throw new TypeError('The \"listener\" argument must be of type Function. Received type '+typeof e)}function c(e){return void 0===e._maxListeners?o.defaultMaxListeners:e._maxListeners}function l(e,t,n,a){var r,o,s,l;if(i(n),void 0===(o=e._events)?(o=e._events=Object.create(null),e._eventsCount=0):(void 0!==o.newListener&&(e.emit(\"newListener\",t,n.listener?n.listener:n),o=e._events),s=o[t]),void 0===s)s=o[t]=n,++e._eventsCount;else if(\"function\"==typeof s?s=o[t]=a?[n,s]:[s,n]:a?s.unshift(n):s.push(n),(r=c(e))>0&&s.length>r&&!s.warned){s.warned=!0;var u=new Error(\"Possible EventEmitter memory leak detected. \"+s.length+\" \"+String(t)+\" listeners added. Use emitter.setMaxListeners() to increase limit\");u.name=\"MaxListenersExceededWarning\",u.emitter=e,u.type=t,u.count=s.length,l=u,console&&console.warn&&console.warn(l)}return e}function u(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function b(e,t,n){var a={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},r=u.bind(a);return r.listener=n,a.wrapFn=r,r}function d(e,t,n){var a=e._events;if(void 0===a)return[];var r=a[t];return void 0===r?[]:\"function\"==typeof r?n?[r.listener||r]:[r]:n?function(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(r):h(r,r.length)}function p(e){var t=this._events;if(void 0!==t){var n=t[e];if(\"function\"==typeof n)return 1;if(void 0!==n)return n.length}return 0}function h(e,t){for(var n=new Array(t),a=0;a<t;++a)n[a]=e[a];return n}function f(e,t,n,a){if(\"function\"==typeof e.on)a.once?e.once(t,n):e.on(t,n);else{if(\"function\"!=typeof e.addEventListener)throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,function r(o){a.once&&e.removeEventListener(t,r),n(o)})}}Object.defineProperty(o,\"defaultMaxListeners\",{enumerable:!0,get:function(){return s},set:function(e){if(\"number\"!=typeof e||e<0||r(e))throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received '+e+\".\");s=e}}),o.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},o.prototype.setMaxListeners=function(e){if(\"number\"!=typeof e||e<0||r(e))throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received '+e+\".\");return this._maxListeners=e,this},o.prototype.getMaxListeners=function(){return c(this)},o.prototype.emit=function(e){for(var t=[],n=1;n<arguments.length;n++)t.push(arguments[n]);var r=\"error\"===e,o=this._events;if(void 0!==o)r=r&&void 0===o.error;else if(!r)return!1;if(r){var s;if(t.length>0&&(s=t[0]),s instanceof Error)throw s;var i=new Error(\"Unhandled error.\"+(s?\" (\"+s.message+\")\":\"\"));throw i.context=s,i}var c=o[e];if(void 0===c)return!1;if(\"function\"==typeof c)a(c,this,t);else{var l=c.length,u=h(c,l);for(n=0;n<l;++n)a(u[n],this,t)}return!0},o.prototype.addListener=function(e,t){return l(this,e,t,!1)},o.prototype.on=o.prototype.addListener,o.prototype.prependListener=function(e,t){return l(this,e,t,!0)},o.prototype.once=function(e,t){return i(t),this.on(e,b(this,e,t)),this},o.prototype.prependOnceListener=function(e,t){return i(t),this.prependListener(e,b(this,e,t)),this},o.prototype.removeListener=function(e,t){var n,a,r,o,s;if(i(t),void 0===(a=this._events))return this;if(void 0===(n=a[e]))return this;if(n===t||n.listener===t)0===--this._eventsCount?this._events=Object.create(null):(delete a[e],a.removeListener&&this.emit(\"removeListener\",e,n.listener||t));else if(\"function\"!=typeof n){for(r=-1,o=n.length-1;o>=0;o--)if(n[o]===t||n[o].listener===t){s=n[o].listener,r=o;break}if(r<0)return this;0===r?n.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(n,r),1===n.length&&(a[e]=n[0]),void 0!==a.removeListener&&this.emit(\"removeListener\",e,s||t)}return this},o.prototype.off=o.prototype.removeListener,o.prototype.removeAllListeners=function(e){var t,n,a;if(void 0===(n=this._events))return this;if(void 0===n.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==n[e]&&(0===--this._eventsCount?this._events=Object.create(null):delete n[e]),this;if(0===arguments.length){var r,o=Object.keys(n);for(a=0;a<o.length;++a)\"removeListener\"!==(r=o[a])&&this.removeAllListeners(r);return this.removeAllListeners(\"removeListener\"),this._events=Object.create(null),this._eventsCount=0,this}if(\"function\"==typeof(t=n[e]))this.removeListener(e,t);else if(void 0!==t)for(a=t.length-1;a>=0;a--)this.removeListener(e,t[a]);return this},o.prototype.listeners=function(e){return d(this,e,!0)},o.prototype.rawListeners=function(e){return d(this,e,!1)},o.listenerCount=function(e,t){return\"function\"==typeof e.listenerCount?e.listenerCount(t):p.call(e,t)},o.prototype.listenerCount=p,o.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},94(e){e.exports=function(e){return!(!e||\"string\"==typeof e)&&(e instanceof Array||Array.isArray(e)||e.length>=0&&(e.splice instanceof Function||Object.getOwnPropertyDescriptor(e,e.length-1)&&\"String\"!==e.constructor.name))}},403(e,t,n){\"use strict\";var a=n(94),r=Array.prototype.concat,o=Array.prototype.slice,s=e.exports=function(e){for(var t=[],n=0,s=e.length;n<s;n++){var i=e[n];a(i)?t=r.call(t,o.call(i)):t.push(i)}return t};s.wrap=function(e){return function(){return e(s(arguments))}}},119(t){\"use strict\";t.exports=e}},n={};function a(e){var r=n[e];if(void 0!==r)return r.exports;var o=n[e]={exports:{}};return t[e](o,o.exports,a),o.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})};var r={};return(()=>{\"use strict\";function e(t){return e=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},e(t)}function t(t){var n=function(t,n){if(\"object\"!=e(t)||!t)return t;var a=t[Symbol.toPrimitive];if(void 0!==a){var r=a.call(t,n||\"default\");if(\"object\"!=e(r))return r;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===n?String:Number)(t)}(t,\"string\");return\"symbol\"==e(n)?n:n+\"\"}function n(e,n,a){return(n=t(n))in e?Object.defineProperty(e,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[n]=a,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,a)}return n}function s(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach(function(t){n(e,t,a[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))})}return e}function i(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function c(e,n){for(var a=0;a<n.length;a++){var r=n[a];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,t(r.key),r)}}function l(e,t,n){return t&&c(e.prototype,t),n&&c(e,n),Object.defineProperty(e,\"prototype\",{writable:!1}),e}function u(e){return u=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},u(e)}function b(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(b=function(){return!!e})()}function d(t,n){if(n&&(\"object\"==e(n)||\"function\"==typeof n))return n;if(void 0!==n)throw new TypeError(\"Derived constructors may only return object or undefined\");return function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}(t)}function p(e,t,n){return t=u(t),d(e,b()?Reflect.construct(t,n||[],u(e).constructor):t.apply(e,n))}function h(e,t){return h=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},h(e,t)}function f(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&h(e,t)}a.r(r),a.d(r,{default:()=>Ca});var m=a(119),v=a.n(m);function g(){var e=this.constructor.getDerivedStateFromProps(this.props,this.state);null!=e&&this.setState(e)}function y(e){this.setState(function(t){var n=this.constructor.getDerivedStateFromProps(e,t);return null!=n?n:null}.bind(this))}function E(e,t){try{var n=this.props,a=this.state;this.props=e,this.state=t,this.__reactInternalSnapshotFlag=!0,this.__reactInternalSnapshot=this.getSnapshotBeforeUpdate(n,a)}finally{this.props=n,this.state=a}}function k(e){var t=e.prototype;if(!t||!t.isReactComponent)throw new Error(\"Can only polyfill class components\");if(\"function\"!=typeof e.getDerivedStateFromProps&&\"function\"!=typeof t.getSnapshotBeforeUpdate)return e;var n=null,a=null,r=null;if(\"function\"==typeof t.componentWillMount?n=\"componentWillMount\":\"function\"==typeof t.UNSAFE_componentWillMount&&(n=\"UNSAFE_componentWillMount\"),\"function\"==typeof t.componentWillReceiveProps?a=\"componentWillReceiveProps\":\"function\"==typeof t.UNSAFE_componentWillReceiveProps&&(a=\"UNSAFE_componentWillReceiveProps\"),\"function\"==typeof t.componentWillUpdate?r=\"componentWillUpdate\":\"function\"==typeof t.UNSAFE_componentWillUpdate&&(r=\"UNSAFE_componentWillUpdate\"),null!==n||null!==a||null!==r){var o=e.displayName||e.name,s=\"function\"==typeof e.getDerivedStateFromProps?\"getDerivedStateFromProps()\":\"getSnapshotBeforeUpdate()\";throw Error(\"Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n\"+o+\" uses \"+s+\" but also contains the following legacy lifecycles:\"+(null!==n?\"\\n \"+n:\"\")+(null!==a?\"\\n \"+a:\"\")+(null!==r?\"\\n \"+r:\"\")+\"\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\nhttps://fb.me/react-async-component-lifecycle-hooks\")}if(\"function\"==typeof e.getDerivedStateFromProps&&(t.componentWillMount=g,t.componentWillReceiveProps=y),\"function\"==typeof t.getSnapshotBeforeUpdate){if(\"function\"!=typeof t.componentDidUpdate)throw new Error(\"Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype\");t.componentWillUpdate=E;var i=t.componentDidUpdate;t.componentDidUpdate=function(e,t,n){var a=this.__reactInternalSnapshotFlag?this.__reactInternalSnapshot:n;i.call(this,e,t,a)}}return e}function j(e,t){if(null==e)return{};var n={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(-1!==t.indexOf(a))continue;n[a]=e[a]}return n}function w(e,t){if(null==e)return{};var n,a,r=j(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)n=o[a],-1===t.indexOf(n)&&{}.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function C(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function x(e,t){if(e){if(\"string\"==typeof e)return C(e,t);var n={}.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(e):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?C(e,t):void 0}}function O(e){return function(e){if(Array.isArray(e))return C(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||x(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function S(e,t){if(t&&(null==e?void 0:e.constructor)===t)return\"bigNumber\";var n=function(e){return{}.toString.call(e).match(/\\s([a-zA-Z]+)/)[1].toLowerCase()}(e);return\"number\"===n&&(n=isNaN(e)?\"nan\":(0|e)!==e?\"float\":\"integer\"),n}function A(e){return e.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\n/g,\"\\\\n\").replace(/\\t/g,\"\\\\t\").replace(/\\r/g,\"\\\\r\").replace(/\\f/g,\"\\\\f\")}g.__suppressDeprecationWarning=!0,y.__suppressDeprecationWarning=!0,E.__suppressDeprecationWarning=!0;var _=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props,t=(e.parent_type,e.namespace),n=e.quotesOnKeys,a=e.indentWidth,r=e.theme,o=e.singleIndent,s=e.showComma,i=e.isLast,c=e.jsvRoot,l=e.name?e.name:\"\";return v().createElement(\"div\",{className:\"variable-row\"},v().createElement(\"span\",Object.assign({},Zt(r,\"object-name\"),{key:t},Zt(r,\"objectKeyVal\",{paddingLeft:a*o})),v().createElement(\"span\",{className:\"object-key\"},n&&v().createElement(\"span\",{style:{verticalAlign:\"top\"}},'\"'),v().createElement(\"span\",null,l),n&&v().createElement(\"span\",{style:{verticalAlign:\"top\"}},'\"')),v().createElement(\"span\",Zt(r,\"colon\"),\":\")),v().createElement(\"span\",Zt(r,\"circularReference\"),\"[CIRCULAR REFERENCE]\"),s&&!i&&!c&&v().createElement(\"span\",Zt(r,\"comma\"),\",\"))}}])}(v().PureComponent),M={scheme:\"rjv-default\",author:\"mac gainor\",base00:\"rgba(0, 0, 0, 0)\",base01:\"rgb(245, 245, 245)\",base02:\"rgb(235, 235, 235)\",base03:\"#93a1a1\",base04:\"rgba(0, 0, 0, 0.3)\",base05:\"#586e75\",base06:\"#073642\",base07:\"#002b36\",base08:\"#d33682\",base09:\"#cb4b16\",base0A:\"#dc322f\",base0B:\"#859900\",base0C:\"#6c71c4\",base0D:\"#586e75\",base0E:\"#2aa198\",base0F:\"#268bd2\"},F={scheme:\"rjv-grey\",author:\"mac gainor\",base00:\"rgba(1, 1, 1, 0)\",base01:\"rgba(1, 1, 1, 0.1)\",base02:\"rgba(0, 0, 0, 0.2)\",base03:\"rgba(1, 1, 1, 0.3)\",base04:\"rgba(0, 0, 0, 0.4)\",base05:\"rgba(1, 1, 1, 0.5)\",base06:\"rgba(1, 1, 1, 0.6)\",base07:\"rgba(1, 1, 1, 0.7)\",base08:\"rgba(1, 1, 1, 0.8)\",base09:\"rgba(1, 1, 1, 0.8)\",base0A:\"rgba(1, 1, 1, 0.8)\",base0B:\"rgba(1, 1, 1, 0.8)\",base0C:\"rgba(1, 1, 1, 0.8)\",base0D:\"rgba(1, 1, 1, 0.8)\",base0E:\"rgba(1, 1, 1, 0.8)\",base0F:\"rgba(1, 1, 1, 0.8)\"};const P={white:\"#fff\",black:\"#000\",transparent:\"rgba(1, 1, 1, 0)\",globalFontFamily:\"monospace\",globalCursor:\"default\",indentBlockWidth:\"5px\",braceFontWeight:\"bold\",braceCursor:\"pointer\",ellipsisFontSize:\"18px\",ellipsisLineHeight:\"10px\",ellipsisCursor:\"pointer\",keyMargin:\"0px 5px\",keyLetterSpacing:\"0.5px\",keyFontStyle:\"none\",keyBorderRadius:\"3px\",keyColonWeight:\"bold\",keyVerticalAlign:\"top\",keyOpacity:\"0.85\",keyOpacityHover:\"1\",keyValPaddingTop:\"3px\",keyValPaddingBottom:\"3px\",keyValPaddingRight:\"5px\",keyValBorderLeft:\"1px solid\",keyValBorderHover:\"2px solid\",keyValPaddingHover:\"3px 5px 3px 4px\",pushedContentMarginLeft:\"6px\",variableValuePaddingRight:\"6px\",nullFontSize:\"11px\",nullFontWeight:\"bold\",nullPadding:\"1px 2px\",nullBorderRadius:\"3px\",nanFontSize:\"11px\",nanFontWeight:\"bold\",nanPadding:\"1px 2px\",nanBorderRadius:\"3px\",undefinedFontSize:\"11px\",undefinedFontWeight:\"bold\",undefinedPadding:\"1px 2px\",undefinedBorderRadius:\"3px\",dataTypeFontSize:\"11px\",dataTypeMarginRight:\"4px\",datatypeOpacity:\"0.8\",objectSizeBorderRadius:\"3px\",objectSizeFontStyle:\"italic\",objectSizeMargin:\"0px 6px 0px 0px\",clipboardCursor:\"pointer\",clipboardCheckMarginLeft:\"-12px\",metaDataPadding:\"0px 0px 0px 10px\",arrayGroupMetaPadding:\"0px 0px 0px 4px\",iconContainerWidth:\"17px\",tooltipPadding:\"4px\",editInputMinWidth:\"130px\",editInputBorderRadius:\"2px\",editInputPadding:\"5px\",editInputMarginRight:\"4px\",editInputFontFamily:\"monospace\",iconCursor:\"pointer\",iconFontSize:\"15px\",iconPaddingRight:\"1px\",dateValueMarginLeft:\"2px\",iconMarginRight:\"3px\",detectedRowPaddingTop:\"3px\",addKeyCoverBackground:\"rgba(255, 255, 255, 0.3)\",addKeyCoverPosition:\"absolute\",addKeyCoverPositionPx:\"0px\",addKeyModalWidth:\"200px\",addKeyModalMargin:\"auto\",addKeyModalPadding:\"10px\",addKeyModalRadius:\"3px\",commaColor:\"#666\",commaFontSize:\"12px\",commaMarginRight:\"4px\"};var R=a(742);const D=function(e){return e};const N=\"object\"==typeof global&&global&&global.Object===Object&&global;var I=\"object\"==typeof self&&self&&self.Object===Object&&self;const B=N||I||Function(\"return this\")();const z=B.Symbol;var L=Object.prototype,q=L.hasOwnProperty,T=L.toString,V=z?z.toStringTag:void 0;const K=function(e){var t=q.call(e,V),n=e[V];try{e[V]=void 0;var a=!0}catch(e){}var r=T.call(e);return a&&(t?e[V]=n:delete e[V]),r};var W=Object.prototype.toString;const U=function(e){return W.call(e)};var H=z?z.toStringTag:void 0;const $=function(e){return null==e?void 0===e?\"[object Undefined]\":\"[object Null]\":H&&H in Object(e)?K(e):U(e)};const J=function(e){var t=typeof e;return null!=e&&(\"object\"==t||\"function\"==t)};const Y=function(e){if(!J(e))return!1;var t=$(e);return\"[object Function]\"==t||\"[object GeneratorFunction]\"==t||\"[object AsyncFunction]\"==t||\"[object Proxy]\"==t};const G=B[\"__core-js_shared__\"];var Q,Z=(Q=/[^.]+$/.exec(G&&G.keys&&G.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+Q:\"\";const X=function(e){return!!Z&&Z in e};var ee=Function.prototype.toString;const te=function(e){if(null!=e){try{return ee.call(e)}catch(e){}try{return e+\"\"}catch(e){}}return\"\"};var ne=/^\\[object .+?Constructor\\]$/,ae=Function.prototype,re=Object.prototype,oe=ae.toString,se=re.hasOwnProperty,ie=RegExp(\"^\"+oe.call(se).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");const ce=function(e){return!(!J(e)||X(e))&&(Y(e)?ie:ne).test(te(e))};const le=function(e,t){return null==e?void 0:e[t]};const ue=function(e,t){var n=le(e,t);return ce(n)?n:void 0};var be=ue(B,\"WeakMap\");const de=be&&new be;const pe=de?function(e,t){return de.set(e,t),e}:D;var he=Object.create;const fe=function(){function e(){}return function(t){if(!J(t))return{};if(he)return he(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();const me=function(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var n=fe(e.prototype),a=e.apply(n,t);return J(a)?a:n}};const ve=function(e,t,n){var a=1&t,r=me(e);return function t(){return(this&&this!==B&&this instanceof t?r:e).apply(a?n:this,arguments)}};const ge=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)};var ye=Math.max;const Ee=function(e,t,n,a){for(var r=-1,o=e.length,s=n.length,i=-1,c=t.length,l=ye(o-s,0),u=Array(c+l),b=!a;++i<c;)u[i]=t[i];for(;++r<s;)(b||r<o)&&(u[n[r]]=e[r]);for(;l--;)u[i++]=e[r++];return u};var ke=Math.max;const je=function(e,t,n,a){for(var r=-1,o=e.length,s=-1,i=n.length,c=-1,l=t.length,u=ke(o-i,0),b=Array(u+l),d=!a;++r<u;)b[r]=e[r];for(var p=r;++c<l;)b[p+c]=t[c];for(;++s<i;)(d||r<o)&&(b[p+n[s]]=e[r++]);return b};const we=function(e,t){for(var n=e.length,a=0;n--;)e[n]===t&&++a;return a};const Ce=function(){};function xe(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}xe.prototype=fe(Ce.prototype),xe.prototype.constructor=xe;const Oe=xe;const Se=de?function(e){return de.get(e)}:function(){};const Ae={};var _e=Object.prototype.hasOwnProperty;const Me=function(e){for(var t=e.name+\"\",n=Ae[t],a=_e.call(Ae,t)?n.length:0;a--;){var r=n[a],o=r.func;if(null==o||o==e)return r.name}return t};function Fe(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}Fe.prototype=fe(Ce.prototype),Fe.prototype.constructor=Fe;const Pe=Fe;const Re=Array.isArray;const De=function(e){return null!=e&&\"object\"==typeof e};const Ne=function(e,t){var n=-1,a=e.length;for(t||(t=Array(a));++n<a;)t[n]=e[n];return t};const Ie=function(e){if(e instanceof Oe)return e.clone();var t=new Pe(e.__wrapped__,e.__chain__);return t.__actions__=Ne(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t};var Be=Object.prototype.hasOwnProperty;function ze(e){if(De(e)&&!Re(e)&&!(e instanceof Oe)){if(e instanceof Pe)return e;if(Be.call(e,\"__wrapped__\"))return Ie(e)}return new Pe(e)}ze.prototype=Ce.prototype,ze.prototype.constructor=ze;const Le=ze;const qe=function(e){var t=Me(e),n=Le[t];if(\"function\"!=typeof n||!(t in Oe.prototype))return!1;if(e===n)return!0;var a=Se(n);return!!a&&e===a[0]};var Te=Date.now;const Ve=function(e){var t=0,n=0;return function(){var a=Te(),r=16-(a-n);if(n=a,r>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}};const Ke=Ve(pe);var We=/\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,Ue=/,? & /;const He=function(e){var t=e.match(We);return t?t[1].split(Ue):[]};var $e=/\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/;const Je=function(e,t){var n=t.length;if(!n)return e;var a=n-1;return t[a]=(n>1?\"& \":\"\")+t[a],t=t.join(n>2?\", \":\" \"),e.replace($e,\"{\\n/* [wrapped with \"+t+\"] */\\n\")};const Ye=function(e){return function(){return e}};const Ge=function(){try{var e=ue(Object,\"defineProperty\");return e({},\"\",{}),e}catch(e){}}();const Qe=Ve(Ge?function(e,t){return Ge(e,\"toString\",{configurable:!0,enumerable:!1,value:Ye(t),writable:!0})}:D);const Ze=function(e,t){for(var n=-1,a=null==e?0:e.length;++n<a&&!1!==t(e[n],n,e););return e};const Xe=function(e,t,n,a){for(var r=e.length,o=n+(a?1:-1);a?o--:++o<r;)if(t(e[o],o,e))return o;return-1};const et=function(e){return e!=e};const tt=function(e,t,n){for(var a=n-1,r=e.length;++a<r;)if(e[a]===t)return a;return-1};const nt=function(e,t,n){return t==t?tt(e,t,n):Xe(e,et,n)};const at=function(e,t){return!!(null==e?0:e.length)&&nt(e,t,0)>-1};var rt=[[\"ary\",128],[\"bind\",1],[\"bindKey\",2],[\"curry\",8],[\"curryRight\",16],[\"flip\",512],[\"partial\",32],[\"partialRight\",64],[\"rearg\",256]];const ot=function(e,t){return Ze(rt,function(n){var a=\"_.\"+n[0];t&n[1]&&!at(e,a)&&e.push(a)}),e.sort()};const st=function(e,t,n){var a=t+\"\";return Qe(e,Je(a,ot(He(a),n)))};const it=function(e,t,n,a,r,o,s,i,c,l){var u=8&t;t|=u?32:64,4&(t&=~(u?64:32))||(t&=-4);var b=[e,t,r,u?o:void 0,u?s:void 0,u?void 0:o,u?void 0:s,i,c,l],d=n.apply(void 0,b);return qe(e)&&Ke(d,b),d.placeholder=a,st(d,e,t)};const ct=function(e){return e.placeholder};var lt=/^(?:0|[1-9]\\d*)$/;const ut=function(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&(\"number\"==n||\"symbol\"!=n&<.test(e))&&e>-1&&e%1==0&&e<t};var bt=Math.min;const dt=function(e,t){for(var n=e.length,a=bt(t.length,n),r=Ne(e);a--;){var o=t[a];e[a]=ut(o,n)?r[o]:void 0}return e};var pt=\"__lodash_placeholder__\";const ht=function(e,t){for(var n=-1,a=e.length,r=0,o=[];++n<a;){var s=e[n];s!==t&&s!==pt||(e[n]=pt,o[r++]=n)}return o};const ft=function e(t,n,a,r,o,s,i,c,l,u){var b=128&n,d=1&n,p=2&n,h=24&n,f=512&n,m=p?void 0:me(t);return function v(){for(var g=arguments.length,y=Array(g),E=g;E--;)y[E]=arguments[E];if(h)var k=ct(v),j=we(y,k);if(r&&(y=Ee(y,r,o,h)),s&&(y=je(y,s,i,h)),g-=j,h&&g<u){var w=ht(y,k);return it(t,n,e,v.placeholder,a,y,w,c,l,u-g)}var C=d?a:this,x=p?C[t]:t;return g=y.length,c?y=dt(y,c):f&&g>1&&y.reverse(),b&&l<g&&(y.length=l),this&&this!==B&&this instanceof v&&(x=m||me(x)),x.apply(C,y)}};const mt=function(e,t,n){var a=me(e);return function r(){for(var o=arguments.length,s=Array(o),i=o,c=ct(r);i--;)s[i]=arguments[i];var l=o<3&&s[0]!==c&&s[o-1]!==c?[]:ht(s,c);return(o-=l.length)<n?it(e,t,ft,r.placeholder,void 0,s,l,void 0,void 0,n-o):ge(this&&this!==B&&this instanceof r?a:e,this,s)}};const vt=function(e,t,n,a){var r=1&t,o=me(e);return function t(){for(var s=-1,i=arguments.length,c=-1,l=a.length,u=Array(l+i),b=this&&this!==B&&this instanceof t?o:e;++c<l;)u[c]=a[c];for(;i--;)u[c++]=arguments[++s];return ge(b,r?n:this,u)}};var gt=\"__lodash_placeholder__\",yt=128,Et=Math.min;const kt=function(e,t){var n=e[1],a=t[1],r=n|a,o=r<131,s=a==yt&&8==n||a==yt&&256==n&&e[7].length<=t[8]||384==a&&t[7].length<=t[8]&&8==n;if(!o&&!s)return e;1&a&&(e[2]=t[2],r|=1&n?0:4);var i=t[3];if(i){var c=e[3];e[3]=c?Ee(c,i,t[4]):i,e[4]=c?ht(e[3],gt):t[4]}return(i=t[5])&&(c=e[5],e[5]=c?je(c,i,t[6]):i,e[6]=c?ht(e[5],gt):t[6]),(i=t[7])&&(e[7]=i),a&yt&&(e[8]=null==e[8]?t[8]:Et(e[8],t[8])),null==e[9]&&(e[9]=t[9]),e[0]=t[0],e[1]=r,e};var jt=/\\s/;const wt=function(e){for(var t=e.length;t--&&jt.test(e.charAt(t)););return t};var Ct=/^\\s+/;const xt=function(e){return e?e.slice(0,wt(e)+1).replace(Ct,\"\"):e};const Ot=function(e){return\"symbol\"==typeof e||De(e)&&\"[object Symbol]\"==$(e)};var St=/^[-+]0x[0-9a-f]+$/i,At=/^0b[01]+$/i,_t=/^0o[0-7]+$/i,Mt=parseInt;const Ft=function(e){if(\"number\"==typeof e)return e;if(Ot(e))return NaN;if(J(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=J(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=xt(e);var n=At.test(e);return n||_t.test(e)?Mt(e.slice(2),n?2:8):St.test(e)?NaN:+e};var Pt=1/0;const Rt=function(e){return e?(e=Ft(e))===Pt||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0};const Dt=function(e){var t=Rt(e),n=t%1;return t==t?n?t-n:t:0};var Nt=Math.max;const It=function(e,t,n,a,r,o,s,i){var c=2&t;if(!c&&\"function\"!=typeof e)throw new TypeError(\"Expected a function\");var l=a?a.length:0;if(l||(t&=-97,a=r=void 0),s=void 0===s?s:Nt(Dt(s),0),i=void 0===i?i:Dt(i),l-=r?r.length:0,64&t){var u=a,b=r;a=r=void 0}var d=c?void 0:Se(e),p=[e,t,n,a,r,u,b,o,s,i];if(d&&kt(p,d),e=p[0],t=p[1],n=p[2],a=p[3],r=p[4],!(i=p[9]=void 0===p[9]?c?0:e.length:Nt(p[9]-l,0))&&24&t&&(t&=-25),t&&1!=t)h=8==t||16==t?mt(e,t,i):32!=t&&33!=t||r.length?ft.apply(void 0,p):vt(e,t,n,a);else var h=ve(e,t,n);return st((d?pe:Ke)(h,p),e,t)};function Bt(e,t,n){var a=It(e,8,void 0,void 0,void 0,void 0,void 0,t=n?void 0:t);return a.placeholder=Bt.placeholder,a}Bt.placeholder={};const zt=Bt;const Lt={threezerotwofour:{scheme:\"threezerotwofour\",author:\"jan t. sott (http://github.com/idleberg)\",base00:\"#090300\",base01:\"#3a3432\",base02:\"#4a4543\",base03:\"#5c5855\",base04:\"#807d7c\",base05:\"#a5a2a2\",base06:\"#d6d5d4\",base07:\"#f7f7f7\",base08:\"#db2d20\",base09:\"#e8bbd0\",base0A:\"#fded02\",base0B:\"#01a252\",base0C:\"#b5e4f4\",base0D:\"#01a0e4\",base0E:\"#a16a94\",base0F:\"#cdab53\"},apathy:{scheme:\"apathy\",author:\"jannik siebert (https://github.com/janniks)\",base00:\"#031A16\",base01:\"#0B342D\",base02:\"#184E45\",base03:\"#2B685E\",base04:\"#5F9C92\",base05:\"#81B5AC\",base06:\"#A7CEC8\",base07:\"#D2E7E4\",base08:\"#3E9688\",base09:\"#3E7996\",base0A:\"#3E4C96\",base0B:\"#883E96\",base0C:\"#963E4C\",base0D:\"#96883E\",base0E:\"#4C963E\",base0F:\"#3E965B\"},ashes:{scheme:\"ashes\",author:\"jannik siebert (https://github.com/janniks)\",base00:\"#1C2023\",base01:\"#393F45\",base02:\"#565E65\",base03:\"#747C84\",base04:\"#ADB3BA\",base05:\"#C7CCD1\",base06:\"#DFE2E5\",base07:\"#F3F4F5\",base08:\"#C7AE95\",base09:\"#C7C795\",base0A:\"#AEC795\",base0B:\"#95C7AE\",base0C:\"#95AEC7\",base0D:\"#AE95C7\",base0E:\"#C795AE\",base0F:\"#C79595\"},atelierDune:{scheme:\"atelier dune\",author:\"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune)\",base00:\"#20201d\",base01:\"#292824\",base02:\"#6e6b5e\",base03:\"#7d7a68\",base04:\"#999580\",base05:\"#a6a28c\",base06:\"#e8e4cf\",base07:\"#fefbec\",base08:\"#d73737\",base09:\"#b65611\",base0A:\"#cfb017\",base0B:\"#60ac39\",base0C:\"#1fad83\",base0D:\"#6684e1\",base0E:\"#b854d4\",base0F:\"#d43552\"},atelierForest:{scheme:\"atelier forest\",author:\"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest)\",base00:\"#1b1918\",base01:\"#2c2421\",base02:\"#68615e\",base03:\"#766e6b\",base04:\"#9c9491\",base05:\"#a8a19f\",base06:\"#e6e2e0\",base07:\"#f1efee\",base08:\"#f22c40\",base09:\"#df5320\",base0A:\"#d5911a\",base0B:\"#5ab738\",base0C:\"#00ad9c\",base0D:\"#407ee7\",base0E:\"#6666ea\",base0F:\"#c33ff3\"},atelierHeath:{scheme:\"atelier heath\",author:\"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath)\",base00:\"#1b181b\",base01:\"#292329\",base02:\"#695d69\",base03:\"#776977\",base04:\"#9e8f9e\",base05:\"#ab9bab\",base06:\"#d8cad8\",base07:\"#f7f3f7\",base08:\"#ca402b\",base09:\"#a65926\",base0A:\"#bb8a35\",base0B:\"#379a37\",base0C:\"#159393\",base0D:\"#516aec\",base0E:\"#7b59c0\",base0F:\"#cc33cc\"},atelierLakeside:{scheme:\"atelier lakeside\",author:\"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside/)\",base00:\"#161b1d\",base01:\"#1f292e\",base02:\"#516d7b\",base03:\"#5a7b8c\",base04:\"#7195a8\",base05:\"#7ea2b4\",base06:\"#c1e4f6\",base07:\"#ebf8ff\",base08:\"#d22d72\",base09:\"#935c25\",base0A:\"#8a8a0f\",base0B:\"#568c3b\",base0C:\"#2d8f6f\",base0D:\"#257fad\",base0E:\"#5d5db1\",base0F:\"#b72dd2\"},atelierSeaside:{scheme:\"atelier seaside\",author:\"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside/)\",base00:\"#131513\",base01:\"#242924\",base02:\"#5e6e5e\",base03:\"#687d68\",base04:\"#809980\",base05:\"#8ca68c\",base06:\"#cfe8cf\",base07:\"#f0fff0\",base08:\"#e6193c\",base09:\"#87711d\",base0A:\"#c3c322\",base0B:\"#29a329\",base0C:\"#1999b3\",base0D:\"#3d62f5\",base0E:\"#ad2bee\",base0F:\"#e619c3\"},bespin:{scheme:\"bespin\",author:\"jan t. sott\",base00:\"#28211c\",base01:\"#36312e\",base02:\"#5e5d5c\",base03:\"#666666\",base04:\"#797977\",base05:\"#8a8986\",base06:\"#9d9b97\",base07:\"#baae9e\",base08:\"#cf6a4c\",base09:\"#cf7d34\",base0A:\"#f9ee98\",base0B:\"#54be0d\",base0C:\"#afc4db\",base0D:\"#5ea6ea\",base0E:\"#9b859d\",base0F:\"#937121\"},brewer:{scheme:\"brewer\",author:\"timothée poisot (http://github.com/tpoisot)\",base00:\"#0c0d0e\",base01:\"#2e2f30\",base02:\"#515253\",base03:\"#737475\",base04:\"#959697\",base05:\"#b7b8b9\",base06:\"#dadbdc\",base07:\"#fcfdfe\",base08:\"#e31a1c\",base09:\"#e6550d\",base0A:\"#dca060\",base0B:\"#31a354\",base0C:\"#80b1d3\",base0D:\"#3182bd\",base0E:\"#756bb1\",base0F:\"#b15928\"},bright:{scheme:\"bright\",author:\"chris kempson (http://chriskempson.com)\",base00:\"#000000\",base01:\"#303030\",base02:\"#505050\",base03:\"#b0b0b0\",base04:\"#d0d0d0\",base05:\"#e0e0e0\",base06:\"#f5f5f5\",base07:\"#ffffff\",base08:\"#fb0120\",base09:\"#fc6d24\",base0A:\"#fda331\",base0B:\"#a1c659\",base0C:\"#76c7b7\",base0D:\"#6fb3d2\",base0E:\"#d381c3\",base0F:\"#be643c\"},chalk:{scheme:\"chalk\",author:\"chris kempson (http://chriskempson.com)\",base00:\"#151515\",base01:\"#202020\",base02:\"#303030\",base03:\"#505050\",base04:\"#b0b0b0\",base05:\"#d0d0d0\",base06:\"#e0e0e0\",base07:\"#f5f5f5\",base08:\"#fb9fb1\",base09:\"#eda987\",base0A:\"#ddb26f\",base0B:\"#acc267\",base0C:\"#12cfc0\",base0D:\"#6fc2ef\",base0E:\"#e1a3ee\",base0F:\"#deaf8f\"},codeschool:{scheme:\"codeschool\",author:\"brettof86\",base00:\"#232c31\",base01:\"#1c3657\",base02:\"#2a343a\",base03:\"#3f4944\",base04:\"#84898c\",base05:\"#9ea7a6\",base06:\"#a7cfa3\",base07:\"#b5d8f6\",base08:\"#2a5491\",base09:\"#43820d\",base0A:\"#a03b1e\",base0B:\"#237986\",base0C:\"#b02f30\",base0D:\"#484d79\",base0E:\"#c59820\",base0F:\"#c98344\"},colors:{scheme:\"colors\",author:\"mrmrs (http://clrs.cc)\",base00:\"#111111\",base01:\"#333333\",base02:\"#555555\",base03:\"#777777\",base04:\"#999999\",base05:\"#bbbbbb\",base06:\"#dddddd\",base07:\"#ffffff\",base08:\"#ff4136\",base09:\"#ff851b\",base0A:\"#ffdc00\",base0B:\"#2ecc40\",base0C:\"#7fdbff\",base0D:\"#0074d9\",base0E:\"#b10dc9\",base0F:\"#85144b\"},default:{scheme:\"default\",author:\"chris kempson (http://chriskempson.com)\",base00:\"#181818\",base01:\"#282828\",base02:\"#383838\",base03:\"#585858\",base04:\"#b8b8b8\",base05:\"#d8d8d8\",base06:\"#e8e8e8\",base07:\"#f8f8f8\",base08:\"#ab4642\",base09:\"#dc9656\",base0A:\"#f7ca88\",base0B:\"#a1b56c\",base0C:\"#86c1b9\",base0D:\"#7cafc2\",base0E:\"#ba8baf\",base0F:\"#a16946\"},eighties:{scheme:\"eighties\",author:\"chris kempson (http://chriskempson.com)\",base00:\"#2d2d2d\",base01:\"#393939\",base02:\"#515151\",base03:\"#747369\",base04:\"#a09f93\",base05:\"#d3d0c8\",base06:\"#e8e6df\",base07:\"#f2f0ec\",base08:\"#f2777a\",base09:\"#f99157\",base0A:\"#ffcc66\",base0B:\"#99cc99\",base0C:\"#66cccc\",base0D:\"#6699cc\",base0E:\"#cc99cc\",base0F:\"#d27b53\"},embers:{scheme:\"embers\",author:\"jannik siebert (https://github.com/janniks)\",base00:\"#16130F\",base01:\"#2C2620\",base02:\"#433B32\",base03:\"#5A5047\",base04:\"#8A8075\",base05:\"#A39A90\",base06:\"#BEB6AE\",base07:\"#DBD6D1\",base08:\"#826D57\",base09:\"#828257\",base0A:\"#6D8257\",base0B:\"#57826D\",base0C:\"#576D82\",base0D:\"#6D5782\",base0E:\"#82576D\",base0F:\"#825757\"},flat:{scheme:\"flat\",author:\"chris kempson (http://chriskempson.com)\",base00:\"#2C3E50\",base01:\"#34495E\",base02:\"#7F8C8D\",base03:\"#95A5A6\",base04:\"#BDC3C7\",base05:\"#e0e0e0\",base06:\"#f5f5f5\",base07:\"#ECF0F1\",base08:\"#E74C3C\",base09:\"#E67E22\",base0A:\"#F1C40F\",base0B:\"#2ECC71\",base0C:\"#1ABC9C\",base0D:\"#3498DB\",base0E:\"#9B59B6\",base0F:\"#be643c\"},google:{scheme:\"google\",author:\"seth wright (http://sethawright.com)\",base00:\"#1d1f21\",base01:\"#282a2e\",base02:\"#373b41\",base03:\"#969896\",base04:\"#b4b7b4\",base05:\"#c5c8c6\",base06:\"#e0e0e0\",base07:\"#ffffff\",base08:\"#CC342B\",base09:\"#F96A38\",base0A:\"#FBA922\",base0B:\"#198844\",base0C:\"#3971ED\",base0D:\"#3971ED\",base0E:\"#A36AC7\",base0F:\"#3971ED\"},grayscale:{scheme:\"grayscale\",author:\"alexandre gavioli (https://github.com/alexx2/)\",base00:\"#101010\",base01:\"#252525\",base02:\"#464646\",base03:\"#525252\",base04:\"#ababab\",base05:\"#b9b9b9\",base06:\"#e3e3e3\",base07:\"#f7f7f7\",base08:\"#7c7c7c\",base09:\"#999999\",base0A:\"#a0a0a0\",base0B:\"#8e8e8e\",base0C:\"#868686\",base0D:\"#686868\",base0E:\"#747474\",base0F:\"#5e5e5e\"},greenscreen:{scheme:\"green screen\",author:\"chris kempson (http://chriskempson.com)\",base00:\"#001100\",base01:\"#003300\",base02:\"#005500\",base03:\"#007700\",base04:\"#009900\",base05:\"#00bb00\",base06:\"#00dd00\",base07:\"#00ff00\",base08:\"#007700\",base09:\"#009900\",base0A:\"#007700\",base0B:\"#00bb00\",base0C:\"#005500\",base0D:\"#009900\",base0E:\"#00bb00\",base0F:\"#005500\"},harmonic:{scheme:\"harmonic16\",author:\"jannik siebert (https://github.com/janniks)\",base00:\"#0b1c2c\",base01:\"#223b54\",base02:\"#405c79\",base03:\"#627e99\",base04:\"#aabcce\",base05:\"#cbd6e2\",base06:\"#e5ebf1\",base07:\"#f7f9fb\",base08:\"#bf8b56\",base09:\"#bfbf56\",base0A:\"#8bbf56\",base0B:\"#56bf8b\",base0C:\"#568bbf\",base0D:\"#8b56bf\",base0E:\"#bf568b\",base0F:\"#bf5656\"},hopscotch:{scheme:\"hopscotch\",author:\"jan t. sott\",base00:\"#322931\",base01:\"#433b42\",base02:\"#5c545b\",base03:\"#797379\",base04:\"#989498\",base05:\"#b9b5b8\",base06:\"#d5d3d5\",base07:\"#ffffff\",base08:\"#dd464c\",base09:\"#fd8b19\",base0A:\"#fdcc59\",base0B:\"#8fc13e\",base0C:\"#149b93\",base0D:\"#1290bf\",base0E:\"#c85e7c\",base0F:\"#b33508\"},isotope:{scheme:\"isotope\",author:\"jan t. sott\",base00:\"#000000\",base01:\"#404040\",base02:\"#606060\",base03:\"#808080\",base04:\"#c0c0c0\",base05:\"#d0d0d0\",base06:\"#e0e0e0\",base07:\"#ffffff\",base08:\"#ff0000\",base09:\"#ff9900\",base0A:\"#ff0099\",base0B:\"#33ff00\",base0C:\"#00ffff\",base0D:\"#0066ff\",base0E:\"#cc00ff\",base0F:\"#3300ff\"},marrakesh:{scheme:\"marrakesh\",author:\"alexandre gavioli (http://github.com/alexx2/)\",base00:\"#201602\",base01:\"#302e00\",base02:\"#5f5b17\",base03:\"#6c6823\",base04:\"#86813b\",base05:\"#948e48\",base06:\"#ccc37a\",base07:\"#faf0a5\",base08:\"#c35359\",base09:\"#b36144\",base0A:\"#a88339\",base0B:\"#18974e\",base0C:\"#75a738\",base0D:\"#477ca1\",base0E:\"#8868b3\",base0F:\"#b3588e\"},mocha:{scheme:\"mocha\",author:\"chris kempson (http://chriskempson.com)\",base00:\"#3B3228\",base01:\"#534636\",base02:\"#645240\",base03:\"#7e705a\",base04:\"#b8afad\",base05:\"#d0c8c6\",base06:\"#e9e1dd\",base07:\"#f5eeeb\",base08:\"#cb6077\",base09:\"#d28b71\",base0A:\"#f4bc87\",base0B:\"#beb55b\",base0C:\"#7bbda4\",base0D:\"#8ab3b5\",base0E:\"#a89bb9\",base0F:\"#bb9584\"},monokai:{scheme:\"monokai\",author:\"wimer hazenberg (http://www.monokai.nl)\",base00:\"#272822\",base01:\"#383830\",base02:\"#49483e\",base03:\"#75715e\",base04:\"#a59f85\",base05:\"#f8f8f2\",base06:\"#f5f4f1\",base07:\"#f9f8f5\",base08:\"#f92672\",base09:\"#fd971f\",base0A:\"#f4bf75\",base0B:\"#a6e22e\",base0C:\"#a1efe4\",base0D:\"#66d9ef\",base0E:\"#ae81ff\",base0F:\"#cc6633\"},nicinabox:{scheme:\"nicinabox\",author:\"nicinabox (http://github.com/nicinabox)\",base00:\"#2A2F3A\",base01:\"#3C444F\",base02:\"#4F5A65\",base03:\"#BEBEBE\",base04:\"#b0b0b0\",base05:\"#d0d0d0\",base06:\"#FFFFFF\",base07:\"#f5f5f5\",base08:\"#fb9fb1\",base09:\"#FC6D24\",base0A:\"#ddb26f\",base0B:\"#A1C659\",base0C:\"#12cfc0\",base0D:\"#6FB3D2\",base0E:\"#D381C3\",base0F:\"#deaf8f\"},ocean:{scheme:\"ocean\",author:\"chris kempson (http://chriskempson.com)\",base00:\"#2b303b\",base01:\"#343d46\",base02:\"#4f5b66\",base03:\"#65737e\",base04:\"#a7adba\",base05:\"#c0c5ce\",base06:\"#dfe1e8\",base07:\"#eff1f5\",base08:\"#bf616a\",base09:\"#d08770\",base0A:\"#ebcb8b\",base0B:\"#a3be8c\",base0C:\"#96b5b4\",base0D:\"#8fa1b3\",base0E:\"#b48ead\",base0F:\"#ab7967\"},paraiso:{scheme:\"paraiso\",author:\"jan t. sott\",base00:\"#2f1e2e\",base01:\"#41323f\",base02:\"#4f424c\",base03:\"#776e71\",base04:\"#8d8687\",base05:\"#a39e9b\",base06:\"#b9b6b0\",base07:\"#e7e9db\",base08:\"#ef6155\",base09:\"#f99b15\",base0A:\"#fec418\",base0B:\"#48b685\",base0C:\"#5bc4bf\",base0D:\"#06b6ef\",base0E:\"#815ba4\",base0F:\"#e96ba8\"},pop:{scheme:\"pop\",author:\"chris kempson (http://chriskempson.com)\",base00:\"#000000\",base01:\"#202020\",base02:\"#303030\",base03:\"#505050\",base04:\"#b0b0b0\",base05:\"#d0d0d0\",base06:\"#e0e0e0\",base07:\"#ffffff\",base08:\"#eb008a\",base09:\"#f29333\",base0A:\"#f8ca12\",base0B:\"#37b349\",base0C:\"#00aabb\",base0D:\"#0e5a94\",base0E:\"#b31e8d\",base0F:\"#7a2d00\"},railscasts:{scheme:\"railscasts\",author:\"ryan bates (http://railscasts.com)\",base00:\"#2b2b2b\",base01:\"#272935\",base02:\"#3a4055\",base03:\"#5a647e\",base04:\"#d4cfc9\",base05:\"#e6e1dc\",base06:\"#f4f1ed\",base07:\"#f9f7f3\",base08:\"#da4939\",base09:\"#cc7833\",base0A:\"#ffc66d\",base0B:\"#a5c261\",base0C:\"#519f50\",base0D:\"#6d9cbe\",base0E:\"#b6b3eb\",base0F:\"#bc9458\"},shapeshifter:{scheme:\"shapeshifter\",author:\"tyler benziger (http://tybenz.com)\",base00:\"#000000\",base01:\"#040404\",base02:\"#102015\",base03:\"#343434\",base04:\"#555555\",base05:\"#ababab\",base06:\"#e0e0e0\",base07:\"#f9f9f9\",base08:\"#e92f2f\",base09:\"#e09448\",base0A:\"#dddd13\",base0B:\"#0ed839\",base0C:\"#23edda\",base0D:\"#3b48e3\",base0E:\"#f996e2\",base0F:\"#69542d\"},solarized:{scheme:\"solarized\",author:\"ethan schoonover (http://ethanschoonover.com/solarized)\",base00:\"#002b36\",base01:\"#073642\",base02:\"#586e75\",base03:\"#657b83\",base04:\"#839496\",base05:\"#93a1a1\",base06:\"#eee8d5\",base07:\"#fdf6e3\",base08:\"#dc322f\",base09:\"#cb4b16\",base0A:\"#b58900\",base0B:\"#859900\",base0C:\"#2aa198\",base0D:\"#268bd2\",base0E:\"#6c71c4\",base0F:\"#d33682\"},summerfruit:{scheme:\"summerfruit\",author:\"christopher corley (http://cscorley.github.io/)\",base00:\"#151515\",base01:\"#202020\",base02:\"#303030\",base03:\"#505050\",base04:\"#B0B0B0\",base05:\"#D0D0D0\",base06:\"#E0E0E0\",base07:\"#FFFFFF\",base08:\"#FF0086\",base09:\"#FD8900\",base0A:\"#ABA800\",base0B:\"#00C918\",base0C:\"#1faaaa\",base0D:\"#3777E6\",base0E:\"#AD00A1\",base0F:\"#cc6633\"},tomorrow:{scheme:\"tomorrow\",author:\"chris kempson (http://chriskempson.com)\",base00:\"#1d1f21\",base01:\"#282a2e\",base02:\"#373b41\",base03:\"#969896\",base04:\"#b4b7b4\",base05:\"#c5c8c6\",base06:\"#e0e0e0\",base07:\"#ffffff\",base08:\"#cc6666\",base09:\"#de935f\",base0A:\"#f0c674\",base0B:\"#b5bd68\",base0C:\"#8abeb7\",base0D:\"#81a2be\",base0E:\"#b294bb\",base0F:\"#a3685a\"},tube:{scheme:\"london tube\",author:\"jan t. sott\",base00:\"#231f20\",base01:\"#1c3f95\",base02:\"#5a5758\",base03:\"#737171\",base04:\"#959ca1\",base05:\"#d9d8d8\",base06:\"#e7e7e8\",base07:\"#ffffff\",base08:\"#ee2e24\",base09:\"#f386a1\",base0A:\"#ffd204\",base0B:\"#00853e\",base0C:\"#85cebc\",base0D:\"#009ddc\",base0E:\"#98005d\",base0F:\"#b06110\"},twilight:{scheme:\"twilight\",author:\"david hart (http://hart-dev.com)\",base00:\"#1e1e1e\",base01:\"#323537\",base02:\"#464b50\",base03:\"#5f5a60\",base04:\"#838184\",base05:\"#a7a7a7\",base06:\"#c3c3c3\",base07:\"#ffffff\",base08:\"#cf6a4c\",base09:\"#cda869\",base0A:\"#f9ee98\",base0B:\"#8f9d6a\",base0C:\"#afc4db\",base0D:\"#7587a6\",base0E:\"#9b859d\",base0F:\"#9b703f\"}},qt=Lt.default,Tt=Object.keys(qt),Vt=e=>{const t=R(e),[n,a,r]=function(e){const t=e[0]/255,n=e[1]/255,a=e[2]/255;return[.299*t+.587*n+.114*a,-.14713*t+-.28886*n+.436*a,.615*t+-.51499*n+-.10001*a]}(t.array());var o;const s=function(e){const t=e[0],n=e[1],a=e[2];let r,o,s;return r=1*t+0*n+1.13983*a,o=1*t+-.39465*n+-.5806*a,s=1*t+2.02311*n+0*a,r=Math.min(Math.max(0,r),1),o=Math.min(Math.max(0,o),1),s=Math.min(Math.max(0,s),1),[255*r,255*o,255*s]}([(o=n,o<.25?1:o<.5?.9-o:1.1-o),a,r]);return R.rgb(s).hex()},Kt=e=>t=>({className:[t.className,e.className].filter(Boolean).join(\" \"),style:{...t.style||{},...e.style||{}}}),Wt=(e,t)=>{const n=Object.keys(t);for(const t in e)-1===n.indexOf(t)&&n.push(t);return n.reduce((n,a)=>(n[a]=((e,t)=>{if(void 0===e)return t;if(void 0===t)return e;const n=typeof t;switch(typeof e){case\"string\":switch(n){case\"string\":return[t,e].filter(Boolean).join(\" \");case\"object\":return Kt({className:e,style:t});case\"function\":return(n,...a)=>Kt({className:e})(t(n,...a))}break;case\"object\":switch(n){case\"string\":return Kt({className:t,style:e});case\"object\":return{...t,...e};case\"function\":return(n,...a)=>Kt({style:e})(t(n,...a))}break;case\"function\":switch(n){case\"string\":return(n,...a)=>e(Kt(n)({className:t}),...a);case\"object\":return(n,...a)=>e(Kt(n)({style:t}),...a);case\"function\":return(n,...a)=>e(t(n,...a),...a)}}})(e[a],t[a]),n),{})},Ut=(e,t,...n)=>{if(null===t)return e;Array.isArray(t)||(t=[t]);const a=t.map(t=>e[t]).filter(Boolean).reduce((e,t)=>(\"string\"==typeof t?e.className=[e.className,t].filter(Boolean).join(\" \"):\"object\"==typeof t?e.style={...e.style,...t}:\"function\"==typeof t&&(e={...e,...t(e,...n)}),e),{className:\"\",style:{}});return a.className||delete a.className,0===Object.keys(a.style).length&&delete a.style,a},Ht=e=>Object.keys(e).reduce((t,n)=>(t[n]=/^base/.test(n)?Vt(e[n]):\"scheme\"===n?e[n]+\":inverted\":e[n],t),{}),$t=zt((e,t={},n={},...a)=>{const{defaultBase16:r=qt,base16Themes:o=null}=t,s=Yt(n,o);s&&(n={...s,...n});const i=Tt.reduce((e,t)=>(e[t]=n[t]||r[t],e),{}),c=Object.keys(n).reduce((e,t)=>-1===Tt.indexOf(t)?(e[t]=n[t],e):e,{}),l=e(i),u=Wt(c,l);return zt(Ut,2)(u,...a)},3),Jt=e=>!!e.extend,Yt=(e,t)=>{if(e&&Jt(e)&&e.extend&&(e=e.extend),\"string\"==typeof e){const[n,a]=e.split(\":\");e=t?t[n]:Lt[n],\"inverted\"===a&&(e=Ht(e))}return e&&Object.prototype.hasOwnProperty.call(e,\"base00\")?e:void 0};var Gt=function(e){var t=function(e){return{backgroundColor:e.base00,ellipsisColor:e.base09,braceColor:e.base07,expandedIcon:e.base0D,collapsedIcon:e.base0E,keyColor:e.base07,arrayKeyColor:e.base0C,objectSize:e.base04,copyToClipboard:e.base0F,copyToClipboardCheck:e.base0D,objectBorder:e.base02,dataTypes:{boolean:e.base0E,date:e.base0D,float:e.base0B,function:e.base0D,integer:e.base0F,string:e.base09,nan:e.base08,null:e.base0A,undefined:e.base05,regexp:e.base0A,background:e.base02,bigNumber:e.base09},editVariable:{editIcon:e.base0E,cancelIcon:e.base09,removeIcon:e.base09,addIcon:e.base0E,checkIcon:e.base0E,background:e.base01,color:e.base0A,border:e.base07},addKeyModal:{background:e.base05,border:e.base04,color:e.base0A,labelColor:e.base01},validationFailure:{background:e.base09,iconColor:e.base01,fontColor:e.base01}}}(e);return{\"app-container\":{fontFamily:P.globalFontFamily,cursor:P.globalCursor,backgroundColor:t.backgroundColor,position:\"relative\"},ellipsis:{display:\"inline-block\",color:t.ellipsisColor,fontSize:P.ellipsisFontSize,lineHeight:P.ellipsisLineHeight,cursor:P.ellipsisCursor},\"brace-row\":{display:\"inline-block\",cursor:\"pointer\"},brace:{display:\"inline-block\",cursor:P.braceCursor,fontWeight:P.braceFontWeight,color:t.braceColor},\"expanded-icon\":{color:t.expandedIcon},\"collapsed-icon\":{color:t.collapsedIcon},colon:{display:\"inline-block\",margin:P.keyMargin,color:t.keyColor,verticalAlign:\"top\"},objectKeyVal:function(e,n){return{style:s({paddingTop:P.keyValPaddingTop,paddingRight:P.keyValPaddingRight,paddingBottom:P.keyValPaddingBottom,borderLeft:P.keyValBorderLeft+\" \"+t.objectBorder,\":hover\":{paddingLeft:n.paddingLeft-1+\"px\",borderLeft:P.keyValBorderHover+\" \"+t.objectBorder}},n)}},\"object-key-val-no-border\":{padding:P.keyValPadding},\"pushed-content\":{marginLeft:P.pushedContentMarginLeft},variableValue:function(e,t){return{style:s({display:\"inline-block\",paddingRight:P.variableValuePaddingRight,position:\"relative\"},t)}},\"object-name\":{display:\"inline-block\",color:t.keyColor,letterSpacing:P.keyLetterSpacing,fontStyle:P.keyFontStyle,verticalAlign:P.keyVerticalAlign,opacity:P.keyOpacity,\":hover\":{opacity:P.keyOpacityHover}},\"array-key\":{display:\"inline-block\",color:t.arrayKeyColor,letterSpacing:P.keyLetterSpacing,fontStyle:P.keyFontStyle,verticalAlign:P.keyVerticalAlign,opacity:P.keyOpacity,\":hover\":{opacity:P.keyOpacityHover}},\"object-size\":{color:t.objectSize,borderRadius:P.objectSizeBorderRadius,fontStyle:P.objectSizeFontStyle,margin:P.objectSizeMargin,cursor:\"default\"},\"data-type-label\":{fontSize:P.dataTypeFontSize,marginRight:P.dataTypeMarginRight,opacity:P.datatypeOpacity},boolean:{display:\"inline-block\",color:t.dataTypes.boolean},date:{display:\"inline-block\",color:t.dataTypes.date},\"date-value\":{marginLeft:P.dateValueMarginLeft},float:{display:\"inline-block\",color:t.dataTypes.float},function:{display:\"inline-block\",color:t.dataTypes.function,cursor:\"pointer\",whiteSpace:\"pre-line\"},\"function-value\":{fontStyle:\"italic\"},integer:{display:\"inline-block\",color:t.dataTypes.integer},bigNumber:{display:\"inline-block\",color:t.dataTypes.bigNumber},string:{display:\"inline-block\",color:t.dataTypes.string},nan:{display:\"inline-block\",color:t.dataTypes.nan,fontSize:P.nanFontSize,fontWeight:P.nanFontWeight,backgroundColor:t.dataTypes.background,padding:P.nanPadding,borderRadius:P.nanBorderRadius},null:{display:\"inline-block\",color:t.dataTypes.null,fontSize:P.nullFontSize,fontWeight:P.nullFontWeight,backgroundColor:t.dataTypes.background,padding:P.nullPadding,borderRadius:P.nullBorderRadius},undefined:{display:\"inline-block\",color:t.dataTypes.undefined,fontSize:P.undefinedFontSize,padding:P.undefinedPadding,borderRadius:P.undefinedBorderRadius,backgroundColor:t.dataTypes.background},circularReference:{display:\"inline-block\",color:t.dataTypes.null,fontSize:P.nullFontSize,fontWeight:P.nullFontWeight,backgroundColor:t.dataTypes.background,padding:P.nullPadding,borderRadius:P.nullBorderRadius},regexp:{display:\"inline-block\",color:t.dataTypes.regexp},\"copy-to-clipboard\":{cursor:P.clipboardCursor},\"copy-icon\":{color:t.copyToClipboard,fontSize:P.iconFontSize,marginRight:P.iconMarginRight,verticalAlign:\"top\"},\"copy-icon-copied\":{color:t.copyToClipboardCheck,marginLeft:P.clipboardCheckMarginLeft},\"array-group-meta-data\":{display:\"inline-block\",padding:P.arrayGroupMetaPadding},\"object-meta-data\":{display:\"inline-block\",padding:P.metaDataPadding},\"icon-container\":{display:\"inline-block\",width:P.iconContainerWidth},tooltip:{padding:P.tooltipPadding},removeVarIcon:{verticalAlign:\"top\",display:\"inline-block\",color:t.editVariable.removeIcon,cursor:P.iconCursor,fontSize:P.iconFontSize,marginRight:P.iconMarginRight},addVarIcon:{verticalAlign:\"top\",display:\"inline-block\",color:t.editVariable.addIcon,cursor:P.iconCursor,fontSize:P.iconFontSize,marginRight:P.iconMarginRight},editVarIcon:{verticalAlign:\"top\",display:\"inline-block\",color:t.editVariable.editIcon,cursor:P.iconCursor,fontSize:P.iconFontSize,marginRight:P.iconMarginRight},\"edit-icon-container\":{display:\"inline-block\",verticalAlign:\"top\"},\"check-icon\":{display:\"inline-block\",cursor:P.iconCursor,color:t.editVariable.checkIcon,fontSize:P.iconFontSize,paddingRight:P.iconPaddingRight},\"cancel-icon\":{display:\"inline-block\",cursor:P.iconCursor,color:t.editVariable.cancelIcon,fontSize:P.iconFontSize,paddingRight:P.iconPaddingRight},\"edit-input\":{display:\"inline-block\",minWidth:P.editInputMinWidth,borderRadius:P.editInputBorderRadius,backgroundColor:t.editVariable.background,color:t.editVariable.color,padding:P.editInputPadding,marginRight:P.editInputMarginRight,fontFamily:P.editInputFontFamily},\"detected-row\":{paddingTop:P.detectedRowPaddingTop},\"key-modal-request\":{position:P.addKeyCoverPosition,top:P.addKeyCoverPositionPx,left:P.addKeyCoverPositionPx,right:P.addKeyCoverPositionPx,bottom:P.addKeyCoverPositionPx,backgroundColor:P.addKeyCoverBackground},\"key-modal\":{width:P.addKeyModalWidth,backgroundColor:t.addKeyModal.background,marginLeft:P.addKeyModalMargin,marginRight:P.addKeyModalMargin,padding:P.addKeyModalPadding,borderRadius:P.addKeyModalRadius,marginTop:\"15px\",position:\"relative\"},\"key-modal-label\":{color:t.addKeyModal.labelColor,marginLeft:\"2px\",marginBottom:\"5px\",fontSize:\"11px\"},\"key-modal-input-container\":{overflow:\"hidden\"},\"key-modal-input\":{width:\"100%\",padding:\"3px 6px\",fontFamily:\"monospace\",color:t.addKeyModal.color,border:\"none\",boxSizing:\"border-box\",borderRadius:\"2px\"},\"key-modal-cancel\":{backgroundColor:t.editVariable.removeIcon,position:\"absolute\",top:\"0px\",right:\"0px\",borderRadius:\"0px 3px 0px 3px\",cursor:\"pointer\"},\"key-modal-cancel-icon\":{color:t.addKeyModal.labelColor,fontSize:P.iconFontSize,transform:\"rotate(45deg)\"},\"key-modal-submit\":{color:t.editVariable.addIcon,fontSize:P.iconFontSize,position:\"absolute\",right:\"2px\",top:\"3px\",cursor:\"pointer\"},\"function-ellipsis\":{display:\"inline-block\",color:t.ellipsisColor,fontSize:P.ellipsisFontSize,lineHeight:P.ellipsisLineHeight,cursor:P.ellipsisCursor},\"validation-failure\":{float:\"right\",padding:\"3px 6px\",borderRadius:\"2px\",cursor:\"pointer\",color:t.validationFailure.fontColor,backgroundColor:t.validationFailure.background},\"validation-failure-label\":{marginRight:\"6px\"},\"validation-failure-clear\":{position:\"relative\",verticalAlign:\"top\",cursor:\"pointer\",color:t.validationFailure.iconColor,fontSize:P.iconFontSize,transform:\"rotate(45deg)\"},comma:{display:\"inline-block\",color:P.commaColor,fontSize:P.commaFontSize,marginRight:P.commaMarginRight,cursor:\"default\"}}},Qt=function(e){var t=M;return!1!==e&&\"none\"!==e||(t=F),$t(Gt,{defaultBase16:t})(e)};function Zt(e,t,n){return e||console.error(\"theme has not been set\"),Qt(e)(t,n)}var Xt=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props,t=e.typeName,n=e.displayDataTypes,a=e.theme;return n?v().createElement(\"span\",Object.assign({className:\"data-type-label\"},Zt(a,\"data-type-label\")),t):null}}])}(v().PureComponent),en=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props;return v().createElement(\"div\",Zt(e.theme,\"boolean\"),v().createElement(Xt,Object.assign({typeName:\"bool\"},e)),e.value?\"true\":\"false\")}}])}(v().PureComponent),tn=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props;return v().createElement(\"div\",Zt(e.theme,\"date\"),v().createElement(Xt,Object.assign({typeName:\"date\"},e)),v().createElement(\"span\",Object.assign({className:\"date-value\"},Zt(e.theme,\"date-value\")),e.value.toLocaleTimeString(\"en-us\",{weekday:\"short\",year:\"numeric\",month:\"short\",day:\"numeric\",hour:\"2-digit\",minute:\"2-digit\"})))}}])}(v().PureComponent),nn=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props;return v().createElement(\"div\",Zt(e.theme,\"float\"),v().createElement(Xt,Object.assign({typeName:\"float\"},e)),this.props.value)}}])}(v().PureComponent);var an=a(784),rn=function(){return l(function e(){i(this,e),this.handler=function(){}},[{key:\"register\",value:function(e){this.handler=e}},{key:\"dispatch\",value:function(e){var t;null===(t=this.handler)||void 0===t||t.call(this,e)}}])}();globalThis.__globalDispatcherInstance||(globalThis.__globalDispatcherInstance=new rn);const on=globalThis.__globalDispatcherInstance;var sn=\"updated_src\",cn=new(function(e){function t(){var e;i(this,t);for(var n=arguments.length,a=new Array(n),r=0;r<n;r++)a[r]=arguments[r];return(e=p(this,t,[].concat(a))).objects={},e.set=function(t,n,a,r){void 0===e.objects[t]&&(e.objects[t]={}),void 0===e.objects[t][n]&&(e.objects[t][n]={}),e.objects[t][n][a]=r},e.get=function(t,n,a,r){return void 0===e.objects[t]||void 0===e.objects[t][n]||void 0===e.objects[t][n][a]?r:e.objects[t][n][a]},e.handleAction=function(t){var n=t.rjvId,a=t.data;switch(t.name){case\"RESET\":e.emit(\"reset-\"+n);break;case\"VARIABLE_UPDATED\":t.data[sn]=e.updateSrc(n,a),e.set(n,\"action\",\"variable-update\",s(s({},a),{},{type:\"variable-edited\"})),e.emit(\"variable-update-\"+n);break;case\"VARIABLE_REMOVED\":t.data[sn]=e.updateSrc(n,a),e.set(n,\"action\",\"variable-update\",s(s({},a),{},{type:\"variable-removed\"})),e.emit(\"variable-update-\"+n);break;case\"VARIABLE_ADDED\":t.data[sn]=e.updateSrc(n,a),e.set(n,\"action\",\"variable-update\",s(s({},a),{},{type:\"variable-added\"})),e.emit(\"variable-update-\"+n);break;case\"ADD_VARIABLE_KEY_REQUEST\":e.set(n,\"action\",\"new-key-request\",a),e.emit(\"add-key-request-\"+n)}},e.updateSrc=function(t,n){var a=n.name,r=n.namespace,o=n.new_value,s=n.variable_removed;r.shift();var i,c=e.get(t,\"global\",\"src\"),l=e.deepCopy(c,O(r)),u=l,b=function(e,t){var n=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!n){if(Array.isArray(e)||(n=x(e))||t&&e&&\"number\"==typeof e.length){n&&(e=n);var a=0,r=function(){};return{s:r,n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var o,s=!0,i=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return s=e.done,e},e:function(e){i=!0,o=e},f:function(){try{s||null==n.return||n.return()}finally{if(i)throw o}}}}(r);try{for(b.s();!(i=b.n()).done;){u=u[i.value]}}catch(e){b.e(e)}finally{b.f()}return s?\"array\"===S(u)?u.splice(a,1):delete u[a]:null!==a?u[a]=o:l=o,e.set(t,\"global\",\"src\",l),l},e.deepCopy=function(t,n){var a,r=S(t),o=n.shift();return\"array\"===r?a=O(t):\"object\"===r&&(a=s({},t)),void 0!==o&&(a[o]=e.deepCopy(t[o],n)),a},e}return f(t,e),l(t)}(an.EventEmitter));on.register(cn.handleAction.bind(cn));const ln=cn;var un=function(e){function t(e){var n;return i(this,t),(n=p(this,t,[e])).handleToggleCollapsed=function(){n.setState({collapsed:!n.state.collapsed},function(){ln.set(n.props.rjvId,n.props.namespace,\"collapsed\",n.state.collapsed)})},n.getFunctionDisplay=function(e){var t=n.props;return e?v().createElement(\"span\",null,n.props.value.toString().slice(9,-1).replace(/\\{[\\s\\S]+/,\"\"),v().createElement(\"span\",{className:\"function-collapsed\",style:{fontWeight:\"bold\"}},v().createElement(\"span\",null,\"{\"),v().createElement(\"span\",Zt(t.theme,\"ellipsis\"),\"...\"),v().createElement(\"span\",null,\"}\"))):n.props.value.toString().slice(9,-1)},n.state={collapsed:ln.get(e.rjvId,e.namespace,\"collapsed\",!0)},n}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props,t=this.state.collapsed;return v().createElement(\"div\",Zt(e.theme,\"function\"),v().createElement(Xt,Object.assign({typeName:\"function\"},e)),v().createElement(\"span\",Object.assign({},Zt(e.theme,\"function-value\"),{className:\"rjv-function-container\",onClick:this.handleToggleCollapsed}),this.getFunctionDisplay(t)))}}])}(v().PureComponent),bn=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){return v().createElement(\"div\",Zt(this.props.theme,\"nan\"),\"NaN\")}}])}(v().PureComponent),dn=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){return v().createElement(\"div\",Zt(this.props.theme,\"null\"),\"NULL\")}}])}(v().PureComponent),pn=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props;return v().createElement(\"div\",Zt(e.theme,\"integer\"),v().createElement(Xt,Object.assign({typeName:\"int\"},e)),this.props.value)}}])}(v().PureComponent),hn=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props;return v().createElement(\"div\",Zt(e.theme,\"regexp\"),v().createElement(Xt,Object.assign({typeName:\"regexp\"},e)),this.props.value.toString())}}])}(v().PureComponent),fn=function(e){function t(e){var n;return i(this,t),(n=p(this,t,[e])).handleToggleCollapsed=function(){n.setState({collapsed:!n.state.collapsed},function(){ln.set(n.props.rjvId,n.props.namespace,\"collapsed\",n.state.collapsed)})},n.state={collapsed:ln.get(e.rjvId,e.namespace,\"collapsed\",!0)},n}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.state.collapsed,t=this.props,n=t.collapseStringsAfterLength,a=t.theme,r=t.escapeStrings,o=t.value,s=\"integer\"===S(n),i={style:{cursor:\"default\",wordBreak:\"break-all\"}};return r&&(o=A(o)),s&&o.length>n&&(i.style.cursor=\"pointer\",e&&(o=v().createElement(\"span\",null,o.substring(0,n),v().createElement(\"span\",Zt(a,\"ellipsis\"),\" ...\")))),v().createElement(\"div\",Zt(a,\"string\"),v().createElement(Xt,Object.assign({typeName:\"string\"},t)),v().createElement(\"span\",Object.assign({className:\"string-value\"},i,{onClick:this.handleToggleCollapsed}),'\"',o,'\"'))}}])}(v().PureComponent),mn=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){return v().createElement(\"div\",Zt(this.props.theme,\"undefined\"),\"undefined\")}}])}(v().PureComponent),vn=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props;return v().createElement(\"div\",Zt(e.theme,\"bigNumber\"),v().createElement(Xt,Object.assign({typeName:\"bigNumber\"},e)),this.props.value.toString())}}])}(v().PureComponent);function gn(){return gn=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)({}).hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},gn.apply(null,arguments)}var yn=m.useLayoutEffect,En=function(e,t){\"function\"!=typeof e?e.current=t:e(t)},kn={\"min-height\":\"0\",\"max-height\":\"none\",height:\"0\",visibility:\"hidden\",overflow:\"hidden\",position:\"absolute\",\"z-index\":\"-1000\",top:\"0\",right:\"0\",display:\"block\"},jn=function(e){Object.keys(kn).forEach(function(t){e.style.setProperty(t,kn[t],\"important\")})},wn=null,Cn=function(e,t){var n=e.scrollHeight;return\"border-box\"===t.sizingStyle.boxSizing?n+t.borderSize:n-t.paddingSize};var xn=function(){},On=[\"borderBottomWidth\",\"borderLeftWidth\",\"borderRightWidth\",\"borderTopWidth\",\"boxSizing\",\"fontFamily\",\"fontSize\",\"fontStyle\",\"fontWeight\",\"letterSpacing\",\"lineHeight\",\"paddingBottom\",\"paddingLeft\",\"paddingRight\",\"paddingTop\",\"tabSize\",\"textIndent\",\"textRendering\",\"textTransform\",\"width\",\"wordBreak\",\"wordSpacing\",\"scrollbarGutter\"],Sn=!!document.documentElement.currentStyle,An=function(e){var t=window.getComputedStyle(e);if(null===t)return null;var n,a=(n=t,On.reduce(function(e,t){return e[t]=n[t],e},{})),r=a.boxSizing;return\"\"===r?null:(Sn&&\"border-box\"===r&&(a.width=parseFloat(a.width)+parseFloat(a.borderRightWidth)+parseFloat(a.borderLeftWidth)+parseFloat(a.paddingRight)+parseFloat(a.paddingLeft)+\"px\"),{sizingStyle:a,paddingSize:parseFloat(a.paddingBottom)+parseFloat(a.paddingTop),borderSize:parseFloat(a.borderBottomWidth)+parseFloat(a.borderTopWidth)})};function _n(e,t,n){var a,r,o=(a=n,r=v().useRef(a),yn(function(){r.current=a}),r);m.useLayoutEffect(function(){var n=function(e){return o.current(e)};if(e)return e.addEventListener(t,n),function(){return e.removeEventListener(t,n)}},[])}var Mn=[\"cacheMeasurements\",\"maxRows\",\"minRows\",\"onChange\",\"onHeightChange\"],Fn=function(e,t){var n=e.cacheMeasurements,a=e.maxRows,r=e.minRows,o=e.onChange,s=void 0===o?xn:o,i=e.onHeightChange,c=void 0===i?xn:i,l=j(e,Mn),u=void 0!==l.value,b=m.useRef(null),d=function(e,t){var n=v().useRef();return v().useCallback(function(a){e.current=a,n.current&&En(n.current,null),n.current=t,t&&En(t,a)},[t])}(b,t),p=m.useRef(0),h=m.useRef(),f=function(){var e=b.current,t=n&&h.current?h.current:An(e);if(t){h.current=t;var o=function(e,t,n,a){void 0===n&&(n=1),void 0===a&&(a=1/0),wn||((wn=document.createElement(\"textarea\")).setAttribute(\"tabindex\",\"-1\"),wn.setAttribute(\"aria-hidden\",\"true\"),jn(wn)),null===wn.parentNode&&document.body.appendChild(wn);var r=e.paddingSize,o=e.borderSize,s=e.sizingStyle,i=s.boxSizing;Object.keys(s).forEach(function(e){var t=e;wn.style[t]=s[t]}),jn(wn),wn.value=t;var c=Cn(wn,e);wn.value=t,c=Cn(wn,e),wn.value=\"x\";var l=wn.scrollHeight-r,u=l*n;\"border-box\"===i&&(u=u+r+o),c=Math.max(u,c);var b=l*a;return\"border-box\"===i&&(b=b+r+o),[c=Math.min(b,c),l]}(t,e.value||e.placeholder||\"x\",r,a),s=o[0],i=o[1];p.current!==s&&(p.current=s,e.style.setProperty(\"height\",s+\"px\",\"important\"),c(s,{rowHeight:i}))}};return m.useLayoutEffect(f),function(e,t){_n(document.body,\"reset\",function(n){e.current.form===n.target&&t(n)})}(b,function(){if(!u){var e=b.current.value;requestAnimationFrame(function(){var t=b.current;t&&e!==t.value&&f()})}}),_n(window,\"resize\",f),function(e){_n(document.fonts,\"loadingdone\",e)}(f),m.createElement(\"textarea\",gn({},l,{onChange:function(e){u||f(),s(e)},ref:d}))},Pn=m.forwardRef(Fn);function Rn(e,t){e=e.trim();try{if(\"[\"===(e=structuredClone(e))[0])return Dn(\"array\",JSON.parse(e));if(\"{\"===e[0])return Dn(\"object\",JSON.parse(e));if(e.match(/-?\\d+\\.\\d+/)&&e.match(/-?\\d+\\.\\d+/)[0]===e)return t&&parseFloat(e).toString()!==e?Dn(\"bigNumber\",e):Dn(\"float\",parseFloat(e));if(e.match(/-?\\d+e-\\d+/)&&e.match(/-?\\d+e-\\d+/)[0]===e)return Dn(\"float\",Number(e));if(e.match(/-?\\d+/)&&e.match(/-?\\d+/)[0]===e)return t&&parseInt(e).toString()!==e?Dn(\"bigNumber\",e):Dn(\"integer\",parseInt(e));if(e.match(/-?\\d+e\\+\\d+/)&&e.match(/-?\\d+e\\+\\d+/)[0]===e)return Dn(\"integer\",Number(e))}catch(e){}switch(e=e.toLowerCase()){case\"undefined\":return Dn(\"undefined\",void 0);case\"nan\":return Dn(\"nan\",NaN);case\"null\":return Dn(\"null\",null);case\"true\":return Dn(\"boolean\",!0);case\"false\":return Dn(\"boolean\",!1);default:if(e=Date.parse(e))return Dn(\"date\",new Date(e))}return Dn(!1,null)}function Dn(e,t){return{type:e,value:t}}const Nn=function(e,t){var n;switch(S(e,t)){case\"undefined\":n=\"undefined\";break;case\"nan\":n=\"NaN\";break;case\"string\":n=e;break;case\"bigNumber\":case\"date\":case\"function\":case\"regexp\":n=e.toString();break;default:try{n=JSON.stringify(e,null,\" \")}catch(e){n=\"\"}}return n};(Object.getOwnPropertyDescriptor(Nn,\"name\")||{}).writable||Object.defineProperty(Nn,\"name\",{value:\"default\",configurable:!0});var In=[\"style\"],Bn=[\"style\"],zn=[\"style\"],Ln=[\"style\"],qn=[\"style\"],Tn=[\"style\"],Vn=[\"style\"],Kn=[\"style\"],Wn=[\"style\"],Un=[\"style\"],Hn=[\"style\"],$n=[\"style\"],Jn=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props,t=e.style,n=w(e,In);return v().createElement(\"span\",n,v().createElement(\"svg\",Object.assign({},sa(t),{viewBox:\"0 0 24 24\",fill:\"currentColor\",preserveAspectRatio:\"xMidYMid meet\"}),v().createElement(\"path\",{d:\"M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M7,13H17V11H7\"})))}}])}(v().PureComponent),Yn=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props,t=e.style,n=w(e,Bn);return v().createElement(\"span\",n,v().createElement(\"svg\",Object.assign({},sa(t),{viewBox:\"0 0 24 24\",fill:\"currentColor\",preserveAspectRatio:\"xMidYMid meet\"}),v().createElement(\"path\",{d:\"M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M13,7H11V11H7V13H11V17H13V13H17V11H13V7Z\"})))}}])}(v().PureComponent),Gn=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props,t=e.style,n=w(e,zn),a=sa(t).style;return v().createElement(\"span\",n,v().createElement(\"svg\",{fill:a.color,width:a.height,height:a.width,style:a,viewBox:\"0 0 1792 1792\"},v().createElement(\"path\",{d:\"M1344 800v64q0 14-9 23t-23 9h-832q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h832q14 0 23 9t9 23zm128 448v-832q0-66-47-113t-113-47h-832q-66 0-113 47t-47 113v832q0 66 47 113t113 47h832q66 0 113-47t47-113zm128-832v832q0 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119 84.5-203.5t203.5-84.5h832q119 0 203.5 84.5t84.5 203.5z\"})))}}])}(v().PureComponent),Qn=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props,t=e.style,n=w(e,Ln),a=sa(t).style;return v().createElement(\"span\",n,v().createElement(\"svg\",{fill:a.color,width:a.height,height:a.width,style:a,viewBox:\"0 0 1792 1792\"},v().createElement(\"path\",{d:\"M1344 800v64q0 14-9 23t-23 9h-352v352q0 14-9 23t-23 9h-64q-14 0-23-9t-9-23v-352h-352q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h352v-352q0-14 9-23t23-9h64q14 0 23 9t9 23v352h352q14 0 23 9t9 23zm128 448v-832q0-66-47-113t-113-47h-832q-66 0-113 47t-47 113v832q0 66 47 113t113 47h832q66 0 113-47t47-113zm128-832v832q0 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119 84.5-203.5t203.5-84.5h832q119 0 203.5 84.5t84.5 203.5z\"})))}}])}(v().PureComponent),Zn=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props,t=e.style,n=w(e,qn);return v().createElement(\"span\",n,v().createElement(\"svg\",{style:s(s({},sa(t).style),{},{paddingLeft:\"2px\",verticalAlign:\"top\"}),viewBox:\"0 0 15 15\",fill:\"currentColor\"},v().createElement(\"path\",{d:\"M0 14l6-6-6-6z\"})))}}])}(v().PureComponent),Xn=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props,t=e.style,n=w(e,Tn);return v().createElement(\"span\",n,v().createElement(\"svg\",{style:s(s({},sa(t).style),{},{paddingLeft:\"2px\",verticalAlign:\"top\"}),viewBox:\"0 0 15 15\",fill:\"currentColor\"},v().createElement(\"path\",{d:\"M0 5l6 6 6-6z\"})))}}])}(v().PureComponent),ea=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props,t=e.style,n=w(e,Vn);return v().createElement(\"span\",n,v().createElement(\"svg\",Object.assign({},sa(t),{viewBox:\"0 0 40 40\",fill:\"currentColor\",preserveAspectRatio:\"xMidYMid meet\"}),v().createElement(\"g\",null,v().createElement(\"path\",{d:\"m30 35h-25v-22.5h25v7.5h2.5v-12.5c0-1.4-1.1-2.5-2.5-2.5h-7.5c0-2.8-2.2-5-5-5s-5 2.2-5 5h-7.5c-1.4 0-2.5 1.1-2.5 2.5v27.5c0 1.4 1.1 2.5 2.5 2.5h25c1.4 0 2.5-1.1 2.5-2.5v-5h-2.5v5z m-20-27.5h2.5s2.5-1.1 2.5-2.5 1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5 1.3 2.5 2.5 2.5h2.5s2.5 1.1 2.5 2.5h-20c0-1.5 1.1-2.5 2.5-2.5z m-2.5 20h5v-2.5h-5v2.5z m17.5-5v-5l-10 7.5 10 7.5v-5h12.5v-5h-12.5z m-17.5 10h7.5v-2.5h-7.5v2.5z m12.5-17.5h-12.5v2.5h12.5v-2.5z m-7.5 5h-5v2.5h5v-2.5z\"}))))}}])}(v().PureComponent),ta=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props,t=e.style,n=w(e,Kn);return v().createElement(\"span\",n,v().createElement(\"svg\",Object.assign({},sa(t),{viewBox:\"0 0 40 40\",fill:\"currentColor\",preserveAspectRatio:\"xMidYMid meet\"}),v().createElement(\"g\",null,v().createElement(\"path\",{d:\"m28.6 25q0-0.5-0.4-1l-4-4 4-4q0.4-0.5 0.4-1 0-0.6-0.4-1.1l-2-2q-0.4-0.4-1-0.4-0.6 0-1 0.4l-4.1 4.1-4-4.1q-0.4-0.4-1-0.4-0.6 0-1 0.4l-2 2q-0.5 0.5-0.5 1.1 0 0.5 0.5 1l4 4-4 4q-0.5 0.5-0.5 1 0 0.7 0.5 1.1l2 2q0.4 0.4 1 0.4 0.6 0 1-0.4l4-4.1 4.1 4.1q0.4 0.4 1 0.4 0.6 0 1-0.4l2-2q0.4-0.4 0.4-1z m8.7-5q0 4.7-2.3 8.6t-6.3 6.2-8.6 2.3-8.6-2.3-6.2-6.2-2.3-8.6 2.3-8.6 6.2-6.2 8.6-2.3 8.6 2.3 6.3 6.2 2.3 8.6z\"}))))}}])}(v().PureComponent),na=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props,t=e.style,n=w(e,Wn);return v().createElement(\"span\",n,v().createElement(\"svg\",Object.assign({},sa(t),{viewBox:\"0 0 40 40\",fill:\"currentColor\",preserveAspectRatio:\"xMidYMid meet\"}),v().createElement(\"g\",null,v().createElement(\"path\",{d:\"m30.1 21.4v-2.8q0-0.6-0.4-1t-1-0.5h-5.7v-5.7q0-0.6-0.4-1t-1-0.4h-2.9q-0.6 0-1 0.4t-0.4 1v5.7h-5.7q-0.6 0-1 0.5t-0.5 1v2.8q0 0.6 0.5 1t1 0.5h5.7v5.7q0 0.5 0.4 1t1 0.4h2.9q0.6 0 1-0.4t0.4-1v-5.7h5.7q0.6 0 1-0.5t0.4-1z m7.2-1.4q0 4.7-2.3 8.6t-6.3 6.2-8.6 2.3-8.6-2.3-6.2-6.2-2.3-8.6 2.3-8.6 6.2-6.2 8.6-2.3 8.6 2.3 6.3 6.2 2.3 8.6z\"}))))}}])}(v().PureComponent),aa=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props,t=e.style,n=w(e,Un);return v().createElement(\"span\",n,v().createElement(\"svg\",Object.assign({},sa(t),{viewBox:\"0 0 40 40\",fill:\"currentColor\",preserveAspectRatio:\"xMidYMid meet\"}),v().createElement(\"g\",null,v().createElement(\"path\",{d:\"m31.6 21.6h-10v10h-3.2v-10h-10v-3.2h10v-10h3.2v10h10v3.2z\"}))))}}])}(v().PureComponent),ra=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props,t=e.style,n=w(e,Hn);return v().createElement(\"span\",n,v().createElement(\"svg\",Object.assign({},sa(t),{viewBox:\"0 0 40 40\",fill:\"currentColor\",preserveAspectRatio:\"xMidYMid meet\"}),v().createElement(\"g\",null,v().createElement(\"path\",{d:\"m19.8 26.4l2.6-2.6-3.4-3.4-2.6 2.6v1.3h2.2v2.1h1.2z m9.8-16q-0.3-0.4-0.7 0l-7.8 7.8q-0.4 0.4 0 0.7t0.7 0l7.8-7.8q0.4-0.4 0-0.7z m1.8 13.2v4.3q0 2.6-1.9 4.5t-4.5 1.9h-18.6q-2.6 0-4.5-1.9t-1.9-4.5v-18.6q0-2.7 1.9-4.6t4.5-1.8h18.6q1.4 0 2.6 0.5 0.3 0.2 0.4 0.5 0.1 0.4-0.2 0.7l-1.1 1.1q-0.3 0.3-0.7 0.1-0.5-0.1-1-0.1h-18.6q-1.4 0-2.5 1.1t-1 2.5v18.6q0 1.4 1 2.5t2.5 1h18.6q1.5 0 2.5-1t1.1-2.5v-2.9q0-0.2 0.2-0.4l1.4-1.5q0.3-0.3 0.8-0.1t0.4 0.6z m-2.1-16.5l6.4 6.5-15 15h-6.4v-6.5z m9.9 3l-2.1 2-6.4-6.4 2.1-2q0.6-0.7 1.5-0.7t1.5 0.7l3.4 3.4q0.6 0.6 0.6 1.5t-0.6 1.5z\"}))))}}])}(v().PureComponent),oa=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props,t=e.style,n=w(e,$n);return v().createElement(\"span\",n,v().createElement(\"svg\",Object.assign({},sa(t),{viewBox:\"0 0 40 40\",fill:\"currentColor\",preserveAspectRatio:\"xMidYMid meet\"}),v().createElement(\"g\",null,v().createElement(\"path\",{d:\"m31.7 16.4q0-0.6-0.4-1l-2.1-2.1q-0.4-0.4-1-0.4t-1 0.4l-9.1 9.1-5-5q-0.5-0.4-1-0.4t-1 0.4l-2.1 2q-0.4 0.4-0.4 1 0 0.6 0.4 1l8.1 8.1q0.4 0.4 1 0.4 0.6 0 1-0.4l12.2-12.1q0.4-0.4 0.4-1z m5.6 3.6q0 4.7-2.3 8.6t-6.3 6.2-8.6 2.3-8.6-2.3-6.2-6.2-2.3-8.6 2.3-8.6 6.2-6.2 8.6-2.3 8.6 2.3 6.3 6.2 2.3 8.6z\"}))))}}])}(v().PureComponent);function sa(e){return e||(e={}),{style:s(s({verticalAlign:\"middle\"},e),{},{color:e.color?e.color:\"#000000\",height:\"1em\",width:\"1em\"})}}var ia=function(e){function t(e){var n;return i(this,t),(n=p(this,t,[e])).copiedTimer=null,n.copyToClipboardFallback=function(e){var t=document.createElement(\"textarea\");t.value=e,document.body.appendChild(t),t.select(),document.execCommand(\"copy\"),document.body.removeChild(t)},n.handleCopy=function(){var e=n.props,t=e.clickCallback,a=e.src,r=e.namespace,o=JSON.stringify(n.clipboardValue(a),null,\" \");navigator.clipboard?navigator.clipboard.writeText(o).catch(function(){n.copyToClipboardFallback(o)}):n.copyToClipboardFallback(o),n.copiedTimer=setTimeout(function(){n.setState({copied:!1})},5500),n.setState({copied:!0},function(){\"function\"==typeof t&&t({src:a,namespace:r,name:r[r.length-1]})})},n.getClippyIcon=function(){var e=n.props.theme;return n.state.copied?v().createElement(\"span\",null,v().createElement(ea,Object.assign({className:\"copy-icon\"},Zt(e,\"copy-icon\"))),v().createElement(\"span\",Zt(e,\"copy-icon-copied\"),\"✔\")):v().createElement(ea,Object.assign({className:\"copy-icon\"},Zt(e,\"copy-icon\")))},n.clipboardValue=function(e){switch(S(e)){case\"function\":case\"regexp\":return e.toString();default:return e}},n.state={copied:!1},n}return f(t,e),l(t,[{key:\"componentWillUnmount\",value:function(){this.copiedTimer&&(clearTimeout(this.copiedTimer),this.copiedTimer=null)}},{key:\"render\",value:function(){var e=this.props,t=e.theme,n=e.hidden,a=e.rowHovered,r=Zt(t,\"copy-to-clipboard\").style,o=\"inline\";return n&&(o=\"none\"),v().createElement(\"span\",{className:\"copy-to-clipboard-container\",title:\"Copy to clipboard\",style:{verticalAlign:\"top\",display:a?\"inline-block\":\"none\"}},v().createElement(\"span\",{style:s(s({},r),{},{display:o}),onClick:this.handleCopy},this.getClippyIcon()))}}])}(v().PureComponent);const ca=function(e){function t(e){var n;return i(this,t),(n=p(this,t,[e])).handleSelect=function(e){var t=n.props,a=t.variable,r=t.namespace,o=t.onEdit,i=t.onSelect,c=t.keyModifier,l=O(r);c(e,\"edit\")&&!1!==o?n.prepopInput(a):!1!==i&&(l.shift(),i(s(s({},a),{},{namespace:l})))},n.getEditIcon=function(){var e=n.props,t=e.variable,a=e.theme;return v().createElement(\"div\",{className:\"click-to-edit\",style:{verticalAlign:\"top\",display:n.state.hovered?\"inline-block\":\"none\"}},v().createElement(ra,Object.assign({className:\"click-to-edit-icon\"},Zt(a,\"editVarIcon\"),{onClick:function(){n.prepopInput(t)}})))},n.prepopInput=function(e){if(!1!==n.props.onEdit){var t=Nn(e.value,n.props.bigNumber),a=Rn(t,n.props.bigNumber);n.setState({editMode:!0,editValue:t,parsedInput:{type:a.type,value:a.value}})}},n.getRemoveIcon=function(){var e=n.props,t=e.variable,a=e.namespace,r=e.theme,o=e.rjvId;return v().createElement(\"div\",{className:\"click-to-remove\",style:{verticalAlign:\"top\",display:n.state.hovered?\"inline-block\":\"none\"}},v().createElement(ta,Object.assign({className:\"click-to-remove-icon\"},Zt(r,\"removeVarIcon\"),{onClick:function(){on.dispatch({name:\"VARIABLE_REMOVED\",rjvId:o,data:{name:t.name,namespace:a,existing_value:t.value,variable_removed:!0}})}})))},n.getValue=function(e,t){var a=!t&&e.type,r=n.props;switch(a){case!1:return n.getEditInput();case\"string\":return v().createElement(fn,Object.assign({value:e.value},r));case\"integer\":return v().createElement(pn,Object.assign({value:e.value},r));case\"float\":return v().createElement(nn,Object.assign({value:e.value},r));case\"boolean\":return v().createElement(en,Object.assign({value:e.value},r));case\"function\":return v().createElement(un,Object.assign({value:e.value},r));case\"null\":return v().createElement(dn,r);case\"nan\":return v().createElement(bn,r);case\"undefined\":return v().createElement(mn,r);case\"date\":return v().createElement(tn,Object.assign({value:e.value},r));case\"regexp\":return v().createElement(hn,Object.assign({value:e.value},r));case\"bigNumber\":return v().createElement(vn,Object.assign({value:e.value},r));case\"circularReference\":return v().createElement(JsonCircularReference,Object.assign({value:e.value},r));default:var o=\"\";try{o=JSON.stringify(e.value)}catch(e){o=\"\"}return v().createElement(\"div\",{className:\"object-value\"},o)}},n.getEditInput=function(){var e=n.props,t=e.keyModifier,a=e.selectOnFocus,r=e.theme,o=n.state.editValue;return v().createElement(\"div\",null,v().createElement(Pn,Object.assign({type:\"text\",ref:function(e){e&&e[a?\"select\":\"focus\"]()},value:o,className:\"variable-editor\",onChange:function(e){var t=e.target.value,a=Rn(t,n.props.bigNumber);n.setState({editValue:t,parsedInput:{type:a.type,value:a.value}})},onKeyDown:function(e){switch(e.key){case\"Escape\":n.setState({editMode:!1,editValue:\"\"});break;case\"Enter\":t(e,\"submit\")&&n.submitEdit(!0)}e.stopPropagation()},placeholder:\"update this value\",minRows:2},Zt(r,\"edit-input\"))),v().createElement(\"div\",Zt(r,\"edit-icon-container\"),v().createElement(ta,Object.assign({className:\"edit-cancel\"},Zt(r,\"cancel-icon\"),{onClick:function(e){e&&e.stopPropagation(),n.setState({editMode:!1,editValue:\"\"})}})),v().createElement(oa,Object.assign({className:\"edit-check string-value\"},Zt(r,\"check-icon\"),{onClick:function(e){e&&e.stopPropagation(),n.submitEdit()}})),v().createElement(\"div\",null,n.showDetected())))},n.submitEdit=function(e){var t=n.props,a=t.variable,r=t.namespace,o=t.rjvId,s=t.bigNumber,i=n.state,c=i.editValue,l=i.parsedInput,u=c;e&&l.type&&(u=l.value,s&&\"bigNumber\"===l.type&&(u=new s(u))),n.setState({editMode:!1}),on.dispatch({name:\"VARIABLE_UPDATED\",rjvId:o,data:{name:a.name,namespace:r,existing_value:a.value,new_value:u,variable_removed:!1}})},n.showDetected=function(){var e=n.props.theme,t=n.getDetectedInput();if(t)return v().createElement(\"div\",null,v().createElement(\"div\",Zt(e,\"detected-row\"),t,v().createElement(oa,{className:\"edit-check detected\",style:s({verticalAlign:\"top\",paddingLeft:\"3px\"},Zt(e,\"check-icon\").style),onClick:function(e){e&&e.stopPropagation(),n.submitEdit(!0)}})))},n.getDetectedInput=function(){var e=n.state.parsedInput,t=e.type,a=e.value,r=n.props,o=r.theme;if(!1!==t)switch(t.toLowerCase()){case\"object\":return v().createElement(\"span\",null,v().createElement(\"span\",{style:s(s({},Zt(o,\"brace\").style),{},{cursor:\"default\"})},\"{\"),v().createElement(\"span\",{style:s(s({},Zt(o,\"ellipsis\").style),{},{cursor:\"default\"})},\"...\"),v().createElement(\"span\",{style:s(s({},Zt(o,\"brace\").style),{},{cursor:\"default\"})},\"}\"));case\"array\":return v().createElement(\"span\",null,v().createElement(\"span\",{style:s(s({},Zt(o,\"brace\").style),{},{cursor:\"default\"})},\"[\"),v().createElement(\"span\",{style:s(s({},Zt(o,\"ellipsis\").style),{},{cursor:\"default\"})},\"...\"),v().createElement(\"span\",{style:s(s({},Zt(o,\"brace\").style),{},{cursor:\"default\"})},\"]\"));case\"string\":return v().createElement(fn,Object.assign({value:a},r));case\"integer\":return v().createElement(pn,Object.assign({value:a},r));case\"float\":return v().createElement(nn,Object.assign({value:a},r));case\"boolean\":return v().createElement(en,Object.assign({value:a},r));case\"function\":return v().createElement(un,Object.assign({value:a},r));case\"null\":return v().createElement(dn,r);case\"nan\":return v().createElement(bn,r);case\"undefined\":return v().createElement(mn,r);case\"date\":return v().createElement(tn,Object.assign({value:new Date(a)},r));case\"bignumber\":return v().createElement(vn,Object.assign({value:a},r));case\"circularreference\":return v().createElement(JsonCircularReference,Object.assign({value:variable.value},r))}},n.state={editMode:!1,editValue:\"\",hovered:!1,renameKey:!1,parsedInput:{type:!1,value:null}},n}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this,t=this.props,n=t.variable,a=t.singleIndent,r=t.type,o=t.theme,i=t.namespace,c=t.indentWidth,l=t.enableClipboard,u=t.onEdit,b=t.onDelete,d=t.onSelect,p=t.displayArrayKey,h=t.quotesOnKeys,f=t.showComma,m=t.isLast,g=this.state.editMode,y=!1!==d||!1!==u;return v().createElement(\"div\",Object.assign({},Zt(o,\"objectKeyVal\",{paddingLeft:c*a}),{onMouseEnter:function(){return e.setState(s(s({},e.state),{},{hovered:!0}))},onMouseLeave:function(){return e.setState(s(s({},e.state),{},{hovered:!1}))},className:\"variable-row\",key:n.name}),\"array\"===r?p?v().createElement(\"span\",Object.assign({},Zt(o,\"array-key\"),{key:n.name+\"_\"+i}),n.name,v().createElement(\"div\",Zt(o,\"colon\"),\":\")):null:v().createElement(\"span\",null,v().createElement(\"span\",Object.assign({},Zt(o,\"object-name\"),{className:\"object-key\",key:n.name+\"_\"+i,onClick:y?this.handleSelect:null}),!!h&&v().createElement(\"span\",{style:{verticalAlign:\"top\"}},'\"'),v().createElement(\"span\",{style:{display:\"inline-block\"}},A(n.name)),!!h&&v().createElement(\"span\",{style:{verticalAlign:\"top\"}},'\"')),v().createElement(\"span\",Zt(o,\"colon\"),\":\")),v().createElement(\"div\",Object.assign({className:\"variable-value\",onClick:y?this.handleSelect:null},Zt(o,\"variableValue\",{cursor:!1===d?\"default\":\"pointer\"})),this.getValue(n,g)),f&&!m&&v().createElement(\"span\",Zt(o,\"comma\"),\",\"),l?v().createElement(ia,{rowHovered:this.state.hovered,hidden:g,src:n.value,clickCallback:l,theme:o,namespace:[].concat(O(i),[n.name])}):null,!1!==u&&!1===g?this.getEditIcon():null,!1!==b&&!1===g?this.getRemoveIcon():null)}}])}(v().PureComponent);var la=function(e){function t(){var e;i(this,t);for(var n=arguments.length,a=new Array(n),r=0;r<n;r++)a[r]=arguments[r];return(e=p(this,t,[].concat(a))).getObjectSize=function(){var t=e.props,n=t.size,a=t.theme;if(t.displayObjectSize)return v().createElement(\"span\",Object.assign({className:\"object-size\"},Zt(a,\"object-size\")),n,\" item\",1===n?\"\":\"s\")},e.getAddAttribute=function(t){var n=e.props,a=n.theme,r=n.namespace,o=n.name,i=n.src,c=n.rjvId,l=n.depth;return v().createElement(\"span\",{className:\"click-to-add\",style:{verticalAlign:\"top\",display:t?\"inline-block\":\"none\"}},v().createElement(na,Object.assign({className:\"click-to-add-icon\"},Zt(a,\"addVarIcon\"),{onClick:function(){var e={name:l>0?o:null,namespace:r.splice(0,r.length-1),existing_value:i,variable_removed:!1,key_name:null};\"object\"===S(i)?on.dispatch({name:\"ADD_VARIABLE_KEY_REQUEST\",rjvId:c,data:e}):on.dispatch({name:\"VARIABLE_ADDED\",rjvId:c,data:s(s({},e),{},{new_value:[].concat(O(i),[null])})})}})))},e.getRemoveObject=function(t){var n=e.props,a=n.theme,r=n.namespace,o=n.name,s=n.src,i=n.rjvId;if(1!==r.length)return v().createElement(\"span\",{className:\"click-to-remove\",style:{display:t?\"inline-block\":\"none\"}},v().createElement(ta,Object.assign({className:\"click-to-remove-icon\"},Zt(a,\"removeVarIcon\"),{onClick:function(){on.dispatch({name:\"VARIABLE_REMOVED\",rjvId:i,data:{name:o,namespace:r.splice(0,r.length-1),existing_value:s,variable_removed:!0}})}})))},e.render=function(){var t=e.props,n=t.theme,a=t.onDelete,r=t.onAdd,o=t.enableClipboard,s=t.src,i=t.namespace,c=t.rowHovered;return v().createElement(\"div\",Object.assign({},Zt(n,\"object-meta-data\"),{className:\"object-meta-data\",onClick:function(e){e.stopPropagation()}}),e.getObjectSize(),o?v().createElement(ia,{rowHovered:c,clickCallback:o,src:s,theme:n,namespace:i}):null,!1!==r?e.getAddAttribute(c):null,!1!==a?e.getRemoveObject(c):null)},e}return f(t,e),l(t)}(v().PureComponent);function ua(e){var t=e.parent_type,n=e.namespace,a=e.quotesOnKeys,r=e.theme,o=e.jsvRoot,s=e.name,i=e.displayArrayKey,c=e.onKeyClick,l=e.name?e.name:\"\",u=\"function\"==typeof c?c:null;return!o||!1!==s&&null!==s?\"array\"===t?i?v().createElement(\"span\",Object.assign({},Zt(r,\"array-key\"),{key:n,onClick:u}),v().createElement(\"span\",{className:\"array-key\"},l),v().createElement(\"span\",Zt(r,\"colon\"),\":\")):v().createElement(\"span\",null):v().createElement(\"span\",Object.assign({},Zt(r,\"object-name\"),{key:n,onClick:u}),v().createElement(\"span\",{className:\"object-key\"},a&&v().createElement(\"span\",{style:{verticalAlign:\"top\"}},'\"'),v().createElement(\"span\",null,l),a&&v().createElement(\"span\",{style:{verticalAlign:\"top\"}},'\"')),v().createElement(\"span\",Zt(r,\"colon\"),\":\")):v().createElement(\"span\",null)}function ba(e){var t=e.theme;switch(e.iconStyle){case\"triangle\":return v().createElement(Xn,Object.assign({},Zt(t,\"expanded-icon\"),{className:\"expanded-icon\"}));case\"square\":return v().createElement(Gn,Object.assign({},Zt(t,\"expanded-icon\"),{className:\"expanded-icon\"}));default:return v().createElement(Jn,Object.assign({},Zt(t,\"expanded-icon\"),{className:\"expanded-icon\"}))}}function da(e){var t=e.theme;switch(e.iconStyle){case\"triangle\":return v().createElement(Zn,Object.assign({},Zt(t,\"collapsed-icon\"),{className:\"collapsed-icon\"}));case\"square\":return v().createElement(Qn,Object.assign({},Zt(t,\"collapsed-icon\"),{className:\"collapsed-icon\"}));default:return v().createElement(Yn,Object.assign({},Zt(t,\"collapsed-icon\"),{className:\"collapsed-icon\"}))}}var pa=[\"src\",\"groupArraysAfterLength\",\"depth\",\"name\",\"theme\",\"jsvRoot\",\"namespace\"],ha=function(e){function t(e){var n;return i(this,t),(n=p(this,t,[e])).toggleCollapsed=function(e){for(var t=n.state.expanded,a=[],r=Math.max(t.length||0,e+1),o=0;o<r;o++)a[o]=!0===t[o];a[e]=!a[e],n.setState({expanded:a})},n.handleKeySelect=function(){var e=n.props,t=e.name,a=e.namespace,r=e.onSelect,o=e.src;if(\"function\"==typeof r){var s=O(a);s.shift(),s.length>0&&s.pop(),r({name:t,value:o,type:\"array\",namespace:s})}},n.state={expanded:[]},n}return f(t,e),l(t,[{key:\"getExpandedIcon\",value:function(e){var t=this.props,n=t.theme,a=t.iconStyle;return this.state.expanded[e]?v().createElement(ba,{theme:n,iconStyle:a}):v().createElement(da,{theme:n,iconStyle:a})}},{key:\"render\",value:function(){var e=this,t=this.props,n=t.src,a=t.groupArraysAfterLength,r=(t.depth,t.name),o=t.theme,s=t.jsvRoot,i=t.namespace,c=w(t,pa),l=0,u=5*this.props.indentWidth;s||(l=5*this.props.indentWidth);var b=a,d=Math.ceil(n.length/b);return v().createElement(\"div\",Object.assign({className:\"object-key-val\"},Zt(o,s?\"jsv-root\":\"objectKeyVal\",{paddingLeft:l})),v().createElement(ua,Object.assign({},this.props,{onKeyClick:this.handleKeySelect})),v().createElement(\"span\",null,v().createElement(la,Object.assign({size:n.length},this.props))),O(Array(d)).map(function(t,a){return v().createElement(\"div\",Object.assign({key:a,className:\"object-key-val array-group\"},Zt(o,\"objectKeyVal\",{marginLeft:6,paddingLeft:u})),v().createElement(\"span\",Zt(o,\"brace-row\"),v().createElement(\"div\",Object.assign({className:\"icon-container\"},Zt(o,\"icon-container\"),{onClick:function(t){e.toggleCollapsed(a)}}),e.getExpandedIcon(a)),e.state.expanded[a]?v().createElement(ga,Object.assign({key:r+a,depth:0,name:!1,collapsed:!1,groupArraysAfterLength:b,index_offset:a*b,src:n.slice(a*b,a*b+b),namespace:i,type:\"array\",parent_type:\"array_group\",theme:o,showComma:e.props.showComma,isLast:a===d-1},c)):v().createElement(\"span\",Object.assign({},Zt(o,\"brace\"),{onClick:function(t){e.toggleCollapsed(a)},className:\"array-group-brace\"}),\"[\",v().createElement(\"div\",Object.assign({},Zt(o,\"array-group-meta-data\"),{className:\"array-group-meta-data\"}),v().createElement(\"span\",Object.assign({className:\"object-size\"},Zt(o,\"object-size\")),a*b,\" - \",a*b+b-1>n.length?n.length-1:a*b+b-1)),\"]\")))}))}}])}(v().PureComponent),fa=[\"depth\",\"src\",\"namespace\",\"name\",\"type\",\"parent_type\",\"theme\",\"jsvRoot\",\"iconStyle\",\"showComma\",\"isLast\"],ma=function(e){function t(e){var n;i(this,t),(n=p(this,t,[e])).handleToggleCollapsed=function(){n.setState({expanded:!n.state.expanded},function(){ln.set(n.props.rjvId,n.props.namespace,\"expanded\",n.state.expanded)})},n.handleKeySelect=function(){var e=n.props,t=e.name,a=e.namespace,r=e.onSelect,o=e.src,s=n.state.object_type;if(\"function\"==typeof r){var i=O(a);i.shift(),i.length>0&&i.pop(),r({name:t,value:o,type:s,namespace:i})}},n.getObjectContent=function(e,t,a){return v().createElement(\"div\",{className:\"pushed-content object-container\"},v().createElement(\"div\",Object.assign({className:\"object-content\"},Zt(n.props.theme,\"pushed-content\")),n.renderObjectContents(t,a)))},n.getEllipsis=function(){return 0===n.state.size?null:v().createElement(\"div\",Object.assign({},Zt(n.props.theme,\"ellipsis\"),{className:\"node-ellipsis\",onClick:n.handleToggleCollapsed}),\"...\")},n.getObjectMetaData=function(e){var t=n.state,a=t.size,r=t.hovered;return v().createElement(la,Object.assign({rowHovered:r,size:a},n.props))},n.renderObjectContents=function(e,t){var a,r=n.props,o=r.depth,s=r.parent_type,i=r.index_offset,c=r.groupArraysAfterLength,l=r.namespace,u=r.showComma,b=n.state.object_type,d=[],p=Object.keys(e||{});return n.props.sortKeys&&\"array\"!==b&&(p=p.sort()),p.forEach(function(r,h){a=new va(r,e[r],t.bigNumber);var f=h===p.length-1;if(\"array_group\"===s&&i&&(a.name=parseInt(a.name,10)+i),Object.prototype.hasOwnProperty.call(e,r)&&\"window\"!==a.type.toLowerCase())if(n.isCircularReference(a))d.push(v().createElement(_,Object.assign({key:a.name,depth:o+1,name:a.name,src:a.value,namespace:l.concat(a.name),type:\"array\",parent_type:b,isLast:f,showComma:u,singleIndent:5,indentWidth:n.props.indentWidth},t)));else if(\"object\"===a.type)d.push(v().createElement(ga,Object.assign({key:a.name,depth:o+1,name:a.name,src:a.value,namespace:l.concat(a.name),parent_type:b,isLast:f,showComma:u,listOfAncestors:n.listOfAncestors.concat([n.props.src])},t)));else if(\"array\"===a.type){var m=ga;c&&a.value.length>c&&(m=ha),d.push(v().createElement(m,Object.assign({key:a.name,depth:o+1,name:a.name,src:a.value,namespace:l.concat(a.name),type:\"array\",parent_type:b,isLast:f,showComma:u,listOfAncestors:n.listOfAncestors.concat([n.props.src])},t)))}else d.push(v().createElement(ca,Object.assign({key:a.name+\"_\"+l,variable:a,singleIndent:5,namespace:l,type:n.props.type,isLast:f,showComma:u},t)))}),d};var a=t.getState(e);return n.state=s(s({},a),{},{prevProps:{}}),n.listOfAncestors=Array.from(n.props.listOfAncestors||[]),n.listOfAncestors.push(e.src),n}return f(t,e),l(t,[{key:\"getBraceStart\",value:function(e,t){var n=this.props,a=n.theme,r=n.iconStyle;if(\"array_group\"===n.parent_type)return v().createElement(\"span\",null,v().createElement(\"span\",Zt(a,\"brace\"),\"array\"===e?\"[\":\"{\"));var o=t?ba:da;return v().createElement(\"span\",null,v().createElement(\"span\",Object.assign({onClick:this.handleToggleCollapsed},Zt(a,\"brace-row\")),v().createElement(\"div\",Object.assign({className:\"icon-container\"},Zt(a,\"icon-container\")),v().createElement(o,{theme:a,iconStyle:r})),v().createElement(ua,Object.assign({},this.props,{onKeyClick:this.handleKeySelect})),v().createElement(\"span\",Zt(a,\"brace\"),\"array\"===e?\"[\":\"{\")))}},{key:\"isCircularReference\",value:function(e){return this.listOfAncestors.indexOf(e.value)>-1||e.value===this.props.src}},{key:\"render\",value:function(){var e=this,t=this.props,n=t.depth,a=t.src,r=(t.namespace,t.name,t.type,t.parent_type),o=t.theme,i=t.jsvRoot,c=t.iconStyle,l=t.showComma,u=t.isLast,b=w(t,fa),d=this.state,p=d.object_type,h=d.expanded,f={};return i||\"array_group\"===r?\"array_group\"===r&&(f.borderLeft=0,f.display=\"inline\"):f.paddingLeft=5*this.props.indentWidth,v().createElement(\"div\",Object.assign({className:\"object-key-val\",onMouseEnter:function(){return e.setState(s(s({},e.state),{},{hovered:!0}))},onMouseLeave:function(){return e.setState(s(s({},e.state),{},{hovered:!1}))}},Zt(o,i?\"jsv-root\":\"objectKeyVal\",f)),this.getBraceStart(p,h),h?this.getObjectContent(n,a,s({theme:o,iconStyle:c},b)):this.getEllipsis(),v().createElement(\"span\",{className:\"brace-row\"},v().createElement(\"span\",{style:s(s({},Zt(o,\"brace\").style),{},{paddingLeft:h?\"3px\":\"0px\"})},\"array\"===p?\"]\":\"}\")),l&&!u&&!i&&v().createElement(\"span\",Zt(o,\"comma\"),\",\"),this.getObjectMetaData(a))}}],[{key:\"getDerivedStateFromProps\",value:function(e,n){var a=n.prevProps;return e.src!==a.src||e.collapsed!==a.collapsed||e.name!==a.name||e.namespace!==a.namespace||e.rjvId!==a.rjvId?s(s({},t.getState(e)),{},{prevProps:e}):null}}])}(v().PureComponent);ma.getState=function(e){var t=Object.keys(e.src).length,n=(!1===e.collapsed||!0!==e.collapsed&&e.collapsed>e.depth)&&(!e.shouldCollapse||!1===e.shouldCollapse({name:e.name,src:e.src,type:S(e.src),namespace:e.namespace}))&&0!==t;return{expanded:ln.get(e.rjvId,e.namespace,\"expanded\",n),object_type:\"array\"===e.type?\"array\":\"object\",parent_type:\"array\"===e.type?\"array\":\"object\",size:t,hovered:!1}};var va=l(function e(t,n,a){i(this,e),this.name=t,this.value=n,this.type=S(n,a)});k(ma);const ga=ma;var ya=function(e){function t(){var e;i(this,t);for(var n=arguments.length,a=new Array(n),r=0;r<n;r++)a[r]=arguments[r];return(e=p(this,t,[].concat(a))).render=function(){var t,n,a,r,o=e.props,s=[o.name],i=ga;\"object\"!=typeof o.name||Array.isArray(o.name)||(s=[(null===(t=o.name)||void 0===t?void 0:t.displayName)||(null===(n=o.name)||void 0===n?void 0:n.name)||(null===(a=o.name)||void 0===a||null===(r=a.type)||void 0===r?void 0:r.name)||\"Anonymous\"]);return Array.isArray(o.src)&&o.groupArraysAfterLength&&o.src.length>o.groupArraysAfterLength&&(i=ha),v().createElement(\"div\",{className:\"pretty-json-container object-container\"},v().createElement(\"div\",{className:\"object-content\"},v().createElement(i,Object.assign({namespace:s,depth:0,jsvRoot:!0},o))))},e}return f(t,e),l(t)}(v().PureComponent),Ea=function(e){function t(e){var n;return i(this,t),(n=p(this,t,[e])).handleCloseModal=function(){on.dispatch({rjvId:n.props.rjvId,name:\"RESET\"})},n.handleSubmit=function(){n.props.submit(n.state.input)},n.state={input:e.input?e.input:\"\"},n}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this,t=this.props,n=t.theme,a=t.rjvId,r=t.isValid,o=this.state.input,s=r(o);return v().createElement(\"div\",Object.assign({className:\"key-modal-request\"},Zt(n,\"key-modal-request\"),{onClick:this.handleCloseModal}),v().createElement(\"div\",Object.assign({},Zt(n,\"key-modal\"),{onClick:function(e){e.stopPropagation()}}),v().createElement(\"div\",Zt(n,\"key-modal-label\"),\"Key Name:\"),v().createElement(\"div\",{style:{position:\"relative\"}},v().createElement(\"input\",Object.assign({},Zt(n,\"key-modal-input\"),{className:\"key-modal-input\",ref:function(e){return e&&e.focus()},spellCheck:!1,value:o,placeholder:\"...\",onChange:function(t){e.setState({input:t.target.value})},onKeyPress:function(t){s&&\"Enter\"===t.key?e.handleSubmit():\"Escape\"===t.key&&e.handleCloseModal()}})),s?v().createElement(oa,Object.assign({},Zt(n,\"key-modal-submit\"),{className:\"key-modal-submit\",onClick:this.handleSubmit})):null),v().createElement(\"span\",Zt(n,\"key-modal-cancel\"),v().createElement(aa,Object.assign({},Zt(n,\"key-modal-cancel-icon\"),{className:\"key-modal-cancel\",onClick:function(){on.dispatch({rjvId:a,name:\"RESET\"})}})))))}}])}(v().PureComponent),ka=function(e){function t(){var e;i(this,t);for(var n=arguments.length,a=new Array(n),r=0;r<n;r++)a[r]=arguments[r];return(e=p(this,t,[].concat(a))).isValid=function(t){var n=e.props.rjvId,a=ln.get(n,\"action\",\"new-key-request\");return\"\"!==t&&-1===Object.keys(a.existing_value).indexOf(t)},e.submit=function(t){var n=e.props.rjvId,a=ln.get(n,\"action\",\"new-key-request\");a.new_value=s({},a.existing_value),a.new_value[t]=e.props.defaultValue,on.dispatch({name:\"VARIABLE_ADDED\",rjvId:n,data:a})},e}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props,t=e.active,n=e.theme,a=e.rjvId;return t?v().createElement(Ea,{rjvId:a,theme:n,isValid:this.isValid,submit:this.submit}):null}}])}(v().PureComponent),ja=function(e){function t(){return i(this,t),p(this,t,arguments)}return f(t,e),l(t,[{key:\"render\",value:function(){var e=this.props,t=e.message,n=e.active,a=e.theme,r=e.rjvId;return n?v().createElement(\"div\",Object.assign({className:\"validation-failure\"},Zt(a,\"validation-failure\"),{onClick:function(){on.dispatch({rjvId:r,name:\"RESET\"})}}),v().createElement(\"span\",Zt(a,\"validation-failure-label\"),t),v().createElement(aa,Zt(a,\"validation-failure-clear\"))):null}}])}(v().PureComponent),wa=function(e){function t(e){var n;return i(this,t),(n=p(this,t,[e])).rjvId=Date.now().toString()+Math.random().toString(36).slice(2),n.getListeners=function(){return{reset:n.resetState,\"variable-update\":n.updateSrc,\"add-key-request\":n.addKeyRequest}},n.updateSrc=function(){var e,t=ln.get(n.rjvId,\"action\",\"variable-update\"),a=t.name,r=t.namespace,o=t.new_value,s=t.existing_value,i=t.updated_src,c=t.type,l=n.props,u=l.onEdit,b=l.onDelete,d=l.onAdd,p={existing_src:n.state.src,new_value:o,updated_src:i,name:a,namespace:r,existing_value:s};switch(c){case\"variable-added\":e=d(p);break;case\"variable-edited\":e=u(p);break;case\"variable-removed\":e=b(p)}!1!==e?(ln.set(n.rjvId,\"global\",\"src\",i),n.setState({src:i})):n.setState({validationFailure:!0})},n.addKeyRequest=function(){n.setState({addKeyRequest:!0})},n.resetState=function(){n.setState({validationFailure:!1,addKeyRequest:!1})},n.state={addKeyRequest:!1,editKeyRequest:!1,validationFailure:!1,src:t.defaultProps.src,name:t.defaultProps.name,theme:t.defaultProps.theme,validationMessage:t.defaultProps.validationMessage,prevSrc:t.defaultProps.src,prevName:t.defaultProps.name,prevTheme:t.defaultProps.theme},n}return f(t,e),l(t,[{key:\"componentDidMount\",value:function(){ln.set(this.rjvId,\"global\",\"src\",this.state.src);var e=this.getListeners();for(var t in e)ln.on(t+\"-\"+this.rjvId,e[t]);this.setState({addKeyRequest:!1,editKeyRequest:!1})}},{key:\"componentDidUpdate\",value:function(e,t){!1!==t.addKeyRequest&&this.setState({addKeyRequest:!1}),!1!==t.editKeyRequest&&this.setState({editKeyRequest:!1}),e.src!==this.state.src&&ln.set(this.rjvId,\"global\",\"src\",this.state.src)}},{key:\"componentWillUnmount\",value:function(){var e=this.getListeners();for(var t in e)ln.removeListener(t+\"-\"+this.rjvId,e[t])}},{key:\"render\",value:function(){var e=this.state,t=e.validationFailure,n=e.validationMessage,a=e.addKeyRequest,r=e.theme,o=e.src,i=e.name,c=this.props,l=c.style,u=c.defaultValue;return v().createElement(\"div\",{className:\"react-json-view\",style:s(s({},Zt(r,\"app-container\").style),l)},v().createElement(ja,{message:n,active:t,theme:r,rjvId:this.rjvId}),v().createElement(ya,Object.assign({},this.props,{src:o,name:i,theme:r,type:S(o),rjvId:this.rjvId})),v().createElement(ka,{active:a,theme:r,rjvId:this.rjvId,defaultValue:u}))}}],[{key:\"getDerivedStateFromProps\",value:function(e,n){if(e.src!==n.prevSrc||e.name!==n.prevName||e.theme!==n.prevTheme){var a={src:e.src,name:e.name,theme:e.theme,validationMessage:e.validationMessage,prevSrc:e.src,prevName:e.name,prevTheme:e.theme};return t.validateState(a)}return null}}])}(v().PureComponent);wa.defaultProps={src:{},name:\"root\",theme:\"rjv-default\",collapsed:!1,collapseStringsAfterLength:!1,shouldCollapse:!1,sortKeys:!1,quotesOnKeys:!0,groupArraysAfterLength:100,indentWidth:4,enableClipboard:!0,escapeStrings:!0,displayObjectSize:!0,displayDataTypes:!0,onEdit:!1,onDelete:!1,onAdd:!1,onSelect:!1,iconStyle:\"triangle\",style:{},validationMessage:\"Validation Error\",defaultValue:null,displayArrayKey:!0,selectOnFocus:!1,keyModifier:function(e){return e.metaKey||e.ctrlKey},bigNumber:null,showComma:!0},wa.validateState=function(e){var t={};return\"object\"!==S(e.theme)||function(e){var t=[\"base00\",\"base01\",\"base02\",\"base03\",\"base04\",\"base05\",\"base06\",\"base07\",\"base08\",\"base09\",\"base0A\",\"base0B\",\"base0C\",\"base0D\",\"base0E\",\"base0F\"];if(\"object\"===S(e)){for(var n=0;n<t.length;n++)if(!(t[n]in e))return!1;return!0}return!1}(e.theme)||(console.error(\"react-json-view error:\",\"theme prop must be a theme name or valid base-16 theme object.\",'defaulting to \"rjv-default\" theme'),t.theme=\"rjv-default\"),\"object\"!==S(e.src)&&\"array\"!==S(e.src)&&(console.error(\"react-json-view error:\",\"src property must be a valid json object\"),t.name=\"ERROR\",t.src={message:\"src property must be a valid json object\"}),s(s({},e),t)},k(wa);const Ca=wa})(),r})());","import ReactJsonView from './dist/main.js'\nexport default ReactJsonView.default || ReactJsonView\n","import React, { useState, useEffect } from 'react';\nimport {\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n Button,\n Tabs,\n Tab,\n Box,\n IconButton,\n Slider,\n Stack,\n Typography,\n} from '@mui/material';\nimport { Close } from '@mui/icons-material';\nimport ReactJson from '@microlink/react-json-view';\nimport type { ChatSession } from '@lib/models/ChatSession';\nimport type { Interaction } from '@lib/models/Interaction';\nimport { useAiChatSessionStore } from '../AiChatContext';\n\ninterface SessionDataDialogProps {\n open: boolean;\n onClose: () => void;\n}\n\ninterface TabPanelProps {\n children?: React.ReactNode;\n index: number;\n value: number;\n}\n\nfunction TabPanel(props: TabPanelProps) {\n const { children, value, index, ...other } = props;\n\n return (\n <div\n role=\"tabpanel\"\n hidden={value !== index}\n id={`session-data-tabpanel-${index}`}\n aria-labelledby={`session-data-tab-${index}`}\n {...other}\n >\n {value === index && (\n <Box sx={{ p: 3 }}>\n {children}\n </Box>\n )}\n </div>\n );\n}\n\nfunction a11yProps(index: number) {\n return {\n id: `session-data-tab-${index}`,\n 'aria-controls': `session-data-tabpanel-${index}`,\n };\n}\n\nconst SessionDataDialog: React.FC<SessionDataDialogProps> = ({ open, onClose }) => {\n const currentSession = useAiChatSessionStore((state) => state.session);\n const setSession = useAiChatSessionStore((state) => state.setSession);\n\n const [tabValue, setTabValue] = useState(0);\n const [editedSession, setEditedSession] = useState<ChatSession | null>(null);\n const [indentation, setIndentation] = useState(1);\n\n // Reset edited state whenever the dialog opens so it always shows live data\n useEffect(() => {\n if (open) {\n setEditedSession(null);\n }\n }, [open]);\n\n const handleTabChange = (_event: React.SyntheticEvent, newValue: number) => {\n setTabValue(newValue);\n };\n\n const handleJsonEdit = (edit: any) => {\n setEditedSession(edit.updated_src as ChatSession);\n };\n\n const handleClose = () => {\n if (editedSession) {\n setSession({ ...editedSession, interactions: [...(editedSession.interactions ?? [])] });\n }\n setEditedSession(null);\n onClose();\n };\n\n const formatInteractionsAsText = (interactions: Interaction[]): string => {\n if (!interactions) return \"\";\n\n return interactions.map((interaction, index) => {\n const question = interaction.interactionQuestion || 'No question available';\n const response = interaction.parts\n .filter(part => part.text)\n .map(part => part.text)\n .join('\\n\\n');\n\n return `------ Interaction ${index + 1} ---------\nQuestion: ${question}\nResponse:\n\n${response || 'No response available'}\n\n`;\n }).join('\\n');\n };\n\n const sessionToDisplay = editedSession || currentSession;\n\n if (!sessionToDisplay) {\n return (\n <Dialog open={open} onClose={handleClose} maxWidth=\"lg\" fullWidth>\n <DialogTitle>\n Session Data\n <IconButton\n aria-label=\"close\"\n onClick={handleClose}\n sx={{\n position: 'absolute',\n right: 8,\n top: 8,\n color: (theme) => theme.palette.grey[500],\n }}\n >\n <Close />\n </IconButton>\n </DialogTitle>\n <DialogContent>\n <Box sx={{ p: 2, color: 'text.secondary' }}>\n No session data available. Please start a conversation first.\n </Box>\n </DialogContent>\n <DialogActions>\n <Button onClick={handleClose}>Close</Button>\n </DialogActions>\n </Dialog>\n );\n }\n\n function handleSliderChange(_event: Event, value: number, _activeThumb: number): void {\n setIndentation(value);\n }\n\n return (\n <Dialog\n open={open}\n onClose={handleClose}\n maxWidth=\"lg\"\n fullWidth\n PaperProps={{\n sx: {\n height: '80vh',\n backgroundColor: '#1e1e1e',\n color: '#ffffff',\n }\n }}\n >\n <DialogTitle sx={{ color: '#ffffff', borderBottom: '1px solid rgba(255, 255, 255, 0.1)' }}>\n Session Data Viewer\n {editedSession && (\n <Typography component=\"span\" variant=\"caption\" sx={{ ml: 2, color: 'warning.main' }}>\n (locally edited)\n </Typography>\n )}\n <IconButton\n aria-label=\"close\"\n onClick={handleClose}\n sx={{\n position: 'absolute',\n right: 8,\n top: 8,\n color: 'rgba(255, 255, 255, 0.6)',\n }}\n >\n <Close />\n </IconButton>\n </DialogTitle>\n\n <Box sx={{ borderBottom: 1, borderColor: 'rgba(255, 255, 255, 0.1)' }}>\n <Tabs\n value={tabValue}\n onChange={handleTabChange}\n aria-label=\"session data tabs\"\n sx={{\n '& .MuiTab-root': { color: 'rgba(255, 255, 255, 0.6)' },\n '& .Mui-selected': { color: '#ffffff !important' },\n '& .MuiTabs-indicator': { backgroundColor: '#1976d2' },\n }}\n >\n <Tab label=\"JSON Visualization\" {...a11yProps(0)} />\n <Tab label=\"Text Only\" {...a11yProps(1)} />\n </Tabs>\n </Box>\n\n <DialogContent sx={{ p: 0, overflow: 'hidden' }}>\n <TabPanel value={tabValue} index={0}>\n <Box sx={{ height: '50vh', overflow: 'auto' }}>\n <ReactJson\n src={sessionToDisplay}\n theme=\"monokai\"\n name=\"session\"\n collapsed={indentation}\n displayDataTypes={false}\n displayObjectSize={true}\n enableClipboard={true}\n onEdit={handleJsonEdit}\n onAdd={handleJsonEdit}\n onDelete={handleJsonEdit}\n style={{\n backgroundColor: 'transparent',\n fontSize: '12px',\n }}\n />\n </Box>\n </TabPanel>\n\n <TabPanel value={tabValue} index={1}>\n <Box\n sx={{\n height: '50vh',\n overflow: 'auto',\n backgroundColor: '#2d2d2d',\n p: 2,\n borderRadius: 1,\n fontFamily: 'monospace',\n fontSize: '12px',\n whiteSpace: 'pre-wrap',\n color: '#ffffff',\n }}\n >\n {formatInteractionsAsText(sessionToDisplay.interactions)}\n </Box>\n </TabPanel>\n </DialogContent>\n\n <DialogActions sx={{ borderTop: '1px solid rgba(255, 255, 255, 0.1)', p: 1, pt: 0.5 }}>\n <Box sx={{ width: '100%', top: '-5px', position: 'relative' }}>\n <Stack direction=\"row\" spacing={2} alignItems=\"center\"\n sx={{\n width: '30%',\n height: '60px',\n '& .MuiSlider-mark': { m: 0 },\n }}\n >\n <Typography>Indentation:</Typography>\n <Slider\n value={indentation}\n onChange={handleSliderChange}\n min={0}\n max={7}\n step={1}\n marks={Array.from({ length: 8 }, (_, i) => ({\n value: i,\n label: i.toString(),\n }))}\n sx={{\n color: \"white\",\n height: 4,\n mb: 30,\n \"& .MuiSlider-thumb\": {\n width: 16,\n height: 16,\n backgroundColor: \"white\",\n },\n \"& .MuiSlider-track\": { backgroundColor: \"white\" },\n \"& .MuiSlider-rail\": { backgroundColor: \"rgba(255, 255, 255, 0.3)\" },\n }}\n />\n </Stack>\n </Box>\n {editedSession && (\n <Button\n size=\"medium\"\n onClick={() => setEditedSession(null)}\n variant=\"outlined\"\n sx={{ mr: 1, minWidth: '180px', overflow: 'visible', textWrap: 'nowrap', p: 1 }}\n >\n Reset to Live\n </Button>\n )}\n <Button onClick={handleClose} sx={{ color: 'rgba(255, 255, 255, 0.6)' }}>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default SessionDataDialog;\n","// LastPromptsV2 — v2-styled prompt history affordance.\n//\n// Renders an IconButton that opens a Popover listing recent prompts the\n// user has sent. Clicking an entry calls `onPromptSelected(text, json?)`,\n// which PromptV2 wires to fill its textarea (without auto-sending).\n//\n// Source of truth is `storageService.getPrompts()`. We re-read on each\n// `usePromptState` change (so a freshly sent prompt appears in the list\n// without remounting the component).\n\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport Popover from '@mui/material/Popover';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport Button from '@mui/material/Button';\nimport { useAiChatServices } from '../AiChat/AiChatContext';\nimport { usePromptState } from '../../services/storageService';\nimport type { Prompt } from '../../models/Prompt';\nimport { HistoryIcon, TrashIcon } from './icons';\n\nexport interface LastPromptsV2Props {\n /** Receives the selected prompt's text (and optional JSON payload). */\n onPromptSelected: (promptText: string, promptJson?: string) => void;\n}\n\nconst MAX_VISIBLE = 12;\n\nexport const LastPromptsV2: React.FC<LastPromptsV2Props> = ({ onPromptSelected }) => {\n const { storageService } = useAiChatServices();\n const { promptState } = usePromptState(storageService);\n const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\n const [prompts, setPrompts] = useState<Prompt[]>([]);\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n\n useEffect(() => {\n setPrompts(storageService.getPrompts());\n }, [promptState, storageService]);\n\n const handleOpen = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(e.currentTarget);\n }, []);\n\n const handleClose = useCallback(() => setAnchorEl(null), []);\n\n const handlePick = useCallback(\n (prompt: Prompt) => {\n onPromptSelected(prompt.promptText, prompt.promptJson);\n setAnchorEl(null);\n },\n [onPromptSelected],\n );\n\n const handleClearAll = useCallback(() => {\n storageService.clearAllPrompts();\n setPrompts([]);\n }, [storageService]);\n\n const visible = useMemo(() => prompts.slice(0, MAX_VISIBLE), [prompts]);\n\n // Hide entirely when there's no history to surface.\n if (prompts.length === 0) return null;\n\n const open = !!anchorEl;\n\n return (\n <>\n <Tooltip title=\"Histórico de prompts\" placement=\"top\">\n <IconButton\n ref={triggerRef}\n size=\"small\"\n onClick={handleOpen}\n sx={(theme) => ({\n color: open ? theme.palette.text.primary : theme.palette.text.secondary,\n p: 0.75,\n '&:hover': { color: theme.palette.text.primary, backgroundColor: theme.palette.background.paper },\n })}\n aria-label=\"Histórico de prompts\"\n >\n <HistoryIcon size={16} />\n </IconButton>\n </Tooltip>\n\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{ vertical: 'top', horizontal: 'left' }}\n transformOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n slotProps={{\n paper: {\n sx: (theme) => ({\n backgroundColor: theme.palette.surface.raised,\n border: `1px solid ${theme.palette.divider}`,\n mb: 0.5,\n width: 380,\n maxWidth: '90vw',\n overflow: 'hidden',\n }),\n },\n }}\n >\n {/* Header */}\n <Box\n sx={(theme) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n px: 1.5,\n py: 1,\n borderBottom: `1px solid ${theme.palette.border.soft}`,\n })}\n >\n <Typography\n sx={(theme) => ({\n fontSize: 10,\n color: theme.palette.text.disabled,\n textTransform: 'uppercase',\n letterSpacing: 0.6,\n fontWeight: 500,\n })}\n >\n Últimos {prompts.length} prompt{prompts.length === 1 ? '' : 's'}\n </Typography>\n <Button\n size=\"small\"\n onClick={handleClearAll}\n startIcon={<TrashIcon size={12} />}\n sx={(theme) => ({\n fontSize: 10,\n color: theme.palette.text.secondary,\n textTransform: 'none',\n minWidth: 0,\n px: 0.75,\n py: 0.25,\n '&:hover': { color: theme.palette.secondary.main, backgroundColor: theme.palette.surface.hover },\n })}\n >\n Limpar\n </Button>\n </Box>\n\n {/* List */}\n <Box\n sx={{\n maxHeight: '40vh',\n overflowY: 'auto',\n py: 0.5,\n }}\n >\n {visible.map((prompt, index) => {\n const number = prompts.length - index;\n return (\n <Box\n key={prompt.id ?? `${index}-${prompt.created}`}\n onClick={() => handlePick(prompt)}\n sx={(theme) => ({\n display: 'flex',\n alignItems: 'flex-start',\n gap: 1,\n px: 1.5,\n py: 0.85,\n cursor: 'pointer',\n borderBottom: `1px solid ${theme.palette.border.soft}`,\n '&:last-of-type': { borderBottom: 'none' },\n '&:hover': { backgroundColor: theme.palette.surface.hover },\n })}\n >\n <Typography\n sx={(theme) => ({\n fontFamily: theme.typography.fontFamilyMono,\n fontSize: 10,\n color: theme.palette.text.disabled,\n minWidth: 28,\n textAlign: 'right',\n flex: '0 0 auto',\n pt: 0.2,\n })}\n >\n #{number}\n </Typography>\n <Typography\n sx={(theme) => ({\n flex: 1,\n minWidth: 0,\n fontSize: 12,\n lineHeight: 1.4,\n color: theme.palette.text.primary,\n display: '-webkit-box',\n WebkitLineClamp: 3,\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word',\n })}\n >\n {prompt.promptText}\n </Typography>\n </Box>\n );\n })}\n </Box>\n\n {prompts.length > MAX_VISIBLE && (\n <Box\n sx={(theme) => ({\n px: 1.5,\n py: 0.75,\n borderTop: `1px solid ${theme.palette.border.soft}`,\n fontSize: 10,\n color: theme.palette.text.disabled,\n textAlign: 'center',\n fontFamily: theme.typography.fontFamilyMono,\n })}\n >\n +{prompts.length - MAX_VISIBLE} mais armazenados\n </Box>\n )}\n </Popover>\n </>\n );\n};\n\nLastPromptsV2.displayName = 'LastPromptsV2';\n","// PromptV2 — single shared prompt input used by both DataExplorerViewV2\n// and ComposerViewV2. Hosts that need an \"above the input\" surface\n// (the composer's sketch / draft) pass `topSlot`; hosts that don't (data\n// explorer) leave it empty and PromptV2 collapses to just the input row.\n//\n// Mental model: the prompt IS the sketch + the textarea. Both live\n// inside the same pill — the user can describe their dashboard as\n// text, as a sketch, or both. There's no separate \"draft above prompt\"\n// surface; the sketch is part of the prompt.\n//\n// Layout (all inside one bordered pill):\n// ┌────────────────────────────────────────────────────────[⌃]──┐\n// │ topSlot (sketch / chip) — optional │\n// ├──────────────────────────────────────────────────────────────┤\n// │ arraste/cole imagem (watermark) │\n// │ [✦] [⌚] [text input — autosize] [➤] │\n// └──────────────────────────────────────────────────────────────┘\n//\n// Behaviour notes:\n// - The chevron at the top-right of `topSlot` is rendered by PromptV2\n// when `topSlotCollapsible` is true. Icon-on-hover pattern: hidden\n// until the user moves over the slot.\n// - When `topSlot` is provided AND expanded the textarea placeholder\n// is hidden (saves vertical space, matches the design).\n// - Suspend / Resume / Cancel live in RunProgressPanelV2 — the prompt\n// stays minimal during a run (just the \"aguardando…\" hint).\n// - The watermark \"Arraste qualquer imagem para cá OU copie e cole\"\n// sits inside the pill, top-right of the input row. Subtle at rest,\n// brighter on hover — future wiring will let users click it to\n// open a file picker.\n\nimport React, { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useTheme, alpha } from '@mui/material/styles';\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport Tooltip from '@mui/material/Tooltip';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Modal from '@mui/material/Modal';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport Divider from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\nimport Switch from '@mui/material/Switch';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Popper from '@mui/material/Popper';\nimport Paper from '@mui/material/Paper';\nimport { StaticDatePicker } from '@mui/x-date-pickers/StaticDatePicker';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport dayjs, { type Dayjs } from 'dayjs';\nimport DataObjectIcon from '@mui/icons-material/DataObject';\nimport { useAiChatServices, useAiChatSessionStore } from '../AiChat/AiChatContext';\nimport { ClientMessage } from '../../models/ClientMessage';\nimport { ConnectionState } from '../../models/connectionState';\nimport { AgentGatewayWSAsync } from '../../services/servers/AgentGatewayWSAsync';\nimport { SparkleIcon, SendIcon, ChevronIcon, PauseIcon, StopIcon } from './icons';\nimport ModelSelector from '../AiChat/ChatPane/ModelSelector';\nimport SessionDataDialog from '../AiChat/ChatPane/SessionDataDialog';\nimport { LastPromptsV2 } from './LastPromptsV2';\nimport Stack from '@mui/material/Stack';\n\n/**\n * Autocomplete item returned by `onSlashQuery` / `onAtQuery`. The\n * `value` is spliced verbatim into the textarea, replacing the entire\n * trigger token (the `/` or `@` plus whatever the user had typed after\n * it). Hosts can return `@username`, `/summarize`, `@[Name](id123)` —\n * whatever serialization fits their downstream parsing.\n */\nexport type PromptTriggerItem = {\n id: string;\n label: string;\n value: string;\n hint?: string;\n};\n\ninterface PromptV2Props {\n forceMessage?: string | null;\n onHeightChange?: (newHeight: number) => void;\n\n /**\n * Optional uncontrolled-style seeder. When the value changes\n * PromptV2 replaces its internal draft with the new string\n * (without auto-sending — that's `forceMessage`'s job). Used by\n * suggestion clicks in the v2 composer's empty state.\n */\n seedDraft?: string | null;\n\n /** Show the prompt-history popover trigger inside the pill. Default true. */\n showLastPrompts?: boolean;\n\n showConfigOptions?: boolean;\n\n /**\n * Placeholder text for the textarea. Defaults to the data-explorer\n * phrasing (\"Pergunte sobre seus dados…\"); hosts in other domains\n * (e.g. a booking flow) pass their own. Ignored while an expanded\n * `topSlot` is shown — that surface owns the visual hierarchy and the\n * placeholder is suppressed regardless.\n */\n placeholder?: string;\n\n /**\n * Optional node rendered at the start of the input row, immediately\n * before the textarea (after the options / history controls). A slot\n * for a leading adornment — e.g. a shell-style `›` prompt glyph — that\n * tracks the input. Defaults to nothing.\n */\n inputPrefix?: React.ReactNode;\n\n /**\n * Optional surface rendered at the top of the pill. The composer\n * uses this to host its sketch (chip when collapsed / no sketch,\n * full toolbar+pad when expanded). The data explorer omits it.\n */\n topSlot?: React.ReactNode;\n /** When true, PromptV2 overlays a chevron at the top-right of `topSlot`. */\n topSlotCollapsible?: boolean;\n /** Controlled expanded state for `topSlot` (default true). */\n topSlotExpanded?: boolean;\n onTopSlotExpandedChange?: (next: boolean) => void;\n\n /**\n * Override the textarea's minimum height. Defaults to a compact\n * single-row look. The composer bumps this on the splash screen\n * (no sketch yet) so the prompt reads as the dominant surface.\n */\n inputMinHeight?: number;\n\n /**\n * Optional async hook that runs *before* the message hits the\n * gateway. The composer uses this to ensure a server-side\n * dashboard draft exists (so the agent's subsequent partials\n * carry the right `originalSessionId` for autosave).\n */\n onBeforeSend?: (text: string) => void | Promise<void>;\n\n /**\n * Full submit override. When provided, replaces the gateway send\n * entirely — the prompt does not call `agentGatewayService.sendMessage`\n * and `onBeforeSend` is not invoked. Used by the home empty-state to\n * route the typed text into a fresh /data-explorer session instead\n * of sending it on whatever provider happens to be mounted around\n * the splash. Connection / turn-open gating still applies (the send\n * button stays disabled while a turn is in flight); the empty-text\n * gate honors `allowEmptyDraft` as usual.\n */\n onSubmit?: (text: string) => void | Promise<void>;\n\n /**\n * Pass-through HTML attributes spread onto the send button. Used\n * by the dashboard composer to attach `data-env-id` /\n * `className=\"llm-env-target …\"` so the LLM-driven spotlight tour\n * can address the V2 send button (the V1 `dashboard-pad-compose`\n * identifier). Spread BEFORE the component's own handlers/styles\n * so behavioural props (`onClick`, `disabled`, `aria-label`,\n * `sx`) always win.\n *\n * `color` is omitted because MUI's IconButton has a typed `color`\n * union that conflicts with HTML's free-string color attribute —\n * styling stays the responsibility of the component's own `sx`.\n */\n sendButtonProps?: Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'color'>;\n\n /**\n * Allow submitting with an empty textarea. Defaults to `false`,\n * which is the right behaviour for the data-explorer (the user's\n * intent IS the text). The dashboard composer flips this on when\n * the sketch has uncommitted edits — in that case the sketch\n * itself is the message content, and forcing the user to type\n * something would be busywork.\n */\n allowEmptyDraft?: boolean;\n\n /**\n * Optional node rendered inline in the action row, right before\n * the send button (only while no turn is open). The dashboard\n * composer uses this to surface a \"+1 card · 1 filtro\" chip when\n * the sketch has queued changes, so the user can see what's\n * about to be sent without us writing into their textarea.\n */\n submitAdornment?: React.ReactNode;\n\n /**\n * Async fetcher invoked while the user is typing a `/`-prefixed\n * token at the start of a word (i.e. preceded by whitespace or\n * line start — guards against false hits inside URLs). Called\n * with the query (everything after the `/` up to the caret) and\n * expected to return autocomplete items. Returning an empty array\n * suppresses the popover. Calls are debounced (~120ms) and stale\n * responses are discarded, so the host can implement this as a\n * naive `await fetch(...)` without worrying about ordering.\n */\n onSlashQuery?: (query: string) => Promise<PromptTriggerItem[]>;\n\n /**\n * Sibling of `onSlashQuery` for the `@` trigger — typically used\n * for mentions. Kept as a separate prop (rather than one\n * trigger-aware callback) so hosts that only wire one of the two\n * don't have to branch internally.\n */\n onAtQuery?: (query: string) => Promise<PromptTriggerItem[]>;\n\n /**\n * When set, `/command` tokens inside the prompt render as a chip\n * (soft tinted background + 1px inset border + matching text)\n * using this color as the dominant hue. Implemented via a\n * transparent-text textarea + a sibling mirror that paints the\n * styled tokens behind it, so the native caret / selection / IME\n * stay intact. Pass `theme.palette.primary.main` (or any palette\n * entry) for theme-coherent rendering.\n *\n * `slashColor` and `atColor` are independent: setting one\n * enables the overlay; the unset trigger renders as plain text.\n * Omitting both keeps the textarea in its non-highlighted state.\n */\n slashColor?: string;\n\n /** Sibling of `slashColor` for `@`-led tokens. */\n atColor?: string;\n\n /** Sibling of `slashColor` for `#`-led tokens (rendered after the\n * user picks a date — `#YYYY-MM-DD` by default). */\n hashColor?: string;\n\n /**\n * When true, typing `#` at a word boundary opens an inline date\n * picker (anchored to the caret) instead of an autocomplete list.\n * Picking a date splices `#${formattedDate}` into the textarea,\n * replacing the trigger token. Defaults off — `#` stays as plain\n * text unless this is set.\n */\n enableHashDatePicker?: boolean;\n\n /**\n * dayjs format string used when inserting the picked date.\n * Defaults to `'YYYY-MM-DD'` (ISO — unambiguous and trivially\n * parseable on the receiving end). Hosts that want a localized\n * display can pass e.g. `'DD/MM/YYYY'`.\n */\n hashDateFormat?: string;\n\n borderRadius?: number;\n}\n\nconst TEXTAREA_MIN_HEIGHT = 70;\nconst TEXTAREA_MAX_HEIGHT = 300;\n\n// Highlight tokenizer — splits the draft into a flat list of runs so\n// the overlay can paint chip styling around `/cmd` / `@user` tokens\n// while keeping the surrounding text plain. The boundary rule mirrors\n// `detectTrigger` exactly (trigger char at line start or after\n// whitespace), so a `/` inside `http://` or an `@` inside an email\n// stays plain — wrapping rendering in sync with how the autocomplete\n// is wired prevents \"chip appears but no popover\" inconsistencies.\ntype HighlightToken = { type: 'plain' | 'slash' | 'at' | 'hash'; text: string };\nconst TRIGGER_CHARS: ReadonlySet<string> = new Set(['/', '@', '#']);\nconst triggerTypeFor = (ch: string): 'slash' | 'at' | 'hash' =>\n ch === '/' ? 'slash' : ch === '@' ? 'at' : 'hash';\nconst tokenizeForHighlight = (text: string): HighlightToken[] => {\n if (!text) return [];\n const tokens: HighlightToken[] = [];\n let i = 0;\n while (i < text.length) {\n const ch = text[i];\n const atBoundary = i === 0 || /\\s/.test(text[i - 1]);\n if (atBoundary && TRIGGER_CHARS.has(ch)) {\n let end = i + 1;\n while (end < text.length && !/\\s/.test(text[end])) end += 1;\n tokens.push({ type: triggerTypeFor(ch), text: text.slice(i, end) });\n i = end;\n } else {\n let end = i + 1;\n while (end < text.length) {\n const c = text[end];\n const prevIsWs = /\\s/.test(text[end - 1]);\n if (TRIGGER_CHARS.has(c) && prevIsWs) break;\n end += 1;\n }\n tokens.push({ type: 'plain', text: text.slice(i, end) });\n i = end;\n }\n }\n return tokens;\n};\n\nexport const PromptV2 = forwardRef<HTMLDivElement, PromptV2Props>(({\n forceMessage,\n onHeightChange,\n seedDraft,\n showLastPrompts = true,\n placeholder: placeholderText,\n inputPrefix,\n topSlot,\n borderRadius = TEXTAREA_MIN_HEIGHT,\n topSlotCollapsible = false,\n topSlotExpanded = true,\n showConfigOptions = true,\n onTopSlotExpandedChange,\n inputMinHeight,\n onBeforeSend,\n onSubmit,\n sendButtonProps,\n allowEmptyDraft = true,\n submitAdornment,\n onSlashQuery,\n onAtQuery,\n slashColor,\n atColor,\n hashColor,\n enableHashDatePicker = false,\n hashDateFormat = 'YYYY-MM-DD',\n}, ref) => {\n const {\n agentGatewayService,\n sessionStateManagerService,\n showModelSelector,\n showSessionInfo,\n showToolCalls,\n setShowToolCalls,\n friendlyMode,\n setFriendlyMode,\n } = useAiChatServices();\n\n const theme = useTheme();\n const [draft, setDraft] = useState('');\n const [menuAnchor, setMenuAnchor] = useState<HTMLElement | null>(null);\n const [sending, setSending] = useState(false);\n const [sessionDialogOpen, setSessionDialogOpen] = useState(false);\n const inputRef = useRef<HTMLTextAreaElement | null>(null);\n const containerRef = useRef<HTMLDivElement | null>(null);\n\n // Image attachments — local-only state. Each attachment carries\n // its own data URL (used both for preview and for embedding into\n // the outgoing message), the underlying mime type, and a display\n // name surfaced in tooltips when the user hovers a thumbnail.\n type Attachment = { id: string; dataUrl: string; mimeType: string; name: string };\n const [attachments, setAttachments] = useState<Attachment[]>([]);\n const [isDraggingOver, setIsDraggingOver] = useState(false);\n // Lightbox state: when set, render the full-size image in a modal\n // overlay. We hold the whole Attachment (not just an id) so the\n // preview keeps showing even if the user removes the entry from\n // the row mid-preview.\n const [previewAttachment, setPreviewAttachment] = useState<Attachment | null>(null);\n const dragCounterRef = useRef(0);\n const fileInputRef = useRef<HTMLInputElement | null>(null);\n\n const iconColor = theme.palette.mode == 'light' ? theme.palette.text.primary : theme.palette.primary.main;\n const themeMode = theme.palette.mode;\n\n // Read a list of files (from a drop, paste, or file picker) and\n // append the image entries as data URLs. Non-image files are\n // ignored — this prompt only accepts images today.\n const addFiles = useCallback(async (files: FileList | File[]) => {\n const list = Array.from(files).filter((f) => f.type.startsWith('image/'));\n if (list.length === 0) return;\n const next = await Promise.all(\n list.map(\n (file) =>\n new Promise<Attachment>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () =>\n resolve({\n id: `${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,\n dataUrl: String(reader.result ?? ''),\n mimeType: file.type,\n name: file.name || 'imagem',\n });\n reader.onerror = () => reject(reader.error);\n reader.readAsDataURL(file);\n }),\n ),\n );\n setAttachments((prev) => [...prev, ...next]);\n }, []);\n\n const removeAttachment = useCallback((id: string) => {\n setAttachments((prev) => prev.filter((a) => a.id !== id));\n }, []);\n\n const openFilePicker = useCallback(() => {\n fileInputRef.current?.click();\n }, []);\n\n // ── Trigger autocomplete ('/' and '@') ─────────────────────────\n // Hosts wire `onSlashQuery` / `onAtQuery` to surface items as the\n // user types a `/`- or `@`-led token. We track the active trigger\n // (char + query + token bounds), the fetched items, the floating\n // popover's caret-aligned coords, and the keyboard highlight.\n type ActiveTrigger = {\n trigger: '/' | '@' | '#';\n query: string;\n startIdx: number; // index of the trigger char within `draft`\n endIdx: number; // current caret position (end of query)\n };\n const [activeTrigger, setActiveTrigger] = useState<ActiveTrigger | null>(null);\n const [triggerItems, setTriggerItems] = useState<PromptTriggerItem[]>([]);\n const [triggerLoading, setTriggerLoading] = useState(false);\n const [triggerHighlight, setTriggerHighlight] = useState(0);\n const [caretCoords, setCaretCoords] = useState<{ top: number; left: number } | null>(null);\n // Discard out-of-order async responses (each fetch bumps the seq;\n // any resolution from an older seq is dropped).\n const triggerFetchSeqRef = useRef(0);\n const triggerDebounceRef = useRef<number | null>(null);\n // Stash the latest fetcher props in a ref so the fetch effect can\n // depend ONLY on the active trigger (char + query) and not on the\n // callback identities. Inline arrow-function props are the common\n // case for consumers; if we keyed the effect on their reference,\n // any state change inside the host that re-creates them would\n // re-fire the debounce, the new fetch would update state in the\n // host, that would re-create the callbacks again — infinite loop.\n const triggerFetchersRef = useRef({ onSlashQuery, onAtQuery });\n triggerFetchersRef.current = { onSlashQuery, onAtQuery };\n\n // Highlight overlay — opt-in via `slashColor` / `atColor`. When\n // either is set, the textarea text goes transparent and a sibling\n // mirror paints the chip-styled tokens behind it. The mirror's\n // content is translated on textarea scroll so multi-line input\n // stays in lockstep.\n const highlightActive = Boolean(slashColor || atColor || hashColor);\n const highlightTokens = useMemo(\n () => (highlightActive ? tokenizeForHighlight(draft) : []),\n [highlightActive, draft],\n );\n const highlightContentRef = useRef<HTMLDivElement | null>(null);\n // Off-screen mirror element used to measure the caret's pixel\n // position inside the textarea. Created lazily once and reused —\n // we copy the textarea's computed styles into it on each measure\n // because they change with theme / `inputMinHeight`.\n const caretMirrorRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n const mirror = document.createElement('div');\n mirror.setAttribute('aria-hidden', 'true');\n Object.assign(mirror.style, {\n position: 'absolute',\n top: '0',\n left: '-9999px',\n visibility: 'hidden',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word',\n } as CSSStyleDeclaration);\n document.body.appendChild(mirror);\n caretMirrorRef.current = mirror;\n return () => {\n document.body.removeChild(mirror);\n caretMirrorRef.current = null;\n };\n }, []);\n\n // Walk back from the caret looking for the `/` or `@` that opens\n // the current token. The trigger must lead its own token (start of\n // string or preceded by whitespace) — that's what stops us from\n // matching the `/` in `http://…` or the `@` in `user@host`.\n const detectTrigger = useCallback((value: string, caretPos: number): ActiveTrigger | null => {\n for (let i = caretPos - 1; i >= 0; i -= 1) {\n const ch = value[i];\n if (ch === '/' || ch === '@' || ch === '#') {\n const atBoundary = i === 0 || /\\s/.test(value[i - 1]);\n if (!atBoundary) return null;\n return {\n trigger: ch as '/' | '@' | '#',\n query: value.slice(i + 1, caretPos),\n startIdx: i,\n endIdx: caretPos,\n };\n }\n if (/\\s/.test(ch)) return null;\n }\n return null;\n }, []);\n\n // Measure the pixel coordinates of the caret by syncing a mirrored\n // div to the textarea's visual layout, dropping the same prefix\n // into it, and reading the bounding rect of a zero-width marker\n // span at the end. Returns viewport coordinates of the *bottom* of\n // the current text line so the popover can sit just under it.\n const measureCaret = useCallback((textarea: HTMLTextAreaElement, value: string, caretPos: number) => {\n const mirror = caretMirrorRef.current;\n if (!mirror) return null;\n const computed = window.getComputedStyle(textarea);\n const props = [\n 'boxSizing', 'width', 'height',\n 'borderTopWidth', 'borderRightWidth', 'borderBottomWidth', 'borderLeftWidth',\n 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft',\n 'fontFamily', 'fontSize', 'fontWeight', 'fontStyle', 'lineHeight',\n 'letterSpacing', 'textTransform', 'textIndent',\n ] as const;\n for (const prop of props) {\n (mirror.style as unknown as Record<string, string>)[prop] = (computed as unknown as Record<string, string>)[prop];\n }\n mirror.textContent = value.slice(0, caretPos);\n const marker = document.createElement('span');\n marker.textContent = '';\n mirror.appendChild(marker);\n const taRect = textarea.getBoundingClientRect();\n const markerRect = marker.getBoundingClientRect();\n const mirrorRect = mirror.getBoundingClientRect();\n mirror.removeChild(marker);\n const lineHeight = parseFloat(computed.lineHeight) || parseFloat(computed.fontSize) * 1.5;\n return {\n top: taRect.top + (markerRect.top - mirrorRect.top) - textarea.scrollTop + lineHeight,\n left: taRect.left + (markerRect.left - mirrorRect.left) - textarea.scrollLeft,\n };\n }, []);\n\n // Debounced fetch. Re-runs whenever the trigger char or the query\n // changes; cancels in-flight timers; drops stale responses via the\n // seq counter. When `activeTrigger` clears we wipe items so the\n // popover unmounts cleanly.\n useEffect(() => {\n if (!activeTrigger) {\n setTriggerItems([]);\n setTriggerLoading(false);\n if (triggerDebounceRef.current != null) {\n window.clearTimeout(triggerDebounceRef.current);\n triggerDebounceRef.current = null;\n }\n return;\n }\n // `#` is its own thing — the popover hosts a date picker, not\n // a fetched items list. We still want the active-trigger state\n // (so the popover anchors / chip styles light up) but skip the\n // fetch path entirely.\n if (activeTrigger.trigger === '#') {\n setTriggerItems([]);\n setTriggerLoading(false);\n return;\n }\n const fetcher = activeTrigger.trigger === '/'\n ? triggerFetchersRef.current.onSlashQuery\n : triggerFetchersRef.current.onAtQuery;\n if (!fetcher) {\n setTriggerItems([]);\n return;\n }\n if (triggerDebounceRef.current != null) {\n window.clearTimeout(triggerDebounceRef.current);\n }\n triggerDebounceRef.current = window.setTimeout(async () => {\n const seq = ++triggerFetchSeqRef.current;\n setTriggerLoading(true);\n try {\n // Re-read from the ref at call time so a consumer that\n // hot-swaps the fetcher between the debounce schedule\n // and the fire still hits the latest implementation.\n const liveFetcher = activeTrigger.trigger === '/'\n ? triggerFetchersRef.current.onSlashQuery\n : triggerFetchersRef.current.onAtQuery;\n if (!liveFetcher) return;\n const items = await liveFetcher(activeTrigger.query);\n if (seq !== triggerFetchSeqRef.current) return;\n setTriggerItems(items);\n setTriggerHighlight(0);\n } catch (err) {\n console.error('[PromptV2] trigger query failed', err);\n if (seq !== triggerFetchSeqRef.current) return;\n setTriggerItems([]);\n } finally {\n if (seq === triggerFetchSeqRef.current) setTriggerLoading(false);\n }\n }, 120);\n return () => {\n if (triggerDebounceRef.current != null) {\n window.clearTimeout(triggerDebounceRef.current);\n triggerDebounceRef.current = null;\n }\n };\n }, [activeTrigger?.trigger, activeTrigger?.query]);\n\n const insertTriggerItem = useCallback((item: PromptTriggerItem) => {\n if (!activeTrigger || !inputRef.current) return;\n const textarea = inputRef.current;\n const before = draft.slice(0, activeTrigger.startIdx);\n const after = draft.slice(activeTrigger.endIdx);\n const next = `${before}${item.value} ${after}`;\n const caret = (before + item.value + ' ').length;\n setDraft(next);\n setActiveTrigger(null);\n setTriggerItems([]);\n setCaretCoords(null);\n // Defer to next frame so React commits the new value before we\n // move the caret — otherwise setSelectionRange runs against the\n // pre-commit DOM and gets clobbered.\n requestAnimationFrame(() => {\n textarea.focus();\n textarea.setSelectionRange(caret, caret);\n });\n }, [activeTrigger, draft]);\n\n // Splice the picked date in as `#${formattedDate}`. Mirrors\n // `insertTriggerItem`'s mechanics — the chip styling kicks in\n // automatically because the tokenizer treats `#token` like any\n // other trigger run.\n const insertDate = useCallback((date: Dayjs | null) => {\n if (!date || !activeTrigger || !inputRef.current) return;\n const textarea = inputRef.current;\n const formatted = `#${date.format(hashDateFormat)}`;\n const before = draft.slice(0, activeTrigger.startIdx);\n const after = draft.slice(activeTrigger.endIdx);\n const next = `${before}${formatted} ${after}`;\n const caret = (before + formatted + ' ').length;\n setDraft(next);\n setActiveTrigger(null);\n setCaretCoords(null);\n requestAnimationFrame(() => {\n textarea.focus();\n textarea.setSelectionRange(caret, caret);\n });\n }, [activeTrigger, draft, hashDateFormat]);\n\n // Virtual anchor for Popper — a 0×0 rect at the caret coords.\n // Popper only reads `getBoundingClientRect`, so this satisfies\n // its VirtualElement contract.\n const triggerAnchor = useMemo(() => {\n if (!caretCoords) return null;\n const { top, left } = caretCoords;\n return {\n getBoundingClientRect: () => ({\n top, left, bottom: top, right: left,\n width: 0, height: 0, x: left, y: top,\n toJSON: () => ({}),\n }) as DOMRect,\n };\n }, [caretCoords]);\n\n const syncTriggerFromTextarea = useCallback((ta: HTMLTextAreaElement) => {\n const value = ta.value;\n const caret = ta.selectionStart ?? value.length;\n const detected = detectTrigger(value, caret);\n setActiveTrigger(detected);\n if (detected) {\n const coords = measureCaret(ta, value, caret);\n if (coords) setCaretCoords(coords);\n } else {\n setCaretCoords(null);\n }\n }, [detectTrigger, measureCaret]);\n\n const isTurnOpen = useAiChatSessionStore((s) => s.turnOpen);\n const setTurnOpen = useAiChatSessionStore((s) => s.setTurnOpen);\n const connectionStatus = useAiChatSessionStore((s) => s.connectionStatus);\n const isConnected = connectionStatus === ConnectionState.Connected;\n // Shared suspend state — same value RunProgressPanelV2 reads and\n // writes, so pausing in either surface flips the icon cluster in\n // both. Reset to `idle` happens in the store when the turn closes\n // (`setTurnOpen(false)`), so we don't have to mirror that here.\n const suspendState = useAiChatSessionStore((s) => s.suspendState);\n const setSuspendState = useAiChatSessionStore((s) => s.setSuspendState);\n const isSuspended = suspendState === 'suspended';\n const isSuspending = suspendState === 'suspending';\n\n const handleToggleConnection = useCallback((checked: boolean) => {\n if (!(agentGatewayService instanceof AgentGatewayWSAsync)) return;\n if (checked) {\n sessionStateManagerService.bindAndOpenLiveSession(\n agentGatewayService.getAgentContext(),\n agentGatewayService.getSessionId(),\n );\n } else {\n sessionStateManagerService.closeLiveConnection(true, false);\n }\n }, [agentGatewayService, sessionStateManagerService]);\n\n const resolvedMinHeight = inputMinHeight ?? TEXTAREA_MIN_HEIGHT;\n\n // Auto-grow the textarea up to TEXTAREA_MAX_HEIGHT, never below\n // the resolved min. The min is what makes the splash composer feel\n // tall (no sketch yet → composer passes a bigger floor).\n const fit = (el: HTMLTextAreaElement | null) => {\n if (!el) return;\n el.style.height = 'auto';\n el.style.height = `${Math.min(\n Math.max(el.scrollHeight / 2, resolvedMinHeight / (topSlotExpanded ? 5 : 1)),\n TEXTAREA_MAX_HEIGHT,\n )}px`;\n };\n useEffect(() => {\n fit(inputRef.current);\n }, [draft, resolvedMinHeight, topSlotExpanded]);\n\n useEffect(() => {\n setDraft(seedDraft ?? '');\n }, [seedDraft]);\n\n // Surface row height to ChatPane (matches the v1 contract).\n useEffect(() => {\n if (!containerRef.current) return;\n const observer = new ResizeObserver(() => {\n if (containerRef.current && onHeightChange) {\n onHeightChange(containerRef.current.getBoundingClientRect().height);\n }\n });\n observer.observe(containerRef.current);\n return () => observer.disconnect();\n }, [onHeightChange]);\n\n const handleSend = async (textOverride?: string) => {\n const text = (textOverride ?? draft).trim();\n // Attachments are part of this user's intent only when we're\n // sending the locally-typed draft — `forceMessage`-style auto\n // sends from outside the component (suggestion clicks, etc.)\n // shouldn't sweep up images the user hadn't yet committed.\n const usingDraft = textOverride === undefined;\n const pendingAttachments = usingDraft ? attachments : [];\n // Honor the same `allowEmptyDraft` opt-out the disabled state\n // uses — otherwise the button is enabled but clicking it\n // silently bails here, which is what was happening when the\n // composer had queued sketch changes but no typed prompt.\n // Attachments also count as content: empty text + an image is\n // a perfectly valid submission.\n if (!text && !allowEmptyDraft && pendingAttachments.length === 0) return;\n // Sending while a turn is open is normally invalid — but a\n // *suspended* turn is the exception: the user has paused the\n // agent and typing a follow-up is the documented way to\n // \"continue with new context\". The gateway's\n // `sendMessageInternal` already clears `suspendState` and\n // starts a new interaction (with `wasSuspended=true` carried\n // through for the agent's context); we mirror that on the\n // client side just below so our cluster flips back to \"idle\"\n // immediately instead of waiting for the next turn-open echo.\n if (sending || (isTurnOpen && !isSuspended)) return;\n // The gateway connection is irrelevant when the host overrides\n // submit (e.g. the home splash navigates instead of sending),\n // so only enforce it on the gateway path. Bailing here BEFORE\n // we clear `draft`/`attachments` is intentional: when the user\n // clicks send mid-handshake (status is `Connecting`, not yet\n // `Connected`) we want the typed text and attached images to\n // survive the click so they can retry once the socket settles.\n // Previously this only caught `Idle`, so `Connecting` slipped\n // through, the state-clear ran, and the user lost their image\n // attachments before the send even left the page.\n if (!onSubmit && connectionStatus !== ConnectionState.Connected) return;\n if (isSuspended) setSuspendState('idle');\n setDraft('')\n if (usingDraft) setAttachments([]);\n setSending(true);\n try {\n // Strip `data:<mime>;base64,` prefix so the wire payload\n // is raw base64 — the server hands it to\n // `Convert.FromBase64String` directly.\n const clientImages = pendingAttachments.length > 0\n ? pendingAttachments.map((a) => {\n const commaIdx = a.dataUrl.indexOf(',');\n const base64 = commaIdx >= 0 ? a.dataUrl.slice(commaIdx + 1) : a.dataUrl;\n return { mimeType: a.mimeType, data: base64 };\n })\n : undefined;\n\n // Override path: replace the gateway send entirely. We skip\n // `onBeforeSend` here on purpose — it exists to set up state\n // for the gateway (e.g. createDraft so partials autosave),\n // which is meaningless when the gateway isn't being called.\n if (onSubmit) {\n try {\n // `onSubmit` is text-only by contract (used by the\n // home splash to navigate). Images would be lost\n // here regardless — the host doesn't currently have\n // a path to forward them.\n await onSubmit(text);\n } catch (err) {\n console.error('[PromptV2] onSubmit failed', err);\n }\n if (inputRef.current) inputRef.current.value = '';\n return;\n }\n\n // Hosts can run async setup (e.g. createDraft) before the\n // message hits the gateway. If the hook throws we surface\n // it to the console and bail — sending half-prepped state\n // is worse than skipping the turn.\n if (onBeforeSend) {\n try {\n await onBeforeSend(text);\n } catch (err) {\n console.error('[PromptV2] onBeforeSend failed', err);\n return;\n }\n }\n await agentGatewayService.sendMessage(new ClientMessage(text, 'text/plain', undefined, undefined, clientImages));\n if (inputRef.current) inputRef.current.value = '';\n } finally {\n setSending(false);\n }\n };\n\n // External `forceMessage` (e.g. clicking a suggested prompt) — replicates\n // the v1 Prompt's behavior of auto-sending when this prop changes.\n useEffect(() => {\n if (forceMessage) handleSend(forceMessage);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [forceMessage]);\n\n const handleSelectFromHistory = useCallback((text: string) => {\n setDraft(text);\n // Defer focus so the Popover finishes its close transition first.\n requestAnimationFrame(() => {\n inputRef.current?.focus();\n const len = text.length;\n inputRef.current?.setSelectionRange(len, len);\n });\n }, []);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n // Hash trigger uses a date picker, not a list — only Escape is\n // a meaningful textarea-level handler here. Date navigation\n // happens via mouse / picker-internal keys when focus is in\n // the calendar grid.\n if (activeTrigger?.trigger === '#' && enableHashDatePicker) {\n if (e.key === 'Escape') {\n e.preventDefault();\n setActiveTrigger(null);\n setCaretCoords(null);\n return;\n }\n }\n // Autocomplete owns navigation keys while it has items to\n // show — Enter selects an item instead of submitting the\n // prompt, ArrowUp/Down move the highlight, Escape dismisses.\n // We gate on `triggerItems.length` (not just `activeTrigger`)\n // so an empty result set doesn't swallow Enter.\n if (activeTrigger && triggerItems.length > 0) {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setTriggerHighlight((i) => (i + 1) % triggerItems.length);\n return;\n }\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n setTriggerHighlight((i) => (i - 1 + triggerItems.length) % triggerItems.length);\n return;\n }\n if (e.key === 'Enter' || e.key === 'Tab') {\n e.preventDefault();\n const item = triggerItems[triggerHighlight];\n if (item) insertTriggerItem(item);\n return;\n }\n if (e.key === 'Escape') {\n e.preventDefault();\n setActiveTrigger(null);\n setCaretCoords(null);\n return;\n }\n }\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n void handleSend();\n }\n };\n\n // Connection state only gates the gateway path — when the host\n // overrides submit, the gateway is irrelevant and we treat the\n // prompt as always available for typing.\n const isDisabled = !onSubmit && connectionStatus === ConnectionState.Idle;\n // `canSendOverGateway` is the stricter sibling of `isDisabled`: the\n // textarea stays writable during the connect handshake so the user\n // can keep typing, but the send button + handleSend guard refuse\n // any non-Connected state. Kept separate from `isDisabled` because\n // disabling the textarea while connecting feels like the app froze.\n const canSendOverGateway = !!onSubmit || connectionStatus === ConnectionState.Connected;\n // Socket handshake in flight — the AiChatProvider opens the WS on\n // mount and the gateway typically becomes `Connected` in under a\n // second, but a slow network can stretch that to 1–3s. During that\n // window the send button has nothing to send through, so swap the\n // paper-plane glyph for a spinner so the user sees \"we're getting\n // ready\" instead of a disabled button that looks broken. Only the\n // gateway path needs this: hosts that hand us an `onSubmit`\n // override (e.g. the home splash routing the text into a fresh\n // session) don't care about the WS at all.\n const isConnecting = !onSubmit && connectionStatus !== ConnectionState.Connected;\n // Empty-text gate is bypassed when the host (composer) tells us\n // there's other content (sketch edits) that justifies the send.\n // `isTurnOpen && !isSuspended` mirrors the early return in\n // `handleSend`: the prompt is only \"locked\" while the agent is\n // actively running; a suspended turn is interactive again so we\n // re-enable the send button.\n const sendDisabled = !canSendOverGateway || (isTurnOpen && !isSuspended) || sending || (!allowEmptyDraft && !draft.trim() && attachments.length === 0);\n\n // Placeholder is hidden when the host is showing an expanded\n // top-slot — that surface dominates the visual hierarchy and the\n // empty hint underneath is just noise.\n const placeholder = topSlot && topSlotExpanded\n ? ''\n : (placeholderText ?? 'Pergunte sobre seus dados\\u2026');\n\n const handleToggleTopSlot = () => {\n onTopSlotExpandedChange?.(!topSlotExpanded);\n };\n\n // Border radius adapts to content: a true pill (999) when there's\n // only the input row; a softly rounded card (16) when the prompt\n // grows to host a sketch — fully-rounded ends look awkward on a\n // tall multi-line surface.\n const pillBorderRadius = topSlot ? 2 : borderRadius ?? 999;\n\n return (\n <Box\n ref={containerRef}\n sx={{\n px: 0,\n py: 1.25,\n // Transparent wrapper — the pill below has its own\n // `surface.raised` background, so the wrapper's only job\n // is to add padding around the pill. Painting\n // `background.default` here used to make sense (matched\n // the page canvas in DataExplorer / Composer), but it\n // also painted a near-black band when this prompt is\n // mounted inside `AiChatFloatingV2` (whose body is\n // `background.paper`, slightly lifted). Going\n // transparent lets every host surface show through\n // correctly without a per-host override.\n backgroundColor: 'transparent',\n }}\n >\n <Box\n onDragEnter={(e) => {\n if (!e.dataTransfer.types?.includes('Files')) return;\n e.preventDefault();\n dragCounterRef.current += 1;\n setIsDraggingOver(true);\n }}\n onDragOver={(e) => {\n if (!e.dataTransfer.types?.includes('Files')) return;\n e.preventDefault();\n e.dataTransfer.dropEffect = 'copy';\n }}\n onDragLeave={() => {\n dragCounterRef.current = Math.max(0, dragCounterRef.current - 1);\n if (dragCounterRef.current === 0) setIsDraggingOver(false);\n }}\n onDrop={(e) => {\n e.preventDefault();\n dragCounterRef.current = 0;\n setIsDraggingOver(false);\n if (e.dataTransfer.files?.length) void addFiles(e.dataTransfer.files);\n }}\n sx={(theme) => ({\n position: 'relative',\n backgroundColor: alpha(theme.palette.background.default,0.9),\n border: `1px solid ${isDraggingOver ? theme.palette.primary.main : theme.palette.primary.dark}`,\n borderRadius: attachments.length > 0 ? 3 : pillBorderRadius,\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n transition: 'border-color .12s, border-radius .18s, box-shadow .12s',\n boxShadow: isDraggingOver\n ? `0 0 0 3px ${alpha(theme.palette.primary.main, 0.18)}`\n : 'none',\n '&:focus-within': {\n borderColor: theme.palette.primary.dark,\n },\n '&:hover .v2-prompt-topSlot-chevron': {\n opacity: 1,\n pointerEvents: 'auto',\n },\n '& textarea::placeholder': {\n color: theme.palette.text.disabled,\n },\n // When the highlight overlay is on, the textarea\n // glyphs are transparent — without this rule the\n // selection rectangle would paint over blank space.\n // Forcing a visible color on ::selection keeps the\n // highlighted text readable mid-selection.\n '& textarea::selection': {\n color: theme.palette.text.primary,\n background: alpha(theme.palette.primary.main, 0.3),\n },\n })}\n >\n {/* Hidden native file input — driven by the watermark\n click. `multiple` so a user can pick a batch in one\n go; we filter to images on read. */}\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"image/*\"\n multiple\n style={{ display: 'none' }}\n onChange={(e) => {\n if (e.target.files?.length) void addFiles(e.target.files);\n e.target.value = '';\n }}\n />\n\n {/* Drag-over overlay. Pointer-events disabled so the\n drop event still reaches the pill underneath — the\n overlay is purely a visual hint that a drop will\n land here. */}\n {isDraggingOver && (\n <Box\n aria-hidden\n sx={(theme) => ({\n position: 'absolute',\n inset: 0,\n zIndex: 5,\n pointerEvents: 'none',\n backgroundColor: alpha(theme.palette.primary.main, 0.08),\n border: `2px dashed ${theme.palette.primary.main}`,\n borderRadius: pillBorderRadius,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: theme.palette.primary.main,\n fontSize: 12,\n fontFamily: theme.typography.fontFamilyMono,\n })}\n >\n Solte a imagem para anexar\n </Box>\n )}\n {/* topSlot — sketch lives inside the pill so the prompt\n visually IS the (sketch + text) the user is composing. */}\n {topSlot && (\n <Box sx={{ position: 'relative' }}>\n {topSlot}\n {topSlotCollapsible && onTopSlotExpandedChange && (\n <Tooltip\n title={topSlotExpanded ? 'Recolher' : 'Expandir'}\n placement=\"left\"\n >\n <IconButton\n className=\"v2-prompt-topSlot-chevron\"\n size=\"small\"\n onClick={handleToggleTopSlot}\n sx={(theme) => ({\n position: 'absolute',\n top: 6,\n right: 6,\n color: theme.palette.text.secondary,\n backgroundColor: theme.palette.surface.raised,\n border: `1px solid ${theme.palette.divider}`,\n p: 0.4,\n opacity: 1,\n pointerEvents: 'none',\n zIndex: 2,\n transition: 'opacity .12s, color .12s, background-color .12s',\n transform: topSlotExpanded ? 'rotate(0deg)' : 'rotate(180deg)',\n '&:hover': {\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.surface.hover,\n borderColor: theme.palette.primary.main,\n },\n })}\n aria-label={topSlotExpanded ? 'Recolher' : 'Expandir'}\n >\n <ChevronIcon size={13} />\n </IconButton>\n </Tooltip>\n )}\n </Box>\n )}\n\n {/* Hairline divider between the sketch and the input\n row — gives the prompt a clear \"header / body\"\n structure without an extra border drawn elsewhere. */}\n {topSlot && (\n <Box\n aria-hidden\n sx={(theme) => ({\n height: '1px',\n background: theme.palette.border.soft,\n flexShrink: 0,\n })}\n />\n )}\n\n {/* Attachments preview row. Sits inside the pill so\n the prompt visually contains \"everything that will\n be sent\" — text, sketch, and now images. Each\n thumbnail has a hover-revealed remove button. */}\n {attachments.length > 0 && (\n <Box\n sx={(theme) => ({\n display: 'flex',\n flexWrap: 'wrap',\n gap: 0.75,\n px: 1.25,\n py: 1,\n borderBottom: `1px solid ${theme.palette.border.soft}`,\n })}\n >\n {attachments.map((att) => (\n <Tooltip key={att.id} title={att.name} placement=\"top\">\n <Box\n role=\"button\"\n tabIndex={0}\n aria-label={`Visualizar ${att.name}`}\n onClick={() => setPreviewAttachment(att)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setPreviewAttachment(att);\n }\n }}\n sx={(theme) => ({\n position: 'relative',\n width: 56,\n height: 56,\n borderRadius: 1,\n overflow: 'hidden',\n border: `1px solid ${theme.palette.divider}`,\n backgroundColor: theme.palette.surface.hover,\n cursor: 'zoom-in',\n transition: 'border-color .12s',\n '&:hover': {\n borderColor: theme.palette.primary.main,\n },\n '&:focus-visible': {\n outline: `2px solid ${theme.palette.primary.main}`,\n outlineOffset: 1,\n },\n '&:hover .v2-prompt-att-remove': {\n opacity: 1,\n pointerEvents: 'auto',\n },\n })}\n >\n <Box\n component=\"img\"\n src={att.dataUrl}\n alt={att.name}\n sx={{\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n display: 'block',\n }}\n />\n <IconButton\n className=\"v2-prompt-att-remove\"\n size=\"small\"\n // Stop the click from bubbling up to\n // the thumbnail's zoom handler —\n // otherwise removing an attachment\n // also opens the preview for an\n // entry that's already gone.\n onClick={(e) => {\n e.stopPropagation();\n removeAttachment(att.id);\n }}\n sx={(theme) => ({\n position: 'absolute',\n top: 2,\n right: 2,\n p: 0.25,\n opacity: 0,\n pointerEvents: 'none',\n transition: 'opacity .12s',\n backgroundColor: alpha(theme.palette.background.default, 0.85),\n color: theme.palette.text.primary,\n '&:hover': {\n backgroundColor: theme.palette.background.default,\n },\n })}\n aria-label={`Remover ${att.name}`}\n >\n <CloseIcon sx={{ fontSize: 12 }} />\n </IconButton>\n </Box>\n </Tooltip>\n ))}\n </Box>\n )}\n\n {/* Input row. Watermark sits in the top-right corner of\n this region (so it tracks the active typing area\n regardless of whether the sketch is expanded). The\n pt is bumped slightly to leave room for the watermark\n above the controls. */}\n <Box\n sx={{\n position: 'relative',\n display: 'flex',\n // Center the action icons against the textarea\n // so they don't bottom-stick when the prompt\n // grows (splash mode) or shrinks (execution).\n alignItems: 'center',\n gap: 0.75,\n px: 1.25,\n pt: 1.5,\n pb: 0.75,\n }}\n >\n <Typography\n component=\"span\"\n role=\"button\"\n tabIndex={0}\n onClick={openFilePicker}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n openFilePicker();\n }\n }}\n sx={(theme) => ({\n position: 'absolute',\n top: 4,\n right: 30,\n fontSize: 10,\n color: theme.palette.text.disabled,\n fontFamily: theme.typography.fontFamilyMono,\n opacity: 0.5,\n cursor: 'pointer',\n userSelect: 'none',\n transition: 'opacity .15s, color .15s',\n '&:hover': {\n opacity: 1,\n color: theme.palette.text.secondary,\n },\n })}\n >\n Arraste, cole ou clique para anexar imagem\n </Typography>\n\n {showConfigOptions &&\n <Tooltip title=\"Opções\" placement=\"top\">\n <IconButton\n size=\"small\"\n onClick={(e) => setMenuAnchor(e.currentTarget)}\n sx={(theme) => ({\n color: iconColor,\n p: 0.75,\n flexShrink: 0,\n '&:hover': { backgroundColor: theme.palette.surface.hover },\n })}\n aria-label=\"Opções\"\n >\n <SparkleIcon size={16} />\n </IconButton>\n </Tooltip>}\n\n {showLastPrompts && (\n <LastPromptsV2 onPromptSelected={handleSelectFromHistory} />\n )}\n\n {inputPrefix}\n\n <Box sx={{ flex: 1, minWidth: 0, display: 'flex', position: 'relative' }}>\n {highlightActive && (\n <Box\n aria-hidden\n sx={{\n position: 'absolute',\n inset: 0,\n pointerEvents: 'none',\n overflow: 'hidden',\n }}\n >\n {/* Inner content layer — same font /\n padding / wrapping rules as the\n textarea, so each token sits at\n the same pixel as its underlying\n character. We transform this layer\n (not the outer) on textarea scroll\n so the clipped frame stays put. */}\n <Box\n ref={highlightContentRef}\n sx={(theme) => ({\n padding: '4px 4px',\n fontFamily: theme.typography.fontFamily,\n fontSize: 13,\n lineHeight: 1.5,\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word',\n // The textarea is the\n // transparent layer — the\n // overlay paints EVERYTHING\n // the user sees: plain text in\n // normal color, trigger tokens\n // in their chip styling.\n color: theme.palette.text.primary,\n willChange: 'transform',\n })}\n >\n {highlightTokens.map((tok, idx) => {\n if (tok.type === 'plain') {\n // Wrap plain text in a\n // span so React doesn't\n // merge adjacent text\n // nodes (which could shift\n // wrapping).\n return <span key={idx}>{tok.text}</span>;\n }\n const color = tok.type === 'slash'\n ? slashColor\n : tok.type === 'at'\n ? atColor\n : hashColor;\n if (!color) {\n return <span key={idx}>{tok.text}</span>;\n }\n return (\n <span\n key={idx}\n style={{\n color,\n backgroundColor: alpha(color, 0.14),\n // Inset box-shadow\n // draws the chip\n // border WITHOUT\n // changing the\n // span's footprint\n // — critical for\n // keeping overlay\n // and textarea\n // glyph positions\n // aligned.\n boxShadow: `inset 0 0 0 1px ${alpha(color, 0.45)}`,\n borderRadius: 4,\n fontWeight: 500,\n }}\n >\n {tok.text}\n </span>\n );\n })}\n {/* Trailing zero-width char keeps\n the final empty line tall — a\n bare trailing newline in the\n textarea otherwise collapses\n in the overlay. */}\n <span>{''}</span>\n </Box>\n </Box>\n )}\n <textarea\n ref={(el: HTMLTextAreaElement | null) => {\n inputRef.current = el;\n }}\n rows={1}\n placeholder={placeholder}\n value={draft}\n disabled={isDisabled}\n // Spellcheck underlines (wavy red lines)\n // sit on top of the transparent glyphs and\n // bleed through to the user as misaligned\n // squiggles when the overlay is on. Turn\n // them off in that mode; leave the default\n // behaviour intact when the overlay isn't\n // mounted.\n spellCheck={highlightActive ? false : undefined}\n onChange={(e) => {\n setDraft(e.target.value);\n syncTriggerFromTextarea(e.target);\n }}\n // `onSelect` covers caret moves that don't\n // change the value (arrow keys, clicks) —\n // without it the popover would drift out of\n // sync if the user navigated into / out of\n // an existing trigger token.\n onSelect={(e) => syncTriggerFromTextarea(e.currentTarget)}\n onBlur={() => {\n // Closing on blur keeps the popover from\n // hanging over the page after the user\n // tabs away. Mouse clicks on items\n // preventDefault on mousedown so the\n // textarea never loses focus first.\n setActiveTrigger(null);\n setCaretCoords(null);\n }}\n onKeyDown={handleKeyDown}\n onScroll={highlightActive ? (e) => {\n // Keep the overlay's text in lockstep\n // with the textarea's scrollTop. Done\n // imperatively (DOM mutation, not\n // state) so multi-line paste / fast\n // scroll doesn't pay a re-render cost.\n if (highlightContentRef.current) {\n highlightContentRef.current.style.transform =\n `translateY(${-e.currentTarget.scrollTop}px)`;\n }\n } : undefined}\n onPaste={(e) => {\n // Pasted images come through as\n // `clipboardData.items` of kind \"file\".\n // We only intercept when there's at\n // least one image in the payload —\n // text-only pastes fall through to the\n // textarea's default behaviour.\n const items = e.clipboardData?.items;\n if (!items) return;\n const files: File[] = [];\n for (let i = 0; i < items.length; i += 1) {\n const it = items[i];\n if (it.kind === 'file' && it.type.startsWith('image/')) {\n const f = it.getAsFile();\n if (f) files.push(f);\n }\n }\n if (files.length > 0) {\n e.preventDefault();\n void addFiles(files);\n }\n }}\n style={{\n width: '100%',\n minHeight: resolvedMinHeight,\n maxHeight: TEXTAREA_MAX_HEIGHT,\n background: 'transparent',\n border: 'none',\n outline: 'none',\n resize: 'none',\n // When the overlay is on, the textarea\n // glyphs go transparent so the chip-\n // styled mirror behind it is the only\n // thing the user sees — but we still\n // need a colored caret, otherwise the\n // textarea looks \"uneditable\". `color:\n // transparent` would normally hide the\n // caret too; `caretColor` brings it\n // back independently.\n color: highlightActive ? 'transparent' : theme.palette.text.primary,\n caretColor: theme.palette.text.primary,\n position: highlightActive ? 'relative' : undefined,\n zIndex: highlightActive ? 1 : undefined,\n fontFamily: theme.typography.fontFamily,\n fontSize: 13,\n lineHeight: 1.5,\n padding: '4px 4px',\n overflow: 'auto',\n // Smooth the splash → execution morph. The\n // `fit()` effect sets concrete px heights,\n // and `min-height` / the resolved floor\n // both change when the host flips\n // `inputMinHeight` (e.g. composerMode\n // moves out of 'empty'). Without this,\n // the textarea jumps; with it the height\n // tweens alongside the layoutId morph.\n transition: 'min-height 250ms cubic-bezier(.4,0,.2,1), height 250ms cubic-bezier(.4,0,.2,1)',\n }}\n />\n </Box>\n\n {/* Host-supplied inline adornment (e.g. composer's\n \"queued sketch changes\" chip). Only shown while\n no turn is open — once an agent run starts, the\n action row morphs into the pause control and\n the adornment loses its frame of reference. */}\n {!isTurnOpen && submitAdornment ? (\n <Box sx={{ flexShrink: 0, marginLeft: 'auto', display: 'inline-flex', alignItems: 'center' }}>\n {submitAdornment}\n </Box>\n ) : null}\n\n {/* Send-button cluster — three states:\n - idle (no turn): Send.\n - turn-running, not suspended: Pause. Calls\n `agentGatewayService.suspend()` and flips the\n shared `suspendState` to 'suspending' so\n RunProgressPanelV2's header morphs in lockstep.\n - turn-running, suspended: Stop + Continue/Send.\n • Stop hard-cancels via `stopStream(true)`.\n • The send button doubles as Continue: if the\n user has text it sends + auto-clears suspend\n (gateway does this in `sendMessageInternal`\n and we pre-empt our own store so the cluster\n flips back to 'idle' immediately); if the\n textarea is empty it calls `cancelSuspend()`\n which finalizes the partial as the turn's\n output without starting a new turn. */}\n {isTurnOpen && !isSuspended ? (\n <Tooltip title=\"Pausar resposta\" placement=\"top\">\n <span style={{ flexShrink: 0, marginLeft: 'auto' }}>\n <IconButton\n size=\"small\"\n disabled={isSuspending}\n onClick={async () => {\n if (!(agentGatewayService instanceof AgentGatewayWSAsync)) return;\n try {\n setSuspendState('suspending');\n const ok = await agentGatewayService.suspend();\n setSuspendState(ok ? 'suspended' : 'idle');\n } catch (err) {\n console.error('[PromptV2] suspend failed', err);\n setSuspendState('idle');\n }\n }}\n sx={(theme) => ({\n color: `${iconColor} !important`,\n backgroundColor: theme.palette.surface.raised,\n border: `1px solid ${theme.palette.divider}`,\n p: 0.75,\n transition: 'background-color .12s, border-color .12s',\n '&:hover': {\n backgroundColor: theme.palette.surface.hover,\n borderColor: theme.palette.primary.main,\n },\n })}\n aria-label=\"Pausar resposta\"\n >\n <PauseIcon size={14} />\n </IconButton>\n </span>\n </Tooltip>\n ) : isSuspended ? (\n <Box\n sx={{\n flexShrink: 0,\n marginLeft: 'auto',\n display: 'inline-flex',\n alignItems: 'center',\n gap: 0.5,\n }}\n >\n <Tooltip title=\"Parar\" placement=\"top\">\n <span>\n <IconButton\n size=\"small\"\n onClick={() => {\n try {\n setTurnOpen(false);\n } catch (err) {\n console.error('[PromptV2] stopStream failed', err);\n }\n }}\n sx={(theme) => ({\n color: `${iconColor} !important`,\n backgroundColor: theme.palette.surface.raised,\n border: `1px solid ${theme.palette.divider}`,\n p: 0.75,\n '&:hover': {\n backgroundColor: theme.palette.surface.hover,\n borderColor: theme.palette.secondary.main,\n },\n })}\n aria-label=\"Parar\"\n >\n <StopIcon size={13} />\n </IconButton>\n </span>\n </Tooltip>\n <Tooltip title={draft.trim() ? 'Continuar com a mensagem' : 'Continuar'} placement=\"top\">\n <span>\n <IconButton\n size=\"small\"\n {...sendButtonProps}\n onClick={() => {\n // Empty textarea: send a\n // canonical \"Continue\" message\n // so the gateway clears its\n // own suspendState (in\n // `sendMessageInternal`) and\n // starts a new turn with that\n // text — the agent receives a\n // user message instructing it\n // to resume from the pause\n // point. Earlier this branch\n // called `cancelSuspend()`\n // which is `turnComplete` in\n // disguise: it FINALIZES the\n // partial output and closes\n // the turn, i.e. the opposite\n // of \"continue\".\n //\n // With typed text we just\n // delegate to handleSend; it\n // already pre-clears the\n // store's suspendState so the\n // cluster flips back to idle\n // immediately.\n void handleSend(draft.trim() ? undefined : 'Continue');\n }}\n sx={(theme) => ({\n color: `${theme.palette.primary.main} !important`,\n backgroundColor: themeMode == 'dark' ? theme.palette.surface.raised : 'unset',\n border: themeMode == 'dark' ? `1px solid ${theme.palette.primary.main}` : 'unset',\n p: 0.75,\n '&:hover': themeMode == 'dark' ? {\n backgroundColor: theme.palette.surface.hover,\n } : null\n })}\n aria-label=\"Continuar\"\n >\n {themeMode == \"dark\"\n ? <SendIcon size={14} />\n : <Stack direction={\"row\"} gap={1} sx={{ backgroundColor: theme.palette.primary.main, p: 1, color: iconColor, borderRadius: theme.shape.radiusSm, display: 'inline-flex', flexWrap: 'nowrap', alignItems: 'center' }}>\n <Typography variant='body2'>Enviar</Typography>\n <SendIcon size={14} />\n </Stack>}\n </IconButton>\n </span>\n </Tooltip>\n </Box>\n ) : (\n <Tooltip title={isConnecting ? 'Conectando…' : 'Enviar'} placement=\"top\">\n <span style={{ flexShrink: 0, marginLeft: 'auto' }}>\n <IconButton\n size=\"small\"\n {...sendButtonProps}\n onClick={() => void handleSend()}\n disabled={sendDisabled}\n sx={(theme) => ({\n color: `${iconColor} !important`,\n p: 0.75,\n // Spinner has its own motion — keep the\n // button at full opacity so it reads as\n // a live \"loading\" affordance instead of\n // the dimmed empty-draft state.\n opacity: isConnecting ? 1 : (sendDisabled ? 0.45 : 1),\n transition: 'opacity .12s',\n // The rotate/translate flourish is for\n // the paper-plane glyph; applying it to\n // the spinner's <svg> would tilt the\n // whole ring and fight its own rotation.\n ...(isConnecting\n ? {}\n : {\n '& svg': {\n transform: 'translateY(-1px) rotate(-15deg)',\n transition: 'transform .15s',\n },\n '&:hover svg': {\n transform: 'translateY(-2px) rotate(-22deg)',\n },\n }),\n })}\n aria-label={isConnecting ? 'Conectando' : 'Enviar'}\n >\n {isConnecting ? (\n <CircularProgress size={14} thickness={5} color=\"inherit\" />\n ) : (themeMode == \"dark\"\n ? <SendIcon size={14} />\n : <Stack direction={\"row\"} gap={1} sx={{ backgroundColor: theme.palette.primary.main, p: 1, color: iconColor, borderRadius: theme.shape.radiusSm, display: 'inline-flex', flexWrap: 'nowrap', alignItems: 'center' }}>\n <Typography variant='body2'>Enviar</Typography>\n <SendIcon size={14} />\n </Stack>)\n }\n </IconButton>\n </span>\n </Tooltip>\n )}\n </Box>\n </Box>\n\n {/* Trigger autocomplete ('/' and '@'). Anchored to a\n virtual element at the caret coords so the popover\n follows wherever in the textarea the user is typing.\n `onMouseDown={preventDefault}` on the Paper stops the\n textarea from blurring when a row is clicked — that's\n how the click handler can still read activeTrigger /\n draft to splice the chosen item in. */}\n <Popper\n open={\n activeTrigger !== null && triggerAnchor !== null && (\n activeTrigger.trigger === '#'\n ? Boolean(enableHashDatePicker)\n : (triggerItems.length > 0 || triggerLoading)\n )\n }\n anchorEl={triggerAnchor as never}\n placement=\"bottom-start\"\n modifiers={[\n { name: 'offset', options: { offset: [0, 6] } },\n { name: 'preventOverflow', options: { padding: 8 } },\n { name: 'flip', options: { fallbackPlacements: ['top-start'] } },\n ]}\n sx={(theme) => ({ zIndex: theme.zIndex.modal + 1 })}\n >\n <Paper\n onMouseDown={(e) => e.preventDefault()}\n sx={(theme) => ({\n // Date picker needs more room than a list row;\n // bump the min when the hash trigger is live.\n minWidth: activeTrigger?.trigger === '#' ? 320 : 220,\n maxWidth: activeTrigger?.trigger === '#' ? 360 : 360,\n maxHeight: activeTrigger?.trigger === '#' ? 'none' : 280,\n overflowY: activeTrigger?.trigger === '#' ? 'visible' : 'auto',\n backgroundColor: theme.palette.surface.raised,\n border: `1px solid ${theme.palette.divider}`,\n boxShadow: theme.shadows[6],\n py: activeTrigger?.trigger === '#' ? 0 : 0.5,\n })}\n >\n {activeTrigger?.trigger === '#' ? (\n // Self-contained LocalizationProvider so the\n // picker works even if the host app didn't\n // mount one up the tree (e.g. in Storybook /\n // a bare library demo).\n <LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale=\"pt-br\">\n <StaticDatePicker\n value={dayjs()}\n onAccept={insertDate}\n onChange={insertDate}\n slotProps={{\n // Hide the OK/Cancel bar — we\n // commit immediately on click and\n // close on Escape. Toolbar (the\n // big date header) is hidden too;\n // the popover's tight width makes\n // it noisy.\n actionBar: { actions: [] },\n toolbar: { hidden: true },\n }}\n sx={{\n '& .MuiPickersLayout-root': {\n backgroundColor: 'transparent',\n },\n }}\n />\n </LocalizationProvider>\n ) : (\n <>\n {triggerLoading && triggerItems.length === 0 && (\n <Box\n sx={(theme) => ({\n px: 1.5,\n py: 1,\n color: theme.palette.text.disabled,\n fontSize: 12,\n fontFamily: theme.typography.fontFamilyMono,\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n })}\n >\n <CircularProgress size={12} thickness={5} color=\"inherit\" />\n Carregando…\n </Box>\n )}\n {triggerItems.map((item, idx) => (\n <Box\n key={item.id}\n role=\"option\"\n aria-selected={idx === triggerHighlight}\n onClick={() => insertTriggerItem(item)}\n onMouseEnter={() => setTriggerHighlight(idx)}\n sx={(theme) => ({\n px: 1.5,\n py: 0.75,\n cursor: 'pointer',\n display: 'flex',\n flexDirection: 'column',\n backgroundColor: idx === triggerHighlight\n ? theme.palette.surface.hover\n : 'transparent',\n transition: 'background-color .08s',\n })}\n >\n <Typography sx={(theme) => ({ fontSize: 12, color: theme.palette.text.primary })}>\n {item.label}\n </Typography>\n {item.hint && (\n <Typography sx={(theme) => ({ fontSize: 10.5, color: theme.palette.text.disabled })}>\n {item.hint}\n </Typography>\n )}\n </Box>\n ))}\n </>\n )}\n </Paper>\n </Popper>\n\n {/* Floating menu — model selector + friendly-mode toggle. */}\n <Menu\n open={!!menuAnchor}\n anchorEl={menuAnchor}\n onClose={() => setMenuAnchor(null)}\n anchorOrigin={{ vertical: 'top', horizontal: 'left' }}\n transformOrigin={{ vertical: 'bottom', horizontal: 'left' }}\n slotProps={{\n paper: {\n sx: (theme) => ({\n backgroundColor: theme.palette.surface.raised,\n border: `1px solid ${theme.palette.divider}`,\n mb: 0.5,\n minWidth: 240,\n }),\n },\n }}\n >\n {showModelSelector !== false && [\n <Box\n key=\"model-section-label\"\n sx={(theme) => ({\n px: 2,\n pt: 1,\n pb: 0.5,\n fontSize: 10,\n color: theme.palette.text.disabled,\n textTransform: 'uppercase',\n letterSpacing: 0.6,\n fontWeight: 500,\n })}\n >\n Modelo\n </Box>,\n <Box\n key=\"model-selector\"\n sx={{\n px: 1,\n pb: 1,\n maxWidth: 520,\n maxHeight: 320,\n overflowY: 'auto',\n overflowX: 'hidden',\n }}\n >\n <ModelSelector inline />\n </Box>,\n <Divider key=\"model-divider\" sx={(theme) => ({ borderColor: theme.palette.border.soft })} />,\n ]}\n\n <Box\n sx={(theme) => ({\n px: 2,\n pt: 1,\n pb: 0.5,\n fontSize: 10,\n color: theme.palette.text.disabled,\n textTransform: 'uppercase',\n letterSpacing: 0.6,\n fontWeight: 500,\n })}\n >\n Preferências\n </Box>\n\n <MenuItem\n onClick={() => setFriendlyMode(!friendlyMode)}\n sx={(theme) => ({ fontSize: 12, color: theme.palette.text.primary, py: 1 })}\n >\n <ListItemText\n primary=\"Modo amigável\"\n secondary={friendlyMode ? 'Mostra rótulos legíveis para tool-calls' : 'Mostra payloads brutos'}\n primaryTypographyProps={{ fontSize: 12 }}\n secondaryTypographyProps={{ fontSize: 10.5, color: theme.palette.text.disabled }}\n />\n <Switch\n size=\"small\"\n checked={friendlyMode}\n onChange={(_, v) => setFriendlyMode(v)}\n onClick={(e) => e.stopPropagation()}\n />\n </MenuItem>\n\n <MenuItem\n onClick={() => setShowToolCalls(!showToolCalls)}\n sx={(theme) => ({ fontSize: 12, color: theme.palette.text.primary, py: 1 })}\n >\n <ListItemText\n primary=\"Mostrar tool-calls\"\n secondary=\"Inclui chamadas de ferramentas no chat (além do painel de execução)\"\n primaryTypographyProps={{ fontSize: 12 }}\n secondaryTypographyProps={{ fontSize: 10.5, color: theme.palette.text.disabled }}\n />\n <Switch\n size=\"small\"\n checked={showToolCalls}\n onChange={(_, v) => setShowToolCalls(v)}\n onClick={(e) => e.stopPropagation()}\n />\n </MenuItem>\n\n {showSessionInfo !== false && [\n <Divider key=\"debug-divider\" sx={(theme) => ({ borderColor: theme.palette.border.soft, my: 0.5 })} />,\n <Box\n key=\"debug-label\"\n sx={(theme) => ({\n px: 2,\n pt: 1,\n pb: 0.5,\n fontSize: 10,\n color: theme.palette.text.disabled,\n textTransform: 'uppercase',\n letterSpacing: 0.6,\n fontWeight: 500,\n })}\n >\n Debug\n </Box>,\n <MenuItem\n key=\"connection-toggle\"\n onClick={() => handleToggleConnection(!isConnected)}\n sx={(theme) => ({ fontSize: 12, color: theme.palette.text.primary, py: 1 })}\n >\n <ListItemText\n primary=\"Conexão WebSocket\"\n secondary={isConnected ? 'Conectado — alternar simula desconexão' : 'Desconectado — alternar reabre a sessão'}\n primaryTypographyProps={{ fontSize: 12 }}\n secondaryTypographyProps={{ fontSize: 10.5, color: theme.palette.text.disabled }}\n />\n <Switch\n size=\"small\"\n checked={isConnected}\n onChange={(_, v) => handleToggleConnection(v)}\n onClick={(e) => e.stopPropagation()}\n />\n </MenuItem>,\n <MenuItem\n key=\"session-data\"\n onClick={() => {\n setMenuAnchor(null);\n setSessionDialogOpen(true);\n }}\n sx={(theme) => ({ fontSize: 12, color: theme.palette.text.primary, py: 1 })}\n >\n <ListItemIcon sx={(theme) => ({ color: theme.palette.text.secondary, minWidth: 28 })}>\n <DataObjectIcon fontSize=\"small\" />\n </ListItemIcon>\n <ListItemText\n primary=\"Ver dados da sessão\"\n primaryTypographyProps={{ fontSize: 12 }}\n />\n </MenuItem>,\n ]}\n </Menu>\n\n <SessionDataDialog\n open={sessionDialogOpen}\n onClose={() => setSessionDialogOpen(false)}\n />\n\n {/* Image preview lightbox. Opens when the user clicks an\n attachment thumbnail; closes on backdrop click, ESC,\n or the explicit close button. The image scales to fit\n the viewport (max 90vw / 90vh) so portrait shots and\n wide screenshots both stay fully visible. */}\n <Modal\n open={previewAttachment !== null}\n onClose={() => setPreviewAttachment(null)}\n aria-labelledby=\"prompt-attachment-preview\"\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n slotProps={{\n backdrop: {\n sx: { backgroundColor: alpha('#000', 0.85) },\n },\n }}\n >\n <Box\n onClick={() => setPreviewAttachment(null)}\n sx={{\n position: 'relative',\n outline: 'none',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: '100vw',\n height: '100vh',\n }}\n >\n {previewAttachment && (\n <Box\n component=\"img\"\n src={previewAttachment.dataUrl}\n alt={previewAttachment.name}\n // Stop click on the image itself from closing\n // the modal so users can interact with it\n // (right-click → save, drag, etc.).\n onClick={(e) => e.stopPropagation()}\n sx={{\n maxWidth: '90vw',\n maxHeight: '90vh',\n objectFit: 'contain',\n borderRadius: 1,\n boxShadow: 6,\n }}\n />\n )}\n <IconButton\n onClick={() => setPreviewAttachment(null)}\n aria-label=\"Fechar pré-visualização\"\n sx={(theme) => ({\n position: 'absolute',\n top: 16,\n right: 16,\n backgroundColor: alpha(theme.palette.background.default, 0.7),\n color: theme.palette.common.white,\n '&:hover': {\n backgroundColor: alpha(theme.palette.background.default, 0.9),\n },\n })}\n >\n <CloseIcon />\n </IconButton>\n {previewAttachment && (\n <Typography\n id=\"prompt-attachment-preview\"\n sx={(theme) => ({\n position: 'absolute',\n bottom: 16,\n left: '50%',\n transform: 'translateX(-50%)',\n px: 1.5,\n py: 0.5,\n borderRadius: 1,\n backgroundColor: alpha(theme.palette.background.default, 0.7),\n color: theme.palette.common.white,\n fontSize: 12,\n fontFamily: theme.typography.fontFamilyMono,\n maxWidth: '80vw',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n })}\n >\n {previewAttachment.name}\n </Typography>\n )}\n </Box>\n </Modal>\n\n {/* Subtle hint while a turn is in flight. The cancel/pause\n affordances live in RunProgressPanelV2 so this row stays\n minimal — a single status line, no buttons. */}\n {isTurnOpen && false && (\n <Typography\n sx={(theme) => ({\n mt: 0.5,\n fontSize: 10.5,\n color: theme.palette.text.disabled,\n fontFamily: theme.typography.fontFamilyMono,\n textAlign: 'center',\n })}\n >\n O agente está respondendo. Use Pausar / Cancelar no painel à direita para interromper.\n </Typography>\n )}\n </Box>\n );\n});\n\nPromptV2.displayName = 'PromptV2';\n","import React, { createContext, useContext } from 'react';\nimport ReactMarkdown from 'react-markdown';\nimport remarkGfm from 'remark-gfm'\nimport rehypeRaw from 'rehype-raw';\nimport { Stack, useTheme } from '@mui/material';\nimport OpenInNewIcon from '@mui/icons-material/OpenInNew';\nimport TaskAlt from '@mui/icons-material/TaskAlt';\nimport { Download, RadioButtonUncheckedOutlined } from '@mui/icons-material';\nimport FormatQuoteIcon from '@mui/icons-material/FormatQuote';\nimport {\n SentimentSatisfiedAlt,\n Favorite,\n ThumbUp,\n ThumbDown,\n Star,\n Warning,\n CheckCircle,\n Error,\n EmojiEmotions,\n Lightbulb,\n Info,\n Help,\n BugReport,\n Security,\n Speed,\n TrendingUp,\n TrendingDown,\n AutoGraph,\n DataExploration,\n AutoStories\n} from '@mui/icons-material';\n\nimport { getServerBaseUrl } from '@lib/utils/environmentUtils';\nimport { EventBusService } from '@lib/services/eventBusService';\nimport { blue, grey } from '@mui/material/colors';\nimport { useAiChatServices } from '../AiChat/AiChatContext';\nimport { themeTokens } from '@lib/themes/v2';\n\n/**\n * Walks a React node tree and concatenates every string/number leaf\n * into plain text. Necessary because `node.toString()` on an array of\n * elements (which is what react-markdown hands the `a` renderer for\n * `[label](href)`) returns the literal string `\"[object Object]\"`.\n */\nfunction reactNodeToText(node: React.ReactNode): string {\n if (node == null || typeof node === 'boolean') return '';\n if (typeof node === 'string') return node;\n if (typeof node === 'number') return String(node);\n if (Array.isArray(node)) return node.map(reactNodeToText).join('');\n if (React.isValidElement(node)) {\n const children = (node.props as { children?: React.ReactNode }).children;\n return reactNodeToText(children);\n }\n return '';\n}\n\nlet SyntaxHighlighter: any = null;\nlet HighlighterStyle: any = null;\n\nif (typeof window !== 'undefined') {\n Promise.all([\n import('react-syntax-highlighter/dist/esm/prism-light'),\n import('react-syntax-highlighter/dist/esm/styles/prism/one-dark'),\n import('react-syntax-highlighter/dist/esm/languages/prism/python'),\n import('react-syntax-highlighter/dist/esm/languages/prism/javascript'),\n import('react-syntax-highlighter/dist/esm/languages/prism/typescript'),\n import('react-syntax-highlighter/dist/esm/languages/prism/sql'),\n import('react-syntax-highlighter/dist/esm/languages/prism/json'),\n import('react-syntax-highlighter/dist/esm/languages/prism/markdown'),\n import('react-syntax-highlighter/dist/esm/languages/prism/markup'),\n import('react-syntax-highlighter/dist/esm/languages/prism/bash'),\n import('react-syntax-highlighter/dist/esm/languages/prism/markup'),\n import('react-syntax-highlighter/dist/esm/languages/prism/css'),\n import('react-syntax-highlighter/dist/esm/languages/prism/csharp'),\n import('react-syntax-highlighter/dist/esm/languages/prism/yaml'),\n ]).then(([prismLight, style, markdown, markup, python, javascript, typescript, sql, json, bash, css, csharp, yaml]) => {\n SyntaxHighlighter = prismLight.default;\n HighlighterStyle = style.default;\n SyntaxHighlighter.registerLanguage('python', python.default);\n SyntaxHighlighter.registerLanguage('markdown', markdown.default);\n SyntaxHighlighter.registerLanguage('javascript', javascript.default);\n SyntaxHighlighter.registerLanguage('typescript', typescript.default);\n SyntaxHighlighter.registerLanguage('sql', sql.default);\n SyntaxHighlighter.registerLanguage('json', json.default);\n SyntaxHighlighter.registerLanguage('bash', bash.default);\n SyntaxHighlighter.registerLanguage('shell', bash.default);\n SyntaxHighlighter.registerLanguage('html', markup.default);\n SyntaxHighlighter.registerLanguage('xml', markup.default);\n SyntaxHighlighter.registerLanguage('css', css.default);\n SyntaxHighlighter.registerLanguage('csharp', csharp.default);\n SyntaxHighlighter.registerLanguage('yaml', yaml.default);\n }).catch((err) => console.error('Failed to load syntax highlighter:', err));\n}\n\nconst rootImageUrl = `${getServerBaseUrl()}/open/getImage`;\n\ninterface MarkdownExtendedProps {\n text: string;\n sessionId: string;\n preStyle?: React.CSSProperties | null;\n onDrawCodeBlock?: (code: string, className: string) => React.ReactNode;\n onLinkClicked?: (link: string, content: string | null) => void;\n mode?: 'compact' | 'full',\n readingMode?: boolean\n partial?: boolean\n /**\n * Heading-style variant.\n * - `'classic'` (default): bold headings in `theme.palette.primary.main`\n * with a colored bottom border. Matches the v1 dashboard-app look.\n * - `'minimal'`: subtler text-color headings with no border, smaller\n * font sizes — for chat / inline content where headings shouldn't\n * compete with the surrounding chrome (used by the v2 layout).\n */\n variant?: 'classic' | 'minimal'\n}\n\n/**\n * Lets a parent subtree opt every nested `MarkdownExtended` into the\n * minimal heading style without prop-drilling. The explicit `variant`\n * prop on `MarkdownExtended` always wins.\n */\nexport interface MarkdownExtendedDefaults {\n variant?: 'classic' | 'minimal';\n}\nexport const MarkdownExtendedContext = createContext<MarkdownExtendedDefaults>({});\nexport const useMarkdownExtendedDefaults = (): MarkdownExtendedDefaults =>\n useContext(MarkdownExtendedContext);\n\n// Icon mapping component\nconst InlineIcon: React.FC<{ iconCode: string }> = ({ iconCode }) => {\n const iconMap: Record<string, React.ReactElement> = {\n 'smile': <SentimentSatisfiedAlt fontSize=\"small\" />,\n 'sad': <SentimentSatisfiedAlt fontSize=\"small\" />,\n 'thumbsup': <ThumbUp fontSize=\"small\" />,\n 'thumbsdown': <ThumbDown fontSize=\"small\" />,\n 'heart': <Favorite fontSize=\"small\" />,\n 'star': <Star fontSize=\"small\" />,\n 'warning': <Warning fontSize=\"small\" />,\n 'check': <CheckCircle fontSize=\"small\" />,\n 'x': <Error fontSize=\"small\" />,\n 'emoji': <EmojiEmotions fontSize=\"small\" color=\"primary\" />,\n 'lightbulb': <Lightbulb fontSize=\"small\" />,\n 'info': <Info fontSize=\"small\" color=\"info\" />,\n 'help': <Help fontSize=\"small\" color=\"info\" />,\n 'bug': <BugReport fontSize=\"small\" />,\n 'security': <Security fontSize=\"small\" />,\n 'speed': <Speed fontSize=\"small\" color=\"primary\" />,\n 'trending_up': <TrendingUp fontSize=\"small\" />,\n 'trending_down': <TrendingDown fontSize=\"small\" />,\n 'autograph': <AutoGraph fontSize=\"small\" />,\n 'dataobject': <AutoStories fontSize=\"small\" />,\n 'dataexploration': <DataExploration fontSize=\"small\" />,\n 'autostories': <AutoStories fontSize=\"small\" />,\n };\n\n return (\n <span style={{\n display: 'inline-flex',\n alignItems: 'center',\n verticalAlign: 'middle',\n marginTop: '-4px'\n }}>\n {iconMap[iconCode.toLowerCase()] || <span>:{iconCode}:</span>}\n </span>\n );\n};\n\nconst MarkdownExtended: React.FC<MarkdownExtendedProps> = ({ text, sessionId, preStyle: _propPreStyle, onLinkClicked, partial, mode = 'full', variant: variantProp }) => {\n const ctxDefaults = useMarkdownExtendedDefaults();\n // v2 is the default surface — minimal headings (no amber/blue tint,\n // no underline, smaller font sizes). Legacy v1 surfaces opt back to\n // 'classic' via the prop or context.\n const variant = variantProp ?? ctxDefaults.variant ?? 'minimal';\n const theme = useTheme();\n\n let processedText = text;\n\n const { eventBusService } = useAiChatServices();\n\n const componentsFull: any = {\n span: ({ children, className, ...props }: any) => {\n if (className === 'inline-icon' && props['data-icon']) {\n return <InlineIcon iconCode={props['data-icon']} />;\n }\n return <span className={className} {...props}>{children}</span>;\n },\n img: ({ children, src, ...props }: any) => {\n return <div style={{ width: '100%', padding: '5px', margin: '16px 2px', borderRadius: '6px', border: '1px solid #333' }}><img src={`${rootImageUrl}/${src}`} {...props} style={{ width: '100%' }} /></div>\n },\n input: ({ checked, disabled, ...props }: any) => {\n // Check if this is a checkbox (task list item)\n if (props.type === 'checkbox') {\n return checked ? (\n <TaskAlt\n sx={{\n verticalAlign: 'middle',\n marginRight: '4px',\n fontSize: 'inherit',\n color: theme.palette.primary.main,\n marginTop: '-2px'\n }}\n />\n ) : (\n <RadioButtonUncheckedOutlined\n sx={{\n verticalAlign: 'middle',\n marginRight: '4px',\n fontSize: 'inherit',\n color: theme.palette.text.secondary,\n marginTop: '-2px'\n }}\n />\n );\n }\n return <input checked={checked} disabled={disabled} {...props} />;\n },\n\n a: ({ children, href }: { children: React.ReactNode; href?: string }) =>\n <Stack direction=\"row\" style={{ cursor: 'pointer', display: 'inline' }}>\n <a\n href={href}\n style={{ color: \"var(--text-secondary)\", textDecoration: 'none' }}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n if (onLinkClicked)\n // `children` is a React node — calling `.toString()` on\n // an array of nodes (or any element) yields the literal\n // string \"[object Object]\", which then gets shoved into\n // the prompt input when this fires for `#ask-...` links.\n // Walk the tree and pull out every string/number leaf\n // so the host receives the link's actual text content.\n onLinkClicked(href ?? \"\", reactNodeToText(children) || null);\n }}>\n <div style={{ display: 'inline', alignItems: 'left', verticalAlign: 'middle', textWrap: 'wrap', color: theme.palette.text.primary, textDecorationColor: theme.palette.secondary.main }}>\n {children}\n {href?.startsWith(\"#\") ?\n <OpenInNewIcon sx={{ position: 'relative', top: \"3px\", fontSize: '16px', marginLeft: '4px', marginTop: '-2px', color: theme.palette.secondary.main }} />\n :\n <Download sx={{ position: 'relative', top: \"3px\", fontSize: '16px', marginLeft: '4px', marginTop: '-2px', color: theme.palette.secondary.main }} />\n }\n\n </div>\n </a>\n </Stack>\n ,\n strong: ({ children }: { children: React.ReactNode }) => <strong style={{ fontWeight: 'bold', marginLeft: 1, marginRight: 1 }}>{children}</strong>,\n // ul: ({ children }: { children: React.ReactNode }) => <ul className=\"fa-ul\">{children}</ul>,\n // li: ({ children }: { children: React.ReactNode }) => <li><span className=\"fa-li\"><i className=\"fa-solid fa-pen-to-square\"></i></span>{children}</li>,\n // ol: ({ children }: { children: React.ReactNode }) => <ol className=\"fa-ol\">{children}</ol>,\n code: ({ className, children }: { className?: string; children: React.ReactNode }) => {\n const match = /language-(\\w+)/.exec(className || '');\n const language = match ? match[1] : className ?? '';\n\n //let codeTag: React.ReactNode | null = null;\n if (!className) {\n className = \"\";\n }\n\n if (language) {\n if (partial) {\n // While streaming, skip Prism — its tokenizer re-tokenizes\n // the entire (growing) block on every chunk and is a top\n // offender for blocking the main thread between WS messages.\n // Match SyntaxHighlighter's `PreTag=\"div\"` so a `<pre>` tag\n // doesn't appear and trip a reveal/animation rule somewhere\n // upstream — keep `white-space: pre-wrap` on the div so the\n // formatting holds.\n return (\n <div style={{\n whiteSpace: 'pre-wrap',\n overflow: 'auto',\n fontSize: '0.9em',\n marginTop: '0px',\n padding: '0.5em 0.75em',\n borderRadius: '4px',\n backgroundColor: 'rgba(0, 0, 0, 0.3)',\n color: theme.palette.text.primary,\n fontFamily: 'monospace',\n }}>\n {String(children)}\n </div>\n );\n }\n return getSyntaxHighlighter(children, language);\n }\n else {\n return <code style={{\n backgroundColor: theme.palette.background.default,\n color: theme.palette.text.primary,\n borderColor: theme.palette.border.default,\n padding: '2px',\n borderRadius: '4px',\n fontFamily: 'monospace',\n fontSize: '0.9em',\n overflow: 'auto',\n textOverflow: 'ellipsis',\n maxWidth: '100%'\n }}>\n {children}\n </code>\n }\n },\n pre: ({ children }: { children: React.ReactNode }) => (\n <div style={{ display: 'inherit', flexWrap: 'inherit', gap: 'inherit', textWrap: 'inherit' }}>\n {children}\n </div>\n ),\n\n blockquote: ({ children }: { children: React.ReactNode }) => (\n <blockquote style={{\n alignSelf: 'flex-start',\n whiteSpace: 'break-spaces',\n overflowWrap: 'break-word',\n margin: '16px 0px',\n padding: '8px 4px 2px 8px',\n width: '100%',\n borderRadius: '6px',\n backgroundColor: theme.palette.surface.raised,\n fontStyle: 'italic'\n }}>\n <Stack direction={\"row\"} gap={2} sx={{ display: 'inline-flex', alignItems: \"center\", flexWrap: 'nowrap' }}>\n <FormatQuoteIcon sx={{ position: \"relative\", top: -20 }} />\n {children}\n </Stack>\n </blockquote>\n ),\n }\n\n const hStyleClassic: React.CSSProperties = { color: theme.palette.primary.main, maxWidth: '95%', borderBottom: `1px solid ${theme.palette.primary.main}`, fontSize: '1.5em', margin: '0 0 8px 0', fontWeight: 'bold' };\n const hStyleMinimal: React.CSSProperties = {\n color: theme.palette.text.primary,\n fontWeight: 600,\n fontSize: '1.05em',\n margin: '10px 0 4px 0',\n lineHeight: 1.3,\n display: 'block',\n };\n const hStyle = variant === 'minimal' ? hStyleMinimal : hStyleClassic;\n\n // Heading components added to componentsFull only in minimal mode —\n // in classic mode the chat falls back to the browser's default huge\n // h1/h2 styles (existing v1 behavior left untouched).\n const minimalHeadings = {};\n Object.assign(componentsFull, minimalHeadings);\n const componentsCompact: any = {\n input: ({ checked, disabled, ...props }: any) => {\n // Check if this is a checkbox (task list item)\n if (props.type === 'checkbox') {\n return checked ? (\n <TaskAlt\n sx={{\n verticalAlign: 'middle',\n marginRight: '4px',\n fontSize: 'inherit',\n color: theme.palette.primary.main,\n marginTop: '-2px'\n }}\n />\n ) : (\n <RadioButtonUncheckedOutlined\n sx={{\n verticalAlign: 'middle',\n marginRight: '4px',\n fontSize: 'inherit',\n color: theme.palette.text.secondary,\n marginTop: '-2px'\n }}\n />\n );\n }\n return <input checked={checked} disabled={disabled} {...props} />;\n },\n p: ({ children }: { children: React.ReactNode }) => <span style={{ margin: '0 0 0 0', display: 'inline' }}>{children}</span>,\n // h1: ({ children }: { children: React.ReactNode }) => <h1 style={{ color: theme.palette.primary.main, maxWidth: '95%', fontSize: '1.5em', margin: '0 0 8px 0', fontWeight: 'bold' }}>{children}</h1>,\n // h2: ({ children }: { children: React.ReactNode }) => <h1 style={{ color: theme.palette.primary.main, maxWidth: '95%', fontSize: '1.5em', margin: '0 0 8px 0', fontWeight: 'bold' }}>{children}</h1>,\n // h3: ({ children }: { children: React.ReactNode }) => hStyle ? <span style={hStyle}>{children}</span> : <h3>{children}</h3>,\n // h4: ({ children }: { children: React.ReactNode }) => hStyle ? <span style={hStyle}>{children}</span> : <h4>{children}</h4>,\n // h5: ({ children }: { children: React.ReactNode }) => hStyle ? <span style={hStyle}>{children}</span> : <h5>{children}</h5>,\n // h6: ({ children }: { children: React.ReactNode }) => hStyle ? <span style={hStyle}>{children}</span> : <h6>{children}</h6>,\n ul: ({ children }: { children: React.ReactNode }) => <ul style={{ margin: '8px 0', paddingLeft: '20px' }}>{children}</ul>,\n ol: ({ children }: { children: React.ReactNode }) => <ol style={{ margin: '8px 0', paddingLeft: '20px' }}>{children}</ol>,\n li: ({ children }: { children: React.ReactNode }) => <li style={{ margin: '4px 0' }}>{children}</li>,\n strong: ({ children }: { children: React.ReactNode }) => <strong style={{ fontWeight: 'bold' }}>{children}</strong>,\n em: ({ children }: { children: React.ReactNode }) => <em style={{ fontStyle: 'italic' }}>{children}</em>,\n }\n\n const components = (mode === 'compact') ? componentsCompact : componentsFull;\n text = mode === 'compact' ? text.substring(0, 400) : text;\n\n const getSyntaxHighlighter = (children: React.ReactNode, language: string) => {\n if (!SyntaxHighlighter) {\n return <code style={{ whiteSpace: 'pre-wrap', fontSize: '0.9em' }}>{String(children)}</code>;\n }\n return (\n <SyntaxHighlighter\n style={HighlighterStyle || {}}\n language={language}\n customStyle={{\n whiteSpace: 'pre-wrap',\n overflow: 'auto',\n fontSize: '0.9em',\n marginTop: '0px',\n backgroundColor: 'rgba(0, 0, 0, 0.3)',\n }}\n PreTag=\"div\"\n >\n {String(children)}\n </SyntaxHighlighter>\n );\n }\n\n return (\n <ReactMarkdown\n skipHtml={false}\n urlTransform={(url) => {\n return url;\n }}\n // components={{\n // a: () => null;\n // }}\n components={components}\n remarkPlugins={[remarkGfm]}\n rehypePlugins={[rehypeRaw]}\n >\n {processedText}\n </ReactMarkdown >\n );\n};\n\nexport default MarkdownExtended;","import { forwardRef, useCallback, useState } from 'react';\nimport { Box, Drawer, IconButton, Tooltip, Typography } from '@mui/material';\nimport { Close } from '@mui/icons-material';\nimport type { AiChatDrawerProps, AiChatHandle } from './AiChatTypes';\nimport AiChat from './AiChat';\n\nconst AiChatDrawer = forwardRef<AiChatHandle, AiChatDrawerProps>((props, ref) => {\n const {\n open,\n onClose,\n anchor = 'right',\n width = '40vw',\n title,\n onVisibleQuestionChange: externalOnVisibleQuestionChange,\n ...aiChatProps\n } = props;\n\n const [visibleQuestion, setVisibleQuestion] = useState<string | null>(null);\n\n const handleVisibleQuestionChange = useCallback((question: string | null) => {\n setVisibleQuestion(question);\n externalOnVisibleQuestionChange?.(question);\n }, [externalOnVisibleQuestionChange]);\n\n const displayTitle = visibleQuestion || title || 'Chat';\n\n return (\n <Drawer\n anchor={anchor}\n open={open}\n onClose={onClose}\n ModalProps={{ keepMounted: true }}\n slotProps={{\n paper: {\n sx: {\n width,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n }\n },\n }}\n >\n <Box sx={{ px: 2, py: 1, display: 'flex', alignItems: 'center', flexShrink: 0, borderBottom: 1, borderColor: 'divider' }}>\n <Tooltip title={displayTitle} enterDelay={500}>\n <Typography\n variant=\"subtitle1\"\n sx={{\n flex: 1,\n fontWeight: 600,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {displayTitle}\n </Typography>\n </Tooltip>\n {onClose && (\n <IconButton size=\"small\" onClick={onClose} edge=\"end\" sx={{ ml: 1, flexShrink: 0 }}>\n <Close fontSize=\"small\" />\n </IconButton>\n )}\n </Box>\n <Box sx={{ flex: 1, overflow: 'hidden' }}>\n <AiChat ref={ref} {...aiChatProps} onVisibleQuestionChange={handleVisibleQuestionChange} />\n </Box>\n </Drawer>\n );\n});\n\nAiChatDrawer.displayName = 'AiChatDrawer';\n\nexport { AiChatDrawer };\n","import { forwardRef, useCallback, useState } from 'react';\nimport { Box, IconButton, keyframes, Paper, Slide, Tooltip, Typography } from '@mui/material';\nimport { Close } from '@mui/icons-material';\n\nconst popIn = keyframes`\n 0% { opacity: 0; transform: translateY(40px) scale(0.4); }\n 60% { opacity: 1; transform: translateY(-4px) scale(1.05); }\n 100% { opacity: 1; transform: translateY(0) scale(1); }\n`;\nimport type { AiChatFloatingProps, AiChatHandle } from './AiChatTypes';\nimport AiChat from './AiChat';\nimport TipsAndUpdates from '@mui/icons-material/TipsAndUpdates';\n\nconst AiChatFloating = forwardRef<AiChatHandle, AiChatFloatingProps>((props, ref) => {\n const position = { bottom: 18, right: 24, ...props.position };\n const {\n fabContent,\n width = '50vw',\n height = '75vh',\n title,\n borderRadius = 3,\n elevation = 8,\n onVisibleQuestionChange: externalOnVisibleQuestionChange,\n ...aiChatProps\n } = props;\n\n const [open, setOpen] = useState(false);\n const [visibleQuestion, setVisibleQuestion] = useState<string | null>(null);\n\n const handleVisibleQuestionChange = useCallback((question: string | null) => {\n let mappedQuestion = question;\n if (props.onRenderPrompt && question) {\n const { promptAsString, json } = props.onRenderPrompt(question)\n mappedQuestion = promptAsString ?? null;\n }\n setVisibleQuestion(mappedQuestion ?? \"\");\n externalOnVisibleQuestionChange?.(question);\n }, [externalOnVisibleQuestionChange]);\n\n const displayTitle = visibleQuestion || title || 'Chat';\n\n const panelBottom = position.bottom ? position.bottom + (props.chatPositionOffSet?.bottom ?? 0) : undefined;\n const panelRight = position.right ? (position.right ?? 0) + (props.chatPositionOffSet?.right ?? 0) : undefined;\n const panelLeft = position.left ? position.left + (props.chatPositionOffSet?.left ?? 0) : undefined;\n const panelTop = position.top != null ? (position.top + 20 + (props.chatPositionOffSet?.top ?? 0)) : undefined;\n\n return (\n <>\n <Slide direction=\"up\" in={open}>\n <Paper\n elevation={elevation}\n sx={{\n position: 'fixed',\n bottom: panelTop != null ? undefined : panelBottom,\n top: panelTop,\n right: panelRight,\n left: panelLeft,\n backgroundColor: '#000000d6',\n backdropFilter: 'blur(3px)',\n width,\n height,\n borderRadius,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n border: '1px solid gray',\n zIndex: 10000,\n visibility: open ? 'visible' : 'hidden',\n pointerEvents: open ? 'auto' : 'none',\n }}\n >\n <Box sx={{ px: 2, py: 1, display: 'flex', alignItems: 'center', flexShrink: 0, borderBottom: 1, borderColor: 'divider' }}>\n <Tooltip title={displayTitle} enterDelay={500}>\n <Typography\n variant=\"subtitle1\"\n sx={{\n flex: 1,\n fontWeight: 600,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n }}\n >\n {displayTitle}\n </Typography>\n </Tooltip>\n <IconButton size=\"small\" onClick={() => setOpen(false)} edge=\"end\" sx={{ ml: 1, flexShrink: 0 }}>\n <Close fontSize=\"small\" />\n </IconButton>\n </Box>\n <Box sx={{ flex: 1, overflow: 'hidden' }}>\n <AiChat\n ref={ref}\n {...aiChatProps}\n borderRadius={0}\n elevation={0}\n onVisibleQuestionChange={handleVisibleQuestionChange}\n />\n </Box>\n </Paper>\n </Slide>\n\n {!open && (<Box\n sx={{\n position: 'fixed',\n ...position,\n zIndex: 10000,\n animation: `${popIn} 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) both`,\n }}\n >\n {fabContent ? (\n <Box onClick={() => setOpen((o) => !o)} sx={{ cursor: 'pointer' }}>\n {fabContent}\n </Box>\n ) : (\n <Box\n onClick={() => {\n setOpen((o) => !o);\n if (props.onFloatingOpened) props.onFloatingOpened();\n }}\n sx={{\n position: 'relative',\n width: 48,\n height: 48,\n borderRadius: '12px',\n backgroundColor: 'primary.dark',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n boxShadow: '0 2px 8px rgba(0,0,0,0.4)',\n transition: 'transform 0.15s ease, box-shadow 0.15s ease',\n '&:hover': {\n transform: 'scale(1.08)',\n boxShadow: '0 4px 14px rgba(0,0,0,0.5)',\n },\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: -8,\n right: 6,\n width: 16,\n height: 16,\n backgroundColor: 'primary.dark',\n clipPath: 'polygon(0 0, 100% 0, 100% 100%)',\n borderRadius: '0 0 2px 0',\n },\n }}\n >\n <TipsAndUpdates sx={{ color: '#ccc', fontSize: 24 }} />\n <Box sx={{\n position: 'absolute',\n bottom: -16,\n right: -4,\n width: 8,\n height: 8,\n borderRadius: '50%',\n backgroundColor: 'primary.dark',\n }} />\n </Box>\n )}\n </Box>)}\n </>\n );\n});\n\nAiChatFloating.displayName = 'AiChatFloating';\n\nexport { AiChatFloating };\n","import type React from 'react';\nimport type { InteractionPart } from '@lib/models/InteractionPart';\nimport type { Interaction } from '@lib/models/Interaction';\n\n// Logical grouping for renderer dispatch. Multiple EventTypes can map to\n// the same kind — notably, the three function event types share a single\n// `'function'` renderer because they're the same part mutating through\n// states. `'boxed'` is the catch-all for event types that today render\n// through `MessageNonTextDisplay` (InlineData, FileData, code execution,\n// etc.).\nexport type PartKind =\n | 'text'\n | 'thought'\n | 'function'\n | 'waiting'\n | 'suspended'\n | 'boxed'\n // UI render tools (server marks them with a `UI_` name prefix / later a\n // dedicated UIFunctionCall content type). First-class content: rendered by\n // a host-provided renderer and NOT gated by `showToolCalls`.\n | 'uiTool'\n // ask_user: a yes/no question rendered with Yes/No buttons inside the library\n // (built-in, not host-provided like uiTool). Routed by function name, not isUi.\n | 'askUser';\n\nexport interface PartRendererProps {\n part: InteractionPart;\n message: Interaction;\n onGoing: boolean;\n preview: boolean;\n isLastInlineInGroup?: boolean;\n friendlyMode?: boolean;\n onLinkClicked: (link: string, content: string | null) => void;\n}\n\nexport type PartRenderer = React.ComponentType<PartRendererProps>;\nexport type PartRendererMap = Partial<Record<PartKind, PartRenderer>>;\n\n/**\n * Match the ask_user tool by function name across connectors. The programmed\n * path emits the bare `ask_user`; live LLM connectors qualify it as\n * `{Plugin}-ask_user` / `{Plugin}_ask_user` (with an empty pluginName), so a\n * literal `=== 'ask_user'` misses real-model calls.\n */\nexport const isAskUser = (name?: string | null): boolean =>\n !!name && (name === 'ask_user' || name.endsWith('-ask_user') || name.endsWith('_ask_user'));\n","import React, { type CSSProperties } from 'react';\nimport { InteractionPartUtils } from '@lib/models/InteractionPart';\nimport { ANALYTICS_AGENT_NAME } from '@lib/utils/environmentUtils';\nimport { LlmResponseRender } from '@lib/components';\nimport type { PartRendererProps } from './types';\n\nconst TextPart: React.FC<PartRendererProps> = ({ part, message, preview, onGoing, friendlyMode, onLinkClicked }) => {\n const textContent = InteractionPartUtils.getPartTextContent(part);\n const styleAutor: CSSProperties = part.author === ANALYTICS_AGENT_NAME\n ? { backgroundColor: \"var(--background-paper)\", padding: '20px 10px', borderRadius: '5px' }\n : { margin: '5px 0px', display: 'unset' };\n\n return (\n <div style={styleAutor}>\n <LlmResponseRender\n content={textContent ?? \"\"}\n partial={preview}\n sessionId={message.sessionId ?? 'ND'}\n onLinkClicked={onLinkClicked}\n message={message}\n onGoing={onGoing}\n friendlyMode={friendlyMode}\n />\n </div>\n );\n};\n\nexport default TextPart;\n","import React, { useEffect, useRef, useState } from 'react';\nimport { InteractionPartUtils } from '@lib/models/InteractionPart';\nimport { IconButton, Stack } from \"@mui/material\";\nimport { ChevronRight } from '@mui/icons-material';\nimport MarkdownExtended from \"../../../Library/MarkdowmExtended\";\nimport type { PartRendererProps } from './types';\n\nconst ThoughtPart: React.FC<PartRendererProps> = ({\n part,\n message,\n onGoing,\n preview,\n isLastInlineInGroup = false,\n friendlyMode = false,\n onLinkClicked,\n}) => {\n // Initialize from props so the first paint already matches the\n // intended collapsed state. Otherwise the default `false` makes\n // every thought briefly render open, then animate shut once the\n // effect below runs — fine when the transition was instant\n // (`display: none`), distracting now that it animates.\n const [collapsed, setCollapsed] = useState<boolean>(() => !onGoing || !isLastInlineInGroup);\n const contentRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n setCollapsed(!onGoing || !isLastInlineInGroup);\n }, [onGoing, isLastInlineInGroup]);\n\n useEffect(() => {\n if (contentRef.current) {\n contentRef.current.scrollTo({\n top: contentRef.current.scrollHeight,\n behavior: 'smooth',\n });\n }\n }, [part.textDetails?.version]);\n\n if (!onGoing) return null;\n\n const thoughtContent = InteractionPartUtils.getPartTextContent(part);\n const ended = part.ended ?? new Date();\n const throughFor = ((ended.getTime() - part.created.getTime()) / 1000).toFixed(2);\n\n const thoughtComplete = isLastInlineInGroup;\n const thoughtLabel = friendlyMode\n ? (!thoughtComplete ? `Pensou por ${throughFor}s` : 'Pensando...')\n : `Thought ${throughFor}s`;\n\n const onDrawCodeBlock = (_content: string, _className: string) => null;\n\n return (\n <Stack direction={'column'} style={{ display: 'flex', borderRadius: '5px', marginTop: '10px', color: 'var(--text-secondary)', fontSize: '0.75rem' }}>\n <IconButton size=\"small\" disableRipple onClick={() => setCollapsed(!collapsed)} sx={{\n color: 'inherit',\n padding: '1px',\n minWidth: '16px',\n fontSize: '0.75rem',\n width: friendlyMode ? '140px' : '120px',\n height: '16px',\n outline: 'none',\n marginBottom: '10px',\n '&:focus': { outline: 'none' },\n '&:focus-visible': { outline: 'none' },\n '&.Mui-focusVisible': { outline: 'none', boxShadow: 'none' },\n }}>\n <Stack direction={'row'} sx={{ display: 'flex', cursor: 'pointer', alignItems: 'center', alignContent: 'flex-end', flexWrap: 'nowrap' }} gap={0.5}>\n <div style={{ minWidth: '90px' }}>{thoughtLabel}</div>\n <ChevronRight sx={{ fontSize: '1rem', rotate: collapsed ? '0deg' : '90deg', transition: 'rotate 180ms ease-out' }} />\n </Stack>\n </IconButton>\n {/*\n * `display: none` can't be animated, so the previous\n * thought used to vanish instantly when a new one\n * arrived. Swap to a max-height + opacity + padding\n * transition: the surrounding Stack reflows along\n * with max-height, so everything below slides up\n * smoothly rather than jumping.\n */}\n <div ref={contentRef} style={{\n maxHeight: collapsed ? '0px' : '150px',\n opacity: collapsed ? 0 : 1,\n overflow: collapsed ? 'hidden' : 'scroll',\n padding: collapsed ? '0px 5px' : '2px 5px',\n fontStyle: 'italic',\n transition: 'max-height 220ms ease-out, opacity 180ms ease-out, padding 220ms ease-out',\n }}>\n <MarkdownExtended\n partial={preview}\n sessionId={message.sessionId ?? 'ND'}\n text={thoughtContent ?? \"\"}\n onDrawCodeBlock={onDrawCodeBlock}\n onLinkClicked={onLinkClicked}\n />\n </div>\n </Stack>\n );\n};\n\nexport default ThoughtPart;\n","import React from 'react';\nimport Box from '@mui/material/Box';\n\ninterface LoadingDotsProps {\n color?: string;\n size?: number;\n spacing?: number;\n}\n\nconst LoadingDots: React.FC<LoadingDotsProps> = ({\n color = 'rgba(255, 255, 255, 0.6)',\n size = 4,\n spacing = 3\n}) => {\n return (\n <Box\n sx={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: `${spacing}px`,\n py: 1\n }}\n >\n {[0, 1, 2].map((index) => (\n <Box\n key={index}\n sx={{\n width: `${size}px`,\n height: `${size}px`,\n borderRadius: '50%',\n backgroundColor: color,\n animation: 'loadingDot 1.4s infinite ease-in-out both',\n animationDelay: `${index * 0.16}s`,\n '@keyframes loadingDot': {\n '0%, 80%, 100%': {\n transform: 'scale(0)',\n opacity: 0.5\n },\n '40%': {\n transform: 'scale(1)',\n opacity: 1\n }\n }\n }}\n />\n ))}\n </Box>\n );\n};\n\nexport default LoadingDots;\n","import React, { useState, useEffect, useRef } from 'react';\n\ninterface StopwatchProps {\n on: boolean;\n className?: string;\n style?: React.CSSProperties;\n showButton?: boolean;\n startingPoint: Date,\n stopPoint?: Date,\n id?: string\n}\n\nexport const Stopwatch: React.FC<StopwatchProps> = ({ id, on, className = '', style = {}, showButton = false, startingPoint, stopPoint }) => {\n const [elapsedSeconds, setElapsedSeconds] = useState(0);\n const intervalRef = useRef<NodeJS.Timeout | undefined>(undefined);\n\n useEffect(() => {\n if (on) {\n // Clear any existing interval\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n }\n\n // Set up interval to update every 200ms\n intervalRef.current = setInterval(() => {\n const elapsed = (Date.now() - startingPoint.getTime()) / 1000;\n setElapsedSeconds(elapsed);\n }, 100);\n } else {\n // Stop the stopwatch\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = undefined;\n }\n\n if (stopPoint) {\n const elapsed = (stopPoint.getTime() - startingPoint.getTime()) / 1000;\n setElapsedSeconds(elapsed);\n }\n else {\n console.error(\"[STOP WATCH]: Stop point is not set, \" + id);\n }\n\n }\n\n // Cleanup function\n return () => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = undefined;\n }\n };\n }, [on, startingPoint, stopPoint]);\n\n // Reset function to reset the stopwatch\n const reset = () => {\n setElapsedSeconds(0);\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n intervalRef.current = undefined;\n }\n };\n\n // Format the elapsed time to 2 decimal places\n const formatTime = (seconds: number): string => {\n return seconds.toFixed(2);\n };\n\n return (\n <div\n className={`stopwatch ${className}`}\n style={{\n transition: 'color 0.2s ease',\n ...style\n }}\n >\n <span className=\"stopwatch-time\">\n {formatTime(elapsedSeconds)}s\n </span>\n {showButton && !on && elapsedSeconds > 0 && (\n <button\n onClick={reset}\n style={{\n marginLeft: '10px',\n padding: '4px 8px',\n fontSize: '0.8rem',\n backgroundColor: '#f0f0f0',\n border: '1px solid #ccc',\n borderRadius: '4px',\n cursor: 'pointer'\n }}\n title=\"Reset stopwatch\"\n >\n Reset\n </button>\n )}\n </div>\n );\n};\n\nexport default Stopwatch;\n","import React, { useState, useRef, useEffect } from 'react';\nimport type { InteractionPart } from '@lib/models/InteractionPart';\nimport MarkdownExtended from \"../../Library/MarkdowmExtended\";\nimport IconButton from '@mui/material/IconButton';\nimport Popover from '@mui/material/Popover';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport { Timer } from \"@mui/icons-material\";\nimport { Box, Stack, Typography, useMediaQuery, useTheme } from '@mui/material';\nimport { EventType } from '@lib/models/enums';\nimport { splitBigLinesWithSpaces } from '@lib/utils/stringUtils';\nimport LoadingDots from '../../Library/LoadingDots';\nimport Stopwatch from '../../Stopwatch';\n\ninterface MessageNonTextDisplayProps {\n title: string;\n icon: React.ReactNode;\n elapsed?: number;\n content?: string;\n part: InteractionPart;\n sessionId: string;\n onLinkClicked: (link: string, content: string | null) => void;\n onDrawCodeBlock: (code: string, className: string) => React.ReactNode;\n isLastInlineInGroup?: boolean;\n preview?: boolean;\n}\n\nconst MessageNonTextDisplay: React.FC<MessageNonTextDisplayProps> = ({\n title,\n icon,\n elapsed,\n sessionId,\n content,\n part,\n onLinkClicked,\n preview,\n onDrawCodeBlock,\n isLastInlineInGroup = false,\n}) => {\n const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const thinkingContentRef = useRef<HTMLDivElement>(null);\n\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('sm'));\n\n const open = Boolean(anchorEl);\n\n const handleViewClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const preStyle: React.CSSProperties = {\n padding: '0px',\n borderRadius: '0px',\n margin: '0px',\n };\n\n const functionStatus = part.functionDetails?.status;\n const isFunctionCall =\n part.eventType === EventType.PartialFunctionCall ||\n part.eventType === EventType.FunctionCall ||\n part.eventType === EventType.FunctionResponse;\n const functionStartTime = part.functionDetails?.start?.getTime();\n const functionEndTime = part.functionDetails?.end?.getTime();\n const showFull = isLastInlineInGroup || (isFunctionCall && functionStatus !== 'Done');\n\n const parallaxAnimationClass = showFull ? 'parallax-container' : '';\n\n useEffect(() => {\n if (thinkingContentRef.current && showFull) {\n thinkingContentRef.current.scrollTo({\n top: thinkingContentRef.current.scrollHeight,\n behavior: 'smooth'\n });\n }\n }, [content, showFull]);\n\n const boxColor = theme.palette.text.secondary;\n // Theme-adaptive surfaces. These were hardcoded translucent-white (built for a\n // dark chat surface) and vanished on a light theme — the box rendered with no\n // visible fill or border. `action.hover` / `divider` resolve correctly in both\n // modes and stay ≈ the old values on dark, so the dark-theme look is preserved.\n const boxBackground = theme.palette.action.hover;\n const boxBorder = theme.palette.divider;\n const shimmer = theme.palette.mode === 'dark' ? 'rgba(255, 255, 255, 0.15)' : 'rgba(0, 0, 0, 0.06)';\n\n return (\n <>\n <Box\n ref={containerRef}\n className={parallaxAnimationClass}\n sx={{\n border: `1px solid ${boxBorder}`,\n borderRadius: '4px',\n maxWidth: showFull ? '100%' : '100%',\n maxHeight: showFull ? '160px' : '20px',\n minHeight: showFull ? '80px' : '20px',\n margin: '2px 1px',\n color: boxColor,\n backgroundColor: boxBackground,\n fontSize: '10px',\n fontWeight: '500',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n boxSizing: 'border-box'\n }}\n >\n {isLastInlineInGroup && (\n <div\n style={{\n position: 'absolute',\n top: 0,\n left: '-100%',\n width: '100%',\n height: '100%',\n background: `linear-gradient(90deg, transparent, ${shimmer}, transparent)`,\n animation: 'parallax-light 2s ease-in-out infinite',\n borderRadius: '8px',\n pointerEvents: 'none',\n zIndex: 1\n }}\n />\n )}\n <Box sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n color: boxColor,\n borderBottom: `1px solid ${boxBorder}`,\n minHeight: '20px',\n width: '100%',\n position: 'relative',\n overflow: 'hidden',\n gap: '8px',\n paddingLeft: 1,\n paddingRight: 1,\n zIndex: 2\n }}>\n <div style={{ display: 'flex', alignItems: 'center', flex: 1, overflow: 'hidden' }}>\n {icon}\n <span style={{\n marginLeft: '4px',\n fontSize: '9px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n }}>\n {title}\n </span>\n {elapsed && elapsed > 0 ? (\n <>\n <Timer sx={{ fontSize: '12px', mt: 0.2, ml: 2 }} />\n <span style={{\n marginLeft: '4px',\n fontSize: '9px',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n }}>\n {(elapsed / 1000).toFixed(2)} s\n </span>\n </>\n ) : null}\n </div>\n\n {!isMobile && (\n <IconButton\n size=\"small\"\n onClick={handleViewClick}\n sx={{\n color: boxColor,\n padding: '1px',\n minWidth: '16px',\n width: '16px',\n height: '16px',\n '&:hover': {\n backgroundColor: theme.palette.action.selected,\n },\n }}\n >\n <VisibilityIcon style={{ fontSize: 10 }} />\n </IconButton>\n )}\n </Box>\n {showFull && (\n <Box\n ref={thinkingContentRef}\n sx={{\n width: '100%',\n backgroundColor: boxBackground,\n fontSize: '10px',\n margin: '0px !important',\n fontWeight: '500',\n overflow: \"auto\",\n flex: 1,\n '&::-webkit-scrollbar': {\n width: '5px',\n background: theme.palette.background.paper,\n },\n '&::-webkit-scrollbar-track': {\n background: theme.palette.background.paper,\n width: isMobile ? '1px' : '1px',\n },\n '&::-webkit-scrollbar-thumb': {\n background: theme.palette.background.paper,\n border: '1px solid',\n width: '5px',\n borderColor: theme.palette.grey[800],\n borderRadius: '4px',\n '&:hover': {\n background: theme.palette.background.default\n },\n }\n }}\n >\n <MarkdownExtended\n sessionId={sessionId}\n preStyle={preStyle}\n partial={preview}\n text={splitBigLinesWithSpaces(content ?? \"\")}\n onLinkClicked={onLinkClicked}\n onDrawCodeBlock={onDrawCodeBlock}\n />\n </Box>\n )}\n <Box sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingBottom: '5x',\n paddingTop: '5x',\n paddingLeft: '10px',\n color: boxColor,\n backgroundColor: 'background.paper',\n borderBottom: `1px solid ${boxBorder}`,\n minHeight: '25px',\n position: 'relative',\n fontSize: '10px',\n overflow: 'hidden',\n borderTop: `1px solid ${boxBorder}`,\n zIndex: 2\n }}>\n {functionStatus === 'Composing' && (\n <Stack direction='row' gap={1} sx={{ mt: 0.5 }}>\n <Typography sx={{ fontSize: '10px' }}>Composing</Typography>\n <LoadingDots size={3} />\n </Stack>\n )}\n {functionStatus === 'Executing' && (\n <Stack direction='row' gap={1} sx={{ mt: 0.5, fontSize: '10px' }}>\n <Typography sx={{ fontSize: '10px' }}>Running:</Typography>\n <Timer sx={{ fontSize: '12px', mt: 0.2 }} />\n <Stopwatch startingPoint={part.functionDetails?.start ?? new Date()} on={true} />\n </Stack>\n )}\n {functionStatus === 'Done' && (\n <Stack direction='row' gap={1} sx={{ mt: 0.5, fontSize: '10px' }}>\n <Typography sx={{ fontSize: '10px' }}>Done!</Typography>\n <Timer sx={{ fontSize: '12px', mt: 0.2 }} />\n <Typography sx={{ fontSize: '10px' }}>\n {functionEndTime && functionStartTime\n ? `${((functionEndTime - functionStartTime) / 1000).toFixed(2)}s`\n : `N\\\\D`}\n </Typography>\n </Stack>\n )}\n </Box>\n </Box>\n\n <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}\n transformOrigin={{ vertical: 'top', horizontal: 'center' }}\n PaperProps={{\n style: {\n backgroundColor: boxBackground,\n backdropFilter: 'blur(10px)',\n border: `1px solid ${boxBorder}`,\n borderRadius: '8px',\n maxWidth: '500px',\n maxHeight: '400px',\n color: boxColor,\n }\n }}\n >\n <Box id=\"preview-container\"\n sx={{\n '&::-webkit-scrollbar': {\n width: isMobile ? 'none' : '8px',\n height: isMobile ? 'none' : '8px',\n background: theme.palette.background.paper,\n },\n '&::-webkit-scrollbar-track': {\n background: theme.palette.background.paper,\n width: isMobile ? 'none' : '5px',\n },\n '&::-webkit-scrollbar-thumb': {\n background: theme.palette.background.default,\n border: '1px solid',\n borderColor: theme.palette.grey[800],\n borderRadius: '4px',\n '&:hover': {\n background: theme.palette.grey[500],\n },\n },\n padding: '12px',\n overflow: 'scroll',\n fontSize: '11px',\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word'\n }}\n >\n <div style={{\n display: 'flex',\n alignItems: 'center',\n marginBottom: '8px',\n paddingBottom: '8px',\n borderBottom: `1px solid ${boxBorder}`\n }}>\n {icon}\n <span style={{ marginLeft: '8px', fontWeight: '500' }}>{title}</span>\n </div>\n <MarkdownExtended\n sessionId={sessionId}\n preStyle={preStyle}\n text={content ?? \"\"}\n onLinkClicked={onLinkClicked}\n onDrawCodeBlock={onDrawCodeBlock}\n />\n </Box>\n </Popover>\n\n {isLastInlineInGroup && !showFull && (\n <style>\n {`\n @keyframes parallax-light {\n 0% { left: -100%; }\n 100% { left: 100%; }\n }\n `}\n </style>\n )}\n </>\n );\n};\n\nexport default MessageNonTextDisplay;\n","export interface FriendlyToolEntry {\n partial: string;\n call: string;\n response: string;\n responseError?: string;\n extractDetail?: (args: any) => string;\n}\n\nfunction extractTableFromSql(query: string): string {\n return extractTableNames(query);\n}\n\nfunction coerceSqlString(args: any): string {\n if (args == null) return '';\n if (typeof args === 'string') return args;\n if (typeof args === 'object') {\n // Try the common shapes for a SQL payload before falling back to\n // a JSON dump (regexes below still match `FROM foo` inside JSON).\n if (typeof args.query === 'string') return args.query;\n if (typeof args.sql === 'string') return args.sql;\n try {\n return JSON.stringify(args);\n } catch {\n return String(args);\n }\n }\n return String(args);\n}\n\nfunction coerceToString(args: any): string {\n if (args == null) return '';\n if (typeof args === 'string') return args;\n try {\n return JSON.stringify(args);\n } catch {\n return String(args);\n }\n}\n\nfunction extractColumnNames(query: string): string {\n\n if (!query || typeof query !== 'string') return '';\n const matches = [...query.matchAll(/(\\w+)\\s+AS\\s+(\\w+)/ig)];\n const columns = matches.map(m => m[2]);\n return columns.length > 0 ? columns.join(', ') : '';\n\n}\n\nfunction extractTableNames(query: string): string {\n if (!query || typeof query !== 'string') return '';\n const matches = [...query.matchAll(/\\bFROM\\s+[`\"]?([\\w.]+)[`\"]?/gi)];\n const tables = matches.map(m => m[1]);\n return tables.length > 0 ? tables.join(', ') : '';\n}\n\n\nexport const friendlyToolConfigRegistry: Record<string, FriendlyToolEntry> = {\n // ── BigQuery ──\n execute_query: {\n partial: 'Elaborando uma consulta no banco de dados',\n call: 'Executando a consulta no banco de dados',\n response: 'Consulta concluída',\n responseError: 'Ocorreu um erro na consulta, vou corrigir',\n extractDetail: (args) => {\n const query = coerceSqlString(args);\n const columnNames = extractColumnNames(query);\n const table = extractTableFromSql(query);\n return table ? `(Campos:${columnNames}) - (tabela: ${table})` : '';\n },\n },\n execute_parallels_queries: {\n partial: 'Preparando consultas em paralelo',\n call: 'Executando consultas em paralelo',\n response: 'Consultas em paralelo concluídas',\n responseError: 'Erro ao executar consultas em paralelo',\n extractDetail: (args) => {\n const query = coerceSqlString(args);\n const columnNames = extractColumnNames(query);\n const table = extractTableFromSql(query);\n return table ? `(Campos:${columnNames}) - (tabela: ${table})` : '';\n },\n },\n next_page: {\n partial: 'Preparando próxima página de resultados',\n call: 'Obtendo próxima página de resultados',\n response: 'Página de resultados obtida',\n },\n list_tables: {\n partial: 'Preparando listagem de tabelas',\n call: 'Listando tabelas disponíveis',\n response: 'Tabelas listadas',\n },\n get_table_schema: {\n partial: 'Preparando consulta de schema',\n call: 'Obtendo schema da tabela',\n response: 'Schema obtido',\n extractDetail: (args) => coerceToString(args),\n },\n get_multiple_table_schemas: {\n partial: 'Preparando consulta de schemas',\n call: 'Obtendo schemas das tabelas',\n response: 'Schemas obtidos',\n extractDetail: (args) => coerceToString(args),\n },\n\n // ── CommandLine ──\n command_line: {\n partial: 'Preparando comando',\n call: 'Executando comando',\n response: 'Comando executado',\n responseError: 'Erro ao executar o comando',\n },\n\n // ── DashboardAnalysis ──\n get_all_dashboard_dards_data: {\n partial: 'Preparando análise do dashboard',\n call: 'Obtendo dados dos cards do dashboard',\n response: 'Dados dos cards obtidos',\n extractDetail: (args) => args?.dashboardId ? `(dashboard: ${args.dashboardId})` : '',\n },\n\n // ── DashboardAnalysis ──\n \"imagedescription-analyze_image\": {\n partial: 'Preparando análise da imagem',\n call: 'Gerando análise da imagem',\n response: 'Dados dos da imagem obtidos',\n extractDetail: (args) => args?.mime_type ? `(dashboard: ${args.mime_type})` : '',\n },\n\n \"imagedescription-analyze image\": {\n partial: 'Preparando análise da imagem...',\n call: 'Gerando análise da imagem',\n response: 'Dados dos da imagem obtidos',\n extractDetail: (args) => args?.mime_type ? `(dashboard: ${args.mime_type})` : '',\n },\n // ── DashboardComposer ──\n patch_card_file: {\n partial: 'Preparando alteração no card',\n call: 'Atualizando arquivo do card',\n response: 'Arquivo do card atualizado',\n extractDetail: (args) => args?.cardFileName ? `(${args.cardFileName})` : '',\n },\n create_update_card: {\n partial: 'Preparando criação/atualização do card',\n call: 'Criando ou atualizando card',\n response: 'Card criado/atualizado',\n extractDetail: (args) => args?.cardKey ? `(card: ${args.cardKey})` : '',\n },\n build_dashboard: {\n partial: 'Preparando build do dashboard',\n call: 'Construindo dashboard',\n response: 'Dashboard construído',\n },\n rebuild_dashboard: {\n partial: 'Preparando rebuild do dashboard',\n call: 'Reconstruindo dashboard',\n response: 'Dashboard reconstruído',\n },\n\n // ── DashboardTool ──\n list_session_dashboards: {\n partial: 'Preparando listagem de dashboards da sessão',\n call: 'Listando dashboards da sessão',\n response: 'Dashboards da sessão listados',\n },\n save_dashboard: {\n partial: 'Preparando salvamento do dashboard',\n call: 'Salvando dashboard',\n response: 'Dashboard salvo',\n extractDetail: (args) => args?.description ? `(${args.description})` : '',\n },\n list_dashboard: {\n partial: 'Preparando listagem de dashboards',\n call: 'Listando dashboards',\n response: 'Dashboards listados',\n },\n\n // ── DataSourceTool ──\n remove_data_source: {\n partial: 'Preparando remoção de data source',\n call: 'Removendo data source',\n response: 'Data source removido',\n },\n list_views_and_sources: {\n partial: 'Preparando listagem de views e data sources',\n call: 'Listando views e data sources',\n response: 'Views e data sources listados',\n },\n create_data_source: {\n partial: 'Preparando criação de data source',\n call: 'Criando data source',\n response: 'Data source criado',\n extractDetail: (args) => args?.name ? `(${args.name})` : '',\n },\n create_or_update_card_view: {\n partial: 'Preparando view do card',\n call: 'Criando/atualizando view do card',\n response: 'View do card atualizada',\n extractDetail: (args) => args?.viewName ? `(${args.viewName})` : '',\n },\n create_or_update_python_view: {\n partial: 'Preparando view Python',\n call: 'Criando/atualizando view Python',\n response: 'View Python atualizada',\n extractDetail: (args) => args?.name ? `(${args.name})` : '',\n },\n update_data_source: {\n partial: 'Preparando atualização de data source',\n call: 'Atualizando data source',\n response: 'Data source atualizado',\n },\n\n // ── Files ──\n create_file: {\n partial: 'Preparando criação de arquivo',\n call: 'Criando arquivo',\n response: 'Arquivo criado',\n extractDetail: (args) => args?.fileName ? `(${args.fileName})` : '',\n },\n read_file: {\n partial: 'Preparando leitura de arquivo',\n call: 'Lendo arquivo',\n response: 'Arquivo lido',\n extractDetail: (args) => args?.fileName ? `(${args.fileName})` : '',\n },\n read_file_tail: {\n partial: 'Preparando leitura do final do arquivo',\n call: 'Lendo final do arquivo',\n response: 'Final do arquivo lido',\n extractDetail: (args) => args?.fileName ? `(${args.fileName})` : '',\n },\n patch_file: {\n partial: 'Preparando alteração no arquivo',\n call: 'Alterando arquivo',\n response: 'Arquivo alterado',\n extractDetail: (args) => args?.fileName ? `(${args.fileName})` : '',\n },\n overwrite_file: {\n partial: 'Preparando substituição de arquivo',\n call: 'Substituindo conteúdo do arquivo',\n response: 'Arquivo substituído',\n extractDetail: (args) => args?.fileName ? `(${args.fileName})` : '',\n },\n list_files: {\n partial: 'Preparando listagem de arquivos',\n call: 'Listando arquivos',\n response: 'Arquivos listados',\n },\n delete_file: {\n partial: 'Preparando exclusão de arquivo',\n call: 'Excluindo arquivo',\n response: 'Arquivo excluído',\n extractDetail: (args) => args?.fileName ? `(${args.fileName})` : '',\n },\n file_exists: {\n partial: 'Verificando existência de arquivo',\n call: 'Verificando arquivo',\n response: 'Verificação concluída',\n extractDetail: (args) => args?.fileName ? `(${args.fileName})` : '',\n },\n\n // ── GoogleSearch ──\n google_search: {\n partial: 'Preparando pesquisa na internet',\n call: 'Pesquisando na internet',\n response: 'Pesquisa concluída',\n extractDetail: (args) => args?.query ? `(\"${args.query}\")` : '',\n },\n\n // ── LazyInstructionLoader ──\n get_serviceitem_instructions: {\n partial: 'Preparando carregamento de instruções',\n call: 'Carregando instruções do serviço',\n response: 'Instruções carregadas',\n },\n get_css_stylesheet: {\n partial: 'Preparando carregamento de estilos CSS',\n call: 'Carregando estilos CSS',\n response: 'Estilos CSS carregados',\n },\n\n // ── MemoryLibrary ──\n search_memory_suggestions: {\n partial: 'Preparando busca de sugestões na memória',\n call: 'Buscando sugestões na memória',\n response: 'Sugestões encontradas',\n },\n search_memories: {\n partial: 'Preparando busca na memória',\n call: 'Buscando na memória',\n response: 'Busca na memória concluída',\n extractDetail: (args) => args?.query ? `(\"${args.query}\")` : '',\n },\n create_memory: {\n partial: 'Preparando criação de memória',\n call: 'Criando memória',\n response: 'Memória criada',\n },\n update_memory: {\n partial: 'Preparando atualização de memória',\n call: 'Atualizando memória',\n response: 'Memória atualizada',\n },\n delete_memory: {\n partial: 'Preparando exclusão de memória',\n call: 'Excluindo memória',\n response: 'Memória excluída',\n },\n count_memories: {\n partial: 'Preparando contagem de memórias',\n call: 'Contando memórias',\n response: 'Contagem concluída',\n },\n\n // ── Network ──\n curl: {\n partial: 'Preparando requisição HTTP',\n call: 'Executando requisição HTTP',\n response: 'Requisição concluída',\n extractDetail: (args) => args?.url ? `(${args.url})` : '',\n },\n markdown_curl: {\n partial: 'Preparando requisição HTTP (Markdown)',\n call: 'Obtendo conteúdo da página',\n response: 'Conteúdo obtido',\n extractDetail: (args) => args?.url ? `(${args.url})` : '',\n },\n\n // ── Python ──\n run_python: {\n partial: 'Preparando código Python',\n call: 'Executando código Python',\n response: 'Código Python executado',\n responseError: 'Erro na execução do Python, vou corrigir',\n extractDetail: (args) => args?.fileName ? `(${args.fileName})` : '',\n },\n\n // ── ScriptManager ──\n script_create_or_update: {\n partial: 'Preparando script de análise',\n call: 'Criando/atualizando script',\n response: 'Script salvo',\n extractDetail: (args) => args?.name ? `(${args.name})` : '',\n },\n script_code_execute: {\n partial: 'Preparando execução do script',\n call: 'Executando script',\n response: 'Script executado',\n responseError: 'Erro na execução do script',\n },\n script_get_metadata: {\n partial: 'Preparando consulta de metadados do script',\n call: 'Obtendo metadados do script',\n response: 'Metadados obtidos',\n },\n script_get: {\n partial: 'Preparando leitura do script',\n call: 'Obtendo script',\n response: 'Script obtido',\n },\n script_list: {\n partial: 'Preparando listagem de scripts',\n call: 'Listando scripts',\n response: 'Scripts listados',\n },\n script_code_update: {\n partial: 'Preparando atualização do código',\n call: 'Atualizando código do script',\n response: 'Código atualizado',\n },\n script_code_commit: {\n partial: 'Preparando commit do script',\n call: 'Fazendo commit do script',\n response: 'Commit realizado',\n },\n script_code_rollback: {\n partial: 'Preparando rollback do script',\n call: 'Revertendo alterações do script',\n response: 'Rollback realizado',\n },\n script_remove: {\n partial: 'Preparando remoção do script',\n call: 'Removendo script',\n response: 'Script removido',\n },\n\n // ── SubAgent ──\n start_sub_agent: {\n partial: 'Preparando sub-agente',\n call: 'Iniciando sub-agente',\n response: 'Sub-agente iniciado',\n extractDetail: (args) => args?.displayName ? `(${args.displayName})` : '',\n },\n get_sub_agent_status: {\n partial: 'Verificando status do sub-agente',\n call: 'Consultando status do sub-agente',\n response: 'Status obtido',\n },\n list_sub_agents: {\n partial: 'Preparando listagem de sub-agentes',\n call: 'Listando sub-agentes',\n response: 'Sub-agentes listados',\n },\n wait_on_subagent: {\n partial: 'Aguardando sub-agente',\n call: 'Aguardando conclusão do sub-agente',\n response: 'Terminei de aguardar, vou verificar status',\n },\n cancel_sub_agent: {\n partial: 'Preparando cancelamento do sub-agente',\n call: 'Cancelando sub-agente',\n response: 'Sub-agente cancelado',\n },\n send_message_to_sub_agent: {\n partial: 'Preparando mensagem para sub-agente',\n call: 'Enviando mensagem ao sub-agente',\n response: 'Mensagem enviada ao sub-agente',\n },\n\n // ── TodoList ──\n create_todo_list: {\n partial: 'Criando lista de tarefas',\n call: 'Enviando lista de tarefas',\n response: 'Lista de tarefas criada',\n },\n update_todo_list: {\n partial: 'Atualizando lista de tarefas',\n call: 'Salvando atualização da lista',\n response: 'Lista de tarefas atualizada',\n },\n};\n\nexport function configureFriendlyMapping(toolName:string, mapping: FriendlyToolEntry) {\n friendlyToolConfigRegistry[toolName] = mapping;\n}\n\nexport type FriendlyState = 'partial' | 'call' | 'response';\n\nexport function getFriendlyLabel(toolName: string, state: FriendlyState, args?: any, isError?: boolean): string {\n const parts = toolName.split('-');\n\n const pureToolName = parts.length > 1 ? parts.slice(1).join('') : toolName;\n const entry = friendlyToolConfigRegistry[pureToolName];\n if (!entry) {\n const pretty = toolName.replace(/_/g, ' ');\n switch (state) {\n case 'partial': return `Preparando ${pretty}`;\n case 'call': return `Executando ${pretty}`;\n case 'response': return `${pretty} concluído`;\n }\n }\n\n if (state === 'response' && isError && entry.responseError) {\n return entry.responseError;\n }\n\n let label = entry[state];\n if (entry.extractDetail) {\n const detail = entry.extractDetail(args);\n if (detail) label = `${label} ${detail}`;\n }\n return label;\n}\n","import React from 'react';\nimport { alpha, Box, Stack, Typography, useTheme } from '@mui/material';\nimport { Timer } from '@mui/icons-material';\nimport Stopwatch from '../../Stopwatch';\nimport { type FriendlyState, getFriendlyLabel } from './friendlyToolConfig';\n\ninterface FriendlyPartDisplayProps {\n toolName: string;\n state: FriendlyState;\n args?: any;\n isError?: boolean;\n startTime?: Date;\n endTime?: Date;\n streamedBytes?: number;\n}\n\nconst BYTES_PER_BUCKET = 500;\nconst BUCKET_HEIGHT = 14;\nconst BUCKET_WIDTH = 8;\n\nconst COMPACT_THRESHOLDS: [number, string][] = [\n [1_000_000_000, 'Gb'],\n [1_000_000, 'Mb'],\n [1_000, 'Kb'],\n];\n\nfunction ByteBuckets({ streamedBytes = 0 }: { streamedBytes: number }) {\n const fullBuckets = Math.floor(streamedBytes / BYTES_PER_BUCKET);\n const partialFill = (streamedBytes % BYTES_PER_BUCKET) / BYTES_PER_BUCKET;\n const totalBuckets = fullBuckets + (partialFill > 0 ? 1 : 0);\n const visibleBuckets = Math.max(totalBuckets, 1);\n const theme = useTheme();\n\n function formatCompact(value: number, decimals = 2, addSuffix: boolean = true): string {\n const abs = Math.abs(value);\n for (const [threshold, suffix] of COMPACT_THRESHOLDS) {\n if (abs >= threshold) {\n return (value / threshold).toFixed(decimals) + (addSuffix ? suffix : \"\");\n }\n }\n return value.toFixed(0)+\"b\";\n }\n\n const formatBytes = (bytes: number) => {\n return formatCompact(bytes);\n }\n\n return (\n <>\n <Box sx={{\n display: 'inline-flex',\n alignItems: 'flex-end',\n alignContent: 'center',\n gap: '3px',\n ml: 1,\n height: `${BUCKET_HEIGHT + 2}px`,\n }}>\n {Array.from({ length: visibleBuckets }, (_, i) => {\n const isFull = i < fullBuckets;\n const isPartial = i === fullBuckets && partialFill > 0;\n const fillRatio = isFull ? 1 : isPartial ? partialFill : 0;\n const isActive = isPartial && !isFull;\n\n return (\n <Box\n key={i}\n sx={{\n position: 'relative',\n width: `${BUCKET_WIDTH}px`,\n height: `${BUCKET_HEIGHT}px`,\n borderRadius: '2px',\n border: '1px solid rgba(255, 255, 255, 0.15)',\n overflow: 'hidden',\n flexShrink: 0,\n }}\n >\n <Box sx={{\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n height: `${fillRatio * 100}%`,\n backgroundColor: isFull\n ? alpha(theme.palette.primary.main,0.6)\n : alpha(theme.palette.primary.main,0.4),\n transition: 'height 0.15s ease-out',\n ...(isActive ? {\n animation: 'bucketPulse 0.8s ease-in-out infinite',\n '@keyframes bucketPulse': {\n '0%, 100%': { opacity: 0.4 },\n '50%': { opacity: 0.9 },\n },\n } : {}),\n }} />\n </Box>\n );\n })}\n </Box>\n <Stack direction=\"row\" alignItems=\"center\" gap={0.5} sx={{ fontSize: '0.78rem' }}>\n <Typography variant='body1' sx={{ display: 'inline-flex' }}>{formatBytes(streamedBytes)}</Typography>\n </Stack>\n </>\n );\n}\n\nconst FriendlyPartDisplay: React.FC<FriendlyPartDisplayProps> = ({\n toolName,\n state,\n args,\n isError,\n startTime,\n endTime,\n streamedBytes,\n}) => {\n const label = getFriendlyLabel(toolName, state, args, isError);\n\n const elapsedMs = startTime && endTime\n ? endTime.getTime() - startTime.getTime()\n : undefined;\n\n return (\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n gap={1}\n sx={{\n py: 0.5,\n px: 0.5,\n color: isError ? 'warning.main' : 'text.secondary',\n fontSize: '0.82rem',\n minHeight: '28px',\n alignItems: 'center',\n }}\n >\n <Typography\n component=\"span\"\n sx={{\n fontSize: 'inherit',\n fontStyle: 'italic',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n >\n {label}\n </Typography>\n\n {state === 'partial' && <ByteBuckets streamedBytes={streamedBytes ?? 0} />}\n\n {(state === 'call') && startTime && (\n <>\n <ByteBuckets streamedBytes={streamedBytes ?? 0} />\n <Stack direction=\"row\" alignItems=\"center\" gap={0.5} sx={{ fontSize: '0.78rem' }}>\n <Timer sx={{ fontSize: '0.9rem' }} />\n <Stopwatch startingPoint={startTime} on={true} style={{ fontSize: '0.78rem' }} />\n </Stack>\n </>\n )}\n\n {state === 'response' && elapsedMs != null && elapsedMs > 0 && (\n <Stack direction=\"row\" alignItems=\"center\" gap={0.5} sx={{ fontSize: '0.78rem', color: 'text.disabled' }}>\n <Timer sx={{ fontSize: '0.9rem' }} />\n <Typography component=\"span\" sx={{ fontSize: 'inherit' }}>\n {(elapsedMs / 1000).toFixed(2)}s\n </Typography>\n </Stack>\n )}\n </Stack>\n );\n};\n\nexport default FriendlyPartDisplay;\n","import React from 'react';\nimport { type InteractionPart, InteractionPartUtils } from '@lib/models/InteractionPart';\nimport { EventType } from '@lib/models/enums';\nimport CodeIcon from '@mui/icons-material/Code';\nimport { prettiffyPythonFunctionName } from '@lib/utils/interactionIdChecker';\nimport MessageNonTextDisplay from '../MessageNonTextDisplay';\nimport FriendlyPartDisplay from '../FriendlyPartDisplay';\nimport type { FriendlyState } from '../friendlyToolConfig';\nimport type { PartRendererProps } from './types';\n\n// `currentColor` → inherits the box header's color (theme `text.secondary`), so the\n// icon is visible on both light and dark themes instead of a fixed white.\nconst boxedIconStyle = { fontSize: 10, color: 'currentColor' };\n\ninterface FunctionDisplay {\n title: string;\n content: string;\n elapsed?: number;\n}\n\nfunction deriveFunctionDisplay(part: InteractionPart): FunctionDisplay {\n if (part.eventType === EventType.PartialFunctionCall) {\n return {\n title: prettiffyPythonFunctionName(part.functionDetails?.name ?? 'Unknown'),\n content: InteractionPartUtils.getPartTextContent(part),\n };\n }\n\n const name = part.functionDetails?.name;\n\n if (!name) {\n const rawData = part.eventType === EventType.FunctionCall\n ? part.functionDetails?.args ?? {}\n : part.functionDetails?.response ?? {};\n const collapsed = InteractionPartUtils.isCharArray(rawData)\n ? rawData.join(\"\")\n : InteractionPartUtils.tryCollapseCharIndexedObject(rawData);\n const data = collapsed ?? rawData;\n return {\n title: 'Unknown',\n content: InteractionPartUtils.jsonToString(data),\n };\n }\n\n let title = prettiffyPythonFunctionName(name);\n const argChartType = part.functionDetails?.args?.query_type;\n if (typeof argChartType === 'string' && argChartType.length > 1) {\n title += `: ${argChartType[0].toLocaleUpperCase()}${argChartType.slice(1)}`;\n }\n\n let elapsed = 0;\n if (part.functionDetails?.start && part.functionDetails?.end) {\n elapsed = part.functionDetails.end.getTime() - part.functionDetails.start.getTime();\n }\n\n let content: string;\n if (part.eventType === EventType.FunctionCall) {\n try {\n content = JSON.stringify(part.functionDetails?.args ?? {}, null, 4);\n } catch {\n content = String(part.functionDetails?.args ?? \"{}\");\n }\n } else {\n const raw = part.functionDetails?.response;\n let responseForDisplay: unknown;\n if (raw == null) {\n responseForDisplay = null;\n } else if (typeof raw === 'string') {\n responseForDisplay = raw;\n } else if (typeof raw !== 'object') {\n responseForDisplay = String(raw);\n } else {\n const collapsed = InteractionPartUtils.isCharArray(raw)\n ? raw.join(\"\")\n : InteractionPartUtils.tryCollapseCharIndexedObject(raw);\n responseForDisplay = collapsed ?? raw;\n }\n try {\n content = JSON.stringify(\n { arguments: part.functionDetails?.args, response: responseForDisplay },\n null, 4,\n );\n } catch {\n content = String(raw ?? \"\");\n }\n const MAX_DATA_LENGTH = 100_000;\n if (content.length > MAX_DATA_LENGTH) {\n content = content.substring(0, MAX_DATA_LENGTH) + \"\\n\\n... [truncated — response too large to display]\";\n }\n }\n\n return { title, content, elapsed };\n}\n\nconst FRIENDLY_STATE_MAP: Record<string, FriendlyState> = {\n [EventType.PartialFunctionCall]: 'partial',\n [EventType.FunctionCall]: 'call',\n [EventType.FunctionResponse]: 'response',\n};\n\nconst FunctionPart: React.FC<PartRendererProps> = ({\n part,\n message,\n preview,\n isLastInlineInGroup,\n friendlyMode = false,\n onLinkClicked,\n}) => {\n const display = deriveFunctionDisplay(part);\n\n if (friendlyMode) {\n const friendlyState = FRIENDLY_STATE_MAP[part.eventType] ?? 'partial';\n return (\n <FriendlyPartDisplay\n toolName={part.functionDetails?.name ?? 'unknown'}\n state={friendlyState}\n args={part.functionDetails?.args ?? InteractionPartUtils.getPartTextContent(part)}\n isError={false}\n startTime={part.functionDetails?.start}\n endTime={part.functionDetails?.end}\n streamedBytes={display.content.length}\n />\n );\n }\n\n // Partial function calls preserve the legacy `sql` fence — the content\n // is the streaming raw text and the fence label was set this way\n // historically. Function call/response always render as JSON.\n const markdownLang = part.eventType === EventType.PartialFunctionCall ? 'sql' : 'json';\n const markdownContent = `\\`\\`\\`${markdownLang}\\n\\n${display.content}\\n\\n\\`\\`\\``;\n const onDrawCodeBlock = (_c: string, _cl: string) => null;\n\n return (\n <MessageNonTextDisplay\n sessionId={message.sessionId ?? 'ND'}\n title={display.title}\n icon={<CodeIcon style={boxedIconStyle} />}\n elapsed={display.elapsed}\n content={markdownContent}\n part={part}\n preview={preview}\n onDrawCodeBlock={onDrawCodeBlock}\n onLinkClicked={onLinkClicked}\n isLastInlineInGroup={isLastInlineInGroup}\n />\n );\n};\n\nexport default FunctionPart;\n","import React from 'react';\nimport { Typography } from \"@mui/material\";\nimport { AlarmOn } from '@mui/icons-material';\nimport LoadingDots from \"../../../Library/LoadingDots\";\nimport Stopwatch from \"../../../Stopwatch\";\nimport type { PartRendererProps } from './types';\n\nconst WaitingPart: React.FC<PartRendererProps> = ({ part }) => {\n if (part.waitingDetails?.addTimer) {\n return (\n <div style={{ display: 'flex', flexDirection: 'row', flexWrap: 'wrap', gap: 2, alignItems: 'flex-start', fontStyle: 'italic', fontSize: '0.8rem', color: 'text.secondary' }}>\n <Typography>{part.waitingDetails.status}: </Typography>\n <Stopwatch\n id={part.id + \"-\" + part.waitingDetails?.status.replaceAll(\" \", \"\")}\n on={part.waitingDetails.stopPoint == undefined}\n startingPoint={part.waitingDetails.startingPoint}\n stopPoint={part.waitingDetails.stopPoint!}\n style={{ marginTop: '2px', marginRight: '4px' }}\n />\n {!part.waitingDetails.isTimerRunning && <AlarmOn sx={{ fontSize: '1.2rem', color: 'secondary.light', top: '4px' }} />}\n {part.waitingDetails.loadDots && <LoadingDots />}\n </div>\n );\n }\n return <LoadingDots />;\n};\n\nexport default WaitingPart;\n","import React from 'react';\nimport { Stack, Typography } from \"@mui/material\";\nimport { FrontHand } from '@mui/icons-material';\nimport type { PartRendererProps } from './types';\n\nconst SuspendedPart: React.FC<PartRendererProps> = () => (\n <Stack direction=\"row\" gap={2} sx={{ fontStyle: 'italic', fontSize: '0.8rem', color: 'text.secondary' }}>\n <FrontHand />\n <Typography>Interação suspendida</Typography>\n </Stack>\n);\n\nexport default SuspendedPart;\n","import React from 'react';\nimport { QuestionMark } from '@mui/icons-material';\nimport MessageNonTextDisplay from '../MessageNonTextDisplay';\nimport type { PartRendererProps } from './types';\n\nconst boxedIconStyle = { fontSize: 10, color: 'rgba(255, 255, 255, 0.7)' };\n\n// Catch-all renderer for event types that aren't text/thought/function/\n// waiting/suspended but still want the boxed presentation (InlineData,\n// FileData, CodeExecutionResult, ExecutableCode, Video, Other, NotDefined).\nconst BoxedPart: React.FC<PartRendererProps> = ({\n part,\n message,\n preview,\n isLastInlineInGroup,\n onLinkClicked,\n}) => {\n const title = part.eventType.toString();\n const content = part.rawDetails?.toString() ?? '';\n const markdownContent = `\\`\\`\\`html\\n\\n${content}\\n\\n\\`\\`\\``;\n const onDrawCodeBlock = (_c: string, _cl: string) => null;\n\n return (\n <MessageNonTextDisplay\n sessionId={message.sessionId ?? 'ND'}\n title={title}\n icon={<QuestionMark style={boxedIconStyle} />}\n content={markdownContent}\n part={part}\n preview={preview}\n onDrawCodeBlock={onDrawCodeBlock}\n onLinkClicked={onLinkClicked}\n isLastInlineInGroup={isLastInlineInGroup}\n />\n );\n};\n\nexport default BoxedPart;\n","import React, { useMemo, useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormGroup from '@mui/material/FormGroup';\nimport Stack from '@mui/material/Stack';\nimport TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\nimport { EventType } from '@lib/models/enums';\nimport { InteractionPartUtils } from '@lib/models/InteractionPart';\nimport type { PartRendererProps } from './types';\nimport { useAiChatServices } from '../../AiChatContext';\nimport { useTheme } from '@mui/material/styles';\n\n/**\n * Renders an `ask_user` tool call. Two faces:\n * - INTERACTIVE (unanswered) — the questionnaire form, shown live in the\n * pane-level AskUserSheet: `single` => buttons, `multi` => checkboxes,\n * no-options => free-text, always an optional note (doubles as the \"none of\n * the above\" escape). One single-select question with no note submits on a\n * single click; touch the note and a Submit button appears.\n * - LOCKED (answered / reload) — a pure Question -> Answer summary (no\n * controls), rendered inline in the transcript.\n *\n * Submitting sends the answers back as a JSON string over the WebSocket\n * (ChatAction.AnswerHumanTool, keyed by the tool-call id), unblocking the parked\n * server-side tool so the turn continues.\n */\n\ntype SelectMode = 'single' | 'multi';\ninterface AskQuestion {\n id?: string;\n text: string;\n select: SelectMode;\n options: string[];\n}\ninterface Questionnaire {\n title?: string;\n questions: AskQuestion[];\n}\ninterface QAnswer {\n questionId: string;\n selected: string[];\n note?: string;\n}\ninterface QState {\n selected: string[];\n note: string;\n}\n\nconst asObj = (v: unknown): Record<string, unknown> | null =>\n v && typeof v === 'object' ? (v as Record<string, unknown>) : null;\nconst asStr = (v: unknown): string => (typeof v === 'string' ? v : '');\n\n/** Coerce an already-parsed value into a normalised Questionnaire, or null if unusable. */\nfunction coerceQuestionnaire(raw: unknown): Questionnaire | null {\n const obj = asObj(raw);\n if (!obj) return null;\n const rawQs = obj.questions;\n if (!Array.isArray(rawQs) || rawQs.length === 0) return null;\n\n const questions: AskQuestion[] = [];\n for (const item of rawQs) {\n const q = asObj(item);\n if (!q) continue;\n const text = asStr(q.text).trim();\n if (!text) continue;\n const select: SelectMode = asStr(q.select).toLowerCase() === 'multi' ? 'multi' : 'single';\n const options = (Array.isArray(q.options) ? q.options : [])\n .filter((o): o is string => typeof o === 'string' && o.trim().length > 0)\n .map((o) => o.trim());\n const id = asStr(q.id).trim() || undefined;\n questions.push({ id, text, select, options });\n }\n if (questions.length === 0) return null;\n\n const title = asStr(obj.title).trim() || undefined;\n return { title, questions };\n}\n\n/** Read the questionnaire from the tool-call args — new `questionnaire` JSON, or legacy `question`. */\nfunction readQuestionnaire(args: unknown): Questionnaire | null {\n const a = asObj(args);\n if (!a) return null;\n\n if (typeof a.questionnaire === 'string' && a.questionnaire.trim()) {\n try {\n const parsed = coerceQuestionnaire(JSON.parse(a.questionnaire));\n if (parsed) return parsed;\n } catch {\n /* fall through */\n }\n }\n const fromObj = coerceQuestionnaire(a.questionnaire);\n if (fromObj) return fromObj;\n\n if (typeof a.question === 'string' && a.question.trim()) {\n return { questions: [{ id: 'q0', text: a.question.trim(), select: 'single', options: ['Yes', 'No'] }] };\n }\n return null;\n}\n\n/**\n * Deep-parse the tool's echoed answer into QAnswer[]. The response can arrive\n * char-indexed (persisted shape) or JSON-string-encoded one — or even two —\n * levels deep, because the transport re-encodes the tool's already-JSON string\n * result. Returns the answers array, or null if it's a plain sentinel string\n * (timeout / dismissed) or otherwise unparseable.\n */\nfunction parseAnswers(raw: unknown): QAnswer[] | null {\n let v: unknown = raw;\n if (v && typeof v === 'object') {\n const collapsed = InteractionPartUtils.tryCollapseCharIndexedObject(v);\n if (typeof collapsed === 'string' && collapsed.trim()) v = collapsed;\n }\n for (let i = 0; i < 3 && typeof v === 'string'; i++) {\n const t = v.trim();\n if (!(t.startsWith('{') || t.startsWith('[') || t.startsWith('\"'))) break;\n try {\n v = JSON.parse(t);\n } catch {\n break;\n }\n }\n const obj = asObj(v);\n return obj && Array.isArray(obj.answers) ? (obj.answers as QAnswer[]) : null;\n}\n\n/** A plain sentinel (non-JSON) answer string — e.g. \"(the user did not answer in time)\". */\nfunction sentinelOf(raw: unknown): string | null {\n if (typeof raw !== 'string') return null;\n const t = raw.trim();\n if (!t || t.startsWith('{') || t.startsWith('[') || t.startsWith('\"')) return null;\n return t;\n}\n\n// Only `part` is required; the rest of PartRendererProps is optional so the\n// pane-level AskUserSheet can render this with just the parked part + `embedded`.\n// Still assignable to the PartRenderer registry, which passes the full props.\ntype AskUserPartProps = Partial<PartRendererProps> & { part: PartRendererProps['part']; embedded?: boolean };\n\nconst AskUserPart: React.FC<AskUserPartProps> = ({ part, embedded = false }) => {\n const { agentGatewayService } = useAiChatServices();\n const [submitted, setSubmitted] = useState<string | null>(null);\n const [answers, setAnswers] = useState<Record<number, QState>>({});\n\n const theme = useTheme();\n\n const callId = part.functionDetails?.id;\n const questionnaire = useMemo(\n () => readQuestionnaire(part.functionDetails?.args),\n [part.functionDetails?.args],\n );\n\n // Answered = submitted this session, OR the function response already carries\n // the answer (reload / late render). Keep the response RAW — parseAnswers\n // unwraps whatever encoding it arrives in.\n const serverAnswer = part.eventType === EventType.FunctionResponse\n ? (part.functionDetails?.response ?? null)\n : null;\n const effective: unknown = submitted ?? serverAnswer;\n const locked = effective != null || !callId || !questionnaire;\n\n if (!questionnaire) return null;\n const { title, questions } = questionnaire;\n const qid = (i: number) => questions[i].id || String(i);\n\n const outerSx = embedded\n ? { maxWidth: '100%' }\n : { border: '1px solid', borderColor: 'divider', borderRadius: 2, px: 2, py: 1.5, my: 0.5, maxWidth: '100%' };\n\n // ── Locked: pure Question -> Answer summary (no interactive controls) ──────\n if (locked) {\n const parsed = parseAnswers(effective);\n const sentinel = parsed ? null : sentinelOf(effective);\n return (\n <Box sx={outerSx}>\n {title && (\n <Typography variant=\"subtitle2\" sx={{ mb: 1.25, fontWeight: 600 }}>{title}</Typography>\n )}\n <Stack spacing={1.25}>\n {questions.map((q, i) => {\n const a = parsed?.find((x) => x.questionId === qid(i)) ?? null;\n const sel = a?.selected ?? [];\n const note = (a?.note ?? '').trim();\n const primary = sel.length ? sel.join(', ') : (note || '—');\n const extraNote = sel.length && note ? note : '';\n const answered = sel.length > 0 || (q.options.length === 0 && !!note);\n return (\n <Box key={qid(i)}>\n <Typography variant=\"body2\" sx={{ fontWeight: 500 }}>{q.text}</Typography>\n <Typography\n variant=\"body2\"\n sx={{ mt: 0.25, color: answered ? 'text.primary' : 'text.secondary' }}\n >\n {primary}\n </Typography>\n {extraNote && (\n <Typography variant=\"caption\" sx={{ fontStyle: 'italic', color: 'text.secondary' }}>\n “{extraNote}”\n </Typography>\n )}\n </Box>\n );\n })}\n </Stack>\n <Typography variant=\"caption\" sx={{ display: 'block', mt: 1, color: 'text.secondary' }}>\n {sentinel ?? '✓ answered'}\n </Typography>\n </Box>\n );\n }\n\n // ── Interactive: the live questionnaire form (shown in the sheet) ──────────\n const getState = (i: number): QState => answers[i] ?? { selected: [], note: '' };\n const selectedFor = (i: number): string[] => getState(i).selected;\n const noteFor = (i: number): string => getState(i).note;\n\n const anyNote = Object.values(answers).some((s) => s.note.trim().length > 0);\n const isShortcut = questions.length === 1 && questions[0].select === 'single' && questions[0].options.length > 0;\n const instantSubmit = isShortcut && !anyNote;\n const showSubmit = !instantSubmit;\n\n const buildPayload = (state: Record<number, QState>): string =>\n JSON.stringify({\n answers: questions.map((q, i) => {\n const s = state[i] ?? { selected: [], note: '' };\n const note = s.note.trim();\n return { questionId: q.id || String(i), selected: s.selected, ...(note ? { note } : {}) };\n }),\n });\n\n const submit = (state: Record<number, QState> = answers) => {\n if (!callId) return;\n const payload = buildPayload(state);\n setSubmitted(payload);\n agentGatewayService.answerHumanTool(callId, payload);\n };\n\n const pickSingle = (i: number, opt: string) => {\n const cur = getState(i);\n const next = cur.selected[0] === opt ? [] : [opt]; // click again to deselect (= none)\n const nextState = { ...answers, [i]: { ...cur, selected: next } };\n if (instantSubmit && next.length > 0) {\n submit(nextState);\n return;\n }\n setAnswers(nextState);\n };\n\n const toggleMulti = (i: number, opt: string) => {\n const cur = getState(i);\n const next = cur.selected.includes(opt)\n ? cur.selected.filter((o) => o !== opt)\n : [...cur.selected, opt];\n setAnswers({ ...answers, [i]: { ...cur, selected: next } });\n };\n\n const setNote = (i: number, note: string) => {\n setAnswers({ ...answers, [i]: { ...getState(i), note } });\n };\n\n return (\n <Box sx={outerSx}>\n {title && (\n <Typography variant=\"subtitle2\" sx={{ mb: 1.25, fontWeight: 600 }}>{title}</Typography>\n )}\n\n <Stack spacing={2}>\n {questions.map((q, i) => (\n <Box key={qid(i)}>\n <Typography variant=\"body2\" sx={{ mb: 0.75, fontWeight: 500 }}>{q.text}</Typography>\n\n {q.options.length > 0 && q.select === 'multi' && (\n <FormGroup>\n {q.options.map((opt) => (\n <FormControlLabel\n key={opt}\n control={\n <Checkbox\n size=\"small\"\n checked={selectedFor(i).includes(opt)}\n onChange={() => toggleMulti(i, opt)}\n />\n }\n label={<Typography variant=\"body2\">{opt}</Typography>}\n />\n ))}\n </FormGroup>\n )}\n\n {q.options.length > 0 && q.select === 'single' && (\n <Stack direction=\"row\" spacing={1} useFlexGap flexWrap=\"wrap\">\n {q.options.map((opt) => (\n <Button\n key={opt}\n size=\"small\"\n variant={selectedFor(i).includes(opt) ? 'contained' : 'outlined'}\n color=\"primary\"\n onClick={() => pickSingle(i, opt)}\n sx={{color:theme.palette.text.secondary}}\n >\n {opt}\n </Button>\n ))}\n </Stack>\n )}\n\n <TextField\n value={noteFor(i)}\n onChange={(e) => setNote(i, e.target.value)}\n placeholder={\n q.options.length > 0\n ? 'Add a note, or something not listed (optional)'\n : 'Type your answer…'\n }\n size=\"small\"\n fullWidth\n multiline\n maxRows={3}\n sx={{ mt: q.options.length > 0 ? 1 : 0.5 }}\n />\n </Box>\n ))}\n </Stack>\n\n <Stack direction=\"row\" spacing={1} alignItems=\"center\" sx={{ mt: 1.5 }}>\n {showSubmit ? (\n <Button size=\"small\" variant=\"contained\" color=\"primary\" onClick={() => submit()}>\n Submit\n </Button>\n ) : (\n <Typography variant=\"caption\" sx={{ color: 'text.secondary' }}>\n Pick an option to answer\n </Typography>\n )}\n </Stack>\n </Box>\n );\n};\n\nexport default AskUserPart;\n","import React from 'react';\n\nconst EnvironmentContext = React.createContext<Record<string, unknown> | null>(null);\n\nexport const EnvironmentProvider: React.FC<{\n value: Record<string, unknown>;\n children: React.ReactNode;\n}> = ({ value, children }) => (\n <EnvironmentContext.Provider value={value}>\n {children}\n </EnvironmentContext.Provider>\n);\n\nexport function useEnvironment<T = Record<string, unknown>>(): T {\n const ctx = React.useContext(EnvironmentContext);\n if (!ctx) throw new Error('useEnvironment must be used within EnvironmentProvider');\n return ctx as T;\n}\n\n/**\n * Non-throwing variant: returns the surrounding environment, or an empty `{}`\n * when there's no `EnvironmentProvider` in scope. Use it where an environment\n * is optional — e.g. the UI-tool dispatcher resolves `env` for actions on\n * EVERY uiTool part, including chat surfaces that have no provider (there the\n * action's `env.foo?.()` calls simply no-op). On replay, the surrounding\n * `InertEnvironmentProvider` already neutralises every callable.\n */\nexport function useEnvironmentOptional<T = Record<string, unknown>>(): T {\n return (React.useContext(EnvironmentContext) ?? {}) as T;\n}\n\n/**\n * Replaces every callable property of the surrounding environment\n * with a no-op for `children`. Non-callable properties (data, refs,\n * primitive values) pass through unchanged. Use it to isolate\n * historical / replayed React subtrees — e.g. completed chat\n * messages whose body still carries live-TSX side-effect hooks like\n * `useDashboardPad` — so re-mounting them on session reload cannot\n * mutate live application state. The subtrees still render, their\n * components still fetch data, but their side-effect calls dead-end\n * at this boundary.\n *\n * No-throw when there's no parent env: returns an empty record so\n * `useEnvironment` consumers inside don't blow up either. That\n * matches the \"inert by default\" semantics of historical replay.\n */\nexport const InertEnvironmentProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const parent = React.useContext(EnvironmentContext);\n const inert = React.useMemo<Record<string, unknown>>(() => {\n if (!parent) return {};\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(parent)) {\n out[key] = typeof value === 'function' ? () => undefined : value;\n }\n return out;\n }, [parent]);\n return (\n <EnvironmentContext.Provider value={inert}>\n {children}\n </EnvironmentContext.Provider>\n );\n};\n","import type React from 'react';\nimport type { InteractionPart } from '@lib/models/InteractionPart';\nimport type { Interaction } from '@lib/models/Interaction';\n\n/**\n * UI-tool registry — the host maps a tool NAME to either a React renderer or a\n * fire-once side-effect (\"action\"), and the library owns everything else:\n * routing the `uiTool` part kind here, parsing/unwrapping the wire args,\n * normalizing the connector-qualified function name, firing actions once per\n * tool-call id (and not on replay), and drawing an optional status chip.\n *\n * The per-entry generic (`render<TArgs>` / `action<TArgs>`) is a COMPILE-TIME\n * assertion only: args arrive off the wire as `unknown` (usually a JSON string,\n * sometimes double-encoded), so a missing field is `undefined` at runtime no\n * matter what the type claims. Pass `opts.parse` when you want a real runtime\n * guard/coercion.\n *\n * Build once at module load and pass the result as `<AiChatProvider uiTools={…} />`:\n *\n * export const uiTools = createUiToolRegistry()\n * .render<{ id: string; subAgentId?: string }>('present_dashboard',\n * (a) => <ScriptDashboardViewer dashboardId={a.id} … />)\n * .action<{ mode?: 'create' | 'update' }>('present_dashboard_pad',\n * (a, { env }) => env.updateDashboardPad?.(JSON.parse(a.definitionJson)),\n * { status: 'Rascunho atualizado' })\n * .build();\n */\n\n/** Default args shape when a registration omits its generic. */\nexport type UiToolArgs = Record<string, unknown>;\n\n/** Context handed to every renderer. */\nexport interface UiToolContext {\n /** Normalized tool name (`UI_` marker + `{Plugin}-`/`{Plugin}_` qualifier stripped). */\n name: string;\n /** This tool call's id — stable across the call's Composing→Executing→Done lifecycle. */\n callId: string;\n /** The tool RESULT, if any. May be an object or a (possibly double-encoded) JSON string. */\n response: unknown;\n /**\n * The tool's CLIENT-ONLY output — the payload it wrote to its SDK `ToolClientOutput` sink,\n * already parsed. This is the preferred render source: it arrives correlated to THIS call (by\n * id) on the result event (so multiple UI calls never race), the LLM never saw it, and it\n * survives reload. `undefined` until the call has responded, or when the tool didn't opt in\n * (fall back to `args`). Replaces the old slot-id-correlated tool-event lookup over `parts`.\n */\n clientOutput: unknown;\n /** Sibling parts of the same interaction (e.g. present_tsx's compiled-JS event rides here). */\n parts: ReadonlyArray<InteractionPart>;\n /** The whole interaction this part belongs to. */\n message: Interaction;\n /** True while the turn is still streaming. */\n onGoing: boolean;\n /** True during historical replay / preview — actions must NOT re-fire side effects. */\n preview: boolean;\n}\n\n/** Context handed to actions — adds the host environment. */\nexport interface UiToolActionContext extends UiToolContext {\n /**\n * The host environment from `EnvironmentProvider` (e.g. `refreshDashboard`,\n * `createDashboardPad`). Empty `{}` when no provider is in scope or during\n * replay (`InertEnvironmentProvider` no-ops every callable) — so action calls\n * simply dead-end rather than throw.\n */\n env: Record<string, unknown>;\n}\n\nexport type UiToolRenderFn<TArgs> = (args: TArgs, ctx: UiToolContext) => React.ReactNode;\nexport type UiToolActionFn<TArgs> = (args: TArgs, ctx: UiToolActionContext) => void | Promise<void>;\n\nexport interface UiToolRenderOptions<TArgs> {\n /** Runtime arg guard/coercion. Return `null` to render nothing (treated as invalid args). */\n parse?: (raw: unknown) => TArgs | null;\n}\n\nexport interface UiToolActionOptions<TArgs> {\n /** Runtime arg guard/coercion. Return `null` to skip firing (treated as invalid args). */\n parse?: (raw: unknown) => TArgs | null;\n /**\n * Optional status chip shown AFTER the action fires: a string, or a function\n * of (args, ctx) returning the label (or `null` for no chip). Omit entirely\n * for a silent action — no UI at all, just the side effect.\n */\n status?: string | ((args: TArgs, ctx: UiToolActionContext) => string | null);\n}\n\n// --- stored (type-erased) entries -------------------------------------------\n// The call-site generic erases to `any` here; safety lives at registration.\n\nexport interface UiToolRenderEntry {\n kind: 'render';\n name: string;\n render: UiToolRenderFn<any>;\n parse?: (raw: unknown) => any;\n}\nexport interface UiToolActionEntry {\n kind: 'action';\n name: string;\n run: UiToolActionFn<any>;\n parse?: (raw: unknown) => any;\n status?: string | ((args: any, ctx: UiToolActionContext) => string | null);\n}\nexport type UiToolEntry = UiToolRenderEntry | UiToolActionEntry;\n\n/** A built, read-only registry passed to `<AiChatProvider uiTools={…} />`. */\nexport interface UiToolRegistry {\n /** Resolve the entry for a RAW (possibly `UI_`-prefixed / connector-qualified) tool name. */\n resolve(rawName: string | undefined | null): UiToolEntry | undefined;\n /** All registered (normalized) names. */\n names(): string[];\n}\n\nexport interface UiToolRegistryBuilder {\n render<TArgs = UiToolArgs>(name: string, render: UiToolRenderFn<TArgs>, opts?: UiToolRenderOptions<TArgs>): UiToolRegistryBuilder;\n action<TArgs = UiToolArgs>(name: string, run: UiToolActionFn<TArgs>, opts?: UiToolActionOptions<TArgs>): UiToolRegistryBuilder;\n build(): UiToolRegistry;\n}\n\n/**\n * Strip the `UI_` render-tool marker wherever it sits — at the very start\n * (`UI_present_dashboard`) or right after a connector's plugin separator\n * (`MyPlugin-UI_present_dashboard` / `MyPlugin_UI_present_dashboard`).\n */\nfunction stripUiMarker(raw: string): string {\n return raw.replace(/(^|[-_])UI_/, '$1');\n}\n\n/**\n * Tolerant unwrap for a tool's `clientOutput` payload. It reaches the client as a JSON string\n * (server-serialized) on the live path and as a string off the persisted sibling on replay; peel up\n * to three string layers (only when the trimmed text looks like JSON). Unlike {@link parseUiArgs}\n * this does NOT require an object — a tool may hand the client an array or primitive. Returns the\n * parsed value, the original non-string value as-is, or `undefined` when absent/unparseable.\n */\nexport function parseClientOutput(raw: unknown): unknown {\n let r: unknown = raw;\n if (r == null) return undefined;\n for (let i = 0; i < 3 && typeof r === 'string'; i++) {\n const t = r.trim();\n if (!(t.startsWith('{') || t.startsWith('[') || t.startsWith('\"'))) break;\n try { r = JSON.parse(t); } catch { return undefined; }\n }\n return r;\n}\n\n/**\n * Tolerant arg unwrap. Args reach the client as an object on the live path, but as a\n * JSON string — occasionally double-encoded — on the persisted/replay path. Peel up to\n * three string layers (only when the trimmed text looks like JSON), then require an\n * object. Returns `null` when absent/unparseable; mirrors `InteractionPartUtils.uiSlotId`.\n */\nexport function parseUiArgs(raw: unknown): UiToolArgs | null {\n let r: unknown = raw;\n for (let i = 0; i < 3 && typeof r === 'string'; i++) {\n const t = r.trim();\n if (!(t.startsWith('{') || t.startsWith('['))) break;\n try { r = JSON.parse(t); } catch { return null; }\n }\n return r != null && typeof r === 'object' ? (r as UiToolArgs) : null;\n}\n\nexport function createUiToolRegistry(): UiToolRegistryBuilder {\n const entries = new Map<string, UiToolEntry>();\n\n const builder: UiToolRegistryBuilder = {\n render(name, render, opts) {\n const key = stripUiMarker(name);\n entries.set(key, { kind: 'render', name: key, render: render as UiToolRenderFn<any>, parse: opts?.parse });\n return builder;\n },\n action(name, run, opts) {\n const key = stripUiMarker(name);\n entries.set(key, {\n kind: 'action',\n name: key,\n run: run as UiToolActionFn<any>,\n parse: opts?.parse,\n status: opts?.status as UiToolActionEntry['status'],\n });\n return builder;\n },\n build() {\n // Snapshot so post-build mutation of the builder can't leak in.\n const frozen = new Map(entries);\n return {\n resolve(rawName) {\n if (!rawName) return undefined;\n const n = stripUiMarker(rawName);\n const exact = frozen.get(n);\n if (exact) return exact;\n // Connector-qualified form ({plugin}-{name} / {plugin}_{name}). Match the\n // longest registered name that `n` ends with so e.g. `present_chart` wins\n // over a hypothetical `chart`. (Mirrors the isAskUser suffix matcher.)\n let best: UiToolEntry | undefined;\n let bestLen = -1;\n for (const [name, entry] of frozen) {\n if ((n.endsWith('-' + name) || n.endsWith('_' + name)) && name.length > bestLen) {\n best = entry;\n bestLen = name.length;\n }\n }\n return best;\n },\n names() {\n return [...frozen.keys()];\n },\n };\n },\n };\n return builder;\n}\n","import React, { useContext, useEffect, useRef, useState } from 'react';\nimport { Box, Chip } from '@mui/material';\nimport type { InteractionPart } from '@lib/models/InteractionPart';\nimport type { Interaction } from '@lib/models/Interaction';\nimport { AiChatServiceContext } from '../../AiChatContext';\nimport { useEnvironmentOptional } from '../../../LlmResponseRender/EnvironmentContext';\nimport FunctionPart from './FunctionPart';\nimport type { PartRendererProps } from './types';\nimport {\n parseClientOutput,\n parseUiArgs,\n type UiToolActionContext,\n type UiToolActionEntry,\n type UiToolContext,\n} from './uiToolRegistry';\n\n/**\n * The built-in `uiTool` renderer. The library routes every UI render tool here\n * (server flags them `functionDetails.isUi`); this dispatcher then looks up the\n * host's `uiTools` registry by tool name and either renders the matched\n * component or fires the matched action. Unregistered tools (or no registry at\n * all) fall through to `FunctionPart`, preserving the pre-registry behaviour of\n * showing them like a normal tool call.\n *\n * Hosts may still fully override the `uiTool` kind via `partRenderers={{ uiTool }}`\n * — `MessagePart` prefers an explicit override over this default — but the\n * registry is the intended extension point.\n */\nconst UiToolDispatcher: React.FC<PartRendererProps> = (props) => {\n const { part, message, onGoing, preview } = props;\n const services = useContext(AiChatServiceContext);\n // Resolve env for actions on EVERY uiTool part. Non-throwing: chat surfaces\n // with no EnvironmentProvider get `{}`, so an action's `env.foo?.()` no-ops.\n const env = useEnvironmentOptional();\n\n const fd = part.functionDetails;\n \n const entry = services?.uiTools?.resolve(fd?.name);\n\n // No registry / unregistered UI tool → render it as a plain tool call.\n if (!entry) return <FunctionPart {...props} />;\n\n const callId = fd?.id ?? '';\n\n // The tool's client-only payload (preferred render source), parsed once and shared by both kinds.\n const clientOutput = parseClientOutput(fd?.clientOutput);\n\n if (entry.kind === 'action') {\n return (\n <UiToolActionRunner\n entry={entry}\n callId={callId}\n rawArgs={fd?.args}\n response={fd?.response}\n clientOutput={clientOutput}\n parts={message.parts}\n message={message}\n onGoing={onGoing}\n preview={preview}\n env={env}\n />\n );\n }\n\n const args = entry.parse ? entry.parse(fd?.args) : parseUiArgs(fd?.args);\n if (args == null) return null; // unparseable / guard-rejected → render nothing\n const ctx: UiToolContext = {\n name: entry.name,\n callId,\n response: fd?.response,\n clientOutput,\n parts: message.parts,\n message,\n onGoing,\n preview,\n };\n // NB: callbacks must NOT call hooks directly (they run in this render). Need a\n // hook? Return a component element — that's the normal pattern anyway.\n return <>{entry.render(args, ctx)}</>;\n};\n\ninterface ActionRunnerProps {\n entry: UiToolActionEntry;\n callId: string;\n rawArgs: unknown;\n response: unknown;\n clientOutput: unknown;\n parts: ReadonlyArray<InteractionPart>;\n message: Interaction;\n onGoing: boolean;\n preview: boolean;\n env: Record<string, unknown>;\n}\n\n/**\n * Fires a registered action exactly once per tool-call id, then optionally shows\n * a status chip. It fires on the LIVE render — the streaming `<CurrentMessage>`\n * carries `preview=true` AND the real environment (it sits OUTSIDE the chat's\n * `InertEnvironmentProvider`). Replay-safety comes solely from that inert wrapper:\n * once a turn settles into history, every env callable no-ops, so a re-fired action\n * dead-ends. We must therefore NOT gate on `preview` — `preview=true` IS the live\n * turn, and gating on it skips the one render where the env is real, leaving the\n * action to fire only against the inert (historical) env. Both sync throws and\n * async rejections surface as an error chip.\n */\nconst UiToolActionRunner: React.FC<ActionRunnerProps> = ({\n entry, callId, rawArgs, response, clientOutput, parts, message, onGoing, preview, env,\n}) => {\n const fired = useRef<string | null>(null);\n const [chip, setChip] = useState<{ label: string; ok: boolean } | null>(null);\n\n useEffect(() => {\n if (fired.current === callId) return; // fire once per tool call\n fired.current = callId;\n\n // Actions default to `{}` so no-arg tools (e.g. refresh) still fire; an\n // explicit `parse` returning null is treated as \"invalid → skip\".\n const args = entry.parse ? entry.parse(rawArgs) : (parseUiArgs(rawArgs) ?? {});\n if (args == null) {\n console.warn('[uiTool] action args rejected by parse():', entry.name);\n return;\n }\n const ctx: UiToolActionContext = { name: entry.name, callId, response, clientOutput, parts, message, onGoing, preview, env };\n Promise.resolve()\n .then(() => entry.run(args, ctx))\n .then(() => {\n const label = typeof entry.status === 'function' ? entry.status(args, ctx) : (entry.status ?? null);\n if (label) setChip({ label, ok: true });\n })\n .catch((e) => {\n console.error('[uiTool] action failed:', entry.name, e);\n setChip({ label: 'Ação não pôde ser executada', ok: false });\n });\n // Fire-once per tool-call id; replay re-fires no-op via InertEnvironmentProvider.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [callId]);\n\n if (!chip) return null;\n return (\n <Box sx={{ my: 0.5 }}>\n <Chip size=\"small\" variant=\"outlined\" color={chip.ok ? 'default' : 'error'} label={chip.label} />\n </Box>\n );\n};\n\nexport default UiToolDispatcher;\n","import { EventType } from '@lib/models/enums';\nimport type { InteractionPart } from '@lib/models/InteractionPart';\nimport type { PartKind, PartRenderer } from './types';\nimport { isAskUser } from './types';\nimport TextPart from './TextPart';\nimport ThoughtPart from './ThoughtPart';\nimport FunctionPart from './FunctionPart';\nimport WaitingPart from './WaitingPart';\nimport SuspendedPart from './SuspendedPart';\nimport BoxedPart from './BoxedPart';\nimport AskUserPart from './AskUserPart';\nimport UiToolDispatcher from './UiToolDispatcher';\n\nexport const DEFAULT_PART_RENDERERS: Record<PartKind, PartRenderer> = {\n text: TextPart,\n thought: ThoughtPart,\n function: FunctionPart,\n waiting: WaitingPart,\n suspended: SuspendedPart,\n boxed: BoxedPart,\n // The built-in dispatcher resolves the host's `uiTools` registry (name →\n // renderer/action) and draws the matched component, or falls back to a plain\n // tool call when there's no registry / no match. Hosts can still fully\n // override the kind via `partRenderers={{ uiTool }}` (MessagePart prefers it).\n uiTool: UiToolDispatcher,\n // AskUserPart widens props (only `part` required) so the pane-level\n // AskUserSheet can render it standalone; the registry always passes the\n // full PartRendererProps, so this cast is safe.\n askUser: AskUserPart as PartRenderer,\n};\n\n/**\n * Maps an `InteractionPart` to the kind of renderer that should handle it.\n * Returns `null` for parts that should not render anything (ServerError,\n * unknown/filtered event types like ToolEvent which is dropped upstream\n * in MessageAgent).\n */\nexport function classifyPart(part: InteractionPart): PartKind | null {\n switch (part.eventType) {\n case EventType.ServerError:\n return null;\n case EventType.Text:\n return 'text';\n case EventType.Thought:\n return 'thought';\n case EventType.Waiting:\n return 'waiting';\n case EventType.Suspended:\n return 'suspended';\n case EventType.UserAnswer:\n // A user turn's rich UI representation — carries functionDetails {name,args,isUi},\n // so the uiTool dispatcher resolves the host registry by name exactly like an\n // agent-emitted UI tool. Rendered on the user side (MessageUser); excluded from\n // the agent side (MessageAgent).\n return 'uiTool';\n case EventType.PartialFunctionCall:\n case EventType.FunctionCall:\n case EventType.FunctionResponse:\n // ask_user is a built-in interaction primitive — render it as an inline\n // yes/no prompt inside the library (not host-provided like uiTool).\n if (isAskUser(part.functionDetails?.name)) return 'askUser';\n // UI render tools (marked [KernelUiFunction] → functionDetails.isUi) are first-class\n // content — a distinct kind rendered by a host `uiTool` renderer, not gated by\n // showToolCalls. But render ONLY once the call has RESPONDED (status 'Done'): the tool's\n // render payload (functionDetails.clientOutput) and any ack/slot ride the RESULT, and\n // rendering on the bare call races multiple concurrent UI calls. Until the result folds\n // in, show it as an ordinary tool-call chip.\n if (part.functionDetails?.isUi && part.functionDetails?.status === 'Done') return 'uiTool';\n return 'function';\n case EventType.InlineData:\n case EventType.FileData:\n case EventType.CodeExecutionResult:\n case EventType.ExecutableCode:\n case EventType.Video:\n case EventType.Other:\n case EventType.NotDefined:\n return 'boxed';\n default:\n return null;\n }\n}\n\nexport * from './types';\nexport * from './uiToolRegistry';\nexport { TextPart, ThoughtPart, FunctionPart, WaitingPart, SuspendedPart, BoxedPart };\nexport { default as UiToolDispatcher } from './UiToolDispatcher';\n","import React, { useContext } from 'react';\nimport { AiChatServiceContext } from '../AiChatContext';\nimport { classifyPart, DEFAULT_PART_RENDERERS, type PartRendererProps } from './parts';\n\n/**\n * Dispatcher: maps a part's event type to a renderer kind and forwards\n * props to that renderer. Per-kind components live in `./parts/`.\n *\n * The consumer override hook reads `partRenderers` off the AiChat services\n * context (set via `<AiChat partRenderers={...} />`). When no override is\n * provided for a given kind, the built-in `DEFAULT_PART_RENDERERS[kind]`\n * renders. Used outside an AiChatProvider, the dispatcher silently falls\n * back to the built-ins — `useContext` returns undefined rather than\n * throwing, so this stays usable for isolated rendering / tests.\n */\nconst MessagePart: React.FC<PartRendererProps> = React.memo((props) => {\n if(props.part.visible === false) return null;\n \n const services = useContext(AiChatServiceContext);\n const kind = classifyPart(props.part);\n if (!kind) return null;\n const Renderer = services?.partRenderers?.[kind] ?? DEFAULT_PART_RENDERERS[kind];\n return <Renderer {...props} />;\n}, (prevProps, nextProps) => {\n // Comparator preserved verbatim from the pre-split MessagePart. Each\n // leaf only reads a narrow subset of these fields, but keeping the\n // union check here preserves the current re-render frequency\n // exactly. Narrower per-leaf memos can land as a follow-up.\n if (prevProps.part.id !== nextProps.part.id) return false;\n if ((prevProps.part.textDetails?.version ?? 0) < (nextProps.part.textDetails?.version ?? 0)) return false;\n if (prevProps.part.text !== nextProps.part.text) return false;\n if (prevProps.part.eventType !== nextProps.part.eventType) return false;\n if (prevProps.part.partial !== nextProps.part.partial) return false;\n if (prevProps.part.functionDetails?.text !== nextProps.part.functionDetails?.text) return false;\n if (prevProps.part.functionDetails?.args !== nextProps.part.functionDetails?.args) return false;\n if (prevProps.part.functionDetails?.response !== nextProps.part.functionDetails?.response) return false;\n if (prevProps.part.waitingDetails?.status !== nextProps.part.waitingDetails?.status) return false;\n if (prevProps.part.waitingDetails?.stopPoint !== nextProps.part.waitingDetails?.stopPoint) return false;\n if (prevProps.message.turn_complete !== nextProps.message.turn_complete) return false;\n if (prevProps.message.asyncFinalResponse !== nextProps.message.asyncFinalResponse) return false;\n if (prevProps.isLastInlineInGroup !== nextProps.isLastInlineInGroup) return false;\n if (prevProps.preview !== nextProps.preview) return false;\n if (prevProps.friendlyMode !== nextProps.friendlyMode) return false;\n\n return true;\n});\n\nexport default MessagePart;\n","import React from 'react';\nimport Box from '@mui/material/Box';\nimport { type Interaction } from '@lib/models/Interaction';\nimport { useAiChatServices } from '..';\n\ninterface MessagePersonaProps {\n isUser: boolean;\n message: Interaction;\n}\n\nconst MONO = 'ui-monospace, SFMono-Regular, Menlo, \"JetBrains Mono\", monospace';\n\nfunction defaultFormatTimestamp(date: Date): string {\n try {\n return date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });\n } catch {\n return '';\n }\n}\n\n/**\n * Persona header row above a message — an avatar + \"{NAME} · {time}\". Rendered only when the host\n * enables `showPersona`. The label/initials come from `resolvePersona` (default: generic\n * \"Você\" / \"Agente\") and the time from `formatTimestamp(message.created)` (default: locale HH:mm).\n */\nconst MessagePersona: React.FC<MessagePersonaProps> = ({ isUser, message }) => {\n const { showPersona, formatTimestamp, resolvePersona } = useAiChatServices();\n if (!showPersona) return null;\n\n const persona = resolvePersona?.({ isUser, message })\n ?? { label: isUser ? 'Você' : 'Agente', initials: isUser ? 'V' : 'A' };\n const initials = persona.initials ?? (persona.label.slice(0, 1).toUpperCase() || '·');\n const time = (formatTimestamp ?? defaultFormatTimestamp)(message.created);\n\n return (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, mt: 1.5, mb: 0.5 }}>\n <Box\n sx={{\n width: 22,\n height: 22,\n borderRadius: '50%',\n flexShrink: 0,\n display: 'grid',\n placeItems: 'center',\n fontSize: 11,\n fontWeight: 600,\n bgcolor: isUser ? 'text.primary' : 'primary.main',\n color: isUser ? 'background.paper' : 'primary.contrastText',\n }}\n >\n {initials}\n </Box>\n <Box\n component=\"span\"\n sx={{\n fontFamily: MONO,\n fontSize: 10,\n letterSpacing: '0.1em',\n textTransform: 'uppercase',\n color: 'text.disabled',\n }}\n >\n {persona.label}{time ? ` · ${time}` : ''}\n </Box>\n </Box>\n );\n};\n\nexport default MessagePersona;\n","import React, { type CSSProperties, useRef, useState, useEffect, useCallback } from 'react';\nimport { type Interaction } from '@lib/models/Interaction';\nimport MessagePart from './MessagePart';\nimport { isAskUser } from './parts/types';\nimport { type InteractionPart, InteractionPartUtils } from '@lib/models/InteractionPart';\nimport { EventType } from '@lib/models/enums';\nimport { InteractionPartGroup, InteractionService } from '@lib/services/interactionService';\nimport { EventBusService, MockEventBusService } from '@lib/services/eventBusService.js';\nimport type { IArtifactService } from '@lib/services/interfaces/artifactService';\nimport _ from 'lodash';\nimport { useAiChatServices, useAiChatSessionStore } from '..';\nimport Stack from '@mui/material/Stack';\nimport SubAgentBox from './SubAgentBox';\nimport { useTheme } from '@mui/material/styles';\nimport MessagePersona from './MessagePersona';\n\n// UI render tools whose server-generated SlotId is referenced by a\n// `{{Component:<id>}}` token in the assistant text are rendered INSIDE that\n// text by LlmResponseRender (at the token), so drop them from the positional\n// part list here to avoid a double render. uiTool parts NOT referenced by a\n// token still render at their stream position (the fallback). No-op otherwise.\nfunction suppressSlottedUiParts(parts: InteractionPart[], onGoing: boolean): InteractionPart[] {\n const isUi = (p: InteractionPart) =>\n (p.eventType === EventType.FunctionCall\n || p.eventType === EventType.FunctionResponse\n || p.eventType === EventType.PartialFunctionCall)\n && (p.functionDetails?.isUi ?? false);\n\n // SlotId lives in the tool result — a clean object on the live path, but a\n // (sometimes double-encoded) JSON string once persisted/replayed. uiSlotId\n // unwraps either shape; reading `.SlotId` off the raw string yields undefined.\n const slotOf = (p: InteractionPart) => InteractionPartUtils.uiSlotId(p);\n\n // Slot ids the model actually placed with a `{{Component:id}}` token in its text\n // (LlmResponseRender renders those inline at the token). Computed from the text\n // streamed SO FAR, so it's valid live too: a token that hasn't arrived yet simply\n // isn't in the set, and its tool keeps rendering at its stream position until it does.\n const referenced = new Set<string>();\n for (const p of parts) {\n if (p.eventType === EventType.Text) {\n const t = InteractionPartUtils.getPartTextContent(p);\n if (t) for (const m of t.matchAll(/\\{\\{\\s*Component:\\s*([\\w-]+)\\s*\\}\\}/g)) referenced.add(m[1]);\n }\n }\n\n // While the turn is live: a UI tool whose result is in (status Done) renders NOW,\n // at its stream position — UNLESS the model already placed it with a `{{Component:id}}`\n // token (then it renders inside the text there, avoiding a double render). This makes\n // the placeable components (present_chart / present_metric / present_tsx) appear the\n // moment their result lands instead of staying invisible for the whole turn whenever\n // the model never writes a token; the same rule covers the side-effect ACTION tools\n // (present_dashboard_pad / present_guide / refresh_dashboard, no SlotId → never\n // referenced), whose EnvActionChip useEffect must fire against the REAL environment\n // inside the live <CurrentMessage> (at turn-end they'd only mount under ChatPane's\n // <InertEnvironmentProvider>, where env calls no-op). Parts still streaming\n // (status != Done) stay hidden to avoid a positional flash before the result arrives.\n if (onGoing) {\n return parts.filter((p) => {\n if (!isUi(p)) return true;\n const s = slotOf(p);\n // While parked (status !== 'Done') the ask_user prompt is surfaced by the\n // pane-level AskUserSheet docked above the composer — NOT inline, or it would\n // show in two places. Once answered (Done) it renders inline as the locked\n // transcript card (live and, after the turn closes, in history).\n if (isAskUser(p.functionDetails?.name)) {\n if (p.functionDetails?.status !== 'Done') return false;\n return !(s && referenced.has(s));\n }\n if (p.functionDetails?.status !== 'Done') return false;\n return !(s && referenced.has(s));\n });\n }\n\n // Turn complete: drop only the parts whose SlotId a token actually referenced\n // (those render inside the text); any UI tool the model never placed with a\n // token falls back to positional rendering here.\n if (referenced.size === 0) return parts;\n return parts.filter((p) => {\n if (!isUi(p)) return true;\n const s = slotOf(p);\n return !(s && referenced.has(s)); // referenced → rendered inside the text instead\n });\n}\n\n//showSubAgents\ninterface MessageAgentProps {\n message: Interaction;\n onGoing: boolean;\n onLinkClicked: (link: string, content: string | null) => void;\n appendWaitingPart: boolean;\n messagesRef?: React.RefObject<Map<string, HTMLDivElement>>;\n isConnectionOpen: boolean;\n showSubAgents?: boolean;\n preview: boolean;\n container: string,\n friendlyMode?: boolean,\n}\n\nconst MessageAgent: React.FC<MessageAgentProps> = ({ message, showSubAgents, onGoing, container, preview, onLinkClicked, appendWaitingPart, messagesRef, isConnectionOpen, friendlyMode = false }) => {\n const subAgents = useAiChatSessionStore((state) => state.subAgents);\n const activeSubAgents = [...subAgents.values()];\n const { showToolCalls } = useAiChatServices();\n\n const theme = useTheme();\n const containerRef = useRef<HTMLDivElement>(null);\n const [isLessThenMedium, setIsLessThenMedium] = useState(false);\n\n useEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n const ro = new ResizeObserver((entries) => {\n const width = entries[0]?.contentRect.width ?? 0;\n setIsLessThenMedium(width < theme.breakpoints.values.md);\n });\n ro.observe(el);\n return () => ro.disconnect();\n }, [theme.breakpoints.values.md]);\n\n const showSuspended = message.isSuspended === true;\n\n // Count only agent-side parts for the \"nothing yet\" loading heuristics — a user turn's\n // injected UserAnswer part (rendered by MessageUser, not here) must not read as agent output.\n const agentPartsCount = (message.parts ?? []).filter((p) => p.eventType !== EventType.UserAnswer).length;\n\n let traillingPart: InteractionPart | null = null;\n let plannigPart: InteractionPart | null = null;\n if (showSuspended) {\n traillingPart = InteractionPartUtils.createSuspended();\n }\n else {\n traillingPart = InteractionPartUtils.createWaiting(isConnectionOpen && agentPartsCount == 0, false, \"\", new Date())\n }\n\n if (appendWaitingPart) {\n if (!message.parts || message.parts.length == 1)\n plannigPart = InteractionPartUtils.fromText(\"Planejando próximos passos\", \"system\", \"planningPart\");\n }\n\n if (!message.asyncFinalResponse) {//stop timers\n if (message.parts.length > 0) {\n const lastPart = message.parts[message.parts.length - 1];\n if (lastPart.waitingDetails)\n lastPart.waitingDetails!.loadDots = true;\n }\n }\n\n // Use InteractionService to process and group parts\n const interactionService = new InteractionService(message, new MockEventBusService());\n\n let groups: InteractionPartGroup[] = [];\n\n if (!message.parts)\n return null;\n\n // Always strip ToolEvent parts (those are surfaced via the alert icon\n // and the host's task list). Function-call parts (call / response /\n // partial — the runtime mutates a completed call's eventType from\n // FunctionCall to FunctionResponse on the same part, so all three\n // variants need the same treatment) collapse out of view once the\n // turn closes (i.e. when this message is rendered through `Message`\n // with `onGoing={false}`), unless the host opts back into keeping\n // them by setting `showToolCalls`. While the turn is still live\n // (`onGoing` — CurrentMessage) they stay visible so the user can\n // watch the run progress.\n let partsToConsider = suppressSlottedUiParts(message.parts ?? [], onGoing).filter((p) => {\n if (p.eventType === EventType.ToolEvent) return false;\n // A user turn's UI representation renders on the user side (MessageUser), never here.\n if (p.eventType === EventType.UserAnswer) return false;\n // Client-only output siblings are folded into their call part (functionDetails.clientOutput);\n // they never render standalone. Drop any that slipped through as their own part.\n if (p.eventType === EventType.FunctionClientOutput) return false;\n if((\n p.eventType === EventType.FunctionCall\n || p.eventType === EventType.FunctionResponse\n || p.eventType === EventType.PartialFunctionCall\n )) {\n // UI render tools (UI_ prefix) are first-class content — always show them,\n // independent of the showToolCalls toggle. (classifyPart routes them to\n // the `uiTool` kind so the host renders them as components.)\n if (p.functionDetails?.isUi || showToolCalls) return true;\n return showToolCalls;\n }\n return true;\n });\n\n // const expandedParts: InteractionPart[] = []\n // partsToConsider.forEach((p) => {\n // if (p.eventType == EventType.Text) {\n // expandedParts.push(p);\n // }\n // else {\n // expandedParts.push(p);\n // }\n // })\n\n groups = interactionService.groupPartsByDisplayType(partsToConsider, onGoing, showToolCalls);\n\n\n const getStyleGroup = (group: InteractionPartGroup): CSSProperties => {\n const useColumn = friendlyMode || group.type !== 'inline';\n return {\n display: 'flex',\n flexDirection: useColumn ? 'column' : 'row',\n flexWrap: useColumn ? 'nowrap' : 'wrap',\n gap: useColumn ? undefined : '8px',\n marginBottom: useColumn ? '4px' : '8px',\n alignItems: 'flex-start',\n maxWidth: '100%'\n }\n }\n const getMessagePart = (part: InteractionPart, group: InteractionPartGroup) => {\n const tempPart = onGoing || (!onGoing && part.eventType !== EventType.Thought) ? <MessagePart\n onGoing={onGoing}\n part={part}\n message={message}\n onLinkClicked={onLinkClicked}\n friendlyMode={friendlyMode}\n isLastInlineInGroup={group.lastWithThoughts || (group.isLastGroup)} preview={preview} /> : null;\n\n if (tempPart) {\n const useBlockStyle = friendlyMode || group.type !== 'inline';\n return <div\n key={`${message.interactionId}-${part.id}`}\n style={useBlockStyle\n ? { width: '100%', marginTop: 1 }\n : { flex: isLessThenMedium ? '1 1 100%' : '1 1 calc(50% - 4px)', maxWidth: isLessThenMedium ? '100%' : 'calc(50% - 4px)', marginTop: 2 }}\n >{tempPart}</div>\n }\n else {\n return null;\n }\n }\n\n return (\n <Stack>\n <MessagePersona isUser={false} message={message} />\n <div\n id={`container-iteraction_${message.interactionId}_${container}`}\n style={{\n width: '100%',\n fontFamily: theme.typography.fontFamily,\n position: 'relative',\n paddingBottom: 12,\n paddingTop: 16,\n color: showSuspended ? theme.palette.text.disabled : theme.palette.text.primary,\n }}\n data-interaction-question={message.interactionQuestion}\n data-interactionid={message.interactionId}\n\n ref={(el) => {\n (containerRef as React.MutableRefObject<HTMLDivElement | null>).current = el;\n if (el) {\n messagesRef?.current?.set(message.interactionId, el);\n }\n }}\n >\n {plannigPart && (\n <MessagePart onGoing={onGoing} part={plannigPart} message={message} onLinkClicked={onLinkClicked} preview={preview} friendlyMode={friendlyMode} />\n )}\n {groups.map((group, groupIndex) => {\n const groupsToRender = group.parts.map(\n (part) => getMessagePart(part, group)\n ).filter(p => p != null);\n\n return group.parts.length > 0 && groupsToRender.length > 0 && (\n <div\n key={`group-${groupIndex}-${message.interactionId}-${container}`}\n style={getStyleGroup(group)}\n >\n {groupsToRender}\n </div>)\n })}\n\n {(appendWaitingPart || showSuspended) && traillingPart &&\n <>\n <MessagePart onGoing={onGoing} part={traillingPart} message={message} onLinkClicked={onLinkClicked} preview={preview} friendlyMode={friendlyMode} />\n </>\n }\n {/* <DelayTextComponent useMarkdown={true} text={'Super texto grande que vai ser escrito parte a parte **para** poder testar como fica tudo Super texto grande que vai ser escrito parte a parte para poder testar como fica tudo Super texto grande que vai ser escrito parte a parte **para** poder testar como fica tudo Super texto grande que vai ser escrito parte a parte para poder testar como fica tudo Super texto grande que vai ser escrito parte a parte **para** poder testar como fica tudo Super texto grande que vai ser escrito parte a parte para poder testar como fica tudo Super texto grande que vai ser escrito parte a parte **para** poder testar como fica tudo Super texto grande que vai ser escrito parte a parte para poder testar como fica tudo Super texto grande que vai ser escrito parte a parte **para** poder testar como fica tudo Super texto grande que vai ser escrito parte a parte para poder testar como fica tudo Super texto grande que vai ser escrito parte a parte **para** poder testar como fica tudo Super texto grande que vai ser escrito parte a parte para poder testar como fica tudo Super texto grande que vai ser escrito parte a parte **para** poder testar como fica tudo Super texto grande que vai ser escrito parte a parte para poder testar como fica tudo'} totalTime={60000} initialDelay={500} /> */}\n </div>\n {/* {showSubAgents && activeSubAgents.filter(s => s.interaction.interactionId == message?.interactionId).map((sa) => (\n <SubAgentBox\n key={sa.id}\n subAgent={sa}\n compact={false}\n onLinkClicked={onLinkClicked}\n />\n ))} */}\n </Stack>\n\n\n\n\n );\n};\n\nexport default MessageAgent;\n","import React, { useState, useRef, useEffect } from 'react';\nimport { Box, Collapse, Stack, Typography, useTheme } from '@mui/material';\nimport { ExpandMore, SmartToy, CheckCircle, HourglassEmpty, RadioButtonUnchecked, Pending, Error as ErrorIcon, KeyboardDoubleArrowDown, KeyboardDoubleArrowUp } from '@mui/icons-material';\nimport type { SubAgentState } from '../stateConfiguration';\nimport MessageAgent from './MessageAgent';\nimport { useAiChatSessionStore } from '../AiChatContext';\nimport type { TodoList, TodoItem } from '@lib/models/todoListModel';\nimport LinerBackgroundProgress from '@lib/components/Library/LinearBackgroundProgress';\n\ntype ExpansionLevel = 0 | 1 | 2;\n\nconst MAX_TODO_ITEMS_LEVEL2 = 6;\n\nexport interface SubAgentBoxProps {\n subAgent: SubAgentState;\n compact?: boolean;\n onLinkClicked: (link: string, content: string | null) => void;\n}\n\nfunction StatusIcon({ status }: { status: TodoItem['status'] }) {\n switch (status) {\n case 'completed':\n return <CheckCircle sx={{ fontSize: '0.85rem' }} />;\n case 'in_progress':\n return <Pending sx={{ fontSize: '0.85rem' }} />;\n case 'failed':\n return <ErrorIcon sx={{ fontSize: '0.85rem' }} />;\n default:\n return <RadioButtonUnchecked sx={{ fontSize: '0.85rem' }} />;\n }\n}\n\nfunction statusColor(status: TodoItem['status']): string {\n switch (status) {\n case 'completed':\n return 'success.main';\n case 'in_progress':\n return 'primary.main';\n case 'failed':\n return 'error.main';\n default:\n return 'text.disabled';\n }\n}\n\nconst SubAgentBox: React.FC<SubAgentBoxProps> = ({ subAgent, compact, onLinkClicked }) => {\n const [level, setLevel] = useState<ExpansionLevel>(compact ? 1 : 0);\n const [todoList, setTodoList] = useState<TodoList | null>(null);\n const theme = useTheme();\n const boxRef = useRef<HTMLDivElement>(null);\n\n\n\n const isRunning = !subAgent.completed;\n\n const lastToolEvent = useAiChatSessionStore((state) => state.lastToolEvent);\n\n useEffect(() => {\n if (\n lastToolEvent?.eventName === 'todolistUpdated' &&\n lastToolEvent.subAgentId === subAgent.id\n ) {\n try {\n const parsed: TodoList = JSON.parse(lastToolEvent.eventData);\n setTodoList(parsed);\n } catch {\n // ignore parse errors\n }\n }\n\n if (lastToolEvent?.eventName === 'todolistUpdated' && lastToolEvent?.eventData !== \"\" && !isRunning && lastToolEvent.subAgentId === subAgent.id) {\n setTodoList(null);\n }\n }, [lastToolEvent, subAgent.id]);\n\n useEffect(() => {\n if (level > 0 && boxRef.current) {\n boxRef.current.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n }, [level]);\n\n const cycleLevel = () => {\n\n setLevel((prev) => {\n const ret = prev == 2 ? 0 : (prev + 1) as ExpansionLevel\n\n return ret;\n });\n };\n\n const completedCount = todoList?.items.filter(i => i.status === 'completed').length ?? 0;\n const totalCount = todoList?.items.length ?? 0;\n const position = totalCount > 0 ? (completedCount / totalCount) * 100 : 0;\n const oneOfN = completedCount > 0 ? `${completedCount} de ${totalCount} completos` : 'Iniciando...'\n const progressPct = `${oneOfN} - ${position.toFixed(2)}%`;\n const progressPctSmall = `${position.toFixed(2)}%`;\n\n const currentItem = todoList?.currentWorkingItemKey\n ? todoList.items.find(i => i.key === todoList.currentWorkingItemKey)\n : null;\n const todoItemsForLevel2 = todoList?.items.slice(0, MAX_TODO_ITEMS_LEVEL2) ?? [];\n const hasMoreItems = (todoList?.items.length ?? 0) > MAX_TODO_ITEMS_LEVEL2;\n\n const renderTodoItems = (items: TodoItem[]) => (\n <Stack gap={0.5} sx={{ py: 0.5 }}>\n {items.map((item) => (\n <Box\n key={item.key}\n sx={{\n display: 'flex',\n alignItems: 'flex-start',\n gap: 0.75,\n py: 0.25,\n opacity: item.status === 'completed' ? 0.5 : 1,\n }}\n >\n <Box sx={{ mt: '1px', flexShrink: 0, color: statusColor(item.status) }}>\n <StatusIcon status={item.status} />\n </Box>\n <Box>\n <Typography\n variant=\"caption\"\n sx={{\n display: 'block',\n fontSize: '0.78rem',\n lineHeight: 1.3,\n textDecoration: item.status === 'completed' ? 'line-through' : 'none',\n }}\n >\n {item.label}\n </Typography>\n {item.detail && (\n <Typography\n variant=\"caption\"\n sx={{ display: 'block', fontSize: '0.7rem', color: 'text.secondary', lineHeight: 1.3 }}\n >\n {item.detail}\n </Typography>\n )}\n </Box>\n </Box>\n ))}\n </Stack>\n );\n\n return (\n <Box\n ref={boxRef}\n data-subagent-id={subAgent.id}\n sx={{\n border: `1px solid ${isRunning ? theme.palette.primary.dark : theme.palette.divider}`,\n borderRadius: '8px',\n my: compact ? 0 : 1.5,\n overflow: 'hidden',\n backgroundColor: 'rgba(255, 255, 255, 0.03)',\n transition: 'border-color 0.3s ease',\n position: 'relative',\n }}\n >\n {isRunning && (\n <Box\n sx={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n height: '2px',\n background: `linear-gradient(90deg, transparent, ${theme.palette.primary.main}, transparent)`,\n animation: 'subagent-progress 2s ease-in-out infinite',\n '@keyframes subagent-progress': {\n '0%': { transform: 'translateX(-100%)' },\n '100%': { transform: 'translateX(100%)' },\n },\n }}\n />\n )}\n\n {/* Header — always visible */}\n {(isRunning || todoList) && (\n <LinerBackgroundProgress\n value={position}\n completedColor=\"rgba(120,120,120,0.2)\"\n unCompletedColor=\"rgba(120,120,120,0.05)\"\n >\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n px: 1,\n paddingTop: 0.5,\n cursor: 'pointer',\n position: 'relative',\n overflow: 'hidden',\n width: '100%'\n }}\n >\n\n <Box\n sx={{\n display: 'inline-flex',\n alignItems: 'center',\n px: !compact ? 1 : 0,\n cursor: 'pointer',\n overflow: 'hidden',\n minWidth: '100%'\n }}\n >\n <Stack direction=\"row\" alignItems=\"center\" spacing={1.5} sx={{ display: 'inline-flex', flexWrap: 'nowrap', alignItems: 'center', overflow: 'hidden', zIndex: 1, width: '100%', flex: 1 }}>\n <Stack direction={\"row\"} sx={{ alignItems: 'center', display: 'inline-flex', minWidth: level === 0 ? '22%' : '60%' }} gap={1}>\n {!compact && <SmartToy sx={{ fontSize: 18, flexShrink: 0, color: isRunning ? theme.palette.primary.main : theme.palette.success.main }} />}\n {isRunning ? (\n <Stack direction=\"row\" alignItems=\"center\" spacing={0.5}>\n <HourglassEmpty sx={{ fontSize: 16, color: theme.palette.primary.main }} />\n </Stack>\n ) : (\n <CheckCircle sx={{ fontSize: 14, color: theme.palette.success.main }} />\n )}\n <Typography variant=\"body1\" sx={{ overflow: 'hidden', textAlign: 'left', fontWeight: 500, fontSize: '0.85rem', whiteSpace: 'nowrap' }}>\n {subAgent.name ?? subAgent.id}\n </Typography>\n\n\n </Stack>\n\n {/* Todo summary inline at level 0 */}\n\n <Box onClick={cycleLevel} sx={{ display: 'inline-flex', alignItems: 'center', justifyContent: 'start', minWidth: level === 0 ? '60%' : compact ? '40%' : '25%', minHeight: '25px' }}>\n {(todoList && (totalCount > 0)) && (\n <Stack direction={\"row\"}\n sx={{\n color: 'text.secondary',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: 'inline-flex', alignItems: 'center', justifyContent: 'start',\n ml: 1,\n }}>\n <Typography\n sx={{\n fontSize: 11,\n color: theme.palette.text.secondary,\n fontWeight: 500,\n letterSpacing: 0.4,\n px: 1,\n mb: 0.5,\n }}\n >\n {compact ? `${progressPctSmall}` : `[${progressPct}]`}\n </Typography>\n\n {currentItem && !compact && level === 0 && (\n <Typography\n component=\"span\"\n variant=\"body1\"\n sx={{ color: 'primary.main', ml: 3 }}\n >\n {currentItem?.label}\n </Typography>\n )}\n </Stack>\n )}\n </Box>\n\n {!compact && <Stack onClick={cycleLevel} direction=\"row\" alignItems=\"center\" justifyContent={\"end\"} spacing={0} sx={{ minWidth: '15%', zIndex: 1, flexShrink: 0 }}>\n <Typography variant=\"body2\" sx={{ color: 'text.secondary', width: '60%', textAlign: 'end' }}>\n {level === 0\n ? 'Tarefas'\n : level === 1\n ? '+ Detalhes'\n : 'Minimizar'}\n </Typography>\n\n {level === 0\n ? <ExpandMore sx={{ fontSize: '18px', p: 0, m: 0 }} />\n : level === 1\n ? <KeyboardDoubleArrowDown sx={{ fontSize: '18px', p: 0, m: 0 }} />\n : <KeyboardDoubleArrowUp sx={{ fontSize: '18px', p: 0, m: 0 }} />}\n\n </Stack>}\n </Stack>\n\n\n </Box>\n </Box>\n\n </LinerBackgroundProgress>\n )}\n\n\n\n {/* Level 1: Full todo list */}\n <Collapse in={level === 1} timeout=\"auto\" unmountOnExit>\n <Box\n sx={{\n borderTop: `1px solid ${theme.palette.divider}`,\n maxHeight: '300px',\n overflowY: 'auto',\n px: 2,\n pb: 1,\n '&::-webkit-scrollbar': { width: '4px' },\n '&::-webkit-scrollbar-thumb': { background: theme.palette.grey[700], borderRadius: '4px' },\n }}\n >\n {todoList ? renderTodoItems(todoList.items) : (\n <Typography variant=\"caption\" sx={{ color: 'text.disabled', py: 1, display: 'block' }}>\n No tasks yet\n </Typography>\n )}\n </Box>\n </Collapse>\n\n {/* Level 2: Limited todo list + full agent content */}\n <Collapse in={level === 2} timeout=\"auto\" unmountOnExit>\n <Box sx={{ borderTop: `1px solid ${theme.palette.divider}` }}>\n {/* Capped todo list */}\n {todoList && todoList.items.length > 0 && (\n <Box sx={{ px: 2, pb: 0.5, maxHeight: '160px', overflowY: 'auto' }}>\n {renderTodoItems(todoItemsForLevel2)}\n {hasMoreItems && (\n <Typography variant=\"caption\" sx={{ color: 'text.disabled', fontSize: '0.7rem', pl: 2.5 }}>\n +{todoList.items.length - MAX_TODO_ITEMS_LEVEL2} more\n </Typography>\n )}\n </Box>\n )}\n\n {/* Agent content */}\n <Box\n sx={{\n borderTop: todoList && todoList.items.length > 0 ? `1px solid ${theme.palette.divider}` : 'none',\n maxHeight: '400px',\n overflowY: 'auto',\n px: 2,\n pb: 1,\n '&::-webkit-scrollbar': { width: '4px' },\n '&::-webkit-scrollbar-thumb': { background: theme.palette.grey[700], borderRadius: '4px' },\n }}\n >\n <MessageAgent\n message={subAgent.interaction}\n showSubAgents={false}\n onGoing={isRunning}\n onLinkClicked={onLinkClicked}\n appendWaitingPart={isRunning}\n isConnectionOpen={true}\n preview={false}\n container={`subagent-${subAgent.id}`}\n />\n </Box>\n </Box>\n </Collapse>\n </Box>\n );\n};\n\nexport default SubAgentBox;\n","import React, { useState, useEffect, useMemo } from 'react';\nimport { type Interaction } from '@lib/models/Interaction';\nimport QuestionAnswerIcon from '@mui/icons-material/QuestionAnswer';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport Popover from '@mui/material/Popover';\nimport Paper from '@mui/material/Paper';\nimport Collapse from '@mui/material/Collapse';\nimport MarkdownExtended from '../../Library/MarkdowmExtended';\n// Mobile responsive imports\nimport { useTheme } from '@mui/material/styles';\nimport { ModelTraining, WarningAmberRounded } from '@mui/icons-material';\nimport { useAiChatServices } from '..';\nimport ReactMarkdown from 'react-markdown';\nimport MessagePersona from './MessagePersona';\nimport MessagePart from './MessagePart';\nimport { EventType } from '@lib/models/enums';\n\ninterface MessageUserProps {\n message: Interaction;\n onLinkClicked?: (link: string, content: string | null) => void;\n}\n\nconst MessageUser: React.FC<MessageUserProps> = ({ message, onLinkClicked }) => {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const [iconAnimation, setIconAnimation] = useState(false);\n const { onRenderPrompt, userMessageRenderer: UserMessage } = useAiChatServices()\n // A user turn's rich UI representation (sent via sendMessage(text, { ui })). Rendered in\n // place of the raw question through the same uiTool dispatcher/registry as agent UI tools;\n // re-hydrated from the persisted UserUiContent sibling on reload. Authored by the user, so\n // MessageAgent excludes these and we render them here.\n const userUiParts = message.parts.filter((p) => p.eventType === EventType.UserAnswer);\n const theme = useTheme();\n\n // Mobile responsive detection\n const lineHeight = 20;\n\n // Check if there are any parts with thoughtDetails\n let hasThoughtDetails = message.parts.some(part => part.thoughtDetails?.text);\n let hasErrors = message.parts.some(part => part.errorDetails?.errorMessage);\n\n // Animate icon appearance with delay\n useEffect(() => {\n if (message.turn_complete && hasThoughtDetails) {\n setIconAnimation(true);\n const timer = setTimeout(() => {\n setIconAnimation(false);\n }, 2000); // Increased delay before showing icon\n\n return () => clearTimeout(timer);\n } else {\n setIconAnimation(false);\n }\n }, [message.turn_complete, hasThoughtDetails]);\n\n const handleTipsClick = (event: React.MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleTipsClose = () => {\n setAnchorEl(null);\n };\n\n const open = Boolean(anchorEl);\n\n const { promptAsString: question } = useMemo(\n () => onRenderPrompt\n ? onRenderPrompt(message.interactionQuestion ?? \"\")\n : { promptAsString: message.interactionQuestion ?? '' },\n [onRenderPrompt, message.interactionQuestion],\n );\n\n // Collect all thought details from message parts\n const allThoughtDetails = message.parts\n .filter(part => part.thoughtDetails?.text)\n .map(part => part.thoughtDetails!.text)\n .join('\\n\\n---\\n\\n');\n\n const allErrorParts = message.parts\n .filter(part => part.errorDetails?.errorMessage)\n .map(part => part.errorDetails!.errorMessage)\n .join('\\n\\n---\\n\\n');\n\n hasThoughtDetails = hasThoughtDetails && allThoughtDetails.length > 0;\n hasErrors = hasErrors && allErrorParts.length > 0;\n\n return (\n <>\n {message.interactionQuestion?.trim() ? <MessagePersona isUser message={message} /> : null}\n {userUiParts.length > 0\n ? userUiParts.map((part) => (\n <MessagePart\n key={`${message.interactionId}-${part.id}`}\n part={part}\n message={message}\n onGoing={false}\n preview={false}\n onLinkClicked={onLinkClicked ?? (() => { })}\n />\n ))\n : UserMessage\n ? <UserMessage message={message} question={question ?? ''} />\n : (\n <Box\n data-message-role=\"user\"\n sx={{\n position: 'relative',\n width: '100%',\n backgroundColor: theme.palette.primary.softBg,\n borderBottom: '1px solid rgba(255,255,255,0.1)',\n borderRadius: 1,\n marginBottom: 1,\n }}\n >\n <Box sx={{ display: 'inline-flex', px: 1, width: '100%', alignItems: 'center', flexWrap: 'nowrap' }}>\n <QuestionAnswerIcon\n sx={{\n color: 'text.secondary',\n fontSize: 16,\n mt: 0.2,\n display: 'inline-flex',\n alignContent: 'flex-start',\n minWidth: '3%'\n }}\n />\n\n <Typography\n variant=\"body2\"\n sx={{\n color: 'text.secondary',\n fontStyle: 'italic',\n lineHeight: `${lineHeight}px`,\n flex: 1,\n ml: 1,\n maxHeight: '100px',\n overflow: 'auto',\n display: 'inline-flex',\n minWidth: '90%'\n }}\n >\n <ReactMarkdown>\n {question}\n </ReactMarkdown>\n </Typography>\n\n {/* TipsAndUpdates icon with expand and parallax animation */}\n <Collapse\n in={true}\n orientation=\"horizontal\"\n timeout={2400}\n sx={{\n transformOrigin: 'right center',\n '& .MuiCollapse-wrapper': {\n transform: 'translateX(0)',\n transition: 'transform 2.4s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n display: 'inline-flex', alignItems: 'flex-end',\n width: '8%'\n }}\n >\n {message.turn_complete && (hasErrors) && (\n <IconButton\n onClick={handleTipsClick}\n sx={{\n color: iconAnimation ? theme.palette.warning.light : theme.palette.warning.dark,\n ml: 1,\n transform: iconAnimation ? 'scale(1.2)' : 'scale(1.0)',\n transition: 'all 2.4s cubic-bezier(0.4, 0, 0.2, 1)',\n '&:hover': {\n color: theme.palette.primary.dark,\n transform: 'scale(1.2)',\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n p: 0.3,\n '&:active': {\n transform: 'scale(1.2)',\n transition: 'all 0.1s ease-in-out',\n },\n display: 'inline-flex', alignItems: 'center', flex: 1\n }}\n >\n <WarningAmberRounded\n sx={{\n fontSize: 22,\n transition: 'all 2.4s cubic-bezier(0.4, 0, 0.2, 1)',\n }}\n />\n </IconButton>\n )}\n\n {message.turn_complete && (hasThoughtDetails) && (\n <IconButton\n onClick={handleTipsClick}\n sx={{\n color: iconAnimation ? theme.palette.secondary.main : theme.palette.secondary.main,\n ml: 1,\n transform: iconAnimation ? 'scale(1.2)' : 'scale(1.0)',\n transition: 'all 2.4s cubic-bezier(0.4, 0, 0.2, 1)',\n '&:hover': {\n color: theme.palette.primary.dark,\n transform: 'scale(1.2)',\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n p: 0.3,\n '&:active': {\n transform: 'scale(1.2)',\n transition: 'all 0.1s ease-in-out',\n },\n display: 'inline-flex', alignItems: 'center'\n }}\n >\n <ModelTraining\n sx={{\n fontSize: 22,\n transition: 'all 2.4s cubic-bezier(0.4, 0, 0.2, 1)',\n }}\n />\n </IconButton>\n )}\n </Collapse>\n </Box>\n\n {/* Popover for thought details */}\n {hasThoughtDetails && allThoughtDetails && <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={handleTipsClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n slotProps={\n {\n paper: {\n style: {\n borderRadius: '10px',\n maxWidth: 600,\n maxHeight: 400,\n backgroundColor: 'rgba(0, 0, 0, 0.9)',\n border: `1px solid ${theme.palette.background.default}`,\n }\n }\n }\n }\n >\n <Paper sx={{ p: 2, backgroundColor: 'transparent' }}>\n <Typography variant=\"h6\" sx={{ color: 'text.primary', mb: 2, fontWeight: 'bold' }}>\n Reasoning\n </Typography>\n <Box sx={{ color: 'text.primary' }}>\n <MarkdownExtended\n sessionId=''\n text={allThoughtDetails}\n onLinkClicked={onLinkClicked}\n />\n </Box>\n </Paper>\n </Popover>}\n\n {hasErrors && allErrorParts && <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={handleTipsClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n slotProps={\n {\n paper: {\n style: {\n borderRadius: '10px',\n maxWidth: 600,\n maxHeight: 400,\n backgroundColor: 'rgba(0, 0, 0, 0.9)',\n border: `1px solid ${theme.palette.background.default}`\n }\n }\n }\n }\n // PaperProps={{\n // sx: {\n // maxWidth: 600,\n // maxHeight: 400,\n // overflow: 'auto',\n // backgroundColor: 'rgba(0, 0, 0, 0.9)',\n // border: '1px solid rgba(255, 255, 255, 0.2)',\n\n // }\n // }}\n >\n <Paper sx={{ p: 2, backgroundColor: 'transparent' }}>\n <Typography variant=\"h6\" sx={{ color: 'text.primary', mb: 2, fontWeight: 'bold' }}>\n Server warnings\n </Typography>\n <Box sx={{ color: 'text.primary', fontStyle: 'italic' }}>\n <MarkdownExtended\n sessionId=''\n text={allErrorParts}\n onLinkClicked={onLinkClicked}\n />\n </Box>\n </Paper>\n </Popover>}\n </Box>\n )}\n </>\n );\n};\n\nexport default MessageUser; ","import React from 'react';\nimport { type Interaction } from '@lib/models/Interaction';\n// Mobile responsive imports\n\nimport MessageUser from './MessageUser';\nimport MessageAgent from './MessageAgent';\nimport type { IArtifactService } from '@lib/services/interfaces/artifactService';\nimport { EventBusService } from '@lib/services/eventBusService';\nimport { useAiChatServices } from '../AiChatContext';\n\ninterface MessageProps {\n message: Interaction;\n onLinkClicked: (link: string, content: string | null) => void;\n appendWaitingPart: boolean;\n messagesRef?: React.RefObject<Map<string, HTMLDivElement>>;\n friendlyMode?: boolean;\n}\n\nconst Message: React.FC<MessageProps> = ({ message, onLinkClicked, appendWaitingPart, messagesRef, friendlyMode }) => {\n const { showSubAgents } = useAiChatServices();\n return (\n <>\n <MessageUser message={message} onLinkClicked={onLinkClicked} />\n <MessageAgent showSubAgents={showSubAgents !== false} onGoing={false} container='message' isConnectionOpen={true} message={message} onLinkClicked={onLinkClicked} appendWaitingPart={appendWaitingPart} messagesRef={messagesRef} preview={false} friendlyMode={friendlyMode} />\n\n </>\n );\n};\n\nexport default Message;","import React, { useEffect, useRef, useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport QuestionAnswerIcon from '@mui/icons-material/QuestionAnswer';\nimport { useDebouncedCallback } from 'use-debounce';\nimport { useTheme } from '@mui/material/styles';\nimport { useAiChatServices, useAiChatSessionStore } from '../AiChatContext';\nimport MarkdownExtended from '../../Library/MarkdowmExtended';\nimport type { Interaction } from '@lib/models/Interaction';\nimport { Collapse, IconButton, Popover, Paper } from '@mui/material';\nimport { TipsAndUpdates } from '@mui/icons-material';\n\ninterface StickyQuestionHeaderProps {\n messageRefs: React.RefObject<Map<string, HTMLDivElement>>;\n showStickyHeader?: boolean\n}\n\ninterface QuestionData {\n question: string,\n}\n\nconst StickyQuestionHeader: React.FC<StickyQuestionHeaderProps> = ({\n messageRefs,\n showStickyHeader\n}) => {\n const currentSessionId = useAiChatSessionStore((state) => state.session?.id);\n const loadingType = useAiChatSessionStore((state) => state.loadingType);\n const loading = useAiChatSessionStore((state) => state.loading);\n const messages = useAiChatSessionStore((state) => state.messages);\n const sendingMessage = useAiChatSessionStore((state) => state.sendingMessage);\n const currentMessage = useAiChatSessionStore((state) => state.currentMessage);\n //const [isLandscapeInSmallScreen, setIsLandscapeInSmallScreen] = useState(false);\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const messagesEndRef = useRef<HTMLDivElement>(null);\n const theme = useTheme();\n\n const isMobile = theme.breakpoints.down('sm');\n\n useEffect(() => {\n if (isMobile && window) {\n // const windowWidth = window.innerWidth;\n // const windowHeight = window.innerHeight;\n //setIsLandscapeInSmallScreen(windowWidth > windowHeight && windowHeight < 400);\n }\n }, [isMobile]);\n\n const { onVisibleQuestionChange } = useAiChatServices();\n\n const [question, setQuestion] = useState<QuestionData | null>(null);\n const [message] = useState<Interaction | null>(null);\n const [isHeaderExpanded, setIsHeaderExpanded] = useState(false);\n const debouncedSetQuestionInView = useDebouncedCallback((questionData: QuestionData) => {\n setQuestion(questionData);\n }, 10);\n\n useEffect(() => {\n onVisibleQuestionChange?.(question?.question ?? null);\n }, [question, onVisibleQuestionChange]);\n\n const maxLines = isHeaderExpanded ? 8 : 2.25;\n\n const lineHeight = 20;\n const maxHeight = maxLines * lineHeight;\n\n // Intersection Observer for sticky header\n useEffect(() => {\n const container = document.getElementById('chat-container-' + (currentSessionId ?? 'new'));\n if (!container) {\n return;\n }\n const observer = new IntersectionObserver((entries) => {\n var candidates: { question?: string | null, interactionId: string, agentParts?: string, ratio: number }[] = [];\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n const interactionQuestion = entry.target.getAttribute('data-interaction-question');\n const interactionId = entry.target.getAttribute('data-interactionid');\n candidates.push({ question: interactionQuestion, interactionId: interactionId ?? '', ratio: entry.intersectionRatio });\n }\n });\n\n //sort by ratio ascending\n candidates.sort((a, b) => a.interactionId > b.interactionId ? 1 : -1);\n if (candidates.length > 0 && candidates[0].question) {\n debouncedSetQuestionInView({\n question: candidates[0].question,\n });\n }\n }, {\n threshold: Array.from({ length: 1000 }, (_, i) => i / 1000),\n rootMargin: '-50px 0px -50px 0px', // Account for sticky and user message height\n root: container\n });\n\n setTimeout(() => {\n let isEmpty = true\n if (messageRefs) {\n messageRefs.current?.forEach((el: HTMLDivElement) => {\n observer.observe(el)\n isEmpty = false\n });\n }\n\n if (isEmpty && !sendingMessage) {\n setQuestion(null);\n }\n\n }, 500);\n }, [messageRefs.current, currentSessionId, sendingMessage, loading, loadingType, messages, currentMessage]);\n\n useEffect(() => {\n let lastQuestion: string | null = null;\n if (currentMessage) {\n lastQuestion = currentMessage.interactionQuestion ?? 'Waiting'\n }\n else {\n if (messages && messages.length > 0) {\n lastQuestion = messages[messages.length - 1].interactionQuestion ?? 'Waiting'\n }\n }\n if (lastQuestion) {\n setQuestion({\n question: lastQuestion ?? 'Waiting'\n })\n }\n else {\n setQuestion(null)\n }\n }, [currentMessage, messages, sendingMessage])\n\n // Check if there are any parts with thoughtDetails\n const hasThoughtDetails = message?.parts.some(part => part.thoughtDetails?.text);\n // Collect all thought details from message parts\n const allThoughtDetails = message?.parts\n .filter(part => part.thoughtDetails?.text)\n .map(part => part.thoughtDetails!.text)\n .join('\\n\\n---\\n\\n');\n\n const open = Boolean(anchorEl);\n\n const handleTipsClick = (event: React.MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleTipsClose = () => {\n setAnchorEl(null);\n };\n\n\n\n return question && showStickyHeader ? (\n <Box sx={{\n position: 'relative',\n top: -3,\n left: -19,\n width: 'calc(100% + 36px)',\n zIndex: 100,\n backgroundColor: 'rgba(30, 30, 30,0.8)',\n borderBottom: `1px solid ${theme.palette.divider}`,\n alignContent: 'center',\n backdropFilter: 'blur(2px)',\n transition: 'all 0.5s ease',\n maxWidth: 'calc(100% + 36px)'\n }}>\n <Box sx={{\n position: 'relative',\n maxHeight: `${maxHeight}px`,\n overflow: 'hidden',\n p: 0.5,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n alignContent: 'center',\n verticalAlign: 'middle',\n maxWidth: '100%',\n gap: 1,\n '&::-webkit-scrollbar': {\n width: '5px',\n background: theme.palette.background.default,\n },\n '&::-webkit-scrollbar-track': {\n background: theme.palette.background.default,\n width: isMobile ? '1px' : '1px',\n },\n '&::-webkit-scrollbar-thumb': {\n background: theme.palette.background.default,\n border: '1px solid',\n width: '5px',\n borderColor: theme.palette.grey[800],\n borderRadius: '4px',\n '&:hover': {\n background: theme.palette.background.default\n },\n }\n }}\n onClick={() => setIsHeaderExpanded(!isHeaderExpanded)}\n >\n <Box sx={{\n overflow: 'hidden',\n p: 1,\n marginTop: 1,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'flex-start',\n alignContent: 'center',\n verticalAlign: 'middle',\n gap: 1,\n mb: 1\n }} ref={messagesEndRef}>\n <QuestionAnswerIcon\n sx={{\n color: 'text.secondary',\n fontSize: 20,\n mt: 0,\n flexShrink: 0\n }}\n />\n\n <Typography\n sx={{\n color: 'text.secondary',\n fontStyle: 'italic',\n fontSize: '0.85rem',\n fontWeight: '400',\n lineHeight: `${lineHeight}px`,\n flex: 1\n }}\n >\n {question.question}\n </Typography>\n </Box>\n\n {/* Fade effect for collapsed state */}\n {!isHeaderExpanded && (\n <Box sx={{\n position: 'absolute',\n bottom: 0,\n top: -10,\n left: -10,\n height: '24px',\n background: 'linear-gradient(transparent, rgba(255, 255, 255, 0.14))',\n pointerEvents: 'none'\n }} />\n )}\n\n {/* TipsAndUpdates icon with expand and parallax animation */}\n {message && (\n <Collapse\n in={true}\n orientation=\"horizontal\"\n timeout={2400}\n sx={{\n transformOrigin: 'right center',\n width: '5%',\n mb: '10px',\n '& .MuiCollapse-wrapper': {\n transform: 'translateX(0)',\n transition: 'transform 2.4s cubic-bezier(0.4, 0, 0.2, 1)',\n }\n }}\n >\n {message.turn_complete && hasThoughtDetails && allThoughtDetails && allThoughtDetails.length > 0 && (\n <IconButton\n onClick={handleTipsClick}\n sx={{\n color: theme.palette.primary.dark,\n ml: 1,\n transform: 'scale(1.0)',\n transition: 'all 2.4s cubic-bezier(0.4, 0, 0.2, 1)',\n '&:hover': {\n color: theme.palette.primary.dark,\n transform: 'scale(1.2)',\n transition: 'all 0.3s cubic-bezier(0.4, 0, 0.2, 1)',\n },\n p: 0.3,\n '&:active': {\n transform: 'scale(1.2)',\n transition: 'all 0.1s ease-in-out',\n }\n }}\n >\n <TipsAndUpdates\n sx={{\n fontSize: 22,\n transition: 'all 2.4s cubic-bezier(0.4, 0, 0.2, 1)',\n }}\n />\n </IconButton>\n )}\n </Collapse>\n )}\n\n {/* Popover for thought details */}\n {hasThoughtDetails && allThoughtDetails && <Popover\n open={open}\n anchorEl={anchorEl}\n onClose={handleTipsClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n PaperProps={{\n sx: {\n maxWidth: 600,\n maxHeight: 400,\n overflow: 'auto',\n backgroundColor: 'rgba(0, 0, 0, 0.9)',\n border: '1px solid rgba(255, 255, 255, 0.2)',\n }\n }}\n >\n <Paper sx={{ p: 2, backgroundColor: 'transparent' }}>\n <Typography variant=\"h6\" sx={{ color: 'text.primary', mb: 2, fontWeight: 'bold' }}>\n AI Thinking Process\n </Typography>\n <Box sx={{ color: 'text.primary' }}>\n <MarkdownExtended\n sessionId=''\n text={allThoughtDetails}\n onLinkClicked={undefined}\n />\n </Box>\n </Paper>\n </Popover>}\n </Box>\n </Box >\n ) : <div style={{ minHeight: '20px' }}></div>;\n};\n\nexport default StickyQuestionHeader;\n","import React from 'react';\nimport {\n Dialog,\n DialogTitle,\n DialogContent,\n DialogContentText,\n DialogActions,\n Button,\n Alert,\n AlertTitle,\n Box\n} from '@mui/material';\nimport { Warning, Info, Error } from '@mui/icons-material';\n\nexport interface AlertDialogProps {\n open: boolean;\n title: string;\n message: string;\n severity?: 'info' | 'warning' | 'error';\n onClose: () => void;\n onRetry?: () => void;\n actionType?: 'retry' | 'close';\n}\n\nconst AlertDialog: React.FC<AlertDialogProps> = ({\n open,\n title,\n message,\n severity = 'info',\n onClose,\n onRetry,\n actionType = 'retry'\n}) => {\n const getSeverityIcon = () => {\n switch (severity) {\n case 'error':\n return <Error color=\"error\" />;\n case 'warning':\n return <Warning color=\"warning\" />;\n case 'info':\n default:\n return <Info color=\"info\" />;\n }\n };\n\n const getSeverityColor = () => {\n switch (severity) {\n case 'error':\n return 'error';\n case 'warning':\n return 'warning';\n case 'info':\n default:\n return 'info';\n }\n };\n\n return (\n <Dialog\n open={open}\n onClose={onClose}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n maxWidth=\"sm\"\n fullWidth\n >\n <DialogTitle id=\"alert-dialog-title\" sx={{ display: 'flex', alignItems: 'center', gap: 1, backgroundColor: 'background.paper' }}>\n {getSeverityIcon()}\n {title}\n </DialogTitle>\n <DialogContent sx={{ backgroundColor: 'background.paper' }}>\n <DialogContentText id=\"alert-dialog-description\">\n <Box sx={{ mt: 1 }}>\n <Alert severity={getSeverityColor()} sx={{ '& .MuiAlert-message': { width: '100%' } }}>\n <AlertTitle>{title}</AlertTitle>\n {message}\n </Alert>\n </Box>\n </DialogContentText>\n </DialogContent>\n <DialogActions sx={{ backgroundColor: 'background.paper' }}>\n {actionType === 'retry' && (\n <Button onClick={onRetry} color=\"primary\" variant=\"contained\" autoFocus>\n Try Again\n </Button>\n )}\n {actionType === 'close' && (\n <Button onClick={onClose} color=\"primary\" variant=\"contained\" autoFocus>\n OK\n </Button>\n )}\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default AlertDialog;\n","/* eslint-disable */\n\nimport { Component } from 'react';\n\nclass ErrorBoundary extends Component {\n constructor(props: any) {\n super(props);\n this.state = { hasError: false };\n }\n\n // Update state so the next render will show the fallback UI\n static getDerivedStateFromError(_error: any) {\n return { hasError: true };\n }\n\n // Use this for side effects like logging the error\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\"Error caught by boundary:\", error, errorInfo);\n }\n\n render() {\n // Type guard for state\n const state = this.state as { hasError: boolean };\n if (state.hasError) {\n // Custom fallback UI\n return <h1>Something went wrong. Please try again later.</h1>;\n }\n\n return (this.props as { children?: React.ReactNode }).children; /* @vite-ignore */\n }\n}\n\nexport default ErrorBoundary;","import React, { useMemo } from 'react';\nimport MessageAgent from './MessageAgent';\nimport Box from '@mui/material/Box';\nimport { useMediaQuery, useTheme } from '@mui/material';\nimport type { IArtifactService } from '@lib/services/interfaces/artifactService';\nimport { useAiChatSessionStore } from '../AiChatContext';\nimport type { EventBusService } from '@lib/services/eventBusService';\nimport ErrorBondary from '@lib/ErrorBondary';\nimport SubAgentBox from './SubAgentBox';\n\n\ninterface CurrentMessage {\n onLinkClicked: (link: string, content: string | null) => void;\n messagesRef: React.RefObject<Map<string, HTMLDivElement>>;\n artifactService: IArtifactService;\n eventBusService: EventBusService;\n friendlyMode?: boolean;\n}\n\nconst CurrentMessage: React.FC<CurrentMessage> = ({ onLinkClicked, eventBusService, messagesRef, artifactService, friendlyMode }) => {\n const turnOpen = useAiChatSessionStore((state) => state.turnOpen);\n const message = useAiChatSessionStore((state) => state.currentMessage);\n\n if (!message) {\n return null;\n }\n\n return (\n <ErrorBondary>\n <Box\n sx={{\n p: 0.5,\n width: '100%',\n height: '100%',\n // Streaming-content arrival animation. CSS animations only\n // fire on initial mount of an element (or when animation-name\n // changes); React keeps stable DOM identity for existing\n // markdown nodes across partials, so this plays exactly once\n // per newly-rendered chunk — a new <tr> when the table grows,\n // a new <li> when the bullet list extends, a new <p> when\n // the text rolls past a paragraph break. Existing nodes that\n // merely gain trailing text don't re-fire, so character-by-\n // character text inside an existing <p> still flows without\n // re-animating. The `both` fill-mode ensures the element\n // looks correct before and after the keyframe runs.\n '@keyframes currentMessageFadeIn': {\n '0%': { opacity: 0, transform: 'translateY(4px)' },\n '100%': { opacity: 1, transform: 'translateY(0)' },\n },\n // Curated selector list rather than `& *`: layout wrappers\n // (Stack / Box / generic divs) shouldn't fade in — they're\n // structural, not content. Targeting block-level *content*\n // tags keeps the animation tied to what the LLM actually\n // streams.\n // Excluded from the animated selector list (would blink):\n // - `<code>` (inline): sibling-shift inside its parent\n // gives it a new identity on partial re-parses.\n // - `<blockquote>`: GFM keeps re-deciding whether the\n // next `> ` line extends the existing quote or opens\n // a new one, so the wrapper element gets re-mounted\n // each chunk.\n // - any descendant of `[data-live-jsx-content]`: the\n // compiled Component inside LiveJsxBlock re-mounts\n // on every code/scope change, which would replay\n // this keyframe on the headings/paragraphs inside\n // a metric/chart card and read as a blink. Cards\n // have their own arrival animation upstream.\n '& p:not([data-live-jsx-content] *), & li:not([data-live-jsx-content] *), & tr:not([data-live-jsx-content] *), & pre:not([data-live-jsx-content] *), & h1:not([data-live-jsx-content] *), & h2:not([data-live-jsx-content] *), & h3:not([data-live-jsx-content] *), & h4:not([data-live-jsx-content] *), & h5:not([data-live-jsx-content] *), & h6:not([data-live-jsx-content] *), & hr:not([data-live-jsx-content] *), & img:not([data-live-jsx-content] *)': {\n animation: 'currentMessageFadeIn 220ms ease-out both',\n },\n // Streaming-only left-alignment for table cells. GFM\n // sets text-align inline (style=\"text-align: center\")\n // when the markdown carries `|:---:|`, and `<th>` is\n // center-by-default in browsers. Either way, characters\n // arriving in a centred cell visually push outward from\n // the centre. Force left while the message is still\n // being streamed inside CurrentMessage; once the turn\n // closes and the message moves to the persisted history\n // (rendered outside this Box), the inline/default\n // alignment returns. `!important` is required because\n // GFM's inline `style` attribute outranks normal CSS.\n '& td, & th': {\n textAlign: 'left !important',\n },\n '@media (prefers-reduced-motion: reduce)': {\n '& p:not([data-live-jsx-content] *), & li:not([data-live-jsx-content] *), & tr:not([data-live-jsx-content] *), & pre:not([data-live-jsx-content] *), & h1:not([data-live-jsx-content] *), & h2:not([data-live-jsx-content] *), & h3:not([data-live-jsx-content] *), & h4:not([data-live-jsx-content] *), & h5:not([data-live-jsx-content] *), & h6:not([data-live-jsx-content] *), & hr:not([data-live-jsx-content] *), & img:not([data-live-jsx-content] *)': {\n animation: 'none',\n },\n },\n }}\n >\n {message && (\n <MessageAgent showSubAgents={true} onGoing={true} container='currentMessage' isConnectionOpen={turnOpen} message={message} onLinkClicked={onLinkClicked} appendWaitingPart={(turnOpen)} messagesRef={messagesRef} preview={true} friendlyMode={friendlyMode} />\n )}\n </Box>\n </ErrorBondary>\n );\n};\n\nexport default CurrentMessage;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Slide from '@mui/material/Slide';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport { useTheme, alpha } from '@mui/material/styles';\nimport type { InteractionPart } from '@lib/models/InteractionPart';\nimport { EventType } from '@lib/models/enums';\nimport { useAiChatSessionStore } from '../AiChatContext';\nimport AskUserPart from './parts/AskUserPart';\nimport { isAskUser } from './parts/types';\n\ninterface AskUserSheetProps {\n /** Height of the composer below, so the sheet docks just above it. */\n promptHeight: number;\n}\n\n/**\n * Pane-scoped bottom sheet for a PARKED ask_user prompt.\n *\n * A turn blocked on ask_user goes idle (no tokens stream), so the trailing\n * \"...\" waiting dots disappear and the inline transcript form reads as a\n * finished turn. This sheet keeps the question unmistakably \"your turn\": it\n * docks just above the composer, slides up while the turn waits, and leaves\n * the conversation visible/scrollable behind it. The moment the user answers,\n * the tool result lands (functionDetails.status -> 'Done'), the sheet retracts,\n * and the answered prompt renders inline in the transcript (MessageAgent\n * suppresses the parked one inline so it's never in two places).\n *\n * Layout is a flex column: the form scrolls in the middle, and an indeterminate\n * `turnOpen` line is GLUED to the bottom edge OUTSIDE the scroll — the moving\n * cue that the turn is still alive and waiting (replacing the \"...\" dots that\n * vanish while parked). It renders the very same <AskUserPart> used inline —\n * no duplicated form logic — with `embedded` to drop its own card chrome.\n */\nconst AskUserSheet: React.FC<AskUserSheetProps> = ({ promptHeight }) => {\n const theme = useTheme();\n const turnOpen = useAiChatSessionStore((s) => s.turnOpen);\n const currentMessage = useAiChatSessionStore((s) => s.currentMessage);\n\n const parked: InteractionPart | null = useMemo(() => {\n if (!turnOpen || !currentMessage?.parts) return null;\n // Most-recent unanswered ask_user: it parks at status 'Executing' and\n // only reaches 'Done' once the user answers.\n for (let i = currentMessage.parts.length - 1; i >= 0; i--) {\n const p = currentMessage.parts[i];\n if (\n isAskUser(p.functionDetails?.name)\n // Wait for the COMPLETE call: while args stream the part is a\n // PartialFunctionCall and the questionnaire JSON won't parse yet —\n // surfacing then shows an empty drawer until the final chunk lands.\n && p.eventType === EventType.FunctionCall\n && p.functionDetails?.status !== 'Done'\n ) {\n return p;\n }\n }\n return null;\n }, [turnOpen, currentMessage]);\n\n // Keep the last parked part mounted through the slide-out so the sheet\n // doesn't empty before it finishes retracting.\n const [lastParked, setLastParked] = useState<InteractionPart | null>(null);\n useEffect(() => {\n if (parked) setLastParked(parked);\n }, [parked]);\n const toRender = parked ?? lastParked;\n\n return (\n <Slide direction=\"up\" in={!!parked} mountOnEnter unmountOnExit appear>\n <Box\n sx={{\n position: 'absolute',\n left: '7%',\n right: 8,\n bottom: promptHeight - 10,\n zIndex: 1100,\n display: 'flex',\n flexDirection: 'column',\n maxWidth: '85%',\n maxHeight: '60%',\n overflow: 'hidden', // clip to the rounded top; inner area owns the scroll\n backgroundColor: theme.palette?.background.default,\n border: `1px solid ${theme.palette.primary.dark}`,\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n boxShadow: '0 -8px 24px rgba(0,0,0,0.35)',\n }}\n >\n {/* Scrollable content — the form lives here; the line below never scrolls. */}\n <Box sx={{ flex: '1 1 auto', minHeight: 0, overflowY: 'auto', px: 1.5, pt: 1, pb: 1.25 }}>\n {/* grabber — reads as a bottom sheet */}\n <Box sx={{ width: 36, height: 4, borderRadius: 2, bgcolor: 'divider', mx: 'auto', mb: 1 }} />\n {toRender && <AskUserPart part={toRender} embedded />}\n </Box>\n\n {/* turnOpen cue: glued to the bottom edge, full-bleed, OUTSIDE the scroll. */}\n {turnOpen && (\n <LinearProgress\n variant=\"indeterminate\"\n sx={{\n height: 2,\n flexShrink: 0,\n backgroundColor: alpha(theme.palette.primary.dark, 0.15),\n '& .MuiLinearProgress-bar1': {\n backgroundColor: theme.palette.primary.main,\n opacity: 0.5\n },\n '& .MuiLinearProgress-bar2': {\n backgroundColor: theme.palette.primary.dark,\n opacity: 0.8\n }\n }}\n />\n )}\n </Box>\n </Slide>\n );\n};\n\nexport default AskUserSheet;\n","import useInterval from \"@lib/hooks/useIntervalHook\";\nimport { IDLE_TIMEOUT, WARNING_THRESHOLD } from \"@lib/components/AiChat/sessionStateManagerService\";\nimport { Stack, Tooltip, Typography, useTheme } from \"@mui/material\";\nimport Chip from \"@mui/material/Chip\";\nimport { useState } from \"react\";\nimport { useShallow } from \"zustand/react/shallow\";\nimport LoadingDots from \"../../Library/LoadingDots\";\nimport { useAiChatServices, useAiChatSessionStore } from \"..\";\nimport { Circle } from \"@mui/icons-material\";\nimport { ConnectionState as TypeConnectionState } from \"@lib/models/connectionState\";\n\ntype Color = 'success' | 'error' | 'info' | 'secondary'\n\ninterface StatusToColorMap {\n [key: string]: Color;\n}\n\nconst colorMap: StatusToColorMap = {\n \"Connecting\": 'info',\n \"Connected\": 'success',\n \"Disconnected\": 'error',\n \"Unknown\": 'secondary',\n \"Paused\": 'secondary',\n \"Idle\": 'info'\n}\n\nconst ConnectionState: React.FC = () => {\n const { connectionStatus, sessionActive, lastActivity, loadingError } = useAiChatSessionStore(\n useShallow((state) => ({ connectionStatus: state.connectionStatus, loadingStatus: state.loading, loadingError: state.loadingError, sessionActive: state.sessionActive, lastActivity: state.lastActivity }))\n )\n const [idleTime, setIdleTime] = useState(0);\n\n const theme = useTheme();\n\n const getSmallStatus = (state: TypeConnectionState) => {\n switch (state) {\n case TypeConnectionState.Connected:\n return \"OK\";\n case TypeConnectionState.Connecting:\n return \"Connecting\";\n case TypeConnectionState.Disconnected:\n return \"Disconnected\";\n case TypeConnectionState.Idle:\n return \"Idle\";\n default:\n return \"\";\n }\n }\n\n const getState = (): { color: Color, status: string } => {\n if (!sessionActive && connectionStatus !== 'Idle')\n return { color: \"secondary\", status: \"Session Inactive\" }\n\n return { color: colorMap[connectionStatus.toString()], status: getSmallStatus(connectionStatus) }\n }\n\n useInterval(() => {\n setIdleTime(new Date().getTime() - lastActivity);\n }, 1500);\n\n const state = getState();\n\n const showIdle = (idleTime / IDLE_TIMEOUT) > WARNING_THRESHOLD;// && connectionStatus == ConnectionState.Connected;\n const decisionWindow = IDLE_TIMEOUT / WARNING_THRESHOLD / 1000;\n const secondsLeft = Math.ceil((IDLE_TIMEOUT - idleTime) / 1000);\n\n return <Stack direction=\"row\" gap={1} sx={{ position: 'relative', alignItems: 'center', display: 'flex', flexShrink: 0 }}>\n {connectionStatus != TypeConnectionState.Connected && (\n <>\n <div style={{ backgroundColor: 'rgba(0,0,0,0.4)', position: 'absolute', width: '100%', height: '100%' }}></div>\n <Chip label={sessionActive ? state.status : \"Session Inactive\"} sx={{ minWidth: '100px' }} color={state.color} size=\"small\"\n variant=\"outlined\" />\n </>)\n }\n\n\n {showIdle && secondsLeft > 0 && <>\n <Typography color=\"textPrimary\">Idle:</Typography>\n <Chip label={secondsLeft} color={secondsLeft < decisionWindow / 2 ? 'warning' : 'info'} size=\"small\"\n variant=\"outlined\" />\n </>}\n\n {/* {loadingStatus && <LoadingDots />} */}\n {!!loadingError && connectionStatus != TypeConnectionState.Connected && (\n <Tooltip title={loadingError} sx={{ cursor: 'pointer' }}>\n <Typography variant=\"caption\" noWrap style={{ color: theme.palette.error.light, fontStyle: 'italic', overflow: 'clip', minWidth: 0, maxWidth: '250px' }}>{loadingError}</Typography>\n </Tooltip>\n )}\n </Stack >\n}\n\nexport default ConnectionState;","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport Stack from '@mui/material/Stack';\nimport { useAiChatServices } from '../AiChatContext';\nimport { extractLinkAction } from '@lib/utils/urlParser';\nimport Prompt from './Prompt';\nimport { PromptV2 } from '../../v2/PromptV2';\nimport Message from './Message';\nimport { type Interaction, type MergeResult } from '@lib/models/Interaction';\nimport StickyQuestionHeader from './StickyQuestionHeader';\nimport AlertDialog from './AlertDialog';\n// Mobile responsive imports\nimport { useTheme, useMediaQuery, Fade, Tooltip, Divider, LinearProgress, alpha } from '@mui/material';\nimport CurrentMessage from './CurrentMessage';\nimport AskUserSheet from './AskUserSheet';\nimport _ from 'lodash';\nimport { LockOpen, Lock } from '@mui/icons-material';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport { useAiChatSessionStore } from '../AiChatContext';\nimport { getServerBaseUrl } from '@lib/utils/environmentUtils';\nimport SortableTable from '@lib/utils/sortable-table';\nimport ConnectionState from './ConnectionState';\nimport { ModelConfig } from '@lib/models/enums';\nimport LinerBackgroundProgress from '@lib/components/Library/LinearBackgroundProgress';\nimport { InertEnvironmentProvider, LlmResponseRender, MarkdownExtended, SubAgentBox, type SubAgentState } from '@lib/components';\nimport { TaskList } from './TaskList';\nimport { blue, grey } from '@mui/material/colors';\n\ninterface ChatPaneProps {\n isAppActive?: boolean;\n showStickHeader?: boolean;\n}\n\nconst serverUrlBase = getServerBaseUrl();\n\ntype ModelConfigEntry = (typeof ModelConfig)[keyof typeof ModelConfig];\n\nconst ChatPane: React.FC<ChatPaneProps> = (props) => {\n const animationTime = 4000;\n const { eventBusService, showStickyHeader, currentModel, friendlyMode, compactPrompt, showConnectionState, hidePromptInput } = useAiChatServices();\n const currentModelConfig = currentModel ? (ModelConfig as Record<string, ModelConfigEntry>)[currentModel] : undefined;\n const sessionId = useAiChatSessionStore((state) => state.session?.id);\n const isTurnOpen = useAiChatSessionStore((state) => state.turnOpen);\n const connectionState = useAiChatSessionStore((state) => state.connectionStatus);\n const messages = useAiChatSessionStore((state) => state.messages);\n const loadingType = useAiChatSessionStore((state) => state.loadingType);\n const setLastActivity = useAiChatSessionStore((state) => state.setLastActivity);\n const lastTimeout = useRef<NodeJS.Timeout | null>(null);\n // Mobile responsive detection\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('sm')); // xs, sm\n const isTouchDevice = isMobile;\n \n const messagesEndRef = useRef<HTMLDivElement>(null);\n const chatContainerRef = useRef<HTMLDivElement | null>(null);\n const didInitialScrollRef = useRef(false);\n\n // Sticky header state\n const messageRefs = useRef<Map<string, HTMLDivElement>>(new Map());\n const [forceMessage, setForceMessage] = useState<string | null>(null);\n const { artifactService } = useAiChatServices();\n\n // Scroll detection and new content indicator state\n const [showNewContentIndicator, setShowNewContentIndicator] = useState(false);\n const [showScrollLock, setShowScrollLock] = useState(false);\n const [startVanish, setStartVanish] = useState(false);\n const [forceToolTip, setForceTooltip] = useState(false);\n const [dashboardUrl, setDashboardUrl] = useState<string | null>(null);\n const [isMouseOverLock, setIsMouseOverLock] = useState(false);\n const isScrollLockedRef = useRef(false);\n const lastScrollToBottom = useRef(0);\n const lastScrollPosition = useRef(0);\n const [promptHeight, setPromptHeight] = useState(0)\n // const isContainerScrollableRef = useRef(false);\n\n // Alert dialog state\n const [alertDialog, setAlertDialog] = useState<{\n open: boolean;\n title: string;\n message: string;\n severity: 'info' | 'warning' | 'error';\n actionType: 'retry' | 'close';\n }>({\n open: false,\n title: '',\n message: '',\n actionType: 'retry',\n severity: 'info'\n });\n\n const showAlert = useCallback((title: string, message: string, severity: 'info' | 'warning' | 'error' = 'info', actionType: 'retry' | 'close' = 'retry') => {\n setAlertDialog({\n open: true,\n title,\n message,\n severity,\n actionType\n });\n }, []);\n\n const closeAlertAndRetry = useCallback(() => {\n setAlertDialog(prev => ({ ...prev, open: false }));\n }, []);\n\n const onTurnComplete = useCallback(async (_interactionId: string, _agentInteraction: Interaction) => {\n handleUnlock(false);\n setShowNewContentIndicator(false);\n }, [chatContainerRef]);\n\n const onTurnOpen = async (_interactionId: string) => {\n // Intentionally a no-op: engaging the scroll lock here makes\n // the MutationObserver continuously snap back to the bottom\n // during streaming and fights the user's attempts to scroll\n // up to read older content (the onWheel/onScrollEnd unlock\n // path is too slow to win that race). Auto-follow during a\n // turn is opt-in: it engages 200ms after `chatOnMessageSent`\n // (when the user explicitly sent the turn) or when the user\n // clicks the \"New content!\" pill.\n }\n\n useEffect(() => {\n eventBusService.gatewayOnTurnComplete(onTurnComplete);\n eventBusService.gatewayOnTurnOpen(onTurnOpen);\n eventBusService.gatewayOnMessage(handleNewMessage);\n eventBusService.chatOnMessageSent(handleMessageSent)\n eventBusService.chatOnMessageError(onMessageError)\n return () => {\n eventBusService.gatewayOffTurnComplete(onTurnComplete);\n eventBusService.gatewayOffTurnOpen(onTurnOpen);\n eventBusService.gatewayOffMessage(handleNewMessage);\n eventBusService.chatOffMessageSent(handleMessageSent)\n eventBusService.chatOffMessageError(onMessageError)\n\n }\n }, [eventBusService]);\n\n useEffect(() => {\n const clear = () => {\n messageRefs.current.clear();\n }\n\n const sortableTable = new SortableTable({ theme: theme });\n if (chatContainerRef) {\n setTimeout(() => {\n sortableTable.init(chatContainerRef.current)\n }, 500);\n }\n\n clear();\n // Scroll to bottom after session content is loaded.\n // First time messages become available we always snap to the\n // latest entry (so opening a session lands on the current\n // message, not the top of a long transcript). After that, we\n // only auto-scroll on message changes when the user is in\n // \"follow streaming\" mode (lock engaged).\n setTimeout(() => {\n const hasMessages = (messages?.length ?? 0) > 0;\n if (!didInitialScrollRef.current && hasMessages) {\n didInitialScrollRef.current = true;\n scrollToBottom(true); // immediate scroll to bottom\n return;\n }\n if (isScrollLockedRef.current)\n scrollToBottom(true);\n }, 100);\n\n return () => {\n sortableTable.destroy();\n }\n\n }, [messages]);\n\n const observerRef = useRef<() => void>(() => { });\n observerRef.current = () => {\n const container = chatContainerRef.current;\n if (!container || !isTurnOpen) return;\n\n if (container.scrollTop < 0) return;\n\n lastScrollPosition.current = container.scrollTop;\n\n const discount = container.clientHeight * 0.15;\n if (container.scrollTop + container.clientHeight < container.scrollHeight - discount) {\n if (isScrollLockedRef.current) {\n scrollToBottom();\n }\n else {\n if (!showNewContentIndicator)\n setShowNewContentIndicator(() => true);\n }\n }\n else {\n if (showNewContentIndicator)\n setShowNewContentIndicator(() => false);\n }\n };\n\n // Add global mouse event listeners\n useEffect(() => {\n const handleGlobalMouseMove = (e: MouseEvent) => {\n if (lastTimeout?.current)\n clearTimeout(lastTimeout.current)\n\n lastTimeout.current = setTimeout(() => {\n\n setLastActivity()\n lastTimeout.current = null;\n }, 50)\n };\n\n const handleGlobalMouseUp = () => {\n setLastActivity()\n }\n // Always add listeners to main document\n document.addEventListener(\"mousemove\", handleGlobalMouseMove);\n window.addEventListener(\"mouseup\", handleGlobalMouseUp);\n\n const handleKeyDown = (_event: KeyboardEvent) => {\n setLastActivity()\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener(\"mousemove\", handleGlobalMouseMove);\n window.removeEventListener(\"mouseup\", handleGlobalMouseUp);\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [setLastActivity]);\n\n useEffect(() => {\n const container = chatContainerRef.current;\n if (!container) return;\n\n const mutationObserver = new MutationObserver(() => observerRef.current());\n\n mutationObserver.observe(container, {\n childList: true,\n subtree: true,\n characterData: true\n });\n\n return () => {\n mutationObserver.disconnect();\n }\n }, [chatContainerRef.current])\n\n const askQuestion = async (question: string) => {\n setForceMessage(question);\n };\n\n /**\n * Triggers a file download without navigating away from the page.\n * Creates a temporary anchor with the download attribute and programmatically clicks it.\n */\n const triggerDownload = useCallback((url: string) => {\n const anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = url;\n anchor.style.display = 'none';\n document.body.appendChild(anchor);\n anchor.click();\n document.body.removeChild(anchor);\n }, []);\n\n const handleLinkAction = useCallback(async (link: string, content: string | null) => {\n const { action, url, question, parameter } = extractLinkAction(link, sessionId ?? '', content);\n switch (action) {\n case 'URL':\n window.open(url!, '_blank');\n break;\n case 'OpenDashboard':\n setDashboardUrl(parameter!);\n break;\n case 'Export':\n if (link.indexOf(\"http\") == -1) {\n link = serverUrlBase + link;\n }\n triggerDownload(link);\n break;\n case 'Question':\n\n await askQuestion(question!);\n }\n\n }, [messages, triggerDownload, dashboardUrl]);\n\n const scrollToBottom = useCallback((immediate: boolean = false) => {\n if (!chatContainerRef.current) return;\n\n const diff = new Date().getTime() - lastScrollToBottom.current;\n if (diff > 300) {\n const container = chatContainerRef.current;\n\n // Perform initial scroll\n container.scrollTo({\n top: container.scrollHeight,\n behavior: immediate ? 'instant' : 'smooth'\n });\n\n lastScrollToBottom.current = new Date().getTime();\n }\n\n }, []);\n\n function handleScrollEnd() {\n const currentPosition = chatContainerRef.current?.scrollTop ?? 0;\n const lastPosition = lastScrollPosition.current;\n\n if (currentPosition < lastPosition && showScrollLock) {\n handleUnlock(false);\n }\n }\n\n const scrollALittleUp = useCallback(() => {\n if (chatContainerRef.current && !isTouchDevice) {\n chatContainerRef.current.scrollBy({\n top: chatContainerRef.current.scrollHeight * 0.1 * -1,\n behavior: 'instant',\n })\n }\n }, [chatContainerRef.current, chatContainerRef.current?.scrollHeight]);\n\n const handleTouchMove = () => {\n\n handleUnlock(false);\n };\n\n const handleUnlock = (enableAnimation?: boolean) => {\n if (enableAnimation) {\n isScrollLockedRef.current = false;\n scrollALittleUp();\n }\n else {\n isScrollLockedRef.current = false;\n }\n\n setStartVanish(true);\n setTimeout(() => {\n setShowScrollLock(() => false);\n }, animationTime)\n }\n\n const handleLock = () => {\n scrollToBottom();\n isScrollLockedRef.current = true;\n setShowScrollLock(() => true);\n setShowNewContentIndicator(false);\n\n setStartVanish(() => false);\n }\n\n const getResponsiveChatContainerStyles = useCallback(() => {\n let style = { //default to medium to xl\n display: 'flex',\n pl: isMobile ? 1 : 2,\n pt: 0,\n pr: isMobile ? 1 : 0.5,\n m: 0,\n ml: 0,\n scrollbarWidth: '5px',\n scrollbarColor: 'rgba(0, 0, 0, 0.2)',\n backgroundColor: theme.palette?.surface?.raised ?? theme.palette.background.paper,\n flexDirection: 'column',\n height: '100%',\n minHeight: 0,\n border: `0px`,\n transition: 'border-color 0.5s ease',\n position: 'relative'\n }\n\n return style;\n }, [isMobile, theme]);\n\n\n\n const onMessageError = useCallback((error: string) => {\n showAlert('Send message', `**Error while trying to send the message:** ***${error}***\\n. Tente novamente.`, 'error', 'close')\n return Promise.resolve();\n }, []);\n\n const handleMessageSent = useCallback((_message: string, _interaction: Interaction) => {\n setTimeout(() => handleLock(), 200);\n return Promise.resolve();\n }, []);\n\n const handleNewMessage = async (_interaction: Interaction, _mergeDetails: MergeResult | null) => {\n if (!chatContainerRef.current) return;\n\n if (isScrollLockedRef.current)\n handleLock();\n }\n\n return (\n <Box sx={getResponsiveChatContainerStyles()}>\n {props.showStickHeader && (<StickyQuestionHeader\n messageRefs={messageRefs}\n showStickyHeader={showStickyHeader}\n />)}\n {showConnectionState && (\n <div style={{ position: \"absolute\", right: '0px', top: '5px', zIndex: 10000 }}>\n <ConnectionState />\n </div>\n )}\n {(loadingType !== undefined && connectionState != 'Idle' && connectionState != 'Connected') && (\n <div style={{ display: 'inline-flex', position: \"absolute\", backgroundColor: alpha(theme.palette.background.default,0.6), justifyContent: 'center', alignItems: 'center', height: '100%', width: '100%', right: '0px', top: '0', zIndex: 10000 }}>\n <Box sx={{\n width: '100%',\n height:'100%',\n alignContent:'end',\n '& .MuiLinearProgress-root': {\n backgroundColor: 'rgba(0, 0, 0, 0.15) !important'\n }\n }}>\n <LinearProgress\n variant={'indeterminate'}\n sx={(theme) => ({\n height: 5,\n borderRadius: 0,\n '& .MuiLinearProgress-bar1': {\n backgroundColor: theme.palette.primary.dark,\n opacity: 0.8\n },\n '& .MuiLinearProgress-bar2': {\n backgroundColor: theme.palette.primary.dark,\n opacity: 0.8\n }\n })}\n />\n </Box>\n\n </div>)}\n\n <Box\n ref={(el) => {\n if (el) {\n chatContainerRef.current = el as HTMLDivElement;\n }\n }}\n id={`chat-container-${sessionId ?? 'new'}`}\n onTouchMove={() => handleTouchMove()}\n // React's synthetic-event system doesn't recognise the DOM\n // `scrollend` event yet (would warn at runtime). The `onWheel`\n // handler below covers the same intent for desktop scroll;\n // touch scrollers fire `onTouchMove`. If a real `scrollend`\n // listener is ever needed, attach it via a `useEffect` +\n // `chatContainerRef.current.addEventListener('scrollend', …)`.\n onWheel={() => handleScrollEnd()}\n sx={{\n '&::-webkit-scrollbar': {\n width: isMobile ? 'none' : '4px',\n height: isMobile ? 'none' : '4px',\n background: showScrollLock ? theme.palette.background.default : theme.palette.background.paper,\n },\n '&::-webkit-scrollbar-track': {\n background: showScrollLock ? theme.palette.background.default : theme.palette.background.paper,\n width: isMobile ? 'none' : '4px',\n },\n '&::-webkit-scrollbar-thumb': {\n background: showScrollLock ? theme.palette.background.default : theme.palette.secondary.light,\n border: '1px solid',\n borderColor: showScrollLock ? theme.palette.background.default : theme.palette.grey[800],\n borderRadius: '4px',\n '&:hover': {\n background: theme.palette.secondary.main\n },\n },\n flex: 1, overflowY: 'auto', overflowX: 'hidden', p: 0, scrollbarWidth: isMobile ? 'none' : '5px', scrollbarColor: 'rgba(0, 0, 0, 0.06)', position: 'relative',\n maxWidth: '100%',\n // Canonical \"scrollable child of a flex column\"\n // recipe: minHeight: 0 lets the flex layout shrink\n // this past its content's intrinsic height, which\n // is what makes overflowY: auto actually engage.\n // The previous `height: '100%'` fought flex: 1 and\n // let the container grow past the available space,\n // pushing the Prompt off-screen and turning the\n // outer wrapper into the de-facto scroller.\n minHeight: 0,\n }}\n >\n {messages !== null &&\n // Historical messages live inside `InertEnvironmentProvider`\n // so any live-TSX side-effect hooks they carry (e.g.\n // an LLM-emitted `useDashboardPad`, `highlightComponent`,\n // `cloneComponent`, …) become no-ops when the chat\n // re-mounts on session reload. The side effects already\n // fired during the live stream — the agent's dashboard\n // pad was registered while `<CurrentMessage>` was alive\n // and is the DB's source of truth — so replaying the\n // history must be visual-only. Without this wrapper the\n // replay's `useEffect`s clobbered live state every time\n // the user opened the session (the \"h:1 corruption\"\n // path).\n <InertEnvironmentProvider>\n <Stack direction=\"column\" spacing={0}>\n {messages.filter((m) => m.turn_complete).map((message, index) => (\n <Box\n key={message.interactionId}\n sx={{ p: 0.5, width: isMobile ? '100%' : '98%' }}\n >\n <Message\n messagesRef={messageRefs}\n onLinkClicked={handleLinkAction}\n message={message}\n appendWaitingPart={false}\n friendlyMode={friendlyMode}\n />\n {(index < messages.length - 2) && <Divider sx={{ mt: 0, mb: 2 }} />}\n </Box>\n ))}\n </Stack>\n </InertEnvironmentProvider>\n }\n\n {/* `<CurrentMessage>` stays OUTSIDE the inert wrapper\n so the streaming turn keeps the real environment —\n live-TSX blocks emitted during the active turn\n (`useDashboardPad`, etc.) must be able to register\n their dashboard pad with the composer store. The\n moment the turn closes `currentMessage` becomes\n null and this slot unmounts; the same content\n moves into `messages` and renders under the inert\n wrapper from then on. */}\n <CurrentMessage\n artifactService={artifactService}\n eventBusService={eventBusService}\n onLinkClicked={handleLinkAction}\n messagesRef={messageRefs}\n friendlyMode={friendlyMode}\n />\n {/* <LlmResponseRender content={declaration} sessionId={''} partial={false} onLinkClicked={function (link: string, content: string | null): void {\n throw new Error('Function not implemented.');\n }}></LlmResponseRender> */}\n\n <div ref={messagesEndRef}></div>\n </Box>\n {/* Model Watermark */}\n {currentModelConfig && (\n <Typography\n variant=\"caption\"\n sx={{\n position: 'absolute',\n bottom: 120,\n right: 12,\n opacity: 0.18,\n fontSize: '0.65rem',\n fontWeight: 600,\n letterSpacing: 0.5,\n pointerEvents: 'none',\n userSelect: 'none',\n zIndex: 0,\n color: 'text.primary',\n }}\n >\n {currentModelConfig.name}\n </Typography>\n )}\n {/* New Content Indicator - positioned relative to the main chat pane */}\n <Fade in={showNewContentIndicator} timeout={300}>\n <Box\n sx={{\n\n position: 'absolute',\n bottom: promptHeight + 30, // Position above the prompt area\n right: 15,\n backgroundColor: theme.palette.background.paper,\n color: theme.palette.text.primary,\n borderRadius: 2,\n px: 1,\n py: 1,\n boxShadow: 3,\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n zIndex: 1000,\n animation: 'pulse 2s infinite',\n '@keyframes pulse': {\n '0%': {\n transform: 'scale(1)',\n opacity: 1,\n },\n '50%': {\n transform: 'scale(1.05)',\n opacity: 0.8,\n },\n '100%': {\n transform: 'scale(1)',\n opacity: 1,\n },\n },\n '&:hover': {\n backgroundColor: theme.palette.secondary.dark,\n transform: 'scale(1.02)',\n },\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n bottom: -20,\n right: 115,\n width: 16,\n height: 20,\n backgroundColor: theme.palette.text.secondary,\n clipPath: 'polygon(0 0, 100% 0, 0 100%)',\n borderRadius: '0 0 0 0',\n }\n }}\n onClick={() => {\n handleLock();\n }}\n >\n {isScrollLockedRef.current === true ? <LockOpen sx={{ fontSize: 10 }} /> : <Lock sx={{ fontSize: 20 }} />}\n <Typography variant=\"body2\" sx={{ fontWeight: 500 }}>\n New content!\n </Typography>\n <KeyboardArrowDownIcon sx={{ fontSize: 15 }} />\n </Box>\n </Fade>\n\n {\n (showScrollLock) && <Tooltip title=\"Clique para desativar o acompanhamento de escrita\" arrow={true} placement='right'\n slotProps={{\n tooltip: { sx: { backgroundColor: 'secondary.light', color: \"black\" } }\n }}\n >\n <Box\n onClick={() => handleUnlock()}\n sx={{\n position: 'absolute',\n bottom: promptHeight + 10, // Position above the prompt area\n right: 12,\n backgroundColor: theme.palette.secondary.light,\n color: theme.palette.getContrastText(theme.palette.secondary.light),\n borderColor: theme.palette.divider,\n borderRadius: 2,\n width: '20px',\n paddingLeft: '0.5px',\n height: '45px',\n alignContent: 'center',\n boxShadow: 3,\n cursor: 'pointer',\n alignItems: 'center',\n zIndex: 1000,\n textAlign: 'center',\n animation: !startVanish ? 'pulse 2s infinite' : `vanish ${animationTime / 1000}s ease-out`,\n '@keyframes vanish': startVanish ? {\n '0%': {\n transform: 'scale(1.5)',\n opacity: 1,\n },\n '25%': {\n transform: 'scale(1.125)',\n opacity: 0.7,\n },\n '50%': {\n transform: 'scale(0.750)',\n opacity: 0.4,\n },\n '75%': {\n transform: 'scale(0.375)',\n opacity: 0.1,\n },\n '100%': {\n transform: 'scale(0)',\n opacity: 0,\n },\n } : {},\n '@keyframes pulse': !startVanish ? {\n '0%': {\n transform: 'scale(1)',\n opacity: 1,\n },\n '50%': {\n transform: 'scale(1.05)',\n opacity: 0.8,\n },\n '100%': {\n transform: 'scale(1)',\n opacity: 1,\n },\n } : {},\n '&:hover': {\n backgroundColor: theme.palette.secondary.main,\n transform: 'scale(1.02)',\n },\n }}\n onMouseOver={() => {\n setIsMouseOverLock(() => true)\n }}\n onMouseLeave={() => {\n setIsMouseOverLock(() => false)\n }}\n >\n {isMouseOverLock ? <LockOpen sx={{ fontSize: 14, p: 0, m: 0 }} /> : <Lock sx={{ fontSize: 14, p: 0, m: 0 }} />}\n </Box>\n </Tooltip>\n }\n {/* Parked ask_user prompt: surfaced as a pane-scoped bottom sheet\n docked just above the composer while the turn waits on the user,\n so a blocked turn never reads as a finished one. */}\n <AskUserSheet promptHeight={promptHeight} />\n\n {/* Hosts that mount their own prompt below ChatPane (e.g.\n v2 Composer's DrawablePromptV2) pass `hidePromptInput`\n to suppress this internal Prompt — that way ChatPane is\n a pure transcript and we don't duplicate the chrome. */}\n {!hidePromptInput && (compactPrompt\n ? (\n <PromptV2\n onHeightChange={(newHeight) => setPromptHeight(() => newHeight)}\n forceMessage={forceMessage}\n />\n )\n : (\n <Prompt\n onHeightChange={(newHeight) => setPromptHeight(() => newHeight)}\n forceMessage={forceMessage}\n />\n ))}\n\n {/* Alert Dialog */}\n <AlertDialog\n open={alertDialog.open}\n title={alertDialog.title}\n message={alertDialog.message}\n actionType={alertDialog.actionType}\n severity={alertDialog.severity}\n onClose={closeAlertAndRetry}\n onRetry={closeAlertAndRetry}\n />\n\n {/* {dashboardUrl && <DashboardModal open={!!dashboardUrl} id={dashboardUrl} onClose={() => setDashboardUrl(null)} />} */}\n </Box >\n\n\n )\n}\n\nexport default ChatPane; ","import { forwardRef, useEffect, useImperativeHandle, useRef } from 'react';\nimport { Box, Paper } from '@mui/material';\nimport type { AiChatProps, AiChatHandle, AiChatStyleProps } from './AiChatTypes';\nimport { AiChatProvider } from './AiChatProvider';\nimport { useAiChatServices } from './AiChatContext';\nimport ChatPane from './ChatPane/ChatPane';\n\nconst AiChatInner = forwardRef<AiChatHandle, AiChatStyleProps>(\n ({ bordered, borderRadius, elevation, onToolEvent, bottomSlot, children }, ref) => {\n // `sendMessage` is owned by the provider (single source of truth) and exposed on the\n // context; the imperative ref handle just re-exports it so both entry points behave\n // identically (including the `{ ui }` payload handling).\n const { sessionStore, eventBusService, sendMessage } = useAiChatServices();\n const onToolEventRef = useRef(onToolEvent);\n onToolEventRef.current = onToolEvent;\n\n useImperativeHandle(ref, () => ({\n sendMessage,\n getMessages: () => sessionStore.getState().messages,\n getSession: () => sessionStore.getState().session,\n getConnectionState: () => sessionStore.getState().connectionStatus,\n }), [sendMessage, sessionStore]);\n\n useEffect(() => {\n const handler = async (eventName: string, eventData: string) => {\n onToolEventRef.current?.(eventName, eventData);\n };\n eventBusService.gatewayOnToolEvent(handler);\n return () => {\n eventBusService.gatewayOffToolEvent(handler);\n };\n }, [eventBusService]);\n\n const hasStyling = bordered || borderRadius || elevation;\n\n // ChatPane uses `height: 100%` and pins its prompt at the bottom\n // via internal flex column. To insert a `bottomSlot` *below* the\n // prompt we wrap both in a flex column where ChatPane takes\n // `flex: 1` (so it still fills the available space and its\n // internal scroll boundary works) and the slot lives below it\n // as a `flex: 0 0 auto` row. The wrapper itself takes `height: 100%`\n // so it inherits the host's sizing the same way the bare\n // ChatPane used to.\n const content = children !== undefined ?\n children :\n bottomSlot ? (\n <Box sx={{ display: 'flex', flexDirection: 'column', height: '100%', minHeight: 0 }}>\n <Box sx={{ flex: 1, minHeight: 0, display: 'flex', flexDirection: 'column' }}>\n <ChatPane />\n </Box>\n {bottomSlot}\n </Box>\n ) :\n (\n <ChatPane />\n );\n\n if (!hasStyling) {\n return content;\n }\n\n return (\n <Paper\n variant={bordered ? 'outlined' : 'elevation'}\n elevation={bordered ? 0 : (elevation ?? 0)}\n color='black'\n\n sx={{ backgroundColor: 'black', borderRadius: borderRadius ?? 0, height: '100%', overflow: 'hidden' }}\n >\n {content}\n </Paper>\n );\n }\n);\n\nAiChatInner.displayName = 'AiChatInner';\n\nconst AiChat = forwardRef<AiChatHandle, AiChatProps>((props, ref) => {\n const { bordered, borderRadius, elevation, children, bottomSlot, ...providerProps } = props;\n\n return (\n <AiChatProvider {...providerProps}>\n <AiChatInner\n ref={ref}\n bordered={bordered}\n onToolEvent={props.onToolEvent}\n borderRadius={borderRadius}\n elevation={elevation}\n bottomSlot={bottomSlot}\n >\n {children}\n </AiChatInner>\n </AiChatProvider>\n );\n});\n\nAiChat.displayName = 'AiChat';\n\nexport default AiChat;\n","import { Box, ButtonBase, CircularProgress, Stack, Typography, useTheme } from \"@mui/material\";\nimport { useEffect, type JSX } from \"react\";\nimport SortableTable from '@lib/utils/sortable-table';\nimport { type Artifact } from \"@lib/models/Artifact\";\nimport { type IArtifactService } from \"@lib/services/interfaces/artifactService\";\nimport { AttachFileTwoTone, FileDownloadOutlined, PictureAsPdf, SettingsOverscan } from \"@mui/icons-material\";\nimport { getServerBaseUrl } from \"@lib/utils/environmentUtils\";\nimport HtmlOutlinedIcon from '@mui/icons-material/HtmlOutlined';\n\ninterface ArtifactRenderProps {\n artifact?: Artifact | null;\n mode: 'full' | 'compact';\n isMobile: boolean;\n isTablet: boolean;\n preview: boolean;\n sessionId?: string;\n renderMode?: 'browser' | 'serverside';\n naked: boolean;\n fullImage?: boolean;\n artifactService: IArtifactService\n onExpand?: (artifact: Artifact) => void\n}\n\nconst ArtifactRender = ({ artifact, mode, sessionId, preview, onExpand, renderMode = 'browser', naked = false, fullImage = false }: ArtifactRenderProps): JSX.Element => {\n const theme = useTheme();\n // let state: [boolean, React.Dispatch<React.SetStateAction<boolean>>];\n // let loadPromise: React.RefObject<Promise<string | null> | null> | null = null;\n\n // Image loading state for large images - only use hooks in browser mode\n let imageLoading = false;\n let setImageLoading: React.Dispatch<boolean> | null = null;\n //let stateImageLoading: [boolean, React.Dispatch<React.SetStateAction<boolean>>];\n let imageError = false;\n let setImageError: React.Dispatch<boolean> | null = null;\n //let stateImageError: [boolean, React.Dispatch<React.SetStateAction<boolean>>];\n\n // if (renderMode === 'browser') {\n // state = useState(false);\n // isLoading = state[0];\n // setIsLoading = state[1];\n // loadPromise = useRef<Promise<string | null> | null>(null);\n\n // stateImageLoading = useState(false);\n // imageLoading = stateImageLoading[0];\n // setImageLoading = stateImageLoading[1];\n // stateImageError = useState(false);\n // imageError = stateImageError[0];\n // setImageError = stateImageError[1];\n // }\n\n\n // const getArtifactContent = async (id: string): Promise<string | null> => {\n // if (!artifact)\n // return Promise.resolve(null);\n\n // if (loadPromise === null)\n // return null;\n\n // if (loadPromise.current)\n // return loadPromise.current;\n\n // loadPromise.current = FirebaseArtifactService.getFileContent(`${getArtifactsBaseUrl()}/${id}`)\n // .then((content) => {\n // loadPromise.current = null;\n // return content;\n // })\n\n // return loadPromise.current;\n // }\n\n if (artifact && renderMode === 'browser') {\n useEffect(() => {\n if (artifact.mimeType == \"text/html\") {\n\n setTimeout(() => {\n const sortableTable = new SortableTable();\n console.warn(\"Making sortable\", `container-table_${artifact?.id ?? 'idnull'}_${mode}_${naked}`)\n const container = document.getElementById(`container-table_${artifact?.id ?? 'idnull'}_${mode}_${naked}`);\n console.log(\"Container\", container);\n if (container) {\n console.log(\"Initializing sortable table\", container);\n sortableTable.init(container);\n }\n //setIsLoading(false);\n }, 400);\n }\n }, [artifact, preview, naked, mode]);\n }\n\n // const loadArtifactHtml = (): string | null => {\n // if (artifact && artifact.mimeType == \"text/html\") {\n // if (!artifact.html && artifact.dataAsString) {\n // artifact.html = ArtifactHtmlHandler.handleArtifactHtml(artifact.dataAsString, mode, isMobile, theme);\n // artifactService.saveArtifactToCache(artifact);\n // }\n\n // return artifact.html ?? null;\n // }\n // return null;\n // }\n\n function geticon(mimeType: string) {\n switch (mimeType) {\n case \"text/html\":\n return <HtmlOutlinedIcon fontSize=\"large\" />\n case \"text/csv\":\n return <FileDownloadOutlined fontSize=\"large\" />\n case \"application/pdf\":\n return <PictureAsPdf fontSize=\"large\" />\n default:\n return <AttachFileTwoTone fontSize=\"large\" />\n }\n }\n\n function getMimeTypeCard() {\n return <Box sx={{\n display: mode === 'compact' && naked === false ? 'flex' : 'block',\n textAlign: 'center',\n alignContent: 'center',\n justifyContent: 'center',\n boxSizing: mode === 'compact' && naked === false ? 'border-box' : 'auto',\n maxWidth: '100%',\n maxHeight: renderMode == 'browser' && naked && !fullImage && mode == 'compact' ?\n '100%' :\n renderMode == 'serverside' ? 'unset' : '100%',\n width: '100%',\n height: mode === 'compact' ? '300px' : '100%',\n margin: mode === 'compact' ? '5px auto' : '0px',\n padding: '15px 5px',\n minWidth: mode === 'compact' ?\n renderMode == 'browser' ? '100%' : '300px'\n : '300px',\n backgroundColor: theme.palette.background.default,\n borderRadius: '10px',\n border: `1px solid ${theme.palette.divider}`,\n overflow: mode === 'compact' ? 'hidden' : 'auto',\n position: 'relative', // For overlay positioning \n }}>\n {geticon(artifact?.mimeType ?? '')}\n <Typography variant=\"h4\" color=\"text.secondary\" align=\"center\">\n {artifact?.name}\n </Typography>\n </Box>\n }\n\n function getHtmlContent(_html: string, isLoading: boolean) {\n return isLoading ?\n <Box sx={{\n display: mode === 'compact' && naked === false ? 'flex' : 'block',\n textAlign: 'center',\n justifyContent: mode === 'compact' ? 'center' : 'auto',\n boxSizing: mode === 'compact' && naked === false ? 'border-box' : 'auto',\n maxWidth: '100%',\n maxHeight: renderMode == 'browser' && naked && !fullImage && mode == 'compact' ?\n '100%' :\n renderMode == 'serverside' ? 'unset' : '100%',\n width: '100%',\n height: mode === 'compact' ? 'auto' : '100%',\n margin: mode === 'compact' ? '5px auto' : '0px',\n padding: '15px 5px',\n minWidth: mode === 'compact' ?\n renderMode == 'browser' ? '100%' : '300px'\n : '300px',\n backgroundColor: theme.palette.background.default,\n borderRadius: '10px',\n border: `1px solid ${theme.palette.divider}`,\n overflow: mode === 'compact' ? 'hidden' : 'auto',\n position: 'relative', // For overlay positioning \n }}>\n <Stack direction=\"row\" gap={2} alignItems={\"center\"}>\n <CircularProgress size={60} />\n <Typography variant=\"h4\" color=\"text.secondary\" align=\"center\">\n Loading...\n </Typography>\n </Stack>\n </Box>\n :\n artifact?.src ? (<div className=\"iframe-container\">\n <iframe src={`${artifact?.src}`} style={{ minHeight: '80vh', width: '100%', borderRadius: 'var(--radius-md)' }} />\n </div>)\n :\n (<div id={`container-table_${artifact?.id ?? 'idnull'}_${mode}_${naked}`}>\n <div dangerouslySetInnerHTML={{ __html: artifact?.html ?? '' }} />\n </div>)\n }\n\n function getEmbbedImage(artifact: Artifact) {\n const artifactLabel = artifact.description ?? \"\";\n const imageUrl = artifact.name?.indexOf(\"http\") == -1 ? `${getServerBaseUrl()}/open/getImage/${sessionId}/${artifact.name}` : artifact.name;\n\n const handleImageLoad = () => {\n if (renderMode === 'browser' && setImageLoading && setImageError) {\n setImageLoading(false);\n setImageError(false);\n }\n };\n\n const handleImageError = () => {\n if (renderMode === 'browser' && setImageLoading && setImageError) {\n setImageLoading(false);\n setImageError(true);\n }\n };\n\n return <Box sx={{\n display: mode === 'compact' && naked === false ? 'flex' : 'block',\n textAlign: 'center',\n justifyContent: mode === 'compact' ? 'center' : 'auto',\n boxSizing: mode === 'compact' && naked === false ? 'border-box' : 'auto',\n maxWidth: '100%',\n maxHeight: renderMode == 'browser' && naked && !fullImage && mode == 'compact' ?\n '100%' :\n renderMode == 'serverside' ? 'unset' : '100%',\n width: '100%',\n height: mode === 'compact' ? 'auto' : '100%',\n margin: mode === 'compact' ? '5px auto' : '0px',\n padding: '15px 5px',\n minWidth: mode === 'compact' ?\n renderMode == 'browser' ? '100%' : '300px'\n : '300px',\n backgroundColor: theme.palette.background.default,\n borderRadius: '10px',\n border: naked ?\n renderMode == 'browser' ? '1px solid' : 'none' :\n '1px solid',\n borderColor: 'divider',\n overflow: mode === 'compact' ? 'hidden' : 'auto',\n position: 'relative', // For overlay positioning\n }}>\n {\n renderMode === 'browser' && imageLoading && (\n <Box sx={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 10,\n borderRadius: '10px',\n }}>\n <CircularProgress size={30} sx={{ color: 'text.secondary', mb: 2 }} />\n <Typography variant=\"body1\" sx={{ color: 'text.secondary', textAlign: 'center' }}>\n Loading high-resolution image...\n </Typography>\n <Typography variant=\"caption\" sx={{ color: 'text.secondary', textAlign: 'center', mt: 1 }}>\n Large images may take a moment to load\n </Typography>\n </Box>\n )\n }\n {\n naked && (\n <ButtonBase onClick={() => onExpand ? onExpand(artifact) : console.log(\"No subscriber\")} sx={{\n position: \"absolute\", right: '0', top: '0', px: 1, py: 1, cursor: 'pointer',\n color: '#666666',\n \"&:hover\": {\n color: 'text.secondary'\n },\n \"&:focus\": {\n color: 'unset', border: '0x solid', borderRadius: 'unset', outline: 'none'\n },\n \"&:active\": {\n color: 'unset', border: '0x solid', borderRadius: 'unset', outline: 'none'\n },\n }}>\n <SettingsOverscan />\n </ButtonBase>\n )\n }\n\n {/* Error State - only show in browser mode */}\n {\n renderMode === 'browser' && imageError && (\n <Box sx={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 10,\n borderRadius: '10px',\n }}>\n <Typography variant=\"h6\" sx={{ color: 'white', mb: 1 }}>\n Failed to load image\n </Typography>\n <Typography variant=\"body2\" sx={{ color: 'rgba(255, 255, 255, 0.7)', textAlign: 'center' }}>\n Please try refreshing or check your connection\n </Typography>\n </Box>\n )\n }\n\n {/* Image */}\n <img\n src={imageUrl}\n alt={artifactLabel ?? ''}\n style={{\n maxWidth: fullImage ? 'none' : renderMode == 'serverside' ? '100%' : '95%',\n maxHeight: fullImage ? 'none' : '100%',\n height: 'auto',\n width: 'auto',\n minWidth: mode === 'full' || renderMode == 'serverside' ? '450px' : 'none',\n minHeight: mode === 'full' || renderMode == 'serverside' ? '350px' : 'none',\n objectFit: mode === 'full' ? 'unset' : 'contain',\n opacity: (renderMode === 'browser' && imageLoading) ? 0 : 1, // Hide image while loading\n }}\n onLoad={renderMode === 'browser' ? handleImageLoad : undefined}\n onError={renderMode === 'browser' ? handleImageError : undefined}\n />\n </Box>\n }\n\n // if(artifact.dataAsString)\n // setIsLoading(false)\n if (!artifact?.mimeType?.startsWith(\"image\")) {\n if (preview)\n return getMimeTypeCard()\n else\n return getHtmlContent(artifact?.html ?? '', false)\n }\n else {\n return getEmbbedImage(artifact)\n }\n\n // return <div style={{ minWidth: '300px', minHeight: '400px', color: 'red' }}>LOADING</div>\n}\n\n\nexport default ArtifactRender;","import React, { useState, useEffect, useRef } from 'react';\nimport MarkdownExtended from './MarkdowmExtended';\nimport { chunkArray } from '@lib/utils/stringUtils';\n\ninterface DelayTextComponentProps {\n text: string;\n totalTime: number; // Total approximate time in milliseconds\n initialDelay: number; // Initial delay before starting in milliseconds\n useMarkdown?: boolean; // Optional flag to render with MarkdownExtended\n}\n\nexport const DelayTextComponent: React.FC<DelayTextComponentProps> = ({\n text,\n totalTime,\n initialDelay,\n useMarkdown = false,\n}) => {\n const [displayedText, setDisplayedText] = useState('');\n const isFinishedRef = useRef(false);\n\n useEffect(() => {\n // Reset displayed text when text prop changes\n setDisplayedText('');\n\n const charArray = [...text];\n const chunkedText = chunkArray(charArray, text.length / 100);\n // Break text into parts\n const parts: string[] = chunkedText.map(chunk => chunk.join(\"\"))\n\n setTimeout(() => {\n // If no parts, just show the text immediately after initial delay\n if (parts.length === 0) {\n setDisplayedText(text);\n }\n\n // Calculate approximate delay per part with some randomization\n const baseDelay = totalTime / parts.length;\n const variationRange = baseDelay * 0.4; // ±40% variation\n\n let accumulatedText = '';\n let currentTime = initialDelay;\n\n // Schedule each part to be displayed\n const timeouts: NodeJS.Timeout[] = [];\n\n accumulatedText = \":thumbsup: OK!\"\n const initialSpace = setTimeout(() => {\n setDisplayedText(\":thumbsup: OK!\");\n }, 0);\n\n timeouts.push(initialSpace);\n\n parts.forEach((part, index) => {\n accumulatedText += part;\n const textToShow = accumulatedText;\n\n // Add random variation to the delay\n const randomVariation = (Math.random() - 0.5) * 2 * variationRange;\n const delay = Math.max(150, baseDelay + randomVariation); // Minimum 50ms delay\n\n currentTime += delay;\n\n const timeout = setTimeout(() => {\n if (index == parts.length - 1) {\n isFinishedRef.current = true\n }\n setDisplayedText(textToShow)\n }, currentTime);\n\n timeouts.push(timeout);\n });\n\n // Cleanup function to clear all timeouts\n return () => {\n timeouts.forEach(timeout => clearTimeout(timeout));\n };\n }, initialDelay)\n\n }, [text, totalTime, initialDelay]);\n\n if (isFinishedRef.current)\n return useMarkdown ? <MarkdownExtended sessionId='' text={text} /> : <>{text}</>\n\n if (useMarkdown) {\n return <MarkdownExtended sessionId='' text={displayedText} />;\n }\n\n return <>{displayedText}</>;\n};\n\nexport default DelayTextComponent;\n\n","import { unified } from 'unified';\nimport remarkParse from 'remark-parse';\nimport { toMarkdown } from 'mdast-util-to-markdown';\nimport type { RootContent } from 'mdast';\n\nexport type ContentBlock = {\n type: 'liveTsx' | 'markdown' | 'slot';\n content?: string;\n code?: string;\n /** For `slot` blocks: the SlotId from a UI tool's result, matched to a\n * `{{Component:<slotId>}}` token in the assistant text. */\n slotId?: string;\n /**\n * Per-block lifecycle state. False once a closed liveTsx fence has\n * been parsed out of the chat text (the sidecar's build succeeded\n * and the compiled JS is safe to mount). True for a \"loading\"\n * marker without a paired closing fence, and for the trailing\n * unclosed fence at the end of streaming text.\n */\n partial?: boolean;\n /**\n * 0..1 progress hint for partial liveTsx blocks. Derived from the\n * count of <i data-lt-tick></i> markers the server emits into the\n * chat text every `STRIDE` chars of TSX body received (see\n * `LiveTsxProgressStride` in JsxLiveStreamProcessor.cs). Mapped to\n * `MAX_CHARS_FOR_FULL` and clamped to 1. Consumed by\n * `GeneratingVisualization` to fill the placeholder's bar buckets.\n */\n progress?: number;\n bytes?: number\n};\n\n// Languages we treat as live-renderable JSX. The canonical tag is\n// `livetsx`, but the agent occasionally emits `tsx` / `jsx` (the more\n// common ecosystem labels), and a model that's been instructed in\n// either casing should still get live rendering. All blocks the agent\n// produces in our domain are meant to render — we don't ship static\n// JSX documentation in chat — so widening the set is safe.\nconst JSX_LANGS = new Set(['livetsx', 'tsx', 'jsx']);\n\n// Invisible HTML sentinel the server's JsxLiveStreamProcessor injects\n// into the chat text the moment a liveTsx fence opens on the LLM side.\n// The div has display:none so it occupies no layout and is preserved\n// through session persistence/replay. While the fence is being written\n// the div sits alone in the text (no fence yet) and parseBlocks emits a\n// placeholder block in its position; when the closed fence eventually\n// arrives in the same stream, parseBlocks pairs them and the fence\n// supersedes the div. Kept in sync with JsxLiveStreamProcessor.cs.\nconst LOADING_DIV_RE = /<div\\b[^>]*\\bdata-envision-livetsx=\"loading\"[^>]*><\\/div>/i;\nconst LOADING_DIV_RE_G = /<div\\b[^>]*\\bdata-envision-livetsx=\"loading\"[^>]*><\\/div>/gi;\n\n// Progress markers the server interleaves into the chat text during\n// fence writing — one <i data-lt-tick></i> per `STRIDE` chars of TSX\n// body received. Kept in sync with `LiveTsxProgressStride` /\n// `LiveTsxTickMarker` in JsxLiveStreamProcessor.cs.\nconst TICK_RE_G = /<i data-lt-tick><\\/i>/g;\n// Default \"100%\" cap — the rough char count of a typical liveTsx body.\n// Surfaces whose snippets tend to be larger (or smaller) can override\n// via `LiveTsxConfigProvider` / the `maxCharsForFull` option below;\n// this is just the fallback used when no provider is in scope.\nexport const DEFAULT_MAX_CHARS_FOR_FULL = 2000;\nconst STRIDE = 100;\n// Matches a closed liveTsx fence anywhere in a substring (multi-line\n// body). Used to decide whether the trailing loading-div still has\n// progress to surface or has already been resolved by a closed fence.\nconst CLOSED_FENCE_RE = /```(?:liveTsx|tsx|jsx)\\s*\\n[\\s\\S]*?\\n```/i;\n\n/**\n * Walks the raw chat text and returns a 0..1 progress value for the\n * trailing in-flight liveTsx block, if any. The trailing block is\n * defined as the last loading-div that has NO closed fence after it.\n * Tick markers between that div and end-of-text are the progress.\n *\n * `maxCharsForFull` is the surface-specific cap that maps tick count\n * to a fraction — pass a larger value when typical fences run long.\n */\nfunction computeProgress(rawText: string, maxCharsForFull: number): [number,number] {\n let lastDivEnd = -1;\n let m: RegExpExecArray | null;\n // Local copy of the global regex so we don't share `lastIndex` state.\n const re = new RegExp(LOADING_DIV_RE_G.source, LOADING_DIV_RE_G.flags);\n while ((m = re.exec(rawText)) !== null) {\n lastDivEnd = m.index + m[0].length;\n }\n if (lastDivEnd === -1) return [0,0];\n\n const after = rawText.slice(lastDivEnd);\n // Already-resolved block: ticks before its closed fence belong to\n // that fence and are about to be discarded by the AST walk anyway.\n if (CLOSED_FENCE_RE.test(after)) return [0,0];\n\n const ticks = after.match(TICK_RE_G);\n const count = ticks ? ticks.length : 0;\n const maxTicks = Math.max(1, maxCharsForFull / STRIDE);\n return [Math.min(count / maxTicks, 1), count];\n}\n\n/**\n * Detects an unclosed ```liveTsx fence at the end of streaming text.\n * Returns the text before the fence and the partial code inside it,\n * or null if no unclosed fence is found.\n */\nfunction extractTrailingUnclosedFence(text: string): { before: string; partialCode: string } | null {\n const fenceRe = /^```(\\w+)\\s*$/gm;\n let lastFenceMatch: RegExpExecArray | null = null;\n let match: RegExpExecArray | null;\n\n while ((match = fenceRe.exec(text)) !== null) {\n if (JSX_LANGS.has(match[1].toLowerCase())) {\n lastFenceMatch = match;\n }\n }\n\n if (!lastFenceMatch) return null;\n\n const afterFence = text.slice(lastFenceMatch.index + lastFenceMatch[0].length);\n const hasClosing = /^```\\s*$/m.test(afterFence);\n if (hasClosing) return null;\n\n const before = text.slice(0, lastFenceMatch.index);\n const partialCode = afterFence.replace(/^\\n/, '');\n return { before, partialCode };\n}\n\n// A standalone `{{Component:<slotId>}}` paragraph is a placement marker for a\n// UI tool component (the SlotId is generated server-side and returned in the\n// tool result); LlmResponseRender splices the matching component here.\nconst SLOT_RE = /^\\{\\{\\s*Component:\\s*([\\w-]+)\\s*\\}\\}$/;\n\n// Plain text of a paragraph whose children are all text nodes (so a wrapped or\n// emphasised token isn't mistaken for a marker), trimmed; else null.\nfunction paragraphText(node: RootContent): string | null {\n if (node.type !== 'paragraph') return null;\n const kids = (node as { children?: { type: string; value?: string }[] }).children ?? [];\n if (kids.length === 0 || !kids.every((c) => c.type === 'text')) return null;\n return kids.map((c) => c.value ?? '').join('').trim();\n}\n\n/**\n * Splits a markdown string into sequential content blocks:\n * - 'markdown' — regular content (headings, paragraphs, non-JSX code fences, etc.)\n * - 'liveTsx' — fenced code blocks tagged ```liveTsx\n *\n * When the text ends with an unclosed ```liveTsx fence (common during streaming),\n * the partial code is still emitted as a 'liveTsx' block so it goes through\n * LiveJsxBlock (and skeleton detection) instead of the markdown renderer.\n */\nexport function parseContentBlocks(\n text: string,\n options?: { maxCharsForFull?: number },\n): ContentBlock[] {\n if (!text?.trim()) return [];\n\n // Compute progress BEFORE stripping ticks (computeProgress relies on\n // them being present to count). After this, ticks are excised from\n // `text` so they never reach the markdown renderer or pollute the\n // partial-fence detector below.\n const [progress,count] = computeProgress(\n text,\n options?.maxCharsForFull ?? DEFAULT_MAX_CHARS_FOR_FULL,\n );\n text = text.replace(TICK_RE_G, '');\n\n let trailingPartialCode: string | null = null;\n const unclosed = extractTrailingUnclosedFence(text);\n if (unclosed) {\n text = unclosed.before;\n trailingPartialCode = unclosed.partialCode;\n }\n\n const ast = unified().use(remarkParse).parse(text);\n\n const blocks: ContentBlock[] = [];\n let buffer: RootContent[] = [];\n // True once a server-emitted loading div has been seen and no closing\n // fence has yet consumed it. The next liveTsx fence collapses both\n // into a single real block; if the stream ends with this flag still\n // set, a placeholder block is emitted at end-of-AST.\n let pendingLoading = false;\n\n const flushBuffer = () => {\n if (buffer.length === 0) return;\n const md = toMarkdown({ type: 'root', children: buffer } as any);\n if (md.trim()) {\n blocks.push({ type: 'markdown', content: md });\n }\n buffer = [];\n };\n\n for (const node of ast.children) {\n // Loading sentinel — invisible signal that a fence has opened on\n // the server side. We keep the flag set even across additional\n // loading divs (e.g. a retry after an ESLint failure that\n // re-emits its own loading sentinel) so the eventual closed\n // fence still collapses everything into a single block instead\n // of emitting orphaned placeholders for stale attempts.\n if (node.type === 'html' && LOADING_DIV_RE.test(node.value)) {\n flushBuffer();\n pendingLoading = true;\n continue;\n }\n\n // ```tsx / ```jsx fences are NOT live-rendered — the liveTsx runtime-eval\n // path is retired in favour of the present_tsx tool call. They fall through\n // to the markdown buffer below and render as ordinary code blocks.\n\n // `{{Component:<slotId>}}` on its own line → a placement slot for a UI\n // tool component, spliced in by LlmResponseRender at this position.\n const slotText = paragraphText(node);\n if (slotText) {\n const sm = slotText.match(SLOT_RE);\n if (sm) {\n flushBuffer();\n blocks.push({ type: 'slot', slotId: sm[1] });\n continue;\n }\n }\n\n buffer.push(node);\n }\n\n flushBuffer();\n\n // Loading sentinel emitted but no closing fence arrived before the\n // stream ended — the LLM is still writing the fence, or the session\n // was persisted mid-write. Surface a placeholder so LiveJsxBlock\n // shows the \"Gerando visualização\" card at the right position.\n if (pendingLoading) {\n blocks.push({ type: 'liveTsx', code: '', partial: true, progress, bytes:count*100 });\n }\n\n if (trailingPartialCode !== null) {\n blocks.push({ type: 'liveTsx', code: trailingPartialCode, partial: true });\n }\n\n return blocks;\n}\n","// Host-tunable knobs for the liveTsx placeholder. Today this is just\n// the \"what does 100% look like\" hint that drives\n// `GeneratingVisualization`'s bar fill — surfaces whose fences tend to\n// be longer (e.g. Composer with full-dashboard snippets) should bump\n// this up so the bars don't saturate halfway through, while surfaces\n// with shorter snippets (DataExplorer) can stick to the default. The\n// server's per-tick stride is independent of this; only the client\n// mapping from `tickCount` to a 0..1 progress fraction is affected.\n\nimport React, { createContext, useContext, useMemo } from 'react';\n\nexport const LIVE_TSX_DEFAULT_MAX_CHARS_FOR_FULL = 3000;\n\nconst LiveTsxConfigContext = createContext<number>(LIVE_TSX_DEFAULT_MAX_CHARS_FOR_FULL);\n\n/**\n * Read the host-configured \"100%\" cap for placeholder progress. Falls\n * back to {@link LIVE_TSX_DEFAULT_MAX_CHARS_FOR_FULL} when no provider\n * is mounted above. Consumed inside `LlmResponseRender` and forwarded\n * to `parseContentBlocks`.\n */\nexport function useLiveTsxMaxCharsForFull(): number {\n return useContext(LiveTsxConfigContext);\n}\n\n/**\n * Wraps any subtree that renders `LlmResponseRender` with a custom\n * `maxCharsForFull`. Place near the top of a view (e.g. ComposerViewV2)\n * so every chat surface inside picks up the same hint.\n */\nexport const LiveTsxConfigProvider: React.FC<{\n maxCharsForFull?: number;\n children: React.ReactNode;\n}> = ({ maxCharsForFull, children }) => {\n const value = useMemo(\n () => maxCharsForFull ?? LIVE_TSX_DEFAULT_MAX_CHARS_FOR_FULL,\n [maxCharsForFull],\n );\n return (\n <LiveTsxConfigContext.Provider value={value}>\n {children}\n </LiveTsxConfigContext.Provider>\n );\n};\n","import React, { useContext, useDeferredValue, useMemo } from 'react';\nimport { parseContentBlocks } from './parseBlocks';\nimport MarkdownExtended from '../Library/MarkdowmExtended';\nimport { Box } from '@mui/material';\nimport { useLiveTsxMaxCharsForFull } from './liveTsxConfig';\nimport { AiChatServiceContext } from '../AiChat/AiChatContext';\nimport { DEFAULT_PART_RENDERERS } from '../AiChat/ChatPane/parts';\nimport { InteractionPartUtils } from '@lib/models/InteractionPart';\nimport type { Interaction } from '@lib/models/Interaction';\nimport type { EventBusService } from '@lib/services/eventBusService';\n\ninterface LlmResponseRenderProps {\n /** Full LLM response in markdown (may contain ```jsx code blocks) */\n content: string;\n sessionId: string;\n partial: boolean;\n /** Extra components/values to make available inside JSX blocks */\n scope?: Record<string, unknown>;\n eventBusService?: EventBusService;\n onLinkClicked: (link: string, content: string | null) => void;\n /** The interaction this text belongs to — used to resolve\n * `{{Component:<slotId>}}` tokens to their UI tool part. */\n message?: Interaction;\n onGoing?: boolean;\n friendlyMode?: boolean;\n}\n\n/**\n * Renders an LLM markdown response with live JSX previews.\n *\n * Regular markdown blocks → MarkdownExtended (syntax highlighting, icons, etc.)\n * ```liveTsx blocks → compiled at runtime with Sucrase and mounted as React components\n *\n * Usage:\n * <LlmResponseRender content={llmResponse} sessionId={sessionId} />\n */\nconst LlmResponseRender: React.FC<LlmResponseRenderProps> = ({\n content,\n sessionId,\n scope,\n partial,\n eventBusService,\n onLinkClicked,\n message,\n onGoing,\n friendlyMode,\n}) => {\n const services = useContext(AiChatServiceContext);\n // Host-overridable cap for the placeholder progress bars. Defaults\n // to 2000 chars; ComposerViewV2 bumps it to ~5000 because dashboard\n // snippets routinely run that long.\n const maxCharsForFull = useLiveTsxMaxCharsForFull();\n // Defer `content` so React can keep the previous (cheaper) render on\n // screen while a new chunk's render is still in progress. When the\n // stream emits faster than render can keep up, intermediate values\n // get coalesced — only the latest content actually commits. Combined\n // with the partial-skips-highlighting branch in MarkdownExtended,\n // this keeps the WS handler from being starved during heavy chunks.\n const deferredContent = useDeferredValue(content);\n const blocks = useMemo(\n () => parseContentBlocks(deferredContent, { maxCharsForFull }),\n [deferredContent, maxCharsForFull],\n );\n\n const hasErrors = blocks.filter(b => (b.code?.indexOf(\"<!--liveTsx:invalid-->\") ?? -1) > -1).length > 0;\n\n if(hasErrors) return null;\n\n return blocks.map((block, i) => {\n // `{{Component:<slotId>}}` placement token → render the matching UI tool\n // part here (found in this message by SlotId), in a stable id-keyed\n // container so it mounts once and survives further streamed text.\n if (block.type === 'slot') {\n const uiPart = message?.parts?.find(\n (p) => InteractionPartUtils.uiSlotId(p) === block.slotId,\n );\n // Prefer a host override, else the built-in uiTool dispatcher (which\n // resolves the `uiTools` registry) — so slot-placed UI tools render\n // through the registry too, not only an explicit partRenderers.uiTool.\n const Renderer = services?.partRenderers?.['uiTool'] ?? DEFAULT_PART_RENDERERS['uiTool'];\n if (!uiPart || !Renderer) return null;\n // Grow-in entrance, mirroring LiveJsxBlock's `liveJsxBlockGrowIn`:\n // the component eases up from 0.94 scale + 0 opacity the moment it\n // mounts at its slot. The stable `slot-<id>` key means this fires\n // once — when the token first appears as the prose streams past it —\n // not on every later text append (the block re-derives, the Box\n // keeps its identity, so the animation doesn't replay).\n return (\n <Box\n key={`slot-${block.slotId}`}\n sx={{\n transformOrigin: 'center top',\n animation: 'uiSlotGrowIn 520ms cubic-bezier(0.16, 1, 0.3, 1) both',\n '@keyframes uiSlotGrowIn': {\n '0%': { opacity: 0, transform: 'scale(0.94)' },\n '100%': { opacity: 1, transform: 'scale(1)' },\n },\n '@media (prefers-reduced-motion: reduce)': { animation: 'none' },\n }}\n >\n <Renderer\n part={uiPart}\n message={message as Interaction}\n onGoing={onGoing ?? false}\n preview={partial}\n onLinkClicked={onLinkClicked}\n friendlyMode={friendlyMode}\n />\n </Box>\n );\n }\n return (\n <MarkdownExtended\n key={i}\n text={block.content ?? ''}\n partial={partial}\n sessionId={sessionId}\n onLinkClicked={onLinkClicked}\n />\n );\n })\n}\n\nexport default LlmResponseRender;\n","// React, the library's own barrel, and the EnvironmentContext stay static —\n// React is everywhere in the host app already, and the library barrel is\n// the small surface the LLM imports from `@envision/ui-library`. The three\n// big namespaces (@mui/material, @mui/icons-material, recharts) move into\n// `loadHeavyModules` so Vite code-splits them into chunks fetched only when\n// the first liveTsx block of a session mounts — the splash, login, and\n// dashboards list never pay that ~5 MB cost.\n//\n// VizLibrary used to live in this package and was statically spread into\n// every liveTsx scope. It now lives in dashboard-app (and is hand-curated\n// in the LLM template). Hosts inject it at startup via `extendDefaultScope`\n// + `extendModuleRegistry` — see dashboard-app/client/src/registerModules.ts.\nimport * as React from 'react';\nimport * as UILibrary from '../index'\nimport { useEnvironment as useEnvironmentDirect } from './EnvironmentContext';\n\n/**\n * Module registry mapping ES module specifiers to pre-loaded objects.\n * Used by the import pre-processor in LiveJsxBlock to resolve\n * `import { X } from 'module'` into scope bindings at runtime.\n *\n * Built lazily (inside the function) to avoid circular-dependency issues:\n * jsxScope.ts → ../index → ./LlmResponseRender → jsxScope.ts\n */\n\n\nconst GLOBAL_KEY = Symbol.for('envision:module-registry-extensions');\n\nfunction getRegistryExtensions(): Record<string, Record<string, unknown>> {\n const g = globalThis as Record<symbol, unknown>;\n if (!g[GLOBAL_KEY]) g[GLOBAL_KEY] = {};\n return g[GLOBAL_KEY] as Record<string, Record<string, unknown>>;\n}\n\n/**\n * Extend the module registry with additional exports.\n * Call once at app startup to inject components that were moved out of the library\n * but are still imported by LLM-generated code under `@envision/ui-library`.\n *\n * Extensions are stored on globalThis so they survive Vite HMR reloads\n * (module-level variables would be reset when this file is re-evaluated).\n *\n * @example\n * ```ts\n * import { extendModuleRegistry } from '@envision/ui-library/components';\n * import { ExamplePad, ExampleCardSketh, PrototypePad } from '@app/components/LlmComponents';\n *\n * extendModuleRegistry('@envision/ui-library', { ExamplePad, ExampleCardSketh, PrototypePad });\n * ```\n */\nexport function extendModuleRegistry(specifier: string, exports: Record<string, unknown>): void {\n const ext = getRegistryExtensions();\n ext[specifier] = {\n ...(ext[specifier] ?? {}),\n ...exports,\n };\n}\n\nconst SCOPE_KEY = Symbol.for('envision:default-scope-extensions');\n\nfunction getScopeExtensions(): Record<string, unknown> {\n const g = globalThis as Record<symbol, unknown>;\n if (!g[SCOPE_KEY]) g[SCOPE_KEY] = {};\n return g[SCOPE_KEY] as Record<string, unknown>;\n}\n\n/**\n * Extend the bare-identifier scope injected into every compiled liveTsx\n * block. Use this for components/values that the LLM is allowed to reference\n * without an explicit `import` (e.g. VizLibrary's Chart/Metric/ContainTable).\n *\n * Extensions are stored on globalThis so they survive Vite HMR reloads.\n *\n * @example\n * ```ts\n * import { extendDefaultScope } from '@envision/ui-library/components';\n * import * as VizLibrary from '@app/components/VizLibrary';\n * extendDefaultScope(VizLibrary);\n * ```\n */\nexport function extendDefaultScope(exports: Record<string, unknown>): void {\n const ext = getScopeExtensions();\n Object.assign(ext, exports);\n}\n\n/**\n * Cached single-flight promise for the heavy namespace imports. The first\n * call kicks off the chunk fetches; every subsequent call returns the same\n * resolved promise instantly. Survives Vite HMR because module-level let\n * is reset only when this file is re-evaluated, and that re-evaluation\n * naturally re-warms the cache on the next call.\n */\nlet heavyModulesPromise: Promise<{\n MuiMaterial: typeof import('@mui/material');\n Icons: typeof import('@mui/icons-material');\n Recharts: typeof import('recharts');\n}> | null = null;\n\nfunction loadHeavyModules() {\n if (!heavyModulesPromise) {\n heavyModulesPromise = Promise.all([\n import('@mui/material'),\n import('@mui/icons-material'),\n import('recharts'),\n ]).then(([MuiMaterial, Icons, Recharts]) => ({ MuiMaterial, Icons, Recharts }));\n }\n return heavyModulesPromise;\n}\n\nexport async function getModuleRegistry(): Promise<Record<string, Record<string, unknown>>> {\n const { MuiMaterial, Icons, Recharts } = await loadHeavyModules();\n\n const base: Record<string, Record<string, unknown>> = {\n 'react': { ...React, default: React } as Record<string, unknown>,\n '@mui/material': { ...MuiMaterial } as Record<string, unknown>,\n '@mui/material/styles': { ...MuiMaterial } as Record<string, unknown>,\n '@mui/icons-material': { ...Icons } as Record<string, unknown>,\n 'recharts': { ...Recharts } as Record<string, unknown>,\n '@envision/ui-library': {\n ...UILibrary,\n useEnvironment: useEnvironmentDirect,\n } as Record<string, unknown>,\n };\n\n for (const [specifier, exports] of Object.entries(getRegistryExtensions())) {\n base[specifier] = { ...(base[specifier] ?? {}), ...exports };\n }\n\n return base;\n}\n\n/**\n * Base scope injected into every compiled LiveJSX block.\n *\n * React is always present because Sucrase classic JSX emits\n * React.createElement() calls. JS globals are included because\n * `new Function` code does not see the outer lexical environment.\n */\nexport function getDefaultJsxScope(): Record<string, unknown> {\n const basics = {\n React,\n // JS globals (sandboxed code loses implicit access to these)\n console, Math, JSON, Date,\n Array, Object, parseInt, parseFloat,\n String, Number, Boolean, Map, Set,\n Promise, RegExp, Error, Symbol,\n setTimeout, clearTimeout, setInterval, clearInterval,\n encodeURIComponent, decodeURIComponent, encodeURI, decodeURI,\n isNaN, isFinite, undefined, NaN, Infinity,\n }\n return { ...basics, ...getScopeExtensions() };\n};\n","import React, { useMemo } from 'react';\nimport { Box, useTheme } from '@mui/material';\nimport { alpha } from '@mui/material/styles';\n\nfunction unitFromIndex(i: number): number {\n let s = ((i + 1) * 2654435761) >>> 0;\n s ^= s >>> 16;\n s = Math.imul(s, 2246822519) >>> 0;\n s ^= s >>> 13;\n s = Math.imul(s, 3266489917) >>> 0;\n return (s >>> 0) / 0xffffffff;\n}\n\nconst BAR_COUNT = 15;\n\nconst ChartSkeleton: React.FC = () => {\n const theme = useTheme();\n const isDark = theme.palette.mode === 'dark';\n\n const barBase = alpha(theme.palette.text.primary, isDark ? 0.10 : 0.08);\n const barHighlight = alpha(theme.palette.text.primary, isDark ? 0.22 : 0.18);\n const barStroke = alpha(theme.palette.text.primary, isDark ? 0.18 : 0.14);\n const lineStroke = alpha(theme.palette.text.primary, isDark ? 0.22 : 0.18);\n const axisStroke = alpha(theme.palette.text.primary, isDark ? 0.13 : 0.10);\n\n const { bars, linePoints } = useMemo(() => {\n const barHeights = Array.from({ length: BAR_COUNT }, (_, i) => 0.18 + unitFromIndex(i) * 0.78);\n const lineHeights = Array.from({ length: BAR_COUNT }, (_, i) => 0.18 + unitFromIndex(i + 100) * 0.78);\n const vbW = 360;\n const vbH = 160;\n const padX = 14;\n const padY = 12;\n const axisH = 18;\n const plotBottom = vbH - padY - axisH;\n const plotTop = padY + 6;\n const plotH = plotBottom - plotTop;\n const slot = (vbW - padX * 2) / BAR_COUNT;\n const barW = slot * 0.52;\n\n const barsLocal = barHeights.map((h, i) => {\n const hPx = h * plotH;\n const x = padX + i * slot + (slot - barW) / 2;\n const y = plotBottom - hPx;\n return { x, y, w: barW, h: hPx };\n });\n\n const linePointsLocal = lineHeights\n .map((h, i) => {\n const cx = padX + i * slot + slot / 2;\n const cy = plotBottom - h * plotH;\n return `${cx},${cy}`;\n })\n .join(' ');\n\n return { bars: barsLocal, linePoints: linePointsLocal };\n }, []);\n\n return (\n <Box\n sx={{\n width: '100%',\n height: '100%',\n minHeight: 180,\n borderRadius: 2,\n overflow: 'hidden',\n }}\n >\n <svg\n viewBox=\"0 0 360 160\"\n preserveAspectRatio=\"none\"\n aria-hidden\n style={{\n display: 'block',\n width: '100%',\n height: '100%',\n padding: 16,\n boxSizing: 'border-box',\n }}\n >\n <defs>\n <linearGradient id=\"barWave\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\" gradientUnits=\"userSpaceOnUse\">\n <stop offset=\"0%\" stopColor={barBase} />\n <stop offset=\"40%\" stopColor={barBase} />\n <stop offset=\"50%\" stopColor={barHighlight} />\n <stop offset=\"60%\" stopColor={barBase} />\n <stop offset=\"100%\" stopColor={barBase} />\n <animateTransform\n attributeName=\"gradientTransform\"\n type=\"translate\"\n from=\"-360 0\"\n to=\"360 0\"\n dur=\"1.6s\"\n repeatCount=\"indefinite\"\n />\n </linearGradient>\n </defs>\n <line\n x1=\"14\"\n y1=\"130\"\n x2=\"346\"\n y2=\"130\"\n stroke={axisStroke}\n strokeWidth=\"1\"\n strokeLinecap=\"square\"\n />\n {bars.map((b, i) => (\n <rect\n key={i}\n x={b.x}\n y={b.y}\n width={b.w}\n height={b.h}\n rx=\"2\"\n fill=\"url(#barWave)\"\n stroke={barStroke}\n strokeWidth=\"1.25\"\n />\n ))}\n <polyline\n fill=\"none\"\n stroke={lineStroke}\n strokeWidth=\"1.5\"\n strokeLinejoin=\"round\"\n strokeLinecap=\"round\"\n strokeDasharray=\"4 5\"\n points={linePoints}\n />\n </svg>\n </Box>\n );\n};\n\nexport default ChartSkeleton;\n","import React from 'react';\nimport { Box, Skeleton, Stack } from '@mui/material';\n\nexport interface MetricSkeletonProps {\n showIcon?: boolean;\n showChangeRow?: boolean;\n}\n\nconst MetricSkeleton: React.FC<MetricSkeletonProps> = ({\n showIcon = false,\n showChangeRow = true,\n}) => {\n return (\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1.5,\n p: 1.5,\n borderRadius: 2,\n bgcolor: 'action.hover',\n minWidth: 200,\n }}\n >\n {showIcon && (\n <Skeleton animation=\"wave\" variant=\"circular\" width={48} height={48} sx={{ flexShrink: 0 }} />\n )}\n <Box sx={{ flex: 1, minWidth: 0 }}>\n <Skeleton animation=\"wave\" variant=\"rounded\" width={120} height={26} />\n <Skeleton animation=\"wave\" variant=\"text\" width=\"92%\" sx={{ mt: 0.5 }} />\n <Skeleton animation=\"wave\" variant=\"text\" width=\"64%\" sx={{ mt: 0.25 }} />\n {showChangeRow && (\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: 'center', mt: 0.5 }}>\n <Skeleton animation=\"wave\" variant=\"rounded\" width={76} height={22} />\n <Skeleton animation=\"wave\" variant=\"text\" width={96} />\n </Stack>\n )}\n </Box>\n </Box>\n );\n};\n\nexport default MetricSkeleton;\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport MetricSkeleton from './MetricSkeleton';\n\nexport interface MetricGroupSkeletonProps {\n metrics?: number;\n showIcon?: boolean;\n showChangeRow?: boolean;\n}\n\nconst MetricGroupSkeleton: React.FC<MetricGroupSkeletonProps> = ({\n metrics = 4,\n showIcon = false,\n showChangeRow = true,\n}) => {\n return (\n <Box\n sx={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(200px, 1fr))',\n gap: 0.75,\n }}\n >\n {Array.from({ length: metrics }, (_, i) => (\n <MetricSkeleton key={i} showIcon={showIcon} showChangeRow={showChangeRow} />\n ))}\n </Box>\n );\n};\n\nexport default MetricGroupSkeleton;\n","import React from 'react';\nimport { Box, Skeleton, useTheme } from '@mui/material';\nimport { alpha } from '@mui/material/styles';\n\nexport interface TableSkeletonProps {\n columns?: number;\n rows?: number;\n}\n\nconst TableSkeleton: React.FC<TableSkeletonProps> = ({ columns = 5, rows = 10 }) => {\n const theme = useTheme();\n const colIndices = Array.from({ length: columns }, (_, i) => i);\n const rowIndices = Array.from({ length: rows }, (_, i) => i);\n\n const headerBg =\n theme.palette.mode === 'dark'\n ? alpha(theme.palette.grey[700], 0.55)\n : alpha(theme.palette.grey[300], 0.6);\n const headerBorder = alpha(theme.palette.divider, theme.palette.mode === 'dark' ? 0.9 : 1);\n const rowBorder = alpha(theme.palette.divider, 0.6);\n const headerSkeletonBg = alpha(\n theme.palette.common.white,\n theme.palette.mode === 'dark' ? 0.12 : 0.35,\n );\n\n return (\n <Box sx={{ borderRadius: 2, overflow: 'hidden', bgcolor: 'action.hover' }}>\n <table\n style={{\n width: '100%',\n borderCollapse: 'collapse',\n tableLayout: 'fixed',\n }}\n >\n <thead>\n <tr>\n {colIndices.map((c) => (\n <th\n key={c}\n style={{\n padding: '10px 12px',\n textAlign: 'left',\n backgroundColor: headerBg,\n borderBottom: `1px solid ${headerBorder}`,\n }}\n >\n <Skeleton\n animation=\"wave\"\n variant=\"rounded\"\n height={18}\n sx={{ bgcolor: headerSkeletonBg }}\n />\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rowIndices.map((r) => (\n <tr key={r}>\n {colIndices.map((c) => (\n <td\n key={c}\n style={{\n padding: '10px 12px',\n borderBottom: `1px solid ${rowBorder}`,\n }}\n >\n <Skeleton\n animation=\"wave\"\n variant=\"rounded\"\n height={16}\n width={`${55 + ((c + r * 3) % 5) * 8}%`}\n sx={{ maxWidth: '100%' }}\n />\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </Box>\n );\n};\n\nexport default TableSkeleton;\n","import React from 'react';\nimport { Skeleton } from '@mui/material';\n\nconst IFrameSkeleton: React.FC = () => {\n return (\n <Skeleton\n animation=\"wave\"\n variant=\"rounded\"\n height={400}\n sx={{\n width: '100%',\n borderRadius: 2,\n }}\n />\n );\n};\n\nexport default IFrameSkeleton;\n","// Placeholder shown by `LiveJsxBlock` while either of the following is\n// true:\n// • The block is `partial` — the closing ``` hasn't arrived yet.\n// • The lazy module registry chunk is still fetching on the first\n// liveTsx of a session (~50–200 ms).\n// In both cases the user sees the same \"Gerando visualização\" card; it\n// dissolves into the real React component the moment compileToComponent\n// can run.\n\nimport React from 'react';\nimport { Box, Stack, Typography, useTheme } from '@mui/material';\nimport AutoAwesomeIcon from '@mui/icons-material/AutoAwesome';\n\ninterface GeneratingVisualizationProps {\n /**\n * 0..1 fill progress. Drives the six bar buckets left-to-right —\n * each bar represents 1/6 of full. The dot tracer above ignores\n * progress on purpose (it traces the *target* outline so the bars\n * visibly \"catch up\" to it as ticks land).\n */\n progress?: number;\n bytes?: number;\n}\n\nconst COMPACT_THRESHOLDS: [number, string][] = [\n [1_000_000_000, 'Gb'],\n [1_000_000, 'Mb'],\n [1_000, 'Kb'],\n];\n\nconst GeneratingVisualization: React.FC<GeneratingVisualizationProps> = ({ progress = 0, bytes }) => {\n const theme = useTheme();\n const accent = theme.palette.primary.main;\n const accentLight = theme.palette.primary.softBg;\n const ink = theme.palette.text.secondary;\n\n // Six bars at varied target heights so a full chart reads as real\n // data rather than a uniform shimmer. The dot tracer (below) cycles\n // through these tops at full height. The bars themselves now fill\n // bucket-by-bucket driven by `progress`.\n const start = 10;\n const bars = [\n { x: 0, h: 50, acc: 0 },\n { x: 0, h: 65, acc: 0 },\n { x: 0, h: 60, acc: 0 },\n { x: 0, h: 64, acc: 0 },\n { x: 0, h: 58, acc: 0 },\n { x: 0, h: 70, acc: 0 },\n { x: 0, h: 65, acc: 0 },\n ];\n const width = (220/bars.length)*0.90;\n const dWidth = (220/bars.length)*0.80;\n const baseline = 78;\n const cycleSec = 2;\n\n let accOverall = 0;\n for (let i = 0; i < bars.length; i++) {\n accOverall += bars[i].h\n bars[i].acc = accOverall\n bars[i].x = start + (i*width);\n }\n\n\n function formatCompact(value: number, decimals = 2, addSuffix: boolean = true): string {\n const abs = Math.abs(value);\n for (const [threshold, suffix] of COMPACT_THRESHOLDS) {\n if (abs >= threshold) {\n return (value / threshold).toFixed(decimals) + (addSuffix ? suffix : \"\");\n }\n }\n return value.toFixed(0) + \"b\";\n }\n\n // Map progress to per-bar fill. Bar `i` starts filling at\n // progress = i/N, completes at (i+1)/N. Clamped to [0, 1] so a\n // partial-bar slot stops growing once full and later bars stay\n // empty until their turn.\n const allHeightsSum = bars.reduce((sum, b) => sum + b.h, 0);\n const progressHeight = progress * allHeightsSum;\n const barFill = (i: number) => {\n return bars[i].h - Math.max(bars[i].acc - progressHeight, 0);\n }\n\n return (\n <Box\n sx={{\n width: 220,\n height: 150,\n borderRadius: 1.5,\n border: '1px solid',\n borderColor: 'divider',\n bgcolor: 'action.hover',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 1,\n px: 0.5,\n py:0.5,\n my: 1,\n }}\n >\n <svg width={220} height={88} viewBox=\"0 0 220 88\" style={{ display: 'block' }}>\n {/* Baseline */}\n <line\n x1={0}\n y1={baseline}\n x2={220}\n y2={baseline}\n stroke={theme.palette.divider}\n strokeWidth={1}\n />\n {/* Bars — progress-driven fill, CSS transition smooths\n each step between tick arrivals. Browsers that fully\n support animating SVG presentation attrs via CSS\n (Chrome/Firefox/Safari 14+) get the transition; the\n rest still see the bars jump per tick — acceptable\n fallback since ticks land ~every 100ms anyway. */}\n {bars.map((bar, i) => {\n const diff = baseline - bar.h;\n return (\n <rect\n key={i}\n x={bar.x}\n y={diff}\n width={dWidth}\n height={bar.h}\n fill={accentLight}\n rx={3}\n opacity={0.75}\n style={{ transition: 'height 250ms ease-out, y 250ms ease-out' }}\n />\n );\n })}\n {bars.map((bar, i) => {\n const fill = Math.max(barFill(i),0);\n const diff = baseline - fill;\n return (\n <rect\n key={i}\n x={bar.x}\n y={diff}\n width={dWidth}\n height={fill} \n fill={accent}\n rx={3}\n opacity={0.75}\n style={{ transition: 'height 250ms ease-out, y 250ms ease-out' }}\n />\n );\n })}\n {/* \"Drawing pen\" — a small dot tracing along the bar tops */}\n <circle r={2.5} fill={accent}>\n <animate\n attributeName=\"cx\"\n values=\"14; 40; 66; 92; 118; 144; 14\"\n keyTimes=\"0; 0.16; 0.32; 0.48; 0.64; 0.80; 1\"\n dur={`${cycleSec}s`}\n repeatCount=\"indefinite\"\n />\n <animate\n attributeName=\"cy\"\n values={`${baseline - 32}; ${baseline - 50}; ${baseline - 26}; ${baseline - 44}; ${baseline - 58}; ${baseline - 36}; ${baseline - 32}`}\n keyTimes=\"0; 0.16; 0.32; 0.48; 0.64; 0.80; 1\"\n dur={`${cycleSec}s`}\n repeatCount=\"indefinite\"\n />\n </circle>\n </svg>\n <Stack sx={{textAlign:'center'}}>\n <Stack direction={\"row\"} gap={0.5} sx={{display:\"inline-flex\", alignItems:\"center\", flexWrap:\"nowrap\"}}>\n <AutoAwesomeIcon sx={{ fontSize: 13, color: accent }} />\n <Typography\n variant=\"caption\"\n sx={{\n color: ink,\n fontSize: 11.5,\n letterSpacing: 0.2,\n // Subtle pulse on the label so the card feels alive\n // even between bar cycles.\n animation: 'gv-pulse 2s ease-in-out infinite',\n '@keyframes gv-pulse': {\n '0%, 100%': { opacity: 0.6 },\n '50%': { opacity: 1 },\n },\n }}\n >\n Gerando visualização…\n </Typography>\n </Stack>\n <Typography\n variant=\"caption\"\n sx={{\n color: ink,\n fontSize: 9.5,\n letterSpacing: 0.2,\n // Subtle pulse on the label so the card feels alive\n // even between bar cycles.\n animation: 'gv-pulse 2s ease-in-out infinite',\n '@keyframes gv-pulse': {\n '0%, 100%': { opacity: 0.6 },\n '50%': { opacity: 1 },\n },\n }}\n >\n {formatCompact(bytes ?? 0)}\n </Typography> \n </Stack>\n </Box>\n );\n};\n\nexport default GeneratingVisualization;\n","import React, { useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { getDefaultJsxScope, getModuleRegistry } from './jsxScope';\nimport { ThemeProvider } from '@emotion/react';\nimport { Box, CssBaseline, useTheme } from '@mui/material';\nimport { MarkdownExtended } from '..';\nimport ChartSkeleton from '../Library/VizLibrary/Skeletons/ChartSkeleton';\nimport MetricSkeleton from '../Library/VizLibrary/Skeletons/MetricSkeleton';\nimport MetricGroupSkeleton from '../Library/VizLibrary/Skeletons/MetricGroupSkeleton';\nimport TableSkeleton from '../Library/VizLibrary/Skeletons/TableSkeleton';\nimport IFrameSkeleton from '../Library/VizLibrary/Skeletons/IFrameSkeleton';\nimport GeneratingVisualization from './GeneratingVisualization';\n\n/**\n * Server-emitted sentinel inside a ```liveTsx fence that signals the\n * block's content should be abandoned (compile failed server-side,\n * retry incoming). LiveJsxBlock renders nothing when present — the\n * next ```liveTsx fence opens a fresh block. Keep in sync with the\n * .NET WSServer's JsxLiveStreamProcessor.\n */\nexport const LIVE_TSX_INVALID_SENTINEL = '<!--liveTsx:invalid-->';\n\ninterface LiveJsxBlockProps {\n /**\n * Server-compiled JS function body. The .NET WSServer's\n * `JsxLiveStreamProcessor` runs every closing ```liveTsx fence through\n * the tsx-sidecar's `build` method (type-check + esbuild transform +\n * scope-binding rewrite) before it reaches the chat markdown. By the\n * time we see it here, `code` is already valid JS of the shape:\n *\n * var React = __scope['react'];\n * var Box = __scope['@mui/material'].Box;\n * function MyComponent() { return React.createElement(Box, ...); }\n * return MyComponent;\n *\n * — exactly what `new Function('__scope', code)(scope)` needs to\n * return the React component. No sucrase, no regex import rewriter,\n * no main-thread compile pause per block.\n */\n code: string;\n /** Extra scope entries merged on top of the default scope */\n scope?: Record<string, unknown>;\n partial: boolean;\n /**\n * 0..1 progress hint for partial blocks. Surfaces in the placeholder\n * (`GeneratingVisualization`) as filled bar buckets — see parseBlocks\n * for the tick-marker → fraction derivation.\n */\n progress?: number;\n bytes?: number;\n}\n\n// ---------------------------------------------------------------------------\n// Compilation\n// ---------------------------------------------------------------------------\n\n/**\n * Pre-flight scan: every `__scope[\"specifier\"]` and `__scope[\"specifier\"].Prop`\n * access in the bundled JS is matched against the runtime scope BEFORE the\n * function is invoked. Missing modules and missing named exports get\n * collected into a single human-readable error message so the user sees\n * \"LiveTsx: missing 'Chart' on '@envision/ui-library'\" instead of the\n * downstream \"Cannot read properties of undefined\" / \"Element type is\n * invalid\" cascade that's the actual symptom.\n *\n * Hosts wire missing modules through `extendModuleRegistry(specifier, exports)`.\n */\nfunction checkScopeBindings(\n serverJs: string,\n scope: Record<string, unknown>,\n): Error | null {\n // Module bindings: `__scope[\"mod\"]` (no property access) — typical first line\n // of a compiled snippet, e.g. `var UILibrary = __scope[\"@envision/ui-library\"];`.\n // Property bindings: `__scope[\"mod\"].Prop` — e.g. `var Chart = __scope[\"@envision/ui-library\"].Chart;`.\n const accessRe = /__scope\\[([\"'`])([^\"'`\\]]+)\\1\\](?:\\.([A-Za-z_$][\\w$]*))?/g;\n\n const missingModules = new Set<string>();\n const missingExports = new Map<string, Set<string>>();\n let match: RegExpExecArray | null;\n\n while ((match = accessRe.exec(serverJs)) !== null) {\n const specifier = match[2];\n const propName = match[3];\n\n if (!(specifier in scope)) {\n missingModules.add(specifier);\n continue;\n }\n if (propName) {\n const mod = scope[specifier] as Record<string, unknown> | null | undefined;\n if (mod == null || !(propName in mod)) {\n if (!missingExports.has(specifier)) missingExports.set(specifier, new Set());\n missingExports.get(specifier)!.add(propName);\n }\n }\n }\n\n if (missingModules.size === 0 && missingExports.size === 0) return null;\n\n const lines: string[] = ['LiveTsx: bundled JS references bindings that are not in the scope.'];\n if (missingModules.size > 0) {\n lines.push('');\n lines.push('Unregistered modules:');\n for (const m of missingModules) lines.push(` • \"${m}\"`);\n lines.push(' Register via extendModuleRegistry(\"<specifier>\", { ...exports }) before mounting the chat.');\n }\n if (missingExports.size > 0) {\n lines.push('');\n lines.push('Missing named exports:');\n for (const [mod, props] of missingExports) {\n lines.push(` • \"${mod}\" → ${Array.from(props).map(p => `'${p}'`).join(', ')}`);\n }\n lines.push(' Add these via extendModuleRegistry(\"' + Array.from(missingExports.keys())[0] + '\", { Chart, Metric, … }).');\n }\n return new Error(lines.join('\\n'));\n}\n\n/**\n * Realize the server-compiled function body into a React component by\n * wrapping it as `function(__scope) { … }` and immediately calling with\n * the runtime scope. The body is responsible for the `return Component;`\n * at the bottom (the sidecar always appends it).\n */\nfunction compileToComponent(\n serverJs: string,\n scope: Record<string, unknown>,\n): React.ComponentType {\n const bindingError = checkScopeBindings(serverJs, scope);\n if (bindingError) throw bindingError;\n // eslint-disable-next-line no-new-func\n const factory = new Function('__scope', serverJs);\n return factory(scope);\n}\n\n// ---------------------------------------------------------------------------\n// Skeleton detection for partial code blocks\n// ---------------------------------------------------------------------------\n//\n// A `partial: true` render today should be rare — the server only emits\n// the markdown fence after `build` completes, so by the time the client\n// has any content it's already valid compiled JS. The partial branch\n// stays for two cases: (a) historical session messages stored mid-fence\n// before Phase 2; (b) test surfaces that mount LiveJsxBlock directly with\n// in-flight TSX. Both render as a Skeleton, never as executable code.\n\nconst SKELETON_TAG_RE = /<(chart|containtable|metricgroup|metric|iframe)\\b/i;\n\nconst SKELETON_MAP: Record<string, React.FC> = {\n chart: ChartSkeleton,\n containtable: TableSkeleton,\n metricgroup: MetricGroupSkeleton,\n metric: MetricSkeleton,\n iframe: IFrameSkeleton,\n};\n\nfunction detectSkeleton(code: string): React.FC | null {\n const match = SKELETON_TAG_RE.exec(code);\n if (!match) return null;\n const tag = match[1].toLowerCase();\n if (tag === 'metric' && /metricgroup/i.test(code)) return MetricGroupSkeleton;\n return SKELETON_MAP[tag] ?? null;\n}\n\n// ---------------------------------------------------------------------------\n// Error boundary\n// ---------------------------------------------------------------------------\n\nexport class JsxErrorBoundary extends React.Component<\n { children: React.ReactNode; fallback: (error: Error) => React.ReactNode },\n { error: Error | null }\n> {\n state: { error: Error | null } = { error: null };\n\n static getDerivedStateFromError(error: Error) {\n return { error };\n }\n\n componentDidCatch(error: Error, info: React.ErrorInfo) {\n console.error('[LiveJsxBlock] Render error:', error, info);\n }\n\n render() {\n if (this.state.error) return this.props.fallback(this.state.error);\n return this.props.children;\n }\n}\n\n// ---------------------------------------------------------------------------\n// LiveJsxBlock\n// ---------------------------------------------------------------------------\n\nconst LiveJsxBlock: React.FC<LiveJsxBlockProps> = ({ code, partial, scope: extraScope, progress = 0, bytes=0 }) => {\n // `__scope` for the compiled IIFE merges:\n // • The module registry — `{ 'react': React, '@mui/material': {...}, ... }`\n // the server's IIFE indexes by specifier (`__scope['@mui/material'].Box`).\n // • The default JSX scope — `{ React, useState, ... }` for any code\n // paths that reference top-level identifiers without an import.\n // • Any caller-provided extras (host injections).\n //\n // The module registry is loaded lazily on first liveTsx mount — the\n // initial dashboard-app bundle excludes the ~5 MB of @mui/material,\n // @mui/icons-material, recharts namespaces, and only fetches them when\n // an LLM-emitted block actually needs to render. `getModuleRegistry`'s\n // internal promise cache means subsequent blocks in the same session\n // resolve synchronously.\n const [registry, setRegistry] = useState<Record<string, Record<string, unknown>> | null>(null);\n useEffect(() => {\n let cancelled = false;\n getModuleRegistry().then((r) => {\n if (!cancelled) setRegistry(r);\n }).catch((err) => {\n console.error('[LiveJsxBlock] Failed to load module registry:', err);\n });\n return () => { cancelled = true; };\n }, []);\n\n const scope = useMemo(() => {\n if (!registry) return null;\n const defaults = getDefaultJsxScope();\n return { ...registry, ...defaults, ...(extraScope ?? {}) };\n }, [registry, extraScope]);\n\n const result = useMemo(() => {\n if (partial || !scope) return { Component: null, error: null };\n try {\n const Component = compileToComponent(code, scope);\n return { Component, error: null };\n } catch (err) {\n return {\n Component: null,\n error: err instanceof Error ? err : new Error(String(err)),\n };\n }\n }, [code, partial, scope]);\n\n const errorFallback = (err: Error, isPartial?: boolean) => (\n <div style={{\n border: `1px solid ${isPartial ? 'lightgrey' : '#f44336'}`,\n borderRadius: 6,\n padding: '12px 16px',\n margin: '8px 0',\n backgroundColor: isPartial ? '#222' : 'rgba(244,67,54,0.06)',\n }}>\n {/* `whiteSpace: pre-wrap` so multi-line diagnostic messages (e.g.\n the registry pre-flight's bulleted list of missing modules)\n render with their original line breaks instead of collapsing\n into a single illegible run. */}\n <div style={{\n color: isPartial ? 'grey' : '#f44336',\n fontSize: '0.85em',\n fontWeight: 500,\n marginBottom: 6,\n whiteSpace: 'pre-wrap',\n fontFamily: err.message.includes('\\n') ? 'monospace' : undefined,\n }}>\n JSX render error: {err.message}\n </div>\n <pre style={{ fontSize: '0.8em', overflow: 'auto', margin: 0, opacity: 0.7, whiteSpace: 'pre-wrap' }}>\n <code>{code}</code>\n </pre>\n </div>\n );\n\n const theme = useTheme();\n\n // Phase machine for the skeleton → final handoff. Without this,\n // the skeleton unmounts and the (usually taller) final pops into\n // place — the surrounding layout jumps and the user sees a hard\n // swap. By keeping the wrapper persistent and overlapping the\n // two children during the cross-fade window, the final reads as\n // \"growing out of\" the skeleton rather than replacing it.\n // • partial — only the skeleton is mounted; wrapper height\n // is the skeleton's natural height.\n // • arriving — both children are mounted, stacked (skeleton\n // absolutely positioned over the final), opacity\n // crosses 1→0 / 0→1, the wrapper's inline height\n // animates from H1 (captured skeleton height) to\n // H2 (measured final height).\n // • final — only the compiled component remains; inline\n // height/transition are cleared so the layout can\n // respond to subsequent content changes normally.\n type Phase = 'partial' | 'arriving' | 'final';\n const isPartial = partial || !scope;\n const isError = !isPartial && !!result.error;\n const [phase, setPhase] = useState<Phase>(() => (isPartial ? 'partial' : 'final'));\n const wrapperRef = useRef<HTMLDivElement>(null);\n const finalRef = useRef<HTMLDivElement>(null);\n\n // Trigger partial → arriving (and handle the reverse, e.g. if a\n // session message flips back to partial). `useLayoutEffect` so\n // we capture H1 *before* the browser paints the swap and never\n // see a frame where the wrapper has already collapsed.\n useLayoutEffect(() => {\n if (phase === 'partial' && !isPartial && !isError) {\n const wrapper = wrapperRef.current;\n const H1 = wrapper?.offsetHeight ?? 0;\n if (wrapper && H1 > 0) {\n wrapper.style.height = `${H1}px`;\n }\n setPhase('arriving');\n } else if (phase !== 'partial' && isPartial) {\n const wrapper = wrapperRef.current;\n if (wrapper) {\n wrapper.style.height = '';\n wrapper.style.transition = '';\n }\n setPhase('partial');\n }\n }, [phase, isPartial, isError]);\n\n // Once arriving, measure the final's natural height and animate\n // the wrapper from H1 → H2 over the same window as the opacity\n // cross-fade. The setTimeout cleanup matches the transition\n // duration plus a small buffer; on unmount or phase change the\n // pending callback is cancelled so we don't leak state writes.\n useLayoutEffect(() => {\n if (phase !== 'arriving') return;\n const wrapper = wrapperRef.current;\n const final = finalRef.current;\n if (!wrapper || !final) return;\n\n const H2 = final.offsetHeight;\n // Force reflow so the H1 inline value committed in the\n // previous effect is actually the transition's starting\n // computed value, not the new H2.\n void wrapper.offsetHeight;\n wrapper.style.transition = 'height 1500ms cubic-bezier(0.16, 1, 0.3, 1)';\n wrapper.style.height = `${H2}px`;\n\n const t = window.setTimeout(() => {\n const w = wrapperRef.current;\n if (w) {\n w.style.height = '';\n w.style.transition = '';\n }\n setPhase('final');\n }, 1500);\n return () => window.clearTimeout(t);\n }, [phase]);\n\n // Sentinel from the server cancels a partial block — keeps the\n // placeholder from animating forever when the build retry is about\n // to emit a fresh fence.\n if (code.includes(LIVE_TSX_INVALID_SENTINEL)) return null;\n\n // Compile errors skip the cross-fade and render the fallback\n // directly. The error path is rare and benefits more from being\n // immediate (so the user sees the diagnostic right away) than\n // from being eased in.\n if (isError && result.error) return errorFallback(result.error, false);\n\n // We prefer a shape-specific skeleton (ChartSkeleton/MetricSkeleton/\n // etc.) when `detectSkeleton` can read the intent from the partial\n // code; otherwise show the animated \"Gerando visualização\" card.\n const SkeletonComponent = detectSkeleton(code);\n const skeletonChild = SkeletonComponent\n ? <SkeletonComponent />\n : <GeneratingVisualization progress={progress} bytes={bytes} />;\n\n const finalChild = (\n <ThemeProvider theme={theme}>\n <CssBaseline />\n <JsxErrorBoundary fallback={errorFallback}>\n {/* `data-live-jsx-content` marks this subtree so the\n * streaming-arrival animation in CurrentMessage can\n * exclude it. The wrapper Box has stable identity\n * across `code` / `scope` updates (it lives in\n * LiveJsxBlock, not inside the compiled Component),\n * so the inner children don't replay the fade. */}\n <Box data-live-jsx-content=\"\">\n {result.Component\n ? <result.Component />\n : <MarkdownExtended text={`\\`\\`\\`tsx\\n${code}\\`\\`\\``} sessionId={''} />}\n </Box>\n </JsxErrorBoundary>\n </ThemeProvider>\n );\n\n return (\n <Box\n ref={wrapperRef}\n sx={{\n position: 'relative',\n overflow: 'hidden',\n '@keyframes liveJsxBlockGrowIn': {\n '0%': { opacity: 0, transform: 'scale(0.94)' },\n '100%': { opacity: 1, transform: 'scale(1)' },\n },\n }}\n >\n {(phase === 'partial' || phase === 'arriving') && (\n <div\n key=\"skeleton-layer\"\n style={{\n // Absolute during arriving so the wrapper's\n // height is controlled by the inline px value\n // (animating H1 → H2) and not by whichever\n // child happens to be taller this frame.\n position: phase === 'arriving' ? 'absolute' : 'relative',\n top: 0, left: 0, right: 0,\n opacity: phase === 'arriving' ? 0 : 1,\n transform: phase === 'arriving' ? 'scale(0.97)' : 'scale(1)',\n transformOrigin: 'center top',\n transition: phase === 'arriving'\n ? 'opacity 360ms ease-out, transform 520ms cubic-bezier(0.4, 0, 0.6, 1)'\n : 'none',\n pointerEvents: phase === 'arriving' ? 'none' : 'auto',\n }}\n >\n {skeletonChild}\n </div>\n )}\n {(phase === 'arriving' || phase === 'final') && (\n <Box\n key=\"final-layer\"\n ref={finalRef}\n sx={{\n animation: phase === 'arriving'\n ? 'liveJsxBlockGrowIn 1000ms 0ms cubic-bezier(0.16, 1, 0.3, 1) both'\n : 'none',\n '@media (prefers-reduced-motion: reduce)': {\n animation: 'none',\n },\n }}\n >\n {finalChild}\n </Box>\n )}\n </Box>\n );\n};\n\nexport default LiveJsxBlock;\n","// MUI theme for the v2 layout. The internal token table (formerly the\n// public V2_TOKENS object) is now embedded directly into the MUI theme via\n// module augmentation, so consumers read `theme.palette.surface.raised`,\n// `theme.palette.border.soft`, `theme.typography.fontFamilyMono`, etc.\n// instead of importing a parallel constants object.\n\nimport { createTheme, type ThemeOptions } from '@mui/material/styles';\n\n// Internal token table — values that fed the previous V2_TOKENS export.\n// Kept in this module (not exported) as the single source of truth wired\n// into the MUI theme below. Update colors/sizes here.\nexport const themeTokens = {\n // Surfaces (low → high)\n bgCanvas: '#0a0a0b',\n bgCanvasTransparency: '#0a0a0bDD',\n bgPanel: '#111114',\n bgRaised: '#17171b',\n bgHover: '#1d1d22',\n\n // Borders\n border: '#26262d',\n borderSoft: '#1f1f25',\n\n divider: '#161616',\n\n // Text\n text: '#ececef',\n textDim: '#8e8e96',\n textFaint: '#5a5a62',\n\n // Brand / status\n accent: '#e0a458', // amber — primary\n accentDim: '#7a5a30',\n accentSoft: 'rgba(224,164,88,0.14)',\n good: '#5eb88a',\n bad: '#d97a7a', // coral — secondary\n\n // Typography\n font: '\"Inter\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif',\n mono: '\"JetBrains Mono\", ui-monospace, SFMono-Regular, Menlo, monospace',\n\n // Layout primitives\n radius: 10,\n radiusSm: 6,\n radiusLg: 12,\n} as const;\n\n// ---- MUI module augmentation ---------------------------------------------\n// Extends the MUI Theme so v2-specific surfaces, borders, brand soft tints,\n// the mono font family, and small/large radii are first-class theme reads.\n//\n// surface.chrome / surface.chromePanel are OPTIONAL inverted-region tokens\n// (a dark app-shell/sidebar over a light canvas). This dark theme leaves them\n// unset; light consumer themes (e.g. examples/demo's limeTheme) populate them.\n// Optional keeps every existing theme — including this one — valid.\n\ndeclare module '@mui/material/styles' {\n interface Palette {\n surface: { panel: string; raised: string; hover: string; chrome?: string; chromePanel?: string };\n border: { default: string; soft: string };\n }\n interface PaletteOptions {\n surface?: { panel: string; raised: string; hover: string; chrome?: string; chromePanel?: string };\n border?: { default: string; soft: string };\n }\n interface PaletteColor {\n softBg?: string;\n }\n interface SimplePaletteColorOptions {\n softBg?: string;\n }\n interface TypographyVariants {\n fontFamilyMono: string;\n }\n interface TypographyVariantsOptions {\n fontFamilyMono?: string;\n }\n}\n\n// `Shape` lives in @mui/system; augmenting it there flows through to\n// `theme.shape.radiusSm` / `theme.shape.radiusLg` in @mui/material.\ndeclare module '@mui/system' {\n interface Shape {\n radiusSm: number;\n radiusLg: number;\n }\n}\n\n// --------------------------------------------------------------------------\n\nconst themeOptions: ThemeOptions = {\n palette: {\n mode: 'dark',\n primary: {\n main: themeTokens.accent,\n dark: themeTokens.accentDim,\n softBg: themeTokens.accentSoft,\n contrastText: '#1a1208',\n },\n secondary: {\n // Coral — used wherever the design previously reached for the\n // `bad` token (negative trend chips, etc.). This is distinct\n // from `error.main`, which keeps MUI's default red for genuine\n // error states (matching the v1 palette).\n main: themeTokens.bad,\n },\n success: {\n main: themeTokens.good,\n },\n // `error.main` intentionally inherits MUI's default (#f44336) so\n // error semantics stay distinguishable from the secondary brand.\n background: {\n default: themeTokens.bgCanvas,\n paper: themeTokens.bgPanel,\n },\n text: {\n primary: themeTokens.text,\n secondary: themeTokens.textDim,\n disabled: themeTokens.textFaint,\n },\n divider: themeTokens.divider,\n surface: {\n panel: themeTokens.bgPanel,\n raised: themeTokens.bgRaised,\n hover: themeTokens.bgHover,\n },\n border: {\n default: themeTokens.border,\n soft: themeTokens.borderSoft,\n },\n },\n shape: {\n borderRadius: themeTokens.radius,\n radiusSm: themeTokens.radiusSm,\n radiusLg: themeTokens.radiusLg,\n },\n typography: {\n // Heading variants (h1..h6) are intentionally NOT overridden so\n // MUI's default rem-based scale applies — that keeps content\n // surfaces like MetricCard (which renders KPI values via\n // <Typography variant=\"h4\">) at a readable size while the v2\n // chrome uses explicit sx fontSize for fine control.\n fontFamily: themeTokens.font,\n fontFamilyMono: themeTokens.mono,\n fontSize: 13,\n body1: { fontSize: 13, lineHeight: 1.55 },\n body2: { fontSize: 12, lineHeight: 1.5 },\n caption: { fontSize: 11, color: themeTokens.textDim },\n button: { textTransform: 'none', fontWeight: 500 },\n },\n components: {\n MuiCssBaseline: {\n styleOverrides: {\n 'html, body': {\n backgroundColor: themeTokens.bgCanvas,\n color: themeTokens.text,\n fontFamily: themeTokens.font,\n },\n '*': {\n boxSizing: 'border-box',\n },\n 'code, pre, .mono': {\n fontFamily: themeTokens.mono,\n },\n },\n },\n MuiButton: {\n defaultProps: { disableElevation: true },\n styleOverrides: {\n root: {\n borderRadius: themeTokens.radiusSm,\n textTransform: 'none',\n fontWeight: 500,\n },\n },\n },\n MuiChip: {\n styleOverrides: {\n root: {\n backgroundColor: themeTokens.bgRaised,\n border: `1px solid ${themeTokens.border}`,\n color: themeTokens.textDim,\n fontSize: 11,\n height: 24,\n borderRadius: 999,\n },\n },\n },\n MuiIconButton: {\n styleOverrides: {\n root: {\n color: themeTokens.textDim,\n borderRadius: themeTokens.radiusSm,\n '&:hover': { backgroundColor: themeTokens.bgRaised },\n },\n },\n },\n MuiPaper: {\n styleOverrides: {\n root: {\n backgroundImage: 'none',\n backgroundColor: themeTokens.bgPanel,\n border: `1px solid ${themeTokens.border}`,\n },\n },\n },\n MuiDivider: {\n styleOverrides: {\n root: { borderColor: themeTokens.border },\n },\n },\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n backgroundColor: themeTokens.bgRaised,\n border: `1px solid ${themeTokens.border}`,\n color: themeTokens.text,\n fontSize: 11,\n },\n },\n },\n MuiTextField: {\n defaultProps: { size: 'small', variant: 'outlined' },\n },\n MuiOutlinedInput: {\n styleOverrides: {\n root: {\n backgroundColor: themeTokens.bgRaised,\n fontSize: 12,\n '& fieldset': { borderColor: themeTokens.border },\n '&:hover fieldset': { borderColor: themeTokens.borderSoft },\n },\n },\n },\n MuiList: {\n styleOverrides: {\n root: { padding: 0 },\n },\n },\n MuiListItemButton: {\n styleOverrides: {\n root: {\n borderRadius: themeTokens.radiusSm,\n '&.Mui-selected': {\n backgroundColor: themeTokens.bgHover,\n color: themeTokens.accent,\n '& .MuiListItemIcon-root': { color: themeTokens.accent },\n '&:hover': { backgroundColor: themeTokens.bgHover },\n },\n '&:hover': { backgroundColor: themeTokens.bgRaised },\n },\n },\n },\n MuiAppBar: {\n styleOverrides: {\n root: {\n backgroundColor: themeTokens.bgPanel,\n borderBottom: `1px solid ${themeTokens.border}`,\n boxShadow: 'none',\n },\n },\n },\n },\n};\n\nexport const v2Theme = createTheme(themeOptions);\nexport type V2Theme = typeof v2Theme;\n","// Default chart palette for the v2 layout — five distinct, harmonious\n// primer hues. Combined with `ChartCardDefaultsContext.rotateBasePerChart`\n// each ChartCard mounted under the provider draws a different primer\n// color in round-robin order, and `monoShadePerCategory` derives shades\n// of that primer for single-series bars / slices.\n//\n// Order matters — the first chart in the dashboard gets `[0]` (amber),\n// the next `[1]` (blue), and so on. The order leads with the v2 accent\n// so the most prominent first chart anchors visually.\n//\n// Note: kept as a standalone export rather than living on the MUI theme,\n// because chart consumers iterate over the array (round-robin), and\n// theme reads like `theme.palette.primary.main` only expose single\n// values, not ordered sequences.\n\nexport const V2_CHART_PALETTE: readonly string[] = [\n '#e0a458', // amber (primary accent)\n '#7d9bd1', // muted blue\n '#9c8bb5', // muted lavender\n '#5eb88a', // green\n '#d97a7a', // coral\n] as const;\n","// Reusable sx fragments for v2 components.\n// Most styling flows through the MUI theme; these are the spots where the\n// design uses a recurring shape that's easier to drop in than to re-derive\n// from scratch (chips, icon-only buttons, raised cards, monospace meta lines).\n//\n// Each fragment is a theme callback so it reads palette/typography from the\n// active theme (no parallel token import). `<Box sx={v2Chip} />` still works\n// because MUI's sx accepts function form.\n\nimport type { SxProps, Theme } from '@mui/material/styles';\n\nexport const v2Chip: SxProps<Theme> = (theme) => ({\n backgroundColor: theme.palette.surface.raised,\n border: `1px solid ${theme.palette.border.default}`,\n color: theme.palette.text.secondary,\n fontSize: 11,\n px: 1.25,\n py: 0.5,\n borderRadius: 999,\n cursor: 'pointer',\n fontFamily: theme.typography.fontFamily,\n display: 'inline-flex',\n alignItems: 'center',\n gap: 0.5,\n lineHeight: 1.2,\n transition: 'background-color .12s, color .12s',\n '&:hover': { backgroundColor: theme.palette.surface.hover, color: theme.palette.text.primary },\n});\n\nexport const v2IconBtn: SxProps<Theme> = (theme) => ({\n background: 'transparent',\n border: 'none',\n color: theme.palette.text.secondary,\n cursor: 'pointer',\n p: 0.75,\n borderRadius: `${theme.shape.radiusSm}px`,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n '&:hover': { backgroundColor: theme.palette.surface.raised, color: theme.palette.text.primary },\n});\n\nexport const v2Card: SxProps<Theme> = (theme) => ({\n backgroundColor: theme.palette.background.paper,\n border: `1px solid ${theme.palette.border.default}`,\n borderRadius: `${theme.shape.borderRadius}px`,\n});\n\nexport const v2MonoMeta: SxProps<Theme> = (theme) => ({\n fontFamily: theme.typography.fontFamilyMono,\n fontSize: 10.5,\n color: theme.palette.text.disabled,\n});\n\nexport const v2SectionLabel: SxProps<Theme> = (theme) => ({\n fontSize: 10,\n color: theme.palette.text.disabled,\n textTransform: 'uppercase',\n letterSpacing: 0.6,\n px: 1,\n py: 0.75,\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n});\n","// Tiny SVG sparkline used by DashboardsDrawerV2 + KPI rows.\n// Same algorithm as the design canvas reference.\n\nimport React, { useId } from 'react';\nimport { useTheme } from '@mui/material/styles';\n\nexport interface SparklineProps {\n data: number[];\n color?: string;\n width?: number;\n height?: number;\n fill?: boolean;\n strokeWidth?: number;\n}\n\nexport const Sparkline: React.FC<SparklineProps> = ({\n data,\n color,\n width = 100,\n height = 28,\n fill = true,\n strokeWidth = 1.5,\n}) => {\n const theme = useTheme();\n const resolvedColor = color ?? theme.palette.primary.main;\n const gradientId = useId();\n if (!data || data.length === 0) return null;\n\n const max = Math.max(...data);\n const min = Math.min(...data);\n const range = max - min || 1;\n const dx = data.length > 1 ? width / (data.length - 1) : width;\n\n const pts = data.map((v, i) => [\n i * dx,\n height - ((v - min) / range) * (height - 4) - 2,\n ]);\n\n const linePath = pts\n .map((p, i) => (i === 0 ? 'M' : 'L') + p[0].toFixed(1) + ',' + p[1].toFixed(1))\n .join(' ');\n const areaPath = `${linePath} L${width},${height} L0,${height} Z`;\n\n return (\n <svg width={width} height={height} style={{ display: 'block' }} aria-hidden>\n {fill && (\n <>\n <defs>\n <linearGradient id={gradientId} x1=\"0\" x2=\"0\" y1=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={resolvedColor} stopOpacity={0.25} />\n <stop offset=\"100%\" stopColor={resolvedColor} stopOpacity={0} />\n </linearGradient>\n </defs>\n <path d={areaPath} fill={`url(#${gradientId})`} />\n </>\n )}\n <path\n d={linePath}\n stroke={resolvedColor}\n strokeWidth={strokeWidth}\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n};\n","// AppShellV2 — top-level layout for v2 routes. Renders the top bar, the\n// 48px view rail, and an <Outlet /> that hosts the active route's view.\n// The view itself owns its side panels — there is no conditional rendering\n// of explorer panels at this level.\n//\n// Usage:\n// <Route element={<AppShellV2 appBar={...} rail={...} />}>\n// <Route path=\"dashboards\" element={<GeneratedDashboardViewV2 />} />\n// ...\n// </Route>\n\nimport React from 'react';\nimport { Outlet } from 'react-router-dom';\nimport Box from '@mui/material/Box';\n\nexport interface AppShellV2Props {\n /** Rendered at the top, full width. Typically <AppBarV2 ... />. */\n appBar?: React.ReactNode;\n /** Rendered on the left, full height under the top bar. Typically <AppRailV2 ... />. */\n rail?: React.ReactNode;\n /**\n * Optional content rendered in place of <Outlet />. Useful for tests or\n * when nesting an alternate router. Defaults to <Outlet />.\n */\n children?: React.ReactNode;\n}\n\nexport const AppShellV2: React.FC<AppShellV2Props> = ({ appBar, rail, children }) => {\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n height: '100vh',\n width: '100vw',\n overflow: 'hidden',\n }}\n >\n {appBar}\n <Box sx={{ display: 'flex', flex: 1, minHeight: 0, overflow: 'hidden' }}>\n {rail}\n <Box sx={{ flex: 1, minWidth: 0, display: 'flex', flexDirection: 'column', overflow: 'hidden' }}>\n {children ?? <Outlet />}\n </Box>\n </Box>\n </Box>\n );\n};\n\nAppShellV2.displayName = 'AppShellV2';\n","// AppRailV2 — slim 48px vertical view-switcher (matches the V1 design's\n// compact left nav). URL-driven: each entry navigates to a route, and the\n// active entry is computed from the current pathname. Renders nothing\n// app-specific; consumers pass the views list and an optional logo node.\n\nimport React from 'react';\nimport { Link, useLocation } from 'react-router-dom';\nimport Box from '@mui/material/Box';\nimport Tooltip from '@mui/material/Tooltip';\n\nexport interface AppRailV2View {\n id: string;\n label: string;\n icon: React.ReactNode;\n /** Route the view navigates to (e.g. '/dashboards'). */\n to: string;\n /**\n * Optional matcher. By default the view is active when pathname starts\n * with `to`. Use this when two views share a prefix.\n */\n isActive?: (pathname: string) => boolean;\n}\n\nexport interface AppRailV2Props {\n views: AppRailV2View[];\n /** Logo / brand mark rendered at the top of the rail. */\n logo?: React.ReactNode;\n /** Optional content rendered at the bottom (avatar, settings). */\n footer?: React.ReactNode;\n}\n\nconst RAIL_WIDTH = 48;\n\nexport const AppRailV2: React.FC<AppRailV2Props> = ({ views, logo, footer }) => {\n const { pathname } = useLocation();\n\n return (\n <Box\n component=\"nav\"\n sx={(theme) => ({\n width: RAIL_WIDTH,\n flexShrink: 0,\n backgroundColor: theme.palette.background.paper,\n borderRight: `1px solid ${theme.palette.divider}`,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n py: 1.5,\n gap: 0.5,\n })}\n aria-label=\"Primary\"\n >\n {logo && <Box sx={{ mb: 1 }}>{logo}</Box>}\n\n {views.map((view) => {\n const active = view.isActive\n ? view.isActive(pathname)\n : pathname === view.to || pathname.startsWith(view.to + '/');\n return (\n <Tooltip key={view.id} title={view.label} placement=\"right\">\n <Box\n component={Link}\n to={view.to}\n sx={(theme) => ({\n width: 32,\n height: 32,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: `${theme.shape.radiusSm}px`,\n // Active icon picks up the brand amber so\n // it reads as \"selected\" at a glance — the\n // previous text-primary + raised-bg combo\n // was too subtle, especially next to the\n // breadcrumb in the AppBar that names the\n // same view.\n color: active ? theme.palette.primary.main : theme.palette.text.disabled,\n backgroundColor: active ? theme.palette.surface.hover : 'transparent',\n textDecoration: 'none',\n transition: 'background-color .12s, color .12s',\n '&:hover': {\n backgroundColor: active ? theme.palette.surface.hover : theme.palette.surface.raised,\n color: active ? theme.palette.primary.main : theme.palette.text.primary,\n },\n })}\n aria-label={view.label}\n aria-current={active ? 'page' : undefined}\n >\n {view.icon}\n </Box>\n </Tooltip>\n );\n })}\n\n <Box sx={{ flex: 1 }} />\n {footer}\n </Box>\n );\n};\n\nAppRailV2.displayName = 'AppRailV2';\n","// AppBarV2 — 48px top bar with logo + product name + breadcrumb + (mock)\n// global search + right-aligned slot for app-specific bits like the user\n// profile menu.\n//\n// Search is decorative for now (renders a non-functional input that opens\n// a callback so the host app can show a placeholder modal later).\n\nimport React from 'react';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport { SearchIcon } from './icons';\n\nexport const APPBAR_V2_HEIGHT = 48;\n\nexport interface AppBarV2Props {\n /** Logo / brand mark on the far left. */\n logo?: React.ReactNode;\n /** Product or app name shown next to the logo. */\n productName?: string;\n /** Optional breadcrumb / context node rendered between brand and search. */\n breadcrumb?: React.ReactNode;\n /** Right-aligned slot, typically the user-profile menu. */\n rightAccessory?: React.ReactNode;\n /** Called when the user clicks the (decorative) search box. */\n onSearchClick?: () => void;\n /** Override the search box placeholder text. */\n searchPlaceholder?: string;\n /** Hide the search box entirely. */\n hideSearch?: boolean;\n /**\n * Replace the built-in decorative search with a host-provided\n * node (e.g. <DashboardsAutocompleteV2 />). When provided,\n * `onSearchClick` and `searchPlaceholder` are ignored.\n */\n searchSlot?: React.ReactNode;\n /**\n * Hamburger trigger rendered before the logo. Hosts mount this on\n * the responsive (< lg) breakpoint to open the MobileDrawerV2.\n */\n hamburger?: React.ReactNode;\n /**\n * Compact mode — the responsive (< lg) chrome. Hides the search\n * box (no room next to the hamburger), tightens horizontal gaps,\n * and lets the breadcrumb slot carry just the company chip (the\n * host decides what to pass). The desktop layout is preserved\n * when this is `false` (the default).\n */\n compact?: boolean;\n}\n\nexport const AppBarV2: React.FC<AppBarV2Props> = ({\n logo,\n productName = 'Agentic Explorer',\n breadcrumb,\n rightAccessory,\n onSearchClick,\n searchPlaceholder = 'Buscar dashboards, métricas\\u2026',\n hideSearch = false,\n searchSlot,\n hamburger,\n compact = false,\n}) => {\n const searchHidden = hideSearch || compact;\n return (\n <Box\n component=\"header\"\n sx={(theme) => ({\n height: APPBAR_V2_HEIGHT,\n flexShrink: 0,\n backgroundColor: theme.palette.background.paper,\n borderBottom: `1px solid ${theme.palette.divider}`,\n display: 'flex',\n alignItems: 'center',\n px: compact ? 1 : 2,\n gap: compact ? 1 : 1.5,\n zIndex: 1,\n })}\n >\n {hamburger && (\n <Box sx={{ display: 'flex', alignItems: 'center', flexShrink: 0 }}>\n {hamburger}\n </Box>\n )}\n {logo && <Box sx={{ display: 'flex', alignItems: 'center', flexShrink: 0 }}>{logo}</Box>}\n {productName && (\n <Typography\n sx={(theme) => ({\n fontSize: 13,\n fontWeight: 500,\n color: theme.palette.text.primary,\n flexShrink: 0,\n whiteSpace: 'nowrap',\n })}\n >\n {productName}\n </Typography>\n )}\n\n {breadcrumb && (\n <>\n <Box sx={(theme) => ({ width: '1px', height: 18, backgroundColor: theme.palette.divider })} />\n <Box sx={(theme) => ({ display: 'flex', alignItems: 'center', gap: 0.75, fontSize: 12, color: theme.palette.text.secondary, minWidth: 0, overflow: 'hidden' })}>\n {breadcrumb}\n </Box>\n </>\n )}\n\n <Box sx={{ flex: 1 }} />\n\n {!searchHidden && (\n searchSlot ?? (\n <Box\n role=\"button\"\n tabIndex={0}\n onClick={onSearchClick}\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') onSearchClick?.(); }}\n sx={(theme) => ({\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n backgroundColor: theme.palette.surface.raised,\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: `${theme.shape.radiusSm}px`,\n px: 1.25,\n py: 0.5,\n minWidth: 240,\n cursor: 'pointer',\n color: theme.palette.text.disabled,\n transition: 'background-color .12s, color .12s',\n '&:hover': { backgroundColor: theme.palette.surface.hover, color: theme.palette.text.secondary },\n })}\n >\n <SearchIcon />\n <Typography sx={{ fontSize: 12, color: 'inherit', flex: 1 }}>{searchPlaceholder}</Typography>\n <Box\n sx={(theme) => ({\n fontFamily: theme.typography.fontFamilyMono,\n fontSize: 10,\n color: theme.palette.text.disabled,\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: 0.5,\n px: 0.6,\n py: 0.1,\n })}\n >\n ⌘K\n </Box>\n </Box>\n )\n )}\n\n {rightAccessory}\n </Box>\n );\n};\n\nAppBarV2.displayName = 'AppBarV2';\n","// MobileDrawerV2 — slide-in drawer for the responsive v2 chrome.\n//\n// Replaces both AppRailV2 (left nav strip) and the per-view inline list\n// sidebars (DashboardsDrawerV2, ChatsHistoryV2) when the viewport is\n// below `lg`. Layout, top to bottom:\n//\n// 1. Brand header — logo + product name.\n// 2. Nav icons + labels — Dashboards, Data Explorer. The \"Composer\"\n// view from the desktop rail is intentionally excluded on small\n// screens (the user's spec; deep-links to /composer redirect to\n// /board, handled in App.tsx).\n// 3. Divider.\n// 4. **Context panel slot** — the active view's list, passed in via\n// the `contextPanel` prop. The host computes which list belongs\n// here based on the current route (sessions vs dashboards) and\n// hands the ready-rendered element down.\n// 5. Footer — UserProfile.\n//\n// Earlier iterations used a `createPortal` target so views could\n// portal their inline lists into this slot without the drawer knowing\n// about either domain. The portal worked in isolation but stayed\n// invisible in the wild (timing + cascade issues with the children's\n// own desktop-column widths), so the drawer is now a plain consumer\n// of a single ReactNode prop and the host decides what to render via\n// route inspection.\nimport React, { useMemo } from 'react';\nimport { Link, useLocation } from 'react-router-dom';\nimport Box from '@mui/material/Box';\nimport Drawer from '@mui/material/Drawer';\nimport Typography from '@mui/material/Typography';\nimport { DashboardIcon, DataExplorerIcon } from './icons';\nimport { themeTokens } from '@lib/themes/v2';\n\nconst DRAWER_WIDTH = 300;\n\nexport interface MobileDrawerV2NavItem {\n id: string;\n label: string;\n to: string;\n icon: React.ReactNode;\n isActive?: (pathname: string) => boolean;\n}\n\n// Default nav for the responsive chrome — mirrors the desktop AppRailV2\n// list but drops the Composer entry (not available on mobile). Hosts\n// can override this entirely via the `navItems` prop, e.g. to wire a\n// different route map.\nexport const MOBILE_NAV_DEFAULT: MobileDrawerV2NavItem[] = [\n {\n id: 'dashboards',\n label: 'Dashboards',\n to: '/board',\n icon: <DashboardIcon size={18} />,\n },\n {\n id: 'data-explorer',\n label: 'Data Explorer',\n to: '/data-explorer',\n icon: <DataExplorerIcon size={18} />,\n },\n];\n\nexport interface MobileDrawerV2Props {\n /** Controlled open state. */\n open: boolean;\n width?: string;\n /** Fired when the drawer requests to close (backdrop click, ESC, nav tap). */\n onClose: () => void;\n /** Override the nav-icon list. Defaults to Dashboards + Data Explorer. */\n navItems?: MobileDrawerV2NavItem[];\n /** Brand mark rendered at the top of the drawer. */\n logo?: React.ReactNode;\n /** Optional product name shown next to the logo. */\n productName?: string;\n /** Bottom-pinned content — typically the UserProfile menu. */\n userProfile?: React.ReactNode;\n /**\n * Sessions list element — typically a self-contained\n * `<MobileSessionsList />` adapter that fetches its own data.\n * Rendered between the nav and the user footer when the active\n * pathname starts with `/data-explorer`. The component is only\n * mounted when its route is active; passing both slots as JSX\n * does NOT mount both (React elements are descriptions until\n * committed).\n */\n sessionsList?: React.ReactNode;\n /**\n * Dashboards list element — `<MobileDashboardsList />` or\n * equivalent. Rendered when the active pathname starts with\n * `/board`.\n */\n dashboardsList?: React.ReactNode;\n /** When true, tapping a nav item also closes the drawer. Defaults true. */\n closeOnNavigate?: boolean;\n}\n\nexport const MobileDrawerV2: React.FC<MobileDrawerV2Props> = ({\n open,\n onClose,\n navItems = MOBILE_NAV_DEFAULT,\n width = DRAWER_WIDTH,\n logo,\n productName = 'Agentic Explorer',\n userProfile,\n sessionsList,\n dashboardsList,\n closeOnNavigate = true,\n}) => {\n const { pathname } = useLocation();\n\n // Route-driven contextPanel — picks the matching slot for the\n // active pathname. Both `sessionsList` and `dashboardsList` are\n // passed as JSX descriptions; only the one returned here is\n // actually committed (mounted), so the adapter for the inactive\n // route does no work.\n const contextPanel = pathname.startsWith('/data-explorer')\n ? sessionsList\n : pathname.startsWith('/board')\n ? dashboardsList\n : null;\n\n const navList = useMemo(\n () =>\n navItems.map((item) => {\n const active = item.isActive\n ? item.isActive(pathname)\n : pathname === item.to || pathname.startsWith(item.to + '/');\n return (\n <Box\n key={item.id}\n component={Link}\n to={item.to}\n onClick={() => closeOnNavigate && onClose()}\n sx={(theme) => ({\n display: 'flex',\n alignItems: 'center',\n gap: 1.5,\n px: 1.5,\n py: 1.25,\n borderRadius: `${theme.shape.radiusSm}px`,\n color: active ? theme.palette.primary.main : theme.palette.text.secondary,\n backgroundColor: active ? theme.palette.surface.hover : 'transparent',\n textDecoration: 'none',\n transition: 'background-color .12s, color .12s',\n '&:hover': {\n backgroundColor: theme.palette.surface.raised,\n color: active ? theme.palette.primary.main : theme.palette.text.primary,\n },\n })}\n aria-current={active ? 'page' : undefined}\n >\n {item.icon}\n <Typography sx={{ fontSize: 13, fontWeight: 500, color: 'inherit' }}>\n {item.label}\n </Typography>\n </Box>\n );\n }),\n [navItems, pathname, closeOnNavigate, onClose],\n );\n\n return (\n <Drawer\n anchor=\"left\"\n open={open}\n onClose={onClose}\n // Keep the inner DOM mounted so the consumer's list keeps\n // its state (scroll position, expanded groups, in-progress\n // rename) across drawer open/close.\n ModalProps={{ keepMounted: true }}\n slotProps={{\n paper: {\n sx: (theme) => ({\n width: width,\n maxWidth: '85vw',\n backgroundColor: `${themeTokens.bgCanvasTransparency}`,\n borderRight: `1px solid ${theme.palette.divider}`,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n }),\n },\n }}\n >\n {(logo || productName) && (\n <Box\n sx={(theme) => ({\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n px: 2,\n py: 1.5,\n borderBottom: `1px solid ${theme.palette.divider}`,\n flexShrink: 0,\n })}\n >\n {logo}\n {productName && (\n <Typography\n sx={(theme) => ({\n fontSize: 13,\n fontWeight: 500,\n color: theme.palette.text.primary,\n })}\n >\n {productName}\n </Typography>\n )}\n </Box>\n )}\n\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: 0.25,\n px: 1,\n py: 1,\n flexShrink: 0,\n }}\n >\n {navList}\n </Box>\n\n <Box\n sx={(theme) => ({\n height: \"1px\",\n backgroundColor: theme.palette.divider,\n mx: 1.5, \n flexShrink: 0,\n })}\n />\n\n {/* Context panel — the route-specific list. The `& > *` rule\n re-bases the embedded list's desktop column width so it\n fills the drawer (both DashboardsDrawerV2 and\n ChatsHistoryV2 declare a `width: 280px` / `maxWidth:\n 17vw` sized for their desktop position). The list also\n gets `flex: 1` so its internal scroll engages against\n the drawer's bounded height. */}\n <Box\n sx={{\n flex: 1,\n minHeight: 0,\n minWidth: 0,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n '& > *': {\n width: '100% !important',\n maxWidth: 'none !important',\n minWidth: 0,\n flex: '1 1 auto !important',\n borderRight: 'none !important',\n },\n }}\n >\n {contextPanel}\n </Box>\n\n {userProfile && (\n <Box\n sx={(theme) => ({\n flexShrink: 0,\n borderTop: `1px solid ${theme.palette.divider}`,\n px: 1.5,\n py: 1,\n })}\n >\n {userProfile}\n </Box>\n )}\n </Drawer>\n );\n};\n\nMobileDrawerV2.displayName = 'MobileDrawerV2';\n","// Responsive-layout hook for the v2 chrome.\n//\n// We treat the app as having three tiers, mapped to MUI breakpoints:\n//\n// - mobile → only `xs` (<sm = < 600px). Phones.\n// - tablet → `sm` OR `md` (600–1199px). Small laptops and tablets.\n// - desktop → `lg` and up (≥ 1200px). The default desktop chrome.\n//\n// The breakpoint split is what the user signed off on: phones get the\n// hamburger + bottom strip treatment; tablets keep the drawer but\n// upgrade the chat surface to the rail-mode RunProgressPanelV2; full\n// desktop keeps the existing three-pane layouts unchanged.\n//\n// Returns three flags rather than a single string so consumers can\n// write `if (mobile)` or `if (mobile || tablet)` without unwrapping a\n// union — the latter combination (\"anything but desktop\") is the most\n// common one (drawer-driven nav applies to both).\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { useTheme } from '@mui/material/styles';\n\nexport interface ResponsiveLayout {\n /** xs only — phones. */\n mobile: boolean;\n /** sm or md — tablets / small laptops. */\n tablet: boolean;\n /** lg and up — desktop chrome. */\n desktop: boolean;\n}\n\nexport function useResponsiveLayout(): ResponsiveLayout {\n const theme = useTheme();\n // `down('sm')` matches the half-open interval [0, sm), i.e. xs only.\n const mobile = useMediaQuery(theme.breakpoints.down('sm'));\n // `between('sm', 'lg')` matches [sm, lg) = sm + md.\n const tablet = useMediaQuery(theme.breakpoints.between('sm', 'lg'));\n const desktop = useMediaQuery(theme.breakpoints.up('lg'));\n return { mobile, tablet, desktop };\n}\n","// RunProgressStripV2 — slim, horizontal \"what is the agent doing right\n// now\" strip. Designed for tight surfaces (AiChatFloatingV2's panel,\n// embeds, etc.) where the full RunProgressPanelV2 sidebar is too heavy.\n//\n// Layout (single row, ~28px tall):\n// ┌─────────────────────────────────────────────────────────────┐\n// │ ● current task / tool / \"em execução…\" [3/7] [🧠 5] │\n// └─────────────────────────────────────────────────────────────┘\n//\n// • Connection dot — small pulsing circle, color-coded by\n// ConnectionState (Connected/Connecting/Disconnected/Idle). Same\n// palette as the full panel's header dot, just smaller.\n// • Activity text — the current task label (from the agent's\n// todoList.currentWorkingItemKey) when there's one in flight,\n// otherwise the last tool name, otherwise a generic \"em execução…\"\n// while a turn is open. Truncates with ellipsis on small panels.\n// • Task progress chip — completed/total, only when a todoList exists.\n// • Tool count chip — count of non-silent function calls in the\n// current turn, with the brain glyph the full panel uses on its\n// collapsed rail. Subscribed in a leaf so per-WS-partial churn\n// on `currentMessage`/`messages` doesn't re-render the strip.\n//\n// Visibility: the strip mounts only when there's something *worth*\n// showing. When `turnOpen` is false AND no todoList AND no recent tool\n// event AND connection is Idle/Disconnected, it returns `null` so the\n// host surface (e.g. AiChatFloatingV2) collapses to its normal height.\n// This keeps the panel from gaining a permanent \"1px of chrome\" line\n// when the user isn't running anything.\n\nimport React, { useMemo } from 'react';\nimport { useTheme } from '@mui/material/styles';\nimport Box from '@mui/material/Box';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport { useAiChatSessionStore } from '../AiChat/AiChatContext';\nimport { ConnectionState } from '../../models/connectionState';\nimport type { TodoList } from '../../models/todoListModel';\nimport type { Interaction } from '../../models/Interaction';\nimport type { InteractionPart } from '../../models/InteractionPart';\nimport { getFriendlyLabel, type FriendlyState } from '../AiChat/ChatPane/friendlyToolConfig';\nimport { BrainIcon } from './icons';\n\n// Same parser the full RunProgressPanelV2 uses to extract the agent's\n// todoList from the latest tool event. Kept as a local copy so the\n// strip stays self-contained — if you change one, change both.\nfunction tryParseMainAgentTodoList(\n eventName: string | undefined,\n eventData: string | undefined,\n subAgentId: string | undefined,\n): TodoList | null {\n if (!eventName || eventName !== 'todolistUpdated') return null;\n if (subAgentId) return null;\n if (!eventData) return null;\n try {\n const parsed = JSON.parse(eventData) as TodoList;\n if (!parsed || !Array.isArray(parsed.items)) return null;\n return parsed;\n } catch {\n return null;\n }\n}\n\nconst pulseKeyframes = `@keyframes v2rpspulse{0%,100%{opacity:1}50%{opacity:.35}}`;\n\n/**\n * Leaf for the tool-call counter chip. Subscribes only here so the\n * per-partial churn on `currentMessage`/`messages` doesn't re-render\n * the rest of the strip.\n */\nconst ToolCountChip: React.FC = React.memo(() => {\n const count = useAiChatSessionStore((s) => {\n const interaction = s.currentMessage ?? s.messages?.[s.messages.length - 1] ?? null;\n if (!interaction?.parts) return 0;\n return interaction.parts.filter(\n (p: InteractionPart) =>\n (p.eventType === 'function_call' || p.eventType === 'partial_function_call') &&\n !p.functionDetails?.silent,\n ).length;\n });\n if (count <= 0) return null;\n return (\n <Tooltip title={`${count} ferramentas`} placement=\"top\">\n <Box\n sx={(theme) => ({\n display: 'inline-flex',\n alignItems: 'center',\n gap: 0.5,\n px: 0.75,\n height: 20,\n borderRadius: 0.75,\n backgroundColor: theme.palette.surface.raised,\n border: `1px solid ${theme.palette.divider}`,\n color: theme.palette.primary.main,\n flexShrink: 0,\n })}\n >\n <BrainIcon size={11} />\n <Box\n component=\"span\"\n sx={(theme) => ({\n fontFamily: theme.typography.fontFamilyMono,\n fontSize: 10,\n color: theme.palette.text.primary,\n lineHeight: 1,\n })}\n >\n {count}\n </Box>\n </Box>\n </Tooltip>\n );\n});\nToolCountChip.displayName = 'ToolCountChip';\n\n/**\n * Map an internal tool/event name into a short human-friendly label.\n * The agent emits raw event names like `todolistUpdated`,\n * `executeQuery`, etc. Most are meaningful enough to surface as-is;\n * a few we want to soften (the meta `todolistUpdated` is filtered\n * out upstream because we use the parsed list instead).\n */\nfunction humanizeEventName(name: string): string {\n // Insert spaces before capital letters in camelCase / PascalCase.\n return name\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/_/g, ' ')\n .toLowerCase();\n}\n\nexport const RunProgressStripV2: React.FC = () => {\n const theme = useTheme();\n const turnOpen = useAiChatSessionStore((s) => s.turnOpen);\n const connectionStatus = useAiChatSessionStore((s) => s.connectionStatus);\n const lastToolEvent = useAiChatSessionStore((s) => s.lastToolEvent);\n\n const todoList = useMemo(\n () => tryParseMainAgentTodoList(\n lastToolEvent?.eventName,\n lastToolEvent?.eventData,\n lastToolEvent?.subAgentId,\n ),\n [lastToolEvent?.eventName, lastToolEvent?.eventData, lastToolEvent?.subAgentId],\n );\n\n // The actual tool calls live on the interaction parts, NOT on\n // `lastToolEvent` — `lastToolEvent` is for agent-emitted side\n // events (`todolistUpdated`, `dashboardGenerated`, ...), written\n // by `AgentGatewayService.localEmitToolEvent` only when a part\n // carries `toolDetails`. Most agents (including the dashboard\n // analysis agent) emit their work through plain\n // `function_call` / `partial_function_call` / `function_response`\n // parts and never touch `lastToolEvent`.\n //\n // Mirror `AgentActivityV2`'s read pattern: walk the latest\n // interaction's parts, take the last non-silent function-event,\n // and feed it through `getFriendlyLabel` so the strip shows the\n // same Portuguese phrasing the activity timeline does\n // (\"Consultando série de vendas\" instead of \"execute query\").\n //\n // Note on `function_response`: when a tool call completes the\n // runtime mutates the SAME part's eventType from `function_call`\n // to `function_response` (response merged into functionDetails).\n // We include it in the filter so the strip keeps showing the\n // most-recent tool name during the brief window between calls,\n // instead of flickering back to the generic fallback.\n const currentMessage = useAiChatSessionStore((s) => s.currentMessage);\n const messages = useAiChatSessionStore((s) => s.messages);\n\n const latestCall = useMemo<{ label: string } | null>(() => {\n const interaction: Interaction | null =\n currentMessage ?? messages?.[messages.length - 1] ?? null;\n if (!interaction?.parts) return null;\n for (let i = interaction.parts.length - 1; i >= 0; i--) {\n const p: InteractionPart = interaction.parts[i];\n const isFnEvent =\n p.eventType === 'function_call'\n || p.eventType === 'partial_function_call'\n || p.eventType === 'function_response';\n if (!isFnEvent) continue;\n const fn = p.functionDetails;\n if (!fn || fn.silent) continue;\n const friendlyState: FriendlyState =\n p.eventType === 'function_response'\n ? 'response'\n : p.eventType === 'partial_function_call' || fn.status === 'Composing'\n ? 'partial'\n : 'call';\n const isError =false;\n \n const label = getFriendlyLabel(fn.name, friendlyState, fn.args ?? fn.text, isError);\n if (!label) continue;\n return { label };\n }\n return null;\n }, [currentMessage, messages]);\n\n const total = todoList?.items.length ?? 0;\n const completed = todoList?.items.filter(\n (i) => String(i.status).toLowerCase() === 'completed',\n ).length ?? 0;\n\n // Resolve a single \"what is the agent doing right now\" label.\n // Priority (highest first):\n // 1. The currently-in-progress task title from the parsed\n // todoList (best signal — the agent itself flagged it).\n // 2. Any in-progress item even when `currentWorkingItemKey`\n // isn't set (older agents don't always populate it).\n // 3. The latest function-call's friendly label (e.g. \"Consultando\n // série de vendas\") — this is what most agents actually emit\n // and it's what `AgentActivityV2` shows in the sidebar; the\n // strip needs to agree on that phrasing.\n // 4. `lastToolEvent.eventName` (humanized) — covers agent-level\n // side events like `dashboardGenerated` that aren't function\n // calls but still represent meaningful activity.\n // 5. Generic \"em execução…\" while a turn is open.\n const activityLabel = useMemo<string | null>(() => {\n if (todoList?.currentWorkingItemKey) {\n const current = todoList.items.find((i) => i.key === todoList.currentWorkingItemKey);\n if (current?.label) return current.label;\n }\n const inProgress = todoList?.items.find(\n (i) => String(i.status).toLowerCase() === 'in_progress',\n );\n\n const inProgressLabel = inProgress?.label ? `${inProgress?.label} - ` : '';\n let label = `${inProgressLabel}`\n\n if (lastToolEvent?.eventName && lastToolEvent.eventName !== 'todolistUpdated') {\n label += humanizeEventName(lastToolEvent.eventName);\n }\n\n label += latestCall?.label ?? '';\n\n if (label == '' && turnOpen)\n label = 'em execução\\u2026';\n\n if (!turnOpen)\n label = 'Conectado'\n\n return label;\n }, [todoList, latestCall, lastToolEvent?.eventName, turnOpen]);\n\n // Connection dot color matches the full panel's mapping so users\n // who recognize the sidebar version see the same visual grammar.\n const connectionDisplay = useMemo(() => {\n switch (connectionStatus) {\n case ConnectionState.Connected:\n return {\n color: theme.palette.success.main,\n label: turnOpen ? 'Conexão ativa · executando' : 'Conexão ativa',\n pulse: turnOpen,\n };\n case ConnectionState.Connecting:\n return { color: theme.palette.primary.main, label: 'Conectando\\u2026', pulse: true };\n case ConnectionState.Disconnected:\n return { color: theme.palette.secondary.main, label: 'Desconectado', pulse: false };\n case ConnectionState.Idle:\n default:\n return { color: theme.palette.text.disabled, label: 'Sessão inativa', pulse: false };\n }\n }, [connectionStatus, turnOpen, theme]);\n\n // Hide the strip entirely when there's nothing happening — keeps\n // the host's chrome from gaining a permanent status line that\n // never says anything useful. `activityLabel` already accounts\n // for the function-call fallback, so just checking it is enough.\n const hasContent =\n turnOpen\n || total > 0\n || activityLabel !== null\n || connectionStatus === ConnectionState.Connecting\n || connectionStatus === ConnectionState.Disconnected;\n if (!hasContent) return null;\n\n return (\n <Box\n sx={(theme) => ({\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n px: 1.25,\n py: 0.5,\n minHeight: 28,\n backgroundColor: theme.palette.background.default,\n borderTop: `1px solid ${theme.palette.divider}`,\n flexShrink: 0,\n overflow: 'hidden',\n })}\n >\n <style>{pulseKeyframes}</style>\n\n {/* Connection dot */}\n <Tooltip title={connectionDisplay.label} placement=\"top\">\n <Box\n sx={{\n width: 7,\n height: 7,\n borderRadius: '50%',\n backgroundColor: connectionDisplay.color,\n animation: connectionDisplay.pulse ? 'v2rpspulse 1.4s ease-in-out infinite' : 'none',\n flexShrink: 0,\n }}\n />\n </Tooltip>\n\n {/* Activity label — flex: 1 so it absorbs the row's slack\n and ellipses long task titles. */}\n {activityLabel && (\n <Typography\n noWrap\n sx={(theme) => ({\n flex: 1,\n minWidth: 0,\n fontSize: 11,\n color: theme.palette.text.secondary,\n fontFamily: theme.typography.fontFamilyMono,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n })}\n >\n {activityLabel}\n </Typography>\n )}\n\n {/* Spacer when there's no activity label so chips still\n align to the right edge. */}\n {!activityLabel && <Box sx={{ flex: 1 }} />}\n\n {/* Task progress chip */}\n {total > 0 && (\n <Tooltip title={`Tarefas: ${completed}/${total}`} placement=\"top\">\n <Box\n sx={(theme) => ({\n display: 'inline-flex',\n alignItems: 'center',\n gap: 0.25,\n px: 0.75,\n height: 20,\n borderRadius: 0.75,\n backgroundColor: theme.palette.surface.raised,\n border: `1px solid ${theme.palette.divider}`,\n color: theme.palette.text.primary,\n fontFamily: theme.typography.fontFamilyMono,\n fontSize: 10,\n flexShrink: 0,\n })}\n >\n <Box component=\"span\">{completed}</Box>\n <Box component=\"span\" sx={(theme) => ({ color: theme.palette.text.disabled })}>\n /{total}\n </Box>\n </Box>\n </Tooltip>\n )}\n\n {/* Tool calls counter — leaf with its own subscription */}\n <ToolCountChip />\n </Box>\n );\n};\n\nRunProgressStripV2.displayName = 'RunProgressStripV2';\n","// AiChatFloatingV2 — V2 floating chat dock.\n//\n// Mirrors the existing `AiChatFloating` (same prop surface from\n// `AiChatFloatingProps`) but renders with the v2 chrome:\n// - When open: a 380×480 panel pinned to the bottom-right with a sparkle\n// header + close button. The body hosts the existing AiChat (so all\n// business logic, sessions, streaming is reused unchanged).\n// - When closed: a 52×52 amber sparkle button (the FAB).\n//\n// Self-contained — wraps the existing AiChat which provisions its own\n// AiChatProvider, so floating chats don't share state with any other chat\n// surface on the page.\n\nimport React, { forwardRef, useCallback, useState } from 'react';\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport Paper from '@mui/material/Paper';\nimport Slide from '@mui/material/Slide';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport { CloseIcon, SparkleIcon } from './icons';\nimport AiChat from '../AiChat/AiChat';\nimport type { AiChatFloatingProps, AiChatHandle } from '../AiChat/AiChatTypes';\nimport { RunProgressStripV2 } from './RunProgressStripV2';\n\n// 440px (was 380) gives PromptV2 enough width that its pill chrome\n// (watermark + sparkle/history tools on the left, send button on the\n// right, autosizing textarea in the middle) sits cleanly inside the\n// panel. At 380 the watermark \"Arraste qualquer imagem para cá OU\n// copie e cole\" hugs the pill's right rounded edge and the whole row\n// reads as cramped/leaking.\nconst DEFAULT_WIDTH = 440;\nconst DEFAULT_HEIGHT = 480;\n\nexport const AiChatFloatingV2 = forwardRef<AiChatHandle, AiChatFloatingProps>((props, ref) => {\n const {\n position,\n chatPositionOffSet,\n fabContent,\n width = DEFAULT_WIDTH,\n height = DEFAULT_HEIGHT,\n title = 'Assistente',\n onVisibleQuestionChange: externalOnVisibleQuestionChange,\n onFloatingOpened,\n ...aiChatProps\n } = props;\n\n const anchor = { bottom: 20, right: 20, ...position };\n const [open, setOpen] = useState(false);\n const [visibleQuestion, setVisibleQuestion] = useState<string | null>(null);\n\n const handleVisibleQuestionChange = useCallback(\n (question: string | null) => {\n let mapped = question;\n if (props.onRenderPrompt && question) {\n const { promptAsString } = props.onRenderPrompt(question);\n mapped = promptAsString ?? null;\n }\n setVisibleQuestion(mapped ?? '');\n externalOnVisibleQuestionChange?.(question);\n },\n [externalOnVisibleQuestionChange, props.onRenderPrompt],\n );\n\n const headerLabel = visibleQuestion?.trim() || title;\n\n const panelBottom =\n anchor.bottom != null ? anchor.bottom + (chatPositionOffSet?.bottom ?? 0) : undefined;\n const panelRight =\n anchor.right != null ? anchor.right + (chatPositionOffSet?.right ?? 0) : undefined;\n const panelLeft =\n anchor.left != null ? anchor.left + (chatPositionOffSet?.left ?? 0) : undefined;\n const panelTop =\n anchor.top != null ? anchor.top + (chatPositionOffSet?.top ?? 0) : undefined;\n\n const handleOpen = () => {\n setOpen(true);\n onFloatingOpened?.();\n };\n\n return (\n <>\n {/* `mountOnEnter` was removed deliberately. With it, the\n inner <AiChat> only mounts the first time the FAB is\n clicked — but `onFloatingOpened` fires *synchronously*\n on that click, before <AiChat>'s forwardRef has wired\n up the host's `chatHandleRef`. Hosts that use the open\n callback to send a context message (e.g. the dashboard\n view sending the dashboard JSON) called `sendMessage`\n on a null handle and the message was silently lost.\n Mounting eagerly matches v1's `AiChatFloating` contract\n and makes the handle available before the click; the\n cost is one WS + session per dashboard view, but the\n parent already gates this component on having a loaded\n dashboard so the cost is bounded. */}\n <Slide direction=\"up\" in={open} unmountOnExit={false}>\n <Paper\n elevation={0}\n sx={(theme) => ({\n position: 'fixed',\n bottom: panelTop != null ? undefined : panelBottom,\n top: panelTop,\n right: panelRight,\n left: panelLeft,\n width,\n height,\n backgroundColor: theme.palette.background.paper,\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: `${theme.shape.radiusLg}px`,\n boxShadow: '0 20px 60px rgba(0,0,0,0.5)',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n zIndex: 10000,\n visibility: open ? 'visible' : 'hidden',\n pointerEvents: open ? 'auto' : 'none',\n })}\n >\n {/* Header */}\n <Box\n sx={(theme) => ({\n px: 1.75,\n py: 1.25,\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n borderBottom: `1px solid ${theme.palette.divider}`,\n flexShrink: 0,\n })}\n >\n <Box sx={(theme) => ({ color: theme.palette.primary.main, display: 'inline-flex' })}>\n <SparkleIcon />\n </Box>\n <Tooltip title={headerLabel} enterDelay={500}>\n <Typography\n sx={(theme) => ({\n flex: 1,\n fontSize: 13,\n fontWeight: 500,\n color: theme.palette.text.primary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n })}\n >\n {headerLabel}\n </Typography>\n </Tooltip>\n <IconButton\n size=\"small\"\n onClick={() => setOpen(false)}\n sx={(theme) => ({ color: theme.palette.text.secondary, p: 0.5 })}\n aria-label=\"Fechar\"\n >\n <CloseIcon size={14} />\n </IconButton>\n </Box>\n\n {/* Body */}\n <Box sx={(theme) => ({ flex: 1, minHeight: 0, overflow: 'hidden', backgroundColor: theme.palette.background.paper })}>\n <AiChat\n ref={ref}\n {...aiChatProps}\n borderRadius={0}\n elevation={0}\n onVisibleQuestionChange={handleVisibleQuestionChange}\n // Slim activity strip below the prompt — replaces\n // the full RunProgressPanelV2 sidebar (which won't\n // fit a 440-wide floating panel) with a one-row\n // status line that auto-hides when there's no\n // turn / tasks / connection issue worth showing.\n bottomSlot={<RunProgressStripV2 />}\n />\n </Box>\n </Paper>\n </Slide>\n\n {!open && (\n <Box\n sx={{\n position: 'fixed',\n bottom: anchor.bottom,\n top: anchor.top,\n right: anchor.right,\n left: anchor.left,\n zIndex: 10000,\n }}\n >\n {fabContent ? (\n <Box onClick={handleOpen} sx={{ cursor: 'pointer' }}>\n {fabContent}\n </Box>\n ) : (\n <Box\n role=\"button\"\n tabIndex={0}\n onClick={handleOpen}\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') handleOpen(); }}\n aria-label=\"Abrir assistente\"\n sx={(theme) => ({\n width: 52,\n height: 52,\n borderRadius: '50%',\n backgroundColor: theme.palette.primary.main,\n color: '#1a1208',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n cursor: 'pointer',\n boxShadow: '0 8px 24px rgba(0,0,0,0.4)',\n transition: 'transform .15s, box-shadow .15s',\n '&:hover': {\n transform: 'scale(1.06)',\n boxShadow: '0 12px 32px rgba(0,0,0,0.5)',\n },\n })}\n >\n <SparkleIcon size={20} />\n </Box>\n )}\n </Box>\n )}\n </>\n );\n});\n\nAiChatFloatingV2.displayName = 'AiChatFloatingV2';\n","// AiChatV2Pane — full-height chat surface used inside the V3 three-pane\n// layout (DataExplorerViewV2). Unlike <AiChat>, this component does NOT\n// provision an AiChatProvider; the host wraps the whole view (chat pane\n// + run-progress panel) in a single provider so they share session state.\n//\n// The pane renders:\n// - a thin v2 header (current session title + optional actions slot)\n// - the existing <ChatPane /> (messages + composer/Prompt) which reads\n// from the surrounding AiChatProvider\n//\n// All chat business logic stays inside ChatPane.\n\nimport React from 'react';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport ChatPane from '../AiChat/ChatPane/ChatPane';\nimport { useAiChatSessionStore } from '../AiChat/AiChatContext';\n\nexport interface AiChatV2PaneProps {\n /** Override the title shown in the header. Defaults to the current session's overview. */\n title?: string;\n /** Optional mono-styled subtitle, e.g. \"· 14 sem · BI_Master\". */\n subtitle?: string;\n /** Right-aligned slot, e.g. \"Pin no dashboard\" chip. */\n actions?: React.ReactNode;\n /** Hide the header entirely. */\n hideHeader?: boolean;\n /**\n * Optional content rendered below the prompt input, inside the same\n * column. Mirrors the `bottomSlot` of the v1 AiChat / AiChatFloating:\n * the inner ChatPane keeps its own scroll and the slot lives below\n * it as a fixed-height row. The responsive DataExplorer uses this\n * to mount `<RunProgressStripV2 />` on mobile.\n */\n bottomSlot?: React.ReactNode;\n}\n\nexport const AiChatV2Pane: React.FC<AiChatV2PaneProps> = ({\n title,\n subtitle,\n actions,\n hideHeader = false,\n bottomSlot,\n}) => {\n const sessionOverview = useAiChatSessionStore((s) => s.session?.overview);\n const headerTitle = title ?? sessionOverview ?? 'Nova conversa';\n\n return (\n <Box\n sx={(theme) => ({\n flex: 1,\n minWidth: 0,\n minHeight: 0,\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n backgroundColor: theme.palette.background.default,\n })}\n >\n {!hideHeader && (\n <Box\n sx={(theme) => ({\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n gap: 1.25,\n px: 2.25,\n py: 1.5,\n borderBottom: `1px solid ${theme.palette.divider}`,\n backgroundColor: theme.palette.background.default,\n })}\n >\n <Typography\n component=\"h2\"\n sx={(theme) => ({\n m: 0,\n fontSize: 14,\n fontWeight: 500,\n color: theme.palette.text.primary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n })}\n >\n {headerTitle}\n </Typography>\n {subtitle && (\n <Typography\n sx={(theme) => ({\n fontSize: 11,\n color: theme.palette.text.disabled,\n fontFamily: theme.typography.fontFamilyMono,\n whiteSpace: 'nowrap',\n })}\n >\n {subtitle}\n </Typography>\n )}\n <Box sx={{ flex: 1 }} />\n {actions && (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.75 }}>{actions}</Box>\n )}\n </Box>\n )}\n {/* `overflow: hidden` (not `scroll`) — ChatPane manages\n its own internal scroll for the transcript and pins\n the Prompt at the bottom. Wrapping with a second\n scroll container would let the prompt drift below\n the visible area on tall transcripts.\n\n `display: flex` + `flexDirection: column` is required\n here (not just `block`): ChatPane's outer Box uses\n `height: 100%` to size itself, and percentage heights\n only resolve reliably when the parent passes a\n definite height through. A block wrapper that is\n only sized via `flex: 1` in its grandparent doesn't\n guarantee that, which would collapse the chat\n container's `flex: 1, minHeight: 0` and break the\n inner scroll — the symptom is \"I can't scroll\" or\n \"messages spill past the prompt\". */}\n <Box\n sx={{\n flex: 1,\n minHeight: 0,\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n {/* Mirrors AiChat's bottomSlot wrapping: ChatPane keeps\n its own scroll and pins its prompt at the bottom,\n while the slot sits beneath it as a fixed-height row.\n Skipping the wrapper when no slot is requested avoids\n one extra flex level on the common (desktop) path. */}\n {bottomSlot ? (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n minHeight: 0,\n }}\n >\n <Box sx={{ flex: 1, minHeight: 0, display: 'flex', flexDirection: 'column' }}>\n <ChatPane />\n </Box>\n {bottomSlot}\n </Box>\n ) : (\n <ChatPane />\n )}\n </Box>\n </Box>\n );\n};\n\nAiChatV2Pane.displayName = 'AiChatV2Pane';\n","// ChatsHistoryV2 — left column for the V3 data-explorer layout.\n// Presentational only: takes a grouped list of sessions, an active id, and\n// callbacks. The host wires it to the actual session store.\n\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport Tooltip from '@mui/material/Tooltip';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport Button from '@mui/material/Button';\nimport {\n MoreHoriz as MoreIcon,\n EditOutlined as RenameIcon,\n DeleteOutline as DeleteIcon,\n} from '@mui/icons-material';\nimport { PlusIcon, SearchIcon, CloseIcon } from './icons';\nimport { ChatSessionGroup } from '@lib/hooks';\nimport type { ChatSession } from '@lib/models/ChatSession';\nimport type { ChatSessionListItem } from '@lib/hooks';\n\n\nexport interface ChatsHistoryV2Item {\n id: string;\n title: string;\n /** e.g. \"agora\", \"2h\", \"1d\", \"5d\", \"1sem\" */\n time?: string;\n snippet?: string;\n /**\n * Optional session kind. The host distinguishes between regular\n * data-explorer chats and composer sessions (those that produced\n * a dashboard) so the row can render a small visual cue and the\n * click handler can route to the right view.\n */\n kind?: 'chat' | 'composer';\n /**\n * When true, animate `title` char-by-char whenever it changes.\n * Host marks the \"current working session\" with this so the\n * generated overview reveals itself as if being typed live.\n */\n typewriter?: boolean;\n}\n\n/**\n * Renders `text` immediately on mount, but animates char-by-char\n * whenever the prop subsequently changes. Used by the active session\n * row so a freshly generated overview reveals itself like a typewriter\n * while initial renders (refresh, re-mount with stable title) stay\n * snappy.\n */\nconst TypewriterText: React.FC<{ text: string; charsPerSecond?: number }> = ({\n text,\n charsPerSecond = 20,\n}) => {\n const [displayed, setDisplayed] = useState(text);\n const prevTextRef = useRef(text);\n\n useEffect(() => {\n if (text === prevTextRef.current) return;\n prevTextRef.current = text;\n\n // Animate from 0 → full text. Short titles need a higher\n // floor so the effect is visible at all; otherwise a 6-char\n // overview finishes in ~150ms which feels like a flicker.\n const interval = Math.max(20, 1000 / charsPerSecond);\n setDisplayed('-');\n let i = 0;\n const timer = window.setInterval(() => {\n i += 1;\n setDisplayed(text.slice(0, i));\n if (i >= text.length) window.clearInterval(timer);\n }, interval);\n return () => window.clearInterval(timer);\n }, [text, charsPerSecond]);\n\n return <>{displayed}</>;\n};\n\n\nexport interface ChatsHistoryV2Props {\n groups: ChatSessionGroup[];\n newActiveSession?: ChatSession,\n activeId?: string;\n onSelect?: (item: ChatSessionListItem) => void;\n onNewSession?: () => void;\n /**\n * Rename a session. Receives the new title. The host should patch\n * the session's `overview` (or whatever it shows as the title) and\n * refresh the list.\n */\n onRename?: (id: string, newTitle: string) => void | Promise<void>;\n /** Delete a session. The host should confirm if it wants extra friction beyond the built-in dialog. */\n onDelete?: (id: string) => void | Promise<void>;\n /** Footer slot, typically a small avatar + name. */\n footer?: React.ReactNode;\n /** Header brand mark / app name. */\n header?: React.ReactNode;\n /** Search box label override. */\n searchPlaceholder?: string;\n /** Total count override; defaults to flat sum of items. */\n totalCount?: number;\n}\n\nconst PANEL_WIDTH = '15vw';\n\nexport const ChatsHistoryV2: React.FC<ChatsHistoryV2Props> = ({\n groups,\n newActiveSession,\n activeId,\n onSelect,\n onNewSession,\n onRename,\n onDelete,\n footer,\n header,\n searchPlaceholder,\n totalCount,\n}) => {\n const [query, setQuery] = useState('');\n const computedTotal = useMemo(() => groups.reduce((n, g) => n + g.items.length, 0), [groups]);\n const total = totalCount ?? computedTotal;\n const placeholder = searchPlaceholder ?? `Buscar...`;\n\n // Per-row action menu anchor + which item the menu is for.\n const [menuAnchor, setMenuAnchor] = useState<{ el: HTMLElement; item: ChatSessionListItem } | null>(null);\n const closeMenu = () => setMenuAnchor(null);\n\n // Inline rename state: the id of the row currently being edited and\n // the in-progress draft title.\n const [renamingId, setRenamingId] = useState<string | null>(null);\n const [renameDraft, setRenameDraft] = useState('');\n const renameInputRef = useRef<HTMLTextAreaElement | null>(null);\n // Guard onBlur: when the input first mounts, MUI Menu's restoreFocus\n // pulls focus back to the (now-hidden) trigger button. That fires a\n // premature blur that would auto-cancel the rename. We ignore blur\n // events until the input has actually settled (received its first\n // focus a beat after mount).\n const ignoreNextBlurRef = useRef(false);\n\n // Resize the textarea to fit its content (capped) so a 2-line title\n // stays fully visible while editing.\n const fitTextarea = (el: HTMLTextAreaElement | null) => {\n if (!el) return;\n el.style.height = 'auto';\n el.style.height = `${Math.min(el.scrollHeight, 80)}px`;\n };\n\n useEffect(() => {\n if (renamingId == null) return;\n ignoreNextBlurRef.current = true;\n const t = window.setTimeout(() => {\n const el = renameInputRef.current;\n if (el) {\n fitTextarea(el);\n el.focus();\n el.select();\n }\n ignoreNextBlurRef.current = false;\n }, 80);\n return () => window.clearTimeout(t);\n }, [renamingId]);\n\n // Delete-confirm dialog target.\n const [deleteTarget, setDeleteTarget] = useState<ChatsHistoryV2Item | null>(null);\n\n const startRename = (item: any) => {\n setRenamingId(item.id);\n setRenameDraft(item.title);\n closeMenu();\n };\n const cancelRename = () => {\n setRenamingId(null);\n setRenameDraft('');\n };\n const commitRename = (id: string) => {\n Promise.resolve(onRename?.(id, renameDraft)).finally(cancelRename);\n };\n\n const confirmDelete = () => {\n if (!deleteTarget) return;\n const target = deleteTarget;\n setDeleteTarget(null);\n Promise.resolve(onDelete?.(target.id));\n };\n\n const filteredGroups = useMemo(() => {\n let activeGroup = newActiveSession ? {\n items: [{\n id: newActiveSession.id,\n title: newActiveSession?.overview?.trim() !== \"\" ? newActiveSession?.overview : \"Nova\",\n timeLabel: \"Agora\",\n kind: \"typewritter\",\n }],\n label: 'agora'\n } as ChatSessionGroup : null;\n\n let allGroups = groups;\n if (activeGroup) {\n allGroups = [activeGroup, ...allGroups];\n }\n\n if (!query) return allGroups;\n\n const q = query.toLowerCase();\n return groups\n .map((g) => ({ ...g, items: g.items.filter((it) => it.title.toLowerCase().includes(q)) }))\n .filter((g) => g.items.length > 0)\n }, [groups, query, newActiveSession]);\n\n return (\n <Box\n component=\"aside\"\n sx={(theme) => ({\n maxWidth: PANEL_WIDTH,\n flexShrink: 0,\n backgroundColor: theme.palette.background.paper,\n borderRight: `1px solid ${theme.palette.divider}`,\n display: 'flex',\n flexDirection: 'column',\n minHeight: 0,\n })}\n >\n {/* Header */}\n <Box sx={{ px: 1.5, pt: 1.5, pb: 1 }}>\n {header && (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, mb: 1.25 }}>\n <Box sx={{ flex: 1 }}>{header}</Box>\n {onNewSession && (\n <Tooltip title=\"Nova conversa\">\n <IconButton size=\"small\" onClick={onNewSession} sx={(theme) => ({ color: theme.palette.text.secondary, p: 0.5 })}>\n <PlusIcon />\n </IconButton>\n </Tooltip>\n )}\n </Box>\n )}\n <Box\n sx={(theme) => ({\n display: 'flex',\n alignItems: 'center',\n gap: 0.75,\n backgroundColor: theme.palette.surface.raised,\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: `${theme.shape.radiusSm}px`,\n px: 1.25,\n py: 0.5,\n })}\n >\n <Box sx={(theme) => ({ color: theme.palette.text.disabled, display: 'inline-flex' })}><SearchIcon /></Box>\n <Box\n component=\"input\"\n value={query}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => setQuery(e.target.value)}\n placeholder={placeholder}\n sx={(theme) => ({\n flex: 1,\n background: 'transparent',\n border: 'none',\n outline: 'none',\n color: theme.palette.text.primary,\n fontSize: 12,\n fontFamily: theme.typography.fontFamily,\n })}\n />\n {query && (\n <IconButton size=\"small\" onClick={() => setQuery('')} sx={(theme) => ({ color: theme.palette.text.disabled, p: 0.25 })}>\n <CloseIcon size={11} />\n </IconButton>\n )}\n </Box>\n </Box>\n\n {/* Groups */}\n <Box sx={{ flex: 1, overflow: 'auto', px: 1, pb: 1.5 }}>\n {filteredGroups.map((group) => (\n <Box key={group.label} sx={{ mt: 1.25 }}>\n <Typography\n sx={(theme) => ({\n fontSize: 10,\n color: theme.palette.text.disabled,\n textTransform: 'uppercase',\n letterSpacing: 0.5,\n px: 0.75,\n py: 0.5,\n })}\n >\n {group.label}\n </Typography>\n {group.items.map((it) => {\n if (!it) null;\n\n const active = it.id === activeId;\n const isRenaming = renamingId === it.id;\n const showActions = (onRename || onDelete) && !isRenaming;\n return (\n <Box\n key={it.id}\n sx={(theme) => ({\n position: 'relative',\n backgroundColor: active ? theme.palette.surface.hover : 'transparent',\n borderRadius: `${theme.shape.radiusSm}px`,\n borderLeft: `2px solid ${active ? theme.palette.primary.main : 'transparent'}`,\n mt: 0.25,\n transition: 'background-color .12s',\n '&:hover': {\n backgroundColor: active ? theme.palette.surface.hover : theme.palette.surface.raised,\n },\n '&:hover .v2chh-actions, &:focus-within .v2chh-actions': {\n opacity: 1,\n },\n })}\n >\n <Box\n role={isRenaming ? undefined : 'button'}\n tabIndex={isRenaming ? undefined : 0}\n onClick={isRenaming ? undefined : () => onSelect?.(it)}\n onKeyDown={\n isRenaming\n ? undefined\n : (e) => { if (e.key === 'Enter') onSelect?.(it); }\n }\n sx={{\n width: '100%',\n textAlign: 'left',\n cursor: isRenaming ? 'default' : 'pointer',\n px: 0.5,\n py: 1,\n display: 'flex',\n flexDirection: 'column',\n gap: 0.25,\n }}\n >\n {isRenaming ? (\n <Box\n component=\"textarea\"\n ref={(el: HTMLTextAreaElement | null) => {\n renameInputRef.current = el;\n }}\n rows={1}\n value={renameDraft}\n onChange={(e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setRenameDraft(e.target.value);\n fitTextarea(e.currentTarget);\n }}\n onClick={(e: React.MouseEvent) => e.stopPropagation()}\n onKeyDown={(e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n commitRename(it.id);\n } else if (e.key === 'Escape') {\n e.preventDefault();\n cancelRename();\n }\n }}\n onBlur={() => {\n if (ignoreNextBlurRef.current) return;\n commitRename(it.id);\n }}\n sx={(theme) => ({\n width: '100%',\n background: theme.palette.surface.raised,\n border: `1px solid ${theme.palette.primary.main}`,\n borderRadius: `${theme.shape.radiusSm}px`,\n color: theme.palette.text.primary,\n fontSize: 12,\n lineHeight: 1.4,\n fontFamily: theme.typography.fontFamily,\n px: 0.75,\n py: 0.5,\n outline: 'none',\n resize: 'none',\n overflow: 'hidden',\n minHeight: 28,\n maxHeight: 80,\n boxSizing: 'border-box',\n })}\n />\n ) : (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.625 }}>\n {it.kind === 'composer' && (\n <Tooltip title=\"Sessão do composer\" placement=\"top\">\n <Box\n component=\"span\"\n aria-label=\"Sessão do composer\"\n sx={(theme) => ({\n flexShrink: 0,\n width: 14,\n height: 14,\n borderRadius: '4px',\n background: theme.palette.primary.softBg,\n color: theme.palette.primary.main,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: 10,\n lineHeight: 1,\n })}\n >\n ◧\n </Box>\n </Tooltip>\n )}\n <Typography\n sx={(theme) => ({\n fontSize: 12,\n color: theme.palette.text.primary,\n fontWeight: active ? 500 : 400,\n whiteSpace: 'wrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: '100%',\n maxHeight: active ? '72px' : '37px',\n // Multi-line titles inherit the document's\n // default text-align which renders weirdly\n // here (looks justified — last line ends up\n // visually offset from the first). Pin to\n // left so wrapped titles read cleanly.\n textAlign: 'left',\n })}\n >\n {it.kind == \"typewritter\" ? <TypewriterText text={it.title} charsPerSecond={30} /> : it.title}\n </Typography>\n </Box>\n )}\n {it.updatedAt && !isRenaming && (\n <Typography\n sx={(theme) => ({\n fontSize: 10.5,\n color: theme.palette.text.disabled,\n fontFamily: theme.typography.fontFamilyMono,\n })}\n >\n {it.timeLabel}\n </Typography>\n )}\n </Box>\n {showActions && (\n <Box\n className=\"v2chh-actions\"\n sx={{\n position: 'absolute',\n top: '50%',\n right: 4,\n transform: 'translateY(-50%)',\n opacity: 0,\n transition: 'opacity .12s',\n }}\n >\n <IconButton\n size=\"small\"\n aria-label=\"Mais ações\"\n onClick={(e) => {\n e.stopPropagation();\n setMenuAnchor({ el: e.currentTarget, item: it });\n }}\n sx={(theme) => ({\n color: theme.palette.text.secondary,\n p: 0.5,\n '&:hover': { color: theme.palette.text.primary, backgroundColor: theme.palette.surface.hover },\n })}\n >\n <MoreIcon fontSize=\"small\" />\n </IconButton>\n </Box>\n )}\n </Box>\n );\n })}\n </Box>\n ))}\n {filteredGroups.length === 0 && (\n <Typography sx={(theme) => ({ px: 1.5, py: 2, fontSize: 11, color: theme.palette.text.disabled })}>\n Nenhuma conversa.\n </Typography>\n )}\n </Box>\n\n {footer && (\n <Box\n sx={(theme) => ({\n px: 1.5,\n py: 1.25,\n borderTop: `1px solid ${theme.palette.divider}`,\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n })}\n >\n {footer}\n </Box>\n )}\n\n {/* Per-row action menu */}\n <Menu\n open={!!menuAnchor}\n anchorEl={menuAnchor?.el ?? null}\n onClose={closeMenu}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n slotProps={{\n paper: {\n sx: (theme) => ({\n backgroundColor: theme.palette.surface.raised,\n border: `1px solid ${theme.palette.divider}`,\n mt: 0.5,\n minWidth: 160,\n }),\n },\n }}\n >\n {onRename && (\n <MenuItem\n onClick={() => {\n if (menuAnchor) startRename(menuAnchor.item);\n }}\n sx={(theme) => ({ fontSize: 12, color: theme.palette.text.primary })}\n >\n <ListItemIcon sx={(theme) => ({ color: theme.palette.text.secondary, minWidth: 28 })}>\n <RenameIcon fontSize=\"small\" />\n </ListItemIcon>\n <ListItemText\n primary=\"Renomear\"\n primaryTypographyProps={{ fontSize: 12 }}\n />\n </MenuItem>\n )}\n {onDelete && (\n <MenuItem\n onClick={() => {\n if (menuAnchor) {\n setDeleteTarget(menuAnchor.item as any);\n closeMenu();\n }\n }}\n sx={(theme) => ({ fontSize: 12, color: theme.palette.secondary.main })}\n >\n <ListItemIcon sx={(theme) => ({ color: theme.palette.secondary.main, minWidth: 28 })}>\n <DeleteIcon fontSize=\"small\" />\n </ListItemIcon>\n <ListItemText\n primary=\"Excluir\"\n primaryTypographyProps={{ fontSize: 12 }}\n />\n </MenuItem>\n )}\n </Menu>\n\n {/* Delete confirmation */}\n <Dialog\n open={!!deleteTarget}\n onClose={() => setDeleteTarget(null)}\n slotProps={{\n paper: {\n sx: (theme) => ({\n backgroundColor: theme.palette.background.paper,\n border: `1px solid ${theme.palette.divider}`,\n minWidth: 360,\n }),\n },\n }}\n >\n <DialogTitle sx={(theme) => ({ fontSize: 14, color: theme.palette.text.primary })}>\n Excluir conversa?\n </DialogTitle>\n <DialogContent>\n <Typography sx={(theme) => ({ fontSize: 12, color: theme.palette.text.secondary })}>\n Tem certeza que deseja excluir{' '}\n <Box component=\"strong\" sx={(theme) => ({ color: theme.palette.text.primary })}>\n {deleteTarget?.title}\n </Box>\n ? Esta ação não pode ser desfeita.\n </Typography>\n </DialogContent>\n <DialogActions>\n <Button\n onClick={() => setDeleteTarget(null)}\n sx={(theme) => ({ color: theme.palette.text.secondary, fontSize: 12 })}\n >\n Cancelar\n </Button>\n <Button\n onClick={confirmDelete}\n sx={(theme) => ({\n color: theme.palette.secondary.main,\n fontSize: 12,\n fontWeight: 500,\n '&:hover': { backgroundColor: 'rgba(217,122,122,0.08)' },\n })}\n >\n Excluir\n </Button>\n </DialogActions>\n </Dialog>\n </Box>\n );\n};\n\nChatsHistoryV2.displayName = 'ChatsHistoryV2';\n","// TaskListV2 — re-styled task list for the V3 \"Execução ativa\" right rail.\n//\n// Takes a `TodoList` (the same type the existing v1 TaskList consumes from\n// `lastToolEvent.eventData`) and renders rows in the v2 design language:\n// - Done → green-check tile, label strikethrough\n// - Active → amber spinner tile, amber-left-border row, bg2 background\n// - Pending → faint outline tile, dimmed label\n//\n// Pure presentational. The host wires it to wherever the todo list lives\n// (typically by listening to `lastToolEvent.eventName === 'todolistUpdated'`).\n\nimport React, { useEffect, useRef } from 'react';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport type { TodoItem, TodoList, TodoItemStatus } from '../../models/todoListModel';\nimport { CheckIcon } from './icons';\n\nconst spinKeyframes = `@keyframes v2tspin{to{transform:rotate(360deg)}}`;\n\nfunction normalizeStatus(s: TodoItemStatus): 'completed' | 'in_progress' | 'failed' | 'pending' {\n const v = String(s).toLowerCase();\n if (v === 'completed') return 'completed';\n if (v === 'inprogress' || v === 'in_progress') return 'in_progress';\n if (v === 'failed') return 'failed';\n return 'pending';\n}\n\nfunction TaskDot({ status }: { status: 'completed' | 'in_progress' | 'failed' | 'pending' }) {\n if (status === 'completed') {\n return (\n <Box\n sx={(theme) => ({\n width: 16,\n height: 16,\n borderRadius: '50%',\n backgroundColor: theme.palette.success.main,\n color: theme.palette.background.default,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n mt: '2px',\n })}\n >\n <CheckIcon size={11} />\n </Box>\n );\n }\n if (status === 'in_progress') {\n // Squared rounded ring with one transparent side — matches the v2\n // design's \"active\" indicator (rotating partial border, gap on\n // the right edge so the spin reads).\n return (\n <Box\n sx={(theme) => ({\n width: 18,\n height: 18,\n borderRadius: '5px',\n border: `2px solid ${theme.palette.primary.main}`,\n borderRightColor: 'transparent',\n animation: 'v2tspin 1s linear infinite',\n flexShrink: 0,\n mt: '1px',\n })}\n />\n );\n }\n if (status === 'failed') {\n return (\n <Box\n sx={(theme) => ({\n width: 16,\n height: 16,\n borderRadius: '50%',\n backgroundColor: theme.palette.secondary.main,\n color: theme.palette.background.default,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n mt: '2px',\n fontSize: 11,\n fontWeight: 700,\n })}\n >\n !\n </Box>\n );\n }\n return (\n <Box\n sx={(theme) => ({\n width: 16,\n height: 16,\n borderRadius: '50%',\n border: `1.5px solid ${theme.palette.text.disabled}`,\n flexShrink: 0,\n mt: '2px',\n })}\n />\n );\n}\n\nexport interface TaskListV2Props {\n todoList: TodoList | null | undefined;\n /** Compact mode: smaller paddings. */\n dense?: boolean;\n}\n\nexport const TaskListV2: React.FC<TaskListV2Props> = ({ todoList, dense }) => {\n const currentRef = useRef<HTMLDivElement | null>(null);\n\n // Pin the active task into view as the agent advances through the\n // checklist. We delegate to `scrollIntoView` so the closest\n // scrollable ancestor (the panel body in v2) handles the actual\n // scroll — this keeps the task list itself overflow-free.\n useEffect(() => {\n const el = currentRef.current;\n if (!el) return;\n el.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\n }, [todoList?.currentWorkingItemKey]);\n\n if (!todoList || !todoList.items || todoList.items.length === 0) return null;\n\n const currentKey = todoList.currentWorkingItemKey;\n\n return (\n <>\n <style>{spinKeyframes}</style>\n <Box sx={{ display: 'flex', flexDirection: 'column',overflow:'scroll' }}>\n {todoList.items.map((item: TodoItem) => {\n const status = normalizeStatus(item.status);\n const isCurrent = item.key === currentKey;\n return (\n <Box\n key={item.key}\n ref={isCurrent ? currentRef : undefined}\n sx={(theme) => ({\n display: 'flex',\n alignItems: 'flex-start',\n gap: 1.25,\n px: 1,\n py: dense ? 0.75 : 1,\n\n borderRadius: `${theme.shape.radiusSm}px`,\n // Active task highlight is purely text-based per the\n // v2 design — no left border, no background fill.\n mb: 0.25,\n })}\n >\n <TaskDot status={status} />\n <Box sx={{ flex: 1, minWidth: 0 }}>\n <Typography\n sx={(theme) => ({\n fontSize: 12,\n lineHeight: 1.4,\n fontWeight: isCurrent && status === 'in_progress' ? 500 : 400,\n color: status === 'pending'\n ? theme.palette.text.disabled\n : isCurrent && status === 'in_progress'\n ? theme.palette.primary.main\n : theme.palette.text.primary,\n textDecoration: status === 'completed' ? 'line-through' : 'none',\n // Match the completed TaskDot's success green so the\n // strikethrough reads as \"this is done\" rather than as\n // a faint smudge. Default `text.disabled` (#5a5a62)\n // sat too close to the surrounding text on the dark\n // surface and the line was nearly invisible.\n textDecorationColor: status === 'completed'\n ? theme.palette.success.main\n : theme.palette.text.disabled,\n // Long task labels wrap inside the panel's narrow column;\n // without this they pick up the document's default\n // text-align and look justified (last line spacing reads\n // off). Pin to left so wrapped labels stay flush.\n textAlign: 'left',\n })}\n >\n {item.label}\n </Typography>\n {item.detail && (\n <Typography\n sx={(theme) => ({\n fontSize: 10.5,\n lineHeight: 1.4,\n mt: 0.4,\n color: status === 'in_progress' ? theme.palette.text.secondary : theme.palette.text.disabled,\n fontFamily: theme.typography.fontFamilyMono,\n wordBreak: 'break-word',\n textAlign: 'left',\n })}\n >\n {item.detail}\n </Typography>\n )}\n </Box>\n </Box>\n );\n })}\n </Box>\n </>\n );\n};\n\nTaskListV2.displayName = 'TaskListV2';\n","// SubAgentBoxV2 — v2-styled sub-agent surface for the right-rail panel.\n//\n// Tracks the same lastToolEvent stream as v1 SubAgentBox (filtered by\n// `subAgent.id`) so a sub-agent's todoList renders independently from\n// the main agent's. Surfaces three collapse levels:\n// 0 Title row only — name, status, percent. Compact.\n// 1 Title row + TaskListV2 with the sub-agent's own tasks. Default\n// when used inside the RunProgressPanel (`compact={true}`).\n// 2 Same as level 1 plus the inline message body — useful for\n// debugging mid-flight sub-agent runs.\n//\n// Visuals match the v2 design: rounded `bg0` card, soft border that\n// glows amber while the sub-agent is running, uppercase title strip.\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport Tooltip from '@mui/material/Tooltip';\nimport { CheckCircle as CheckCircleIcon } from '@mui/icons-material';\nimport type { SubAgentState } from '../AiChat/stateConfiguration';\nimport type { TodoList } from '../../models/todoListModel';\nimport { useAiChatSessionStore } from '../AiChat/AiChatContext';\nimport { TaskListV2 } from './TaskListV2';\nimport { ChevronIcon, BrainIcon } from './icons';\n\nexport type SubAgentBoxV2Level = 0 | 1 | 2;\n\nconst subagentScanlineKeyframes = `\n@keyframes v2sascan {\n 0% { transform: translateX(-100%); }\n 100% { transform: translateX(100%); }\n}`;\n\nexport interface SubAgentBoxV2Props {\n subAgent: SubAgentState;\n /**\n * Initial collapse level. When omitted, defaults to `1` (compact —\n * matches the right-rail panel default).\n */\n defaultLevel?: SubAgentBoxV2Level;\n /** Suppress level 2 (inline messages) — useful when rendered inside the right rail. */\n hideMessageLevel?: boolean;\n onLinkClicked?: (link: string, content: string | null) => void;\n}\n\nfunction tryParse(json: string | undefined): TodoList | null {\n if (!json) return null;\n try {\n return JSON.parse(json) as TodoList;\n } catch {\n return null;\n }\n}\n\nexport const SubAgentBoxV2: React.FC<SubAgentBoxV2Props> = ({\n subAgent,\n defaultLevel = 1,\n hideMessageLevel = true,\n}) => {\n const [level, setLevel] = useState<SubAgentBoxV2Level>(defaultLevel);\n const [todoList, setTodoList] = useState<TodoList | null>(null);\n\n const lastToolEvent = useAiChatSessionStore((state) => state.lastToolEvent);\n\n const isRunning = !subAgent.completed;\n\n // Adopt todoList updates emitted for this sub-agent only.\n useEffect(() => {\n if (\n lastToolEvent?.eventName === 'todolistUpdated'\n && lastToolEvent.subAgentId === subAgent.id\n ) {\n const parsed = tryParse(lastToolEvent.eventData);\n if (parsed) setTodoList(parsed);\n }\n }, [lastToolEvent, subAgent.id]);\n\n const counts = useMemo(() => {\n const items = todoList?.items ?? [];\n const completed = items.filter((i) => String(i.status).toLowerCase() === 'completed').length;\n const total = items.length;\n const pct = total > 0 ? completed / total : 0;\n return { completed, total, pct };\n }, [todoList]);\n\n const cycle = useCallback(() => {\n setLevel((prev) => {\n const max: SubAgentBoxV2Level = hideMessageLevel ? 1 : 2;\n const next = prev >= max ? 0 : ((prev + 1) as SubAgentBoxV2Level);\n return next;\n });\n }, [hideMessageLevel]);\n\n const showTasks = level >= 1 && (todoList?.items.length ?? 0) > 0;\n const showMessages = level >= 2 && !hideMessageLevel;\n\n return (\n <Box\n sx={(theme) => ({\n position: 'relative',\n backgroundColor: theme.palette.background.default,\n border: `1px solid ${isRunning ? theme.palette.primary.dark : theme.palette.border.soft}`,\n borderRadius: `${theme.shape.borderRadius}px`,\n overflow: 'hidden',\n transition: 'border-color .15s',\n })}\n >\n <style>{subagentScanlineKeyframes}</style>\n\n {/* \"Working\" scanline at the top edge while running. */}\n {isRunning && (\n <Box\n aria-hidden\n sx={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n height: '2px',\n overflow: 'hidden',\n }}\n >\n <Box\n sx={(theme) => ({\n width: '100%',\n height: '100%',\n background: `linear-gradient(90deg, transparent, ${theme.palette.primary.main}, transparent)`,\n animation: 'v2sascan 2s ease-in-out infinite',\n })}\n />\n </Box>\n )}\n\n {/* Header — name + status + percent + cycle toggle. */}\n <Box\n role=\"button\"\n tabIndex={0}\n onClick={cycle}\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); cycle(); } }}\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n px: 1.5,\n py: 1,\n cursor: 'pointer',\n userSelect: 'none',\n }}\n >\n <Box\n sx={(theme) => ({\n width: 18,\n height: 18,\n flexShrink: 0,\n color: isRunning ? theme.palette.primary.main : theme.palette.success.main,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n })}\n >\n {isRunning ? <BrainIcon size={14} /> : <CheckCircleIcon sx={{ fontSize: 16 }} />}\n </Box>\n\n <Typography\n sx={(theme) => ({\n fontSize: 12,\n fontWeight: 500,\n color: isRunning ? theme.palette.text.primary : theme.palette.text.secondary,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n flex: 1,\n minWidth: 0,\n })}\n >\n {subAgent.name ?? subAgent.id}\n </Typography>\n\n {counts.total > 0 && (\n <Typography\n sx={(theme) => ({\n fontSize: 10.5,\n color: theme.palette.text.disabled,\n fontFamily: theme.typography.fontFamilyMono,\n flexShrink: 0,\n })}\n >\n {counts.completed}/{counts.total}\n </Typography>\n )}\n\n <Tooltip title={level === 0 ? 'Mostrar tarefas' : 'Recolher'}>\n <IconButton\n size=\"small\"\n onClick={(e) => { e.stopPropagation(); cycle(); }}\n sx={(theme) => ({\n color: theme.palette.text.secondary,\n p: 0.25,\n transform: level === 0 ? 'rotate(-90deg)' : 'none',\n transition: 'transform .15s',\n })}\n >\n <ChevronIcon size={14} />\n </IconButton>\n </Tooltip>\n </Box>\n\n {/* Progress bar — always rendered (even at level 0) so the\n sub-agent's percent is visible at a glance. */}\n {counts.total > 0 && (\n <Box\n sx={(theme) => ({\n height: 2,\n backgroundColor: theme.palette.surface.raised,\n overflow: 'hidden',\n })}\n >\n <Box\n sx={(theme) => ({\n width: `${Math.round(counts.pct * 100)}%`,\n height: '100%',\n backgroundColor: theme.palette.primary.main,\n transition: 'width .25s ease',\n })}\n />\n </Box>\n )}\n\n {/* Body — tasks (level >=1) and messages placeholder (level 2). */}\n {showTasks && (\n <Box sx={{ px: 1, pt: 0.75, pb: 0.5 }}>\n <TaskListV2 todoList={todoList} dense />\n </Box>\n )}\n {showMessages && (\n <Box sx={{ px: 1.5, pb: 1, pt: 0.5 }}>\n <Typography\n sx={(theme) => ({\n fontSize: 10.5,\n color: theme.palette.text.disabled,\n fontStyle: 'italic',\n fontFamily: theme.typography.fontFamilyMono,\n })}\n >\n Logs detalhados deste sub-agente em breve.\n </Typography>\n </Box>\n )}\n </Box>\n );\n};\n\nSubAgentBoxV2.displayName = 'SubAgentBoxV2';\n","// AgentActivityV2 — friendly, streamed timeline of what the agent is doing.\n//\n// Subscribes to the live interaction via `useAiChatSessionStore`:\n// - thought parts → italic reasoning lines\n// - function_call parts → tool rows with icon · friendly label\n// · mono tool name · duration · status\n// - partial_function_call parts → \"compondo argumentos…\"\n// - function_response parts → folded into the matching call row's\n// expanded body (matched by call id)\n// - text/partial_text/etc. → ignored (those are the assistant's\n// natural-language reply, not activity)\n//\n// When no live interaction is in flight, falls back to the last completed\n// interaction so the panel keeps showing the most recent run.\n//\n// Click any tool row to expand it and inspect its args + response.\n\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport { useAiChatSessionStore } from '../AiChat/AiChatContext';\nimport type { Interaction } from '../../models/Interaction';\nimport type { InteractionPart } from '../../models/InteractionPart';\nimport { ChevronIcon, ToolIcon } from './icons';\nimport { getFriendlyLabel, type FriendlyState } from '../AiChat/ChatPane/friendlyToolConfig';\nimport { InteractionPartUtils } from '../../models/InteractionPart';\n\nconst spinKeyframes = `@keyframes v2aaspin{to{transform:rotate(360deg)}}`;\nconst fadeKeyframes = `@keyframes v2aafade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}`;\nconst pulseKeyframes = `@keyframes v2aapulse{0%,100%{opacity:.4}50%{opacity:1}}`;\n\nfunction formatDuration(ms?: number): string | null {\n if (ms == null || !Number.isFinite(ms) || ms < 0) return null;\n if (ms < 1000) return `${Math.round(ms)}ms`;\n return `${(ms / 1000).toFixed(ms < 10_000 ? 1 : 0)}s`;\n}\n\n/**\n * Render a string that may itself be a JSON payload — and may carry\n * unicode-escape sequences like `\\u0022` for `\"` because the server\n * encoded with `ensure_ascii=True`. If it parses as JSON, re-stringify\n * with indentation (the JSON.parse round-trip naturally collapses the\n * `\\uXXXX` escapes into real characters). Otherwise leave the string\n * as-is so we don't mangle plain text responses.\n */\nfunction prettyJsonish(value: string): string {\n const trimmed = value.trim();\n if (!trimmed) return value;\n const first = trimmed[0];\n if (first !== '{' && first !== '[' && first !== '\"') return value;\n try {\n const parsed = JSON.parse(trimmed);\n // If the payload was a JSON-encoded string (double-encoded),\n // recurse once so the inner JSON also pretty-prints.\n if (typeof parsed === 'string') return prettyJsonish(parsed);\n return JSON.stringify(parsed, null, 2);\n } catch {\n return value;\n }\n}\n\n// V1's bucket sizing kept the tactile, \"filling-up\" feel without adding\n// noise. We keep the same chunking so the texture reads consistently\n// across versions, just toned-down for the v2 dark palette.\nconst BYTES_PER_BUCKET = 500;\nconst MAX_VISIBLE_BUCKETS = 12;\nconst BUCKET_W = 4;\nconst BUCKET_H = 8;\n\nfunction compactBytes(value: number): string {\n if (value >= 1_000_000) return `${(value / 1_000_000).toFixed(1)}Mb`;\n if (value >= 1_000) return `${(value / 1_000).toFixed(1)}kb`;\n return `${value}b`;\n}\n\nfunction V2ByteBuckets({ bytes }: { bytes: number }) {\n if (bytes <= 0) return null;\n const fullCount = Math.floor(bytes / BYTES_PER_BUCKET);\n const partialFill = (bytes % BYTES_PER_BUCKET) / BYTES_PER_BUCKET;\n const visible = Math.min(MAX_VISIBLE_BUCKETS, fullCount + (partialFill > 0 ? 1 : 0)) || 1;\n\n return (\n <Box\n sx={{\n display: 'inline-flex',\n alignItems: 'flex-end',\n gap: '2px',\n height: `${BUCKET_H + 2}px`,\n }}\n aria-hidden\n >\n {Array.from({ length: visible }, (_, i) => {\n const isFull = i < fullCount;\n const isActive = !isFull && i === fullCount && partialFill > 0;\n const fillRatio = isFull ? 1 : isActive ? partialFill : 0;\n return (\n <Box\n key={i}\n sx={(theme) => ({\n position: 'relative',\n width: `${BUCKET_W}px`,\n height: `${BUCKET_H}px`,\n borderRadius: '1px',\n border: `1px solid ${theme.palette.border.soft}`,\n backgroundColor: theme.palette.surface.raised,\n overflow: 'hidden',\n flexShrink: 0,\n })}\n >\n <Box\n sx={(theme) => ({\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n height: `${fillRatio * 100}%`,\n backgroundColor: theme.palette.primary.main,\n opacity: isFull ? 0.85 : 0.7,\n transition: 'height .15s ease-out',\n animation: isActive ? 'v2aapulse 0.9s ease-in-out infinite' : 'none',\n })}\n />\n </Box>\n );\n })}\n </Box>\n );\n}\n\nfunction ToolGlyph({ name, status }: { name: string; status: 'pending' | 'running' | 'done' }) {\n const Icon = (ToolIcon as Record<string, (p: any) => React.ReactElement>)[name] ?? ToolIcon.generic;\n const isRunning = status === 'running';\n const isDone = status === 'done';\n // Running state uses a squared rounded \"ring\" with one side missing\n // that rotates around the icon — matches the v2 design's spinner.\n // The icon stays visible inside the rotating frame so the user still\n // recognises which tool is active at a glance.\n return (\n <Box\n sx={{\n position: 'relative',\n width: 26,\n height: 26,\n flexShrink: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Box\n aria-hidden\n sx={(theme) => ({\n position: 'absolute',\n inset: 0,\n borderRadius: '6px',\n backgroundColor: isRunning\n ? 'transparent'\n : isDone\n ? theme.palette.surface.raised\n : 'transparent',\n border: isRunning\n ? `2px solid ${theme.palette.primary.main}`\n : `1px solid ${theme.palette.border.soft}`,\n borderRightColor: isRunning ? 'transparent' : undefined,\n animation: isRunning ? 'v2aaspin 1.1s linear infinite' : 'none',\n })}\n />\n <Box\n sx={(theme) => ({\n position: 'relative',\n color: isRunning\n ? theme.palette.primary.main\n : isDone\n ? theme.palette.text.secondary\n : theme.palette.text.disabled,\n display: 'inline-flex',\n })}\n >\n <Icon size={14} />\n </Box>\n </Box>\n );\n}\n\ninterface ToolRowProps {\n part: InteractionPart;\n isLast: boolean;\n /** When true, hide the args preview line (default — matches the v2 design). */\n compact?: boolean;\n}\n\nfunction ToolRow({ part, isLast, compact = true }: ToolRowProps) {\n const [expanded, setExpanded] = useState(false);\n const fn = part.functionDetails;\n if (!fn) return null;\n\n const start = fn.start ? new Date(fn.start).getTime() : undefined;\n const end = fn.end ? new Date(fn.end).getTime() : undefined;\n // Both `Composing` (the agent is still assembling args) and\n // `Executing` (the call has been dispatched) are \"in flight\" from\n // the user's perspective — only `Done` counts as completed.\n const status: 'running' | 'done' | 'pending' =\n fn.status === 'Done'\n ? 'done'\n : fn.status === 'Executing' || fn.status === 'Composing'\n ? 'running'\n : 'pending';\n const duration = status === 'done' && start && end ? formatDuration(end - start) : null;\n const isRunning = status === 'running';\n const isComposing = fn.status === 'Composing';\n\n const argsPreview = useMemo(() => {\n if (fn.text) return prettyJsonish(fn.text);\n if (fn.args == null) return '';\n if (typeof fn.args === 'string') return prettyJsonish(fn.args);\n try {\n return JSON.stringify(fn.args);\n } catch {\n return String(fn.args);\n }\n }, [fn.args, fn.text]);\n\n const responsePreview = useMemo(() => {\n if (fn.response == null) return '';\n try {\n return typeof fn.response === 'string'\n ? prettyJsonish(fn.response)\n : JSON.stringify(fn.response, null, 2);\n } catch {\n return String(fn.response);\n }\n }, [fn.response]);\n\n // Map the part's lifecycle to the friendly-label state V1 uses, then\n // get the human-readable Portuguese label from the shared registry\n // (e.g. \"Consultando série de vendas\" instead of \"Run query\").\n const friendlyState: FriendlyState =\n part.eventType === 'function_response'\n ? 'response'\n : part.eventType === 'partial_function_call' || isComposing\n ? 'partial'\n : 'call';\n const isError =false;\n const friendlyLabel = useMemo(\n () => getFriendlyLabel(fn.name, friendlyState, fn.args ?? fn.text, isError),\n [fn.name, friendlyState, fn.args, fn.text, isError],\n );\n\n // Streamed-byte counter for the bucket texture — only meaningful while\n // the agent is composing the args (partial state). During composing\n // the runtime accumulates JSON chunks into `part.textDetails.textParts`\n // (one chunk per StreamingFunctionCallUpdateContent event); `fn.text`\n // only carries the LATEST chunk and would read ~9 bytes. Use V1's\n // `getPartTextContent` so we read the full accumulated stream.\n const streamedBytes = useMemo(() => {\n const accumulated = InteractionPartUtils.getPartTextContent(part);\n if (typeof accumulated === 'string' && accumulated.length > 0) return accumulated.length;\n return argsPreview.length;\n }, [part, argsPreview]);\n\n return (\n <Box\n className=\"v2aa-step\"\n sx={{ position: 'relative', '&:not(:last-child)': { mb: 0.25 } }}\n >\n {!isLast && (\n <Box\n sx={(theme) => ({\n position: 'absolute',\n left: 26,\n top: 28,\n bottom: -4,\n width: '1.5px',\n backgroundColor: theme.palette.border.soft,\n })}\n />\n )}\n <Box\n role=\"button\"\n tabIndex={0}\n onClick={() => setExpanded((v) => !v)}\n onKeyDown={(e) => { if (e.key === 'Enter') setExpanded((v) => !v); }}\n sx={(theme) => ({\n width: '100%',\n textAlign: 'left',\n px: 1.5,\n py: 0.875,\n cursor: 'pointer',\n color: theme.palette.text.primary,\n fontFamily: theme.typography.fontFamily,\n borderRadius: `${theme.shape.radiusSm}px`,\n // Active row is highlighted via text color + the squared\n // spinner only — no left-border, no background fill.\n '&:hover': { backgroundColor: theme.palette.surface.raised },\n })}\n >\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1.25 }}>\n <ToolGlyph name={fn.name} status={status} />\n <Box sx={{ flex: 1, minWidth: 0 }}>\n <Box sx={{ display: 'flex', alignItems: 'baseline', gap: 1, flexWrap: 'wrap' }}>\n <Typography\n sx={(theme) => ({\n fontSize: 12.5,\n fontWeight: isRunning ? 500 : 400,\n fontStyle: isError ? 'normal' : isComposing ? 'italic' : 'normal',\n color: isError\n ? theme.palette.secondary.main\n : status === 'pending'\n ? theme.palette.text.disabled\n : isRunning\n ? theme.palette.text.primary\n : theme.palette.text.secondary,\n textAlign: 'left',\n })}\n >\n {friendlyLabel}\n </Typography>\n <Box sx={{ flex: 1 }} />\n {/* Composing — bucket texture + byte counter so the\n user feels args streaming in. Once dispatched the\n spinner glyph + \"executando…\" label takes over. */}\n {isComposing && streamedBytes > 0 && (\n <Box sx={{ display: 'inline-flex', alignItems: 'center', gap: 0.5 }}>\n <V2ByteBuckets bytes={streamedBytes} />\n <Typography sx={(theme) => ({ fontSize: 10, color: theme.palette.text.disabled, fontFamily: theme.typography.fontFamilyMono })}>\n {compactBytes(streamedBytes)}\n </Typography>\n </Box>\n )}\n {duration && (\n <Typography sx={(theme) => ({ fontSize: 10.5, color: theme.palette.text.disabled, fontFamily: theme.typography.fontFamilyMono })}>\n {duration}\n </Typography>\n )}\n {isRunning && !isComposing && (\n <Typography\n sx={(theme) => ({\n fontSize: 10.5,\n color: theme.palette.primary.main,\n fontFamily: theme.typography.fontFamilyMono,\n animation: 'v2aapulse 1s ease-in-out infinite',\n })}\n >\n executando…\n </Typography>\n )}\n {status === 'pending' && (\n <Typography sx={(theme) => ({ fontSize: 10.5, color: theme.palette.text.disabled, fontFamily: theme.typography.fontFamilyMono })}>\n aguardando\n </Typography>\n )}\n </Box>\n {/* In compact mode (default) the args preview line is hidden until\n the user clicks the row to expand. The full args + response\n still render below in the expanded code block. */}\n {(!compact || expanded) && argsPreview && (\n <Typography\n sx={(theme) => ({\n fontSize: 11,\n color: theme.palette.text.secondary,\n fontFamily: theme.typography.fontFamilyMono,\n mt: 0.4,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: expanded ? 'normal' : 'nowrap',\n wordBreak: expanded ? 'break-all' : 'normal',\n maxWidth: '100%',\n textAlign: 'left',\n })}\n >\n {argsPreview}\n </Typography>\n )}\n {expanded && responsePreview && (\n <Box\n component=\"pre\"\n sx={(theme) => ({\n mt: 1,\n p: 1.25,\n backgroundColor: theme.palette.background.default,\n border: `1px solid ${theme.palette.border.soft}`,\n borderRadius: `${theme.shape.radiusSm}px`,\n fontSize: 11,\n color: theme.palette.text.secondary,\n fontFamily: theme.typography.fontFamilyMono,\n lineHeight: 1.5,\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word',\n maxHeight: 240,\n overflow: 'auto',\n m: 0,\n })}\n >\n {responsePreview}\n </Box>\n )}\n </Box>\n </Box>\n </Box>\n </Box>\n );\n}\n\nfunction ReasoningRow({ part, isStreaming }: { part: InteractionPart; isStreaming: boolean }) {\n const text = part.thoughtDetails?.text?.trim();\n if (!text) return null;\n return (\n <Box sx={{ position: 'relative', px: 1.75, py: 0.75 }}>\n <Box\n sx={(theme) => ({\n position: 'absolute',\n left: 30,\n top: '14px',\n width: 9,\n height: 9,\n borderRadius: '50%',\n backgroundColor: theme.palette.surface.hover,\n border: `1.5px solid ${theme.palette.border.soft}`,\n })}\n />\n <Typography\n sx={(theme) => ({\n pl: 5,\n fontSize: 11.5,\n color: theme.palette.text.secondary,\n fontStyle: 'italic',\n lineHeight: 1.55,\n textAlign: 'left',\n })}\n >\n {text}\n {isStreaming && (\n <Box\n component=\"span\"\n sx={(theme) => ({\n ml: 0.5,\n color: theme.palette.primary.main,\n animation: 'v2aapulse 1s ease-in-out infinite',\n })}\n >\n ▍\n </Box>\n )}\n </Typography>\n </Box>\n );\n}\n\nexport interface AgentActivityV2Props {\n /** Hide reasoning rows (\"Pensando…\"). */\n hideReasoning?: boolean;\n /** Maximum visible height before the timeline scrolls. Defaults to 320px. */\n maxHeight?: number | string;\n /** Empty state to show when there are no parts to render. */\n emptyState?: React.ReactNode;\n /**\n * Display order. `'chronological'` (default) keeps stream order with\n * the live row at the bottom and auto-scrolls as new parts arrive;\n * `'newest-first'` puts the most recent part on top.\n */\n order?: 'newest-first' | 'chronological';\n /**\n * When true (default) tool rows hide their args/JSON preview line and\n * only reveal it when the user clicks the row to expand. Set to false\n * to always show the preview inline.\n */\n compact?: boolean;\n /**\n * Render a horizontal pill strip at the top to navigate by turn:\n * an \"All turns\" pill (merged history) plus one pill per past\n * interaction. While a turn is in flight the live activities are\n * shown by default; clicking a pill switches the view. When a turn\n * closes the panel goes empty until the user picks a pill — i.e.\n * we don't keep showing the previous turn's stale activities.\n * Defaults to `false`.\n */\n showTurnHistory?: boolean;\n}\n\ninterface TurnEntry {\n id: string;\n interaction: Interaction;\n number: number;\n timeLabel: string;\n}\n\nfunction getInteractionId(interaction: Interaction | null): string | null {\n return interaction?.interactionId ?? null;\n}\n\nfunction formatHourMinute(value: Date | string | undefined): string {\n if (!value) return '';\n const d = value instanceof Date ? value : new Date(value);\n if (Number.isNaN(d.getTime())) return '';\n return d.toLocaleTimeString(undefined, { hour: 'numeric', minute: '2-digit' });\n}\n\nconst SCROLL_STEP = 200;\n\nfunction TurnPillStrip({\n turns,\n selectedKey,\n onSelect,\n}: {\n turns: TurnEntry[];\n selectedKey: 'all' | string | null;\n onSelect: (key: 'all' | string | null) => void;\n}) {\n const stripRef = useRef<HTMLDivElement | null>(null);\n const [overflowLeft, setOverflowLeft] = useState(false);\n const [overflowRight, setOverflowRight] = useState(false);\n\n const recomputeOverflow = useCallback(() => {\n const el = stripRef.current;\n if (!el) return;\n const max = el.scrollWidth - el.clientWidth;\n setOverflowLeft(el.scrollLeft > 4);\n setOverflowRight(el.scrollLeft < max - 4);\n }, []);\n\n useEffect(() => {\n recomputeOverflow();\n const el = stripRef.current;\n if (!el) return;\n const handler = () => recomputeOverflow();\n el.addEventListener('scroll', handler, { passive: true });\n const ro = new ResizeObserver(recomputeOverflow);\n ro.observe(el);\n return () => {\n el.removeEventListener('scroll', handler);\n ro.disconnect();\n };\n }, [recomputeOverflow, turns.length]);\n\n const scrollBy = (delta: number) => {\n stripRef.current?.scrollBy({ left: delta, behavior: 'smooth' });\n };\n\n const renderPill = (\n key: string,\n label: React.ReactNode,\n isSelected: boolean,\n onClick: () => void,\n ) => (\n <Box\n key={key}\n role=\"button\"\n tabIndex={0}\n onClick={onClick}\n onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); onClick(); } }}\n sx={(theme) => ({\n flex: '0 0 auto',\n px: 1.25,\n py: 0.5,\n borderRadius: 999,\n cursor: 'pointer',\n backgroundColor: isSelected ? theme.palette.surface.raised : 'transparent',\n // Every pill carries a border so they read as discrete\n // chips even when nothing is selected. The selected\n // state just bumps the border to the brighter `border`\n // tone vs. the muted `borderSoft` on the rest.\n border: `1px solid ${isSelected ? theme.palette.divider : theme.palette.border.soft}`,\n color: isSelected ? theme.palette.text.primary : theme.palette.text.secondary,\n fontFamily: theme.typography.fontFamily,\n fontSize: 11.5,\n fontWeight: isSelected ? 500 : 400,\n whiteSpace: 'nowrap',\n transition: 'background-color .12s, color .12s',\n '&:hover': {\n backgroundColor: isSelected ? theme.palette.surface.raised : theme.palette.surface.raised,\n color: theme.palette.text.primary,\n },\n })}\n >\n {label}\n </Box>\n );\n\n return (\n <Box sx={{ position: 'relative', display: 'flex', alignItems: 'center', mb: 0.75 }}>\n {overflowLeft && (\n <IconButton\n size=\"small\"\n onClick={() => scrollBy(-SCROLL_STEP)}\n sx={(theme) => ({\n flexShrink: 0,\n color: theme.palette.text.secondary,\n p: 0.25,\n mr: 0.25,\n '& svg': { transform: 'rotate(90deg)' },\n '&:hover': { color: theme.palette.text.primary, backgroundColor: theme.palette.surface.raised },\n })}\n aria-label=\"Rolar para a esquerda\"\n >\n <ChevronIcon size={14} />\n </IconButton>\n )}\n <Box\n ref={stripRef}\n sx={{\n flex: 1,\n minWidth: 0,\n display: 'flex',\n alignItems: 'center',\n gap: 0.5,\n overflowX: 'auto',\n scrollbarWidth: 'none',\n '&::-webkit-scrollbar': { display: 'none' },\n }}\n >\n {renderPill(\n 'all',\n <Typography component=\"span\" sx={{ fontSize: 'inherit', fontWeight: 'inherit' }}>\n All turns\n </Typography>,\n selectedKey === 'all',\n () => onSelect('all'),\n )}\n {turns.map((t) => {\n const isSelected = selectedKey === t.id;\n return renderPill(\n t.id,\n <>\n <Typography component=\"span\" sx={(theme) => ({ fontSize: 'inherit', fontWeight: 'inherit', fontFamily: theme.typography.fontFamily })}>\n Turn {t.number}\n </Typography>{' '}\n <Typography\n component=\"span\"\n sx={(theme) => ({\n fontSize: 10.5,\n fontFamily: theme.typography.fontFamilyMono,\n color: theme.palette.text.disabled,\n ml: 0.5,\n })}\n >\n {t.timeLabel}\n </Typography>\n </>,\n selectedKey === t.id,\n () => onSelect(t.id),\n );\n })}\n </Box>\n {overflowRight && (\n <IconButton\n size=\"small\"\n onClick={() => scrollBy(SCROLL_STEP)}\n sx={(theme) => ({\n flexShrink: 0,\n color: theme.palette.text.secondary,\n p: 0.25,\n ml: 0.25,\n '& svg': { transform: 'rotate(-90deg)' },\n '&:hover': { color: theme.palette.text.primary, backgroundColor: theme.palette.surface.raised },\n })}\n aria-label=\"Rolar para a direita\"\n >\n <ChevronIcon size={14} />\n </IconButton>\n )}\n </Box>\n );\n}\n\nexport const AgentActivityV2: React.FC<AgentActivityV2Props> = ({\n hideReasoning,\n maxHeight = 420,\n emptyState,\n order = 'chronological',\n compact = true,\n showTurnHistory = false,\n}) => {\n const currentMessage = useAiChatSessionStore((s) => s.currentMessage);\n const messages = useAiChatSessionStore((s) => s.messages);\n const turnOpen = useAiChatSessionStore((s) => s.turnOpen);\n\n // Build the per-turn pill metadata. Only past interactions that\n // surfaced any tool/thought activity get a pill (an interaction with\n // just a text reply isn't useful to revisit here). We number them\n // ascending by `created` so \"Turn 1\" is the oldest, matching the way\n // a human would refer to them in conversation.\n const turns: TurnEntry[] = useMemo(() => {\n if (!showTurnHistory || !messages || messages.length === 0) return [];\n const wanted = new Set(['thought', 'function_call', 'function_response', 'partial_function_call']);\n const sorted = [...messages].sort((a, b) => {\n const ta = a.created ? new Date(a.created).getTime() : 0;\n const tb = b.created ? new Date(b.created).getTime() : 0;\n return ta - tb;\n });\n const entries: TurnEntry[] = [];\n sorted.forEach((interaction, idx) => {\n const id = getInteractionId(interaction);\n if (!id) return;\n const hasActivity = interaction.parts?.some(\n (p) => wanted.has(p.eventType) && !p.functionDetails?.silent,\n );\n if (!hasActivity) return;\n entries.push({\n id,\n interaction,\n number: idx + 1,\n timeLabel: formatHourMinute(interaction.created),\n });\n });\n // Newest first — matches the screenshot's left-to-right order\n // (newest \"Turn 55\" sits to the left of older ones).\n return entries.reverse();\n }, [messages, showTurnHistory]);\n\n // `selectedKey` controls which interaction's parts to render:\n // - null → live view (current message while turnOpen) or empty\n // when turn closed and the user hasn't picked anything\n // - 'all' → every past interaction's parts merged chronologically\n // - <id> → only that one interaction's parts\n const [selectedKey, setSelectedKey] = useState<'all' | string | null>(null);\n const prevTurnOpenRef = useRef(turnOpen);\n\n // Reset selection when a new turn starts so the user gets the live\n // view back automatically. We don't auto-clear when a turn ends —\n // per the v2 spec the panel goes empty until the user picks a pill.\n useEffect(() => {\n const wasOpen = prevTurnOpenRef.current;\n prevTurnOpenRef.current = turnOpen;\n if (turnOpen && !wasOpen) {\n setSelectedKey(null);\n }\n }, [turnOpen]);\n\n const visibleParts = useMemo(() => {\n const wanted = new Set(['thought', 'function_call', 'function_response', 'partial_function_call']);\n const collect = (interaction: Interaction | null): InteractionPart[] => {\n if (!interaction?.parts) return [];\n return interaction.parts.filter(\n (p) => wanted.has(p.eventType) && !p.functionDetails?.silent,\n );\n };\n\n let parts: InteractionPart[] = [];\n\n if (selectedKey === 'all') {\n // Merge every past interaction's parts in chronological order\n // (oldest first). The live current-turn parts are appended at\n // the end so a still-running turn stays visible inside the\n // merged view too.\n const sorted = [...(messages ?? [])].sort((a, b) => {\n const ta = a.created ? new Date(a.created).getTime() : 0;\n const tb = b.created ? new Date(b.created).getTime() : 0;\n return ta - tb;\n });\n sorted.forEach((m) => { parts = parts.concat(collect(m)); });\n if (currentMessage && getInteractionId(currentMessage) !== null) {\n const liveId = getInteractionId(currentMessage);\n const alreadyIncluded = sorted.some((m) => getInteractionId(m) === liveId);\n if (!alreadyIncluded) parts = parts.concat(collect(currentMessage));\n }\n } else if (selectedKey) {\n const liveId = getInteractionId(currentMessage);\n const target =\n liveId === selectedKey\n ? currentMessage\n : (messages ?? []).find((m) => getInteractionId(m) === selectedKey) ?? null;\n parts = collect(target);\n } else if (turnOpen && currentMessage) {\n // Live view (no pill selected and a turn is in flight).\n parts = collect(currentMessage);\n }\n // Else: turn closed AND no pill selected → render nothing. This\n // is the \"should not show anything once the turn closes\" rule.\n\n return order === 'newest-first' ? [...parts].reverse() : parts;\n }, [selectedKey, currentMessage, messages, turnOpen, order]);\n\n // Auto-scroll-to-bottom when chronological so the live row is always\n // in view as the agent streams new tool calls. We delegate the\n // actual scrolling to the closest scrollable ancestor by calling\n // `scrollIntoView` on a sentinel placed after the last row — this\n // way the activity timeline doesn't need its own overflow container\n // (the panel body owns the scroll) and still pins the user to the\n // newest activity. The \"near the bottom\" guard avoids yanking the\n // user back if they've scrolled up to read history.\n const sentinelRef = useRef<HTMLDivElement | null>(null);\n useEffect(() => {\n if (order !== 'chronological') return;\n const sentinel = sentinelRef.current;\n if (!sentinel) return;\n\n // Walk up to find the nearest scrollable ancestor.\n let scrollable: HTMLElement | null = sentinel.parentElement;\n while (scrollable) {\n const cs = window.getComputedStyle(scrollable);\n if (\n (cs.overflowY === 'auto' || cs.overflowY === 'scroll')\n && scrollable.scrollHeight > scrollable.clientHeight\n ) {\n break;\n }\n scrollable = scrollable.parentElement;\n }\n if (!scrollable) {\n sentinel.scrollIntoView({ block: 'end' });\n return;\n }\n const distanceFromBottom = scrollable.scrollHeight - scrollable.scrollTop - scrollable.clientHeight;\n if (distanceFromBottom < 120) {\n sentinel.scrollIntoView({ block: 'end', behavior: 'smooth' });\n }\n }, [visibleParts.length, order]);\n\n // Pills stay hidden while a turn is in flight — the live activities\n // are the focus during execution, so navigation chrome would just\n // add noise. They reappear once the turn closes so the user can\n // browse history.\n const pillStrip = showTurnHistory && turns.length > 0 && !turnOpen\n ? (\n <TurnPillStrip\n turns={turns}\n selectedKey={selectedKey}\n onSelect={setSelectedKey}\n />\n )\n : null;\n\n if (visibleParts.length === 0) {\n return (\n <>\n <style>{`${spinKeyframes}${fadeKeyframes}${pulseKeyframes}`}</style>\n {pillStrip}\n {emptyState ?? null}\n </>\n );\n }\n\n // The \"live\" part — the one that's actively streaming — is the last\n // chronologically. With newest-first that becomes index 0.\n const liveIdx = order === 'newest-first' ? 0 : visibleParts.length - 1;\n\n return (\n <>\n <style>{`${spinKeyframes}${fadeKeyframes}${pulseKeyframes}`}</style>\n {pillStrip}\n <Box sx={{ py: 1, minHeight:'410px', maxHeight, overflow: maxHeight ? 'auto' : 'visible' }}>\n {visibleParts.map((part, i) => {\n if (part.eventType === 'thought') {\n if (hideReasoning) return null;\n const isLast = i === liveIdx;\n return (\n <ReasoningRow\n key={part.id}\n part={part}\n isStreaming={isLast && turnOpen && part.partial}\n />\n );\n }\n // Render every function-event variant — when an\n // agent's tool response comes back, the runtime\n // mutates the existing part's eventType from\n // 'function_call' to 'function_response' (same\n // object, response merged into functionDetails),\n // so without including 'function_response' here we\n // only ever see the currently in-flight tool call.\n if (\n part.eventType === 'function_call' ||\n part.eventType === 'partial_function_call' ||\n part.eventType === 'function_response'\n ) {\n return <ToolRow key={part.id} part={part} isLast={i === liveIdx} compact={compact} />;\n }\n return null;\n })}\n {/* Auto-scroll target — see the effect above. */}\n <Box ref={sentinelRef} aria-hidden sx={{ height: 0 }} />\n </Box>\n </>\n );\n};\n\nAgentActivityV2.displayName = 'AgentActivityV2';\n","// Tool-category vocabulary for the v2 RunProgressPanel collapsed rail.\n//\n// We can't fit one tile per individual tool name in the 60px rail, so\n// each `friendlyToolConfig` tool is bucketed into one of a handful of\n// visual categories (SQL, Files, Shell, Python, Dashboard, Web, Memory,\n// Sub-agents, Tasks, Scripts, Other). The rail then renders one\n// category icon per active bucket, with a count badge when multiple\n// calls landed in the same bucket.\n//\n// Keep this in sync with `friendlyToolConfig.ts` — every tool listed\n// there should have a category entry; unknown names fall back to\n// \"other\" so a missing entry never blanks the rail.\nimport React from 'react';\nimport {\n DataExplorerIcon,\n DashboardIcon,\n BrainIcon,\n ComposerIcon,\n SparkleIcon,\n FileIcon,\n TerminalIcon,\n CodeIcon,\n GlobeIcon,\n UsersIcon,\n ListCheckIcon,\n} from './icons';\n\nexport type ToolCategoryId =\n | 'sql'\n | 'files'\n | 'shell'\n | 'python'\n | 'dashboard'\n | 'web'\n | 'memory'\n | 'subagent'\n | 'tasks'\n | 'scripts'\n | 'other';\n\nexport interface ToolCategoryMeta {\n id: ToolCategoryId;\n label: string;\n Icon: React.FC<React.SVGProps<SVGSVGElement> & { size?: number }>;\n}\n\nexport const TOOL_CATEGORIES: Record<ToolCategoryId, ToolCategoryMeta> = {\n sql: { id: 'sql', label: 'Banco de dados', Icon: DataExplorerIcon },\n files: { id: 'files', label: 'Arquivos', Icon: FileIcon },\n shell: { id: 'shell', label: 'Terminal', Icon: TerminalIcon },\n python: { id: 'python', label: 'Python', Icon: CodeIcon },\n dashboard: { id: 'dashboard', label: 'Dashboard', Icon: DashboardIcon },\n web: { id: 'web', label: 'Web', Icon: GlobeIcon },\n memory: { id: 'memory', label: 'Memória', Icon: BrainIcon },\n subagent: { id: 'subagent', label: 'Sub-agentes', Icon: UsersIcon },\n tasks: { id: 'tasks', label: 'Tarefas', Icon: ListCheckIcon },\n scripts: { id: 'scripts', label: 'Scripts', Icon: ComposerIcon },\n other: { id: 'other', label: 'Outras', Icon: SparkleIcon },\n};\n\n// Ordering used when rendering active categories on the rail — stable\n// regardless of the order tools were called, so the rail doesn't jitter\n// as new tool types appear mid-turn.\nexport const CATEGORY_ORDER: ToolCategoryId[] = [\n 'sql',\n 'files',\n 'shell',\n 'python',\n 'dashboard',\n 'web',\n 'memory',\n 'subagent',\n 'tasks',\n 'scripts',\n 'other',\n];\n\nconst NAME_TO_CATEGORY: Record<string, ToolCategoryId> = {\n // ── BigQuery / data sources ──\n execute_query: 'sql',\n execute_parallels_queries: 'sql',\n next_page: 'sql',\n list_tables: 'sql',\n get_table_schema: 'sql',\n get_multiple_table_schemas: 'sql',\n remove_data_source: 'sql',\n list_views_and_sources: 'sql',\n create_data_source: 'sql',\n create_or_update_card_view: 'sql',\n create_or_update_python_view: 'sql',\n update_data_source: 'sql',\n\n // ── Files ──\n create_file: 'files',\n read_file: 'files',\n read_file_tail: 'files',\n patch_file: 'files',\n overwrite_file: 'files',\n list_files: 'files',\n delete_file: 'files',\n file_exists: 'files',\n\n // ── Shell ──\n command_line: 'shell',\n\n // ── Python ──\n run_python: 'python',\n\n // ── Dashboard ──\n get_all_dashboard_dards_data: 'dashboard',\n 'imagedescription-analyze_image': 'dashboard',\n 'imagedescription-analyze image': 'dashboard',\n analyze_image: 'dashboard',\n patch_card_file: 'dashboard',\n create_update_card: 'dashboard',\n build_dashboard: 'dashboard',\n rebuild_dashboard: 'dashboard',\n list_session_dashboards: 'dashboard',\n save_dashboard: 'dashboard',\n list_dashboard: 'dashboard',\n\n // ── Web ──\n google_search: 'web',\n curl: 'web',\n markdown_curl: 'web',\n\n // ── Memory ──\n search_memory_suggestions: 'memory',\n search_memories: 'memory',\n create_memory: 'memory',\n update_memory: 'memory',\n delete_memory: 'memory',\n count_memories: 'memory',\n\n // ── Sub-agents ──\n start_sub_agent: 'subagent',\n get_sub_agent_status: 'subagent',\n list_sub_agents: 'subagent',\n wait_on_subagent: 'subagent',\n cancel_sub_agent: 'subagent',\n send_message_to_sub_agent: 'subagent',\n\n // ── Tasks ──\n create_todo_list: 'tasks',\n update_todo_list: 'tasks',\n\n // ── Scripts ──\n script_create_or_update: 'scripts',\n script_code_execute: 'scripts',\n script_get_metadata: 'scripts',\n script_get: 'scripts',\n script_list: 'scripts',\n script_code_update: 'scripts',\n script_code_commit: 'scripts',\n script_code_rollback: 'scripts',\n script_remove: 'scripts',\n};\n\n/**\n * Resolve a tool name to its visual category. Mirrors the skill-prefix\n * stripping that `getFriendlyLabel` performs (e.g.\n * \"imagedescription-analyze_image\"), so plugin-namespaced tools still\n * land in the right bucket even when only the short form is registered.\n */\nexport function getToolCategory(toolName: string | undefined): ToolCategoryId {\n if (!toolName) return 'other';\n const direct = NAME_TO_CATEGORY[toolName];\n if (direct) return direct;\n const parts = toolName.split('-');\n if (parts.length > 1) {\n const stripped = parts.slice(1).join('');\n const fromStripped = NAME_TO_CATEGORY[stripped];\n if (fromStripped) return fromStripped;\n }\n return 'other';\n}\n","// RunProgressPanelV2 — V3 right-rail panel that combines:\n// 1. \"Execução ativa\" header with overall progress (powered by the\n// todoList tool event the agent emits) and elapsed/remaining time\n// 2. TaskListV2 — the planned-tasks list, current task highlighted\n// 3. SubAgentBox — sub-agent sub-conversations (so the chat surface\n// stays focused on the main response)\n// 4. AgentActivityV2 — friendly streaming timeline of tool calls,\n// newest-first, derived from the live interaction\n// 5. Pausar / Cancelar footer (consumer wires the actual handlers)\n//\n// Collapse:\n// The whole panel can collapse into a 60px rail with five at-a-glance\n// indicators stacked top-to-bottom: an expand handle (PanelIcon), the\n// connection-state dot, a circular task-progress arc with % inside,\n// one tile per active tool category (icon + count badge), and a\n// tokens/s readout pinned to the bottom. Each rail tile has a rich\n// Tooltip — the task arc surfaces a mini TaskListV2; each tool tile\n// lists its calls via `getFriendlyLabel` — so the user can drill in\n// without expanding the panel.\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport { useTheme } from '@mui/material/styles';\nimport { useAiChatServices, useAiChatSessionStore } from '../AiChat/AiChatContext';\nimport { ClientMessage } from '../../models/ClientMessage';\nimport type { TodoList } from '../../models/todoListModel';\nimport { TaskListV2 } from './TaskListV2';\nimport { AgentActivityV2 } from './AgentActivityV2';\nimport { LockClosedIcon, LockOpenIcon, PanelIcon } from './icons';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { SubAgentBoxV2 } from './SubAgentBoxV2';\nimport { AgentGatewayWSAsync } from '../../services/servers/AgentGatewayWSAsync';\nimport { ConnectionState } from '../../models/connectionState';\nimport StreamStatistics from '../AiChat/ChatPane/StreamStatistics';\nimport { InteractionPartUtils, type InteractionPart } from '../../models/InteractionPart';\nimport { getFriendlyLabel, type FriendlyState } from '../AiChat/ChatPane/friendlyToolConfig';\nimport { TOOL_CATEGORIES, getToolCategory } from './toolCategories';\n\nconst pulseKeyframes = `@keyframes v2rppulse{0%,100%{opacity:1}50%{opacity:.3}}`;\nconst spinKeyframes = `@keyframes v2rpspin{to{transform:rotate(360deg)}}`;\n\nconst PANEL_WIDTH = '10%';\nconst RAIL_WIDTH = 45;\n\n/**\n * Subcard wrapper used for the Tasks / Activity sections inside the\n * RunProgressPanel. Matches the v2 design language: rounded box on the\n * canvas (`bg0`) with a soft border, a small uppercase title strip at\n * the top, and the section content below.\n */\nconst SectionCard: React.FC<{ title: string; children: React.ReactNode }> = ({ title, children }) => (\n <Box\n sx={(theme) => ({\n backgroundColor: theme.palette.background.default,\n border: `1px solid ${theme.palette.border.soft}`,\n borderRadius: `${theme.shape.borderRadius}px`,\n overflow: 'hidden',\n })}\n >\n <Box sx={{ px: 1.5, pt: 1.25, pb: 0.75 }}>\n <Typography\n sx={(theme) => ({\n fontSize: 10.5,\n fontWeight: 500,\n color: theme.palette.text.secondary,\n textTransform: 'uppercase',\n letterSpacing: 0.6,\n })}\n >\n {title}\n </Typography>\n </Box>\n <Box sx={{ px: 1, pb: 1 }}>{children}</Box>\n </Box>\n);\n\nexport interface RunProgressPanelV2Props {\n /** Width of the panel when expanded. Defaults to 20vw. Accepts any CSS width value. */\n width?: number | string;\n /** Title shown in the header. */\n title?: string;\n /**\n * Optional override for the Pause action. By default the panel calls\n * `agentGatewayService.suspend()` on the gateway it pulls from\n * `useAiChatServices()`. Pass `null` to hide the button entirely.\n */\n onPause?: (() => void) | null;\n /**\n * Optional override for the Cancel action. By default the panel calls\n * `agentGatewayService.stopStream(true)` to terminate the active turn.\n * Pass `null` to hide the button entirely.\n */\n onCancel?: (() => void) | null;\n /** Hide reasoning chunks in the activity timeline. Defaults to `true`. */\n hideReasoning?: boolean;\n /** Controlled collapsed state. When `undefined` the panel manages it itself. */\n collapsed?: boolean;\n /** Called when the user toggles collapse. */\n onCollapsedChange?: (collapsed: boolean) => void;\n /** Default collapsed state when uncontrolled. */\n defaultCollapsed?: boolean;\n}\n\n/**\n * Live `MM:SS decorridos` clock — subscribes directly to\n * `statistics?.elapsed` (the WS pushes this value as part of every\n * stats packet, already throttled to 120ms). Mounting it as a memoised\n * leaf means the parent panel doesn't redraw on every push; only this\n * one `<Typography>` re-renders when the elapsed seconds actually\n * change. When the turn ends and stats stop arriving, the value\n * naturally freezes — no setInterval to clean up, no idle ticking.\n */\nconst ElapsedClock: React.FC = React.memo(() => {\n const elapsedSec = useAiChatSessionStore((s) => s.statistics?.elapsed ?? 0);\n return (\n <Typography sx={(theme) => ({ fontSize: 10.5, color: theme.palette.text.secondary, fontFamily: theme.typography.fontFamilyMono })}>\n {formatElapsed(elapsedSec * 1000)} decorridos\n </Typography>\n );\n});\nElapsedClock.displayName = 'ElapsedClock';\n\n// Shared sx for tooltip popper surfaces on the collapsed rail. The\n// default MUI tooltip is a dark mini-pill; for the rail we want a\n// full-bleed v2 panel (raised bg, soft border) so the embedded\n// TaskListV2 / friendly-label rows read like the rest of the chrome.\nconst railTooltipSlotProps = {\n tooltip: {\n sx: (theme: any) => ({\n backgroundColor: theme.palette.surface.raised,\n border: `1px solid ${theme.palette.divider}`,\n color: theme.palette.text.primary,\n maxWidth: 'none',\n p: 0,\n boxShadow: theme.shadows[6],\n }),\n },\n} as const;\n\nfunction friendlyStateForCall(part: InteractionPart): FriendlyState {\n const status = part.functionDetails?.status;\n if (status === 'Done') return 'response';\n if (status === 'Composing') return 'partial';\n return 'call';\n}\n\nfunction callLooksLikeError(part: InteractionPart): boolean {\n const fn = part.functionDetails;\n if (!fn) return false;\n if (fn.status !== 'Done') return false;\n const resp = fn.response;\n return typeof resp === 'string' && /error|exception|fail/i.test(resp);\n}\n\n// V2 byte-bucket dimensions — kept identical to AgentActivityV2's\n// `V2ByteBuckets` so the texture matches the expanded panel. The only\n// rail-specific bit is the wrapper around them (overflow + right-align).\nconst BUCKET_W = 4;\nconst BUCKET_H = 8;\nconst BYTES_PER_BUCKET = 500;\nconst MAX_VISIBLE_BUCKETS = 12;\n\n/**\n * Bucket strip used in the per-tile \"composing\" footer. Visually\n * identical to AgentActivityV2's `V2ByteBuckets` (same 4×8 cells,\n * same 500-bytes-per-bucket chunking, same partial-fill pulse) — the\n * rail-specific wrapper around it sets `overflow: hidden` +\n * `justifyContent: flex-end` so once more than ~4 buckets accumulate\n * the older ones clip off the left edge while the newest stay pinned\n * to the right inside the 30px tile.\n *\n * `compact` shrinks the gap between bars (and tightens the bar border)\n * so more buckets fit in the same width — used inside the rail's\n * narrow tiles. Default is the full-padding visual that matches the\n * expanded panel.\n */\nconst RailBuckets: React.FC<{ bytes: number; compact?: boolean }> = React.memo(({ bytes, compact = false }) => {\n if (bytes <= 0) return null;\n const fullCount = Math.floor(bytes / BYTES_PER_BUCKET);\n const partialFill = (bytes % BYTES_PER_BUCKET) / BYTES_PER_BUCKET;\n const visible = Math.min(MAX_VISIBLE_BUCKETS, fullCount + (partialFill > 0 ? 1 : 0)) || 1;\n const gap = compact ? '0px' : '2px';\n return (\n <Box\n sx={{\n width: '90%',\n overflow: 'hidden',\n display: 'flex',\n justifyContent: 'flex-end',\n height: BUCKET_H + 2,\n }}\n aria-hidden\n >\n <Box\n sx={{\n display: 'inline-flex',\n alignItems: 'flex-end',\n gap,\n flexShrink: 0,\n }}\n >\n {Array.from({ length: visible }, (_, i) => {\n const isFull = i < fullCount;\n const isActive = !isFull && i === fullCount && partialFill > 0;\n const fillRatio = isFull ? 1 : isActive ? partialFill : 0;\n return (\n <Box\n key={i}\n sx={(theme) => ({\n position: 'relative',\n width: `${BUCKET_W}px`,\n height: `${BUCKET_H}px`,\n borderRadius: '1px',\n border: `1px solid ${theme.palette.border.soft}`,\n backgroundColor: theme.palette.surface.raised,\n overflow: 'hidden',\n flexShrink: 0,\n })}\n >\n <Box\n sx={(theme) => ({\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n height: `${fillRatio * 100}%`,\n backgroundColor: theme.palette.primary.main,\n opacity: isFull ? 0.85 : 0.7,\n transition: 'height .15s ease-out',\n animation: isActive ? 'v2rppulse 0.9s ease-in-out infinite' : 'none',\n })}\n />\n </Box>\n );\n })}\n </Box>\n </Box>\n );\n});\nRailBuckets.displayName = 'RailBuckets';\n\n/**\n * Live mm:ss / s readout for the per-tile \"executing\" footer. Owns a\n * 1Hz `setInterval` that only ticks while mounted — i.e. only while\n * the call is in the `Executing` state — so the cost is one timer per\n * concurrently-running tool (almost always 0 or 1).\n */\nconst RailCallTimer: React.FC<{ start: Date }> = React.memo(({ start }) => {\n const [, force] = useState(0);\n useEffect(() => {\n const t = setInterval(() => force((x) => (x + 1) % 1024), 1000);\n return () => clearInterval(t);\n }, []);\n const sec = Math.max(0, Math.floor((Date.now() - start.getTime()) / 1000));\n const m = Math.floor(sec / 60);\n const s = sec % 60;\n const display = m > 0 ? `${m}:${s.toString().padStart(2, '0')}` : `${s}s`;\n return (\n <Box\n component=\"span\"\n sx={(theme) => ({\n fontFamily: theme.typography.fontFamilyMono,\n fontSize: 8.5,\n lineHeight: 1,\n color: theme.palette.text.primary,\n })}\n >\n {display}\n </Box>\n );\n});\nRailCallTimer.displayName = 'RailCallTimer';\n\n/**\n * Per-tool rail tile — three visual stages tied to the call's status:\n * 1. Composing → open lock on top, category icon, buckets footer\n * (bars fill as args stream in, mirrors AgentActivityV2's bucket\n * indicator).\n * 2. Executing → open lock on top (pulsing), category icon, live\n * mm:ss timer footer driven by `functionDetails.start`.\n * 3. Done → closed lock on top, category icon. No footer — the\n * closed lock is the \"result is final\" signal.\n */\nconst RailToolTile: React.FC<{ call: InteractionPart }> = ({ call }) => {\n const fn = call.functionDetails;\n if (!fn?.name) return null;\n const catId = getToolCategory(fn.name);\n const meta = TOOL_CATEGORIES[catId];\n const CategoryIcon = meta.Icon;\n const isComposing =\n fn.status === 'Composing' || call.eventType === 'partial_function_call';\n const isExecuting = fn.status === 'Executing';\n const isDone = fn.status === 'Done';\n const isError = callLooksLikeError(call);\n const state = friendlyStateForCall(call);\n const label = getFriendlyLabel(fn.name, state, fn.args ?? fn.text, isError);\n\n // Streamed-byte counter for the bucket texture — only meaningful\n // while the args are still composing. Matches AgentActivityV2's\n // source: `getPartTextContent` walks `part.textDetails.textParts`\n // (one chunk per `StreamingFunctionCallUpdateContent` event), which\n // accumulates the full payload — `fn.text` alone only carries the\n // latest chunk. Computed fresh on every render so in-place growth\n // of `textParts` is picked up immediately (no `useMemo` because the\n // part object can be ref-stable while its contents mutate).\n const streamedBytes = (() => {\n const accumulated = InteractionPartUtils.getPartTextContent(call);\n if (typeof accumulated === 'string' && accumulated.length > 0) return accumulated.length;\n if (typeof fn.text === 'string' && fn.text.length > 0) return fn.text.length;\n if (typeof fn.args === 'string') return fn.args.length;\n if (fn.args != null) {\n try {\n return JSON.stringify(fn.args).length;\n } catch {\n return 0;\n }\n }\n return 0;\n })();\n\n return (\n <Tooltip title={label} placement=\"left\">\n <Box\n sx={(theme) => {\n const accent = isError\n ? theme.palette.secondary.main\n : isExecuting\n ? theme.palette.primary.main\n : isDone\n ? theme.palette.success.main\n : theme.palette.text.disabled;\n const accentBorder = isExecuting || isComposing || isError;\n return {\n width: 30,\n maxHeight: \"50px\",\n minHeight: \"40px\",\n paddingTop: 0,\n paddingBottom: 0.5,\n borderRadius: 0.875,\n backgroundColor: theme.palette.surface.raised,\n border: `1px solid ${accentBorder ? accent : theme.palette.divider}`,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0px',\n position:'relative',\n color: isDone ? theme.palette.text.secondary : theme.palette.text.primary,\n flexShrink: 0,\n transition: 'border-color .2s ease, color .2s ease',\n };\n }}\n >\n {/* Lock — open while in-flight, closed once Done. Pulses\n softly during Executing to draw the eye to the\n currently-running tool. */}\n <Box\n sx={(theme) => ({\n color: isError\n ? theme.palette.secondary.main\n : isDone\n ? theme.palette.success.main\n : isExecuting\n ? theme.palette.primary.main\n : theme.palette.text.disabled,\n display: 'flex',\n position:'relative',\n top:'3px',\n right: '-4px',\n animation: isExecuting ? 'v2rppulse 1.5s ease-in-out infinite' : 'none',\n })}\n >\n {isDone ? <LockClosedIcon size={10} /> : <LockOpenIcon size={10} />}\n </Box>\n {/* Category icon — strokes inherit the tile's `color` so\n Done tiles read as muted while in-flight ones stay\n at full text contrast. */}\n <CategoryIcon size={14} />\n {/* Stage-specific footer: buckets while composing, live\n timer while executing, nothing once Done. */}\n {isComposing && <RailBuckets bytes={streamedBytes} compact />}\n {isExecuting && fn.start && <RailCallTimer start={fn.start} />}\n </Box>\n </Tooltip>\n );\n};\nRailToolTile.displayName = 'RailToolTile';\n\n/**\n * Leaf for the collapsed-rail tool list. Subscribes to `currentMessage`\n * and `messages` *as references* (matching AgentActivityV2's pattern),\n * then derives the filtered call list with `useMemo`.\n *\n * The filter must include `function_response` alongside `function_call`\n * / `partial_function_call`: when a tool response arrives the runtime\n * mutates the original `function_call` part's `eventType` to\n * `function_response` in place (see `interactionService.ts:\n * mergeCallResponseParts`) and merges the response into its\n * `functionDetails`. Excluding `function_response` here is what makes\n * Done tiles vanish — the part is still the same object carrying the\n * same status/start/end timestamps, just relabelled. Including it keeps\n * completed calls in the chronological list, matching the expanded\n * AgentActivityV2 timeline.\n *\n * We deliberately do NOT use a `useShallow` selector that returns the\n * filtered array directly: when a part mutates in place, useShallow\n * sees the same item refs and short-circuits, leaving the rendered\n * status stale. Subscribing to the interaction refs and deriving\n * downstream guarantees we re-render on every store update broadcast\n * the same way AgentActivityV2 does.\n */\nconst ToolCallList: React.FC = React.memo(() => {\n const currentMessage = useAiChatSessionStore((s) => s.currentMessage);\n const turnOpen = useAiChatSessionStore((s) => s.turnOpen);\n\n const calls = useMemo(() => {\n // Once the turn closes the rail's tool history clears — matches\n // the \"no live activity to show\" rule used by AgentActivityV2\n // when no turn pill is selected. We only read `currentMessage`\n // (not the last completed `messages[…]` fallback) so stale\n // tiles never leak from a previous turn either.\n if (!turnOpen || !currentMessage?.parts) return [] as InteractionPart[];\n return currentMessage.parts.filter(\n (p) =>\n (p.eventType === 'function_call' ||\n p.eventType === 'partial_function_call' ||\n p.eventType === 'function_response') &&\n !p.functionDetails?.silent &&\n !!p.functionDetails?.name,\n );\n }, [currentMessage, turnOpen]);\n\n if (calls.length === 0) return null;\n\n return (\n <>\n {calls.map((c, i) => (\n <RailToolTile key={c.functionDetails?.id ?? `tile-${i}`} call={c} />\n ))}\n </>\n );\n});\nToolCallList.displayName = 'ToolCallList';\n\n/**\n * Leaf for the always-visible tokens-per-second chip at the bottom of\n * the collapsed rail. Subscribes only to `statistics?.tokensPerSecond`\n * so the rest of the panel doesn't redraw on every stats packet.\n */\nconst RailTokensPerSecond: React.FC = React.memo(() => {\n const tps = useAiChatSessionStore((s) => s.statistics?.tokensPerSecond ?? 0);\n const display = tps > 0 ? tps.toFixed(tps >= 10 ? 1 : 2) : '—';\n return (\n <Tooltip title={`${tps.toFixed(2)} tokens/s`} placement=\"left\">\n <Box\n sx={(theme) => ({\n width: 30,\n minHeight: 30,\n borderRadius: 0.875,\n backgroundColor: theme.palette.surface.raised,\n border: `1px solid ${theme.palette.divider}`,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n py: 0.25,\n })}\n >\n <Box\n sx={(theme) => ({\n fontFamily: theme.typography.fontFamilyMono,\n fontSize: 9.5,\n fontWeight: 600,\n color: theme.palette.text.primary,\n lineHeight: 1,\n })}\n >\n {display}\n </Box>\n <Box\n sx={(theme) => ({\n fontSize: 7.5,\n color: theme.palette.text.disabled,\n lineHeight: 1,\n mt: '2px',\n letterSpacing: 0.2,\n })}\n >\n tok/s\n </Box>\n </Box>\n </Tooltip>\n );\n});\nRailTokensPerSecond.displayName = 'RailTokensPerSecond';\n\n/**\n * Collapsed-rail task tile — a circular progress arc (track + filled\n * arc, like SessionUsageBadge) with the integer percentage rendered in\n * the centre. Hover surfaces a `TaskListV2` mini-list with the full\n * todo list so the user can read individual tasks without expanding\n * the panel.\n */\nconst RailTaskProgress: React.FC<{\n todoList: TodoList | null;\n completed: number;\n total: number;\n pct: number;\n}> = ({ todoList, completed, total, pct }) => {\n const theme = useTheme();\n const SIZE = 30;\n const STROKE = 2.5;\n const RADIUS = (SIZE - STROKE) / 2;\n const CIRC = 2 * Math.PI * RADIUS;\n const clamped = Math.max(0, Math.min(1, pct));\n const filled = CIRC * clamped;\n const integerPct = Math.round(clamped * 100);\n\n const tooltipBody = todoList ? (\n <Box sx={{ width: 280 }}>\n <Box\n sx={(theme) => ({\n px: 1.25,\n py: 0.75,\n borderBottom: `1px solid ${theme.palette.border.soft}`,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 1,\n })}\n >\n <Box\n sx={(theme) => ({\n fontSize: 10,\n fontWeight: 500,\n textTransform: 'uppercase',\n letterSpacing: 0.6,\n color: theme.palette.text.secondary,\n })}\n >\n Tarefas do agente\n </Box>\n <Box\n sx={(theme) => ({\n fontFamily: theme.typography.fontFamilyMono,\n fontSize: 10.5,\n color: theme.palette.text.primary,\n })}\n >\n {completed}/{total}\n </Box>\n </Box>\n <Box sx={{ p: 0.5, maxHeight: 360, overflow: 'auto' }}>\n <TaskListV2 todoList={todoList} dense />\n </Box>\n </Box>\n ) : (\n `Tarefas: ${completed}/${total}`\n );\n\n return (\n <Tooltip\n title={tooltipBody}\n placement=\"left\"\n slotProps={todoList ? railTooltipSlotProps : undefined}\n >\n <Box\n sx={{\n position: 'relative',\n width: SIZE,\n height: SIZE,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n }}\n aria-label={`Tarefas: ${integerPct}%`}\n >\n <Box\n component=\"svg\"\n width={SIZE}\n height={SIZE}\n viewBox={`0 0 ${SIZE} ${SIZE}`}\n sx={{\n position: 'absolute',\n inset: 0,\n transform: 'rotate(-90deg)',\n }}\n >\n <circle\n cx={SIZE / 2}\n cy={SIZE / 2}\n r={RADIUS}\n fill=\"none\"\n stroke={theme.palette.surface.hover}\n strokeWidth={STROKE}\n />\n <circle\n cx={SIZE / 2}\n cy={SIZE / 2}\n r={RADIUS}\n fill=\"none\"\n stroke={theme.palette.primary.main}\n strokeWidth={STROKE}\n strokeLinecap=\"round\"\n strokeDasharray={`${filled} ${CIRC}`}\n style={{ transition: 'stroke-dasharray .25s ease' }}\n />\n </Box>\n <Box\n sx={(theme) => ({\n position: 'relative',\n fontFamily: theme.typography.fontFamilyMono,\n fontSize: 9,\n fontWeight: 600,\n color: theme.palette.text.primary,\n lineHeight: 1,\n })}\n >\n {integerPct}\n </Box>\n </Box>\n </Tooltip>\n );\n};\nRailTaskProgress.displayName = 'RailTaskProgress';\n\n/**\n * Leaf for the sub-agent boxes block. Subscribes to `subAgents` only\n * here — the parent panel doesn't re-render when a sub-agent arrives\n * or finishes, just this list. SubAgentBoxV2 has its own internal\n * subscription so each box re-renders independently.\n */\nconst SubAgentList: React.FC = React.memo(() => {\n const subAgents = useAiChatSessionStore((s) => s.subAgents);\n const removeSubAgent = useAiChatSessionStore((s) => s.removeSubAgent);\n if (!subAgents || subAgents.size === 0) return null;\n const items = Array.from(subAgents.values());\n return (\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 1 }}>\n {items.map((sa) => (\n <Box key={sa.id} sx={{ position: 'relative' }}>\n <SubAgentBoxV2 subAgent={sa} defaultLevel={1} hideMessageLevel />\n {sa.completed && (\n <Tooltip title=\"Dispensar sub-agente\">\n <IconButton\n size=\"small\"\n onClick={(e) => {\n e.stopPropagation();\n removeSubAgent(sa.id);\n }}\n sx={(theme) => ({\n position: 'absolute',\n top: 4,\n right: 4,\n width: 18,\n height: 18,\n color: theme.palette.text.secondary,\n backgroundColor: theme.palette.surface.raised,\n border: `1px solid ${theme.palette.divider}`,\n '&:hover': {\n color: theme.palette.secondary.main,\n backgroundColor: theme.palette.surface.hover,\n },\n })}\n >\n <CloseIcon sx={{ fontSize: 12 }} />\n </IconButton>\n </Tooltip>\n )}\n </Box>\n ))}\n </Box>\n );\n});\nSubAgentList.displayName = 'SubAgentList';\n\nfunction tryParseMainAgentTodoList(\n eventName: string | undefined,\n eventData: string | undefined,\n subAgentId: string | undefined,\n): TodoList | null {\n // Only main-agent todo events drive the panel header progress.\n // Sub-agent events have their own SubAgentBox surface and must not\n // override the main agent's percentage / counters.\n if (!eventName || eventName !== 'todolistUpdated') return null;\n if (subAgentId) return null;\n if (!eventData) return null;\n try {\n return JSON.parse(eventData) as TodoList;\n } catch {\n return null;\n }\n}\n\nfunction formatElapsed(ms: number): string {\n if (ms <= 0) return '00:00';\n const totalSec = Math.floor(ms / 1000);\n const m = Math.floor(totalSec / 60).toString().padStart(2, '0');\n const s = (totalSec % 60).toString().padStart(2, '0');\n return `${m}:${s}`;\n}\n\nexport const RunProgressPanelV2: React.FC<RunProgressPanelV2Props> = ({\n width = PANEL_WIDTH,\n title: _ignoredTitle,\n onPause,\n onCancel,\n hideReasoning = true,\n collapsed: collapsedProp,\n onCollapsedChange,\n defaultCollapsed = false,\n}) => {\n void _ignoredTitle;\n const theme = useTheme();\n const [internalCollapsed, setInternalCollapsed] = useState(defaultCollapsed);\n const collapsed = collapsedProp ?? internalCollapsed;\n const setCollapsed = (next: boolean) => {\n if (collapsedProp === undefined) setInternalCollapsed(next);\n onCollapsedChange?.(next);\n };\n\n // Top-level subscriptions are restricted to the structural fields\n // — the ones that drive layout / chrome / progress bar. The\n // churn-y per-WS-packet fields (currentMessage, messages, subAgents)\n // are subscribed to inside leaf components below so that a packet\n // arriving only re-renders the leaf node it actually affects, not\n // the entire panel.\n const turnOpen = useAiChatSessionStore((s) => s.turnOpen);\n const lastToolEvent = useAiChatSessionStore((s) => s.lastToolEvent);\n const connectionStatus = useAiChatSessionStore((s) => s.connectionStatus);\n const { agentGatewayService } = useAiChatServices();\n\n useEffect(() => {\n setInternalCollapsed(defaultCollapsed);\n }, [defaultCollapsed])\n\n // Map ConnectionState → header dot color + label.\n const connectionDisplay = useMemo(() => {\n switch (connectionStatus) {\n case ConnectionState.Connected:\n return {\n color: theme.palette.success.main,\n label: turnOpen ? 'Conexão Ativa · Executando' : 'Conexão Ativa',\n // Pulse always-on while the connection is up, even\n // when no turn is in flight — the dot reads as a\n // \"heartbeat\" indicator of the WS link, matching\n // the user's mental model that \"green + alive =\n // pulsing\". Other UI (progress arc, tool list,\n // elapsed clock) already differentiate \"running\"\n // from \"idle\".\n pulse: true,\n };\n case ConnectionState.Connecting:\n return { color: theme.palette.primary.main, label: 'Conectando…', pulse: true };\n case ConnectionState.Disconnected:\n return { color: theme.palette.secondary.main, label: 'Desconectado', pulse: false };\n case ConnectionState.Idle:\n default:\n return { color: theme.palette.text.disabled, label: 'Sessão Inativa', pulse: false };\n }\n }, [connectionStatus, turnOpen, theme]);\n\n // Pause / continue / stop — handled internally by the panel using the\n // gateway service from the AiChat context. Suspend state lives in the\n // shared session store (`AiChatState.suspendState`) so PromptV2's\n // send-button cluster and this panel's header agree on the same\n // value: pausing in one surface flips both, sending a follow-up\n // resets both, the turn closing resets both. Hosts can still\n // override the handlers by passing custom ones, or hide them by\n // passing `null`.\n const suspendState = useAiChatSessionStore((s) => s.suspendState);\n const setSuspendState = useAiChatSessionStore((s) => s.setSuspendState);\n const isSuspending = suspendState === 'suspending';\n const isSuspended = suspendState === 'suspended';\n\n const defaultPause = useCallback(async () => {\n if (!(agentGatewayService instanceof AgentGatewayWSAsync)) return;\n if (isSuspended) {\n // \"Continue\" — send a canonical \"Continue\" message through\n // the gateway. `sendMessageInternal` clears its own\n // `suspendState` and starts a new interaction with that\n // text, which the agent receives as a user instruction to\n // resume from the pause point. The store's suspendState is\n // pre-cleared here so the cluster flips back to \"idle\"\n // immediately instead of waiting for the next turn-open\n // echo.\n //\n // NB: this used to call `agentGatewayService.cancelSuspend()`,\n // which is `turnComplete` in disguise — it FINALIZES the\n // partial output and closes the turn (i.e. the opposite of\n // \"continue\"). Bug surfaced when the pause control on the\n // panel was wired to that branch.\n setSuspendState('idle');\n try {\n await agentGatewayService.sendMessage(new ClientMessage('Continue', 'text/plain'));\n } catch (err) {\n console.error('Failed to send Continue message', err);\n }\n return;\n }\n try {\n setSuspendState('suspending');\n const ok = await agentGatewayService.suspend();\n setSuspendState(ok ? 'suspended' : 'idle');\n } catch (err) {\n console.error('Failed to suspend agent', err);\n setSuspendState('idle');\n }\n }, [agentGatewayService, isSuspended, setSuspendState]);\n\n const defaultCancel = useCallback(() => {\n if (!(agentGatewayService instanceof AgentGatewayWSAsync)) return;\n try {\n agentGatewayService.stopStream(true);\n } catch (err) {\n console.error('Failed to cancel turn', err);\n }\n setSuspendState('idle');\n }, [agentGatewayService, setSuspendState]);\n\n // Resolve the actual handlers — `undefined` means \"use default\", `null`\n // means \"hide this button\".\n const resolvedPause = onPause === null ? null : onPause ?? defaultPause;\n const resolvedCancel = onCancel === null ? null : onCancel ?? defaultCancel;\n\n const todoList = useMemo(\n () => tryParseMainAgentTodoList(\n lastToolEvent?.eventName,\n lastToolEvent?.eventData,\n lastToolEvent?.subAgentId,\n ),\n [lastToolEvent?.eventName, lastToolEvent?.eventData, lastToolEvent?.subAgentId],\n );\n\n const completed = todoList?.items.filter(\n (i) => String(i.status).toLowerCase() === 'completed',\n ).length ?? 0;\n const total = todoList?.items.length ?? 0;\n const pct = todoList?.percentComplete != null && Number.isFinite(todoList.percentComplete)\n ? Math.max(0, Math.min(1, todoList.percentComplete))\n : total > 0 ? completed / total : 0;\n\n if (collapsed) {\n return (\n <Box\n component=\"aside\"\n onClick={() => setCollapsed(false)}\n sx={(theme) => ({\n minWidth: RAIL_WIDTH,\n display: 'inline-flex',\n backgroundColor: theme.palette.background.default,\n borderLeft: `1px solid ${theme.palette.divider}`,\n flexDirection: 'column',\n alignItems: 'center',\n py: 1.25,\n gap: 1.25,\n height: '100%',\n minHeight: 0,\n overflow: 'hidden',\n '& :hover': {\n cursor: 'pointer'\n }\n })}\n >\n <style>{`${pulseKeyframes}${spinKeyframes}`}</style>\n\n {/* Expand — uses PanelIcon (inverted via rotate(180deg) so\n the inner divider sits on the right, reading as\n \"panel returns from the right edge\"). Replaces the\n earlier chevron, which read ambiguously next to the\n other circular tiles. */}\n <Tooltip title=\"Expandir painel\" placement=\"left\">\n <IconButton\n size=\"small\"\n onClick={() => setCollapsed(false)}\n sx={(theme) => ({\n width: 30,\n height: 30,\n color: theme.palette.text.primary,\n backgroundColor: theme.palette.surface.raised,\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: 0.875,\n transform: 'rotate(180deg)',\n '&:hover': {\n backgroundColor: theme.palette.surface.hover,\n color: theme.palette.primary.main,\n },\n })}\n >\n <PanelIcon size={14} />\n </IconButton>\n </Tooltip>\n\n {/* Connection indicator — filled dot + pulse for the WS\n link (matches the expanded header), with a thin\n spinning arc orbiting it whenever the agent has a\n turn in flight. The arc reuses the rail's existing\n `v2rpspin` keyframes; one side of the ring is\n transparent so the rotation reads as a moving arc\n rather than a static ring. */}\n <Tooltip title={connectionDisplay.label} placement=\"left\">\n <Box\n sx={{\n position: 'relative',\n width: 30,\n height: 30,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n }}\n >\n {turnOpen && (\n <Box\n aria-hidden\n sx={{\n position: 'absolute',\n width: 22,\n height: 22,\n borderRadius: '50%',\n border: `2px solid ${connectionDisplay.color}`,\n borderTopColor: 'transparent',\n animation: 'v2rpspin 1.1s linear infinite',\n }}\n />\n )}\n <Box\n sx={{\n width: 10,\n height: 10,\n borderRadius: '50%',\n backgroundColor: connectionDisplay.color,\n animation: connectionDisplay.pulse\n ? 'v2rppulse 1.5s ease-in-out infinite'\n : 'none',\n }}\n />\n </Box>\n </Tooltip>\n\n {/* Task progress — circular arc with the integer % in the\n middle. Hover surfaces the full TaskListV2 in a\n rich tooltip so individual tasks stay reachable\n without expanding the panel. */}\n {total > 0 && (\n <RailTaskProgress\n todoList={todoList}\n completed={completed}\n total={total}\n pct={pct}\n />\n )}\n\n {/* Every tool call in the turn, stacked vertically.\n Wrapped in a flex-1 scrollable column so the list\n can grow with the turn without pushing the tokens\n chip off the rail — when it overflows, the inner\n container scrolls instead of the whole rail. The\n scrollbar is hidden (too narrow to be useful at\n 60px) but mouse-wheel scrolling still works. */}\n <Box\n sx={{\n flex: 1,\n minHeight: 0,\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: 1.25,\n overflowY: 'auto',\n overflowX: 'hidden',\n py: 0.25,\n scrollbarWidth: 'none',\n '&::-webkit-scrollbar': { display: 'none' },\n }}\n >\n <ToolCallList />\n </Box>\n\n <RailTokensPerSecond />\n </Box>\n );\n }\n\n return (\n <Box\n component=\"aside\"\n sx={(theme) => ({\n width: !collapsed ? width : '5%',\n maxWidth: '22%',\n minWidth: '22%',\n // flex: '0 0.1 3vw',\n backgroundColor: theme.palette.background.paper,\n borderLeft: `1px solid ${theme.palette.divider}`,\n display: 'inline-flex',\n flexDirection: 'column',\n minHeight: 0,\n })}\n >\n <style>{pulseKeyframes}</style>\n\n {/* Header */}\n <Box sx={(theme) => ({ p: 1.75, borderBottom: `1px solid ${theme.palette.divider}` })}>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <Box\n sx={{\n width: 6,\n height: 6,\n borderRadius: '50%',\n backgroundColor: connectionDisplay.color,\n animation: connectionDisplay.pulse ? 'v2rppulse 1.5s ease-in-out infinite' : 'none',\n }}\n />\n <Typography sx={(theme) => ({ fontSize: 12.5, fontWeight: 500, color: theme.palette.text.primary, flex: 1 })}>\n {connectionDisplay.label}\n </Typography>\n {turnOpen && total > 0 && (\n <Typography sx={(theme) => ({ fontSize: 10, color: theme.palette.text.disabled, fontFamily: theme.typography.fontFamilyMono })}>\n {completed}/{total}\n </Typography>\n )}\n <Tooltip title=\"Recolher painel\">\n <IconButton\n size=\"small\"\n onClick={() => setCollapsed(true)}\n sx={(theme) => ({ color: theme.palette.text.secondary, p: 0.25, '&:hover': { color: theme.palette.primary.main } })}\n >\n <PanelIcon size={13} />\n </IconButton>\n </Tooltip>\n </Box>\n {turnOpen && (\n <>\n <Box\n sx={(theme) => ({\n mt: 1.25,\n height: 4,\n backgroundColor: theme.palette.surface.hover,\n borderRadius: 1,\n overflow: 'hidden',\n })}\n >\n <Box\n sx={(theme) => ({\n width: `${Math.round(pct * 100)}%`,\n height: '100%',\n backgroundColor: theme.palette.primary.main,\n transition: 'width .25s ease',\n })}\n />\n </Box>\n <Box sx={{ display: 'flex', justifyContent: 'space-between', mt: 0.75 }}>\n <ElapsedClock />\n <Typography sx={(theme) => ({ fontSize: 10.5, color: theme.palette.text.secondary, fontFamily: theme.typography.fontFamilyMono })}>\n em execução…\n </Typography>\n </Box>\n </>\n )}\n </Box>\n\n {/* Body: tasks + sub-agents + activity, each in its own subcard.\n `minHeight: 0` is the unlock that lets `overflow: auto`\n kick in inside this nested flex column — without it the\n body stretches to fit content and the scroll never engages\n (TaskList + Activity just push the panel taller). */}\n <Box sx={{ flex: 1, minHeight: 0, overflow: 'auto', p: 1.25, display: 'flex', flexDirection: 'column', gap: 1.25 }}>\n <SectionCard title=\"Tarefas do agente\">\n {todoList ? (\n <TaskListV2 todoList={todoList} dense />\n ) : (\n <Typography\n sx={(theme) => ({\n fontSize: 11,\n color: theme.palette.text.disabled,\n fontStyle: 'italic',\n px: 1,\n py: 0.5,\n })}\n >\n Nenhuma tarefa planejada ainda.\n </Typography>\n )}\n </SectionCard>\n\n <SubAgentList />\n\n <SectionCard title=\"Atividades\">\n <AgentActivityV2\n hideReasoning={hideReasoning}\n order=\"chronological\"\n showTurnHistory\n emptyState={\n <Typography\n sx={(theme) => ({\n fontSize: 11,\n color: theme.palette.text.disabled,\n fontStyle: 'italic',\n px: 1,\n py: 0.5,\n })}\n >\n {turnOpen\n ? 'Aguardando próxima ação do agente…'\n : 'Selecione um turno acima para ver as atividades.'}\n </Typography>\n }\n />\n </SectionCard>\n </Box>\n\n {/* Connection / session-usage strip with the inline\n Pause/Stop control. StreamStatistics in compact mode\n renders mono stats on the left, the session-size circle\n badge in the middle, and our pause control on the right\n — replacing the previous separate footer + bar layout. */}\n {(resolvedPause || resolvedCancel) && (\n <Box\n sx={(theme) => ({\n borderTop: `1px solid ${theme.palette.divider}`,\n backgroundColor: theme.palette.background.default,\n px: 0.5,\n py: 0.5,\n '& .MuiTypography-caption': { color: theme.palette.text.secondary },\n })}\n >\n <StreamStatistics\n compact\n pauseControl={\n (resolvedPause || resolvedCancel)\n ? {\n turnOpen,\n suspended: isSuspended,\n suspending: isSuspending,\n onPause: resolvedPause ?? defaultPause,\n onCancel: resolvedCancel ?? defaultCancel,\n }\n : undefined\n }\n />\n </Box>\n )}\n </Box>\n );\n};\n\nRunProgressPanelV2.displayName = 'RunProgressPanelV2';\n"],"names":["AiChatServiceContext","createContext","useAiChatServices","__name","context","useContext","useAiChatSessionStore","selector","sessionStore","useStore","WARNING_THRESHOLD","BASE_MULTIPLIER","IDLE_TIMEOUT","DEFAULT_WAIT_TIME","MAX_RETRY_WAIT","_SessionStateManagerService","agentGatewayService","sessionService","artifactService","options","__publicField","state","prevState","ConnectionState","sessionId","session","i","a","_context","loadingType","_a","_b","socketSessionId","_c","_d","error","stoneCold","closeTurn","_identification","now","nextWait","SessionStateManagerService","createAiChatStore","onRenderPrompt","createStore","devtools","set","get","SkillLevel","sendingMessage","_instructions","currentMessage","toolEvent","active","msg","messages","existingIndex","m","status","loadingError","loading","stats","updatedSession","subAgentId","interaction","name","prev","next","existing","AiChatProvider","agentContext","serverBaseUrl","user","HttpSessionService","HttpArtifactService","externalStorageService","externalEventBusService","externalNotificationPort","showPromptHistory","showStatistics","showToolCalls","showStickyHeader","autoCreateSession","showModelSelector","showSessionInfo","showTaskList","showSubAgents","compactPrompt","showConnectionState","hidePromptInput","friendlyMode","partRenderers","uiTools","showPersona","formatTimestamp","resolvePersona","userMessageRenderer","onMessage","onTurnComplete","onTurnOpen","onGetWebSocketProvider","onConnectionStateChange","onSessionCreated","onSessionEstablished","onError","onGatewayReady","onVisibleQuestionChange","onFirstToken","children","callbacksRef","useRef","lastInformationRef","theme","useTheme","bindPromise","eventBusService","useMemo","EventBusService","storageService","LocalStorageService","defaultNotificationPort","n","enqueueSnackbar","notificationPort","createAiChatSessionStore","useEffect","subscriptMethod","_e","_f","_g","information","userRef","getToken","useCallback","ws","WebSocketConnecionV2","gw","AgentGatewayWSAsync","sessionStateManagerService","id","handleTurnComplete","_interactionId","handleMessage","handleFirstToken","details","handleTurnOpen","interactionId","resolvedSessionId","mgr","stableOnVisibleQuestionChange","question","localShowToolCalls","setLocalShowToolCalls","useState","localFriendlyMode","setLocalFriendlyMode","currentModel","setCurrentModelState","currentModelRef","setCurrentModel","modelId","prevVendor","getModelVendor","newVendor","sendMessage","text","ui","gatewayOptions","clientMessage","ClientMessage","services","LastPrompts","onPromptSelected","forceExpanded","cancelTimeout","prompts","setPrompts","isExpanded","setIsExpanded","promptState","usePromptState","scrollContainerRef","listItemRefs","loadPrompts","handleKeyDown","e","handleMouseUp","savedPrompts","handlePromptClick","promptText","promptJson","toggleExpanded","connectionColor","getConnectionStateColor","borderColor","lastPrompt","truncatedText","PromptUtils","jsxs","Box","jsx","Stack","Typography","ChevronLeft","ChevronRight","Collapse","List","prompt","index","ListItem","el","ListItemText","markerStyles","LinearProgressBarWithMarkers","value","valueBuffer","markers","sx","cappedValue","LinearProgress","marker","Tooltip","base","paths","size","rest","SendIcon","p","Fragment","SearchIcon","ChatIcon","ChartIcon","TableIcon","PlusIcon","PanelIcon","SparkleIcon","CheckIcon","ChevronIcon","ChevronRightIcon","TrashIcon","PinIcon","BrainIcon","DashboardIcon","DataExplorerIcon","ComposerIcon","CloseIcon","PauseIcon","StopIcon","HistoryIcon","MenuIcon","FileIcon","TerminalIcon","CodeIcon","GlobeIcon","UsersIcon","ListCheckIcon","LockOpenIcon","LockClosedIcon","ToolIcon","MONO_FONT","SessionUsageBadge","info","integerPercent","overThreshold","tooltipBody","SIZE","STROKE","RADIUS","CIRC","clampedRatio","dashFilled","trackColor","arcColor","textColor","StreamStatistics","compact","pauseControl","initialSessionInformation","bufferSize","setBufferSize","sessionInformation","setSessionInformation","currentSession","streamStats","connectionStatus","acc","curr","showBuffering","problemCount","showProblems","formatElapsed","elapsed","minutes","seconds","formatFileSize","bytes","getPerSecondColor","tokensPerSecond","highest","getGreyScale","ratio","scale","grey","captionSx","renderPauseButton","turnOpen","suspended","suspending","onPause","onCancel","showStop","enabled","IconButton","Timer","TimerIcon","StorageIcon","BufferingIcon","HelpOutlineIcon","LinerBackgroundProgress","completedColor","unCompletedColor","StatusIcon","CheckCircle","Pending","ErrorIcon","RadioButtonUnchecked","statusColor","TaskList","lastToolEvent","todoList","currentInteraction","completedCount","item","totalCount","position","tasksSummary","currentItem","onGoingSummary","AVAILABLE_MODELS","ModelConfig","config","speedColor","qualityColor","ModelSelector","inline","anchorEl","setAnchorEl","handleOpen","handleClose","handleSelect","currentConfig","CurrentIcon","SmartToyOutlinedIcon","listContent","Divider","vendor","isSelected","Icon","alpha","CheckCircleIcon","Chip","Popover","PromptEditorDialog","ChatSettings","Prompt","forceMessage","onHeightChange","isLandscapeInSmallScreen","setIsLandscapeInSmallScreen","isMobile","useMediaQuery","isLessThenMedium","isSending","setIsSending","isSuspending","setIsSuspending","isSuspended","setIsSuspended","forceTooltip","setForceTooltip","setForceExpanded","promptContainer","containerWidth","containerHeight","useContainerRectangle","messageNumber","setMessageNumber","inputRef","lastTimeout","setLastTimeout","pushNotification","isTurnOpen","hasTodoList","isPromptEditorOpen","setIsPromptEditorOpen","windowWidth","windowHeight","awaitingState","handleSend","messageOverride","stopOverride","message","handlePromptSelected","handleOpenEditorOrPauseOrSuspend","handleClosePromptEditor","handlePromptApply","handlePromptApplyAndSend","handleBlur","getConnectionIcon","CircularProgress","PlayCircle","getPlaceholder","getTooltipText","getCurrentState","isConnecting","resolvedTyle","TextField","PauseCircle","StopCircle","SettingsOverscanIcon","t","module","require$$0","this","r","o","s","l","u","b","c","d","f","h","Ca","v","g","y","E","k","j","w","C","x","O","S","A","_","Zt","M","F","P","R","D","N","global","I","B","z","L","q","T","V","K","W","U","H","$","J","Y","G","Q","Z","X","ee","te","ne","ae","re","oe","se","ie","ce","le","ue","be","pe","he","fe","me","ve","ge","ye","Ee","ke","je","we","Ce","xe","Oe","Se","Ae","Me","Fe","Pe","Re","De","Ne","Ie","Be","ze","Le","qe","Te","Ve","Ke","We","Ue","He","$e","Je","Ye","Ge","Qe","Ze","Xe","et","tt","nt","at","rt","ot","st","it","ct","lt","ut","bt","dt","pt","ht","ft","mt","vt","gt","yt","Et","kt","jt","wt","Ct","xt","Ot","St","At","_t","Mt","Ft","Pt","Rt","Dt","Nt","It","Bt","zt","Lt","qt","Tt","Vt","Kt","Wt","Ut","Ht","$t","Yt","Jt","Gt","Qt","Xt","en","tn","nn","an","rn","on","sn","cn","ln","un","bn","dn","pn","hn","fn","mn","vn","gn","yn","En","kn","jn","wn","Cn","xn","On","Sn","An","_n","Mn","Fn","Pn","Rn","Dn","Nn","In","Bn","zn","Ln","qn","Tn","Vn","Kn","Wn","Un","Hn","$n","Jn","sa","Yn","Gn","Qn","Zn","Xn","ea","ta","na","aa","ra","oa","ia","ca","la","ua","ba","da","pa","ha","ga","fa","ma","va","ya","Ea","ka","ja","wa","ReactJson","ReactJsonView","TabPanel","props","other","a11yProps","SessionDataDialog","open","onClose","setSession","tabValue","setTabValue","editedSession","setEditedSession","indentation","setIndentation","handleTabChange","_event","newValue","handleJsonEdit","edit","formatInteractionsAsText","interactions","response","part","sessionToDisplay","Dialog","DialogTitle","Close","DialogContent","DialogActions","Button","handleSliderChange","_activeThumb","Tabs","Tab","Slider","MAX_VISIBLE","LastPromptsV2","triggerRef","handlePick","handleClearAll","visible","number","TEXTAREA_MIN_HEIGHT","TEXTAREA_MAX_HEIGHT","TRIGGER_CHARS","triggerTypeFor","ch","tokenizeForHighlight","tokens","end","prevIsWs","PromptV2","forwardRef","seedDraft","showLastPrompts","placeholderText","inputPrefix","topSlot","borderRadius","topSlotCollapsible","topSlotExpanded","showConfigOptions","onTopSlotExpandedChange","inputMinHeight","onBeforeSend","onSubmit","sendButtonProps","allowEmptyDraft","submitAdornment","onSlashQuery","onAtQuery","slashColor","atColor","hashColor","enableHashDatePicker","hashDateFormat","ref","setShowToolCalls","setFriendlyMode","draft","setDraft","menuAnchor","setMenuAnchor","sending","setSending","sessionDialogOpen","setSessionDialogOpen","containerRef","attachments","setAttachments","isDraggingOver","setIsDraggingOver","previewAttachment","setPreviewAttachment","dragCounterRef","fileInputRef","iconColor","themeMode","addFiles","files","list","file","resolve","reject","reader","removeAttachment","openFilePicker","activeTrigger","setActiveTrigger","triggerItems","setTriggerItems","triggerLoading","setTriggerLoading","triggerHighlight","setTriggerHighlight","caretCoords","setCaretCoords","triggerFetchSeqRef","triggerDebounceRef","triggerFetchersRef","highlightActive","highlightTokens","highlightContentRef","caretMirrorRef","mirror","detectTrigger","caretPos","measureCaret","textarea","computed","prop","taRect","markerRect","mirrorRect","lineHeight","seq","liveFetcher","items","err","insertTriggerItem","before","after","caret","insertDate","date","formatted","triggerAnchor","top","left","syncTriggerFromTextarea","detected","coords","setTurnOpen","isConnected","suspendState","setSuspendState","handleToggleConnection","checked","resolvedMinHeight","fit","observer","textOverride","usingDraft","pendingAttachments","clientImages","commaIdx","base64","handleSelectFromHistory","len","isDisabled","canSendOverGateway","sendDisabled","placeholder","handleToggleTopSlot","pillBorderRadius","att","tok","idx","color","ok","Popper","Paper","LocalizationProvider","AdapterDayjs","StaticDatePicker","dayjs","Menu","MenuItem","Switch","ListItemIcon","DataObjectIcon","Modal","reactNodeToText","node","React","SyntaxHighlighter","HighlighterStyle","prismLight","style","markdown","markup","python","javascript","typescript","sql","json","bash","css","csharp","yaml","rootImageUrl","getServerBaseUrl","MarkdownExtendedContext","useMarkdownExtendedDefaults","InlineIcon","iconCode","SentimentSatisfiedAlt","ThumbUp","ThumbDown","Favorite","Star","Warning","Error","EmojiEmotions","Lightbulb","Info","Help","BugReport","Security","Speed","TrendingUp","TrendingDown","AutoGraph","AutoStories","DataExploration","MarkdownExtended","_propPreStyle","onLinkClicked","partial","mode","variantProp","ctxDefaults","processedText","componentsFull","className","src","disabled","TaskAlt","RadioButtonUncheckedOutlined","href","OpenInNewIcon","Download","match","language","getSyntaxHighlighter","FormatQuoteIcon","components","ReactMarkdown","url","remarkGfm","rehypeRaw","AiChatDrawer","anchor","width","title","externalOnVisibleQuestionChange","aiChatProps","visibleQuestion","setVisibleQuestion","handleVisibleQuestionChange","displayTitle","Drawer","AiChat","popIn","keyframes","AiChatFloating","fabContent","height","elevation","setOpen","mappedQuestion","promptAsString","panelBottom","panelRight","panelLeft","panelTop","Slide","TipsAndUpdates","isAskUser","TextPart","preview","onGoing","textContent","InteractionPartUtils","styleAutor","ANALYTICS_AGENT_NAME","LlmResponseRender","ThoughtPart","isLastInlineInGroup","collapsed","setCollapsed","contentRef","thoughtContent","throughFor","thoughtLabel","onDrawCodeBlock","_content","_className","LoadingDots","spacing","Stopwatch","showButton","startingPoint","stopPoint","elapsedSeconds","setElapsedSeconds","intervalRef","reset","formatTime","MessageNonTextDisplay","icon","content","thinkingContentRef","handleViewClick","event","preStyle","functionStatus","isFunctionCall","EventType","functionStartTime","functionEndTime","showFull","parallaxAnimationClass","boxColor","boxBackground","boxBorder","shimmer","VisibilityIcon","splitBigLinesWithSpaces","extractTableFromSql","query","extractTableNames","coerceSqlString","args","coerceToString","extractColumnNames","columns","tables","friendlyToolConfigRegistry","columnNames","table","getFriendlyLabel","toolName","isError","parts","pureToolName","entry","pretty","label","detail","BYTES_PER_BUCKET","BUCKET_HEIGHT","BUCKET_WIDTH","COMPACT_THRESHOLDS","ByteBuckets","streamedBytes","fullBuckets","partialFill","totalBuckets","visibleBuckets","formatCompact","decimals","addSuffix","abs","threshold","suffix","formatBytes","isFull","isPartial","fillRatio","isActive","FriendlyPartDisplay","startTime","endTime","elapsedMs","boxedIconStyle","deriveFunctionDisplay","prettiffyPythonFunctionName","rawData","data","argChartType","_h","_i","_j","raw","_k","responseForDisplay","_l","MAX_DATA_LENGTH","FRIENDLY_STATE_MAP","FunctionPart","display","friendlyState","markdownContent","_cl","WaitingPart","AlarmOn","SuspendedPart","FrontHand","BoxedPart","QuestionMark","asObj","asStr","coerceQuestionnaire","obj","rawQs","questions","select","readQuestionnaire","parsed","fromObj","parseAnswers","sentinelOf","AskUserPart","embedded","submitted","setSubmitted","answers","setAnswers","callId","questionnaire","serverAnswer","effective","locked","qid","outerSx","sentinel","sel","note","primary","extraNote","answered","getState","selectedFor","noteFor","anyNote","instantSubmit","showSubmit","buildPayload","submit","payload","pickSingle","opt","cur","nextState","toggleMulti","setNote","FormGroup","FormControlLabel","Checkbox","EnvironmentContext","EnvironmentProvider","useEnvironment","ctx","useEnvironmentOptional","InertEnvironmentProvider","parent","inert","out","key","stripUiMarker","parseClientOutput","parseUiArgs","createUiToolRegistry","entries","builder","render","opts","run","frozen","rawName","exact","best","bestLen","UiToolDispatcher","env","fd","clientOutput","UiToolActionRunner","rawArgs","fired","chip","setChip","DEFAULT_PART_RENDERERS","classifyPart","MessagePart","kind","Renderer","prevProps","nextProps","MONO","defaultFormatTimestamp","MessagePersona","isUser","persona","initials","time","suppressSlottedUiParts","isUi","slotOf","referenced","MessageAgent","container","appendWaitingPart","messagesRef","isConnectionOpen","setIsLessThenMedium","ro","showSuspended","agentPartsCount","traillingPart","plannigPart","lastPart","interactionService","InteractionService","MockEventBusService","groups","partsToConsider","getStyleGroup","group","useColumn","getMessagePart","tempPart","useBlockStyle","groupIndex","groupsToRender","MAX_TODO_ITEMS_LEVEL2","SubAgentBox","subAgent","level","setLevel","setTodoList","boxRef","isRunning","cycleLevel","progressPct","progressPctSmall","todoItemsForLevel2","hasMoreItems","renderTodoItems","SmartToy","HourglassEmpty","ExpandMore","KeyboardDoubleArrowDown","KeyboardDoubleArrowUp","MessageUser","iconAnimation","setIconAnimation","UserMessage","userUiParts","hasThoughtDetails","hasErrors","timer","handleTipsClick","handleTipsClose","allThoughtDetails","allErrorParts","QuestionAnswerIcon","WarningAmberRounded","ModelTraining","Message","StickyQuestionHeader","messageRefs","currentSessionId","messagesEndRef","setQuestion","isHeaderExpanded","setIsHeaderExpanded","debouncedSetQuestionInView","useDebouncedCallback","questionData","maxLines","maxHeight","candidates","interactionQuestion","isEmpty","lastQuestion","AlertDialog","severity","onRetry","actionType","getSeverityIcon","getSeverityColor","DialogContentText","Alert","AlertTitle","_ErrorBoundary","Component","_error","errorInfo","ErrorBoundary","CurrentMessage","ErrorBondary","AskUserSheet","promptHeight","parked","lastParked","setLastParked","toRender","colorMap","sessionActive","lastActivity","useShallow","idleTime","setIdleTime","getSmallStatus","TypeConnectionState","useInterval","showIdle","decisionWindow","secondsLeft","serverUrlBase","ChatPane","currentModelConfig","connectionState","setLastActivity","isTouchDevice","chatContainerRef","didInitialScrollRef","setForceMessage","showNewContentIndicator","setShowNewContentIndicator","showScrollLock","setShowScrollLock","startVanish","setStartVanish","forceToolTip","dashboardUrl","setDashboardUrl","isMouseOverLock","setIsMouseOverLock","isScrollLockedRef","lastScrollToBottom","lastScrollPosition","setPromptHeight","alertDialog","setAlertDialog","showAlert","closeAlertAndRetry","_agentInteraction","handleUnlock","handleNewMessage","handleMessageSent","onMessageError","clear","sortableTable","SortableTable","hasMessages","scrollToBottom","observerRef","discount","handleGlobalMouseMove","handleGlobalMouseUp","mutationObserver","askQuestion","triggerDownload","handleLinkAction","link","action","parameter","extractLinkAction","immediate","handleScrollEnd","currentPosition","lastPosition","scrollALittleUp","handleTouchMove","enableAnimation","handleLock","getResponsiveChatContainerStyles","_message","_interaction","_mergeDetails","Fade","LockOpen","Lock","KeyboardArrowDownIcon","newHeight","AiChatInner","bordered","onToolEvent","bottomSlot","onToolEventRef","useImperativeHandle","handler","eventName","eventData","hasStyling","providerProps","ArtifactRender","artifact","onExpand","renderMode","naked","fullImage","imageLoading","imageError","geticon","mimeType","HtmlOutlinedIcon","FileDownloadOutlined","PictureAsPdf","AttachFileTwoTone","getMimeTypeCard","getHtmlContent","_html","isLoading","getEmbbedImage","artifactLabel","imageUrl","handleImageLoad","handleImageError","ButtonBase","SettingsOverscan","DelayTextComponent","totalTime","initialDelay","useMarkdown","displayedText","setDisplayedText","isFinishedRef","charArray","chunkArray","chunk","baseDelay","variationRange","accumulatedText","currentTime","timeouts","initialSpace","textToShow","randomVariation","delay","timeout","JSX_LANGS","LOADING_DIV_RE","LOADING_DIV_RE_G","TICK_RE_G","DEFAULT_MAX_CHARS_FOR_FULL","STRIDE","CLOSED_FENCE_RE","computeProgress","rawText","maxCharsForFull","lastDivEnd","ticks","count","maxTicks","extractTrailingUnclosedFence","fenceRe","lastFenceMatch","afterFence","partialCode","SLOT_RE","paragraphText","kids","parseContentBlocks","progress","trailingPartialCode","unclosed","ast","unified","remarkParse","blocks","buffer","pendingLoading","flushBuffer","md","toMarkdown","slotText","sm","LIVE_TSX_DEFAULT_MAX_CHARS_FOR_FULL","LiveTsxConfigContext","useLiveTsxMaxCharsForFull","LiveTsxConfigProvider","scope","deferredContent","useDeferredValue","block","uiPart","GLOBAL_KEY","getRegistryExtensions","extendModuleRegistry","specifier","exports","ext","SCOPE_KEY","getScopeExtensions","extendDefaultScope","heavyModulesPromise","loadHeavyModules","MuiMaterial","Icons","Recharts","getModuleRegistry","UILibrary","useEnvironmentDirect","getDefaultJsxScope","unitFromIndex","BAR_COUNT","ChartSkeleton","isDark","barBase","barHighlight","barStroke","lineStroke","axisStroke","bars","linePoints","barHeights","lineHeights","vbW","vbH","padX","padY","plotBottom","plotTop","plotH","slot","barW","barsLocal","hPx","linePointsLocal","cx","cy","MetricSkeleton","showIcon","showChangeRow","Skeleton","MetricGroupSkeleton","metrics","TableSkeleton","rows","colIndices","rowIndices","headerBg","headerBorder","rowBorder","headerSkeletonBg","IFrameSkeleton","GeneratingVisualization","accent","accentLight","ink","start","dWidth","baseline","cycleSec","accOverall","allHeightsSum","sum","progressHeight","barFill","bar","diff","fill","AutoAwesomeIcon","LIVE_TSX_INVALID_SENTINEL","checkScopeBindings","serverJs","accessRe","missingModules","missingExports","propName","mod","lines","compileToComponent","bindingError","SKELETON_TAG_RE","SKELETON_MAP","detectSkeleton","code","tag","_JsxErrorBoundary","JsxErrorBoundary","LiveJsxBlock","extraScope","registry","setRegistry","cancelled","defaults","result","errorFallback","phase","setPhase","wrapperRef","finalRef","useLayoutEffect","wrapper","H1","final","H2","SkeletonComponent","skeletonChild","finalChild","ThemeProvider","CssBaseline","themeTokens","themeOptions","v2Theme","createTheme","V2_CHART_PALETTE","v2Chip","v2IconBtn","v2Card","v2MonoMeta","v2SectionLabel","Sparkline","strokeWidth","resolvedColor","gradientId","useId","max","min","range","dx","linePath","areaPath","AppShellV2","appBar","rail","Outlet","RAIL_WIDTH","AppRailV2","views","logo","footer","pathname","useLocation","view","Link","APPBAR_V2_HEIGHT","AppBarV2","productName","breadcrumb","rightAccessory","onSearchClick","searchPlaceholder","hideSearch","searchSlot","hamburger","DRAWER_WIDTH","MOBILE_NAV_DEFAULT","MobileDrawerV2","navItems","userProfile","sessionsList","dashboardsList","closeOnNavigate","contextPanel","navList","useResponsiveLayout","mobile","tablet","desktop","tryParseMainAgentTodoList","pulseKeyframes","ToolCountChip","humanizeEventName","RunProgressStripV2","latestCall","total","completed","activityLabel","current","inProgress","connectionDisplay","DEFAULT_WIDTH","DEFAULT_HEIGHT","AiChatFloatingV2","chatPositionOffSet","onFloatingOpened","mapped","headerLabel","AiChatV2Pane","subtitle","actions","hideHeader","sessionOverview","TypewriterText","charsPerSecond","displayed","setDisplayed","prevTextRef","interval","PANEL_WIDTH","ChatsHistoryV2","newActiveSession","activeId","onSelect","onNewSession","onRename","onDelete","header","setQuery","closeMenu","renamingId","setRenamingId","renameDraft","setRenameDraft","renameInputRef","ignoreNextBlurRef","fitTextarea","deleteTarget","setDeleteTarget","startRename","cancelRename","commitRename","confirmDelete","target","filteredGroups","activeGroup","allGroups","isRenaming","showActions","MoreIcon","RenameIcon","DeleteIcon","spinKeyframes","normalizeStatus","TaskDot","TaskListV2","dense","currentRef","currentKey","isCurrent","subagentScanlineKeyframes","tryParse","SubAgentBoxV2","defaultLevel","hideMessageLevel","counts","pct","cycle","showTasks","showMessages","fadeKeyframes","formatDuration","ms","prettyJsonish","trimmed","first","MAX_VISIBLE_BUCKETS","BUCKET_W","BUCKET_H","compactBytes","V2ByteBuckets","fullCount","ToolGlyph","isDone","ToolRow","isLast","expanded","setExpanded","duration","isComposing","argsPreview","responsePreview","friendlyLabel","accumulated","ReasoningRow","isStreaming","getInteractionId","formatHourMinute","SCROLL_STEP","TurnPillStrip","turns","selectedKey","stripRef","overflowLeft","setOverflowLeft","overflowRight","setOverflowRight","recomputeOverflow","scrollBy","delta","renderPill","onClick","AgentActivityV2","hideReasoning","emptyState","order","showTurnHistory","wanted","sorted","tb","setSelectedKey","prevTurnOpenRef","wasOpen","visibleParts","collect","liveId","sentinelRef","scrollable","cs","pillStrip","liveIdx","TOOL_CATEGORIES","NAME_TO_CATEGORY","getToolCategory","direct","stripped","fromStripped","SectionCard","ElapsedClock","elapsedSec","railTooltipSlotProps","friendlyStateForCall","callLooksLikeError","resp","RailBuckets","gap","RailCallTimer","force","sec","RailToolTile","call","catId","CategoryIcon","isExecuting","accentBorder","ToolCallList","calls","RailTokensPerSecond","tps","RailTaskProgress","clamped","filled","integerPct","SubAgentList","subAgents","removeSubAgent","totalSec","RunProgressPanelV2","_ignoredTitle","collapsedProp","onCollapsedChange","defaultCollapsed","internalCollapsed","setInternalCollapsed","defaultPause","defaultCancel","resolvedPause","resolvedCancel"],"mappings":"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","x_google_ignoreList":[12,13]}
|