import type { PilotDeckToolDefinition } from "../../tool/index.js";
import type { CronCreateInput, CronCreateResult } from "../protocol/types.js";
import { CRON_SCHEDULE_SCHEMA } from "./CronSchemas.js";
import type { CronToolRuntime } from "./CronToolRuntime.js";
export function createCronCreateTool(runtime: CronToolRuntime): PilotDeckToolDefinition<CronCreateInput, CronCreateResult> {
return {
name: "cron_create",
title: "Create Cron Task",
description: "Create a one-time or recurring background Cron task that submits future work back into a session.",
kind: "session",
inputSchema: {
type: "object",
required: ["message", "schedule"],
additionalProperties: false,
properties: {
message: { type: "string" },
schedule: CRON_SCHEDULE_SCHEMA,
sessionKey: { type: "string" },
channelKey: { type: "string" },
projectKey: { type: "string" },
mode: { type: "string" },
timezone: { type: "string" },
},
},
isReadOnly: () => false,
isConcurrencySafe: () => false,
execute: async (input, context) => {
const result = await runtime.createTask({
...input,
projectKey: input.projectKey ?? context.cwd,
});
return {
content: [{ type: "json", value: result.task }],
data: result,
};
},
};
}