FN-8179: align pi SDK versions with ModelRuntime API
Align workspace pi SDK dependencies with the ModelRuntime API required by the engine. - Pin pi AI and coding-agent packages to 0.80.10 across workspace consumers. - Keep session option typing compatible with the updated SDK contract. - Add a patch changeset and regenerate the dependency lockfile. Files changed: .changeset/fn-8179-pi-sdk-align.md | 7 + packages/cli/package.json | 4 +- packages/core/package.json | 2 +- packages/dashboard/package.json | 2 +- packages/engine/package.json | 4 +- packages/engine/src/pi.ts | 8 +- packages/pi-claude-cli/package.json | 8 +- .../src/thinking-config.ts | 9 +- pnpm-lock.yaml | 947 +++++++++++---------- pnpm-workspace.yaml | 5 + 10 files changed, 520 insertions(+), 476 deletions(-) Fusion-Task-Id: FN-8179 Fusion-Task-Lineage: aef45c2e-f353-4014-93de-44be91f43293 Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
This commit is contained in:
7
.changeset/fn-8179-pi-sdk-align.md
Normal file
7
.changeset/fn-8179-pi-sdk-align.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
"@runfusion/fusion": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
summary: Align the bundled pi coding-agent SDK to the ModelRuntime API so the engine builds.
|
||||||
|
category: fix
|
||||||
|
dev: Bumps @earendil-works/pi-ai and @earendil-works/pi-coding-agent floors to 0.80.10 across Fusion and reconciles the workspace lockfile.
|
||||||
@@ -60,8 +60,8 @@
|
|||||||
"test:pre-release": "pnpm test:slow-cli && pnpm test:build-exe"
|
"test:pre-release": "pnpm test:slow-cli && pnpm test:build-exe"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@earendil-works/pi-ai": "^0.80.6",
|
"@earendil-works/pi-ai": "^0.80.10",
|
||||||
"@earendil-works/pi-coding-agent": "^0.80.6",
|
"@earendil-works/pi-coding-agent": "^0.80.10",
|
||||||
"dockerode": "^4.0.12",
|
"dockerode": "^4.0.12",
|
||||||
"embedded-postgres": "15.18.0-beta.17",
|
"embedded-postgres": "15.18.0-beta.17",
|
||||||
"express": "^5.1.0",
|
"express": "^5.1.0",
|
||||||
|
|||||||
@@ -46,7 +46,7 @@
|
|||||||
"test:pg-gate": "vitest run src/__tests__/postgres/handoff-to-review-atomicity.pg.test.ts src/__tests__/postgres/store-list.pg.test.ts src/__tests__/postgres/task-lifecycle-e2e.pg.test.ts src/__tests__/postgres/soft-delete-resurrection-FN-5233.pg.test.ts src/__tests__/postgres/agent-logs-and-monitor.pg.test.ts src/__tests__/postgres/todo-store.pg.test.ts src/__tests__/postgres/workflow-definitions.pg.test.ts src/__tests__/postgres/message-store.pg.test.ts src/__tests__/postgres/insight-store.pg.test.ts src/__tests__/postgres/insight-run-execution.pg.test.ts src/__tests__/postgres/research-store.pg.test.ts src/__tests__/postgres/mission-store.pg.test.ts src/__tests__/postgres/goal-store.pg.test.ts src/__tests__/postgres/artifacts-documents-evals.pg.test.ts src/__tests__/postgres/command-center-analytics.pg.test.ts src/__tests__/postgres/command-center-remaining-analytics.pg.test.ts src/__tests__/postgres/research-execution.pg.test.ts src/__tests__/postgres/async-store-events.pg.test.ts src/__tests__/postgres/signal-ingestion.pg.test.ts src/__tests__/postgres/mission-autopilot.pg.test.ts src/__tests__/postgres/workflow-create.pg.test.ts src/__tests__/postgres/monitor-trait-storm-guard.pg.test.ts src/__tests__/postgres/agent-wake-getagent.pg.test.ts --silent=passed-only --reporter=dot"
|
"test:pg-gate": "vitest run src/__tests__/postgres/handoff-to-review-atomicity.pg.test.ts src/__tests__/postgres/store-list.pg.test.ts src/__tests__/postgres/task-lifecycle-e2e.pg.test.ts src/__tests__/postgres/soft-delete-resurrection-FN-5233.pg.test.ts src/__tests__/postgres/agent-logs-and-monitor.pg.test.ts src/__tests__/postgres/todo-store.pg.test.ts src/__tests__/postgres/workflow-definitions.pg.test.ts src/__tests__/postgres/message-store.pg.test.ts src/__tests__/postgres/insight-store.pg.test.ts src/__tests__/postgres/insight-run-execution.pg.test.ts src/__tests__/postgres/research-store.pg.test.ts src/__tests__/postgres/mission-store.pg.test.ts src/__tests__/postgres/goal-store.pg.test.ts src/__tests__/postgres/artifacts-documents-evals.pg.test.ts src/__tests__/postgres/command-center-analytics.pg.test.ts src/__tests__/postgres/command-center-remaining-analytics.pg.test.ts src/__tests__/postgres/research-execution.pg.test.ts src/__tests__/postgres/async-store-events.pg.test.ts src/__tests__/postgres/signal-ingestion.pg.test.ts src/__tests__/postgres/mission-autopilot.pg.test.ts src/__tests__/postgres/workflow-create.pg.test.ts src/__tests__/postgres/monitor-trait-storm-guard.pg.test.ts src/__tests__/postgres/agent-wake-getagent.pg.test.ts --silent=passed-only --reporter=dot"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@earendil-works/pi-coding-agent": "^0.80.6",
|
"@earendil-works/pi-coding-agent": "^0.80.10",
|
||||||
"@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",
|
||||||
|
|||||||
@@ -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.80.6",
|
"@earendil-works/pi-coding-agent": "^0.80.10",
|
||||||
"@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:*",
|
||||||
"@fusion-plugin-examples/cursor-runtime": "workspace:*",
|
"@fusion-plugin-examples/cursor-runtime": "workspace:*",
|
||||||
|
|||||||
@@ -40,8 +40,8 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fusion/core": "workspace:*",
|
"@fusion/core": "workspace:*",
|
||||||
"@fusion/pi-claude-cli": "workspace:*",
|
"@fusion/pi-claude-cli": "workspace:*",
|
||||||
"@earendil-works/pi-ai": "^0.80.6",
|
"@earendil-works/pi-ai": "^0.80.10",
|
||||||
"@earendil-works/pi-coding-agent": "^0.80.6",
|
"@earendil-works/pi-coding-agent": "^0.80.10",
|
||||||
"@modelcontextprotocol/sdk": "^1.0.0",
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
||||||
"cron-parser": "^5.5.0",
|
"cron-parser": "^5.5.0",
|
||||||
"esbuild": "^0.25.12",
|
"esbuild": "^0.25.12",
|
||||||
|
|||||||
@@ -2430,7 +2430,13 @@ export async function createFnAgent(options: AgentOptions): Promise<AgentResult>
|
|||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const createSessionOptions: Parameters<typeof createAgentSession>[0] = {
|
/*
|
||||||
|
FNXC:ModelCatalog 2026-07-16-18:00:
|
||||||
|
pi 0.80.10's createAgentSession accepts an optional options parameter, but Fusion
|
||||||
|
constructs and augments an options object before dispatch. Narrow away undefined so
|
||||||
|
the ModelRuntime-capable SDK contract remains type-safe as tool allowlists are added.
|
||||||
|
*/
|
||||||
|
const createSessionOptions: NonNullable<Parameters<typeof createAgentSession>[0]> = {
|
||||||
cwd: options.cwd,
|
cwd: options.cwd,
|
||||||
modelRuntime,
|
modelRuntime,
|
||||||
resourceLoader,
|
resourceLoader,
|
||||||
|
|||||||
@@ -23,12 +23,12 @@
|
|||||||
"@agentclientprotocol/sdk": "0.24.0"
|
"@agentclientprotocol/sdk": "0.24.0"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@earendil-works/pi-ai": "^0.80.6",
|
"@earendil-works/pi-ai": "^0.80.10",
|
||||||
"@earendil-works/pi-coding-agent": "^0.80.6"
|
"@earendil-works/pi-coding-agent": "^0.80.10"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@earendil-works/pi-ai": "^0.80.6",
|
"@earendil-works/pi-ai": "^0.80.10",
|
||||||
"@earendil-works/pi-coding-agent": "^0.80.6",
|
"@earendil-works/pi-coding-agent": "^0.80.10",
|
||||||
"@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"
|
||||||
|
|||||||
@@ -1,10 +1,15 @@
|
|||||||
/**
|
/**
|
||||||
* Thinking effort configuration for mapping pi's ThinkingLevel to Droid CLI --effort flags.
|
* Thinking effort configuration for mapping pi's ThinkingLevel to Droid 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
|
* 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 becomes max, leveraging their superior reasoning capability.
|
||||||
*
|
*
|
||||||
|
* FNXC:DroidThinking 2026-07-16-18:20:
|
||||||
|
* Fusion now resolves pi 0.80.10 workspace-wide, whose ThinkingLevel adds `max`.
|
||||||
|
* Keep both exhaustive mappings explicit: non-Opus must still avoid the CLI's max
|
||||||
|
* effort, while Opus may use it.
|
||||||
|
*
|
||||||
* IMPORTANT: The CLI does NOT support --thinking-budget. Only --effort is supported.
|
* IMPORTANT: The CLI does NOT support --thinking-budget. Only --effort is supported.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -23,6 +28,7 @@ const STANDARD_EFFORT_MAP: Record<ThinkingLevel, CliEffortLevel> = {
|
|||||||
medium: "medium",
|
medium: "medium",
|
||||||
high: "high",
|
high: "high",
|
||||||
xhigh: "high", // non-Opus: silently downgrade (max not supported)
|
xhigh: "high", // non-Opus: silently downgrade (max not supported)
|
||||||
|
max: "high", // non-Opus: silently downgrade (max not supported)
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -35,6 +41,7 @@ const OPUS_EFFORT_MAP: Record<ThinkingLevel, CliEffortLevel> = {
|
|||||||
medium: "high", // shifted: standard high
|
medium: "high", // shifted: standard high
|
||||||
high: "max", // shifted: maximum capability
|
high: "max", // shifted: maximum capability
|
||||||
xhigh: "max", // Opus gets max
|
xhigh: "max", // Opus gets max
|
||||||
|
max: "max", // Opus gets max
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
945
pnpm-lock.yaml
generated
945
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -18,6 +18,11 @@ onlyBuiltDependencies:
|
|||||||
overrides:
|
overrides:
|
||||||
'@types/node': ^25.5.2
|
'@types/node': ^25.5.2
|
||||||
protobufjs: ^7.5.8
|
protobufjs: ^7.5.8
|
||||||
|
# FNXC:ModelCatalog 2026-07-16-18:15: Keep floating @fusion/droid-cli and
|
||||||
|
# @fusion/pi-llama-cpp imports on the ModelRuntime-capable pi SDK so the
|
||||||
|
# workspace cannot resolve conflicting pi type surfaces.
|
||||||
|
'@earendil-works/pi-ai': 0.80.10
|
||||||
|
'@earendil-works/pi-coding-agent': 0.80.10
|
||||||
# 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
|
||||||
|
|||||||
Reference in New Issue
Block a user