@mesheshq/mcp-server 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +167 -0
- package/dist/client.d.ts +114 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +185 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +4 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +19 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/connections.d.ts +4 -0
- package/dist/tools/connections.d.ts.map +1 -0
- package/dist/tools/connections.js +235 -0
- package/dist/tools/connections.js.map +1 -0
- package/dist/tools/deliveries.d.ts +4 -0
- package/dist/tools/deliveries.d.ts.map +1 -0
- package/dist/tools/deliveries.js +153 -0
- package/dist/tools/deliveries.js.map +1 -0
- package/dist/tools/events.d.ts +4 -0
- package/dist/tools/events.d.ts.map +1 -0
- package/dist/tools/events.js +89 -0
- package/dist/tools/events.js.map +1 -0
- package/dist/tools/rules.d.ts +4 -0
- package/dist/tools/rules.d.ts.map +1 -0
- package/dist/tools/rules.js +134 -0
- package/dist/tools/rules.js.map +1 -0
- package/dist/tools/workspaces.d.ts +4 -0
- package/dist/tools/workspaces.d.ts.map +1 -0
- package/dist/tools/workspaces.js +145 -0
- package/dist/tools/workspaces.js.map +1 -0
- package/dist/types.d.ts +101 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +14 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +10 -0
- package/dist/utils.js.map +1 -0
- package/package.json +68 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Meshes Inc.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# @mesheshq/mcp-server
|
|
2
|
+
|
|
3
|
+
[](https://github.com/mesheshq/meshes-mcp-server/actions/workflows/ci.yml)
|
|
4
|
+
[![NPM Version][npm-version-image]][npm-url]
|
|
5
|
+
[![NPM Install Size][npm-install-size-image]][npm-install-size-url]
|
|
6
|
+
|
|
7
|
+
MCP server for [Meshes](https://meshes.io) — emit events, manage workspaces,
|
|
8
|
+
create routing rules, and inspect deliveries from any MCP-compatible client.
|
|
9
|
+
|
|
10
|
+
## Features
|
|
11
|
+
|
|
12
|
+
- **Emit Events** — send product events (signups, payments, cancellations) to Meshes
|
|
13
|
+
- **Manage Workspaces** — list and configure workspaces
|
|
14
|
+
- **Routing Rules** — create and update event routing rules
|
|
15
|
+
- **Connections** — manage integration connections (HubSpot, Salesforce, Mailchimp, etc.)
|
|
16
|
+
- **Delivery Status** — inspect event delivery logs and retry status
|
|
17
|
+
|
|
18
|
+
## Setup
|
|
19
|
+
|
|
20
|
+
Create a free Meshes account and create Machine Keys in the dashboard
|
|
21
|
+
under Profile → API Keys.
|
|
22
|
+
|
|
23
|
+
### Claude Code
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
claude mcp add meshes \
|
|
27
|
+
-e MESHES_ACCESS_KEY=your_access_key \
|
|
28
|
+
-e MESHES_SECRET_KEY=your_secret_key \
|
|
29
|
+
-e MESHES_ORG_ID=your_org_id \
|
|
30
|
+
-- npx -y @mesheshq/mcp-server
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Cursor
|
|
34
|
+
|
|
35
|
+
Open Cursor Settings → MCP → Add new global MCP server:
|
|
36
|
+
|
|
37
|
+
```json
|
|
38
|
+
{
|
|
39
|
+
"mcpServers": {
|
|
40
|
+
"meshes": {
|
|
41
|
+
"command": "npx",
|
|
42
|
+
"args": ["-y", "@mesheshq/mcp-server"],
|
|
43
|
+
"env": {
|
|
44
|
+
"MESHES_ACCESS_KEY": "your_access_key",
|
|
45
|
+
"MESHES_SECRET_KEY": "your_secret_key",
|
|
46
|
+
"MESHES_ORG_ID": "your_organization_uuid"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Claude Desktop
|
|
54
|
+
|
|
55
|
+
Open Claude Desktop → Settings → Developer → Edit Config:
|
|
56
|
+
|
|
57
|
+
```json
|
|
58
|
+
{
|
|
59
|
+
"mcpServers": {
|
|
60
|
+
"meshes": {
|
|
61
|
+
"command": "npx",
|
|
62
|
+
"args": ["-y", "@mesheshq/mcp-server"],
|
|
63
|
+
"env": {
|
|
64
|
+
"MESHES_ACCESS_KEY": "your_access_key",
|
|
65
|
+
"MESHES_SECRET_KEY": "your_secret_key",
|
|
66
|
+
"MESHES_ORG_ID": "your_organization_uuid"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Windsurf
|
|
74
|
+
|
|
75
|
+
Add to your Windsurf MCP configuration:
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"mcpServers": {
|
|
80
|
+
"meshes": {
|
|
81
|
+
"command": "npx",
|
|
82
|
+
"args": ["-y", "@mesheshq/mcp-server"],
|
|
83
|
+
"env": {
|
|
84
|
+
"MESHES_ACCESS_KEY": "your_access_key",
|
|
85
|
+
"MESHES_SECRET_KEY": "your_secret_key",
|
|
86
|
+
"MESHES_ORG_ID": "your_organization_uuid"
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
> **Security note:** MCP config files contain your secret key. They
|
|
94
|
+
> live in your home directory (e.g. `~/.cursor/mcp.json`), not your
|
|
95
|
+
> project repo. Never commit access keys or secret keys to version control.
|
|
96
|
+
|
|
97
|
+
## Environment Variables
|
|
98
|
+
|
|
99
|
+
| Variable | Required | Description |
|
|
100
|
+
| ------------------- | -------- | ----------------------------------------------- |
|
|
101
|
+
| `MESHES_ACCESS_KEY` | Yes | Machine access key from dashboard |
|
|
102
|
+
| `MESHES_SECRET_KEY` | Yes | Machine secret key from dashboard |
|
|
103
|
+
| `MESHES_ORG_ID` | Yes | Organization UUID |
|
|
104
|
+
| `MESHES_API_URL` | No | API base URL (default: `https://api.meshes.io`) |
|
|
105
|
+
|
|
106
|
+
## Available Tools
|
|
107
|
+
|
|
108
|
+
| Tool | Description |
|
|
109
|
+
| ---------------------------------------- | -------------------------------------------------------------- |
|
|
110
|
+
| `meshes_emit_event` | Emit a product event to Meshes for routing and delivery |
|
|
111
|
+
| `meshes_emit_bulk_events` | Emit up to 100 events in a single request |
|
|
112
|
+
| `meshes_list_workspaces` | List all workspaces in the multi-tenant organization |
|
|
113
|
+
| `meshes_get_workspace` | Get details of a specific workspace |
|
|
114
|
+
| `meshes_create_workspace` | Create a new workspace |
|
|
115
|
+
| `meshes_update_workspace` | Update workspace properties |
|
|
116
|
+
| `meshes_list_connections` | List connections for a workspace |
|
|
117
|
+
| `meshes_get_connection` | Get details of a connection |
|
|
118
|
+
| `meshes_create_connection` | Create a new connection destination |
|
|
119
|
+
| `meshes_update_connection` | Update connection configuration metadata |
|
|
120
|
+
| `meshes_delete_connection` | Delete a connection |
|
|
121
|
+
| `meshes_get_connection_actions` | Get available actions (destination endpoints) for a connection |
|
|
122
|
+
| `meshes_get_connection_fields` | Get destination field configuration for mappings |
|
|
123
|
+
| `meshes_get_connection_default_mappings` | Get default mappings for a connection |
|
|
124
|
+
| `meshes_list_rules` | List all routing rules |
|
|
125
|
+
| `meshes_get_rule` | Get details of a specific routing rule |
|
|
126
|
+
| `meshes_create_rule` | Create an event routing rule mapping events to an action |
|
|
127
|
+
| `meshes_delete_rule` | Delete an event routing rule |
|
|
128
|
+
| `meshes_list_events` | List events across the organization with pagination |
|
|
129
|
+
| `meshes_get_workspace_events` | List events for a workspace with filtered criteria |
|
|
130
|
+
| `meshes_get_event` | Get event details with delivery status matrix |
|
|
131
|
+
| `meshes_get_event_payload` | Get event details containing data payload |
|
|
132
|
+
| `meshes_retry_event_rule` | Retry a failed rule delivery |
|
|
133
|
+
| `meshes_list_integrations` | Get metadata about all supported integration types |
|
|
134
|
+
|
|
135
|
+
## Development
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
git clone https://github.com/mesheshq/meshes-mcp-server.git
|
|
139
|
+
cd meshes-mcp-server
|
|
140
|
+
npm install
|
|
141
|
+
npm run build
|
|
142
|
+
npm test
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## What is Meshes?
|
|
146
|
+
|
|
147
|
+
[Meshes](https://meshes.io) is a universal integration layer for SaaS
|
|
148
|
+
applications. Emit product events once — signups, payments, form
|
|
149
|
+
submissions — and Meshes routes them to CRMs, email tools, webhooks,
|
|
150
|
+
and more with retries, fan-out, field mappings, and multi-tenant
|
|
151
|
+
isolation built in.
|
|
152
|
+
|
|
153
|
+
## Documentation
|
|
154
|
+
|
|
155
|
+
- [Meshes Docs](https://meshes.io/docs)
|
|
156
|
+
- [API Reference](https://docs.meshes.dev)
|
|
157
|
+
- [MCP Server Docs](https://meshes.io/docs/ai/mcp-server)
|
|
158
|
+
- [Authentication](https://meshes.io/docs/api/authentication)
|
|
159
|
+
|
|
160
|
+
## License
|
|
161
|
+
|
|
162
|
+
MIT
|
|
163
|
+
|
|
164
|
+
[npm-install-size-image]: https://badgen.net/packagephobia/publish/@mesheshq/mcp-server?cache=200
|
|
165
|
+
[npm-install-size-url]: https://packagephobia.com/result?p=%40mesheshq%2Fmcp-server
|
|
166
|
+
[npm-url]: https://www.npmjs.com/package/@mesheshq/mcp-server
|
|
167
|
+
[npm-version-image]: https://badgen.net/npm/v/@mesheshq/mcp-server?cache=200
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Meshes API client — matches the OpenAPI spec at https://docs.meshes.dev
|
|
3
|
+
* Base URL: https://api.meshes.io
|
|
4
|
+
*/
|
|
5
|
+
import type { Connection, EventStatus, IntegrationType, MeshesConfig, MeshesEvent, PaginatedResponse, Rule, RuleEvent, RuleMetadata, Workspace } from './types.js';
|
|
6
|
+
export declare class MeshesApiClient {
|
|
7
|
+
private config;
|
|
8
|
+
constructor(config: MeshesConfig);
|
|
9
|
+
private request;
|
|
10
|
+
listWorkspaces(): Promise<PaginatedResponse<Workspace>>;
|
|
11
|
+
getWorkspace(id: string): Promise<Workspace>;
|
|
12
|
+
createWorkspace(params: {
|
|
13
|
+
name: string;
|
|
14
|
+
description?: string;
|
|
15
|
+
}): Promise<{
|
|
16
|
+
workspace: Workspace;
|
|
17
|
+
}>;
|
|
18
|
+
updateWorkspace(id: string, params: {
|
|
19
|
+
name: string;
|
|
20
|
+
description?: string | null;
|
|
21
|
+
}): Promise<Workspace>;
|
|
22
|
+
getWorkspaceConnections(id: string): Promise<PaginatedResponse<Connection>>;
|
|
23
|
+
getWorkspaceRules(id: string): Promise<PaginatedResponse<Rule>>;
|
|
24
|
+
getWorkspaceEvents(id: string, params?: {
|
|
25
|
+
limit?: number;
|
|
26
|
+
cursor?: string;
|
|
27
|
+
event?: string;
|
|
28
|
+
status?: EventStatus;
|
|
29
|
+
resource?: string;
|
|
30
|
+
resource_id?: string;
|
|
31
|
+
}): Promise<PaginatedResponse<MeshesEvent>>;
|
|
32
|
+
listConnections(): Promise<PaginatedResponse<Connection>>;
|
|
33
|
+
getConnection(id: string): Promise<Connection>;
|
|
34
|
+
createConnection(params: {
|
|
35
|
+
workspace: string;
|
|
36
|
+
type: IntegrationType;
|
|
37
|
+
name: string;
|
|
38
|
+
metadata: Record<string, unknown>;
|
|
39
|
+
hidden?: boolean;
|
|
40
|
+
}): Promise<{
|
|
41
|
+
connection: Connection;
|
|
42
|
+
}>;
|
|
43
|
+
updateConnection(id: string, params: {
|
|
44
|
+
name: string;
|
|
45
|
+
metadata: Record<string, unknown>;
|
|
46
|
+
hidden?: boolean;
|
|
47
|
+
}): Promise<Connection>;
|
|
48
|
+
deleteConnection(id: string, forceDelete?: boolean): Promise<{
|
|
49
|
+
id: string;
|
|
50
|
+
type: IntegrationType;
|
|
51
|
+
}>;
|
|
52
|
+
getConnectionActions(id: string): Promise<unknown>;
|
|
53
|
+
getConnectionFields(id: string, refresh?: boolean): Promise<unknown>;
|
|
54
|
+
getConnectionDefaultMappings(id: string): Promise<unknown>;
|
|
55
|
+
listRules(params?: {
|
|
56
|
+
event?: string;
|
|
57
|
+
resource?: string;
|
|
58
|
+
resource_id?: string;
|
|
59
|
+
}): Promise<PaginatedResponse<Rule>>;
|
|
60
|
+
getRule(id: string): Promise<Rule>;
|
|
61
|
+
createRule(params: {
|
|
62
|
+
workspace: string;
|
|
63
|
+
connection: string;
|
|
64
|
+
event: string;
|
|
65
|
+
metadata: RuleMetadata;
|
|
66
|
+
resource?: string;
|
|
67
|
+
resource_id?: string;
|
|
68
|
+
active?: boolean;
|
|
69
|
+
hidden?: boolean;
|
|
70
|
+
}): Promise<{
|
|
71
|
+
rule: Rule;
|
|
72
|
+
}>;
|
|
73
|
+
deleteRule(id: string): Promise<{
|
|
74
|
+
id: string;
|
|
75
|
+
connection: string;
|
|
76
|
+
type: IntegrationType;
|
|
77
|
+
event: string;
|
|
78
|
+
}>;
|
|
79
|
+
listEvents(params?: {
|
|
80
|
+
limit?: number;
|
|
81
|
+
cursor?: string;
|
|
82
|
+
}): Promise<PaginatedResponse<MeshesEvent>>;
|
|
83
|
+
emitEvent(params: {
|
|
84
|
+
workspace: string;
|
|
85
|
+
event: string;
|
|
86
|
+
payload: Record<string, unknown>;
|
|
87
|
+
resource?: string;
|
|
88
|
+
resource_id?: string;
|
|
89
|
+
}): Promise<{
|
|
90
|
+
event: {
|
|
91
|
+
id: string;
|
|
92
|
+
event: string;
|
|
93
|
+
workspace: string;
|
|
94
|
+
created_by: string;
|
|
95
|
+
created_at: string;
|
|
96
|
+
};
|
|
97
|
+
}>;
|
|
98
|
+
emitBulkEvents(events: Array<{
|
|
99
|
+
workspace: string;
|
|
100
|
+
event: string;
|
|
101
|
+
payload: Record<string, unknown>;
|
|
102
|
+
resource?: string;
|
|
103
|
+
resource_id?: string;
|
|
104
|
+
}>): Promise<{
|
|
105
|
+
count: number;
|
|
106
|
+
error_count?: number;
|
|
107
|
+
records: unknown[];
|
|
108
|
+
}>;
|
|
109
|
+
getEvent(id: string): Promise<MeshesEvent>;
|
|
110
|
+
getEventPayload(id: string): Promise<MeshesEvent>;
|
|
111
|
+
retryEventRule(eventId: string, ruleId: string): Promise<RuleEvent>;
|
|
112
|
+
listIntegrations(): Promise<PaginatedResponse<unknown>>;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,eAAe,EACf,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,IAAI,EACJ,SAAS,EACT,YAAY,EACZ,SAAS,EACV,MAAM,YAAY,CAAC;AAyBpB,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,YAAY;YAIlB,OAAO;IA0BrB,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAIvD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAI5C,eAAe,CAAC,MAAM,EAAE;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,SAAS,CAAA;KAAE,CAAC;IAOrC,eAAe,CACb,EAAE,EAAE,MAAM,EACV,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GACpD,OAAO,CAAC,SAAS,CAAC;IAOrB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAI3E,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAI/D,kBAAkB,CAChB,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GACA,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAc1C,eAAe,IAAI,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAIzD,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAI9C,gBAAgB,CAAC,MAAM,EAAE;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,eAAe,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,UAAU,CAAA;KAAE,CAAC;IAOvC,gBAAgB,CACd,EAAE,EAAE,MAAM,EACV,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GACA,OAAO,CAAC,UAAU,CAAC;IAOtB,gBAAgB,CACd,EAAE,EAAE,MAAM,EACV,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,eAAe,CAAA;KAAE,CAAC;IAOjD,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlD,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpE,4BAA4B,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM1D,SAAS,CAAC,MAAM,CAAC,EAAE;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IASpC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,UAAU,CAAC,MAAM,EAAE;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,YAAY,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC;IAO3B,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAC9B,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,eAAe,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAMF,UAAU,CAAC,MAAM,CAAC,EAAE;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAQ3C,SAAS,CAAC,MAAM,EAAE;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC;QACV,KAAK,EAAE;YACL,EAAE,EAAE,MAAM,CAAC;YACX,KAAK,EAAE,MAAM,CAAC;YACd,SAAS,EAAE,MAAM,CAAC;YAClB,UAAU,EAAE,MAAM,CAAC;YACnB,UAAU,EAAE,MAAM,CAAC;SACpB,CAAC;KACH,CAAC;IAOF,cAAc,CACZ,MAAM,EAAE,KAAK,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,GACD,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC;IAOvE,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAI1C,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAIjD,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAQnE,gBAAgB,IAAI,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;CAGxD"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Meshes API client — matches the OpenAPI spec at https://docs.meshes.dev
|
|
3
|
+
* Base URL: https://api.meshes.io
|
|
4
|
+
*/
|
|
5
|
+
// ── JWT Token Generation ──────────────────────────────────────
|
|
6
|
+
// Meshes uses short-lived HS256 JWTs for machine-to-machine auth.
|
|
7
|
+
// See: https://meshes.io/docs/api/authentication
|
|
8
|
+
async function mintJwt(config) {
|
|
9
|
+
// Dynamic import — jose is an ESM package
|
|
10
|
+
const { SignJWT } = await import('jose');
|
|
11
|
+
const key = new TextEncoder().encode(config.secretKey);
|
|
12
|
+
const token = await new SignJWT({ org: config.orgId })
|
|
13
|
+
.setProtectedHeader({ alg: 'HS256', typ: 'JWT', kid: config.accessKey })
|
|
14
|
+
.setIssuer(`urn:meshes:m2m:${config.accessKey}`)
|
|
15
|
+
.setAudience('meshes-api')
|
|
16
|
+
.setIssuedAt()
|
|
17
|
+
.setExpirationTime('30s')
|
|
18
|
+
.sign(key);
|
|
19
|
+
return token;
|
|
20
|
+
}
|
|
21
|
+
// ── Client ────────────────────────────────────────────────────
|
|
22
|
+
export class MeshesApiClient {
|
|
23
|
+
config;
|
|
24
|
+
constructor(config) {
|
|
25
|
+
this.config = config;
|
|
26
|
+
}
|
|
27
|
+
async request(path, options = {}) {
|
|
28
|
+
const token = await mintJwt(this.config);
|
|
29
|
+
const url = `${this.config.baseUrl}${path}`;
|
|
30
|
+
const response = await fetch(url, {
|
|
31
|
+
...options,
|
|
32
|
+
headers: {
|
|
33
|
+
Authorization: `Bearer ${token}`,
|
|
34
|
+
'Content-Type': 'application/json',
|
|
35
|
+
...options.headers,
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
if (!response.ok) {
|
|
39
|
+
const body = await response.text();
|
|
40
|
+
throw new Error(`Meshes API ${response.status}: ${body}`);
|
|
41
|
+
}
|
|
42
|
+
if (response.status === 204)
|
|
43
|
+
return {};
|
|
44
|
+
return response.json();
|
|
45
|
+
}
|
|
46
|
+
// ── Workspaces ────────────────────────────────────────────
|
|
47
|
+
listWorkspaces() {
|
|
48
|
+
return this.request('/api/v1/workspaces');
|
|
49
|
+
}
|
|
50
|
+
getWorkspace(id) {
|
|
51
|
+
return this.request(`/api/v1/workspaces/${id}`);
|
|
52
|
+
}
|
|
53
|
+
createWorkspace(params) {
|
|
54
|
+
return this.request('/api/v1/workspaces', {
|
|
55
|
+
method: 'POST',
|
|
56
|
+
body: JSON.stringify(params),
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
updateWorkspace(id, params) {
|
|
60
|
+
return this.request(`/api/v1/workspaces/${id}`, {
|
|
61
|
+
method: 'PUT',
|
|
62
|
+
body: JSON.stringify(params),
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
getWorkspaceConnections(id) {
|
|
66
|
+
return this.request(`/api/v1/workspaces/${id}/connections`);
|
|
67
|
+
}
|
|
68
|
+
getWorkspaceRules(id) {
|
|
69
|
+
return this.request(`/api/v1/workspaces/${id}/rules`);
|
|
70
|
+
}
|
|
71
|
+
getWorkspaceEvents(id, params) {
|
|
72
|
+
const query = new URLSearchParams();
|
|
73
|
+
if (params?.limit)
|
|
74
|
+
query.set('limit', String(params.limit));
|
|
75
|
+
if (params?.cursor)
|
|
76
|
+
query.set('cursor', params.cursor);
|
|
77
|
+
if (params?.event)
|
|
78
|
+
query.set('event', params.event);
|
|
79
|
+
if (params?.status)
|
|
80
|
+
query.set('status', params.status);
|
|
81
|
+
if (params?.resource)
|
|
82
|
+
query.set('resource', params.resource);
|
|
83
|
+
if (params?.resource_id)
|
|
84
|
+
query.set('resource_id', params.resource_id);
|
|
85
|
+
const qs = query.toString();
|
|
86
|
+
return this.request(`/api/v1/workspaces/${id}/events${qs ? `?${qs}` : ''}`);
|
|
87
|
+
}
|
|
88
|
+
// ── Connections ───────────────────────────────────────────
|
|
89
|
+
listConnections() {
|
|
90
|
+
return this.request('/api/v1/connections');
|
|
91
|
+
}
|
|
92
|
+
getConnection(id) {
|
|
93
|
+
return this.request(`/api/v1/connections/${id}`);
|
|
94
|
+
}
|
|
95
|
+
createConnection(params) {
|
|
96
|
+
return this.request('/api/v1/connections', {
|
|
97
|
+
method: 'POST',
|
|
98
|
+
body: JSON.stringify(params),
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
updateConnection(id, params) {
|
|
102
|
+
return this.request(`/api/v1/connections/${id}`, {
|
|
103
|
+
method: 'PUT',
|
|
104
|
+
body: JSON.stringify(params),
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
deleteConnection(id, forceDelete) {
|
|
108
|
+
return this.request(`/api/v1/connections/${id}`, {
|
|
109
|
+
method: 'DELETE',
|
|
110
|
+
body: forceDelete ? JSON.stringify({ force_delete: true }) : undefined,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
getConnectionActions(id) {
|
|
114
|
+
return this.request(`/api/v1/connections/${id}/actions`);
|
|
115
|
+
}
|
|
116
|
+
getConnectionFields(id, refresh) {
|
|
117
|
+
const qs = refresh ? '?refresh=true' : '';
|
|
118
|
+
return this.request(`/api/v1/connections/${id}/fields${qs}`);
|
|
119
|
+
}
|
|
120
|
+
getConnectionDefaultMappings(id) {
|
|
121
|
+
return this.request(`/api/v1/connections/${id}/mappings/default`);
|
|
122
|
+
}
|
|
123
|
+
// ── Rules ─────────────────────────────────────────────────
|
|
124
|
+
listRules(params) {
|
|
125
|
+
const query = new URLSearchParams();
|
|
126
|
+
if (params?.event)
|
|
127
|
+
query.set('event', params.event);
|
|
128
|
+
if (params?.resource)
|
|
129
|
+
query.set('resource', params.resource);
|
|
130
|
+
if (params?.resource_id)
|
|
131
|
+
query.set('resource_id', params.resource_id);
|
|
132
|
+
const qs = query.toString();
|
|
133
|
+
return this.request(`/api/v1/rules${qs ? `?${qs}` : ''}`);
|
|
134
|
+
}
|
|
135
|
+
getRule(id) {
|
|
136
|
+
return this.request(`/api/v1/rules/${id}`);
|
|
137
|
+
}
|
|
138
|
+
createRule(params) {
|
|
139
|
+
return this.request('/api/v1/rules', {
|
|
140
|
+
method: 'POST',
|
|
141
|
+
body: JSON.stringify(params),
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
deleteRule(id) {
|
|
145
|
+
return this.request(`/api/v1/rules/${id}`, { method: 'DELETE' });
|
|
146
|
+
}
|
|
147
|
+
// ── Events ────────────────────────────────────────────────
|
|
148
|
+
listEvents(params) {
|
|
149
|
+
const query = new URLSearchParams();
|
|
150
|
+
if (params?.limit)
|
|
151
|
+
query.set('limit', String(params.limit));
|
|
152
|
+
if (params?.cursor)
|
|
153
|
+
query.set('cursor', params.cursor);
|
|
154
|
+
const qs = query.toString();
|
|
155
|
+
return this.request(`/api/v1/events${qs ? `?${qs}` : ''}`);
|
|
156
|
+
}
|
|
157
|
+
emitEvent(params) {
|
|
158
|
+
return this.request('/api/v1/events', {
|
|
159
|
+
method: 'POST',
|
|
160
|
+
body: JSON.stringify(params),
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
emitBulkEvents(events) {
|
|
164
|
+
return this.request('/api/v1/events/bulk', {
|
|
165
|
+
method: 'POST',
|
|
166
|
+
body: JSON.stringify(events),
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
getEvent(id) {
|
|
170
|
+
return this.request(`/api/v1/events/${id}`);
|
|
171
|
+
}
|
|
172
|
+
getEventPayload(id) {
|
|
173
|
+
return this.request(`/api/v1/events/${id}/payload`);
|
|
174
|
+
}
|
|
175
|
+
retryEventRule(eventId, ruleId) {
|
|
176
|
+
return this.request(`/api/v1/events/${eventId}/rules/${ruleId}/retry`, {
|
|
177
|
+
method: 'POST',
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
// ── Integrations ──────────────────────────────────────────
|
|
181
|
+
listIntegrations() {
|
|
182
|
+
return this.request('/api/v1/integrations');
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
|
+
import { MeshesApiClient } from './client.js';
|
|
4
|
+
import { createServer } from './server.js';
|
|
5
|
+
// ── Configuration ─────────────────────────────────────────────
|
|
6
|
+
// Authentication uses short-lived HS256 JWTs minted from your
|
|
7
|
+
// Meshes machine key credentials. The server generates a fresh
|
|
8
|
+
// token for each API request (tokens expire in 30 seconds).
|
|
9
|
+
// See: https://meshes.io/docs/api/authentication
|
|
10
|
+
const ACCESS_KEY = process.env.MESHES_ACCESS_KEY;
|
|
11
|
+
const SECRET_KEY = process.env.MESHES_SECRET_KEY;
|
|
12
|
+
const ORG_ID = process.env.MESHES_ORG_ID;
|
|
13
|
+
const BASE_URL = process.env.MESHES_API_URL || 'https://api.meshes.io';
|
|
14
|
+
if (!ACCESS_KEY || !SECRET_KEY || !ORG_ID) {
|
|
15
|
+
const missing = [];
|
|
16
|
+
if (!ACCESS_KEY)
|
|
17
|
+
missing.push('MESHES_ACCESS_KEY');
|
|
18
|
+
if (!SECRET_KEY)
|
|
19
|
+
missing.push('MESHES_SECRET_KEY');
|
|
20
|
+
if (!ORG_ID)
|
|
21
|
+
missing.push('MESHES_ORG_ID');
|
|
22
|
+
console.error(`Error: Missing required environment variable ${missing.join(', ')}\n` +
|
|
23
|
+
`Set it in your MCP client configuration:\n\n` +
|
|
24
|
+
`{\n` +
|
|
25
|
+
` "mcpServers": {\n` +
|
|
26
|
+
` "meshes": {\n` +
|
|
27
|
+
` "command": "npx",\n` +
|
|
28
|
+
` "args": ["-y", "@mesheshq/mcp-server"],\n` +
|
|
29
|
+
` "env": {\n` +
|
|
30
|
+
` "MESHES_ACCESS_KEY": "your_access_key",\n` +
|
|
31
|
+
` "MESHES_SECRET_KEY": "your_secret_key",\n` +
|
|
32
|
+
` "MESHES_ORG_ID": "your_organization_uuid"\n` +
|
|
33
|
+
` }\n` +
|
|
34
|
+
` }\n` +
|
|
35
|
+
` }\n` +
|
|
36
|
+
`}\n\n` +
|
|
37
|
+
`Find your credentials in the Meshes dashboard under Settings → Machine Keys.`);
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
const client = new MeshesApiClient({
|
|
41
|
+
accessKey: ACCESS_KEY,
|
|
42
|
+
secretKey: SECRET_KEY,
|
|
43
|
+
orgId: ORG_ID,
|
|
44
|
+
baseUrl: BASE_URL,
|
|
45
|
+
});
|
|
46
|
+
const server = createServer(client);
|
|
47
|
+
// ── Start Server ──────────────────────────────────────────────
|
|
48
|
+
async function main() {
|
|
49
|
+
const transport = new StdioServerTransport();
|
|
50
|
+
await server.connect(transport);
|
|
51
|
+
console.error('Meshes MCP server running on stdio');
|
|
52
|
+
}
|
|
53
|
+
main().catch((error) => {
|
|
54
|
+
console.error('Fatal error:', error);
|
|
55
|
+
process.exit(1);
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,iEAAiE;AACjE,8DAA8D;AAC9D,+DAA+D;AAC/D,4DAA4D;AAC5D,iDAAiD;AAEjD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACjD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACjD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;AACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,uBAAuB,CAAC;AAEvE,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,IAAI,CAAC,UAAU;QAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACnD,IAAI,CAAC,UAAU;QAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAE3C,OAAO,CAAC,KAAK,CACX,gDAAgD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QACpE,8CAA8C;QAC9C,KAAK;QACL,qBAAqB;QACrB,mBAAmB;QACnB,2BAA2B;QAC3B,iDAAiD;QACjD,kBAAkB;QAClB,mDAAmD;QACnD,mDAAmD;QACnD,qDAAqD;QACrD,WAAW;QACX,SAAS;QACT,OAAO;QACP,OAAO;QACP,8EAA8E,CACjF,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;IACjC,SAAS,EAAE,UAAU;IACrB,SAAS,EAAE,UAAU;IACrB,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,QAAQ;CAClB,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAEpC,iEAAiE;AAEjE,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;AACtD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAOnD,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAa/D"}
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import { registerConnectionTools } from './tools/connections.js';
|
|
3
|
+
import { registerDeliveryTools } from './tools/deliveries.js';
|
|
4
|
+
import { registerEventTools } from './tools/events.js';
|
|
5
|
+
import { registerRuleTools } from './tools/rules.js';
|
|
6
|
+
import { registerWorkspaceTools } from './tools/workspaces.js';
|
|
7
|
+
export function createServer(client) {
|
|
8
|
+
const server = new McpServer({
|
|
9
|
+
name: 'meshes-mcp-server',
|
|
10
|
+
version: '0.1.0',
|
|
11
|
+
});
|
|
12
|
+
registerWorkspaceTools(server, client);
|
|
13
|
+
registerConnectionTools(server, client);
|
|
14
|
+
registerRuleTools(server, client);
|
|
15
|
+
registerEventTools(server, client);
|
|
16
|
+
registerDeliveryTools(server, client);
|
|
17
|
+
return server;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,UAAU,YAAY,CAAC,MAAuB;IAClD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtC,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../../src/tools/connections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAiBpD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,eAAe,QA6QxB"}
|