πŸ§ πŸ’¬ Ompcord β€” Discord Bridge (Amy Persona)

TL;DR πŸš€ Ompcord keeps your Pi coding agent online in Discord. Amy is the bot persona. Each session runs in its own thread off a home channel; a single embed dashboard updates in place with live progress (todo checklists, status, steps) and relocates to stay β€œsticky” at the bottom of the thread. Administrative config settings are modified live via dropdown select menus.


⚑ 60-Second Quick Start

  1. πŸ€– Create Application & Bot (Discord Developer Portal) β†’ Enable Message Content intent β†’ Reset Token (copy).
  2. πŸ”— Invite Link (Bot + applications.commands scopes, perms 326417632336): https://discord.com/api/oauth2/authorize?client_id=APP_ID&scope=bot%20applications.commands&permissions=326417632336
  3. 🏠 Home Channel: Set a text channel (e.g. #amy). Sessions run as threads inside it.
  4. βš™οΈ Config Env: Supply variables to ompcordd.service: DISCORD_TOKEN=... DISCORD_GUILD_ID=... DISCORD_HOME_CHANNEL_ID=...
  5. πŸ’¬ Talk: Use /amy new to start a thread, /amy say to prompt, or chat directly in session threads.

🧬 Core Architecture & UX Upgrades

πŸ“Œ 1. Interactive Pinning

  • Prompt Pinning: Choice prompts (askViaDashboard) are automatically pinned to the thread header.
  • Auto Release: Unpinned immediately upon user response, skip, or timeout.
  • Clean Logs: Auto-deletes Discord’s system pinning notice to prevent clutter.

πŸ“‹ 2. Embed-Based Todo Checklists

  • State Machine: Embed changes color based on agent mode (idle: Green, processing: Blurple, asking/confirming: Yellow, failed: Red).
  • Inline Grid Routing: Completed/future phases are rendered as compact inline fields (inline: true). The active phase is expanded as a checklist block (inline: false) for mobile readability.
  • Limit Defense: Auto-compresses and truncates long checklists to respect Discord’s 6000-character embed limit.

– 3. Sticky Dashboard (Leapfrog Relocation)

  • Log Offset Check: When text/code logs push the dashboard up, the bot archives the old message (turns it neutral gray, removes buttons, updates footer) and spawns a fresh live dashboard at the bottom.
  • Rate Limit Shield: Debounces relocation. Only repositions if at least 2 messages have been posted since the last dashboard update.

πŸŽ›οΈ 4. Unified Status & Config Control Panel

  • Slash Diagnostics: /amy status / /amy health display gateway stats, active run metrics, and feature flags.
  • Interactive Toggles: Dropdown string select menus (amystatus:toggle_config) allow administrators to toggle reactions, toolResponses, autoStart, useThreads, and logDetail dynamically. Saved back to config.json instantly.

🎚️ Slash Commands (Guild-Scoped)

CommandAction
/amy statusDisplays SSOT health & status panel with interactive config toggles
/amy new [topic]Opens a fresh session thread off the home channel
/amy say <prompt>Sends a prompt to the active session thread
/amy cancelSIGTERMs the active headless omp child process
/amy stopArchives the active thread

🧠 Brainstorm: The Pagination Screen Pattern

To print massive code blocks/logs without message spam, we can convert messages into interactive screens using buttons:

πŸŽ›οΈ Component Design

  • Nav Row: [β—€ Prev] [ Page 1/N ] [ Next β–Ά]
  • SSOT Buffer: Instead of chunking into multiple new messages, Ompcord splits the output into pages ( chars each) and stores them in memory/session.
  • In-Place Edit: Clicking Next β–Ά edits the same message with the next chunk.
  • Timeout/Freeze: After the turn ends or after a 5-minute idle timeout, buttons are stripped to freeze the finalized page.

πŸ“‹ Constants & Limits Reference

  • πŸ” Permissions Int: 326417632336 (View, Send, Embed Links, Attach Files, Add Reactions, Read History, Manage Channels, Create Public Threads, Send in Threads).
  • πŸ“ Limits: Message chars Β· Select menu options Β· Component grid rows Β· Modal text fields Β· Embed description chars Β· Field value chars Β· Interaction ACK (then 15m to edit).
  • πŸ“‚ CLI Continuity: Resume Discord threads locally using: omp --allow-home --cwd /home/usr --session-dir ~/.omp/amy-sessions/<thread-id> -c