chore(vendor): import pi 1.3.0

Imported as a linear vendor commit so forge rebases do not replay the upstream root tree.

git-subtree-dir: third_party/pi

git-subtree-split: 71023aec1546d6d677a65669c5665c0927ce0dd0
This commit is contained in:
2026-10-15 17:58:48 -04:00
parent 719370c8f7
commit 6081e3e325
1743 changed files with 205460 additions and 131705 deletions

View File

@@ -50,11 +50,12 @@ async function basicPrompt(model: Model<string>) {
await agent.prompt("What is 2+2? Answer with just the number.");
expect(agent.state.isStreaming).toBe(false);
expect(agent.state.messages.length).toBe(2);
expect(agent.state.messages[0].role).toBe("user");
expect(agent.state.messages[1].role).toBe("assistant");
expect(agent.state.messages.length).toBe(3);
expect(agent.state.messages[0].role).toBe("system");
expect(agent.state.messages[1].role).toBe("user");
expect(agent.state.messages[2].role).toBe("assistant");
const assistantMessage = agent.state.messages[1];
const assistantMessage = agent.state.messages[2];
if (assistantMessage.role !== "assistant") throw new Error("Expected assistant message");
expect(getTextContent(assistantMessage)).toContain("4");
}
@@ -157,7 +158,7 @@ async function stateUpdates(model: Model<string>) {
expect(events.indexOf("message_end")).toBeLessThan(events.lastIndexOf("agent_end"));
expect(agent.state.isStreaming).toBe(false);
expect(agent.state.messages.length).toBe(2);
expect(agent.state.messages.length).toBe(3);
}
async function multiTurnConversation(model: Model<string>) {
@@ -172,12 +173,12 @@ async function multiTurnConversation(model: Model<string>) {
});
await agent.prompt("My name is Alice.");
expect(agent.state.messages.length).toBe(2);
expect(agent.state.messages.length).toBe(3);
await agent.prompt("What is my name?");
expect(agent.state.messages.length).toBe(4);
expect(agent.state.messages.length).toBe(5);
const lastMessage = agent.state.messages[3];
const lastMessage = agent.state.messages[4];
if (lastMessage.role !== "assistant") throw new Error("Expected assistant message");
expect(getTextContent(lastMessage).toLowerCase()).toContain("alice");
}
@@ -255,7 +256,7 @@ describe("Agent integration with faux provider", () => {
await agent.prompt("What is 2+2?");
const assistantMessage = agent.state.messages[1];
const assistantMessage = agent.state.messages[2];
if (assistantMessage?.role !== "assistant") throw new Error("Expected assistant message");
expect(assistantMessage.content).toEqual([
{ type: "thinking", thinking: "step by step" },