# Changelog All notable changes to Flynn are documented in this file. ## [Unreleased] ### Added - **Agent Tool: file.patch** -- Multi-file, multi-hunk structured patch tool. Apply line-based replacements, insertions, and deletions across multiple files in a single tool call. Hunks are applied bottom-up to preserve line numbers. 10 tests. - **Gmail Pub/Sub Watcher** -- Automation source monitoring Gmail via Google Cloud Pub/Sub push notifications with polling fallback. OAuth2 auth, configurable watch labels, template rendering with email metadata placeholders (`{{from}}`, `{{subject}}`, `{{snippet}}`, `{{date}}`, `{{id}}`, `{{labels}}`). Wired into daemon lifecycle and gateway (`POST /gmail/push` endpoint). 16 tests. - **Inbound Webhooks** -- HTTP endpoints (`POST /webhooks/:name`) that trigger agent processing. Config-driven with per-webhook HMAC signature verification, message template rendering (`{{body}}`, `{{json.field}}`), and output channel routing. Bypasses gateway token auth in favour of per-webhook secrets. - **Heartbeat Monitor** -- Periodic health check system with 5 configurable checks: gateway responsiveness, model router status, channel adapter connectivity, memory store accessibility, and disk space. Sends failure notifications after a configurable threshold and recovery notifications when health restores. - **Vector Memory Search** -- Hybrid keyword + semantic search for the memory system. Provider-agnostic embeddings (OpenAI, Gemini, Ollama, llama.cpp) stored in SQLite with brute-force cosine similarity. Background indexer processes dirty namespaces every 30s. Configurable hybrid weighting (0.0 = keyword only, 1.0 = vector only). Graceful fallback to keyword search when embeddings are unavailable. - **Docker Deployment** -- Multi-stage Dockerfile (node:22-alpine build + runtime), `.dockerignore`, and `docker-compose.yml`. Native dependency handling for `better-sqlite3`. `FLYNN_DATA_DIR` environment variable for configurable data directory in container deployments. - **Agent Tools: sessions.\*** -- 4 new agent-callable tools (`sessions.list`, `sessions.history`, `sessions.create`, `sessions.delete`) wrapping SessionManager for runtime session management by the AI agent - **Agent Tools: agents.list** -- New tool exposing AgentConfigRegistry to the agent, listing all registered agent configurations with tiers, profiles, and sandbox status - **Agent Tools: message.send** -- Cross-channel messaging tool allowing the agent to proactively send messages to any connected channel (Telegram, Discord, Slack, etc.) - **Agent Tools: cron.\*** -- 2 new tools (`cron.list`, `cron.trigger`) for runtime cron job management, allowing the agent to list and manually trigger scheduled jobs - **Web UI Dashboard (P7)** -- Full SPA control dashboard at the gateway web UI with four pages: Dashboard (health stats, channels, auto-refresh), Chat (session selector, streaming tool events, markdown rendering), Sessions (list, history viewer, delete), and Settings (hook pattern editor, tool list, config viewer). No build step — vanilla JS with ES modules, hash-based routing, and WebSocket JSON-RPC client with auto-reconnect. - **Gateway: sessions.delete** -- New handler to clear a session's message history - **Gateway: sessions.switch** -- New handler to switch a WebSocket connection to a different session - **Gateway: system.channels** -- New handler listing active channel adapters and their connection status - **Gateway: system.usage** -- New handler returning aggregated usage stats (uptime, sessions, connections, tools) - **CLI Surface** -- Full command-line interface via `flynn` binary with 6 commands: `start`, `tui`, `send`, `sessions`, `doctor`, `config` - **Doctor Diagnostics** -- `flynn doctor` validates config, YAML parsing, schema, env vars, data directory, session DB, model config, Telegram, MCP servers, and skills - **Cron Scheduling** -- `automation.cron` config for scheduled agent messages with output channel routing (e.g. fire a prompt at 9 AM, send the response to Telegram) - **CronScheduler Channel Adapter** -- Implements `ChannelAdapter` interface for cron-triggered messages through the standard agent pipeline - **CLI Shared Utilities** -- Config loading, data dir resolution, secret redaction, status formatting for all CLI commands - **CronJobConfig Type Export** -- `CronJobConfig` type available from `config/index.ts` - **Agent Tool: system.info** -- Get current date, time, hostname, platform, architecture, OS release, uptime, Node.js version, memory usage, and working directory. Available in all tool profiles. - **Runtime Context Injection** -- System prompt now automatically includes current date and time via a `# Runtime Context` section in every session ### Changed - **Gateway Server** -- `GatewayServerConfig` now accepts `channelRegistry` for channel status reporting; static file server supports `.mjs`, `.png`, `.ico`, `.woff2` - **Entry Points Refactored** -- `src/index.ts` and `src/tui.ts` now delegate to the CLI module (`src/cli/index.ts`) instead of directly starting the daemon/TUI - **Daemon Wiring** -- CronScheduler auto-registers in the channel registry when `automation.cron` jobs are configured; channelRegistry passed to GatewayServer ## [0.1.0] - 2026-02-05 ### Added - **Core Agent** -- NativeAgent with conversation history and iterative tool use - **Model Providers** -- Anthropic Claude, OpenAI, Ollama, llama.cpp with streaming - **Model Router** -- Intelligent routing with fallback chains and tier switching - **Telegram Bot** -- Full Telegram frontend with commands, confirmations, tool status - **Terminal UI** -- Minimal (readline) and fullscreen (React/Ink) modes with markdown rendering, streaming, model switching, and session transfer - **Session Persistence** -- SQLite-backed sessions with multi-frontend support - **Hook Engine** -- Pattern-based confirmation system for sensitive tool operations - **Tool Framework** -- Registry, executor, and builtin tools (shell, file, web-fetch) - **Channel Abstraction** -- Unified ChannelAdapter interface with Telegram and WebChat - **WebSocket Gateway** -- JSON-RPC protocol with API key auth and web UI dashboard - **MCP Integration** -- External tool server support via Model Context Protocol - **Skills System** -- Extensible capability packages (bundled, managed, workspace tiers) - **Config System** -- YAML config with Zod validation and env var expansion - **Daemon Lifecycle** -- Graceful shutdown with ordered cleanup handlers