TODO

August 1, 2026 · View on GitHub

Last updated: 2026-07-27

Done

v0.2.0 Features

  • Streaming tool-call parser — state-machine detects <tool_call> blocks incrementally from streaming LLM output, fires events on </tool_call>
  • Tool guardrails — loop detection, idempotent/mutating classification, failure counting with configurable warn/block thresholds
  • Pluggable context compaction — Compactor trait + default LLM summarizer
  • Self-healing retry — auto re-prompt LLM with error context on tool failures
  • Trajectory export — ReAct step serialization (thought→action→observation→response) for RL training data
  • Autonomous mode — 24/7 workspace loop: read TODO.md, run agent, validate with tests, git commit/push only on success. Failure pause across restarts
  • Skill curator — background task reviews skills, suggests improvements
  • Plugin lifecycle hooks — PreToolHook, PostToolHook, LifecycleHook traits
  • Skill template preprocessing — ${HERMES_SKILL_DIR} / ${HERMES_SESSION_ID} vars + !\command`` inline shell substitution in SKILL.md
  • Cron scheduler — SurrealDB-backed with in-memory noop fallback for testing
  • Hermes-style self-healing, loop detection, and compaction integration in loop_runner.rs
  • All 85 tests pass, 0 clippy warnings
  • v0.2.0 published to crates.io as apollo-agent

Previous (v0.1.x)

  • SurrealDB memory schema includes files, chunks, FTS, and sticker cache
  • Conversation history is loaded by chat_id before agent calls
  • CLAUDE.md is in sync with repo instructions via symlink to AGENTS.md
  • cargo clippy --all-targets -- -D warnings passes
  • cargo test passes
  • cargo build --release passes
  • GitHub issue #2 through #6 resolved and closed
  • Toolset allowlists, session search, managed skills, Daytona scaffolding

Next

  • Wire autonomous mode into CLI entrypoint (apollo autonomous)
  • Integrate streaming parser into execution loop — recover_tool_calls runs when the provider returns no native tool calls
  • Wire the rx4 bridge into the execution path
  • Refresh and persist expired Anthropic OAuth tokens
  • Add trajectory collection toggle in config.yaml
  • Add tests for Telegram markdown conversion and long-message chunking
  • Add tests for audio/sticker handling in Telegram
  • Make guardrails state persistable across restarts

Backlog

  • Session branching (JSONL tree with parent pointers in SurrealDB)
  • Add curator start|stop CLI commands
  • Docker runtime adapter to replace Daytona
  • WASM-based plugin sandbox (long-term)