Files
Skald-Circle/agents
dguiducci 4f10528368
Nightly Build / build (push) Successful in 7m40s
feat: conversation review — a nightly report on a supervised person's conversations
The first AgentScope::PerSubject system agent, and the reason that scope
exists. Once a night, for each person with a supervision edge, it reads every
message that person and the assistant exchanged since the previous review —
across all their conversations — and writes one report for the people who
supervise them.

Schema (all registry except reports):
- supervision(subject_user_id, supervisor_user_id): the generic §0.1 edge,
  answering both 'whom does a background agent look at' and 'who may read
  what it produced', with real FKs so deleting a user cascades both ways
- system_agent_coverage(agent_id, subject_user_id, covered_through): the
  per-subject watermark that makes 'everything since last time' a window —
  neither system_agent_runs (history for humans) nor system_agent_state
  (advances before the work), and advanced only on a completed pass so a
  crash re-covers instead of skipping
- reports (owner schema, the second two-homes table after memory_docs):
  instance rows land in system.db, deliberately cleartext to the box owner,
  who is the intended reader (§2); the subject cannot see them structurally

The pass reads the subject's database inside a supervisor's runtime, so the
ephemeral session and run row land in the watcher's file; iteration is over
subjects, so two parents watching one child get one review; and the subject
need not be logged in when their space is unencrypted — via the new
UserManager::open_unencrypted, which refuses an encrypted user outright (no
key to be had) and never registers the pool as unlocked.

The agent declares the new AgentMeta flag allow_tools: false, so its turn
gets an empty tool registry — nothing for a prompt injection in the
transcript to call — and produces its report as its final assistant message,
read back from chat_history and parsed (NOTHING_TO_REPORT sentinel, no row on
quiet days). chat_history::conversation_window is the transcript query; its
four filters (non-ephemeral, depth 0, non-synthetic, non-empty) each guard a
specific way the review would otherwise be wrong, and tool calls are absent
by construction.

Cadence is Run at (hour) rather than Interval — 4am local by default — with
due-ness answered inside has_work against the coverage watermark, so a
machine off for three days covers the whole stretch in one pass. Reports
announce ReportCreated on the system bus (no subscriber yet). run_ephemeral_turn
gains a per-pass system_substitutions map, which the review uses to hand the
model the subject's profile under __SUBJECT_PROFILE__ — the system-context
substitutions describe the session owner, the wrong person here.

docs/system-agents.md gains the conversation review section; CLAUDE.md
documents the scope, the tables and the tool-less design.
2026-08-02 20:30:27 +01:00
..

Agent icons — style guide

Each agent in the agents/ directory can have an icon/avatar declared in the "icon" field of its meta.json. The backend serves the file via GET /api/agents/{id}/icon.

Visual style

Icons are generated with Vector Paintings LoRA via ComfyUI in a warm, family-friendly style:

  • Style: painterly vector — bold shapes fused with expressive brushstrokes
  • Technique: vivid colours, emotion, motion, warm lighting
  • Format: square (1024×1024), rendered as a character portrait
  • Background: warm, cozy, medium-bright (no dark/no neon)
  • Subject: a warm animal character representing the agent's role, with contextual elements (tools, symbols, objects)
  • Palette: terracotta, amber, warm gold, coral, soft teal — warm and inviting
  • Trigger word: VectorPaintDaal must be included at the start of the prompt

Prompt template

VectorPaintDaal. A warm friendly {ANIMAL} character with a gentle smile, wearing {CLOTHING/ACCESSORIES}. It holds {OBJECT} and around it float {SYMBOLS}. Warm golden light, cozy atmosphere. {DOMINANT_COLOURS} palette. Expressive bold brushstrokes, painterly vector style. Family-friendly illustration, portrait of a kind {ROLE}.

Per-agent reference

Chat agents — warm animals

Agent Animal Role Elements Palette
Main Assistant 🦊 Fox General assistant Glowing threads connecting a heart, star, house Terracotta, amber, gold
Project Coordinator 🦡 Badger Family coordinator Floating threads linking heart, star, house, smiling face; cozy kitchen table Terracotta, amber, gold, coral
Researcher 🐿️ Squirrel Curious researcher Glowing book, magnifying glass, compass, scrolls, stars Terracotta, amber, soft teal, coral
Generalist 🦫 Beaver Handy executor Glowing multitool, wrench, paintbrush, trowel, cooking pot Terracotta, orange, amber, timber
Code Explorer 🕵️ Meerkat Curious analyst Magnifying glass, data trails, sparkling code symbols Terracotta, amber, deep blue, gold
Software Architect 🏗️ Heron Thoughtful planner Floating blueprints, geometric shapes, building blocks Terracotta, soft teal, amber, pale gold
Software Engineer 🔧 Bear Focused builder Glowing wrench, gears, circuit board, hammer, sparks Terracotta, orange, amber, steel grey
Spec Writer 📝 Owl Wise scribe Glowing quill, scrolls, open books, words floating mid-air Deep indigo, burnished gold, amber, cream
Tech Lead 👑 Stag Confident strategist Holographic kanban board, task cards, sub-agent symbols Warm amber, deep teal, gold, coral
Business Analyst 💼 Magpie Thoughtful evaluator Glowing clipboard, floating documents, abacus, data points Deep indigo, gold, soft teal, amber
Companion 🦦 Otter Children's friend Glowing pencil, smiling sun, star, open book, paintbrush Soft coral, amber, gold, gentle teal

System agents — insect family

System agents (type: "system") are invisible background agents that maintain the platform. They use insect characters to visually distinguish them from chat-facing agents.

Agent Animal Role Elements Palette
Event triage 👁️ Spider 🕷️ Watchful guardian Sensor nodes, glowing web, radar arcs, notification symbols (bell, letter, calendar) Dark purple, amber, soft cyan, warm grey
Private Memory Lint 🧹 Firefly Private memory caretaker Glowing lantern, memory fragments, tiny notes, sparkles Warm gold, amber, soft teal, gentle green
Shared Memory Lint 🧹 Bee 🐝 Shared space caretaker Scroll with guidelines, honey dipper, honeycomb shapes, tiny documents Warm amber, gold, soft teal, honey

Adding a new agent icon

  1. Generate the image using the Vector Paintings prompt template above (include VectorPaintDaal at the start)
  2. Save it as agents/{agent_id}/icon.png
  3. Add "icon": "icon.png" to the agent's meta.json (if not already present)
  4. No code changes needed — the backend serves whatever file path is declared in the manifest