sunpeak 0.18.13 → 0.18.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mcp/index.cjs +58 -16
- package/dist/mcp/index.cjs.map +1 -1
- package/dist/mcp/index.js +58 -16
- package/dist/mcp/index.js.map +1 -1
- package/package.json +1 -1
- package/template/dist/albums/albums.json +1 -1
- package/template/dist/carousel/carousel.json +1 -1
- package/template/dist/map/map.json +1 -1
- package/template/dist/review/review.json +1 -1
package/dist/mcp/index.js
CHANGED
|
@@ -7566,7 +7566,7 @@ var toRequestError = (e) => {
|
|
|
7566
7566
|
return new RequestError(e.message, { cause: e });
|
|
7567
7567
|
};
|
|
7568
7568
|
var GlobalRequest = global.Request;
|
|
7569
|
-
var Request = class extends GlobalRequest {
|
|
7569
|
+
var Request$1 = class extends GlobalRequest {
|
|
7570
7570
|
constructor(input, options) {
|
|
7571
7571
|
if (typeof input === "object" && getRequestCache in input) input = input[getRequestCache]();
|
|
7572
7572
|
if (typeof options?.body?.getReader !== "undefined") options.duplex ??= "half";
|
|
@@ -7591,7 +7591,7 @@ var newRequestFromIncoming = (method, url, headers, incoming, abortController) =
|
|
|
7591
7591
|
};
|
|
7592
7592
|
if (method === "TRACE") {
|
|
7593
7593
|
init.method = "GET";
|
|
7594
|
-
const req = new Request(url, init);
|
|
7594
|
+
const req = new Request$1(url, init);
|
|
7595
7595
|
Object.defineProperty(req, "method", { get() {
|
|
7596
7596
|
return "TRACE";
|
|
7597
7597
|
} });
|
|
@@ -7614,7 +7614,7 @@ var newRequestFromIncoming = (method, url, headers, incoming, abortController) =
|
|
|
7614
7614
|
}
|
|
7615
7615
|
} });
|
|
7616
7616
|
} else init.body = Readable.toWeb(incoming);
|
|
7617
|
-
return new Request(url, init);
|
|
7617
|
+
return new Request$1(url, init);
|
|
7618
7618
|
};
|
|
7619
7619
|
var getRequestCache = Symbol("getRequestCache");
|
|
7620
7620
|
var requestCache = Symbol("requestCache");
|
|
@@ -7671,7 +7671,7 @@ var requestPrototype = {
|
|
|
7671
7671
|
return this[getRequestCache]()[k]();
|
|
7672
7672
|
} });
|
|
7673
7673
|
});
|
|
7674
|
-
Object.setPrototypeOf(requestPrototype, Request.prototype);
|
|
7674
|
+
Object.setPrototypeOf(requestPrototype, Request$1.prototype);
|
|
7675
7675
|
var newRequest = (incoming, defaultHostname) => {
|
|
7676
7676
|
const req = Object.create(requestPrototype);
|
|
7677
7677
|
req[incomingKey] = incoming;
|
|
@@ -7922,8 +7922,8 @@ var responseViaResponseObject = async (res, outgoing, options = {}) => {
|
|
|
7922
7922
|
};
|
|
7923
7923
|
var getRequestListener = (fetchCallback, options = {}) => {
|
|
7924
7924
|
const autoCleanupIncoming = options.autoCleanupIncoming ?? true;
|
|
7925
|
-
if (options.overrideGlobalObjects !== false && global.Request !== Request) {
|
|
7926
|
-
Object.defineProperty(global, "Request", { value: Request });
|
|
7925
|
+
if (options.overrideGlobalObjects !== false && global.Request !== Request$1) {
|
|
7926
|
+
Object.defineProperty(global, "Request", { value: Request$1 });
|
|
7927
7927
|
Object.defineProperty(global, "Response", { value: Response2 });
|
|
7928
7928
|
}
|
|
7929
7929
|
return async (incoming, outgoing) => {
|
|
@@ -9866,6 +9866,39 @@ var CORS_HEADERS = {
|
|
|
9866
9866
|
"Access-Control-Allow-Headers": "content-type, accept, authorization, mcp-session-id, ngrok-skip-browser-warning",
|
|
9867
9867
|
"Access-Control-Expose-Headers": "mcp-session-id"
|
|
9868
9868
|
};
|
|
9869
|
+
/** Convert a Node.js IncomingMessage to a minimal Web Standard Request (body is passed separately). */
|
|
9870
|
+
function nodeReqToWebRequest(req) {
|
|
9871
|
+
const url = new URL$1(req.url, `http://${req.headers.host ?? "localhost"}`);
|
|
9872
|
+
const headers = new Headers();
|
|
9873
|
+
for (const [key, value] of Object.entries(req.headers)) if (value != null) headers.set(key, Array.isArray(value) ? value.join(", ") : value);
|
|
9874
|
+
return new Request(url.toString(), {
|
|
9875
|
+
method: req.method,
|
|
9876
|
+
headers
|
|
9877
|
+
});
|
|
9878
|
+
}
|
|
9879
|
+
/** Pipe a Web Standard Response (including streaming SSE) back to a Node.js ServerResponse. */
|
|
9880
|
+
async function pipeWebResponseToNode(webResponse, res) {
|
|
9881
|
+
const headers = {};
|
|
9882
|
+
webResponse.headers.forEach((value, key) => {
|
|
9883
|
+
headers[key] = value;
|
|
9884
|
+
});
|
|
9885
|
+
res.writeHead(webResponse.status, headers);
|
|
9886
|
+
if (!webResponse.body) {
|
|
9887
|
+
res.end();
|
|
9888
|
+
return;
|
|
9889
|
+
}
|
|
9890
|
+
const reader = webResponse.body.getReader();
|
|
9891
|
+
res.on("close", () => reader.cancel());
|
|
9892
|
+
try {
|
|
9893
|
+
for (;;) {
|
|
9894
|
+
const { done, value } = await reader.read();
|
|
9895
|
+
if (done) break;
|
|
9896
|
+
if (!res.destroyed) res.write(value);
|
|
9897
|
+
}
|
|
9898
|
+
} finally {
|
|
9899
|
+
if (!res.destroyed) res.end();
|
|
9900
|
+
}
|
|
9901
|
+
}
|
|
9869
9902
|
/**
|
|
9870
9903
|
* Create a request handler that manages MCP sessions over Streamable HTTP.
|
|
9871
9904
|
*
|
|
@@ -9917,15 +9950,18 @@ function createMcpHandler(config) {
|
|
|
9917
9950
|
res.end();
|
|
9918
9951
|
return;
|
|
9919
9952
|
}
|
|
9920
|
-
|
|
9953
|
+
let authInfo;
|
|
9921
9954
|
if (authFn) {
|
|
9922
|
-
const
|
|
9923
|
-
if (!
|
|
9924
|
-
res.writeHead(401, {
|
|
9955
|
+
const result = await authFn(req);
|
|
9956
|
+
if (!result) {
|
|
9957
|
+
res.writeHead(401, {
|
|
9958
|
+
...CORS_HEADERS,
|
|
9959
|
+
"WWW-Authenticate": "Bearer"
|
|
9960
|
+
});
|
|
9925
9961
|
res.end("Unauthorized");
|
|
9926
9962
|
return;
|
|
9927
9963
|
}
|
|
9928
|
-
|
|
9964
|
+
authInfo = result;
|
|
9929
9965
|
}
|
|
9930
9966
|
let parsedBody;
|
|
9931
9967
|
if (req.method === "POST") {
|
|
@@ -9951,6 +9987,7 @@ function createMcpHandler(config) {
|
|
|
9951
9987
|
return;
|
|
9952
9988
|
}
|
|
9953
9989
|
}
|
|
9990
|
+
const webRequest = nodeReqToWebRequest(req);
|
|
9954
9991
|
const sessionId = req.headers["mcp-session-id"];
|
|
9955
9992
|
if (sessionId) {
|
|
9956
9993
|
const session = sessions.get(sessionId);
|
|
@@ -9959,12 +9996,15 @@ function createMcpHandler(config) {
|
|
|
9959
9996
|
return;
|
|
9960
9997
|
}
|
|
9961
9998
|
session.lastActivity = Date.now();
|
|
9962
|
-
await session.transport.handleRequest(
|
|
9999
|
+
await pipeWebResponseToNode(addCorsHeaders(await session.transport.handleRequest(webRequest, {
|
|
10000
|
+
parsedBody,
|
|
10001
|
+
authInfo
|
|
10002
|
+
})), res);
|
|
9963
10003
|
return;
|
|
9964
10004
|
}
|
|
9965
10005
|
if (req.method === "POST") {
|
|
9966
10006
|
const server = createProductionMcpServer(config);
|
|
9967
|
-
const transport = new
|
|
10007
|
+
const transport = new WebStandardStreamableHTTPServerTransport({
|
|
9968
10008
|
sessionIdGenerator: () => randomUUID(),
|
|
9969
10009
|
enableJsonResponse: config.enableJsonResponse ?? true,
|
|
9970
10010
|
onsessioninitialized: (id) => {
|
|
@@ -10004,7 +10044,10 @@ function createMcpHandler(config) {
|
|
|
10004
10044
|
}
|
|
10005
10045
|
};
|
|
10006
10046
|
await server.connect(transport);
|
|
10007
|
-
await transport.handleRequest(
|
|
10047
|
+
await pipeWebResponseToNode(addCorsHeaders(await transport.handleRequest(webRequest, {
|
|
10048
|
+
parsedBody,
|
|
10049
|
+
authInfo
|
|
10050
|
+
})), res);
|
|
10008
10051
|
return;
|
|
10009
10052
|
}
|
|
10010
10053
|
res.writeHead(400).end("Bad Request: session ID required");
|
|
@@ -10137,8 +10180,7 @@ function createHandler(config) {
|
|
|
10137
10180
|
/** Add CORS headers to a response (including streaming SSE responses). */
|
|
10138
10181
|
function addCorsHeaders(response) {
|
|
10139
10182
|
const headers = new Headers(response.headers);
|
|
10140
|
-
headers.set(
|
|
10141
|
-
headers.set("Access-Control-Expose-Headers", "mcp-session-id");
|
|
10183
|
+
for (const [key, value] of Object.entries(CORS_HEADERS)) headers.set(key, value);
|
|
10142
10184
|
return new Response(response.body, {
|
|
10143
10185
|
status: response.status,
|
|
10144
10186
|
statusText: response.statusText,
|