feat: agent platform initial commit

- FastAPI + HTMX UI: dashboard, agents CRUD, chat, audit, tools
- SQLite schema: agents, conversations, messages, audit, sessions
- Code-agent sync (agents/*.py -> DB on startup)
- MCP client with health check
- Token auth (Bearer + session)
- LiteLLM integration via llm.py
- Docker Compose: agent-platform + mcp-tools services
- Smoke tests pass: /health 200, /api/agents 200, / 401
This commit is contained in:
Leopold
2026-07-05 22:18:00 +02:00
commit 64b840c94c
30 changed files with 2690 additions and 0 deletions
+36
View File
@@ -0,0 +1,36 @@
{% extends "base.html" %}
{% block title %}Chat Agent Platform{% endblock %}
{% block content %}
<div class="page-header">
<h1>Chat</h1>
<p class="subtitle">Konversation: <code>{{ conv_id }}</code></p>
</div>
<section class="card chat-container">
<div id="messages" class="messages">
{% for msg in messages %}
<div class="message message-{{ msg.role }}">
<div class="message-role">{{ msg.role }}</div>
<div class="message-content">{{ msg.content }}</div>
</div>
{% endfor %}
{% if not messages %}
<p class="empty-state">Noch keine Nachrichten.</p>
{% endif %}
</div>
</section>
<section class="card">
<form hx-post="" hx-target="#messages" hx-swap="beforeend" hx-on::after-request="this.reset()" class="form" id="chat-form">
<input type="hidden" name="conv_id" value="{{ conv_id }}">
<div class="form-row">
<div class="form-group" style="flex: 1;">
<textarea name="message" rows="2" required placeholder="Nachricht eingeben..." autofocus></textarea>
</div>
<button type="submit" class="btn btn-primary">Senden</button>
</div>
</form>
</section>
{% endblock %}