FN-7755: upgrade bundled pi SDK to 0.80.6

Bumps the pi SDK dependencies to 0.80.6 across the CLI, dashboard, engine, and pi-claude-cli packages, and adapts the Claude CLI thinking-effort mapper for the new `max` ThinkingLevel.

- Bump @earendil-works/pi-ai and @earendil-works/pi-coding-agent from ^0.80.5 to ^0.80.6 in packages/cli, packages/dashboard, packages/engine, and packages/pi-claude-cli (dependency/peerDependency/devDependency entries)
- Regenerate pnpm-lock.yaml for the new SDK versions
- Map the new `max` ThinkingLevel in packages/pi-claude-cli/src/thinking-config.ts: non-Opus models downgrade to `high` (effort max unsupported), Opus models map to `max`
- Extend packages/pi-claude-cli/src/__tests__/thinking-config.test.ts with coverage for the `max` level
- Add .changeset/fn-7755-pi-sdk-bump.md (patch) documenting the SDK bump

Files changed:
 .changeset/fn-7755-pi-sdk-bump.md                  |  7 ++
 packages/cli/package.json                          |  4 +-
 packages/dashboard/package.json                    |  2 +-
 packages/engine/package.json                       |  4 +-
 packages/pi-claude-cli/package.json                |  8 +-
 .../src/__tests__/thinking-config.test.ts          | 12 +++
 packages/pi-claude-cli/src/thinking-config.ts      | 10 ++-
 pnpm-lock.yaml                                     | 92 +++++++++++-----------
 8 files changed, 82 insertions(+), 57 deletions(-)

Fusion-Task-Id: FN-7755

Fusion-Task-Lineage: f6a9084b-dfb9-4ad5-bd99-4627dae4c666

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
This commit is contained in:
gsxdsm
2026-07-09 21:32:59 -07:00
parent d2c2a4cab1
commit 28c82331e7
8 changed files with 82 additions and 57 deletions

View File

@@ -0,0 +1,7 @@
---
"@runfusion/fusion": patch
---
summary: Update the bundled pi SDK to 0.80.6.
category: internal
dev: Bumps @earendil-works/pi-ai and @earendil-works/pi-coding-agent from ^0.80.5 to ^0.80.6 across cli/dashboard/engine/pi-claude-cli and regenerates pnpm-lock.yaml. Adds pi-claude-cli compatibility for the new max ThinkingLevel by mapping Opus models to CLI max and non-Opus models to high.

View File

