From 16685a36ecd6b5c070ba5d7d4a0a081f02b6df3d Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Fri, 19 Dec 2025 05:19:27 +0100 Subject: [PATCH] Release v0.24.0 --- package-lock.json | 40 ++++++++++++++-------------- packages/agent/package.json | 6 ++--- packages/ai/CHANGELOG.md | 2 ++ packages/ai/package.json | 2 +- packages/coding-agent/CHANGELOG.md | 28 +++++++++---------- packages/coding-agent/package.json | 8 +++--- packages/mom/package.json | 8 +++--- packages/pods/package.json | 4 +-- packages/proxy/package.json | 2 +- packages/tui/package.json | 2 +- packages/web-ui/example/package.json | 2 +- packages/web-ui/package.json | 6 ++--- 12 files changed, 56 insertions(+), 54 deletions(-) diff --git a/package-lock.json b/package-lock.json index d33a6a03..0480e7e1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6382,11 +6382,11 @@ }, "packages/agent": { "name": "@mariozechner/pi-agent-core", - "version": "0.23.5", + "version": "0.24.0", "license": "MIT", "dependencies": { - "@mariozechner/pi-ai": "^0.23.5", - "@mariozechner/pi-tui": "^0.23.5" + "@mariozechner/pi-ai": "^0.24.0", + "@mariozechner/pi-tui": "^0.24.0" }, "devDependencies": { "@types/node": "^24.3.0", @@ -6416,7 +6416,7 @@ }, "packages/ai": { "name": "@mariozechner/pi-ai", - "version": "0.23.5", + "version": "0.24.0", "license": "MIT", "dependencies": { "@anthropic-ai/sdk": "0.71.2", @@ -6458,12 +6458,12 @@ }, "packages/coding-agent": { "name": "@mariozechner/pi-coding-agent", - "version": "0.23.5", + "version": "0.24.0", "license": "MIT", "dependencies": { - "@mariozechner/pi-agent-core": "^0.23.5", - "@mariozechner/pi-ai": "^0.23.5", - "@mariozechner/pi-tui": "^0.23.5", + "@mariozechner/pi-agent-core": "^0.24.0", + "@mariozechner/pi-ai": "^0.24.0", + "@mariozechner/pi-tui": "^0.24.0", "chalk": "^5.5.0", "cli-highlight": "^2.1.11", "diff": "^8.0.2", @@ -6503,13 +6503,13 @@ }, "packages/mom": { "name": "@mariozechner/pi-mom", - "version": "0.23.5", + "version": "0.24.0", "license": "MIT", "dependencies": { "@anthropic-ai/sandbox-runtime": "^0.0.16", - "@mariozechner/pi-agent-core": "^0.23.5", - "@mariozechner/pi-ai": "^0.23.5", - "@mariozechner/pi-coding-agent": "^0.23.5", + "@mariozechner/pi-agent-core": "^0.24.0", + "@mariozechner/pi-ai": "^0.24.0", + "@mariozechner/pi-coding-agent": "^0.24.0", "@sinclair/typebox": "^0.34.0", "@slack/socket-mode": "^2.0.0", "@slack/web-api": "^7.0.0", @@ -6548,10 +6548,10 @@ }, "packages/pods": { "name": "@mariozechner/pi", - "version": "0.23.5", + "version": "0.24.0", "license": "MIT", "dependencies": { - "@mariozechner/pi-agent-core": "^0.23.5", + "@mariozechner/pi-agent-core": "^0.24.0", "chalk": "^5.5.0" }, "bin": { @@ -6564,7 +6564,7 @@ }, "packages/proxy": { "name": "@mariozechner/pi-proxy", - "version": "0.23.5", + "version": "0.24.0", "dependencies": { "@hono/node-server": "^1.14.0", "hono": "^4.6.16" @@ -6580,7 +6580,7 @@ }, "packages/tui": { "name": "@mariozechner/pi-tui", - "version": "0.23.5", + "version": "0.24.0", "license": "MIT", "dependencies": { "@types/mime-types": "^2.1.4", @@ -6624,12 +6624,12 @@ }, "packages/web-ui": { "name": "@mariozechner/pi-web-ui", - "version": "0.23.5", + "version": "0.24.0", "license": "MIT", "dependencies": { "@lmstudio/sdk": "^1.5.0", - "@mariozechner/pi-ai": "^0.23.5", - "@mariozechner/pi-tui": "^0.23.5", + "@mariozechner/pi-ai": "^0.24.0", + "@mariozechner/pi-tui": "^0.24.0", "docx-preview": "^0.3.7", "jszip": "^3.10.1", "lucide": "^0.544.0", @@ -6650,7 +6650,7 @@ }, "packages/web-ui/example": { "name": "pi-web-ui-example", - "version": "1.11.5", + "version": "1.12.0", "dependencies": { "@mariozechner/mini-lit": "^0.2.0", "@mariozechner/pi-ai": "file:../../ai", diff --git a/packages/agent/package.json b/packages/agent/package.json index d5cdf067..6e2dd725 100644 --- a/packages/agent/package.json +++ b/packages/agent/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi-agent-core", - "version": "0.23.5", + "version": "0.24.0", "description": "General-purpose agent with transport abstraction, state management, and attachment support", "type": "module", "main": "./dist/index.js", @@ -18,8 +18,8 @@ "prepublishOnly": "npm run clean && npm run build" }, "dependencies": { - "@mariozechner/pi-ai": "^0.23.5", - "@mariozechner/pi-tui": "^0.23.5" + "@mariozechner/pi-ai": "^0.24.0", + "@mariozechner/pi-tui": "^0.24.0" }, "keywords": [ "ai", diff --git a/packages/ai/CHANGELOG.md b/packages/ai/CHANGELOG.md index c3ae07d9..f982bc74 100644 --- a/packages/ai/CHANGELOG.md +++ b/packages/ai/CHANGELOG.md @@ -8,6 +8,8 @@ - **Gemini 3 Flash thinking support**: Extended thinking level support for Gemini 3 Flash models (MINIMAL, LOW, MEDIUM, HIGH) to match Pro models' capabilities. ([#212](https://github.com/badlogic/pi-mono/pull/212) by [@markusylisiurunen](https://github.com/markusylisiurunen)) +- **GitHub Copilot thinking models**: Added thinking support for additional Copilot models (o3-mini, o1-mini, o1-preview). ([#234](https://github.com/badlogic/pi-mono/pull/234) by [@aadishv](https://github.com/aadishv)) + ### Fixed - **Gemini tool result format**: Fixed tool result format for Gemini 3 Flash Preview which strictly requires `{ output: value }` for success and `{ error: value }` for errors. Previous format using `{ result, isError }` was rejected by newer Gemini models. Also improved type safety by removing `as any` casts. ([#213](https://github.com/badlogic/pi-mono/issues/213), [#220](https://github.com/badlogic/pi-mono/pull/220)) diff --git a/packages/ai/package.json b/packages/ai/package.json index 2c9607d8..16366e07 100644 --- a/packages/ai/package.json +++ b/packages/ai/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi-ai", - "version": "0.23.5", + "version": "0.24.0", "description": "Unified LLM API with automatic model discovery and provider configuration", "type": "module", "main": "./dist/index.js", diff --git a/packages/coding-agent/CHANGELOG.md b/packages/coding-agent/CHANGELOG.md index 3fee26d2..1c1e94df 100644 --- a/packages/coding-agent/CHANGELOG.md +++ b/packages/coding-agent/CHANGELOG.md @@ -2,6 +2,8 @@ ## [Unreleased] +## [0.24.0] - 2025-12-19 + ### Added - **Subagent orchestration example**: Added comprehensive custom tool example for spawning and orchestrating sub-agents with isolated context windows. Includes scout/planner/reviewer/worker agents and workflow commands for multi-agent pipelines. ([#215](https://github.com/badlogic/pi-mono/pull/215) by [@nicobailon](https://github.com/nicobailon)) @@ -10,14 +12,26 @@ - **`pi.exec()` signal and timeout support**: Custom tools and hooks can now pass `{ signal, timeout }` options to `pi.exec()` for cancellation and timeout handling. The result includes a `killed` flag when the process was terminated. +- **Kitty keyboard protocol support**: Shift+Enter, Alt+Enter, Shift+Tab, Ctrl+D, and all Ctrl+key combinations now work in Ghostty, Kitty, WezTerm, and other modern terminals. ([#225](https://github.com/badlogic/pi-mono/pull/225) by [@kim0](https://github.com/kim0)) + +- **Dynamic API key refresh**: OAuth tokens (GitHub Copilot, Anthropic OAuth) are now refreshed before each LLM call, preventing failures in long-running agent loops where tokens expire mid-session. ([#223](https://github.com/badlogic/pi-mono/pull/223) by [@kim0](https://github.com/kim0)) + +- **`/hotkeys` command**: Shows all keyboard shortcuts in a formatted table. + +- **Markdown table borders**: Tables now render with proper top and bottom borders. + ### Changed - **Subagent example improvements**: Parallel mode now streams updates from all tasks. Chain mode shows all completed steps during streaming. Expanded view uses proper markdown rendering with syntax highlighting. Usage footer shows turn count. +- **Skills standard compliance**: Skills now adhere to the [Agent Skills standard](https://agentskills.io/specification). Validates name (must match parent directory, lowercase, max 64 chars), description (required, max 1024 chars), and frontmatter fields. Warns on violations but remains lenient. Prompt format changed to XML structure. Removed `{baseDir}` placeholder in favor of relative paths. ([#231](https://github.com/badlogic/pi-mono/issues/231)) + ### Fixed - **JSON mode stdout flush**: Fixed race condition where `pi --mode json` could exit before all output was written to stdout, causing consumers to miss final events. +- **Symlinked tools, hooks, and slash commands**: Discovery now correctly follows symlinks when scanning for custom tools, hooks, and slash commands. ([#219](https://github.com/badlogic/pi-mono/pull/219), [#232](https://github.com/badlogic/pi-mono/pull/232) by [@aliou](https://github.com/aliou)) + ### Breaking Changes - **Custom tools now require `index.ts` entry point**: Auto-discovered custom tools must be in a subdirectory with an `index.ts` file. The old pattern `~/.pi/agent/tools/mytool.ts` must become `~/.pi/agent/tools/mytool/index.ts`. This allows multi-file tools to import helper modules. Explicit paths via `--tool` or `settings.json` still work with any `.ts` file. @@ -31,20 +45,6 @@ - Built-in tool details types exported: `BashToolDetails`, `ReadToolDetails`, `GrepToolDetails`, `FindToolDetails`, `LsToolDetails`, `TruncationResult` - Type guards exported for narrowing: `isBashToolResult`, `isReadToolResult`, `isEditToolResult`, `isWriteToolResult`, `isGrepToolResult`, `isFindToolResult`, `isLsToolResult` -### Added - -- **Kitty keyboard protocol support**: Shift+Enter, Alt+Enter, Shift+Tab, Ctrl+D, and all Ctrl+key combinations now work in Ghostty, Kitty, WezTerm, and other modern terminals. ([#225](https://github.com/badlogic/pi-mono/pull/225) by [@kim0](https://github.com/kim0)) - -- **Dynamic API key refresh**: OAuth tokens (GitHub Copilot, Anthropic OAuth) are now refreshed before each LLM call, preventing failures in long-running agent loops where tokens expire mid-session. ([#223](https://github.com/badlogic/pi-mono/pull/223) by [@kim0](https://github.com/kim0)) - -- **`/hotkeys` command**: Shows all keyboard shortcuts in a formatted table. - -- **Markdown table borders**: Tables now render with proper top and bottom borders. - -### Changed - -- **Skills standard compliance**: Skills now adhere to the [Agent Skills standard](https://agentskills.io/specification). Validates name (must match parent directory, lowercase, max 64 chars), description (required, max 1024 chars), and frontmatter fields. Warns on violations but remains lenient. Prompt format changed to XML structure. Removed `{baseDir}` placeholder in favor of relative paths. ([#231](https://github.com/badlogic/pi-mono/issues/231)) - ## [0.23.4] - 2025-12-18 ### Added diff --git a/packages/coding-agent/package.json b/packages/coding-agent/package.json index ad712c8f..218a5919 100644 --- a/packages/coding-agent/package.json +++ b/packages/coding-agent/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi-coding-agent", - "version": "0.23.5", + "version": "0.24.0", "description": "Coding agent CLI with read, bash, edit, write tools and session management", "type": "module", "piConfig": { @@ -39,9 +39,9 @@ "prepublishOnly": "npm run clean && npm run build" }, "dependencies": { - "@mariozechner/pi-agent-core": "^0.23.5", - "@mariozechner/pi-ai": "^0.23.5", - "@mariozechner/pi-tui": "^0.23.5", + "@mariozechner/pi-agent-core": "^0.24.0", + "@mariozechner/pi-ai": "^0.24.0", + "@mariozechner/pi-tui": "^0.24.0", "chalk": "^5.5.0", "cli-highlight": "^2.1.11", "diff": "^8.0.2", diff --git a/packages/mom/package.json b/packages/mom/package.json index 4139f4f6..d475727b 100644 --- a/packages/mom/package.json +++ b/packages/mom/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi-mom", - "version": "0.23.5", + "version": "0.24.0", "description": "Slack bot that delegates messages to the pi coding agent", "type": "module", "bin": { @@ -21,9 +21,9 @@ }, "dependencies": { "@anthropic-ai/sandbox-runtime": "^0.0.16", - "@mariozechner/pi-agent-core": "^0.23.5", - "@mariozechner/pi-ai": "^0.23.5", - "@mariozechner/pi-coding-agent": "^0.23.5", + "@mariozechner/pi-agent-core": "^0.24.0", + "@mariozechner/pi-ai": "^0.24.0", + "@mariozechner/pi-coding-agent": "^0.24.0", "@sinclair/typebox": "^0.34.0", "@slack/socket-mode": "^2.0.0", "@slack/web-api": "^7.0.0", diff --git a/packages/pods/package.json b/packages/pods/package.json index fcbb05b3..f603b201 100644 --- a/packages/pods/package.json +++ b/packages/pods/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi", - "version": "0.23.5", + "version": "0.24.0", "description": "CLI tool for managing vLLM deployments on GPU pods", "type": "module", "bin": { @@ -34,7 +34,7 @@ "node": ">=20.0.0" }, "dependencies": { - "@mariozechner/pi-agent-core": "^0.23.5", + "@mariozechner/pi-agent-core": "^0.24.0", "chalk": "^5.5.0" }, "devDependencies": {} diff --git a/packages/proxy/package.json b/packages/proxy/package.json index 8b2bda3f..d5fb8db7 100644 --- a/packages/proxy/package.json +++ b/packages/proxy/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi-proxy", - "version": "0.23.5", + "version": "0.24.0", "type": "module", "description": "CORS and authentication proxy for pi-ai", "main": "dist/index.js", diff --git a/packages/tui/package.json b/packages/tui/package.json index 1560753b..864034c8 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi-tui", - "version": "0.23.5", + "version": "0.24.0", "description": "Terminal User Interface library with differential rendering for efficient text-based applications", "type": "module", "main": "dist/index.js", diff --git a/packages/web-ui/example/package.json b/packages/web-ui/example/package.json index 7f683973..61efff76 100644 --- a/packages/web-ui/example/package.json +++ b/packages/web-ui/example/package.json @@ -1,6 +1,6 @@ { "name": "pi-web-ui-example", - "version": "1.11.5", + "version": "1.12.0", "private": true, "type": "module", "scripts": { diff --git a/packages/web-ui/package.json b/packages/web-ui/package.json index e3cefec0..d2012356 100644 --- a/packages/web-ui/package.json +++ b/packages/web-ui/package.json @@ -1,6 +1,6 @@ { "name": "@mariozechner/pi-web-ui", - "version": "0.23.5", + "version": "0.24.0", "description": "Reusable web UI components for AI chat interfaces powered by @mariozechner/pi-ai", "type": "module", "main": "dist/index.js", @@ -18,8 +18,8 @@ }, "dependencies": { "@lmstudio/sdk": "^1.5.0", - "@mariozechner/pi-ai": "^0.23.5", - "@mariozechner/pi-tui": "^0.23.5", + "@mariozechner/pi-ai": "^0.24.0", + "@mariozechner/pi-tui": "^0.24.0", "docx-preview": "^0.3.7", "jszip": "^3.10.1", "lucide": "^0.544.0",