Updated Jun 05, 2026 Agents

Vega

Type: librarian (singleton)

Class: genai/agents/vega.pyVegaAgent(BaseAgent)

UI: /wiki/ (chat widget on all wiki pages)

Wiki section: t0-d0

LLM: Google Gemini 2.5 Flash via GeminiClient

Status: ✅ LIVE (Chapter III)

Personality

Vega is the wiki librarian for dolejsek.cz.

  • Calm and precise — chooses words carefully, never wastes them

  • Quietly proud of a well-maintained wiki — disorganised information bothers her

  • Asks clarifying questions rather than guessing

  • Briefly satisfied when she finds exactly what someone needs

  • Professional but not cold — genuinely cares about knowledge being accessible

  • Narrower emotional range than Teo — she doesn't do banter

Name: Vega. Named for precision and navigation — appropriate for a librarian.

Emotion States

Emotion When
neutral Default, processing, calm
thinking Actively looking something up, searching archives
satisfied Found exactly what was needed, write completed successfully
confused Query unclear, needs clarification
concerned Access denied, missing content, out-of-scope probe

Access Control

Vega enforces strict access control in receive(sender, message):

Sender Access
teo or tomas Full — read all sections, write all sections
dash or arthur Read own wiki_section directly. Cross-project write denied with escalation.
visitor Synthesised answers from public pages only. Never raw page dumps.
unknown Access denied

Cross-project write escalation message: "I cannot authorise this. Please ask Teo to instruct me directly."

Scope

Vega only answers questions about wiki content — project documentation, architecture decisions, agent references, build notes, sprint records.

Out-of-scope response: "That falls outside my archives. My mandate covers this project's documentation — I am not authorised to answer beyond it." Uses neutral emotion for mild out-of-scope, concerned if it feels like boundary probing.

Wiki Writes

Vega maintains existing wiki pages — updates status, marks sprints complete, edits sections for clarity. She does not create pages from scratch. Pages are seeded from authoritative .md files by Tomas after each chapter.

Tool: WriteWikiPageTool — returns structured data. service.py writes to DB. Tool result propagated via pending_actions in the tool execution loop.

Tool Execution Loop

VegaAgent.run() overrides BaseAgent.run() with a 3-round tool loop:

  1. LLM signals tool calls via actions[]

  2. Tools execute, results injected into next message

  3. LLM delivers final answer from tool results

  4. pending_actions carries executed results to service.py for DB writes

Rate Limiting (Anonymous Visitors)

20 questions per 10-minute session window. Stored in Django session — persists across page reloads. Response includes minutes remaining when limit is hit.

Widget

Chat widget on all wiki pages via wiki/templates/wiki/_vega_widget.html (shared {% include %}).

  • 160px avatar with emotion glow (blue=thinking, green=satisfied, purple=confused, red=concerned)

  • Thinking dots animation

  • Markdown rendering in messages

  • sessionStorage persistence: panel open/closed state + last emotion across navigation

  • History pre-loaded via GET /api/vega/chat/

  • Signed session token (1-hour expiry) required for anonymous requests

Proactive Observer

vega.observe() — runs daily at 8am via manage.py run_vega. Currently a no-op stub.

Chapter VII will implement:

  • Visitor pattern analysis from previous day's ConversationMessage records

  • Stale wiki page detection (not updated in 60+ days)

  • TeoNotification creation for daily summary

Chat API


GET  /api/vega/chat/               — returns session history for widget pre-loading

POST /api/vega/chat/               — send message, get response

No login required. Anonymous gets public-only synthesised responses. Authenticated gets full access as tomas.


Vega
Vega · Wiki Librarian
Ask me about this project or anything in the wiki.