Commit graph

311 commits

Author SHA1 Message Date
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
cau1k
1871962e2e
fix: model context windows 2025-12-15 00:17:59 -05:00
cau1k
7d4cdd09c3
feat: added filter for generate-models and regenerated
- blacklisted gpt-4o-2024-08-06, gpt-4o-2024-11-20, gpt-3.5-turbo-0613,
gpt-4, gpt-4-0613
2025-12-14 22:26:43 -05:00
cau1k
5f590b7c53
feat: generate models base on copilot /models endpoint, requires GH token 2025-12-14 18:42:57 -05:00
cau1k
17ebb9a19d
feat: models.dev in generate models - too many deprecated models
could have opted for a whitelist but we'll just fetch from the copilot
/models endpoint
2025-12-14 17:47:42 -05:00
cau1k
ccae7a4e0e
feat: initial impl
- add GitHub Copilot model discovery (env token fallback, headers,
compat) plus fallback list and quoted provider keys in generated map
- surface Copilot provider end-to-end (KnownProvider/default, env+OAuth
token refresh/save, enterprise base URL swap, available only when
creds/env exist)
- tweak interactive OAuth UI to render instruction text and prompt
placeholders

gpt-5.2-high took about 35 minutes. It had a lot of trouble with `npm
check`  and went off on a "let's adjust every tsconfig" side quest.
Device code flow works, but the ai/scripts/generate-models.ts impl is
wrong as models from months ago are missing and only those deprecated
are accessible in the /models picker.
2025-12-14 17:18:13 -05:00
Mario Zechner
3b440bb13b Release v0.21.0 2025-12-13 23:55:31 +01:00
Mario Zechner
b9fe556d5b Add changelog entry for #176 (Gemini 3 Pro thinking levels) 2025-12-13 02:10:38 +01:00
Markus Ylisiurunen
6b48fa58d7
Support thinking level configuration for Gemini 3 Pro models (#176)
* support Google thinking level configuration for Gemini 3 Pro models

* relax model ID check for gemini 3 pro
2025-12-13 02:09:54 +01:00
Mario Zechner
aed17da044 Release v0.20.2 2025-12-13 01:11:36 +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
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
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
e3dadeb4e7 Release v0.19.0 2025-12-12 17:33:16 +00:00
Nico Bailon
09bca9672f
Add skills system with Claude Code compatibility (#171)
* Add skills system with Claude Code compatibility

* consolidate skills into single module, merge loaders, add <available_skills> XML tags

* add Codex CLI skills compatibility, skip hidden/symlinks
2025-12-12 18:24:52 +01:00
Mario Zechner
c6a4c1da95 Release v0.18.8 2025-12-12 11:30:11 +01:00
Mario Zechner
80a04fb1aa Release v0.18.7 2025-12-12 11:15:26 +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
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
Mario Zechner
a13c8c34f5 Release v0.18.3 2025-12-11 20:34:04 +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
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
3d35e7c469 Fix branch selector for single message and --no-session mode
- Allow branch selector to open with single user message (changed <= 1 to === 0 check)
- Support in-memory branching for --no-session mode (no files created)
- Add isEnabled() getter to SessionManager
- Update sessionFile getter to return null when sessions disabled
- Update SessionSwitchEvent types to allow null session files
- Add branching tests for single message and --no-session scenarios

fixes #163
2025-12-10 22:41:32 +01:00
Mario Zechner
751e10e78b Add [Unreleased] section to changelogs 2025-12-10 21:41:50 +01:00
Mario Zechner
f931c57726 Release v0.18.1 2025-12-10 21:25:15 +01:00
Mario Zechner
1ce09681b1 Add issue links to changelog entries 2025-12-10 21:24:05 +01:00
Mario Zechner
c91afd76f1 Update changelogs for recent fixes 2025-12-10 21:23:08 +01:00
Mario Zechner
76312ea7e8 Fix Mistral 400 errors after aborted assistant messages
- Skip empty assistant messages (no content, no tool calls) to avoid
  Mistral's 'Assistant message must have either content or tool_calls'
  error
- Remove synthetic assistant bridge message after tool results (Mistral
  no longer requires this as of Dec 2024)
- Add test for empty assistant message handling

Follow-up to #165
2025-12-10 21:13:33 +01:00
Mario Zechner
99b4b1aca0 Add Mistral as AI provider
- Add Mistral to KnownProvider type and model generation
- Implement Mistral-specific compat handling in openai-completions:
  - requiresToolResultName: tool results need name field
  - requiresAssistantAfterToolResult: synthetic assistant message between tool/user
  - requiresThinkingAsText: thinking blocks as <thinking> text
  - requiresMistralToolIds: tool IDs must be exactly 9 alphanumeric chars
- Add MISTRAL_API_KEY environment variable support
- Add Mistral tests across all test files
- Update documentation (README, CHANGELOG) for both ai and coding-agent packages
- Remove client IDs from gemini.md, reference upstream source instead

Closes #165
2025-12-10 20:36:19 +01:00
Lukas Pitschl
a248e2547a
fix(ai): remove global process.env.ANTHROPIC_API_KEY deletion (#164)
* fix(ai): remove global process.env.ANTHROPIC_API_KEY deletion

The code was deleting process.env.ANTHROPIC_API_KEY to prevent the SDK
from using it when OAuth tokens were provided. However, this was a global
mutation that affected the entire Node.js process, causing the API key to
be unavailable after the first prompt.

The Anthropic SDK constructor already handles credential selection via
parameters (apiKey: null, authToken: token for OAuth vs apiKey: key for
regular keys), so the environment variable deletion was unnecessary.

* Update CHANGELOG.md for API key fix
2025-12-10 18:12:16 +01:00
Mario Zechner
7785b7c93f Release v0.18.0 2025-12-10 01:18:13 +01:00
Mario Zechner
7c553acd1e Add hooks system with pi.send() for external message injection
- Hook discovery from ~/.pi/agent/hooks/, .pi/hooks/, --hook flag
- Events: session_start, session_switch, agent_start/end, turn_start/end, tool_call, tool_result, branch
- tool_call can block execution, tool_result can modify results
- pi.send(text, attachments?) to inject messages from external sources
- UI primitives: ctx.ui.select/confirm/input/notify
- Context: ctx.exec(), ctx.cwd, ctx.sessionFile, ctx.hasUI
- Docs shipped with npm package and binary builds
- System prompt references docs folder
2025-12-10 00:50:30 +01:00
Mario Zechner
04d59f31ea feat(coding-agent): implement hooks system
- Add hooks infrastructure in core/hooks/ (loader, runner, types)
- HookUIContext interface with mode-specific implementations
- Interactive mode: TUI-based selector/input/confirm dialogs
- RPC mode: JSON protocol for hook UI requests/responses
- Print mode: no-op UI context (hooks run but can't prompt)
- AgentSession.branch() now async, returns { selectedText, skipped }
- Settings: hooks[] and hookTimeout configuration
- Export hook types from package for hook authors

Based on PR #147 proposal, adapted for new architecture.
2025-12-09 22:17:12 +01:00
Mario Zechner
55032f1697 Add [Unreleased] section to changelogs 2025-12-09 21:51:01 +01:00
Mario Zechner
2d9ecd1750 Release v0.17.0 2025-12-09 21:47:39 +01:00
Mario Zechner
5a9d844f9a Simplify compaction: remove proactive abort, use Agent.continue() for retry
- Add agentLoopContinue() to pi-ai for resuming from existing context
- Add Agent.continue() method and transport.continue() interface
- Simplify AgentSession compaction to two cases: overflow (auto-retry) and threshold (no retry)
- Remove proactive mid-turn compaction abort
- Merge turn prefix summary into main summary
- Add isCompacting property to AgentSession and RPC state
- Block input during compaction in interactive mode
- Show compaction count on session resume
- Rename RPC.md to rpc.md for consistency

Related to #128
2025-12-09 21:43:49 +01:00
Mario Zechner
de3fd172a9 Update generated models 2025-12-09 15:44:45 +01:00