FN-8564: update bundled Pi runtime to 0.82.0

Update Fusion's matched Pi dependencies and compatibility coverage for version 0.82.0.

- Pin Pi AI and coding-agent packages to the exact 0.82.0 release pair.
- Refresh provider catalog, supplemental model, auth storage, and Droid thinking coverage.
- Add the published CLI patch changeset.

Files changed:
 .changeset/fn-8564-pi-082.md                       |   7 +
 packages/cli/package.json                          |   4 +-
 packages/cli/src/__tests__/package-config.test.ts  |   2 +-
 packages/core/package.json                         |   2 +-
 packages/dashboard/package.json                    |   2 +-
 ...ister-model-routes-kimi-k3-supplemental.test.ts |   6 +-
 packages/engine/package.json                       |   4 +-
 .../src/__tests__/provider-registration.test.ts    |   4 +-
 packages/engine/src/auth-storage.ts                |  11 +-
 packages/engine/src/pi.ts                          |   6 +
 packages/pi-claude-cli/package.json                |   8 +-
 .../src/thinking-config.ts                         |  10 +-
 pnpm-lock.yaml                                     | 176 +++++++++++----------
 pnpm-workspace.yaml                                |   6 +-
 .../__tests__/check-pi-versions-pinned.test.mjs    |   8 +-
 15 files changed, 142 insertions(+), 114 deletions(-)

Fusion-Task-Id: FN-8564

Fusion-Task-Lineage: 543c5e17-4cb2-446f-9a1c-ec7ec8b8117a

Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
This commit is contained in:
gsxdsm
2026-07-24 19:06:14 -07:00
parent c50e303a94
commit e3dba364d1
15 changed files with 142 additions and 114 deletions

View File

@@ -0,0 +1,7 @@
---
"@runfusion/fusion": patch
---
summary: Update bundled Pi runtime dependencies to the exact matched 0.82.0 pair.
category: internal
dev: Pins @earendil-works/pi-ai and @earendil-works/pi-coding-agent to 0.82.0.

View File

