Release v0.75.5

This commit is contained in:
Mario Zechner
2026-05-23 11:58:31 +02:00
parent 98477f2ee7
commit ea2b70ddd9
18 changed files with 88 additions and 62 deletions

24
package-lock.json generated
View File

@@ -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",

View File

@@ -1,6 +1,6 @@
# Changelog
## [Unreleased]
## [0.75.5] - 2026-05-23
## [0.75.4] - 2026-05-20

View File

@@ -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"

View File

@@ -1,6 +1,6 @@
# Changelog
## [Unreleased]
## [0.75.5] - 2026-05-23
### Breaking Changes

View File

@@ -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",

View File

@@ -1,6 +1,6 @@
# Changelog
## [Unreleased]
## [0.75.5] - 2026-05-23
### New Features

View File

@@ -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"
}

View File

@@ -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'",

View File

@@ -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'",

View File

@@ -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"
}

View File

@@ -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'",

View File

@@ -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"
},

View File

@@ -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'",

View File

@@ -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",

View File

@@ -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",

View File

@@ -1,6 +1,6 @@
# Changelog
## [Unreleased]
## [0.75.5] - 2026-05-23
### Changed

View File

@@ -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",

View File

@@ -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 ?? "<none>"} -> ${newEntry?.version ?? "<none>"}`,
);
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 ?? "<none>"} -> ${newEntry?.version ?? "<none>"}`,
);
} 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`);
}
}