trigger.dev
Version:
A Command-Line Interface for Trigger.dev projects
65 lines • 2.07 kB
JavaScript
export async function performSearch(query, signal) {
const body = callToolBody("SearchTriggerDev", { query });
const response = await fetch("https://trigger.dev/docs/mcp", {
method: "POST",
headers: {
"Content-Type": "application/json",
Accept: "application/json, text/event-stream",
"MCP-Protocol-Version": "2025-06-18",
},
signal,
body: JSON.stringify(body),
});
const data = await parseResponse(response);
return data;
}
async function parseResponse(response) {
if (response.headers.get("content-type")?.includes("text/event-stream")) {
return parseSSEResponse(response);
}
else {
return parseJSONResponse(response);
}
}
async function parseJSONResponse(response) {
const data = await response.json();
return data;
}
// Get the first data: event and return the parsed JSON of the event
async function parseSSEResponse(response) {
const reader = response.body?.getReader();
const decoder = new TextDecoder();
if (!reader) {
throw new Error("No reader found");
}
let buffer = "";
while (true) {
const { value, done } = await reader.read();
if (done)
throw new Error("SSE stream closed before data arrived");
buffer += decoder.decode(value, { stream: true });
const events = buffer.split("\n\n"); // SSE delimiter
buffer = events.pop(); // keep incomplete
for (const evt of events) {
for (const line of evt.split("\n")) {
if (line.startsWith("data:")) {
const json = line.slice(5).trim();
return JSON.parse(json); // ✅ got it
}
}
}
}
throw new Error("No data: event found");
}
function callToolBody(tool, args) {
return {
jsonrpc: "2.0",
id: 1,
method: "tools/call",
params: {
name: tool,
arguments: args,
},
};
}
//# sourceMappingURL=mintlifyClient.js.map