chore: Move ui to src/ui

This commit is contained in:
2026-02-15 19:22:58 -05:00
parent 9823bc19d2
commit 00d7c111d5
9 changed files with 0 additions and 0 deletions

0
src/ui/README.md Normal file
View File

1446
src/ui/poetry.lock generated Normal file

File diff suppressed because it is too large Load Diff

28
src/ui/pyproject.toml Normal file
View File

@@ -0,0 +1,28 @@
[project]
name = "ui"
version = "0.1.0"
description = ""
authors = [
{name = "aserrador",email = "alejandro.ayala@onecluster.org"}
]
readme = "README.md"
requires-python = ">=3.13,<4.0"
dependencies = [
"streamlit (>=1.54.0,<2.0.0)",
"httpx (>=0.28.1,<0.29.0)"
]
[tool.poetry]
packages = [{include = "ui", from = "src"}]
[build-system]
requires = ["poetry-core>=2.0.0,<3.0.0"]
build-backend = "poetry.core.masonry.api"
[dependency-groups]
dev = [
"taskipy (>=1.14.1,<2.0.0)"
]
[tool.taskipy.tasks]
dev-ui = "streamlit run src/ui/app.py"

View File

View File

@@ -0,0 +1,18 @@
import httpx
from logger import logger
class AgentClient:
def __init__(self):
self._client = httpx.AsyncClient()
async def send_message(self, message):
logger.info(f"Sending message to agent: {message}")
response = await self._client.post(
"http://localhost:8010/chat",
json={"messages": message},
timeout=60
)
return response

40
src/ui/src/ui/app.py Normal file
View File

@@ -0,0 +1,40 @@
import streamlit as st
from agent_client import AgentClient
from logger import logger
import random
import time
def response_generator(response: str = ""):
logger.info(f"Generating response stream for: {response}")
if response:
for word in response.split():
yield word + " "
time.sleep(0.05)
async def main():
st.image("src/ui/assets/logo-naliia.png", width=100, caption="NaliiaBot")
if "messages" not in st.session_state:
st.session_state.messages = []
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message["content"])
if prompt := st.chat_input("What is up?"):
st.chat_message("user").markdown(prompt)
st.session_state.messages.append({"role": "user", "content": prompt})
agent_client = AgentClient()
response = await agent_client.send_message(prompt)
formated_response = response.json()['response']['messages'][-1]['content']
with st.chat_message("assistant"):
response = st.write_stream(response_generator(formated_response))
st.session_state.messages.append({"role": "assistant", "content": formated_response})
if __name__ == "__main__": import asyncio; asyncio.run(main())

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

7
src/ui/src/ui/logger.py Normal file
View File

@@ -0,0 +1,7 @@
import logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)

0
src/ui/tests/__init__.py Normal file
View File