Commit graph

1166 commits

Author SHA1 Message Date
Mario Zechner
3424550d21 Improve documentation: README settings table, philosophy section, custom-tools intro, rpc hook_error event, hooks import aliases 2025-12-17 22:04:28 +01:00
Mario Zechner
5e5bdadbf9 Improve system prompt docs, clean up theme/skills/hooks docs, fix toolResults type
- System prompt: clearer pointers to specific doc files
- theme.md: added thinkingXhigh, bashMode tokens, fixed Theme class methods
- skills.md: rewrote with better framing, examples, and skill repositories
- hooks.md: fixed timeout/error handling docs, added custom tool interception note
- Breaking: turn_end event toolResults changed from AppMessage[] to ToolResultMessage[]
2025-12-17 21:27:28 +01:00
Mario Zechner
5cc0126991 Include examples/ folder in binary release archives 2025-12-17 21:27:07 +01:00
Mario Zechner
c18adef16e Pin Bun to 1.3.4 for cross-compile compatibility 2025-12-17 18:45:14 +01:00
Mario Zechner
ee4f24fb03 Fix build-binaries workflow: use latest Bun version 2025-12-17 18:40:52 +01:00
Mario Zechner
432852c9c5 Fix build: pin Bun to 1.2.20 for cross-compilation support 2025-12-17 18:40:19 +01:00
Mario Zechner
4894fa411c Release v0.23.2
Fixed Claude models via GitHub Copilot re-answering all previous prompts.

fixes #209
2025-12-17 17:56:00 +01:00
Mario Zechner
b5c3d77219 Add changelog entry for markdown table fix 2025-12-17 17:14:12 +01:00
Ahmed Kamal
c1113deea9
Fix markdown tables overflowing/wrapping in TUI (width-aware rendering) (#206)
Fix markdown tables overflowing/wrapping in TUI
2025-12-17 17:13:27 +01:00
Peter Steinberger
d70edf571e
fix(coding-agent): detect image MIME via file-type (#205)
Co-authored-by: Mario Zechner <badlogicgames@gmail.com>
2025-12-17 17:11:56 +01:00
Mario Zechner
46ba48a35d Release v0.23.1 2025-12-17 16:43:09 +01:00
Mario Zechner
ed8ee03e22 Add available imports section to custom tools docs 2025-12-17 16:41:55 +01:00
Mario Zechner
909989066a Fix TUI performance regression: add caching to Box, use Text directly for built-in tools 2025-12-17 16:39:23 +01:00
Mario Zechner
48b481eb85 Add [Unreleased] section to changelog 2025-12-17 16:14:36 +01:00
Mario Zechner
67b73d018f Release v0.23.0 2025-12-17 16:13:32 +01:00
Mario Zechner
aedce30618 Re-export Type from typebox, update examples to import from pi-coding-agent 2025-12-17 16:10:01 +01:00
Mario Zechner
4e476f603e Add .opencode to gitignore 2025-12-17 16:06:53 +01:00
Mario Zechner
0ef73ad1dc Add file-trigger hook example 2025-12-17 16:06:30 +01:00
Mario Zechner
e7097d911a Custom tools with session lifecycle, examples for hooks and tools
- Custom tools: TypeScript modules that extend pi with new tools
  - Custom TUI rendering via renderCall/renderResult
  - User interaction via pi.ui (select, confirm, input, notify)
  - Session lifecycle via onSession callback for state reconstruction
  - Examples: todo.ts, question.ts, hello.ts

- Hook examples: permission-gate, git-checkpoint, protected-paths

- Session lifecycle centralized in AgentSession
  - Works across all modes (interactive, print, RPC)
  - Unified session event for hooks (replaces session_start/session_switch)

- Box component added to pi-tui

- Examples bundled in npm and binary releases

Fixes #190
2025-12-17 16:03:23 +01:00
Mario Zechner
295f51b53f Release v0.22.5 2025-12-17 01:22:13 +01:00
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
Markus Ylisiurunen
4b04c87b3d
add new getCursor and getLines methods to editor (#201) 2025-12-16 20:13:43 +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
Ahmed Kamal
c2dea0ce8b
Add X-Initiator header for GitHub Copilot (#200) 2025-12-16 14:05:22 +01:00
Markus Ylisiurunen
92577316e0
Fix double new line issues in markdown rendering (#199)
* prevent double blank lines after markdown elements

* prevent double blank lines after markdown elements
2025-12-16 00:25:06 +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 Zechner
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