UNPKG

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
// 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