co-mono/packages/mom/CHANGELOG.md
Mario Zechner 213bc4df1c mom: add centralized logging, usage tracking, and improve prompt caching
Major improvements to mom's logging and cost reporting:

Centralized Logging System:
- Add src/log.ts with type-safe logging functions
- Colored console output (green=user, yellow=mom, dim=details)
- Consistent format: [HH:MM:SS] [context] message
- Replace scattered console.log/error calls throughout codebase

Usage Tracking & Cost Reporting:
- Track tokens (input, output, cache read/write) and costs per run
- Display summary at end of each run in console and Slack thread
- Example: 💰 Usage: 12,543 in + 847 out (5,234 cache read) = $0.0234

Prompt Caching Optimization:
- Move recent messages from system prompt to user message
- System prompt now mostly static (only changes with memory files)
- Enables effective use of Anthropic's prompt caching
- Significantly reduces costs on subsequent requests

Model & Cost Improvements:
- Switch from Claude Opus 4.5 to Sonnet 4.5 (~40% cost reduction)
- Fix Claude Opus 4.5 cache pricing in ai package (was 3x too expensive)
- Add manual override in generate-models.ts until upstream fix merges
- Submitted PR to models.dev: https://github.com/sst/models.dev/pull/439

UI/UX Improvements:
- Extract actual text from tool results instead of JSON wrapper
- Cleaner Slack thread formatting with duration and labels
- Tool args formatting shows paths with offset:limit notation
- Add chalk for colored terminal output

Dependencies:
- Add chalk package for terminal colors
2025-11-26 18:04:16 +01:00

3.2 KiB

Changelog

[Unreleased]

Added

  • Working memory system with MEMORY.md files
    • Global workspace memory (workspace/MEMORY.md) shared across all channels
    • Channel-specific memory (workspace/<channel>/MEMORY.md) for per-channel context
    • Automatic memory loading into system prompt on each request
    • Mom can update memory files to remember project details, preferences, and context
  • ISO 8601 date field in log.jsonl for easy date-based grepping
    • Format: "date":"2025-11-26T10:44:00.123Z"
    • Enables queries like: grep '"date":"2025-11-26' log.jsonl
  • Centralized logging system (src/log.ts)
    • Structured, colored console output (green for user messages, yellow for mom activity, dim for details)
    • Consistent format: [HH:MM:SS] [context] message
    • Type-safe logging functions for all event types
  • Usage tracking and cost reporting
    • Tracks tokens (input, output, cache read, cache write) and costs per run
    • Displays summary at end of each agent run in console and Slack thread
    • Example: 💰 Usage: 12,543 in + 847 out (5,234 cache read, 127 cache write) = $0.0234

Changed

  • Enhanced system prompt with clearer directory structure and path examples
  • Improved memory file path documentation to prevent confusion
  • Message history format now includes ISO 8601 date for better searchability
  • System prompt now includes log.jsonl format documentation with grep examples
  • System prompt now includes current date and time for date-aware operations
  • Added efficient log query patterns using jq to prevent context overflow
  • System prompt emphasizes limiting NUMBER of messages (10-50), not truncating message text
  • Log queries now show full message text and attachments for better context
  • Fixed jq patterns to handle null/empty attachments with (.attachments // [])
  • Recent messages in system prompt now formatted as TSV (43% token savings vs raw JSONL)
  • Enhanced security documentation with prompt injection risk warnings and mitigations
  • Moved recent messages from system prompt to user message for better prompt caching
    • System prompt is now mostly static (only changes when memory files change)
    • Enables Anthropic's prompt caching to work effectively
    • Significantly reduces costs on subsequent requests
  • Switched from Claude Opus 4.5 to Claude Sonnet 4.5 (~40% cost reduction)
  • Tool result display now extracts actual text instead of showing JSON wrapper
  • Slack thread messages now show cleaner tool call formatting with duration and label
  • All console logging centralized and removed from scattered locations

Fixed

  • jq query patterns now properly handle messages without attachments (no more errors on empty arrays)

[0.9.4] - 2025-11-26

Added

  • Initial release of Mom Slack bot
  • Slack integration with @mentions and DMs
  • Docker sandbox mode for isolated execution
  • Bash tool with full shell access
  • Read, write, edit file tools
  • Attach tool for sharing files in Slack
  • Thread-based tool details (clean main messages, verbose details in threads)
  • Single accumulated message per agent run
  • Stop command (@mom stop) to abort running tasks
  • Persistent workspace per channel with scratchpad directory
  • Streaming console output for monitoring