Commit Graph
100 Commits
Author SHA1 Message Date
Mario Zechner 93d000b19d v86.md describing how we could possibly ship a minimal alpine container with mom by default 2025-12-17 01:05:04 +01:00
Mario Zechner c352857a43 Add [Unreleased] section to changelog 2025-12-17 00:40:15 +01:00
Mario Zechner 03b061773c Release v0.22.4
- Add --list-models CLI flag for listing/finding models with fuzzy search

fixes #203
2025-12-17 00:39:14 +01:00
Mario Zechner e1ce9c1f49 Fix image limits test to use realistic payload sizes
Previous test used compressed 8k images (0.01MB) which was meaningless.
Now tests with actual large noise images that don't compress.

Realistic payload limits discovered:
- Anthropic: 6 x 3MB = ~18MB total (not 32MB as documented)
- OpenAI: 2 x 15MB = ~30MB total
- Gemini: 10 x 20MB = ~200MB total (very permissive)
- Mistral: 4 x 10MB = ~40MB total
- xAI: 1 x 20MB (strict request size limit)
- Groq: 5 x 5760px images (5 image + pixel limit)
- zAI: 2 x 15MB = ~30MB (50MB request limit)
- OpenRouter: 2 x 5MB = ~10MB total

Also fixed GEMINI_API_KEY env var (was GOOGLE_API_KEY).

Related to #120
2025-12-16 23:48:59 +01:00
Mario Zechner 043a8416b0 Update image limits test with comprehensive 8k stress test results
Tested max 8kx8k images per provider:
- Anthropic: 100 (explicit limit, fails at 101)
- OpenAI: 100-200 (100 works, 200 times out)
- Mistral: 8 (explicit limit, fails at 9)
- xAI: 100-150 (100 works, 150 times out)
- Groq: 0 (8k exceeds 33M pixel limit)
- zAI: 400 (context window limited at 500)
- OpenRouter: 40 (context window limited at 50)
- Gemini: untested (no API key in test env)

Key finding: Anthropic's 'many images' rule does NOT cause API errors.
100 x 8kx8k images work fine. Anthropic likely auto-resizes internally.

Related to #120
2025-12-16 23:01:46 +01:00
Mario Zechner f1df52ccfd Add comprehensive image limits test suite for all vision-capable providers
Tests max image count, size, dimensions, and 8k stress test for:
- Anthropic, OpenAI, Gemini, Mistral, OpenRouter, xAI, Groq, zAI

Key finding: Anthropic's 'many images' rule (>20 images = 2000px max)
does NOT cause API errors. 100 x 8k images work fine. Anthropic likely
auto-resizes internally.

Related to #120
2025-12-16 22:21:48 +01:00
Mario Zechner deee1c2952 Release v0.22.3 2025-12-16 20:06:05 +01:00
Mario Zechner 3c9c47d3bb ai: add image limits test suite
Tests provider-specific image limitations across all supported providers:
- Maximum number of images in context
- Maximum image size (bytes)
- Maximum image dimensions

Discovered limits (Dec 2025):
- Anthropic: 100 images, 5MB per image, 8000px max dimension
- OpenAI: 500 images, >=25MB per image
- Gemini: ~2500 images, >=40MB per image
- Mistral: 8 images, ~15MB per image
- OpenRouter: ~40 images (context limited), ~15MB per image
2025-12-16 20:04:34 +01:00
Mario Zechner 871188219b Fix editor text clearing during compaction, fixes #179 2025-12-16 15:15:37 +01:00
Mario Zechner 7ac832586f Add tool result streaming
- Add AgentToolUpdateCallback type and optional onUpdate callback to AgentTool.execute()
- Add tool_execution_update event with toolCallId, toolName, args, partialResult
- Normalize tool_execution_end to always use AgentToolResult (no more string fallback)
- Bash tool streams truncated rolling buffer output during execution
- ToolExecutionComponent shows last N lines when collapsed (not first N)
- Interactive mode handles tool_execution_update events
- Update RPC docs and ai/agent READMEs

