@stakpak/mcp
Version:
An MCP server that connects to Stakpak
44 lines (43 loc) • 1.46 kB
JavaScript
import { request as apiRequest } from "./client.js";
export const generateCommand = async (apiKey, request, version = "v1") => {
const response = await apiRequest(`commands/${request.provisioner}/generate`, apiKey, version, {
method: "POST",
body: JSON.stringify(request)
});
return {
content: process.env.OUTPUT === "resource"
? formatResponseToResources(response)
: formatResponseToText(response)
};
};
const formatResponseToResources = (response) => {
const documents = {};
for (const block of response.result.created_blocks) {
if (documents[block.document_uri]) {
documents[block.document_uri] += `${block.code}\n`;
}
else {
documents[block.document_uri] = `${block.code}\n`;
}
}
return Object.entries(documents).map(([uri, code]) => ({
type: "resource",
resource: { text: code, uri }
}));
};
const formatResponseToText = (response) => {
const documents = {};
for (const block of response.result.created_blocks) {
if (documents[block.document_uri]) {
documents[block.document_uri] += `${block.code}\n\n`;
}
else {
documents[block.document_uri] =
`# ${block.document_uri}\n\n${block.code}\n\n`;
}
}
return Object.entries(documents).map(([uri, code]) => ({
type: "text",
text: code
}));
};