@contextvm/sdk 0.1.11 → 0.1.12

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.
Files changed (49) hide show
  1. package/README.md +19 -143
  2. package/dist/esm/core/constants.d.ts +4 -0
  3. package/dist/esm/core/constants.d.ts.map +1 -1
  4. package/dist/esm/core/constants.js +4 -0
  5. package/dist/esm/core/constants.js.map +1 -1
  6. package/dist/esm/core/encryption.d.ts +4 -3
  7. package/dist/esm/core/encryption.d.ts.map +1 -1
  8. package/dist/esm/core/encryption.js +10 -6
  9. package/dist/esm/core/encryption.js.map +1 -1
  10. package/dist/esm/core/interfaces.d.ts +10 -3
  11. package/dist/esm/core/interfaces.d.ts.map +1 -1
  12. package/dist/esm/core/utils/logger.d.ts +24 -0
  13. package/dist/esm/core/utils/logger.d.ts.map +1 -0
  14. package/dist/esm/core/utils/logger.js +46 -0
  15. package/dist/esm/core/utils/logger.js.map +1 -0
  16. package/dist/esm/core/utils/serializers.d.ts +2 -3
  17. package/dist/esm/core/utils/serializers.d.ts.map +1 -1
  18. package/dist/esm/core/utils/serializers.js +5 -3
  19. package/dist/esm/core/utils/serializers.js.map +1 -1
  20. package/dist/esm/core/utils/utils.d.ts +14 -0
  21. package/dist/esm/core/utils/utils.d.ts.map +1 -1
  22. package/dist/esm/core/utils/utils.js +25 -0
  23. package/dist/esm/core/utils/utils.js.map +1 -1
  24. package/dist/esm/gateway/index.d.ts.map +1 -1
  25. package/dist/esm/gateway/index.js +12 -8
  26. package/dist/esm/gateway/index.js.map +1 -1
  27. package/dist/esm/proxy/index.d.ts.map +1 -1
  28. package/dist/esm/proxy/index.js +10 -8
  29. package/dist/esm/proxy/index.js.map +1 -1
  30. package/dist/esm/relay/simple-relay-pool.d.ts +17 -0
  31. package/dist/esm/relay/simple-relay-pool.d.ts.map +1 -1
  32. package/dist/esm/relay/simple-relay-pool.js +81 -7
  33. package/dist/esm/relay/simple-relay-pool.js.map +1 -1
  34. package/dist/esm/signer/private-key-signer.d.ts +7 -1
  35. package/dist/esm/signer/private-key-signer.d.ts.map +1 -1
  36. package/dist/esm/signer/private-key-signer.js +14 -3
  37. package/dist/esm/signer/private-key-signer.js.map +1 -1
  38. package/dist/esm/transport/base-nostr-transport.d.ts +2 -2
  39. package/dist/esm/transport/base-nostr-transport.d.ts.map +1 -1
  40. package/dist/esm/transport/base-nostr-transport.js +21 -2
  41. package/dist/esm/transport/base-nostr-transport.js.map +1 -1
  42. package/dist/esm/transport/nostr-client-transport.d.ts +2 -6
  43. package/dist/esm/transport/nostr-client-transport.d.ts.map +1 -1
  44. package/dist/esm/transport/nostr-client-transport.js +10 -8
  45. package/dist/esm/transport/nostr-client-transport.js.map +1 -1
  46. package/dist/esm/transport/nostr-server-transport.d.ts.map +1 -1
  47. package/dist/esm/transport/nostr-server-transport.js +10 -8
  48. package/dist/esm/transport/nostr-server-transport.js.map +1 -1
  49. package/package.json +7 -7
package/README.md CHANGED
@@ -1,12 +1,12 @@
1
- # @ctxvm/sdk: CTXVM Protocol SDK
1
+ # ContextVM SDK
2
2
 
3
- A JavaScript/TypeScript SDK that implements the Context Vending Machine (CTXVM) Protocol, bridging Nostr and Model Context Protocol (MCP) to enable decentralized access and exposure of computational services.
3
+ A JavaScript/TypeScript SDK that implements the Context Vending Machine Protocol, bridging Nostr and Model Context Protocol (MCP) to enable decentralized access and exposure of computational services.
4
4
 
5
5
  ## Overview
6
6
 
7
- The CTXVM Protocol defines how Nostr and Model Context Machines can be used to expose MCP server capabilities, enabling standardized usage of these resources through a decentralized, cryptographically secure messaging system.
7
+ The ContextVM Protocol defines how Nostr and Model Context Machines can be used to expose MCP server capabilities, enabling standardized usage of these resources through a decentralized, cryptographically secure messaging system.
8
8
 
9
- This SDK provides the necessary components to interact with the CTXVM Protocol:
9
+ This SDK provides the necessary components to interact with the ContextVM Protocol:
10
10
 
11
11
  - **Core Module**: Contains fundamental definitions, constants, interfaces, and utilities (e.g., encryption, serialization).
