import { Tool } from "@modelcontextprotocol/sdk/types.js";
import { GetWorkDiaryArgsSchema } from "../../schemas/upwork.js";
import { UpworkClient } from "../../services/upwork-client.js";
import { z } from "zod";

export const toolDefinition: Tool = {
  name: "upwork_get_work_diary",
  description: "Get work diary entries with time tracking data, screenshots, and activity levels",
  inputSchema: {
    type: "object",
    properties: {
      contractId: {
        type: "string",
        description: "Contract ID to get work diary for"
      },
      date: {
        type: "string",
        pattern: "^\\d{4}-\\d{2}-\\d{2}$",
        description: "Date to get work diary for (YYYY-MM-DD format)"
      },
      timezone: {
        type: "string",
        description: "Timezone for the work diary (e.g., 'America/New_York')"
      }
    },
    required: ["contractId", "date"]
  }
};

export const handler = async (args: z.infer<typeof GetWorkDiaryArgsSchema>) => {
  try {
    const client = UpworkClient.getInstance();
    
    const params: any = {
      date: args.date
    };
    
    const response = await client.get(`/timereports/v1/workdiary/company/${args.contract_id}`, params);
    
    return {
      success: true,
      workDiary: response.snapshots || response,
      contractId: args.contract_id,
      date: args.date,
      totalHours: response.total_hours || 0,
      totalActivity: response.total_activity || 0
    };
  } catch (error: any) {
    throw new Error(`Failed to get work diary: ${error.message}`);
  }
};

export { GetWorkDiaryArgsSchema as schema } from "../../schemas/upwork.js";