navigation-equipment-manuals-mcp-server
Version:
Navigation Equipment Manuals MCP Server for create, update, delete, and search navigation equipment manuals
154 lines • 5.35 kB
JavaScript
export function getReferenceArtifact(results) {
const totalResults = results.length;
return {
type: "agent_acting",
id: "msg_search_1744192295407_389",
parentTaskId: "1311e759-917a-472f-9d14-e0dcf005773b",
timestamp: 1744192295407,
agent: {
id: "agent_browser_researcher",
name: "BROWSER",
type: "researcher"
},
messageType: "action",
action: {
tool: "search",
operation: "searching",
params: {
query: "Search results from Navigational Equipment Manuals",
searchEngine: "general"
},
visual: {
icon: "search",
color: "#34A853"
}
},
content: "Search results for: Search results from Navigational Equipment Manuals",
artifacts: [
{
id: "artifact_search_1744192295406_875",
type: "search_results",
content: {
query: "Search results from Navigational Equipment Manuals",
totalResults: totalResults,
results: results
},
metadata: {
searchEngine: "general",
searchTimestamp: 1744192295407,
responseTime: "0.70"
}
}
],
status: "completed",
originalEvent: "tool_result",
sessionId: "1311e759-917a-472f-9d14-e0dcf005773b",
agent_type: "browser",
state: "running"
};
}
export function getListOfArtifacts(functionName, results) {
const artifacts = [];
for (let i = 0; i < results.length; i++) {
const result = results[i];
const url = result.url;
const title = result.title;
if (url) {
const artifactData = {
id: `msg_browser_ghi789${i}`,
parentTaskId: "task_japan_itinerary_7d8f9g",
timestamp: Math.floor(Date.now()),
agent: {
id: "agent_siya_browser",
name: "SIYA",
type: "qna"
},
messageType: "action",
action: {
tool: "browser",
operation: "browsing",
params: {
url: title,
pageTitle: `Tool response for ${functionName}`,
visual: {
icon: "browser",
color: "#2D8CFF"
},
stream: {
type: "vnc",
streamId: "stream_browser_1",
target: "browser"
}
}
},
content: `Viewed page: ${functionName}`,
artifacts: [{
id: "artifact_webpage_1746018877304_994",
type: "browser_view",
content: {
url: url,
title: functionName,
screenshot: "",
textContent: `Observed output of cmd \`${functionName}\` executed:`,
extractedInfo: {}
},
metadata: {
domainName: "example.com",
visitTimestamp: Date.now(),
category: "web_page"
}
}],
status: "completed"
};
const artifact = {
type: "text",
text: JSON.stringify(artifactData, null, 2),
title: title || `Artifact ${i}`,
format: "json"
};
artifacts.push(artifact);
}
}
return artifacts;
}
export function formatHit(hit, doc) {
const hitData = {
relevance_score: hit.text_match ? Math.round(hit.text_match * 1000) / 1000 : null,
document_info: {
name: doc.documentName || "Unknown",
type: doc.documentType || "Unknown",
page: doc.pageNumber || "Unknown"
},
equipment_info: {
maker: doc.maker || "Unknown",
model: doc.model || "Unknown",
type: doc.equipment || "Unknown"
},
location: {
chapter: doc.chapter || "",
section: doc.section || "",
page: doc.pageNumber || ""
}
};
const content = doc.originalText || doc.embText || "";
hitData.content = content;
if (hit.highlights) {
hitData.highlights = hit.highlights;
}
return hitData;
}
export function sanitizeFilterValue(value) {
// Define a regex pattern of removable/special characters
const pattern = /[()\[\]{}&|:,=]/g;
const cleaned = value.replace(pattern, " ").trim();
return JSON.stringify(cleaned); // safely quoted for Typesense
}
export function createTextContent(text, title, format) {
return {
type: "text",
text: text,
title: title,
format: format
};
}
//# sourceMappingURL=helpers.js.map