Commit Graph
100 Commits
Author SHA1 Message Date
Mario Zechner d9e87d26c4 docs(coding-agent): reorder auth section - subscriptions first, then API keys 2026-01-25 21:39:41 +01:00
Mario Zechner 5946c8211c docs(coding-agent): rename API Keys to Authentication 2026-01-25 21:37:56 +01:00
Mario Zechner 1b705a92b8 docs(coding-agent): move OAuth details to docs/authentication.md, simplify README 2026-01-25 21:37:25 +01:00
Mario Zechner e112d2a917 docs(coding-agent): move terminal setup to docs/terminal-setup.md 2026-01-25 21:34:07 +01:00
Mario Zechner d7410fafc0 docs(coding-agent): show how to run pi after install 2026-01-25 21:32:34 +01:00
Mario Zechner 455d576d70 docs(coding-agent): move shell aliases to its own section (not Windows-specific) 2026-01-25 21:31:41 +01:00
Mario Zechner 10f530f605 docs(coding-agent): remove binary mentions from installation 2026-01-25 21:30:46 +01:00
Mario Zechner 1a8842e355 docs(coding-agent): simplify installation, link to releases for binaries 2026-01-25 21:29:31 +01:00
Mario Zechner 0be68c9b4b docs(coding-agent): clarify that missing description prevents skill loading 2026-01-25 20:58:02 +01:00
Mario Zechner 6cc370c446 docs(coding-agent): clarify how to toggle settings and invoke templates
- skills.md: mention /settings and settings.json for toggling skill commands
- prompt-templates.md: add Usage section with examples
2026-01-25 20:56:24 +01:00
Mario Zechner c12d18483d docs(coding-agent): clarify skill invocation is model behavior 2026-01-25 20:55:10 +01:00
Mario Zechner a4cb9ff02a docs(coding-agent): mention /skill:name as alternative to model invocation 2026-01-25 20:54:39 +01:00
Mario Zechner b29de1c73d docs(coding-agent): note that models often need prompting to use skills 2026-01-25 20:54:10 +01:00
Mario Zechner 77469e1599 docs(coding-agent): link to agentskills.io integration spec for XML format 2026-01-25 20:53:43 +01:00
Mario Zechner ff50d45c04 docs(coding-agent): add instructions for using skills from other harnesses 2026-01-25 20:52:42 +01:00
Mario Zechner dbbb658628 docs(coding-agent): clarify lenient Agent Skills standard compliance 2026-01-25 20:50:55 +01:00
Mario Zechner 3dca4979e4 docs(coding-agent): fix token count in themes.md, rewrite skills.md
- Fixed themes.md: 50 -> 51 color tokens
- Rewrote skills.md to match structure of other docs (TOC, concise sections)
- Removed redundant content from skills.md while keeping all essential info
2026-01-25 20:48:47 +01:00
Mario Zechner 728dc86d49 fix(coding-agent): correct theme schema URL path 2026-01-25 20:46:22 +01:00
Mario Zechner d79eb99cd2 docs(coding-agent): merge theme.md into themes.md, add hot reload info
- Merged theme.md content into themes.md
- Added hot reload documentation
- Updated all references from theme.md to themes.md
- Fixed outdated info (vars not defs, complete example with all 50 tokens)
- Removed dev-focused Implementation section
2026-01-25 20:39:49 +01:00
Mario Zechner 94952bd6c0 docs(coding-agent): update README intro, add packages/prompt-templates/themes docs
- Rewrote README intro to emphasize extensibility and pi packages
- Added Pi Packages section to README
- Created docs/packages.md covering install, sources, manifest, filtering
- Created docs/prompt-templates.md covering format and arguments
- Created docs/themes.md with overview linking to theme.md
2026-01-25 20:33:19 +01:00
Mario Zechner 4bb21b7f5f fix(coding-agent): change sort keybinding from Ctrl+N to Ctrl+S in /resume picker
Also add changelog entries for #863 session rename feature.
2026-01-25 19:43:16 +01:00
Mario Zechner 676de103e1 Update models/package-lock.json after adding deps 2026-01-25 19:29:02 +01:00
Mario Zechner b1211261be docs(coding-agent): add changelog entry for extension shortcut fix (#947) 2026-01-25 19:21:18 +01:00
Mario Zechner 62209c4a0f docs: add tmux testing instructions to AGENTS.md 2026-01-25 19:20:14 +01:00
Mario Zechner 0faba293e6 fix(coding-agent): truncate bash hint line to terminal width
Fixes TUI crash on narrow terminals (< 40 chars) when displaying
collapsed bash output with 'earlier lines' hint.

fixes #941
2026-01-25 19:19:41 +01:00
Mario Zechner b0c050582a fix(coding-agent): update test expectations for trailing period in read tool messages 2026-01-25 19:08:52 +01:00
Mario Zechner c94e8a122e Merge pull request #945 from Perlence/fix/editor-multiline-insert
fix(tui): handle multiline text in insertTextAtCursor()
2026-01-25 15:55:12 +01:00
Mario Zechner b9d8b99c76 Merge pull request #942 from haoqixu/http-proxy
feat(ai): Support HTTP proxy through environment variables
2026-01-25 15:52:14 +01:00
Mario Zechner 3635e45ffd feat(ai): add OpenRouter provider routing support (#859) 2026-01-25 03:34:52 +01:00
Mario Zechner a6d878e804 fix(ai): default tool call arguments to empty object for Google providers
When Google providers return tool calls without an args field (common for
no-argument tools), the arguments field was undefined. This breaks
subsequent API calls that require tool_use.input to be present.

Now defaults to {} when args is missing.

Related: clawdbot/clawdbot#1509
2026-01-25 03:18:02 +01:00
Mario Zechner d74fd82673 docs(coding-agent): add pi config to CLI Reference 2026-01-25 03:13:58 +01:00
Mario Zechner 150128fd2c feat(coding-agent): add pi config TUI to manage resources
Adds a new 'pi config' command with a TUI to list and toggle package
resources (extensions, skills, prompts, themes).

- Displays resources grouped by source (packages, user, project)
- Subgroups by resource type (Extensions, Skills, Prompts, Themes)
- Toggle enabled/disabled state with space
- Filter resources by typing
- Supports +pattern for force-include, !pattern for exclude
- Properly reads exclusion patterns from settings.json

fixes #938
2026-01-25 03:12:21 +01:00
Mario Zechner ef5149fdf6 Fixes #933 2026-01-25 02:51:05 +01:00
Mario Zechner 6b4188fa0b Fixes #933 2026-01-25 02:47:17 +01:00
Mario Zechner 349c6420c7 fix(coding-agent): setWorkingMessage() now works in agent_start handlers
Extensions calling setWorkingMessage() in agent_start handlers previously
had no effect because the loading animation didn't exist yet. Now the
message is queued and applied once the loader is created.

Fixes #935
2026-01-25 02:37:12 +01:00
Mario Zechner 3e8eb956b3 feat(coding-agent): resolve resources with enabled state 2026-01-25 02:13:24 +01:00
Mario Zechner 9dc2b9b163 docs(coding-agent): document pi-package keyword for npm discoverability 2026-01-25 01:40:26 +01:00
Mario Zechner 353ac792eb chore(gitlab-duo): use pi's own GitLab OAuth client ID 2026-01-25 01:12:50 +01:00
Mario Zechner 7b920f27d2 fix(coding-agent): check npm package version before using cached copy
For temporary npm extensions (-e npm:...):
- Unpinned packages: fetch latest version from registry and reinstall if newer
- Pinned packages: reinstall if cached version doesn't match
2026-01-25 00:57:58 +01:00
Mario Zechner 0d24ddbb03 fix(ai): use model.api instead of hardcoding api type in streaming functions
- anthropic.ts: use model.api instead of hardcoding 'anthropic-messages'
- openai-responses.ts: use model.api instead of hardcoding 'openai-responses'
- gitlab-duo: simplify to use actual model IDs, export MODELS array
2026-01-25 00:52:34 +01:00
Mario Zechner 7019fdb92b fix(gitlab-duo): use Responses API for all GPT models
Ensures consistent tool call ID format when switching between models.
2026-01-25 00:29:05 +01:00
Mario Zechner 758baa9fec refactor: rename custom provider examples
- custom-provider -> custom-provider-anthropic
- gitlab-duo -> custom-provider-gitlab-duo
- Update READMEs with custom provider section
2026-01-25 00:18:13 +01:00
Mario Zechner 7caa08999e fix: use template literal in test.ts 2026-01-25 00:13:44 +01:00
Mario Zechner 7a5cfdaed0 fix: apply extension provider registrations before model resolution
- Extensions register providers via pendingProviderRegistrations
- These were only applied in bindCore() during AgentSession creation
- But model resolution in main.ts happens before session creation
- Fix: apply pending registrations immediately after loading extensions
- Also fix gitlab-duo to pass Authorization header instead of apiKey
2026-01-25 00:13:20 +01:00
Mario Zechner dd01d83e64 fix: use opencode's OAuth client ID for localhost redirects 2026-01-24 23:53:56 +01:00
Mario Zechner 639d706156 fix: use correct GitLab OAuth redirect URI with port 8080 2026-01-24 23:52:04 +01:00
Mario Zechner 3e6d8dc72a feat: add GitLab Duo provider extension example
- Delegates to pi-ai's built-in Anthropic/OpenAI streaming
- OAuth support with GitLab's bundled client ID
- Direct access token caching (25 min TTL)
- Models: duo-chat-opus/sonnet/haiku-4-5, duo-chat-gpt-5-1/mini/codex
- No external dependencies beyond pi-ai
2026-01-24 23:51:17 +01:00
Mario Zechner 2c5d202778 chore: add custom-provider to workspaces for auto-install 2026-01-24 23:22:33 +01:00
Mario Zechner 6aad6e30ce refactor: convert custom-provider example to package with deps
- Move custom-provider.ts to custom-provider/index.ts
- Add package.json with @anthropic-ai/sdk dependency
- Extension now requires npm install before use
2026-01-24 23:21:19 +01:00
Mario Zechner d4bd1a956b docs: rewrite custom-provider.md with actual stream pattern
- Document stream.push/end pattern instead of yield
- Link to existing provider implementations on GitHub
- Add testing section with list of test files to run
- Include proper content block and tool call examples
2026-01-24 23:18:36 +01:00
Mario Zechner 177c694406 feat: custom provider support with streamSimple
- Add resetApiProviders() to clear and re-register built-in providers
- Add createAssistantMessageEventStream() factory for extensions
- Add streamSimple support in ProviderConfig for custom API implementations
- Call resetApiProviders() on /reload to clean up extension providers
- Add custom-provider.md documentation
- Add custom-provider.ts example with full Anthropic implementation
- Update extensions.md with streamSimple config option
2026-01-24 23:15:11 +01:00
Mario Zechner c06163bc59 docs(ai): document api registry 2026-01-24 23:15:11 +01:00
Mario Zechner c725135a76 refactor(ai): register api providers 2026-01-24 23:15:11 +01:00
Mario Zechner 3256d3c083 refactor(oauth): add provider registry 2026-01-24 23:15:11 +01:00
Mario Zechner 89636cfe6e fix(coding-agent): improve read tool description for full file reads 2026-01-24 23:15:11 +01:00
Mario Zechner 79ded84d46 Merge pull request #936 from Perlence/fix/extension-editor-padding-x
fix(coding-agent): propagate paddingX to custom editors
2026-01-24 20:48:41 +01:00
Mario Zechner 39b94ad7be Merge pull request #930 from Perlence/fix/document-missing-hotkeys
docs(coding-agent): document missing hotkeys in README and /hotkeys
2026-01-24 20:48:22 +01:00
Mario Zechner 4ab9b769e6 Merge pull request #934 from Perlence/fix/reserve-col-for-cursor
fix(tui): reserve 1 column for the cursor in word wrap width
2026-01-24 20:47:46 +01:00
Mario Zechner 2d5b0c636f Merge pull request #937 from mitsuhiko/defer-gitignore
Defer create .pi/*/.gitignore
2026-01-24 20:46:30 +01:00
Mario Zechner 951fb953ed feat(coding-agent): support disable-model-invocation frontmatter for skills
When set to true, the skill is hidden from the system prompt, preventing
agentic invocation. Users can still invoke explicitly via /skill:name.

Also fixes pre-existing test bug where source expectation was wrong.

Fixes #927
2026-01-24 03:34:40 +01:00
Mario Zechner 3235926eed fix(coding-agent): off-by-one error in bash output 'earlier lines' count
fixes #921
2026-01-24 03:25:55 +01:00
Mario Zechner 48fc57f321 feat(coding-agent): expose copyToClipboard for extensions
fixes #926
2026-01-24 03:17:04 +01:00
Mario Zechner 3a57f1259b feat(coding-agent): surface extension shortcut conflicts 2026-01-24 03:17:04 +01:00
Mario Zechner 72de8f26a1 Merge pull request #917 from williballenthin/fix-call-arguments-done
fix(ai): handle call arguments done on OpenAI-compatible endpoints
2026-01-24 03:14:02 +01:00
Mario Zechner cd8ce452c7 Merge pull request #924 from Perlence/fix/wrap-whitespace
fix(tui): rewrite word wrap to not strip whitespace
2026-01-24 03:02:48 +01:00
Mario Zechner 25bdfb0b8e Merge pull request #925 from dannote/feat/update-changelog-link
feat(coding-agent): add changelog link to update notification
2026-01-24 02:58:06 +01:00
Mario Zechner cdb0400347 Merge pull request #928 from ferologics/feat/reload-full-scrollback
feat(coding-agent): /reload now re-renders entire scrollback
2026-01-24 02:53:57 +01:00
Mario Zechner ab8d44d696 feat(coding-agent): tune resource list colors 2026-01-24 02:51:27 +01:00
Mario Zechner 725d6bbf35 feat(coding-agent): refine resource metadata and display 2026-01-24 02:46:08 +01:00
Mario Zechner 79ab767beb test(coding-agent): update settings and extension tests 2026-01-24 01:43:34 +01:00
Mario Zechner f9eb190ef9 refactor(coding-agent): simplify AgentSession 2026-01-24 01:38:58 +01:00
Mario Zechner 254c00b788 refactor(coding-agent): centralize git url detection 2026-01-24 01:02:16 +01:00
Mario Zechner 4719929f6a refactor(coding-agent): unify SkillWarning and ResourceDiagnostic
- Create shared diagnostics.ts with ResourceCollision and ResourceDiagnostic types
- Update loadSkills() to return diagnostics instead of warnings
- Remove SkillWarning type and skillWarningsToDiagnostics() conversion
- Update skills.test.ts to use diagnostics
2026-01-24 00:45:01 +01:00
Mario Zechner 6d0d434d8c Add /diff extension for VS Code diff view 2026-01-24 00:35:33 +01:00
Mario Zechner 50c8323590 feat(coding-agent): package deduplication and collision detection
- Package deduplication: same package in global+project, project wins
- Collision detection for skills, prompts, and themes with ResourceCollision type
- PathMetadata tracking with parent directory lookup for file paths
- Display improvements: section headers, sorted groups, accent colors for packages
- pi list shows full paths below package names
- Extension loader discovers files in directories without index.ts
- In-memory SettingsManager properly tracks project settings

fixes #645
2026-01-24 00:35:19 +01:00
Mario Zechner c5c515f560 remove chalk-logger example (breaks TUI by using console.log directly)
The with-deps example demonstrates npm dependency resolution properly.
2026-01-23 21:04:15 +01:00
Mario Zechner e8fadb7333 docs(coding-agent): document layered filtering behavior 2026-01-23 20:59:31 +01:00
Mario Zechner 375d0bc4d6 fix(coding-agent): user filters now layer on top of manifest filters
Previously, user filters completely replaced manifest filtering. Now:
1. Manifest patterns are applied first (defines what package provides)
2. User patterns are applied on top (narrows down further)

This means if a manifest excludes 10 extensions and user adds one more
exclusion, all 11 are excluded (not just the user's one).
2026-01-23 20:58:17 +01:00
Mario Zechner f63a353779 docs(coding-agent): document bundling other pi packages with bundledDependencies 2026-01-23 20:40:15 +01:00
Mario Zechner 23fd73e558 docs(coding-agent): document glob pattern support in pi manifest 2026-01-23 20:34:25 +01:00
Mario Zechner ed75a8320b feat(coding-agent): support glob patterns in pi manifest arrays
- Manifest extensions/skills/prompts/themes arrays now support glob patterns
- Use !pattern for exclusions (e.g., '!**/deprecated/*')
- Enables packages to bundle dependencies and selectively include resources
2026-01-23 20:33:16 +01:00
Mario Zechner 6beeafed17 docs(coding-agent): document pattern precedence (exclusions always win) 2026-01-23 20:28:47 +01:00
Mario Zechner 6d475e5035 docs(coding-agent): document glob pattern support for resource filtering 2026-01-23 20:26:50 +01:00
Mario Zechner ac4dab4085 feat(coding-agent): add minimatch pattern support for resource filtering
- Support glob patterns and ! exclusions in package filter arrays
- Support glob patterns and ! exclusions in top-level settings arrays
- Add helper functions: isPattern, hasPatterns, collectFiles, collectSkillEntries, applyPatterns
- Add resolveLocalEntries for pattern-aware resolution of top-level arrays
- Add applyPackageFilter and collectAllPackageFiles for package filter patterns
- Add comprehensive tests for both top-level and package filter patterns
2026-01-23 20:26:11 +01:00
Mario Zechner 75eb841bb2 fix(coding-agent): register themes from resource loader
Themes loaded from packages were not appearing in theme selector because
setRegisteredThemes was never called. Now register themes:
- On startup before initTheme
- After /reload completes
2026-01-23 20:00:32 +01:00
Mario Zechner ef1fc3103e feat(coding-agent): add packages array with filtering support
- Add PackageSource type for npm/git sources with optional filtering
- Migrate npm:/git: sources from extensions to packages array
- Add getPackages(), setPackages(), setProjectPackages() methods
- Update package-manager to resolve from packages array
- Support selective loading: extensions, skills, prompts, themes per package
- Update pi list to show packages
- Add migration tests for settings

closes #645
2026-01-23 19:51:23 +01:00
Mario Zechner 5ffe51b38b Merge pull request #923 from aliou/fix-alt-up-compaction-queue
fix(coding-agent): restore compaction-queued messages on Alt-Up
2026-01-23 18:19:50 +01:00
Mario Zechner 3629f64de8 Merge pull request #920 from enisdenjo/selected-provider
Show provider alongside the model in footer if multiple
2026-01-23 17:41:19 +01:00
Mario Zechner 2cdf608d51 fix: Bun compatibility for build scripts and runtime detection (#922) 2026-01-23 17:38:46 +01:00
Mario Zechner 73734a23a1 fix(coding-agent): only list built-in tools in system prompt
Extension tools are already described via API tool definitions.
Removes redundant 'Custom tool' fallback.
2026-01-23 00:54:30 +01:00
Mario Zechner 7a2e71bb50 chore: add pi working dir gitignores 2026-01-22 23:21:01 +01:00
Mario Zechner e13d97f765 Merge branch 'fix/slash-menu-trigger-clean' 2026-01-22 23:12:42 +01:00
Mario Zechner f42deae13e fix(tui): gate slash menu to empty input 2026-01-22 23:12:33 +01:00
Mario Zechner 0f0c54b812 fix(coding-agent): expand paste markers in follow-up queue
fixes #912
2026-01-22 22:35:46 +01:00
Mario Zechner 7868b25a2b feat(coding-agent): make skill invocation messages collapsible
- Add ParsedSkillBlock interface and parseSkillBlock() function
- Change skill expansion to use XML-style <skill> tags
- Add SkillInvocationMessageComponent for collapsible display
- Collapsed: single line with skill name and expand hint
- User message rendered separately after skill block

Fixes #894
2026-01-22 22:29:24 +01:00
Mario Zechner f54e71999f fix(coding-agent): simplify extension error listener to single instance
There's only ever one bindings instance per session, so the Set/Array
approach was unnecessary. Changed from Set<ExtensionErrorListener> to
optional single listener.
2026-01-22 22:03:17 +01:00
Mario Zechner e0742d8217 feat(coding-agent): support env vars and shell commands in headers
Header values in models.json now resolve using the same logic as apiKey:
- Environment variable names are resolved to their values
- Shell commands prefixed with ! are executed
- Literal values are used directly

This is a minor breaking change: if a header value accidentally matches
an env var name, it will now resolve to that env var's value.

Fixes #909
2026-01-22 21:50:22 +01:00
Mario Zechner 7af1919d31 fix: use portable shebang in shell scripts
Change #!/bin/bash to #!/usr/bin/env bash for better portability
on systems like NixOS where /bin/bash doesn't exist.

Fixes #910
2026-01-22 21:44:39 +01:00
Mario Zechner 9b84857b83 fix(coding-agent): add 'terminated' to retryable error patterns
Codex API can send 'terminated' error mid-stream, which should be
retried like other transient server errors.
2026-01-22 21:32:56 +01:00
Mario Zechner 5e079e2ea8 fix(coding-agent): use specific terminology in reload messages instead of 'resources' 2026-01-22 19:32:14 +01:00