diff --git a/frontend/src/components/FloatingTranscriptDebug.vue b/frontend/src/components/FloatingTranscriptDebug.vue index 479cfe4..302a992 100644 --- a/frontend/src/components/FloatingTranscriptDebug.vue +++ b/frontend/src/components/FloatingTranscriptDebug.vue @@ -30,9 +30,12 @@ const { error, isRealtime, processing, + ephemeral, + terminalReady, init, switchAgent, selectSession, + createNewSession, disconnectRealtime, sendPrompt } = useTranscriptDebug() @@ -335,6 +338,10 @@ function handleSend(message: string) { sendPrompt(message) } +function handleCreateSession() { + createNewSession() +} + // ============================================================================ // WATCHERS // ============================================================================ @@ -485,6 +492,8 @@ onBeforeUnmount(() => { v-if="conversation" :conversation="conversation" :processing="processing" + :terminal-ready="terminalReady" + :terminal="ephemeral" :show-selector="showSelector" :agents="agents" :selected-agent="selectedAgent" @@ -494,6 +503,7 @@ onBeforeUnmount(() => { @send="handleSend" @switch-agent="handleAgentSwitch" @select-session="handleSessionSelect" + @create-session="handleCreateSession" />
diff --git a/frontend/src/components/transcript-debug/ChatContainer.vue b/frontend/src/components/transcript-debug/ChatContainer.vue index c14e042..27e2798 100644 --- a/frontend/src/components/transcript-debug/ChatContainer.vue +++ b/frontend/src/components/transcript-debug/ChatContainer.vue @@ -8,6 +8,7 @@ import type { ConversationMessage, AgentName } from '@/types/transcript-debug' +import type { EphemeralTerminal } from '@/composables/useEphemeralTerminal' import UserMessageBubble from './UserMessageBubble.vue' import AssistantMessageBubble from './AssistantMessageBubble.vue' import ProgressEvent from './ProgressEvent.vue' @@ -18,6 +19,8 @@ import ResumeTerminalButton from './ResumeTerminalButton.vue' const props = defineProps<{ conversation: ParsedConversation processing?: boolean + terminalReady?: boolean + terminal?: EphemeralTerminal | null showSelector?: boolean agents?: { id: AgentName; label: string }[] selectedAgent?: AgentName | null @@ -30,6 +33,7 @@ const emit = defineEmits<{ send: [message: string] switchAgent: [agent: AgentName] selectSession: [sessionId: string] + createSession: [] }>() const scrollContainer = ref(null) @@ -254,6 +258,13 @@ function formatDuration(start: string, end: string): string { {{ s.firstUserMessage ? (s.firstUserMessage.length > 50 ? s.firstUserMessage.slice(0, 50) + '...' : s.firstUserMessage) : s.id.slice(0, 8) + '...' }} + New +
@@ -272,6 +283,7 @@ function formatDuration(start: string, end: string): string { v-if="selectedAgent" :agent="selectedAgent" :session-id="conversation.sessionId" + :terminal="terminal ?? null" />
@@ -354,6 +366,7 @@ function formatDuration(start: string, end: string): string { @@ -365,6 +378,7 @@ function formatDuration(start: string, end: string): string { v-if="selectedAgent" :agent="selectedAgent" :session-id="conversation.sessionId" + :terminal="terminal ?? null" /> {{ formatDuration(conversation.metadata.startTime, conversation.metadata.endTime) }} @@ -739,6 +753,31 @@ function formatDuration(start: string, end: string): string { color: #ccc; } +.new-session-btn { + display: inline-flex; + align-items: center; + gap: 3px; + padding: 2px 6px; + background: rgba(34, 197, 94, 0.12); + border: 1px solid rgba(34, 197, 94, 0.25); + border-radius: 0; + color: #4ade80; + font-size: 9px; + font-weight: 700; + font-family: 'Courier New', monospace; + cursor: pointer; + flex-shrink: 0; + transition: all 0.15s; + text-transform: uppercase; + letter-spacing: 0.5px; +} + +.new-session-btn:hover { + background: rgba(34, 197, 94, 0.2); + border-color: rgba(34, 197, 94, 0.4); + color: #86efac; +} + .spinner-sm { width: 12px; height: 12px; diff --git a/frontend/src/components/transcript-debug/ResumeTerminalButton.vue b/frontend/src/components/transcript-debug/ResumeTerminalButton.vue index c57af4d..2492cce 100644 --- a/frontend/src/components/transcript-debug/ResumeTerminalButton.vue +++ b/frontend/src/components/transcript-debug/ResumeTerminalButton.vue @@ -1,12 +1,13 @@