ms-analysis-reports-mcp-server
Version:
PMS analysis reports server handling maintenance reports, equipment analysis, compliance tracking, and performance metrics with ERP access for data extraction
657 lines • 34.7 kB
JavaScript
// import {
// ToolResponse,
// GetVesselBudgetDataArguments,
// GetVesselPurchaseLogTableArguments,
// GetPurchaseRequisitionDetailsArguments,
// GetPurchaseOrderDetailsArguments,
// ListRequisitionsByStatusArguments,
// ListOverdueOpenRequisitionsArguments,
// ListPurchaseOrdersByStatusArguments,
// ListRequisitionsByTypeAndStageArguments,
// ListRecentRequisitionsByOrderPriorityArguments,
// ListTopExpensesByCategoryArguments,
// ListCommittedCostExpensesArguments,
// ListRecentUrgentRequisitionsArguments
// } from "../../types/index.js";
// import { getTypesenseClient, updateTypesenseFilterWithCompanyImos, processTypesenseResults } from "syia-mcp-utils";
// import { logger } from "../../index.js";
export {};
// export class SearchToolHandler {
// private typesenseClient: any;
// constructor() {
// this.typesenseClient = getTypesenseClient();
// }
// async getVesselBudgetData(arguments_: GetVesselBudgetDataArguments): Promise<ToolResponse> {
// try {
// const {
// imo,
// category,
// group,
// period,
// dateFrom,
// dateTo,
// per_page = 250,
// session_id = "testing"
// } = arguments_;
// if (!imo) {
// throw new Error("IMO number is required");
// }
// // Build filter_by string
// let filterBy = `imo:${imo}`;
// if (category) {
// filterBy += ` && category:${category}`;
// }
// if (group) {
// filterBy += ` && group:${group}`;
// }
// if (period) {
// filterBy += ` && period:${period}`;
// }
// if (dateFrom && dateTo) {
// filterBy += ` && date:>=${parseInt(dateFrom)} && date:<=${parseInt(dateTo)}`;
// } else if (dateFrom) {
// filterBy += ` && date:>=${parseInt(dateFrom)}`;
// } else if (dateTo) {
// filterBy += ` && date:<=${parseInt(dateTo)}`;
// }
// filterBy = await updateTypesenseFilterWithCompanyImos(filterBy);
// // Execute search
// const searchParameters = {
// q: "*",
// filter_by: filterBy,
// include_fields: "imo,vesselName,group,category,period,reportPeriod,date,budgetAmount,expenseAmount",
// per_page
// };
// const searchResult = await this.typesenseClient.collections('budget').documents().search(searchParameters);
// if (!searchResult || !searchResult.hits || searchResult.hits.length === 0) {
// return [{
// type: "text",
// text: `No budget data found for vessel ${imo}.`,
// title: "No Budget Data Found",
// format: "json"
// }];
// }
// // Build title and link header
// let title = `Vessel Budget Data for IMO ${imo}`;
// let linkHeader = "vessel budget data";
// if (category) {
// title += ` - Category: ${category}`;
// linkHeader += ` for category ${category}`;
// }
// if (group) {
// title += ` - Group: ${group}`;
// linkHeader += ` for group ${group}`;
// }
// if (period) {
// title += ` - Period: ${period}`;
// linkHeader += ` for period ${period}`;
// }
// // Format results using the utility function
// return await processTypesenseResults(
// searchResult,
// "get_vessel_budget_data",
// title,
// session_id,
// linkHeader
// );
// } catch (error: any) {
// logger.error('Error retrieving vessel budget data:', error);
// throw new Error(`Error retrieving vessel budget data: ${error.message}`);
// }
// }
// async getPurchaseRequisitionDetails(arguments_: GetPurchaseRequisitionDetailsArguments): Promise<ToolResponse> {
// const purchaseRequisitionNumber = arguments_.purchaseRequisitionNumber;
// const per_page = arguments_.per_page || 250;
// const session_id = arguments_.session_id || "testing";
// if (!purchaseRequisitionNumber) {
// throw new Error("Purchase requisition number is required");
// }
// try {
// const collection = "purchase";
// let filterBy = `purchaseRequisitionNumber:${purchaseRequisitionNumber}`;
// filterBy = await updateTypesenseFilterWithCompanyImos(filterBy || "");
// const query = {
// q: "*",
// filter_by: filterBy,
// per_page
// };
// const results = await this.typesenseClient.collections(collection).documents().search(query);
// if (!results || !results.hits || results.hits.length === 0) {
// return [{
// type: "text",
// text: `No purchase requisition found with number ${purchaseRequisitionNumber}`,
// title: "Purchase Requisition Not Found",
// format: "json"
// }];
// }
// // Format results using the utility function
// const title = `Purchase Requisition Details for ${purchaseRequisitionNumber}`;
// const linkHeader = "purchase requisition details";
// return await processTypesenseResults(
// results,
// "get_purchase_requisition_details",
// title,
// session_id,
// linkHeader
// );
// } catch (error: any) {
// logger.error(`Error retrieving purchase requisition details for ${purchaseRequisitionNumber}:`, error);
// throw new Error(`Error retrieving purchase requisition details: ${error.message}`);
// }
// }
// async getPurchaseOrderDetails(arguments_: GetPurchaseOrderDetailsArguments): Promise<ToolResponse> {
// const purchaseOrderNumber = arguments_.orderId;
// const session_id = arguments_.session_id || "testing";
// if (!purchaseOrderNumber) {
// throw new Error("Purchase order number is required");
// }
// try {
// const collection = "purchase";
// let filterBy = `purchaseOrderNumber:${purchaseOrderNumber}`;
// filterBy = await updateTypesenseFilterWithCompanyImos(filterBy);
// const query = {
// q: "*",
// filter_by: filterBy
// };
// const results = await this.typesenseClient.collections(collection).documents().search(query);
// if (!results || !results.hits || results.hits.length === 0) {
// return [{
// type: "text",
// text: `No purchase order found with number ${purchaseOrderNumber}`,
// title: "Purchase Order Not Found",
// format: "json"
// }];
// }
// // Format results using the utility function
// const title = `Purchase order details for ${purchaseOrderNumber}`;
// const linkHeader = "purchase order details";
// return await processTypesenseResults(
// results,
// "get_purchase_order_details",
// title,
// session_id,
// linkHeader
// );
// } catch (error: any) {
// logger.error(`Error retrieving purchase order details for ${purchaseOrderNumber}:`, error);
// throw new Error(`Error retrieving purchase order details: ${error.message}`);
// }
// }
// async listRequisitionsByStatus(arguments_: ListRequisitionsByStatusArguments): Promise<ToolResponse> {
// const purchaseRequisitionStatus = arguments_.status;
// const imo = arguments_.imo;
// const per_page = arguments_.limit || 250;
// const session_id = arguments_.session_id || "testing";
// if (!purchaseRequisitionStatus || !imo) {
// throw new Error("Purchase requisition status and imo number are required");
// }
// try {
// const collection = "purchase";
// const query = {
// q: "*",
// filter_by: `purchaseRequisitionStatus:${purchaseRequisitionStatus} && imo:${imo}`,
// per_page
// };
// const results = await this.typesenseClient.collections(collection).documents().search(query);
// if (!results || !results.hits || results.hits.length === 0) {
// return [{
// type: "text",
// text: `No purchase requisitions found with status ${purchaseRequisitionStatus} for vessel ${imo}`,
// title: "No Purchase Requisitions Found",
// format: "json"
// }];
// }
// // Format results using the utility function
// const title = `Purchase requisitions for ${imo} with status ${purchaseRequisitionStatus}`;
// const linkHeader = `Purchase requisitions with status '${purchaseRequisitionStatus}' for vessel (IMO: ${imo})`;
// console.log("results", results);
// return await processTypesenseResults(
// results,
// "list_requisitions_by_status",
// title,
// session_id,
// linkHeader
// );
// } catch (error: any) {
// logger.error(`Error retrieving purchase requisitions for ${imo} with status ${purchaseRequisitionStatus}:`, error);
// throw new Error(`Error retrieving purchase requisitions: ${error.message}`);
// }
// }
// async listOverdueOpenRequisitions(arguments_: ListOverdueOpenRequisitionsArguments): Promise<ToolResponse> {
// const imo = arguments_.imo;
// const daysOverdue = arguments_.daysOverdue;
// const stage = arguments_.stage;
// const per_page = arguments_.per_page || 250;
// const session_id = arguments_.session_id || "testing";
// if (!imo || !daysOverdue || !stage) {
// throw new Error("IMO number, days overdue, and stage are required");
// }
// try {
// // Calculate cutoff date based on days overdue
// const cutoffDate = new Date(Date.now() - parseInt(daysOverdue.toString()) * 24 * 60 * 60 * 1000);
// const cutoffTs = Math.floor(cutoffDate.getTime() / 1000);
// const collection = "purchase";
// // Include fields as specified in the base URL
// const include_fields = "imo,vesselName,purchaseRequisitionDate,purchaseRequisitionDescription," +
// "purchaseRequisitionStatus,purchaseOrderAmount,purchaseOrderIssuedDate," +
// "vendorOrsupplierName,invoiceStatus,invoiceValue,orderReadinessDate," +
// "purchaseRequisitionNumber,purchaseRequisitionLink,purchaseOrderNumber," +
// "purchaseOrderLink,purchaseRequisitionType,scanID,scanIDLink," +
// "purchaseOrderStatus,poCreatedBy,orderType,invoiceApproverName," +
// "forwarderName,forwarderRemarks,warehouseLocation,cargoType,weight," +
// "purchaseRequisitionSummary,orderPriority,accountCode";
// const query = {
// q: "*", // wildcard token
// query_by: "vesselName", // any indexed string
// filter_by: `imo:${imo} && purchaseOrderStage:${stage} && purchaseRequisitionDate:<${cutoffTs}`,
// per_page,
// sort_by: "purchaseRequisitionDate:asc", // oldest first
// include_fields
// };
// // Execute the search
// logger.info(`Searching for overdue requisitions with params: ${JSON.stringify(query)}`);
// const results = await this.typesenseClient.collections(collection).documents().search(query);
// if (!results || !results.hits || results.hits.length === 0) {
// return [{
// type: "text",
// text: `No overdue ${stage} requisitions found for vessel ${imo} older than ${daysOverdue} days.`,
// title: "No Overdue Requisitions Found",
// format: "json"
// }];
// }
// // Format results using the utility function
// const title = `Overdue ${stage} requisitions for vessel ${imo} older than ${daysOverdue} days`;
// const linkHeader = `Overdue ${stage} requisitions for vessel ${imo} older than ${daysOverdue} days`;
// return await processTypesenseResults(
// results,
// "list_overdue_open_requisitions",
// title,
// session_id,
// linkHeader
// );
// } catch (error: any) {
// logger.error(`Error retrieving overdue requisitions for ${imo} with stage ${stage}:`, error);
// throw new Error(`Error retrieving overdue requisitions: ${error.message}`);
// }
// }
// async listPurchaseOrdersByStatus(arguments_: ListPurchaseOrdersByStatusArguments): Promise<ToolResponse> {
// const imo = arguments_.imo;
// const purchaseOrderStatus = arguments_.status;
// const per_page = arguments_.limit || 250;
// const session_id = arguments_.session_id || "testing";
// if (!imo || !purchaseOrderStatus) {
// throw new Error("IMO number and purchase order status are required");
// }
// try {
// const collection = "purchase";
// // Include fields as specified in the base URL
// const include_fields = "imo,vesselName,purchaseRequisitionDate,purchaseRequisitionDescription," +
// "purchaseRequisitionStatus,purchaseOrderAmount,purchaseOrderIssuedDate," +
// "vendorOrsupplierName,invoiceStatus,invoiceValue,orderReadinessDate," +
// "purchaseRequisitionNumber,purchaseRequisitionLink,purchaseOrderNumber," +
// "purchaseOrderLink,purchaseRequisitionType,scanID,scanIDLink," +
// "purchaseOrderStatus,poCreatedBy,orderType,invoiceApproverName," +
// "forwarderName,forwarderRemarks,warehouseLocation,cargoType,weight," +
// "purchaseRequisitionSummary,orderPriority,accountCode";
// const query = {
// q: "*", // wildcard token
// query_by: "vesselName", // any indexed string
// filter_by: `imo:${imo} && purchaseOrderStatus:${purchaseOrderStatus}`,
// per_page,
// sort_by: "purchaseOrderIssuedDate:desc", // newest first
// include_fields
// };
// // Execute the search
// logger.info(`Searching for purchase orders with status ${purchaseOrderStatus} for vessel ${imo}`);
// const results = await this.typesenseClient.collections(collection).documents().search(query);
// if (!results || !results.hits || results.hits.length === 0) {
// return [{
// type: "text",
// text: `No purchase orders found with status ${purchaseOrderStatus} for vessel ${imo}`,
// title: "No Purchase Orders Found",
// format: "json"
// }];
// }
// // Format results using the utility function
// const title = `Purchase orders with status '${purchaseOrderStatus}' for vessel ${imo}`;
// const linkHeader = "purchase orders by status";
// return await processTypesenseResults(
// results,
// "list_purchase_orders_by_status",
// title,
// session_id,
// linkHeader
// );
// } catch (error: any) {
// logger.error(`Error retrieving purchase orders with status ${purchaseOrderStatus} for vessel ${imo}:`, error);
// throw new Error(`Error retrieving purchase orders: ${error.message}`);
// }
// }
// async listRequisitionsByTypeAndStage(arguments_: ListRequisitionsByTypeAndStageArguments): Promise<ToolResponse> {
// const imo = arguments_.imo;
// const requisitionType = arguments_.type;
// const orderStage = arguments_.stage;
// const per_page = arguments_.limit || 250;
// const session_id = arguments_.session_id || "testing";
// if (!imo || !requisitionType || !orderStage) {
// throw new Error("IMO number, purchase requisition type, and purchase order stage are required");
// }
// try {
// const collection = "purchase";
// // Include fields as specified in the base URL
// const include_fields = "imo,vesselName,purchaseRequisitionDate,purchaseRequisitionDescription," +
// "purchaseRequisitionStatus,purchaseOrderAmount,purchaseOrderIssuedDate," +
// "vendorOrsupplierName,invoiceStatus,invoiceValue,orderReadinessDate," +
// "purchaseRequisitionNumber,purchaseRequisitionLink,purchaseOrderNumber," +
// "purchaseOrderLink,purchaseRequisitionType,scanID,scanIDLink," +
// "purchaseOrderStatus,poCreatedBy,orderType,invoiceApproverName," +
// "forwarderName,forwarderRemarks,warehouseLocation,cargoType,weight," +
// "purchaseRequisitionSummary,orderPriority,accountCode";
// // Build filter_by based on required parameters
// let filterBy = `imo:${imo} && purchaseRequisitionType:${requisitionType} && purchaseOrderStage:${orderStage}`;
// const query = {
// q: "*", // wildcard token
// query_by: "vesselName", // any indexed string
// filter_by: filterBy,
// per_page,
// sort_by: "purchaseRequisitionDate:desc", // newest first as specified
// include_fields
// };
// // Execute the search
// logger.info(`Searching for requisitions of type ${requisitionType} in stage ${orderStage} for vessel ${imo}`);
// const results = await this.typesenseClient.collections(collection).documents().search(query);
// if (!results || !results.hits || results.hits.length === 0) {
// return [{
// type: "text",
// text: `No ${requisitionType} requisitions found in ${orderStage} stage for vessel ${imo}`,
// title: "No Requisitions Found",
// format: "json"
// }];
// }
// // Create descriptive title
// let title = `${requisitionType} requisitions in ${orderStage} stage for vessel ${imo}`;
// // Format results using the utility function
// const linkHeader = "requisitions by type and stage";
// return await processTypesenseResults(
// results,
// "list_requisitions_by_type_and_stage",
// title,
// session_id,
// linkHeader
// );
// } catch (error: any) {
// logger.error(`Error retrieving requisitions of type ${requisitionType} in stage ${orderStage} for vessel ${imo}:`, error);
// throw new Error(`Error retrieving requisitions: ${error.message}`);
// }
// }
// async listRecentRequisitionsByOrderPriority(arguments_: ListRecentRequisitionsByOrderPriorityArguments): Promise<ToolResponse> {
// const imo = arguments_.imo;
// const daysAgo = arguments_.daysAgo;
// const orderPriority = arguments_.priority; // This is optional
// const per_page = arguments_.limit || 250;
// const session_id = arguments_.session_id || "testing";
// if (!imo || daysAgo === undefined) {
// throw new Error("IMO number and days ago are required");
// }
// try {
// // Calculate cutoff date based on days ago
// const cutoffDate = new Date(Date.now() - parseInt(daysAgo.toString()) * 24 * 60 * 60 * 1000);
// const cutoffTs = Math.floor(cutoffDate.getTime() / 1000);
// const collection = "purchase";
// // Include fields as specified in the base URL
// const include_fields = "imo,vesselName,purchaseRequisitionDate,purchaseRequisitionDescription," +
// "purchaseRequisitionStatus,purchaseOrderAmount,purchaseOrderIssuedDate," +
// "vendorOrsupplierName,invoiceStatus,invoiceValue,orderReadinessDate," +
// "purchaseRequisitionNumber,purchaseRequisitionLink,purchaseOrderNumber," +
// "purchaseOrderLink,purchaseRequisitionType,scanID,scanIDLink," +
// "purchaseOrderStatus,poCreatedBy,orderType,invoiceApproverName," +
// "forwarderName,forwarderRemarks,warehouseLocation,cargoType,weight," +
// "purchaseRequisitionSummary,orderPriority,accountCode";
// // Build filter_by based on required and optional parameters
// let filterBy = `imo:${imo} && purchaseRequisitionDate:>=${cutoffTs}`;
// // Add order priority filter if provided
// if (orderPriority) {
// filterBy += ` && orderPriority:${orderPriority}`;
// }
// const query = {
// q: "*", // wildcard token
// query_by: "vesselName", // any indexed string
// filter_by: filterBy,
// per_page,
// sort_by: "purchaseRequisitionDate:desc", // newest first
// include_fields
// };
// // Execute the search
// logger.info(`Searching for recent requisitions with params: ${JSON.stringify(query)}`);
// const results = await this.typesenseClient.collections(collection).documents().search(query);
// if (!results || !results.hits || results.hits.length === 0) {
// let message = `No recent requisitions found for vessel ${imo} in the last ${daysAgo} days`;
// if (orderPriority) {
// message = `No ${orderPriority} priority ${message}`;
// }
// return [{
// type: "text",
// text: message,
// title: "No Requisitions Found",
// format: "json"
// }];
// }
// // Create descriptive title
// let title = `Recent requisitions for vessel ${imo} in the last ${daysAgo} days`;
// if (orderPriority) {
// title = `${orderPriority} priority ${title}`;
// }
// // Format results using the utility function
// const linkHeader = "recent requisitions by order priority";
// const artifactTitle = `Recent ${orderPriority || ""} requisitions for vessel ${imo} from the last ${daysAgo} days`;
// return await processTypesenseResults(
// results,
// "list_recent_requisitions_by_order_priority",
// title,
// session_id,
// linkHeader,
// artifactTitle
// );
// } catch (error: any) {
// let errorMsg = `Error retrieving recent requisitions for vessel ${imo}`;
// if (orderPriority) {
// errorMsg += ` with ${orderPriority} priority`;
// }
// logger.error(`${errorMsg}:`, error);
// throw new Error(`Error retrieving requisitions: ${error.message}`);
// }
// }
// async listTopExpensesByCategory(arguments_: ListTopExpensesByCategoryArguments): Promise<ToolResponse> {
// try {
// const imo = arguments_.imo;
// const session_id = arguments_.session_id || "testing";
// if (!imo) {
// throw new Error("IMO number is required");
// }
// // Build filter_by string
// let filterBy = `imo:${imo} && expenseCategory:"ACTUAL EXPENSES"`;
// // Add optional filters
// if (arguments_.group) {
// filterBy += ` && group:${arguments_.group}`;
// }
// if (arguments_.dateFrom) {
// filterBy += ` && expenseDate:>=${arguments_.dateFrom}`;
// }
// if (arguments_.dateTo) {
// filterBy += ` && expenseDate:<=${arguments_.dateTo}`;
// }
// // Execute search
// const searchParameters = {
// q: "*",
// filter_by: filterBy,
// sort_by: "expenseAmount:desc",
// per_page: arguments_.per_page || 100,
// include_fields: "imo,vesselName,group,category,accountNo,accountDescription,expenseDate,poAmount,expenseAmount,expenseCategory,scanID,remarks,vendor,poNumber,poDate,poDescription"
// };
// const searchResult = await this.typesenseClient.collections("expense").documents().search(searchParameters);
// if (!searchResult || !searchResult.hits) {
// return [{
// type: "text",
// text: "No expense records found for the specified criteria.",
// title: "No Expenses Found",
// format: "json"
// }];
// }
// // Format results using the utility function
// return await processTypesenseResults(
// searchResult,
// "list_top_expenses_by_category",
// "Top Expenses by Category",
// session_id,
// "top expenses by category"
// );
// } catch (error: any) {
// logger.error("Error retrieving top expenses:", error);
// throw new Error(`Error retrieving top expenses: ${error.message}`);
// }
// }
// async listCommittedCostExpenses(arguments_: ListCommittedCostExpensesArguments): Promise<ToolResponse> {
// try {
// const imo = arguments_.imo;
// const session_id = arguments_.session_id || "testing";
// if (!imo) {
// throw new Error("IMO number is required");
// }
// // Build filter_by string
// let filter_by = `imo:${imo} && expenseCategory:"COMMITTED COST"`;
// // Add optional filters
// if (arguments_.group) {
// filter_by += ` && group:${arguments_.group}`;
// }
// if (arguments_.category) {
// filter_by += ` && category:${arguments_.category}`;
// }
// if (arguments_.dateFrom) {
// filter_by += ` && expenseDate:>=${arguments_.dateFrom}`;
// }
// if (arguments_.dateTo) {
// filter_by += ` && expenseDate:<=${arguments_.dateTo}`;
// }
// // Execute search
// const search_parameters = {
// q: "*",
// filter_by: filter_by,
// per_page: arguments_.per_page || 50,
// include_fields: "imo,vesselName,group,category,accountNo,accountDescription,expenseDate,poAmount,expenseAmount,expenseCategory,scanID,remarks,vendor,poNumber,poDate,poDescription"
// };
// const search_result = await this.typesenseClient.collections("expense").documents().search(search_parameters);
// if (!search_result || !search_result.hits) {
// return [{
// type: "text" as const,
// text: "No committed cost records found for the specified criteria.",
// title: "No Committed Costs Found",
// format: "json"
// }];
// }
// // Format results using the utility function
// return await processTypesenseResults(
// search_result,
// "list_committed_cost_expenses",
// "Committed Cost Expenses",
// session_id,
// "committed cost expenses"
// );
// } catch (error) {
// logger.error("Error in listCommittedCostExpenses:", error);
// throw error;
// }
// }
// async getVesselPurchaseLogTable(arguments_: GetVesselPurchaseLogTableArguments): Promise<ToolResponse> {
// const imo = arguments_.imo;
// const filter_by = `imo:${imo}`;
// const session_id = arguments_.session_id || "testing";
// if (!imo) {
// return [{
// type: "text" as const,
// text: "IMO number is required.",
// title: "Missing IMO",
// format: "json"
// }];
// }
// const search_parameters = {
// q: "*",
// filter_by: filter_by,
// per_page: arguments_.per_page || 100,
// include_fields: "imo,vesselName,purchaseRequisitionDate,purchaseRequisitionDescription,purchaseRequisitionStatus,purchaseOrderAmount,purchaseOrderIssuedDate,vendorOrsupplierName,invoiceStatus,invoiceValue,orderReadinessDate,purchaseRequisitionNumber,purchaseRequisitionLink,purchaseOrderNumber,purchaseOrderLink,purchaseRequisitionType,scanID,scanIDLink,purchaseOrderStatus,poCreatedBy,orderType,invoiceApproverName,forwarderName,forwarderRemarks,warehouseLocation,cargoType,weight,purchaseRequisitionSummary,orderPriority,accountCode"
// };
// try {
// const search_result = await this.typesenseClient.collections("purchase").documents().search(search_parameters);
// if (!search_result || !search_result.hits) {
// return [{
// type: "text" as const,
// text: `No purchase requisitions found for vessel with IMO ${imo}.`,
// title: "No Purchase Requisitions Found",
// format: "json"
// }];
// }
// // Format results using the utility function
// return await processTypesenseResults(
// search_result,
// "get_vessel_purchase_log_table",
// "Purchase Log Table",
// session_id,
// `purchase log for vessel ${imo}`
// );
// } catch (error: any) {
// logger.error("Error retrieving vessel purchase log table:", error);
// throw new Error(`Error retrieving vessel purchase log table: ${error.message}`);
// }
// }
// async listRecentUrgentRequisitions(arguments_: ListRecentUrgentRequisitionsArguments): Promise<ToolResponse> {
// try {
// const imo = arguments_.imo;
// const days_ago = arguments_.daysAgo;
// const per_page = arguments_.per_page || 20;
// const session_id = arguments_.session_id || "testing";
// if (!imo) {
// throw new Error("IMO number is required");
// }
// if (!days_ago) {
// throw new Error("daysAgo is required");
// }
// // Calculate the date N days ago
// const cutoff_date = new Date();
// cutoff_date.setDate(cutoff_date.getDate() - days_ago);
// // Convert to Unix timestamp (integer)
// const cutoff_timestamp = Math.floor(cutoff_date.getTime() / 1000);
// // Build filter_by string using the integer timestamp
// const filter_by = `imo:${imo} && orderPriority:URGENT && purchaseRequisitionDate:>=${cutoff_timestamp}`;
// // Execute search
// const search_parameters = {
// q: "*",
// filter_by: filter_by,
// sort_by: "purchaseRequisitionDate:desc",
// per_page: per_page,
// include_fields: "imo,vesselName,purchaseRequisitionNumber,purchaseRequisitionDate,orderPriority,purchaseRequisitionStatus,purchaseRequisitionType"
// };
// const search_result = await this.typesenseClient.collections("purchase").documents().search(search_parameters);
// if (!search_result || !search_result.hits) {
// return [{
// type: "text" as const,
// text: `No urgent requisitions found for vessel ${imo} in the last ${days_ago} days.`,
// title: "No Urgent Requisitions Found",
// format: "json"
// }];
// }
// // Format results using the utility function
// const title = `Urgent Requisitions in Last ${days_ago} Days`;
// const linkHeader = `urgent requisitions in last ${days_ago} days`;
// return await processTypesenseResults(
// search_result,
// "list_recent_urgent_requisitions",
// title,
// session_id,
// linkHeader
// );
// } catch (error: any) {
// logger.error("Error retrieving urgent requisitions:", error);
// throw new Error(`Error retrieving urgent requisitions: ${error.message}`);
// }
// }
// }
//# sourceMappingURL=searchTools.js.map