beeai-framework 0.1.13 → 0.1.15
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/{agents/experimental/remote → adapters/acp/agents}/agent.cjs +9 -6
- package/dist/adapters/acp/agents/agent.cjs.map +1 -0
- package/dist/{agents/experimental/remote → adapters/acp/agents}/agent.d.cts +11 -30
- package/dist/{agents/experimental/remote → adapters/acp/agents}/agent.d.ts +11 -30
- package/dist/{agents/experimental/remote → adapters/acp/agents}/agent.js +9 -6
- package/dist/adapters/acp/agents/agent.js.map +1 -0
- package/dist/adapters/acp/agents/events.cjs +4 -0
- package/dist/adapters/acp/agents/events.cjs.map +1 -0
- package/dist/adapters/acp/agents/events.d.cts +34 -0
- package/dist/adapters/acp/agents/events.d.ts +34 -0
- package/dist/adapters/acp/agents/events.js +3 -0
- package/dist/adapters/acp/agents/events.js.map +1 -0
- package/dist/adapters/acp/agents/types.cjs +4 -0
- package/dist/adapters/acp/agents/types.cjs.map +1 -0
- package/dist/adapters/acp/agents/types.d.cts +38 -0
- package/dist/adapters/acp/agents/types.d.ts +38 -0
- package/dist/adapters/acp/agents/types.js +3 -0
- package/dist/adapters/acp/agents/types.js.map +1 -0
- package/dist/adapters/amazon-bedrock/backend/client.cjs +3 -1
- package/dist/adapters/amazon-bedrock/backend/client.cjs.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/client.js +3 -1
- package/dist/adapters/amazon-bedrock/backend/client.js.map +1 -1
- package/dist/adapters/anthropic/backend/client.cjs +3 -1
- package/dist/adapters/anthropic/backend/client.cjs.map +1 -1
- package/dist/adapters/anthropic/backend/client.js +3 -1
- package/dist/adapters/anthropic/backend/client.js.map +1 -1
- package/dist/adapters/azure-openai/backend/client.cjs +3 -1
- package/dist/adapters/azure-openai/backend/client.cjs.map +1 -1
- package/dist/adapters/azure-openai/backend/client.js +3 -1
- package/dist/adapters/azure-openai/backend/client.js.map +1 -1
- package/dist/adapters/beeai_platform/agents/agent.cjs +61 -0
- package/dist/adapters/beeai_platform/agents/agent.cjs.map +1 -0
- package/dist/adapters/beeai_platform/agents/agent.d.cts +49 -0
- package/dist/adapters/beeai_platform/agents/agent.d.ts +49 -0
- package/dist/adapters/beeai_platform/agents/agent.js +59 -0
- package/dist/adapters/beeai_platform/agents/agent.js.map +1 -0
- package/dist/adapters/beeai_platform/agents/events.cjs +4 -0
- package/dist/adapters/beeai_platform/agents/events.cjs.map +1 -0
- package/dist/adapters/beeai_platform/agents/events.d.cts +34 -0
- package/dist/adapters/beeai_platform/agents/events.d.ts +34 -0
- package/dist/adapters/beeai_platform/agents/events.js +3 -0
- package/dist/adapters/beeai_platform/agents/events.js.map +1 -0
- package/dist/adapters/beeai_platform/agents/types.cjs +4 -0
- package/dist/adapters/beeai_platform/agents/types.cjs.map +1 -0
- package/dist/adapters/beeai_platform/agents/types.d.cts +38 -0
- package/dist/adapters/beeai_platform/agents/types.d.ts +38 -0
- package/dist/adapters/beeai_platform/agents/types.js +3 -0
- package/dist/adapters/beeai_platform/agents/types.js.map +1 -0
- package/dist/adapters/google-vertex/backend/client.cjs +3 -1
- package/dist/adapters/google-vertex/backend/client.cjs.map +1 -1
- package/dist/adapters/google-vertex/backend/client.js +3 -1
- package/dist/adapters/google-vertex/backend/client.js.map +1 -1
- package/dist/adapters/groq/backend/client.cjs +3 -1
- package/dist/adapters/groq/backend/client.cjs.map +1 -1
- package/dist/adapters/groq/backend/client.js +3 -1
- package/dist/adapters/groq/backend/client.js.map +1 -1
- package/dist/adapters/mcp/serve/http_server.cjs +163 -0
- package/dist/adapters/mcp/serve/http_server.cjs.map +1 -0
- package/dist/adapters/mcp/serve/http_server.d.cts +21 -0
- package/dist/adapters/mcp/serve/http_server.d.ts +21 -0
- package/dist/adapters/mcp/serve/http_server.js +157 -0
- package/dist/adapters/mcp/serve/http_server.js.map +1 -0
- package/dist/adapters/mcp/serve/in_memory_store.cjs +69 -0
- package/dist/adapters/mcp/serve/in_memory_store.cjs.map +1 -0
- package/dist/adapters/mcp/serve/in_memory_store.d.cts +49 -0
- package/dist/adapters/mcp/serve/in_memory_store.d.ts +49 -0
- package/dist/adapters/mcp/serve/in_memory_store.js +67 -0
- package/dist/adapters/mcp/serve/in_memory_store.js.map +1 -0
- package/dist/adapters/mcp/serve/server.cjs +109 -0
- package/dist/adapters/mcp/serve/server.cjs.map +1 -0
- package/dist/adapters/mcp/serve/server.d.cts +70 -0
- package/dist/adapters/mcp/serve/server.d.ts +70 -0
- package/dist/adapters/mcp/serve/server.js +106 -0
- package/dist/adapters/mcp/serve/server.js.map +1 -0
- package/dist/adapters/ollama/backend/client.cjs +3 -1
- package/dist/adapters/ollama/backend/client.cjs.map +1 -1
- package/dist/adapters/ollama/backend/client.js +3 -1
- package/dist/adapters/ollama/backend/client.js.map +1 -1
- package/dist/adapters/openai/backend/client.cjs +3 -1
- package/dist/adapters/openai/backend/client.cjs.map +1 -1
- package/dist/adapters/openai/backend/client.js +3 -1
- package/dist/adapters/openai/backend/client.js.map +1 -1
- package/dist/adapters/vercel/backend/chat.cjs +7 -3
- package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
- package/dist/adapters/vercel/backend/chat.js +8 -4
- package/dist/adapters/vercel/backend/chat.js.map +1 -1
- package/dist/adapters/vercel/backend/utils.cjs +82 -0
- package/dist/adapters/vercel/backend/utils.cjs.map +1 -0
- package/dist/adapters/vercel/backend/utils.d.cts +30 -0
- package/dist/adapters/vercel/backend/utils.d.ts +30 -0
- package/dist/adapters/vercel/backend/utils.js +78 -0
- package/dist/adapters/vercel/backend/utils.js.map +1 -0
- package/dist/{agent-Cmnvjx_k.d.cts → agent-Ca5UE2P1.d.cts} +1 -1
- package/dist/{agent-B55OuVCj.d.ts → agent-CgsoqVL5.d.ts} +1 -1
- package/dist/agents/react/agent.d.cts +1 -1
- package/dist/agents/react/agent.d.ts +1 -1
- package/dist/agents/react/prompts.d.cts +1 -1
- package/dist/agents/react/prompts.d.ts +1 -1
- package/dist/agents/react/runners/base.d.cts +1 -1
- package/dist/agents/react/runners/base.d.ts +1 -1
- package/dist/agents/react/runners/deep-think/prompts.d.cts +1 -1
- package/dist/agents/react/runners/deep-think/prompts.d.ts +1 -1
- package/dist/agents/react/runners/deep-think/runner.d.cts +2 -2
- package/dist/agents/react/runners/deep-think/runner.d.ts +2 -2
- package/dist/agents/react/runners/default/runner.d.cts +2 -2
- package/dist/agents/react/runners/default/runner.d.ts +2 -2
- package/dist/agents/react/runners/granite/prompts.d.cts +1 -1
- package/dist/agents/react/runners/granite/prompts.d.ts +1 -1
- package/dist/agents/react/runners/granite/runner.d.cts +2 -2
- package/dist/agents/react/runners/granite/runner.d.ts +2 -2
- package/dist/memory/slidingMemory.d.cts +1 -1
- package/dist/memory/slidingMemory.d.ts +1 -1
- package/dist/serve/server.cjs +52 -0
- package/dist/serve/server.cjs.map +1 -0
- package/dist/serve/server.d.cts +31 -0
- package/dist/serve/server.d.ts +31 -0
- package/dist/serve/server.js +50 -0
- package/dist/serve/server.js.map +1 -0
- package/dist/tools/database/qdrant.cjs +174 -0
- package/dist/tools/database/qdrant.cjs.map +1 -0
- package/dist/tools/database/qdrant.d.cts +86 -0
- package/dist/tools/database/qdrant.d.ts +86 -0
- package/dist/tools/database/qdrant.js +171 -0
- package/dist/tools/database/qdrant.js.map +1 -0
- package/dist/version.cjs +1 -1
- package/dist/version.js +1 -1
- package/package.json +17 -6
- package/dist/agents/experimental/remote/agent.cjs.map +0 -1
- package/dist/agents/experimental/remote/agent.js.map +0 -1
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
class InMemoryEventStore {
|
|
4
|
+
static {
|
|
5
|
+
__name(this, "InMemoryEventStore");
|
|
6
|
+
}
|
|
7
|
+
events = /* @__PURE__ */ new Map();
|
|
8
|
+
/**
|
|
9
|
+
* Generates a unique event ID for a given stream ID
|
|
10
|
+
*/
|
|
11
|
+
generateEventId(streamId) {
|
|
12
|
+
return `${streamId}_${Date.now()}_${Math.random().toString(36).substring(2, 10)}`;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Extracts the stream ID from an event ID
|
|
16
|
+
*/
|
|
17
|
+
getStreamIdFromEventId(eventId) {
|
|
18
|
+
const parts = eventId.split("_");
|
|
19
|
+
return parts.length > 0 ? parts[0] : "";
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Stores an event with a generated event ID
|
|
23
|
+
* Implements EventStore.storeEvent
|
|
24
|
+
*/
|
|
25
|
+
async storeEvent(streamId, message) {
|
|
26
|
+
const eventId = this.generateEventId(streamId);
|
|
27
|
+
this.events.set(eventId, {
|
|
28
|
+
streamId,
|
|
29
|
+
message
|
|
30
|
+
});
|
|
31
|
+
return eventId;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Replays events that occurred after a specific event ID
|
|
35
|
+
* Implements EventStore.replayEventsAfter
|
|
36
|
+
*/
|
|
37
|
+
async replayEventsAfter(lastEventId, { send }) {
|
|
38
|
+
if (!lastEventId || !this.events.has(lastEventId)) {
|
|
39
|
+
return "";
|
|
40
|
+
}
|
|
41
|
+
const streamId = this.getStreamIdFromEventId(lastEventId);
|
|
42
|
+
if (!streamId) {
|
|
43
|
+
return "";
|
|
44
|
+
}
|
|
45
|
+
let foundLastEvent = false;
|
|
46
|
+
const sortedEvents = [
|
|
47
|
+
...this.events.entries()
|
|
48
|
+
].sort((a, b) => a[0].localeCompare(b[0]));
|
|
49
|
+
for (const [eventId, { streamId: eventStreamId, message }] of sortedEvents) {
|
|
50
|
+
if (eventStreamId !== streamId) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (eventId === lastEventId) {
|
|
54
|
+
foundLastEvent = true;
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (foundLastEvent) {
|
|
58
|
+
await send(eventId, message);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return streamId;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export { InMemoryEventStore };
|
|
66
|
+
//# sourceMappingURL=in_memory_store.js.map
|
|
67
|
+
//# sourceMappingURL=in_memory_store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["in_memory_store.ts"],"names":["InMemoryEventStore","events","Map","generateEventId","streamId","Date","now","Math","random","toString","substring","getStreamIdFromEventId","eventId","parts","split","length","storeEvent","message","set","replayEventsAfter","lastEventId","send","has","foundLastEvent","sortedEvents","entries","sort","a","b","localeCompare","eventStreamId"],"mappings":";;AA0BO,MAAMA,kBAAAA,CAAAA;EA1Bb;;;AA2BUC,EAAAA,MAAAA,uBAAaC,GAAAA,EAAAA;;;;AAKbC,EAAAA,eAAAA,CAAgBC,QAA0B,EAAA;AAChD,IAAA,OAAO,GAAGA,QAAAA,CAAAA,CAAAA,EAAYC,IAAKC,CAAAA,GAAAA,EAAG,CAAMC,CAAAA,EAAAA,IAAAA,CAAKC,MAAM,EAAA,CAAGC,SAAS,EAAA,CAAA,CAAIC,SAAU,CAAA,CAAA,EAAG,EAAA,CAAA,CAAA,CAAA;AAC9E;;;;AAKQC,EAAAA,sBAAAA,CAAuBC,OAAyB,EAAA;AACtD,IAAMC,MAAAA,KAAAA,GAAQD,OAAQE,CAAAA,KAAAA,CAAM,GAAA,CAAA;AAC5B,IAAA,OAAOD,KAAME,CAAAA,MAAAA,GAAS,CAAIF,GAAAA,KAAAA,CAAM,CAAA,CAAK,GAAA,EAAA;AACvC;;;;;EAMA,MAAMG,UAAAA,CAAWZ,UAAkBa,OAA0C,EAAA;AAC3E,IAAML,MAAAA,OAAAA,GAAU,IAAKT,CAAAA,eAAAA,CAAgBC,QAAAA,CAAAA;AACrC,IAAKH,IAAAA,CAAAA,MAAAA,CAAOiB,IAAIN,OAAS,EAAA;AAAER,MAAAA,QAAAA;AAAUa,MAAAA;KAAQ,CAAA;AAC7C,IAAOL,OAAAA,OAAAA;AACT;;;;;AAMA,EAAA,MAAMO,iBACJC,CAAAA,WAAAA,EACA,EAAEC,IAAAA,EACe,EAAA;AACjB,IAAA,IAAI,CAACD,WAAe,IAAA,CAAC,KAAKnB,MAAOqB,CAAAA,GAAAA,CAAIF,WAAAA,CAAc,EAAA;AACjD,MAAO,OAAA,EAAA;AACT;AAGA,IAAMhB,MAAAA,QAAAA,GAAW,IAAKO,CAAAA,sBAAAA,CAAuBS,WAAAA,CAAAA;AAC7C,IAAA,IAAI,CAAChB,QAAU,EAAA;AACb,MAAO,OAAA,EAAA;AACT;AAEA,IAAA,IAAImB,cAAiB,GAAA,KAAA;AAGrB,IAAA,MAAMC,YAAe,GAAA;AAAI,MAAA,GAAA,IAAA,CAAKvB,OAAOwB,OAAO;MAAIC,IAAK,CAAA,CAACC,CAAGC,EAAAA,CAAAA,KAAMD,CAAE,CAAA,CAAA,EAAGE,aAAcD,CAAAA,CAAAA,CAAE,CAAA,CAAE,CAAA,CAAA;AAEtF,IAAW,KAAA,MAAA,CAAChB,SAAS,EAAER,QAAAA,EAAU0B,eAAeb,OAAO,EAAE,KAAKO,YAAc,EAAA;AAE1E,MAAA,IAAIM,kBAAkB1B,QAAU,EAAA;AAC9B,QAAA;AACF;AAGA,MAAA,IAAIQ,YAAYQ,WAAa,EAAA;AAC3BG,QAAiB,cAAA,GAAA,IAAA;AACjB,QAAA;AACF;AAEA,MAAA,IAAIA,cAAgB,EAAA;AAClB,QAAMF,MAAAA,IAAAA,CAAKT,SAASK,OAAAA,CAAAA;AACtB;AACF;AACA,IAAOb,OAAAA,QAAAA;AACT;AACF","file":"in_memory_store.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\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\n// Taken from: https://github.com/modelcontextprotocol/typescript-sdk/blob/main/src/examples/shared/inMemoryEventStore.ts\n\nimport { EventStore } from \"@modelcontextprotocol/sdk/server/streamableHttp.js\";\nimport { JSONRPCMessage } from \"@modelcontextprotocol/sdk/types.js\";\n\n/**\n * Simple in-memory implementation of the EventStore interface for resumability\n * This is primarily intended for examples and testing, not for production use\n * where a persistent storage solution would be more appropriate.\n */\nexport class InMemoryEventStore implements EventStore {\n private events = new Map<string, { streamId: string; message: JSONRPCMessage }>();\n\n /**\n * Generates a unique event ID for a given stream ID\n */\n private generateEventId(streamId: string): string {\n return `${streamId}_${Date.now()}_${Math.random().toString(36).substring(2, 10)}`;\n }\n\n /**\n * Extracts the stream ID from an event ID\n */\n private getStreamIdFromEventId(eventId: string): string {\n const parts = eventId.split(\"_\");\n return parts.length > 0 ? parts[0] : \"\";\n }\n\n /**\n * Stores an event with a generated event ID\n * Implements EventStore.storeEvent\n */\n async storeEvent(streamId: string, message: JSONRPCMessage): Promise<string> {\n const eventId = this.generateEventId(streamId);\n this.events.set(eventId, { streamId, message });\n return eventId;\n }\n\n /**\n * Replays events that occurred after a specific event ID\n * Implements EventStore.replayEventsAfter\n */\n async replayEventsAfter(\n lastEventId: string,\n { send }: { send: (eventId: string, message: JSONRPCMessage) => Promise<void> },\n ): Promise<string> {\n if (!lastEventId || !this.events.has(lastEventId)) {\n return \"\";\n }\n\n // Extract the stream ID from the event ID\n const streamId = this.getStreamIdFromEventId(lastEventId);\n if (!streamId) {\n return \"\";\n }\n\n let foundLastEvent = false;\n\n // Sort events by eventId for chronological ordering\n const sortedEvents = [...this.events.entries()].sort((a, b) => a[0].localeCompare(b[0]));\n\n for (const [eventId, { streamId: eventStreamId, message }] of sortedEvents) {\n // Only include events from the same stream\n if (eventStreamId !== streamId) {\n continue;\n }\n\n // Start sending events after we find the lastEventId\n if (eventId === lastEventId) {\n foundLastEvent = true;\n continue;\n }\n\n if (foundLastEvent) {\n await send(eventId, message);\n }\n }\n return streamId;\n }\n}\n"]}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var errors_cjs = require('../../../errors.cjs');
|
|
4
|
+
var server_cjs = require('../../../serve/server.cjs');
|
|
5
|
+
var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
|
|
6
|
+
var stdio_js = require('@modelcontextprotocol/sdk/server/stdio.js');
|
|
7
|
+
var base_cjs = require('../../../tools/base.cjs');
|
|
8
|
+
var http_server_cjs = require('./http_server.cjs');
|
|
9
|
+
var zod = require('zod');
|
|
10
|
+
|
|
11
|
+
var __defProp = Object.defineProperty;
|
|
12
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
13
|
+
class MCPServerConfig {
|
|
14
|
+
static {
|
|
15
|
+
__name(this, "MCPServerConfig");
|
|
16
|
+
}
|
|
17
|
+
transport = "stdio";
|
|
18
|
+
hostname = "127.0.0.1";
|
|
19
|
+
port = 3e3;
|
|
20
|
+
name = "MCP Server";
|
|
21
|
+
version = "1.0.0";
|
|
22
|
+
settings;
|
|
23
|
+
constructor(partial) {
|
|
24
|
+
if (partial) {
|
|
25
|
+
Object.assign(this, partial);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
class MCPServer extends server_cjs.Server {
|
|
30
|
+
static {
|
|
31
|
+
__name(this, "MCPServer");
|
|
32
|
+
}
|
|
33
|
+
server;
|
|
34
|
+
constructor(config) {
|
|
35
|
+
super(config || new MCPServerConfig());
|
|
36
|
+
this.server = new mcp_js.McpServer({
|
|
37
|
+
name: this.config.name,
|
|
38
|
+
version: this.config.version,
|
|
39
|
+
...this.config.settings
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
async serve() {
|
|
43
|
+
for (const member of this.members) {
|
|
44
|
+
const factory = this.getFactory(member);
|
|
45
|
+
const entry = await factory(member);
|
|
46
|
+
switch (entry.type) {
|
|
47
|
+
case "tool":
|
|
48
|
+
this.server.tool(entry.name, entry.description, entry.paramsSchema, entry.callback);
|
|
49
|
+
break;
|
|
50
|
+
case "prompt":
|
|
51
|
+
if ("argsSchema" in entry) {
|
|
52
|
+
this.server.prompt(entry.name, entry.description, entry.argsSchema, entry.callback);
|
|
53
|
+
} else {
|
|
54
|
+
this.server.prompt(entry.name, entry.description, entry.callback);
|
|
55
|
+
}
|
|
56
|
+
break;
|
|
57
|
+
case "resource":
|
|
58
|
+
if ("uri" in entry) {
|
|
59
|
+
this.server.resource(entry.name, entry.uri, entry.callback);
|
|
60
|
+
} else {
|
|
61
|
+
this.server.resource(entry.name, entry.template, entry.callback);
|
|
62
|
+
}
|
|
63
|
+
break;
|
|
64
|
+
default:
|
|
65
|
+
throw new errors_cjs.ValueError("Input type is not supported by this server.");
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (this.config.transport === "sse") {
|
|
69
|
+
http_server_cjs.runServer(this.server, this.config.hostname, this.config.port);
|
|
70
|
+
} else {
|
|
71
|
+
await this.server.connect(new stdio_js.StdioServerTransport());
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
getFactory(member) {
|
|
75
|
+
const factories = this.constructor.factories;
|
|
76
|
+
return !factories.has(member.constructor) && member instanceof base_cjs.Tool && factories.has(base_cjs.Tool) ? factories.get(base_cjs.Tool) : super.getFactory(member);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async function toolFactory(tool) {
|
|
80
|
+
const schema = await tool.inputSchema();
|
|
81
|
+
if (!(schema instanceof zod.ZodType)) {
|
|
82
|
+
throw new errors_cjs.ValueError("JsonSchema is not supported for MCP tools.");
|
|
83
|
+
}
|
|
84
|
+
const paramsSchema = schema.shape;
|
|
85
|
+
return {
|
|
86
|
+
type: "tool",
|
|
87
|
+
name: tool.name,
|
|
88
|
+
description: tool.description,
|
|
89
|
+
paramsSchema,
|
|
90
|
+
callback: /* @__PURE__ */ __name(async (...args) => {
|
|
91
|
+
const result = await tool.run(...args);
|
|
92
|
+
return {
|
|
93
|
+
content: [
|
|
94
|
+
{
|
|
95
|
+
type: "text",
|
|
96
|
+
text: result.getTextContent()
|
|
97
|
+
}
|
|
98
|
+
]
|
|
99
|
+
};
|
|
100
|
+
}, "callback")
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
__name(toolFactory, "toolFactory");
|
|
104
|
+
MCPServer.registerFactory(base_cjs.Tool, toolFactory);
|
|
105
|
+
|
|
106
|
+
exports.MCPServer = MCPServer;
|
|
107
|
+
exports.MCPServerConfig = MCPServerConfig;
|
|
108
|
+
//# sourceMappingURL=server.cjs.map
|
|
109
|
+
//# sourceMappingURL=server.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["server.ts"],"names":["MCPServerConfig","transport","hostname","port","name","version","settings","constructor","partial","Object","assign","MCPServer","Server","server","config","McpServer","serve","member","members","factory","getFactory","entry","type","tool","description","paramsSchema","callback","prompt","argsSchema","resource","uri","template","ValueError","runServer","connect","StdioServerTransport","factories","has","Tool","get","toolFactory","schema","inputSchema","ZodType","shape","args","result","run","content","text","getTextContent","registerFactory"],"mappings":"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","file":"server.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\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 { ValueError } from \"@/errors.js\";\nimport { Server } from \"@/serve/server.js\";\nimport { ServerOptions } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport {\n McpServer,\n PromptCallback,\n ReadResourceCallback,\n ReadResourceTemplateCallback,\n ResourceTemplate,\n ToolCallback,\n} from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { AnyTool, Tool } from \"@/tools/base.js\";\nimport { runServer } from \"./http_server.js\";\nimport { ZodRawShape, ZodType } from \"zod\";\nimport { ToolAnnotations } from \"@modelcontextprotocol/sdk/types.js\";\n\ntype MCPServerPrompt =\n | {\n type: \"prompt\";\n name: string;\n description: string;\n callback: PromptCallback;\n }\n | {\n type: \"prompt\";\n name: string;\n description: string;\n argsSchema: ZodRawShape;\n callback: PromptCallback<ZodRawShape>;\n };\n\ntype MCPServerResource =\n | {\n type: \"resource\";\n name: string;\n uri: string;\n callback: ReadResourceCallback;\n }\n | {\n type: \"resource\";\n name: string;\n template: ResourceTemplate;\n callback: ReadResourceTemplateCallback;\n };\n\ninterface MCPServerTool {\n type: \"tool\";\n name: string;\n description: string;\n paramsSchema: ZodRawShape | ToolAnnotations;\n callback: ToolCallback<ZodRawShape>;\n}\n\ntype MCPServerEntry = MCPServerPrompt | MCPServerResource | MCPServerTool;\n\n// Configuration for the MCPServer.\nexport class MCPServerConfig {\n transport: \"stdio\" | \"sse\" = \"stdio\";\n hostname = \"127.0.0.1\";\n port = 3000;\n name = \"MCP Server\";\n version = \"1.0.0\";\n settings?: ServerOptions;\n\n constructor(partial?: Partial<MCPServerConfig>) {\n if (partial) {\n Object.assign(this, partial);\n }\n }\n}\n\nexport class MCPServer extends Server<any, MCPServerEntry, MCPServerConfig> {\n protected server: McpServer;\n\n constructor(config?: MCPServerConfig) {\n super(config || new MCPServerConfig());\n this.server = new McpServer({\n name: this.config.name,\n version: this.config.version,\n ...this.config.settings,\n });\n }\n\n async serve() {\n for (const member of this.members) {\n const factory = this.getFactory(member);\n const entry = await factory(member);\n\n switch (entry.type) {\n case \"tool\":\n this.server.tool(entry.name, entry.description, entry.paramsSchema, entry.callback);\n break;\n case \"prompt\":\n if (\"argsSchema\" in entry) {\n this.server.prompt(entry.name, entry.description, entry.argsSchema, entry.callback);\n } else {\n this.server.prompt(entry.name, entry.description, entry.callback);\n }\n break;\n case \"resource\":\n if (\"uri\" in entry) {\n this.server.resource(entry.name, entry.uri, entry.callback);\n } else {\n this.server.resource(entry.name, entry.template, entry.callback);\n }\n break;\n default:\n throw new ValueError(\"Input type is not supported by this server.\");\n }\n }\n\n if (this.config.transport === \"sse\") {\n runServer(this.server, this.config.hostname, this.config.port);\n } else {\n await this.server.connect(new StdioServerTransport());\n }\n }\n\n getFactory(member: any) {\n const factories = (this.constructor as typeof Server).factories;\n return !factories.has(member.constructor) && member instanceof Tool && factories.has(Tool)\n ? factories.get(Tool)!\n : super.getFactory(member);\n }\n}\n\nasync function toolFactory(tool: AnyTool): Promise<MCPServerEntry> {\n const schema = await tool.inputSchema();\n if (!(schema instanceof ZodType)) {\n throw new ValueError(\"JsonSchema is not supported for MCP tools.\");\n }\n const paramsSchema = schema.shape;\n return {\n type: \"tool\",\n name: tool.name,\n description: tool.description,\n paramsSchema: paramsSchema,\n callback: async (...args: Parameters<typeof tool.run>) => {\n const result = await tool.run(...args);\n return {\n content: [\n {\n type: \"text\",\n text: result.getTextContent(),\n },\n ],\n };\n },\n };\n}\n\nMCPServer.registerFactory(Tool, toolFactory);\n"]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Server } from '../../../serve/server.cjs';
|
|
2
|
+
import { ServerOptions } from '@modelcontextprotocol/sdk/server/index.js';
|
|
3
|
+
import { PromptCallback, ReadResourceCallback, ResourceTemplate, ReadResourceTemplateCallback, ToolCallback, McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
4
|
+
import { ZodRawShape } from 'zod';
|
|
5
|
+
import { ToolAnnotations } from '@modelcontextprotocol/sdk/types.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Copyright 2025 © BeeAI a Series of LF Projects, LLC
|
|
9
|
+
*
|
|
10
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
11
|
+
* you may not use this file except in compliance with the License.
|
|
12
|
+
* You may obtain a copy of the License at
|
|
13
|
+
*
|
|
14
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
15
|
+
*
|
|
16
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
17
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
19
|
+
* See the License for the specific language governing permissions and
|
|
20
|
+
* limitations under the License.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
type MCPServerPrompt = {
|
|
24
|
+
type: "prompt";
|
|
25
|
+
name: string;
|
|
26
|
+
description: string;
|
|
27
|
+
callback: PromptCallback;
|
|
28
|
+
} | {
|
|
29
|
+
type: "prompt";
|
|
30
|
+
name: string;
|
|
31
|
+
description: string;
|
|
32
|
+
argsSchema: ZodRawShape;
|
|
33
|
+
callback: PromptCallback<ZodRawShape>;
|
|
34
|
+
};
|
|
35
|
+
type MCPServerResource = {
|
|
36
|
+
type: "resource";
|
|
37
|
+
name: string;
|
|
38
|
+
uri: string;
|
|
39
|
+
callback: ReadResourceCallback;
|
|
40
|
+
} | {
|
|
41
|
+
type: "resource";
|
|
42
|
+
name: string;
|
|
43
|
+
template: ResourceTemplate;
|
|
44
|
+
callback: ReadResourceTemplateCallback;
|
|
45
|
+
};
|
|
46
|
+
interface MCPServerTool {
|
|
47
|
+
type: "tool";
|
|
48
|
+
name: string;
|
|
49
|
+
description: string;
|
|
50
|
+
paramsSchema: ZodRawShape | ToolAnnotations;
|
|
51
|
+
callback: ToolCallback<ZodRawShape>;
|
|
52
|
+
}
|
|
53
|
+
type MCPServerEntry = MCPServerPrompt | MCPServerResource | MCPServerTool;
|
|
54
|
+
declare class MCPServerConfig {
|
|
55
|
+
transport: "stdio" | "sse";
|
|
56
|
+
hostname: string;
|
|
57
|
+
port: number;
|
|
58
|
+
name: string;
|
|
59
|
+
version: string;
|
|
60
|
+
settings?: ServerOptions;
|
|
61
|
+
constructor(partial?: Partial<MCPServerConfig>);
|
|
62
|
+
}
|
|
63
|
+
declare class MCPServer extends Server<any, MCPServerEntry, MCPServerConfig> {
|
|
64
|
+
protected server: McpServer;
|
|
65
|
+
constructor(config?: MCPServerConfig);
|
|
66
|
+
serve(): Promise<void>;
|
|
67
|
+
getFactory(member: any): (input: TInput) => Promise<TInternal>;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export { MCPServer, MCPServerConfig };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Server } from '../../../serve/server.js';
|
|
2
|
+
import { ServerOptions } from '@modelcontextprotocol/sdk/server/index.js';
|
|
3
|
+
import { PromptCallback, ReadResourceCallback, ResourceTemplate, ReadResourceTemplateCallback, ToolCallback, McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
4
|
+
import { ZodRawShape } from 'zod';
|
|
5
|
+
import { ToolAnnotations } from '@modelcontextprotocol/sdk/types.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Copyright 2025 © BeeAI a Series of LF Projects, LLC
|
|
9
|
+
*
|
|
10
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
11
|
+
* you may not use this file except in compliance with the License.
|
|
12
|
+
* You may obtain a copy of the License at
|
|
13
|
+
*
|
|
14
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
15
|
+
*
|
|
16
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
17
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
19
|
+
* See the License for the specific language governing permissions and
|
|
20
|
+
* limitations under the License.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
type MCPServerPrompt = {
|
|
24
|
+
type: "prompt";
|
|
25
|
+
name: string;
|
|
26
|
+
description: string;
|
|
27
|
+
callback: PromptCallback;
|
|
28
|
+
} | {
|
|
29
|
+
type: "prompt";
|
|
30
|
+
name: string;
|
|
31
|
+
description: string;
|
|
32
|
+
argsSchema: ZodRawShape;
|
|
33
|
+
callback: PromptCallback<ZodRawShape>;
|
|
34
|
+
};
|
|
35
|
+
type MCPServerResource = {
|
|
36
|
+
type: "resource";
|
|
37
|
+
name: string;
|
|
38
|
+
uri: string;
|
|
39
|
+
callback: ReadResourceCallback;
|
|
40
|
+
} | {
|
|
41
|
+
type: "resource";
|
|
42
|
+
name: string;
|
|
43
|
+
template: ResourceTemplate;
|
|
44
|
+
callback: ReadResourceTemplateCallback;
|
|
45
|
+
};
|
|
46
|
+
interface MCPServerTool {
|
|
47
|
+
type: "tool";
|
|
48
|
+
name: string;
|
|
49
|
+
description: string;
|
|
50
|
+
paramsSchema: ZodRawShape | ToolAnnotations;
|
|
51
|
+
callback: ToolCallback<ZodRawShape>;
|
|
52
|
+
}
|
|
53
|
+
type MCPServerEntry = MCPServerPrompt | MCPServerResource | MCPServerTool;
|
|
54
|
+
declare class MCPServerConfig {
|
|
55
|
+
transport: "stdio" | "sse";
|
|
56
|
+
hostname: string;
|
|
57
|
+
port: number;
|
|
58
|
+
name: string;
|
|
59
|
+
version: string;
|
|
60
|
+
settings?: ServerOptions;
|
|
61
|
+
constructor(partial?: Partial<MCPServerConfig>);
|
|
62
|
+
}
|
|
63
|
+
declare class MCPServer extends Server<any, MCPServerEntry, MCPServerConfig> {
|
|
64
|
+
protected server: McpServer;
|
|
65
|
+
constructor(config?: MCPServerConfig);
|
|
66
|
+
serve(): Promise<void>;
|
|
67
|
+
getFactory(member: any): (input: TInput) => Promise<TInternal>;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export { MCPServer, MCPServerConfig };
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { ValueError } from '../../../errors.js';
|
|
2
|
+
import { Server } from '../../../serve/server.js';
|
|
3
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
4
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
5
|
+
import { Tool } from '../../../tools/base.js';
|
|
6
|
+
import { runServer } from './http_server.js';
|
|
7
|
+
import { ZodType } from 'zod';
|
|
8
|
+
|
|
9
|
+
var __defProp = Object.defineProperty;
|
|
10
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
11
|
+
class MCPServerConfig {
|
|
12
|
+
static {
|
|
13
|
+
__name(this, "MCPServerConfig");
|
|
14
|
+
}
|
|
15
|
+
transport = "stdio";
|
|
16
|
+
hostname = "127.0.0.1";
|
|
17
|
+
port = 3e3;
|
|
18
|
+
name = "MCP Server";
|
|
19
|
+
version = "1.0.0";
|
|
20
|
+
settings;
|
|
21
|
+
constructor(partial) {
|
|
22
|
+
if (partial) {
|
|
23
|
+
Object.assign(this, partial);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
class MCPServer extends Server {
|
|
28
|
+
static {
|
|
29
|
+
__name(this, "MCPServer");
|
|
30
|
+
}
|
|
31
|
+
server;
|
|
32
|
+
constructor(config) {
|
|
33
|
+
super(config || new MCPServerConfig());
|
|
34
|
+
this.server = new McpServer({
|
|
35
|
+
name: this.config.name,
|
|
36
|
+
version: this.config.version,
|
|
37
|
+
...this.config.settings
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
async serve() {
|
|
41
|
+
for (const member of this.members) {
|
|
42
|
+
const factory = this.getFactory(member);
|
|
43
|
+
const entry = await factory(member);
|
|
44
|
+
switch (entry.type) {
|
|
45
|
+
case "tool":
|
|
46
|
+
this.server.tool(entry.name, entry.description, entry.paramsSchema, entry.callback);
|
|
47
|
+
break;
|
|
48
|
+
case "prompt":
|
|
49
|
+
if ("argsSchema" in entry) {
|
|
50
|
+
this.server.prompt(entry.name, entry.description, entry.argsSchema, entry.callback);
|
|
51
|
+
} else {
|
|
52
|
+
this.server.prompt(entry.name, entry.description, entry.callback);
|
|
53
|
+
}
|
|
54
|
+
break;
|
|
55
|
+
case "resource":
|
|
56
|
+
if ("uri" in entry) {
|
|
57
|
+
this.server.resource(entry.name, entry.uri, entry.callback);
|
|
58
|
+
} else {
|
|
59
|
+
this.server.resource(entry.name, entry.template, entry.callback);
|
|
60
|
+
}
|
|
61
|
+
break;
|
|
62
|
+
default:
|
|
63
|
+
throw new ValueError("Input type is not supported by this server.");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (this.config.transport === "sse") {
|
|
67
|
+
runServer(this.server, this.config.hostname, this.config.port);
|
|
68
|
+
} else {
|
|
69
|
+
await this.server.connect(new StdioServerTransport());
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
getFactory(member) {
|
|
73
|
+
const factories = this.constructor.factories;
|
|
74
|
+
return !factories.has(member.constructor) && member instanceof Tool && factories.has(Tool) ? factories.get(Tool) : super.getFactory(member);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async function toolFactory(tool) {
|
|
78
|
+
const schema = await tool.inputSchema();
|
|
79
|
+
if (!(schema instanceof ZodType)) {
|
|
80
|
+
throw new ValueError("JsonSchema is not supported for MCP tools.");
|
|
81
|
+
}
|
|
82
|
+
const paramsSchema = schema.shape;
|
|
83
|
+
return {
|
|
84
|
+
type: "tool",
|
|
85
|
+
name: tool.name,
|
|
86
|
+
description: tool.description,
|
|
87
|
+
paramsSchema,
|
|
88
|
+
callback: /* @__PURE__ */ __name(async (...args) => {
|
|
89
|
+
const result = await tool.run(...args);
|
|
90
|
+
return {
|
|
91
|
+
content: [
|
|
92
|
+
{
|
|
93
|
+
type: "text",
|
|
94
|
+
text: result.getTextContent()
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
};
|
|
98
|
+
}, "callback")
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
__name(toolFactory, "toolFactory");
|
|
102
|
+
MCPServer.registerFactory(Tool, toolFactory);
|
|
103
|
+
|
|
104
|
+
export { MCPServer, MCPServerConfig };
|
|
105
|
+
//# sourceMappingURL=server.js.map
|
|
106
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["server.ts"],"names":["MCPServerConfig","transport","hostname","port","name","version","settings","constructor","partial","Object","assign","MCPServer","Server","server","config","McpServer","serve","member","members","factory","getFactory","entry","type","tool","description","paramsSchema","callback","prompt","argsSchema","resource","uri","template","ValueError","runServer","connect","StdioServerTransport","factories","has","Tool","get","toolFactory","schema","inputSchema","ZodType","shape","args","result","run","content","text","getTextContent","registerFactory"],"mappings":"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","file":"server.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\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 { ValueError } from \"@/errors.js\";\nimport { Server } from \"@/serve/server.js\";\nimport { ServerOptions } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport {\n McpServer,\n PromptCallback,\n ReadResourceCallback,\n ReadResourceTemplateCallback,\n ResourceTemplate,\n ToolCallback,\n} from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { AnyTool, Tool } from \"@/tools/base.js\";\nimport { runServer } from \"./http_server.js\";\nimport { ZodRawShape, ZodType } from \"zod\";\nimport { ToolAnnotations } from \"@modelcontextprotocol/sdk/types.js\";\n\ntype MCPServerPrompt =\n | {\n type: \"prompt\";\n name: string;\n description: string;\n callback: PromptCallback;\n }\n | {\n type: \"prompt\";\n name: string;\n description: string;\n argsSchema: ZodRawShape;\n callback: PromptCallback<ZodRawShape>;\n };\n\ntype MCPServerResource =\n | {\n type: \"resource\";\n name: string;\n uri: string;\n callback: ReadResourceCallback;\n }\n | {\n type: \"resource\";\n name: string;\n template: ResourceTemplate;\n callback: ReadResourceTemplateCallback;\n };\n\ninterface MCPServerTool {\n type: \"tool\";\n name: string;\n description: string;\n paramsSchema: ZodRawShape | ToolAnnotations;\n callback: ToolCallback<ZodRawShape>;\n}\n\ntype MCPServerEntry = MCPServerPrompt | MCPServerResource | MCPServerTool;\n\n// Configuration for the MCPServer.\nexport class MCPServerConfig {\n transport: \"stdio\" | \"sse\" = \"stdio\";\n hostname = \"127.0.0.1\";\n port = 3000;\n name = \"MCP Server\";\n version = \"1.0.0\";\n settings?: ServerOptions;\n\n constructor(partial?: Partial<MCPServerConfig>) {\n if (partial) {\n Object.assign(this, partial);\n }\n }\n}\n\nexport class MCPServer extends Server<any, MCPServerEntry, MCPServerConfig> {\n protected server: McpServer;\n\n constructor(config?: MCPServerConfig) {\n super(config || new MCPServerConfig());\n this.server = new McpServer({\n name: this.config.name,\n version: this.config.version,\n ...this.config.settings,\n });\n }\n\n async serve() {\n for (const member of this.members) {\n const factory = this.getFactory(member);\n const entry = await factory(member);\n\n switch (entry.type) {\n case \"tool\":\n this.server.tool(entry.name, entry.description, entry.paramsSchema, entry.callback);\n break;\n case \"prompt\":\n if (\"argsSchema\" in entry) {\n this.server.prompt(entry.name, entry.description, entry.argsSchema, entry.callback);\n } else {\n this.server.prompt(entry.name, entry.description, entry.callback);\n }\n break;\n case \"resource\":\n if (\"uri\" in entry) {\n this.server.resource(entry.name, entry.uri, entry.callback);\n } else {\n this.server.resource(entry.name, entry.template, entry.callback);\n }\n break;\n default:\n throw new ValueError(\"Input type is not supported by this server.\");\n }\n }\n\n if (this.config.transport === \"sse\") {\n runServer(this.server, this.config.hostname, this.config.port);\n } else {\n await this.server.connect(new StdioServerTransport());\n }\n }\n\n getFactory(member: any) {\n const factories = (this.constructor as typeof Server).factories;\n return !factories.has(member.constructor) && member instanceof Tool && factories.has(Tool)\n ? factories.get(Tool)!\n : super.getFactory(member);\n }\n}\n\nasync function toolFactory(tool: AnyTool): Promise<MCPServerEntry> {\n const schema = await tool.inputSchema();\n if (!(schema instanceof ZodType)) {\n throw new ValueError(\"JsonSchema is not supported for MCP tools.\");\n }\n const paramsSchema = schema.shape;\n return {\n type: \"tool\",\n name: tool.name,\n description: tool.description,\n paramsSchema: paramsSchema,\n callback: async (...args: Parameters<typeof tool.run>) => {\n const result = await tool.run(...args);\n return {\n content: [\n {\n type: \"text\",\n text: result.getTextContent(),\n },\n ],\n };\n },\n };\n}\n\nMCPServer.registerFactory(Tool, toolFactory);\n"]}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var env_cjs = require('../../../internals/env.cjs');
|
|
4
4
|
var ollamaAiProvider = require('ollama-ai-provider');
|
|
5
5
|
var client_cjs = require('../../../backend/client.cjs');
|
|
6
|
+
var utils_cjs = require('../../vercel/backend/utils.cjs');
|
|
6
7
|
|
|
7
8
|
var __defProp = Object.defineProperty;
|
|
8
9
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
@@ -13,7 +14,8 @@ class OllamaClient extends client_cjs.BackendClient {
|
|
|
13
14
|
create() {
|
|
14
15
|
return ollamaAiProvider.createOllama({
|
|
15
16
|
...this.settings ?? {},
|
|
16
|
-
baseURL: this.settings?.baseURL ?? env_cjs.getEnv("OLLAMA_BASE_URL")
|
|
17
|
+
baseURL: this.settings?.baseURL ?? env_cjs.getEnv("OLLAMA_BASE_URL"),
|
|
18
|
+
fetch: utils_cjs.vercelFetcher(this.settings?.fetch)
|
|
17
19
|
});
|
|
18
20
|
}
|
|
19
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["client.ts"],"names":["OllamaClient","BackendClient","create","createOllama","settings","baseURL","getEnv"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["client.ts"],"names":["OllamaClient","BackendClient","create","createOllama","settings","baseURL","getEnv","fetch","vercelFetcher"],"mappings":";;;;;;;;;AAuBO,MAAMA,qBAAqBC,wBAAAA,CAAAA;EAvBlC;;;EAwBYC,MAAyB,GAAA;AACjC,IAAA,OAAOC,6BAAa,CAAA;MAClB,GAAI,IAAA,CAAKC,YAAY,EAAC;AACtBC,MAAAA,OAAAA,EAAS,IAAKD,CAAAA,QAAAA,EAAUC,OAAWC,IAAAA,cAAAA,CAAO,iBAAA,CAAA;MAC1CC,KAAOC,EAAAA,uBAAAA,CAAc,IAAKJ,CAAAA,QAAAA,EAAUG,KAAAA;KACtC,CAAA;AACF;AACF","file":"client.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\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 { getEnv } from \"@/internals/env.js\";\nimport { createOllama, OllamaProvider, OllamaProviderSettings } from \"ollama-ai-provider\";\nimport { BackendClient } from \"@/backend/client.js\";\nimport { vercelFetcher } from \"@/adapters/vercel/backend/utils.js\";\n\nexport type OllamaClientSettings = OllamaProviderSettings;\n\nexport class OllamaClient extends BackendClient<OllamaClientSettings, OllamaProvider> {\n protected create(): OllamaProvider {\n return createOllama({\n ...(this.settings ?? {}),\n baseURL: this.settings?.baseURL ?? getEnv(\"OLLAMA_BASE_URL\"),\n fetch: vercelFetcher(this.settings?.fetch),\n });\n }\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getEnv } from '../../../internals/env.js';
|
|
2
2
|
import { createOllama } from 'ollama-ai-provider';
|
|
3
3
|
import { BackendClient } from '../../../backend/client.js';
|
|
4
|
+
import { vercelFetcher } from '../../vercel/backend/utils.js';
|
|
4
5
|
|
|
5
6
|
var __defProp = Object.defineProperty;
|
|
6
7
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
@@ -11,7 +12,8 @@ class OllamaClient extends BackendClient {
|
|
|
11
12
|
create() {
|
|
12
13
|
return createOllama({
|
|
13
14
|
...this.settings ?? {},
|
|
14
|
-
baseURL: this.settings?.baseURL ?? getEnv("OLLAMA_BASE_URL")
|
|
15
|
+
baseURL: this.settings?.baseURL ?? getEnv("OLLAMA_BASE_URL"),
|
|
16
|
+
fetch: vercelFetcher(this.settings?.fetch)
|
|
15
17
|
});
|
|
16
18
|
}
|
|
17
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["client.ts"],"names":["OllamaClient","BackendClient","create","createOllama","settings","baseURL","getEnv"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["client.ts"],"names":["OllamaClient","BackendClient","create","createOllama","settings","baseURL","getEnv","fetch","vercelFetcher"],"mappings":";;;;;;;AAuBO,MAAMA,qBAAqBC,aAAAA,CAAAA;EAvBlC;;;EAwBYC,MAAyB,GAAA;AACjC,IAAA,OAAOC,YAAa,CAAA;MAClB,GAAI,IAAA,CAAKC,YAAY,EAAC;AACtBC,MAAAA,OAAAA,EAAS,IAAKD,CAAAA,QAAAA,EAAUC,OAAWC,IAAAA,MAAAA,CAAO,iBAAA,CAAA;MAC1CC,KAAOC,EAAAA,aAAAA,CAAc,IAAKJ,CAAAA,QAAAA,EAAUG,KAAAA;KACtC,CAAA;AACF;AACF","file":"client.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\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 { getEnv } from \"@/internals/env.js\";\nimport { createOllama, OllamaProvider, OllamaProviderSettings } from \"ollama-ai-provider\";\nimport { BackendClient } from \"@/backend/client.js\";\nimport { vercelFetcher } from \"@/adapters/vercel/backend/utils.js\";\n\nexport type OllamaClientSettings = OllamaProviderSettings;\n\nexport class OllamaClient extends BackendClient<OllamaClientSettings, OllamaProvider> {\n protected create(): OllamaProvider {\n return createOllama({\n ...(this.settings ?? {}),\n baseURL: this.settings?.baseURL ?? getEnv(\"OLLAMA_BASE_URL\"),\n fetch: vercelFetcher(this.settings?.fetch),\n });\n }\n}\n"]}
|
|
@@ -4,6 +4,7 @@ var openai = require('@ai-sdk/openai');
|
|
|
4
4
|
var env_cjs = require('../../../internals/env.cjs');
|
|
5
5
|
var zod = require('zod');
|
|
6
6
|
var client_cjs = require('../../../backend/client.cjs');
|
|
7
|
+
var utils_cjs = require('../../vercel/backend/utils.cjs');
|
|
7
8
|
|
|
8
9
|
var __defProp = Object.defineProperty;
|
|
9
10
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
@@ -30,7 +31,8 @@ class OpenAIClient extends client_cjs.BackendClient {
|
|
|
30
31
|
headers: {
|
|
31
32
|
...extraHeaders,
|
|
32
33
|
...this.settings?.headers
|
|
33
|
-
}
|
|
34
|
+
},
|
|
35
|
+
fetch: utils_cjs.vercelFetcher(this.settings?.fetch)
|
|
34
36
|
});
|
|
35
37
|
}
|
|
36
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["client.ts"],"names":["OpenAIClient","BackendClient","create","extraHeaders","parseEnv","z","preprocess","value","Object","fromEntries","String","split","filter","pair","includes","map","record","string","baseURL","settings","getEnv","compatibility","createOpenAI","apiKey","headers"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["client.ts"],"names":["OpenAIClient","BackendClient","create","extraHeaders","parseEnv","z","preprocess","value","Object","fromEntries","String","split","filter","pair","includes","map","record","string","baseURL","settings","getEnv","compatibility","createOpenAI","apiKey","headers","fetch","vercelFetcher"],"mappings":";;;;;;;;;;AAwBO,MAAMA,qBAAqBC,wBAAAA,CAAAA;EAxBlC;;;EAyBYC,MAAyB,GAAA;AACjC,IAAA,MAAMC,eAAeC,gBACnB,CAAA,oBAAA,EACAC,KAAEC,CAAAA,UAAAA,CAAW,CAACC,KAAAA,KAAAA;AACZ,MAAOC,OAAAA,MAAAA,CAAOC,WACZC,CAAAA,MAAAA,CAAOH,KAAS,IAAA,EAAA,EACbI,KAAM,CAAA,GAAA,CACNC,CAAAA,MAAAA,CAAO,CAACC,IAAAA,KAASA,KAAKC,QAAS,CAAA,GAAA,CAAA,CAAA,CAC/BC,GAAI,CAAA,CAACF,SAASA,IAAKF,CAAAA,KAAAA,CAAM,GAAA,CAAA,CAAA,CAAA;AAEhC,KAAA,EAAGN,MAAEW,MAAOX,CAAAA,KAAAA,CAAEY,MAAM,EAAA,CAAA,CAAA,CAAA;AAGtB,IAAA,MAAMC,OAAU,GAAA,IAAA,CAAKC,QAAUD,EAAAA,OAAAA,IAAWE,eAAO,qBAAA,CAAA;AACjD,IAAA,IAAIC,aACF,GAAA,IAAA,CAAKF,QAAUE,EAAAA,aAAAA,IAAiBD,eAAO,2BAAA,CAAA;AACzC,IAAIF,IAAAA,OAAAA,IAAW,CAACG,aAAe,EAAA;AAC7BA,MAAgB,aAAA,GAAA,YAAA;KACP,MAAA,IAAA,CAACH,OAAW,IAAA,CAACG,aAAe,EAAA;AACrCA,MAAgB,aAAA,GAAA,QAAA;AAClB;AAEA,IAAA,OAAOC,mBAAa,CAAA;AAClB,MAAA,GAAG,IAAKH,CAAAA,QAAAA;AACRE,MAAAA,aAAAA;AACAE,MAAAA,MAAAA,EAAQ,IAAKJ,CAAAA,QAAAA,EAAUI,MAAUH,IAAAA,cAAAA,CAAO,gBAAA,CAAA;AACxCF,MAAAA,OAAAA;MACAM,OAAS,EAAA;QACP,GAAGrB,YAAAA;AACH,QAAA,GAAG,KAAKgB,QAAUK,EAAAA;AACpB,OAAA;MACAC,KAAOC,EAAAA,uBAAAA,CAAc,IAAKP,CAAAA,QAAAA,EAAUM,KAAAA;KACtC,CAAA;AACF;AACF","file":"client.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\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 { createOpenAI, OpenAIProvider, OpenAIProviderSettings } from \"@ai-sdk/openai\";\nimport { getEnv, parseEnv } from \"@/internals/env.js\";\nimport { z } from \"zod\";\nimport { BackendClient } from \"@/backend/client.js\";\nimport { vercelFetcher } from \"@/adapters/vercel/backend/utils.js\";\n\nexport type OpenAIClientSettings = OpenAIProviderSettings;\n\nexport class OpenAIClient extends BackendClient<OpenAIClientSettings, OpenAIProvider> {\n protected create(): OpenAIProvider {\n const extraHeaders = parseEnv(\n \"OPENAI_API_HEADERS\",\n z.preprocess((value) => {\n return Object.fromEntries(\n String(value || \"\")\n .split(\",\")\n .filter((pair) => pair.includes(\"=\"))\n .map((pair) => pair.split(\"=\")),\n );\n }, z.record(z.string())),\n );\n\n const baseURL = this.settings?.baseURL || getEnv(\"OPENAI_API_ENDPOINT\");\n let compatibility: string | undefined =\n this.settings?.compatibility || getEnv(\"OPENAI_COMPATIBILITY_MODE\");\n if (baseURL && !compatibility) {\n compatibility = \"compatible\";\n } else if (!baseURL && !compatibility) {\n compatibility = \"strict\";\n }\n\n return createOpenAI({\n ...this.settings,\n compatibility: compatibility as \"strict\" | \"compatible\" | undefined,\n apiKey: this.settings?.apiKey || getEnv(\"OPENAI_API_KEY\"),\n baseURL,\n headers: {\n ...extraHeaders,\n ...this.settings?.headers,\n },\n fetch: vercelFetcher(this.settings?.fetch),\n });\n }\n}\n"]}
|
|
@@ -2,6 +2,7 @@ import { createOpenAI } from '@ai-sdk/openai';
|
|
|
2
2
|
import { parseEnv, getEnv } from '../../../internals/env.js';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { BackendClient } from '../../../backend/client.js';
|
|
5
|
+
import { vercelFetcher } from '../../vercel/backend/utils.js';
|
|
5
6
|
|
|
6
7
|
var __defProp = Object.defineProperty;
|
|
7
8
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
@@ -28,7 +29,8 @@ class OpenAIClient extends BackendClient {
|
|
|
28
29
|
headers: {
|
|
29
30
|
...extraHeaders,
|
|
30
31
|
...this.settings?.headers
|
|
31
|
-
}
|
|
32
|
+
},
|
|
33
|
+
fetch: vercelFetcher(this.settings?.fetch)
|
|
32
34
|
});
|
|
33
35
|
}
|
|
34
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["client.ts"],"names":["OpenAIClient","BackendClient","create","extraHeaders","parseEnv","z","preprocess","value","Object","fromEntries","String","split","filter","pair","includes","map","record","string","baseURL","settings","getEnv","compatibility","createOpenAI","apiKey","headers"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["client.ts"],"names":["OpenAIClient","BackendClient","create","extraHeaders","parseEnv","z","preprocess","value","Object","fromEntries","String","split","filter","pair","includes","map","record","string","baseURL","settings","getEnv","compatibility","createOpenAI","apiKey","headers","fetch","vercelFetcher"],"mappings":";;;;;;;;AAwBO,MAAMA,qBAAqBC,aAAAA,CAAAA;EAxBlC;;;EAyBYC,MAAyB,GAAA;AACjC,IAAA,MAAMC,eAAeC,QACnB,CAAA,oBAAA,EACAC,CAAEC,CAAAA,UAAAA,CAAW,CAACC,KAAAA,KAAAA;AACZ,MAAOC,OAAAA,MAAAA,CAAOC,WACZC,CAAAA,MAAAA,CAAOH,KAAS,IAAA,EAAA,EACbI,KAAM,CAAA,GAAA,CACNC,CAAAA,MAAAA,CAAO,CAACC,IAAAA,KAASA,KAAKC,QAAS,CAAA,GAAA,CAAA,CAAA,CAC/BC,GAAI,CAAA,CAACF,SAASA,IAAKF,CAAAA,KAAAA,CAAM,GAAA,CAAA,CAAA,CAAA;AAEhC,KAAA,EAAGN,EAAEW,MAAOX,CAAAA,CAAAA,CAAEY,MAAM,EAAA,CAAA,CAAA,CAAA;AAGtB,IAAA,MAAMC,OAAU,GAAA,IAAA,CAAKC,QAAUD,EAAAA,OAAAA,IAAWE,OAAO,qBAAA,CAAA;AACjD,IAAA,IAAIC,aACF,GAAA,IAAA,CAAKF,QAAUE,EAAAA,aAAAA,IAAiBD,OAAO,2BAAA,CAAA;AACzC,IAAIF,IAAAA,OAAAA,IAAW,CAACG,aAAe,EAAA;AAC7BA,MAAgB,aAAA,GAAA,YAAA;KACP,MAAA,IAAA,CAACH,OAAW,IAAA,CAACG,aAAe,EAAA;AACrCA,MAAgB,aAAA,GAAA,QAAA;AAClB;AAEA,IAAA,OAAOC,YAAa,CAAA;AAClB,MAAA,GAAG,IAAKH,CAAAA,QAAAA;AACRE,MAAAA,aAAAA;AACAE,MAAAA,MAAAA,EAAQ,IAAKJ,CAAAA,QAAAA,EAAUI,MAAUH,IAAAA,MAAAA,CAAO,gBAAA,CAAA;AACxCF,MAAAA,OAAAA;MACAM,OAAS,EAAA;QACP,GAAGrB,YAAAA;AACH,QAAA,GAAG,KAAKgB,QAAUK,EAAAA;AACpB,OAAA;MACAC,KAAOC,EAAAA,aAAAA,CAAc,IAAKP,CAAAA,QAAAA,EAAUM,KAAAA;KACtC,CAAA;AACF;AACF","file":"client.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\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 { createOpenAI, OpenAIProvider, OpenAIProviderSettings } from \"@ai-sdk/openai\";\nimport { getEnv, parseEnv } from \"@/internals/env.js\";\nimport { z } from \"zod\";\nimport { BackendClient } from \"@/backend/client.js\";\nimport { vercelFetcher } from \"@/adapters/vercel/backend/utils.js\";\n\nexport type OpenAIClientSettings = OpenAIProviderSettings;\n\nexport class OpenAIClient extends BackendClient<OpenAIClientSettings, OpenAIProvider> {\n protected create(): OpenAIProvider {\n const extraHeaders = parseEnv(\n \"OPENAI_API_HEADERS\",\n z.preprocess((value) => {\n return Object.fromEntries(\n String(value || \"\")\n .split(\",\")\n .filter((pair) => pair.includes(\"=\"))\n .map((pair) => pair.split(\"=\")),\n );\n }, z.record(z.string())),\n );\n\n const baseURL = this.settings?.baseURL || getEnv(\"OPENAI_API_ENDPOINT\");\n let compatibility: string | undefined =\n this.settings?.compatibility || getEnv(\"OPENAI_COMPATIBILITY_MODE\");\n if (baseURL && !compatibility) {\n compatibility = \"compatible\";\n } else if (!baseURL && !compatibility) {\n compatibility = \"strict\";\n }\n\n return createOpenAI({\n ...this.settings,\n compatibility: compatibility as \"strict\" | \"compatible\" | undefined,\n apiKey: this.settings?.apiKey || getEnv(\"OPENAI_API_KEY\"),\n baseURL,\n headers: {\n ...extraHeaders,\n ...this.settings?.headers,\n },\n fetch: vercelFetcher(this.settings?.fetch),\n });\n }\n}\n"]}
|