@@ -59,8 +59,8 @@
"test:pre-release": "pnpm test:slow-cli && pnpm test:build-exe"
},
"dependencies": {
"@earendil-works/pi-ai": "^0.80.5",
"@earendil-works/pi-coding-agent": "^0.80.5",
"@earendil-works/pi-ai": "^0.80.6",
"@earendil-works/pi-coding-agent": "^0.80.6",
"dockerode": "^4.0.12",
"express": "^5.1.0",
"electron": "^33.4.11",

View File

@@ -102,7 +102,7 @@
"@codemirror/state": "^6.5.2",
"@codemirror/theme-one-dark": "^6.1.2",
"@codemirror/view": "^6.36.4",
"@earendil-works/pi-coding-agent": "^0.80.5",
"@earendil-works/pi-coding-agent": "^0.80.6",
"@fusion-plugin-examples/cli-printing-press": "workspace:*",
"@fusion-plugin-examples/compound-engineering": "workspace:*",
"@fusion-plugin-examples/cursor-runtime": "workspace:*",

View File

@@ -40,8 +40,8 @@
"dependencies": {
"@fusion/core": "workspace:*",
"@fusion/pi-claude-cli": "workspace:*",
"@earendil-works/pi-ai": "^0.80.5",
"@earendil-works/pi-coding-agent": "^0.80.5",
"@earendil-works/pi-ai": "^0.80.6",
"@earendil-works/pi-coding-agent": "^0.80.6",
"@modelcontextprotocol/sdk": "^1.0.0",
"cron-parser": "^5.5.0",
"esbuild": "^0.25.12",

View File

@@ -23,12 +23,12 @@
"@agentclientprotocol/sdk": "0.24.0"
},
"peerDependencies": {
"@earendil-works/pi-ai": "^0.80.5",
"@earendil-works/pi-coding-agent": "^0.80.5"
"@earendil-works/pi-ai": "^0.80.6",
"@earendil-works/pi-coding-agent": "^0.80.6"
},
"devDependencies": {
"@earendil-works/pi-ai": "^0.80.5",
"@earendil-works/pi-coding-agent": "^0.80.5",
"@earendil-works/pi-ai": "^0.80.6",
"@earendil-works/pi-coding-agent": "^0.80.6",
"@types/node": "^22.0.0",
"typescript": "^5.7.0",
"vitest": "^4.1.0"

View File

@@ -57,6 +57,10 @@ describe("mapThinkingEffort", () => {
it("maps xhigh to high (downgrade for non-Opus)", () => {
expect(mapThinkingEffort("xhigh", model, undefined)).toBe("high");
});
it("maps max to high (downgrade for non-Opus)", () => {
expect(mapThinkingEffort("max", model, undefined)).toBe("high");
});
});
describe("Opus model mapping (elevated)", () => {
@@ -81,6 +85,10 @@ describe("mapThinkingEffort", () => {
it("maps xhigh to max", () => {
expect(mapThinkingEffort("xhigh", model, undefined)).toBe("max");
});
it("maps max to max", () => {
expect(mapThinkingEffort("max", model, undefined)).toBe("max");
});
});
describe("thinkingBudgets warning", () => {
@@ -137,5 +145,9 @@ describe("mapThinkingEffort", () => {
it("does not return max for xhigh when modelId is undefined", () => {
expect(mapThinkingEffort("xhigh", undefined, undefined)).toBe("high");
});
it("does not return max for max when modelId is undefined", () => {
expect(mapThinkingEffort("max", undefined, undefined)).toBe("high");
});
});
});

View File

@@ -1,9 +1,13 @@
/**
* Thinking effort configuration for mapping pi's ThinkingLevel to Claude CLI --effort flags.
*
* Maps pi's reasoning levels (minimal/low/medium/high/xhigh) to the CLI's effort
* Maps pi's reasoning levels (minimal/low/medium/high/xhigh/max) to the CLI's effort
* levels (low/medium/high/max). Opus models get an elevated mapping where medium
* becomes high and high becomes max, leveraging their superior reasoning capability.
* becomes high and high/max become max, leveraging their superior reasoning capability.
*
* FNXC:PiSdkUpgrade 2026-07-09-13:45:
* pi SDK 0.80.6 added the `max` ThinkingLevel. Claude CLI's `--effort max` remains reserved
* for Opus models, so standard models keep both `xhigh` and `max` downgraded to `high`.
*
* IMPORTANT: The CLI does NOT support --thinking-budget. Only --effort is supported.
*/
@@ -23,6 +27,7 @@ const STANDARD_EFFORT_MAP: Record<ThinkingLevel, CliEffortLevel> = {
medium: "medium",
high: "high",
xhigh: "high", // non-Opus: silently downgrade (max not supported)
max: "high", // non-Opus: silently downgrade (max not supported)
};
/**
@@ -35,6 +40,7 @@ const OPUS_EFFORT_MAP: Record<ThinkingLevel, CliEffortLevel> = {
medium: "high", // shifted: standard high
high: "max", // shifted: maximum capability
xhigh: "max", // Opus gets max
max: "max", // Opus gets max
};
/**

92
pnpm-lock.yaml generated
View File

@@ -49,11 +49,11 @@ importers:
packages/cli:
dependencies:
'@earendil-works/pi-ai':
specifier: ^0.80.5
version: 0.80.5(@modelcontextprotocol/sdk@1.28.0(zod@3.25.76))(ws@8.20.0)(zod@3.25.76)
specifier: ^0.80.6
version: 0.80.6(@modelcontextprotocol/sdk@1.28.0(zod@3.25.76))(ws@8.20.0)(zod@3.25.76)
'@earendil-works/pi-coding-agent':
specifier: ^0.80.5
version: 0.80.5(@modelcontextprotocol/sdk@1.28.0(zod@3.25.76))(ws@8.20.0)(zod@3.25.76)
specifier: ^0.80.6
version: 0.80.6(@modelcontextprotocol/sdk@1.28.0(zod@3.25.76))(ws@8.20.0)(zod@3.25.76)
dockerode:
specifier: ^4.0.12
version: 4.0.12
@@ -229,8 +229,8 @@ importers:
specifier: ^6.36.4
version: 6.40.0
'@earendil-works/pi-coding-agent':
specifier: ^0.80.5
version: 0.80.5(ws@8.20.0)(zod@3.25.76)
specifier: ^0.80.6
version: 0.80.6(ws@8.20.0)(zod@3.25.76)
'@fusion-plugin-examples/cli-printing-press':
specifier: workspace:*
version: link:../../plugins/fusion-plugin-cli-printing-press
@@ -505,11 +505,11 @@ importers:
packages/engine:
dependencies:
'@earendil-works/pi-ai':
specifier: ^0.80.5
version: 0.80.5(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)
specifier: ^0.80.6
version: 0.80.6(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)
'@earendil-works/pi-coding-agent':
specifier: ^0.80.5
version: 0.80.5(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)
specifier: ^0.80.6
version: 0.80.6(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)
'@fusion/core':
specifier: workspace:*
version: link:../core
@@ -620,11 +620,11 @@ importers:
version: 0.24.0(zod@4.3.6)
devDependencies:
'@earendil-works/pi-ai':
specifier: ^0.80.5
version: 0.80.5(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)
specifier: ^0.80.6
version: 0.80.6(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)
'@earendil-works/pi-coding-agent':
specifier: ^0.80.5
version: 0.80.5(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)
specifier: ^0.80.6
version: 0.80.6(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)
'@types/node':
specifier: ^25.5.2
version: 25.5.2
@@ -1654,8 +1654,8 @@ packages:
resolution: {integrity: sha512-3qw0/GeRQBU/nlGjDe5Yb7ePKTmoxefx2YxyKMFAviFUMXpFexBG/hS7mBtwFahFvzrrTPPoRT6sFIDjwoDWPQ==}
engines: {node: '>=22.19.0'}
'@earendil-works/pi-agent-core@0.80.5':
resolution: {integrity: sha512-413NZ5BEwSdL+BAtoBlk7hcA3UGvltcdAPtFoMZ1uqLZRNIoFU0WhNXGwv5Sp1SPBmMR6MAc3neoA+MdOlWJ2w==}
'@earendil-works/pi-agent-core@0.80.6':
resolution: {integrity: sha512-Lvn89ko42h5ETUb6Z0Ku6ldskEqXaTdQBYvSa0+7bdG9V6rUEpXptv5e0OVZ1HDcvi8s6/2lGCQWsxKX+DFHNw==}
engines: {node: '>=22.19.0'}
'@earendil-works/pi-ai@0.77.0':
@@ -1673,8 +1673,8 @@ packages:
engines: {node: '>=22.19.0'}
hasBin: true
'@earendil-works/pi-ai@0.80.5':
resolution: {integrity: sha512-+7UODYKu4o/X8sxTHG8HEV3+O+dOYKg5MeO3MJIFQ+wu65pIWDhjZGc759uWsRr79AhV7MSJEe4GWnFn4l68gw==}
'@earendil-works/pi-ai@0.80.6':
resolution: {integrity: sha512-7xfLk8sANBp+bpPEbjoOZTbPxsa+++b1JXAoSJsNa3vbs9AHHEclmvg54XLQcxH+fuwaeti/g2jeIfJ+mVYLpA==}
engines: {node: '>=22.19.0'}
hasBin: true
@@ -1693,8 +1693,8 @@ packages:
engines: {node: '>=22.19.0'}
hasBin: true
'@earendil-works/pi-coding-agent@0.80.5':
resolution: {integrity: sha512-GPYFuHw1BN+3m5Gzw1HGH41WdFDzbplLauS0zYSf1ZOkgKFd6wtEAcjchB/vmz9YtTGbQOwECbsVj6GxZxungA==}
'@earendil-works/pi-coding-agent@0.80.6':
resolution: {integrity: sha512-vcfD6tOk402isLl3Cm/qbn2O10TvgroMp1+/fEGM24ZdvETFCdOYv5VZ7m59EI5fPsjfSJh+CpQ5bhBrhfOg7g==}
engines: {node: '>=22.19.0'}
hasBin: true
@@ -1710,8 +1710,8 @@ packages:
resolution: {integrity: sha512-2BJI6qwRQfnM0Q7seL1+SbacU/jRRjBnN7Hu3n9BjAn7/s5FaBNnvdD1qBQYRsFTHfjqMaDsjYqanPyqwXj99w==}
engines: {node: '>=22.19.0'}
'@earendil-works/pi-tui@0.80.5':
resolution: {integrity: sha512-raxEUD2CvCDNJuOWEAI+xD7vmxCrGH0NYb31+GQDdL1q9WXn5+uNLgP1vkJfOsTvf9k5zU5sNFA06oBIcWSYtQ==}
'@earendil-works/pi-tui@0.80.6':
resolution: {integrity: sha512-bSuzS4EVSqEPj/Qr/p9eqCESfKsGuDNbl77EGci8Iaqqt/C/XCBZL1MjXaxSWW1NsT5afjp/Cb0NTPzOLv/aPA==}
engines: {node: '>=22.19.0'}
'@electron/asar@3.4.1':
@@ -8511,7 +8511,7 @@ snapshots:
'@earendil-works/pi-agent-core@0.80.3(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)':
dependencies:
'@earendil-works/pi-ai': 0.80.5(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)
'@earendil-works/pi-ai': 0.80.6(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)
ignore: 7.0.5
typebox: 1.1.38
yaml: 2.9.0
@@ -8523,9 +8523,9 @@ snapshots:
- ws
- zod
'@earendil-works/pi-agent-core@0.80.5(@modelcontextprotocol/sdk@1.28.0(zod@3.25.76))(ws@8.20.0)(zod@3.25.76)':
'@earendil-works/pi-agent-core@0.80.6(@modelcontextprotocol/sdk@1.28.0(zod@3.25.76))(ws@8.20.0)(zod@3.25.76)':
dependencies:
'@earendil-works/pi-ai': 0.80.5(@modelcontextprotocol/sdk@1.28.0(zod@3.25.76))(ws@8.20.0)(zod@3.25.76)
'@earendil-works/pi-ai': 0.80.6(@modelcontextprotocol/sdk@1.28.0(zod@3.25.76))(ws@8.20.0)(zod@3.25.76)
ignore: 7.0.5
typebox: 1.1.38
yaml: 2.9.0
@@ -8537,9 +8537,9 @@ snapshots:
- ws
- zod
'@earendil-works/pi-agent-core@0.80.5(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)':
'@earendil-works/pi-agent-core@0.80.6(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)':
dependencies:
'@earendil-works/pi-ai': 0.80.5(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)
'@earendil-works/pi-ai': 0.80.6(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)
ignore: 7.0.5
typebox: 1.1.38
yaml: 2.9.0
@@ -8551,9 +8551,9 @@ snapshots:
- ws
- zod
'@earendil-works/pi-agent-core@0.80.5(ws@8.20.0)(zod@3.25.76)':
'@earendil-works/pi-agent-core@0.80.6(ws@8.20.0)(zod@3.25.76)':
dependencies:
'@earendil-works/pi-ai': 0.80.5(ws@8.20.0)(zod@3.25.76)
'@earendil-works/pi-ai': 0.80.6(ws@8.20.0)(zod@3.25.76)
ignore: 7.0.5
typebox: 1.1.38
yaml: 2.9.0
@@ -8666,7 +8666,7 @@ snapshots:
- ws
- zod
'@earendil-works/pi-ai@0.80.5(@modelcontextprotocol/sdk@1.28.0(zod@3.25.76))(ws@8.20.0)(zod@3.25.76)':
'@earendil-works/pi-ai@0.80.6(@modelcontextprotocol/sdk@1.28.0(zod@3.25.76))(ws@8.20.0)(zod@3.25.76)':
dependencies:
'@anthropic-ai/sdk': 0.91.1(zod@3.25.76)
'@aws-sdk/client-bedrock-runtime': 3.1048.0
@@ -8687,7 +8687,7 @@ snapshots:
- ws
- zod
'@earendil-works/pi-ai@0.80.5(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)':
'@earendil-works/pi-ai@0.80.6(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)':
dependencies:
'@anthropic-ai/sdk': 0.91.1(zod@4.3.6)
'@aws-sdk/client-bedrock-runtime': 3.1048.0
@@ -8708,7 +8708,7 @@ snapshots:
- ws
- zod
'@earendil-works/pi-ai@0.80.5(ws@8.20.0)(zod@3.25.76)':
'@earendil-works/pi-ai@0.80.6(ws@8.20.0)(zod@3.25.76)':
dependencies:
'@anthropic-ai/sdk': 0.91.1(zod@3.25.76)
'@aws-sdk/client-bedrock-runtime': 3.1048.0
@@ -8848,7 +8848,7 @@ snapshots:
'@earendil-works/pi-coding-agent@0.80.3(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)':
dependencies:
'@earendil-works/pi-agent-core': 0.80.3(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)
'@earendil-works/pi-ai': 0.80.5(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)
'@earendil-works/pi-ai': 0.80.6(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)
'@earendil-works/pi-tui': 0.80.3
'@silvia-odwyer/photon-node': 0.3.4
chalk: 5.6.2
@@ -8875,11 +8875,11 @@ snapshots:
- ws
- zod
'@earendil-works/pi-coding-agent@0.80.5(@modelcontextprotocol/sdk@1.28.0(zod@3.25.76))(ws@8.20.0)(zod@3.25.76)':
'@earendil-works/pi-coding-agent@0.80.6(@modelcontextprotocol/sdk@1.28.0(zod@3.25.76))(ws@8.20.0)(zod@3.25.76)':
dependencies:
'@earendil-works/pi-agent-core': 0.80.5(@modelcontextprotocol/sdk@1.28.0(zod@3.25.76))(ws@8.20.0)(zod@3.25.76)
'@earendil-works/pi-ai': 0.80.5(@modelcontextprotocol/sdk@1.28.0(zod@3.25.76))(ws@8.20.0)(zod@3.25.76)
'@earendil-works/pi-tui': 0.80.5
'@earendil-works/pi-agent-core': 0.80.6(@modelcontextprotocol/sdk@1.28.0(zod@3.25.76))(ws@8.20.0)(zod@3.25.76)
'@earendil-works/pi-ai': 0.80.6(@modelcontextprotocol/sdk@1.28.0(zod@3.25.76))(ws@8.20.0)(zod@3.25.76)
'@earendil-works/pi-tui': 0.80.6
'@silvia-odwyer/photon-node': 0.3.4
chalk: 5.6.2
cross-spawn: 7.0.6
@@ -8905,11 +8905,11 @@ snapshots:
- ws
- zod
'@earendil-works/pi-coding-agent@0.80.5(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)':
'@earendil-works/pi-coding-agent@0.80.6(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)':
dependencies:
'@earendil-works/pi-agent-core': 0.80.5(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)
'@earendil-works/pi-ai': 0.80.5(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)
'@earendil-works/pi-tui': 0.80.5
'@earendil-works/pi-agent-core': 0.80.6(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)
'@earendil-works/pi-ai': 0.80.6(@modelcontextprotocol/sdk@1.28.0(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)
'@earendil-works/pi-tui': 0.80.6
'@silvia-odwyer/photon-node': 0.3.4
chalk: 5.6.2
cross-spawn: 7.0.6
@@ -8935,11 +8935,11 @@ snapshots:
- ws
- zod
'@earendil-works/pi-coding-agent@0.80.5(ws@8.20.0)(zod@3.25.76)':
'@earendil-works/pi-coding-agent@0.80.6(ws@8.20.0)(zod@3.25.76)':
dependencies:
'@earendil-works/pi-agent-core': 0.80.5(ws@8.20.0)(zod@3.25.76)
'@earendil-works/pi-ai': 0.80.5(ws@8.20.0)(zod@3.25.76)
'@earendil-works/pi-tui': 0.80.5
'@earendil-works/pi-agent-core': 0.80.6(ws@8.20.0)(zod@3.25.76)
'@earendil-works/pi-ai': 0.80.6(ws@8.20.0)(zod@3.25.76)
'@earendil-works/pi-tui': 0.80.6
'@silvia-odwyer/photon-node': 0.3.4
chalk: 5.6.2
cross-spawn: 7.0.6
@@ -8980,7 +8980,7 @@ snapshots:
get-east-asian-width: 1.6.0
marked: 18.0.5
'@earendil-works/pi-tui@0.80.5':
'@earendil-works/pi-tui@0.80.6':
dependencies:
get-east-asian-width: 1.6.0
marked: 18.0.5