fixes #44
2025-12-16 14:53:17 +01:00
Mario Zechner 8319628bc3 Add changelog entries for X-Initiator header support (#200) 2025-12-16 14:34:56 +01:00
Mario Zechner ce9ffaff91 Fix ANSI styles not preserved across newlines in text wrapping
wrapTextWithAnsi() was processing each line independently after splitting
on newlines, losing ANSI state. When styled text contained embedded newlines
(e.g. from markdown paragraphs), subsequent lines would lose their styling.

Fixed by tracking ANSI state across lines and prepending active codes to
lines after the first.

Fixes #197
2025-12-15 23:00:25 +01:00
Mario Zechner fbda78bfb3 Fix reasoning disabled by default for all providers
Previously, when reasoning was not specified, some providers like Gemini
with 'dynamic thinking' enabled by default would still use thinking.
Now explicitly sets thinkingEnabled: false (Anthropic) and
thinking: { enabled: false } (Google) when reasoning is undefined.

Closes #180
2025-12-15 22:42:08 +01:00
Mario Zechner 82dceb22e1 Fix RGB to 256-color mapping for non-truecolor terminals 2025-12-15 22:32:23 +01:00
Mario Zechner fd5134f88c Release v0.22.2 2025-12-15 22:09:14 +01:00
Mario Zechner a7e3b8625b Release v0.22.1 2025-12-15 21:53:27 +01:00
Mario Zechner 04058d5812 Release v0.22.0 2025-12-15 20:14:25 +01:00
Mario Zechner 4f5f47a861 Minor README cleanup 2025-12-15 20:10:05 +01:00
Mario Zechner 8df24b48ab Update docs and changelogs for GitHub Copilot changes 2025-12-15 20:08:06 +01:00
Mario Zechner c5543f7586 GitHub Copilot: auto-enable models, fix gpt-5 API, normalize tool call IDs
- Auto-enable all models after /login via POST /models/{model}/policy
- Use openai-responses API for gpt-5/o3/o4 models (not accessible via completions)
- Normalize tool call IDs when switching between github-copilot models with different APIs
  (fixes #198: openai-responses generates 450+ char IDs with special chars that break other models)
- Update README with streamlined GitHub Copilot docs
2025-12-15 20:06:11 +01:00
Mario Zechner 16c8861842 Fix GitHub Copilot model enablement instructions (VS Code, not web) 2025-12-15 19:18:07 +01:00
Mario Zechner c151f2d287 Add GitHub Copilot documentation to packages/ai README 2025-12-15 19:16:56 +01:00
Mario Zechner f8550a536e Read GitHub Copilot token from oauth.json in test 2025-12-15 19:16:08 +01:00
Mario Zechner 5a59b8d18d Add GitHub Copilot test to packages/ai 2025-12-15 19:12:43 +01:00
Mario Zechnerandcau1k b66157c649 Add GitHub Copilot support (#191)
- OAuth login for GitHub Copilot via /login command
- Support for github.com and GitHub Enterprise
- Models sourced from models.dev (Claude, GPT, Gemini, Grok, etc.)
- Dynamic base URL from token's proxy-ep field
- Use vscode-chat integration ID for API compatibility
- Documentation for model enablement at github.com/settings/copilot/features

Co-authored-by: cau1k <cau1k@users.noreply.github.com>
2025-12-15 19:05:17 +01:00
Mario Zechner ce4ba70d33 Merge branch 'main' into pr-191-github-copilot-auth 2025-12-15 18:10:15 +01:00
Mario Zechner 3de8e0757d Fix model selector fuzzy search to match provider and support multi-token queries 2025-12-15 18:05:32 +01:00
Mario Zechner 7272eb9274 Add artifacts server documentation 2025-12-14 23:36:26 +00:00
Mario Zechner 0a7d1fa51e Add empty Unreleased section to CHANGELOG 2025-12-13 23:56:41 +01:00
Mario Zechner 3b440bb13b Release v0.21.0 2025-12-13 23:55:31 +01:00
Mario Zechner e4e234ecff Fix image rendering artifacts and improve show-images selector
- Image component returns correct number of lines (rows) for TUI accounting
- Empty lines rendered first, then cursor moves up and image is drawn
- This clears the space the image occupies before rendering
- Add spacer before inline images in tool output
- Create ShowImagesSelectorComponent with borders like other selectors
- Use showSelector pattern for /show-images command
2025-12-13 23:53:28 +01:00
Mario Zechner 883b6b3f9f Remove accidentally committed out.cast file 2025-12-13 23:22:45 +01:00
Mario Zechner 27e68d856e Merge feature/tui-inline-images: Inline image rendering for supported terminals 2025-12-13 23:22:31 +01:00
Mario Zechner b8a0465e30 Update docs for inline images, remove PI_NO_IMAGES env var
- Add CHANGELOG entry for inline image rendering feature
- Add /show-images to slash commands table in README
- Expand Image Support section with inline rendering info
- Add terminal.showImages to settings documentation
- Remove PI_NO_IMAGES environment variable feature
2025-12-13 23:21:18 +01:00
Mario Zechner 53794d78f2 Update existing tool components when toggling show-images setting 2025-12-13 23:15:56 +01:00
Mario Zechner d4b2b4be04 Only query cell size if terminal supports images 2025-12-13 23:15:15 +01:00
Mario Zechner f68a933d2c Add /show-images command to toggle inline image display
- Add terminal.showImages setting to settings-manager.ts
- Add /show-images slash command (only visible if terminal supports images)
- ToolExecutionComponent checks both terminal support and user setting
- Shows text fallback when inline images are disabled
2025-12-13 23:14:46 +01:00
Mario Zechner 215c10664a Fix image aspect ratio by querying terminal cell size
- Add getCellDimensions/setCellDimensions to terminal-image.ts
- TUI queries cell size on startup via CSI 16 t
- Parse response and filter it from user input
- Invalidate and re-render when cell dimensions received
- Pass rows parameter to Kitty protocol for correct aspect ratio
2025-12-13 23:09:05 +01:00
Mario Zechner 3140514d8e Add changelog entry for PR #181 - fix macOS screenshot filenames 2025-12-13 22:07:56 +01:00
badlogic 5c0a84b2d8 Add timestamps to note skill and grep examples for searching 2025-12-13 21:01:32 +00:00
badlogic da2ae69a83 Add Creating a Skill example and clarify standard CLI tools 2025-12-13 21:00:28 +00:00
badlogic 2e2de3905d Update Message History section and remove Key Concepts 2025-12-13 20:48:47 +00:00
badlogic f44549cfe8 Simplify Skills section and move before Events 2025-12-13 20:43:16 +00:00
badlogic 728e1461f6 Update Memory section: remove sessions concept, clarify as rules/preferences 2025-12-13 20:35:34 +00:00
badlogic 7d73e1ff6e Replace Claude mentions with LLM in README 2025-12-13 20:33:01 +00:00
badlogic d4f7e7c4ef Clarify mom's message flow and context management in README 2025-12-13 20:31:04 +00:00
Mario Zechner 776fab41e0 Add coding-agent changelog entry for Gemini 3 Pro thinking levels 2025-12-13 02:11:25 +01:00
Mario Zechner b9fe556d5b Add changelog entry for #176 (Gemini 3 Pro thinking levels) 2025-12-13 02:10:38 +01:00
Mario Zechner 38119ffbb0 Add changelog entry for #173, document attribution format in AGENTS.md 2025-12-13 02:06:39 +01:00
Mario Zechner 36dbb2410e mom: add [Unreleased] section to CHANGELOG 2025-12-13 01:12:34 +01:00
Mario Zechner aed17da044 Release v0.20.2 2025-12-13 01:11:36 +01:00
Mario Zechner 27b7340d18 mom: fix skill paths to use container paths in system prompt
Translate host paths to container paths (/workspace/...) so mom can
read skill files from inside the Docker container.
2025-12-13 01:10:46 +01:00
Mario Zechner aa9dc29bce Add [Unreleased] sections to CHANGELOGs 2025-12-13 00:58:16 +01:00
Mario Zechner 59cf6c717b Release v0.20.1 2025-12-13 00:57:12 +01:00
Mario Zechner e707ac4cd0 coding-agent, mom: add skills API export and mom skills auto-discovery
coding-agent:
- Export loadSkillsFromDir, formatSkillsForPrompt, and related types
- Refactor skills.ts to expose public API

mom:
- Add skills auto-discovery from workspace/skills and channel/skills
- Fix skill loading to use host paths (not Docker container paths)
- Update README and system prompt with SKILL.md format docs
2025-12-13 00:56:10 +01:00
Mario Zechner 439f55b0eb coding-agent: add [Unreleased] section to CHANGELOG 2025-12-12 23:25:57 +01:00
Mario Zechner a5268d2aa7 Release v0.20.0 2025-12-12 23:25:01 +01:00
Mario Zechner 3b2b9abffc coding-agent: change Pi skills to use SKILL.md convention
Breaking change: Pi skills must now be named SKILL.md inside a directory,
matching Codex CLI format. Previously any *.md file was treated as a skill.

Migrate by renaming ~/.pi/agent/skills/foo.md to ~/.pi/agent/skills/foo/SKILL.md
2025-12-12 23:23:17 +01:00
Mario Zechner 236856aa48 Release v0.19.2 2025-12-12 23:03:01 +01:00
Mario Zechner e648febfa9 mom: add timezone and external event creation info to README 2025-12-12 23:00:22 +01:00
Mario Zechner e7d2ac7a5d mom: add Events section to README 2025-12-12 22:57:48 +01:00
Mario Zechner f1451fd8f0 mom: fix [SILENT] to delete thread messages too
Track all thread message timestamps during a run. When response is
[SILENT], delete all thread messages before deleting the main message.
This prevents the 'This message was deleted' tombstone in Slack.
2025-12-12 22:56:56 +01:00
Mario Zechner 8ba6aa6627 mom: add [SILENT] response marker for periodic events
When mom responds with just [SILENT], the status message is deleted
and nothing is posted to Slack. Useful for periodic events that check
for activity but find nothing to report.
2025-12-12 22:50:12 +01:00
Mario Zechner d6809328da mom: add events system for scheduled wake-ups
- Three event types: immediate, one-shot, periodic (cron)
- Events are JSON files in workspace/events/
- EventsWatcher with fs.watch, 100ms debounce
- Queue integration via SlackBot.enqueueEvent() (max 5)
- Fix setTyping race condition causing duplicate messages
- System prompt documents events for mom
- Design doc in docs/events.md
- Add croner dependency for cron scheduling
2025-12-12 22:45:34 +01:00
Mario Zechner 03c404c15f Display loaded skills on startup in interactive mode 2025-12-12 21:28:31 +01:00
Mario Zechner d05a895b7e Add [Unreleased] section 2025-12-12 17:56:26 +00:00
Mario Zechner 948b4115c1 Release v0.19.1 2025-12-12 17:53:45 +00:00
Mario Zechner 5ae29dd531 Document skills system in README 2025-12-12 17:51:03 +00:00
Mario Zechner 9f7a50a2e7 Add [Unreleased] section 2025-12-12 17:36:14 +00:00
Mario Zechner e3dadeb4e7 Release v0.19.0 2025-12-12 17:33:16 +00:00
Mario Zechner 4d9a06b931 mom: add [Unreleased] section 2025-12-12 11:31:04 +01:00
Mario Zechner c6a4c1da95 Release v0.18.8 2025-12-12 11:30:11 +01:00
Mario Zechner 08bfdf798d mom: add [Unreleased] section 2025-12-12 11:16:23 +01:00
Mario Zechner 80a04fb1aa Release v0.18.7 2025-12-12 11:15:26 +01:00
Mario Zechner c43395bac3 mom: add [Unreleased] section 2025-12-12 10:54:49 +01:00
Mario Zechner dba2674681 Release v0.18.6 2025-12-12 10:53:53 +01:00
Mario Zechner e26058a21c mom: add [Unreleased] section to CHANGELOG 2025-12-12 10:02:03 +01:00
Mario Zechner 44e9b1c8e9 Release v0.18.5 2025-12-12 10:00:57 +01:00
Mario Zechner 29cbf16218 docs(coding-agent): add --version flag to CHANGELOG and README 2025-12-12 00:02:17 +01:00
Mario Zechner b276f09816 mom: add [Unreleased] section to CHANGELOG 2025-12-12 00:01:22 +01:00
Mario Zechner 652ac0fa36 Release v0.18.4 2025-12-12 00:00:08 +01:00
Mario Zechner e3576fe016 mom: fix attachment downloads - pass store to SlackBot, process files, use absolute paths 2025-12-11 23:55:49 +01:00
badlogic d277d739b3 docs(mom): add App Home configuration step for enabling direct messages 2025-12-11 22:16:16 +01:00
Mario Zechner a13c8c34f5 Release v0.18.3 2025-12-11 20:34:04 +01:00
Mario Zechner 076cc3173a mom: update changelog with AgentSession integration, closes #115 2025-12-11 20:25:27 +01:00
Mario Zechner 71b776e290 mom: add context usage to thread summary, update docs
- Usage summary now shows context tokens vs model context window
- Updated CHANGELOG.md with all recent changes
- Updated README.md with new file structure (log.jsonl/context.jsonl)
2025-12-11 20:24:05 +01:00
Mario Zechner 99fe4802ef mom: rewrite message handling - log.jsonl and context.jsonl sync
- log.jsonl is source of truth, context.jsonl syncs from it at run start
- Backfill fetches missing messages from Slack API on startup
- Messages sent while mom is busy are logged and synced on next run
- Channel chatter (no @mention) logged but doesn't trigger processing
- Pre-startup messages (replayed by Slack) logged but not processed
- Stop command executes immediately, not queued
- Session header written immediately on new session creation
- Deduplicate messages by timestamp
- Strip @mentions from backfilled messages
- Remove old slack.ts and main.ts, rename *-new.ts versions
2025-12-11 20:13:29 +01:00
Mario Zechner e513127b3b mom: fix duplicate bot response logging, remove debug logs
- Remove bot response logging from agent.ts (already done in ctx.respond)
- Remove all debug console.log statements
- Clean up unused store parameter
2025-12-11 13:39:32 +01:00
Mario Zechner cc71c0a49e mom: fix duplicate logging
- Remove user message logging from agent.ts (Slack handler already logs it)
- Add excludeTimestamp param to syncFromLog to skip current @mention
- Sync happens once before each prompt with current message excluded
2025-12-11 13:26:45 +01:00
Mario Zechner 5a231abe4c mom: remove last_prompt.txt debug file (context.jsonl is source of truth) 2025-12-11 13:22:59 +01:00
Mario Zechner ca23ade9f8 mom: sync user messages from log.jsonl to context.jsonl before each agent run
- Ensures channel chatter and backfilled messages are in context
- Syncs on session creation and before each subsequent run
- User messages formatted as '[username]: text' in context
2025-12-11 13:20:40 +01:00
Mario Zechner 3f6db8e99c mom: refactor to use AgentSession for context management
- Export AgentSession, SessionManager, SettingsManager, compaction from coding-agent
- Create MomSessionManager for channel-based context.jsonl storage
- Create MomSettingsManager for mom-specific settings
- Refactor agent.ts to use AgentSession instead of ephemeral Agent
- Split logging: tool results go to context.jsonl, human messages to log.jsonl
- Enable auto-compaction and overflow detection from coding-agent

Part of #115
2025-12-11 13:09:01 +01:00
Mario Zechner de7f71838c mom: add coding-agent dependency, update compaction docs 2025-12-11 13:04:45 +01:00
Mario Zechner 2a0f239288 mom: remove dynamic timestamp from system prompt for better cache hits 2025-12-11 12:26:59 +01:00
Mario Zechner 078661c3b1 Restore assistant bridge message insertion for compat flag 2025-12-11 00:36:35 +01:00
Mario Zechner b0628786a7 Add [Unreleased] section 2025-12-10 23:40:27 +01:00
Mario Zechner b40ecf0ee1 Release v0.18.2 2025-12-10 23:39:16 +01:00
Mario Zechner bb445d24f1 Auto-retry on transient provider errors (overloaded, rate limit, 5xx)
- Add retry logic with exponential backoff (2s, 4s, 8s) in AgentSession
- Disable Anthropic SDK built-in retries (maxRetries: 0) to allow app-level handling
- TUI shows retry status with Escape to cancel
- RPC mode: add set_auto_retry, abort_retry commands and auto_retry_start/end events
- Configurable via settings.json: retry.enabled, retry.maxRetries, retry.baseDelayMs
- Exclude context overflow errors from retry (handled by compaction)

fixes #157
2025-12-10 23:36:46 +01:00
Mario Zechner 79f5c6d22e Fix git branch indicator in subdirectories
Walk up directory hierarchy to find .git/HEAD instead of only checking cwd.

fixes #156
2025-12-10 22:52:19 +01:00
Mario Zechner 1fe87bc50d Document that build must run before check
The web-ui package uses tsc which requires compiled .d.ts files from
dependencies to exist.

closes #167
2025-12-10 22:50:34 +01:00