@@ -67,8 +67,8 @@
"dependencies": { "dependencies": {
"@agentclientprotocol/sdk": "0.24.0", "@agentclientprotocol/sdk": "0.24.0",
"agent-browser": "0.26.0", "agent-browser": "0.26.0",
"@earendil-works/pi-ai": "0.81.1", "@earendil-works/pi-ai": "0.82.0",
"@earendil-works/pi-coding-agent": "0.81.1", "@earendil-works/pi-coding-agent": "0.82.0",
"claude-code-cli-acp": "0.1.1", "claude-code-cli-acp": "0.1.1",
"dockerode": "^4.0.12", "dockerode": "^4.0.12",
"electron": "^33.4.11", "electron": "^33.4.11",

View File

@@ -56,7 +56,7 @@ function assertRuntimeDepsAreNotOptionalPeers(pkg: any, label: string): void {
for (const dependencyName of ["@earendil-works/pi-coding-agent", "@earendil-works/pi-ai"]) { for (const dependencyName of ["@earendil-works/pi-coding-agent", "@earendil-works/pi-ai"]) {
expect(dependencies, `${label}: ${dependencyName} must remain a required runtime dependency`).toHaveProperty( expect(dependencies, `${label}: ${dependencyName} must remain a required runtime dependency`).toHaveProperty(
dependencyName, dependencyName,
"0.81.1", "0.82.0",
); );
expect(dependencies[dependencyName], `${label}: ${dependencyName} must be a clean exact semver`).toMatch( expect(dependencies[dependencyName], `${label}: ${dependencyName} must be a clean exact semver`).toMatch(
EXACT_SEMVER, EXACT_SEMVER,

View File

@@ -46,7 +46,7 @@
"test:pg-gate": "vitest run --config vitest.pg.config.ts src/__tests__/postgres/handoff-to-review-atomicity.pg.test.ts src/__tests__/postgres/task-lifecycle-e2e.pg.test.ts --silent=passed-only --reporter=dot" "test:pg-gate": "vitest run --config vitest.pg.config.ts src/__tests__/postgres/handoff-to-review-atomicity.pg.test.ts src/__tests__/postgres/task-lifecycle-e2e.pg.test.ts --silent=passed-only --reporter=dot"
}, },
"devDependencies": { "devDependencies": {
"@earendil-works/pi-coding-agent": "0.81.1", "@earendil-works/pi-coding-agent": "0.82.0",
"@types/dockerode": "^3.3.41", "@types/dockerode": "^3.3.41",
"@types/node": "^25.5.0", "@types/node": "^25.5.0",
"@vitest/coverage-v8": "^4.1.0", "@vitest/coverage-v8": "^4.1.0",

View File

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

View File

@@ -4,9 +4,9 @@ import { ModelRegistry, ModelRuntime } from "@earendil-works/pi-coding-agent";
import { registerModelRoutes } from "../routes/register-model-routes.js"; import { registerModelRoutes } from "../routes/register-model-routes.js";
/* /*
FNXC:ModelCatalog 2026-07-16-19:05: FNXC:ModelCatalog 2026-07-24-12:00:
FN-8180 requires Kimi K3 to reach both model-catalog consumers. This route-level FN-8564 requires Kimi K3 to reach both model-catalog consumers. This route-level
coverage uses pi 0.81.1's actual built-in ModelRuntime catalog after refresh, so an coverage uses Pi 0.82.0's actual built-in ModelRuntime catalog after refresh, so an
SDK catalog regression cannot leave the Dashboard dropdown missing K3 while the engine SDK catalog regression cannot leave the Dashboard dropdown missing K3 while the engine
registry test remains green. registry test remains green.
*/ */

View File

@@ -38,8 +38,8 @@
"test:watch": "vitest src/__tests__/executor-*.test.ts --watch" "test:watch": "vitest src/__tests__/executor-*.test.ts --watch"
}, },
"dependencies": { "dependencies": {
"@earendil-works/pi-ai": "0.81.1", "@earendil-works/pi-ai": "0.82.0",
"@earendil-works/pi-coding-agent": "0.81.1", "@earendil-works/pi-coding-agent": "0.82.0",
"@fusion/core": "workspace:*", "@fusion/core": "workspace:*",
"@fusion/pi-claude-cli": "workspace:*", "@fusion/pi-claude-cli": "workspace:*",
"@modelcontextprotocol/sdk": "^1.0.0", "@modelcontextprotocol/sdk": "^1.0.0",

View File

@@ -128,8 +128,8 @@ describe("seedDashboardProviders", () => {
}); });
it("keeps native Kimi K3 available through the installed pi model registry", async () => { it("keeps native Kimi K3 available through the installed pi model registry", async () => {
// FNXC:ModelCatalog 2026-07-16-19:05: FN-8180 requires catalog coverage to // FNXC:ModelCatalog 2026-07-24-12:00: FN-8564 keeps catalog coverage on Pi
// exercise pi's real 0.81.1 built-in registry, not a hand-written Kimi fixture. // 0.82.0's real built-in registry, not a hand-written Kimi fixture.
const modelRegistry = await createInMemoryModelRegistry(); const modelRegistry = await createInMemoryModelRegistry();
await modelRegistry.refresh(); await modelRegistry.refresh();

View File

@@ -223,10 +223,15 @@ vendored @earendil-works/pi-coding-agent AuthStorage backend using proper-lockfi
plus a per-provider read-modify-merge (FileAuthStorageBackend.persistProviderChange / plus a per-provider read-modify-merge (FileAuthStorageBackend.persistProviderChange /
refreshOAuthTokenWithLock re-read the file under a lock and spread refreshOAuthTokenWithLock re-read the file under a lock and spread
{...currentData, [provider]: credential} rather than flushing a whole-file in-memory {...currentData, [provider]: credential} rather than flushing a whole-file in-memory
snapshot). packages/engine/package.json already floors this at snapshot). packages/engine/package.json already pins this at
"@earendil-works/pi-coding-agent": "0.81.1" (exact pin; locked per-provider merge requires "@earendil-works/pi-coding-agent": "0.82.0" (exact matched runtime pair; locked per-provider
>=0.80.3) — do not downgrade below 0.80.x, and re-verify this comment against merge requires >=0.80.3) — do not downgrade below 0.80.x, and re-verify this comment against
dist/core/auth-storage.js if the pin is ever lowered. See dist/core/auth-storage.js if the pin is ever lowered. See
FNXC:ProviderAuth 2026-07-24-12:00:
FN-8564 retains Fusion's credential-store adapter on Pi 0.82.0. The release adds Kimi Code and
OpenRouter OAuth, so new upstream login providers must still use the same queued, cross-process
credential persistence contract rather than bypassing Fusion auth storage.
packages/engine/src/__tests__/auth-storage-concurrency.test.ts for the regression coverage. packages/engine/src/__tests__/auth-storage-concurrency.test.ts for the regression coverage.
*/ */

View File

@@ -2543,6 +2543,12 @@ export async function createFnAgent(options: AgentOptions): Promise<AgentResult>
0.81 adds full provider extensions, expanded usage accounting, Qwen Token Plan, llama.cpp 0.81 adds full provider extensions, expanded usage accounting, Qwen Token Plan, llama.cpp
router management, and resilient compaction retries; Fusion session creation stays on the router management, and resilient compaction retries; Fusion session creation stays on the
ModelRuntime path already adopted in 0.80.8. ModelRuntime path already adopted in 0.80.8.
FNXC:ModelCatalog 2026-07-24-12:00:
FN-8564 advances the exact matched pair to 0.82.0. Its catalog now exposes only
provider-verified reasoning levels and adds Kimi/OpenRouter OAuth plus constrained tools;
retain Fusion's ModelRuntime session construction and supplemental catalog merges rather
than duplicating upstream provider behavior.
*/ */
const createSessionOptions: NonNullable<Parameters<typeof createAgentSession>[0]> = { const createSessionOptions: NonNullable<Parameters<typeof createAgentSession>[0]> = {
cwd: options.cwd, cwd: options.cwd,

View File

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

View File

@@ -6,9 +6,13 @@
* becomes high and high becomes max, leveraging their superior reasoning capability. * becomes high and high becomes max, leveraging their superior reasoning capability.
* *
* FNXC:DroidThinking 2026-07-16-18:20: * FNXC:DroidThinking 2026-07-16-18:20:
* Fusion now resolves pi 0.81.1 workspace-wide, whose ThinkingLevel includes `max`. * Pi's ThinkingLevel includes `max`. Keep both exhaustive mappings explicit:
* Keep both exhaustive mappings explicit: non-Opus must still avoid the CLI's max * non-Opus must still avoid the CLI's max effort, while Opus may use it.
* effort, while Opus may use it. *
* FNXC:DroidThinking 2026-07-24-12:00:
* FN-8564 updates the workspace runtime to Pi 0.82.0 while retaining `max`.
* Keep these exhaustive maps aligned with the installed type rather than casting
* unknown thinking levels through the Droid CLI boundary.
* *
* IMPORTANT: The CLI does NOT support --thinking-budget. Only --effort is supported. * IMPORTANT: The CLI does NOT support --thinking-budget. Only --effort is supported.
*/ */

176
pnpm-lock.yaml generated
View File

@@ -7,8 +7,8 @@ settings:
overrides: overrides:
'@types/node': ^25.5.2 '@types/node': ^25.5.2
protobufjs: ^7.5.8 protobufjs: ^7.5.8
'@earendil-works/pi-ai': 0.81.1 '@earendil-works/pi-ai': 0.82.0
'@earendil-works/pi-coding-agent': 0.81.1 '@earendil-works/pi-coding-agent': 0.82.0
importers: importers:
@@ -54,11 +54,11 @@ importers:
specifier: 0.24.0 specifier: 0.24.0
version: 0.24.0(zod@4.4.3) version: 0.24.0(zod@4.4.3)
'@earendil-works/pi-ai': '@earendil-works/pi-ai':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) version: 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3)
'@earendil-works/pi-coding-agent': '@earendil-works/pi-coding-agent':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) version: 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3)
agent-browser: agent-browser:
specifier: 0.26.0 specifier: 0.26.0
version: 0.26.0 version: 0.26.0
@@ -209,8 +209,8 @@ importers:
version: 2.8.3 version: 2.8.3
devDependencies: devDependencies:
'@earendil-works/pi-coding-agent': '@earendil-works/pi-coding-agent':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1 version: 0.82.0
'@types/dockerode': '@types/dockerode':
specifier: ^3.3.41 specifier: ^3.3.41
version: 3.3.47 version: 3.3.47
@@ -258,8 +258,8 @@ importers:
specifier: ^6.36.4 specifier: ^6.36.4
version: 6.40.0 version: 6.40.0
'@earendil-works/pi-coding-agent': '@earendil-works/pi-coding-agent':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1(ws@8.20.0)(zod@3.25.76) version: 0.82.0(ws@8.20.0)(zod@3.25.76)
'@fusion-plugin-examples/claude-runtime': '@fusion-plugin-examples/claude-runtime':
specifier: workspace:* specifier: workspace:*
version: link:../../plugins/fusion-plugin-claude-runtime version: link:../../plugins/fusion-plugin-claude-runtime
@@ -524,11 +524,11 @@ importers:
packages/droid-cli: packages/droid-cli:
dependencies: dependencies:
'@earendil-works/pi-ai': '@earendil-works/pi-ai':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) version: 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)
'@earendil-works/pi-coding-agent': '@earendil-works/pi-coding-agent':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) version: 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)
'@fusion-plugin-examples/droid-runtime': '@fusion-plugin-examples/droid-runtime':
specifier: workspace:* specifier: workspace:*
version: link:../../plugins/fusion-plugin-droid-runtime version: link:../../plugins/fusion-plugin-droid-runtime
@@ -546,11 +546,11 @@ importers:
packages/engine: packages/engine:
dependencies: dependencies:
'@earendil-works/pi-ai': '@earendil-works/pi-ai':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) version: 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)
'@earendil-works/pi-coding-agent': '@earendil-works/pi-coding-agent':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) version: 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)
'@fusion/core': '@fusion/core':
specifier: workspace:* specifier: workspace:*
version: link:../core version: link:../core
@@ -664,11 +664,11 @@ importers:
version: 0.24.0(zod@4.4.3) version: 0.24.0(zod@4.4.3)
devDependencies: devDependencies:
'@earendil-works/pi-ai': '@earendil-works/pi-ai':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) version: 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)
'@earendil-works/pi-coding-agent': '@earendil-works/pi-coding-agent':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) version: 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)
'@types/node': '@types/node':
specifier: ^25.5.2 specifier: ^25.5.2
version: 25.5.2 version: 25.5.2
@@ -682,8 +682,8 @@ importers:
packages/pi-llama-cpp: packages/pi-llama-cpp:
dependencies: dependencies:
'@earendil-works/pi-coding-agent': '@earendil-works/pi-coding-agent':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1 version: 0.82.0
devDependencies: devDependencies:
'@types/node': '@types/node':
specifier: ^25.5.2 specifier: ^25.5.2
@@ -781,11 +781,11 @@ importers:
specifier: 0.24.0 specifier: 0.24.0
version: 0.24.0(zod@4.4.3) version: 0.24.0(zod@4.4.3)
'@earendil-works/pi-ai': '@earendil-works/pi-ai':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) version: 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)
'@earendil-works/pi-coding-agent': '@earendil-works/pi-coding-agent':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) version: 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)
'@fusion/core': '@fusion/core':
specifier: workspace:* specifier: workspace:*
version: link:../../packages/core version: link:../../packages/core
@@ -831,11 +831,11 @@ importers:
specifier: 0.24.0 specifier: 0.24.0
version: 0.24.0(zod@4.4.3) version: 0.24.0(zod@4.4.3)
'@earendil-works/pi-ai': '@earendil-works/pi-ai':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) version: 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)
'@earendil-works/pi-coding-agent': '@earendil-works/pi-coding-agent':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) version: 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)
'@fusion/core': '@fusion/core':
specifier: workspace:* specifier: workspace:*
version: link:../../packages/core version: link:../../packages/core
@@ -954,11 +954,11 @@ importers:
plugins/fusion-plugin-cursor-runtime: plugins/fusion-plugin-cursor-runtime:
dependencies: dependencies:
'@earendil-works/pi-ai': '@earendil-works/pi-ai':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) version: 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)
'@earendil-works/pi-coding-agent': '@earendil-works/pi-coding-agent':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) version: 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)
'@fusion/plugin-sdk': '@fusion/plugin-sdk':
specifier: workspace:* specifier: workspace:*
version: link:../../packages/plugin-sdk version: link:../../packages/plugin-sdk
@@ -1010,11 +1010,11 @@ importers:
plugins/fusion-plugin-droid-runtime: plugins/fusion-plugin-droid-runtime:
dependencies: dependencies:
'@earendil-works/pi-ai': '@earendil-works/pi-ai':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) version: 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)
'@earendil-works/pi-coding-agent': '@earendil-works/pi-coding-agent':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) version: 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)
'@fusion/plugin-sdk': '@fusion/plugin-sdk':
specifier: workspace:* specifier: workspace:*
version: link:../../packages/plugin-sdk version: link:../../packages/plugin-sdk
@@ -1057,11 +1057,11 @@ importers:
specifier: 0.24.0 specifier: 0.24.0
version: 0.24.0(zod@4.4.3) version: 0.24.0(zod@4.4.3)
'@earendil-works/pi-ai': '@earendil-works/pi-ai':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) version: 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)
'@earendil-works/pi-coding-agent': '@earendil-works/pi-coding-agent':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) version: 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)
'@fusion/core': '@fusion/core':
specifier: workspace:* specifier: workspace:*
version: link:../../packages/core version: link:../../packages/core
@@ -1141,11 +1141,11 @@ importers:
specifier: 0.24.0 specifier: 0.24.0
version: 0.24.0(zod@4.4.3) version: 0.24.0(zod@4.4.3)
'@earendil-works/pi-ai': '@earendil-works/pi-ai':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) version: 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)
'@earendil-works/pi-coding-agent': '@earendil-works/pi-coding-agent':
specifier: 0.81.1 specifier: 0.82.0
version: 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) version: 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)
'@fusion/core': '@fusion/core':
specifier: workspace:* specifier: workspace:*
version: link:../../packages/core version: link:../../packages/core
@@ -1826,22 +1826,22 @@ packages:
resolution: {integrity: sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==} resolution: {integrity: sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==}
engines: {node: '>= 8.9.0'} engines: {node: '>= 8.9.0'}
'@earendil-works/pi-agent-core@0.81.1': '@earendil-works/pi-agent-core@0.82.0':
resolution: {integrity: sha512-yqbh68CyhqxMov/jUogFJfMqlu2Gd37GAki+tr59YCmAPHfomiCA5ESzusXtpGzABeiZFC/OrRdQ4GwCCOMIHA==} resolution: {integrity: sha512-bnS9DpOKK5T/F/gQkaOnYdMsuuciWiScfAHHWC+k5OQ0HxjSqMFQvp8keurULLoT4+v8NHv4V14pNvd4hsfC0Q==}
engines: {node: '>=22.19.0'} engines: {node: '>=22.19.0'}
'@earendil-works/pi-ai@0.81.1': '@earendil-works/pi-ai@0.82.0':
resolution: {integrity: sha512-hzHE7Z8l5mgJk+ke67Lge0rwS2+wbKJrFKl9o5M1R1rh33+cCT7D1AHz1OAtX5wFs90E1/BTGhyJRTUHaMxGvQ==} resolution: {integrity: sha512-8MvW9+zno13sXDuT2kFMnWeTNUufUhPeZDRVO+igGoBRCDWgn7Xh2FkRQI1mRuet6QhF4ENQuLYdIAOyG6BhNw==}
engines: {node: '>=22.19.0'} engines: {node: '>=22.19.0'}
hasBin: true hasBin: true
'@earendil-works/pi-coding-agent@0.81.1': '@earendil-works/pi-coding-agent@0.82.0':
resolution: {integrity: sha512-r6ovAsZOgAqbC/aU6s+/dPnv/sGZBuWyZNvi3pXjpbuX5wvp3XvGkQI7/VLvX2o9XpmpFaPUxKNym1WfkN/P8A==} resolution: {integrity: sha512-Qnqgn9zhJFQ2HZ8R4iNuGhyCk93XX6+eUw9i+TjTuo47amzCy93ft3bB6yaUCleCrNO58dJDHYSGNHv/GAPWKg==}
engines: {node: '>=22.19.0'} engines: {node: '>=22.19.0'}
hasBin: true hasBin: true
'@earendil-works/pi-tui@0.81.1': '@earendil-works/pi-tui@0.82.0':
resolution: {integrity: sha512-OMEe+Zt8oQYi/rCq3upxsTlIScWL0FPhXwQus34TbQb3EmTx88S7Uzx32JxvQiEeWOw8eDCdJf2PBUBE9r6wIg==} resolution: {integrity: sha512-9IDjQOXne7t9l2s2YcjnIBxsVNVPE7qScVSB3YmFlXsBW4pfo2gOElTxggV84KrRiGqABnlFPBWbf0k54hszHQ==}
engines: {node: '>=22.19.0'} engines: {node: '>=22.19.0'}
'@electron/asar@3.4.1': '@electron/asar@3.4.1':
@@ -8962,9 +8962,10 @@ snapshots:
ajv: 6.14.0 ajv: 6.14.0
ajv-keywords: 3.5.2(ajv@6.14.0) ajv-keywords: 3.5.2(ajv@6.14.0)
'@earendil-works/pi-agent-core@0.81.1': '@earendil-works/pi-agent-core@0.82.0':
dependencies: dependencies:
'@earendil-works/pi-ai': 0.81.1 '@earendil-works/pi-ai': 0.82.0
diff: 8.0.4
ignore: 7.0.5 ignore: 7.0.5
typebox: 1.1.38 typebox: 1.1.38
yaml: 2.9.0 yaml: 2.9.0
@@ -8976,9 +8977,10 @@ snapshots:
- ws - ws
- zod - zod
'@earendil-works/pi-agent-core@0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3)': '@earendil-works/pi-agent-core@0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3)':
dependencies: dependencies:
'@earendil-works/pi-ai': 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) '@earendil-works/pi-ai': 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3)
diff: 8.0.4
ignore: 7.0.5 ignore: 7.0.5
typebox: 1.1.38 typebox: 1.1.38
yaml: 2.9.0 yaml: 2.9.0
@@ -8990,9 +8992,10 @@ snapshots:
- ws - ws
- zod - zod
'@earendil-works/pi-agent-core@0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)': '@earendil-works/pi-agent-core@0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)':
dependencies: dependencies:
'@earendil-works/pi-ai': 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) '@earendil-works/pi-ai': 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)
diff: 8.0.4
ignore: 7.0.5 ignore: 7.0.5
typebox: 1.1.38 typebox: 1.1.38
yaml: 2.9.0 yaml: 2.9.0
@@ -9004,9 +9007,10 @@ snapshots:
- ws - ws
- zod - zod
'@earendil-works/pi-agent-core@0.81.1(ws@8.20.0)(zod@3.25.76)': '@earendil-works/pi-agent-core@0.82.0(ws@8.20.0)(zod@3.25.76)':
dependencies: dependencies:
'@earendil-works/pi-ai': 0.81.1(ws@8.20.0)(zod@3.25.76) '@earendil-works/pi-ai': 0.82.0(ws@8.20.0)(zod@3.25.76)
diff: 8.0.4
ignore: 7.0.5 ignore: 7.0.5
typebox: 1.1.38 typebox: 1.1.38
yaml: 2.9.0 yaml: 2.9.0
@@ -9018,7 +9022,7 @@ snapshots:
- ws - ws
- zod - zod
'@earendil-works/pi-ai@0.81.1': '@earendil-works/pi-ai@0.82.0':
dependencies: dependencies:
'@anthropic-ai/sdk': 0.91.1(zod@3.25.76) '@anthropic-ai/sdk': 0.91.1(zod@3.25.76)
'@aws-sdk/client-bedrock-runtime': 3.1048.0 '@aws-sdk/client-bedrock-runtime': 3.1048.0
@@ -9039,7 +9043,7 @@ snapshots:
- ws - ws
- zod - zod
'@earendil-works/pi-ai@0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3)': '@earendil-works/pi-ai@0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3)':
dependencies: dependencies:
'@anthropic-ai/sdk': 0.91.1(zod@4.4.3) '@anthropic-ai/sdk': 0.91.1(zod@4.4.3)
'@aws-sdk/client-bedrock-runtime': 3.1048.0 '@aws-sdk/client-bedrock-runtime': 3.1048.0
@@ -9060,7 +9064,7 @@ snapshots:
- ws - ws
- zod - zod
'@earendil-works/pi-ai@0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)': '@earendil-works/pi-ai@0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)':
dependencies: dependencies:
'@anthropic-ai/sdk': 0.91.1(zod@4.4.3) '@anthropic-ai/sdk': 0.91.1(zod@4.4.3)
'@aws-sdk/client-bedrock-runtime': 3.1048.0 '@aws-sdk/client-bedrock-runtime': 3.1048.0
@@ -9081,7 +9085,7 @@ snapshots:
- ws - ws
- zod - zod
'@earendil-works/pi-ai@0.81.1(ws@8.20.0)(zod@3.25.76)': '@earendil-works/pi-ai@0.82.0(ws@8.20.0)(zod@3.25.76)':
dependencies: dependencies:
'@anthropic-ai/sdk': 0.91.1(zod@3.25.76) '@anthropic-ai/sdk': 0.91.1(zod@3.25.76)
'@aws-sdk/client-bedrock-runtime': 3.1048.0 '@aws-sdk/client-bedrock-runtime': 3.1048.0
@@ -9102,11 +9106,11 @@ snapshots:
- ws - ws
- zod - zod
'@earendil-works/pi-coding-agent@0.81.1': '@earendil-works/pi-coding-agent@0.82.0':
dependencies: dependencies:
'@earendil-works/pi-agent-core': 0.81.1 '@earendil-works/pi-agent-core': 0.82.0
'@earendil-works/pi-ai': 0.81.1 '@earendil-works/pi-ai': 0.82.0
'@earendil-works/pi-tui': 0.81.1 '@earendil-works/pi-tui': 0.82.0
'@silvia-odwyer/photon-node': 0.3.4 '@silvia-odwyer/photon-node': 0.3.4
chalk: 5.6.2 chalk: 5.6.2
cross-spawn: 7.0.6 cross-spawn: 7.0.6
@@ -9132,11 +9136,11 @@ snapshots:
- ws - ws
- zod - zod
'@earendil-works/pi-coding-agent@0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3)': '@earendil-works/pi-coding-agent@0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3)':
dependencies: dependencies:
'@earendil-works/pi-agent-core': 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) '@earendil-works/pi-agent-core': 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3)
'@earendil-works/pi-ai': 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) '@earendil-works/pi-ai': 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3)
'@earendil-works/pi-tui': 0.81.1 '@earendil-works/pi-tui': 0.82.0
'@silvia-odwyer/photon-node': 0.3.4 '@silvia-odwyer/photon-node': 0.3.4
chalk: 5.6.2 chalk: 5.6.2
cross-spawn: 7.0.6 cross-spawn: 7.0.6
@@ -9162,11 +9166,11 @@ snapshots:
- ws - ws
- zod - zod
'@earendil-works/pi-coding-agent@0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)': '@earendil-works/pi-coding-agent@0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)':
dependencies: dependencies:
'@earendil-works/pi-agent-core': 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) '@earendil-works/pi-agent-core': 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)
'@earendil-works/pi-ai': 0.81.1(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) '@earendil-works/pi-ai': 0.82.0(@modelcontextprotocol/sdk@1.28.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)
'@earendil-works/pi-tui': 0.81.1 '@earendil-works/pi-tui': 0.82.0
'@silvia-odwyer/photon-node': 0.3.4 '@silvia-odwyer/photon-node': 0.3.4
chalk: 5.6.2 chalk: 5.6.2
cross-spawn: 7.0.6 cross-spawn: 7.0.6
@@ -9192,11 +9196,11 @@ snapshots:
- ws - ws
- zod - zod
'@earendil-works/pi-coding-agent@0.81.1(ws@8.20.0)(zod@3.25.76)': '@earendil-works/pi-coding-agent@0.82.0(ws@8.20.0)(zod@3.25.76)':
dependencies: dependencies:
'@earendil-works/pi-agent-core': 0.81.1(ws@8.20.0)(zod@3.25.76) '@earendil-works/pi-agent-core': 0.82.0(ws@8.20.0)(zod@3.25.76)
'@earendil-works/pi-ai': 0.81.1(ws@8.20.0)(zod@3.25.76) '@earendil-works/pi-ai': 0.82.0(ws@8.20.0)(zod@3.25.76)
'@earendil-works/pi-tui': 0.81.1 '@earendil-works/pi-tui': 0.82.0
'@silvia-odwyer/photon-node': 0.3.4 '@silvia-odwyer/photon-node': 0.3.4
chalk: 5.6.2 chalk: 5.6.2
cross-spawn: 7.0.6 cross-spawn: 7.0.6
@@ -9222,7 +9226,7 @@ snapshots:
- ws - ws
- zod - zod
'@earendil-works/pi-tui@0.81.1': '@earendil-works/pi-tui@0.82.0':
dependencies: dependencies:
get-east-asian-width: 1.6.0 get-east-asian-width: 1.6.0
marked: 18.0.5 marked: 18.0.5
@@ -14501,7 +14505,7 @@ snapshots:
path-scurry@2.0.2: path-scurry@2.0.2:
dependencies: dependencies:
lru-cache: 11.2.7 lru-cache: 11.5.2
minipass: 7.1.3 minipass: 7.1.3
path-to-regexp@8.3.0: {} path-to-regexp@8.3.0: {}

