diff --git a/core/frontend/src/App.tsx b/core/frontend/src/App.tsx
index 66319e4e..7dfb7888 100644
--- a/core/frontend/src/App.tsx
+++ b/core/frontend/src/App.tsx
@@ -3,6 +3,7 @@ import AppLayout from "./layouts/AppLayout";
import Home from "./pages/home";
import ColonyChat from "./pages/colony-chat";
import QueenDM from "./pages/queen-dm";
+import QueenRouting from "./pages/queen-routing";
import OrgChart from "./pages/org-chart";
import PromptLibrary from "./pages/prompt-library";
import SkillsLibrary from "./pages/skills-library";
@@ -16,6 +17,7 @@ function App() {
- - The queens are debating who should take this on - - -
- )} ); diff --git a/core/frontend/src/pages/queen-dm.tsx b/core/frontend/src/pages/queen-dm.tsx index 7ede3429..4f68db3e 100644 --- a/core/frontend/src/pages/queen-dm.tsx +++ b/core/frontend/src/pages/queen-dm.tsx @@ -1,6 +1,6 @@ import { useState, useCallback, useRef, useEffect, useMemo } from "react"; import { useParams, useSearchParams } from "react-router-dom"; -import { Loader2, Minus, Plus } from "lucide-react"; +import { Minus, Plus } from "lucide-react"; import ChatPanel, { type ChatMessage, type ImageContent, @@ -117,6 +117,12 @@ export default function QueenDM() { // client_input_requested so we don't flicker the typing bubble off while // the queen is about to resume on the flushed input. const queenAboutToResumeRef = useRef(false); + // Question bubble for an ask_user that's actively awaiting an answer. We + // stash it here instead of pushing it into messages so the user only sees + // ONE copy of the question (the popup widget) while answering. Committed + // to the transcript on client_input_received so the bubble lands right + // above the user's answer for scroll-back context. + const pendingAskUserBubbleRef = useRef{error}
+ +