feat(chat): EA2-backed 1:1 messaging surface
New Chat scene at the Chat top-bar tab. Threads and messages are stored as flow docs (kind=definition, source_context=EA2_CHAT_THREAD / _MSG) linked by defines edges with role=next — same proven contract as wizard steps. Persona directory lets the signed-in operator open a thread with the CEO / HR / IT personas. - src/lib/chatApi.ts: listThreads / createThread / listMessages / sendMessage - src/scenes/Chat.tsx: sidebar (threads + new-thread picker) + main pane (header, bubbles, composer with Enter-to-send / Shift-Enter newline) - src/index.css: chat-scene grid + bubble + composer styles - src/App.tsx: Chat tab + scene route
This commit is contained in:
+6
-1
@@ -8,10 +8,11 @@ import Wizard from "./scenes/Wizard";
|
||||
import Settings from "./scenes/Settings";
|
||||
import Login from "./scenes/Login";
|
||||
import SsoCallback from "./scenes/SsoCallback";
|
||||
import Chat from "./scenes/Chat";
|
||||
import CommandBar from "./components/CommandBar";
|
||||
import Toaster from "./components/Toaster";
|
||||
import Console from "./components/Console";
|
||||
import { Cmd, Home, Layers, HistoryIcon, Pulse, Refresh, Branch, Cog, User, Sun, Moon } from "./components/icons";
|
||||
import { Cmd, Home, Layers, HistoryIcon, Pulse, Refresh, Branch, Cog, User, Sun, Moon, Bot } from "./components/icons";
|
||||
import { liveMeta } from "./data/scenarios";
|
||||
|
||||
export default function App() {
|
||||
@@ -71,6 +72,9 @@ export default function App() {
|
||||
<button role="tab" aria-selected={scene === "studio"} className={`tab${scene === "studio" ? " tab-sel" : ""}`} onClick={() => setScene("studio")}>
|
||||
<Branch size={13} /> Studio
|
||||
</button>
|
||||
<button role="tab" aria-selected={scene === "chat"} className={`tab${scene === "chat" ? " tab-sel" : ""}`} onClick={() => setScene("chat")}>
|
||||
<Bot size={13} /> Chat
|
||||
</button>
|
||||
<button role="tab" aria-selected={scene === "settings"} className={`tab${scene === "settings" ? " tab-sel" : ""}`} onClick={() => setScene("settings")}>
|
||||
<Cog size={13} /> Settings
|
||||
</button>
|
||||
@@ -149,6 +153,7 @@ export default function App() {
|
||||
{scene === "mission" && <MissionControl />}
|
||||
{scene === "history" && <RunHistory />}
|
||||
{scene === "studio" && <Wizard />}
|
||||
{scene === "chat" && <Chat />}
|
||||
{scene === "settings" && <Settings />}
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user