View File

@@ -23,8 +23,10 @@ overrides:
# workspace cannot resolve conflicting pi type surfaces. # workspace cannot resolve conflicting pi type surfaces.
# FNXC:ModelCatalog 2026-07-22-12:00: Bumped workspace override pin 0.80.10 → 0.81.1 # FNXC:ModelCatalog 2026-07-22-12:00: Bumped workspace override pin 0.80.10 → 0.81.1
# to match guarded package manifests (cli/core/engine/dashboard/pi-claude-cli). # to match guarded package manifests (cli/core/engine/dashboard/pi-claude-cli).
'@earendil-works/pi-ai': 0.81.1 # FNXC:ModelCatalog 2026-07-24-12:00: FN-8564 advances the matched runtime pair
'@earendil-works/pi-coding-agent': 0.81.1 # to 0.82.0. Wildcard consumers must resolve the exact guarded Pi API surface.
'@earendil-works/pi-ai': 0.82.0
'@earendil-works/pi-coding-agent': 0.82.0
# FNXC:DesktopEmbeddedPostgres 2026-07-14-09:30: # FNXC:DesktopEmbeddedPostgres 2026-07-14-09:30:
# Desktop release jobs cross-build Intel and ARM64 artifacts on one host. Install # Desktop release jobs cross-build Intel and ARM64 artifacts on one host. Install
# optional native payloads for both CPU families on the current OS so each # optional native payloads for both CPU families on the current OS so each

