Set up the complete project foundation for ClawX, a graphical AI assistant: - Electron main process with IPC handlers, menu, tray, and gateway management - React renderer with routing, layout components, and page scaffolding - Zustand state management for gateway, settings, channels, skills, chat, and cron - shadcn/ui components with Tailwind CSS and CSS variable theming - Build tooling with Vite, electron-builder, and TypeScript configuration - Testing setup with Vitest and Playwright - Development configurations (ESLint, Prettier, gitignore, env example)
69 lines
1.2 KiB
TypeScript
69 lines
1.2 KiB
TypeScript
/**
|
|
* Cron Job Type Definitions
|
|
* Types for scheduled tasks
|
|
*/
|
|
|
|
import { ChannelType } from './channel';
|
|
|
|
/**
|
|
* Cron job target (where to send the result)
|
|
*/
|
|
export interface CronJobTarget {
|
|
channelType: ChannelType;
|
|
channelId: string;
|
|
channelName: string;
|
|
}
|
|
|
|
/**
|
|
* Cron job last run info
|
|
*/
|
|
export interface CronJobLastRun {
|
|
time: string;
|
|
success: boolean;
|
|
error?: string;
|
|
duration?: number;
|
|
}
|
|
|
|
/**
|
|
* Cron job data structure
|
|
*/
|
|
export interface CronJob {
|
|
id: string;
|
|
name: string;
|
|
message: string;
|
|
schedule: string;
|
|
target: CronJobTarget;
|
|
enabled: boolean;
|
|
createdAt: string;
|
|
updatedAt: string;
|
|
lastRun?: CronJobLastRun;
|
|
nextRun?: string;
|
|
}
|
|
|
|
/**
|
|
* Input for creating a cron job
|
|
*/
|
|
export interface CronJobCreateInput {
|
|
name: string;
|
|
message: string;
|
|
schedule: string;
|
|
target: CronJobTarget;
|
|
enabled?: boolean;
|
|
}
|
|
|
|
/**
|
|
* Input for updating a cron job
|
|
*/
|
|
export interface CronJobUpdateInput {
|
|
name?: string;
|
|
message?: string;
|
|
schedule?: string;
|
|
target?: CronJobTarget;
|
|
enabled?: boolean;
|
|
}
|
|
|
|
/**
|
|
* Schedule type for UI picker
|
|
*/
|
|
export type ScheduleType = 'daily' | 'weekly' | 'monthly' | 'interval' | 'custom';
|