@poolzin/poolbot-office 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/index-BewsfHKI.js +32 -0
- package/dist/assets/index-BewsfHKI.js.map +1 -0
- package/dist/assets/index-CBgEz-kd.css +1 -0
- package/dist/assets/react-vendor-Cl-1Jdvm.js +2 -0
- package/dist/assets/react-vendor-Cl-1Jdvm.js.map +1 -0
- package/dist/assets/three-vendor--jG-wMmE.js +4745 -0
- package/dist/assets/three-vendor--jG-wMmE.js.map +1 -0
- package/dist/assets/ui-vendor-Cl-1Jdvm.js +2 -0
- package/dist/assets/ui-vendor-Cl-1Jdvm.js.map +1 -0
- package/dist/index.html +17 -0
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-BewsfHKI.js","sources":["../../../../node_modules/.pnpm/react@19.2.4/node_modules/react/cjs/react-jsx-dev-runtime.development.js","../../../../node_modules/.pnpm/react@19.2.4/node_modules/react/jsx-dev-runtime.js","../../src/components/console/dashboard/DashboardPage.tsx","../../src/components/console/agents/AgentsPage.tsx","../../src/components/console/channels/ChannelsPage.tsx","../../src/components/console/skills/SkillsPage.tsx","../../src/components/console/cron/CronPage.tsx","../../src/components/console/settings/SettingsPage.tsx","../../src/components/office-2d/furniture/Desk.tsx","../../src/components/office-2d/furniture/Chair.tsx","../../src/components/office-2d/furniture/Plant.tsx","../../src/components/office-2d/CollaborationLines.tsx","../../src/components/office-2d/OfficeLayout2D.tsx","../../src/components/office-3d/AgentCharacter.tsx","../../src/components/office-3d/SkillHologram.tsx","../../src/components/office-3d/SpawnPortal.tsx","../../src/components/office-3d/Environment3D.tsx","../../src/components/office-3d/OfficeLayout3D.tsx","../../src/components/chat/ChatDockBar.tsx","../../src/components/chat/MessageBubble.tsx","../../src/components/chat/StreamingIndicator.tsx","../../src/components/chat/AgentSelector.tsx","../../src/components/chat/ChatDialog.tsx","../../src/gateway/utils.ts","../../src/gateway/WebSocketClient.ts","../../src/gateway/GatewayContext.tsx","../../src/gateway/useGatewayData.ts","../../src/App.tsx","../../src/main.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-dev-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsxDEV = function (type, config, maybeKey, isStaticChildren) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-dev-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-dev-runtime.development.js');\n}\n","/**\n * Dashboard Page Component\n * \n * Main dashboard with overview stats, alerts, and quick navigation\n */\n\nimport React from 'react';\n\nexport interface DashboardStats {\n totalAgents: number;\n activeAgents: number;\n totalChannels: number;\n connectedChannels: number;\n totalSkills: number;\n enabledSkills: number;\n totalCronJobs: number;\n activeCronJobs: number;\n messagesToday: number;\n tokensToday: number;\n uptime: number;\n errorCount: number;\n}\n\nexport interface DashboardAlert {\n id: string;\n type: 'info' | 'warning' | 'error' | 'success';\n title: string;\n message: string;\n timestamp: number;\n actionable?: boolean;\n onAction?: () => void;\n}\n\nexport interface DashboardPageProps {\n stats: DashboardStats;\n alerts: DashboardAlert[];\n onDismissAlert: (alertId: string) => void;\n onNavigate: (page: string) => void;\n}\n\nexport const DashboardPage: React.FC<DashboardPageProps> = ({\n stats,\n alerts,\n onDismissAlert,\n onNavigate,\n}) => {\n const StatCard: React.FC<{\n title: string;\n value: number | string;\n subtitle?: string;\n icon: string;\n color: string;\n onClick?: () => void;\n }> = ({ title, value, subtitle, icon, color, onClick }) => (\n <div\n onClick={onClick}\n style={{\n backgroundColor: 'white',\n borderRadius: '12px',\n padding: '20px',\n boxShadow: '0 2px 8px rgba(0, 0, 0, 0.1)',\n cursor: onClick ? 'pointer' : 'default',\n transition: 'transform 0.2s, box-shadow 0.2s',\n }}\n onMouseEnter={(e) => {\n if (onClick) {\n e.currentTarget.style.transform = 'translateY(-4px)';\n e.currentTarget.style.boxShadow = '0 4px 16px rgba(0, 0, 0, 0.15)';\n }\n }}\n onMouseLeave={(e) => {\n if (onClick) {\n e.currentTarget.style.transform = 'translateY(0)';\n e.currentTarget.style.boxShadow = '0 2px 8px rgba(0, 0, 0, 0.1)';\n }\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', marginBottom: '12px' }}>\n <span style={{ fontSize: '24px', marginRight: '12px' }}>{icon}</span>\n <span style={{ fontWeight: 'bold', color: '#2C3E50', fontSize: '14px' }}>{title}</span>\n </div>\n <div style={{ fontSize: '32px', fontWeight: 'bold', color, marginBottom: '4px' }}>\n {value}\n </div>\n {subtitle && (\n <div style={{ fontSize: '12px', color: '#7F8C8D' }}>{subtitle}</div>\n )}\n </div>\n );\n\n const AlertBanner: React.FC<{ alert: DashboardAlert }> = ({ alert }) => {\n const colors = {\n info: { bg: '#D6EAF8', border: '#3498DB', text: '#2874A6' },\n warning: { bg: '#FDEBD0', border: '#F39C12', text: '#B9770E' },\n error: { bg: '#FADBD8', border: '#E74C3C', text: '#C0392B' },\n success: { bg: '#D5F5E3', border: '#27AE60', text: '#1E8449' },\n };\n\n const color = colors[alert.type];\n\n return (\n <div\n style={{\n backgroundColor: color.bg,\n borderLeft: `4px solid ${color.border}`,\n padding: '12px 16px',\n borderRadius: '8px',\n marginBottom: '12px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <div>\n <div style={{ fontWeight: 'bold', color: color.text, marginBottom: '4px' }}>\n {alert.title}\n </div>\n <div style={{ fontSize: '14px', color: color.text }}>{alert.message}</div>\n </div>\n <div style={{ display: 'flex', gap: '8px' }}>\n {alert.actionable && alert.onAction && (\n <button\n onClick={alert.onAction}\n style={{\n backgroundColor: color.border,\n color: 'white',\n border: 'none',\n padding: '6px 12px',\n borderRadius: '4px',\n cursor: 'pointer',\n fontSize: '12px',\n }}\n >\n Action\n </button>\n )}\n <button\n onClick={() => onDismissAlert(alert.id)}\n style={{\n background: 'none',\n border: 'none',\n fontSize: '18px',\n cursor: 'pointer',\n color: color.text,\n padding: '0 4px',\n }}\n >\n ✕\n </button>\n </div>\n </div>\n );\n };\n\n return (\n <div style={{ padding: '24px', maxWidth: '1400px', margin: '0 auto' }}>\n {/* Header */}\n <div style={{ marginBottom: '24px' }}>\n <h1 style={{ fontSize: '28px', fontWeight: 'bold', color: '#2C3E50', margin: 0 }}>\n Dashboard\n </h1>\n <p style={{ color: '#7F8C8D', margin: '8px 0 0 0' }}>\n Overview of your PoolBot system\n </p>\n </div>\n\n {/* Alerts */}\n {alerts.length > 0 && (\n <div style={{ marginBottom: '24px' }}>\n {alerts.map((alert) => (\n <AlertBanner key={alert.id} alert={alert} />\n ))}\n </div>\n )}\n\n {/* Stats Grid */}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(250px, 1fr))',\n gap: '20px',\n marginBottom: '24px',\n }}\n >\n <StatCard\n title=\"Total Agents\"\n value={stats.totalAgents}\n subtitle={`${stats.activeAgents} active`}\n icon=\"🤖\"\n color=\"#3498DB\"\n onClick={() => onNavigate('agents')}\n />\n <StatCard\n title=\"Channels\"\n value={stats.totalChannels}\n subtitle={`${stats.connectedChannels} connected`}\n icon=\"💬\"\n color=\"#2ECC71\"\n onClick={() => onNavigate('channels')}\n />\n <StatCard\n title=\"Skills\"\n value={stats.enabledSkills}\n subtitle={`${stats.totalSkills} available`}\n icon=\"⚡\"\n color=\"#F39C12\"\n onClick={() => onNavigate('skills')}\n />\n <StatCard\n title=\"Cron Jobs\"\n value={stats.activeCronJobs}\n subtitle={`${stats.totalCronJobs} total`}\n icon=\"⏰\"\n color=\"#9B59B6\"\n onClick={() => onNavigate('cron')}\n />\n <StatCard\n title=\"Messages Today\"\n value={stats.messagesToday.toLocaleString()}\n icon=\"💭\"\n color=\"#1ABC9C\"\n onClick={() => onNavigate('chat')}\n />\n <StatCard\n title=\"Tokens Today\"\n value={stats.tokensToday.toLocaleString()}\n icon=\"🎫\"\n color=\"#E74C3C\"\n onClick={() => onNavigate('settings')}\n />\n </div>\n\n {/* Quick Actions */}\n <div style={{ marginTop: '24px' }}>\n <h2 style={{ fontSize: '20px', fontWeight: 'bold', color: '#2C3E50', marginBottom: '16px' }}>\n Quick Actions\n </h2>\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(200px, 1fr))',\n gap: '12px',\n }}\n >\n {[\n { icon: '➕', label: 'Add Agent', page: 'agents' },\n { icon: '🔌', label: 'Connect Channel', page: 'channels' },\n { icon: '📦', label: 'Install Skill', page: 'skills' },\n { icon: '⏱️', label: 'Create Cron Job', page: 'cron' },\n { icon: '💾', label: 'Backup Config', page: 'settings' },\n { icon: '📊', label: 'View Logs', page: 'logs' },\n ].map((action) => (\n <button\n key={action.label}\n onClick={() => onNavigate(action.page)}\n style={{\n backgroundColor: 'white',\n border: '1px solid #E0E0E0',\n borderRadius: '8px',\n padding: '12px 16px',\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n cursor: 'pointer',\n transition: 'all 0.2s',\n textAlign: 'left',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#F5F5F5';\n e.currentTarget.style.borderColor = '#3498DB';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'white';\n e.currentTarget.style.borderColor = '#E0E0E0';\n }}\n >\n <span style={{ fontSize: '20px' }}>{action.icon}</span>\n <span style={{ fontWeight: '500', color: '#2C3E50' }}>{action.label}</span>\n </button>\n ))}\n </div>\n </div>\n\n {/* System Info */}\n <div\n style={{\n marginTop: '24px',\n padding: '16px',\n backgroundColor: '#F8F9FA',\n borderRadius: '8px',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}\n >\n <div style={{ fontSize: '14px', color: '#7F8C8D' }}>\n <span style={{ marginRight: '16px' }}>\n ⏱️ Uptime: {Math.floor(stats.uptime / 3600)}h {Math.floor((stats.uptime % 3600) / 60)}m\n </span>\n <span>\n ⚠️ Errors: {stats.errorCount}\n </span>\n </div>\n <button\n onClick={() => window.location.reload()}\n style={{\n backgroundColor: '#3498DB',\n color: 'white',\n border: 'none',\n padding: '8px 16px',\n borderRadius: '6px',\n cursor: 'pointer',\n fontSize: '14px',\n }}\n >\n 🔄 Refresh\n </button>\n </div>\n </div>\n );\n};\n\nexport default DashboardPage;\n","/**\n * Agents Management Page\n * \n * List, create, edit, and delete agents\n */\n\nimport React, { useState } from 'react';\n\nexport interface Agent {\n id: string;\n name: string;\n status: 'idle' | 'working' | 'speaking' | 'error' | 'offline';\n model: string;\n createdAt: number;\n lastActiveAt?: number;\n sessionCount: number;\n messageCount: number;\n}\n\nexport interface AgentsPageProps {\n agents: Agent[];\n onCreateAgent: (name: string, model: string) => void;\n onDeleteAgent: (agentId: string) => void;\n onSelectAgent: (agentId: string) => void;\n}\n\nexport const AgentsPage: React.FC<AgentsPageProps> = ({\n agents,\n onCreateAgent,\n onDeleteAgent,\n onSelectAgent,\n}) => {\n const [showCreateModal, setShowCreateModal] = useState(false);\n const [newAgentName, setNewAgentName] = useState('');\n const [selectedModel, setSelectedModel] = useState('gpt-4o');\n\n const getStatusColor = (status: Agent['status']) => {\n const colors = {\n idle: '#95A5A6',\n working: '#3498DB',\n speaking: '#2ECC71',\n error: '#E74C3C',\n offline: '#BDC3C7',\n };\n return colors[status];\n };\n\n const getStatusEmoji = (status: Agent['status']) => {\n const emojis = {\n idle: '😴',\n working: '💻',\n speaking: '💬',\n error: '❌',\n offline: '⚫',\n };\n return emojis[status];\n };\n\n const handleCreate = () => {\n if (newAgentName.trim()) {\n onCreateAgent(newAgentName.trim(), selectedModel);\n setNewAgentName('');\n setShowCreateModal(false);\n }\n };\n\n return (\n <div style={{ padding: '24px', maxWidth: '1400px', margin: '0 auto' }}>\n {/* Header */}\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: '24px',\n }}\n >\n <div>\n <h1 style={{ fontSize: '28px', fontWeight: 'bold', color: '#2C3E50', margin: 0 }}>\n Agents\n </h1>\n <p style={{ color: '#7F8C8D', margin: '8px 0 0 0' }}>\n {agents.length} agents • {agents.filter((a) => a.status === 'working').length} active\n </p>\n </div>\n <button\n onClick={() => setShowCreateModal(true)}\n style={{\n backgroundColor: '#3498DB',\n color: 'white',\n border: 'none',\n padding: '12px 24px',\n borderRadius: '8px',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: '500',\n }}\n >\n ➕ Add Agent\n </button>\n </div>\n\n {/* Agents Grid */}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, minmax(300px, 1fr))',\n gap: '16px',\n }}\n >\n {agents.map((agent) => (\n <div\n key={agent.id}\n onClick={() => onSelectAgent(agent.id)}\n style={{\n backgroundColor: 'white',\n borderRadius: '12px',\n padding: '20px',\n boxShadow: '0 2px 8px rgba(0, 0, 0, 0.1)',\n cursor: 'pointer',\n transition: 'all 0.2s',\n border: '2px solid transparent',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.transform = 'translateY(-4px)';\n e.currentTarget.style.boxShadow = '0 4px 16px rgba(0, 0, 0, 0.15)';\n e.currentTarget.style.borderColor = '#3498DB';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.transform = 'translateY(0)';\n e.currentTarget.style.boxShadow = '0 2px 8px rgba(0, 0, 0, 0.1)';\n e.currentTarget.style.borderColor = 'transparent';\n }}\n >\n {/* Header */}\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: '16px',\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\n <span style={{ fontSize: '32px' }}>🤖</span>\n <div>\n <div style={{ fontWeight: 'bold', color: '#2C3E50', fontSize: '16px' }}>\n {agent.name}\n </div>\n <div\n style={{\n fontSize: '12px',\n color: getStatusColor(agent.status),\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n }}\n >\n <span>{getStatusEmoji(agent.status)}</span>\n <span>{agent.status}</span>\n </div>\n </div>\n </div>\n <button\n onClick={(e) => {\n e.stopPropagation();\n onDeleteAgent(agent.id);\n }}\n style={{\n background: 'none',\n border: 'none',\n fontSize: '18px',\n cursor: 'pointer',\n color: '#E74C3C',\n padding: '4px',\n }}\n >\n 🗑️\n </button>\n </div>\n\n {/* Stats */}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: '1fr 1fr',\n gap: '12px',\n paddingTop: '16px',\n borderTop: '1px solid #F0F0F0',\n }}\n >\n <div>\n <div style={{ fontSize: '12px', color: '#7F8C8D', marginBottom: '4px' }}>\n Model\n </div>\n <div style={{ fontWeight: '500', color: '#2C3E50', fontSize: '14px' }}>\n {agent.model}\n </div>\n </div>\n <div>\n <div style={{ fontSize: '12px', color: '#7F8C8D', marginBottom: '4px' }}>\n Sessions\n </div>\n <div style={{ fontWeight: '500', color: '#2C3E50', fontSize: '14px' }}>\n {agent.sessionCount}\n </div>\n </div>\n <div>\n <div style={{ fontSize: '12px', color: '#7F8C8D', marginBottom: '4px' }}>\n Messages\n </div>\n <div style={{ fontWeight: '500', color: '#2C3E50', fontSize: '14px' }}>\n {agent.messageCount.toLocaleString()}\n </div>\n </div>\n <div>\n <div style={{ fontSize: '12px', color: '#7F8C8D', marginBottom: '4px' }}>\n Last Active\n </div>\n <div style={{ fontWeight: '500', color: '#2C3E50', fontSize: '14px' }}>\n {agent.lastActiveAt\n ? new Date(agent.lastActiveAt).toLocaleTimeString('pt-BR', {\n hour: '2-digit',\n minute: '2-digit',\n })\n : 'Never'}\n </div>\n </div>\n </div>\n </div>\n ))}\n </div>\n\n {agents.length === 0 && (\n <div\n style={{\n textAlign: 'center',\n padding: '60px 20px',\n color: '#7F8C8D',\n }}\n >\n <div style={{ fontSize: '64px', marginBottom: '16px' }}>🤖</div>\n <div style={{ fontSize: '18px', fontWeight: 'bold', marginBottom: '8px' }}>\n No agents yet\n </div>\n <div style={{ marginBottom: '16px' }}>Create your first agent to get started</div>\n <button\n onClick={() => setShowCreateModal(true)}\n style={{\n backgroundColor: '#3498DB',\n color: 'white',\n border: 'none',\n padding: '12px 24px',\n borderRadius: '8px',\n cursor: 'pointer',\n fontSize: '14px',\n }}\n >\n ➕ Create Agent\n </button>\n </div>\n )}\n\n {/* Create Modal */}\n {showCreateModal && (\n <div\n style={{\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 1000,\n }}\n onClick={() => setShowCreateModal(false)}\n >\n <div\n onClick={(e) => e.stopPropagation()}\n style={{\n backgroundColor: 'white',\n borderRadius: '12px',\n padding: '24px',\n width: '400px',\n maxWidth: '90vw',\n }}\n >\n <h2 style={{ fontSize: '20px', fontWeight: 'bold', marginBottom: '16px' }}>\n Create New Agent\n </h2>\n <div style={{ marginBottom: '16px' }}>\n <label\n style={{\n display: 'block',\n fontWeight: '500',\n marginBottom: '8px',\n color: '#2C3E50',\n }}\n >\n Agent Name\n </label>\n <input\n type=\"text\"\n value={newAgentName}\n onChange={(e) => setNewAgentName(e.target.value)}\n placeholder=\"My Assistant\"\n style={{\n width: '100%',\n padding: '10px 12px',\n border: '1px solid #E0E0E0',\n borderRadius: '6px',\n fontSize: '14px',\n outline: 'none',\n }}\n />\n </div>\n <div style={{ marginBottom: '24px' }}>\n <label\n style={{\n display: 'block',\n fontWeight: '500',\n marginBottom: '8px',\n color: '#2C3E50',\n }}\n >\n Model\n </label>\n <select\n value={selectedModel}\n onChange={(e) => setSelectedModel(e.target.value)}\n style={{\n width: '100%',\n padding: '10px 12px',\n border: '1px solid #E0E0E0',\n borderRadius: '6px',\n fontSize: '14px',\n outline: 'none',\n backgroundColor: 'white',\n }}\n >\n <option value=\"gpt-4o\">GPT-4o</option>\n <option value=\"gpt-4o-mini\">GPT-4o Mini</option>\n <option value=\"claude-3-5-sonnet\">Claude 3.5 Sonnet</option>\n <option value=\"claude-3-opus\">Claude 3 Opus</option>\n </select>\n </div>\n <div style={{ display: 'flex', gap: '12px', justifyContent: 'flex-end' }}>\n <button\n onClick={() => setShowCreateModal(false)}\n style={{\n backgroundColor: '#E0E0E0',\n color: '#2C3E50',\n border: 'none',\n padding: '10px 20px',\n borderRadius: '6px',\n cursor: 'pointer',\n fontSize: '14px',\n }}\n >\n Cancel\n </button>\n <button\n onClick={handleCreate}\n disabled={!newAgentName.trim()}\n style={{\n backgroundColor: newAgentName.trim() ? '#3498DB' : '#BDC3C7',\n color: 'white',\n border: 'none',\n padding: '10px 20px',\n borderRadius: '6px',\n cursor: newAgentName.trim() ? 'pointer' : 'not-allowed',\n fontSize: '14px',\n }}\n >\n Create Agent\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default AgentsPage;\n","/**\n * Channels Management Page\n * \n * Configure and manage communication channels\n */\n\nimport React from 'react';\n\nexport interface Channel {\n id: string;\n type: 'telegram' | 'discord' | 'slack' | 'whatsapp' | 'signal';\n name: string;\n status: 'connected' | 'disconnected' | 'connecting' | 'error';\n lastSeen?: number;\n messageCount: number;\n config?: Record<string, unknown>;\n}\n\nexport interface ChannelsPageProps {\n channels: Channel[];\n onConnect: (channelId: string) => void;\n onDisconnect: (channelId: string) => void;\n onConfigure: (channelId: string) => void;\n}\n\nexport const ChannelsPage: React.FC<ChannelsPageProps> = ({\n channels,\n onConnect,\n onDisconnect,\n onConfigure,\n}) => {\n const getTypeEmoji = (type: Channel['type']) => {\n const emojis = {\n telegram: '✈️',\n discord: '🎮',\n slack: '💼',\n whatsapp: '📱',\n signal: '🔒',\n };\n return emojis[type];\n };\n\n const getStatusColor = (status: Channel['status']) => {\n const colors = {\n connected: '#2ECC71',\n disconnected: '#95A5A6',\n connecting: '#F39C12',\n error: '#E74C3C',\n };\n return colors[status];\n };\n\n return (\n <div style={{ padding: '24px', maxWidth: '1400px', margin: '0 auto' }}>\n {/* Header */}\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: '24px',\n }}\n >\n <div>\n <h1 style={{ fontSize: '28px', fontWeight: 'bold', color: '#2C3E50', margin: 0 }}>\n Channels\n </h1>\n <p style={{ color: '#7F8C8D', margin: '8px 0 0 0' }}>\n {channels.length} channels •{' '}\n {channels.filter((c) => c.status === 'connected').length} connected\n </p>\n </div>\n <button\n style={{\n backgroundColor: '#3498DB',\n color: 'white',\n border: 'none',\n padding: '12px 24px',\n borderRadius: '8px',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: '500',\n }}\n >\n ➕ Add Channel\n </button>\n </div>\n\n {/* Channels Grid */}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, minmax(350px, 1fr))',\n gap: '16px',\n }}\n >\n {channels.map((channel) => (\n <div\n key={channel.id}\n style={{\n backgroundColor: 'white',\n borderRadius: '12px',\n padding: '20px',\n boxShadow: '0 2px 8px rgba(0, 0, 0, 0.1)',\n border: `2px solid ${\n channel.status === 'connected' ? '#2ECC71' : 'transparent'\n }`,\n }}\n >\n {/* Header */}\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: '16px',\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>\n <span style={{ fontSize: '32px' }}>{getTypeEmoji(channel.type)}</span>\n <div>\n <div style={{ fontWeight: 'bold', color: '#2C3E50', fontSize: '16px' }}>\n {channel.name}\n </div>\n <div\n style={{\n fontSize: '12px',\n color: getStatusColor(channel.status),\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n }}\n >\n <div\n style={{\n width: '8px',\n height: '8px',\n backgroundColor: getStatusColor(channel.status),\n borderRadius: '50%',\n }}\n />\n <span>{channel.status}</span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Stats */}\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n paddingTop: '16px',\n borderTop: '1px solid #F0F0F0',\n marginBottom: '16px',\n }}\n >\n <div>\n <div style={{ fontSize: '12px', color: '#7F8C8D', marginBottom: '4px' }}>\n Messages\n </div>\n <div style={{ fontWeight: '500', color: '#2C3E50' }}>\n {channel.messageCount.toLocaleString()}\n </div>\n </div>\n <div>\n <div style={{ fontSize: '12px', color: '#7F8C8D', marginBottom: '4px' }}>\n Last Seen\n </div>\n <div style={{ fontWeight: '500', color: '#2C3E50' }}>\n {channel.lastSeen\n ? new Date(channel.lastSeen).toLocaleTimeString('pt-BR', {\n hour: '2-digit',\n minute: '2-digit',\n })\n : 'Never'}\n </div>\n </div>\n </div>\n\n {/* Actions */}\n <div style={{ display: 'flex', gap: '8px' }}>\n {channel.status === 'connected' ? (\n <button\n onClick={() => onDisconnect(channel.id)}\n style={{\n flex: 1,\n backgroundColor: '#E74C3C',\n color: 'white',\n border: 'none',\n padding: '10px',\n borderRadius: '6px',\n cursor: 'pointer',\n fontSize: '14px',\n }}\n >\n Disconnect\n </button>\n ) : (\n <button\n onClick={() => onConnect(channel.id)}\n style={{\n flex: 1,\n backgroundColor: '#2ECC71',\n color: 'white',\n border: 'none',\n padding: '10px',\n borderRadius: '6px',\n cursor: 'pointer',\n fontSize: '14px',\n }}\n >\n Connect\n </button>\n )}\n <button\n onClick={() => onConfigure(channel.id)}\n style={{\n flex: 1,\n backgroundColor: '#3498DB',\n color: 'white',\n border: 'none',\n padding: '10px',\n borderRadius: '6px',\n cursor: 'pointer',\n fontSize: '14px',\n }}\n >\n Configure\n </button>\n </div>\n </div>\n ))}\n </div>\n\n {channels.length === 0 && (\n <div\n style={{\n textAlign: 'center',\n padding: '60px 20px',\n color: '#7F8C8D',\n }}\n >\n <div style={{ fontSize: '64px', marginBottom: '16px' }}>💬</div>\n <div style={{ fontSize: '18px', fontWeight: 'bold', marginBottom: '8px' }}>\n No channels configured\n </div>\n <div>Add a channel to start communicating with your agents</div>\n </div>\n )}\n </div>\n );\n};\n\nexport default ChannelsPage;\n","/**\n * Skills Marketplace Page\n * \n * Browse, install, and manage skills\n */\n\nimport React, { useState } from 'react';\n\nexport interface Skill {\n id: string;\n name: string;\n description: string;\n category: string;\n installed: boolean;\n version: string;\n author: string;\n downloads: number;\n rating: number;\n}\n\nexport interface SkillsPageProps {\n skills: Skill[];\n onInstall: (skillId: string) => void;\n onUninstall: (skillId: string) => void;\n}\n\nexport const SkillsPage: React.FC<SkillsPageProps> = ({\n skills,\n onInstall,\n onUninstall,\n}) => {\n const [searchQuery, setSearchQuery] = useState('');\n const [selectedCategory, setSelectedCategory] = useState('all');\n\n const categories = ['all', ...Array.from(new Set(skills.map((s) => s.category)))];\n\n const filteredSkills = skills.filter((skill) => {\n const matchesSearch =\n skill.name.toLowerCase().includes(searchQuery.toLowerCase()) ||\n skill.description.toLowerCase().includes(searchQuery.toLowerCase());\n const matchesCategory = selectedCategory === 'all' || skill.category === selectedCategory;\n return matchesSearch && matchesCategory;\n });\n\n return (\n <div style={{ padding: '24px', maxWidth: '1400px', margin: '0 auto' }}>\n {/* Header */}\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: '24px',\n }}\n >\n <div>\n <h1 style={{ fontSize: '28px', fontWeight: 'bold', color: '#2C3E50', margin: 0 }}>\n Skills Marketplace\n </h1>\n <p style={{ color: '#7F8C8D', margin: '8px 0 0 0' }}>\n {skills.filter((s) => s.installed).length} installed • {skills.length} available\n </p>\n </div>\n </div>\n\n {/* Filters */}\n <div\n style={{\n display: 'flex',\n gap: '12px',\n marginBottom: '24px',\n flexWrap: 'wrap',\n }}\n >\n <input\n type=\"text\"\n placeholder=\"Search skills...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n style={{\n flex: '1',\n minWidth: '200px',\n padding: '10px 14px',\n border: '1px solid #E0E0E0',\n borderRadius: '8px',\n fontSize: '14px',\n outline: 'none',\n }}\n />\n <select\n value={selectedCategory}\n onChange={(e) => setSelectedCategory(e.target.value)}\n style={{\n padding: '10px 14px',\n border: '1px solid #E0E0E0',\n borderRadius: '8px',\n fontSize: '14px',\n outline: 'none',\n backgroundColor: 'white',\n cursor: 'pointer',\n }}\n >\n {categories.map((cat) => (\n <option key={cat} value={cat}>\n {cat === 'all' ? 'All Categories' : cat}\n </option>\n ))}\n </select>\n </div>\n\n {/* Skills Grid */}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, minmax(320px, 1fr))',\n gap: '16px',\n }}\n >\n {filteredSkills.map((skill) => (\n <div\n key={skill.id}\n style={{\n backgroundColor: 'white',\n borderRadius: '12px',\n padding: '20px',\n boxShadow: '0 2px 8px rgba(0, 0, 0, 0.1)',\n display: 'flex',\n flexDirection: 'column',\n }}\n >\n {/* Header */}\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n marginBottom: '12px',\n }}\n >\n <div style={{ flex: 1 }}>\n <div\n style={{\n fontWeight: 'bold',\n color: '#2C3E50',\n fontSize: '16px',\n marginBottom: '4px',\n }}\n >\n {skill.name}\n </div>\n <div style={{ fontSize: '12px', color: '#7F8C8D', marginBottom: '8px' }}>\n v{skill.version} • by {skill.author}\n </div>\n </div>\n <span\n style={{\n backgroundColor: skill.installed ? '#D5F5E3' : '#F0F0F0',\n color: skill.installed ? '#27AE60' : '#7F8C8D',\n padding: '4px 8px',\n borderRadius: '4px',\n fontSize: '12px',\n fontWeight: '500',\n }}\n >\n {skill.installed ? '✓ Installed' : 'Available'}\n </span>\n </div>\n\n {/* Description */}\n <p style={{ fontSize: '14px', color: '#7F8C8D', marginBottom: '16px', flex: 1 }}>\n {skill.description}\n </p>\n\n {/* Stats */}\n <div\n style={{\n display: 'flex',\n gap: '16px',\n fontSize: '12px',\n color: '#7F8C8D',\n marginBottom: '16px',\n }}\n >\n <span>⬇️ {skill.downloads.toLocaleString()}</span>\n <span>⭐ {skill.rating.toFixed(1)}</span>\n <span>📦 {skill.category}</span>\n </div>\n\n {/* Action */}\n <button\n onClick={() => (skill.installed ? onUninstall(skill.id) : onInstall(skill.id))}\n style={{\n width: '100%',\n padding: '10px',\n backgroundColor: skill.installed ? '#E74C3C' : '#3498DB',\n color: 'white',\n border: 'none',\n borderRadius: '6px',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: '500',\n }}\n >\n {skill.installed ? '🗑️ Uninstall' : '📦 Install'}\n </button>\n </div>\n ))}\n </div>\n\n {filteredSkills.length === 0 && (\n <div\n style={{\n textAlign: 'center',\n padding: '60px 20px',\n color: '#7F8C8D',\n }}\n >\n <div style={{ fontSize: '64px', marginBottom: '16px' }}>🔍</div>\n <div style={{ fontSize: '18px', fontWeight: 'bold', marginBottom: '8px' }}>\n No skills found\n </div>\n <div>Try adjusting your search or filters</div>\n </div>\n )}\n </div>\n );\n};\n\nexport default SkillsPage;\n","/**\n * Cron Jobs Management Page\n * \n * Schedule and manage automated tasks\n */\n\nimport React from 'react';\n\nexport interface CronJob {\n id: string;\n name: string;\n schedule: string;\n agent: string;\n command: string;\n enabled: boolean;\n lastRun?: number;\n nextRun?: number;\n successCount: number;\n failureCount: number;\n}\n\nexport interface CronPageProps {\n jobs: CronJob[];\n onCreateJob: (job: Omit<CronJob, 'id' | 'successCount' | 'failureCount'>) => void;\n onDeleteJob: (jobId: string) => void;\n onToggleJob: (jobId: string, enabled: boolean) => void;\n onRunNow: (jobId: string) => void;\n}\n\nexport const CronPage: React.FC<CronPageProps> = ({\n jobs,\n onCreateJob,\n onDeleteJob,\n onToggleJob,\n onRunNow,\n}) => {\n return (\n <div style={{ padding: '24px', maxWidth: '1400px', margin: '0 auto' }}>\n {/* Header */}\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: '24px',\n }}\n >\n <div>\n <h1 style={{ fontSize: '28px', fontWeight: 'bold', color: '#2C3E50', margin: 0 }}>\n Scheduled Jobs\n </h1>\n <p style={{ color: '#7F8C8D', margin: '8px 0 0 0' }}>\n {jobs.length} jobs • {jobs.filter((j) => j.enabled).length} active\n </p>\n </div>\n <button\n onClick={() =>\n onCreateJob({\n name: 'New Job',\n schedule: '0 * * * *',\n agent: 'default',\n command: 'echo \"Hello\"',\n enabled: true,\n })\n }\n style={{\n backgroundColor: '#3498DB',\n color: 'white',\n border: 'none',\n padding: '12px 24px',\n borderRadius: '8px',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: '500',\n }}\n >\n ➕ Create Job\n </button>\n </div>\n\n {/* Jobs Table */}\n <div\n style={{\n backgroundColor: 'white',\n borderRadius: '12px',\n boxShadow: '0 2px 8px rgba(0, 0, 0, 0.1)',\n overflow: 'hidden',\n }}\n >\n {/* Table Header */}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: '2fr 1.5fr 1.5fr 1fr 1fr 1fr',\n padding: '16px 20px',\n backgroundColor: '#F8F9FA',\n borderBottom: '1px solid #E0E0E0',\n fontWeight: 'bold',\n fontSize: '12px',\n color: '#7F8C8D',\n textTransform: 'uppercase',\n }}\n >\n <div>Name</div>\n <div>Schedule</div>\n <div>Agent</div>\n <div>Last Run</div>\n <div>Success/Fail</div>\n <div>Actions</div>\n </div>\n\n {/* Jobs */}\n {jobs.map((job) => (\n <div\n key={job.id}\n style={{\n display: 'grid',\n gridTemplateColumns: '2fr 1.5fr 1.5fr 1fr 1fr 1fr',\n padding: '16px 20px',\n borderBottom: '1px solid #F0F0F0',\n alignItems: 'center',\n opacity: job.enabled ? 1 : 0.6,\n }}\n >\n <div>\n <div style={{ fontWeight: '500', color: '#2C3E50', marginBottom: '4px' }}>\n {job.name}\n </div>\n <div style={{ fontSize: '12px', color: '#7F8C8D' }}>{job.command}</div>\n </div>\n <div style={{ fontFamily: 'monospace', fontSize: '13px', color: '#2C3E50' }}>\n {job.schedule}\n </div>\n <div style={{ color: '#2C3E50' }}>{job.agent}</div>\n <div style={{ fontSize: '13px', color: '#7F8C8D' }}>\n {job.lastRun\n ? new Date(job.lastRun).toLocaleString('pt-BR', {\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n })\n : 'Never'}\n </div>\n <div style={{ display: 'flex', gap: '8px', fontSize: '13px' }}>\n <span style={{ color: '#27AE60' }}>✓ {job.successCount}</span>\n <span style={{ color: '#E74C3C' }}>✗ {job.failureCount}</span>\n </div>\n <div style={{ display: 'flex', gap: '8px' }}>\n <button\n onClick={() => onRunNow(job.id)}\n style={{\n backgroundColor: '#3498DB',\n color: 'white',\n border: 'none',\n padding: '6px 12px',\n borderRadius: '4px',\n cursor: 'pointer',\n fontSize: '12px',\n }}\n >\n ▶️ Run\n </button>\n <button\n onClick={() => onToggleJob(job.id, !job.enabled)}\n style={{\n backgroundColor: job.enabled ? '#F39C12' : '#27AE60',\n color: 'white',\n border: 'none',\n padding: '6px 12px',\n borderRadius: '4px',\n cursor: 'pointer',\n fontSize: '12px',\n }}\n >\n {job.enabled ? '⏸️ Pause' : '▶️ Resume'}\n </button>\n <button\n onClick={() => onDeleteJob(job.id)}\n style={{\n backgroundColor: '#E74C3C',\n color: 'white',\n border: 'none',\n padding: '6px 12px',\n borderRadius: '4px',\n cursor: 'pointer',\n fontSize: '12px',\n }}\n >\n 🗑️\n </button>\n </div>\n </div>\n ))}\n\n {jobs.length === 0 && (\n <div\n style={{\n padding: '60px 20px',\n textAlign: 'center',\n color: '#7F8C8D',\n }}\n >\n <div style={{ fontSize: '64px', marginBottom: '16px' }}>⏰</div>\n <div style={{ fontSize: '18px', fontWeight: 'bold', marginBottom: '8px' }}>\n No scheduled jobs\n </div>\n <div>Create your first scheduled job to automate tasks</div>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default CronPage;\n","/**\n * Settings Page\n * \n * Configure PoolBot settings, providers, and preferences\n */\n\nimport React, { useState } from 'react';\n\nexport interface SettingsPageProps {\n gatewayUrl: string;\n language: string;\n theme: 'light' | 'dark';\n onGatewayChange: (url: string) => void;\n onLanguageChange: (lang: string) => void;\n onThemeChange: (theme: 'light' | 'dark') => void;\n onSave: () => void;\n}\n\nexport const SettingsPage: React.FC<SettingsPageProps> = ({\n gatewayUrl,\n language,\n theme,\n onGatewayChange,\n onLanguageChange,\n onThemeChange,\n onSave,\n}) => {\n const [localGateway, setLocalGateway] = useState(gatewayUrl);\n const [localLanguage, setLocalLanguage] = useState(language);\n const [localTheme, setLocalTheme] = useState<'light' | 'dark'>(theme);\n const [saved, setSaved] = useState(false);\n\n const handleSave = () => {\n onGatewayChange(localGateway);\n onLanguageChange(localLanguage);\n onThemeChange(localTheme);\n onSave();\n setSaved(true);\n setTimeout(() => setSaved(false), 2000);\n };\n\n return (\n <div style={{ padding: '24px', maxWidth: '800px', margin: '0 auto' }}>\n {/* Header */}\n <div style={{ marginBottom: '24px' }}>\n <h1 style={{ fontSize: '28px', fontWeight: 'bold', color: '#2C3E50', margin: 0 }}>\n Settings\n </h1>\n <p style={{ color: '#7F8C8D', margin: '8px 0 0 0' }}>\n Configure your PoolBot preferences\n </p>\n </div>\n\n {/* Settings Sections */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: '24px' }}>\n {/* Gateway Settings */}\n <div\n style={{\n backgroundColor: 'white',\n borderRadius: '12px',\n padding: '24px',\n boxShadow: '0 2px 8px rgba(0, 0, 0, 0.1)',\n }}\n >\n <h2 style={{ fontSize: '18px', fontWeight: 'bold', color: '#2C3E50', marginBottom: '16px' }}>\n 🔌 Gateway Connection\n </h2>\n <div>\n <label\n style={{\n display: 'block',\n fontWeight: '500',\n marginBottom: '8px',\n color: '#2C3E50',\n }}\n >\n Gateway URL\n </label>\n <input\n type=\"text\"\n value={localGateway}\n onChange={(e) => setLocalGateway(e.target.value)}\n placeholder=\"ws://localhost:18789\"\n style={{\n width: '100%',\n padding: '10px 12px',\n border: '1px solid #E0E0E0',\n borderRadius: '6px',\n fontSize: '14px',\n outline: 'none',\n }}\n />\n <p style={{ fontSize: '12px', color: '#7F8C8D', marginTop: '8px' }}>\n WebSocket URL for PoolBot Gateway connection\n </p>\n </div>\n </div>\n\n {/* Appearance */}\n <div\n style={{\n backgroundColor: 'white',\n borderRadius: '12px',\n padding: '24px',\n boxShadow: '0 2px 8px rgba(0, 0, 0, 0.1)',\n }}\n >\n <h2 style={{ fontSize: '18px', fontWeight: 'bold', color: '#2C3E50', marginBottom: '16px' }}>\n 🎨 Appearance\n </h2>\n\n {/* Theme */}\n <div style={{ marginBottom: '20px' }}>\n <label\n style={{\n display: 'block',\n fontWeight: '500',\n marginBottom: '8px',\n color: '#2C3E50',\n }}\n >\n Theme\n </label>\n <div style={{ display: 'flex', gap: '12px' }}>\n <button\n onClick={() => setLocalTheme('light')}\n style={{\n flex: 1,\n padding: '12px',\n backgroundColor: localTheme === 'light' ? '#3498DB' : '#F0F0F0',\n color: localTheme === 'light' ? 'white' : '#2C3E50',\n border: 'none',\n borderRadius: '6px',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: '500',\n }}\n >\n ☀️ Light\n </button>\n <button\n onClick={() => setLocalTheme('dark')}\n style={{\n flex: 1,\n padding: '12px',\n backgroundColor: localTheme === 'dark' ? '#3498DB' : '#F0F0F0',\n color: localTheme === 'dark' ? 'white' : '#2C3E50',\n border: 'none',\n borderRadius: '6px',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: '500',\n }}\n >\n 🌙 Dark\n </button>\n </div>\n </div>\n\n {/* Language */}\n <div>\n <label\n style={{\n display: 'block',\n fontWeight: '500',\n marginBottom: '8px',\n color: '#2C3E50',\n }}\n >\n Language\n </label>\n <select\n value={localLanguage}\n onChange={(e) => setLocalLanguage(e.target.value)}\n style={{\n width: '100%',\n padding: '10px 12px',\n border: '1px solid #E0E0E0',\n borderRadius: '6px',\n fontSize: '14px',\n outline: 'none',\n backgroundColor: 'white',\n }}\n >\n <option value=\"pt-BR\">🇧🇷 Português (Brasil)</option>\n <option value=\"en\">🇺🇸 English</option>\n <option value=\"es\">🇪🇸 Español</option>\n </select>\n </div>\n </div>\n\n {/* About */}\n <div\n style={{\n backgroundColor: 'white',\n borderRadius: '12px',\n padding: '24px',\n boxShadow: '0 2px 8px rgba(0, 0, 0, 0.1)',\n }}\n >\n <h2 style={{ fontSize: '18px', fontWeight: 'bold', color: '#2C3E50', marginBottom: '16px' }}>\n ℹ️ About\n </h2>\n <div style={{ fontSize: '14px', color: '#7F8C8D', lineHeight: '1.8' }}>\n <div><strong>PoolBot Office</strong></div>\n <div>Version: 0.1.0</div>\n <div>Build: 2026.3.22</div>\n <div style={{ marginTop: '12px' }}>\n Visual monitoring & management frontend for PoolBot Multi-Agent system\n </div>\n </div>\n </div>\n\n {/* Save Button */}\n <button\n onClick={handleSave}\n style={{\n backgroundColor: saved ? '#27AE60' : '#3498DB',\n color: 'white',\n border: 'none',\n padding: '14px 28px',\n borderRadius: '8px',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: '500',\n width: '100%',\n }}\n >\n {saved ? '✓ Saved!' : '💾 Save Settings'}\n </button>\n </div>\n </div>\n );\n};\n\nexport default SettingsPage;\n","/**\n * Desk Component\n * \n * Renders an isometric desk for agent workstations\n */\n\nimport React from 'react';\n\nexport interface DeskProps {\n x: number;\n y: number;\n width?: number;\n height?: number;\n occupied?: boolean;\n agentName?: string;\n onClick?: () => void;\n}\n\nexport const Desk: React.FC<DeskProps> = ({\n x,\n y,\n width = 120,\n height = 80,\n occupied = false,\n agentName,\n onClick,\n}) => {\n const deskColor = occupied ? '#4ECDC4' : '#95A5A6';\n const shadowColor = 'rgba(0, 0, 0, 0.2)';\n\n return (\n <g\n transform={`translate(${x}, ${y})`}\n onClick={onClick}\n style={{ cursor: onClick ? 'pointer' : 'default' }}\n >\n {/* Shadow */}\n <ellipse\n cx={width / 2}\n cy={height + 10}\n rx={width / 2}\n ry={height / 4}\n fill={shadowColor}\n />\n\n {/* Desk surface (isometric) */}\n <path\n d={`M 0,${height / 2} L ${width / 2},0 L ${width},${height / 2} L ${width / 2},${height} Z`}\n fill={deskColor}\n stroke=\"#2C3E50\"\n strokeWidth=\"2\"\n />\n\n {/* Desk legs */}\n <line\n x1={width * 0.25}\n y1={height / 2}\n x2={width * 0.25}\n y2={height + 5}\n stroke=\"#2C3E50\"\n strokeWidth=\"2\"\n />\n <line\n x1={width * 0.75}\n y1={height / 2}\n x2={width * 0.75}\n y2={height + 5}\n stroke=\"#2C3E50\"\n strokeWidth=\"2\"\n />\n\n {/* Computer monitor */}\n <rect\n x={width / 2 - 20}\n y={height / 4 - 15}\n width=\"40\"\n height=\"25\"\n fill=\"#34495E\"\n stroke=\"#2C3E50\"\n strokeWidth=\"1\"\n />\n <rect\n x={width / 2 - 18}\n y={height / 4 - 13}\n width=\"36\"\n height=\"21\"\n fill={occupied ? '#2ECC71' : '#7F8C8D'}\n />\n\n {/* Agent name label */}\n {agentName && (\n <text\n x={width / 2}\n y={-10}\n textAnchor=\"middle\"\n fontSize=\"12\"\n fill=\"#2C3E50\"\n fontWeight=\"bold\"\n >\n {agentName}\n </text>\n )}\n\n {/* Occupied indicator */}\n {occupied && (\n <circle\n cx={width - 10}\n cy={10}\n r=\"6\"\n fill=\"#2ECC71\"\n stroke=\"#27AE60\"\n strokeWidth=\"1\"\n />\n )}\n </g>\n );\n};\n\nexport default Desk;\n","/**\n * Chair Component\n * \n * Renders an isometric office chair\n */\n\nimport React from 'react';\n\nexport interface ChairProps {\n x: number;\n y: number;\n occupied?: boolean;\n color?: string;\n rotation?: number;\n onClick?: () => void;\n}\n\nexport const Chair: React.FC<ChairProps> = ({\n x,\n y,\n occupied = false,\n color = '#E74C3C',\n rotation = 0,\n onClick,\n}) => {\n const shadowColor = 'rgba(0, 0, 0, 0.2)';\n\n return (\n <g\n transform={`translate(${x}, ${y}) rotate(${rotation})`}\n onClick={onClick}\n style={{ cursor: onClick ? 'pointer' : 'default' }}\n >\n {/* Shadow */}\n <ellipse\n cx=\"0\"\n cy=\"25\"\n rx=\"20\"\n ry=\"8\"\n fill={shadowColor}\n />\n\n {/* Chair base */}\n <path\n d=\"M -15,15 L 0,5 L 15,15 L 0,25 Z\"\n fill=\"#34495E\"\n stroke=\"#2C3E50\"\n strokeWidth=\"1\"\n />\n\n {/* Chair leg */}\n <rect\n x=\"-3\"\n y=\"-10\"\n width=\"6\"\n height=\"20\"\n fill=\"#7F8C8D\"\n />\n\n {/* Seat */}\n <ellipse\n cx=\"0\"\n cy=\"-10\"\n rx=\"18\"\n ry=\"12\"\n fill={color}\n stroke=\"#2C3E50\"\n strokeWidth=\"2\"\n />\n\n {/* Backrest */}\n <path\n d=\"M -15,-25 L 15,-25 L 15,-5 L -15,-5 Z\"\n fill={occupied ? '#C0392B' : color}\n stroke=\"#2C3E50\"\n strokeWidth=\"1\"\n opacity=\"0.8\"\n />\n\n {/* Occupied indicator */}\n {occupied && (\n <circle\n cx=\"0\"\n cy=\"-10\"\n r=\"8\"\n fill=\"#F39C12\"\n opacity=\"0.5\"\n />\n )}\n </g>\n );\n};\n\nexport default Chair;\n","/**\n * Plant Component\n * \n * Renders a decorative office plant\n */\n\nimport React from 'react';\n\nexport interface PlantProps {\n x: number;\n y: number;\n size?: 'small' | 'medium' | 'large';\n type?: 'succulent' | 'fern' | 'tree';\n onClick?: () => void;\n}\n\nexport const Plant: React.FC<PlantProps> = ({\n x,\n y,\n size = 'medium',\n type = 'succulent',\n onClick,\n}) => {\n const sizeMap = {\n small: { width: 30, height: 40 },\n medium: { width: 50, height: 70 },\n large: { width: 80, height: 120 },\n };\n\n const { width, height } = sizeMap[size];\n const shadowColor = 'rgba(0, 0, 0, 0.2)';\n\n const renderPlant = () => {\n switch (type) {\n case 'fern':\n return (\n <>\n {/* Fern leaves */}\n {[...Array(5)].map((_, i) => (\n <path\n key={i}\n d={`M 0,${-height / 2} Q ${20 - i * 8},${-height / 2 + 20} ${30 - i * 5},${-height / 2 + 40}`}\n stroke=\"#27AE60\"\n strokeWidth=\"3\"\n fill=\"none\"\n />\n ))}\n {[...Array(5)].map((_, i) => (\n <path\n key={`left-${i}`}\n d={`M 0,${-height / 2} Q ${-20 + i * 8},${-height / 2 + 20} ${-30 + i * 5},${-height / 2 + 40}`}\n stroke=\"#27AE60\"\n strokeWidth=\"3\"\n fill=\"none\"\n />\n ))}\n </>\n );\n\n case 'tree':\n return (\n <>\n {/* Trunk */}\n <rect\n x={-5}\n y={0}\n width=\"10\"\n height={height / 2}\n fill=\"#8B4513\"\n />\n {/* Foliage */}\n <ellipse\n cx=\"0\"\n cy={-height / 3}\n rx={width / 2}\n ry={height / 3}\n fill=\"#229954\"\n stroke=\"#1E8449\"\n strokeWidth=\"2\"\n />\n </>\n );\n\n case 'succulent':\n default:\n return (\n <>\n {/* Pot */}\n <path\n d={`M ${-width / 4},${height / 4} L ${width / 4},${height / 4} L ${width / 6},${height / 2} L ${-width / 6},${height / 2} Z`}\n fill=\"#D35400\"\n stroke=\"#BA4A00\"\n strokeWidth=\"1\"\n />\n {/* Succulent leaves */}\n {[...Array(8)].map((_, i) => {\n const angle = (i / 8) * Math.PI * 2;\n const leafX = Math.cos(angle) * 15;\n const leafY = Math.sin(angle) * 15;\n return (\n <ellipse\n key={i}\n cx={leafX}\n cy={leafY - 10}\n rx=\"5\"\n ry=\"12\"\n fill=\"#58D68D\"\n stroke=\"#27AE60\"\n strokeWidth=\"1\"\n transform={`rotate(${(i / 8) * 360} ${leafX} ${leafY - 10})`}\n />\n );\n })}\n </>\n );\n }\n };\n\n return (\n <g\n transform={`translate(${x}, ${y})`}\n onClick={onClick}\n style={{ cursor: onClick ? 'pointer' : 'default' }}\n >\n {/* Shadow */}\n <ellipse\n cx=\"0\"\n cy={height / 2 + 5}\n rx={width / 2}\n ry={height / 6}\n fill={shadowColor}\n />\n\n {/* Plant */}\n {renderPlant()}\n </g>\n );\n};\n\nexport default Plant;\n","/**\n * Collaboration Lines Component\n * \n * Renders animated lines showing inter-agent message flow and collaboration\n */\n\nimport React, { useEffect, useState } from 'react';\n\nexport interface CollaborationLine {\n fromX: number;\n fromY: number;\n toX: number;\n toY: number;\n active?: boolean;\n messageCount?: number;\n color?: string;\n}\n\nexport interface CollaborationLinesProps {\n lines: CollaborationLine[];\n animated?: boolean;\n showLabels?: boolean;\n}\n\nexport const CollaborationLines: React.FC<CollaborationLinesProps> = ({\n lines,\n animated = true,\n showLabels = false,\n}) => {\n const [animationOffset, setAnimationOffset] = useState(0);\n\n // Animate lines\n useEffect(() => {\n if (!animated) return;\n\n const interval = setInterval(() => {\n setAnimationOffset((prev) => (prev + 2) % 20);\n }, 50);\n\n return () => clearInterval(interval);\n }, [animated]);\n\n const getLineColor = (line: CollaborationLine): string => {\n if (line.color) return line.color;\n if (line.active) return '#2ECC71';\n return '#BDC3C7';\n };\n\n const getLineWidth = (line: CollaborationLine): number => {\n if (!line.messageCount) return 2;\n if (line.messageCount > 100) return 6;\n if (line.messageCount > 50) return 4;\n return 2;\n };\n\n return (\n <svg\n className=\"collaboration-lines\"\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n pointerEvents: 'none',\n zIndex: 1,\n }}\n >\n <defs>\n {/* Animated dash pattern */}\n {animated && (\n <pattern\n id=\"dashPattern\"\n patternUnits=\"userSpaceOnUse\"\n width=\"20\"\n height=\"20\"\n >\n <line\n x1=\"0\"\n y1=\"10\"\n x2=\"15\"\n y2=\"10\"\n stroke=\"#3498DB\"\n strokeWidth=\"2\"\n strokeDasharray=\"10,10\"\n strokeDashoffset={-animationOffset}\n />\n </pattern>\n )}\n\n {/* Gradient for active lines */}\n <linearGradient id=\"activeGradient\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n <stop offset=\"0%\" stopColor=\"#3498DB\" stopOpacity=\"0\" />\n <stop offset=\"50%\" stopColor=\"#3498DB\" stopOpacity=\"1\" />\n <stop offset=\"100%\" stopColor=\"#3498DB\" stopOpacity=\"0\" />\n </linearGradient>\n\n {/* Arrow marker */}\n <marker\n id=\"arrowhead\"\n markerWidth=\"10\"\n markerHeight=\"7\"\n refX=\"9\"\n refY=\"3.5\"\n orient=\"auto\"\n >\n <polygon\n points=\"0 0, 10 3.5, 0 7\"\n fill=\"#3498DB\"\n opacity=\"0.6\"\n />\n </marker>\n </defs>\n\n {lines.map((line, index) => {\n const color = getLineColor(line);\n const width = getLineWidth(line);\n\n return (\n <g key={index}>\n {/* Base line */}\n <line\n x1={line.fromX}\n y1={line.fromY}\n x2={line.toX}\n y2={line.toY}\n stroke={color}\n strokeWidth={width}\n strokeOpacity={line.active ? 0.6 : 0.3}\n strokeLinecap=\"round\"\n />\n\n {/* Animated overlay for active lines */}\n {animated && line.active && (\n <line\n x1={line.fromX}\n y1={line.fromY}\n x2={line.toX}\n y2={line.toY}\n stroke=\"url(#activeGradient)\"\n strokeWidth={width + 2}\n strokeOpacity=\"0.8\"\n strokeLinecap=\"round\"\n strokeDasharray=\"10,10\"\n strokeDashoffset={-animationOffset}\n />\n )}\n\n {/* Direction indicator for active lines */}\n {line.active && (\n <line\n x1={line.fromX}\n y1={line.fromY}\n x2={line.toX}\n y2={line.toY}\n stroke={color}\n strokeWidth=\"1\"\n strokeOpacity=\"0.4\"\n markerEnd=\"url(#arrowhead)\"\n />\n )}\n\n {/* Message count label */}\n {showLabels && line.messageCount !== undefined && (\n <g>\n <rect\n x={(line.fromX + line.toX) / 2 - 20}\n y={(line.fromY + line.toY) / 2 - 10}\n width=\"40\"\n height=\"20\"\n fill=\"rgba(44, 62, 80, 0.8)\"\n rx=\"4\"\n />\n <text\n x={(line.fromX + line.toX) / 2}\n y={(line.fromY + line.toY) / 2 + 4}\n textAnchor=\"middle\"\n fontSize=\"11\"\n fill=\"#ECF0F1\"\n fontWeight=\"bold\"\n >\n {line.messageCount > 999\n ? `${(line.messageCount / 1000).toFixed(1)}k`\n : line.messageCount}\n </text>\n </g>\n )}\n </g>\n );\n })}\n </svg>\n );\n};\n\nexport default CollaborationLines;\n","/**\n * Office Layout 2D Component\n * \n * Main 2D isometric office floor plan with agent desks, furniture, and collaboration lines\n */\n\nimport React, { useMemo } from 'react';\nimport { Desk } from './furniture/Desk';\nimport { Chair } from './furniture/Chair';\nimport { Plant } from './furniture/Plant';\nimport { CollaborationLines, type CollaborationLine } from './CollaborationLines';\n\nexport interface AgentPosition {\n id: string;\n name: string;\n x: number;\n y: number;\n status: 'idle' | 'working' | 'speaking' | 'error' | 'offline';\n deskX: number;\n deskY: number;\n}\n\nexport interface OfficeLayout2DProps {\n agents: AgentPosition[];\n width?: number;\n height?: number;\n showCollaborationLines?: boolean;\n showFurniture?: boolean;\n onAgentClick?: (agentId: string) => void;\n onDeskClick?: (agentId: string) => void;\n}\n\nexport const OfficeLayout2D: React.FC<OfficeLayout2DProps> = ({\n agents,\n width = 1200,\n height = 800,\n showCollaborationLines = true,\n showFurniture = true,\n onAgentClick,\n onDeskClick,\n}) => {\n // Generate collaboration lines between agents\n const collaborationLines: CollaborationLine[] = useMemo(() => {\n if (!showCollaborationLines) return [];\n\n const lines: CollaborationLine[] = [];\n const workingAgents = agents.filter((a) => a.status === 'working' || a.status === 'speaking');\n\n // Create lines between working agents\n for (let i = 0; i < workingAgents.length; i++) {\n for (let j = i + 1; j < workingAgents.length; j++) {\n const from = workingAgents[i];\n const to = workingAgents[j];\n\n // Only show lines for agents that are close to each other\n const distance = Math.sqrt(\n Math.pow(from.deskX - to.deskX, 2) + Math.pow(from.deskY - to.deskY, 2)\n );\n\n if (distance < 400) {\n lines.push({\n fromX: from.deskX + 60, // Center of desk\n fromY: from.deskY + 40,\n toX: to.deskX + 60,\n toY: to.deskY + 40,\n active: from.status === 'speaking' || to.status === 'speaking',\n messageCount: Math.floor(Math.random() * 150), // Mock data\n });\n }\n }\n }\n\n return lines;\n }, [agents, showCollaborationLines]);\n\n // Generate decorative plants\n const plants = useMemo(() => {\n if (!showFurniture) return [];\n\n return [\n { x: 50, y: 50, size: 'large' as const, type: 'tree' as const },\n { x: width - 100, y: 50, size: 'medium' as const, type: 'fern' as const },\n { x: 50, y: height - 100, size: 'medium' as const, type: 'succulent' as const },\n { x: width - 100, y: height - 100, size: 'large' as const, type: 'tree' as const },\n ];\n }, [width, height, showFurniture]);\n\n // Get agent status color\n const getStatusColor = (status: AgentPosition['status']): string => {\n switch (status) {\n case 'idle':\n return '#95A5A6';\n case 'working':\n return '#3498DB';\n case 'speaking':\n return '#2ECC71';\n case 'error':\n return '#E74C3C';\n case 'offline':\n return '#BDC3C7';\n default:\n return '#95A5A6';\n }\n };\n\n return (\n <div\n className=\"office-layout-2d\"\n style={{\n position: 'relative',\n width,\n height,\n backgroundColor: '#ECF0F1',\n borderRadius: '8px',\n overflow: 'hidden',\n boxShadow: '0 2px 8px rgba(0, 0, 0, 0.1)',\n }}\n >\n {/* Floor pattern */}\n <svg\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n zIndex: 0,\n }}\n >\n <pattern\n id=\"floorPattern\"\n patternUnits=\"userSpaceOnUse\"\n width=\"40\"\n height=\"40\"\n >\n <rect width=\"40\" height=\"40\" fill=\"#ECF0F1\" />\n <path\n d=\"M 0,0 L 40,40 M 40,0 L 0,40\"\n stroke=\"#BDC3C7\"\n strokeWidth=\"0.5\"\n opacity=\"0.3\"\n />\n </pattern>\n <rect width=\"100%\" height=\"100%\" fill=\"url(#floorPattern)\" />\n </svg>\n\n {/* Collaboration lines (behind furniture) */}\n {showCollaborationLines && (\n <CollaborationLines lines={collaborationLines} animated showLabels />\n )}\n\n {/* Decorative plants */}\n {showFurniture &&\n plants.map((plant, index) => (\n <Plant\n key={index}\n x={plant.x}\n y={plant.y}\n size={plant.size}\n type={plant.type}\n />\n ))}\n\n {/* Agent desks and chairs */}\n {agents.map((agent) => (\n <React.Fragment key={agent.id}>\n {/* Desk */}\n <Desk\n x={agent.deskX}\n y={agent.deskY}\n occupied={agent.status !== 'offline'}\n agentName={agent.name}\n onClick={() => onDeskClick?.(agent.id)}\n />\n\n {/* Chair */}\n <Chair\n x={agent.deskX + 60}\n y={agent.deskY + 100}\n occupied={agent.status !== 'offline' && agent.status !== 'idle'}\n color={getStatusColor(agent.status)}\n rotation={agent.status === 'working' ? -15 : 0}\n onClick={() => onAgentClick?.(agent.id)}\n />\n\n {/* Status indicator */}\n {agent.status === 'speaking' && (\n <g transform={`translate(${agent.deskX + 60}, ${agent.deskY - 30})`}>\n <circle cx=\"0\" cy=\"0\" r=\"12\" fill=\"#2ECC71\" opacity=\"0.8\">\n <animate\n attributeName=\"r\"\n values=\"10;14;10\"\n dur=\"1s\"\n repeatCount=\"indefinite\"\n />\n <animate\n attributeName=\"opacity\"\n values=\"0.6;1;0.6\"\n dur=\"1s\"\n repeatCount=\"indefinite\"\n />\n </circle>\n <text\n x=\"0\"\n y=\"4\"\n textAnchor=\"middle\"\n fontSize=\"10\"\n fill=\"white\"\n fontWeight=\"bold\"\n >\n 💬\n </text>\n </g>\n )}\n\n {/* Error indicator */}\n {agent.status === 'error' && (\n <g transform={`translate(${agent.deskX + 60}, ${agent.deskY - 30})`}>\n <circle cx=\"0\" cy=\"0\" r=\"12\" fill=\"#E74C3C\" />\n <text\n x=\"0\"\n y=\"4\"\n textAnchor=\"middle\"\n fontSize=\"12\"\n fill=\"white\"\n fontWeight=\"bold\"\n >\n !\n </text>\n </g>\n )}\n </React.Fragment>\n ))}\n\n {/* Office zones labels */}\n <div\n style={{\n position: 'absolute',\n top: 20,\n left: 20,\n fontSize: '14px',\n fontWeight: 'bold',\n color: '#2C3E50',\n backgroundColor: 'rgba(255, 255, 255, 0.8)',\n padding: '8px 12px',\n borderRadius: '4px',\n zIndex: 10,\n }}\n >\n 📍 Zone A - Development Team\n </div>\n\n <div\n style={{\n position: 'absolute',\n bottom: 20,\n right: 20,\n fontSize: '12px',\n color: '#7F8C8D',\n backgroundColor: 'rgba(255, 255, 255, 0.8)',\n padding: '4px 8px',\n borderRadius: '4px',\n zIndex: 10,\n }}\n >\n {agents.length} agents • {agents.filter((a) => a.status === 'working').length} working •{' '}\n {agents.filter((a) => a.status === 'speaking').length} speaking\n </div>\n </div>\n );\n};\n\nexport default OfficeLayout2D;\n","/**\n * Agent Character 3D Component\n * \n * Renders a 3D character model for agents using React Three Fiber\n */\n\nimport React, { useRef, useMemo } from 'react';\nimport { useFrame } from '@react-three/fiber';\nimport * as THREE from 'three';\n\nexport type AgentStatus = 'idle' | 'working' | 'speaking' | 'error' | 'offline';\n\nexport interface AgentCharacterProps {\n position?: [number, number, number];\n rotation?: [number, number, number];\n status: AgentStatus;\n agentName?: string;\n scale?: number;\n onClick?: () => void;\n}\n\nexport const AgentCharacter: React.FC<AgentCharacterProps> = ({\n position = [0, 0, 0],\n rotation = [0, 0, 0],\n status,\n agentName,\n scale = 1,\n onClick,\n}) => {\n const groupRef = useRef<THREE.Group>(null);\n const headRef = useRef<THREE.Mesh>(null);\n\n // Get color based on status\n const statusColor = useMemo(() => {\n switch (status) {\n case 'idle':\n return '#95A5A6';\n case 'working':\n return '#3498DB';\n case 'speaking':\n return '#2ECC71';\n case 'error':\n return '#E74C3C';\n case 'offline':\n return '#BDC3C7';\n default:\n return '#95A5A6';\n }\n }, [status]);\n\n // Animate character based on status\n useFrame((state) => {\n if (!groupRef.current || !headRef.current) return;\n\n const time = state.clock.getElapsedTime();\n\n // Breathing animation for all states\n groupRef.current.position.y = position[1] + Math.sin(time * 2) * 0.02;\n\n // Speaking animation\n if (status === 'speaking') {\n headRef.current.scale.setScalar(1 + Math.sin(time * 8) * 0.05);\n } else if (status === 'working') {\n // Typing animation (slight head movement)\n headRef.current.rotation.y = Math.sin(time * 4) * 0.1;\n } else if (status === 'error') {\n // Error shake animation\n groupRef.current.rotation.z = Math.sin(time * 20) * 0.05;\n } else {\n // Reset rotations\n headRef.current.rotation.y = 0;\n groupRef.current.rotation.z = 0;\n }\n });\n\n return (\n <group\n ref={groupRef}\n position={position}\n rotation={rotation}\n scale={[scale, scale, scale]}\n onClick={onClick}\n >\n {/* Body */}\n <mesh position={[0, 0.5, 0]} castShadow receiveShadow>\n <capsuleGeometry args={[0.15, 0.5, 8, 16]} />\n <meshStandardMaterial color={statusColor} />\n </mesh>\n\n {/* Head */}\n <mesh ref={headRef} position={[0, 1.1, 0]} castShadow receiveShadow>\n <sphereGeometry args={[0.2, 16, 16]} />\n <meshStandardMaterial color=\"#F5D6BA\" />\n </mesh>\n\n {/* Status indicator (glow above head) */}\n {status !== 'offline' && (\n <mesh position={[0, 1.5, 0]}>\n <sphereGeometry args={[0.08, 16, 16]} />\n <meshBasicMaterial\n color={statusColor}\n transparent\n opacity={0.6}\n />\n <pointLight color={statusColor} intensity={0.5} distance={2} />\n </mesh>\n )}\n\n {/* Name label (billboard - always faces camera) */}\n {agentName && (\n <sprite position={[0, 1.8, 0]} scale={[0.8, 0.2, 1]}>\n <spriteMaterial>\n <canvasTexture\n attach=\"map\"\n image={(() => {\n const canvas = document.createElement('canvas');\n canvas.width = 256;\n canvas.height = 64;\n const ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.fillStyle = 'rgba(44, 62, 80, 0.8)';\n ctx.roundRect(0, 0, 256, 64, 8);\n ctx.fill();\n ctx.fillStyle = '#ECF0F1';\n ctx.font = 'bold 24px Arial';\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillText(agentName, 128, 32);\n }\n return canvas;\n })()}\n />\n </spriteMaterial>\n </sprite>\n )}\n\n {/* Shadow */}\n <mesh position={[0, 0.01, 0]} rotation={[-Math.PI / 2, 0, 0]} receiveShadow>\n <circleGeometry args={[0.3, 16]} />\n <meshBasicMaterial color=\"#000000\" transparent opacity={0.3} />\n </mesh>\n </group>\n );\n};\n\nexport default AgentCharacter;\n","/**\n * Skill Hologram 3D Component\n * \n * Renders a holographic display showing agent skills\n */\n\nimport React, { useRef, useMemo } from 'react';\nimport { useFrame } from '@react-three/fiber';\nimport * as THREE from 'three';\n\nexport interface SkillHologramProps {\n position?: [number, number, number];\n skills?: string[];\n activeSkill?: string;\n scale?: number;\n color?: string;\n}\n\nexport const SkillHologram: React.FC<SkillHologramProps> = ({\n position = [0, 1.5, 0],\n skills = ['search', 'code', 'analyze'],\n activeSkill,\n scale = 1,\n color = '#3498DB',\n}) => {\n const hologramRef = useRef<THREE.Group>(null);\n\n // Animate hologram\n useFrame((state) => {\n if (!hologramRef.current) return;\n\n const time = state.clock.getElapsedTime();\n\n // Rotation\n hologramRef.current.rotation.y = time * 0.5;\n\n // Floating animation\n hologramRef.current.position.y = position[1] + Math.sin(time * 2) * 0.1;\n\n // Pulse effect\n const pulse = 1 + Math.sin(time * 4) * 0.05;\n hologramRef.current.scale.set(pulse, pulse, pulse);\n });\n\n // Generate skill rings\n const skillRings = useMemo(() => {\n return skills.map((skill, index) => {\n const angle = (index / skills.length) * Math.PI * 2;\n const radius = 0.5;\n return {\n skill,\n x: Math.cos(angle) * radius,\n z: Math.sin(angle) * radius,\n isActive: skill === activeSkill,\n };\n });\n }, [skills, activeSkill]);\n\n return (\n <group ref={hologramRef} position={position} scale={[scale, scale, scale]}>\n {/* Base hologram disk */}\n <mesh rotation={[-Math.PI / 2, 0, 0]} position={[0, 0, 0]}>\n <ringGeometry args={[0.3, 0.6, 32]} />\n <meshBasicMaterial\n color={color}\n transparent\n opacity={0.3}\n side={THREE.DoubleSide}\n />\n </mesh>\n\n {/* Outer rotating ring */}\n <mesh rotation={[-Math.PI / 2, 0, 0]} position={[0, 0.01, 0]}>\n <torusGeometry args={[0.6, 0.02, 16, 32]} />\n <meshBasicMaterial color={color} transparent opacity={0.6} />\n </mesh>\n\n {/* Skill nodes */}\n {skillRings.map((ring, index) => (\n <group key={index} position={[ring.x, 0.2, ring.z]}>\n {/* Node sphere */}\n <mesh castShadow>\n <sphereGeometry args={[0.08, 16, 16]} />\n <meshStandardMaterial\n color={ring.isActive ? '#2ECC71' : color}\n emissive={ring.isActive ? '#2ECC71' : color}\n emissiveIntensity={ring.isActive ? 0.5 : 0.2}\n />\n </mesh>\n\n {/* Connection line to center */}\n <mesh position={[ring.x * -0.5, 0, ring.z * -0.5]}>\n <cylinderGeometry args={[0.01, 0.01, 0.5, 8]} />\n <meshBasicMaterial color={color} transparent opacity={0.4} />\n </mesh>\n\n {/* Active indicator */}\n {ring.isActive && (\n <mesh>\n <sphereGeometry args={[0.12, 16, 16]} />\n <meshBasicMaterial color=\"#2ECC71\" transparent opacity={0.3} />\n </mesh>\n )}\n </group>\n ))}\n\n {/* Hologram beam (vertical lines) */}\n {[0, 1, 2, 3].map((i) => {\n const angle = (i / 4) * Math.PI * 2;\n const x = Math.cos(angle) * 0.5;\n const z = Math.sin(angle) * 0.5;\n return (\n <mesh\n key={i}\n position={[x, 0.5, z]}\n rotation={[0, 0, Math.atan2(z, x)]}\n >\n <cylinderGeometry args={[0.01, 0.01, 1, 8]} />\n <meshBasicMaterial color={color} transparent opacity={0.3} />\n </mesh>\n );\n })}\n\n {/* Central data core */}\n <mesh position={[0, 0.5, 0]}>\n <octahedronGeometry args={[0.15, 0]} />\n <meshStandardMaterial\n color={color}\n emissive={color}\n emissiveIntensity={0.5}\n wireframe\n />\n </mesh>\n </group>\n );\n};\n\nexport default SkillHologram;\n","/**\n * Spawn Portal 3D Component\n * \n * Renders a portal effect when agents spawn into the office\n */\n\nimport React, { useRef } from 'react';\nimport { useFrame } from '@react-three/fiber';\nimport * as THREE from 'three';\n\nexport interface SpawnPortalProps {\n position?: [number, number, number];\n scale?: number;\n color?: string;\n onComplete?: () => void;\n}\n\nexport const SpawnPortal: React.FC<SpawnPortalProps> = ({\n position = [0, 0, 0],\n scale = 1,\n color = '#3498DB',\n onComplete,\n}) => {\n const portalRef = useRef<THREE.Group>(null);\n const startTime = useRef(Date.now());\n\n useFrame(() => {\n if (!portalRef.current) return;\n\n const elapsed = Date.now() - startTime.current;\n const duration = 2000; // 2 seconds\n const progress = Math.min(elapsed / duration, 1);\n\n // Scale up animation\n const scaleProgress = Math.sin(progress * Math.PI);\n portalRef.current.scale.set(\n scale * scaleProgress,\n scale * scaleProgress,\n scale * scaleProgress\n );\n\n // Rotation\n portalRef.current.rotation.y += 0.05;\n\n // Fade out at the end\n if (progress > 0.8 && onComplete) {\n onComplete();\n }\n });\n\n return (\n <group ref={portalRef} position={position}>\n {/* Outer ring */}\n <mesh rotation={[-Math.PI / 2, 0, 0]}>\n <torusGeometry args={[0.8, 0.1, 16, 32]} />\n <meshBasicMaterial color={color} transparent opacity={0.8} />\n </mesh>\n\n {/* Middle ring (counter-rotating) */}\n <mesh rotation={[-Math.PI / 2, 0, 0]} scale={[0.8, 0.8, 0.8]}>\n <torusGeometry args={[0.6, 0.08, 16, 32]} />\n <meshBasicMaterial color=\"#2ECC71\" transparent opacity={0.6} />\n </mesh>\n\n {/* Inner ring */}\n <mesh rotation={[-Math.PI / 2, 0, 0]} scale={[0.6, 0.6, 0.6]}>\n <torusGeometry args={[0.4, 0.06, 16, 32]} />\n <meshBasicMaterial color=\"#F39C12\" transparent opacity={0.4} />\n </mesh>\n\n {/* Portal energy field */}\n <mesh rotation={[-Math.PI / 2, 0, 0]}>\n <circleGeometry args={[0.8, 32]} />\n <meshBasicMaterial\n color={color}\n transparent\n opacity={0.2}\n side={THREE.DoubleSide}\n />\n </mesh>\n\n {/* Particle effects */}\n {Array.from({ length: 20 }).map((_, i) => {\n const angle = (i / 20) * Math.PI * 2;\n const radius = 0.7 + Math.sin(Date.now() * 0.005 + i) * 0.1;\n return (\n <mesh\n key={i}\n position={[\n Math.cos(angle) * radius,\n Math.sin(Date.now() * 0.01 + i) * 0.2,\n Math.sin(angle) * radius,\n ]}\n >\n <sphereGeometry args={[0.03, 8, 8]} />\n <meshBasicMaterial color=\"#FFF\" transparent opacity={0.8} />\n </mesh>\n );\n })}\n\n {/* Light beam from above */}\n <mesh position={[0, 1, 0]} rotation={[Math.PI, 0, 0]}>\n <cylinderGeometry args={[0.1, 0.8, 2, 16]} />\n <meshBasicMaterial color={color} transparent opacity={0.3} />\n </mesh>\n </group>\n );\n};\n\nexport default SpawnPortal;\n","/**\n * Environment 3D Component\n * \n * Renders the 3D office environment with floor, walls, and lighting\n */\n\nimport React from 'react';\nimport { Environment, ContactShadows } from '@react-three/drei';\n\nexport interface Environment3DProps {\n width?: number;\n height?: number;\n showGrid?: boolean;\n}\n\nexport const Environment3D: React.FC<Environment3DProps> = ({\n width = 20,\n height = 15,\n showGrid = true,\n}) => {\n return (\n <>\n {/* Floor */}\n <mesh rotation={[-Math.PI / 2, 0, 0]} position={[0, 0, 0]} receiveShadow>\n <planeGeometry args={[width, height]} />\n <meshStandardMaterial\n color=\"#ECF0F1\"\n roughness={0.8}\n metalness={0.2}\n />\n </mesh>\n\n {/* Grid helper */}\n {showGrid && (\n <gridHelper\n args={[width, 20, '#BDC3C7', '#BDC3C7']}\n position={[0, 0.01, 0]}\n />\n )}\n\n {/* Walls (optional, for enclosed office) */}\n <mesh\n rotation={[0, 0, 0]}\n position={[0, 1.5, -height / 2]}\n receiveShadow\n >\n <boxGeometry args={[width, 3, 0.1]} />\n <meshStandardMaterial color=\"#BDC3C7\" transparent opacity={0.5} />\n </mesh>\n\n <mesh\n rotation={[0, 0, 0]}\n position={[-width / 2, 1.5, 0]}\n receiveShadow\n >\n <boxGeometry args={[0.1, 3, height]} />\n <meshStandardMaterial color=\"#BDC3C7\" transparent opacity={0.5} />\n </mesh>\n\n {/* Lighting */}\n <ambientLight intensity={0.5} />\n\n <directionalLight\n position={[10, 10, 5]}\n intensity={1}\n castShadow\n shadow-mapSize-width={2048}\n shadow-mapSize-height={2048}\n />\n\n <pointLight position={[0, 5, 0]} intensity={0.5} color=\"#3498DB\" />\n\n {/* Environment map for reflections */}\n <Environment preset=\"city\" />\n\n {/* Contact shadows */}\n <ContactShadows\n position={[0, 0.01, 0]}\n opacity={0.4}\n scale={20}\n blur={2}\n far={4.5}\n />\n </>\n );\n};\n\nexport default Environment3D;\n","/**\n * Office Layout 3D Component\n * \n * Main 3D office scene with agents, furniture, and effects\n */\n\nimport React, { useState, useEffect } from 'react';\nimport { Canvas, useThree } from '@react-three/fiber';\nimport { OrbitControls, PerspectiveCamera, Stats } from '@react-three/drei';\n\nimport { AgentCharacter, type AgentStatus } from './AgentCharacter';\nimport { SkillHologram } from './SkillHologram';\nimport { SpawnPortal } from './SpawnPortal';\nimport { Environment3D } from './Environment3D';\n\nexport interface Agent3DPosition {\n id: string;\n name: string;\n position: [number, number, number];\n rotation?: [number, number, number];\n status: AgentStatus;\n skills?: string[];\n activeSkill?: string;\n}\n\nexport interface OfficeLayout3DProps {\n agents: Agent3DPosition[];\n width?: number;\n height?: number;\n showGrid?: boolean;\n showStats?: boolean;\n onAgentClick?: (agentId: string) => void;\n autoRotate?: boolean;\n}\n\n// Camera controller component\nfunction CameraController({ autoRotate }: { autoRotate?: boolean }) {\n const controls = useThree((state) => state.controls as any);\n\n useEffect(() => {\n if (controls && autoRotate) {\n controls.autoRotate = true;\n controls.autoRotateSpeed = 0.5;\n }\n }, [controls, autoRotate]);\n\n return null;\n}\n\nexport const OfficeLayout3D: React.FC<OfficeLayout3DProps> = ({\n agents,\n width = 20,\n height = 15,\n showGrid = true,\n showStats = false,\n onAgentClick,\n autoRotate = false,\n}) => {\n const [spawningAgents, setSpawningAgents] = useState<string[]>([]);\n\n // Track newly spawned agents\n useEffect(() => {\n agents.forEach((agent) => {\n if (!spawningAgents.includes(agent.id)) {\n setSpawningAgents((prev) => [...prev, agent.id]);\n }\n });\n }, [agents, spawningAgents]);\n\n const handleSpawnComplete = (agentId: string) => {\n setSpawningAgents((prev) => prev.filter((id) => id !== agentId));\n };\n\n return (\n <div\n style={{\n width: '100%',\n height: '100%',\n position: 'relative',\n }}\n >\n <Canvas shadows>\n <PerspectiveCamera\n makeDefault\n position={[10, 10, 10]}\n fov={50}\n near={0.1}\n far={1000}\n />\n\n {/* Camera controls */}\n <OrbitControls\n enablePan={true}\n enableZoom={true}\n enableRotate={true}\n minDistance={5}\n maxDistance={50}\n maxPolarAngle={Math.PI / 2 - 0.1}\n />\n\n <CameraController autoRotate={autoRotate} />\n\n {/* Environment */}\n <Environment3D width={width} height={height} showGrid={showGrid} />\n\n {/* Agents */}\n {agents.map((agent) => (\n <React.Fragment key={agent.id}>\n {/* Spawn portal for new agents */}\n {spawningAgents.includes(agent.id) && (\n <SpawnPortal\n position={agent.position}\n scale={1.5}\n color=\"#3498DB\"\n onComplete={() => handleSpawnComplete(agent.id)}\n />\n )}\n\n {/* Agent character */}\n <AgentCharacter\n position={agent.position}\n rotation={agent.rotation || [0, 0, 0]}\n status={agent.status}\n agentName={agent.name}\n scale={spawningAgents.includes(agent.id) ? 0 : 1}\n onClick={() => onAgentClick?.(agent.id)}\n />\n\n {/* Skill hologram for working/speaking agents */}\n {(agent.status === 'working' || agent.status === 'speaking') &&\n agent.skills && (\n <SkillHologram\n position={[\n agent.position[0],\n agent.position[1] + 1,\n agent.position[2],\n ]}\n skills={agent.skills}\n activeSkill={agent.activeSkill}\n scale={0.8}\n color={\n agent.status === 'speaking' ? '#2ECC71' : '#3498DB'\n }\n />\n )}\n </React.Fragment>\n ))}\n\n {/* Stats (optional) */}\n {showStats && <Stats />}\n </Canvas>\n\n {/* UI Overlay */}\n <div\n style={{\n position: 'absolute',\n top: 20,\n left: 20,\n backgroundColor: 'rgba(44, 62, 80, 0.8)',\n color: '#ECF0F1',\n padding: '12px 16px',\n borderRadius: '8px',\n fontSize: '14px',\n zIndex: 10,\n }}\n >\n <div style={{ fontWeight: 'bold', marginBottom: '8px' }}>\n 🏢 3D Office View\n </div>\n <div>Agents: {agents.length}</div>\n <div>Working: {agents.filter((a) => a.status === 'working').length}</div>\n <div>Speaking: {agents.filter((a) => a.status === 'speaking').length}</div>\n <div style={{ marginTop: '8px', fontSize: '12px', opacity: 0.8 }}>\n 🖱️ Drag to rotate • Scroll to zoom • Right-click to pan\n </div>\n </div>\n </div>\n );\n};\n\nexport default OfficeLayout3D;\n","/**\n * Chat Dock Bar Component\n * \n * Bottom-docked chat interface for real-time conversations with agents\n */\n\nimport React, { useState, useRef, useEffect } from 'react';\n\nexport interface ChatDockBarProps {\n isOpen: boolean;\n onToggle: () => void;\n onSend: (message: string) => void;\n agentName?: string;\n isTyping?: boolean;\n disabled?: boolean;\n}\n\nexport const ChatDockBar: React.FC<ChatDockBarProps> = ({\n isOpen,\n onToggle,\n onSend,\n agentName = 'Agent',\n isTyping = false,\n disabled = false,\n}) => {\n const [message, setMessage] = useState('');\n const inputRef = useRef<HTMLTextAreaElement>(null);\n\n // Focus input when opened\n useEffect(() => {\n if (isOpen && inputRef.current) {\n inputRef.current.focus();\n }\n }, [isOpen]);\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (message.trim() && !disabled) {\n onSend(message.trim());\n setMessage('');\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n handleSubmit(e);\n }\n };\n\n return (\n <div\n className=\"chat-dock-bar\"\n style={{\n position: 'fixed',\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: 'rgba(255, 255, 255, 0.98)',\n borderTop: '1px solid #E0E0E0',\n boxShadow: '0 -2px 8px rgba(0, 0, 0, 0.1)',\n zIndex: 1000,\n transform: isOpen ? 'translateY(0)' : 'translateY(calc(100% - 60px))',\n transition: 'transform 0.3s ease',\n }}\n >\n {/* Header */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '12px 16px',\n borderBottom: '1px solid #E0E0E0',\n cursor: 'pointer',\n }}\n onClick={onToggle}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\n <span style={{ fontSize: '18px' }}>💬</span>\n <span style={{ fontWeight: 'bold', color: '#2C3E50' }}>\n Chat with {agentName}\n </span>\n {isTyping && (\n <span\n style={{\n fontSize: '12px',\n color: '#27AE60',\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n }}\n >\n <span className=\"typing-indicator\">\n <span\n style={{\n display: 'inline-block',\n width: '6px',\n height: '6px',\n backgroundColor: '#27AE60',\n borderRadius: '50%',\n animation: 'typing 1.4s infinite',\n }}\n />\n <span\n style={{\n display: 'inline-block',\n width: '6px',\n height: '6px',\n backgroundColor: '#27AE60',\n borderRadius: '50%',\n animation: 'typing 1.4s infinite 0.2s',\n }}\n />\n <span\n style={{\n display: 'inline-block',\n width: '6px',\n height: '6px',\n backgroundColor: '#27AE60',\n borderRadius: '50%',\n animation: 'typing 1.4s infinite 0.4s',\n }}\n />\n </span>\n typing...\n </span>\n )}\n </div>\n <button\n style={{\n background: 'none',\n border: 'none',\n fontSize: '20px',\n cursor: 'pointer',\n color: '#7F8C8D',\n padding: '4px 8px',\n borderRadius: '4px',\n }}\n onClick={(e) => {\n e.stopPropagation();\n onToggle();\n }}\n >\n {isOpen ? '▼' : '▲'}\n </button>\n </div>\n\n {/* Input Area */}\n {isOpen && (\n <form\n onSubmit={handleSubmit}\n style={{\n padding: '16px',\n display: 'flex',\n gap: '12px',\n alignItems: 'flex-end',\n }}\n >\n <textarea\n ref={inputRef}\n value={message}\n onChange={(e) => setMessage(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={`Message ${agentName}... (Press Enter to send, Shift+Enter for new line)`}\n disabled={disabled}\n rows={Math.min(Math.max(message.split('\\n').length, 1), 5)}\n style={{\n flex: 1,\n padding: '12px',\n border: '1px solid #E0E0E0',\n borderRadius: '8px',\n fontSize: '14px',\n fontFamily: 'inherit',\n resize: 'none',\n minHeight: '44px',\n maxHeight: '120px',\n outline: 'none',\n }}\n />\n <button\n type=\"submit\"\n disabled={!message.trim() || disabled}\n style={{\n padding: '12px 24px',\n backgroundColor: message.trim() && !disabled ? '#3498DB' : '#BDC3C7',\n color: 'white',\n border: 'none',\n borderRadius: '8px',\n fontSize: '14px',\n fontWeight: 'bold',\n cursor: message.trim() && !disabled ? 'pointer' : 'not-allowed',\n transition: 'background-color 0.2s',\n minHeight: '44px',\n }}\n >\n Send\n </button>\n </form>\n )}\n\n {/* CSS for typing animation */}\n <style>{`\n @keyframes typing {\n 0%, 100% { transform: translateY(0); }\n 50% { transform: translateY(-4px); }\n }\n `}</style>\n </div>\n );\n};\n\nexport default ChatDockBar;\n","/**\n * Message Bubble Component\n * \n * Renders individual chat messages with Markdown support\n */\n\nimport React from 'react';\n\nexport type MessageRole = 'user' | 'assistant' | 'system';\n\nexport interface MessageBubbleProps {\n role: MessageRole;\n content: string;\n timestamp: number;\n agentName?: string;\n isStreaming?: boolean;\n onCopy?: () => void;\n}\n\nexport const MessageBubble: React.FC<MessageBubbleProps> = ({\n role,\n content,\n timestamp,\n agentName,\n isStreaming = false,\n onCopy,\n}) => {\n const formatTime = (ts: number) => {\n return new Date(ts).toLocaleTimeString('pt-BR', {\n hour: '2-digit',\n minute: '2-digit',\n });\n };\n\n const getBackgroundColor = () => {\n switch (role) {\n case 'user':\n return '#3498DB';\n case 'assistant':\n return '#ECF0F1';\n case 'system':\n return '#FFF3CD';\n default:\n return '#ECF0F1';\n }\n };\n\n const getTextColor = () => {\n return role === 'user' ? '#FFFFFF' : '#2C3E50';\n };\n\n const getAlignment = () => {\n return role === 'user' ? 'flex-end' : 'flex-start';\n };\n\n const getAvatar = () => {\n switch (role) {\n case 'user':\n return '👤';\n case 'assistant':\n return '🤖';\n case 'system':\n return '⚙️';\n default:\n return '💬';\n }\n };\n\n // Simple markdown-like formatting\n const formatContent = (text: string) => {\n return text\n .split('\\n')\n .map((line, i) => (\n <React.Fragment key={i}>\n {line}\n <br />\n </React.Fragment>\n ));\n };\n\n return (\n <div\n className=\"message-bubble\"\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: getAlignment(),\n marginBottom: '16px',\n }}\n >\n {/* Avatar and name */}\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n marginBottom: '4px',\n maxWidth: '80%',\n }}\n >\n <span style={{ fontSize: '20px' }}>{getAvatar()}</span>\n <span\n style={{\n fontWeight: 'bold',\n color: '#2C3E50',\n fontSize: '14px',\n }}\n >\n {role === 'assistant' ? agentName : role === 'user' ? 'You' : 'System'}\n </span>\n <span\n style={{\n fontSize: '12px',\n color: '#7F8C8D',\n }}\n >\n {formatTime(timestamp)}\n </span>\n </div>\n\n {/* Message bubble */}\n <div\n style={{\n backgroundColor: getBackgroundColor(),\n color: getTextColor(),\n padding: '12px 16px',\n borderRadius: '16px',\n borderBottomRightRadius: role === 'user' ? '4px' : '16px',\n borderBottomLeftRadius: role === 'assistant' ? '4px' : '16px',\n maxWidth: '80%',\n wordBreak: 'break-word',\n position: 'relative',\n }}\n >\n <div style={{ fontSize: '14px', lineHeight: '1.5' }}>\n {formatContent(content)}\n </div>\n\n {/* Streaming indicator */}\n {isStreaming && (\n <span\n className=\"streaming-cursor\"\n style={{\n display: 'inline-block',\n width: '2px',\n height: '16px',\n backgroundColor: getTextColor(),\n marginLeft: '2px',\n animation: 'blink 1s infinite',\n }}\n />\n )}\n\n {/* Copy button (hover) */}\n {onCopy && role !== 'system' && (\n <button\n onClick={onCopy}\n style={{\n position: 'absolute',\n top: '8px',\n right: '8px',\n background: 'rgba(0, 0, 0, 0.1)',\n border: 'none',\n borderRadius: '4px',\n padding: '4px 8px',\n fontSize: '12px',\n cursor: 'pointer',\n opacity: 0,\n transition: 'opacity 0.2s',\n color: getTextColor(),\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.opacity = '1';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.opacity = '0';\n }}\n >\n 📋 Copy\n </button>\n )}\n </div>\n\n {/* CSS for blinking cursor */}\n <style>{`\n @keyframes blink {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0; }\n }\n `}</style>\n </div>\n );\n};\n\nexport default MessageBubble;\n","/**\n * Streaming Indicator Component\n * \n * Shows visual feedback when agent is streaming response\n */\n\nimport React from 'react';\n\nexport interface StreamingIndicatorProps {\n isVisible: boolean;\n agentName?: string;\n progress?: number;\n}\n\nexport const StreamingIndicator: React.FC<StreamingIndicatorProps> = ({\n isVisible,\n agentName = 'Agent',\n progress,\n}) => {\n if (!isVisible) return null;\n\n return (\n <div\n className=\"streaming-indicator\"\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n padding: '12px 16px',\n backgroundColor: 'rgba(52, 152, 219, 0.1)',\n borderRadius: '8px',\n marginBottom: '16px',\n border: '1px solid rgba(52, 152, 219, 0.3)',\n }}\n >\n {/* Animated spinner */}\n <div\n style={{\n width: '24px',\n height: '24px',\n border: '3px solid rgba(52, 152, 219, 0.2)',\n borderTop: '3px solid #3498DB',\n borderRadius: '50%',\n animation: 'spin 1s linear infinite',\n }}\n />\n\n {/* Status text */}\n <div style={{ flex: 1 }}>\n <div\n style={{\n fontWeight: 'bold',\n color: '#2C3E50',\n fontSize: '14px',\n }}\n >\n {agentName} is thinking...\n </div>\n {progress !== undefined && (\n <div\n style={{\n fontSize: '12px',\n color: '#7F8C8D',\n marginTop: '4px',\n }}\n >\n Generating response... {Math.round(progress)}%\n </div>\n )}\n </div>\n\n {/* Token counter (optional) */}\n <div\n style={{\n fontSize: '12px',\n color: '#7F8C8D',\n backgroundColor: 'rgba(0, 0, 0, 0.05)',\n padding: '4px 8px',\n borderRadius: '4px',\n }}\n >\n ⚡ Streaming\n </div>\n\n {/* CSS for spinner animation */}\n <style>{`\n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n `}</style>\n </div>\n );\n};\n\nexport default StreamingIndicator;\n","/**\n * Agent Selector Component\n * \n * Dropdown for selecting which agent to chat with\n */\n\nimport React, { useState, useRef, useEffect } from 'react';\n\nexport interface AgentOption {\n id: string;\n name: string;\n status: 'idle' | 'working' | 'speaking' | 'error' | 'offline';\n avatar?: string;\n}\n\nexport interface AgentSelectorProps {\n agents: AgentOption[];\n selectedAgentId?: string;\n onSelect: (agentId: string) => void;\n disabled?: boolean;\n}\n\nexport const AgentSelector: React.FC<AgentSelectorProps> = ({\n agents,\n selectedAgentId,\n onSelect,\n disabled = false,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const selectedAgent = agents.find((a) => a.id === selectedAgentId);\n\n // Close dropdown when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n const getStatusColor = (status: AgentOption['status']) => {\n switch (status) {\n case 'idle':\n return '#95A5A6';\n case 'working':\n return '#3498DB';\n case 'speaking':\n return '#2ECC71';\n case 'error':\n return '#E74C3C';\n case 'offline':\n return '#BDC3C7';\n default:\n return '#95A5A6';\n }\n };\n\n const getStatusEmoji = (status: AgentOption['status']) => {\n switch (status) {\n case 'idle':\n return '😴';\n case 'working':\n return '💻';\n case 'speaking':\n return '💬';\n case 'error':\n return '❌';\n case 'offline':\n return '⚫';\n default:\n return '🤖';\n }\n };\n\n return (\n <div\n ref={dropdownRef}\n className=\"agent-selector\"\n style={{\n position: 'relative',\n display: 'inline-block',\n width: '200px',\n }}\n >\n {/* Selected agent display */}\n <button\n onClick={() => !disabled && setIsOpen(!isOpen)}\n disabled={disabled}\n style={{\n width: '100%',\n padding: '10px 14px',\n backgroundColor: 'white',\n border: '1px solid #E0E0E0',\n borderRadius: '8px',\n fontSize: '14px',\n cursor: disabled ? 'not-allowed' : 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '8px',\n opacity: disabled ? 0.6 : 1,\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\n <span style={{ fontSize: '18px' }}>\n {selectedAgent?.avatar || '🤖'}\n </span>\n <span style={{ fontWeight: '500', color: '#2C3E50' }}>\n {selectedAgent?.name || 'Select Agent'}\n </span>\n </div>\n <span\n style={{\n fontSize: '12px',\n color: '#7F8C8D',\n transform: isOpen ? 'rotate(180deg)' : 'rotate(0deg)',\n transition: 'transform 0.2s',\n }}\n >\n ▼\n </span>\n </button>\n\n {/* Dropdown menu */}\n {isOpen && (\n <div\n style={{\n position: 'absolute',\n top: 'calc(100% + 4px)',\n left: 0,\n right: 0,\n backgroundColor: 'white',\n border: '1px solid #E0E0E0',\n borderRadius: '8px',\n boxShadow: '0 4px 12px rgba(0, 0, 0, 0.15)',\n zIndex: 1000,\n maxHeight: '300px',\n overflowY: 'auto',\n }}\n >\n {agents.map((agent) => (\n <button\n key={agent.id}\n onClick={() => {\n onSelect(agent.id);\n setIsOpen(false);\n }}\n style={{\n width: '100%',\n padding: '10px 14px',\n backgroundColor:\n agent.id === selectedAgentId ? '#F5F5F5' : 'white',\n border: 'none',\n borderBottom: '1px solid #F0F0F0',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '8px',\n transition: 'background-color 0.2s',\n textAlign: 'left',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = '#F5F5F5';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor =\n agent.id === selectedAgentId ? '#F5F5F5' : 'white';\n }}\n >\n <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>\n <span style={{ fontSize: '18px' }}>{agent.avatar || '🤖'}</span>\n <span\n style={{\n fontWeight: agent.id === selectedAgentId ? '600' : '400',\n color: '#2C3E50',\n }}\n >\n {agent.name}\n </span>\n </div>\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '6px',\n fontSize: '12px',\n color: getStatusColor(agent.status),\n }}\n >\n <span>{getStatusEmoji(agent.status)}</span>\n <div\n style={{\n width: '8px',\n height: '8px',\n backgroundColor: getStatusColor(agent.status),\n borderRadius: '50%',\n }}\n />\n </div>\n </button>\n ))}\n\n {agents.length === 0 && (\n <div\n style={{\n padding: '20px',\n textAlign: 'center',\n color: '#7F8C8D',\n fontSize: '14px',\n }}\n >\n No agents available\n </div>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default AgentSelector;\n","/**\n * Chat Dialog Component\n * \n * Full chat dialog with message history and streaming support\n */\n\nimport React, { useState, useRef, useEffect } from 'react';\nimport { ChatDockBar } from './ChatDockBar';\nimport { MessageBubble, type MessageRole } from './MessageBubble';\nimport { StreamingIndicator } from './StreamingIndicator';\nimport { AgentSelector, type AgentOption } from './AgentSelector';\n\nexport interface Message {\n id: string;\n role: MessageRole;\n content: string;\n timestamp: number;\n isStreaming?: boolean;\n}\n\nexport interface ChatDialogProps {\n agents: AgentOption[];\n messages: Message[];\n selectedAgentId?: string;\n isStreaming?: boolean;\n streamingProgress?: number;\n onSendMessage: (message: string) => void;\n onAgentSelect: (agentId: string) => void;\n onCopyMessage?: (messageId: string) => void;\n}\n\nexport const ChatDialog: React.FC<ChatDialogProps> = ({\n agents,\n messages,\n selectedAgentId,\n isStreaming = false,\n streamingProgress,\n onSendMessage,\n onAgentSelect,\n onCopyMessage,\n}) => {\n const [isChatOpen, setIsChatOpen] = useState(true);\n const messagesEndRef = useRef<HTMLDivElement>(null);\n\n // Auto-scroll to bottom when new messages arrive\n useEffect(() => {\n if (messagesEndRef.current) {\n messagesEndRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n }, [messages]);\n\n const selectedAgent = agents.find((a) => a.id === selectedAgentId);\n\n const handleCopyMessage = (messageId: string) => {\n const message = messages.find((m) => m.id === messageId);\n if (message && onCopyMessage) {\n navigator.clipboard.writeText(message.content);\n onCopyMessage(messageId);\n }\n };\n\n return (\n <div\n style={{\n position: 'fixed',\n bottom: 0,\n right: '20px',\n width: '400px',\n maxWidth: 'calc(100vw - 40px)',\n zIndex: 999,\n }}\n >\n {/* Chat Dock Bar */}\n <ChatDockBar\n isOpen={isChatOpen}\n onToggle={() => setIsChatOpen(!isChatOpen)}\n onSend={onSendMessage}\n agentName={selectedAgent?.name || 'Agent'}\n isTyping={isStreaming}\n />\n\n {/* Message History (shown when chat is open) */}\n {isChatOpen && (\n <div\n style={{\n position: 'absolute',\n bottom: '220px',\n left: 0,\n right: 0,\n maxHeight: '400px',\n overflowY: 'auto',\n backgroundColor: 'rgba(255, 255, 255, 0.98)',\n borderTop: '1px solid #E0E0E0',\n borderTopLeftRadius: '8px',\n borderTopRightRadius: '8px',\n boxShadow: '0 -2px 8px rgba(0, 0, 0, 0.1)',\n }}\n >\n {/* Agent selector */}\n <div\n style={{\n padding: '12px 16px',\n borderBottom: '1px solid #E0E0E0',\n backgroundColor: '#F8F9FA',\n borderTopLeftRadius: '8px',\n borderTopRightRadius: '8px',\n }}\n >\n <AgentSelector\n agents={agents}\n selectedAgentId={selectedAgentId}\n onSelect={onAgentSelect}\n />\n </div>\n\n {/* Messages */}\n <div style={{ padding: '16px' }}>\n {messages.map((message) => (\n <MessageBubble\n key={message.id}\n role={message.role}\n content={message.content}\n timestamp={message.timestamp}\n agentName={selectedAgent?.name}\n isStreaming={message.isStreaming}\n onCopy={() => handleCopyMessage(message.id)}\n />\n ))}\n\n {/* Streaming indicator */}\n {isStreaming && (\n <StreamingIndicator\n isVisible={isStreaming}\n agentName={selectedAgent?.name || 'Agent'}\n progress={streamingProgress}\n />\n )}\n\n {/* Auto-scroll anchor */}\n <div ref={messagesEndRef} />\n\n {/* Empty state */}\n {messages.length === 0 && !isStreaming && (\n <div\n style={{\n textAlign: 'center',\n padding: '40px 20px',\n color: '#7F8C8D',\n }}\n >\n <div style={{ fontSize: '48px', marginBottom: '12px' }}>💬</div>\n <div style={{ fontWeight: 'bold', marginBottom: '8px' }}>\n Start a conversation\n </div>\n <div style={{ fontSize: '14px' }}>\n Select an agent and send a message to begin\n </div>\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default ChatDialog;\n","/**\n * PoolBot Office Gateway Utilities\n */\n\n/**\n * Generate a unique ID for WebSocket requests\n */\nexport function generateRequestId(): string {\n return `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;\n}\n\n/**\n * Format WebSocket URL from gateway URL\n */\nexport function formatWebSocketUrl(gatewayUrl: string): string {\n // If already a WebSocket URL, use as-is\n if (gatewayUrl.startsWith('ws://') || gatewayUrl.startsWith('wss://')) {\n return gatewayUrl;\n }\n \n // Convert HTTP to WebSocket\n if (gatewayUrl.startsWith('http://')) {\n return gatewayUrl.replace('http://', 'ws://');\n }\n \n if (gatewayUrl.startsWith('https://')) {\n return gatewayUrl.replace('https://', 'wss://');\n }\n \n // Default to WebSocket\n return `ws://${gatewayUrl}`;\n}\n\n/**\n * Exponential backoff delay calculation\n */\nexport function calculateBackoff(attempt: number, baseDelay: number = 1000, maxDelay: number = 30000): number {\n const delay = Math.min(baseDelay * Math.pow(2, attempt), maxDelay);\n // Add jitter to prevent thundering herd\n const jitter = Math.random() * 0.3 * delay;\n return delay + jitter;\n}\n\n/**\n * Check if error is retryable\n */\nexport function isRetryableError(error: unknown): boolean {\n if (error instanceof Error) {\n const message = error.message.toLowerCase();\n return (\n message.includes('network') ||\n message.includes('connection') ||\n message.includes('timeout') ||\n message.includes('econnrefused') ||\n message.includes('econnreset')\n );\n }\n return false;\n}\n\n/**\n * Safe JSON parse with error handling\n */\nexport function safeJsonParse<T>(data: string, fallback: T): T {\n try {\n return JSON.parse(data) as T;\n } catch {\n return fallback;\n }\n}\n\n/**\n * Format timestamp for display\n */\nexport function formatTimestamp(timestamp: number): string {\n const date = new Date(timestamp);\n return date.toLocaleString('pt-BR', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n });\n}\n\n/**\n * Calculate uptime from milliseconds\n */\nexport function formatUptime(uptimeMs: number): string {\n const seconds = Math.floor(uptimeMs / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n \n if (days > 0) {\n return `${days}d ${hours % 24}h ${minutes % 60}m`;\n }\n if (hours > 0) {\n return `${hours}h ${minutes % 60}m ${seconds % 60}s`;\n }\n if (minutes > 0) {\n return `${minutes}m ${seconds % 60}s`;\n }\n return `${seconds}s`;\n}\n\n/**\n * Debounce function\n */\nexport function debounce<T extends (...args: unknown[]) => unknown>(\n func: T,\n wait: number\n): (...args: Parameters<T>) => void {\n let timeout: ReturnType<typeof setTimeout> | null = null;\n \n return (...args: Parameters<T>) => {\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n func(...args);\n timeout = null;\n }, wait);\n };\n}\n\n/**\n * Throttle function\n */\nexport function throttle<T extends (...args: unknown[]) => unknown>(\n func: T,\n limit: number\n): (...args: Parameters<T>) => void {\n let inThrottle: boolean = false;\n \n return (...args: Parameters<T>) => {\n if (!inThrottle) {\n func(...args);\n inThrottle = true;\n setTimeout(() => {\n inThrottle = false;\n }, limit);\n }\n };\n}\n","/**\n * PoolBot Office Gateway WebSocket Client\n * \n * Handles WebSocket connection to PoolBot Gateway with auto-reconnect,\n * heartbeat, and type-safe event handling.\n */\n\nimport type {\n GatewayEvents,\n WSMessage,\n WSRequest,\n WSResponse,\n ConnectionState,\n ConnectionInfo,\n} from './types.js';\nimport {\n generateRequestId,\n formatWebSocketUrl,\n calculateBackoff,\n isRetryableError,\n safeJsonParse,\n} from './utils.js';\n\nexport interface WebSocketClientOptions {\n gatewayUrl: string;\n token?: string;\n maxReconnectAttempts?: number;\n heartbeatInterval?: number;\n reconnectDelay?: number;\n}\n\nexport interface WebSocketClientEventMap {\n 'connecting': () => void;\n 'connected': () => void;\n 'disconnected': (error?: Error) => void;\n 'reconnecting': (attempt: number, delay: number) => void;\n 'error': (error: Error) => void;\n 'message': (message: WSMessage) => void;\n 'agent.spawn': (agent: GatewayEvents['agent.spawn']) => void;\n 'agent.despawn': (agentId: GatewayEvents['agent.despawn']) => void;\n 'agent.status': (status: GatewayEvents['agent.status']) => void;\n 'session.created': (session: GatewayEvents['session.created']) => void;\n 'session.updated': (session: GatewayEvents['session.updated']) => void;\n 'session.closed': (sessionId: GatewayEvents['session.closed']) => void;\n 'message.new': (message: GatewayEvents['message.new']) => void;\n 'message.streaming': (chunk: GatewayEvents['message.streaming']) => void;\n 'tool.call': (toolCall: GatewayEvents['tool.call']) => void;\n 'tool.result': (result: GatewayEvents['tool.result']) => void;\n 'channel.status': (status: GatewayEvents['channel.status']) => void;\n 'channel.qr': (qr: GatewayEvents['channel.qr']) => void;\n 'gateway.health': (health: GatewayEvents['gateway.health']) => void;\n 'gateway.error': (error: GatewayEvents['gateway.error']) => void;\n}\n\nexport class WebSocketClient {\n private ws: WebSocket | null = null;\n private options: WebSocketClientOptions;\n private state: ConnectionState = 'disconnected';\n private reconnectAttempts: number = 0;\n private heartbeatTimer: ReturnType<typeof setInterval> | null = null;\n private messageQueue: WSMessage[] = [];\n private eventListeners: Map<string, Set<(...args: unknown[]) => void>> = new Map();\n private connectionInfo: ConnectionInfo = {\n state: 'disconnected',\n reconnectedCount: 0,\n };\n private pendingRequests: Map<string, {\n resolve: (result: unknown) => void;\n reject: (error: Error) => void;\n timeout: ReturnType<typeof setTimeout>;\n }> = new Map();\n\n constructor(options: WebSocketClientOptions) {\n this.options = {\n maxReconnectAttempts: 10,\n heartbeatInterval: 30000, // 30 seconds\n reconnectDelay: 1000,\n ...options,\n };\n }\n\n /**\n * Connect to the gateway\n */\n public connect(): void {\n if (this.state === 'connected' || this.state === 'connecting') {\n return;\n }\n\n this.setState('connecting');\n this.emit('connecting');\n\n const wsUrl = formatWebSocketUrl(this.options.gatewayUrl);\n const url = new URL(wsUrl);\n \n // Token is sent in connect request, not URL query\n\n try {\n this.ws = new WebSocket(url.toString());\n this.ws.onopen = this.handleOpen.bind(this);\n this.ws.onclose = this.handleClose.bind(this);\n this.ws.onerror = this.handleError.bind(this);\n this.ws.onmessage = this.handleMessage.bind(this);\n } catch (error) {\n this.handleConnectionError(error instanceof Error ? error : new Error(String(error)));\n }\n }\n\n /**\n * Disconnect from the gateway\n */\n public disconnect(): void {\n this.stopHeartbeat();\n this.clearPendingRequests();\n \n if (this.ws) {\n this.ws.close(1000, 'Client disconnect');\n this.ws = null;\n }\n \n this.setState('disconnected');\n this.reconnectAttempts = 0;\n }\n\n /**\n * Send a message to the gateway\n */\n public send<T extends keyof GatewayEvents>(type: T, payload: Parameters<GatewayEvents[T]>[0]): void {\n const message: WSMessage = {\n type,\n payload,\n timestamp: Date.now(),\n };\n\n if (this.state === 'connected' && this.ws) {\n this.ws.send(JSON.stringify(message));\n } else {\n // Queue message for later\n this.messageQueue.push(message);\n \n // Limit queue size\n if (this.messageQueue.length > 100) {\n this.messageQueue.shift();\n }\n }\n }\n\n /**\n * Send a request and wait for response\n */\n public request<T = unknown>(method: string, params?: Record<string, unknown>): Promise<T> {\n return new Promise((resolve, reject) => {\n const id = generateRequestId();\n const request: WSRequest = {\n jsonrpc: '2.0',\n id,\n method,\n params,\n };\n\n const timeout = setTimeout(() => {\n this.pendingRequests.delete(String(id));\n reject(new Error(`Request timeout: ${method}`));\n }, 30000);\n\n this.pendingRequests.set(String(id), { resolve: resolve as (result: unknown) => void, reject, timeout });\n\n if (this.ws && (this.state === 'connected' || this.state === 'connecting')) {\n this.ws.send(JSON.stringify(request));\n } else {\n clearTimeout(timeout);\n this.pendingRequests.delete(String(id));\n reject(new Error('Not connected to gateway'));\n }\n });\n }\n\n /**\n * Subscribe to gateway events\n */\n public on<T extends keyof WebSocketClientEventMap>(\n event: T,\n callback: WebSocketClientEventMap[T]\n ): () => void {\n if (!this.eventListeners.has(event)) {\n this.eventListeners.set(event, new Set());\n }\n\n const listeners = this.eventListeners.get(event)!;\n listeners.add(callback as (...args: unknown[]) => void);\n\n // Return unsubscribe function\n return () => {\n listeners.delete(callback as (...args: unknown[]) => void);\n };\n }\n\n /**\n * Get current connection state\n */\n public getState(): ConnectionState {\n return this.state;\n }\n\n /**\n * Get connection info\n */\n public getConnectionInfo(): ConnectionInfo {\n return { ...this.connectionInfo };\n }\n\n /**\n * Check if connected\n */\n public isConnected(): boolean {\n return this.state === 'connected';\n }\n\n /**\n * Send queued messages\n */\n private flushMessageQueue(): void {\n if (!this.ws || this.messageQueue.length === 0) {\n return;\n }\n\n while (this.messageQueue.length > 0) {\n const message = this.messageQueue.shift();\n if (message && this.ws) {\n this.ws.send(JSON.stringify(message));\n }\n }\n }\n\n /**\n * Start heartbeat\n */\n private startHeartbeat(): void {\n this.stopHeartbeat();\n \n this.heartbeatTimer = setInterval(() => {\n if (this.state === 'connected' && this.ws) {\n // Send ping or request health\n this.request('health').catch(() => {\n // Ignore heartbeat errors\n });\n }\n }, this.options.heartbeatInterval);\n }\n\n /**\n * Stop heartbeat\n */\n private stopHeartbeat(): void {\n if (this.heartbeatTimer) {\n clearInterval(this.heartbeatTimer);\n this.heartbeatTimer = null;\n }\n }\n\n /**\n * Handle WebSocket open - send connect handshake with auth\n */\n private handleOpen(): void {\n this.setState('connecting');\n\n // Send connect handshake with auth token\n const connectParams: Record<string, unknown> = {\n minProtocol: 1,\n maxProtocol: 1,\n client: {\n id: 'poolbot-office',\n displayName: 'PoolBot Office',\n version: '0.1.0',\n platform: typeof navigator !== 'undefined' ? navigator.platform : 'web',\n mode: 'webchat',\n },\n caps: [],\n };\n\n if (this.options.token) {\n connectParams.auth = { token: this.options.token };\n }\n\n this.request('connect', connectParams)\n .then(() => {\n this.connectionInfo.connectedAt = Date.now();\n this.connectionInfo.lastError = undefined;\n this.setState('connected');\n this.emit('connected');\n this.startHeartbeat();\n this.flushMessageQueue();\n this.reconnectAttempts = 0;\n })\n .catch((err) => {\n const error = err instanceof Error ? err : new Error(String(err));\n this.handleConnectionError(error);\n });\n }\n\n /**\n * Handle WebSocket close\n */\n private handleClose(event: CloseEvent): void {\n this.setState('disconnected');\n this.stopHeartbeat();\n \n const error = event.reason ? new Error(event.reason) : undefined;\n this.emit('disconnected', error);\n\n // Attempt reconnect if not clean close\n if (event.code !== 1000) {\n this.scheduleReconnect();\n }\n }\n\n /**\n * Handle WebSocket error\n */\n private handleError(event: Event & { error?: Error }): void {\n const error = event.error || new Error('WebSocket error');\n this.emit('error', error);\n }\n\n /**\n * Handle WebSocket message\n */\n private handleMessage(event: MessageEvent): void {\n try {\n const data = safeJsonParse<WSResponse | WSMessage>(event.data, { type: 'unknown', payload: null, timestamp: Date.now() });\n \n // Check if it's a response to a request\n if ('jsonrpc' in data && 'id' in data) {\n const response = data as WSResponse;\n const pending = this.pendingRequests.get(String(response.id));\n \n if (pending) {\n clearTimeout(pending.timeout);\n this.pendingRequests.delete(String(response.id));\n \n if (response.error) {\n pending.reject(new Error(response.error.message));\n } else {\n pending.resolve(response.result);\n }\n }\n return;\n }\n\n // It's an event message\n const message = data as WSMessage;\n this.emit('message', message);\n \n // Emit specific event\n if (message.type) {\n this.emit(message.type as keyof WebSocketClientEventMap, message.payload as never);\n }\n } catch (error) {\n console.error('Failed to parse WebSocket message:', error);\n }\n }\n\n /**\n * Handle connection error\n */\n private handleConnectionError(error: Error): void {\n this.setState('error');\n this.connectionInfo.lastError = error.message;\n this.emit('error', error);\n \n if (isRetryableError(error)) {\n this.scheduleReconnect();\n }\n }\n\n /**\n * Schedule reconnection\n */\n private scheduleReconnect(): void {\n if (this.reconnectAttempts >= (this.options.maxReconnectAttempts || 10)) {\n console.error('Max reconnection attempts reached');\n this.setState('error');\n return;\n }\n\n this.reconnectAttempts++;\n const delay = calculateBackoff(\n this.reconnectAttempts,\n this.options.reconnectDelay,\n 30000\n );\n\n this.setState('reconnecting');\n this.emit('reconnecting', this.reconnectAttempts, delay);\n\n setTimeout(() => {\n this.connectionInfo.reconnectedCount++;\n this.connect();\n }, delay);\n }\n\n /**\n * Set connection state\n */\n private setState(state: ConnectionState): void {\n this.state = state;\n this.connectionInfo.state = state;\n }\n\n /**\n * Emit event to listeners\n */\n private emit<T extends keyof WebSocketClientEventMap>(\n event: T,\n ...args: Parameters<WebSocketClientEventMap[T]>\n ): void {\n const listeners = this.eventListeners.get(event);\n if (listeners) {\n listeners.forEach(listener => {\n try {\n (listener as (...args: unknown[]) => void)(...args);\n } catch (error) {\n console.error(`Error in event listener for ${event}:`, error);\n }\n });\n }\n }\n\n /**\n * Clear pending requests\n */\n private clearPendingRequests(): void {\n this.pendingRequests.forEach(({ reject, timeout }) => {\n clearTimeout(timeout);\n reject(new Error('Connection closed'));\n });\n this.pendingRequests.clear();\n }\n}\n\n/**\n * Create and configure WebSocket client\n */\nexport function createGatewayClient(options: WebSocketClientOptions): WebSocketClient {\n return new WebSocketClient(options);\n}\n","/**\n * PoolBot Office Gateway Context\n *\n * React Context for WebSocket gateway connection and data\n */\n\nimport React, { createContext, useContext, useState, useEffect, ReactNode, useCallback } from 'react';\nimport { WebSocketClient } from '../gateway/WebSocketClient.js';\nimport type { Agent, Session, Message, Channel, Skill, CronJob } from '../gateway/types.js';\n\ninterface GatewayContextValue {\n // Connection state\n connected: boolean;\n connecting: boolean;\n error: string | null;\n\n // Data\n agents: Agent[];\n sessions: Session[];\n messages: Message[];\n channels: Channel[];\n skills: Skill[];\n cronJobs: CronJob[];\n\n // Actions\n connect: () => void;\n disconnect: () => void;\n sendMessage: (sessionId: string, content: string) => void;\n selectAgent: (agentId: string) => void;\n}\n\nconst GatewayContext = createContext<GatewayContextValue | undefined>(undefined);\n\nexport const useGateway = () => {\n const context = useContext(GatewayContext);\n if (!context) {\n throw new Error('useGateway must be used within GatewayProvider');\n }\n return context;\n};\n\ninterface GatewayProviderProps {\n children: ReactNode;\n gatewayUrl: string;\n token?: string;\n}\n\nexport const GatewayProvider: React.FC<GatewayProviderProps> = ({\n children,\n gatewayUrl,\n token\n}) => {\n const [connected, setConnected] = useState(false);\n const [connecting, setConnecting] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const [agents, setAgents] = useState<Agent[]>([]);\n const [sessions, setSessions] = useState<Session[]>([]);\n const [messages, setMessages] = useState<Message[]>([]);\n const [channels, setChannels] = useState<Channel[]>([]);\n const [skills] = useState<Skill[]>([]);\n const [cronJobs] = useState<CronJob[]>([]);\n\n const [client, setClient] = useState<WebSocketClient | null>(null);\n\n const connect = useCallback(() => {\n if (connecting || connected) return;\n\n setConnecting(true);\n setError(null);\n\n const wsClient = new WebSocketClient({\n gatewayUrl,\n token,\n maxReconnectAttempts: 10,\n heartbeatInterval: 30000,\n });\n\n // Connection events\n wsClient.on('connecting', () => {\n console.log('Connecting to gateway...');\n });\n\n wsClient.on('connected', () => {\n console.log('Connected to gateway!');\n setConnected(true);\n setConnecting(false);\n setError(null);\n\n // Request initial data\n wsClient.request('gateway.status').catch(err => {\n console.error('Failed to get gateway status:', err);\n });\n });\n\n wsClient.on('disconnected', (err) => {\n console.log('Disconnected from gateway:', err);\n setConnected(false);\n setConnecting(false);\n if (err) setError(err.message);\n });\n\n wsClient.on('error', (err) => {\n console.error('Gateway error:', err);\n setError(err.message);\n setConnecting(false);\n });\n\n // Agent events\n wsClient.on('agent.spawn', (agent: any) => {\n setAgents(prev => {\n const existing = prev.find(a => a.id === agent.id);\n if (existing) return prev;\n return [...prev, agent];\n });\n });\n\n wsClient.on('agent.status', (status: any) => {\n setAgents(prev =>\n prev.map(a => a.id === status.agentId ? { ...a, status: status.status } : a)\n );\n });\n\n wsClient.on('agent.despawn', (agentId: any) => {\n setAgents(prev => prev.filter(a => a.id !== agentId));\n });\n\n // Session events\n wsClient.on('session.created', (session: any) => {\n setSessions(prev => [...prev, session]);\n });\n\n wsClient.on('session.updated', (session: any) => {\n setSessions(prev =>\n prev.map(s => s.id === session.id ? { ...s, ...session } : s)\n );\n });\n\n wsClient.on('session.closed', (sessionId: any) => {\n setSessions(prev => prev.filter(s => s.id !== sessionId));\n setMessages(prev => prev.filter(m => m.sessionId !== sessionId));\n });\n\n // Message events\n wsClient.on('message.new', (message: any) => {\n setMessages(prev => [...prev, message]);\n });\n\n wsClient.on('message.streaming', (chunk: any) => {\n setMessages(prev =>\n prev.map(m =>\n m.sessionId === chunk.sessionId && m.id === chunk.messageId\n ? { ...m, content: m.content + chunk.content }\n : m\n )\n );\n });\n\n // Channel events\n wsClient.on('channel.status', (status: any) => {\n setChannels(prev => {\n const existing = prev.find(c => c.id === status.channelId);\n if (existing) {\n return prev.map(c =>\n c.id === status.channelId ? { ...c, status: status.status } : c\n );\n }\n return prev;\n });\n });\n\n setClient(wsClient);\n wsClient.connect();\n }, [gatewayUrl, token, connecting, connected]);\n\n const disconnect = useCallback(() => {\n if (client) {\n client.disconnect();\n setConnected(false);\n setClient(null);\n }\n }, [client]);\n\n const sendMessage = useCallback((sessionId: string, content: string) => {\n if (!client) return;\n\n client.request('agent.run', {\n sessionId,\n input: content,\n }).catch(err => {\n console.error('Failed to send message:', err);\n });\n }, [client]);\n\n const selectAgent = useCallback((agentId: string) => {\n if (!client) return;\n\n client.request('agent.set', { agentId }).catch(err => {\n console.error('Failed to select agent:', err);\n });\n }, [client]);\n\n // Auto-connect on mount\n useEffect(() => {\n connect();\n return () => {\n disconnect();\n };\n }, []);\n\n const value: GatewayContextValue = {\n connected,\n connecting,\n error,\n agents,\n sessions,\n messages,\n channels,\n skills,\n cronJobs,\n connect,\n disconnect,\n sendMessage,\n selectAgent,\n };\n\n return (\n <GatewayContext.Provider value={value}>\n {children}\n </GatewayContext.Provider>\n );\n};\n","/**\n * PoolBot Office Gateway Data Hook\n * \n * Computed data from gateway state\n */\n\nimport { useMemo } from 'react';\nimport { useGateway } from './GatewayContext.js';\n\nexport interface Stats {\n totalAgents: number;\n activeAgents: number;\n totalChannels: number;\n connectedChannels: number;\n totalSkills: number;\n enabledSkills: number;\n totalCronJobs: number;\n activeCronJobs: number;\n messagesToday: number;\n tokensToday: number;\n uptime: number;\n errorCount: number;\n}\n\nexport interface Alert {\n id: string;\n type: 'info' | 'warning' | 'error' | 'success';\n title: string;\n message: string;\n timestamp: number;\n}\n\nexport const useGatewayData = () => {\n const { connected, connecting, error, agents, sessions, messages, channels } = useGateway();\n\n const stats: Stats = useMemo(() => {\n const activeAgents = agents.filter(a => a.status !== 'offline' && a.status !== 'error').length;\n const connectedChannels = channels.filter(c => c.status === 'connected').length;\n const startOfDay = new Date();\n startOfDay.setHours(0, 0, 0, 0);\n\n const messagesToday = messages.filter(m => m.timestamp >= startOfDay.getTime()).length;\n\n return {\n totalAgents: agents.length,\n activeAgents,\n totalChannels: channels.length,\n connectedChannels,\n totalSkills: 0, // TODO: Get from gateway\n enabledSkills: 0, // TODO: Get from gateway\n totalCronJobs: 0, // TODO: Get from gateway\n activeCronJobs: 0, // TODO: Get from gateway\n messagesToday,\n tokensToday: 0, // TODO: Get from gateway\n uptime: 0, // TODO: Get from gateway\n errorCount: agents.filter(a => a.status === 'error').length,\n };\n }, [agents, sessions, messages, channels]);\n\n const alerts: Alert[] = useMemo(() => {\n const alertList: Alert[] = [];\n\n if (connecting) {\n alertList.push({\n id: 'connecting',\n type: 'info',\n title: 'Connecting',\n message: 'Connecting to gateway...',\n timestamp: Date.now(),\n });\n }\n\n if (error) {\n alertList.push({\n id: 'error',\n type: 'error',\n title: 'Connection Error',\n message: error,\n timestamp: Date.now(),\n });\n }\n\n if (connected) {\n alertList.push({\n id: 'connected',\n type: 'success',\n title: 'Connected',\n message: 'Connected to PoolBot Gateway',\n timestamp: Date.now(),\n });\n }\n\n // Check for offline agents\n const offlineAgents = agents.filter(a => a.status === 'offline');\n if (offlineAgents.length > 0) {\n alertList.push({\n id: 'offline-agents',\n type: 'warning',\n title: 'Offline Agents',\n message: `${offlineAgents.length} agent(s) offline`,\n timestamp: Date.now(),\n });\n }\n\n // Check for disconnected channels\n const disconnectedChannels = channels.filter(c => c.status === 'disconnected' || c.status === 'error');\n if (disconnectedChannels.length > 0) {\n alertList.push({\n id: 'disconnected-channels',\n type: 'warning',\n title: 'Disconnected Channels',\n message: `${disconnectedChannels.length} channel(s) disconnected`,\n timestamp: Date.now(),\n });\n }\n\n // Check for agent errors\n const errorAgents = agents.filter(a => a.status === 'error');\n if (errorAgents.length > 0) {\n alertList.push({\n id: 'agent-errors',\n type: 'error',\n title: 'Agent Errors',\n message: `${errorAgents.length} agent(s) in error state`,\n timestamp: Date.now(),\n });\n }\n\n return alertList;\n }, [connected, connecting, error, agents, channels]);\n\n return {\n stats,\n alerts,\n };\n};\n","/**\n * PoolBot Office Main App\n *\n * Main application component with routing and real gateway connection\n */\n\nimport React, { useState, useCallback } from 'react';\nimport { DashboardPage } from './components/console/dashboard/DashboardPage';\nimport { AgentsPage } from './components/console/agents/AgentsPage';\nimport { ChannelsPage } from './components/console/channels/ChannelsPage';\nimport { SkillsPage } from './components/console/skills/SkillsPage';\nimport { CronPage } from './components/console/cron/CronPage';\nimport { SettingsPage } from './components/console/settings/SettingsPage';\nimport { OfficeLayout2D } from './components/office-2d/OfficeLayout2D';\nimport { OfficeLayout3D } from './components/office-3d/OfficeLayout3D';\nimport { ChatDialog } from './components/chat/ChatDialog';\nimport { GatewayProvider } from './gateway/GatewayContext.js';\nimport { useGateway } from './gateway/GatewayContext.js';\nimport { useGatewayData } from './gateway/useGatewayData.js';\n\ntype Page = 'dashboard' | 'agents' | 'channels' | 'skills' | 'cron' | 'settings' | 'office-2d' | 'office-3d';\ntype ViewMode = '2d' | '3d' | 'console';\n\n// Gateway URL and token from environment\nconst GATEWAY_URL = import.meta.env?.VITE_GATEWAY_URL as string || 'ws://100.109.170.51:18789';\nconst GATEWAY_TOKEN = import.meta.env?.VITE_GATEWAY_TOKEN as string || 'e9ecfdf2e59ecd8e20bb803d87dc0c1e1182d80ab265acc3';\n\nconst AppContent: React.FC = () => {\n const { connected, connecting, agents, channels, messages, selectAgent } = useGateway();\n const { stats, alerts } = useGatewayData();\n\n const [currentPage, setCurrentPage] = useState<Page>('dashboard');\n const [viewMode, setViewMode] = useState<ViewMode>('console');\n const [selectedAgentId, setSelectedAgentId] = useState<string | undefined>(undefined);\n\n // Auto-select first agent\n React.useEffect(() => {\n if (agents.length > 0 && !selectedAgentId) {\n setSelectedAgentId(agents[0].id);\n }\n }, [agents, selectedAgentId]);\n\n const handleNavigate = useCallback((page: string) => {\n setCurrentPage(page as Page);\n }, []);\n\n const handleAgentSelect = useCallback((agentId: string) => {\n setSelectedAgentId(agentId);\n selectAgent(agentId);\n }, [selectAgent]);\n\n const renderPage = () => {\n switch (currentPage) {\n case 'dashboard':\n return <DashboardPage stats={stats as any} alerts={alerts as any} onDismissAlert={() => {}} onNavigate={handleNavigate} />;\n case 'agents':\n return <AgentsPage agents={agents.map(a => ({\n id: a.id,\n name: a.name,\n status: a.status,\n model: a.model,\n createdAt: a.createdAt,\n lastActiveAt: a.lastActiveAt,\n sessionCount: 0,\n messageCount: 0\n })) as any} onCreateAgent={() => {}} onDeleteAgent={() => {}} onSelectAgent={handleAgentSelect} />;\n case 'channels':\n return <ChannelsPage channels={channels.map(c => ({\n id: c.id,\n type: c.type as any,\n name: c.name,\n status: c.status,\n lastSeen: c.lastSeen,\n messageCount: 0\n })) as any} onConnect={() => {}} onDisconnect={() => {}} onConfigure={() => {}} />;\n case 'skills':\n return <SkillsPage skills={[]} onInstall={() => {}} onUninstall={() => {}} />;\n case 'cron':\n return <CronPage jobs={[]} onCreateJob={() => {}} onDeleteJob={() => {}} onToggleJob={() => {}} onRunNow={() => {}} />;\n case 'settings':\n return <SettingsPage gatewayUrl={GATEWAY_URL} language=\"pt-BR\" theme=\"light\" onGatewayChange={() => {}} onLanguageChange={() => {}} onThemeChange={() => {}} onSave={() => {}} />;\n case 'office-2d':\n return <OfficeLayout2D agents={agents.map(a => ({\n id: a.id,\n name: a.name,\n status: a.status,\n avatar: a.avatar,\n x: 100,\n y: 100,\n deskX: 100,\n deskY: 150\n })) as any} width={1200} height={800} />;\n case 'office-3d':\n return <OfficeLayout3D agents={agents.map(a => ({\n id: a.id,\n name: a.name,\n status: a.status,\n avatar: a.avatar,\n position: { x: 0, y: 0, z: 0 }\n })) as any} width={20} height={15} />;\n default:\n return <DashboardPage stats={stats as any} alerts={alerts as any} onDismissAlert={() => {}} onNavigate={handleNavigate} />;\n }\n };\n\n const connectionStatusColor = connected ? '#27AE60' : connecting ? '#F39C12' : '#E74C3C';\n const connectionStatusText = connected ? 'Connected' : connecting ? 'Connecting...' : 'Disconnected';\n\n return (\n <div style={{ minHeight: '100vh', backgroundColor: '#F5F5F5' }}>\n {/* Top Navigation */}\n <nav style={{\n backgroundColor: 'white',\n borderBottom: '1px solid #E0E0E0',\n padding: '12px 24px',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: '24px' }}>\n <h1 style={{ fontSize: '20px', fontWeight: 'bold', color: '#2C3E50', margin: 0 }}>\n 🤖 PoolBot Office\n </h1>\n <div style={{ display: 'flex', gap: '8px' }}>\n <button\n onClick={() => { setViewMode('console'); setCurrentPage('dashboard'); }}\n style={{\n padding: '8px 16px',\n border: 'none',\n borderRadius: '6px',\n backgroundColor: viewMode === 'console' ? '#3498DB' : 'transparent',\n color: viewMode === 'console' ? 'white' : '#34495E',\n cursor: 'pointer',\n fontSize: '14px',\n }}\n >\n 📊 Console\n </button>\n <button\n onClick={() => { setViewMode('2d'); setCurrentPage('office-2d'); }}\n style={{\n padding: '8px 16px',\n border: 'none',\n borderRadius: '6px',\n backgroundColor: viewMode === '2d' ? '#3498DB' : 'transparent',\n color: viewMode === '2d' ? 'white' : '#34495E',\n cursor: 'pointer',\n fontSize: '14px',\n }}\n >\n 🏢 2D Office\n </button>\n <button\n onClick={() => { setViewMode('3d'); setCurrentPage('office-3d'); }}\n style={{\n padding: '8px 16px',\n border: 'none',\n borderRadius: '6px',\n backgroundColor: viewMode === '3d' ? '#3498DB' : 'transparent',\n color: viewMode === '3d' ? 'white' : '#34495E',\n cursor: 'pointer',\n fontSize: '14px',\n }}\n >\n 🎮 3D Office\n </button>\n </div>\n </div>\n\n {/* Connection Status */}\n <div style={{\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n fontSize: '12px',\n color: '#34495E',\n }}>\n <div style={{\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n backgroundColor: connectionStatusColor,\n }} />\n <span>{connectionStatusText}</span>\n </div>\n </nav>\n\n <div style={{ display: 'flex' }}>\n {/* Sidebar Navigation (console mode) */}\n {viewMode === 'console' && (\n <aside style={{\n width: '200px',\n backgroundColor: 'white',\n borderRight: '1px solid #E0E0E0',\n padding: '16px',\n display: 'flex',\n flexDirection: 'column',\n gap: '4px',\n }}>\n {[\n { id: 'dashboard', label: '📊 Dashboard', icon: '📊' },\n { id: 'agents', label: '🤖 Agents', icon: '🤖' },\n { id: 'channels', label: '📡 Channels', icon: '📡' },\n { id: 'skills', label: '🔧 Skills', icon: '🔧' },\n { id: 'cron', label: '⏰ Cron Jobs', icon: '⏰' },\n { id: 'settings', label: '⚙️ Settings', icon: '⚙️' },\n ].map(item => (\n <button\n key={item.id}\n onClick={() => handleNavigate(item.id)}\n style={{\n width: '100%',\n padding: '10px 12px',\n border: 'none',\n borderRadius: '6px',\n backgroundColor: currentPage === item.id ? '#E8F4FD' : 'transparent',\n color: '#34495E',\n cursor: 'pointer',\n textAlign: 'left',\n fontSize: '14px',\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n borderLeft: currentPage === item.id ? '3px solid #3498DB' : '3px solid transparent',\n }}\n >\n <span>{item.icon}</span>\n <span>{item.label}</span>\n </button>\n ))}\n </aside>\n )}\n\n {/* Main Content */}\n <main style={{ flex: 1, padding: viewMode === 'console' ? '0' : '0' }}>\n {renderPage()}\n </main>\n </div>\n\n {/* Chat Widget (only in console mode) */}\n {viewMode === 'console' && (\n <ChatDialog\n agents={agents.map(a => ({ id: a.id, name: a.name, status: a.status, avatar: a.avatar || '🤖' }))}\n messages={messages.map(m => ({\n id: m.id,\n sessionId: m.sessionId,\n role: m.role,\n content: m.content,\n timestamp: m.timestamp\n }))}\n selectedAgentId={selectedAgentId}\n isStreaming={false}\n onSendMessage={() => {}}\n onAgentSelect={handleAgentSelect}\n />\n )}\n </div>\n );\n};\n\nexport const App: React.FC = () => {\n return (\n <GatewayProvider gatewayUrl={GATEWAY_URL} token={GATEWAY_TOKEN}>\n <AppContent />\n </GatewayProvider>\n );\n};\n\nexport default App;\n","/**\n * PoolBot Office Entry Point\n */\n\nimport React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport { App } from './App';\n\n// Import global styles (would be created in full implementation)\nimport './styles/globals.css';\n\nReactDOM.createRoot(document.getElementById('root')!).render(\n <React.StrictMode>\n <App />\n </React.StrictMode>\n);\n"],"names":["getComponentNameFromType","type","REACT_CLIENT_REFERENCE","REACT_FRAGMENT_TYPE","REACT_PROFILER_TYPE","REACT_STRICT_MODE_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_ACTIVITY_TYPE","REACT_PORTAL_TYPE","REACT_CONTEXT_TYPE","REACT_CONSUMER_TYPE","REACT_FORWARD_REF_TYPE","innerType","REACT_MEMO_TYPE","REACT_LAZY_TYPE","testStringCoercion","value","checkKeyStringCoercion","JSCompiler_inline_result","JSCompiler_temp_const","JSCompiler_inline_result$jscomp$0","getTaskName","name","getOwner","dispatcher","ReactSharedInternals","UnknownOwner","hasValidKey","config","hasOwnProperty","getter","defineKeyPropWarningGetter","props","displayName","warnAboutAccessingKey","specialPropKeyWarningShown","elementRefGetterWithDeprecationWarning","componentName","didWarnAboutElementRef","ReactElement","key","owner","debugStack","debugTask","refProp","REACT_ELEMENT_TYPE","jsxDEVImpl","maybeKey","isStaticChildren","children","isArrayImpl","validateChildKeys","keys","k","didWarnAboutKeySpread","propName","node","isValidElement","object","React","require$$0","createTask","callStackForError","unknownOwnerDebugStack","unknownOwnerDebugTask","reactJsxDevRuntime_development","trackActualOwner","jsxDevRuntimeModule","DashboardPage","stats","alerts","onDismissAlert","onNavigate","StatCard","title","subtitle","icon","color","onClick","jsxDEV","e","this","AlertBanner","alert","action","AgentsPage","agents","onCreateAgent","onDeleteAgent","onSelectAgent","showCreateModal","setShowCreateModal","useState","newAgentName","setNewAgentName","selectedModel","setSelectedModel","getStatusColor","status","getStatusEmoji","handleCreate","a","agent","ChannelsPage","channels","onConnect","onDisconnect","onConfigure","getTypeEmoji","c","channel","SkillsPage","skills","onInstall","onUninstall","searchQuery","setSearchQuery","selectedCategory","setSelectedCategory","categories","s","filteredSkills","skill","matchesSearch","matchesCategory","cat","CronPage","jobs","onCreateJob","onDeleteJob","onToggleJob","onRunNow","j","job","SettingsPage","gatewayUrl","language","theme","onGatewayChange","onLanguageChange","onThemeChange","onSave","localGateway","setLocalGateway","localLanguage","setLocalLanguage","localTheme","setLocalTheme","saved","setSaved","handleSave","Desk","x","y","width","height","occupied","agentName","deskColor","Chair","rotation","Plant","size","sizeMap","shadowColor","renderPlant","Fragment","_","i","angle","leafX","leafY","CollaborationLines","lines","animated","showLabels","animationOffset","setAnimationOffset","useEffect","interval","prev","getLineColor","line","getLineWidth","index","OfficeLayout2D","showCollaborationLines","showFurniture","onAgentClick","onDeskClick","collaborationLines","useMemo","workingAgents","from","to","plants","plant","AgentCharacter","position","scale","groupRef","useRef","headRef","statusColor","useFrame","state","time","canvas","ctx","SkillHologram","activeSkill","hologramRef","pulse","skillRings","radius","THREE.DoubleSide","ring","z","SpawnPortal","onComplete","portalRef","startTime","elapsed","progress","scaleProgress","Environment3D","showGrid","Environment","ContactShadows","CameraController","autoRotate","controls","useThree","OfficeLayout3D","showStats","spawningAgents","setSpawningAgents","handleSpawnComplete","agentId","id","Canvas","PerspectiveCamera","OrbitControls","Stats","ChatDockBar","isOpen","onToggle","onSend","isTyping","disabled","message","setMessage","inputRef","handleSubmit","handleKeyDown","MessageBubble","role","content","timestamp","isStreaming","onCopy","formatTime","ts","getBackgroundColor","getTextColor","getAlignment","getAvatar","formatContent","text","StreamingIndicator","isVisible","AgentSelector","selectedAgentId","onSelect","setIsOpen","dropdownRef","selectedAgent","handleClickOutside","event","ChatDialog","messages","streamingProgress","onSendMessage","onAgentSelect","onCopyMessage","isChatOpen","setIsChatOpen","messagesEndRef","handleCopyMessage","messageId","m","generateRequestId","formatWebSocketUrl","calculateBackoff","attempt","baseDelay","maxDelay","delay","jitter","isRetryableError","error","safeJsonParse","data","fallback","WebSocketClient","options","__publicField","wsUrl","url","payload","method","params","resolve","reject","request","timeout","callback","listeners","connectParams","err","response","pending","args","listener","GatewayContext","createContext","useGateway","context","useContext","GatewayProvider","token","connected","setConnected","connecting","setConnecting","setError","setAgents","sessions","setSessions","setMessages","setChannels","cronJobs","client","setClient","connect","useCallback","wsClient","session","sessionId","chunk","disconnect","sendMessage","selectAgent","useGatewayData","activeAgents","connectedChannels","startOfDay","messagesToday","alertList","offlineAgents","disconnectedChannels","errorAgents","GATEWAY_URL","__vite_import_meta_env__","GATEWAY_TOKEN","AppContent","currentPage","setCurrentPage","viewMode","setViewMode","setSelectedAgentId","handleNavigate","page","handleAgentSelect","renderPage","connectionStatusColor","connectionStatusText","item","App","ReactDOM"],"mappings":"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","x_google_ignoreList":[0,1]}
|