From ea2b70ddd9842fd9ec8685219b1d800939bb1193 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Sat, 23 May 2026 11:58:31 +0200 Subject: [PATCH] Release v0.75.5 --- package-lock.json | 24 ++++---- packages/agent/CHANGELOG.md | 2 +- packages/agent/package.json | 4 +- packages/ai/CHANGELOG.md | 2 +- packages/ai/package.json | 2 +- packages/coding-agent/CHANGELOG.md | 2 +- .../package-lock.json | 4 +- .../custom-provider-anthropic/package.json | 2 +- .../custom-provider-gitlab-duo/package.json | 2 +- .../extensions/sandbox/package-lock.json | 4 +- .../examples/extensions/sandbox/package.json | 2 +- .../extensions/with-deps/package-lock.json | 4 +- .../extensions/with-deps/package.json | 2 +- packages/coding-agent/npm-shrinkwrap.json | 24 ++++---- packages/coding-agent/package.json | 8 +-- packages/tui/CHANGELOG.md | 2 +- packages/tui/package.json | 2 +- scripts/check-lockfile-commit.mjs | 58 ++++++++++++++----- 18 files changed, 88 insertions(+), 62 deletions(-) diff --git a/package-lock.json b/package-lock.json index cab14c6d..5796fcf9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5987,10 +5987,10 @@ }, "packages/agent": { "name": "@earendil-works/pi-agent-core", - "version": "0.75.4", + "version": "0.75.5", "license": "MIT", "dependencies": { - "@earendil-works/pi-ai": "^0.75.4", + "@earendil-works/pi-ai": "^0.75.5", "ignore": "7.0.5", "typebox": "1.1.38", "yaml": "2.9.0" @@ -6024,7 +6024,7 @@ }, "packages/ai": { "name": "@earendil-works/pi-ai", - "version": "0.75.4", + "version": "0.75.5", "license": "MIT", "dependencies": { "@anthropic-ai/sdk": "0.91.1", @@ -6069,12 +6069,12 @@ }, "packages/coding-agent": { "name": "@earendil-works/pi-coding-agent", - "version": "0.75.4", + "version": "0.75.5", "license": "MIT", "dependencies": { - "@earendil-works/pi-agent-core": "^0.75.4", - "@earendil-works/pi-ai": "^0.75.4", - "@earendil-works/pi-tui": "^0.75.4", + "@earendil-works/pi-agent-core": "^0.75.5", + "@earendil-works/pi-ai": "^0.75.5", + "@earendil-works/pi-tui": "^0.75.5", "@silvia-odwyer/photon-node": "0.3.4", "chalk": "5.6.2", "cross-spawn": "7.0.6", @@ -6113,25 +6113,25 @@ }, "packages/coding-agent/examples/extensions/custom-provider-anthropic": { "name": "pi-extension-custom-provider-anthropic", - "version": "0.75.4", + "version": "0.75.5", "dependencies": { "@anthropic-ai/sdk": "0.52.0" } }, "packages/coding-agent/examples/extensions/custom-provider-gitlab-duo": { "name": "pi-extension-custom-provider-gitlab-duo", - "version": "0.75.4" + "version": "0.75.5" }, "packages/coding-agent/examples/extensions/sandbox": { "name": "pi-extension-sandbox", - "version": "1.5.4", + "version": "1.5.5", "dependencies": { "@anthropic-ai/sandbox-runtime": "0.0.26" } }, "packages/coding-agent/examples/extensions/with-deps": { "name": "pi-extension-with-deps", - "version": "0.75.4", + "version": "0.75.5", "dependencies": { "ms": "2.1.3" }, @@ -6167,7 +6167,7 @@ }, "packages/tui": { "name": "@earendil-works/pi-tui", - "version": "0.75.4", + "version": "0.75.5", "license": "MIT", "dependencies": { "get-east-asian-width": "1.6.0", diff --git a/packages/agent/CHANGELOG.md b/packages/agent/CHANGELOG.md index 4ec02d9a..c215a8a5 100644 --- a/packages/agent/CHANGELOG.md +++ b/packages/agent/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [Unreleased] +## [0.75.5] - 2026-05-23 ## [0.75.4] - 2026-05-20 diff --git a/packages/agent/package.json b/packages/agent/package.json index f5d823e7..803ca975 100644 --- a/packages/agent/package.json +++ b/packages/agent/package.json @@ -1,6 +1,6 @@ { "name": "@earendil-works/pi-agent-core", - "version": "0.75.4", + "version": "0.75.5", "description": "General-purpose agent with transport abstraction, state management, and attachment support", "type": "module", "main": "./dist/index.js", @@ -29,7 +29,7 @@ "prepublishOnly": "npm run clean && npm run build" }, "dependencies": { - "@earendil-works/pi-ai": "^0.75.4", + "@earendil-works/pi-ai": "^0.75.5", "ignore": "7.0.5", "typebox": "1.1.38", "yaml": "2.9.0" diff --git a/packages/ai/CHANGELOG.md b/packages/ai/CHANGELOG.md index d02b245a..398374ec 100644 --- a/packages/ai/CHANGELOG.md +++ b/packages/ai/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [Unreleased] +## [0.75.5] - 2026-05-23 ### Breaking Changes diff --git a/packages/ai/package.json b/packages/ai/package.json index 525c5f6f..68946b61 100644 --- a/packages/ai/package.json +++ b/packages/ai/package.json @@ -1,6 +1,6 @@ { "name": "@earendil-works/pi-ai", - "version": "0.75.4", + "version": "0.75.5", "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 c38389db..5924caa2 100644 --- a/packages/coding-agent/CHANGELOG.md +++ b/packages/coding-agent/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [Unreleased] +## [0.75.5] - 2026-05-23 ### New Features diff --git a/packages/coding-agent/examples/extensions/custom-provider-anthropic/package-lock.json b/packages/coding-agent/examples/extensions/custom-provider-anthropic/package-lock.json index c78ae920..9833a6a3 100644 --- a/packages/coding-agent/examples/extensions/custom-provider-anthropic/package-lock.json +++ b/packages/coding-agent/examples/extensions/custom-provider-anthropic/package-lock.json @@ -1,12 +1,12 @@ { "name": "pi-extension-custom-provider", - "version": "0.75.4", + "version": "0.75.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pi-extension-custom-provider", - "version": "0.75.4", + "version": "0.75.5", "dependencies": { "@anthropic-ai/sdk": "^0.52.0" } diff --git a/packages/coding-agent/examples/extensions/custom-provider-anthropic/package.json b/packages/coding-agent/examples/extensions/custom-provider-anthropic/package.json index 89aa420a..6098f5d4 100644 --- a/packages/coding-agent/examples/extensions/custom-provider-anthropic/package.json +++ b/packages/coding-agent/examples/extensions/custom-provider-anthropic/package.json @@ -1,7 +1,7 @@ { "name": "pi-extension-custom-provider-anthropic", "private": true, - "version": "0.75.4", + "version": "0.75.5", "type": "module", "scripts": { "clean": "echo 'nothing to clean'", diff --git a/packages/coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json b/packages/coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json index 2db431cf..49ae54fd 100644 --- a/packages/coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json +++ b/packages/coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json @@ -1,7 +1,7 @@ { "name": "pi-extension-custom-provider-gitlab-duo", "private": true, - "version": "0.75.4", + "version": "0.75.5", "type": "module", "scripts": { "clean": "echo 'nothing to clean'", diff --git a/packages/coding-agent/examples/extensions/sandbox/package-lock.json b/packages/coding-agent/examples/extensions/sandbox/package-lock.json index ef29b150..038a3ee0 100644 --- a/packages/coding-agent/examples/extensions/sandbox/package-lock.json +++ b/packages/coding-agent/examples/extensions/sandbox/package-lock.json @@ -1,12 +1,12 @@ { "name": "pi-extension-sandbox", - "version": "1.5.4", + "version": "1.5.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pi-extension-sandbox", - "version": "1.5.4", + "version": "1.5.5", "dependencies": { "@anthropic-ai/sandbox-runtime": "^0.0.26" } diff --git a/packages/coding-agent/examples/extensions/sandbox/package.json b/packages/coding-agent/examples/extensions/sandbox/package.json index c33d2d60..9aacc96f 100644 --- a/packages/coding-agent/examples/extensions/sandbox/package.json +++ b/packages/coding-agent/examples/extensions/sandbox/package.json @@ -1,7 +1,7 @@ { "name": "pi-extension-sandbox", "private": true, - "version": "1.5.4", + "version": "1.5.5", "type": "module", "scripts": { "clean": "echo 'nothing to clean'", diff --git a/packages/coding-agent/examples/extensions/with-deps/package-lock.json b/packages/coding-agent/examples/extensions/with-deps/package-lock.json index 526356f4..ba06e6d3 100644 --- a/packages/coding-agent/examples/extensions/with-deps/package-lock.json +++ b/packages/coding-agent/examples/extensions/with-deps/package-lock.json @@ -1,12 +1,12 @@ { "name": "pi-extension-with-deps", - "version": "0.75.4", + "version": "0.75.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pi-extension-with-deps", - "version": "0.75.4", + "version": "0.75.5", "dependencies": { "ms": "^2.1.3" }, diff --git a/packages/coding-agent/examples/extensions/with-deps/package.json b/packages/coding-agent/examples/extensions/with-deps/package.json index 45f1d3f2..d6554694 100644 --- a/packages/coding-agent/examples/extensions/with-deps/package.json +++ b/packages/coding-agent/examples/extensions/with-deps/package.json @@ -1,7 +1,7 @@ { "name": "pi-extension-with-deps", "private": true, - "version": "0.75.4", + "version": "0.75.5", "type": "module", "scripts": { "clean": "echo 'nothing to clean'", diff --git a/packages/coding-agent/npm-shrinkwrap.json b/packages/coding-agent/npm-shrinkwrap.json index b9041ce9..b82cebea 100644 --- a/packages/coding-agent/npm-shrinkwrap.json +++ b/packages/coding-agent/npm-shrinkwrap.json @@ -1,17 +1,17 @@ { "name": "@earendil-works/pi-coding-agent", - "version": "0.75.4", + "version": "0.75.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@earendil-works/pi-coding-agent", - "version": "0.75.4", + "version": "0.75.5", "license": "MIT", "dependencies": { - "@earendil-works/pi-agent-core": "^0.75.4", - "@earendil-works/pi-ai": "^0.75.4", - "@earendil-works/pi-tui": "^0.75.4", + "@earendil-works/pi-agent-core": "^0.75.5", + "@earendil-works/pi-ai": "^0.75.5", + "@earendil-works/pi-tui": "^0.75.5", "@silvia-odwyer/photon-node": "0.3.4", "chalk": "5.6.2", "cross-spawn": "7.0.6", @@ -473,11 +473,11 @@ } }, "node_modules/@earendil-works/pi-agent-core": { - "version": "0.75.4", - "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.75.4.tgz", + "version": "0.75.5", + "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-0.75.5.tgz", "license": "MIT", "dependencies": { - "@earendil-works/pi-ai": "^0.75.4", + "@earendil-works/pi-ai": "^0.75.5", "ignore": "7.0.5", "typebox": "1.1.38", "yaml": "2.9.0" @@ -487,8 +487,8 @@ } }, "node_modules/@earendil-works/pi-ai": { - "version": "0.75.4", - "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.75.4.tgz", + "version": "0.75.5", + "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-0.75.5.tgz", "license": "MIT", "dependencies": { "@anthropic-ai/sdk": "0.91.1", @@ -510,8 +510,8 @@ } }, "node_modules/@earendil-works/pi-tui": { - "version": "0.75.4", - "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.75.4.tgz", + "version": "0.75.5", + "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-0.75.5.tgz", "license": "MIT", "dependencies": { "get-east-asian-width": "1.6.0", diff --git a/packages/coding-agent/package.json b/packages/coding-agent/package.json index 908cda66..b73e82ef 100644 --- a/packages/coding-agent/package.json +++ b/packages/coding-agent/package.json @@ -1,6 +1,6 @@ { "name": "@earendil-works/pi-coding-agent", - "version": "0.75.4", + "version": "0.75.5", "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 && npm run shrinkwrap" }, "dependencies": { - "@earendil-works/pi-agent-core": "^0.75.4", - "@earendil-works/pi-ai": "^0.75.4", - "@earendil-works/pi-tui": "^0.75.4", + "@earendil-works/pi-agent-core": "^0.75.5", + "@earendil-works/pi-ai": "^0.75.5", + "@earendil-works/pi-tui": "^0.75.5", "@silvia-odwyer/photon-node": "0.3.4", "chalk": "5.6.2", "cross-spawn": "7.0.6", diff --git a/packages/tui/CHANGELOG.md b/packages/tui/CHANGELOG.md index b1f8a8dc..f7b66e35 100644 --- a/packages/tui/CHANGELOG.md +++ b/packages/tui/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [Unreleased] +## [0.75.5] - 2026-05-23 ### Changed diff --git a/packages/tui/package.json b/packages/tui/package.json index c684eae7..4736ada3 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -1,6 +1,6 @@ { "name": "@earendil-works/pi-tui", - "version": "0.75.4", + "version": "0.75.5", "description": "Terminal User Interface library with differential rendering for efficient text-based applications", "type": "module", "main": "dist/index.js", diff --git a/scripts/check-lockfile-commit.mjs b/scripts/check-lockfile-commit.mjs index abf78947..bd77d609 100644 --- a/scripts/check-lockfile-commit.mjs +++ b/scripts/check-lockfile-commit.mjs @@ -30,30 +30,50 @@ function packageLabel(lockPath, entry) { return entry?.version ? `${name}@${entry.version}` : name; } -function summarizeLockfileChange() { +function getLockfilePackageChanges() { const before = readJsonFromGit("HEAD:package-lock.json"); const after = readJsonFromGit(":package-lock.json"); - if (!before?.packages || !after?.packages) return []; + if (!before?.packages || !after?.packages) return undefined; const changes = []; const paths = new Set([...Object.keys(before.packages), ...Object.keys(after.packages)]); for (const lockPath of [...paths].sort()) { - if (!lockPath.includes("node_modules/")) continue; const oldEntry = before.packages[lockPath]; const newEntry = after.packages[lockPath]; - if (!oldEntry && newEntry) { - changes.push(`added ${packageLabel(lockPath, newEntry)}`); - } else if (oldEntry && !newEntry) { - changes.push(`removed ${packageLabel(lockPath, oldEntry)}`); - } else if (oldEntry?.version !== newEntry?.version) { - changes.push( - `changed ${packageNameFromLockPath(lockPath)} ${oldEntry?.version ?? ""} -> ${newEntry?.version ?? ""}`, - ); + if (JSON.stringify(oldEntry) !== JSON.stringify(newEntry)) { + changes.push({ lockPath, oldEntry, newEntry }); } } return changes; } +function isWorkspacePackagePath(lockPath) { + return lockPath.startsWith("packages/"); +} + +function hasOnlyWorkspacePackageChanges(changes) { + return changes.length > 0 && changes.every((change) => isWorkspacePackagePath(change.lockPath)); +} + +function summarizeLockfileChange(changes) { + const nodeModuleChanges = changes.filter((change) => change.lockPath.includes("node_modules/")); + const summary = []; + for (const { lockPath, oldEntry, newEntry } of nodeModuleChanges) { + if (!oldEntry && newEntry) { + summary.push(`added ${packageLabel(lockPath, newEntry)}`); + } else if (oldEntry && !newEntry) { + summary.push(`removed ${packageLabel(lockPath, oldEntry)}`); + } else if (oldEntry?.version !== newEntry?.version) { + summary.push( + `changed ${packageNameFromLockPath(lockPath)} ${oldEntry?.version ?? ""} -> ${newEntry?.version ?? ""}`, + ); + } else { + summary.push(`changed ${packageLabel(lockPath, newEntry)}`); + } + } + return summary; +} + const stagedFiles = git(["diff", "--cached", "--name-only"]) .split("\n") .map((line) => line.trim()) @@ -68,6 +88,12 @@ if (allowed) { process.exit(0); } +const changes = getLockfilePackageChanges(); +if (changes && hasOnlyWorkspacePackageChanges(changes)) { + console.error("package-lock.json only updates workspace package metadata; allowing commit."); + process.exit(0); +} + console.error("package-lock.json is staged."); console.error(""); console.error("Review lockfile changes before committing:"); @@ -76,15 +102,15 @@ console.error(" - confirm npm age gates were active for resolution"); console.error(" - review any new lifecycle scripts in the dependency tree"); console.error(" - regenerate/check coding-agent shrinkwrap if release deps changed"); -const changes = summarizeLockfileChange(); -if (changes.length > 0) { +const summary = changes ? summarizeLockfileChange(changes) : []; +if (summary.length > 0) { console.error(""); console.error("Detected package version changes:"); - for (const change of changes.slice(0, 40)) { + for (const change of summary.slice(0, 40)) { console.error(` - ${change}`); } - if (changes.length > 40) { - console.error(` ... ${changes.length - 40} more`); + if (summary.length > 40) { + console.error(` ... ${summary.length - 40} more`); } }