Skip to content

bump pi deps to 1.3.0 - #57

Merged
frolic merged 2 commits into
frolic:mainfrom
hello-pollux:pollux/pi-1x-upgrade
Oct 17, 2026
Merged

frolic merged 2 commits into
frolic:mainfrom
hello-pollux:pollux/pi-1x-upgrade

Conversation

@hello-pollux

Copy link
Copy Markdown
Contributor

Bumps @earendil-works/pi-agent-core, pi-ai, and pi-coding-agent from 0.84.4 → 1.3.0.

What actually had to change

Nothing in src/. Typecheck and the full test suite pass unchanged — worth stating explicitly, because the 0.86 → 1.0 breaking-change list is long:

  • Context → TranscriptContext (0.86.0) only affects custom providers. The harness registers a custom tool set, not a provider.
  • shouldStopAfterTurn removed (0.87.0) — the harness never used it.
  • SessionManager canonical for provider context (0.87.0) — the harness never assigns session.agent.state.messages; it goes through SessionManager.open at construction and session.prompt() thereafter, which is the supported path.
  • ContextEditEntry added to SessionEntry, AgentBeforeSettleEvent added to ExtensionEvent — nothing here switches exhaustively over either union.
  • Azure provider rename (1.0.3) — no Azure usage in settings.json, models.json, or auth.json.

So the harness lands on 1.x cleanly. The risk in an upgrade like this isn't the type errors it surfaces, it's the behaviour changes it doesn't, which is why the runtime checks below exist.

Also in this branch

  • Refresh the pi doc links (README.md, docs/operating.md, docs/persona.md, src/config.ts, src/bin/setup.ts, agent-template/.env.example) from v0.74.0 to v1.3.0. Verified both tags and paths resolve on earendil-works/pi.
  • bun.lockb regenerated; bun install --frozen-lockfile was verified against it in a clean directory (this is what CI runs).

Verification

Compile + unit level: bun run typecheck (tsc 5.9.3) clean, bun test 102/102 pass.

Runtime level — the compiler can't prove any of this, so it was checked against 1.3.0 directly by building a session with the same call sequence createAgentPool uses, against the real agent home but with a throwaway session file:

  • createAgentSessionServices → SessionManager.open → createAgentSessionFromServices → prompt() runs end to end on deepseek/deepseek-v4.1-flash.
  • noTools: "builtin" still excludes the built-ins while keeping the harness's reconstructed bash and the extension-provided remember tool — extension loading is intact.
  • Every event the harness subscribes to still fires with the expected payload: agent_start, turn_start, message_update (+ text_delta / text_end), message_end, tool_execution_start / _end, turn_end (assistant stopReason present), agent_end, compaction_start / _end.
  • Steering (prompt(..., { streamingBehavior: "steer" }) gated on session.agent.state.isStreaming) still works, probed from inside a long bash tool call — the case where a user types while the agent is mid-tool.
  • terminate: true still halts the run at the tool result — thread, react, and restart_self all depend on this and would silently stop ending turns if it regressed.
  • Compaction exercised for real (throwaway agent home with small budgets): summarization completes, isCompacting is true at compaction_start and cleared by compaction_end, and ContextUsage.tokens is null after compaction then a number again after the next response. whenNotCompacting and the typing indicator rely on exactly this.
  • Compaction/Retry/SteeringMode keys in pollux's settings.json and the provider entries in models.json were checked against the schemas 1.3.0 ships — all still valid.

Notes for review

  • 1.2.0 removed the experimental pi-client / pi-protocol packages. A stale 0.84.4 copy of each was left behind in node_modules by the previous install; they are not in bun.lockb, and a clean install does not produce them. Nothing to do — flagging it so the stale directories aren't mistaken for a resolution problem.
  • MCP support arrives in 1.0.0, but wiring mcp.json is deferred to a follow-up (per frolic).

@frolic
frolic merged commit a3f9618 into frolic:main Oct 17, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants