@zooid/context-mcp 0.9.1 → 0.11.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/dist/bin.js +94 -2
- package/dist/bin.js.map +1 -1
- package/dist/chunk-ZY2GPHFX.js +21208 -0
- package/dist/chunk-ZY2GPHFX.js.map +1 -0
- package/dist/index.js +24 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/factory.test.ts +63 -1
- package/src/factory.ts +43 -0
- package/src/index.ts +7 -1
- package/dist/chunk-QQD76TLH.js +0 -203
- package/dist/chunk-QQD76TLH.js.map +0 -1
package/dist/bin.js
CHANGED
|
@@ -1,11 +1,103 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
|
+
JSONRPCMessageSchema,
|
|
3
4
|
buildContextMcpServer,
|
|
4
5
|
callDaemon
|
|
5
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ZY2GPHFX.js";
|
|
7
|
+
|
|
8
|
+
// ../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.29.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js
|
|
9
|
+
import process2 from "process";
|
|
10
|
+
|
|
11
|
+
// ../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.29.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js
|
|
12
|
+
var ReadBuffer = class {
|
|
13
|
+
append(chunk) {
|
|
14
|
+
this._buffer = this._buffer ? Buffer.concat([this._buffer, chunk]) : chunk;
|
|
15
|
+
}
|
|
16
|
+
readMessage() {
|
|
17
|
+
if (!this._buffer) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
const index = this._buffer.indexOf("\n");
|
|
21
|
+
if (index === -1) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
const line = this._buffer.toString("utf8", 0, index).replace(/\r$/, "");
|
|
25
|
+
this._buffer = this._buffer.subarray(index + 1);
|
|
26
|
+
return deserializeMessage(line);
|
|
27
|
+
}
|
|
28
|
+
clear() {
|
|
29
|
+
this._buffer = void 0;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
function deserializeMessage(line) {
|
|
33
|
+
return JSONRPCMessageSchema.parse(JSON.parse(line));
|
|
34
|
+
}
|
|
35
|
+
function serializeMessage(message) {
|
|
36
|
+
return JSON.stringify(message) + "\n";
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// ../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.29.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js
|
|
40
|
+
var StdioServerTransport = class {
|
|
41
|
+
constructor(_stdin = process2.stdin, _stdout = process2.stdout) {
|
|
42
|
+
this._stdin = _stdin;
|
|
43
|
+
this._stdout = _stdout;
|
|
44
|
+
this._readBuffer = new ReadBuffer();
|
|
45
|
+
this._started = false;
|
|
46
|
+
this._ondata = (chunk) => {
|
|
47
|
+
this._readBuffer.append(chunk);
|
|
48
|
+
this.processReadBuffer();
|
|
49
|
+
};
|
|
50
|
+
this._onerror = (error) => {
|
|
51
|
+
this.onerror?.(error);
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Starts listening for messages on stdin.
|
|
56
|
+
*/
|
|
57
|
+
async start() {
|
|
58
|
+
if (this._started) {
|
|
59
|
+
throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");
|
|
60
|
+
}
|
|
61
|
+
this._started = true;
|
|
62
|
+
this._stdin.on("data", this._ondata);
|
|
63
|
+
this._stdin.on("error", this._onerror);
|
|
64
|
+
}
|
|
65
|
+
processReadBuffer() {
|
|
66
|
+
while (true) {
|
|
67
|
+
try {
|
|
68
|
+
const message = this._readBuffer.readMessage();
|
|
69
|
+
if (message === null) {
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
this.onmessage?.(message);
|
|
73
|
+
} catch (error) {
|
|
74
|
+
this.onerror?.(error);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
async close() {
|
|
79
|
+
this._stdin.off("data", this._ondata);
|
|
80
|
+
this._stdin.off("error", this._onerror);
|
|
81
|
+
const remainingDataListeners = this._stdin.listenerCount("data");
|
|
82
|
+
if (remainingDataListeners === 0) {
|
|
83
|
+
this._stdin.pause();
|
|
84
|
+
}
|
|
85
|
+
this._readBuffer.clear();
|
|
86
|
+
this.onclose?.();
|
|
87
|
+
}
|
|
88
|
+
send(message) {
|
|
89
|
+
return new Promise((resolve) => {
|
|
90
|
+
const json = serializeMessage(message);
|
|
91
|
+
if (this._stdout.write(json)) {
|
|
92
|
+
resolve();
|
|
93
|
+
} else {
|
|
94
|
+
this._stdout.once("drain", resolve);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
};
|
|
6
99
|
|
|
7
100
|
// src/bin.ts
|
|
8
|
-
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
9
101
|
var spawnIdIdx = process.argv.indexOf("--spawn-id");
|
|
10
102
|
var spawnId = spawnIdIdx >= 0 ? process.argv[spawnIdIdx + 1] : void 0;
|
|
11
103
|
var sockPath = process.env.ZOOID_DAEMON_SOCK;
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/bin.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'\nimport { buildContextMcpServer } from './mcp-server.js'\nimport { callDaemon } from './daemon-socket.js'\nimport type { TransportContextProvider } from '@zooid/core'\n\nconst spawnIdIdx = process.argv.indexOf('--spawn-id')\nconst spawnId = spawnIdIdx >= 0 ? process.argv[spawnIdIdx + 1] : undefined\nconst sockPath = process.env.ZOOID_DAEMON_SOCK\nif (!spawnId || !sockPath) {\n process.stderr.write('zooid-context-mcp: --spawn-id and ZOOID_DAEMON_SOCK are required\\n')\n process.exit(2)\n}\nprocess.stderr.write(\n `zooid-context-mcp: starting (pid=${process.pid} spawnId=${spawnId} sock=${sockPath})\\n`,\n)\n\nconst remoteProvider: TransportContextProvider = {\n getRoomHistory: (_channelId, opts) =>\n callDaemon(sockPath, {\n spawnId,\n method: 'getRoomHistory',\n params: (opts ?? {}) as Record<string, unknown>,\n }) as Promise<Awaited<ReturnType<TransportContextProvider['getRoomHistory']>>>,\n getRecentThreads: (_channelId, opts) =>\n callDaemon(sockPath, {\n spawnId,\n method: 'getRecentThreads',\n params: (opts ?? {}) as Record<string, unknown>,\n }) as Promise<Awaited<ReturnType<TransportContextProvider['getRecentThreads']>>>,\n getThreadHistory: (_channelId, threadId, opts) =>\n callDaemon(sockPath, {\n spawnId,\n method: 'getThreadHistory',\n params: { ...(opts ?? {}), threadId } as Record<string, unknown>,\n }) as Promise<Awaited<ReturnType<TransportContextProvider['getThreadHistory']>>>,\n getChannelMembers: () =>\n callDaemon(sockPath, { spawnId, method: 'getChannelMembers', params: {} }) as Promise<\n Awaited<ReturnType<TransportContextProvider['getChannelMembers']>>\n >,\n getChannelInfo: () =>\n callDaemon(sockPath, { spawnId, method: 'getChannelInfo', params: {} }) as Promise<\n Awaited<ReturnType<TransportContextProvider['getChannelInfo']>>\n >,\n}\n\nconst server = buildContextMcpServer({ resolve: async () => remoteProvider })\nawait server.connect(new StdioServerTransport())\nprocess.stderr.write(`zooid-context-mcp: ready (spawnId=${spawnId})\\n`)\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.29.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/src/server/stdio.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.29.0_zod@3.25.76/node_modules/@modelcontextprotocol/sdk/src/shared/stdio.ts","../src/bin.ts"],"sourcesContent":[null,null,"#!/usr/bin/env node\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'\nimport { buildContextMcpServer } from './mcp-server.js'\nimport { callDaemon } from './daemon-socket.js'\nimport type { TransportContextProvider } from '@zooid/core'\n\nconst spawnIdIdx = process.argv.indexOf('--spawn-id')\nconst spawnId = spawnIdIdx >= 0 ? process.argv[spawnIdIdx + 1] : undefined\nconst sockPath = process.env.ZOOID_DAEMON_SOCK\nif (!spawnId || !sockPath) {\n process.stderr.write('zooid-context-mcp: --spawn-id and ZOOID_DAEMON_SOCK are required\\n')\n process.exit(2)\n}\nprocess.stderr.write(\n `zooid-context-mcp: starting (pid=${process.pid} spawnId=${spawnId} sock=${sockPath})\\n`,\n)\n\nconst remoteProvider: TransportContextProvider = {\n getRoomHistory: (_channelId, opts) =>\n callDaemon(sockPath, {\n spawnId,\n method: 'getRoomHistory',\n params: (opts ?? {}) as Record<string, unknown>,\n }) as Promise<Awaited<ReturnType<TransportContextProvider['getRoomHistory']>>>,\n getRecentThreads: (_channelId, opts) =>\n callDaemon(sockPath, {\n spawnId,\n method: 'getRecentThreads',\n params: (opts ?? {}) as Record<string, unknown>,\n }) as Promise<Awaited<ReturnType<TransportContextProvider['getRecentThreads']>>>,\n getThreadHistory: (_channelId, threadId, opts) =>\n callDaemon(sockPath, {\n spawnId,\n method: 'getThreadHistory',\n params: { ...(opts ?? {}), threadId } as Record<string, unknown>,\n }) as Promise<Awaited<ReturnType<TransportContextProvider['getThreadHistory']>>>,\n getChannelMembers: () =>\n callDaemon(sockPath, { spawnId, method: 'getChannelMembers', params: {} }) as Promise<\n Awaited<ReturnType<TransportContextProvider['getChannelMembers']>>\n >,\n getChannelInfo: () =>\n callDaemon(sockPath, { spawnId, method: 'getChannelInfo', params: {} }) as Promise<\n Awaited<ReturnType<TransportContextProvider['getChannelInfo']>>\n >,\n}\n\nconst server = buildContextMcpServer({ resolve: async () => remoteProvider })\nawait server.connect(new StdioServerTransport())\nprocess.stderr.write(`zooid-context-mcp: ready (spawnId=${spawnId})\\n`)\n"],"mappings":"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","names":["process","process"]}
|