import path from "path" import { describe, expect, test } from "bun:test" import { Instance } from "../../src/project/instance" import { Session } from "../../src/session" import { SessionPrompt } from "../../src/session/prompt" import { tmpdir } from "../fixture/fixture" describe("session.prompt missing file", () => { test("does not fail the prompt when a file part is missing", async () => { await using tmp = await tmpdir({ git: true, config: { agent: { build: { model: "openai/gpt-5.2", }, }, }, }) await Instance.provide({ directory: tmp.path, fn: async () => { const session = await Session.create({}) const missing = path.join(tmp.path, "does-not-exist.ts") const msg = await SessionPrompt.prompt({ sessionID: session.id, agent: "build", noReply: true, parts: [ { type: "text", text: "please review @does-not-exist.ts" }, { type: "file", mime: "text/plain", url: `file://${missing}`, filename: "does-not-exist.ts", }, ], }) if (msg.info.role !== "user") throw new Error("expected user message") const hasFailure = msg.parts.some( (part) => part.type === "text" && part.synthetic && part.text.includes("Read tool failed to read"), ) expect(hasFailure).toBe(true) await Session.remove(session.id) }, }) }) })