diff --git a/CHANGELOG.md b/CHANGELOG.md index f33ed8387..8a12ea802 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -86,7 +86,7 @@ - macOS menu: top status line now shows pending node pairing approvals (incl. repairs). - CLI: avoid spurious gateway close errors after successful request/response cycles. - Agent runtime: clamp tool-result images to the 5MB Anthropic limit to avoid hard request rejections. -- Agent runtime: align pi-agent-core imports and write v2 session headers so Pi session branching stays in the Clawdis sessions dir. +- Agent runtime: write v2 session headers so Pi session branching stays in the Clawdis sessions dir. - Tests: add Swift Testing coverage for camera errors and Kotest coverage for Android bridge endpoints. ## 2.0.0-beta4 — 2025-12-27 diff --git a/src/agents/bash-tools.ts b/src/agents/bash-tools.ts index d3f7557bc..30e43a875 100644 --- a/src/agents/bash-tools.ts +++ b/src/agents/bash-tools.ts @@ -1,6 +1,6 @@ import { type ChildProcessWithoutNullStreams, spawn } from "node:child_process"; import { randomUUID } from "node:crypto"; -import type { AgentTool, AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentTool, AgentToolResult } from "@mariozechner/pi-ai"; import { Type } from "@sinclair/typebox"; import { diff --git a/src/agents/clawdis-tools.ts b/src/agents/clawdis-tools.ts index b09968633..e77a66472 100644 --- a/src/agents/clawdis-tools.ts +++ b/src/agents/clawdis-tools.ts @@ -1,7 +1,7 @@ import crypto from "node:crypto"; import fs from "node:fs/promises"; -import type { AgentTool, AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentTool, AgentToolResult } from "@mariozechner/pi-ai"; import { Type } from "@sinclair/typebox"; import { browserCloseTab, diff --git a/src/agents/pi-embedded-helpers.ts b/src/agents/pi-embedded-helpers.ts index 8d2debc70..69313ec8e 100644 --- a/src/agents/pi-embedded-helpers.ts +++ b/src/agents/pi-embedded-helpers.ts @@ -1,11 +1,8 @@ import fs from "node:fs/promises"; import path from "node:path"; -import type { - AgentMessage, - AgentToolResult, -} from "@mariozechner/pi-agent-core"; -import type { AssistantMessage } from "@mariozechner/pi-ai"; +import type { AppMessage } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult, AssistantMessage } from "@mariozechner/pi-ai"; import { sanitizeContentBlocksImages } from "./tool-images.js"; import type { WorkspaceBootstrapFile } from "./workspace.js"; @@ -39,12 +36,12 @@ export async function ensureSessionHeader(params: { type ContentBlock = AgentToolResult["content"][number]; export async function sanitizeSessionMessagesImages( - messages: AgentMessage[], + messages: AppMessage[], label: string, -): Promise { +): Promise { // We sanitize historical session messages because Anthropic can reject a request // if the transcript contains oversized base64 images (see MAX_IMAGE_DIMENSION_PX). - const out: AgentMessage[] = []; + const out: AppMessage[] = []; for (const msg of messages) { if (!msg || typeof msg !== "object") { out.push(msg); @@ -53,7 +50,7 @@ export async function sanitizeSessionMessagesImages( const role = (msg as { role?: unknown }).role; if (role === "toolResult") { - const toolMsg = msg as Extract; + const toolMsg = msg as Extract; const content = Array.isArray(toolMsg.content) ? toolMsg.content : []; const nextContent = (await sanitizeContentBlocksImages( content as ContentBlock[], @@ -64,7 +61,7 @@ export async function sanitizeSessionMessagesImages( } if (role === "user") { - const userMsg = msg as Extract; + const userMsg = msg as Extract; const content = userMsg.content; if (Array.isArray(content)) { const nextContent = (await sanitizeContentBlocksImages( diff --git a/src/agents/pi-embedded-runner.ts b/src/agents/pi-embedded-runner.ts index 10f8abc97..2af132927 100644 --- a/src/agents/pi-embedded-runner.ts +++ b/src/agents/pi-embedded-runner.ts @@ -3,7 +3,7 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import type { AgentMessage, ThinkingLevel } from "@mariozechner/pi-agent-core"; +import type { AppMessage, ThinkingLevel } from "@mariozechner/pi-agent-core"; import { type Api, type AssistantMessage, @@ -501,7 +501,7 @@ export async function runEmbeddedPiAgent(params: { Math.max(1, params.timeoutMs), ); - let messagesSnapshot: AgentMessage[] = []; + let messagesSnapshot: AppMessage[] = []; let sessionIdUsed = session.sessionId; const onAbort = () => { abortRun(); @@ -542,7 +542,7 @@ export async function runEmbeddedPiAgent(params: { const lastAssistant = messagesSnapshot .slice() .reverse() - .find((m) => (m as AgentMessage)?.role === "assistant") as + .find((m) => (m as AppMessage)?.role === "assistant") as | AssistantMessage | undefined; diff --git a/src/agents/pi-embedded-subscribe.ts b/src/agents/pi-embedded-subscribe.ts index 421e49454..dd1b8a262 100644 --- a/src/agents/pi-embedded-subscribe.ts +++ b/src/agents/pi-embedded-subscribe.ts @@ -1,4 +1,4 @@ -import type { AgentEvent, AgentMessage } from "@mariozechner/pi-agent-core"; +import type { AgentEvent, AppMessage } from "@mariozechner/pi-agent-core"; import type { AssistantMessage } from "@mariozechner/pi-ai"; import type { AgentSession } from "@mariozechner/pi-coding-agent"; @@ -234,7 +234,7 @@ export function subscribeEmbeddedPiSession(params: { } if (evt.type === "message_update") { - const msg = (evt as AgentEvent & { message: AgentMessage }).message; + const msg = (evt as AgentEvent & { message: AppMessage }).message; if (msg?.role === "assistant") { const assistantEvent = ( evt as AgentEvent & { assistantMessageEvent?: unknown } @@ -298,7 +298,7 @@ export function subscribeEmbeddedPiSession(params: { } if (evt.type === "message_end") { - const msg = (evt as AgentEvent & { message: AgentMessage }).message; + const msg = (evt as AgentEvent & { message: AppMessage }).message; if (msg?.role === "assistant") { const cleaned = params.enforceFinalTag ? stripThinkingSegments( diff --git a/src/agents/pi-tools.ts b/src/agents/pi-tools.ts index 0c30d3746..b7c9c9cc4 100644 --- a/src/agents/pi-tools.ts +++ b/src/agents/pi-tools.ts @@ -1,4 +1,4 @@ -import type { AgentTool, AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentTool, AgentToolResult } from "@mariozechner/pi-ai"; import { codingTools, readTool } from "@mariozechner/pi-coding-agent"; import { Type } from "@sinclair/typebox"; diff --git a/src/agents/tool-images.ts b/src/agents/tool-images.ts index 64b6dec7e..5182d5f3c 100644 --- a/src/agents/tool-images.ts +++ b/src/agents/tool-images.ts @@ -1,4 +1,4 @@ -import type { AgentToolResult } from "@mariozechner/pi-agent-core"; +import type { AgentToolResult } from "@mariozechner/pi-ai"; import { getImageMetadata, resizeToJpeg } from "../media/image-ops.js";