Commit graph

466 commits

Author SHA1 Message Date
Mario Zechner
de39f1f493 Add custom headers support for models.json
Fixes #39

- Added headers field to Model type (provider and model level)
- Model headers override provider headers when merged
- Supported in all APIs:
  - Anthropic: defaultHeaders
  - OpenAI (completions/responses): defaultHeaders
  - Google: httpOptions.headers
- Enables bypassing Cloudflare bot detection for proxied endpoints
- Updated documentation with examples

Also fixed:
- Mistral/Chutes syntax error (iif -> if)
- process.env.ANTHROPIC_API_KEY bug (use delete instead of = undefined)
2025-11-20 17:05:31 +01:00
Mario Zechner
425890e674 Merge pull request #42 from butelo/fix/chutes-ai-provider-400-error
fix 400 error when trying to use chutes ai provider
2025-11-20 16:39:14 +01:00
butelo
b76f7a0f88 Merge branch 'main' into fix/chutes-ai-provider-400-error 2025-11-20 15:04:29 +01:00
butelo
bd1731c9ba fix 400 error when trying to use chutes ai provider 2025-11-20 14:56:22 +01:00
Mario Zechner
4ccc7d47e0 Release v0.7.25 2025-11-20 13:41:38 +01:00
Mario Zechner
9555b75674 Add PR and contributor credits to CHANGELOG 2025-11-20 13:41:19 +01:00
Mario Zechner
a1215fc32c Add table of contents to README 2025-11-20 13:20:48 +01:00
Mario Zechner
ee5228becf Fix help text to use 'pi' instead of 'coding-agent' 2025-11-20 13:00:38 +01:00
Mario Zechner
95247a3e5e Add documentation for model cycling feature 2025-11-20 12:58:31 +01:00
Mario Zechner
fecf9734b0 Add --models parameter for quick model cycling with Ctrl+P
- Add --models CLI arg accepting comma-separated patterns
- Implement smart matching: prefers aliases over dated versions
- Add Ctrl+P to cycle through scoped models (or all if no scope)
- Show model scope hint at startup
- Update help text with examples

Co-authored-by: Tino Ehrich <tino.ehrich@hey.com>
2025-11-20 12:57:20 +01:00
Mario Zechner
097ff25ed4 Release v0.7.24 2025-11-20 12:41:00 +01:00
Mario Zechner
c7e4c84731 Simplify thinking level display in footer (remove 'Thinking:' prefix) 2025-11-20 12:38:55 +01:00
Mario Zechner
23d6746bb9 Don't show 'Thinking: off' in footer when thinking is disabled 2025-11-20 12:37:17 +01:00
Mario Zechner
cfcdcf055d Add CHANGELOG and README docs for thinking level cycling feature 2025-11-20 12:35:54 +01:00
Mario Zechner
973a129407 Merge PR #36: Add Shift+Tab thinking level cycling with visual border feedback 2025-11-20 12:34:12 +01:00
Mario Zechner
d771475f98 Fix superfluous newline in update notification 2025-11-20 12:28:18 +01:00
Mario Zechner
e3c4dd22ae Fix TypeScript error in version check 2025-11-20 12:00:51 +01:00
Mario Zechner
b3d4478b61 Release v0.7.23 2025-11-20 11:59:17 +01:00
Mario Zechner
ddb5a4497f Remove the garbage the agent left behind and commited 2025-11-20 11:03:01 +01:00
Tino Ehrich
ac34a810dd fix: change thinking level cycling from Ctrl+T to Shift+Tab 2025-11-19 18:07:53 +01:00
Tino Ehrich
5336843de8 fix: change thinking level cycling from Tab to Ctrl+T
Tab key was preventing file path autocomplete from working.
Changed to Ctrl+T to avoid conflict with Tab completion.

- Tab now works normally for file/path autocomplete
- Ctrl+T cycles through thinking levels
- Shows message if model doesn't support thinking
2025-11-19 12:12:23 +01:00
Tino Ehrich
b367f5bec6 refactor: improve thinking level display in footer
Change from 'off (tab to cycle)' to 'Thinking: off' for better clarity.
Format: 'model-id • Thinking: [level]'
2025-11-19 12:12:10 +01:00
Tino Ehrich
0df48f6b33 feat: add visual thinking level indicator via border colors
The horizontal borders around the input editor now change color based on
the current thinking level, providing immediate visual feedback:

- off: gray (default)
- minimal: dim blue
- low: blue
- medium: cyan
- high: magenta

The more thinking, the brighter/more vibrant the color.

Changes:
- Add public borderColor property to Editor component (packages/tui)
- Use borderColor instead of hardcoded chalk.gray for borders
- Add getThinkingBorderColor() helper in TuiRenderer
- Add updateEditorBorderColor() to apply color changes
- Update border color when:
  - Cycling with Tab key
  - Selecting via /thinking command
  - Restoring session with thinking level set
