import { defineModule, defineRoute } from "../../shared/define-module"
import type {
  CreateTaskRequest,
  TaskCreateResponse,
  TaskDeleteResponse,
  TaskGetResponse,
  TaskListResponse,
  TaskTestRunResponse,
  TaskUpdateResponse,
  UpdateTaskRequest,
} from "./types"

/**
 * AI Task module - standalone module for managing AI scheduled tasks
 * Base path: /ai/task
 */
export const aiTaskModule = defineModule({
  name: "aiTask",
  prefix: "/ai/task",
  routes: {
    // List all tasks
    list: defineRoute<never, TaskListResponse>("GET", "/"),

    // Get a task by ID
    get: defineRoute<{ id: string }, TaskGetResponse>("GET", "/{id}"),

    // Create a new task
    create: defineRoute<CreateTaskRequest, TaskCreateResponse>(
      "POST",
      "/",
    ),

    // Update an existing task
    update: defineRoute<UpdateTaskRequest, TaskUpdateResponse>(
      "PUT",
      "/{id}",
    ),

    // Delete a task by ID
    delete: defineRoute<{ id: string }, TaskDeleteResponse>(
      "DELETE",
      "/{id}",
    ),

    // Test run (execute immediately)
    testRun: defineRoute<{ id: string }, TaskTestRunResponse>(
      "POST",
      "/{id}/test-run",
    ),
  },
})

// Export the API type
export type AITaskAPI = typeof aiTaskModule.api

export type * from "./types"
