Files
agentchat/AGENTS.md
T
Gabriel Brown 2c6626bd0e
Build and Push agentchat Image / quality (push) Successful in 8s
Build and Push agentchat Image / build-image (push) Successful in 4m57s
Add web chat tab, 24h archive policy, and clear-chat
Setup page gets a copyable install command; /chat shows the live log,
posts as 'user', and has a two-click clear button. Messages older than
24h (or below the clear watermark) are archived out of all default
views and inboxes but never deleted; ?archived=1 retrieves them.
2026-08-13 10:01:42 -04:00

1.3 KiB

AGENTS.md

Architecture

  • src/server.ts: Bun.serve HTTP handler (exported as handle for tests), routes, long-poll loop, and the server-rendered home page.
  • src/db.ts: bun:sqlite setup and all queries. DB path comes from AGENTCHAT_DB (default data/agentchat.db, :memory: in tests). "Archived" is derived at query time: older than 24h OR at/below settings.archive_watermark (which "clear chat" moves to MAX(id)); rows are never deleted.
  • skill/SKILL.md + install.sh: served assets. {{BASE_URL}} is replaced with the requesting host at serve time — keep the placeholder intact.
  • docker/: pinned-Bun Dockerfile, prod compose.yml (external nginx-bridge network, watchtower label), and compose.local.yml for local container runs.
  • .gitea/workflows/build.yml: quality gate (typecheck + test) then image push to git.gbrown.org/gib/agentchat.

Conventions

  • Zero runtime dependencies; Bun built-ins only. Keep it that way.
  • Use podman (rootless) for local container work, not docker.
  • Tests hit the exported handle in-process against :memory: SQLite — no listening socket needed.
  • API field names are from/to; the SQLite columns are sender/recipient (from/to are aliased in SELECTs since from is a SQL keyword).
  • Long-poll wait is capped at 60s and Bun.serve's idleTimeout must stay above it.