π File detail
tools/ScheduleCronTool/CronDeleteTool.ts
π§© .tsπ 96 linesπΎ 2,616 bytesπ text
β Back to All Filesπ― Use case
This module implements the βScheduleCronToolβ tool (Schedule Cron) β something the model can call at runtime alongside other agent tools. On the API surface it exposes DeleteOutput and CronDeleteTool β mainly types, interfaces, or factory objects. Dependencies touch schema validation. It composes internal code from Tool, utils, prompt, and UI (relative imports).
Generated from folder role, exports, dependency roots, and inline comments β not hand-reviewed for every path.
π§ Inline summary
import { z } from 'zod/v4' import type { ValidationResult } from '../../Tool.js' import { buildTool, type ToolDef } from '../../Tool.js' import { getCronFilePath,
π€ Exports (heuristic)
DeleteOutputCronDeleteTool
π External import roots
Package roots from from "β¦" (relative paths omitted).
zod
π₯οΈ Source preview
import { z } from 'zod/v4'
import type { ValidationResult } from '../../Tool.js'
import { buildTool, type ToolDef } from '../../Tool.js'
import {
getCronFilePath,
listAllCronTasks,
removeCronTasks,
} from '../../utils/cronTasks.js'
import { lazySchema } from '../../utils/lazySchema.js'
import { getTeammateContext } from '../../utils/teammateContext.js'
import {
buildCronDeletePrompt,
CRON_DELETE_DESCRIPTION,
CRON_DELETE_TOOL_NAME,
isDurableCronEnabled,
isKairosCronEnabled,
} from './prompt.js'
import { renderDeleteResultMessage, renderDeleteToolUseMessage } from './UI.js'
const inputSchema = lazySchema(() =>
z.strictObject({
id: z.string().describe('Job ID returned by CronCreate.'),
}),
)
type InputSchema = ReturnType<typeof inputSchema>
const outputSchema = lazySchema(() =>
z.object({
id: z.string(),
}),
)
type OutputSchema = ReturnType<typeof outputSchema>
export type DeleteOutput = z.infer<OutputSchema>
export const CronDeleteTool = buildTool({
name: CRON_DELETE_TOOL_NAME,
searchHint: 'cancel a scheduled cron job',
maxResultSizeChars: 100_000,
shouldDefer: true,
get inputSchema(): InputSchema {
return inputSchema()
},
get outputSchema(): OutputSchema {
return outputSchema()
},
isEnabled() {
return isKairosCronEnabled()
},
toAutoClassifierInput(input) {
return input.id
},
async description() {
return CRON_DELETE_DESCRIPTION
},
async prompt() {
return buildCronDeletePrompt(isDurableCronEnabled())
},
getPath() {
return getCronFilePath()
},
async validateInput(input): Promise<ValidationResult> {
const tasks = await listAllCronTasks()
const task = tasks.find(t => t.id === input.id)
if (!task) {
return {
result: false,
message: `No scheduled job with id '${input.id}'`,
errorCode: 1,
}
}
// Teammates may only delete their own crons.
const ctx = getTeammateContext()
if (ctx && task.agentId !== ctx.agentId) {
return {
result: false,
message: `Cannot delete cron job '${input.id}': owned by another agent`,
errorCode: 2,
}
}
return { result: true }
},
async call({ id }) {
await removeCronTasks([id])
return { data: { id } }
},
mapToolResultToToolResultBlockParam(output, toolUseID) {
return {
tool_use_id: toolUseID,
type: 'tool_result',
content: `Cancelled job ${output.id}.`,
}
},
renderToolUseMessage: renderDeleteToolUseMessage,
renderToolResultMessage: renderDeleteResultMessage,
} satisfies ToolDef<InputSchema, DeleteOutput>)