import { z } from 'zod/v4'import { buildTool, type ToolDef } from '../../Tool.js'import { lazySchema } from '../../utils/lazySchema.js'import {getTask,getTaskListId,isTodoV2Enabled,TaskStatusSchema,} from '../../utils/tasks.js'import { TASK_GET_TOOL_NAME } from './constants.js'import { DESCRIPTION, PROMPT } from './prompt.js'const inputSchema = lazySchema(() =>z.strictObject({taskId: z.string().describe('The ID of the task to retrieve'),}),)type InputSchema = ReturnType<typeof inputSchema>const outputSchema = lazySchema(() =>z.object({task: z.object({id: z.string(),subject: z.string(),description: z.string(),status: TaskStatusSchema(),blocks: z.array(z.string()),blockedBy: z.array(z.string()),}).nullable(),}),)type OutputSchema = ReturnType<typeof outputSchema>export type Output = z.infer<OutputSchema>export const TaskGetTool = buildTool({name: TASK_GET_TOOL_NAME,searchHint: 'retrieve a task by ID',maxResultSizeChars: 100_000,async description() {return DESCRIPTION},async prompt() {return PROMPT},get inputSchema(): InputSchema {return inputSchema()},get outputSchema(): OutputSchema {return outputSchema()},userFacingName() {return 'TaskGet'},shouldDefer: true,isEnabled() {return isTodoV2Enabled()},isConcurrencySafe() {return true},isReadOnly() {return true},toAutoClassifierInput(input) {return input.taskId},renderToolUseMessage() {return null},async call({ taskId }) {const taskListId = getTaskListId()const task = await getTask(taskListId, taskId)if (!task) {return {data: {task: null,},}}return {data: {task: {id: task.id,subject: task.subject,description: task.description,status: task.status,blocks: task.blocks,blockedBy: task.blockedBy,},},}},mapToolResultToToolResultBlockParam(content, toolUseID) {const { task } = content as Outputif (!task) {return {tool_use_id: toolUseID,type: 'tool_result',content: 'Task not found',}}const lines = [`Task #${task.id}: ${task.subject}`,`Status: ${task.status}`,`Description: ${task.description}`,]if (task.blockedBy.length > 0) {lines.push(`Blocked by: ${task.blockedBy.map(id => `#${id}`).join(', ')}`)}if (task.blocks.length > 0) {lines.push(`Blocks: ${task.blocks.map(id => `#${id}`).join(', ')}`)}return {tool_use_id: toolUseID,type: 'tool_result',content: lines.join('\n'),}},} satisfies ToolDef<InputSchema, Output>)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。