2025-11-19 12:12:10 +01:00
Tino Ehrich
9e8373b86a feat: add Tab key to cycle through thinking levels
- Add onTab callback to CustomEditor
- Implement cycleThinkingLevel() in TuiRenderer
- Only works when model supports reasoning
- Cycles through: off → minimal → low → medium → high → off
- Update footer to show current thinking level with '(tab to cycle)' hint
- Update header instructions to mention tab for thinking
- Show notification when thinking level changes
2025-11-19 12:12:10 +01:00
Mario Zechner
1f68d6eb40 Release v0.7.22 2025-11-19 01:50:45 +01:00
Mario Zechner
1b28780155 Release v0.7.21 2025-11-19 00:56:16 +01:00
Mario Zechner
5112fc6ba9 Release v0.7.20 2025-11-18 22:52:49 +01:00
Mario Zechner
38ac29acfb Add ANSI-aware word wrapping to TUI components
- Created shared wrapTextWithAnsi() function in utils.ts
- Handles word-based wrapping while preserving ANSI escape codes
- Properly tracks active ANSI codes across wrapped lines
- Supports multi-byte characters (emoji, surrogate pairs)
- Updated Markdown and Text components to use shared wrapping
- Removed duplicate wrapping logic (158 lines total)
2025-11-18 22:26:24 +01:00
Mario Zechner
22d8a0ae4a Release v0.7.18 2025-11-18 22:08:44 +01:00
Mario Zechner
a11c1aa4ff Release v0.7.17 2025-11-18 17:49:12 +01:00
Mario Zechner
587d7c39a4 feat(coding-agent): add OAuth authentication for Claude Pro/Max
- Add /login and /logout commands for OAuth flow
- OAuth tokens stored in ~/.pi/agent/oauth.json with 0600 permissions
- Auto-refresh tokens when expired (5min buffer)
- Priority: OAuth > ANTHROPIC_OAUTH_TOKEN env > ANTHROPIC_API_KEY env
- Fix model selector async loading and re-render
- Add bracketed paste support to Input component for long codes
- Update README.md with OAuth documentation
- Add implementation docs and testing checklist
2025-11-18 17:33:33 +01:00
Mario Zechner
387cc97bac Fix Anthropic API rejection when resubmitting aborted thinking blocks
- Convert thinking blocks with missing/empty signatures to text blocks
- Prevents 400 error: 'Invalid signature in thinking block'
- Occurs when stream is aborted mid-thinking and message is resubmitted
2025-11-18 14:36:57 +01:00
Mario Zechner
6680034a64 Release v0.7.16 2025-11-17 14:12:04 +01:00
Mario Zechner
f2b3953711 v0.7.15: Anthropic OAuth support 2025-11-17 12:53:57 +01:00
Mario Zechner
063b7e0f11 chore: bump coding-agent to 0.7.14 - fix Anthropic OAuth and Mistral API compatibility 2025-11-17 12:46:59 +01:00
Mario Zechner
a5ed6ab641 v0.7.13: Unicode input support for TUI editor 2025-11-16 23:08:10 +01:00
Mario Zechner
21f24061bb Merge branch 'fix/support-umlauts-and-unicode' 2025-11-16 23:06:06 +01:00
Mario Zechner
3b6ef6cf57 refactor(tui): Use explicit charCode check for unicode filtering
- Use 'charCodeAt(0) >= 32' instead of open 'else' in handleInput()
- Use same filter in handlePaste() for consistency
- Prevents control characters while allowing all unicode
- More explicit and safer than accepting everything
2025-11-16 23:05:19 +01:00
Mario Zechner
0c5cbd0068 v0.7.12: Custom models/providers support via models.json
- Add ~/.pi/agent/models.json config for custom providers (Ollama, vLLM, etc.)
- Support all 4 API types (openai-completions, openai-responses, anthropic-messages, google-generative-ai)
- Live reload models.json on /model selector open
- Smart model defaults per provider (claude-sonnet-4-5, gpt-5.1-codex, etc.)
- Graceful session fallback when saved model missing or no API key
- Validation errors show precise file/field info in CLI and TUI
- Agent knows its own README.md path for self-documentation
- Added gpt-5.1-codex (400k context, 128k output, reasoning)

Fixes #21
2025-11-16 22:56:24 +01:00
Mario Zechner
112ce6e5d1 Footer shouldn't explode when no model is given. 2025-11-16 22:35:27 +01:00
Mario Zechner
e0c2745989 Add gpt-5.1-codex to model list 2025-11-16 22:35:09 +01:00
Mario Rodler
4a83da00c4 Merge branch 'main' into fix/support-umlauts-and-unicode 2025-11-16 21:08:31 +01:00
Mario Rodler
b37d601317 test(editor): Simplify and refine Unicode handling tests for clarity and consistency 2025-11-16 21:05:49 +01:00
Mario Zechner
9b08f92dd9 Filter model selector by API keys and add user-facing documentation
- Model selector now only shows models with configured API keys
- Added yellow hint in model selector UI explaining the filtering
- Updated README.md to document the filtering behavior in both API Keys and /model sections
- Bumped version to 0.7.11
2025-11-16 21:01:31 +01:00
Mario Zechner
977dfec5c9 Merge pull request #19 from CarlosGtrz/filter-model-selector-by-api-key
Filter model selector to only show models with configured API keys
2025-11-16 20:43:02 +01:00
Mario Rodler
ce0c42f539 test(editor): Add tests for handling extended characters, emojis, and special key inputs 2025-11-16 18:15:21 +01:00
Mario Rodler
c8dcf1cdae feat(tui): Editor now handles extended character input (e.g., umlauts) and updates key binding documentation 2025-11-16 18:09:17 +01:00
Carlos Gutierrez
58eefa8d3d Filter model selector to only show models with configured API keys 2025-11-15 18:49:30 -07:00
Mario Zechner
3932c5e04c Add lifecycle callbacks to SandboxRuntimeProvider for abort signal support
- Added onExecutionStart(sandboxId, signal) - called when sandbox execution begins
- Added onExecutionEnd(sandboxId) - called when sandbox execution ends
- Integrated callbacks in SandboxedIframe.execute()
- Enables providers to track and cancel async operations (e.g., userScript executions)
2025-11-16 00:56:20 +01:00
Mario Zechner
901449b38a Pin pdfjs-dist to exact version 5.4.394 to fix worker version mismatch 2025-11-16 00:03:58 +01:00