12
12
  - **Transports**: Critical for communication, providing `NostrClientTransport` and `NostrServerTransport` implementations for enabling MCP over Nostr.
@@ -19,158 +19,34 @@ Both the Proxy and Gateway leverage Nostr transports, allowing existing MCP serv
19
19
 
20
20
  ## Installation
21
21
 
22
- This project requires [Bun](https://bun.sh/) (version 1.2.0 or higher).
23
-
24
- 1. **Clone the repository:**
25
-
26
- ```bash
27
- git clone https://github.com/ContextVM/ts-sdk.git
28
- cd ts-sdk
29
- ```
30
-
31
- 2. **Install dependencies:**
32
-
33
- ```bash
34
- bun install
35
- ```
36
-
37
- 3. **Build the project:**
38
- ```bash
39
- bun run build
40
- ```
41
-
42
- ## Usage
43
-
44
- The SDK provides methods for bridging MCP and Nostr. At its core, the SDK relies on Nostr transports and utilities to facilitate communication.
45
-
46
- ### Core Building Blocks: Signers and Relay Pools
47
-
48
- The SDK provides default implementations: `PrivateKeySigner` implements the `NostrSigner` interface, and `SimpleRelayPool` implements the `RelayHandler` interface. You can extend the SDK's capabilities by creating custom implementations that satisfy these interfaces, allowing you to integrate with different signing mechanisms or relay management logic.ª
49
-
50
- ### Nostr Transports
51
-
52
- The SDK provides specialized transports to send and receive MCP messages over the Nostr network.
53
-
54
- #### `NostrClientTransport`
55
-
56
- Used by MCP clients to connect to remote MCP servers exposed via Nostr.
57
-
58
- ```typescript
59
- import { Client } from '@modelcontextprotocol/sdk/client';
60
- import { NostrClientTransport } from '@ctxvm/sdk/transport';
61
- import { EncryptionMode } from '@ctxvm/sdk/core';
62
-
63
- // Public key of the target MCP server on Nostr
64
- const REMOTE_SERVER_PUBKEY = 'remote_server_public_key_here';
65
-
66
- const clientNostrTransport = new NostrClientTransport({
67
- signer: signer, // Your NostrSigner instance
68
- relayHandler: relayPool, // Your RelayHandler instance
69
- serverPubkey: REMOTE_SERVER_PUBKEY, // Public key of the target MCP server
70
- encryptionMode: EncryptionMode.OPTIONAL, // Optional: REQUIRED, OPTIONAL (default), or DISABLED
71
- });
72
-
73
- const mcpClient = new Client();
74
-
75
- // To connect the MCP client:
76
- await mcpClient.connect(clientNostrTransport);
77
- // Subsequent MCP calls (e.g., listTools, callTool) would use this transport.
78
- await mcpClient.listTools();
79
- // await mcpClient.close();
80
- ```
81
-
82
- #### `NostrServerTransport`
83
-
84
- Used by MCP servers to expose their capabilities to Nostr clients.
85
-
86
- ```typescript
87
- import { McpServer } from '@modelcontextprotocol/sdk/server';
88
- import { NostrServerTransport } from '@ctxvm/sdk/transport';
89
- import { EncryptionMode } from '@ctxvm/sdk/core';
90
- // Assume signer and relayPool are configured as shown above.
91
-
92
- const server = new McpServer({
93
- name: 'demo-server',
94
- version: '1.0.0',
95
- });
96
-
97
- // Before connecting, register your MCP server's capabilities.
98
-
99
- const serverNostrTransport = new NostrServerTransport({
100
- signer: signer, // Server's NostrSigner instance
101
- relayHandler: relayPool, // Server's RelayHandler instance
102
- isPublicServer: true, // Optional: set to true to announce server capabilities via Nostr events
103
- encryptionMode: EncryptionMode.OPTIONAL, // Optional: REQUIRED, OPTIONAL (default), or DISABLED
104
- serverInfo: {
105
- // Optional: Information for public announcements
106
- name: 'Nostr MCP Example Server',
107
- website: 'https://example.com/mcp-server',
108
- },
109
- });
110
-
111
- // To connect the MCP server and make it available via Nostr:
112
- await mcpServer.connect(serverNostrTransport);
113
- // This will keep the server running and listening for Nostr events.
114
- // To gracefully shut down: await mcpServer.close();
22
+ ```bash
23
+ npm install @contextvm/sdk
115
24
  ```
116
25
 
117
- ### Bridging Components: Proxy and Gateway
118
-
119
- The SDK also provides higher-level components that leverage these transports to bridge conventional MCP setups with Nostr.
26
+ **Note:** You can use your preferred package manager to install the SDK.
120
27
 
121
- #### `NostrMCPProxy` (Client-Side Bridge)
28
+ ## Usage
122
29
 
123
- Allows an MCP client (e.g., a local application communicating via a mcp transport) to communicate with a remote MCP server over Nostr. The proxy acts as a translation layer, using `NostrClientTransport` internally.
30
+ Visit the [ContextVM documentation](https://contextvm.org) for information on how to use ContextVM.
124
31
 
125
- ```typescript
126
- import { StdioServerTransport } from '@modelcontextprotocol/sdk/stdio';
127
- import { NostrMCPProxy } from '@ctxvm/sdk/proxy';
32
+ ## Development
128
33
 
129
- // This transport represents the connection between your local MCP client and the proxy.
130
- const hostTransport = new StdioServerTransport();
34
+ This project requires [Bun](https://bun.sh/) (version 1.2.0 or higher).
131
35
 
132
- const proxy = new NostrMCPProxy({
133
- mcpHostTransport: hostTransport, // Your local client's transport
134
- nostrTransportOptions: {
135
- signer: signer,
136
- relayHandler: relayPool,
137
- serverPubkey: REMOTE_SERVER_PUBKEY, // Target the remote MCP server public key via Nostr
138
- },
139
- });
36
+ 1. Clone the repository:
140
37
 
141
- // To start the proxy:
142
- await proxy.start();
38
+ ```bash
39
+ git clone https://github.com/ContextVM/ts-sdk.git
40
+ cd ts-sdk
143
41
  ```
144
42
 
145
- #### `NostrMCPGateway` (Server-Side Bridge)
146
-
147
- Allows an existing MCP server (e.g., communicating via a mcp transport) to expose its capabilities through Nostr. The gateway uses `NostrServerTransport` internally.
43
+ 2. Install dependencies:
148
44
 
149
- ```typescript
150
- import { StdioClientTransport } from '@modelcontextprotocol/sdk/stdio';
151
- import { NostrMCPGateway } from '@ctxvm/sdk/gateway';
152
-
153
- // This transport defines how the Gateway connects to your traditional MCP server.
154
- const serverTransport = new StdioClientTransport({
155
- command: 'bun',
156
- args: ['path/to/your/mcp-server.ts'],
157
- });
158
-
159
- const gateway = new NostrMCPGateway({
160
- mcpServerTransport: serverTransport, // Your existing MCP server's transport
161
- nostrTransportOptions: {
162
- signer: signer,
163
- relayHandler: relayPool,
164
- isPublicServer: true, // Set to true to announce server capabilities to Nostr clients for discovery
165
- },
166
- });
167
-
168
- // To start the gateway and expose your MCP server to Nostr clients:
169
- await gateway.start();
170
- // The gateway will run indefinitely, relaying messages between Nostr and your MCP server.
45
+ ```bash
46
+ bun install
171
47
  ```
172
48
 
173
- ## Running Tests
49
+ ### Running Tests
174
50
 
175
51
  To run the test suite, use Bun:
176
52
 
@@ -62,4 +62,8 @@ export declare const NOSTR_TAGS: {
62
62
  readonly SUPPORT_ENCRYPTION: "support_encryption";
63
63
  };
64
64
  export declare const announcementMethods: AnnouncementMethods;
65
+ /**
66
+ * Maximum allowed message size in bytes (1MB)
67
+ */
68
+ export declare const MAX_MESSAGE_SIZE: number;
65
69
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/core/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,eAAe,QAAQ,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,2BAA2B,QAAQ,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,UAAU;;IAErB;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;CAEK,CAAC;AAEX,eAAO,MAAM,mBAAmB,EAAE,mBAMxB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/core/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,eAAe,QAAQ,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,2BAA2B,QAAQ,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AAEvC;;GAEG;AACH,eAAO,MAAM,UAAU;;IAErB;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;OAEG;;CAEK,CAAC;AAEX,eAAO,MAAM,mBAAmB,EAAE,mBAMxB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAAc,CAAC"}
@@ -67,4 +67,8 @@ export const announcementMethods = {
67
67
  resourceTemplates: 'resources/templates/list',
68
68
  prompts: 'prompts/list',
69
69
  };
70
+ /**
71
+ * Maximum allowed message size in bytes (1MB)
72
+ */
73
+ export const MAX_MESSAGE_SIZE = 1024 * 1024;
70
74
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/core/constants.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAEzC;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAE9C;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,MAAM,EAAE,GAAG;IACX;;OAEG;IACH,QAAQ,EAAE,GAAG;IACb;;OAEG;IACH,UAAU,EAAE,KAAK;IACjB;;OAEG;IACH,IAAI,EAAE,MAAM;IACZ;;OAEG;IACH,OAAO,EAAE,SAAS;IAClB;;OAEG;IACH,OAAO,EAAE,SAAS;IAClB;;OAEG;IACH,kBAAkB,EAAE,oBAAoB;CAChC,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAwB;IACtD,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,YAAY;IACnB,SAAS,EAAE,gBAAgB;IAC3B,iBAAiB,EAAE,0BAA0B;IAC7C,OAAO,EAAE,cAAc;CACf,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/core/constants.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAEzC;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAE9C;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,MAAM,EAAE,GAAG;IACX;;OAEG;IACH,QAAQ,EAAE,GAAG;IACb;;OAEG;IACH,UAAU,EAAE,KAAK;IACjB;;OAEG;IACH,IAAI,EAAE,MAAM;IACZ;;OAEG;IACH,OAAO,EAAE,SAAS;IAClB;;OAEG;IACH,OAAO,EAAE,SAAS;IAClB;;OAEG;IACH,kBAAkB,EAAE,oBAAoB;CAChC,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAwB;IACtD,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,YAAY;IACnB,SAAS,EAAE,gBAAgB;IAC3B,iBAAiB,EAAE,0BAA0B;IAC7C,OAAO,EAAE,cAAc;CACf,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { NostrEvent } from 'nostr-tools/pure';
2
+ import { NostrSigner } from './interfaces.js';
2
3
  /**
3
4
  * Encrypts a JSON-RPC message using a simplified NIP-17/NIP-59 gift wrap scheme.
4
5
  * The message is encrypted with NIP-44 and wrapped in a kind 1059 event.
@@ -8,11 +9,11 @@ import { NostrEvent } from 'nostr-tools/pure';
8
9
  */
9
10
  export declare function encryptMessage(message: string, recipientPublicKey: string): NostrEvent;
10
11
  /**
11
- * Decrypts a gift-wrapped Nostr event.
12
+ * Decrypts a gift-wrapped Nostr event using the signer's decryption methods.
12
13
  * @param event The gift wrap event (kind 1059).
13
- * @param recipientPrivateKey The private key of the recipient.
14
+ * @param signer The NostrSigner instance for decryption.
14
15
  * @returns The decrypted message content.
15
16
  * @throws If the event is not a valid gift wrap or decryption fails.
16
17
  */
17
- export declare function decryptMessage(event: NostrEvent, recipientPrivateKey: Uint8Array): string;
18
+ export declare function decryptMessage(event: NostrEvent, signer: NostrSigner): Promise<string>;
18
19
  //# sourceMappingURL=encryption.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"encryption.d.ts","sourceRoot":"","sources":["../../../src/core/encryption.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,UAAU,EACX,MAAM,kBAAkB,CAAC;AAG1B;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,kBAAkB,EAAE,MAAM,GACzB,UAAU,CAiBZ;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,UAAU,EACjB,mBAAmB,EAAE,UAAU,GAC9B,MAAM,CAWR"}
1
+ {"version":3,"file":"encryption.d.ts","sourceRoot":"","sources":["../../../src/core/encryption.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,UAAU,EACX,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,kBAAkB,EAAE,MAAM,GACzB,UAAU,CAiBZ;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,CAAC,CAcjB"}
@@ -23,18 +23,22 @@ export function encryptMessage(message, recipientPublicKey) {
23
23
  return finalizeEvent(giftWrap, giftWrapPrivateKey);
24
24
  }
25
25
  /**
26
- * Decrypts a gift-wrapped Nostr event.
26
+ * Decrypts a gift-wrapped Nostr event using the signer's decryption methods.
27
27
  * @param event The gift wrap event (kind 1059).
28
- * @param recipientPrivateKey The private key of the recipient.
28
+ * @param signer The NostrSigner instance for decryption.
29
29
  * @returns The decrypted message content.
30
30
  * @throws If the event is not a valid gift wrap or decryption fails.
31
31
  */
32
- export function decryptMessage(event, recipientPrivateKey) {
32
+ export async function decryptMessage(event, signer) {
33
+ var _a;
33
34
  if (event.kind !== GIFT_WRAP_KIND) {
34
35
  throw new Error('Event is not a gift wrap.');
35
36
  }
36
- const conversationKey = nip44.v2.utils.getConversationKey(recipientPrivateKey, event.pubkey);
37
- const decryptedMsg = nip44.v2.decrypt(event.content, conversationKey);
38
- return decryptedMsg;
37
+ // Use the signer's nip44 decryption if available
38
+ if ((_a = signer.nip44) === null || _a === void 0 ? void 0 : _a.decrypt) {
39
+ return await signer.nip44.decrypt(event.pubkey, event.content);
40
+ }
41
+ // If no nip44 support, throw an error since we can't access the private key directly
42
+ throw new Error('Signer does not support NIP-44 decryption. Please use a signer with nip44 support.');
39
43
  }
40
44
  //# sourceMappingURL=encryption.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../../src/core/encryption.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,YAAY,GAEb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,kBAA0B;IAE1B,MAAM,kBAAkB,GAAG,iBAAiB,EAAE,CAAC;IAC/C,MAAM,iBAAiB,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CACvD,kBAAkB,EAClB,kBAAkB,CACnB,CAAC;IACF,MAAM,gBAAgB,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG;QACf,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,gBAAgB;QACzB,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QAC/C,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QACzC,MAAM,EAAE,iBAAiB;KAC1B,CAAC;IAEF,OAAO,aAAa,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAiB,EACjB,mBAA+B;IAE/B,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,eAAe,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CACvD,mBAAmB,EACnB,KAAK,CAAC,MAAM,CACb,CAAC;IACF,MAAM,YAAY,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACtE,OAAO,YAAY,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../../src/core/encryption.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,YAAY,GAEb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG5D;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,kBAA0B;IAE1B,MAAM,kBAAkB,GAAG,iBAAiB,EAAE,CAAC;IAC/C,MAAM,iBAAiB,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CACvD,kBAAkB,EAClB,kBAAkB,CACnB,CAAC;IACF,MAAM,gBAAgB,GAAG,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG;QACf,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,gBAAgB;QACzB,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QAC/C,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QACzC,MAAM,EAAE,iBAAiB;KAC1B,CAAC;IAEF,OAAO,aAAa,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAiB,EACjB,MAAmB;;IAEnB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,iDAAiD;IACjD,IAAI,MAAA,MAAM,CAAC,KAAK,0CAAE,OAAO,EAAE,CAAC;QAC1B,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC;IAED,qFAAqF;IACrF,MAAM,IAAI,KAAK,CACb,oFAAoF,CACrF,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { InitializeRequest, ListPromptsRequest, ListResourcesRequest, ListResourceTemplatesRequest, ListToolsRequest } from '@modelcontextprotocol/sdk/types.js';
2
- import type { Filter, NostrEvent } from 'nostr-tools';
2
+ import type { EventTemplate, Filter, NostrEvent } from 'nostr-tools';
3
3
  /**
4
4
  * Defines the encryption mode for the transport.
5
5
  * - `optional`: Encrypts messages if the incoming message was encrypted.
@@ -16,8 +16,15 @@ export declare enum EncryptionMode {
16
16
  */
17
17
  export interface NostrSigner {
18
18
  getPublicKey(): Promise<string>;
19
- signEvent(event: Omit<NostrEvent, 'sig' | 'id'>): Promise<NostrEvent>;
20
- getSecretKey(): Promise<Uint8Array>;
19
+ signEvent(event: EventTemplate): Promise<NostrEvent>;
20
+ nip04?: {
21
+ encrypt: (pubkey: string, plaintext: string) => Promise<string>;
22
+ decrypt: (pubkey: string, ciphertext: string) => Promise<string>;
23
+ };
24
+ nip44?: {
25
+ encrypt: (pubkey: string, plaintext: string) => Promise<string>;
26
+ decrypt: (pubkey: string, ciphertext: string) => Promise<string>;
27
+ };
21
28
  }
22
29
  /**
23
30
  * A generic interface for Nostr relays.
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/core/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,4BAA4B,EAC5B,gBAAgB,EACjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEtD;;;;;GAKG;AACH,oBAAY,cAAc;IACxB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtE,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,SAAS,CACP,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,EACpC,MAAM,CAAC,EAAE,MAAM,IAAI,GAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,WAAW,IAAI,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACpC,KAAK,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClC,SAAS,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC1C,iBAAiB,EAAE,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IAC1D,OAAO,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;CACvC"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/core/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,4BAA4B,EAC5B,gBAAgB,EACjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAErE;;;;;GAKG;AACH,oBAAY,cAAc;IACxB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAGrD,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QAChE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;KAClE,CAAC;IAGF,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QAChE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;KAClE,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,SAAS,CACP,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,EACpC,MAAM,CAAC,EAAE,MAAM,IAAI,GAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,WAAW,IAAI,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACpC,KAAK,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClC,SAAS,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC1C,iBAAiB,EAAE,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IAC1D,OAAO,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;CACvC"}
@@ -0,0 +1,24 @@
1
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
2
+ export interface LogEntry {
3
+ level: LogLevel;
4
+ timestamp: string;
5
+ module: string;
6
+ message: string;
7
+ data?: unknown;
8
+ }
9
+ export interface Logger {
10
+ debug(message: string, data?: unknown): void;
11
+ info(message: string, data?: unknown): void;
12
+ warn(message: string, data?: unknown): void;
13
+ error(message: string, data?: unknown): void;
14
+ withModule(newModule: string): Logger;
15
+ }
16
+ /**
17
+ * Creates a logger for the specified module with configurable log level
18
+ */
19
+ export declare function createLogger(module: string, minLevel?: LogLevel): Logger;
20
+ /**
21
+ * Default logger instance for the application
22
+ */
23
+ export declare const logger: Logger;
24
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/logger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;CACvC;AASD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,QAAiB,GAC1B,MAAM,CAwCR;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,QAGlB,CAAC"}
@@ -0,0 +1,46 @@
1
+ const LOG_LEVELS = {
2
+ debug: 0,
3
+ info: 1,
4
+ warn: 2,
5
+ error: 3,
6
+ };
7
+ /**
8
+ * Creates a logger for the specified module with configurable log level
9
+ */
10
+ export function createLogger(module, minLevel = 'info') {
11
+ const minLevelValue = LOG_LEVELS[minLevel];
12
+ const shouldLog = (level) => LOG_LEVELS[level] >= minLevelValue;
13
+ const formatMessage = (entry) => {
14
+ const { level, timestamp, module, message, data } = entry;
15
+ let formatted = `[${timestamp}] [${level.toUpperCase()}] [${module}] ${message}`;
16
+ if (data !== undefined) {
17
+ const dataStr = typeof data === 'string' ? data : JSON.stringify(data);
18
+ formatted += ` ${dataStr}`;
19
+ }
20
+ return formatted;
21
+ };
22
+ const log = (level, message, data) => {
23
+ if (!shouldLog(level))
24
+ return;
25
+ const entry = {
26
+ level,
27
+ timestamp: new Date().toISOString(),
28
+ module,
29
+ message,
30
+ data,
31
+ };
32
+ console.error(formatMessage(entry));
33
+ };
34
+ return {
35
+ debug: (message, data) => log('debug', message, data),
36
+ info: (message, data) => log('info', message, data),
37
+ warn: (message, data) => log('warn', message, data),
38
+ error: (message, data) => log('error', message, data),
39
+ withModule: (newModule) => createLogger(newModule, minLevel),
40
+ };
41
+ }
42
+ /**
43
+ * Default logger instance for the application
44
+ */
45
+ export const logger = createLogger('ctxvm', process.env.LOG_LEVEL || 'error');
46
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../../src/core/utils/logger.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,GAA6B;IAC3C,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACT,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAc,EACd,WAAqB,MAAM;IAE3B,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAE3C,MAAM,SAAS,GAAG,CAAC,KAAe,EAAW,EAAE,CAC7C,UAAU,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC;IAErC,MAAM,aAAa,GAAG,CAAC,KAAe,EAAU,EAAE;QAChD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;QAC1D,IAAI,SAAS,GAAG,IAAI,SAAS,MAAM,KAAK,CAAC,WAAW,EAAE,MAAM,MAAM,KAAK,OAAO,EAAE,CAAC;QAEjF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACvE,SAAS,IAAI,IAAI,OAAO,EAAE,CAAC;QAC7B,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,IAAc,EAAQ,EAAE;QACrE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO;QAE9B,MAAM,KAAK,GAAa;YACtB,KAAK;YACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM;YACN,OAAO;YACP,IAAI;SACL,CAAC;QAEF,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,CAAC,OAAe,EAAE,IAAc,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;QACvE,IAAI,EAAE,CAAC,OAAe,EAAE,IAAc,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;QACrE,IAAI,EAAE,CAAC,OAAe,EAAE,IAAc,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;QACrE,KAAK,EAAE,CAAC,OAAe,EAAE,IAAc,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;QAEvE,UAAU,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC;KACrE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,YAAY,CAChC,OAAO,EACN,OAAO,CAAC,GAAG,CAAC,SAAsB,IAAI,OAAO,CAC/C,CAAC"}
@@ -14,10 +14,9 @@ export declare function mcpToNostrEvent(mcpMessage: JSONRPCMessage, pubkey: stri
14
14
  * Deserializes a Nostr event into an MCP message.
15
15
  *
16
16
  * @param event The Nostr event to deserialize.
17
- * @returns An MCP request or response object.
18
- * @throws Error if the event content is not valid JSON
17
+ * @returns An MCP request or response object, or null if the event content is not valid JSON
19
18
  */
20
- export declare function nostrEventToMcpMessage(event: NostrEvent): JSONRPCMessage;
19
+ export declare function nostrEventToMcpMessage(event: NostrEvent): JSONRPCMessage | null;
21
20
  /**
22
21
  * Extracts a specific tag from a Nostr event.
23
22
  *
@@ -1 +1 @@
1
- {"version":3,"file":"serializers.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/serializers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,MAAM,EAAE,EAAO,GACpB,aAAa,CAQf;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CASxE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EACxB,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS,CAGpB"}
1
+ {"version":3,"file":"serializers.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/serializers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAIzE;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,MAAM,EAAE,EAAO,GACpB,aAAa,CAQf;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,UAAU,GAChB,cAAc,GAAG,IAAI,CAUvB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,EACxB,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS,CAGpB"}
@@ -1,3 +1,5 @@
1
+ import { createLogger } from './logger.js';
2
+ const logger = createLogger('serializers');
1
3
  /**
2
4
  * Serializes an MCP message into a Nostr event object.
3
5
  *
@@ -20,8 +22,7 @@ export function mcpToNostrEvent(mcpMessage, pubkey, kind, tags = []) {
20
22
  * Deserializes a Nostr event into an MCP message.
21
23
  *
22
24
  * @param event The Nostr event to deserialize.
23
- * @returns An MCP request or response object.
24
- * @throws Error if the event content is not valid JSON
25
+ * @returns An MCP request or response object, or null if the event content is not valid JSON
25
26
  */
26
27
  export function nostrEventToMcpMessage(event) {
27
28
  try {
@@ -29,7 +30,8 @@ export function nostrEventToMcpMessage(event) {
29
30
  return content;
30
31
  }
31
32
  catch (error) {
32
- throw new Error(`Invalid JSON in Nostr event content: ${error instanceof Error ? error.message : 'Unknown error'}`);
33
+ logger.error(`Invalid JSON in Nostr event content: ${error instanceof Error ? error.message : 'Unknown error'}`);
34
+ return null;
33
35
  }
34
36
  }
35
37
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"serializers.js","sourceRoot":"","sources":["../../../../src/core/utils/serializers.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC7B,UAA0B,EAC1B,MAAc,EACd,IAAY,EACZ,OAAmB,EAAE;IAErB,OAAO;QACL,MAAM;QACN,IAAI;QACJ,IAAI;QACJ,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QACnC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAiB;IACtD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,wCAAwC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACnG,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAwB,EACxB,OAAe;IAEf,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;IAC/C,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"serializers.js","sourceRoot":"","sources":["../../../../src/core/utils/serializers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;AAC3C;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC7B,UAA0B,EAC1B,MAAc,EACd,IAAY,EACZ,OAAmB,EAAE;IAErB,OAAO;QACL,MAAM;QACN,IAAI;QACJ,IAAI;QACJ,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QACnC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAiB;IAEjB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CACV,wCAAwC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACnG,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAwB,EACxB,OAAe;IAEf,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;IAC/C,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAClC,CAAC"}
@@ -1,2 +1,16 @@
1
+ import { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';
2
+ /**
3
+ * Sleeps for a specified number of milliseconds.
4
+ * @param ms The number of milliseconds to sleep.
5
+ * @returns A promise that resolves after the specified number of milliseconds.
6
+ */
1
7
  export declare const sleep: (ms: number) => Promise<unknown>;
8
+ /**
9
+ * Validates message size
10
+ */
11
+ export declare function validateMessageSize(message: string): boolean;
12
+ /**
13
+ * Validates a message using the MCP SDK's schema
14
+ */
15
+ export declare function validateMessage(message: unknown): JSONRPCMessage | null;
2
16
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,qBACmB,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/core/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEf,MAAM,oCAAoC,CAAC;AAG5C;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,qBACmB,CAAC;AAEpD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAG5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,GAAG,IAAI,CAMvE"}
@@ -1,2 +1,27 @@
1
+ import { JSONRPCMessageSchema, } from '@modelcontextprotocol/sdk/types.js';
2
+ import { MAX_MESSAGE_SIZE } from '../constants.js';
3
+ /**
4
+ * Sleeps for a specified number of milliseconds.
5
+ * @param ms The number of milliseconds to sleep.
6
+ * @returns A promise that resolves after the specified number of milliseconds.
7
+ */
1
8
  export const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
9
+ /**
10
+ * Validates message size
11
+ */
12
+ export function validateMessageSize(message) {
13
+ const size = new Blob([message]).size;
14
+ return size <= MAX_MESSAGE_SIZE;
15
+ }
16
+ /**
17
+ * Validates a message using the MCP SDK's schema
18
+ */
19
+ export function validateMessage(message) {
20
+ try {
21
+ return JSONRPCMessageSchema.parse(message);
22
+ }
23
+ catch (_a) {
24
+ return null;
25
+ }
26
+ }
2
27
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/core/utils/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAClC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/core/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,oBAAoB,GACrB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAClC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAEpD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACtC,OAAO,IAAI,IAAI,gBAAgB,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,IAAI,CAAC;QACH,OAAO,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/gateway/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAC/E,OAAO,EAEL,2BAA2B,EAC5B,MAAM,wCAAwC,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,kGAAkG;IAClG,kBAAkB,EAAE,SAAS,CAAC;IAC9B,yDAAyD;IACzD,qBAAqB,EAAE,2BAA2B,CAAC;CACpD;AAED;;;;;;GAMG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAY;IAC/C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAuB;IAC5D,OAAO,CAAC,SAAS,CAAS;gBAEd,OAAO,EAAE,sBAAsB;IAS3C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBnC;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBlC;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;OAGG;IACI,QAAQ,IAAI,OAAO;CAG3B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/gateway/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAC/E,OAAO,EAEL,2BAA2B,EAC5B,MAAM,wCAAwC,CAAC;AAKhD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,kGAAkG;IAClG,kBAAkB,EAAE,SAAS,CAAC;IAC9B,yDAAyD;IACzD,qBAAqB,EAAE,2BAA2B,CAAC;CACpD;AAED;;;;;;GAMG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAY;IAC/C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAuB;IAC5D,OAAO,CAAC,SAAS,CAAS;gBAEd,OAAO,EAAE,sBAAsB;IAS3C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAsB1B;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBnC;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBlC;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;OAGG;IACI,QAAQ,IAAI,OAAO;CAG3B"}
@@ -1,4 +1,6 @@
1
1
  import { NostrServerTransport, } from '../transport/nostr-server-transport.js';
2
+ import { createLogger } from '../core/utils/logger.js';
3
+ const logger = createLogger('gateway');
2
4
  /**
3
5
  * The main gateway class that orchestrates communication between Nostr clients
4
6
  * and a local MCP server. It acts as a bridge, receiving MCP requests via Nostr
@@ -19,6 +21,7 @@ export class NostrMCPGateway {
19
21
  setupEventHandlers() {
20
22
  // Forward messages from Nostr to the MCP server, handling any potential errors.
21
23
  this.nostrServerTransport.onmessage = (message) => {
24
+ logger.debug('Received message from Nostr:', message);
22
25
  this.mcpServerTransport
23
26
  .send(message)
24
27
  .catch(this.handleServerError.bind(this));
@@ -27,6 +30,7 @@ export class NostrMCPGateway {
27
30
  this.nostrServerTransport.onclose = this.handleNostrClose.bind(this);
28
31
  // Forward messages from the MCP server to the Nostr transport, handling any potential errors.
29
32
  this.mcpServerTransport.onmessage = (message) => {
33
+ logger.debug('Received message from MCP server:', message);
30
34
  this.nostrServerTransport
31
35
  .send(message)
32
36
  .catch(this.handleNostrError.bind(this));
@@ -46,10 +50,10 @@ export class NostrMCPGateway {
46
50
  await this.mcpServerTransport.start();
47
51
  await this.nostrServerTransport.start();
48
52
  this.isRunning = true;
49
- console.log('NostrMCPGateway started successfully');
53
+ logger.info('NostrMCPGateway started successfully');
50
54
  }
51
55
  catch (error) {
52
- console.error('Failed to start NostrMCPGateway:', error);
56
+ logger.error('Failed to start NostrMCPGateway:', error);
53
57
  await this.stop();
54
58
  throw error;
55
59
  }
@@ -66,10 +70,10 @@ export class NostrMCPGateway {
66
70
  await this.nostrServerTransport.close();
67
71
  await this.mcpServerTransport.close();
68
72
  this.isRunning = false;
69
- console.log('NostrMCPGateway stopped successfully');
73
+ logger.info('NostrMCPGateway stopped successfully');
70
74
  }
71
75
  catch (error) {
72
- console.error('Error stopping NostrMCPGateway:', error);
76
+ logger.error('Error stopping NostrMCPGateway:', error);
73
77
  throw error;
74
78
  }
75
79
  }
@@ -78,26 +82,26 @@ export class NostrMCPGateway {
78
82
  * @param error The error that occurred.
79
83
  */
80
84
  handleNostrError(error) {
81
- console.error('Nostr transport error:', error);
85
+ logger.error('Nostr transport error:', error);
82
86
  }
83
87
  /**
84
88
  * Handles the Nostr transport closing.
85
89
  */
86
90
  handleNostrClose() {
87
- console.log('Nostr transport closed');
91
+ logger.info('Nostr transport closed');
88
92
  }
89
93
  /**
90
94
  * Handles errors from the MCP server transport.
91
95
  * @param error The error that occurred.
92
96
  */
93
97
  handleServerError(error) {
94
- console.error('MCP server transport error:', error);
98
+ logger.error('MCP server transport error:', error);
95
99
  }
96
100
  /**
97
101
  * Handles the MCP server transport closing.
98
102
  */
99
103
  handleServerClose() {
100
- console.log('MCP server transport closed');
104
+ logger.info('MCP server transport closed');
101
105
  }
102
106
  /**
103
107
  * Gets the current status of the gateway.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/gateway/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/gateway/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/proxy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAE1E,OAAO,EAEL,qBAAqB,EACtB,MAAM,wCAAwC,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,gBAAgB,EAAE,SAAS,CAAC;IAC5B;;OAEG;IACH,qBAAqB,EAAE,qBAAqB,CAAC;CAC9C;AAED;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,gBAAgB,CAAY;IACpC,OAAO,CAAC,cAAc,CAAuB;gBAEjC,OAAO,EAAE,oBAAoB;IAOzC;;;;;OAKG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYnC;;;;OAIG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC,OAAO,CAAC,kBAAkB;CAwB3B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/proxy/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAE1E,OAAO,EAEL,qBAAqB,EACtB,MAAM,wCAAwC,CAAC;AAKhD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,gBAAgB,EAAE,SAAS,CAAC;IAC5B;;OAEG;IACH,qBAAqB,EAAE,qBAAqB,CAAC;CAC9C;AAED;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,gBAAgB,CAAY;IACpC,OAAO,CAAC,cAAc,CAAuB;gBAEjC,OAAO,EAAE,oBAAoB;IAOzC;;;;;OAKG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYnC;;;;OAIG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC,OAAO,CAAC,kBAAkB;CAwB3B"}