diff --git a/frontend/src/components/AgentBar.vue b/frontend/src/components/AgentBar.vue index 0a97332..9570af0 100644 --- a/frontend/src/components/AgentBar.vue +++ b/frontend/src/components/AgentBar.vue @@ -1,57 +1,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{ agent.uiConfig?.shortLabel }} - + :agent="agent" + :status="agentStatuses[agent.id]" + :recording="activeAgentId === agent.id && isRecordingActive" + @click="handleBubbleClick(agent, $event)" + @hold="handleBubbleHold(agent, $event)" + /> - - - - - - - - - - - {{ terminalAgent.uiConfig?.label || terminalAgent.name }} - - - - - - - - - - - ~$ - _ - - - - - - - - - - - - - - - {{ voiceAgent.uiConfig?.shortLabel }} - - Voice - - - - - - - - - - - {{ transcript }} - {{ interimTranscript }} - - Listening... - - - - - - - + diff --git a/frontend/src/components/agent/ChatInput.vue b/frontend/src/components/agent/ChatInput.vue new file mode 100644 index 0000000..a29fd85 --- /dev/null +++ b/frontend/src/components/agent/ChatInput.vue @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/components/agent/ConversationHistory.vue b/frontend/src/components/agent/ConversationHistory.vue new file mode 100644 index 0000000..a9db001 --- /dev/null +++ b/frontend/src/components/agent/ConversationHistory.vue @@ -0,0 +1,185 @@ + + + + + + Historial + {{ mockEntries.length }} + + + + + + {{ entry.role === 'user' ? 'Tú' : agent.uiConfig?.shortLabel || 'AG' }} + + {{ entry.timestamp }} + + + + + + + + + {{ entry.content }} + + + + + + diff --git a/frontend/src/components/agent/FloatBubble.vue b/frontend/src/components/agent/FloatBubble.vue new file mode 100644 index 0000000..21196d0 --- /dev/null +++ b/frontend/src/components/agent/FloatBubble.vue @@ -0,0 +1,572 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ agent.uiConfig?.shortLabel }} + + + + diff --git a/frontend/src/components/agent/PromptBar.vue b/frontend/src/components/agent/PromptBar.vue new file mode 100644 index 0000000..76bc555 --- /dev/null +++ b/frontend/src/components/agent/PromptBar.vue @@ -0,0 +1,443 @@ + + + + + + + + + + + {{ agent.uiConfig?.shortLabel }} + + {{ agent.uiConfig?.label || agent.name }} + + + + + + + + + + + + + {{ msg.content }} + + + + + + + + + {{ msg.content }} + + + + + + + + + + + + + + + + + diff --git a/frontend/src/components/agent/ResponseCard.vue b/frontend/src/components/agent/ResponseCard.vue new file mode 100644 index 0000000..56e2a5a --- /dev/null +++ b/frontend/src/components/agent/ResponseCard.vue @@ -0,0 +1,142 @@ + + + + + + + + + + + + Pensando... + + + + + Agente + + + + + + diff --git a/frontend/src/components/agent/TranscriptCard.vue b/frontend/src/components/agent/TranscriptCard.vue new file mode 100644 index 0000000..fc31eb4 --- /dev/null +++ b/frontend/src/components/agent/TranscriptCard.vue @@ -0,0 +1,113 @@ + + + + + + + Transcribiendo... + + + {{ displayedText }} + | + + + + + diff --git a/frontend/src/types/agent.ts b/frontend/src/types/agent.ts new file mode 100644 index 0000000..939d34f --- /dev/null +++ b/frontend/src/types/agent.ts @@ -0,0 +1,48 @@ +export type ClaudeStatus = + | 'idle' + | 'processing' + | 'toolUse' + | 'toolDone' + | 'reading' + | 'writing' + | 'sessionStart' + | 'subagentStart' + | 'subagentStop' + | 'notification' + | 'permissionRequest' + | 'thinking' + +export interface AgentStatusState { + isProcessing: boolean + isReading: boolean + isWriting: boolean + awaitingPermission: boolean + showToolFlash: boolean + showNotification: boolean + currentTool: string | null +} + +export interface UiConfig { + label: string + shortLabel: string + color: string + gradient: string + terminalBg: string + terminalBorder: string + enabled: boolean +} + +export interface Agent { + id: string + name: string + directory: string + uiConfig: UiConfig | null +} + +export interface ConversationEntry { + id: string + role: 'user' | 'agent' + content: string + timestamp: string + method: 'text' | 'voice' +}