export const pythonExecutor = ai.defineTool(
{
name: "pythonExecutor",
description: "Executes arbitrary Python for data transformation",
inputSchema: z.object({ code: z.string() }),
outputSchema: z.object({ result: z.string() }),
},
async ({ code }) => {
// Example child_process approach
return new Promise((resolve, reject) => {
const proc = spawn('python', ['-c', code]);
let out = '', err = '';
proc.stdout.on('data', (d) => (out += d));
proc.stderr.on('data', (d) => (err += d));
proc.on('close', (code) =>
code === 0 ? resolve({ result: out.trim() }) : reject(err)
);
});
}
);
export const pythonExecutor = ai.defineTool(
{
name: "pythonExecutor",
description: "Executes arbitrary Python for data transformation",
inputSchema: z.object({ code: z.string() }),
outputSchema: z.object({ result: z.string() }),
},
async ({ code }) => {
// Example child_process approach
return new Promise((resolve, reject) => {
const proc = spawn('python', ['-c', code]);
let out = '', err = '';
proc.stdout.on('data', (d) => (out += d));
proc.stderr.on('data', (d) => (err += d));
proc.on('close', (code) =>
code === 0 ? resolve({ result: out.trim() }) : reject(err)
);
});
}
);