conductor-node-mcp 12.22.0 → 12.23.1
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/README.md +34 -0
- package/filtering.d.mts +1 -1
- package/filtering.d.mts.map +1 -1
- package/filtering.d.ts +1 -1
- package/filtering.d.ts.map +1 -1
- package/filtering.js +1 -2
- package/filtering.js.map +1 -1
- package/filtering.mjs +1 -2
- package/filtering.mjs.map +1 -1
- package/headers.d.mts +4 -0
- package/headers.d.mts.map +1 -0
- package/headers.d.ts +4 -0
- package/headers.d.ts.map +1 -0
- package/headers.js +22 -0
- package/headers.js.map +1 -0
- package/headers.mjs +18 -0
- package/headers.mjs.map +1 -0
- package/http.d.mts +6 -0
- package/http.d.mts.map +1 -0
- package/http.d.ts +6 -0
- package/http.d.ts.map +1 -0
- package/http.js +93 -0
- package/http.js.map +1 -0
- package/http.mjs +85 -0
- package/http.mjs.map +1 -0
- package/index.js +12 -7
- package/index.js.map +1 -1
- package/index.mjs +13 -8
- package/index.mjs.map +1 -1
- package/options.d.mts +3 -0
- package/options.d.mts.map +1 -1
- package/options.d.ts +3 -0
- package/options.d.ts.map +1 -1
- package/options.js +18 -0
- package/options.js.map +1 -1
- package/options.mjs +18 -0
- package/options.mjs.map +1 -1
- package/package.json +4 -3
- package/server.d.mts +1 -0
- package/server.d.mts.map +1 -1
- package/server.d.ts +1 -0
- package/server.d.ts.map +1 -1
- package/server.js +6 -4
- package/server.js.map +1 -1
- package/server.mjs +4 -3
- package/server.mjs.map +1 -1
- package/src/filtering.ts +1 -2
- package/src/headers.ts +24 -0
- package/src/http.ts +99 -0
- package/src/index.ts +15 -11
- package/src/options.ts +22 -0
- package/src/server.ts +11 -8
- package/src/stdio.ts +14 -0
- package/src/tools/end-users/passthrough-end-users.ts +2 -1
- package/src/tools/index.ts +4 -0
- package/src/tools/qbd/deleted-list-objects/list-qbd-deleted-list-objects.ts +105 -0
- package/src/tools/qbd/deleted-transactions/list-qbd-deleted-transactions.ts +94 -0
- package/src/tools/qbd/transactions/list-qbd-transactions.ts +2 -2
- package/stdio.d.mts +4 -0
- package/stdio.d.mts.map +1 -0
- package/stdio.d.ts +4 -0
- package/stdio.d.ts.map +1 -0
- package/stdio.js +14 -0
- package/stdio.js.map +1 -0
- package/stdio.mjs +10 -0
- package/stdio.mjs.map +1 -0
- package/tools/end-users/passthrough-end-users.d.mts.map +1 -1
- package/tools/end-users/passthrough-end-users.d.ts.map +1 -1
- package/tools/end-users/passthrough-end-users.js +2 -1
- package/tools/end-users/passthrough-end-users.js.map +1 -1
- package/tools/end-users/passthrough-end-users.mjs +2 -1
- package/tools/end-users/passthrough-end-users.mjs.map +1 -1
- package/tools/index.d.mts.map +1 -1
- package/tools/index.d.ts.map +1 -1
- package/tools/index.js +4 -0
- package/tools/index.js.map +1 -1
- package/tools/index.mjs +4 -0
- package/tools/index.mjs.map +1 -1
- package/tools/qbd/deleted-list-objects/list-qbd-deleted-list-objects.d.mts +45 -0
- package/tools/qbd/deleted-list-objects/list-qbd-deleted-list-objects.d.mts.map +1 -0
- package/tools/qbd/deleted-list-objects/list-qbd-deleted-list-objects.d.ts +45 -0
- package/tools/qbd/deleted-list-objects/list-qbd-deleted-list-objects.d.ts.map +1 -0
- package/tools/qbd/deleted-list-objects/list-qbd-deleted-list-objects.js +97 -0
- package/tools/qbd/deleted-list-objects/list-qbd-deleted-list-objects.js.map +1 -0
- package/tools/qbd/deleted-list-objects/list-qbd-deleted-list-objects.mjs +93 -0
- package/tools/qbd/deleted-list-objects/list-qbd-deleted-list-objects.mjs.map +1 -0
- package/tools/qbd/deleted-transactions/list-qbd-deleted-transactions.d.mts +45 -0
- package/tools/qbd/deleted-transactions/list-qbd-deleted-transactions.d.mts.map +1 -0
- package/tools/qbd/deleted-transactions/list-qbd-deleted-transactions.d.ts +45 -0
- package/tools/qbd/deleted-transactions/list-qbd-deleted-transactions.d.ts.map +1 -0
- package/tools/qbd/deleted-transactions/list-qbd-deleted-transactions.js +84 -0
- package/tools/qbd/deleted-transactions/list-qbd-deleted-transactions.js.map +1 -0
- package/tools/qbd/deleted-transactions/list-qbd-deleted-transactions.mjs +80 -0
- package/tools/qbd/deleted-transactions/list-qbd-deleted-transactions.mjs.map +1 -0
- package/tools/qbd/transactions/list-qbd-transactions.js +2 -2
- package/tools/qbd/transactions/list-qbd-transactions.js.map +1 -1
- package/tools/qbd/transactions/list-qbd-transactions.mjs +2 -2
- package/tools/qbd/transactions/list-qbd-transactions.mjs.map +1 -1
package/README.md
CHANGED
|
@@ -124,6 +124,32 @@ over time, you can manually enable or disable certain capabilities:
|
|
|
124
124
|
--resource=cards,accounts --operation=read --tag=kyc --no-tool=create_cards
|
|
125
125
|
```
|
|
126
126
|
|
|
127
|
+
## Running remotely
|
|
128
|
+
|
|
129
|
+
Launching the client with `--transport=http` launches the server as a remote server using Streamable HTTP transport. The `--port` setting can choose the port it will run on, and the `--socket` setting allows it to run on a Unix socket.
|
|
130
|
+
|
|
131
|
+
Authorization can be provided via the `Authorization` header using the Bearer scheme.
|
|
132
|
+
|
|
133
|
+
Additionally, authorization can be provided via the following headers:
|
|
134
|
+
| Header | Equivalent client option | Security scheme |
|
|
135
|
+
| ------------------------ | ------------------------ | --------------- |
|
|
136
|
+
| `x-conductor-secret-key` | `apiKey` | BearerAuth |
|
|
137
|
+
|
|
138
|
+
A configuration JSON for this server might look like this:
|
|
139
|
+
|
|
140
|
+
```json
|
|
141
|
+
{
|
|
142
|
+
"mcpServers": {
|
|
143
|
+
"conductor_node_api": {
|
|
144
|
+
"url": "http://localhost:3000", # or wherever the server is hosted
|
|
145
|
+
"headers": {
|
|
146
|
+
"Authorization": "Bearer <auth value>"
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
127
153
|
## Importing the tools and server individually
|
|
128
154
|
|
|
129
155
|
```js
|
|
@@ -286,6 +312,14 @@ The following tools are available in this MCP server.
|
|
|
286
312
|
- `retrieve_qbd_date_driven_terms` (`read`): Retrieves a date-driven term by ID.
|
|
287
313
|
- `list_qbd_date_driven_terms` (`read`): Returns a list of date-driven terms. NOTE: QuickBooks Desktop does not support pagination for date-driven terms; hence, there is no `cursor` parameter. Users typically have few date-driven terms.
|
|
288
314
|
|
|
315
|
+
### Resource `qbd.deleted_list_objects`:
|
|
316
|
+
|
|
317
|
+
- `list_qbd_deleted_list_objects` (`read`): Lists deleted non-transaction list-objects (e.g., customers, vendors, employees, items) from the last 90 days. Results are grouped by list-object type and ordered by actual delete time (ascending). For deleted transactions (e.g., invoices, bills, estimates), see the deleted-transactions endpoint.
|
|
318
|
+
|
|
319
|
+
### Resource `qbd.deleted_transactions`:
|
|
320
|
+
|
|
321
|
+
- `list_qbd_deleted_transactions` (`read`): Lists deleted transactions of the specified type(s) (e.g., invoice, bill, estimate) in the last 90 days. Results are grouped by transaction type and ordered by actual delete time (ascending). NOTE: For deleted non-transaction list-objects (e.g., customer, vendor, employee), see the deleted-list-objects endpoint.
|
|
322
|
+
|
|
289
323
|
### Resource `qbd.discount_items`:
|
|
290
324
|
|
|
291
325
|
- `create_qbd_discount_items` (`write`): Creates a new discount item.
|
package/filtering.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function maybeFilter(
|
|
1
|
+
export declare function maybeFilter(jqFilter: unknown | undefined, response: any): Promise<any>;
|
|
2
2
|
//# sourceMappingURL=filtering.d.mts.map
|
package/filtering.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filtering.d.mts","sourceRoot":"","sources":["src/filtering.ts"],"names":[],"mappings":"AAGA,wBAAsB,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"filtering.d.mts","sourceRoot":"","sources":["src/filtering.ts"],"names":[],"mappings":"AAGA,wBAAsB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAM5F"}
|
package/filtering.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function maybeFilter(
|
|
1
|
+
export declare function maybeFilter(jqFilter: unknown | undefined, response: any): Promise<any>;
|
|
2
2
|
//# sourceMappingURL=filtering.d.ts.map
|
package/filtering.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filtering.d.ts","sourceRoot":"","sources":["src/filtering.ts"],"names":[],"mappings":"AAGA,wBAAsB,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"filtering.d.ts","sourceRoot":"","sources":["src/filtering.ts"],"names":[],"mappings":"AAGA,wBAAsB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAM5F"}
|
package/filtering.js
CHANGED
|
@@ -6,8 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.maybeFilter = maybeFilter;
|
|
7
7
|
// @ts-nocheck
|
|
8
8
|
const jq_web_1 = __importDefault(require("jq-web"));
|
|
9
|
-
async function maybeFilter(
|
|
10
|
-
const jqFilter = args?.['jq_filter'];
|
|
9
|
+
async function maybeFilter(jqFilter, response) {
|
|
11
10
|
if (jqFilter && typeof jqFilter === 'string') {
|
|
12
11
|
return await jq(response, jqFilter);
|
|
13
12
|
}
|
package/filtering.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filtering.js","sourceRoot":"","sources":["src/filtering.ts"],"names":[],"mappings":";;;;;AAGA,
|
|
1
|
+
{"version":3,"file":"filtering.js","sourceRoot":"","sources":["src/filtering.ts"],"names":[],"mappings":";;;;;AAGA,kCAMC;AATD,cAAc;AACd,oDAA4B;AAErB,KAAK,UAAU,WAAW,CAAC,QAA6B,EAAE,QAAa;IAC5E,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC7C,OAAO,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,EAAE,CAAC,IAAS,EAAE,QAAgB;IAC3C,OAAO,CAAC,MAAM,gBAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC"}
|
package/filtering.mjs
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import initJq from 'jq-web';
|
|
2
|
-
export async function maybeFilter(
|
|
3
|
-
const jqFilter = args?.['jq_filter'];
|
|
2
|
+
export async function maybeFilter(jqFilter, response) {
|
|
4
3
|
if (jqFilter && typeof jqFilter === 'string') {
|
|
5
4
|
return await jq(response, jqFilter);
|
|
6
5
|
}
|
package/filtering.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filtering.mjs","sourceRoot":"","sources":["src/filtering.ts"],"names":[],"mappings":"OACO,MAAM,MAAM,QAAQ;AAE3B,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"filtering.mjs","sourceRoot":"","sources":["src/filtering.ts"],"names":[],"mappings":"OACO,MAAM,MAAM,QAAQ;AAE3B,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAA6B,EAAE,QAAa;IAC5E,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC7C,OAAO,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,EAAE,CAAC,IAAS,EAAE,QAAgB;IAC3C,OAAO,CAAC,MAAM,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC"}
|
package/headers.d.mts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headers.d.mts","sourceRoot":"","sources":["src/headers.ts"],"names":[],"mappings":"OAEO,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB;OAElD,EAAE,eAAe,EAAE,MAAM,WAAW;AAE3C,eAAO,MAAM,gBAAgB,GAAI,KAAK,eAAe,KAAG,OAAO,CAAC,aAAa,CAiB5E,CAAC"}
|
package/headers.d.ts
ADDED
package/headers.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headers.d.ts","sourceRoot":"","sources":["src/headers.ts"],"names":[],"mappings":"OAEO,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB;OAElD,EAAE,eAAe,EAAE,MAAM,WAAW;AAE3C,eAAO,MAAM,gBAAgB,GAAI,KAAK,eAAe,KAAG,OAAO,CAAC,aAAa,CAiB5E,CAAC"}
|
package/headers.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.parseAuthHeaders = void 0;
|
|
5
|
+
const parseAuthHeaders = (req) => {
|
|
6
|
+
if (req.headers.authorization) {
|
|
7
|
+
const scheme = req.headers.authorization.split(' ')[0];
|
|
8
|
+
const value = req.headers.authorization.slice(scheme.length + 1);
|
|
9
|
+
switch (scheme) {
|
|
10
|
+
case 'Bearer':
|
|
11
|
+
return { apiKey: req.headers.authorization.slice('Bearer '.length) };
|
|
12
|
+
default:
|
|
13
|
+
throw new Error(`Unsupported authorization scheme`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
const apiKey = req.headers['x-conductor-secret-key'] instanceof Array ?
|
|
17
|
+
req.headers['x-conductor-secret-key'][0]
|
|
18
|
+
: req.headers['x-conductor-secret-key'];
|
|
19
|
+
return { apiKey };
|
|
20
|
+
};
|
|
21
|
+
exports.parseAuthHeaders = parseAuthHeaders;
|
|
22
|
+
//# sourceMappingURL=headers.js.map
|
package/headers.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headers.js","sourceRoot":"","sources":["src/headers.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAM/E,MAAM,gBAAgB,GAAG,CAAC,GAAoB,EAA0B,EAAE;IAC/E,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QACxD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjE,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,QAAQ;gBACX,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE;gBACE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GACV,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC,YAAY,KAAK,CAAC,CAAC;QACtD,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC1C,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC,CAAC;AAjBW,QAAA,gBAAgB,oBAiB3B"}
|
package/headers.mjs
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
export const parseAuthHeaders = (req) => {
|
|
3
|
+
if (req.headers.authorization) {
|
|
4
|
+
const scheme = req.headers.authorization.split(' ')[0];
|
|
5
|
+
const value = req.headers.authorization.slice(scheme.length + 1);
|
|
6
|
+
switch (scheme) {
|
|
7
|
+
case 'Bearer':
|
|
8
|
+
return { apiKey: req.headers.authorization.slice('Bearer '.length) };
|
|
9
|
+
default:
|
|
10
|
+
throw new Error(`Unsupported authorization scheme`);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
const apiKey = req.headers['x-conductor-secret-key'] instanceof Array ?
|
|
14
|
+
req.headers['x-conductor-secret-key'][0]
|
|
15
|
+
: req.headers['x-conductor-secret-key'];
|
|
16
|
+
return { apiKey };
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=headers.mjs.map
|
package/headers.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headers.mjs","sourceRoot":"","sources":["src/headers.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAMtF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAoB,EAA0B,EAAE;IAC/E,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;QACxD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjE,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,QAAQ;gBACX,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACvE;gBACE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GACV,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC,YAAY,KAAK,CAAC,CAAC;QACtD,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC1C,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC,CAAC"}
|
package/http.d.mts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import express from 'express';
|
|
2
|
+
import { McpOptions } from "./options.mjs";
|
|
3
|
+
import { Endpoint } from "./tools.mjs";
|
|
4
|
+
export declare const streamableHTTPApp: (options: McpOptions) => express.Express;
|
|
5
|
+
export declare const launchStreamableHTTPServer: (options: McpOptions, endpoints: Endpoint[], port: number | string | undefined) => Promise<void>;
|
|
6
|
+
//# sourceMappingURL=http.d.mts.map
|
package/http.d.mts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.mts","sourceRoot":"","sources":["src/http.ts"],"names":[],"mappings":"OAKO,OAAO,MAAM,SAAS;OACtB,EAAE,UAAU,EAAE;OAGd,EAAE,QAAQ,EAAE;AA8DnB,eAAO,MAAM,iBAAiB,GAAI,SAAS,UAAU,KAAG,OAAO,CAAC,OAS/D,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,SAAS,UAAU,EACnB,WAAW,QAAQ,EAAE,EACrB,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,kBAalC,CAAC"}
|
package/http.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import express from 'express';
|
|
2
|
+
import { McpOptions } from "./options.js";
|
|
3
|
+
import { Endpoint } from "./tools.js";
|
|
4
|
+
export declare const streamableHTTPApp: (options: McpOptions) => express.Express;
|
|
5
|
+
export declare const launchStreamableHTTPServer: (options: McpOptions, endpoints: Endpoint[], port: number | string | undefined) => Promise<void>;
|
|
6
|
+
//# sourceMappingURL=http.d.ts.map
|
package/http.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["src/http.ts"],"names":[],"mappings":"OAKO,OAAO,MAAM,SAAS;OACtB,EAAE,UAAU,EAAE;OAGd,EAAE,QAAQ,EAAE;AA8DnB,eAAO,MAAM,iBAAiB,GAAI,SAAS,UAAU,KAAG,OAAO,CAAC,OAS/D,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,SAAS,UAAU,EACnB,WAAW,QAAQ,EAAE,EACrB,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,kBAalC,CAAC"}
|
package/http.js
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.launchStreamableHTTPServer = exports.streamableHTTPApp = void 0;
|
|
8
|
+
const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
|
|
9
|
+
const express_1 = __importDefault(require("express"));
|
|
10
|
+
const server_1 = require("./server.js");
|
|
11
|
+
const headers_1 = require("./headers.js");
|
|
12
|
+
const newServer = (mcpOptions, req, res) => {
|
|
13
|
+
const server = (0, server_1.newMcpServer)();
|
|
14
|
+
try {
|
|
15
|
+
const authOptions = (0, headers_1.parseAuthHeaders)(req);
|
|
16
|
+
(0, server_1.initMcpServer)({
|
|
17
|
+
server: server,
|
|
18
|
+
clientOptions: {
|
|
19
|
+
...authOptions,
|
|
20
|
+
defaultHeaders: {
|
|
21
|
+
'X-Stainless-MCP': 'true',
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
mcpOptions,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
res.status(401).json({
|
|
29
|
+
jsonrpc: '2.0',
|
|
30
|
+
error: {
|
|
31
|
+
code: -32000,
|
|
32
|
+
message: 'Unauthorized',
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
return server;
|
|
38
|
+
};
|
|
39
|
+
const post = (defaultOptions) => async (req, res) => {
|
|
40
|
+
const server = newServer(defaultOptions, req, res);
|
|
41
|
+
// If we return null, we already set the authorization error.
|
|
42
|
+
if (server === null)
|
|
43
|
+
return;
|
|
44
|
+
const transport = new streamableHttp_js_1.StreamableHTTPServerTransport({
|
|
45
|
+
// Stateless server
|
|
46
|
+
sessionIdGenerator: undefined,
|
|
47
|
+
});
|
|
48
|
+
await server.connect(transport);
|
|
49
|
+
await transport.handleRequest(req, res, req.body);
|
|
50
|
+
};
|
|
51
|
+
const get = async (req, res) => {
|
|
52
|
+
res.status(405).json({
|
|
53
|
+
jsonrpc: '2.0',
|
|
54
|
+
error: {
|
|
55
|
+
code: -32000,
|
|
56
|
+
message: 'Method not supported',
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
const del = async (req, res) => {
|
|
61
|
+
res.status(405).json({
|
|
62
|
+
jsonrpc: '2.0',
|
|
63
|
+
error: {
|
|
64
|
+
code: -32000,
|
|
65
|
+
message: 'Method not supported',
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
const streamableHTTPApp = (options) => {
|
|
70
|
+
const app = (0, express_1.default)();
|
|
71
|
+
app.use(express_1.default.json());
|
|
72
|
+
app.get('/', get);
|
|
73
|
+
app.post('/', post(options));
|
|
74
|
+
app.delete('/', del);
|
|
75
|
+
return app;
|
|
76
|
+
};
|
|
77
|
+
exports.streamableHTTPApp = streamableHTTPApp;
|
|
78
|
+
const launchStreamableHTTPServer = async (options, endpoints, port) => {
|
|
79
|
+
const app = (0, exports.streamableHTTPApp)(options);
|
|
80
|
+
const server = app.listen(port);
|
|
81
|
+
const address = server.address();
|
|
82
|
+
if (typeof address === 'string') {
|
|
83
|
+
console.error(`MCP Server running on streamable HTTP at ${address}`);
|
|
84
|
+
}
|
|
85
|
+
else if (address !== null) {
|
|
86
|
+
console.error(`MCP Server running on streamable HTTP on port ${address.port}`);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
console.error(`MCP Server running on streamable HTTP on port ${port}`);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
exports.launchStreamableHTTPServer = launchStreamableHTTPServer;
|
|
93
|
+
//# sourceMappingURL=http.js.map
|
package/http.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["src/http.ts"],"names":[],"mappings":"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"}
|
package/http.mjs
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
3
|
+
import express from 'express';
|
|
4
|
+
import { initMcpServer, newMcpServer } from "./server.mjs";
|
|
5
|
+
import { parseAuthHeaders } from "./headers.mjs";
|
|
6
|
+
const newServer = (mcpOptions, req, res) => {
|
|
7
|
+
const server = newMcpServer();
|
|
8
|
+
try {
|
|
9
|
+
const authOptions = parseAuthHeaders(req);
|
|
10
|
+
initMcpServer({
|
|
11
|
+
server: server,
|
|
12
|
+
clientOptions: {
|
|
13
|
+
...authOptions,
|
|
14
|
+
defaultHeaders: {
|
|
15
|
+
'X-Stainless-MCP': 'true',
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
mcpOptions,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
res.status(401).json({
|
|
23
|
+
jsonrpc: '2.0',
|
|
24
|
+
error: {
|
|
25
|
+
code: -32000,
|
|
26
|
+
message: 'Unauthorized',
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return server;
|
|
32
|
+
};
|
|
33
|
+
const post = (defaultOptions) => async (req, res) => {
|
|
34
|
+
const server = newServer(defaultOptions, req, res);
|
|
35
|
+
// If we return null, we already set the authorization error.
|
|
36
|
+
if (server === null)
|
|
37
|
+
return;
|
|
38
|
+
const transport = new StreamableHTTPServerTransport({
|
|
39
|
+
// Stateless server
|
|
40
|
+
sessionIdGenerator: undefined,
|
|
41
|
+
});
|
|
42
|
+
await server.connect(transport);
|
|
43
|
+
await transport.handleRequest(req, res, req.body);
|
|
44
|
+
};
|
|
45
|
+
const get = async (req, res) => {
|
|
46
|
+
res.status(405).json({
|
|
47
|
+
jsonrpc: '2.0',
|
|
48
|
+
error: {
|
|
49
|
+
code: -32000,
|
|
50
|
+
message: 'Method not supported',
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
const del = async (req, res) => {
|
|
55
|
+
res.status(405).json({
|
|
56
|
+
jsonrpc: '2.0',
|
|
57
|
+
error: {
|
|
58
|
+
code: -32000,
|
|
59
|
+
message: 'Method not supported',
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
export const streamableHTTPApp = (options) => {
|
|
64
|
+
const app = express();
|
|
65
|
+
app.use(express.json());
|
|
66
|
+
app.get('/', get);
|
|
67
|
+
app.post('/', post(options));
|
|
68
|
+
app.delete('/', del);
|
|
69
|
+
return app;
|
|
70
|
+
};
|
|
71
|
+
export const launchStreamableHTTPServer = async (options, endpoints, port) => {
|
|
72
|
+
const app = streamableHTTPApp(options);
|
|
73
|
+
const server = app.listen(port);
|
|
74
|
+
const address = server.address();
|
|
75
|
+
if (typeof address === 'string') {
|
|
76
|
+
console.error(`MCP Server running on streamable HTTP at ${address}`);
|
|
77
|
+
}
|
|
78
|
+
else if (address !== null) {
|
|
79
|
+
console.error(`MCP Server running on streamable HTTP on port ${address.port}`);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
console.error(`MCP Server running on streamable HTTP on port ${port}`);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=http.mjs.map
|
package/http.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.mjs","sourceRoot":"","sources":["src/http.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAG/E,EAAE,6BAA6B,EAAE,MAAM,oDAAoD;OAE3F,OAAO,MAAM,SAAS;OAEtB,EAAE,aAAa,EAAE,YAAY,EAAE;OAC/B,EAAE,gBAAgB,EAAE;AAG3B,MAAM,SAAS,GAAG,CAAC,UAAsB,EAAE,GAAoB,EAAE,GAAqB,EAAoB,EAAE;IAC1G,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC1C,aAAa,CAAC;YACZ,MAAM,EAAE,MAAM;YACd,aAAa,EAAE;gBACb,GAAG,WAAW;gBACd,cAAc,EAAE;oBACd,iBAAiB,EAAE,MAAM;iBAC1B;aACF;YACD,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,IAAI,EAAE,CAAC,KAAK;gBACZ,OAAO,EAAE,cAAc;aACxB;SACF,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,CAAC,cAA0B,EAAE,EAAE,CAAC,KAAK,EAAE,GAAoB,EAAE,GAAqB,EAAE,EAAE;IACjG,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACnD,6DAA6D;IAC7D,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO;IAC5B,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC;QAClD,mBAAmB;QACnB,kBAAkB,EAAE,SAAS;KAC9B,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,GAAG,GAAG,KAAK,EAAE,GAAoB,EAAE,GAAqB,EAAE,EAAE;IAChE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE;YACL,IAAI,EAAE,CAAC,KAAK;YACZ,OAAO,EAAE,sBAAsB;SAChC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,GAAG,GAAG,KAAK,EAAE,GAAoB,EAAE,GAAqB,EAAE,EAAE;IAChE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE;YACL,IAAI,EAAE,CAAC,KAAK;YACZ,OAAO,EAAE,sBAAsB;SAChC;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAmB,EAAmB,EAAE;IACxE,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAExB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAClB,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7B,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAErB,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,EAC7C,OAAmB,EACnB,SAAqB,EACrB,IAAiC,EACjC,EAAE;IACF,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAEjC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,4CAA4C,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC;SAAM,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,iDAAiD,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACjF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,iDAAiD,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC;AACH,CAAC,CAAC"}
|
package/index.js
CHANGED
|
@@ -1,22 +1,27 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
5
4
|
const server_1 = require("./server.js");
|
|
6
5
|
const tools_1 = require("./tools.js");
|
|
7
6
|
const options_1 = require("./options.js");
|
|
7
|
+
const stdio_1 = require("./stdio.js");
|
|
8
|
+
const http_1 = require("./http.js");
|
|
8
9
|
async function main() {
|
|
9
10
|
const options = parseOptionsOrError();
|
|
10
11
|
if (options.list) {
|
|
11
12
|
listAllTools();
|
|
12
13
|
return;
|
|
13
14
|
}
|
|
14
|
-
const
|
|
15
|
-
console.error(`MCP Server starting with ${
|
|
16
|
-
(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
const selectedTools = selectToolsOrError(tools_1.endpoints, options);
|
|
16
|
+
console.error(`MCP Server starting with ${selectedTools.length} tools:`, selectedTools.map((e) => e.tool.name));
|
|
17
|
+
switch (options.transport) {
|
|
18
|
+
case 'stdio':
|
|
19
|
+
await (0, stdio_1.launchStdioServer)(options, selectedTools);
|
|
20
|
+
break;
|
|
21
|
+
case 'http':
|
|
22
|
+
await (0, http_1.launchStreamableHTTPServer)(options, selectedTools, options.port ?? options.socket);
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
20
25
|
}
|
|
21
26
|
if (require.main === module) {
|
|
22
27
|
main().catch((error) => {
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":";;;AAEA,wCAAuC;AACvC,sCAA8C;AAC9C,0CAAqD;AACrD,sCAA4C;AAC5C,oCAAoD;AAEpD,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IAEtC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,YAAY,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,kBAAkB,CAAC,iBAAS,EAAE,OAAO,CAAC,CAAC;IAE7D,OAAO,CAAC,KAAK,CACX,4BAA4B,aAAa,CAAC,MAAM,SAAS,EACzD,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACtC,CAAC;IAEF,QAAQ,OAAO,CAAC,SAAS,EAAE,CAAC;QAC1B,KAAK,OAAO;YACV,MAAM,IAAA,yBAAiB,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAChD,MAAM;QACR,KAAK,MAAM;YACT,MAAM,IAAA,iCAA0B,EAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;YACzF,MAAM;IACV,CAAC;AACH,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,OAAO,IAAA,sBAAY,GAAE,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAqB,EAAE,OAAmB;IACpE,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAA,oBAAW,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,iBAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAElC,8BAA8B;IAC9B,MAAM,cAAc,GAAG,IAAI,GAAG,EAA4B,CAAC;IAE3D,KAAK,MAAM,QAAQ,IAAI,iBAAS,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC5C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,gCAAgC;IAChC,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAEjE,qCAAqC;IACrC,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC;QAErC,MAAM,iBAAiB,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QACxD,8BAA8B;QAC9B,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEzE,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;YACzC,MAAM,EACJ,IAAI,EACJ,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,GAC9B,GAAG,QAAQ,CAAC;YAEb,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/index.mjs
CHANGED
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
import { init, selectTools, server } from "./server.mjs";
|
|
2
|
+
import { selectTools } from "./server.mjs";
|
|
4
3
|
import { endpoints } from "./tools.mjs";
|
|
5
4
|
import { parseOptions } from "./options.mjs";
|
|
5
|
+
import { launchStdioServer } from "./stdio.mjs";
|
|
6
|
+
import { launchStreamableHTTPServer } from "./http.mjs";
|
|
6
7
|
async function main() {
|
|
7
8
|
const options = parseOptionsOrError();
|
|
8
9
|
if (options.list) {
|
|
9
10
|
listAllTools();
|
|
10
11
|
return;
|
|
11
12
|
}
|
|
12
|
-
const
|
|
13
|
-
console.error(`MCP Server starting with ${
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
const selectedTools = selectToolsOrError(endpoints, options);
|
|
14
|
+
console.error(`MCP Server starting with ${selectedTools.length} tools:`, selectedTools.map((e) => e.tool.name));
|
|
15
|
+
switch (options.transport) {
|
|
16
|
+
case 'stdio':
|
|
17
|
+
await launchStdioServer(options, selectedTools);
|
|
18
|
+
break;
|
|
19
|
+
case 'http':
|
|
20
|
+
await launchStreamableHTTPServer(options, selectedTools, options.port ?? options.socket);
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
18
23
|
}
|
|
19
24
|
if (require.main === module) {
|
|
20
25
|
main().catch((error) => {
|
package/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":";OAEO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"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"}
|
package/options.d.mts
CHANGED
|
@@ -2,6 +2,9 @@ import { Filter } from "./tools.mjs";
|
|
|
2
2
|
import { ClientCapabilities, ClientType } from "./compat.mjs";
|
|
3
3
|
export type CLIOptions = McpOptions & {
|
|
4
4
|
list: boolean;
|
|
5
|
+
transport: 'stdio' | 'http';
|
|
6
|
+
port: number | undefined;
|
|
7
|
+
socket: string | undefined;
|
|
5
8
|
};
|
|
6
9
|
export type McpOptions = {
|
|
7
10
|
client: ClientType | undefined;
|
package/options.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.mts","sourceRoot":"","sources":["src/options.ts"],"names":[],"mappings":"OAEO,EAAa,MAAM,EAAE;OACrB,EAAE,kBAAkB,EAAgB,UAAU,EAAE;AAEvD,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG;IACpC,IAAI,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"options.d.mts","sourceRoot":"","sources":["src/options.ts"],"names":[],"mappings":"OAEO,EAAa,MAAM,EAAE;OACrB,EAAE,kBAAkB,EAAgB,UAAU,EAAE;AAEvD,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;IAC/B,mBAAmB,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC5C,CAAC;AA+BF,wBAAgB,YAAY,IAAI,UAAU,CA8NzC"}
|
package/options.d.ts
CHANGED
|
@@ -2,6 +2,9 @@ import { Filter } from "./tools.js";
|
|
|
2
2
|
import { ClientCapabilities, ClientType } from "./compat.js";
|
|
3
3
|
export type CLIOptions = McpOptions & {
|
|
4
4
|
list: boolean;
|
|
5
|
+
transport: 'stdio' | 'http';
|
|
6
|
+
port: number | undefined;
|
|
7
|
+
socket: string | undefined;
|
|
5
8
|
};
|
|
6
9
|
export type McpOptions = {
|
|
7
10
|
client: ClientType | undefined;
|
package/options.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["src/options.ts"],"names":[],"mappings":"OAEO,EAAa,MAAM,EAAE;OACrB,EAAE,kBAAkB,EAAgB,UAAU,EAAE;AAEvD,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG;IACpC,IAAI,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["src/options.ts"],"names":[],"mappings":"OAEO,EAAa,MAAM,EAAE;OACrB,EAAE,kBAAkB,EAAgB,UAAU,EAAE;AAEvD,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;IAC/B,mBAAmB,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC5C,CAAC;AA+BF,wBAAgB,YAAY,IAAI,UAAU,CA8NzC"}
|
package/options.js
CHANGED
|
@@ -117,6 +117,20 @@ function parseOptions() {
|
|
|
117
117
|
.option('describe-capabilities', {
|
|
118
118
|
type: 'boolean',
|
|
119
119
|
description: 'Print detailed explanation of client capabilities and exit',
|
|
120
|
+
})
|
|
121
|
+
.option('transport', {
|
|
122
|
+
type: 'string',
|
|
123
|
+
choices: ['stdio', 'http'],
|
|
124
|
+
default: 'stdio',
|
|
125
|
+
description: 'What transport to use; stdio for local servers or http for remote servers',
|
|
126
|
+
})
|
|
127
|
+
.option('port', {
|
|
128
|
+
type: 'number',
|
|
129
|
+
description: 'Port to serve on if using http transport',
|
|
130
|
+
})
|
|
131
|
+
.option('socket', {
|
|
132
|
+
type: 'string',
|
|
133
|
+
description: 'Unix socket to serve on if using http transport',
|
|
120
134
|
})
|
|
121
135
|
.help();
|
|
122
136
|
for (const [command, desc] of examples()) {
|
|
@@ -218,6 +232,7 @@ function parseOptions() {
|
|
|
218
232
|
const explicitTools = Boolean(argv.tools || argv.noTools);
|
|
219
233
|
const includeDynamicTools = explicitTools ? argv.tools?.includes('dynamic') && !argv.noTools?.includes('dynamic') : undefined;
|
|
220
234
|
const includeAllTools = explicitTools ? argv.tools?.includes('all') && !argv.noTools?.includes('all') : undefined;
|
|
235
|
+
const transport = argv.transport;
|
|
221
236
|
const client = argv.client;
|
|
222
237
|
return {
|
|
223
238
|
client: client && compat_1.knownClients[client] ? client : undefined,
|
|
@@ -226,6 +241,9 @@ function parseOptions() {
|
|
|
226
241
|
filters,
|
|
227
242
|
capabilities: clientCapabilities,
|
|
228
243
|
list: argv.list || false,
|
|
244
|
+
transport,
|
|
245
|
+
port: argv.port,
|
|
246
|
+
socket: argv.socket,
|
|
229
247
|
};
|
|
230
248
|
}
|
|
231
249
|
function getCapabilitiesExplanation() {
|
package/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["src/options.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["src/options.ts"],"names":[],"mappings":";;;;;AAiDA,oCA8NC;AA/QD,kDAA0B;AAC1B,2CAAwC;AACxC,sCAA4C;AAC5C,wCAAwE;AAiBxE,MAAM,kBAAkB,GAAG;IACzB,kBAAkB;IAClB,YAAY;IACZ,MAAM;IACN,QAAQ;IACR,SAAS;IACT,kBAAkB;CACV,CAAC;AAIX,SAAS,oBAAoB,CAAC,GAAW;IACvC,IAAI,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnB,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YACrD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAiB,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,6BAA6B,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1G,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,GAAiB,EAAE,CAAC;AACrC,CAAC;AAED,SAAgB,YAAY;IAC1B,MAAM,IAAI,GAAG,IAAA,eAAK,EAAC,IAAA,iBAAO,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACtC,MAAM,CAAC,OAAO,EAAE;QACf,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;QAC3B,WAAW,EAAE,gCAAgC;KAC9C,CAAC;SACD,MAAM,CAAC,UAAU,EAAE;QAClB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;QAC3B,WAAW,EAAE,qCAAqC;KACnD,CAAC;SACD,MAAM,CAAC,MAAM,EAAE;QACd,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,4CAA4C;KAC1D,CAAC;SACD,MAAM,CAAC,UAAU,EAAE;QAClB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,gDAAgD;KAC9D,CAAC;SACD,MAAM,CAAC,WAAW,EAAE;QACnB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QAC1B,WAAW,EAAE,iDAAiD;KAC/D,CAAC;SACD,MAAM,CAAC,KAAK,EAAE;QACb,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,uCAAuC;KACrD,CAAC;SACD,MAAM,CAAC,SAAS,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,4CAA4C;KAC1D,CAAC;SACD,MAAM,CAAC,aAAa,EAAE;QACrB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,gDAAgD;KAC9D,CAAC;SACD,MAAM,CAAC,cAAc,EAAE;QACtB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,iDAAiD;KAC/D,CAAC;SACD,MAAM,CAAC,QAAQ,EAAE;QAChB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,uCAAuC;KACrD,CAAC;SACD,MAAM,CAAC,MAAM,EAAE;QACd,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,yBAAyB;KACvC,CAAC;SACD,MAAM,CAAC,QAAQ,EAAE;QAChB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,qBAAY,CAAC;QAClC,WAAW,EAAE,mCAAmC;KACjD,CAAC;SACD,MAAM,CAAC,YAAY,EAAE;QACpB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,6BAA6B;QAC1C,MAAM,EAAE,CAAC,MAAgB,EAAE,EAAE;YAC3B,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC;KACF,CAAC;SACD,MAAM,CAAC,eAAe,EAAE;QACvB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE,kBAAkB;QAC3B,MAAM,EAAE,CAAC,MAAgB,EAAE,EAAE;YAC3B,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC;KACF,CAAC;SACD,MAAM,CAAC,uBAAuB,EAAE;QAC/B,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,4DAA4D;KAC1E,CAAC;SACD,MAAM,CAAC,WAAW,EAAE;QACnB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;QAC1B,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,2EAA2E;KACzF,CAAC;SACD,MAAM,CAAC,MAAM,EAAE;QACd,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,0CAA0C;KACxD,CAAC;SACD,MAAM,CAAC,QAAQ,EAAE;QAChB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,iDAAiD;KAC/D,CAAC;SACD,IAAI,EAAE,CAAC;IAEV,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,QAAQ,EAAE,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAE9B,oCAAoC;IACpC,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,oDAAoD;IACpD,MAAM,WAAW,GAAG,CAAC,MAA4B,EAAY,EAAE;QAC7D,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,4BAA4B;IAC5B,MAAM,kBAAkB,GAAuB;QAC7C,cAAc,EAAE,IAAI;QACpB,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,IAAI;QACb,cAAc,EAAE,SAAS;KAC1B,CAAC;IAEF,wCAAwC;IACxC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,SAAS,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBAC1C,kBAAkB,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3C,CAAC;iBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC3C,kBAAkB,CAAC,SAAS,GAAG,IAAI,CAAC;YACtC,CAAC;iBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACrC,kBAAkB,CAAC,IAAI,GAAG,IAAI,CAAC;YACjC,CAAC;iBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvC,kBAAkB,CAAC,MAAM,GAAG,IAAI,CAAC;YACnC,CAAC;iBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACxC,kBAAkB,CAAC,OAAO,GAAG,IAAI,CAAC;YACpC,CAAC;iBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBACjD,kBAAkB,CAAC,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC;YACtD,CAAC;QACH,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACrC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpC,IAAI,GAAG,KAAK,kBAAkB,EAAE,CAAC;gBAC/B,kBAAkB,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5C,CAAC;iBAAM,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;gBAChC,kBAAkB,CAAC,SAAS,GAAG,KAAK,CAAC;YACvC,CAAC;iBAAM,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBAC1B,kBAAkB,CAAC,IAAI,GAAG,KAAK,CAAC;YAClC,CAAC;iBAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,kBAAkB,CAAC,MAAM,GAAG,KAAK,CAAC;YACpC,CAAC;iBAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBAC7B,kBAAkB,CAAC,OAAO,GAAG,KAAK,CAAC;YACrC,CAAC;iBAAM,IAAI,GAAG,KAAK,kBAAkB,EAAE,CAAC;gBACtC,kBAAkB,CAAC,cAAc,GAAG,SAAS,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1D,MAAM,mBAAmB,GACvB,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpG,MAAM,eAAe,GACnB,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE5F,MAAM,SAAS,GAAG,IAAI,CAAC,SAA6B,CAAC;IAErD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAoB,CAAC;IACzC,OAAO;QACL,MAAM,EAAE,MAAM,IAAI,qBAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QAC3D,mBAAmB;QACnB,eAAe;QACf,OAAO;QACP,YAAY,EAAE,kBAAkB;QAChC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK;QACxB,SAAS;QACT,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BP,IAAI,CAAC,SAAS,CAAC,qBAAY,EAAE,IAAI,EAAE,CAAC,CAAC;GACpC,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ;IACf,MAAM,aAAa,GAAG,iBAAS,CAAC,CAAC,CAAE,CAAC;IACpC,MAAM,cAAc,GAClB,iBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,KAAK,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,iBAAS,CAAC,CAAC,CAAC,CAAC;IACjG,MAAM,GAAG,GAAG,iBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChF,MAAM,aAAa,GAAG,cAAc,IAAI,aAAa,CAAC;IAEtD,OAAO;QACL;YACE,WAAW,aAAa,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,WAAW,cAAc,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACrG,uBAAuB;SACxB;QACD;YACE,eAAe,aAAa,CAAC,QAAQ,CAAC,QAAQ,sBAAsB;YACpE,kCAAkC;SACnC;QACD;YACE,eAAe,aAAa,CAAC,QAAQ,CAAC,QAAQ,iBAAiB,aAAa,CAAC,IAAI,CAAC,IAAI,GAAG;YACzF,uCAAuC;SACxC;QACD,CAAC,mBAAmB,EAAE,kDAAkD,CAAC;QACzE;YACE,oEAAoE;YACpE,wCAAwC;SACzC;QACD;YACE,sDAAsD;YACtD,4DAA4D;SAC7D;QACD,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,EAAE,sBAAsB,CAAqB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACjF,CAAC;AACJ,CAAC"}
|