Release v0.7.16

This commit is contained in:
Mario Zechner 2025-11-17 14:12:04 +01:00
parent f2b3953711
commit 6680034a64
12 changed files with 94 additions and 38 deletions

View file

@ -56,9 +56,39 @@ These commands:
### Publishing ### Publishing
```bash Complete release process:
npm run publish # Publish all packages to npm
``` 1. **Update CHANGELOG.md** (for coding-agent releases):
```bash
# Add your changes to the [Unreleased] section in packages/coding-agent/CHANGELOG.md
```
2. **Bump version** (all packages):
```bash
npm run version:patch # For bug fixes
npm run version:minor # For new features
npm run version:major # For breaking changes
```
3. **Update CHANGELOG.md version** (for coding-agent):
```bash
# Move the [Unreleased] section to the new version number with today's date
# e.g., ## [0.7.16] - 2025-11-17
```
4. **Commit and tag**:
```bash
git add .
git commit -m "Release v0.7.16"
git tag v0.7.16
git push origin main
git push origin v0.7.16
```
5. **Publish to npm**:
```bash
npm run publish # Publish all packages to npm
```
## License ## License

14
package-lock.json generated
View file

@ -3193,7 +3193,7 @@
}, },
"packages/agent": { "packages/agent": {
"name": "@mariozechner/pi-agent", "name": "@mariozechner/pi-agent",
"version": "0.7.15", "version": "0.7.16",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@mariozechner/pi-ai": "^0.7.15", "@mariozechner/pi-ai": "^0.7.15",
@ -3223,7 +3223,7 @@
}, },
"packages/ai": { "packages/ai": {
"name": "@mariozechner/pi-ai", "name": "@mariozechner/pi-ai",
"version": "0.7.15", "version": "0.7.16",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@anthropic-ai/sdk": "^0.61.0", "@anthropic-ai/sdk": "^0.61.0",
@ -3270,7 +3270,7 @@
}, },
"packages/coding-agent": { "packages/coding-agent": {
"name": "@mariozechner/pi-coding-agent", "name": "@mariozechner/pi-coding-agent",
"version": "0.7.15", "version": "0.7.16",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@mariozechner/pi-agent": "^0.7.15", "@mariozechner/pi-agent": "^0.7.15",
@ -3317,7 +3317,7 @@
}, },
"packages/pods": { "packages/pods": {
"name": "@mariozechner/pi", "name": "@mariozechner/pi",
"version": "0.7.15", "version": "0.7.16",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@mariozechner/pi-agent": "^0.7.15", "@mariozechner/pi-agent": "^0.7.15",
@ -3343,7 +3343,7 @@
}, },
"packages/proxy": { "packages/proxy": {
"name": "@mariozechner/pi-proxy", "name": "@mariozechner/pi-proxy",
"version": "0.7.15", "version": "0.7.16",
"dependencies": { "dependencies": {
"@hono/node-server": "^1.14.0", "@hono/node-server": "^1.14.0",
"hono": "^4.6.16" "hono": "^4.6.16"
@ -3359,7 +3359,7 @@
}, },
"packages/tui": { "packages/tui": {
"name": "@mariozechner/pi-tui", "name": "@mariozechner/pi-tui",
"version": "0.7.15", "version": "0.7.16",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@types/mime-types": "^2.1.4", "@types/mime-types": "^2.1.4",
@ -3398,7 +3398,7 @@
}, },
"packages/web-ui": { "packages/web-ui": {
"name": "@mariozechner/pi-web-ui", "name": "@mariozechner/pi-web-ui",
"version": "0.7.15", "version": "0.7.16",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@lmstudio/sdk": "^1.5.0", "@lmstudio/sdk": "^1.5.0",

View file

@ -1,6 +1,6 @@
{ {
"name": "@mariozechner/pi-agent", "name": "@mariozechner/pi-agent",
"version": "0.7.15", "version": "0.7.16",
"description": "General-purpose agent with transport abstraction, state management, and attachment support", "description": "General-purpose agent with transport abstraction, state management, and attachment support",
"type": "module", "type": "module",
"main": "./dist/index.js", "main": "./dist/index.js",
@ -18,8 +18,8 @@
"prepublishOnly": "npm run clean && npm run build" "prepublishOnly": "npm run clean && npm run build"
}, },
"dependencies": { "dependencies": {
"@mariozechner/pi-ai": "^0.7.15", "@mariozechner/pi-ai": "^0.7.16",
"@mariozechner/pi-tui": "^0.7.15" "@mariozechner/pi-tui": "^0.7.16"
}, },
"keywords": [ "keywords": [
"ai", "ai",

View file

@ -1,6 +1,6 @@
{ {
"name": "@mariozechner/pi-ai", "name": "@mariozechner/pi-ai",
"version": "0.7.15", "version": "0.7.16",
"description": "Unified LLM API with automatic model discovery and provider configuration", "description": "Unified LLM API with automatic model discovery and provider configuration",
"type": "module", "type": "module",
"main": "./dist/index.js", "main": "./dist/index.js",

View file

@ -2,6 +2,12 @@
## [Unreleased] ## [Unreleased]
## [0.7.16] - 2025-11-17
### Fixed
- **Tool Error Display**: Fixed edit tool (and all other tools) not showing error state correctly in TUI. Failed tool executions now properly display with red background and show the error message. Previously, the `isError` flag from tool execution events was not being passed to the UI component, causing all tool results to show with green (success) background regardless of whether they succeeded or failed.
## [0.7.15] - 2025-11-17 ## [0.7.15] - 2025-11-17
### Fixed ### Fixed

View file

@ -1,6 +1,6 @@
{ {
"name": "@mariozechner/pi-coding-agent", "name": "@mariozechner/pi-coding-agent",
"version": "0.7.15", "version": "0.7.16",
"description": "Coding agent CLI with read, bash, edit, write tools and session management", "description": "Coding agent CLI with read, bash, edit, write tools and session management",
"type": "module", "type": "module",
"bin": { "bin": {
@ -21,8 +21,8 @@
"prepublishOnly": "npm run clean && npm run build" "prepublishOnly": "npm run clean && npm run build"
}, },
"dependencies": { "dependencies": {
"@mariozechner/pi-agent": "^0.7.15", "@mariozechner/pi-agent": "^0.7.16",
"@mariozechner/pi-ai": "^0.7.15", "@mariozechner/pi-ai": "^0.7.16",
"chalk": "^5.5.0", "chalk": "^5.5.0",
"diff": "^8.0.2", "diff": "^8.0.2",
"glob": "^11.0.3" "glob": "^11.0.3"

View file

@ -251,9 +251,15 @@ export class ToolExecutionComponent extends Container {
const path = shortenPath(this.args?.file_path || this.args?.path || ""); const path = shortenPath(this.args?.file_path || this.args?.path || "");
text = chalk.bold("edit") + " " + (path ? chalk.cyan(path) : chalk.dim("...")); text = chalk.bold("edit") + " " + (path ? chalk.cyan(path) : chalk.dim("..."));
if (this.result) {
// Show error message if it's an error
if (this.result.isError) {
const errorText = this.getTextOutput();
if (errorText) {
text += "\n\n" + chalk.red(errorText);
}
} else if (this.result.details?.diff) {
// Show diff if available // Show diff if available
if (this.result?.details?.diff) {
// Parse the diff string and apply colors
const diffLines = this.result.details.diff.split("\n"); const diffLines = this.result.details.diff.split("\n");
const coloredLines = diffLines.map((line: string) => { const coloredLines = diffLines.map((line: string) => {
if (line.startsWith("+")) { if (line.startsWith("+")) {
@ -266,6 +272,7 @@ export class ToolExecutionComponent extends Container {
}); });
text += "\n\n" + coloredLines.join("\n"); text += "\n\n" + coloredLines.join("\n");
} }
}
} else { } else {
// Generic tool // Generic tool
text = chalk.bold(this.toolName); text = chalk.bold(this.toolName);

View file

@ -376,7 +376,20 @@ export class TuiRenderer {
// Update the existing tool component with the result // Update the existing tool component with the result
const component = this.pendingTools.get(event.toolCallId); const component = this.pendingTools.get(event.toolCallId);
if (component) { if (component) {
component.updateResult(event.result); // Convert result to the format expected by updateResult
const resultData =
typeof event.result === "string"
? {
content: [{ type: "text" as const, text: event.result }],
details: undefined,
isError: event.isError,
}
: {
content: event.result.content,
details: event.result.details,
isError: event.isError,
};
component.updateResult(resultData);
this.pendingTools.delete(event.toolCallId); this.pendingTools.delete(event.toolCallId);
this.ui.requestRender(); this.ui.requestRender();
} }

View file

@ -1,6 +1,6 @@
{ {
"name": "@mariozechner/pi", "name": "@mariozechner/pi",
"version": "0.7.15", "version": "0.7.16",
"description": "CLI tool for managing vLLM deployments on GPU pods", "description": "CLI tool for managing vLLM deployments on GPU pods",
"type": "module", "type": "module",
"bin": { "bin": {
@ -34,7 +34,7 @@
"node": ">=20.0.0" "node": ">=20.0.0"
}, },
"dependencies": { "dependencies": {
"@mariozechner/pi-agent": "^0.7.15", "@mariozechner/pi-agent": "^0.7.16",
"chalk": "^5.5.0" "chalk": "^5.5.0"
}, },
"devDependencies": {} "devDependencies": {}

View file

@ -1,6 +1,6 @@
{ {
"name": "@mariozechner/pi-proxy", "name": "@mariozechner/pi-proxy",
"version": "0.7.15", "version": "0.7.16",
"type": "module", "type": "module",
"description": "CORS and authentication proxy for pi-ai", "description": "CORS and authentication proxy for pi-ai",
"main": "dist/index.js", "main": "dist/index.js",

View file

@ -1,6 +1,6 @@
{ {
"name": "@mariozechner/pi-tui", "name": "@mariozechner/pi-tui",
"version": "0.7.15", "version": "0.7.16",
"description": "Terminal User Interface library with differential rendering for efficient text-based applications", "description": "Terminal User Interface library with differential rendering for efficient text-based applications",
"type": "module", "type": "module",
"main": "dist/index.js", "main": "dist/index.js",

View file

@ -1,6 +1,6 @@
{ {
"name": "@mariozechner/pi-web-ui", "name": "@mariozechner/pi-web-ui",
"version": "0.7.15", "version": "0.7.16",
"description": "Reusable web UI components for AI chat interfaces powered by @mariozechner/pi-ai", "description": "Reusable web UI components for AI chat interfaces powered by @mariozechner/pi-ai",
"type": "module", "type": "module",
"main": "dist/index.js", "main": "dist/index.js",
@ -18,8 +18,8 @@
}, },
"dependencies": { "dependencies": {
"@lmstudio/sdk": "^1.5.0", "@lmstudio/sdk": "^1.5.0",
"@mariozechner/pi-ai": "^0.7.15", "@mariozechner/pi-ai": "^0.7.16",
"@mariozechner/pi-tui": "^0.7.15", "@mariozechner/pi-tui": "^0.7.16",
"docx-preview": "^0.3.7", "docx-preview": "^0.3.7",
"jszip": "^3.10.1", "jszip": "^3.10.1",
"lucide": "^0.544.0", "lucide": "^0.544.0",