@lovable.dev/mcp-js 0.26.1 → 0.26.3
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/cli/extract-manifest.cjs +2 -2
- package/dist/cli/extract-manifest.js +2 -2
- package/dist/{cors-CA28c754.cjs → cors-CzTj3-nh.cjs} +3 -2
- package/dist/{cors-i00R-ohe.js → cors-D1m2Ud44.js} +3 -2
- package/dist/{list-tools-CwPpx2J5.js → list-tools-CTtFfDLi.js} +1 -1
- package/dist/{list-tools-DCYEmJj6.cjs → list-tools-wQ13O3WE.cjs} +1 -1
- package/dist/{mcp-BjRNLFGO.cjs → mcp-CG_9H8CN.cjs} +9 -6
- package/dist/{mcp-RJyjCXn-.js → mcp-DlbNiP7o.js} +9 -6
- package/dist/{package-CBR5ygu0.js → package-Cr1oDeFn.js} +1 -1
- package/dist/{package-BhjYl1pp.cjs → package-oSicfX7m.cjs} +1 -1
- package/dist/protocols/mcp/index.cjs +1 -1
- package/dist/protocols/mcp/index.js +1 -1
- package/dist/protocols/oauth-metadata.cjs +1 -1
- package/dist/protocols/oauth-metadata.js +1 -1
- package/dist/protocols/rest/index.cjs +2 -2
- package/dist/protocols/rest/index.js +2 -2
- package/dist/{rest-bs1OMgle.cjs → rest-B9OtLlIc.cjs} +2 -2
- package/dist/{rest-BAL09Jj0.js → rest-BTK8v5-l.js} +2 -2
- package/dist/stacks/supabase/index.cjs +4 -4
- package/dist/stacks/supabase/index.js +4 -4
- package/dist/stacks/supabase/vite.cjs +35 -5
- package/dist/stacks/supabase/vite.js +35 -5
- package/dist/stacks/tanstack/index.cjs +4 -4
- package/dist/stacks/tanstack/index.js +4 -4
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const require_package = require("../package-
|
|
3
|
-
const require_list_tools = require("../list-tools-
|
|
2
|
+
const require_package = require("../package-oSicfX7m.cjs");
|
|
3
|
+
const require_list_tools = require("../list-tools-wQ13O3WE.cjs");
|
|
4
4
|
const require_fs_errors = require("../fs-errors-CWNzOV75.cjs");
|
|
5
5
|
let node_fs = require("node:fs");
|
|
6
6
|
let node_path = require("node:path");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { t as version } from "../package-
|
|
3
|
-
import { t as buildMcpListing } from "../list-tools-
|
|
2
|
+
import { t as version } from "../package-Cr1oDeFn.js";
|
|
3
|
+
import { t as buildMcpListing } from "../list-tools-CTtFfDLi.js";
|
|
4
4
|
import { t as isFileMissing } from "../fs-errors-PA2t1TIp.js";
|
|
5
5
|
import { lstatSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
|
|
6
6
|
import { dirname, resolve } from "node:path";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const require_logger = require("./logger-BSKbuM66.cjs");
|
|
2
|
-
const require_package = require("./package-
|
|
2
|
+
const require_package = require("./package-oSicfX7m.cjs");
|
|
3
3
|
require("./metadata-path-zd7NSNoa.cjs");
|
|
4
4
|
let jose = require("jose");
|
|
5
5
|
//#region src/core/http.ts
|
|
@@ -17,7 +17,8 @@ function methodNotAllowed(allow) {
|
|
|
17
17
|
status: 405,
|
|
18
18
|
headers: {
|
|
19
19
|
...JSON_HEADERS,
|
|
20
|
-
Allow: allow
|
|
20
|
+
Allow: allow,
|
|
21
|
+
"Cache-Control": "no-store"
|
|
21
22
|
}
|
|
22
23
|
});
|
|
23
24
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as log, n as applyLogLevelFromEnv, o as parseSafeUrl, r as describeError, s as trimTrailingSlash, t as LOG_LEVEL_ENV_VAR, u as resolveMetricsConfig } from "./logger-3-kwsF-5.js";
|
|
2
|
-
import { t as version } from "./package-
|
|
2
|
+
import { t as version } from "./package-Cr1oDeFn.js";
|
|
3
3
|
import "./metadata-path-CAkNcfyY.js";
|
|
4
4
|
import { createLocalJWKSet, decodeProtectedHeader, jwtVerify } from "jose";
|
|
5
5
|
//#region src/core/http.ts
|
|
@@ -17,7 +17,8 @@ function methodNotAllowed(allow) {
|
|
|
17
17
|
status: 405,
|
|
18
18
|
headers: {
|
|
19
19
|
...JSON_HEADERS,
|
|
20
|
-
Allow: allow
|
|
20
|
+
Allow: allow,
|
|
21
|
+
"Cache-Control": "no-store"
|
|
21
22
|
}
|
|
22
23
|
});
|
|
23
24
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as createRequestAuthorizer, m as methodNotAllowed, n as withCors, p as headResponse, r as assertRestResourceBinding, t as corsPreflightResponse, u as createNoopRecorder } from "./cors-
|
|
1
|
+
import { i as createRequestAuthorizer, m as methodNotAllowed, n as withCors, p as headResponse, r as assertRestResourceBinding, t as corsPreflightResponse, u as createNoopRecorder } from "./cors-D1m2Ud44.js";
|
|
2
2
|
import { objectFromShape } from "@modelcontextprotocol/sdk/server/zod-compat.js";
|
|
3
3
|
import { toJsonSchemaCompat } from "@modelcontextprotocol/sdk/server/zod-json-schema-compat.js";
|
|
4
4
|
//#region src/protocols/rest/list-tools.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_cors = require("./cors-
|
|
1
|
+
const require_cors = require("./cors-CzTj3-nh.cjs");
|
|
2
2
|
let _modelcontextprotocol_sdk_server_zod_compat_js = require("@modelcontextprotocol/sdk/server/zod-compat.js");
|
|
3
3
|
let _modelcontextprotocol_sdk_server_zod_json_schema_compat_js = require("@modelcontextprotocol/sdk/server/zod-json-schema-compat.js");
|
|
4
4
|
//#region src/protocols/rest/list-tools.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const require_logger = require("./logger-BSKbuM66.cjs");
|
|
2
2
|
const require_errors = require("./errors-CN6Da8iz.cjs");
|
|
3
|
-
const require_cors = require("./cors-
|
|
3
|
+
const require_cors = require("./cors-CzTj3-nh.cjs");
|
|
4
4
|
const require_content = require("./content-NCYIGgOb.cjs");
|
|
5
5
|
let _modelcontextprotocol_sdk_server_mcp_js = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
6
6
|
let _modelcontextprotocol_sdk_server_webStandardStreamableHttp_js = require("@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js");
|
|
@@ -16,7 +16,10 @@ function statelessMethodNotAllowed() {
|
|
|
16
16
|
}
|
|
17
17
|
}, {
|
|
18
18
|
status: 405,
|
|
19
|
-
headers: {
|
|
19
|
+
headers: {
|
|
20
|
+
Allow: STATELESS_ALLOW_METHODS,
|
|
21
|
+
"Cache-Control": "no-store"
|
|
22
|
+
}
|
|
20
23
|
});
|
|
21
24
|
}
|
|
22
25
|
/**
|
|
@@ -98,9 +101,7 @@ function adaptToolToSdkCallback(tool, auth, recorder) {
|
|
|
98
101
|
*/
|
|
99
102
|
function createMcpProtocolHandler(mcp, options = {}) {
|
|
100
103
|
const authorizer = require_cors.createRequestAuthorizer(mcp, options);
|
|
101
|
-
const handle = async (request, recorder) => {
|
|
102
|
-
const authResult = await authorizer.authorize(request, recorder);
|
|
103
|
-
if (!authResult.ok) return authResult.response;
|
|
104
|
+
const handle = async (request, authResult, recorder) => {
|
|
104
105
|
try {
|
|
105
106
|
const server = new _modelcontextprotocol_sdk_server_mcp_js.McpServer({
|
|
106
107
|
name: mcp.name,
|
|
@@ -141,8 +142,10 @@ function createMcpProtocolHandler(mcp, options = {}) {
|
|
|
141
142
|
};
|
|
142
143
|
return async (request, recorder = require_cors.createNoopRecorder()) => {
|
|
143
144
|
if (request.method === "OPTIONS") return require_cors.corsPreflightResponse(STATELESS_ALLOW_METHODS);
|
|
145
|
+
const authResult = await authorizer.authorize(request, recorder);
|
|
146
|
+
if (!authResult.ok) return require_cors.withCors(authResult.response);
|
|
144
147
|
if (request.method !== "POST") return require_cors.withCors(statelessMethodNotAllowed());
|
|
145
|
-
return require_cors.withCors(await handle(request, recorder));
|
|
148
|
+
return require_cors.withCors(await handle(request, authResult, recorder));
|
|
146
149
|
};
|
|
147
150
|
}
|
|
148
151
|
//#endregion
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { i as log, r as describeError } from "./logger-3-kwsF-5.js";
|
|
2
2
|
import { i as ToolContext, n as errorSummary, r as resolveToolErrorMessage } from "./errors-DSe96Ffd.js";
|
|
3
|
-
import { d as nowMs, i as createRequestAuthorizer, n as withCors, t as corsPreflightResponse, u as createNoopRecorder } from "./cors-
|
|
3
|
+
import { d as nowMs, i as createRequestAuthorizer, n as withCors, t as corsPreflightResponse, u as createNoopRecorder } from "./cors-D1m2Ud44.js";
|
|
4
4
|
import { t as extractTextContent } from "./content-D5LJAHyM.js";
|
|
5
5
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
6
6
|
import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";
|
|
@@ -16,7 +16,10 @@ function statelessMethodNotAllowed() {
|
|
|
16
16
|
}
|
|
17
17
|
}, {
|
|
18
18
|
status: 405,
|
|
19
|
-
headers: {
|
|
19
|
+
headers: {
|
|
20
|
+
Allow: STATELESS_ALLOW_METHODS,
|
|
21
|
+
"Cache-Control": "no-store"
|
|
22
|
+
}
|
|
20
23
|
});
|
|
21
24
|
}
|
|
22
25
|
/**
|
|
@@ -98,9 +101,7 @@ function adaptToolToSdkCallback(tool, auth, recorder) {
|
|
|
98
101
|
*/
|
|
99
102
|
function createMcpProtocolHandler(mcp, options = {}) {
|
|
100
103
|
const authorizer = createRequestAuthorizer(mcp, options);
|
|
101
|
-
const handle = async (request, recorder) => {
|
|
102
|
-
const authResult = await authorizer.authorize(request, recorder);
|
|
103
|
-
if (!authResult.ok) return authResult.response;
|
|
104
|
+
const handle = async (request, authResult, recorder) => {
|
|
104
105
|
try {
|
|
105
106
|
const server = new McpServer({
|
|
106
107
|
name: mcp.name,
|
|
@@ -141,8 +142,10 @@ function createMcpProtocolHandler(mcp, options = {}) {
|
|
|
141
142
|
};
|
|
142
143
|
return async (request, recorder = createNoopRecorder()) => {
|
|
143
144
|
if (request.method === "OPTIONS") return corsPreflightResponse(STATELESS_ALLOW_METHODS);
|
|
145
|
+
const authResult = await authorizer.authorize(request, recorder);
|
|
146
|
+
if (!authResult.ok) return withCors(authResult.response);
|
|
144
147
|
if (request.method !== "POST") return withCors(statelessMethodNotAllowed());
|
|
145
|
-
return withCors(await handle(request, recorder));
|
|
148
|
+
return withCors(await handle(request, authResult, recorder));
|
|
146
149
|
};
|
|
147
150
|
}
|
|
148
151
|
//#endregion
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as createMcpProtocolHandler } from "../../mcp-
|
|
1
|
+
import { t as createMcpProtocolHandler } from "../../mcp-DlbNiP7o.js";
|
|
2
2
|
export { createMcpProtocolHandler };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_logger = require("../logger-BSKbuM66.cjs");
|
|
3
|
-
const require_cors = require("../cors-
|
|
3
|
+
const require_cors = require("../cors-CzTj3-nh.cjs");
|
|
4
4
|
//#region src/protocols/oauth-metadata.ts
|
|
5
5
|
function notFound() {
|
|
6
6
|
return require_cors.withCors(new Response(JSON.stringify({ error: "not found" }), {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as log, r as describeError } from "../logger-3-kwsF-5.js";
|
|
2
|
-
import { a as getOAuthRuntime, c as resolveProtectedResource, f as JSON_HEADERS, m as methodNotAllowed, n as withCors, o as oauthConfigurationErrorResponse, p as headResponse, t as corsPreflightResponse } from "../cors-
|
|
2
|
+
import { a as getOAuthRuntime, c as resolveProtectedResource, f as JSON_HEADERS, m as methodNotAllowed, n as withCors, o as oauthConfigurationErrorResponse, p as headResponse, t as corsPreflightResponse } from "../cors-D1m2Ud44.js";
|
|
3
3
|
//#region src/protocols/oauth-metadata.ts
|
|
4
4
|
function notFound() {
|
|
5
5
|
return withCors(new Response(JSON.stringify({ error: "not found" }), {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_list_tools = require("../../list-tools-
|
|
3
|
-
const require_rest = require("../../rest-
|
|
2
|
+
const require_list_tools = require("../../list-tools-wQ13O3WE.cjs");
|
|
3
|
+
const require_rest = require("../../rest-B9OtLlIc.cjs");
|
|
4
4
|
exports.createInvokeToolHandler = require_rest.createInvokeToolHandler;
|
|
5
5
|
exports.createListToolsHandler = require_list_tools.createListToolsHandler;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as createListToolsHandler } from "../../list-tools-
|
|
2
|
-
import { t as createInvokeToolHandler } from "../../rest-
|
|
1
|
+
import { n as createListToolsHandler } from "../../list-tools-CTtFfDLi.js";
|
|
2
|
+
import { t as createInvokeToolHandler } from "../../rest-BTK8v5-l.js";
|
|
3
3
|
export { createInvokeToolHandler, createListToolsHandler };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const require_errors = require("./errors-CN6Da8iz.cjs");
|
|
2
|
-
const require_cors = require("./cors-
|
|
2
|
+
const require_cors = require("./cors-CzTj3-nh.cjs");
|
|
3
3
|
const require_content = require("./content-NCYIGgOb.cjs");
|
|
4
|
-
require("./list-tools-
|
|
4
|
+
require("./list-tools-wQ13O3WE.cjs");
|
|
5
5
|
let _modelcontextprotocol_sdk_server_zod_compat_js = require("@modelcontextprotocol/sdk/server/zod-compat.js");
|
|
6
6
|
//#region src/protocols/rest/invoke-tool.ts
|
|
7
7
|
const MAX_REFLECTED_TOOL_NAME = 256;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { i as ToolContext, n as errorSummary, r as resolveToolErrorMessage } from "./errors-DSe96Ffd.js";
|
|
2
|
-
import { d as nowMs, f as JSON_HEADERS, i as createRequestAuthorizer, m as methodNotAllowed, n as withCors, r as assertRestResourceBinding, t as corsPreflightResponse, u as createNoopRecorder } from "./cors-
|
|
2
|
+
import { d as nowMs, f as JSON_HEADERS, i as createRequestAuthorizer, m as methodNotAllowed, n as withCors, r as assertRestResourceBinding, t as corsPreflightResponse, u as createNoopRecorder } from "./cors-D1m2Ud44.js";
|
|
3
3
|
import { t as extractTextContent } from "./content-D5LJAHyM.js";
|
|
4
|
-
import "./list-tools-
|
|
4
|
+
import "./list-tools-CTtFfDLi.js";
|
|
5
5
|
import { getParseErrorMessage, objectFromShape, safeParseAsync } from "@modelcontextprotocol/sdk/server/zod-compat.js";
|
|
6
6
|
//#region src/protocols/rest/invoke-tool.ts
|
|
7
7
|
const MAX_REFLECTED_TOOL_NAME = 256;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_logger = require("../../logger-BSKbuM66.cjs");
|
|
3
|
-
const require_cors = require("../../cors-
|
|
3
|
+
const require_cors = require("../../cors-CzTj3-nh.cjs");
|
|
4
4
|
const require_metadata_path = require("../../metadata-path-zd7NSNoa.cjs");
|
|
5
|
-
const require_mcp = require("../../mcp-
|
|
5
|
+
const require_mcp = require("../../mcp-CG_9H8CN.cjs");
|
|
6
6
|
const require_protocols_oauth_metadata = require("../../protocols/oauth-metadata.cjs");
|
|
7
|
-
const require_list_tools = require("../../list-tools-
|
|
8
|
-
const require_rest = require("../../rest-
|
|
7
|
+
const require_list_tools = require("../../list-tools-wQ13O3WE.cjs");
|
|
8
|
+
const require_rest = require("../../rest-B9OtLlIc.cjs");
|
|
9
9
|
const require_forwarded = require("../../forwarded-Pi8Hs5Ps.cjs");
|
|
10
10
|
const require_paths = require("../../paths-OP318a6c.cjs");
|
|
11
11
|
//#region src/stacks/supabase/handler.ts
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { s as trimTrailingSlash } from "../../logger-3-kwsF-5.js";
|
|
2
|
-
import { l as createRecorderForRuntime, s as assertResourcePathShape } from "../../cors-
|
|
2
|
+
import { l as createRecorderForRuntime, s as assertResourcePathShape } from "../../cors-D1m2Ud44.js";
|
|
3
3
|
import { t as OAUTH_PROTECTED_RESOURCE_METADATA_PATH } from "../../metadata-path-CAkNcfyY.js";
|
|
4
|
-
import { t as createMcpProtocolHandler } from "../../mcp-
|
|
4
|
+
import { t as createMcpProtocolHandler } from "../../mcp-DlbNiP7o.js";
|
|
5
5
|
import { createOAuthProtectedResourceMetadataHandler } from "../../protocols/oauth-metadata.js";
|
|
6
|
-
import { n as createListToolsHandler } from "../../list-tools-
|
|
7
|
-
import { t as createInvokeToolHandler } from "../../rest-
|
|
6
|
+
import { n as createListToolsHandler } from "../../list-tools-CTtFfDLi.js";
|
|
7
|
+
import { t as createInvokeToolHandler } from "../../rest-BTK8v5-l.js";
|
|
8
8
|
import { t as applyForwardedOrigin } from "../../forwarded--h4efJy-.js";
|
|
9
9
|
import { n as assertFunctionName, t as FUNCTIONS_MOUNT_PREFIX } from "../../paths-IS65L6TA.js";
|
|
10
10
|
//#region src/stacks/supabase/handler.ts
|
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_package = require("../../package-
|
|
5
|
+
const require_package = require("../../package-oSicfX7m.cjs");
|
|
6
6
|
const require_fs_errors = require("../../fs-errors-CWNzOV75.cjs");
|
|
7
7
|
const require_supabase_config = require("../../supabase-config-Dz7dnUv0.cjs");
|
|
8
8
|
const require_paths = require("../../paths-OP318a6c.cjs");
|
|
@@ -86,13 +86,37 @@ function externalizeBareAsNpm(versions) {
|
|
|
86
86
|
}
|
|
87
87
|
};
|
|
88
88
|
}
|
|
89
|
+
function applyViteAliases(importee, aliases) {
|
|
90
|
+
for (const { find, replacement } of aliases) if (find instanceof RegExp) {
|
|
91
|
+
if (find.test(importee)) return importee.replace(find, replacement);
|
|
92
|
+
} else if (importee === find || importee.startsWith(find + "/")) return replacement + importee.slice(find.length);
|
|
93
|
+
}
|
|
94
|
+
function resolveViteAliases(aliases) {
|
|
95
|
+
return {
|
|
96
|
+
name: "lovable-mcp-resolve-vite-aliases",
|
|
97
|
+
setup(pluginBuild) {
|
|
98
|
+
pluginBuild.onResolve({ filter: /.*/ }, async (args) => {
|
|
99
|
+
if (args.pluginData?.viteAliasResolved) return null;
|
|
100
|
+
if (args.path === "@lovable.dev/mcp-js" || args.path.startsWith("@lovable.dev/mcp-js/")) return null;
|
|
101
|
+
const replaced = applyViteAliases(args.path, aliases);
|
|
102
|
+
if (replaced === void 0) return null;
|
|
103
|
+
return pluginBuild.resolve(replaced, {
|
|
104
|
+
kind: args.kind,
|
|
105
|
+
importer: args.importer,
|
|
106
|
+
resolveDir: args.resolveDir,
|
|
107
|
+
pluginData: { viteAliasResolved: true }
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
}
|
|
89
113
|
function importMetaEnvDefines(inlineEnv) {
|
|
90
114
|
const env = inlineEnv ?? {};
|
|
91
115
|
const defines = { "import.meta.env": JSON.stringify(env) };
|
|
92
116
|
for (const [key, value] of Object.entries(env)) if (/^[A-Za-z_$][\w$]*$/.test(key)) defines[`import.meta.env.${key}`] = JSON.stringify(value);
|
|
93
117
|
return defines;
|
|
94
118
|
}
|
|
95
|
-
async function bundleFunctionEntry(projectRoot, mcpEntryAbs, functionName, inlineEnv) {
|
|
119
|
+
async function bundleFunctionEntry(projectRoot, mcpEntryAbs, functionName, inlineEnv, aliases) {
|
|
96
120
|
const versions = readProjectDependencyVersions(projectRoot);
|
|
97
121
|
const result = await (0, esbuild.build)({
|
|
98
122
|
stdin: {
|
|
@@ -110,7 +134,7 @@ async function bundleFunctionEntry(projectRoot, mcpEntryAbs, functionName, inlin
|
|
|
110
134
|
absWorkingDir: projectRoot,
|
|
111
135
|
logLevel: "silent",
|
|
112
136
|
define: importMetaEnvDefines(inlineEnv),
|
|
113
|
-
plugins: [externalizeBareAsNpm(versions)]
|
|
137
|
+
plugins: [...aliases.length > 0 ? [resolveViteAliases(aliases)] : [], externalizeBareAsNpm(versions)]
|
|
114
138
|
});
|
|
115
139
|
const out = result.outputFiles[0]?.text ?? "";
|
|
116
140
|
const inputs = Object.keys(result.metafile?.inputs ?? {}).filter((p) => !p.startsWith("<") && !p.startsWith("npm:")).map((p) => (0, node_path.resolve)(projectRoot, p));
|
|
@@ -155,7 +179,7 @@ async function syncSupabaseFunction(options) {
|
|
|
155
179
|
inputs: []
|
|
156
180
|
};
|
|
157
181
|
}
|
|
158
|
-
const { code, inputs } = await bundleFunctionEntry(projectRoot, paths.mcpEntryAbs, functionName, options.inlineEnv);
|
|
182
|
+
const { code, inputs } = await bundleFunctionEntry(projectRoot, paths.mcpEntryAbs, functionName, options.inlineEnv, options.aliases ?? []);
|
|
159
183
|
if (writeIfChanged(paths.functionEntry, code, hasGeneratedBanner)) written.push(paths.functionEntry);
|
|
160
184
|
cleanupOrphans(paths.functionDir, /* @__PURE__ */ new Set([paths.functionEntry]), removed);
|
|
161
185
|
return {
|
|
@@ -241,6 +265,7 @@ function mcpPlugin(options = {}) {
|
|
|
241
265
|
let projectRoot = process.cwd();
|
|
242
266
|
let mcpEntryAbs = (0, node_path.resolve)(projectRoot, mcpEntryOption);
|
|
243
267
|
let inlineEnv = {};
|
|
268
|
+
let aliases = [];
|
|
244
269
|
let watchedInputs = /* @__PURE__ */ new Set();
|
|
245
270
|
const regenerate = async () => {
|
|
246
271
|
const { inputs } = await syncSupabaseFunction({
|
|
@@ -248,7 +273,8 @@ function mcpPlugin(options = {}) {
|
|
|
248
273
|
mcpEntry: mcpEntryOption,
|
|
249
274
|
functionsDir: functionsDirOption,
|
|
250
275
|
functionName,
|
|
251
|
-
inlineEnv
|
|
276
|
+
inlineEnv,
|
|
277
|
+
aliases
|
|
252
278
|
});
|
|
253
279
|
watchedInputs = new Set(inputs.map(normalizePath));
|
|
254
280
|
};
|
|
@@ -264,6 +290,10 @@ function mcpPlugin(options = {}) {
|
|
|
264
290
|
projectRoot = config.root;
|
|
265
291
|
mcpEntryAbs = (0, node_path.resolve)(projectRoot, mcpEntryOption);
|
|
266
292
|
inlineEnv = productionImportMetaEnv(config);
|
|
293
|
+
aliases = (config.resolve.alias ?? []).map(({ find, replacement }) => ({
|
|
294
|
+
find,
|
|
295
|
+
replacement
|
|
296
|
+
}));
|
|
267
297
|
await regenerate();
|
|
268
298
|
},
|
|
269
299
|
configureServer(server) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as version } from "../../package-
|
|
1
|
+
import { t as version } from "../../package-Cr1oDeFn.js";
|
|
2
2
|
import { t as isFileMissing } from "../../fs-errors-PA2t1TIp.js";
|
|
3
3
|
import { t as readSupabaseProjectRef } from "../../supabase-config-CakTU8YF.js";
|
|
4
4
|
import { n as assertFunctionName, t as FUNCTIONS_MOUNT_PREFIX } from "../../paths-IS65L6TA.js";
|
|
@@ -82,13 +82,37 @@ function externalizeBareAsNpm(versions) {
|
|
|
82
82
|
}
|
|
83
83
|
};
|
|
84
84
|
}
|
|
85
|
+
function applyViteAliases(importee, aliases) {
|
|
86
|
+
for (const { find, replacement } of aliases) if (find instanceof RegExp) {
|
|
87
|
+
if (find.test(importee)) return importee.replace(find, replacement);
|
|
88
|
+
} else if (importee === find || importee.startsWith(find + "/")) return replacement + importee.slice(find.length);
|
|
89
|
+
}
|
|
90
|
+
function resolveViteAliases(aliases) {
|
|
91
|
+
return {
|
|
92
|
+
name: "lovable-mcp-resolve-vite-aliases",
|
|
93
|
+
setup(pluginBuild) {
|
|
94
|
+
pluginBuild.onResolve({ filter: /.*/ }, async (args) => {
|
|
95
|
+
if (args.pluginData?.viteAliasResolved) return null;
|
|
96
|
+
if (args.path === "@lovable.dev/mcp-js" || args.path.startsWith("@lovable.dev/mcp-js/")) return null;
|
|
97
|
+
const replaced = applyViteAliases(args.path, aliases);
|
|
98
|
+
if (replaced === void 0) return null;
|
|
99
|
+
return pluginBuild.resolve(replaced, {
|
|
100
|
+
kind: args.kind,
|
|
101
|
+
importer: args.importer,
|
|
102
|
+
resolveDir: args.resolveDir,
|
|
103
|
+
pluginData: { viteAliasResolved: true }
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
}
|
|
85
109
|
function importMetaEnvDefines(inlineEnv) {
|
|
86
110
|
const env = inlineEnv ?? {};
|
|
87
111
|
const defines = { "import.meta.env": JSON.stringify(env) };
|
|
88
112
|
for (const [key, value] of Object.entries(env)) if (/^[A-Za-z_$][\w$]*$/.test(key)) defines[`import.meta.env.${key}`] = JSON.stringify(value);
|
|
89
113
|
return defines;
|
|
90
114
|
}
|
|
91
|
-
async function bundleFunctionEntry(projectRoot, mcpEntryAbs, functionName, inlineEnv) {
|
|
115
|
+
async function bundleFunctionEntry(projectRoot, mcpEntryAbs, functionName, inlineEnv, aliases) {
|
|
92
116
|
const versions = readProjectDependencyVersions(projectRoot);
|
|
93
117
|
const result = await build({
|
|
94
118
|
stdin: {
|
|
@@ -106,7 +130,7 @@ async function bundleFunctionEntry(projectRoot, mcpEntryAbs, functionName, inlin
|
|
|
106
130
|
absWorkingDir: projectRoot,
|
|
107
131
|
logLevel: "silent",
|
|
108
132
|
define: importMetaEnvDefines(inlineEnv),
|
|
109
|
-
plugins: [externalizeBareAsNpm(versions)]
|
|
133
|
+
plugins: [...aliases.length > 0 ? [resolveViteAliases(aliases)] : [], externalizeBareAsNpm(versions)]
|
|
110
134
|
});
|
|
111
135
|
const out = result.outputFiles[0]?.text ?? "";
|
|
112
136
|
const inputs = Object.keys(result.metafile?.inputs ?? {}).filter((p) => !p.startsWith("<") && !p.startsWith("npm:")).map((p) => resolve(projectRoot, p));
|
|
@@ -151,7 +175,7 @@ async function syncSupabaseFunction(options) {
|
|
|
151
175
|
inputs: []
|
|
152
176
|
};
|
|
153
177
|
}
|
|
154
|
-
const { code, inputs } = await bundleFunctionEntry(projectRoot, paths.mcpEntryAbs, functionName, options.inlineEnv);
|
|
178
|
+
const { code, inputs } = await bundleFunctionEntry(projectRoot, paths.mcpEntryAbs, functionName, options.inlineEnv, options.aliases ?? []);
|
|
155
179
|
if (writeIfChanged(paths.functionEntry, code, hasGeneratedBanner)) written.push(paths.functionEntry);
|
|
156
180
|
cleanupOrphans(paths.functionDir, /* @__PURE__ */ new Set([paths.functionEntry]), removed);
|
|
157
181
|
return {
|
|
@@ -237,6 +261,7 @@ function mcpPlugin(options = {}) {
|
|
|
237
261
|
let projectRoot = process.cwd();
|
|
238
262
|
let mcpEntryAbs = resolve(projectRoot, mcpEntryOption);
|
|
239
263
|
let inlineEnv = {};
|
|
264
|
+
let aliases = [];
|
|
240
265
|
let watchedInputs = /* @__PURE__ */ new Set();
|
|
241
266
|
const regenerate = async () => {
|
|
242
267
|
const { inputs } = await syncSupabaseFunction({
|
|
@@ -244,7 +269,8 @@ function mcpPlugin(options = {}) {
|
|
|
244
269
|
mcpEntry: mcpEntryOption,
|
|
245
270
|
functionsDir: functionsDirOption,
|
|
246
271
|
functionName,
|
|
247
|
-
inlineEnv
|
|
272
|
+
inlineEnv,
|
|
273
|
+
aliases
|
|
248
274
|
});
|
|
249
275
|
watchedInputs = new Set(inputs.map(normalizePath));
|
|
250
276
|
};
|
|
@@ -260,6 +286,10 @@ function mcpPlugin(options = {}) {
|
|
|
260
286
|
projectRoot = config.root;
|
|
261
287
|
mcpEntryAbs = resolve(projectRoot, mcpEntryOption);
|
|
262
288
|
inlineEnv = productionImportMetaEnv(config);
|
|
289
|
+
aliases = (config.resolve.alias ?? []).map(({ find, replacement }) => ({
|
|
290
|
+
find,
|
|
291
|
+
replacement
|
|
292
|
+
}));
|
|
263
293
|
await regenerate();
|
|
264
294
|
},
|
|
265
295
|
configureServer(server) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_cors = require("../../cors-
|
|
3
|
-
const require_mcp = require("../../mcp-
|
|
2
|
+
const require_cors = require("../../cors-CzTj3-nh.cjs");
|
|
3
|
+
const require_mcp = require("../../mcp-CG_9H8CN.cjs");
|
|
4
4
|
const require_protocols_oauth_metadata = require("../../protocols/oauth-metadata.cjs");
|
|
5
|
-
const require_list_tools = require("../../list-tools-
|
|
6
|
-
const require_rest = require("../../rest-
|
|
5
|
+
const require_list_tools = require("../../list-tools-wQ13O3WE.cjs");
|
|
6
|
+
const require_rest = require("../../rest-B9OtLlIc.cjs");
|
|
7
7
|
const require_forwarded = require("../../forwarded-Pi8Hs5Ps.cjs");
|
|
8
8
|
//#region src/stacks/tanstack/handlers.ts
|
|
9
9
|
const STACK = "tanstack";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { l as createRecorderForRuntime } from "../../cors-
|
|
2
|
-
import { t as createMcpProtocolHandler } from "../../mcp-
|
|
1
|
+
import { l as createRecorderForRuntime } from "../../cors-D1m2Ud44.js";
|
|
2
|
+
import { t as createMcpProtocolHandler } from "../../mcp-DlbNiP7o.js";
|
|
3
3
|
import { createOAuthProtectedResourceMetadataHandler } from "../../protocols/oauth-metadata.js";
|
|
4
|
-
import { n as createListToolsHandler } from "../../list-tools-
|
|
5
|
-
import { t as createInvokeToolHandler } from "../../rest-
|
|
4
|
+
import { n as createListToolsHandler } from "../../list-tools-CTtFfDLi.js";
|
|
5
|
+
import { t as createInvokeToolHandler } from "../../rest-BTK8v5-l.js";
|
|
6
6
|
import { t as applyForwardedOrigin } from "../../forwarded--h4efJy-.js";
|
|
7
7
|
//#region src/stacks/tanstack/handlers.ts
|
|
8
8
|
const STACK = "tanstack";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lovable.dev/mcp-js",
|
|
3
|
-
"version": "0.26.
|
|
3
|
+
"version": "0.26.3",
|
|
4
4
|
"description": "Author MCP servers for Lovable apps. Declare tools with defineTool, register them in defineMcp, and a framework adapter (TanStack or Supabase Edge Functions) emits the route(s) at build time.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|