{"version":3,"sources":["../src/components/dev-console/developer-console-modal.tsx"],"sourcesContent":["\"use client\";\n\nimport { useAiContext } from \"../../context/ai-context\";\nimport { useAiMessagesContext } from \"../../context/ai-messages-context\";\nimport { VN_SDK_VERSION } from \"@vn-sdk/shared\";\nimport { useEffect, useState } from \"react\";\nimport { CheckIcon, VnSDKIcon, ExclamationMarkTriangleIcon } from \"./icons\";\n\n// Type definitions for the developer console\ninterface ActionParameter {\n  name: string;\n  required?: boolean;\n  type?: string;\n}\n\ninterface Action {\n  name: string;\n  description?: string;\n  parameters?: ActionParameter[];\n  status?: string;\n}\n\ninterface Readable {\n  name?: string;\n  description?: string;\n  value?: any;\n  content?: string;\n  metadata?: Record<string, any>;\n}\n\ninterface AgentState {\n  status?: string;\n  state?: any;\n  running?: boolean;\n  lastUpdate?: number;\n}\n\ninterface Message {\n  id?: string;\n  role?: \"user\" | \"assistant\" | \"system\";\n  content?: string;\n  timestamp?: number;\n  [key: string]: any; // Allow additional properties from VN SDK\n}\n\ninterface Document {\n  name?: string;\n  content?: string;\n  metadata?: Record<string, any>;\n}\n\ninterface DisplayContext {\n  actions: Record<string, Action>;\n  getAllContext: () => Readable[];\n  aiAgentStates: Record<string, AgentState>;\n  getDocumentsContext: (args?: any[]) => Document[];\n}\n\ninterface MessagesContext {\n  messages: Message[];\n}\n\ninterface DeveloperConsoleModalProps {\n  isOpen: boolean;\n  onClose: () => void;\n  hasApiKey: boolean;\n}\n\nexport function DeveloperConsoleModal({ isOpen, onClose, hasApiKey }: DeveloperConsoleModalProps) {\n  const context = useAiContext();\n  const messagesContext = useAiMessagesContext();\n  const [activeTab, setActiveTab] = useState(\"actions\");\n\n  // Handle escape key\n  useEffect(() => {\n    const handleEscape = (e: KeyboardEvent) => {\n      if (e.key === \"Escape\") {\n        onClose();\n      }\n    };\n\n    if (isOpen) {\n      document.addEventListener(\"keydown\", handleEscape);\n      document.body.style.overflow = \"hidden\";\n    }\n\n    return () => {\n      document.removeEventListener(\"keydown\", handleEscape);\n      document.body.style.overflow = \"unset\";\n    };\n  }, [isOpen, onClose]);\n\n  if (!isOpen) return null;\n\n  // Create mock data for preview when no API key\n  const displayContext: DisplayContext = hasApiKey\n    ? (context as DisplayContext)\n    : {\n        actions: {\n          search_web: { name: \"search_web\", description: \"Search the web for information\" },\n          send_email: { name: \"send_email\", description: \"Send an email to a contact\" },\n          create_document: { name: \"create_document\", description: \"Create a new document\" },\n          analyze_code: {\n            name: \"analyze_code\",\n            description: \"Analyze code for issues and improvements\",\n          },\n          generate_tests: {\n            name: \"generate_tests\",\n            description: \"Generate unit tests for functions\",\n          },\n        },\n        getAllContext: () => [\n          {\n            content: \"User preferences: dark mode enabled, TypeScript preferred\",\n            metadata: { source: \"settings\" },\n          },\n          {\n            content: \"Current project: Building a React application with VN SDK\",\n            metadata: { source: \"project\" },\n          },\n          {\n            content: \"Recent activity: Implemented authentication system\",\n            metadata: { source: \"activity\" },\n          },\n          {\n            content: \"Development environment: VS Code, Node.js 18, React 18\",\n            metadata: { source: \"environment\" },\n          },\n        ],\n        aiAgentStates: {\n          \"main-agent\": { status: \"active\", lastUpdate: Date.now() },\n          \"code-assistant\": { status: \"active\", lastUpdate: Date.now() - 15000 },\n          \"search-agent\": { status: \"idle\", lastUpdate: Date.now() - 60000 },\n        },\n        getDocumentsContext: () => [\n          {\n            content: \"README.md: Project setup and installation instructions\",\n            metadata: { type: \"documentation\" },\n          },\n          {\n            content: \"API Documentation: VN SDK integration guide\",\n            metadata: { type: \"documentation\" },\n          },\n          {\n            content: \"package.json: Project dependencies and scripts\",\n            metadata: { type: \"configuration\" },\n          },\n        ],\n      };\n\n  const displayMessagesContext: MessagesContext = hasApiKey\n    ? (messagesContext as MessagesContext)\n    : {\n        messages: [\n          {\n            id: \"1\",\n            role: \"user\",\n            content: \"Help me implement a todo list with drag and drop functionality\",\n          },\n          {\n            id: \"2\",\n            role: \"assistant\",\n            content:\n              \"I'll help you create a todo list with drag and drop. Let me start by setting up the basic components and then add the drag and drop functionality using React DnD.\",\n          },\n          { id: \"3\", role: \"user\", content: \"Can you also add priority levels and due dates?\" },\n          {\n            id: \"4\",\n            role: \"assistant\",\n            content:\n              \"Absolutely! I'll enhance the todo items with priority levels (high, medium, low) and due date functionality. This will make your todo list much more powerful for task management.\",\n          },\n          { id: \"5\", role: \"user\", content: \"Perfect! How about adding categories or tags?\" },\n        ],\n      };\n\n  return (\n    <div\n      style={{\n        position: \"fixed\",\n        top: 0,\n        left: 0,\n        right: 0,\n        bottom: 0,\n        zIndex: 9999,\n        backgroundColor: \"rgba(0, 0, 0, 0.3)\",\n        display: \"flex\",\n        alignItems: \"center\",\n        justifyContent: \"center\",\n        padding: \"16px\",\n      }}\n      onClick={onClose}\n    >\n      <div\n        style={{\n          width: \"1152px\",\n          maxWidth: \"95vw\",\n          height: \"80vh\",\n          backgroundColor: \"white\",\n          borderRadius: \"12px\",\n          boxShadow: \"0 25px 50px -12px rgba(0, 0, 0, 0.25)\",\n          display: \"flex\",\n          flexDirection: \"column\",\n          overflow: \"hidden\",\n          position: \"relative\",\n        }}\n        onClick={(e) => e.stopPropagation()}\n      >\n        {/* Header */}\n        <div\n          style={{\n            display: \"flex\",\n            alignItems: \"center\",\n            justifyContent: \"space-between\",\n            padding: \"24px\",\n            borderBottom: \"1px solid #e5e7eb\",\n            minHeight: \"73px\",\n            flexShrink: 0,\n            filter: !hasApiKey ? \"blur(0.3px)\" : \"none\",\n            opacity: !hasApiKey ? 0.95 : 1,\n          }}\n        >\n          <div style={{ display: \"flex\", alignItems: \"center\", gap: \"12px\" }}>\n            <VnSDKIcon />\n            <h1\n              style={{\n                fontWeight: \"bold\",\n                fontSize: \"20px\",\n                color: \"#1f2937\",\n                margin: 0,\n              }}\n            >\n              Inspector\n            </h1>\n            <span\n              style={{\n                fontSize: \"14px\",\n                color: \"#6b7280\",\n                backgroundColor: \"#f3f4f6\",\n                padding: \"4px 8px\",\n                borderRadius: \"4px\",\n              }}\n            >\n              v{VN_SDK_VERSION}\n            </span>\n          </div>\n          <button\n            onClick={onClose}\n            style={{\n              color: \"#9ca3af\",\n              fontSize: \"24px\",\n              fontWeight: \"300\",\n              border: \"none\",\n              background: \"none\",\n              cursor: \"pointer\",\n              padding: \"4px\",\n            }}\n            onMouseEnter={(e) => (e.currentTarget.style.color = \"#4b5563\")}\n            onMouseLeave={(e) => (e.currentTarget.style.color = \"#9ca3af\")}\n          >\n            ×\n          </button>\n        </div>\n\n        {/* Tab Navigation */}\n        <div\n          style={{\n            display: \"flex\",\n            borderBottom: \"1px solid #e5e7eb\",\n            backgroundColor: \"#f9fafb\",\n            minHeight: \"50px\",\n            flexShrink: 0,\n            filter: !hasApiKey ? \"blur(0.3px)\" : \"none\",\n            opacity: !hasApiKey ? 0.9 : 1,\n          }}\n        >\n          {[\n            { id: \"actions\", label: \"Actions\", count: Object.keys(displayContext.actions).length },\n            { id: \"readables\", label: \"Readables\", count: displayContext.getAllContext().length },\n            {\n              id: \"agent\",\n              label: \"Agent Status\",\n              count: Object.keys(displayContext.aiAgentStates).length,\n            },\n            { id: \"messages\", label: \"Messages\", count: displayMessagesContext.messages.length },\n            {\n              id: \"context\",\n              label: \"Context\",\n              count: displayContext.getDocumentsContext([]).length,\n            },\n          ].map((tab) => (\n            <button\n              key={tab.id}\n              onClick={() => setActiveTab(tab.id)}\n              style={{\n                padding: \"12px 24px\",\n                fontSize: \"14px\",\n                fontWeight: \"500\",\n                border: \"none\",\n                cursor: \"pointer\",\n                backgroundColor: activeTab === tab.id ? \"white\" : \"transparent\",\n                color: activeTab === tab.id ? \"#2563eb\" : \"#6b7280\",\n                borderBottom: activeTab === tab.id ? \"2px solid #2563eb\" : \"none\",\n                transition: \"all 0.2s\",\n              }}\n              onMouseEnter={(e) => {\n                if (activeTab !== tab.id) {\n                  e.currentTarget.style.color = \"#1f2937\";\n                  e.currentTarget.style.backgroundColor = \"#f3f4f6\";\n                }\n              }}\n              onMouseLeave={(e) => {\n                if (activeTab !== tab.id) {\n                  e.currentTarget.style.color = \"#6b7280\";\n                  e.currentTarget.style.backgroundColor = \"transparent\";\n                }\n              }}\n            >\n              {tab.label}\n              {tab.count > 0 && (\n                <span\n                  style={{\n                    marginLeft: \"8px\",\n                    backgroundColor: \"#e5e7eb\",\n                    color: \"#374151\",\n                    padding: \"2px 8px\",\n                    borderRadius: \"9999px\",\n                    fontSize: \"12px\",\n                  }}\n                >\n                  {tab.count}\n                </span>\n              )}\n            </button>\n          ))}\n        </div>\n\n        {/* Content */}\n        <div\n          style={{\n            height: \"calc(100% - 142px)\",\n            overflow: \"auto\",\n            padding: \"24px\",\n            backgroundColor: \"#f9fafb\",\n            filter: !hasApiKey ? \"blur(0.3px)\" : \"none\",\n            opacity: !hasApiKey ? 0.85 : 1,\n          }}\n        >\n          {activeTab === \"actions\" && <ActionsTab context={displayContext} />}\n          {activeTab === \"readables\" && <ReadablesTab context={displayContext} />}\n          {activeTab === \"agent\" && <AgentStatusTab context={displayContext} />}\n          {activeTab === \"messages\" && <MessagesTab messagesContext={displayMessagesContext} />}\n          {activeTab === \"context\" && <ContextTab context={displayContext} />}\n        </div>\n\n        {/* Footer */}\n        <div\n          style={{\n            padding: \"16px 24px\",\n            borderTop: \"1px solid #e5e7eb\",\n            backgroundColor: \"white\",\n            display: \"flex\",\n            justifyContent: \"space-between\",\n            alignItems: \"center\",\n            minHeight: \"57px\",\n            flexShrink: 0,\n            filter: !hasApiKey ? \"blur(0.3px)\" : \"none\",\n            opacity: !hasApiKey ? 0.9 : 1,\n          }}\n        >\n          <div style={{ fontSize: \"14px\", color: \"#6b7280\" }}>\n            <a\n              href=\"https://github.com/VN SDK/VN SDK/issues\"\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n              style={{ color: \"#2563eb\", textDecoration: \"none\" }}\n              onMouseEnter={(e) => (e.currentTarget.style.textDecoration = \"underline\")}\n              onMouseLeave={(e) => (e.currentTarget.style.textDecoration = \"none\")}\n            >\n              Report an issue\n            </a>\n          </div>\n          <div style={{ fontSize: \"14px\", color: \"#6b7280\" }}>\n            <a\n              href=\"https://mcp.vn.ai/\"\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n              style={{ color: \"#2563eb\", textDecoration: \"none\" }}\n              onMouseEnter={(e) => (e.currentTarget.style.textDecoration = \"underline\")}\n              onMouseLeave={(e) => (e.currentTarget.style.textDecoration = \"none\")}\n            >\n              Add MCP Server →\n            </a>\n          </div>\n        </div>\n\n        {/* Enhanced CTA Overlay */}\n        {!hasApiKey && (\n          <div\n            style={{\n              position: \"absolute\",\n              top: 0,\n              left: 0,\n              right: 0,\n              bottom: 0,\n              backgroundColor: \"rgba(255, 255, 255, 0.2)\",\n              backdropFilter: \"blur(2px)\",\n              WebkitBackdropFilter: \"blur(2px)\",\n              display: \"flex\",\n              alignItems: \"center\",\n              justifyContent: \"center\",\n              borderRadius: \"12px\",\n              zIndex: 10,\n            }}\n            onClick={(e) => e.stopPropagation()}\n          >\n            <button\n              onClick={() => window.open(\"https://cloud.vn.ai/sign-in\", \"_blank\")}\n              style={{\n                // Following button system specifications\n                height: \"48px\",\n                padding: \"12px 24px\",\n                backgroundColor: \"#030507\", // textPrimary token\n                color: \"#FFFFFF\",\n                borderRadius: \"12px\", // Medium radius token\n                border: \"none\",\n                cursor: \"pointer\",\n                fontSize: \"14px\", // Medium Semi Bold typography\n                fontWeight: \"600\",\n                fontFamily: \"'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif\",\n                lineHeight: \"22px\",\n                boxShadow: \"0 4px 16px rgba(3, 5, 7, 0.2), 0 1px 3px rgba(3, 5, 7, 0.1)\",\n                transition: \"all 200ms ease\", // 200ms ease as per specs\n                display: \"inline-flex\",\n                alignItems: \"center\",\n                gap: \"8px\",\n                textTransform: \"uppercase\",\n                letterSpacing: \"0.5px\",\n              }}\n              onMouseEnter={(e) => {\n                e.currentTarget.style.backgroundColor = \"#575758\"; // textSecondary token for hover\n                e.currentTarget.style.transform = \"translateY(-1px)\";\n                e.currentTarget.style.boxShadow =\n                  \"0 6px 20px rgba(3, 5, 7, 0.25), 0 2px 4px rgba(3, 5, 7, 0.15)\";\n              }}\n              onMouseLeave={(e) => {\n                e.currentTarget.style.backgroundColor = \"#030507\";\n                e.currentTarget.style.transform = \"translateY(0)\";\n                e.currentTarget.style.boxShadow =\n                  \"0 4px 16px rgba(3, 5, 7, 0.2), 0 1px 3px rgba(3, 5, 7, 0.1)\";\n              }}\n              onMouseDown={(e) => {\n                e.currentTarget.style.backgroundColor = \"#858589\"; // textDisabled token for pressed\n                e.currentTarget.style.transform = \"translateY(0)\";\n              }}\n              onMouseUp={(e) => {\n                e.currentTarget.style.backgroundColor = \"#575758\";\n                e.currentTarget.style.transform = \"translateY(-1px)\";\n              }}\n              onFocus={(e) => {\n                e.currentTarget.style.outline = \"2px solid #BEC9FF\";\n                e.currentTarget.style.outlineOffset = \"2px\";\n              }}\n              onBlur={(e) => {\n                e.currentTarget.style.outline = \"none\";\n              }}\n            >\n              Get License Key\n              <span style={{ fontSize: \"16px\", marginLeft: \"-4px\" }}>→</span>\n            </button>\n          </div>\n        )}\n      </div>\n    </div>\n  );\n}\n\n// Tab Components\nfunction ActionsTab({ context }: { context: DisplayContext }) {\n  const actions = Object.values(context.actions);\n\n  if (actions.length === 0) {\n    return (\n      <div style={{ textAlign: \"center\", padding: \"48px 0\", color: \"#6b7280\" }}>\n        <p style={{ fontSize: \"18px\", margin: \"0 0 8px 0\" }}>No actions available</p>\n        <p style={{ fontSize: \"14px\", margin: 0 }}>Actions will appear here when registered</p>\n      </div>\n    );\n  }\n\n  return (\n    <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"16px\" }}>\n      {actions.map((action: Action, index: number) => (\n        <div\n          key={index}\n          style={{\n            backgroundColor: \"white\",\n            padding: \"16px\",\n            borderRadius: \"8px\",\n            boxShadow: \"0 1px 3px 0 rgba(0, 0, 0, 0.1)\",\n            border: \"1px solid #e5e7eb\",\n          }}\n        >\n          <div\n            style={{ display: \"flex\", alignItems: \"flex-start\", justifyContent: \"space-between\" }}\n          >\n            <div style={{ flex: 1 }}>\n              <h3 style={{ fontWeight: \"600\", color: \"#1f2937\", margin: \"0 0 4px 0\" }}>\n                {action.name}\n              </h3>\n              {action.description && (\n                <p style={{ fontSize: \"14px\", color: \"#4b5563\", margin: \"0 0 12px 0\" }}>\n                  {action.description}\n                </p>\n              )}\n              {action.parameters && action.parameters.length > 0 && (\n                <div style={{ marginTop: \"12px\" }}>\n                  <p\n                    style={{\n                      fontSize: \"12px\",\n                      fontWeight: \"500\",\n                      color: \"#6b7280\",\n                      textTransform: \"uppercase\",\n                      margin: \"0 0 4px 0\",\n                    }}\n                  >\n                    Parameters:\n                  </p>\n                  <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"4px\" }}>\n                    {action.parameters.map((param: ActionParameter, pIndex: number) => (\n                      <div key={pIndex} style={{ fontSize: \"14px\" }}>\n                        <span style={{ fontFamily: \"monospace\", color: \"#374151\" }}>\n                          {param.name}\n                        </span>\n                        {param.required && (\n                          <span style={{ marginLeft: \"4px\", fontSize: \"12px\", color: \"#ef4444\" }}>\n                            *required\n                          </span>\n                        )}\n                        {param.type && (\n                          <span style={{ marginLeft: \"8px\", fontSize: \"12px\", color: \"#6b7280\" }}>\n                            ({param.type})\n                          </span>\n                        )}\n                      </div>\n                    ))}\n                  </div>\n                </div>\n              )}\n            </div>\n            <div style={{ marginLeft: \"16px\" }}>\n              {action.status === \"available\" ? <CheckIcon /> : <ExclamationMarkTriangleIcon />}\n            </div>\n          </div>\n        </div>\n      ))}\n    </div>\n  );\n}\n\nfunction ReadablesTab({ context }: { context: DisplayContext }) {\n  const readables = context.getAllContext();\n\n  if (readables.length === 0) {\n    return (\n      <div style={{ textAlign: \"center\", padding: \"48px 0\", color: \"#6b7280\" }}>\n        <p style={{ fontSize: \"18px\", margin: \"0 0 8px 0\" }}>No readable context available</p>\n        <p style={{ fontSize: \"14px\", margin: 0 }}>\n          Readable context will appear here when provided\n        </p>\n      </div>\n    );\n  }\n\n  return (\n    <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"16px\" }}>\n      {readables.map((readable: Readable, index: number) => (\n        <div\n          key={index}\n          style={{\n            backgroundColor: \"white\",\n            padding: \"16px\",\n            borderRadius: \"8px\",\n            boxShadow: \"0 1px 3px 0 rgba(0, 0, 0, 0.1)\",\n            border: \"1px solid #e5e7eb\",\n          }}\n        >\n          <div\n            style={{ display: \"flex\", alignItems: \"flex-start\", justifyContent: \"space-between\" }}\n          >\n            <div style={{ flex: 1 }}>\n              <h3 style={{ fontWeight: \"600\", color: \"#1f2937\", margin: \"0 0 4px 0\" }}>\n                {readable.name || `Readable ${index + 1}`}\n              </h3>\n              {readable.description && (\n                <p style={{ fontSize: \"14px\", color: \"#4b5563\", margin: \"0 0 12px 0\" }}>\n                  {readable.description}\n                </p>\n              )}\n              {readable.value && (\n                <pre\n                  style={{\n                    marginTop: \"12px\",\n                    padding: \"8px\",\n                    backgroundColor: \"#f9fafb\",\n                    borderRadius: \"4px\",\n                    fontSize: \"12px\",\n                    overflowX: \"auto\",\n                    margin: \"12px 0 0 0\",\n                  }}\n                >\n                  {JSON.stringify(readable.value, null, 2)}\n                </pre>\n              )}\n            </div>\n          </div>\n        </div>\n      ))}\n    </div>\n  );\n}\n\nfunction AgentStatusTab({ context }: { context: DisplayContext }) {\n  const agentStates = context.aiAgentStates || {};\n  const agentStateEntries = Object.entries(agentStates);\n\n  if (agentStateEntries.length === 0) {\n    return (\n      <div style={{ textAlign: \"center\", padding: \"48px 0\", color: \"#6b7280\" }}>\n        <p style={{ fontSize: \"18px\", margin: \"0 0 8px 0\" }}>No agent states available</p>\n        <p style={{ fontSize: \"14px\", margin: 0 }}>\n          Agent states will appear here when agents are active\n        </p>\n      </div>\n    );\n  }\n\n  return (\n    <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"24px\" }}>\n      {agentStateEntries.map(([agentName, state]: [string, AgentState]) => (\n        <div\n          key={agentName}\n          style={{\n            backgroundColor: \"white\",\n            padding: \"24px\",\n            borderRadius: \"8px\",\n            boxShadow: \"0 1px 3px 0 rgba(0, 0, 0, 0.1)\",\n            border: \"1px solid #e5e7eb\",\n          }}\n        >\n          <div\n            style={{\n              display: \"flex\",\n              alignItems: \"center\",\n              justifyContent: \"space-between\",\n              marginBottom: \"16px\",\n            }}\n          >\n            <h3 style={{ fontWeight: \"600\", fontSize: \"18px\", color: \"#1f2937\", margin: 0 }}>\n              {agentName}\n            </h3>\n            <span\n              style={{\n                padding: \"4px 12px\",\n                borderRadius: \"9999px\",\n                fontSize: \"12px\",\n                fontWeight: \"500\",\n                backgroundColor:\n                  state.status === \"running\"\n                    ? \"#dcfce7\"\n                    : state.status === \"complete\"\n                      ? \"#dbeafe\"\n                      : \"#f3f4f6\",\n                color:\n                  state.status === \"running\"\n                    ? \"#166534\"\n                    : state.status === \"complete\"\n                      ? \"#1e40af\"\n                      : \"#1f2937\",\n              }}\n            >\n              {state.status || \"idle\"}\n            </span>\n          </div>\n\n          {state.state && (\n            <div style={{ marginBottom: \"12px\" }}>\n              <p\n                style={{\n                  fontSize: \"12px\",\n                  fontWeight: \"500\",\n                  color: \"#6b7280\",\n                  textTransform: \"uppercase\",\n                  margin: \"0 0 4px 0\",\n                }}\n              >\n                Current State:\n              </p>\n              <pre\n                style={{\n                  padding: \"12px\",\n                  backgroundColor: \"#f9fafb\",\n                  borderRadius: \"4px\",\n                  fontSize: \"12px\",\n                  overflowX: \"auto\",\n                  margin: 0,\n                }}\n              >\n                {JSON.stringify(state.state, null, 2)}\n              </pre>\n            </div>\n          )}\n\n          {state.running && (\n            <div\n              style={{\n                marginTop: \"16px\",\n                display: \"flex\",\n                alignItems: \"center\",\n                fontSize: \"14px\",\n                color: \"#4b5563\",\n              }}\n            >\n              <div style={{ marginRight: \"8px\" }}>\n                <svg\n                  width=\"16\"\n                  height=\"16\"\n                  viewBox=\"0 0 16 16\"\n                  style={{ animation: \"spin 1s linear infinite\" }}\n                >\n                  <style>{`@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }`}</style>\n                  <circle\n                    cx=\"8\"\n                    cy=\"8\"\n                    r=\"6\"\n                    fill=\"none\"\n                    stroke=\"#4b5563\"\n                    strokeWidth=\"2\"\n                    strokeDasharray=\"9 3\"\n                  />\n                </svg>\n              </div>\n              <span>Agent is currently running...</span>\n            </div>\n          )}\n        </div>\n      ))}\n    </div>\n  );\n}\n\nfunction MessagesTab({ messagesContext }: { messagesContext: MessagesContext }) {\n  const messages = messagesContext.messages || [];\n\n  if (messages.length === 0) {\n    return (\n      <div style={{ textAlign: \"center\", padding: \"48px 0\", color: \"#6b7280\" }}>\n        <p style={{ fontSize: \"18px\", margin: \"0 0 8px 0\" }}>No messages yet</p>\n        <p style={{ fontSize: \"14px\", margin: 0 }}>\n          Messages will appear here as the conversation progresses\n        </p>\n      </div>\n    );\n  }\n\n  return (\n    <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"16px\" }}>\n      {messages.map((message: Message, index: number) => (\n        <div\n          key={index}\n          style={{\n            padding: \"16px\",\n            borderRadius: \"8px\",\n            backgroundColor:\n              message.role === \"user\"\n                ? \"#eff6ff\"\n                : message.role === \"assistant\"\n                  ? \"#f9fafb\"\n                  : \"#fefce8\",\n            border: `1px solid ${message.role === \"user\" ? \"#c7d2fe\" : message.role === \"assistant\" ? \"#e5e7eb\" : \"#fde047\"}`,\n            marginLeft: message.role === \"user\" ? \"48px\" : \"0\",\n            marginRight: message.role === \"assistant\" ? \"48px\" : \"0\",\n          }}\n        >\n          <div\n            style={{\n              display: \"flex\",\n              alignItems: \"flex-start\",\n              justifyContent: \"space-between\",\n              marginBottom: \"8px\",\n            }}\n          >\n            <span\n              style={{\n                fontWeight: \"500\",\n                fontSize: \"14px\",\n                color: \"#374151\",\n                textTransform: \"capitalize\",\n              }}\n            >\n              {message.role || \"system\"}\n            </span>\n            {message.timestamp && (\n              <span style={{ fontSize: \"12px\", color: \"#6b7280\" }}>\n                {new Date(message.timestamp).toLocaleTimeString()}\n              </span>\n            )}\n          </div>\n          <div style={{ fontSize: \"14px\", color: \"#1f2937\", whiteSpace: \"pre-wrap\" }}>\n            {message.content || \"\"}\n          </div>\n        </div>\n      ))}\n    </div>\n  );\n}\n\nfunction ContextTab({ context }: { context: DisplayContext }) {\n  const documents = context.getDocumentsContext([]);\n\n  if (documents.length === 0) {\n    return (\n      <div style={{ textAlign: \"center\", padding: \"48px 0\", color: \"#6b7280\" }}>\n        <p style={{ fontSize: \"18px\", margin: \"0 0 8px 0\" }}>No document context available</p>\n        <p style={{ fontSize: \"14px\", margin: 0 }}>\n          Document context will appear here when provided\n        </p>\n      </div>\n    );\n  }\n\n  return (\n    <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"16px\" }}>\n      {documents.map((doc: Document, index: number) => (\n        <div\n          key={index}\n          style={{\n            backgroundColor: \"white\",\n            padding: \"16px\",\n            borderRadius: \"8px\",\n            boxShadow: \"0 1px 3px 0 rgba(0, 0, 0, 0.1)\",\n            border: \"1px solid #e5e7eb\",\n          }}\n        >\n          <h3 style={{ fontWeight: \"600\", color: \"#1f2937\", margin: \"0 0 8px 0\" }}>\n            {doc.name || `Document ${index + 1}`}\n          </h3>\n          {doc.content && (\n            <pre\n              style={{\n                padding: \"12px\",\n                backgroundColor: \"#f9fafb\",\n                borderRadius: \"4px\",\n                fontSize: \"12px\",\n                overflowX: \"auto\",\n                margin: 0,\n              }}\n            >\n              {doc.content}\n            </pre>\n          )}\n        </div>\n      ))}\n    </div>\n  );\n}\n"],"mappings":"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","names":[]}