View File

@@ -7,8 +7,8 @@ import {
const pinnedManifest = { const pinnedManifest = {
dependencies: { dependencies: {
"@earendil-works/pi-ai": "0.81.1", "@earendil-works/pi-ai": "0.82.0",
"@earendil-works/pi-coding-agent": "0.81.1", "@earendil-works/pi-coding-agent": "0.82.0",
}, },
}; };
@@ -22,7 +22,7 @@ describe("check-pi-versions-pinned", () => {
}); });
it("rejects caret, tilde, wildcard, x, and comparator ranges", () => { it("rejects caret, tilde, wildcard, x, and comparator ranges", () => {
for (const version of ["^0.81.1", "~0.81.1", "*", "0.81.x", ">=0.81.1"]) { for (const version of ["^0.82.0", "~0.82.0", "*", "0.82.x", ">=0.82.0"]) {
const violations = validate({ const violations = validate({
...pinnedManifest, ...pinnedManifest,
dependencies: { ...pinnedManifest.dependencies, "@earendil-works/pi-ai": version }, dependencies: { ...pinnedManifest.dependencies, "@earendil-works/pi-ai": version },
@@ -34,7 +34,7 @@ describe("check-pi-versions-pinned", () => {
it("rejects a matched-set version mismatch", () => { it("rejects a matched-set version mismatch", () => {
const violations = validate({ const violations = validate({
...pinnedManifest, ...pinnedManifest,
dependencies: { ...pinnedManifest.dependencies, "@earendil-works/pi-coding-agent": "0.81.2" }, dependencies: { ...pinnedManifest.dependencies, "@earendil-works/pi-coding-agent": "0.82.1" },
}); });
assert.equal(violations.some((violation) => violation.includes("same exact version")), true); assert.equal(violations.some((violation) => violation.includes("same exact version")), true);
}); });