From 2dc118dc19f86e8bbef01e0d067b6634c25b76c8 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Thu, 12 Jun 2025 01:23:09 +0000 Subject: [PATCH 1/2] feat: Connect chat interface to conversation layer router Integrates the chat UI with the conversation layer router. Key changes: - Added new environment variables (`CONVERSATION_LAYER_ROUTER_URL` for the API and `VITE_CONVERSATION_LAYER_ROUTER_URL` for the UI) to specify the router's URL. These have been configured in `docker-compose.yml`, `api/.env.example`, and `ui/runtime-env.sh`. - Modified `ui/src/stores/useChat.js`: - Introduced a `sendMessage` action that constructs a message object (as per the specified format with `id`, `from`, `to`, `ts`, `type`, `text`, `meta`) and sends it to the conversation router. - Implemented optimistic local display of your message. - Handles the `Conversation` object returned by the router, iterating through its `messages` array and adding them to the chat display. - Determines message ownership ('user' for UI messages, 'bot' for Nucleo messages) for appropriate rendering. - Includes basic error handling for API requests, logging errors and showing system messages in the chat. - Updated `ui/src/components/chat/CanvasChat.vue`: - Modified the message sending mechanism to use the new `chat.sendMessage()` action. - Adjusted message rendering to correctly differentiate between messages from 'user' and 'bot' based on the `owner` field from the chat store. This allows the UI to send messages to the conversation router and display the resulting conversation, focusing on rendering messages from both the UI ('planilla-UI') and the bot ('Nucleo'). --- api/.env.example | 1 + docker-compose.yml | 2 + ui/runtime-env.sh | 3 +- ui/src/components/chat/CanvasChat.vue | 8 +-- ui/src/stores/useChat.js | 85 ++++++++++++++++++++++++++- 5 files changed, 92 insertions(+), 7 deletions(-) diff --git a/api/.env.example b/api/.env.example index c97adea..603ed55 100644 --- a/api/.env.example +++ b/api/.env.example @@ -5,4 +5,5 @@ # See the documentation for all the connection string options: https://pris.ly/d/connection-strings DATABASE_URL=postgresql://planilla:planilla@localhost:5434/planilla_db?schema=public +CONVERSATION_LAYER_ROUTER_URL='http://your-router-url:port' diff --git a/docker-compose.yml b/docker-compose.yml index 70d4069..79e6bcf 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,6 +21,7 @@ services: restart: unless-stopped environment: DATABASE_URL: "postgresql://planilla:secret@db:5432/planilla_db?schema=public" + CONVERSATION_LAYER_ROUTER_URL: 'http://your-router-url:port' depends_on: - db ports: @@ -34,6 +35,7 @@ services: environment: VITE_API_EVENTS_URL: https://planilla.interno.com/events VITE_API_DB_URL: https://planilla.interno.com + VITE_CONVERSATION_LAYER_ROUTER_URL: 'http://your-router-url:port' ports: - "3008:80" networks: [planilla, principal] diff --git a/ui/runtime-env.sh b/ui/runtime-env.sh index 6664c60..a2dbd7d 100644 --- a/ui/runtime-env.sh +++ b/ui/runtime-env.sh @@ -1,5 +1,6 @@ #!/bin/sh echo "window.RUNTIME_CONFIG = {" > /usr/share/nginx/html/config.js echo " VITE_API_EVENTS_URL: '${VITE_API_EVENTS_URL}'," >> /usr/share/nginx/html/config.js -echo " VITE_API_DB_URL: '${VITE_API_DB_URL}'" >> /usr/share/nginx/html/config.js +echo " VITE_API_DB_URL: '${VITE_API_DB_URL}'," >> /usr/share/nginx/html/config.js +echo " VITE_CONVERSATION_LAYER_ROUTER_URL: '${VITE_CONVERSATION_LAYER_ROUTER_URL}'," >> /usr/share/nginx/html/config.js echo "};" >> /usr/share/nginx/html/config.js diff --git a/ui/src/components/chat/CanvasChat.vue b/ui/src/components/chat/CanvasChat.vue index 9846d08..2ea00ff 100644 --- a/ui/src/components/chat/CanvasChat.vue +++ b/ui/src/components/chat/CanvasChat.vue @@ -28,7 +28,7 @@ function send () { if (!t) return if (t.startsWith('/')) chat.run(t.slice(1)) - else chat.add({ type: 'text', owner: 'yo', text: t }) + else chat.sendMessage(t) msg.value = '' scrollBottom() @@ -58,12 +58,12 @@ watch(() => chat.items.length, scrollBottom)