Issue: Parameters output mismatch

I configured a tool with zod version 4 schema and wrote an execute function as follows

{
  runAgentTask: tool({
    description: "Runs an agent with a task.",
    parameters: z.object({
      task: z.string().describe("Complete task description.")
    }),
    execute: async (input) => {
      console.log("task:", JSON.stringify(input));

      // Pass the actual dynamic task from input into your main function
      let agentOutput = await mainFn(input.task);

      return { result: String(agentOutput ?? "") };
    },
  }),
};

and passed to the model as follows.

modelResult = streamText({
  model: google("gemma-4-31b-it"),
  messages: allMessages,
  toolChoice: "auto",
  tools: tools,
});

when tool executes.

actual output: task: {“description”:“…”}

expecting task: {“task”:“…”}

I asked zod community on github , they said good from zod version 4.

May be I have to switch to lang graph, this is not working for some reason.
advise me it it’s a better idea.