Summary
Requesting a createPiTool(executor) integration for the Pi agent toolkit (@mariozechner/pi-agent-core), following the same pattern as the existing Vercel AI SDK integration.
Motivation
Pi is a popular TypeScript AI agent toolkit (43k+ GitHub stars) by Mario Zechner. It provides a layered architecture (pi-ai → pi-agent-core → pi-coding-agent) with a clean tool interface using TypeBox schemas. Currently, agent-diff has only one TypeScript integration (Vercel AI SDK) — adding Pi would expand coverage to a second major TS agent framework.
Proposed API
Following the established pattern (createVercelAITool, create_langchain_tool, create_openai_tool):
import { AgentDiff, TypeScriptExecutorProxy, createPiTool } from 'agent-diff';
import { Agent } from '@mariozechner/pi-agent-core';
import { getModel, streamSimple } from '@mariozechner/pi-ai';
const client = new AgentDiff();
const env = await client.initEnv({
templateService: 'slack',
templateName: 'slack_default',
impersonateUserId: 'U01AGENBOT9',
});
const executor = new TypeScriptExecutorProxy(env.environmentId, client.getBaseUrl());
const tool = await createPiTool(executor);
const agent = new Agent({
initialState: {
systemPrompt: 'You are a helpful assistant.',
model: getModel('anthropic', 'claude-sonnet-4-6'),
tools: [tool],
},
streamFn: streamSimple,
});
const run = await client.startRun({ envId: env.environmentId });
await agent.prompt('Post "Hello World!" to Slack channel C01GENERAL99.');
const diff = await client.diffRun({ runId: run.runId });
Implementation notes
Pi tools use the AgentTool<T> interface with TypeBox parameter schemas:
import { Type } from '@mariozechner/pi-ai';
import type { AgentTool } from '@mariozechner/pi-agent-core';
const params = Type.Object({
code: Type.String({ description: 'TypeScript code to execute' }),
});
const tool: AgentTool<typeof params> = {
name: 'execute_typescript',
label: 'Execute Code',
description: '...',
parameters: params,
execute: async (toolCallId, params, signal, onUpdate) => {
const result = await executor.execute(params.code);
return {
content: [{ type: 'text', text: result }],
details: {},
};
},
};
The mapping from agent-diff's executor to Pi's AgentTool is straightforward — similar in shape to the Vercel AI tool wrapper.
References
Summary
Requesting a
createPiTool(executor)integration for the Pi agent toolkit (@mariozechner/pi-agent-core), following the same pattern as the existing Vercel AI SDK integration.Motivation
Pi is a popular TypeScript AI agent toolkit (43k+ GitHub stars) by Mario Zechner. It provides a layered architecture (
pi-ai→pi-agent-core→pi-coding-agent) with a clean tool interface using TypeBox schemas. Currently, agent-diff has only one TypeScript integration (Vercel AI SDK) — adding Pi would expand coverage to a second major TS agent framework.Proposed API
Following the established pattern (
createVercelAITool,create_langchain_tool,create_openai_tool):Implementation notes
Pi tools use the
AgentTool<T>interface with TypeBox parameter schemas:The mapping from agent-diff's executor to Pi's
AgentToolis straightforward — similar in shape to the Vercel AI tool wrapper.References