From 83d1dccdd99e07ddbe99c3313475aba45b36b6ae Mon Sep 17 00:00:00 2001 From: Alan Nicolas Date: Tue, 10 Mar 2026 18:48:46 -0300 Subject: [PATCH 1/5] chore: promote aios-platform to repo root, move legacy dashboard to legacy/ - Move all aios-platform/ contents (Vite + React SPA) to repository root - Move old Next.js dashboard files to legacy/ subdirectory - aios-platform is now the primary project in this repository Co-Authored-By: Claude Opus 4.6 --- aios-platform/.dockerignore => .dockerignore | 0 aios-platform/.env.example => .env.example | 0 .../.env.local.example => .env.local.example | 0 .github/workflows/ci.yml | 167 +- .../.github => .github}/workflows/deploy.yml | 0 .../workflows/pr-check.yml | 0 {aios-platform/.husky => .husky}/pre-commit | 0 .../.prettierignore => .prettierignore | 0 aios-platform/.prettierrc => .prettierrc | 0 .../.storybook => .storybook}/api-mocks.ts | 0 .../.storybook => .storybook}/main.ts | 0 .../.storybook => .storybook}/preview.tsx | 0 .../.storybook => .storybook}/vitest.setup.ts | 0 aios-platform/CLAUDE.md => CLAUDE.md | 0 aios-platform/Dockerfile => Dockerfile | 0 README.md | 739 +- aios-platform/.github/workflows/ci.yml | 124 - aios-platform/README.md | 73 - aios-platform/package.json | 114 - .../src/components/agents/AgentCard.tsx | 364 - .../src/components/bob/ExecutionLog.tsx | 54 - .../src/components/chat/ChatContainer.tsx | 163 - .../src/components/chat/MarkdownRenderer.tsx | 909 -- .../dashboard/DashboardOverview.tsx | 90 - .../src/components/dashboard/index.ts | 3 - .../src/components/kanban/KanbanBoard.tsx | 558 - .../src/components/kanban/KanbanColumn.tsx | 162 - .../src/components/layout/ActivityPanel.tsx | 202 - .../src/components/layout/AppLayout.tsx | 154 - .../src/components/layout/Header.tsx | 271 - .../src/components/layout/Sidebar.tsx | 379 - aios-platform/src/components/layout/index.ts | 6 - .../components/monitor/ConnectionStatus.tsx | 21 - .../src/components/monitor/LiveMonitor.tsx | 189 - .../orchestration/TaskOrchestrator.tsx | 1050 -- .../src/components/roadmap/RoadmapView.tsx | 469 - .../components/sales-room/SalesRoomPanel.tsx | 484 - .../src/components/search/GlobalSearch.tsx | 474 - .../src/components/settings/SettingsPage.tsx | 205 - .../src/components/squads/SquadCard.tsx | 85 - aios-platform/src/components/squads/index.ts | 6 - .../src/components/stories/StoryCard.tsx | 106 - .../components/stories/StoryCreateModal.tsx | 231 - .../components/stories/StoryDetailModal.tsx | 159 - aios-platform/src/components/stories/index.ts | 4 - .../src/components/terminals/TerminalCard.tsx | 155 - .../components/terminals/TerminalOutput.tsx | 167 - .../src/components/terminals/TerminalTabs.tsx | 69 - .../components/terminals/TerminalsView.tsx | 209 - aios-platform/src/components/ui/AioxLogo.tsx | 62 - .../src/components/ui/PageLoader.tsx | 207 - .../workflow/WorkflowExecutionLive.tsx | 364 - .../src/components/workflow/WorkflowView.tsx | 1357 -- .../src/components/world/WorldMinimap.tsx | 102 - aios-platform/src/components/world/index.ts | 1 - aios-platform/src/hooks/index.ts | 76 - aios-platform/src/lib/domain-taxonomy.ts | 94 - aios-platform/src/lib/icons.ts | 323 - aios-platform/src/services/api/agents.ts | 124 - aios-platform/src/services/api/squads.ts | 94 - aios-platform/src/stores/roadmapStore.ts | 54 - aios-platform/src/stores/toastStore.ts | 171 - .../src/styles/tokens/primitives/spacing.css | 23 - .../src/styles/tokens/themes/aiox.css | 1213 -- aios-platform/tsconfig.json | 7 - aios-platform/vitest.config.ts | 118 - .../data => data}/agents-metadata.txt | 0 ...docker-compose.yaml => docker-compose.yaml | 0 .../EPIC-AGENT-EXECUTION-ENGINE.md | 0 .../PRD-AGENT-EXECUTION-ENGINE.md | 0 .../docs => docs}/engine-operation-guide.md | 0 .../docs => docs}/project-interface-spec.yaml | 0 .../docs => docs}/voice-mode-study.md | 0 .../e2e => e2e}/accessibility.spec.ts | 0 .../e2e => e2e}/agent-selection-flow.spec.ts | 0 {aios-platform/e2e => e2e}/agents.spec.ts | 0 .../e2e => e2e}/api-resilience.spec.ts | 0 .../e2e => e2e}/bob-orchestration.spec.ts | 0 .../e2e => e2e}/chat-export.spec.ts | 0 .../e2e => e2e}/chat-file-upload.spec.ts | 0 {aios-platform/e2e => e2e}/chat.spec.ts | 0 {aios-platform/e2e => e2e}/context.spec.ts | 0 .../e2e => e2e}/cross-tab-sync.spec.ts | 0 .../e2e => e2e}/dashboard-customizer.spec.ts | 0 {aios-platform/e2e => e2e}/dashboard.spec.ts | 0 {aios-platform/e2e => e2e}/engine.spec.ts | 0 .../e2e => e2e}/favorites-recents.spec.ts | 0 .../e2e => e2e}/fixtures/api-mocks.fixture.ts | 0 .../e2e => e2e}/fixtures/base.fixture.ts | 0 {aios-platform/e2e => e2e}/github.spec.ts | 0 .../e2e => e2e}/insights-roadmap.spec.ts | 0 {aios-platform/e2e => e2e}/kanban-dnd.spec.ts | 0 {aios-platform/e2e => e2e}/kanban.spec.ts | 0 .../e2e => e2e}/keyboard-shortcuts.spec.ts | 0 .../knowledge-interactions.spec.ts | 0 {aios-platform/e2e => e2e}/knowledge.spec.ts | 0 {aios-platform/e2e => e2e}/layout.spec.ts | 0 {aios-platform/e2e => e2e}/monitor.spec.ts | 0 {aios-platform/e2e => e2e}/navigation.spec.ts | 0 {aios-platform/e2e => e2e}/onboarding.spec.ts | 0 .../e2e => e2e}/orchestration-flow.spec.ts | 0 .../e2e => e2e}/pwa-features.spec.ts | 0 {aios-platform/e2e => e2e}/qa.spec.ts | 0 {aios-platform/e2e => e2e}/registry.spec.ts | 0 .../responsive-breakpoints.spec.ts | 0 {aios-platform/e2e => e2e}/search.spec.ts | 0 .../e2e => e2e}/settings-forms.spec.ts | 0 {aios-platform/e2e => e2e}/settings.spec.ts | 0 .../e2e => e2e}/slash-commands.spec.ts | 0 {aios-platform/e2e => e2e}/squads.spec.ts | 0 .../e2e => e2e}/state-persistence.spec.ts | 0 {aios-platform/e2e => e2e}/stories.spec.ts | 0 .../e2e => e2e}/story-detail-modal.spec.ts | 0 .../e2e => e2e}/terminal-interaction.spec.ts | 0 {aios-platform/e2e => e2e}/terminals.spec.ts | 0 {aios-platform/e2e => e2e}/theme.spec.ts | 0 .../e2e => e2e}/toasts-notifications.spec.ts | 0 {aios-platform/e2e => e2e}/workflow.spec.ts | 0 .../e2e => e2e}/world-interactions.spec.ts | 0 {aios-platform/e2e => e2e}/world.spec.ts | 0 {aios-platform/engine => engine}/.env.example | 0 {aios-platform/engine => engine}/README.md | 0 .../engine => engine}/bin/aios-engine.ts | 0 {aios-platform/engine => engine}/bun.lock | 0 .../engine => engine}/engine.config.yaml | 0 .../migrations/001_initial.sql | 0 .../migrations/002_relax_memory_fk.sql | 0 .../migrations/003_workflow_state.sql | 0 .../migrations/004_cron_jobs.sql | 0 {aios-platform/engine => engine}/package.json | 0 .../src/core/authority-enforcer.ts | 0 .../src/core/completion-handler.ts | 0 .../src/core/context-builder.ts | 0 .../src/core/cron-scheduler.ts | 0 .../src/core/delegation-protocol.ts | 0 .../engine => engine}/src/core/job-queue.ts | 0 .../src/core/memory-client.ts | 0 .../src/core/process-pool.ts | 0 .../engine => engine}/src/core/team-bundle.ts | 0 .../src/core/workflow-engine.ts | 0 .../src/core/workspace-manager.ts | 0 {aios-platform/engine => engine}/src/index.ts | 0 .../engine => engine}/src/lib/config.ts | 0 .../engine => engine}/src/lib/db.ts | 0 .../engine => engine}/src/lib/logger.ts | 0 .../src/lib/project-resolver.ts | 0 .../engine => engine}/src/lib/ws.ts | 0 .../engine => engine}/src/routes/cron.ts | 0 .../engine => engine}/src/routes/execute.ts | 0 .../engine => engine}/src/routes/jobs.ts | 0 .../engine => engine}/src/routes/memory.ts | 0 .../engine => engine}/src/routes/registry.ts | 0 .../engine => engine}/src/routes/stream.ts | 0 .../engine => engine}/src/routes/system.ts | 0 .../engine => engine}/src/routes/webhooks.ts | 0 .../engine => engine}/src/routes/whatsapp.ts | 0 {aios-platform/engine => engine}/src/types.ts | 0 .../tests/integration.test.ts | 0 .../tests/unit/authority-enforcer.test.ts | 0 .../tests/unit/completion-handler.test.ts | 0 .../tests/unit/config.test.ts | 0 .../tests/unit/delegation-protocol.test.ts | 0 .../tests/unit/job-queue.test.ts | 0 .../tests/unit/webhook-routing.test.ts | 0 .../tests/unit/ws-bridge.test.ts | 0 .../engine => engine}/tsconfig.json | 0 .../eslint.config.js => eslint.config.js | 0 aios-platform/index.html => index.html | 0 .../.aios-core}/SQUAD-REGISTRY.yaml | 0 .../.aios-core}/constitution.md | 0 .../checklists/change-checklist.md | 0 .../development/checklists/pm-checklist.md | 0 .../checklists/self-critique-checklist.md | 0 .../development/tasks/apply-qa-fixes.md | 0 .../development/tasks/create-next-story.md | 0 .../development/tasks/create-task.md | 0 .../development/tasks/create-workflow.md | 0 .../development/tasks/dev-apply-qa-fixes.md | 0 .../development/tasks/dev-develop-story.md | 0 .../tasks/dev-validate-next-story.md | 0 .../development/tasks/improve-self.md | 0 .../development/tasks/orchestrate-status.md | 0 .../.aios-core}/development/tasks/qa-gate.md | 0 .../development/tasks/qa-review-story.md | 0 .../development/tasks/release-management.md | 0 .../development/tasks/security-scan.md | 0 .../development/tasks/validate-next-story.md | 0 .../development/workflows/qa-loop.yaml | 0 .../workflows/story-development-cycle.yaml | 0 .../.aios-core}/hooks/ids-post-commit.js | 0 .../.aios-core}/hooks/ids-pre-push.js | 0 .../.aios-core}/hooks/package.json | 0 .../.aios-core}/hooks/unified/README.md | 0 .../hooks/unified/hook-interface.js | 0 .../hooks/unified/hook-registry.js | 0 .../.aios-core}/hooks/unified/index.js | 0 .../unified/runners/precompact-runner.js | 0 .../mcp-servers/blotato-mcp/package-lock.json | 0 .../mcp-servers/blotato-mcp/package.json | 0 .../mcp-servers/blotato-mcp/src/index.ts | 0 .../mcp-servers/blotato-mcp/tsconfig.json | 0 .../package-lock.json | 0 .../facebook-page-insights-mcp/package.json | 0 .../facebook-page-insights-mcp/src/index.ts | 0 .../facebook-page-insights-mcp/tsconfig.json | 0 .../mcp-servers/fal-nano-banana-mcp/README.md | 0 .../fal-nano-banana-mcp/package-lock.json | 0 .../fal-nano-banana-mcp/package.json | 0 .../fal-nano-banana-mcp/src/index.ts | 0 .../fal-nano-banana-mcp/tsconfig.json | 0 .../google-ads-mcp/package-lock.json | 0 .../mcp-servers/google-ads-mcp/package.json | 0 .../mcp-servers/google-ads-mcp/src/index.ts | 0 .../mcp-servers/google-ads-mcp/tsconfig.json | 0 .../mcp-servers/hotmart-mcp/package-lock.json | 0 .../mcp-servers/hotmart-mcp/package.json | 0 .../mcp-servers/hotmart-mcp/src/index.ts | 0 .../mcp-servers/hotmart-mcp/tsconfig.json | 0 .../instagram-insights-mcp/package-lock.json | 0 .../instagram-insights-mcp/package.json | 0 .../instagram-insights-mcp/src/index.ts | 0 .../instagram-insights-mcp/tsconfig.json | 0 .../meta-ads-mcp/package-lock.json | 0 .../mcp-servers/meta-ads-mcp/package.json | 0 .../mcp-servers/meta-ads-mcp/src/index.ts | 0 .../mcp-servers/meta-ads-mcp/tsconfig.json | 0 .../mission-control-mcp/package-lock.json | 0 .../mission-control-mcp/package.json | 0 .../mission-control-mcp/src/index.ts | 0 .../mission-control-mcp/tsconfig.json | 0 .../pinterest-mcp/package-lock.json | 0 .../mcp-servers/pinterest-mcp/package.json | 0 .../mcp-servers/pinterest-mcp/src/index.ts | 0 .../mcp-servers/pinterest-mcp/tsconfig.json | 0 .../mcp-servers/threads-mcp/package-lock.json | 0 .../mcp-servers/threads-mcp/package.json | 0 .../mcp-servers/threads-mcp/src/index.ts | 0 .../mcp-servers/threads-mcp/tsconfig.json | 0 .../tiktok-ads-mcp/package-lock.json | 0 .../mcp-servers/tiktok-ads-mcp/package.json | 0 .../mcp-servers/tiktok-ads-mcp/src/index.ts | 0 .../mcp-servers/tiktok-ads-mcp/tsconfig.json | 0 .../.aios-core}/mcp-servers/waha-mcp | 0 .../x-twitter-mcp/package-lock.json | 0 .../mcp-servers/x-twitter-mcp/package.json | 0 .../mcp-servers/x-twitter-mcp/src/index.ts | 0 .../mcp-servers/x-twitter-mcp/tsconfig.json | 0 .../youtube-analytics-mcp/package-lock.json | 0 .../youtube-analytics-mcp/package.json | 0 .../youtube-analytics-mcp/src/auth.ts | 0 .../youtube-analytics-mcp/src/index.ts | 0 .../youtube-analytics-mcp/tsconfig.json | 0 .../youtube-asmr-mcp/package-lock.json | 0 .../mcp-servers/youtube-asmr-mcp/package.json | 0 .../mcp-servers/youtube-asmr-mcp/src/auth.ts | 0 .../mcp-servers/youtube-asmr-mcp/src/index.ts | 0 .../youtube-asmr-mcp/tsconfig.json | 0 {.github => legacy/.github}/CODEOWNERS | 0 legacy/.github/workflows/ci.yml | 131 + .../.github}/workflows/pr-alert-autofix.yml | 0 .gitmodules => legacy/.gitmodules | 0 legacy/README.md | 668 + components.json => legacy/components.json | 0 .../docs}/EPIC-AIOS-DASHBOARD-ONLINE.md | 0 eslint.config.mjs => legacy/eslint.config.mjs | 0 next.config.ts => legacy/next.config.ts | 0 {aios-platform => legacy}/package-lock.json | 11780 +++++++-------- legacy/package.json | 63 + .../packages}/aios-dash/package.json | 0 .../packages}/aios-dash/src/bun-globals.d.ts | 0 .../packages}/aios-dash/src/cli.ts | 0 .../packages}/aios-dash/src/config.ts | 0 .../packages}/aios-dash/src/local-server.ts | 0 .../packages}/aios-dash/src/relay.ts | 0 .../packages}/aios-dash/tsconfig.json | 0 {packages => legacy/packages}/aiox-brandbook | 0 .../packages}/relay/Dockerfile | 0 .../packages}/relay/package.json | 0 .../packages}/relay/railway.toml | 0 .../packages}/relay/src/auth.ts | 0 .../packages}/relay/src/bun-globals.d.ts | 0 .../packages}/relay/src/rooms.ts | 0 .../packages}/relay/src/server.ts | 0 .../packages}/relay/src/types.ts | 0 .../packages}/relay/tsconfig.json | 0 .../postcss.config.mjs | 0 {public => legacy/public}/file.svg | 0 .../public}/fonts/TASAOrbiterDisplay-Bold.otf | Bin {public => legacy/public}/globe.svg | 0 {public => legacy/public}/next.svg | 0 {public => legacy/public}/vercel.svg | 0 {public => legacy/public}/window.svg | 0 {server => legacy/server}/README.md | 0 {server => legacy/server}/bun.lock | 0 {server => legacy/server}/db.ts | 0 {server => legacy/server}/package.json | 0 {server => legacy/server}/server.ts | 0 {server => legacy/server}/tsconfig.json | 0 {server => legacy/server}/types.ts | 0 .../src}/__tests__/bob-components.test.tsx | 0 .../src}/__tests__/bob-store.test.ts | 0 {src => legacy/src}/__tests__/setup.ts | 0 .../src}/__tests__/squad-api-utils.test.ts | 0 .../src}/__tests__/squad-metadata.test.ts | 0 .../src}/__tests__/yaml-to-mermaid.test.ts | 0 .../src}/app/(dashboard)/agents/page.tsx | 0 .../src}/app/(dashboard)/github/page.tsx | 0 .../src}/app/(dashboard)/kanban/page.tsx | 0 .../src}/app/(dashboard)/knowledge/page.tsx | 0 .../src}/app/(dashboard)/layout.tsx | 0 .../src}/app/(dashboard)/monitor/page.tsx | 0 .../src}/app/(dashboard)/settings/page.tsx | 0 .../src}/app/(dashboard)/squads/page.tsx | 0 .../src}/app/(dashboard)/terminals/page.tsx | 0 .../[squadId]/[agentId]/commands/route.ts | 0 .../api/agents/[squadId]/[agentId]/route.ts | 0 {src => legacy/src}/app/api/agents/route.ts | 0 .../src}/app/api/agents/search/route.ts | 0 .../app/api/agents/squad/[squadId]/route.ts | 0 .../src}/app/api/analytics/costs/route.ts | 0 .../api/analytics/health-dashboard/route.ts | 0 .../src}/app/api/analytics/overview/route.ts | 0 .../api/analytics/performance/agents/route.ts | 0 .../api/analytics/performance/squads/route.ts | 0 .../src}/app/api/analytics/realtime/route.ts | 0 .../app/api/analytics/usage/tokens/route.ts | 0 .../src}/app/api/bob/events/route.ts | 0 .../src}/app/api/bob/status/route.ts | 0 .../src}/app/api/events/history/route.ts | 0 .../src}/app/api/events/recent/route.ts | 0 {src => legacy/src}/app/api/events/route.ts | 0 .../src}/app/api/execute/agent/route.ts | 0 .../app/api/execute/agent/stream/route.ts | 0 .../src}/app/api/execute/db/health/route.ts | 0 .../src}/app/api/execute/history/route.ts | 0 .../src}/app/api/execute/llm/health/route.ts | 0 .../src}/app/api/execute/llm/models/route.ts | 0 .../src}/app/api/execute/llm/usage/route.ts | 0 .../src}/app/api/execute/orchestrate/route.ts | 0 .../src}/app/api/execute/stats/route.ts | 0 .../api/execute/status/[executionId]/route.ts | 0 .../src}/app/api/execute/track/batch/route.ts | 0 .../src}/app/api/execute/track/route.ts | 0 {src => legacy/src}/app/api/github/route.ts | 0 .../src}/app/api/knowledge/agents/route.ts | 0 .../app/api/knowledge/files/overview/route.ts | 0 .../src}/app/api/knowledge/files/route.ts | 0 .../src}/app/api/qa/metrics/route.ts | 0 .../squads/[name]/agents/[agentId]/route.ts | 0 .../app/api/squads/[name]/commands/route.ts | 0 .../api/squads/[name]/connections/route.ts | 0 .../src}/app/api/squads/[name]/route.ts | 0 .../[name]/sections/[section]/[slug]/route.ts | 0 .../squads/[name]/sections/[section]/route.ts | 0 .../src}/app/api/squads/[name]/stats/route.ts | 0 .../api/squads/ecosystem/overview/route.ts | 0 {src => legacy/src}/app/api/squads/route.ts | 0 {src => legacy/src}/app/api/status/route.ts | 0 .../src}/app/api/stories/[id]/route.ts | 0 {src => legacy/src}/app/api/stories/route.ts | 0 .../src}/app/api/system/env-vars/route.ts | 0 .../app/api/tasks/[taskId]/approve/route.ts | 0 .../src}/app/api/tasks/[taskId]/kill/route.ts | 0 .../app/api/tasks/[taskId]/revise/route.ts | 0 .../src}/app/api/tasks/[taskId]/route.ts | 0 .../app/api/tasks/[taskId]/stream/route.ts | 0 {src => legacy/src}/app/api/tasks/route.ts | 0 .../src}/app/api/tasks/stream/route.ts | 0 .../src}/app/api/tools/mcp/route.ts | 0 .../app/api/workflows/[id]/activate/route.ts | 0 .../app/api/workflows/[id]/execute/route.ts | 0 .../workflows/[id]/execute/stream/route.ts | 0 .../app/api/workflows/[id]/pause/route.ts | 0 .../src}/app/api/workflows/[id]/route.ts | 0 .../app/api/workflows/[id]/stats/route.ts | 0 .../workflows/executions/[id]/cancel/route.ts | 0 .../api/workflows/executions/[id]/route.ts | 0 .../app/api/workflows/executions/route.ts | 0 .../api/workflows/orchestrate/stream/route.ts | 0 .../src}/app/api/workflows/route.ts | 0 .../src}/app/api/workflows/schema/route.ts | 0 {src => legacy/src}/app/bob/page.tsx | 0 {src => legacy/src}/app/favicon.ico | Bin {src => legacy/src}/app/globals.css | 0 {src => legacy/src}/app/layout.tsx | 0 {src => legacy/src}/app/page.tsx | 0 legacy/src/components/agents/AgentCard.tsx | 169 + .../src/components/agents/AgentExplorer.tsx | 219 +- .../src/components/agents/AgentList.tsx | 45 +- .../src}/components/agents/AgentMonitor.tsx | 0 .../src/components/agents/AgentProfile.tsx | 55 +- .../agents/AgentProfileExpanded.tsx | 183 +- .../components/agents/AgentProfileModal.tsx | 348 +- .../src/components/agents/AgentSkills.tsx | 117 +- .../components/agents/FavoritesRecents.tsx | 15 +- .../components/agents/PlatformAgentCard.tsx | 0 .../src/components/agents/index.ts | 10 +- .../src}/components/bob/BobAgentActivity.tsx | 0 .../components/bob/BobOrchestrationView.tsx | 0 .../src}/components/bob/BobPipelinePanel.tsx | 0 .../src}/components/bob/BobSurfaceAlert.tsx | 0 legacy/src/components/bob/ExecutionLog.tsx | 57 + {src => legacy/src}/components/bob/index.ts | 0 legacy/src/components/chat/ChatContainer.tsx | 1484 ++ .../src/components/chat/ChatInput.tsx | 184 +- .../components/chat/ConversationHistory.tsx | 33 +- .../src/components/chat/ExportChat.tsx | 57 +- .../src/components/chat/MarkdownRenderer.tsx | 374 + .../src/components/chat/MessageBubble.tsx | 253 +- .../chat/VirtualizedMessageList.tsx | 16 +- .../src/components/chat/index.ts | 1 + .../src}/components/context/ContextPanel.tsx | 0 .../src}/components/context/index.ts | 0 .../src/components/dashboard/Charts.tsx | 225 +- .../dashboard/DashboardOverview.tsx | 753 + legacy/src/components/dashboard/index.ts | 2 + .../src}/components/github/GitHubPanel.tsx | 0 .../src}/components/github/index.ts | 0 .../components/insights/InsightsPanel.tsx | 0 .../src}/components/insights/index.ts | 0 legacy/src/components/kanban/KanbanBoard.tsx | 284 + legacy/src/components/kanban/KanbanColumn.tsx | 165 + .../components/kanban/SortableStoryCard.tsx | 0 .../src}/components/kanban/index.ts | 0 .../src/components/layout/ActivityPanel.tsx | 1233 ++ legacy/src/components/layout/AppLayout.tsx | 173 + .../src}/components/layout/AppShell.tsx | 0 .../components/layout/ExecutionLogPanel.tsx | 29 +- legacy/src/components/layout/Header.tsx | 439 + .../src/components/layout/MobileNav.tsx | 18 +- .../src}/components/layout/ProjectTabs.tsx | 0 legacy/src/components/layout/Sidebar.tsx | 152 + .../src}/components/layout/StatusBar.tsx | 0 legacy/src/components/layout/index.ts | 11 + .../src}/components/mermaidcn/mermaid.tsx | 0 .../src}/components/mermaidcn/zoom-pan.tsx | 0 .../src}/components/monitor/ActivityFeed.tsx | 0 .../components/monitor/AgentStatusCards.tsx | 36 +- .../src/components/monitor/AlertBanner.tsx | 41 +- .../src}/components/monitor/CommandPanel.tsx | 0 .../components/monitor/ConnectionStatus.tsx | 21 + .../monitor/CurrentToolIndicator.tsx | 0 .../src/components/monitor/EventList.tsx | 98 +- legacy/src/components/monitor/LiveMonitor.tsx | 170 + .../src/components/monitor/MetricsPanel.tsx | 65 +- .../src}/components/monitor/MonitorPanel.tsx | 0 .../src}/components/monitor/MonitorStatus.tsx | 0 .../src}/components/monitor/index.ts | 0 .../components/onboarding/OnboardingTour.tsx | 187 +- .../src/components/onboarding/index.ts | 1 - .../orchestration/TaskOrchestrator.tsx | 1096 ++ .../src}/components/orchestration/index.ts | 0 .../src}/components/qa/QAMetricsPanel.tsx | 0 {src => legacy/src}/components/qa/index.ts | 0 .../src}/components/roadmap/RoadmapCard.tsx | 0 legacy/src/components/roadmap/RoadmapView.tsx | 222 + .../src}/components/roadmap/index.ts | 0 .../sales-room/ActivityTimeline.tsx | 0 .../src}/components/sales-room/AgentCard.tsx | 0 .../sales-room/ConversationView.tsx | 0 .../src}/components/sales-room/KpiCard.tsx | 0 .../components/sales-room/SalesRoomPanel.tsx | 214 + .../src}/components/sales-room/index.ts | 0 .../src}/components/sales-room/mock-data.ts | 0 .../src/components/sales-room/types.ts | 41 +- legacy/src/components/search/GlobalSearch.tsx | 309 + .../src/components/search/index.ts | 0 .../components/settings/CategoryManager.tsx | 103 +- .../src/components/settings/MemoryManager.tsx | 116 +- .../src/components/settings/SettingsPage.tsx | 1392 ++ .../components/settings/SettingsPanel.tsx | 0 .../components/settings/WorkflowManager.tsx | 126 +- .../src/components/settings/index.ts | 4 +- .../components/squads/AgentDetailPanel.tsx | 86 +- .../src/components/squads/ConnectionsMap.tsx | 11 +- .../src}/components/squads/SquadAgentChip.tsx | 0 .../components/squads/SquadAgentDetail.tsx | 0 .../components/squads/SquadBreadcrumb.tsx | 0 legacy/src/components/squads/SquadCard.tsx | 123 + .../components/squads/SquadConnections.tsx | 0 .../src}/components/squads/SquadDetail.tsx | 0 .../components/squads/SquadItemViewer.tsx | 0 .../src/components/squads/SquadOrgChart.tsx | 29 +- .../components/squads/SquadOrganogram.tsx | 0 .../components/squads/SquadSectionGrid.tsx | 0 .../src/components/squads/SquadSelector.tsx | 61 +- .../src/components/squads/SquadStatsPanel.tsx | 32 +- .../src}/components/squads/SquadTaskCard.tsx | 0 .../src}/components/squads/SquadTierTree.tsx | 0 .../src}/components/squads/SquadsPanel.tsx | 0 .../components/squads/WorkflowDiagram.tsx | 0 legacy/src/components/squads/index.ts | 16 + legacy/src/components/stories/StoryCard.tsx | 152 + .../components/stories/StoryCreateModal.tsx | 440 + .../components/stories/StoryDetailModal.tsx | 210 + .../components/stories/StoryEditModal.tsx | 0 .../src/components/stories/StoryList.tsx | 114 +- legacy/src/components/stories/index.ts | 5 + .../components/terminal/TerminalOutput.tsx | 0 .../src}/components/terminal/index.ts | 0 .../src/components/terminals/TerminalCard.tsx | 163 + .../components/terminals/TerminalGrid.tsx | 0 .../components/terminals/TerminalOutput.tsx | 212 + .../components/terminals/TerminalStream.tsx | 0 .../src/components/terminals/TerminalTabs.tsx | 76 + .../components/terminals/TerminalsView.tsx | 177 + .../src}/components/terminals/index.ts | 0 legacy/src/components/ui/AioxLogo.tsx | 72 + .../src/components/ui/EmptyState.tsx | 28 +- .../src/components/ui/ErrorBoundary.tsx | 42 +- .../src}/components/ui/GlassAvatar.tsx | 0 .../src/components/ui/KeyboardShortcuts.tsx | 79 +- .../src/components/ui/MatrixEffects.tsx | 25 +- .../src/components/ui/NetworkStatus.tsx | 107 +- legacy/src/components/ui/PageLoader.tsx | 73 + .../src/components/ui/Ripple.tsx | 10 +- .../src/components/ui/SkipLinks.tsx | 29 +- .../src/components/ui/SuccessFeedback.tsx | 40 +- .../src/components/ui/ThemeToggle.tsx | 88 +- .../src/components/ui/Toast.tsx | 137 +- {src => legacy/src}/components/ui/avatar.tsx | 0 {src => legacy/src}/components/ui/badge.tsx | 0 {src => legacy/src}/components/ui/button.tsx | 0 {src => legacy/src}/components/ui/card.tsx | 0 .../src}/components/ui/context-menu.tsx | 0 {src => legacy/src}/components/ui/dialog.tsx | 0 {src => legacy/src}/components/ui/fab.tsx | 0 {src => legacy/src}/components/ui/icon.tsx | 0 {src => legacy/src}/components/ui/input.tsx | 0 .../src}/components/ui/markdown-renderer.tsx | 0 .../src}/components/ui/progress-bar.tsx | 0 .../src}/components/ui/section-label.tsx | 0 {src => legacy/src}/components/ui/select.tsx | 0 .../src}/components/ui/separator.tsx | 0 .../src}/components/ui/skeleton.tsx | 0 {src => legacy/src}/components/ui/sonner.tsx | 0 .../src}/components/ui/status-badge.tsx | 0 .../src}/components/ui/status-dot.tsx | 0 {src => legacy/src}/components/ui/switch.tsx | 0 {src => legacy/src}/components/ui/tabs.tsx | 0 {src => legacy/src}/components/ui/tag.tsx | 0 .../src}/components/ui/textarea.tsx | 0 {src => legacy/src}/components/ui/tooltip.tsx | 0 .../components/workflow/WorkflowCanvas.tsx | 153 +- .../workflow/WorkflowExecutionLive.tsx | 1169 ++ .../workflow/WorkflowMissionDetail.tsx | 70 +- .../components/workflow/WorkflowSidebar.tsx | 148 +- .../src/components/workflow/WorkflowView.tsx | 1110 ++ .../src/components/workflow/index.ts | 1 + .../src/components/workflow/types.ts | 2 +- .../src/components/world/AgentEmotes.tsx | 23 +- .../world/AgentInteractionPanel.tsx | 281 +- .../src/components/world/AgentSprite.tsx | 82 +- .../src/components/world/AmbientParticles.tsx | 18 +- .../src/components/world/EmbeddedScreen.tsx | 8 +- .../src/components/world/GatherWorld.tsx | 44 +- .../src/components/world/InteractionLine.tsx | 6 +- .../components/world/InteractiveFurniture.tsx | 14 +- .../src/components/world/IsometricTile.tsx | 7 +- .../src/components/world/RoomEnvironment.tsx | 28 +- .../src/components/world/RoomFurniture.tsx | 8 +- .../src/components/world/RoomView.tsx | 92 +- .../src/components/world/SpeechBubble.tsx | 7 +- .../src/components/world/WorldMap.tsx | 50 +- legacy/src/components/world/WorldMinimap.tsx | 61 + .../components/world/WorldNotifications.tsx | 108 +- .../components/world/WorldWorkflowPanel.tsx | 167 +- legacy/src/components/world/index.ts | 20 + .../src/components/world/pixel-sprites.ts | 4 +- .../src/components/world/useAgentMovement.ts | 63 +- .../src/components/world/useDayNightCycle.ts | 0 .../src/components/world/useKeyboardNav.ts | 6 +- .../src/components/world/world-layout.ts | 10 - legacy/src/hooks/index.ts | 19 + {src => legacy/src}/hooks/use-a11y.ts | 0 {src => legacy/src}/hooks/use-agents.ts | 0 {src => legacy/src}/hooks/use-aios-status.ts | 0 {src => legacy/src}/hooks/use-analytics.ts | 0 {src => legacy/src}/hooks/use-chat.ts | 0 {src => legacy/src}/hooks/use-dashboard.ts | 0 {src => legacy/src}/hooks/use-execute.ts | 0 {src => legacy/src}/hooks/use-favorites.ts | 0 .../src}/hooks/use-form-validation.ts | 0 .../hooks/use-global-keyboard-shortcuts.ts | 0 .../src}/hooks/use-monitor-events.ts | 0 {src => legacy/src}/hooks/use-optimistic.ts | 0 .../src}/hooks/use-realtime-status.ts | 0 {src => legacy/src}/hooks/use-squads.ts | 0 {src => legacy/src}/hooks/use-stories.ts | 0 {src => legacy/src}/hooks/use-workflows.ts | 0 legacy/src/lib/domain-taxonomy.ts | 78 + legacy/src/lib/icons.ts | 389 + {src => legacy/src}/lib/mermaid-themes.ts | 0 {src => legacy/src}/lib/mock-data.ts | 0 {src => legacy/src}/lib/squad-api-utils.ts | 0 {src => legacy/src}/lib/squad-metadata.ts | 0 {src => legacy/src}/lib/supabase-server.ts | 0 {src => legacy/src}/lib/task-executor.ts | 0 {src => legacy/src}/lib/task-persistence.ts | 0 {src => legacy/src}/lib/task-store.ts | 0 {aios-platform => legacy}/src/lib/theme.ts | 6 +- {aios-platform => legacy}/src/lib/utils.ts | 22 +- {src => legacy/src}/lib/yaml-to-mermaid.ts | 0 legacy/src/services/api/agents.ts | 60 + .../src/services/api/analytics.ts | 0 .../src/services/api/client.ts | 10 +- .../src/services/api/execute.ts | 2 +- .../src/services/api/index.ts | 12 - legacy/src/services/api/squads.ts | 36 + .../src/services/api/tasks.ts | 56 +- .../src/services/api/workflows.ts | 33 +- {src => legacy/src}/stores/agent-store.ts | 0 {src => legacy/src}/stores/bob-store.ts | 0 .../src/stores/categoryStore.ts | 4 +- .../src/stores/chatStore.ts | 6 +- .../src/stores/executionLogStore.ts | 0 {src => legacy/src}/stores/index.ts | 0 {src => legacy/src}/stores/monitor-store.ts | 0 {src => legacy/src}/stores/projects-store.ts | 0 legacy/src/stores/roadmapStore.ts | 29 + .../src/stores/searchStore.ts | 0 {src => legacy/src}/stores/settings-store.ts | 0 {src => legacy/src}/stores/squad-store.ts | 0 {src => legacy/src}/stores/story-store.ts | 0 {src => legacy/src}/stores/terminal-store.ts | 0 legacy/src/stores/toastStore.ts | 79 + {src => legacy/src}/stores/ui-store.ts | 0 .../src/stores/uiStore.ts | 126 +- .../src/styles/liquid-glass.css | 123 +- .../src/styles/tokens/component/badge.css | 0 .../src/styles/tokens/component/button.css | 0 .../src/styles/tokens/component/input.css | 0 .../src/styles/tokens/component/loader.css | 0 .../src/styles/tokens/component/progress.css | 0 .../src/styles/tokens/component/radius.css | 0 .../src/styles/tokens/component/sidebar.css | 0 .../styles/tokens/component/status-dot.css | 0 .../src/styles/tokens/component/toast.css | 0 .../src/styles/tokens/index.css | 3 - .../src/styles/tokens/primitives/colors.css | 14 + .../src/styles/tokens/primitives/sizing.css | 0 .../src/styles/tokens/primitives/spacing.css | 7 + .../src/styles/tokens/primitives/timing.css | 7 + .../styles/tokens/primitives/typography.css | 24 +- .../src/styles/tokens/semantic/colors.css | 0 .../src/styles/tokens/semantic/glass.css | 0 legacy/src/styles/tokens/themes/aiox.css | 453 + .../src/styles/tokens/themes/dark.css | 0 .../src/styles/tokens/themes/glass.css | 0 .../src/styles/tokens/themes/matrix.css | 0 {src => legacy/src}/types/ansi-to-html.d.ts | 0 {aios-platform => legacy}/src/types/index.ts | 397 +- legacy/tsconfig.json | 34 + legacy/vitest.config.ts | 18 + aios-platform/nginx.conf => nginx.conf | 0 package-lock.json | 11884 +++++++++------- package.json | 133 +- .../packages => packages}/cli/README.md | 0 .../packages => packages}/cli/bin/aios.ts | 0 .../packages => packages}/cli/package.json | 0 .../@vitest+browser+4.0.18.patch | 0 ...aywright.config.ts => playwright.config.ts | 0 .../postcss.config.js => postcss.config.js | 0 .../public => public}/aiox-icon.svg | 0 .../public => public}/apple-touch-icon.png | Bin .../avatars/academic-research.png | Bin .../avatars/academic-writer.png | Bin .../public => public}/avatars/agora-chief.png | Bin .../avatars/agora-growth-advisor.png | Bin .../avatars/agora-idea-architect.png | Bin .../avatars/agora-launch-master.png | Bin .../avatars/agora-offer-designer.png | Bin .../avatars/agora-sales-engineer.png | Bin .../avatars/agora-strategist.png | Bin .../public => public}/avatars/ai-producer.png | Bin .../avatars/aios-core-chief.png | Bin .../public => public}/avatars/aios-helper.png | Bin .../public => public}/avatars/aios-master.png | Bin .../avatars/alan-nicolas.png | Bin .../avatars/algorithm-decoder.png | Bin .../public => public}/avatars/analyst.png | Bin .../avatars/analytics-pulse.png | Bin .../avatars/api-architect.png | Bin .../public => public}/avatars/architect.png | Bin .../avatars/asmr-scriptwriter.png | Bin .../public => public}/avatars/brad-frost.png | Bin .../avatars/briefing-backlog.png | Bin .../avatars/citation-manager.png | Bin .../avatars/claude-hopkins.png | Bin .../avatars/clayton-makepeace.png | Bin .../public => public}/avatars/copywriter.png | Bin .../avatars/copywriting-chief.png | Bin .../public => public}/avatars/dan-kennedy.png | Bin .../public => public}/avatars/dan-mall.png | Bin .../avatars/data-engineer.png | Bin .../public => public}/avatars/dave-malouf.png | Bin .../avatars/david-ogilvy.png | Bin .../avatars/design-chief.png | Bin .../public => public}/avatars/dev-planner.png | Bin .../public => public}/avatars/dev.png | Bin .../public => public}/avatars/devops.png | Bin .../avatars/ds-foundations-lead.png | Bin .../avatars/ds-token-architect.png | Bin .../avatars/eugene-schwartz.png | Bin .../public => public}/avatars/frank-kern.png | Bin .../avatars/funnelytics-expert.png | Bin .../avatars/gary-bencivenga.png | Bin .../avatars/gary-halbert.png | Bin .../avatars/growth-engine.png | Bin .../avatars/hotmart-expert.png | Bin .../avatars/integration-specialist.png | Bin .../avatars/jason-fladlien.png | Bin .../avatars/joe-sugarman.png | Bin .../public => public}/avatars/john-caples.png | Bin .../avatars/john-carlton.png | Bin .../public => public}/avatars/jon-benson.png | Bin .../avatars/knowledge-creator.png | Bin .../avatars/literature-reviewer.png | Bin .../public => public}/avatars/manifest.json | 0 .../avatars/metadata-pro.png | Bin .../public => public}/avatars/n8n-expert.png | Bin .../avatars/nano-banana-generator.png | Bin .../avatars/orchestration-expert.png | Bin .../avatars/orquestrador-global.png | Bin .../avatars/pedro-valerio.png | Bin .../avatars/peer-reviewer.png | Bin .../public => public}/avatars/pm.png | Bin .../public => public}/avatars/po.png | Bin .../public => public}/avatars/qa.png | Bin .../avatars/research-chief.png | Bin .../public => public}/avatars/robert-bly.png | Bin .../public => public}/avatars/scheduler.png | Bin .../avatars/sendflow-expert.png | Bin .../avatars/shorts-chief.png | Bin .../public => public}/avatars/sm.png | Bin .../public => public}/avatars/squad-chief.png | Bin .../avatars/squad-creator.png | Bin .../avatars/squads/academic-research.png | Bin .../avatars/squads/agora-direct-response.png | Bin .../avatars/squads/aios-core-dev.png | Bin .../avatars/squads/aios-core.png | Bin .../avatars/squads/aios-development.png | Bin .../avatars/squads/asmr-shorts.png | Bin .../avatars/squads/clone.png | Bin .../avatars/squads/copywriting.png | Bin .../avatars/squads/design.png | Bin .../avatars/squads/squad-creator-pro.png | Bin .../avatars/stefan-georgi.png | Bin .../avatars/storybook-expert.png | Bin .../avatars/tag-manager-expert.png | Bin .../avatars/thiago-finch.png | Bin .../avatars/thumb-creator.png | Bin .../public => public}/avatars/todd-brown.png | Bin .../avatars/trend-hunter.png | Bin .../avatars/ux-design-expert.png | Bin .../avatars/victor-schwab.png | Bin .../public => public}/avatars/waha-expert.png | Bin .../public => public}/favicon-16x16.png | Bin .../public => public}/favicon-32x32.png | Bin {aios-platform/public => public}/favicon.ico | Bin {aios-platform/public => public}/icon.svg | 0 .../public => public}/pwa-192x192.png | Bin .../public => public}/pwa-512x512.png | Bin {aios-platform/public => public}/vite.svg | 0 .../aiox-audit-screenshots.mjs | 0 .../check-registry-sync.sh | 0 .../scripts => scripts}/dev-full.sh | 0 .../scripts => scripts}/edge-tts-server.py | 0 .../generate-agent-avatars.ts | 0 .../generate-aios-registry.ts | 0 .../generate-clone-avatars.ts | 0 .../generate-pwa-icons.mjs | 0 .../scripts => scripts}/test-gemini-live.mjs | 0 .../scripts => scripts}/test-gemini-ptt.mjs | 0 .../validate-brandbook-tokens.ts | 0 {aios-platform/src => src}/App.tsx | 0 .../__tests__/orchestration-e2e.test.ts | 0 .../__tests__/kanban-squads.test.tsx | 0 .../AgentActivityTimeline.stories.tsx | 0 .../agents-monitor/AgentActivityTimeline.tsx | 0 .../AgentMonitorCard.stories.tsx | 0 .../agents-monitor/AgentMonitorCard.tsx | 0 .../AgentPerformanceStats.stories.tsx | 0 .../agents-monitor/AgentPerformanceStats.tsx | 0 .../agents-monitor/AgentsMonitor.stories.tsx | 0 .../agents-monitor/AgentsMonitor.tsx | 0 .../__tests__/agents-monitor.test.tsx | 0 .../components/agents/AgentCard.stories.tsx | 0 src/components/agents/AgentCard.tsx | 479 +- .../agents/AgentExplorer.stories.tsx | 0 src/components/agents/AgentExplorer.tsx | 219 +- .../components/agents/AgentList.stories.tsx | 0 src/components/agents/AgentList.tsx | 45 +- .../agents/AgentProfile.stories.tsx | 0 src/components/agents/AgentProfile.tsx | 55 +- .../agents/AgentProfileExpanded.stories.tsx | 0 .../agents/AgentProfileExpanded.tsx | 183 +- .../agents/AgentProfileModal.stories.tsx | 0 src/components/agents/AgentProfileModal.tsx | 348 +- .../components/agents/AgentSkills.stories.tsx | 0 src/components/agents/AgentSkills.tsx | 117 +- .../agents/FavoritesRecents.stories.tsx | 0 src/components/agents/FavoritesRecents.tsx | 15 +- src/components/agents/index.ts | 10 +- .../bob/AgentActivityCard.stories.tsx | 0 .../components/bob/AgentActivityCard.tsx | 0 .../bob/BobOrchestration.stories.tsx | 0 .../components/bob/BobOrchestration.tsx | 0 .../components/bob/ExecutionLog.stories.tsx | 0 src/components/bob/ExecutionLog.tsx | 37 +- .../bob/PipelineVisualizer.stories.tsx | 0 .../components/bob/PipelineVisualizer.tsx | 0 .../components/bob/SurfaceAlerts.stories.tsx | 0 .../components/bob/SurfaceAlerts.tsx | 0 .../components/chat/ChatContainer.stories.tsx | 0 src/components/chat/ChatContainer.tsx | 1451 +- .../components/chat/ChatConversationPanel.tsx | 0 .../components/chat/ChatHeader.tsx | 0 .../components/chat/ChatInput.stories.tsx | 0 src/components/chat/ChatInput.tsx | 184 +- .../components/chat/CommandsModal.tsx | 0 .../chat/ConversationHistory.stories.tsx | 0 src/components/chat/ConversationHistory.tsx | 33 +- .../src => src}/components/chat/EmptyChat.tsx | 0 .../components/chat/ExportChat.stories.tsx | 0 src/components/chat/ExportChat.tsx | 57 +- .../chat/MarkdownRenderer.stories.tsx | 0 src/components/chat/MarkdownRenderer.tsx | 715 +- .../components/chat/MermaidDiagram.tsx | 0 .../components/chat/MessageBubble.stories.tsx | 0 src/components/chat/MessageBubble.tsx | 253 +- .../components/chat/SlashCommandMenu.tsx | 0 .../chat/VirtualizedMessageList.stories.tsx | 0 .../chat/VirtualizedMessageList.tsx | 16 +- .../components/chat/WelcomeMessage.tsx | 0 .../chat/__tests__/ChatInput.test.tsx | 0 .../chat/__tests__/chat-components.test.tsx | 0 .../src => src}/components/chat/chat-types.ts | 0 .../components/chat/chatSuggestions.ts | 0 src/components/chat/index.ts | 1 - .../CommandPalette.stories.tsx | 0 .../command-palette/CommandPalette.tsx | 0 .../context/ContextView.stories.tsx | 0 .../components/context/ContextView.tsx | 0 .../components/dashboard/AgentsTab.tsx | 0 .../components/dashboard/Charts.stories.tsx | 0 src/components/dashboard/Charts.tsx | 225 +- .../dashboard/CockpitDashboard.stories.tsx | 0 .../components/dashboard/CockpitDashboard.tsx | 0 .../components/dashboard/CostsTab.tsx | 0 .../components/dashboard/DashboardHelpers.tsx | 0 .../dashboard/DashboardOverview.stories.tsx | 0 .../dashboard/DashboardOverview.tsx | 725 +- .../dashboard/DashboardWorkspace.stories.tsx | 0 .../dashboard/DashboardWorkspace.tsx | 0 .../components/dashboard/LiveMetricCard.tsx | 0 .../components/dashboard/MCPTab.tsx | 0 .../components/dashboard/OverviewTab.tsx | 0 .../dashboard/RegistryQuickAccess.tsx | 0 .../components/dashboard/SystemTab.tsx | 0 .../components/dashboard/WidgetCustomizer.tsx | 0 .../__tests__/dashboard-components.test.tsx | 0 .../__tests__/dashboard-helpers.test.tsx | 0 .../__tests__/dashboard-tabs.test.tsx | 0 .../components/dashboard/dashboard-icons.tsx | 0 src/components/dashboard/index.ts | 3 +- .../components/engine/CronJobEditor.tsx | 0 .../components/engine/EngineEventFeed.tsx | 0 .../components/engine/EngineWorkspace.tsx | 0 .../components/engine/ExecuteAgentForm.tsx | 0 .../components/engine/JobDetailModal.tsx | 0 .../components/engine/JobLogsViewer.tsx | 0 .../components/engine/MemoryBrowser.tsx | 0 .../engine/WorkflowTriggerModal.tsx | 0 .../engine/__tests__/CronJobEditor.test.tsx | 0 .../engine/__tests__/EngineEventFeed.test.tsx | 0 .../engine/__tests__/EngineWorkspace.test.tsx | 0 .../__tests__/ExecuteAgentForm.test.tsx | 0 .../engine/__tests__/JobDetailModal.test.tsx | 0 .../__tests__/WorkflowTriggerModal.test.tsx | 0 .../src => src}/components/engine/index.ts | 0 .../components/github/GitHubView.stories.tsx | 0 .../components/github/GitHubView.tsx | 0 .../insights/InsightsView.stories.tsx | 0 .../components/insights/InsightsView.tsx | 0 .../components/kanban/KanbanBoard.stories.tsx | 0 src/components/kanban/KanbanBoard.tsx | 674 +- .../kanban/KanbanColumn.stories.tsx | 0 src/components/kanban/KanbanColumn.tsx | 255 +- .../components/kanban/StoryCard.stories.tsx | 0 .../components/kanban/StoryCard.tsx | 0 .../kanban/StoryCreateModal.stories.tsx | 0 .../components/kanban/StoryCreateModal.tsx | 0 .../kanban/StoryDetailModal.stories.tsx | 0 .../components/kanban/StoryDetailModal.tsx | 0 .../knowledge/KnowledgeContentViewer.tsx | 0 .../knowledge/KnowledgeFileExplorer.tsx | 0 .../knowledge/KnowledgeGraph.stories.tsx | 0 .../components/knowledge/KnowledgeGraph.tsx | 0 .../knowledge/KnowledgeSearch.stories.tsx | 0 .../components/knowledge/KnowledgeSearch.tsx | 0 .../knowledge/KnowledgeView.stories.tsx | 0 .../components/knowledge/KnowledgeView.tsx | 0 .../src => src}/components/knowledge/index.ts | 0 .../layout/ActivityMetricsPanel.tsx | 0 .../layout/ActivityPanel.stories.tsx | 0 src/components/layout/ActivityPanel.tsx | 1093 +- .../components/layout/ActivitySection.tsx | 0 .../components/layout/ActivityStatusCards.tsx | 0 .../components/layout/AgentCommandsPanel.tsx | 0 .../components/layout/AgentInfoCard.tsx | 0 .../components/layout/AppLayout.stories.tsx | 0 src/components/layout/AppLayout.tsx | 121 +- .../layout/ExecutionLogPanel.stories.tsx | 0 src/components/layout/ExecutionLogPanel.tsx | 29 +- .../components/layout/ExternalToolsPanel.tsx | 0 .../components/layout/Header.stories.tsx | 0 src/components/layout/Header.tsx | 314 +- .../components/layout/MessageHistory.tsx | 0 .../components/layout/MobileNav.stories.tsx | 0 src/components/layout/MobileNav.tsx | 18 +- .../layout/OrchestrationActivityPanel.tsx | 0 .../components/layout/Sidebar.stories.tsx | 0 src/components/layout/Sidebar.tsx | 479 +- .../__tests__/layout-components.test.tsx | 0 .../layout/activity-panel-icons.tsx | 0 .../components/layout/activity-panel-types.ts | 0 src/components/layout/index.ts | 11 +- .../components/monitor/ActivityTimeline.tsx | 0 .../monitor/AgentStatusCards.stories.tsx | 0 src/components/monitor/AgentStatusCards.tsx | 36 +- .../monitor/AlertBanner.stories.tsx | 0 src/components/monitor/AlertBanner.tsx | 41 +- .../monitor/ConnectionStatus.stories.tsx | 0 src/components/monitor/ConnectionStatus.tsx | 28 +- .../components/monitor/EventList.stories.tsx | 0 src/components/monitor/EventList.tsx | 98 +- .../monitor/LiveMonitor.stories.tsx | 0 src/components/monitor/LiveMonitor.tsx | 95 +- .../monitor/MetricsPanel.stories.tsx | 0 src/components/monitor/MetricsPanel.tsx | 65 +- .../monitor/MonitorWorkspace.stories.tsx | 0 .../components/monitor/MonitorWorkspace.tsx | 0 .../__tests__/monitor-components.test.tsx | 0 .../components/onboarding/CinematicIntro.tsx | 0 .../onboarding/OnboardingTour.stories.tsx | 0 src/components/onboarding/OnboardingTour.tsx | 187 +- src/components/onboarding/index.ts | 1 + .../orchestration/AgentOutputCard.tsx | 0 .../orchestration/OrchestrationPanels.tsx | 0 .../orchestration/OrchestrationTemplates.tsx | 0 .../orchestration/OrchestrationWidgets.tsx | 0 .../orchestration/PlanApprovalCard.tsx | 0 .../TaskOrchestrator.stories.tsx | 0 .../orchestration/TaskOrchestrator.tsx | 1496 +- .../__tests__/orchestration-types.test.ts | 0 .../orchestration/orchestration-types.ts | 0 .../project-tabs/ProjectTabs.stories.tsx | 0 .../components/project-tabs/ProjectTabs.tsx | 0 .../components/qa/QAMetrics.stories.tsx | 0 .../src => src}/components/qa/QAMetrics.tsx | 0 .../registry/AgentDirectory.stories.tsx | 0 .../components/registry/AgentDirectory.tsx | 0 .../registry/AuthorityMatrix.stories.tsx | 0 .../components/registry/AuthorityMatrix.tsx | 0 .../registry/HandoffVisualization.stories.tsx | 0 .../registry/HandoffVisualization.tsx | 0 .../registry/TaskCatalog.stories.tsx | 0 .../components/registry/TaskCatalog.tsx | 0 .../registry/WorkflowCatalog.stories.tsx | 0 .../components/registry/WorkflowCatalog.tsx | 0 .../__tests__/registry-components.test.tsx | 0 .../roadmap/RoadmapView.stories.tsx | 0 src/components/roadmap/RoadmapView.tsx | 615 +- src/components/sales-room/SalesRoomPanel.tsx | 608 +- .../components/sales-room/intelligence.ts | 0 .../src => src}/components/sales-room/seed.ts | 0 .../components/sales-room/simulation.ts | 0 .../components/sales-room/store.ts | 0 src/components/sales-room/types.ts | 41 +- .../components/sales-room/useLiveData.ts | 0 .../components/sales-room/useWhatsApp.ts | 0 .../search/GlobalSearch.stories.tsx | 0 src/components/search/GlobalSearch.tsx | 281 +- .../components/settings/APISettings.tsx | 0 .../components/settings/AboutSettings.tsx | 0 .../settings/AppearanceSettings.tsx | 0 .../settings/CategoryManager.stories.tsx | 0 src/components/settings/CategoryManager.tsx | 103 +- .../components/settings/DashboardSettings.tsx | 0 .../settings/MemoryManager.stories.tsx | 0 src/components/settings/MemoryManager.tsx | 116 +- .../settings/NotificationSettings.tsx | 0 .../components/settings/PrivacySettings.tsx | 0 .../components/settings/ProfileSettings.tsx | 0 .../components/settings/SettingsHelpers.tsx | 0 .../settings/SettingsPage.stories.tsx | 0 src/components/settings/SettingsPage.tsx | 1211 +- .../settings/WorkflowManager.stories.tsx | 0 src/components/settings/WorkflowManager.tsx | 126 +- .../__tests__/CategoryManager.test.tsx | 0 .../settings/__tests__/MemoryManager.test.tsx | 0 .../settings/__tests__/SettingsPage.test.tsx | 0 .../__tests__/WorkflowManager.test.tsx | 0 src/components/settings/index.ts | 4 +- .../components/share/SharedTaskView.tsx | 0 .../squads-view/SquadsView.stories.tsx | 0 .../components/squads-view/SquadsView.tsx | 0 .../squads/AgentDetailPanel.stories.tsx | 0 src/components/squads/AgentDetailPanel.tsx | 86 +- .../squads/ConnectionsMap.stories.tsx | 0 src/components/squads/ConnectionsMap.tsx | 11 +- .../components/squads/SquadCard.stories.tsx | 0 src/components/squads/SquadCard.tsx | 172 +- .../squads/SquadOrgChart.stories.tsx | 0 src/components/squads/SquadOrgChart.tsx | 29 +- .../squads/SquadSelector.stories.tsx | 0 src/components/squads/SquadSelector.tsx | 61 +- .../squads/SquadStatsPanel.stories.tsx | 0 src/components/squads/SquadStatsPanel.tsx | 32 +- src/components/squads/index.ts | 14 +- .../status-bar/StatusBar.stories.tsx | 0 .../components/status-bar/StatusBar.tsx | 0 .../components/stories/StoryCard.stories.tsx | 0 src/components/stories/StoryCard.tsx | 204 +- .../stories/StoryCreateModal.stories.tsx | 0 src/components/stories/StoryCreateModal.tsx | 625 +- .../stories/StoryDetailModal.stories.tsx | 0 src/components/stories/StoryDetailModal.tsx | 293 +- .../components/stories/StoryList.stories.tsx | 0 src/components/stories/StoryList.tsx | 114 +- .../components/stories/StoryWorkspace.tsx | 0 .../__tests__/stories-components.test.tsx | 0 src/components/stories/index.ts | 9 +- .../terminals/TerminalCard.stories.tsx | 0 src/components/terminals/TerminalCard.tsx | 264 +- .../terminals/TerminalOutput.stories.tsx | 0 src/components/terminals/TerminalOutput.tsx | 337 +- .../terminals/TerminalTabs.stories.tsx | 0 src/components/terminals/TerminalTabs.tsx | 85 +- .../terminals/TerminalsView.stories.tsx | 0 src/components/terminals/TerminalsView.tsx | 194 +- .../components/ui/AioxLogo.stories.tsx | 0 src/components/ui/AioxLogo.tsx | 68 +- .../components/ui/Avatar.stories.tsx | 0 .../src => src}/components/ui/Avatar.tsx | 0 .../components/ui/Badge.stories.tsx | 0 .../src => src}/components/ui/Badge.tsx | 0 .../src => src}/components/ui/Celebration.tsx | 0 .../components/ui/ContextMenu.stories.tsx | 0 .../src => src}/components/ui/ContextMenu.tsx | 0 .../components/ui/Dialog.stories.tsx | 0 .../src => src}/components/ui/Dialog.tsx | 0 .../src => src}/components/ui/DiffViewer.tsx | 0 .../components/ui/EmptyState.stories.tsx | 0 src/components/ui/EmptyState.tsx | 28 +- .../components/ui/ErrorBoundary.stories.tsx | 0 src/components/ui/ErrorBoundary.tsx | 42 +- .../components/ui/FocusModeIndicator.tsx | 0 .../components/ui/GlassButton.stories.tsx | 0 .../src => src}/components/ui/GlassButton.tsx | 0 .../components/ui/GlassCard.stories.tsx | 0 .../src => src}/components/ui/GlassCard.tsx | 0 .../components/ui/GlassInput.stories.tsx | 0 .../src => src}/components/ui/GlassInput.tsx | 0 .../ui/KeyboardShortcuts.stories.tsx | 0 src/components/ui/KeyboardShortcuts.tsx | 79 +- .../components/ui/LanguageToggle.tsx | 0 .../components/ui/MatrixEffects.stories.tsx | 0 src/components/ui/MatrixEffects.tsx | 25 +- .../components/ui/NetworkStatus.stories.tsx | 0 src/components/ui/NetworkStatus.tsx | 107 +- .../components/ui/NotificationCenter.tsx | 0 .../components/ui/PWAUpdatePrompt.stories.tsx | 0 .../components/ui/PWAUpdatePrompt.tsx | 0 .../components/ui/PageLoader.stories.tsx | 0 src/components/ui/PageLoader.tsx | 150 +- .../components/ui/PresenceAvatars.tsx | 0 .../components/ui/ProgressBar.stories.tsx | 0 .../src => src}/components/ui/ProgressBar.tsx | 0 .../components/ui/Ripple.stories.tsx | 0 src/components/ui/Ripple.tsx | 10 +- .../components/ui/SectionLabel.stories.tsx | 0 .../components/ui/SectionLabel.tsx | 0 .../components/ui/ShortcutHint.tsx | 0 .../components/ui/Skeleton.stories.tsx | 0 .../src => src}/components/ui/Skeleton.tsx | 0 .../components/ui/SkipLinks.stories.tsx | 0 src/components/ui/SkipLinks.tsx | 29 +- .../components/ui/StatusDot.stories.tsx | 0 .../src => src}/components/ui/StatusDot.tsx | 0 .../components/ui/SuccessFeedback.stories.tsx | 0 src/components/ui/SuccessFeedback.tsx | 40 +- .../components/ui/ThemeToggle.stories.tsx | 0 src/components/ui/ThemeToggle.tsx | 88 +- .../components/ui/Toast.stories.tsx | 0 src/components/ui/Toast.tsx | 137 +- .../components/ui/__tests__/Avatar.test.tsx | 0 .../components/ui/__tests__/Badge.test.tsx | 0 .../ui/__tests__/ContextMenu.test.tsx | 0 .../components/ui/__tests__/Dialog.test.tsx | 0 .../ui/__tests__/DiffViewer.test.tsx | 0 .../ui/__tests__/EmptyState.test.tsx | 0 .../ui/__tests__/ErrorBoundary.test.tsx | 0 .../ui/__tests__/GlassButton.test.tsx | 0 .../ui/__tests__/GlassCard.test.tsx | 0 .../ui/__tests__/GlassInput.test.tsx | 0 .../ui/__tests__/NotificationCenter.test.tsx | 0 .../ui/__tests__/ProgressBar.test.tsx | 0 .../components/ui/__tests__/Skeleton.test.tsx | 0 .../ui/__tests__/StatusDot.test.tsx | 0 .../components/ui/__tests__/Toast.test.tsx | 0 .../components/ui/__tests__/a11y.test.tsx | 0 .../ui/__tests__/ui-components.test.tsx | 0 .../ui/cockpit/CockpitAlert.stories.tsx | 0 .../components/ui/cockpit/CockpitAlert.tsx | 0 .../ui/cockpit/CockpitBadge.stories.tsx | 0 .../components/ui/cockpit/CockpitBadge.tsx | 0 .../ui/cockpit/CockpitButton.stories.tsx | 0 .../components/ui/cockpit/CockpitButton.tsx | 0 .../ui/cockpit/CockpitFooterBar.stories.tsx | 0 .../ui/cockpit/CockpitFooterBar.tsx | 0 .../ui/cockpit/CockpitKpiCard.stories.tsx | 0 .../components/ui/cockpit/CockpitKpiCard.tsx | 0 .../cockpit/CockpitSectionDivider.stories.tsx | 0 .../ui/cockpit/CockpitSectionDivider.tsx | 0 .../ui/cockpit/CockpitSpinner.stories.tsx | 0 .../components/ui/cockpit/CockpitSpinner.tsx | 0 .../CockpitStatusIndicator.stories.tsx | 0 .../ui/cockpit/CockpitStatusIndicator.tsx | 0 .../ui/cockpit/CockpitTickerStrip.stories.tsx | 0 .../ui/cockpit/CockpitTickerStrip.tsx | 0 .../components/ui/cockpit/index.ts | 0 .../src => src}/components/ui/index.ts | 0 .../components/voice/GeminiVoiceControls.tsx | 0 .../components/voice/GlobalVoiceFAB.tsx | 0 .../components/voice/GlobalVoiceProvider.tsx | 0 .../components/voice/VoiceControls.tsx | 0 .../components/voice/VoiceMode.tsx | 0 .../src => src}/components/voice/VoiceOrb.tsx | 0 .../components/voice/VoiceSettings.tsx | 0 .../components/voice/VoiceTranscript.tsx | 0 .../components/voice/VoiceWaveform.tsx | 0 .../__tests__/GeminiVoiceControls.test.tsx | 0 .../voice/__tests__/VoiceControls.test.tsx | 0 .../voice/__tests__/VoiceSettings.test.tsx | 0 .../voice/__tests__/VoiceTranscript.test.tsx | 0 .../voice/__tests__/VoiceWaveform.test.tsx | 0 .../src => src}/components/voice/index.ts | 0 .../components/workflow/NodeDetailPanel.tsx | 0 .../workflow/WorkflowCanvas.stories.tsx | 0 src/components/workflow/WorkflowCanvas.tsx | 153 +- .../components/workflow/WorkflowDialogs.tsx | 0 .../workflow/WorkflowExecutionDetails.tsx | 0 .../WorkflowExecutionLive.stories.tsx | 0 .../workflow/WorkflowExecutionLive.tsx | 997 +- .../workflow/WorkflowExecutionSidebar.tsx | 0 .../components/workflow/WorkflowIcons.tsx | 0 .../components/workflow/WorkflowListView.tsx | 0 .../WorkflowMissionDetail.stories.tsx | 0 .../workflow/WorkflowMissionDetail.tsx | 70 +- .../workflow/WorkflowSidebar.stories.tsx | 0 src/components/workflow/WorkflowSidebar.tsx | 148 +- .../workflow/WorkflowView.stories.tsx | 0 src/components/workflow/WorkflowView.tsx | 1717 ++- .../__tests__/workflow-helpers.test.ts | 0 src/components/workflow/index.ts | 1 - src/components/workflow/types.ts | 2 +- .../workflow/workflow-execution-constants.ts | 0 .../workflow/workflow-execution-helpers.ts | 0 .../workflow/workflow-execution-icons.tsx | 0 .../workflow/workflow-execution-types.ts | 0 .../components/workflow/workflow-mock-data.ts | 0 .../components/workflow/workflow-utils.ts | 0 .../components/world/AgentEmotes.stories.tsx | 0 src/components/world/AgentEmotes.tsx | 23 +- .../world/AgentInteractionPanel.stories.tsx | 0 .../world/AgentInteractionPanel.tsx | 281 +- .../components/world/AgentSprite.stories.tsx | 0 src/components/world/AgentSprite.tsx | 82 +- .../world/AmbientParticles.stories.tsx | 0 src/components/world/AmbientParticles.tsx | 18 +- .../components/world/DomainContext.tsx | 0 .../world/EmbeddedScreen.stories.tsx | 0 src/components/world/EmbeddedScreen.tsx | 8 +- .../components/world/GatherWorld.stories.tsx | 0 src/components/world/GatherWorld.tsx | 44 +- .../world/InteractionLine.stories.tsx | 0 src/components/world/InteractionLine.tsx | 6 +- .../world/InteractiveFurniture.stories.tsx | 0 src/components/world/InteractiveFurniture.tsx | 14 +- .../world/IsometricTile.stories.tsx | 0 src/components/world/IsometricTile.tsx | 7 +- .../components/world/LiveSpeechBubble.tsx | 0 .../world/RoomEnvironment.stories.tsx | 0 src/components/world/RoomEnvironment.tsx | 28 +- .../world/RoomFurniture.stories.tsx | 0 src/components/world/RoomFurniture.tsx | 8 +- .../components/world/RoomView.stories.tsx | 0 src/components/world/RoomView.tsx | 92 +- .../components/world/SpeechBubble.stories.tsx | 0 src/components/world/SpeechBubble.tsx | 7 +- .../components/world/WorldMap.stories.tsx | 0 src/components/world/WorldMap.tsx | 50 +- .../components/world/WorldMinimap.stories.tsx | 0 src/components/world/WorldMinimap.tsx | 117 +- .../world/WorldNotifications.stories.tsx | 0 src/components/world/WorldNotifications.tsx | 108 +- .../world/WorldWorkflowPanel.stories.tsx | 0 src/components/world/WorldWorkflowPanel.tsx | 167 +- src/components/world/index.ts | 19 - src/components/world/pixel-sprites.ts | 4 +- src/components/world/useAgentMovement.ts | 63 +- src/components/world/useKeyboardNav.ts | 6 +- .../components/world/useThemedDomains.ts | 0 src/components/world/world-layout.ts | 10 + .../data/__tests__/aios-registry.test.ts | 0 .../data/aios-registry.generated.ts | 0 .../src => src}/data/registry-types.ts | 0 .../hooks/__tests__/useA11y.test.ts | 0 .../hooks/__tests__/useAnalytics.test.ts | 0 .../hooks/__tests__/useChatAndStories.test.ts | 0 .../hooks/__tests__/useEngine.test.ts | 0 .../__tests__/useExecuteAndDashboard.test.ts | 0 .../hooks/__tests__/useExport.test.ts | 0 .../hooks/__tests__/useFavorites.test.ts | 0 .../hooks/__tests__/useFormValidation.test.ts | 0 .../useGlobalKeyboardShortcuts.test.ts | 0 .../hooks/__tests__/useI18n.test.ts | 0 .../hooks/__tests__/useKnowledge.test.ts | 0 .../hooks/__tests__/useOptimistic.test.ts | 0 .../hooks/__tests__/useSound.test.ts | 0 .../__tests__/useSquadsAndAgents.test.ts | 0 .../hooks/__tests__/useTaskHistory.test.ts | 0 .../__tests__/useTaskLiveMission.test.ts | 0 .../hooks/__tests__/useTaskReplay.test.ts | 0 .../hooks/__tests__/useUrlSync.test.ts | 0 .../hooks/__tests__/useWorkflows.test.ts | 0 src/hooks/index.ts | 95 +- {aios-platform/src => src}/hooks/useA11y.ts | 0 {aios-platform/src => src}/hooks/useAgents.ts | 0 .../src => src}/hooks/useAnalytics.ts | 0 .../src => src}/hooks/useAudioCapture.ts | 0 {aios-platform/src => src}/hooks/useChat.ts | 0 .../src => src}/hooks/useDashboard.ts | 0 {aios-platform/src => src}/hooks/useEngine.ts | 0 .../src => src}/hooks/useExecute.ts | 0 {aios-platform/src => src}/hooks/useExport.ts | 0 .../src => src}/hooks/useFavorites.ts | 0 .../src => src}/hooks/useFormValidation.ts | 0 .../src => src}/hooks/useGeminiLive.ts | 0 .../hooks/useGlobalKeyboardShortcuts.ts | 0 {aios-platform/src => src}/hooks/useI18n.ts | 0 .../src => src}/hooks/useKnowledge.ts | 0 .../src => src}/hooks/useOptimistic.ts | 0 {aios-platform/src => src}/hooks/useSound.ts | 0 .../src => src}/hooks/useSpeechRecognition.ts | 0 .../src => src}/hooks/useSpeechSynthesis.ts | 0 {aios-platform/src => src}/hooks/useSquads.ts | 0 .../src => src}/hooks/useStories.ts | 0 {aios-platform/src => src}/hooks/useTTS.ts | 0 .../src => src}/hooks/useTaskHistory.ts | 0 .../src => src}/hooks/useTaskLiveMission.ts | 0 .../src => src}/hooks/useTaskReplay.ts | 0 .../src => src}/hooks/useUrlSync.ts | 0 .../src => src}/hooks/useVoiceMode.ts | 0 .../hooks/useVoiceVisualization.ts | 0 .../src => src}/hooks/useWorkflows.ts | 0 {aios-platform/src => src}/index.css | 0 .../lib/__tests__/agent-colors.test.ts | 0 .../lib/__tests__/taskExport.test.ts | 0 .../lib/__tests__/taskStateToMission.test.ts | 0 .../src => src}/lib/agent-avatars.ts | 0 .../src => src}/lib/agent-colors.ts | 0 .../src => src}/lib/audio-effects.ts | 0 {aios-platform/src => src}/lib/connection.ts | 0 src/lib/domain-taxonomy.ts | 160 +- src/lib/icons.ts | 650 +- {aios-platform/src => src}/lib/safeStorage.ts | 0 {aios-platform/src => src}/lib/supabase.ts | 0 {aios-platform/src => src}/lib/taskExport.ts | 0 .../lib/taskStateToLiveExecution.ts | 0 .../src => src}/lib/taskStateToMission.ts | 0 src/lib/theme.ts | 6 +- src/lib/utils.ts | 22 +- {aios-platform/src => src}/main.tsx | 0 .../src => src}/mocks/chat-demo-seed.ts | 0 {aios-platform/src => src}/mocks/index.ts | 0 {aios-platform/src => src}/mocks/squads.ts | 0 {aios-platform/src => src}/mocks/terminals.ts | 0 .../services/__tests__/agents-api.test.ts | 0 .../services/__tests__/analytics-api.test.ts | 0 .../services/__tests__/api-client.test.ts | 0 .../services/__tests__/engine-api.test.ts | 0 .../services/__tests__/execute-api.test.ts | 0 .../__tests__/offline-manager.test.ts | 0 .../services/__tests__/squads-api.test.ts | 0 .../services/__tests__/supabase-tasks.test.ts | 0 .../services/__tests__/tasks-api.test.ts | 0 .../__tests__/voice-task-router.test.ts | 0 .../__tests__/websocket-manager.test.ts | 0 .../services/__tests__/workflows-api.test.ts | 0 src/services/api/agents.ts | 86 +- src/services/api/client.ts | 10 +- .../src => src}/services/api/engine.ts | 0 src/services/api/execute.ts | 2 +- src/services/api/index.ts | 12 + src/services/api/squads.ts | 76 +- src/services/api/tasks.ts | 56 +- src/services/api/workflows.ts | 33 +- .../services/offline/OfflineManager.ts | 0 .../src => src}/services/offline/index.ts | 0 .../src => src}/services/supabase/tasks.ts | 0 .../src => src}/services/voice-task-router.ts | 0 .../services/websocket/WebSocketManager.ts | 0 .../src => src}/services/websocket/index.ts | 0 .../agentActivityStore.expanded.test.ts | 0 .../__tests__/agentActivityStore.test.ts | 0 .../stores/__tests__/bobStore.test.ts | 0 .../stores/__tests__/categoryStore.test.ts | 0 .../stores/__tests__/chatStore.test.ts | 0 .../__tests__/dashboardWidgetStore.test.ts | 0 .../__tests__/executionLogStore.test.ts | 0 .../stores/__tests__/monitorStore.test.ts | 0 .../__tests__/notificationPrefsStore.test.ts | 0 .../__tests__/orchestrationStore.test.ts | 0 .../stores/__tests__/presenceStore.test.ts | 0 .../stores/__tests__/projectStore.test.ts | 0 .../stores/__tests__/roadmapStore.test.ts | 0 .../stores/__tests__/searchStore.test.ts | 0 .../stores/__tests__/settingsStore.test.ts | 0 .../stores/__tests__/storyStore.test.ts | 0 .../stores/__tests__/terminalStore.test.ts | 0 .../__tests__/toastStore.expanded.test.ts | 0 .../stores/__tests__/toastStore.test.ts | 0 .../stores/__tests__/uiStore.expanded.test.ts | 0 .../stores/__tests__/uiStore.test.ts | 0 .../stores/__tests__/voiceStore.test.ts | 0 .../src => src}/stores/agentActivityStore.ts | 0 {aios-platform/src => src}/stores/bobStore.ts | 0 src/stores/categoryStore.ts | 4 +- src/stores/chatStore.ts | 6 +- .../stores/dashboardWidgetStore.ts | 0 .../src => src}/stores/monitorStore.ts | 0 .../stores/notificationPrefsStore.ts | 0 .../src => src}/stores/orchestrationStore.ts | 0 .../src => src}/stores/presenceStore.ts | 0 .../src => src}/stores/projectStore.ts | 0 src/stores/roadmapStore.ts | 29 +- .../src => src}/stores/settingsStore.ts | 0 .../src => src}/stores/storyStore.ts | 0 .../src => src}/stores/terminalStore.ts | 0 src/stores/toastStore.ts | 92 + src/stores/uiStore.ts | 126 +- .../src => src}/stores/voiceStore.ts | 0 .../src => src}/styles/fonts/aiox-fonts.css | 0 .../src => src}/styles/light-mode-compat.css | 0 src/styles/liquid-glass.css | 123 +- src/styles/tokens/index.css | 3 + src/styles/tokens/primitives/colors.css | 14 - src/styles/tokens/primitives/spacing.css | 16 + src/styles/tokens/primitives/timing.css | 7 - src/styles/tokens/primitives/typography.css | 24 +- .../styles/tokens/themes/aiox-animations.css | 0 .../styles/tokens/themes/aiox-components.css | 0 .../styles/tokens/themes/aiox-patterns.css | 0 src/styles/tokens/themes/aiox.css | 1204 +- .../src => src}/test/mocks/pwa-register.ts | 0 {aios-platform/src => src}/test/setup.test.ts | 0 {aios-platform/src => src}/test/setup.ts | 0 .../src => src}/test/test-utils.tsx | 0 .../src => src}/test/vitest-axe.d.ts | 0 src/types/index.ts | 397 +- {aios-platform/src => src}/vite-env.d.ts | 0 .../supabase => supabase}/.gitignore | 0 .../supabase => supabase}/config.toml | 0 .../tailwind.config.ts => tailwind.config.ts | 0 .../.last-run.json | 0 .../tsconfig.app.json => tsconfig.app.json | 0 tsconfig.json | 37 +- .../tsconfig.node.json => tsconfig.node.json | 0 aios-platform/vercel.json => vercel.json | 0 .../vite.config.ts => vite.config.ts | 0 vitest.config.ts | 112 +- .../vitest.shims.d.ts => vitest.shims.d.ts | 0 1385 files changed, 40878 insertions(+), 40878 deletions(-) rename aios-platform/.dockerignore => .dockerignore (100%) rename aios-platform/.env.example => .env.example (100%) rename aios-platform/.env.local.example => .env.local.example (100%) rename {aios-platform/.github => .github}/workflows/deploy.yml (100%) rename {aios-platform/.github => .github}/workflows/pr-check.yml (100%) rename {aios-platform/.husky => .husky}/pre-commit (100%) rename aios-platform/.prettierignore => .prettierignore (100%) rename aios-platform/.prettierrc => .prettierrc (100%) rename {aios-platform/.storybook => .storybook}/api-mocks.ts (100%) rename {aios-platform/.storybook => .storybook}/main.ts (100%) rename {aios-platform/.storybook => .storybook}/preview.tsx (100%) rename {aios-platform/.storybook => .storybook}/vitest.setup.ts (100%) rename aios-platform/CLAUDE.md => CLAUDE.md (100%) rename aios-platform/Dockerfile => Dockerfile (100%) delete mode 100644 aios-platform/.github/workflows/ci.yml delete mode 100644 aios-platform/README.md delete mode 100644 aios-platform/package.json delete mode 100644 aios-platform/src/components/agents/AgentCard.tsx delete mode 100644 aios-platform/src/components/bob/ExecutionLog.tsx delete mode 100644 aios-platform/src/components/chat/ChatContainer.tsx delete mode 100644 aios-platform/src/components/chat/MarkdownRenderer.tsx delete mode 100644 aios-platform/src/components/dashboard/DashboardOverview.tsx delete mode 100644 aios-platform/src/components/dashboard/index.ts delete mode 100644 aios-platform/src/components/kanban/KanbanBoard.tsx delete mode 100644 aios-platform/src/components/kanban/KanbanColumn.tsx delete mode 100644 aios-platform/src/components/layout/ActivityPanel.tsx delete mode 100644 aios-platform/src/components/layout/AppLayout.tsx delete mode 100644 aios-platform/src/components/layout/Header.tsx delete mode 100644 aios-platform/src/components/layout/Sidebar.tsx delete mode 100644 aios-platform/src/components/layout/index.ts delete mode 100644 aios-platform/src/components/monitor/ConnectionStatus.tsx delete mode 100644 aios-platform/src/components/monitor/LiveMonitor.tsx delete mode 100644 aios-platform/src/components/orchestration/TaskOrchestrator.tsx delete mode 100644 aios-platform/src/components/roadmap/RoadmapView.tsx delete mode 100644 aios-platform/src/components/sales-room/SalesRoomPanel.tsx delete mode 100644 aios-platform/src/components/search/GlobalSearch.tsx delete mode 100644 aios-platform/src/components/settings/SettingsPage.tsx delete mode 100644 aios-platform/src/components/squads/SquadCard.tsx delete mode 100644 aios-platform/src/components/squads/index.ts delete mode 100644 aios-platform/src/components/stories/StoryCard.tsx delete mode 100644 aios-platform/src/components/stories/StoryCreateModal.tsx delete mode 100644 aios-platform/src/components/stories/StoryDetailModal.tsx delete mode 100644 aios-platform/src/components/stories/index.ts delete mode 100644 aios-platform/src/components/terminals/TerminalCard.tsx delete mode 100644 aios-platform/src/components/terminals/TerminalOutput.tsx delete mode 100644 aios-platform/src/components/terminals/TerminalTabs.tsx delete mode 100644 aios-platform/src/components/terminals/TerminalsView.tsx delete mode 100644 aios-platform/src/components/ui/AioxLogo.tsx delete mode 100644 aios-platform/src/components/ui/PageLoader.tsx delete mode 100644 aios-platform/src/components/workflow/WorkflowExecutionLive.tsx delete mode 100644 aios-platform/src/components/workflow/WorkflowView.tsx delete mode 100644 aios-platform/src/components/world/WorldMinimap.tsx delete mode 100644 aios-platform/src/components/world/index.ts delete mode 100644 aios-platform/src/hooks/index.ts delete mode 100644 aios-platform/src/lib/domain-taxonomy.ts delete mode 100644 aios-platform/src/lib/icons.ts delete mode 100644 aios-platform/src/services/api/agents.ts delete mode 100644 aios-platform/src/services/api/squads.ts delete mode 100644 aios-platform/src/stores/roadmapStore.ts delete mode 100644 aios-platform/src/stores/toastStore.ts delete mode 100644 aios-platform/src/styles/tokens/primitives/spacing.css delete mode 100644 aios-platform/src/styles/tokens/themes/aiox.css delete mode 100644 aios-platform/tsconfig.json delete mode 100644 aios-platform/vitest.config.ts rename {aios-platform/data => data}/agents-metadata.txt (100%) rename aios-platform/docker-compose.yaml => docker-compose.yaml (100%) rename {aios-platform/docs => docs}/EPIC-AGENT-EXECUTION-ENGINE.md (100%) rename {aios-platform/docs => docs}/PRD-AGENT-EXECUTION-ENGINE.md (100%) rename {aios-platform/docs => docs}/engine-operation-guide.md (100%) rename {aios-platform/docs => docs}/project-interface-spec.yaml (100%) rename {aios-platform/docs => docs}/voice-mode-study.md (100%) rename {aios-platform/e2e => e2e}/accessibility.spec.ts (100%) rename {aios-platform/e2e => e2e}/agent-selection-flow.spec.ts (100%) rename {aios-platform/e2e => e2e}/agents.spec.ts (100%) rename {aios-platform/e2e => e2e}/api-resilience.spec.ts (100%) rename {aios-platform/e2e => e2e}/bob-orchestration.spec.ts (100%) rename {aios-platform/e2e => e2e}/chat-export.spec.ts (100%) rename {aios-platform/e2e => e2e}/chat-file-upload.spec.ts (100%) rename {aios-platform/e2e => e2e}/chat.spec.ts (100%) rename {aios-platform/e2e => e2e}/context.spec.ts (100%) rename {aios-platform/e2e => e2e}/cross-tab-sync.spec.ts (100%) rename {aios-platform/e2e => e2e}/dashboard-customizer.spec.ts (100%) rename {aios-platform/e2e => e2e}/dashboard.spec.ts (100%) rename {aios-platform/e2e => e2e}/engine.spec.ts (100%) rename {aios-platform/e2e => e2e}/favorites-recents.spec.ts (100%) rename {aios-platform/e2e => e2e}/fixtures/api-mocks.fixture.ts (100%) rename {aios-platform/e2e => e2e}/fixtures/base.fixture.ts (100%) rename {aios-platform/e2e => e2e}/github.spec.ts (100%) rename {aios-platform/e2e => e2e}/insights-roadmap.spec.ts (100%) rename {aios-platform/e2e => e2e}/kanban-dnd.spec.ts (100%) rename {aios-platform/e2e => e2e}/kanban.spec.ts (100%) rename {aios-platform/e2e => e2e}/keyboard-shortcuts.spec.ts (100%) rename {aios-platform/e2e => e2e}/knowledge-interactions.spec.ts (100%) rename {aios-platform/e2e => e2e}/knowledge.spec.ts (100%) rename {aios-platform/e2e => e2e}/layout.spec.ts (100%) rename {aios-platform/e2e => e2e}/monitor.spec.ts (100%) rename {aios-platform/e2e => e2e}/navigation.spec.ts (100%) rename {aios-platform/e2e => e2e}/onboarding.spec.ts (100%) rename {aios-platform/e2e => e2e}/orchestration-flow.spec.ts (100%) rename {aios-platform/e2e => e2e}/pwa-features.spec.ts (100%) rename {aios-platform/e2e => e2e}/qa.spec.ts (100%) rename {aios-platform/e2e => e2e}/registry.spec.ts (100%) rename {aios-platform/e2e => e2e}/responsive-breakpoints.spec.ts (100%) rename {aios-platform/e2e => e2e}/search.spec.ts (100%) rename {aios-platform/e2e => e2e}/settings-forms.spec.ts (100%) rename {aios-platform/e2e => e2e}/settings.spec.ts (100%) rename {aios-platform/e2e => e2e}/slash-commands.spec.ts (100%) rename {aios-platform/e2e => e2e}/squads.spec.ts (100%) rename {aios-platform/e2e => e2e}/state-persistence.spec.ts (100%) rename {aios-platform/e2e => e2e}/stories.spec.ts (100%) rename {aios-platform/e2e => e2e}/story-detail-modal.spec.ts (100%) rename {aios-platform/e2e => e2e}/terminal-interaction.spec.ts (100%) rename {aios-platform/e2e => e2e}/terminals.spec.ts (100%) rename {aios-platform/e2e => e2e}/theme.spec.ts (100%) rename {aios-platform/e2e => e2e}/toasts-notifications.spec.ts (100%) rename {aios-platform/e2e => e2e}/workflow.spec.ts (100%) rename {aios-platform/e2e => e2e}/world-interactions.spec.ts (100%) rename {aios-platform/e2e => e2e}/world.spec.ts (100%) rename {aios-platform/engine => engine}/.env.example (100%) rename {aios-platform/engine => engine}/README.md (100%) rename {aios-platform/engine => engine}/bin/aios-engine.ts (100%) rename {aios-platform/engine => engine}/bun.lock (100%) rename {aios-platform/engine => engine}/engine.config.yaml (100%) rename {aios-platform/engine => engine}/migrations/001_initial.sql (100%) rename {aios-platform/engine => engine}/migrations/002_relax_memory_fk.sql (100%) rename {aios-platform/engine => engine}/migrations/003_workflow_state.sql (100%) rename {aios-platform/engine => engine}/migrations/004_cron_jobs.sql (100%) rename {aios-platform/engine => engine}/package.json (100%) rename {aios-platform/engine => engine}/src/core/authority-enforcer.ts (100%) rename {aios-platform/engine => engine}/src/core/completion-handler.ts (100%) rename {aios-platform/engine => engine}/src/core/context-builder.ts (100%) rename {aios-platform/engine => engine}/src/core/cron-scheduler.ts (100%) rename {aios-platform/engine => engine}/src/core/delegation-protocol.ts (100%) rename {aios-platform/engine => engine}/src/core/job-queue.ts (100%) rename {aios-platform/engine => engine}/src/core/memory-client.ts (100%) rename {aios-platform/engine => engine}/src/core/process-pool.ts (100%) rename {aios-platform/engine => engine}/src/core/team-bundle.ts (100%) rename {aios-platform/engine => engine}/src/core/workflow-engine.ts (100%) rename {aios-platform/engine => engine}/src/core/workspace-manager.ts (100%) rename {aios-platform/engine => engine}/src/index.ts (100%) rename {aios-platform/engine => engine}/src/lib/config.ts (100%) rename {aios-platform/engine => engine}/src/lib/db.ts (100%) rename {aios-platform/engine => engine}/src/lib/logger.ts (100%) rename {aios-platform/engine => engine}/src/lib/project-resolver.ts (100%) rename {aios-platform/engine => engine}/src/lib/ws.ts (100%) rename {aios-platform/engine => engine}/src/routes/cron.ts (100%) rename {aios-platform/engine => engine}/src/routes/execute.ts (100%) rename {aios-platform/engine => engine}/src/routes/jobs.ts (100%) rename {aios-platform/engine => engine}/src/routes/memory.ts (100%) rename {aios-platform/engine => engine}/src/routes/registry.ts (100%) rename {aios-platform/engine => engine}/src/routes/stream.ts (100%) rename {aios-platform/engine => engine}/src/routes/system.ts (100%) rename {aios-platform/engine => engine}/src/routes/webhooks.ts (100%) rename {aios-platform/engine => engine}/src/routes/whatsapp.ts (100%) rename {aios-platform/engine => engine}/src/types.ts (100%) rename {aios-platform/engine => engine}/tests/integration.test.ts (100%) rename {aios-platform/engine => engine}/tests/unit/authority-enforcer.test.ts (100%) rename {aios-platform/engine => engine}/tests/unit/completion-handler.test.ts (100%) rename {aios-platform/engine => engine}/tests/unit/config.test.ts (100%) rename {aios-platform/engine => engine}/tests/unit/delegation-protocol.test.ts (100%) rename {aios-platform/engine => engine}/tests/unit/job-queue.test.ts (100%) rename {aios-platform/engine => engine}/tests/unit/webhook-routing.test.ts (100%) rename {aios-platform/engine => engine}/tests/unit/ws-bridge.test.ts (100%) rename {aios-platform/engine => engine}/tsconfig.json (100%) rename aios-platform/eslint.config.js => eslint.config.js (100%) rename aios-platform/index.html => index.html (100%) rename {.aios-core => legacy/.aios-core}/SQUAD-REGISTRY.yaml (100%) rename {.aios-core => legacy/.aios-core}/constitution.md (100%) rename {.aios-core => legacy/.aios-core}/development/checklists/change-checklist.md (100%) rename {.aios-core => legacy/.aios-core}/development/checklists/pm-checklist.md (100%) rename {.aios-core => legacy/.aios-core}/development/checklists/self-critique-checklist.md (100%) rename {.aios-core => legacy/.aios-core}/development/tasks/apply-qa-fixes.md (100%) rename {.aios-core => legacy/.aios-core}/development/tasks/create-next-story.md (100%) rename {.aios-core => legacy/.aios-core}/development/tasks/create-task.md (100%) rename {.aios-core => legacy/.aios-core}/development/tasks/create-workflow.md (100%) rename {.aios-core => legacy/.aios-core}/development/tasks/dev-apply-qa-fixes.md (100%) rename {.aios-core => legacy/.aios-core}/development/tasks/dev-develop-story.md (100%) rename {.aios-core => legacy/.aios-core}/development/tasks/dev-validate-next-story.md (100%) rename {.aios-core => legacy/.aios-core}/development/tasks/improve-self.md (100%) rename {.aios-core => legacy/.aios-core}/development/tasks/orchestrate-status.md (100%) rename {.aios-core => legacy/.aios-core}/development/tasks/qa-gate.md (100%) rename {.aios-core => legacy/.aios-core}/development/tasks/qa-review-story.md (100%) rename {.aios-core => legacy/.aios-core}/development/tasks/release-management.md (100%) rename {.aios-core => legacy/.aios-core}/development/tasks/security-scan.md (100%) rename {.aios-core => legacy/.aios-core}/development/tasks/validate-next-story.md (100%) rename {.aios-core => legacy/.aios-core}/development/workflows/qa-loop.yaml (100%) rename {.aios-core => legacy/.aios-core}/development/workflows/story-development-cycle.yaml (100%) rename {.aios-core => legacy/.aios-core}/hooks/ids-post-commit.js (100%) rename {.aios-core => legacy/.aios-core}/hooks/ids-pre-push.js (100%) rename {.aios-core => legacy/.aios-core}/hooks/package.json (100%) rename {.aios-core => legacy/.aios-core}/hooks/unified/README.md (100%) rename {.aios-core => legacy/.aios-core}/hooks/unified/hook-interface.js (100%) rename {.aios-core => legacy/.aios-core}/hooks/unified/hook-registry.js (100%) rename {.aios-core => legacy/.aios-core}/hooks/unified/index.js (100%) rename {.aios-core => legacy/.aios-core}/hooks/unified/runners/precompact-runner.js (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/blotato-mcp/package-lock.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/blotato-mcp/package.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/blotato-mcp/src/index.ts (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/blotato-mcp/tsconfig.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/facebook-page-insights-mcp/package-lock.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/facebook-page-insights-mcp/package.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/facebook-page-insights-mcp/src/index.ts (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/facebook-page-insights-mcp/tsconfig.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/fal-nano-banana-mcp/README.md (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/fal-nano-banana-mcp/package-lock.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/fal-nano-banana-mcp/package.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/fal-nano-banana-mcp/src/index.ts (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/fal-nano-banana-mcp/tsconfig.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/google-ads-mcp/package-lock.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/google-ads-mcp/package.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/google-ads-mcp/src/index.ts (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/google-ads-mcp/tsconfig.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/hotmart-mcp/package-lock.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/hotmart-mcp/package.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/hotmart-mcp/src/index.ts (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/hotmart-mcp/tsconfig.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/instagram-insights-mcp/package-lock.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/instagram-insights-mcp/package.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/instagram-insights-mcp/src/index.ts (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/instagram-insights-mcp/tsconfig.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/meta-ads-mcp/package-lock.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/meta-ads-mcp/package.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/meta-ads-mcp/src/index.ts (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/meta-ads-mcp/tsconfig.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/mission-control-mcp/package-lock.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/mission-control-mcp/package.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/mission-control-mcp/src/index.ts (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/mission-control-mcp/tsconfig.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/pinterest-mcp/package-lock.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/pinterest-mcp/package.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/pinterest-mcp/src/index.ts (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/pinterest-mcp/tsconfig.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/threads-mcp/package-lock.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/threads-mcp/package.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/threads-mcp/src/index.ts (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/threads-mcp/tsconfig.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/tiktok-ads-mcp/package-lock.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/tiktok-ads-mcp/package.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/tiktok-ads-mcp/src/index.ts (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/tiktok-ads-mcp/tsconfig.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/waha-mcp (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/x-twitter-mcp/package-lock.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/x-twitter-mcp/package.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/x-twitter-mcp/src/index.ts (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/x-twitter-mcp/tsconfig.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/youtube-analytics-mcp/package-lock.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/youtube-analytics-mcp/package.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/youtube-analytics-mcp/src/auth.ts (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/youtube-analytics-mcp/src/index.ts (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/youtube-analytics-mcp/tsconfig.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/youtube-asmr-mcp/package-lock.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/youtube-asmr-mcp/package.json (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/youtube-asmr-mcp/src/auth.ts (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/youtube-asmr-mcp/src/index.ts (100%) rename {.aios-core => legacy/.aios-core}/mcp-servers/youtube-asmr-mcp/tsconfig.json (100%) rename {.github => legacy/.github}/CODEOWNERS (100%) create mode 100644 legacy/.github/workflows/ci.yml rename {.github => legacy/.github}/workflows/pr-alert-autofix.yml (100%) rename .gitmodules => legacy/.gitmodules (100%) create mode 100644 legacy/README.md rename components.json => legacy/components.json (100%) rename {docs => legacy/docs}/EPIC-AIOS-DASHBOARD-ONLINE.md (100%) rename eslint.config.mjs => legacy/eslint.config.mjs (100%) rename next.config.ts => legacy/next.config.ts (100%) rename {aios-platform => legacy}/package-lock.json (65%) create mode 100644 legacy/package.json rename {packages => legacy/packages}/aios-dash/package.json (100%) rename {packages => legacy/packages}/aios-dash/src/bun-globals.d.ts (100%) rename {packages => legacy/packages}/aios-dash/src/cli.ts (100%) rename {packages => legacy/packages}/aios-dash/src/config.ts (100%) rename {packages => legacy/packages}/aios-dash/src/local-server.ts (100%) rename {packages => legacy/packages}/aios-dash/src/relay.ts (100%) rename {packages => legacy/packages}/aios-dash/tsconfig.json (100%) rename {packages => legacy/packages}/aiox-brandbook (100%) rename {packages => legacy/packages}/relay/Dockerfile (100%) rename {packages => legacy/packages}/relay/package.json (100%) rename {packages => legacy/packages}/relay/railway.toml (100%) rename {packages => legacy/packages}/relay/src/auth.ts (100%) rename {packages => legacy/packages}/relay/src/bun-globals.d.ts (100%) rename {packages => legacy/packages}/relay/src/rooms.ts (100%) rename {packages => legacy/packages}/relay/src/server.ts (100%) rename {packages => legacy/packages}/relay/src/types.ts (100%) rename {packages => legacy/packages}/relay/tsconfig.json (100%) rename postcss.config.mjs => legacy/postcss.config.mjs (100%) rename {public => legacy/public}/file.svg (100%) rename {public => legacy/public}/fonts/TASAOrbiterDisplay-Bold.otf (100%) rename {public => legacy/public}/globe.svg (100%) rename {public => legacy/public}/next.svg (100%) rename {public => legacy/public}/vercel.svg (100%) rename {public => legacy/public}/window.svg (100%) rename {server => legacy/server}/README.md (100%) rename {server => legacy/server}/bun.lock (100%) rename {server => legacy/server}/db.ts (100%) rename {server => legacy/server}/package.json (100%) rename {server => legacy/server}/server.ts (100%) rename {server => legacy/server}/tsconfig.json (100%) rename {server => legacy/server}/types.ts (100%) rename {src => legacy/src}/__tests__/bob-components.test.tsx (100%) rename {src => legacy/src}/__tests__/bob-store.test.ts (100%) rename {src => legacy/src}/__tests__/setup.ts (100%) rename {src => legacy/src}/__tests__/squad-api-utils.test.ts (100%) rename {src => legacy/src}/__tests__/squad-metadata.test.ts (100%) rename {src => legacy/src}/__tests__/yaml-to-mermaid.test.ts (100%) rename {src => legacy/src}/app/(dashboard)/agents/page.tsx (100%) rename {src => legacy/src}/app/(dashboard)/github/page.tsx (100%) rename {src => legacy/src}/app/(dashboard)/kanban/page.tsx (100%) rename {src => legacy/src}/app/(dashboard)/knowledge/page.tsx (100%) rename {src => legacy/src}/app/(dashboard)/layout.tsx (100%) rename {src => legacy/src}/app/(dashboard)/monitor/page.tsx (100%) rename {src => legacy/src}/app/(dashboard)/settings/page.tsx (100%) rename {src => legacy/src}/app/(dashboard)/squads/page.tsx (100%) rename {src => legacy/src}/app/(dashboard)/terminals/page.tsx (100%) rename {src => legacy/src}/app/api/agents/[squadId]/[agentId]/commands/route.ts (100%) rename {src => legacy/src}/app/api/agents/[squadId]/[agentId]/route.ts (100%) rename {src => legacy/src}/app/api/agents/route.ts (100%) rename {src => legacy/src}/app/api/agents/search/route.ts (100%) rename {src => legacy/src}/app/api/agents/squad/[squadId]/route.ts (100%) rename {src => legacy/src}/app/api/analytics/costs/route.ts (100%) rename {src => legacy/src}/app/api/analytics/health-dashboard/route.ts (100%) rename {src => legacy/src}/app/api/analytics/overview/route.ts (100%) rename {src => legacy/src}/app/api/analytics/performance/agents/route.ts (100%) rename {src => legacy/src}/app/api/analytics/performance/squads/route.ts (100%) rename {src => legacy/src}/app/api/analytics/realtime/route.ts (100%) rename {src => legacy/src}/app/api/analytics/usage/tokens/route.ts (100%) rename {src => legacy/src}/app/api/bob/events/route.ts (100%) rename {src => legacy/src}/app/api/bob/status/route.ts (100%) rename {src => legacy/src}/app/api/events/history/route.ts (100%) rename {src => legacy/src}/app/api/events/recent/route.ts (100%) rename {src => legacy/src}/app/api/events/route.ts (100%) rename {src => legacy/src}/app/api/execute/agent/route.ts (100%) rename {src => legacy/src}/app/api/execute/agent/stream/route.ts (100%) rename {src => legacy/src}/app/api/execute/db/health/route.ts (100%) rename {src => legacy/src}/app/api/execute/history/route.ts (100%) rename {src => legacy/src}/app/api/execute/llm/health/route.ts (100%) rename {src => legacy/src}/app/api/execute/llm/models/route.ts (100%) rename {src => legacy/src}/app/api/execute/llm/usage/route.ts (100%) rename {src => legacy/src}/app/api/execute/orchestrate/route.ts (100%) rename {src => legacy/src}/app/api/execute/stats/route.ts (100%) rename {src => legacy/src}/app/api/execute/status/[executionId]/route.ts (100%) rename {src => legacy/src}/app/api/execute/track/batch/route.ts (100%) rename {src => legacy/src}/app/api/execute/track/route.ts (100%) rename {src => legacy/src}/app/api/github/route.ts (100%) rename {src => legacy/src}/app/api/knowledge/agents/route.ts (100%) rename {src => legacy/src}/app/api/knowledge/files/overview/route.ts (100%) rename {src => legacy/src}/app/api/knowledge/files/route.ts (100%) rename {src => legacy/src}/app/api/qa/metrics/route.ts (100%) rename {src => legacy/src}/app/api/squads/[name]/agents/[agentId]/route.ts (100%) rename {src => legacy/src}/app/api/squads/[name]/commands/route.ts (100%) rename {src => legacy/src}/app/api/squads/[name]/connections/route.ts (100%) rename {src => legacy/src}/app/api/squads/[name]/route.ts (100%) rename {src => legacy/src}/app/api/squads/[name]/sections/[section]/[slug]/route.ts (100%) rename {src => legacy/src}/app/api/squads/[name]/sections/[section]/route.ts (100%) rename {src => legacy/src}/app/api/squads/[name]/stats/route.ts (100%) rename {src => legacy/src}/app/api/squads/ecosystem/overview/route.ts (100%) rename {src => legacy/src}/app/api/squads/route.ts (100%) rename {src => legacy/src}/app/api/status/route.ts (100%) rename {src => legacy/src}/app/api/stories/[id]/route.ts (100%) rename {src => legacy/src}/app/api/stories/route.ts (100%) rename {src => legacy/src}/app/api/system/env-vars/route.ts (100%) rename {src => legacy/src}/app/api/tasks/[taskId]/approve/route.ts (100%) rename {src => legacy/src}/app/api/tasks/[taskId]/kill/route.ts (100%) rename {src => legacy/src}/app/api/tasks/[taskId]/revise/route.ts (100%) rename {src => legacy/src}/app/api/tasks/[taskId]/route.ts (100%) rename {src => legacy/src}/app/api/tasks/[taskId]/stream/route.ts (100%) rename {src => legacy/src}/app/api/tasks/route.ts (100%) rename {src => legacy/src}/app/api/tasks/stream/route.ts (100%) rename {src => legacy/src}/app/api/tools/mcp/route.ts (100%) rename {src => legacy/src}/app/api/workflows/[id]/activate/route.ts (100%) rename {src => legacy/src}/app/api/workflows/[id]/execute/route.ts (100%) rename {src => legacy/src}/app/api/workflows/[id]/execute/stream/route.ts (100%) rename {src => legacy/src}/app/api/workflows/[id]/pause/route.ts (100%) rename {src => legacy/src}/app/api/workflows/[id]/route.ts (100%) rename {src => legacy/src}/app/api/workflows/[id]/stats/route.ts (100%) rename {src => legacy/src}/app/api/workflows/executions/[id]/cancel/route.ts (100%) rename {src => legacy/src}/app/api/workflows/executions/[id]/route.ts (100%) rename {src => legacy/src}/app/api/workflows/executions/route.ts (100%) rename {src => legacy/src}/app/api/workflows/orchestrate/stream/route.ts (100%) rename {src => legacy/src}/app/api/workflows/route.ts (100%) rename {src => legacy/src}/app/api/workflows/schema/route.ts (100%) rename {src => legacy/src}/app/bob/page.tsx (100%) rename {src => legacy/src}/app/favicon.ico (100%) rename {src => legacy/src}/app/globals.css (100%) rename {src => legacy/src}/app/layout.tsx (100%) rename {src => legacy/src}/app/page.tsx (100%) create mode 100644 legacy/src/components/agents/AgentCard.tsx rename {aios-platform => legacy}/src/components/agents/AgentExplorer.tsx (69%) rename {aios-platform => legacy}/src/components/agents/AgentList.tsx (85%) rename {src => legacy/src}/components/agents/AgentMonitor.tsx (100%) rename {aios-platform => legacy}/src/components/agents/AgentProfile.tsx (71%) rename {aios-platform => legacy}/src/components/agents/AgentProfileExpanded.tsx (76%) rename {aios-platform => legacy}/src/components/agents/AgentProfileModal.tsx (54%) rename {aios-platform => legacy}/src/components/agents/AgentSkills.tsx (64%) rename {aios-platform => legacy}/src/components/agents/FavoritesRecents.tsx (95%) rename {src => legacy/src}/components/agents/PlatformAgentCard.tsx (100%) rename {aios-platform => legacy}/src/components/agents/index.ts (52%) rename {src => legacy/src}/components/bob/BobAgentActivity.tsx (100%) rename {src => legacy/src}/components/bob/BobOrchestrationView.tsx (100%) rename {src => legacy/src}/components/bob/BobPipelinePanel.tsx (100%) rename {src => legacy/src}/components/bob/BobSurfaceAlert.tsx (100%) create mode 100644 legacy/src/components/bob/ExecutionLog.tsx rename {src => legacy/src}/components/bob/index.ts (100%) create mode 100644 legacy/src/components/chat/ChatContainer.tsx rename {aios-platform => legacy}/src/components/chat/ChatInput.tsx (78%) rename {aios-platform => legacy}/src/components/chat/ConversationHistory.tsx (93%) rename {aios-platform => legacy}/src/components/chat/ExportChat.tsx (93%) create mode 100644 legacy/src/components/chat/MarkdownRenderer.tsx rename {aios-platform => legacy}/src/components/chat/MessageBubble.tsx (59%) rename {aios-platform => legacy}/src/components/chat/VirtualizedMessageList.tsx (91%) rename {aios-platform => legacy}/src/components/chat/index.ts (86%) rename {src => legacy/src}/components/context/ContextPanel.tsx (100%) rename {src => legacy/src}/components/context/index.ts (100%) rename {aios-platform => legacy}/src/components/dashboard/Charts.tsx (61%) create mode 100644 legacy/src/components/dashboard/DashboardOverview.tsx create mode 100644 legacy/src/components/dashboard/index.ts rename {src => legacy/src}/components/github/GitHubPanel.tsx (100%) rename {src => legacy/src}/components/github/index.ts (100%) rename {src => legacy/src}/components/insights/InsightsPanel.tsx (100%) rename {src => legacy/src}/components/insights/index.ts (100%) create mode 100644 legacy/src/components/kanban/KanbanBoard.tsx create mode 100644 legacy/src/components/kanban/KanbanColumn.tsx rename {src => legacy/src}/components/kanban/SortableStoryCard.tsx (100%) rename {src => legacy/src}/components/kanban/index.ts (100%) create mode 100644 legacy/src/components/layout/ActivityPanel.tsx create mode 100644 legacy/src/components/layout/AppLayout.tsx rename {src => legacy/src}/components/layout/AppShell.tsx (100%) rename {aios-platform => legacy}/src/components/layout/ExecutionLogPanel.tsx (92%) create mode 100644 legacy/src/components/layout/Header.tsx rename {aios-platform => legacy}/src/components/layout/MobileNav.tsx (94%) rename {src => legacy/src}/components/layout/ProjectTabs.tsx (100%) create mode 100644 legacy/src/components/layout/Sidebar.tsx rename {src => legacy/src}/components/layout/StatusBar.tsx (100%) create mode 100644 legacy/src/components/layout/index.ts rename {src => legacy/src}/components/mermaidcn/mermaid.tsx (100%) rename {src => legacy/src}/components/mermaidcn/zoom-pan.tsx (100%) rename {src => legacy/src}/components/monitor/ActivityFeed.tsx (100%) rename {aios-platform => legacy}/src/components/monitor/AgentStatusCards.tsx (61%) rename {aios-platform => legacy}/src/components/monitor/AlertBanner.tsx (67%) rename {src => legacy/src}/components/monitor/CommandPanel.tsx (100%) create mode 100644 legacy/src/components/monitor/ConnectionStatus.tsx rename {src => legacy/src}/components/monitor/CurrentToolIndicator.tsx (100%) rename {aios-platform => legacy}/src/components/monitor/EventList.tsx (58%) create mode 100644 legacy/src/components/monitor/LiveMonitor.tsx rename {aios-platform => legacy}/src/components/monitor/MetricsPanel.tsx (51%) rename {src => legacy/src}/components/monitor/MonitorPanel.tsx (100%) rename {src => legacy/src}/components/monitor/MonitorStatus.tsx (100%) rename {src => legacy/src}/components/monitor/index.ts (100%) rename {aios-platform => legacy}/src/components/onboarding/OnboardingTour.tsx (50%) rename {aios-platform => legacy}/src/components/onboarding/index.ts (63%) create mode 100644 legacy/src/components/orchestration/TaskOrchestrator.tsx rename {src => legacy/src}/components/orchestration/index.ts (100%) rename {src => legacy/src}/components/qa/QAMetricsPanel.tsx (100%) rename {src => legacy/src}/components/qa/index.ts (100%) rename {src => legacy/src}/components/roadmap/RoadmapCard.tsx (100%) create mode 100644 legacy/src/components/roadmap/RoadmapView.tsx rename {src => legacy/src}/components/roadmap/index.ts (100%) rename {src => legacy/src}/components/sales-room/ActivityTimeline.tsx (100%) rename {src => legacy/src}/components/sales-room/AgentCard.tsx (100%) rename {src => legacy/src}/components/sales-room/ConversationView.tsx (100%) rename {src => legacy/src}/components/sales-room/KpiCard.tsx (100%) create mode 100644 legacy/src/components/sales-room/SalesRoomPanel.tsx rename {src => legacy/src}/components/sales-room/index.ts (100%) rename {src => legacy/src}/components/sales-room/mock-data.ts (100%) rename {aios-platform => legacy}/src/components/sales-room/types.ts (58%) create mode 100644 legacy/src/components/search/GlobalSearch.tsx rename {aios-platform => legacy}/src/components/search/index.ts (100%) rename {aios-platform => legacy}/src/components/settings/CategoryManager.tsx (85%) rename {aios-platform => legacy}/src/components/settings/MemoryManager.tsx (90%) create mode 100644 legacy/src/components/settings/SettingsPage.tsx rename {src => legacy/src}/components/settings/SettingsPanel.tsx (100%) rename {aios-platform => legacy}/src/components/settings/WorkflowManager.tsx (86%) rename {aios-platform => legacy}/src/components/settings/index.ts (63%) rename {aios-platform => legacy}/src/components/squads/AgentDetailPanel.tsx (83%) rename {aios-platform => legacy}/src/components/squads/ConnectionsMap.tsx (96%) rename {src => legacy/src}/components/squads/SquadAgentChip.tsx (100%) rename {src => legacy/src}/components/squads/SquadAgentDetail.tsx (100%) rename {src => legacy/src}/components/squads/SquadBreadcrumb.tsx (100%) create mode 100644 legacy/src/components/squads/SquadCard.tsx rename {src => legacy/src}/components/squads/SquadConnections.tsx (100%) rename {src => legacy/src}/components/squads/SquadDetail.tsx (100%) rename {src => legacy/src}/components/squads/SquadItemViewer.tsx (100%) rename {aios-platform => legacy}/src/components/squads/SquadOrgChart.tsx (75%) rename {src => legacy/src}/components/squads/SquadOrganogram.tsx (100%) rename {src => legacy/src}/components/squads/SquadSectionGrid.tsx (100%) rename {aios-platform => legacy}/src/components/squads/SquadSelector.tsx (88%) rename {aios-platform => legacy}/src/components/squads/SquadStatsPanel.tsx (80%) rename {src => legacy/src}/components/squads/SquadTaskCard.tsx (100%) rename {src => legacy/src}/components/squads/SquadTierTree.tsx (100%) rename {src => legacy/src}/components/squads/SquadsPanel.tsx (100%) rename {src => legacy/src}/components/squads/WorkflowDiagram.tsx (100%) create mode 100644 legacy/src/components/squads/index.ts create mode 100644 legacy/src/components/stories/StoryCard.tsx create mode 100644 legacy/src/components/stories/StoryCreateModal.tsx create mode 100644 legacy/src/components/stories/StoryDetailModal.tsx rename {src => legacy/src}/components/stories/StoryEditModal.tsx (100%) rename {aios-platform => legacy}/src/components/stories/StoryList.tsx (53%) create mode 100644 legacy/src/components/stories/index.ts rename {src => legacy/src}/components/terminal/TerminalOutput.tsx (100%) rename {src => legacy/src}/components/terminal/index.ts (100%) create mode 100644 legacy/src/components/terminals/TerminalCard.tsx rename {src => legacy/src}/components/terminals/TerminalGrid.tsx (100%) create mode 100644 legacy/src/components/terminals/TerminalOutput.tsx rename {src => legacy/src}/components/terminals/TerminalStream.tsx (100%) create mode 100644 legacy/src/components/terminals/TerminalTabs.tsx create mode 100644 legacy/src/components/terminals/TerminalsView.tsx rename {src => legacy/src}/components/terminals/index.ts (100%) create mode 100644 legacy/src/components/ui/AioxLogo.tsx rename {aios-platform => legacy}/src/components/ui/EmptyState.tsx (93%) rename {aios-platform => legacy}/src/components/ui/ErrorBoundary.tsx (89%) rename {src => legacy/src}/components/ui/GlassAvatar.tsx (100%) rename {aios-platform => legacy}/src/components/ui/KeyboardShortcuts.tsx (65%) rename {aios-platform => legacy}/src/components/ui/MatrixEffects.tsx (90%) rename {aios-platform => legacy}/src/components/ui/NetworkStatus.tsx (63%) create mode 100644 legacy/src/components/ui/PageLoader.tsx rename {aios-platform => legacy}/src/components/ui/Ripple.tsx (93%) rename {aios-platform => legacy}/src/components/ui/SkipLinks.tsx (50%) rename {aios-platform => legacy}/src/components/ui/SuccessFeedback.tsx (84%) rename {aios-platform => legacy}/src/components/ui/ThemeToggle.tsx (84%) rename {aios-platform => legacy}/src/components/ui/Toast.tsx (60%) rename {src => legacy/src}/components/ui/avatar.tsx (100%) rename {src => legacy/src}/components/ui/badge.tsx (100%) rename {src => legacy/src}/components/ui/button.tsx (100%) rename {src => legacy/src}/components/ui/card.tsx (100%) rename {src => legacy/src}/components/ui/context-menu.tsx (100%) rename {src => legacy/src}/components/ui/dialog.tsx (100%) rename {src => legacy/src}/components/ui/fab.tsx (100%) rename {src => legacy/src}/components/ui/icon.tsx (100%) rename {src => legacy/src}/components/ui/input.tsx (100%) rename {src => legacy/src}/components/ui/markdown-renderer.tsx (100%) rename {src => legacy/src}/components/ui/progress-bar.tsx (100%) rename {src => legacy/src}/components/ui/section-label.tsx (100%) rename {src => legacy/src}/components/ui/select.tsx (100%) rename {src => legacy/src}/components/ui/separator.tsx (100%) rename {src => legacy/src}/components/ui/skeleton.tsx (100%) rename {src => legacy/src}/components/ui/sonner.tsx (100%) rename {src => legacy/src}/components/ui/status-badge.tsx (100%) rename {src => legacy/src}/components/ui/status-dot.tsx (100%) rename {src => legacy/src}/components/ui/switch.tsx (100%) rename {src => legacy/src}/components/ui/tabs.tsx (100%) rename {src => legacy/src}/components/ui/tag.tsx (100%) rename {src => legacy/src}/components/ui/textarea.tsx (100%) rename {src => legacy/src}/components/ui/tooltip.tsx (100%) rename {aios-platform => legacy}/src/components/workflow/WorkflowCanvas.tsx (67%) create mode 100644 legacy/src/components/workflow/WorkflowExecutionLive.tsx rename {aios-platform => legacy}/src/components/workflow/WorkflowMissionDetail.tsx (83%) rename {aios-platform => legacy}/src/components/workflow/WorkflowSidebar.tsx (58%) create mode 100644 legacy/src/components/workflow/WorkflowView.tsx rename {aios-platform => legacy}/src/components/workflow/index.ts (78%) rename {aios-platform => legacy}/src/components/workflow/types.ts (98%) rename {aios-platform => legacy}/src/components/world/AgentEmotes.tsx (81%) rename {aios-platform => legacy}/src/components/world/AgentInteractionPanel.tsx (59%) rename {aios-platform => legacy}/src/components/world/AgentSprite.tsx (70%) rename {aios-platform => legacy}/src/components/world/AmbientParticles.tsx (86%) rename {aios-platform => legacy}/src/components/world/EmbeddedScreen.tsx (98%) rename {aios-platform => legacy}/src/components/world/GatherWorld.tsx (86%) rename {aios-platform => legacy}/src/components/world/InteractionLine.tsx (91%) rename {aios-platform => legacy}/src/components/world/InteractiveFurniture.tsx (90%) rename {aios-platform => legacy}/src/components/world/IsometricTile.tsx (95%) rename {aios-platform => legacy}/src/components/world/RoomEnvironment.tsx (93%) rename {aios-platform => legacy}/src/components/world/RoomFurniture.tsx (94%) rename {aios-platform => legacy}/src/components/world/RoomView.tsx (82%) rename {aios-platform => legacy}/src/components/world/SpeechBubble.tsx (89%) rename {aios-platform => legacy}/src/components/world/WorldMap.tsx (93%) create mode 100644 legacy/src/components/world/WorldMinimap.tsx rename {aios-platform => legacy}/src/components/world/WorldNotifications.tsx (50%) rename {aios-platform => legacy}/src/components/world/WorldWorkflowPanel.tsx (70%) create mode 100644 legacy/src/components/world/index.ts rename {aios-platform => legacy}/src/components/world/pixel-sprites.ts (99%) rename {aios-platform => legacy}/src/components/world/useAgentMovement.ts (89%) rename {aios-platform => legacy}/src/components/world/useDayNightCycle.ts (100%) rename {aios-platform => legacy}/src/components/world/useKeyboardNav.ts (96%) rename {aios-platform => legacy}/src/components/world/world-layout.ts (91%) create mode 100644 legacy/src/hooks/index.ts rename {src => legacy/src}/hooks/use-a11y.ts (100%) rename {src => legacy/src}/hooks/use-agents.ts (100%) rename {src => legacy/src}/hooks/use-aios-status.ts (100%) rename {src => legacy/src}/hooks/use-analytics.ts (100%) rename {src => legacy/src}/hooks/use-chat.ts (100%) rename {src => legacy/src}/hooks/use-dashboard.ts (100%) rename {src => legacy/src}/hooks/use-execute.ts (100%) rename {src => legacy/src}/hooks/use-favorites.ts (100%) rename {src => legacy/src}/hooks/use-form-validation.ts (100%) rename {src => legacy/src}/hooks/use-global-keyboard-shortcuts.ts (100%) rename {src => legacy/src}/hooks/use-monitor-events.ts (100%) rename {src => legacy/src}/hooks/use-optimistic.ts (100%) rename {src => legacy/src}/hooks/use-realtime-status.ts (100%) rename {src => legacy/src}/hooks/use-squads.ts (100%) rename {src => legacy/src}/hooks/use-stories.ts (100%) rename {src => legacy/src}/hooks/use-workflows.ts (100%) create mode 100644 legacy/src/lib/domain-taxonomy.ts create mode 100644 legacy/src/lib/icons.ts rename {src => legacy/src}/lib/mermaid-themes.ts (100%) rename {src => legacy/src}/lib/mock-data.ts (100%) rename {src => legacy/src}/lib/squad-api-utils.ts (100%) rename {src => legacy/src}/lib/squad-metadata.ts (100%) rename {src => legacy/src}/lib/supabase-server.ts (100%) rename {src => legacy/src}/lib/task-executor.ts (100%) rename {src => legacy/src}/lib/task-persistence.ts (100%) rename {src => legacy/src}/lib/task-store.ts (100%) rename {aios-platform => legacy}/src/lib/theme.ts (99%) rename {aios-platform => legacy}/src/lib/utils.ts (70%) rename {src => legacy/src}/lib/yaml-to-mermaid.ts (100%) create mode 100644 legacy/src/services/api/agents.ts rename {aios-platform => legacy}/src/services/api/analytics.ts (100%) rename {aios-platform => legacy}/src/services/api/client.ts (98%) rename {aios-platform => legacy}/src/services/api/execute.ts (99%) rename {aios-platform => legacy}/src/services/api/index.ts (77%) create mode 100644 legacy/src/services/api/squads.ts rename {aios-platform => legacy}/src/services/api/tasks.ts (56%) rename {aios-platform => legacy}/src/services/api/workflows.ts (93%) rename {src => legacy/src}/stores/agent-store.ts (100%) rename {src => legacy/src}/stores/bob-store.ts (100%) rename {aios-platform => legacy}/src/stores/categoryStore.ts (97%) rename {aios-platform => legacy}/src/stores/chatStore.ts (96%) rename {aios-platform => legacy}/src/stores/executionLogStore.ts (100%) rename {src => legacy/src}/stores/index.ts (100%) rename {src => legacy/src}/stores/monitor-store.ts (100%) rename {src => legacy/src}/stores/projects-store.ts (100%) create mode 100644 legacy/src/stores/roadmapStore.ts rename {aios-platform => legacy}/src/stores/searchStore.ts (100%) rename {src => legacy/src}/stores/settings-store.ts (100%) rename {src => legacy/src}/stores/squad-store.ts (100%) rename {src => legacy/src}/stores/story-store.ts (100%) rename {src => legacy/src}/stores/terminal-store.ts (100%) create mode 100644 legacy/src/stores/toastStore.ts rename {src => legacy/src}/stores/ui-store.ts (100%) rename {aios-platform => legacy}/src/stores/uiStore.ts (59%) rename {aios-platform => legacy}/src/styles/liquid-glass.css (86%) rename {aios-platform => legacy}/src/styles/tokens/component/badge.css (100%) rename {aios-platform => legacy}/src/styles/tokens/component/button.css (100%) rename {aios-platform => legacy}/src/styles/tokens/component/input.css (100%) rename {aios-platform => legacy}/src/styles/tokens/component/loader.css (100%) rename {aios-platform => legacy}/src/styles/tokens/component/progress.css (100%) rename {aios-platform => legacy}/src/styles/tokens/component/radius.css (100%) rename {aios-platform => legacy}/src/styles/tokens/component/sidebar.css (100%) rename {aios-platform => legacy}/src/styles/tokens/component/status-dot.css (100%) rename {aios-platform => legacy}/src/styles/tokens/component/toast.css (100%) rename {aios-platform => legacy}/src/styles/tokens/index.css (87%) rename {aios-platform => legacy}/src/styles/tokens/primitives/colors.css (78%) rename {aios-platform => legacy}/src/styles/tokens/primitives/sizing.css (100%) create mode 100644 legacy/src/styles/tokens/primitives/spacing.css rename {aios-platform => legacy}/src/styles/tokens/primitives/timing.css (74%) rename {aios-platform => legacy}/src/styles/tokens/primitives/typography.css (60%) rename {aios-platform => legacy}/src/styles/tokens/semantic/colors.css (100%) rename {aios-platform => legacy}/src/styles/tokens/semantic/glass.css (100%) create mode 100644 legacy/src/styles/tokens/themes/aiox.css rename {aios-platform => legacy}/src/styles/tokens/themes/dark.css (100%) rename {aios-platform => legacy}/src/styles/tokens/themes/glass.css (100%) rename {aios-platform => legacy}/src/styles/tokens/themes/matrix.css (100%) rename {src => legacy/src}/types/ansi-to-html.d.ts (100%) rename {aios-platform => legacy}/src/types/index.ts (54%) create mode 100644 legacy/tsconfig.json create mode 100644 legacy/vitest.config.ts rename aios-platform/nginx.conf => nginx.conf (100%) rename {aios-platform/packages => packages}/cli/README.md (100%) rename {aios-platform/packages => packages}/cli/bin/aios.ts (100%) rename {aios-platform/packages => packages}/cli/package.json (100%) rename {aios-platform/patches => patches}/@vitest+browser+4.0.18.patch (100%) rename aios-platform/playwright.config.ts => playwright.config.ts (100%) rename aios-platform/postcss.config.js => postcss.config.js (100%) rename {aios-platform/public => public}/aiox-icon.svg (100%) rename {aios-platform/public => public}/apple-touch-icon.png (100%) rename {aios-platform/public => public}/avatars/academic-research.png (100%) rename {aios-platform/public => public}/avatars/academic-writer.png (100%) rename {aios-platform/public => public}/avatars/agora-chief.png (100%) rename {aios-platform/public => public}/avatars/agora-growth-advisor.png (100%) rename {aios-platform/public => public}/avatars/agora-idea-architect.png (100%) rename {aios-platform/public => public}/avatars/agora-launch-master.png (100%) rename {aios-platform/public => public}/avatars/agora-offer-designer.png (100%) rename {aios-platform/public => public}/avatars/agora-sales-engineer.png (100%) rename {aios-platform/public => public}/avatars/agora-strategist.png (100%) rename {aios-platform/public => public}/avatars/ai-producer.png (100%) rename {aios-platform/public => public}/avatars/aios-core-chief.png (100%) rename {aios-platform/public => public}/avatars/aios-helper.png (100%) rename {aios-platform/public => public}/avatars/aios-master.png (100%) rename {aios-platform/public => public}/avatars/alan-nicolas.png (100%) rename {aios-platform/public => public}/avatars/algorithm-decoder.png (100%) rename {aios-platform/public => public}/avatars/analyst.png (100%) rename {aios-platform/public => public}/avatars/analytics-pulse.png (100%) rename {aios-platform/public => public}/avatars/api-architect.png (100%) rename {aios-platform/public => public}/avatars/architect.png (100%) rename {aios-platform/public => public}/avatars/asmr-scriptwriter.png (100%) rename {aios-platform/public => public}/avatars/brad-frost.png (100%) rename {aios-platform/public => public}/avatars/briefing-backlog.png (100%) rename {aios-platform/public => public}/avatars/citation-manager.png (100%) rename {aios-platform/public => public}/avatars/claude-hopkins.png (100%) rename {aios-platform/public => public}/avatars/clayton-makepeace.png (100%) rename {aios-platform/public => public}/avatars/copywriter.png (100%) rename {aios-platform/public => public}/avatars/copywriting-chief.png (100%) rename {aios-platform/public => public}/avatars/dan-kennedy.png (100%) rename {aios-platform/public => public}/avatars/dan-mall.png (100%) rename {aios-platform/public => public}/avatars/data-engineer.png (100%) rename {aios-platform/public => public}/avatars/dave-malouf.png (100%) rename {aios-platform/public => public}/avatars/david-ogilvy.png (100%) rename {aios-platform/public => public}/avatars/design-chief.png (100%) rename {aios-platform/public => public}/avatars/dev-planner.png (100%) rename {aios-platform/public => public}/avatars/dev.png (100%) rename {aios-platform/public => public}/avatars/devops.png (100%) rename {aios-platform/public => public}/avatars/ds-foundations-lead.png (100%) rename {aios-platform/public => public}/avatars/ds-token-architect.png (100%) rename {aios-platform/public => public}/avatars/eugene-schwartz.png (100%) rename {aios-platform/public => public}/avatars/frank-kern.png (100%) rename {aios-platform/public => public}/avatars/funnelytics-expert.png (100%) rename {aios-platform/public => public}/avatars/gary-bencivenga.png (100%) rename {aios-platform/public => public}/avatars/gary-halbert.png (100%) rename {aios-platform/public => public}/avatars/growth-engine.png (100%) rename {aios-platform/public => public}/avatars/hotmart-expert.png (100%) rename {aios-platform/public => public}/avatars/integration-specialist.png (100%) rename {aios-platform/public => public}/avatars/jason-fladlien.png (100%) rename {aios-platform/public => public}/avatars/joe-sugarman.png (100%) rename {aios-platform/public => public}/avatars/john-caples.png (100%) rename {aios-platform/public => public}/avatars/john-carlton.png (100%) rename {aios-platform/public => public}/avatars/jon-benson.png (100%) rename {aios-platform/public => public}/avatars/knowledge-creator.png (100%) rename {aios-platform/public => public}/avatars/literature-reviewer.png (100%) rename {aios-platform/public => public}/avatars/manifest.json (100%) rename {aios-platform/public => public}/avatars/metadata-pro.png (100%) rename {aios-platform/public => public}/avatars/n8n-expert.png (100%) rename {aios-platform/public => public}/avatars/nano-banana-generator.png (100%) rename {aios-platform/public => public}/avatars/orchestration-expert.png (100%) rename {aios-platform/public => public}/avatars/orquestrador-global.png (100%) rename {aios-platform/public => public}/avatars/pedro-valerio.png (100%) rename {aios-platform/public => public}/avatars/peer-reviewer.png (100%) rename {aios-platform/public => public}/avatars/pm.png (100%) rename {aios-platform/public => public}/avatars/po.png (100%) rename {aios-platform/public => public}/avatars/qa.png (100%) rename {aios-platform/public => public}/avatars/research-chief.png (100%) rename {aios-platform/public => public}/avatars/robert-bly.png (100%) rename {aios-platform/public => public}/avatars/scheduler.png (100%) rename {aios-platform/public => public}/avatars/sendflow-expert.png (100%) rename {aios-platform/public => public}/avatars/shorts-chief.png (100%) rename {aios-platform/public => public}/avatars/sm.png (100%) rename {aios-platform/public => public}/avatars/squad-chief.png (100%) rename {aios-platform/public => public}/avatars/squad-creator.png (100%) rename {aios-platform/public => public}/avatars/squads/academic-research.png (100%) rename {aios-platform/public => public}/avatars/squads/agora-direct-response.png (100%) rename {aios-platform/public => public}/avatars/squads/aios-core-dev.png (100%) rename {aios-platform/public => public}/avatars/squads/aios-core.png (100%) rename {aios-platform/public => public}/avatars/squads/aios-development.png (100%) rename {aios-platform/public => public}/avatars/squads/asmr-shorts.png (100%) rename {aios-platform/public => public}/avatars/squads/clone.png (100%) rename {aios-platform/public => public}/avatars/squads/copywriting.png (100%) rename {aios-platform/public => public}/avatars/squads/design.png (100%) rename {aios-platform/public => public}/avatars/squads/squad-creator-pro.png (100%) rename {aios-platform/public => public}/avatars/stefan-georgi.png (100%) rename {aios-platform/public => public}/avatars/storybook-expert.png (100%) rename {aios-platform/public => public}/avatars/tag-manager-expert.png (100%) rename {aios-platform/public => public}/avatars/thiago-finch.png (100%) rename {aios-platform/public => public}/avatars/thumb-creator.png (100%) rename {aios-platform/public => public}/avatars/todd-brown.png (100%) rename {aios-platform/public => public}/avatars/trend-hunter.png (100%) rename {aios-platform/public => public}/avatars/ux-design-expert.png (100%) rename {aios-platform/public => public}/avatars/victor-schwab.png (100%) rename {aios-platform/public => public}/avatars/waha-expert.png (100%) rename {aios-platform/public => public}/favicon-16x16.png (100%) rename {aios-platform/public => public}/favicon-32x32.png (100%) rename {aios-platform/public => public}/favicon.ico (100%) rename {aios-platform/public => public}/icon.svg (100%) rename {aios-platform/public => public}/pwa-192x192.png (100%) rename {aios-platform/public => public}/pwa-512x512.png (100%) rename {aios-platform/public => public}/vite.svg (100%) rename {aios-platform/scripts => scripts}/aiox-audit-screenshots.mjs (100%) rename {aios-platform/scripts => scripts}/check-registry-sync.sh (100%) rename {aios-platform/scripts => scripts}/dev-full.sh (100%) rename {aios-platform/scripts => scripts}/edge-tts-server.py (100%) rename {aios-platform/scripts => scripts}/generate-agent-avatars.ts (100%) rename {aios-platform/scripts => scripts}/generate-aios-registry.ts (100%) rename {aios-platform/scripts => scripts}/generate-clone-avatars.ts (100%) rename {aios-platform/scripts => scripts}/generate-pwa-icons.mjs (100%) rename {aios-platform/scripts => scripts}/test-gemini-live.mjs (100%) rename {aios-platform/scripts => scripts}/test-gemini-ptt.mjs (100%) rename {aios-platform/scripts => scripts}/validate-brandbook-tokens.ts (100%) rename {aios-platform/src => src}/App.tsx (100%) rename {aios-platform/src => src}/__tests__/orchestration-e2e.test.ts (100%) rename {aios-platform/src => src}/components/__tests__/kanban-squads.test.tsx (100%) rename {aios-platform/src => src}/components/agents-monitor/AgentActivityTimeline.stories.tsx (100%) rename {aios-platform/src => src}/components/agents-monitor/AgentActivityTimeline.tsx (100%) rename {aios-platform/src => src}/components/agents-monitor/AgentMonitorCard.stories.tsx (100%) rename {aios-platform/src => src}/components/agents-monitor/AgentMonitorCard.tsx (100%) rename {aios-platform/src => src}/components/agents-monitor/AgentPerformanceStats.stories.tsx (100%) rename {aios-platform/src => src}/components/agents-monitor/AgentPerformanceStats.tsx (100%) rename {aios-platform/src => src}/components/agents-monitor/AgentsMonitor.stories.tsx (100%) rename {aios-platform/src => src}/components/agents-monitor/AgentsMonitor.tsx (100%) rename {aios-platform/src => src}/components/agents-monitor/__tests__/agents-monitor.test.tsx (100%) rename {aios-platform/src => src}/components/agents/AgentCard.stories.tsx (100%) rename {aios-platform/src => src}/components/agents/AgentExplorer.stories.tsx (100%) rename {aios-platform/src => src}/components/agents/AgentList.stories.tsx (100%) rename {aios-platform/src => src}/components/agents/AgentProfile.stories.tsx (100%) rename {aios-platform/src => src}/components/agents/AgentProfileExpanded.stories.tsx (100%) rename {aios-platform/src => src}/components/agents/AgentProfileModal.stories.tsx (100%) rename {aios-platform/src => src}/components/agents/AgentSkills.stories.tsx (100%) rename {aios-platform/src => src}/components/agents/FavoritesRecents.stories.tsx (100%) rename {aios-platform/src => src}/components/bob/AgentActivityCard.stories.tsx (100%) rename {aios-platform/src => src}/components/bob/AgentActivityCard.tsx (100%) rename {aios-platform/src => src}/components/bob/BobOrchestration.stories.tsx (100%) rename {aios-platform/src => src}/components/bob/BobOrchestration.tsx (100%) rename {aios-platform/src => src}/components/bob/ExecutionLog.stories.tsx (100%) rename {aios-platform/src => src}/components/bob/PipelineVisualizer.stories.tsx (100%) rename {aios-platform/src => src}/components/bob/PipelineVisualizer.tsx (100%) rename {aios-platform/src => src}/components/bob/SurfaceAlerts.stories.tsx (100%) rename {aios-platform/src => src}/components/bob/SurfaceAlerts.tsx (100%) rename {aios-platform/src => src}/components/chat/ChatContainer.stories.tsx (100%) rename {aios-platform/src => src}/components/chat/ChatConversationPanel.tsx (100%) rename {aios-platform/src => src}/components/chat/ChatHeader.tsx (100%) rename {aios-platform/src => src}/components/chat/ChatInput.stories.tsx (100%) rename {aios-platform/src => src}/components/chat/CommandsModal.tsx (100%) rename {aios-platform/src => src}/components/chat/ConversationHistory.stories.tsx (100%) rename {aios-platform/src => src}/components/chat/EmptyChat.tsx (100%) rename {aios-platform/src => src}/components/chat/ExportChat.stories.tsx (100%) rename {aios-platform/src => src}/components/chat/MarkdownRenderer.stories.tsx (100%) rename {aios-platform/src => src}/components/chat/MermaidDiagram.tsx (100%) rename {aios-platform/src => src}/components/chat/MessageBubble.stories.tsx (100%) rename {aios-platform/src => src}/components/chat/SlashCommandMenu.tsx (100%) rename {aios-platform/src => src}/components/chat/VirtualizedMessageList.stories.tsx (100%) rename {aios-platform/src => src}/components/chat/WelcomeMessage.tsx (100%) rename {aios-platform/src => src}/components/chat/__tests__/ChatInput.test.tsx (100%) rename {aios-platform/src => src}/components/chat/__tests__/chat-components.test.tsx (100%) rename {aios-platform/src => src}/components/chat/chat-types.ts (100%) rename {aios-platform/src => src}/components/chat/chatSuggestions.ts (100%) rename {aios-platform/src => src}/components/command-palette/CommandPalette.stories.tsx (100%) rename {aios-platform/src => src}/components/command-palette/CommandPalette.tsx (100%) rename {aios-platform/src => src}/components/context/ContextView.stories.tsx (100%) rename {aios-platform/src => src}/components/context/ContextView.tsx (100%) rename {aios-platform/src => src}/components/dashboard/AgentsTab.tsx (100%) rename {aios-platform/src => src}/components/dashboard/Charts.stories.tsx (100%) rename {aios-platform/src => src}/components/dashboard/CockpitDashboard.stories.tsx (100%) rename {aios-platform/src => src}/components/dashboard/CockpitDashboard.tsx (100%) rename {aios-platform/src => src}/components/dashboard/CostsTab.tsx (100%) rename {aios-platform/src => src}/components/dashboard/DashboardHelpers.tsx (100%) rename {aios-platform/src => src}/components/dashboard/DashboardOverview.stories.tsx (100%) rename {aios-platform/src => src}/components/dashboard/DashboardWorkspace.stories.tsx (100%) rename {aios-platform/src => src}/components/dashboard/DashboardWorkspace.tsx (100%) rename {aios-platform/src => src}/components/dashboard/LiveMetricCard.tsx (100%) rename {aios-platform/src => src}/components/dashboard/MCPTab.tsx (100%) rename {aios-platform/src => src}/components/dashboard/OverviewTab.tsx (100%) rename {aios-platform/src => src}/components/dashboard/RegistryQuickAccess.tsx (100%) rename {aios-platform/src => src}/components/dashboard/SystemTab.tsx (100%) rename {aios-platform/src => src}/components/dashboard/WidgetCustomizer.tsx (100%) rename {aios-platform/src => src}/components/dashboard/__tests__/dashboard-components.test.tsx (100%) rename {aios-platform/src => src}/components/dashboard/__tests__/dashboard-helpers.test.tsx (100%) rename {aios-platform/src => src}/components/dashboard/__tests__/dashboard-tabs.test.tsx (100%) rename {aios-platform/src => src}/components/dashboard/dashboard-icons.tsx (100%) rename {aios-platform/src => src}/components/engine/CronJobEditor.tsx (100%) rename {aios-platform/src => src}/components/engine/EngineEventFeed.tsx (100%) rename {aios-platform/src => src}/components/engine/EngineWorkspace.tsx (100%) rename {aios-platform/src => src}/components/engine/ExecuteAgentForm.tsx (100%) rename {aios-platform/src => src}/components/engine/JobDetailModal.tsx (100%) rename {aios-platform/src => src}/components/engine/JobLogsViewer.tsx (100%) rename {aios-platform/src => src}/components/engine/MemoryBrowser.tsx (100%) rename {aios-platform/src => src}/components/engine/WorkflowTriggerModal.tsx (100%) rename {aios-platform/src => src}/components/engine/__tests__/CronJobEditor.test.tsx (100%) rename {aios-platform/src => src}/components/engine/__tests__/EngineEventFeed.test.tsx (100%) rename {aios-platform/src => src}/components/engine/__tests__/EngineWorkspace.test.tsx (100%) rename {aios-platform/src => src}/components/engine/__tests__/ExecuteAgentForm.test.tsx (100%) rename {aios-platform/src => src}/components/engine/__tests__/JobDetailModal.test.tsx (100%) rename {aios-platform/src => src}/components/engine/__tests__/WorkflowTriggerModal.test.tsx (100%) rename {aios-platform/src => src}/components/engine/index.ts (100%) rename {aios-platform/src => src}/components/github/GitHubView.stories.tsx (100%) rename {aios-platform/src => src}/components/github/GitHubView.tsx (100%) rename {aios-platform/src => src}/components/insights/InsightsView.stories.tsx (100%) rename {aios-platform/src => src}/components/insights/InsightsView.tsx (100%) rename {aios-platform/src => src}/components/kanban/KanbanBoard.stories.tsx (100%) rename {aios-platform/src => src}/components/kanban/KanbanColumn.stories.tsx (100%) rename {aios-platform/src => src}/components/kanban/StoryCard.stories.tsx (100%) rename {aios-platform/src => src}/components/kanban/StoryCard.tsx (100%) rename {aios-platform/src => src}/components/kanban/StoryCreateModal.stories.tsx (100%) rename {aios-platform/src => src}/components/kanban/StoryCreateModal.tsx (100%) rename {aios-platform/src => src}/components/kanban/StoryDetailModal.stories.tsx (100%) rename {aios-platform/src => src}/components/kanban/StoryDetailModal.tsx (100%) rename {aios-platform/src => src}/components/knowledge/KnowledgeContentViewer.tsx (100%) rename {aios-platform/src => src}/components/knowledge/KnowledgeFileExplorer.tsx (100%) rename {aios-platform/src => src}/components/knowledge/KnowledgeGraph.stories.tsx (100%) rename {aios-platform/src => src}/components/knowledge/KnowledgeGraph.tsx (100%) rename {aios-platform/src => src}/components/knowledge/KnowledgeSearch.stories.tsx (100%) rename {aios-platform/src => src}/components/knowledge/KnowledgeSearch.tsx (100%) rename {aios-platform/src => src}/components/knowledge/KnowledgeView.stories.tsx (100%) rename {aios-platform/src => src}/components/knowledge/KnowledgeView.tsx (100%) rename {aios-platform/src => src}/components/knowledge/index.ts (100%) rename {aios-platform/src => src}/components/layout/ActivityMetricsPanel.tsx (100%) rename {aios-platform/src => src}/components/layout/ActivityPanel.stories.tsx (100%) rename {aios-platform/src => src}/components/layout/ActivitySection.tsx (100%) rename {aios-platform/src => src}/components/layout/ActivityStatusCards.tsx (100%) rename {aios-platform/src => src}/components/layout/AgentCommandsPanel.tsx (100%) rename {aios-platform/src => src}/components/layout/AgentInfoCard.tsx (100%) rename {aios-platform/src => src}/components/layout/AppLayout.stories.tsx (100%) rename {aios-platform/src => src}/components/layout/ExecutionLogPanel.stories.tsx (100%) rename {aios-platform/src => src}/components/layout/ExternalToolsPanel.tsx (100%) rename {aios-platform/src => src}/components/layout/Header.stories.tsx (100%) rename {aios-platform/src => src}/components/layout/MessageHistory.tsx (100%) rename {aios-platform/src => src}/components/layout/MobileNav.stories.tsx (100%) rename {aios-platform/src => src}/components/layout/OrchestrationActivityPanel.tsx (100%) rename {aios-platform/src => src}/components/layout/Sidebar.stories.tsx (100%) rename {aios-platform/src => src}/components/layout/__tests__/layout-components.test.tsx (100%) rename {aios-platform/src => src}/components/layout/activity-panel-icons.tsx (100%) rename {aios-platform/src => src}/components/layout/activity-panel-types.ts (100%) rename {aios-platform/src => src}/components/monitor/ActivityTimeline.tsx (100%) rename {aios-platform/src => src}/components/monitor/AgentStatusCards.stories.tsx (100%) rename {aios-platform/src => src}/components/monitor/AlertBanner.stories.tsx (100%) rename {aios-platform/src => src}/components/monitor/ConnectionStatus.stories.tsx (100%) rename {aios-platform/src => src}/components/monitor/EventList.stories.tsx (100%) rename {aios-platform/src => src}/components/monitor/LiveMonitor.stories.tsx (100%) rename {aios-platform/src => src}/components/monitor/MetricsPanel.stories.tsx (100%) rename {aios-platform/src => src}/components/monitor/MonitorWorkspace.stories.tsx (100%) rename {aios-platform/src => src}/components/monitor/MonitorWorkspace.tsx (100%) rename {aios-platform/src => src}/components/monitor/__tests__/monitor-components.test.tsx (100%) rename {aios-platform/src => src}/components/onboarding/CinematicIntro.tsx (100%) rename {aios-platform/src => src}/components/onboarding/OnboardingTour.stories.tsx (100%) rename {aios-platform/src => src}/components/orchestration/AgentOutputCard.tsx (100%) rename {aios-platform/src => src}/components/orchestration/OrchestrationPanels.tsx (100%) rename {aios-platform/src => src}/components/orchestration/OrchestrationTemplates.tsx (100%) rename {aios-platform/src => src}/components/orchestration/OrchestrationWidgets.tsx (100%) rename {aios-platform/src => src}/components/orchestration/PlanApprovalCard.tsx (100%) rename {aios-platform/src => src}/components/orchestration/TaskOrchestrator.stories.tsx (100%) rename {aios-platform/src => src}/components/orchestration/__tests__/orchestration-types.test.ts (100%) rename {aios-platform/src => src}/components/orchestration/orchestration-types.ts (100%) rename {aios-platform/src => src}/components/project-tabs/ProjectTabs.stories.tsx (100%) rename {aios-platform/src => src}/components/project-tabs/ProjectTabs.tsx (100%) rename {aios-platform/src => src}/components/qa/QAMetrics.stories.tsx (100%) rename {aios-platform/src => src}/components/qa/QAMetrics.tsx (100%) rename {aios-platform/src => src}/components/registry/AgentDirectory.stories.tsx (100%) rename {aios-platform/src => src}/components/registry/AgentDirectory.tsx (100%) rename {aios-platform/src => src}/components/registry/AuthorityMatrix.stories.tsx (100%) rename {aios-platform/src => src}/components/registry/AuthorityMatrix.tsx (100%) rename {aios-platform/src => src}/components/registry/HandoffVisualization.stories.tsx (100%) rename {aios-platform/src => src}/components/registry/HandoffVisualization.tsx (100%) rename {aios-platform/src => src}/components/registry/TaskCatalog.stories.tsx (100%) rename {aios-platform/src => src}/components/registry/TaskCatalog.tsx (100%) rename {aios-platform/src => src}/components/registry/WorkflowCatalog.stories.tsx (100%) rename {aios-platform/src => src}/components/registry/WorkflowCatalog.tsx (100%) rename {aios-platform/src => src}/components/registry/__tests__/registry-components.test.tsx (100%) rename {aios-platform/src => src}/components/roadmap/RoadmapView.stories.tsx (100%) rename {aios-platform/src => src}/components/sales-room/intelligence.ts (100%) rename {aios-platform/src => src}/components/sales-room/seed.ts (100%) rename {aios-platform/src => src}/components/sales-room/simulation.ts (100%) rename {aios-platform/src => src}/components/sales-room/store.ts (100%) rename {aios-platform/src => src}/components/sales-room/useLiveData.ts (100%) rename {aios-platform/src => src}/components/sales-room/useWhatsApp.ts (100%) rename {aios-platform/src => src}/components/search/GlobalSearch.stories.tsx (100%) rename {aios-platform/src => src}/components/settings/APISettings.tsx (100%) rename {aios-platform/src => src}/components/settings/AboutSettings.tsx (100%) rename {aios-platform/src => src}/components/settings/AppearanceSettings.tsx (100%) rename {aios-platform/src => src}/components/settings/CategoryManager.stories.tsx (100%) rename {aios-platform/src => src}/components/settings/DashboardSettings.tsx (100%) rename {aios-platform/src => src}/components/settings/MemoryManager.stories.tsx (100%) rename {aios-platform/src => src}/components/settings/NotificationSettings.tsx (100%) rename {aios-platform/src => src}/components/settings/PrivacySettings.tsx (100%) rename {aios-platform/src => src}/components/settings/ProfileSettings.tsx (100%) rename {aios-platform/src => src}/components/settings/SettingsHelpers.tsx (100%) rename {aios-platform/src => src}/components/settings/SettingsPage.stories.tsx (100%) rename {aios-platform/src => src}/components/settings/WorkflowManager.stories.tsx (100%) rename {aios-platform/src => src}/components/settings/__tests__/CategoryManager.test.tsx (100%) rename {aios-platform/src => src}/components/settings/__tests__/MemoryManager.test.tsx (100%) rename {aios-platform/src => src}/components/settings/__tests__/SettingsPage.test.tsx (100%) rename {aios-platform/src => src}/components/settings/__tests__/WorkflowManager.test.tsx (100%) rename {aios-platform/src => src}/components/share/SharedTaskView.tsx (100%) rename {aios-platform/src => src}/components/squads-view/SquadsView.stories.tsx (100%) rename {aios-platform/src => src}/components/squads-view/SquadsView.tsx (100%) rename {aios-platform/src => src}/components/squads/AgentDetailPanel.stories.tsx (100%) rename {aios-platform/src => src}/components/squads/ConnectionsMap.stories.tsx (100%) rename {aios-platform/src => src}/components/squads/SquadCard.stories.tsx (100%) rename {aios-platform/src => src}/components/squads/SquadOrgChart.stories.tsx (100%) rename {aios-platform/src => src}/components/squads/SquadSelector.stories.tsx (100%) rename {aios-platform/src => src}/components/squads/SquadStatsPanel.stories.tsx (100%) rename {aios-platform/src => src}/components/status-bar/StatusBar.stories.tsx (100%) rename {aios-platform/src => src}/components/status-bar/StatusBar.tsx (100%) rename {aios-platform/src => src}/components/stories/StoryCard.stories.tsx (100%) rename {aios-platform/src => src}/components/stories/StoryCreateModal.stories.tsx (100%) rename {aios-platform/src => src}/components/stories/StoryDetailModal.stories.tsx (100%) rename {aios-platform/src => src}/components/stories/StoryList.stories.tsx (100%) rename {aios-platform/src => src}/components/stories/StoryWorkspace.tsx (100%) rename {aios-platform/src => src}/components/stories/__tests__/stories-components.test.tsx (100%) rename {aios-platform/src => src}/components/terminals/TerminalCard.stories.tsx (100%) rename {aios-platform/src => src}/components/terminals/TerminalOutput.stories.tsx (100%) rename {aios-platform/src => src}/components/terminals/TerminalTabs.stories.tsx (100%) rename {aios-platform/src => src}/components/terminals/TerminalsView.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/AioxLogo.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/Avatar.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/Avatar.tsx (100%) rename {aios-platform/src => src}/components/ui/Badge.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/Badge.tsx (100%) rename {aios-platform/src => src}/components/ui/Celebration.tsx (100%) rename {aios-platform/src => src}/components/ui/ContextMenu.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/ContextMenu.tsx (100%) rename {aios-platform/src => src}/components/ui/Dialog.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/Dialog.tsx (100%) rename {aios-platform/src => src}/components/ui/DiffViewer.tsx (100%) rename {aios-platform/src => src}/components/ui/EmptyState.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/ErrorBoundary.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/FocusModeIndicator.tsx (100%) rename {aios-platform/src => src}/components/ui/GlassButton.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/GlassButton.tsx (100%) rename {aios-platform/src => src}/components/ui/GlassCard.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/GlassCard.tsx (100%) rename {aios-platform/src => src}/components/ui/GlassInput.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/GlassInput.tsx (100%) rename {aios-platform/src => src}/components/ui/KeyboardShortcuts.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/LanguageToggle.tsx (100%) rename {aios-platform/src => src}/components/ui/MatrixEffects.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/NetworkStatus.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/NotificationCenter.tsx (100%) rename {aios-platform/src => src}/components/ui/PWAUpdatePrompt.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/PWAUpdatePrompt.tsx (100%) rename {aios-platform/src => src}/components/ui/PageLoader.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/PresenceAvatars.tsx (100%) rename {aios-platform/src => src}/components/ui/ProgressBar.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/ProgressBar.tsx (100%) rename {aios-platform/src => src}/components/ui/Ripple.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/SectionLabel.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/SectionLabel.tsx (100%) rename {aios-platform/src => src}/components/ui/ShortcutHint.tsx (100%) rename {aios-platform/src => src}/components/ui/Skeleton.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/Skeleton.tsx (100%) rename {aios-platform/src => src}/components/ui/SkipLinks.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/StatusDot.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/StatusDot.tsx (100%) rename {aios-platform/src => src}/components/ui/SuccessFeedback.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/ThemeToggle.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/Toast.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/__tests__/Avatar.test.tsx (100%) rename {aios-platform/src => src}/components/ui/__tests__/Badge.test.tsx (100%) rename {aios-platform/src => src}/components/ui/__tests__/ContextMenu.test.tsx (100%) rename {aios-platform/src => src}/components/ui/__tests__/Dialog.test.tsx (100%) rename {aios-platform/src => src}/components/ui/__tests__/DiffViewer.test.tsx (100%) rename {aios-platform/src => src}/components/ui/__tests__/EmptyState.test.tsx (100%) rename {aios-platform/src => src}/components/ui/__tests__/ErrorBoundary.test.tsx (100%) rename {aios-platform/src => src}/components/ui/__tests__/GlassButton.test.tsx (100%) rename {aios-platform/src => src}/components/ui/__tests__/GlassCard.test.tsx (100%) rename {aios-platform/src => src}/components/ui/__tests__/GlassInput.test.tsx (100%) rename {aios-platform/src => src}/components/ui/__tests__/NotificationCenter.test.tsx (100%) rename {aios-platform/src => src}/components/ui/__tests__/ProgressBar.test.tsx (100%) rename {aios-platform/src => src}/components/ui/__tests__/Skeleton.test.tsx (100%) rename {aios-platform/src => src}/components/ui/__tests__/StatusDot.test.tsx (100%) rename {aios-platform/src => src}/components/ui/__tests__/Toast.test.tsx (100%) rename {aios-platform/src => src}/components/ui/__tests__/a11y.test.tsx (100%) rename {aios-platform/src => src}/components/ui/__tests__/ui-components.test.tsx (100%) rename {aios-platform/src => src}/components/ui/cockpit/CockpitAlert.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/cockpit/CockpitAlert.tsx (100%) rename {aios-platform/src => src}/components/ui/cockpit/CockpitBadge.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/cockpit/CockpitBadge.tsx (100%) rename {aios-platform/src => src}/components/ui/cockpit/CockpitButton.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/cockpit/CockpitButton.tsx (100%) rename {aios-platform/src => src}/components/ui/cockpit/CockpitFooterBar.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/cockpit/CockpitFooterBar.tsx (100%) rename {aios-platform/src => src}/components/ui/cockpit/CockpitKpiCard.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/cockpit/CockpitKpiCard.tsx (100%) rename {aios-platform/src => src}/components/ui/cockpit/CockpitSectionDivider.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/cockpit/CockpitSectionDivider.tsx (100%) rename {aios-platform/src => src}/components/ui/cockpit/CockpitSpinner.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/cockpit/CockpitSpinner.tsx (100%) rename {aios-platform/src => src}/components/ui/cockpit/CockpitStatusIndicator.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/cockpit/CockpitStatusIndicator.tsx (100%) rename {aios-platform/src => src}/components/ui/cockpit/CockpitTickerStrip.stories.tsx (100%) rename {aios-platform/src => src}/components/ui/cockpit/CockpitTickerStrip.tsx (100%) rename {aios-platform/src => src}/components/ui/cockpit/index.ts (100%) rename {aios-platform/src => src}/components/ui/index.ts (100%) rename {aios-platform/src => src}/components/voice/GeminiVoiceControls.tsx (100%) rename {aios-platform/src => src}/components/voice/GlobalVoiceFAB.tsx (100%) rename {aios-platform/src => src}/components/voice/GlobalVoiceProvider.tsx (100%) rename {aios-platform/src => src}/components/voice/VoiceControls.tsx (100%) rename {aios-platform/src => src}/components/voice/VoiceMode.tsx (100%) rename {aios-platform/src => src}/components/voice/VoiceOrb.tsx (100%) rename {aios-platform/src => src}/components/voice/VoiceSettings.tsx (100%) rename {aios-platform/src => src}/components/voice/VoiceTranscript.tsx (100%) rename {aios-platform/src => src}/components/voice/VoiceWaveform.tsx (100%) rename {aios-platform/src => src}/components/voice/__tests__/GeminiVoiceControls.test.tsx (100%) rename {aios-platform/src => src}/components/voice/__tests__/VoiceControls.test.tsx (100%) rename {aios-platform/src => src}/components/voice/__tests__/VoiceSettings.test.tsx (100%) rename {aios-platform/src => src}/components/voice/__tests__/VoiceTranscript.test.tsx (100%) rename {aios-platform/src => src}/components/voice/__tests__/VoiceWaveform.test.tsx (100%) rename {aios-platform/src => src}/components/voice/index.ts (100%) rename {aios-platform/src => src}/components/workflow/NodeDetailPanel.tsx (100%) rename {aios-platform/src => src}/components/workflow/WorkflowCanvas.stories.tsx (100%) rename {aios-platform/src => src}/components/workflow/WorkflowDialogs.tsx (100%) rename {aios-platform/src => src}/components/workflow/WorkflowExecutionDetails.tsx (100%) rename {aios-platform/src => src}/components/workflow/WorkflowExecutionLive.stories.tsx (100%) rename {aios-platform/src => src}/components/workflow/WorkflowExecutionSidebar.tsx (100%) rename {aios-platform/src => src}/components/workflow/WorkflowIcons.tsx (100%) rename {aios-platform/src => src}/components/workflow/WorkflowListView.tsx (100%) rename {aios-platform/src => src}/components/workflow/WorkflowMissionDetail.stories.tsx (100%) rename {aios-platform/src => src}/components/workflow/WorkflowSidebar.stories.tsx (100%) rename {aios-platform/src => src}/components/workflow/WorkflowView.stories.tsx (100%) rename {aios-platform/src => src}/components/workflow/__tests__/workflow-helpers.test.ts (100%) rename {aios-platform/src => src}/components/workflow/workflow-execution-constants.ts (100%) rename {aios-platform/src => src}/components/workflow/workflow-execution-helpers.ts (100%) rename {aios-platform/src => src}/components/workflow/workflow-execution-icons.tsx (100%) rename {aios-platform/src => src}/components/workflow/workflow-execution-types.ts (100%) rename {aios-platform/src => src}/components/workflow/workflow-mock-data.ts (100%) rename {aios-platform/src => src}/components/workflow/workflow-utils.ts (100%) rename {aios-platform/src => src}/components/world/AgentEmotes.stories.tsx (100%) rename {aios-platform/src => src}/components/world/AgentInteractionPanel.stories.tsx (100%) rename {aios-platform/src => src}/components/world/AgentSprite.stories.tsx (100%) rename {aios-platform/src => src}/components/world/AmbientParticles.stories.tsx (100%) rename {aios-platform/src => src}/components/world/DomainContext.tsx (100%) rename {aios-platform/src => src}/components/world/EmbeddedScreen.stories.tsx (100%) rename {aios-platform/src => src}/components/world/GatherWorld.stories.tsx (100%) rename {aios-platform/src => src}/components/world/InteractionLine.stories.tsx (100%) rename {aios-platform/src => src}/components/world/InteractiveFurniture.stories.tsx (100%) rename {aios-platform/src => src}/components/world/IsometricTile.stories.tsx (100%) rename {aios-platform/src => src}/components/world/LiveSpeechBubble.tsx (100%) rename {aios-platform/src => src}/components/world/RoomEnvironment.stories.tsx (100%) rename {aios-platform/src => src}/components/world/RoomFurniture.stories.tsx (100%) rename {aios-platform/src => src}/components/world/RoomView.stories.tsx (100%) rename {aios-platform/src => src}/components/world/SpeechBubble.stories.tsx (100%) rename {aios-platform/src => src}/components/world/WorldMap.stories.tsx (100%) rename {aios-platform/src => src}/components/world/WorldMinimap.stories.tsx (100%) rename {aios-platform/src => src}/components/world/WorldNotifications.stories.tsx (100%) rename {aios-platform/src => src}/components/world/WorldWorkflowPanel.stories.tsx (100%) rename {aios-platform/src => src}/components/world/useThemedDomains.ts (100%) rename {aios-platform/src => src}/data/__tests__/aios-registry.test.ts (100%) rename {aios-platform/src => src}/data/aios-registry.generated.ts (100%) rename {aios-platform/src => src}/data/registry-types.ts (100%) rename {aios-platform/src => src}/hooks/__tests__/useA11y.test.ts (100%) rename {aios-platform/src => src}/hooks/__tests__/useAnalytics.test.ts (100%) rename {aios-platform/src => src}/hooks/__tests__/useChatAndStories.test.ts (100%) rename {aios-platform/src => src}/hooks/__tests__/useEngine.test.ts (100%) rename {aios-platform/src => src}/hooks/__tests__/useExecuteAndDashboard.test.ts (100%) rename {aios-platform/src => src}/hooks/__tests__/useExport.test.ts (100%) rename {aios-platform/src => src}/hooks/__tests__/useFavorites.test.ts (100%) rename {aios-platform/src => src}/hooks/__tests__/useFormValidation.test.ts (100%) rename {aios-platform/src => src}/hooks/__tests__/useGlobalKeyboardShortcuts.test.ts (100%) rename {aios-platform/src => src}/hooks/__tests__/useI18n.test.ts (100%) rename {aios-platform/src => src}/hooks/__tests__/useKnowledge.test.ts (100%) rename {aios-platform/src => src}/hooks/__tests__/useOptimistic.test.ts (100%) rename {aios-platform/src => src}/hooks/__tests__/useSound.test.ts (100%) rename {aios-platform/src => src}/hooks/__tests__/useSquadsAndAgents.test.ts (100%) rename {aios-platform/src => src}/hooks/__tests__/useTaskHistory.test.ts (100%) rename {aios-platform/src => src}/hooks/__tests__/useTaskLiveMission.test.ts (100%) rename {aios-platform/src => src}/hooks/__tests__/useTaskReplay.test.ts (100%) rename {aios-platform/src => src}/hooks/__tests__/useUrlSync.test.ts (100%) rename {aios-platform/src => src}/hooks/__tests__/useWorkflows.test.ts (100%) rename {aios-platform/src => src}/hooks/useA11y.ts (100%) rename {aios-platform/src => src}/hooks/useAgents.ts (100%) rename {aios-platform/src => src}/hooks/useAnalytics.ts (100%) rename {aios-platform/src => src}/hooks/useAudioCapture.ts (100%) rename {aios-platform/src => src}/hooks/useChat.ts (100%) rename {aios-platform/src => src}/hooks/useDashboard.ts (100%) rename {aios-platform/src => src}/hooks/useEngine.ts (100%) rename {aios-platform/src => src}/hooks/useExecute.ts (100%) rename {aios-platform/src => src}/hooks/useExport.ts (100%) rename {aios-platform/src => src}/hooks/useFavorites.ts (100%) rename {aios-platform/src => src}/hooks/useFormValidation.ts (100%) rename {aios-platform/src => src}/hooks/useGeminiLive.ts (100%) rename {aios-platform/src => src}/hooks/useGlobalKeyboardShortcuts.ts (100%) rename {aios-platform/src => src}/hooks/useI18n.ts (100%) rename {aios-platform/src => src}/hooks/useKnowledge.ts (100%) rename {aios-platform/src => src}/hooks/useOptimistic.ts (100%) rename {aios-platform/src => src}/hooks/useSound.ts (100%) rename {aios-platform/src => src}/hooks/useSpeechRecognition.ts (100%) rename {aios-platform/src => src}/hooks/useSpeechSynthesis.ts (100%) rename {aios-platform/src => src}/hooks/useSquads.ts (100%) rename {aios-platform/src => src}/hooks/useStories.ts (100%) rename {aios-platform/src => src}/hooks/useTTS.ts (100%) rename {aios-platform/src => src}/hooks/useTaskHistory.ts (100%) rename {aios-platform/src => src}/hooks/useTaskLiveMission.ts (100%) rename {aios-platform/src => src}/hooks/useTaskReplay.ts (100%) rename {aios-platform/src => src}/hooks/useUrlSync.ts (100%) rename {aios-platform/src => src}/hooks/useVoiceMode.ts (100%) rename {aios-platform/src => src}/hooks/useVoiceVisualization.ts (100%) rename {aios-platform/src => src}/hooks/useWorkflows.ts (100%) rename {aios-platform/src => src}/index.css (100%) rename {aios-platform/src => src}/lib/__tests__/agent-colors.test.ts (100%) rename {aios-platform/src => src}/lib/__tests__/taskExport.test.ts (100%) rename {aios-platform/src => src}/lib/__tests__/taskStateToMission.test.ts (100%) rename {aios-platform/src => src}/lib/agent-avatars.ts (100%) rename {aios-platform/src => src}/lib/agent-colors.ts (100%) rename {aios-platform/src => src}/lib/audio-effects.ts (100%) rename {aios-platform/src => src}/lib/connection.ts (100%) rename {aios-platform/src => src}/lib/safeStorage.ts (100%) rename {aios-platform/src => src}/lib/supabase.ts (100%) rename {aios-platform/src => src}/lib/taskExport.ts (100%) rename {aios-platform/src => src}/lib/taskStateToLiveExecution.ts (100%) rename {aios-platform/src => src}/lib/taskStateToMission.ts (100%) rename {aios-platform/src => src}/main.tsx (100%) rename {aios-platform/src => src}/mocks/chat-demo-seed.ts (100%) rename {aios-platform/src => src}/mocks/index.ts (100%) rename {aios-platform/src => src}/mocks/squads.ts (100%) rename {aios-platform/src => src}/mocks/terminals.ts (100%) rename {aios-platform/src => src}/services/__tests__/agents-api.test.ts (100%) rename {aios-platform/src => src}/services/__tests__/analytics-api.test.ts (100%) rename {aios-platform/src => src}/services/__tests__/api-client.test.ts (100%) rename {aios-platform/src => src}/services/__tests__/engine-api.test.ts (100%) rename {aios-platform/src => src}/services/__tests__/execute-api.test.ts (100%) rename {aios-platform/src => src}/services/__tests__/offline-manager.test.ts (100%) rename {aios-platform/src => src}/services/__tests__/squads-api.test.ts (100%) rename {aios-platform/src => src}/services/__tests__/supabase-tasks.test.ts (100%) rename {aios-platform/src => src}/services/__tests__/tasks-api.test.ts (100%) rename {aios-platform/src => src}/services/__tests__/voice-task-router.test.ts (100%) rename {aios-platform/src => src}/services/__tests__/websocket-manager.test.ts (100%) rename {aios-platform/src => src}/services/__tests__/workflows-api.test.ts (100%) rename {aios-platform/src => src}/services/api/engine.ts (100%) rename {aios-platform/src => src}/services/offline/OfflineManager.ts (100%) rename {aios-platform/src => src}/services/offline/index.ts (100%) rename {aios-platform/src => src}/services/supabase/tasks.ts (100%) rename {aios-platform/src => src}/services/voice-task-router.ts (100%) rename {aios-platform/src => src}/services/websocket/WebSocketManager.ts (100%) rename {aios-platform/src => src}/services/websocket/index.ts (100%) rename {aios-platform/src => src}/stores/__tests__/agentActivityStore.expanded.test.ts (100%) rename {aios-platform/src => src}/stores/__tests__/agentActivityStore.test.ts (100%) rename {aios-platform/src => src}/stores/__tests__/bobStore.test.ts (100%) rename {aios-platform/src => src}/stores/__tests__/categoryStore.test.ts (100%) rename {aios-platform/src => src}/stores/__tests__/chatStore.test.ts (100%) rename {aios-platform/src => src}/stores/__tests__/dashboardWidgetStore.test.ts (100%) rename {aios-platform/src => src}/stores/__tests__/executionLogStore.test.ts (100%) rename {aios-platform/src => src}/stores/__tests__/monitorStore.test.ts (100%) rename {aios-platform/src => src}/stores/__tests__/notificationPrefsStore.test.ts (100%) rename {aios-platform/src => src}/stores/__tests__/orchestrationStore.test.ts (100%) rename {aios-platform/src => src}/stores/__tests__/presenceStore.test.ts (100%) rename {aios-platform/src => src}/stores/__tests__/projectStore.test.ts (100%) rename {aios-platform/src => src}/stores/__tests__/roadmapStore.test.ts (100%) rename {aios-platform/src => src}/stores/__tests__/searchStore.test.ts (100%) rename {aios-platform/src => src}/stores/__tests__/settingsStore.test.ts (100%) rename {aios-platform/src => src}/stores/__tests__/storyStore.test.ts (100%) rename {aios-platform/src => src}/stores/__tests__/terminalStore.test.ts (100%) rename {aios-platform/src => src}/stores/__tests__/toastStore.expanded.test.ts (100%) rename {aios-platform/src => src}/stores/__tests__/toastStore.test.ts (100%) rename {aios-platform/src => src}/stores/__tests__/uiStore.expanded.test.ts (100%) rename {aios-platform/src => src}/stores/__tests__/uiStore.test.ts (100%) rename {aios-platform/src => src}/stores/__tests__/voiceStore.test.ts (100%) rename {aios-platform/src => src}/stores/agentActivityStore.ts (100%) rename {aios-platform/src => src}/stores/bobStore.ts (100%) rename {aios-platform/src => src}/stores/dashboardWidgetStore.ts (100%) rename {aios-platform/src => src}/stores/monitorStore.ts (100%) rename {aios-platform/src => src}/stores/notificationPrefsStore.ts (100%) rename {aios-platform/src => src}/stores/orchestrationStore.ts (100%) rename {aios-platform/src => src}/stores/presenceStore.ts (100%) rename {aios-platform/src => src}/stores/projectStore.ts (100%) rename {aios-platform/src => src}/stores/settingsStore.ts (100%) rename {aios-platform/src => src}/stores/storyStore.ts (100%) rename {aios-platform/src => src}/stores/terminalStore.ts (100%) rename {aios-platform/src => src}/stores/voiceStore.ts (100%) rename {aios-platform/src => src}/styles/fonts/aiox-fonts.css (100%) rename {aios-platform/src => src}/styles/light-mode-compat.css (100%) rename {aios-platform/src => src}/styles/tokens/themes/aiox-animations.css (100%) rename {aios-platform/src => src}/styles/tokens/themes/aiox-components.css (100%) rename {aios-platform/src => src}/styles/tokens/themes/aiox-patterns.css (100%) rename {aios-platform/src => src}/test/mocks/pwa-register.ts (100%) rename {aios-platform/src => src}/test/setup.test.ts (100%) rename {aios-platform/src => src}/test/setup.ts (100%) rename {aios-platform/src => src}/test/test-utils.tsx (100%) rename {aios-platform/src => src}/test/vitest-axe.d.ts (100%) rename {aios-platform/src => src}/vite-env.d.ts (100%) rename {aios-platform/supabase => supabase}/.gitignore (100%) rename {aios-platform/supabase => supabase}/config.toml (100%) rename aios-platform/tailwind.config.ts => tailwind.config.ts (100%) rename {aios-platform/test-results => test-results}/.last-run.json (100%) rename aios-platform/tsconfig.app.json => tsconfig.app.json (100%) rename aios-platform/tsconfig.node.json => tsconfig.node.json (100%) rename aios-platform/vercel.json => vercel.json (100%) rename aios-platform/vite.config.ts => vite.config.ts (100%) rename aios-platform/vitest.shims.d.ts => vitest.shims.d.ts (100%) diff --git a/aios-platform/.dockerignore b/.dockerignore similarity index 100% rename from aios-platform/.dockerignore rename to .dockerignore diff --git a/aios-platform/.env.example b/.env.example similarity index 100% rename from aios-platform/.env.example rename to .env.example diff --git a/aios-platform/.env.local.example b/.env.local.example similarity index 100% rename from aios-platform/.env.local.example rename to .env.local.example diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1f870759..3b4a0189 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,122 +10,115 @@ env: NODE_VERSION: '20' jobs: - # ─── Next.js Dashboard ────────────────────────────────── - nextjs-typecheck: - name: 'Next.js: TypeCheck' + lint: + name: Lint runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: 'npm' - - run: npm ci - - run: npx tsc --noEmit - nextjs-build: - name: 'Next.js: Build' + - name: Install dependencies + run: npm ci + + - name: Run ESLint + run: npm run lint + + typecheck: + name: Type Check runs-on: ubuntu-latest - needs: [nextjs-typecheck] steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: 'npm' - - run: npm ci - - run: npm run build - # ─── Vite SPA (aios-platform) ────────────────────────── - spa-lint: - name: 'SPA: Lint' + - name: Install dependencies + run: npm ci + + - name: Run TypeScript + run: npx tsc --noEmit + + test: + name: Test runs-on: ubuntu-latest - defaults: - run: - working-directory: aios-platform steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: 'npm' - cache-dependency-path: aios-platform/package-lock.json - - run: npm ci - - run: npm run lint - spa-typecheck: - name: 'SPA: TypeCheck' - runs-on: ubuntu-latest - defaults: - run: - working-directory: aios-platform - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - name: Install dependencies + run: npm ci + + - name: Run tests with coverage + run: npm run test:coverage + + - name: Upload coverage report + uses: actions/upload-artifact@v4 with: - node-version: ${{ env.NODE_VERSION }} - cache: 'npm' - cache-dependency-path: aios-platform/package-lock.json - - run: npm ci - - run: npx tsc --noEmit + name: coverage-report + path: coverage/ + retention-days: 7 - spa-test: - name: 'SPA: Test (2453 tests)' + registry: + name: Registry Sync Check runs-on: ubuntu-latest - defaults: - run: - working-directory: aios-platform steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: 'npm' - cache-dependency-path: aios-platform/package-lock.json - - run: npm ci - - run: npx vitest run --project unit --reporter=verbose - - name: Upload coverage - if: always() - uses: actions/upload-artifact@v4 - with: - name: spa-coverage - path: aios-platform/coverage/ - retention-days: 7 - spa-build: - name: 'SPA: Build' + - name: Install dependencies + run: npm ci + + - name: Generate registry + run: npm run generate:registry + + - name: Check registry is in sync + run: git diff --exit-code src/data/aios-registry.generated.ts || (echo "::error::Registry is out of sync. Run 'npm run generate:registry' locally and commit." && exit 1) + + build: + name: Build runs-on: ubuntu-latest - needs: [spa-lint, spa-typecheck, spa-test] - defaults: - run: - working-directory: aios-platform + needs: [lint, typecheck, test, registry] steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: 'npm' - cache-dependency-path: aios-platform/package-lock.json - - run: npm ci - - run: npm run build - - name: Build size report - run: | - echo "### Build Size" >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - du -sh dist/ >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - - # ─── Engine (Bun/Hono) ───────────────────────────────── - engine-test: - name: 'Engine: Test (98 tests)' - runs-on: ubuntu-latest - defaults: - run: - working-directory: aios-platform/engine - steps: - - uses: actions/checkout@v4 - - uses: oven-sh/setup-bun@v2 + + - name: Install dependencies + run: npm ci + + - name: Build application + run: npm run build + + - name: Upload build artifacts + uses: actions/upload-artifact@v4 with: - bun-version: latest - - run: bun install - - run: bun test tests/unit/ + name: build + path: dist/ + retention-days: 7 diff --git a/aios-platform/.github/workflows/deploy.yml b/.github/workflows/deploy.yml similarity index 100% rename from aios-platform/.github/workflows/deploy.yml rename to .github/workflows/deploy.yml diff --git a/aios-platform/.github/workflows/pr-check.yml b/.github/workflows/pr-check.yml similarity index 100% rename from aios-platform/.github/workflows/pr-check.yml rename to .github/workflows/pr-check.yml diff --git a/aios-platform/.husky/pre-commit b/.husky/pre-commit similarity index 100% rename from aios-platform/.husky/pre-commit rename to .husky/pre-commit diff --git a/aios-platform/.prettierignore b/.prettierignore similarity index 100% rename from aios-platform/.prettierignore rename to .prettierignore diff --git a/aios-platform/.prettierrc b/.prettierrc similarity index 100% rename from aios-platform/.prettierrc rename to .prettierrc diff --git a/aios-platform/.storybook/api-mocks.ts b/.storybook/api-mocks.ts similarity index 100% rename from aios-platform/.storybook/api-mocks.ts rename to .storybook/api-mocks.ts diff --git a/aios-platform/.storybook/main.ts b/.storybook/main.ts similarity index 100% rename from aios-platform/.storybook/main.ts rename to .storybook/main.ts diff --git a/aios-platform/.storybook/preview.tsx b/.storybook/preview.tsx similarity index 100% rename from aios-platform/.storybook/preview.tsx rename to .storybook/preview.tsx diff --git a/aios-platform/.storybook/vitest.setup.ts b/.storybook/vitest.setup.ts similarity index 100% rename from aios-platform/.storybook/vitest.setup.ts rename to .storybook/vitest.setup.ts diff --git a/aios-platform/CLAUDE.md b/CLAUDE.md similarity index 100% rename from aios-platform/CLAUDE.md rename to CLAUDE.md diff --git a/aios-platform/Dockerfile b/Dockerfile similarity index 100% rename from aios-platform/Dockerfile rename to Dockerfile diff --git a/README.md b/README.md index 6499eb0e..d2e77611 100644 --- a/README.md +++ b/README.md @@ -1,668 +1,73 @@ -# AIOS Dashboard: Observability Extension - -[![Synkra AIOS](https://img.shields.io/badge/Synkra-AIOS-blue.svg)](https://github.com/SynkraAI/aios-core) -[![Licença: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) -[![Status](https://img.shields.io/badge/status-early%20development-orange.svg)]() -[![Contributions Welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg)](https://github.com/SynkraAI/aios-dashboard/issues) - -**Interface visual para observar seu projeto AIOS em tempo real.** - -> 🚧 **FASE INICIAL DE DESENVOLVIMENTO** -> -> Este projeto está em construção ativa. Funcionalidades podem mudar, quebrar ou estar incompletas. -> **Colaborações são muito bem-vindas!** Veja as [issues abertas](https://github.com/SynkraAI/aios-dashboard/issues) ou abra uma nova para sugerir melhorias. - -> ⚠️ **Este projeto é uma extensão OPCIONAL.** O [Synkra AIOS](https://github.com/SynkraAI/aios-core) funciona 100% sem ele. O Dashboard existe apenas para **observar** o que acontece na CLI — ele nunca controla. - ---- - -## O que é o AIOS Dashboard? - -O AIOS Dashboard é uma **interface web** que permite visualizar em tempo real tudo que acontece no seu projeto AIOS: - -- 📋 **Stories** no formato Kanban (arrastar e soltar) -- 🤖 **Agentes** ativos e inativos -- 📡 **Eventos em tempo real** do Claude Code (qual tool está executando, prompts, etc) -- 🔧 **Squads** instalados com seus agentes, tasks e workflows -- 📊 **Insights** e estatísticas do projeto - -### Screenshot das Funcionalidades - -``` -┌─────────────────────────────────────────────────────────────────┐ -│ AIOS Dashboard [Settings] │ -├─────────┬───────────────────────────────────────────────────────┤ -│ │ │ -│ Kanban │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ -│ Monitor │ │ Backlog │ │ Doing │ │ Done │ │ -│ Agents │ ├─────────┤ ├─────────┤ ├─────────┤ │ -│ Squads │ │ Story 1 │ │ Story 3 │ │ Story 5 │ │ -│ Bob │ │ Story 2 │ │ Story 4 │ │ Story 6 │ │ -│ ... │ └─────────┘ └─────────┘ └─────────┘ │ -│ │ │ -└─────────┴───────────────────────────────────────────────────────┘ -``` - ---- - -## Funcionalidades - -| View | O que faz | -|------|-----------| -| **Kanban** | Board de stories com drag-and-drop entre colunas (Backlog, Doing, Done) | -| **Monitor** | Feed em tempo real de eventos do Claude Code (tools, prompts, erros) | -| **Agents** | Lista de agentes AIOS (@dev, @qa, @architect, etc) — ativos e em standby | -| **Squads** | Organograma visual dos squads instalados com drill-down para agentes e tasks | -| **Bob** | Acompanha execução do Bob Orchestrator (pipeline de desenvolvimento autônomo) | -| **Roadmap** | Visualização de features planejadas | -| **GitHub** | Integração com GitHub (PRs, issues) | -| **Insights** | Estatísticas e métricas do projeto | -| **Terminals** | Grid de múltiplos terminais | -| **Settings** | Configurações do dashboard | - ---- - -## Requisito: Projeto com AIOS Instalado - -O Dashboard **precisa estar dentro de um projeto com AIOS instalado** porque ele lê os documentos do framework. - -``` -meu-projeto/ # ← Você executa comandos daqui -├── .aios-core/ # Core do framework (OBRIGATÓRIO) -│ └── development/ -│ ├── agents/ # Agentes que aparecem na view "Agents" -│ ├── tasks/ # Tasks dos squads -│ └── templates/ -├── docs/ -│ └── stories/ # Stories que aparecem no "Kanban" -│ ├── active/ -│ └── completed/ -├── squads/ # Squads que aparecem na view "Squads" -│ ├── meu-squad/ -│ └── outro-squad/ -├── apps/ -│ └── dashboard/ # ← Dashboard instalado aqui -└── package.json -``` - -**Sem o AIOS instalado, o dashboard mostrará telas vazias.** - ---- - -## Instalação Passo a Passo - -> **IMPORTANTE:** Todos os comandos são executados a partir da **raiz do seu projeto** (`meu-projeto/`). - -### Pré-requisitos - -Antes de começar, você precisa ter: - -- ✅ [Node.js](https://nodejs.org/) versão 18 ou superior -- ✅ [Bun](https://bun.sh/) (para o servidor de eventos) -- ✅ [Synkra AIOS](https://github.com/SynkraAI/aios-core) instalado no projeto - -### Passo 1: Instale o AIOS (se ainda não tiver) - -```bash -# Opção A: Criar novo projeto com AIOS -npx aios-core init meu-projeto -cd meu-projeto - -# Opção B: Instalar em projeto existente -cd meu-projeto -npx aios-core install -``` - -### Passo 2: Clone o Dashboard - -```bash -# Cria a pasta apps/ e clona o dashboard -mkdir -p apps -git clone https://github.com/SynkraAI/aios-dashboard.git apps/dashboard -``` - -### Passo 3: Instale as dependências - -```bash -# Dependências do Dashboard (Next.js) -npm install --prefix apps/dashboard - -# Dependências do Server (Bun) -cd apps/dashboard/server -bun install -cd ../../.. -``` - -### Passo 4: Inicie o Server de Eventos - -O server captura eventos em tempo real do Claude Code. - -```bash -cd apps/dashboard/server -bun run dev -``` - -Você verá: -``` -🚀 Monitor Server running on http://localhost:4001 -``` - -> **Deixe este terminal aberto** e abra um novo para o próximo passo. - -### Passo 5: Inicie o Dashboard - -Em um **novo terminal**: - -```bash -npm run dev --prefix apps/dashboard -``` - -Você verá: -``` -▲ Next.js 14.x.x -- Local: http://localhost:3000 -``` - -### Passo 6: Acesse o Dashboard - -Abra no navegador: **http://localhost:3000** - -🎉 **Pronto!** Você verá o dashboard com suas stories, squads e agentes. - ---- - -## Passo Extra: Eventos em Tempo Real - -Para ver eventos do Claude Code em tempo real (qual ferramenta está executando, prompts, etc), instale os hooks: - -```bash -apps/dashboard/scripts/install-hooks.sh -``` - -Isso instala hooks em `~/.claude/hooks/` que enviam eventos para o dashboard. - -**Eventos capturados:** -- `PreToolUse` — Antes de executar uma ferramenta -- `PostToolUse` — Após executar (com resultado) -- `UserPromptSubmit` — Quando você envia um prompt -- `Stop` — Quando Claude para -- `SubagentStop` — Quando um subagent (Task) termina - ---- - -## Comandos Rápidos - -Cole estes comandos no terminal (execute da raiz do projeto): - -```bash -# ===== INSTALAÇÃO ===== -mkdir -p apps -git clone https://github.com/SynkraAI/aios-dashboard.git apps/dashboard -npm install --prefix apps/dashboard -cd apps/dashboard/server && bun install && cd ../../.. - -# ===== INICIAR (2 terminais) ===== - -# Terminal 1: Server de eventos -cd apps/dashboard/server && bun run dev - -# Terminal 2: Dashboard -npm run dev --prefix apps/dashboard - -# ===== EXTRAS ===== - -# Instalar hooks para eventos em tempo real -apps/dashboard/scripts/install-hooks.sh - -# Verificar se server está rodando -curl http://localhost:4001/health -``` - ---- - -## Estrutura do Projeto - -``` -apps/dashboard/ -├── src/ -│ ├── app/ # Páginas Next.js -│ ├── components/ -│ │ ├── kanban/ # Board de stories -│ │ ├── monitor/ # Feed de eventos em tempo real -│ │ ├── agents/ # Visualização de agentes -│ │ ├── squads/ # Organograma de squads -│ │ ├── bob/ # Orquestração Bob -│ │ └── ui/ # Componentes de UI -│ ├── hooks/ # React hooks customizados -│ ├── stores/ # Estado global (Zustand) -│ └── lib/ # Utilitários -├── server/ # Servidor de eventos (Bun) -│ ├── server.ts # Servidor principal -│ ├── db.ts # Banco SQLite -│ └── types.ts # Tipos TypeScript -└── scripts/ - └── install-hooks.sh # Instalador de hooks -``` - ---- - -## Posição na Arquitetura AIOS - -O Synkra AIOS segue uma hierarquia clara: - -``` -CLI First → Observability Second → UI Third -``` - -| Camada | Prioridade | O que faz | -| ----------------- | ---------- | --------------------------------------------------- | -| **CLI** | Máxima | Onde a inteligência vive. Toda execução e decisões. | -| **Observability** | Secundária | Observar o que acontece no CLI em tempo real. | -| **UI** | Terciária | Visualizações e gestão pontual. | - -**Este Dashboard opera na camada de Observability.** Ele observa, mas nunca controla. - ---- - -## API do Server - -O server expõe endpoints para o dashboard consumir: - -| Endpoint | Método | Descrição | -| -------------------------- | --------- | ------------------------------- | -| `POST /events` | POST | Recebe eventos dos hooks | -| `GET /events/recent` | GET | Últimos eventos | -| `GET /sessions` | GET | Lista sessões do Claude Code | -| `GET /stats` | GET | Estatísticas agregadas | -| `WS /stream` | WebSocket | Stream de eventos em tempo real | -| `GET /health` | GET | Verifica se server está ok | - ---- - -## Configuração - -Crie o arquivo `apps/dashboard/.env.local`: - -```bash -# Porta do server de eventos -MONITOR_PORT=4001 - -# Onde salvar o banco SQLite -MONITOR_DB=~/.aios/monitor/events.db - -# URL do WebSocket (usado pelo dashboard) -NEXT_PUBLIC_MONITOR_WS_URL=ws://localhost:4001/stream -``` - ---- - -## Troubleshooting - -### "Dashboard mostra telas vazias" - -O AIOS não está instalado. Verifique: - -```bash -ls -la .aios-core/ # Deve existir -ls -la docs/stories/ # Deve ter arquivos -ls -la squads/ # Deve ter squads -``` - -Se não existir, instale o AIOS: `npx aios-core install` - -### "Monitor não mostra eventos" - -1. Server está rodando? - ```bash - curl http://localhost:4001/health - # Deve retornar: {"status":"ok"} - ``` - -2. Hooks estão instalados? - ```bash - ls ~/.claude/hooks/ - # Deve ter arquivos .py - ``` - -3. Reinstale os hooks: - ```bash - apps/dashboard/scripts/install-hooks.sh - ``` - -### "Erro ao iniciar o server" - -Bun não está instalado. Instale em: https://bun.sh - -```bash -curl -fsSL https://bun.sh/install | bash -``` - -### "Porta 3000/4001 em uso" - -Encerre o processo que está usando a porta: - -```bash -# Descobrir qual processo -lsof -i :3000 -lsof -i :4001 - -# Matar o processo (substitua PID) -kill -9 -``` - ---- - -## QA: Verificando se Tudo Funciona - -Após a instalação, execute este checklist para garantir que tudo está funcionando: - -### ✅ Checklist de Verificação - -```bash -# 1. AIOS está instalado? -ls .aios-core/development/agents/ -# ✓ Deve listar arquivos .md (dev.md, qa.md, architect.md, etc) - -# 2. Server está rodando? -curl http://localhost:4001/health -# ✓ Deve retornar: {"status":"ok"} - -# 3. Dashboard está acessível? -curl -s http://localhost:3000 | head -5 -# ✓ Deve retornar HTML - -# 4. Hooks estão instalados? (opcional) -ls ~/.claude/hooks/*.py 2>/dev/null | wc -l -# ✓ Deve retornar número > 0 -``` - -### 🧪 Teste Manual - -1. **Kanban**: Acesse http://localhost:3000 → deve mostrar board com stories -2. **Agents**: Clique em "Agents" → deve listar agentes em standby -3. **Squads**: Clique em "Squads" → deve mostrar organograma de squads -4. **Monitor**: Clique em "Monitor" → deve mostrar status de conexão - -### ❌ Se algo não funcionar - -| Problema | Solução | -|----------|---------| -| Kanban vazio | Verifique se existe `docs/stories/` com arquivos `.md` | -| Agents vazio | Verifique se existe `.aios-core/development/agents/` | -| Squads vazio | Verifique se existe `squads/` com subpastas | -| Monitor desconectado | Verifique se o server está rodando na porta 4001 | - ---- - -## Contribuindo - -Contribuições são muito bem-vindas! Este é um projeto em fase inicial e há muito espaço para melhorias. - -### Tipos de Contribuição - -| Tipo | Descrição | Dificuldade | -|------|-----------|-------------| -| **Bug fixes** | Corrigir problemas reportados | Fácil | -| **Documentação** | Melhorar README, adicionar guias | Fácil | -| **UI/UX** | Melhorar interface, adicionar temas | Médio | -| **Novos componentes** | Adicionar visualizações | Médio | -| **Novas views** | Criar páginas novas no dashboard | Avançado | -| **Server features** | Adicionar endpoints, melhorar performance | Avançado | - -### Contribuindo com AIOS (Recomendado) - -Se você tem o AIOS instalado, use os agentes para ajudar no desenvolvimento: - -#### 🏗️ Para novas features — Use @architect + @dev - -```bash -# 1. Peça ao Architect para planejar -@architect Quero adicionar um gráfico de métricas na view Monitor. - Analise a estrutura atual e sugira a melhor abordagem. - -# 2. Depois peça ao Dev para implementar -@dev Implemente o gráfico de métricas seguindo o plano do Architect. - Use Recharts e siga os padrões existentes em src/components/monitor/ -``` - -#### 🎨 Para melhorias de UI — Use @ux-design-expert + @dev - -```bash -# 1. Peça ao UX Designer para analisar -@ux-design-expert Analise a view Kanban e sugira melhorias de usabilidade. - Considere acessibilidade e mobile. - -# 2. Depois implemente com o Dev -@dev Aplique as melhorias de UX sugeridas no Kanban. -``` - -#### 🐛 Para bugs — Use @qa + @dev - -```bash -# 1. Peça ao QA para investigar -@qa O WebSocket do Monitor desconecta após 5 minutos. - Investigue a causa raiz. - -# 2. Depois corrija com o Dev -@dev Corrija o problema de desconexão do WebSocket identificado pelo QA. -``` - -#### 🚀 Para deploy/PR — Use @devops - -```bash -# Quando terminar, peça ao DevOps para criar o PR -@devops Crie um PR para a branch atual com as mudanças do Monitor. - Inclua descrição detalhada e screenshots. +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## React Compiler + +The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: + +```js +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + + // Remove tseslint.configs.recommended and replace with this + tseslint.configs.recommendedTypeChecked, + // Alternatively, use this for stricter rules + tseslint.configs.strictTypeChecked, + // Optionally, add this for stylistic rules + tseslint.configs.stylisticTypeChecked, + + // Other configs... + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` + +You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: + +```js +// eslint.config.js +import reactX from 'eslint-plugin-react-x' +import reactDom from 'eslint-plugin-react-dom' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + // Enable lint rules for React + reactX.configs['recommended-typescript'], + // Enable lint rules for React DOM + reactDom.configs.recommended, + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) ``` - -#### ✅ Para validação final — Use @qa - -```bash -# Antes de submeter, peça ao QA para revisar -@qa Faça uma revisão completa das mudanças. - Verifique lint, types, testes e funcionamento visual. -``` - ---- - -### Contribuindo sem AIOS (Manual) - -Se preferir contribuir sem usar os agentes: - -#### 1. Fork e Clone - -```bash -# Fork pelo GitHub, depois clone seu fork -git clone https://github.com/SEU_USUARIO/aios-dashboard.git -cd aios-dashboard - -# Adicione o repositório original como upstream -git remote add upstream https://github.com/SynkraAI/aios-dashboard.git -``` - -#### 2. Crie uma Branch - -```bash -git checkout -b feature/minha-nova-feature -``` - -**Convenção de nomes:** - -| Prefixo | Uso | -|---------|-----| -| `feature/` | Nova funcionalidade | -| `fix/` | Correção de bug | -| `docs/` | Documentação | -| `refactor/` | Refatoração de código | -| `ui/` | Melhorias visuais | - -#### 3. Faça suas alterações - -Desenvolva sua feature seguindo os padrões do projeto: - -- **React**: Componentes funcionais com hooks -- **TypeScript**: Tipagem obrigatória -- **Tailwind CSS**: Para estilos -- **Zustand**: Para estado global - -#### 4. Teste localmente - -```bash -# Lint -npm run lint --prefix apps/dashboard - -# Type check -npm run typecheck --prefix apps/dashboard - -# Testes -npm test --prefix apps/dashboard - -# Rode o dashboard e verifique visualmente -npm run dev --prefix apps/dashboard -``` - -#### 5. Commit com mensagem clara - -Usamos [Conventional Commits](https://www.conventionalcommits.org/): - -```bash -# Formato -: - -# Exemplos -git commit -m "feat: add dark mode toggle" -git commit -m "fix: resolve websocket reconnection issue" -git commit -m "docs: improve installation instructions" -git commit -m "ui: improve kanban card hover state" -``` - -**Tipos de commit:** -- `feat` - Nova funcionalidade -- `fix` - Correção de bug -- `docs` - Documentação -- `ui` - Mudanças visuais -- `refactor` - Refatoração -- `test` - Testes -- `chore` - Manutenção - -#### 6. Push e crie o Pull Request - -```bash -# Push para seu fork -git push origin feature/minha-nova-feature -``` - -Depois, abra um Pull Request no GitHub: - -1. Vá para https://github.com/SynkraAI/aios-dashboard -2. Clique em "Pull Requests" → "New Pull Request" -3. Selecione "compare across forks" -4. Selecione seu fork e branch -5. Preencha o template do PR - -### Template de Pull Request - -```markdown -## Descrição - -O que este PR faz? Por que é necessário? - -## Tipo de mudança - -- [ ] Bug fix -- [ ] Nova feature -- [ ] Melhoria de UI -- [ ] Documentação -- [ ] Refatoração - -## Como testar - -1. Passo 1 -2. Passo 2 -3. Resultado esperado - -## Screenshots (se aplicável) - -[Adicione screenshots aqui] - -## Checklist - -- [ ] Meu código segue o estilo do projeto -- [ ] Testei localmente -- [ ] Lint passa sem erros -- [ ] TypeScript compila sem erros -``` - -### Estrutura do Código - -``` -src/ -├── app/ # Páginas (App Router) -├── components/ -│ ├── ui/ # Componentes base (Button, Card, etc) -│ ├── kanban/ # Componentes do Kanban -│ ├── monitor/ # Componentes do Monitor -│ ├── squads/ # Componentes de Squads -│ └── ... -├── hooks/ # React hooks customizados -├── stores/ # Estado global (Zustand) -├── lib/ # Utilitários -└── types/ # Tipos TypeScript -``` - -### Adicionando um Novo Componente - -```tsx -// src/components/meu-componente/MeuComponente.tsx - -'use client'; - -import { memo } from 'react'; -import { cn } from '@/lib/utils'; - -interface MeuComponenteProps { - className?: string; - // ... outras props -} - -export const MeuComponente = memo(function MeuComponente({ - className, - ...props -}: MeuComponenteProps) { - return ( -
- {/* conteúdo */} -
- ); -}); -``` - -### Adicionando uma Nova View - -1. Crie o componente em `src/components/minha-view/` -2. Adicione o case em `src/app/page.tsx` no `ViewContent` -3. Adicione o item na sidebar em `src/components/layout/Sidebar.tsx` -4. Adicione o tipo em `src/types/index.ts` - -### Dicas Importantes - -- **Não quebre o que funciona** — Teste suas mudanças -- **Mantenha PRs pequenos** — Mais fácil de revisar -- **Documente código complexo** — Ajuda outros contribuidores -- **Pergunte antes de grandes mudanças** — Abra uma issue primeiro - -### Obtendo Ajuda - -- **Issues**: [Abrir issue](https://github.com/SynkraAI/aios-dashboard/issues) -- **Discussões**: [Iniciar discussão](https://github.com/SynkraAI/aios-dashboard/discussions) -- **AIOS Core**: [Comunidade AIOS](https://github.com/SynkraAI/aios-core/discussions) - ---- - -## Licença - -MIT - ---- - -Parte do ecossistema [Synkra AIOS](https://github.com/SynkraAI/aios-core) — CLI First, Observability Second, UI Third diff --git a/aios-platform/.github/workflows/ci.yml b/aios-platform/.github/workflows/ci.yml deleted file mode 100644 index 3b4a0189..00000000 --- a/aios-platform/.github/workflows/ci.yml +++ /dev/null @@ -1,124 +0,0 @@ -name: CI - -on: - push: - branches: [main, develop] - pull_request: - branches: [main, develop] - -env: - NODE_VERSION: '20' - -jobs: - lint: - name: Lint - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Run ESLint - run: npm run lint - - typecheck: - name: Type Check - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Run TypeScript - run: npx tsc --noEmit - - test: - name: Test - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Run tests with coverage - run: npm run test:coverage - - - name: Upload coverage report - uses: actions/upload-artifact@v4 - with: - name: coverage-report - path: coverage/ - retention-days: 7 - - registry: - name: Registry Sync Check - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Generate registry - run: npm run generate:registry - - - name: Check registry is in sync - run: git diff --exit-code src/data/aios-registry.generated.ts || (echo "::error::Registry is out of sync. Run 'npm run generate:registry' locally and commit." && exit 1) - - build: - name: Build - runs-on: ubuntu-latest - needs: [lint, typecheck, test, registry] - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Build application - run: npm run build - - - name: Upload build artifacts - uses: actions/upload-artifact@v4 - with: - name: build - path: dist/ - retention-days: 7 diff --git a/aios-platform/README.md b/aios-platform/README.md deleted file mode 100644 index d2e77611..00000000 --- a/aios-platform/README.md +++ /dev/null @@ -1,73 +0,0 @@ -# React + TypeScript + Vite - -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. - -Currently, two official plugins are available: - -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh - -## React Compiler - -The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). - -## Expanding the ESLint configuration - -If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: - -```js -export default defineConfig([ - globalIgnores(['dist']), - { - files: ['**/*.{ts,tsx}'], - extends: [ - // Other configs... - - // Remove tseslint.configs.recommended and replace with this - tseslint.configs.recommendedTypeChecked, - // Alternatively, use this for stricter rules - tseslint.configs.strictTypeChecked, - // Optionally, add this for stylistic rules - tseslint.configs.stylisticTypeChecked, - - // Other configs... - ], - languageOptions: { - parserOptions: { - project: ['./tsconfig.node.json', './tsconfig.app.json'], - tsconfigRootDir: import.meta.dirname, - }, - // other options... - }, - }, -]) -``` - -You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: - -```js -// eslint.config.js -import reactX from 'eslint-plugin-react-x' -import reactDom from 'eslint-plugin-react-dom' - -export default defineConfig([ - globalIgnores(['dist']), - { - files: ['**/*.{ts,tsx}'], - extends: [ - // Other configs... - // Enable lint rules for React - reactX.configs['recommended-typescript'], - // Enable lint rules for React DOM - reactDom.configs.recommended, - ], - languageOptions: { - parserOptions: { - project: ['./tsconfig.node.json', './tsconfig.app.json'], - tsconfigRootDir: import.meta.dirname, - }, - // other options... - }, - }, -]) -``` diff --git a/aios-platform/package.json b/aios-platform/package.json deleted file mode 100644 index ed2028ed..00000000 --- a/aios-platform/package.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "name": "@aios/dashboard", - "private": true, - "version": "0.5.0", - "description": "AIOS Platform Dashboard — Vite + React SPA for AI agent orchestration", - "type": "module", - "scripts": { - "dev": "vite", - "dev:full": "bash scripts/dev-full.sh", - "engine": "cd engine && bun src/index.ts", - "engine:dev": "cd engine && bun --watch src/index.ts", - "engine:project": "cd engine && bun bin/aios-engine.ts", - "aios": "bun packages/cli/bin/aios.ts", - "build": "tsc -b && vite build", - "lint": "eslint .", - "preview": "vite preview", - "test": "vitest", - "test:run": "vitest run", - "test:ui": "vitest --ui", - "test:coverage": "vitest run --coverage", - "lint:fix": "eslint . --fix", - "format": "prettier --write \"src/**/*.{ts,tsx,css,json}\"", - "prepare": "husky || true", - "storybook": "storybook dev -p 6006", - "build-storybook": "storybook build", - "postinstall": "patch-package", - "test:e2e": "playwright test", - "test:e2e:ui": "playwright test --ui", - "test:e2e:headed": "playwright test --headed", - "test:e2e:chromium": "playwright test --project=chromium", - "test:e2e:report": "playwright show-report", - "generate:registry": "npx tsx scripts/generate-aios-registry.ts", - "check:registry": "bash scripts/check-registry-sync.sh" - }, - "lint-staged": { - "*.{ts,tsx}": [ - "eslint --fix", - "prettier --write" - ], - "*.{css,json,md}": [ - "prettier --write" - ] - }, - "dependencies": { - "@dnd-kit/core": "^6.3.1", - "@dnd-kit/sortable": "^10.0.0", - "@dnd-kit/utilities": "^3.2.2", - "@supabase/supabase-js": "^2.98.0", - "@tanstack/react-query": "^5.90.20", - "@tanstack/react-virtual": "^3.13.18", - "@types/react-syntax-highlighter": "^15.5.13", - "ansi-to-html": "^0.7.2", - "autoprefixer": "^10.4.24", - "clsx": "^2.1.1", - "framer-motion": "^11.18.2", - "geist": "^1.7.0", - "lucide-react": "^0.575.0", - "mermaid": "^11.12.3", - "postcss": "^8.5.6", - "react": "^19.2.0", - "react-dom": "^19.2.0", - "react-markdown": "^10.1.0", - "react-syntax-highlighter": "^16.1.0", - "rehype-raw": "^7.0.0", - "remark-gfm": "^4.0.1", - "tailwind-merge": "^3.4.0", - "tailwindcss": "^3.4.19", - "zustand": "^4.5.7" - }, - "overrides": { - "serialize-javascript": "^7.0.4" - }, - "devDependencies": { - "@chromatic-com/storybook": "^5.0.0", - "@eslint/js": "^9.39.1", - "@playwright/test": "^1.58.2", - "@storybook/addon-a11y": "^10.2.6", - "@storybook/addon-docs": "^10.2.6", - "@storybook/addon-onboarding": "^10.2.6", - "@storybook/addon-vitest": "^10.2.6", - "@storybook/react-vite": "^10.2.6", - "@testing-library/jest-dom": "^6.9.1", - "@testing-library/react": "^16.3.2", - "@testing-library/user-event": "^14.6.1", - "@types/node": "^24.10.1", - "@types/react": "^19.2.5", - "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^5.1.1", - "@vitest/browser": "^4.0.18", - "@vitest/browser-playwright": "^4.0.18", - "@vitest/coverage-v8": "^4.0.18", - "@vitest/runner": "^4.0.18", - "eslint": "^9.39.1", - "eslint-plugin-react-hooks": "^7.0.1", - "eslint-plugin-react-refresh": "^0.4.24", - "eslint-plugin-storybook": "^10.2.6", - "globals": "^16.5.0", - "husky": "^9.1.7", - "jsdom": "^28.0.0", - "lint-staged": "^16.2.7", - "patch-package": "^8.0.1", - "playwright": "^1.58.1", - "prettier": "^3.8.1", - "sharp": "^0.34.5", - "storybook": "^10.2.6", - "typescript": "~5.9.3", - "typescript-eslint": "^8.46.4", - "vite": "^7.2.4", - "vite-plugin-pwa": "^1.2.0", - "vitest": "^4.0.18", - "vitest-axe": "^0.1.0", - "workbox-window": "^7.4.0" - } -} diff --git a/aios-platform/src/components/agents/AgentCard.tsx b/aios-platform/src/components/agents/AgentCard.tsx deleted file mode 100644 index 98c73ca3..00000000 --- a/aios-platform/src/components/agents/AgentCard.tsx +++ /dev/null @@ -1,364 +0,0 @@ -import { memo } from 'react'; -import { motion } from 'framer-motion'; -import { GlassCard, Avatar, Badge } from '../ui'; -import { cn, getTierTheme } from '../../lib/utils'; -import { getIconComponent } from '../../lib/icons'; -import { hasAgentAvatar } from '../../lib/agent-avatars'; -import { useFavoritesStore } from '../../hooks/useFavorites'; -import { useUIStore } from '../../stores/uiStore'; -import type { AgentSummary, AgentTier } from '../../types'; -import { getSquadType as getSquadTypeUtil } from '../../types'; - -// Star icon for favorites -const StarIcon = ({ filled }: { filled?: boolean }) => ( - - - -); - -interface AgentCardProps { - agent: AgentSummary; - selected?: boolean; - compact?: boolean; - showTier?: boolean; - highlight?: boolean; - onClick?: () => void; -} - -// Tier gradients are now accessed via getTierTheme().gradient from centralized theme - -export const AgentCard = memo(function AgentCard({ agent, selected, compact = false, showTier = false, highlight = false, onClick }: AgentCardProps) { - const squadType = getSquadTypeUtil(agent.squad); - const { isFavorite, toggleFavorite } = useFavoritesStore(); - // Normalize tier to valid value (0, 1, or 2) - const normalizedTier: AgentTier = (agent.tier === 0 || agent.tier === 1 || agent.tier === 2) ? agent.tier : 2; - const favorited = isFavorite(agent.id); - - const handleFavoriteClick = (e: React.MouseEvent) => { - e.stopPropagation(); - toggleFavorite({ - id: agent.id, - name: agent.name, - squad: agent.squad, - }); - }; - - if (compact) { - return ( - -
- {hasAgentAvatar(agent.name) || hasAgentAvatar(agent.id) ? ( - - ) : agent.icon ? ( -
- {(() => { const Icon = getIconComponent(agent.icon); return ; })()} -
- ) : ( - - )} -
-
-

- {agent.name} -

- {showTier && ( - - T{normalizedTier} - - )} -
-

{agent.title || agent.description}

-
- {/* Favorite button */} - -
-
- ); - } - - return ( - - -
- {hasAgentAvatar(agent.name) || hasAgentAvatar(agent.id) ? ( - - ) : agent.icon ? ( -
- {(() => { const Icon = getIconComponent(agent.icon); return ; })()} -
- ) : ( - - )} - -
-
- {/* Favorite button - positioned top right */} - -
-

{agent.name}

- - {getTierTheme(normalizedTier).label} - -
-

{agent.title}

-
- - {/* When to use - Primary decision helper */} - {(() => { - const isPlaceholder = (text?: string) => - !text || text.startsWith('[') || text.includes('{{') || text.length < 10; - - if (agent.whenToUse) { - return ( -

- {agent.whenToUse} -

- ); - } else if (agent.description && !isPlaceholder(agent.description)) { - return ( -

- {agent.description} -

- ); - } - return null; - })()} - - {/* Commands count */} - {agent.commandCount !== undefined && agent.commandCount > 0 && ( -
- - {agent.commandCount} comandos - -
- )} -
-
-
-
- ); -}); - -// New detailed card for explorer -interface AgentExplorerCardProps { - agent: AgentSummary; - selected?: boolean; - onClick?: () => void; -} - -export const AgentExplorerCard = memo(function AgentExplorerCard({ agent, selected, onClick }: AgentExplorerCardProps) { - const squadType = getSquadTypeUtil(agent.squad); - const { isFavorite, toggleFavorite } = useFavoritesStore(); - const favorited = isFavorite(agent.id); - const isAiox = useUIStore((s) => s.theme) === 'aiox'; - // Normalize tier to valid value (0, 1, or 2) - const normalizedTier: AgentTier = (agent.tier === 0 || agent.tier === 1 || agent.tier === 2) ? agent.tier : 2; - - const handleFavoriteClick = (e: React.MouseEvent) => { - e.stopPropagation(); - toggleFavorite({ - id: agent.id, - name: agent.name, - squad: agent.squad, - }); - }; - - return ( - - {/* Tier indicator */} -
- -
- {/* Icon/Avatar — prioritize generated avatar over icon */} - {hasAgentAvatar(agent.name) || hasAgentAvatar(agent.id) ? ( - - ) : agent.icon ? ( -
- {(() => { const Icon = getIconComponent(agent.icon); return ; })()} -
- ) : ( - - )} - -
- {/* Header */} -
-
-

{agent.name}

-

{agent.title}

-
-
- - {getTierTheme(normalizedTier).label} - - {/* Favorite button */} - -
-
- - {/* When to use - Primary decision text */} - {(() => { - // Helper to check if description is a template placeholder - const isPlaceholder = (text?: string) => - !text || text.startsWith('[') || text.includes('{{') || text.length < 10; - - if (agent.whenToUse) { - return ( -

- {agent.whenToUse} -

- ); - } else if (agent.description && !isPlaceholder(agent.description)) { - return ( -

- {agent.description} -

- ); - } - return null; - })()} - - {/* Footer */} -
- {agent.squad} - {agent.commandCount !== undefined && agent.commandCount > 0 && ( - - {agent.commandCount} cmds - - )} -
-
-
- - ); -}); diff --git a/aios-platform/src/components/bob/ExecutionLog.tsx b/aios-platform/src/components/bob/ExecutionLog.tsx deleted file mode 100644 index 61ccb97d..00000000 --- a/aios-platform/src/components/bob/ExecutionLog.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import { useEffect, useRef } from 'react'; -import { Badge } from '../ui'; -import type { ExecutionLogEntry } from '../../stores/bobStore'; - -const typeBadge: Record = { - info: { label: 'INFO', status: 'online' }, - action: { label: 'ACTION', status: 'success' }, - decision: { label: 'DECISION', status: 'warning' }, - error: { label: 'ERROR', status: 'error' }, -}; - -export default function ExecutionLog({ entries }: { entries: ExecutionLogEntry[] }) { - const scrollRef = useRef(null); - - useEffect(() => { - if (scrollRef.current) { - scrollRef.current.scrollTop = scrollRef.current.scrollHeight; - } - }, [entries.length]); - - if (entries.length === 0) { - return ( -
-

No log entries yet

-
- ); - } - - return ( -
- {entries.map((entry) => { - const badge = typeBadge[entry.type]; - return ( -
- - {new Date(entry.timestamp).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' })} - - - {badge.label} - - {entry.agent} - {entry.message} -
- ); - })} -
- ); -} diff --git a/aios-platform/src/components/chat/ChatContainer.tsx b/aios-platform/src/components/chat/ChatContainer.tsx deleted file mode 100644 index 8d666797..00000000 --- a/aios-platform/src/components/chat/ChatContainer.tsx +++ /dev/null @@ -1,163 +0,0 @@ -import { useState, useRef, useEffect } from 'react'; -import { motion, AnimatePresence } from 'framer-motion'; -import { SmartMessageList } from './VirtualizedMessageList'; -import { ChatInput } from './ChatInput'; -import { ChatConversationPanel } from './ChatConversationPanel'; -import { ChatHeader } from './ChatHeader'; -import { WelcomeMessage } from './WelcomeMessage'; -import { EmptyChat } from './EmptyChat'; -import { useChat } from '../../hooks/useChat'; -import { useChatStore } from '../../stores/chatStore'; -import { useUIStore } from '../../stores/uiStore'; -import { ORCHESTRATION_TRIGGERS } from './chat-types'; - -export function ChatContainer() { - const { - activeSession, - selectedAgent, - isAgentLoading, - isStreaming, - sendMessage, - stopStreaming, - } = useChat(); - const { sessions, activeSessionId, setActiveSession, deleteSession } = useChatStore(); - const { selectedAgentId, setCurrentView } = useUIStore(); - const [chatSidebarOpen, setChatSidebarOpen] = useState(true); - - const messagesEndRef = useRef(null); - const scrollAreaRef = useRef(null); - const [showScrollBtn, setShowScrollBtn] = useState(false); - - // Auto-scroll to bottom on new messages - useEffect(() => { - messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' }); - }, [activeSession?.messages]); - - // Track scroll position for scroll-to-bottom button - useEffect(() => { - const el = scrollAreaRef.current; - if (!el) return; - const onScroll = () => { - const gap = el.scrollHeight - el.scrollTop - el.clientHeight; - setShowScrollBtn(gap > 200); - }; - el.addEventListener('scroll', onScroll, { passive: true }); - return () => el.removeEventListener('scroll', onScroll); - }, []); - - const scrollToBottom = () => { - messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' }); - }; - - // Show loading while agent data is being fetched (prevents flash of EmptyChat) - if (!selectedAgent && isAgentLoading && selectedAgentId) { - return ( -
-
-
- ); - } - - if (!selectedAgent) { - return ; - } - - return ( -
- {/* Conversation Sidebar */} - setChatSidebarOpen(!chatSidebarOpen)} - onSelectSession={(sessionId) => { - const session = sessions.find(s => s.id === sessionId); - if (session) { - setActiveSession(sessionId); - useUIStore.setState({ - selectedSquadId: session.squadId, - selectedAgentId: session.agentId, - }); - } - }} - onDeleteSession={deleteSession} - onNewChat={() => { - useUIStore.setState({ selectedAgentId: null }); - }} - /> - - {/* Main Chat Area */} -
- {/* Chat Header */} - setChatSidebarOpen(!chatSidebarOpen)} - /> - - {/* Messages Area */} -
- {activeSession?.messages && activeSession.messages.length > 0 ? ( -
- -
-
- ) : ( - - )} - - {/* Scroll to bottom floating button */} - - {showScrollBtn && ( - - - - - - Novas mensagens - - )} - -
- - {/* Input Area */} -
- { - // Detect orchestration commands and redirect to TaskOrchestrator - if (ORCHESTRATION_TRIGGERS.some(re => re.test(message.trim()))) { - const demand = message.replace(/^(\/orquestrar|\/orchestrate|@bob)\s*/i, '').trim(); - setCurrentView('bob'); - if (demand) { - sessionStorage.setItem('orchestration-demand', demand); - } - // Store originating session ID so results can be injected back - if (activeSessionId) { - sessionStorage.setItem('orchestration-source-session', activeSessionId); - } - return; - } - sendMessage(message, attachments); - }} - onStop={stopStreaming} - disabled={isStreaming} - isStreaming={isStreaming} - agentName={selectedAgent.name} - /> -
-
- -
- ); -} diff --git a/aios-platform/src/components/chat/MarkdownRenderer.tsx b/aios-platform/src/components/chat/MarkdownRenderer.tsx deleted file mode 100644 index 25edebd9..00000000 --- a/aios-platform/src/components/chat/MarkdownRenderer.tsx +++ /dev/null @@ -1,909 +0,0 @@ -import { useState, useCallback, memo, useMemo, lazy, Suspense, Fragment } from 'react'; -import { createPortal } from 'react-dom'; -import { motion, AnimatePresence } from 'framer-motion'; -import ReactMarkdown from 'react-markdown'; -import remarkGfm from 'remark-gfm'; -import rehypeRaw from 'rehype-raw'; -import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter'; -import { oneDark } from 'react-syntax-highlighter/dist/esm/styles/prism'; -import { cn } from '../../lib/utils'; -import { useUIStore } from '../../stores/uiStore'; - -// Lazy load mermaid diagram renderer (heavy dependency) -const MermaidDiagram = lazy(() => import('./MermaidDiagram')); - -interface MarkdownRendererProps { - content: string; - className?: string; -} - -// --- Pre-processing --- - -function preprocessContent(content: string): string { - let processed = content; - - // Collapse numbered list items where number is on its own line: - // "1.\n**name**" → "1. **name**" - processed = processed.replace(/^(\d+)\.\s*\n+(\s*\*\*)/gm, '$1. $2'); - - // Collapse numbered list items where number is on its own line (no bold): - // "1.\n some text" → "1. some text" - processed = processed.replace(/^(\d+)\.\s*\n+(\s*\S)/gm, '$1. $2'); - - return processed; -} - -// --- Utility: URL detection --- - -const YOUTUBE_REGEX = /(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/(?:watch\?v=|embed\/|shorts\/)|youtu\.be\/)([\w-]{11})(?:\S*)?/; -const VIDEO_EXT_REGEX = /\.(mp4|webm|mov|avi|mkv)(\?.*)?$/i; -const AUDIO_EXT_REGEX = /\.(mp3|wav|ogg|m4a|aac|flac)(\?.*)?$/i; -const LOOM_REGEX = /(?:https?:\/\/)?(?:www\.)?loom\.com\/share\/([\w-]+)/; -const SPOTIFY_REGEX = /(?:https?:\/\/)?open\.spotify\.com\/(track|album|playlist|episode)\/([\w]+)/; -const GIST_REGEX = /(?:https?:\/\/)?gist\.github\.com\/([\w-]+)\/([\w]+)/; - -function getYouTubeId(url: string): string | null { - const match = YOUTUBE_REGEX.exec(url); - return match ? match[1] : null; -} - -function getLoomId(url: string): string | null { - const match = LOOM_REGEX.exec(url); - return match ? match[1] : null; -} - -function isVideoUrl(url: string): boolean { - return VIDEO_EXT_REGEX.test(url); -} - -function isAudioUrl(url: string): boolean { - return AUDIO_EXT_REGEX.test(url); -} - -function getSpotifyInfo(url: string): { type: string; id: string } | null { - const match = SPOTIFY_REGEX.exec(url); - return match ? { type: match[1], id: match[2] } : null; -} - -function getGistInfo(url: string): { user: string; id: string } | null { - const match = GIST_REGEX.exec(url); - return match ? { user: match[1], id: match[2] } : null; -} - -// --- Inline content processing for @mentions and file paths --- - -const AGENT_NAMES = ['dev', 'qa', 'architect', 'pm', 'po', 'sm', 'analyst', 'devops', 'data-engineer', 'aios-master', 'ux-design-expert', 'squad-creator']; -const AGENT_COLORS: Record = { - dev: '#60A5FA', - qa: '#F472B6', - architect: '#A78BFA', - pm: '#34D399', - po: '#FBBF24', - sm: '#FB923C', - analyst: '#2DD4BF', - devops: '#D1FF00', - 'data-engineer': '#818CF8', - 'aios-master': '#F43F5E', - 'ux-design-expert': '#E879F9', - 'squad-creator': '#38BDF8', -}; - -const MENTION_PATTERN = AGENT_NAMES.map(n => n.replace('-', '\\-')).join('|'); -const INLINE_REGEX = new RegExp( - `(@(?:${MENTION_PATTERN})\\b)` + - `|((?:(?:src|docs|packages|scripts|public|\\.\\.)\\/)(?:[\\w./@-]+(?:\\.[\\w]+)?))`, - 'g' -); - -function AgentMention({ name }: { name: string }) { - const color = AGENT_COLORS[name] || '#D1FF00'; - const navigateToAgent = useUIStore((s) => s.navigateToRegistryAgent); - return ( - - ); -} - -function FilePathBadge({ path }: { path: string }) { - return ( - - - - - - {path} - - ); -} - -function processInlineContent(children: React.ReactNode): React.ReactNode { - if (typeof children === 'string') { - return processTextString(children); - } - if (Array.isArray(children)) { - return children.map((child, i) => { - if (typeof child === 'string') { - return {processTextString(child)}; - } - return child; - }); - } - return children; -} - -function processTextString(text: string): React.ReactNode { - const parts: React.ReactNode[] = []; - let lastIndex = 0; - - // Reset regex state - INLINE_REGEX.lastIndex = 0; - let match; - - while ((match = INLINE_REGEX.exec(text)) !== null) { - if (match.index > lastIndex) { - parts.push(text.slice(lastIndex, match.index)); - } - - if (match[1]) { - const agentName = match[1].slice(1); // remove @ - parts.push(); - } else if (match[2]) { - parts.push(); - } - - lastIndex = match.index + match[0].length; - } - - if (lastIndex < text.length) { - parts.push(text.slice(lastIndex)); - } - - return parts.length > 0 ? parts : text; -} - -// --- Copy button --- - -function CopyButton({ code }: { code: string }) { - const [copied, setCopied] = useState(false); - - const handleCopy = useCallback(async () => { - await navigator.clipboard.writeText(code); - setCopied(true); - setTimeout(() => setCopied(false), 2000); - }, [code]); - - return ( - - ); -} - -const CopyIcon = () => ( - - - - -); - -const CheckIcon = () => ( - - - -); - -// --- Code block with syntax highlighting --- - -const CodeBlock = memo(function CodeBlock({ - language, - value, -}: { - language: string; - value: string; -}) { - // Mermaid diagrams - if (language === 'mermaid') { - return ( - -
-
- Renderizando diagrama... -
-
- } - > - -
- ); - } - - // Diff blocks - if (language === 'diff') { - return ; - } - - return ( -
- {language && ( -
- {language} -
- )} - - - {value} - -
- ); -}); - -// --- Diff block renderer --- - -function DiffBlock({ value }: { value: string }) { - const lines = value.split('\n'); - - return ( -
-
- diff -
- -
- {lines.map((line, i) => { - let bg = 'transparent'; - let color = 'rgba(255,255,255,0.7)'; - let prefix = ' '; - - if (line.startsWith('+') && !line.startsWith('+++')) { - bg = 'rgba(34, 197, 94, 0.1)'; - color = '#4ade80'; - prefix = '+'; - } else if (line.startsWith('-') && !line.startsWith('---')) { - bg = 'rgba(239, 68, 68, 0.1)'; - color = '#f87171'; - prefix = '-'; - } else if (line.startsWith('@@')) { - bg = 'rgba(96, 165, 250, 0.08)'; - color = '#60A5FA'; - prefix = '@'; - } else if (line.startsWith('+++') || line.startsWith('---')) { - color = 'rgba(255,255,255,0.4)'; - } - - return ( -
- - {prefix !== ' ' ? '' : ''} - - {line} -
- ); - })} -
-
- ); -} - -// --- Inline code --- - -const InlineCode = ({ children }: { children: React.ReactNode }) => ( - - {children} - -); - -// --- YouTube embed --- - -function YouTubeEmbed({ videoId }: { videoId: string }) { - return ( -
-