@stablyai/internal-playwright 0.1.0
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/LICENSE +202 -0
- package/NOTICE +5 -0
- package/README.md +168 -0
- package/ThirdPartyNotices.txt +6277 -0
- package/cli.js +19 -0
- package/index.d.ts +17 -0
- package/index.js +17 -0
- package/index.mjs +18 -0
- package/jsx-runtime.js +42 -0
- package/jsx-runtime.mjs +21 -0
- package/lib/agents/generateAgents.js +265 -0
- package/lib/agents/generator.md +102 -0
- package/lib/agents/healer.md +78 -0
- package/lib/agents/planner.md +135 -0
- package/lib/cli.js +274 -0
- package/lib/common/config.js +274 -0
- package/lib/common/config.js.map +7 -0
- package/lib/common/configLoader.js +377 -0
- package/lib/common/configLoader.js.map +7 -0
- package/lib/common/esmLoaderHost.js +102 -0
- package/lib/common/esmLoaderHost.js.map +7 -0
- package/lib/common/expectBundle.js +52 -0
- package/lib/common/expectBundle.js.map +7 -0
- package/lib/common/expectBundleImpl.js +389 -0
- package/lib/common/expectBundleImpl.js.map +7 -0
- package/lib/common/fixtures.js +302 -0
- package/lib/common/fixtures.js.map +7 -0
- package/lib/common/globals.js +58 -0
- package/lib/common/globals.js.map +7 -0
- package/lib/common/ipc.js +60 -0
- package/lib/common/ipc.js.map +7 -0
- package/lib/common/poolBuilder.js +85 -0
- package/lib/common/poolBuilder.js.map +7 -0
- package/lib/common/process.js +104 -0
- package/lib/common/process.js.map +7 -0
- package/lib/common/suiteUtils.js +140 -0
- package/lib/common/suiteUtils.js.map +7 -0
- package/lib/common/test.js +321 -0
- package/lib/common/test.js.map +7 -0
- package/lib/common/testLoader.js +100 -0
- package/lib/common/testLoader.js.map +7 -0
- package/lib/common/testType.js +310 -0
- package/lib/common/testType.js.map +7 -0
- package/lib/fsWatcher.js +67 -0
- package/lib/fsWatcher.js.map +7 -0
- package/lib/index.js +696 -0
- package/lib/index.js.map +7 -0
- package/lib/internalsForTest.js +42 -0
- package/lib/internalsForTest.js.map +7 -0
- package/lib/isomorphic/events.js +77 -0
- package/lib/isomorphic/events.js.map +7 -0
- package/lib/isomorphic/folders.js +30 -0
- package/lib/isomorphic/folders.js.map +7 -0
- package/lib/isomorphic/stringInternPool.js +69 -0
- package/lib/isomorphic/stringInternPool.js.map +7 -0
- package/lib/isomorphic/teleReceiver.js +507 -0
- package/lib/isomorphic/teleReceiver.js.map +7 -0
- package/lib/isomorphic/teleSuiteUpdater.js +137 -0
- package/lib/isomorphic/teleSuiteUpdater.js.map +7 -0
- package/lib/isomorphic/testServerConnection.js +211 -0
- package/lib/isomorphic/testServerConnection.js.map +7 -0
- package/lib/isomorphic/testServerInterface.js +16 -0
- package/lib/isomorphic/testServerInterface.js.map +7 -0
- package/lib/isomorphic/testTree.js +334 -0
- package/lib/isomorphic/testTree.js.map +7 -0
- package/lib/isomorphic/types.d.js +16 -0
- package/lib/isomorphic/types.d.js.map +7 -0
- package/lib/loader/loaderMain.js +59 -0
- package/lib/loader/loaderMain.js.map +7 -0
- package/lib/matchers/expect.js +325 -0
- package/lib/matchers/expect.js.map +7 -0
- package/lib/matchers/matcherHint.js +87 -0
- package/lib/matchers/matcherHint.js.map +7 -0
- package/lib/matchers/matchers.js +366 -0
- package/lib/matchers/matchers.js.map +7 -0
- package/lib/matchers/toBeTruthy.js +73 -0
- package/lib/matchers/toBeTruthy.js.map +7 -0
- package/lib/matchers/toEqual.js +99 -0
- package/lib/matchers/toEqual.js.map +7 -0
- package/lib/matchers/toHaveURL.js +102 -0
- package/lib/matchers/toHaveURL.js.map +7 -0
- package/lib/matchers/toMatchAriaSnapshot.js +159 -0
- package/lib/matchers/toMatchAriaSnapshot.js.map +7 -0
- package/lib/matchers/toMatchSnapshot.js +359 -0
- package/lib/matchers/toMatchSnapshot.js.map +7 -0
- package/lib/matchers/toMatchText.js +99 -0
- package/lib/matchers/toMatchText.js.map +7 -0
- package/lib/mcp/browser/actions.d.js +16 -0
- package/lib/mcp/browser/backend.js +93 -0
- package/lib/mcp/browser/backend.js.map +7 -0
- package/lib/mcp/browser/browserContextFactory.js +296 -0
- package/lib/mcp/browser/browserServerBackend.js +76 -0
- package/lib/mcp/browser/codegen.js +66 -0
- package/lib/mcp/browser/config.js +385 -0
- package/lib/mcp/browser/context.js +287 -0
- package/lib/mcp/browser/response.js +228 -0
- package/lib/mcp/browser/sessionLog.js +160 -0
- package/lib/mcp/browser/tab.js +277 -0
- package/lib/mcp/browser/tool.js +30 -0
- package/lib/mcp/browser/tool.js.map +7 -0
- package/lib/mcp/browser/tools/common.js +63 -0
- package/lib/mcp/browser/tools/console.js +44 -0
- package/lib/mcp/browser/tools/dialogs.js +60 -0
- package/lib/mcp/browser/tools/evaluate.js +70 -0
- package/lib/mcp/browser/tools/files.js +58 -0
- package/lib/mcp/browser/tools/form.js +74 -0
- package/lib/mcp/browser/tools/install.js +69 -0
- package/lib/mcp/browser/tools/keyboard.js +85 -0
- package/lib/mcp/browser/tools/mouse.js +107 -0
- package/lib/mcp/browser/tools/navigate.js +62 -0
- package/lib/mcp/browser/tools/network.js +54 -0
- package/lib/mcp/browser/tools/pdf.js +59 -0
- package/lib/mcp/browser/tools/screenshot.js +88 -0
- package/lib/mcp/browser/tools/snapshot.js +182 -0
- package/lib/mcp/browser/tools/tabs.js +67 -0
- package/lib/mcp/browser/tools/tool.js +49 -0
- package/lib/mcp/browser/tools/tracing.js +74 -0
- package/lib/mcp/browser/tools/utils.js +100 -0
- package/lib/mcp/browser/tools/verify.js +154 -0
- package/lib/mcp/browser/tools/wait.js +63 -0
- package/lib/mcp/browser/tools.js +80 -0
- package/lib/mcp/browser/tools.js.map +7 -0
- package/lib/mcp/browser/watchdog.js +44 -0
- package/lib/mcp/config.d.js +16 -0
- package/lib/mcp/extension/cdpRelay.js +351 -0
- package/lib/mcp/extension/extensionContextFactory.js +75 -0
- package/lib/mcp/extension/protocol.js +28 -0
- package/lib/mcp/index.js +61 -0
- package/lib/mcp/log.js +35 -0
- package/lib/mcp/program.js +96 -0
- package/lib/mcp/sdk/bundle.js +81 -0
- package/lib/mcp/sdk/bundle.js.map +7 -0
- package/lib/mcp/sdk/call.js +49 -0
- package/lib/mcp/sdk/call.js.map +7 -0
- package/lib/mcp/sdk/exports.js +32 -0
- package/lib/mcp/sdk/exports.js.map +7 -0
- package/lib/mcp/sdk/http.js +187 -0
- package/lib/mcp/sdk/http.js.map +7 -0
- package/lib/mcp/sdk/inProcessTransport.js +71 -0
- package/lib/mcp/sdk/inProcessTransport.js.map +7 -0
- package/lib/mcp/sdk/mdb.js +206 -0
- package/lib/mcp/sdk/mdb.js.map +7 -0
- package/lib/mcp/sdk/proxyBackend.js +128 -0
- package/lib/mcp/sdk/proxyBackend.js.map +7 -0
- package/lib/mcp/sdk/server.js +189 -0
- package/lib/mcp/sdk/server.js.map +7 -0
- package/lib/mcp/sdk/tool.js +51 -0
- package/lib/mcp/sdk/tool.js.map +7 -0
- package/lib/mcp/test/backend.js +67 -0
- package/lib/mcp/test/backend.js.map +7 -0
- package/lib/mcp/test/browserBackend.js +98 -0
- package/lib/mcp/test/context.js +48 -0
- package/lib/mcp/test/context.js.map +7 -0
- package/lib/mcp/test/generatorTools.js +122 -0
- package/lib/mcp/test/plannerTools.js +46 -0
- package/lib/mcp/test/seed.js +72 -0
- package/lib/mcp/test/streams.js +39 -0
- package/lib/mcp/test/streams.js.map +7 -0
- package/lib/mcp/test/testBackend.js +97 -0
- package/lib/mcp/test/testContext.js +176 -0
- package/lib/mcp/test/testTool.js +30 -0
- package/lib/mcp/test/testTools.js +115 -0
- package/lib/mcp/test/tool.js +30 -0
- package/lib/mcp/test/tool.js.map +7 -0
- package/lib/mcp/test/tools.js +150 -0
- package/lib/mcp/test/tools.js.map +7 -0
- package/lib/mcp/vscode/host.js +187 -0
- package/lib/mcp/vscode/main.js +77 -0
- package/lib/mcpBundleImpl.js +41 -0
- package/lib/mcpBundleImpl.js.map +7 -0
- package/lib/plugins/gitCommitInfoPlugin.js +198 -0
- package/lib/plugins/gitCommitInfoPlugin.js.map +7 -0
- package/lib/plugins/index.js +28 -0
- package/lib/plugins/index.js.map +7 -0
- package/lib/plugins/webServerPlugin.js +209 -0
- package/lib/plugins/webServerPlugin.js.map +7 -0
- package/lib/program.js +412 -0
- package/lib/program.js.map +7 -0
- package/lib/reporters/base.js +609 -0
- package/lib/reporters/base.js.map +7 -0
- package/lib/reporters/blob.js +135 -0
- package/lib/reporters/blob.js.map +7 -0
- package/lib/reporters/dot.js +82 -0
- package/lib/reporters/dot.js.map +7 -0
- package/lib/reporters/empty.js +32 -0
- package/lib/reporters/empty.js.map +7 -0
- package/lib/reporters/github.js +128 -0
- package/lib/reporters/github.js.map +7 -0
- package/lib/reporters/html.js +644 -0
- package/lib/reporters/html.js.map +7 -0
- package/lib/reporters/internalReporter.js +130 -0
- package/lib/reporters/internalReporter.js.map +7 -0
- package/lib/reporters/json.js +254 -0
- package/lib/reporters/json.js.map +7 -0
- package/lib/reporters/junit.js +230 -0
- package/lib/reporters/junit.js.map +7 -0
- package/lib/reporters/line.js +113 -0
- package/lib/reporters/line.js.map +7 -0
- package/lib/reporters/list.js +235 -0
- package/lib/reporters/list.js.map +7 -0
- package/lib/reporters/listModeReporter.js +69 -0
- package/lib/reporters/listModeReporter.js.map +7 -0
- package/lib/reporters/markdown.js +144 -0
- package/lib/reporters/markdown.js.map +7 -0
- package/lib/reporters/merge.js +535 -0
- package/lib/reporters/merge.js.map +7 -0
- package/lib/reporters/multiplexer.js +104 -0
- package/lib/reporters/multiplexer.js.map +7 -0
- package/lib/reporters/reporterV2.js +102 -0
- package/lib/reporters/reporterV2.js.map +7 -0
- package/lib/reporters/teleEmitter.js +297 -0
- package/lib/reporters/teleEmitter.js.map +7 -0
- package/lib/reporters/versions/blobV1.js +16 -0
- package/lib/reporters/versions/blobV1.js.map +7 -0
- package/lib/runner/dispatcher.js +491 -0
- package/lib/runner/dispatcher.js.map +7 -0
- package/lib/runner/failureTracker.js +72 -0
- package/lib/runner/failureTracker.js.map +7 -0
- package/lib/runner/lastRun.js +77 -0
- package/lib/runner/lastRun.js.map +7 -0
- package/lib/runner/loadUtils.js +333 -0
- package/lib/runner/loadUtils.js.map +7 -0
- package/lib/runner/loaderHost.js +89 -0
- package/lib/runner/loaderHost.js.map +7 -0
- package/lib/runner/processHost.js +161 -0
- package/lib/runner/processHost.js.map +7 -0
- package/lib/runner/projectUtils.js +241 -0
- package/lib/runner/projectUtils.js.map +7 -0
- package/lib/runner/rebase.js +189 -0
- package/lib/runner/rebase.js.map +7 -0
- package/lib/runner/reporters.js +137 -0
- package/lib/runner/reporters.js.map +7 -0
- package/lib/runner/runner.js +173 -0
- package/lib/runner/sigIntWatcher.js +96 -0
- package/lib/runner/sigIntWatcher.js.map +7 -0
- package/lib/runner/taskRunner.js +127 -0
- package/lib/runner/taskRunner.js.map +7 -0
- package/lib/runner/tasks.js +410 -0
- package/lib/runner/tasks.js.map +7 -0
- package/lib/runner/testGroups.js +117 -0
- package/lib/runner/testGroups.js.map +7 -0
- package/lib/runner/testRunner.js +390 -0
- package/lib/runner/testRunner.js.map +7 -0
- package/lib/runner/testServer.js +264 -0
- package/lib/runner/testServer.js.map +7 -0
- package/lib/runner/uiMode.js +271 -0
- package/lib/runner/uiModeReporter.js +30 -0
- package/lib/runner/uiModeReporter.js.map +7 -0
- package/lib/runner/vcs.js +72 -0
- package/lib/runner/vcs.js.map +7 -0
- package/lib/runner/watchMode.js +395 -0
- package/lib/runner/watchMode.js.map +7 -0
- package/lib/runner/workerHost.js +95 -0
- package/lib/runner/workerHost.js.map +7 -0
- package/lib/store.js +98 -0
- package/lib/third_party/pirates.js +62 -0
- package/lib/third_party/pirates.js.map +7 -0
- package/lib/third_party/tsconfig-loader.js +103 -0
- package/lib/third_party/tsconfig-loader.js.map +7 -0
- package/lib/transform/babelBundle.js +43 -0
- package/lib/transform/babelBundle.js.map +7 -0
- package/lib/transform/babelBundleImpl.js +461 -0
- package/lib/transform/babelBundleImpl.js.map +7 -0
- package/lib/transform/compilationCache.js +272 -0
- package/lib/transform/compilationCache.js.map +7 -0
- package/lib/transform/esmLoader.js +104 -0
- package/lib/transform/esmLoader.js.map +7 -0
- package/lib/transform/esmUtils.js +32 -0
- package/lib/transform/portTransport.js +67 -0
- package/lib/transform/portTransport.js.map +7 -0
- package/lib/transform/transform.js +293 -0
- package/lib/transform/transform.js.map +7 -0
- package/lib/util.js +403 -0
- package/lib/util.js.map +7 -0
- package/lib/utilsBundle.js +43 -0
- package/lib/utilsBundle.js.map +7 -0
- package/lib/utilsBundleImpl.js +100 -0
- package/lib/utilsBundleImpl.js.map +7 -0
- package/lib/worker/fixtureRunner.js +258 -0
- package/lib/worker/fixtureRunner.js.map +7 -0
- package/lib/worker/stepContext.js +34 -0
- package/lib/worker/testInfo.js +508 -0
- package/lib/worker/testInfo.js.map +7 -0
- package/lib/worker/testTracing.js +344 -0
- package/lib/worker/testTracing.js.map +7 -0
- package/lib/worker/timeoutManager.js +174 -0
- package/lib/worker/timeoutManager.js.map +7 -0
- package/lib/worker/util.js +31 -0
- package/lib/worker/util.js.map +7 -0
- package/lib/worker/workerMain.js +520 -0
- package/lib/worker/workerMain.js.map +7 -0
- package/package.json +74 -0
- package/test.d.ts +18 -0
- package/test.js +24 -0
- package/test.mjs +33 -0
- package/types/test.d.ts +10217 -0
- package/types/testReporter.d.ts +816 -0
@@ -0,0 +1,81 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __create = Object.create;
|
3
|
+
var __defProp = Object.defineProperty;
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
8
|
+
var __export = (target, all) => {
|
9
|
+
for (var name in all)
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
11
|
+
};
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
14
|
+
for (let key of __getOwnPropNames(from))
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
17
|
+
}
|
18
|
+
return to;
|
19
|
+
};
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
26
|
+
mod
|
27
|
+
));
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
29
|
+
var bundle_exports = {};
|
30
|
+
__export(bundle_exports, {
|
31
|
+
CallToolRequestSchema: () => CallToolRequestSchema,
|
32
|
+
Client: () => Client,
|
33
|
+
ListRootsRequestSchema: () => ListRootsRequestSchema,
|
34
|
+
ListToolsRequestSchema: () => ListToolsRequestSchema,
|
35
|
+
PingRequestSchema: () => PingRequestSchema,
|
36
|
+
ProgressNotificationSchema: () => ProgressNotificationSchema,
|
37
|
+
SSEClientTransport: () => SSEClientTransport,
|
38
|
+
SSEServerTransport: () => SSEServerTransport,
|
39
|
+
Server: () => Server,
|
40
|
+
StdioClientTransport: () => StdioClientTransport,
|
41
|
+
StdioServerTransport: () => StdioServerTransport,
|
42
|
+
StreamableHTTPClientTransport: () => StreamableHTTPClientTransport,
|
43
|
+
StreamableHTTPServerTransport: () => StreamableHTTPServerTransport,
|
44
|
+
z: () => z,
|
45
|
+
zodToJsonSchema: () => zodToJsonSchema
|
46
|
+
});
|
47
|
+
module.exports = __toCommonJS(bundle_exports);
|
48
|
+
var bundle = __toESM(require("../../mcpBundleImpl"));
|
49
|
+
const zodToJsonSchema = bundle.zodToJsonSchema;
|
50
|
+
const Client = bundle.Client;
|
51
|
+
const Server = bundle.Server;
|
52
|
+
const SSEClientTransport = bundle.SSEClientTransport;
|
53
|
+
const SSEServerTransport = bundle.SSEServerTransport;
|
54
|
+
const StdioClientTransport = bundle.StdioClientTransport;
|
55
|
+
const StdioServerTransport = bundle.StdioServerTransport;
|
56
|
+
const StreamableHTTPServerTransport = bundle.StreamableHTTPServerTransport;
|
57
|
+
const StreamableHTTPClientTransport = bundle.StreamableHTTPClientTransport;
|
58
|
+
const CallToolRequestSchema = bundle.CallToolRequestSchema;
|
59
|
+
const ListRootsRequestSchema = bundle.ListRootsRequestSchema;
|
60
|
+
const ProgressNotificationSchema = bundle.ProgressNotificationSchema;
|
61
|
+
const ListToolsRequestSchema = bundle.ListToolsRequestSchema;
|
62
|
+
const PingRequestSchema = bundle.PingRequestSchema;
|
63
|
+
const z = bundle.z;
|
64
|
+
// Annotate the CommonJS export names for ESM import in node:
|
65
|
+
0 && (module.exports = {
|
66
|
+
CallToolRequestSchema,
|
67
|
+
Client,
|
68
|
+
ListRootsRequestSchema,
|
69
|
+
ListToolsRequestSchema,
|
70
|
+
PingRequestSchema,
|
71
|
+
ProgressNotificationSchema,
|
72
|
+
SSEClientTransport,
|
73
|
+
SSEServerTransport,
|
74
|
+
Server,
|
75
|
+
StdioClientTransport,
|
76
|
+
StdioServerTransport,
|
77
|
+
StreamableHTTPClientTransport,
|
78
|
+
StreamableHTTPServerTransport,
|
79
|
+
z,
|
80
|
+
zodToJsonSchema
|
81
|
+
});
|
@@ -0,0 +1,7 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"sources": ["../../../src/mcp/sdk/bundle.ts"],
|
4
|
+
"sourcesContent": ["/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst bundle = require('../../mcpBundleImpl');\nconst zodToJsonSchema: typeof import('zod-to-json-schema').zodToJsonSchema = bundle.zodToJsonSchema;\nconst Client: typeof import('@modelcontextprotocol/sdk/client/index.js').Client = bundle.Client;\nconst Server: typeof import('@modelcontextprotocol/sdk/server/index.js').Server = bundle.Server;\nconst SSEServerTransport: typeof import('@modelcontextprotocol/sdk/server/sse.js').SSEServerTransport = bundle.SSEServerTransport;\nconst StdioClientTransport: typeof import('@modelcontextprotocol/sdk/client/stdio.js').StdioClientTransport = bundle.StdioClientTransport;\nconst StdioServerTransport: typeof import('@modelcontextprotocol/sdk/server/stdio.js').StdioServerTransport = bundle.StdioServerTransport;\nconst StreamableHTTPServerTransport: typeof import('@modelcontextprotocol/sdk/server/streamableHttp.js').StreamableHTTPServerTransport = bundle.StreamableHTTPServerTransport;\nconst StreamableHTTPClientTransport: typeof import('@modelcontextprotocol/sdk/client/streamableHttp.js').StreamableHTTPClientTransport = bundle.StreamableHTTPClientTransport;\nconst CallToolRequestSchema: typeof import('@modelcontextprotocol/sdk/types.js').CallToolRequestSchema = bundle.CallToolRequestSchema;\nconst ListRootsRequestSchema: typeof import('@modelcontextprotocol/sdk/types.js').ListRootsRequestSchema = bundle.ListRootsRequestSchema;\nconst ListToolsRequestSchema: typeof import('@modelcontextprotocol/sdk/types.js').ListToolsRequestSchema = bundle.ListToolsRequestSchema;\nconst PingRequestSchema: typeof import('@modelcontextprotocol/sdk/types.js').PingRequestSchema = bundle.PingRequestSchema;\nconst z: typeof import('zod') = bundle.z;\n\nexport {\n zodToJsonSchema,\n Client,\n Server,\n SSEServerTransport,\n StdioClientTransport,\n StdioServerTransport,\n StreamableHTTPClientTransport,\n StreamableHTTPServerTransport,\n CallToolRequestSchema,\n ListRootsRequestSchema,\n ListToolsRequestSchema,\n PingRequestSchema,\n z,\n};\n"],
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA,MAAM,SAAS,QAAQ,qBAAqB;AAC5C,MAAM,kBAAuE,OAAO;AACpF,MAAM,SAA4E,OAAO;AACzF,MAAM,SAA4E,OAAO;AACzF,MAAM,qBAAkG,OAAO;AAC/G,MAAM,uBAAwG,OAAO;AACrH,MAAM,uBAAwG,OAAO;AACrH,MAAM,gCAAmI,OAAO;AAChJ,MAAM,gCAAmI,OAAO;AAChJ,MAAM,wBAAmG,OAAO;AAChH,MAAM,yBAAqG,OAAO;AAClH,MAAM,yBAAqG,OAAO;AAClH,MAAM,oBAA2F,OAAO;AACxG,MAAM,IAA0B,OAAO;",
|
6
|
+
"names": []
|
7
|
+
}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __create = Object.create;
|
3
|
+
var __defProp = Object.defineProperty;
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
8
|
+
var __export = (target, all) => {
|
9
|
+
for (var name in all)
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
11
|
+
};
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
14
|
+
for (let key of __getOwnPropNames(from))
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
17
|
+
}
|
18
|
+
return to;
|
19
|
+
};
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
26
|
+
mod
|
27
|
+
));
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
29
|
+
var call_exports = {};
|
30
|
+
__export(call_exports, {
|
31
|
+
callTool: () => callTool
|
32
|
+
});
|
33
|
+
module.exports = __toCommonJS(call_exports);
|
34
|
+
var mcpBundle = __toESM(require("./bundle.js"));
|
35
|
+
async function callTool(mcpUrl, name, params) {
|
36
|
+
const transport = new mcpBundle.StreamableHTTPClientTransport(new URL(mcpUrl));
|
37
|
+
const client = new mcpBundle.Client({ name: "Internal", version: "0.0.0" });
|
38
|
+
await client.connect(transport);
|
39
|
+
try {
|
40
|
+
return await client.callTool({ name, arguments: params });
|
41
|
+
} finally {
|
42
|
+
await transport.terminateSession();
|
43
|
+
await client.close();
|
44
|
+
}
|
45
|
+
}
|
46
|
+
// Annotate the CommonJS export names for ESM import in node:
|
47
|
+
0 && (module.exports = {
|
48
|
+
callTool
|
49
|
+
});
|
@@ -0,0 +1,7 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"sources": ["../../../src/mcp/sdk/call.ts"],
|
4
|
+
"sourcesContent": ["/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as mcpBundle from './bundle.js';\n\nimport type { CallToolRequest, CallToolResult } from '@modelcontextprotocol/sdk/types';\n\nexport async function callTool(mcpUrl: string, name: string, params: CallToolRequest['params']['arguments']): Promise<CallToolResult> {\n const transport = new mcpBundle.StreamableHTTPClientTransport(new URL(mcpUrl));\n const client = new mcpBundle.Client({ name: 'Internal', version: '0.0.0' });\n await client.connect(transport);\n try {\n return await client.callTool({ name, arguments: params }) as CallToolResult;\n } finally {\n await transport.terminateSession();\n await client.close();\n }\n}\n"],
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBA,gBAA2B;AAI3B,eAAsB,SAAS,QAAgB,MAAc,QAAyE;AACpI,QAAM,YAAY,IAAI,UAAU,8BAA8B,IAAI,IAAI,MAAM,CAAC;AAC7E,QAAM,SAAS,IAAI,UAAU,OAAO,EAAE,MAAM,YAAY,SAAS,QAAQ,CAAC;AAC1E,QAAM,OAAO,QAAQ,SAAS;AAC9B,MAAI;AACF,WAAO,MAAM,OAAO,SAAS,EAAE,MAAM,WAAW,OAAO,CAAC;AAAA,EAC1D,UAAE;AACA,UAAM,UAAU,iBAAiB;AACjC,UAAM,OAAO,MAAM;AAAA,EACrB;AACF;",
|
6
|
+
"names": []
|
7
|
+
}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __defProp = Object.defineProperty;
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
8
|
+
for (let key of __getOwnPropNames(from))
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
11
|
+
}
|
12
|
+
return to;
|
13
|
+
};
|
14
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
15
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
16
|
+
var exports_exports = {};
|
17
|
+
module.exports = __toCommonJS(exports_exports);
|
18
|
+
__reExport(exports_exports, require("./inProcessTransport"), module.exports);
|
19
|
+
__reExport(exports_exports, require("./proxyBackend"), module.exports);
|
20
|
+
__reExport(exports_exports, require("./server"), module.exports);
|
21
|
+
__reExport(exports_exports, require("./tool"), module.exports);
|
22
|
+
__reExport(exports_exports, require("./http"), module.exports);
|
23
|
+
__reExport(exports_exports, require("./mdb"), module.exports);
|
24
|
+
// Annotate the CommonJS export names for ESM import in node:
|
25
|
+
0 && (module.exports = {
|
26
|
+
...require("./inProcessTransport"),
|
27
|
+
...require("./proxyBackend"),
|
28
|
+
...require("./server"),
|
29
|
+
...require("./tool"),
|
30
|
+
...require("./http"),
|
31
|
+
...require("./mdb")
|
32
|
+
});
|
@@ -0,0 +1,7 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"sources": ["../../../src/mcp/sdk/exports.ts"],
|
4
|
+
"sourcesContent": ["/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './inProcessTransport';\nexport * from './proxyBackend';\nexport * from './server';\nexport * from './tool';\nexport * from './http';\nexport * from './call';\n"],
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAgBA,4BAAc,iCAhBd;AAiBA,4BAAc,2BAjBd;AAkBA,4BAAc,qBAlBd;AAmBA,4BAAc,mBAnBd;AAoBA,4BAAc,mBApBd;AAqBA,4BAAc,mBArBd;",
|
6
|
+
"names": []
|
7
|
+
}
|
@@ -0,0 +1,187 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __create = Object.create;
|
3
|
+
var __defProp = Object.defineProperty;
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
8
|
+
var __export = (target, all) => {
|
9
|
+
for (var name in all)
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
11
|
+
};
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
14
|
+
for (let key of __getOwnPropNames(from))
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
17
|
+
}
|
18
|
+
return to;
|
19
|
+
};
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
26
|
+
mod
|
27
|
+
));
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
29
|
+
var http_exports = {};
|
30
|
+
__export(http_exports, {
|
31
|
+
httpAddressToString: () => httpAddressToString,
|
32
|
+
installHttpTransport: () => installHttpTransport,
|
33
|
+
startHttpServer: () => startHttpServer
|
34
|
+
});
|
35
|
+
module.exports = __toCommonJS(http_exports);
|
36
|
+
var import_assert = __toESM(require("assert"));
|
37
|
+
var import_http = __toESM(require("http"));
|
38
|
+
var import_crypto = __toESM(require("crypto"));
|
39
|
+
var import_utilsBundle = require("playwright-core/lib/utilsBundle");
|
40
|
+
var mcpBundle = __toESM(require("./bundle"));
|
41
|
+
var mcpServer = __toESM(require("./server"));
|
42
|
+
const testDebug = (0, import_utilsBundle.debug)("pw:mcp:test");
|
43
|
+
async function startHttpServer(config, abortSignal) {
|
44
|
+
const { host, port } = config;
|
45
|
+
const httpServer = import_http.default.createServer();
|
46
|
+
decorateServer(httpServer);
|
47
|
+
await new Promise((resolve, reject) => {
|
48
|
+
httpServer.on("error", reject);
|
49
|
+
abortSignal?.addEventListener("abort", () => {
|
50
|
+
httpServer.close();
|
51
|
+
reject(new Error("Aborted"));
|
52
|
+
});
|
53
|
+
httpServer.listen(port, host, () => {
|
54
|
+
resolve();
|
55
|
+
httpServer.removeListener("error", reject);
|
56
|
+
});
|
57
|
+
});
|
58
|
+
return httpServer;
|
59
|
+
}
|
60
|
+
function httpAddressToString(address) {
|
61
|
+
(0, import_assert.default)(address, "Could not bind server socket");
|
62
|
+
if (typeof address === "string")
|
63
|
+
return address;
|
64
|
+
const resolvedPort = address.port;
|
65
|
+
let resolvedHost = address.family === "IPv4" ? address.address : `[${address.address}]`;
|
66
|
+
if (resolvedHost === "0.0.0.0" || resolvedHost === "[::]")
|
67
|
+
resolvedHost = "localhost";
|
68
|
+
return `http://${resolvedHost}:${resolvedPort}`;
|
69
|
+
}
|
70
|
+
async function installHttpTransport(httpServer, serverBackendFactory, unguessableUrl, allowedHosts) {
|
71
|
+
const url = httpAddressToString(httpServer.address());
|
72
|
+
const host = new URL(url).host;
|
73
|
+
allowedHosts = (allowedHosts || [host]).map((h) => h.toLowerCase());
|
74
|
+
const allowAnyHost = allowedHosts.includes("*");
|
75
|
+
const pathPrefix = unguessableUrl ? `/${import_crypto.default.randomUUID()}` : "";
|
76
|
+
const sseSessions = /* @__PURE__ */ new Map();
|
77
|
+
const streamableSessions = /* @__PURE__ */ new Map();
|
78
|
+
httpServer.on("request", async (req, res) => {
|
79
|
+
if (!allowAnyHost) {
|
80
|
+
const host2 = req.headers.host?.toLowerCase();
|
81
|
+
if (!host2) {
|
82
|
+
res.statusCode = 400;
|
83
|
+
return res.end("Missing host");
|
84
|
+
}
|
85
|
+
if (!allowedHosts.includes(host2)) {
|
86
|
+
res.statusCode = 403;
|
87
|
+
return res.end("Access is only allowed at " + allowedHosts.join(", "));
|
88
|
+
}
|
89
|
+
}
|
90
|
+
if (!req.url?.startsWith(pathPrefix)) {
|
91
|
+
res.statusCode = 404;
|
92
|
+
return res.end("Not found");
|
93
|
+
}
|
94
|
+
const path = req.url?.slice(pathPrefix.length);
|
95
|
+
const url2 = new URL(`http://localhost${path}`);
|
96
|
+
if (url2.pathname === "/killkillkill" && req.method === "GET") {
|
97
|
+
res.statusCode = 200;
|
98
|
+
res.end("Killing process");
|
99
|
+
process.emit("SIGINT");
|
100
|
+
return;
|
101
|
+
}
|
102
|
+
if (url2.pathname.startsWith("/sse"))
|
103
|
+
await handleSSE(serverBackendFactory, req, res, url2, sseSessions);
|
104
|
+
else
|
105
|
+
await handleStreamable(serverBackendFactory, req, res, streamableSessions);
|
106
|
+
});
|
107
|
+
return `${url}${pathPrefix}`;
|
108
|
+
}
|
109
|
+
async function handleSSE(serverBackendFactory, req, res, url, sessions) {
|
110
|
+
if (req.method === "POST") {
|
111
|
+
const sessionId = url.searchParams.get("sessionId");
|
112
|
+
if (!sessionId) {
|
113
|
+
res.statusCode = 400;
|
114
|
+
return res.end("Missing sessionId");
|
115
|
+
}
|
116
|
+
const transport = sessions.get(sessionId);
|
117
|
+
if (!transport) {
|
118
|
+
res.statusCode = 404;
|
119
|
+
return res.end("Session not found");
|
120
|
+
}
|
121
|
+
return await transport.handlePostMessage(req, res);
|
122
|
+
} else if (req.method === "GET") {
|
123
|
+
const transport = new mcpBundle.SSEServerTransport("/sse", res);
|
124
|
+
sessions.set(transport.sessionId, transport);
|
125
|
+
testDebug(`create SSE session: ${transport.sessionId}`);
|
126
|
+
await mcpServer.connect(serverBackendFactory, transport, false);
|
127
|
+
res.on("close", () => {
|
128
|
+
testDebug(`delete SSE session: ${transport.sessionId}`);
|
129
|
+
sessions.delete(transport.sessionId);
|
130
|
+
});
|
131
|
+
return;
|
132
|
+
}
|
133
|
+
res.statusCode = 405;
|
134
|
+
res.end("Method not allowed");
|
135
|
+
}
|
136
|
+
async function handleStreamable(serverBackendFactory, req, res, sessions) {
|
137
|
+
const sessionId = req.headers["mcp-session-id"];
|
138
|
+
if (sessionId) {
|
139
|
+
const transport = sessions.get(sessionId);
|
140
|
+
if (!transport) {
|
141
|
+
res.statusCode = 404;
|
142
|
+
res.end("Session not found");
|
143
|
+
return;
|
144
|
+
}
|
145
|
+
return await transport.handleRequest(req, res);
|
146
|
+
}
|
147
|
+
if (req.method === "POST") {
|
148
|
+
const transport = new mcpBundle.StreamableHTTPServerTransport({
|
149
|
+
sessionIdGenerator: () => import_crypto.default.randomUUID(),
|
150
|
+
onsessioninitialized: async (sessionId2) => {
|
151
|
+
testDebug(`create http session: ${transport.sessionId}`);
|
152
|
+
await mcpServer.connect(serverBackendFactory, transport, true);
|
153
|
+
sessions.set(sessionId2, transport);
|
154
|
+
}
|
155
|
+
});
|
156
|
+
transport.onclose = () => {
|
157
|
+
if (!transport.sessionId)
|
158
|
+
return;
|
159
|
+
sessions.delete(transport.sessionId);
|
160
|
+
testDebug(`delete http session: ${transport.sessionId}`);
|
161
|
+
};
|
162
|
+
await transport.handleRequest(req, res);
|
163
|
+
return;
|
164
|
+
}
|
165
|
+
res.statusCode = 400;
|
166
|
+
res.end("Invalid request");
|
167
|
+
}
|
168
|
+
function decorateServer(server) {
|
169
|
+
const sockets = /* @__PURE__ */ new Set();
|
170
|
+
server.on("connection", (socket) => {
|
171
|
+
sockets.add(socket);
|
172
|
+
socket.once("close", () => sockets.delete(socket));
|
173
|
+
});
|
174
|
+
const close = server.close;
|
175
|
+
server.close = (callback) => {
|
176
|
+
for (const socket of sockets)
|
177
|
+
socket.destroy();
|
178
|
+
sockets.clear();
|
179
|
+
return close.call(server, callback);
|
180
|
+
};
|
181
|
+
}
|
182
|
+
// Annotate the CommonJS export names for ESM import in node:
|
183
|
+
0 && (module.exports = {
|
184
|
+
httpAddressToString,
|
185
|
+
installHttpTransport,
|
186
|
+
startHttpServer
|
187
|
+
});
|
@@ -0,0 +1,7 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"sources": ["../../../src/mcp/sdk/http.ts"],
|
4
|
+
"sourcesContent": ["/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport assert from 'assert';\nimport net from 'net';\nimport http from 'http';\nimport crypto from 'crypto';\nimport { debug } from 'playwright-core/lib/utilsBundle';\n\nimport * as mcp from './bundle';\nimport { connect } from './server';\n\nimport type { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';\nimport type { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';\nimport type { ServerBackendFactory } from './server';\n\nconst testDebug = debug('pw:mcp:test');\n\nexport async function startHttpServer(config: { host?: string, port?: number }, abortSignal?: AbortSignal): Promise<http.Server> {\n const { host, port } = config;\n const httpServer = http.createServer();\n await new Promise<void>((resolve, reject) => {\n httpServer.on('error', reject);\n abortSignal?.addEventListener('abort', () => {\n httpServer.close();\n reject(new Error('Aborted'));\n });\n httpServer.listen(port, host, () => {\n resolve();\n httpServer.removeListener('error', reject);\n });\n });\n return httpServer;\n}\n\nexport function httpAddressToString(address: string | net.AddressInfo | null): string {\n assert(address, 'Could not bind server socket');\n if (typeof address === 'string')\n return address;\n const resolvedPort = address.port;\n let resolvedHost = address.family === 'IPv4' ? address.address : `[${address.address}]`;\n if (resolvedHost === '0.0.0.0' || resolvedHost === '[::]')\n resolvedHost = 'localhost';\n return `http://${resolvedHost}:${resolvedPort}`;\n}\n\nexport async function installHttpTransport(httpServer: http.Server, serverBackendFactory: ServerBackendFactory) {\n const sseSessions = new Map();\n const streamableSessions = new Map();\n httpServer.on('request', async (req, res) => {\n const url = new URL(`http://localhost${req.url}`);\n if (url.pathname.startsWith('/sse'))\n await handleSSE(serverBackendFactory, req, res, url, sseSessions);\n else\n await handleStreamable(serverBackendFactory, req, res, streamableSessions);\n });\n}\n\nasync function handleSSE(serverBackendFactory: ServerBackendFactory, req: http.IncomingMessage, res: http.ServerResponse, url: URL, sessions: Map<string, SSEServerTransport>) {\n if (req.method === 'POST') {\n const sessionId = url.searchParams.get('sessionId');\n if (!sessionId) {\n res.statusCode = 400;\n return res.end('Missing sessionId');\n }\n\n const transport = sessions.get(sessionId);\n if (!transport) {\n res.statusCode = 404;\n return res.end('Session not found');\n }\n\n return await transport.handlePostMessage(req, res);\n } else if (req.method === 'GET') {\n const transport = new mcp.SSEServerTransport('/sse', res);\n sessions.set(transport.sessionId, transport);\n testDebug(`create SSE session: ${transport.sessionId}`);\n await connect(serverBackendFactory, transport, false);\n res.on('close', () => {\n testDebug(`delete SSE session: ${transport.sessionId}`);\n sessions.delete(transport.sessionId);\n });\n return;\n }\n\n res.statusCode = 405;\n res.end('Method not allowed');\n}\n\nasync function handleStreamable(serverBackendFactory: ServerBackendFactory, req: http.IncomingMessage, res: http.ServerResponse, sessions: Map<string, StreamableHTTPServerTransport>) {\n const sessionId = req.headers['mcp-session-id'] as string | undefined;\n if (sessionId) {\n const transport = sessions.get(sessionId);\n if (!transport) {\n res.statusCode = 404;\n res.end('Session not found');\n return;\n }\n return await transport.handleRequest(req, res);\n }\n\n if (req.method === 'POST') {\n const transport = new mcp.StreamableHTTPServerTransport({\n sessionIdGenerator: () => crypto.randomUUID(),\n onsessioninitialized: async sessionId => {\n testDebug(`create http session: ${transport.sessionId}`);\n await connect(serverBackendFactory, transport, true);\n sessions.set(sessionId, transport);\n }\n });\n\n transport.onclose = () => {\n if (!transport.sessionId)\n return;\n sessions.delete(transport.sessionId);\n testDebug(`delete http session: ${transport.sessionId}`);\n };\n\n await transport.handleRequest(req, res);\n return;\n }\n\n res.statusCode = 400;\n res.end('Invalid request');\n}\n"],
|
5
|
+
"mappings": "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",
|
6
|
+
"names": ["http", "assert", "crypto", "sessionId"]
|
7
|
+
}
|
@@ -0,0 +1,71 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __defProp = Object.defineProperty;
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
6
|
+
var __export = (target, all) => {
|
7
|
+
for (var name in all)
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
9
|
+
};
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
12
|
+
for (let key of __getOwnPropNames(from))
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
15
|
+
}
|
16
|
+
return to;
|
17
|
+
};
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
19
|
+
var inProcessTransport_exports = {};
|
20
|
+
__export(inProcessTransport_exports, {
|
21
|
+
InProcessTransport: () => InProcessTransport
|
22
|
+
});
|
23
|
+
module.exports = __toCommonJS(inProcessTransport_exports);
|
24
|
+
class InProcessTransport {
|
25
|
+
constructor(server) {
|
26
|
+
this._connected = false;
|
27
|
+
this._server = server;
|
28
|
+
this._serverTransport = new InProcessServerTransport(this);
|
29
|
+
}
|
30
|
+
async start() {
|
31
|
+
if (this._connected)
|
32
|
+
throw new Error("InprocessTransport already started!");
|
33
|
+
await this._server.connect(this._serverTransport);
|
34
|
+
this._connected = true;
|
35
|
+
}
|
36
|
+
async send(message, options) {
|
37
|
+
if (!this._connected)
|
38
|
+
throw new Error("Transport not connected");
|
39
|
+
this._serverTransport._receiveFromClient(message);
|
40
|
+
}
|
41
|
+
async close() {
|
42
|
+
if (this._connected) {
|
43
|
+
this._connected = false;
|
44
|
+
this.onclose?.();
|
45
|
+
this._serverTransport.onclose?.();
|
46
|
+
}
|
47
|
+
}
|
48
|
+
_receiveFromServer(message, extra) {
|
49
|
+
this.onmessage?.(message, extra);
|
50
|
+
}
|
51
|
+
}
|
52
|
+
class InProcessServerTransport {
|
53
|
+
constructor(clientTransport) {
|
54
|
+
this._clientTransport = clientTransport;
|
55
|
+
}
|
56
|
+
async start() {
|
57
|
+
}
|
58
|
+
async send(message, options) {
|
59
|
+
this._clientTransport._receiveFromServer(message);
|
60
|
+
}
|
61
|
+
async close() {
|
62
|
+
this.onclose?.();
|
63
|
+
}
|
64
|
+
_receiveFromClient(message) {
|
65
|
+
this.onmessage?.(message);
|
66
|
+
}
|
67
|
+
}
|
68
|
+
// Annotate the CommonJS export names for ESM import in node:
|
69
|
+
0 && (module.exports = {
|
70
|
+
InProcessTransport
|
71
|
+
});
|
@@ -0,0 +1,7 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"sources": ["../../../src/mcp/sdk/inProcessTransport.ts"],
|
4
|
+
"sourcesContent": ["/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Server } from '@modelcontextprotocol/sdk/server/index.js';\nimport type { Transport, TransportSendOptions } from '@modelcontextprotocol/sdk/shared/transport.js';\nimport type { JSONRPCMessage, MessageExtraInfo } from '@modelcontextprotocol/sdk/types.js';\n\nexport class InProcessTransport implements Transport {\n private _server: Server;\n private _serverTransport: InProcessServerTransport;\n private _connected: boolean = false;\n\n constructor(server: Server) {\n this._server = server;\n this._serverTransport = new InProcessServerTransport(this);\n }\n\n async start(): Promise<void> {\n if (this._connected)\n throw new Error('InprocessTransport already started!');\n\n await this._server.connect(this._serverTransport);\n this._connected = true;\n }\n\n async send(message: JSONRPCMessage, options?: TransportSendOptions): Promise<void> {\n if (!this._connected)\n throw new Error('Transport not connected');\n\n\n this._serverTransport._receiveFromClient(message);\n }\n\n async close(): Promise<void> {\n if (this._connected) {\n this._connected = false;\n this.onclose?.();\n this._serverTransport.onclose?.();\n }\n }\n\n onclose?: (() => void) | undefined;\n onerror?: ((error: Error) => void) | undefined;\n onmessage?: ((message: JSONRPCMessage, extra?: MessageExtraInfo) => void) | undefined;\n sessionId?: string | undefined;\n setProtocolVersion?: ((version: string) => void) | undefined;\n\n _receiveFromServer(message: JSONRPCMessage, extra?: MessageExtraInfo): void {\n this.onmessage?.(message, extra);\n }\n}\n\nclass InProcessServerTransport implements Transport {\n private _clientTransport: InProcessTransport;\n\n constructor(clientTransport: InProcessTransport) {\n this._clientTransport = clientTransport;\n }\n\n async start(): Promise<void> {\n }\n\n async send(message: JSONRPCMessage, options?: TransportSendOptions): Promise<void> {\n this._clientTransport._receiveFromServer(message);\n }\n\n async close(): Promise<void> {\n this.onclose?.();\n }\n\n onclose?: (() => void) | undefined;\n onerror?: ((error: Error) => void) | undefined;\n onmessage?: ((message: JSONRPCMessage, extra?: MessageExtraInfo) => void) | undefined;\n sessionId?: string | undefined;\n setProtocolVersion?: ((version: string) => void) | undefined;\n _receiveFromClient(message: JSONRPCMessage): void {\n this.onmessage?.(message);\n }\n}\n"],
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAoBO,MAAM,mBAAwC;AAAA,EAKnD,YAAY,QAAgB;AAF5B,SAAQ,aAAsB;AAG5B,SAAK,UAAU;AACf,SAAK,mBAAmB,IAAI,yBAAyB,IAAI;AAAA,EAC3D;AAAA,EAEA,MAAM,QAAuB;AAC3B,QAAI,KAAK;AACP,YAAM,IAAI,MAAM,qCAAqC;AAEvD,UAAM,KAAK,QAAQ,QAAQ,KAAK,gBAAgB;AAChD,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,MAAM,KAAK,SAAyB,SAA+C;AACjF,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,yBAAyB;AAG3C,SAAK,iBAAiB,mBAAmB,OAAO;AAAA,EAClD;AAAA,EAEA,MAAM,QAAuB;AAC3B,QAAI,KAAK,YAAY;AACnB,WAAK,aAAa;AAClB,WAAK,UAAU;AACf,WAAK,iBAAiB,UAAU;AAAA,IAClC;AAAA,EACF;AAAA,EAQA,mBAAmB,SAAyB,OAAgC;AAC1E,SAAK,YAAY,SAAS,KAAK;AAAA,EACjC;AACF;AAEA,MAAM,yBAA8C;AAAA,EAGlD,YAAY,iBAAqC;AAC/C,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EAEA,MAAM,QAAuB;AAAA,EAC7B;AAAA,EAEA,MAAM,KAAK,SAAyB,SAA+C;AACjF,SAAK,iBAAiB,mBAAmB,OAAO;AAAA,EAClD;AAAA,EAEA,MAAM,QAAuB;AAC3B,SAAK,UAAU;AAAA,EACjB;AAAA,EAOA,mBAAmB,SAA+B;AAChD,SAAK,YAAY,OAAO;AAAA,EAC1B;AACF;",
|
6
|
+
"names": []
|
7
|
+
}
|