@contextvm/sdk 0.11.8 → 0.11.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/core/utils/base64.d.ts +3 -0
- package/dist/esm/core/utils/base64.d.ts.map +1 -0
- package/dist/esm/core/utils/base64.js +24 -0
- package/dist/esm/core/utils/base64.js.map +1 -0
- package/dist/esm/payments/handlers/ln-bolt11-lnbits-payment-handler.d.ts.map +1 -1
- package/dist/esm/payments/handlers/ln-bolt11-lnbits-payment-handler.js +2 -1
- package/dist/esm/payments/handlers/ln-bolt11-lnbits-payment-handler.js.map +1 -1
- package/dist/esm/payments/processors/ln-bolt11-lnbits-payment-processor.d.ts.map +1 -1
- package/dist/esm/payments/processors/ln-bolt11-lnbits-payment-processor.js +2 -1
- package/dist/esm/payments/processors/ln-bolt11-lnbits-payment-processor.js.map +1 -1
- package/dist/esm/transport/capability-negotiator.d.ts +141 -0
- package/dist/esm/transport/capability-negotiator.d.ts.map +1 -0
- package/dist/esm/transport/capability-negotiator.js +198 -0
- package/dist/esm/transport/capability-negotiator.js.map +1 -0
- package/dist/esm/transport/middleware.d.ts +9 -0
- package/dist/esm/transport/middleware.d.ts.map +1 -0
- package/dist/esm/transport/middleware.js +2 -0
- package/dist/esm/transport/middleware.js.map +1 -0
- package/dist/esm/transport/nostr-client/event-pipeline.d.ts +29 -0
- package/dist/esm/transport/nostr-client/event-pipeline.d.ts.map +1 -0
- package/dist/esm/transport/nostr-client/event-pipeline.js +109 -0
- package/dist/esm/transport/nostr-client/event-pipeline.js.map +1 -0
- package/dist/esm/transport/nostr-client/inbound-coordinator.d.ts +37 -0
- package/dist/esm/transport/nostr-client/inbound-coordinator.d.ts.map +1 -0
- package/dist/esm/transport/nostr-client/inbound-coordinator.js +159 -0
- package/dist/esm/transport/nostr-client/inbound-coordinator.js.map +1 -0
- package/dist/esm/transport/nostr-client/inbound-notification-dispatcher.d.ts +28 -0
- package/dist/esm/transport/nostr-client/inbound-notification-dispatcher.d.ts.map +1 -0
- package/dist/esm/transport/nostr-client/inbound-notification-dispatcher.js +65 -0
- package/dist/esm/transport/nostr-client/inbound-notification-dispatcher.js.map +1 -0
- package/dist/esm/transport/nostr-client/open-stream-factory.d.ts +36 -0
- package/dist/esm/transport/nostr-client/open-stream-factory.d.ts.map +1 -0
- package/dist/esm/transport/nostr-client/open-stream-factory.js +126 -0
- package/dist/esm/transport/nostr-client/open-stream-factory.js.map +1 -0
- package/dist/esm/transport/nostr-client/outbound-sender.d.ts +45 -0
- package/dist/esm/transport/nostr-client/outbound-sender.d.ts.map +1 -0
- package/dist/esm/transport/nostr-client/outbound-sender.js +105 -0
- package/dist/esm/transport/nostr-client/outbound-sender.js.map +1 -0
- package/dist/esm/transport/nostr-client/server-metadata-store.d.ts +35 -0
- package/dist/esm/transport/nostr-client/server-metadata-store.d.ts.map +1 -0
- package/dist/esm/transport/nostr-client/server-metadata-store.js +107 -0
- package/dist/esm/transport/nostr-client/server-metadata-store.js.map +1 -0
- package/dist/esm/transport/nostr-client-transport.d.ts +18 -41
- package/dist/esm/transport/nostr-client-transport.d.ts.map +1 -1
- package/dist/esm/transport/nostr-client-transport.js +117 -553
- package/dist/esm/transport/nostr-client-transport.js.map +1 -1
- package/dist/esm/transport/nostr-server/correlation-store.d.ts +2 -2
- package/dist/esm/transport/nostr-server/correlation-store.d.ts.map +1 -1
- package/dist/esm/transport/nostr-server/correlation-store.js +12 -3
- package/dist/esm/transport/nostr-server/correlation-store.js.map +1 -1
- package/dist/esm/transport/nostr-server/event-pipeline.d.ts +32 -0
- package/dist/esm/transport/nostr-server/event-pipeline.d.ts.map +1 -0
- package/dist/esm/transport/nostr-server/event-pipeline.js +118 -0
- package/dist/esm/transport/nostr-server/event-pipeline.js.map +1 -0
- package/dist/esm/transport/nostr-server/inbound-coordinator.d.ts +56 -0
- package/dist/esm/transport/nostr-server/inbound-coordinator.d.ts.map +1 -0
- package/dist/esm/transport/nostr-server/inbound-coordinator.js +168 -0
- package/dist/esm/transport/nostr-server/inbound-coordinator.js.map +1 -0
- package/dist/esm/transport/nostr-server/inbound-notification-dispatcher.d.ts +44 -0
- package/dist/esm/transport/nostr-server/inbound-notification-dispatcher.d.ts.map +1 -0
- package/dist/esm/transport/nostr-server/inbound-notification-dispatcher.js +153 -0
- package/dist/esm/transport/nostr-server/inbound-notification-dispatcher.js.map +1 -0
- package/dist/esm/transport/nostr-server/open-stream-factory.d.ts +81 -0
- package/dist/esm/transport/nostr-server/open-stream-factory.d.ts.map +1 -0
- package/dist/esm/transport/nostr-server/open-stream-factory.js +224 -0
- package/dist/esm/transport/nostr-server/open-stream-factory.js.map +1 -0
- package/dist/esm/transport/nostr-server/outbound-notification-broadcaster.d.ts +24 -0
- package/dist/esm/transport/nostr-server/outbound-notification-broadcaster.d.ts.map +1 -0
- package/dist/esm/transport/nostr-server/outbound-notification-broadcaster.js +64 -0
- package/dist/esm/transport/nostr-server/outbound-notification-broadcaster.js.map +1 -0
- package/dist/esm/transport/nostr-server/outbound-response-router.d.ts +62 -0
- package/dist/esm/transport/nostr-server/outbound-response-router.d.ts.map +1 -0
- package/dist/esm/transport/nostr-server/outbound-response-router.js +125 -0
- package/dist/esm/transport/nostr-server/outbound-response-router.js.map +1 -0
- package/dist/esm/transport/nostr-server-transport.d.ts +15 -62
- package/dist/esm/transport/nostr-server-transport.d.ts.map +1 -1
- package/dist/esm/transport/nostr-server-transport.js +121 -741
- package/dist/esm/transport/nostr-server-transport.js.map +1 -1
- package/dist/esm/transport/open-stream/registry.d.ts.map +1 -1
- package/dist/esm/transport/open-stream/registry.js +7 -1
- package/dist/esm/transport/open-stream/registry.js.map +1 -1
- package/dist/esm/transport/open-stream/session.d.ts +1 -0
- package/dist/esm/transport/open-stream/session.d.ts.map +1 -1
- package/dist/esm/transport/open-stream/session.js +14 -4
- package/dist/esm/transport/open-stream/session.js.map +1 -1
- package/dist/esm/transport/server-transport-common-schemas.d.ts +1 -0
- package/dist/esm/transport/server-transport-common-schemas.d.ts.map +1 -1
- package/dist/esm/transport/server-transport-common-schemas.js +21 -1
- package/dist/esm/transport/server-transport-common-schemas.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { type JSONRPCResponse, type JSONRPCErrorResponse, type ListToolsResult, type JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { type Logger } from '../../core/utils/logger.js';
|
|
3
|
+
import { type CorrelationStore } from './correlation-store.js';
|
|
4
|
+
import { type ClientSession, type SessionStore } from './session-store.js';
|
|
5
|
+
import { type AnnouncementManager } from './announcement-manager.js';
|
|
6
|
+
/**
|
|
7
|
+
* Dependencies for the OutboundResponseRouter.
|
|
8
|
+
*/
|
|
9
|
+
export interface OutboundResponseRouterDeps {
|
|
10
|
+
correlationStore: CorrelationStore;
|
|
11
|
+
sessionStore: SessionStore;
|
|
12
|
+
announcementManager: AnnouncementManager;
|
|
13
|
+
openStreamFactory: {
|
|
14
|
+
deferIfStreamActive: (eventId: string, response: JSONRPCResponse) => boolean;
|
|
15
|
+
takePendingEviction: (eventId: string) => {
|
|
16
|
+
clientPubkey: string;
|
|
17
|
+
session: ClientSession;
|
|
18
|
+
} | undefined;
|
|
19
|
+
};
|
|
20
|
+
oversizedConfig: {
|
|
21
|
+
enabled: boolean;
|
|
22
|
+
threshold: number;
|
|
23
|
+
chunkSize: number;
|
|
24
|
+
};
|
|
25
|
+
applyListToolsResultTransformers: (result: ListToolsResult) => ListToolsResult;
|
|
26
|
+
buildOutboundTags: (params: {
|
|
27
|
+
baseTags: readonly string[][];
|
|
28
|
+
session: ClientSession;
|
|
29
|
+
}) => string[][];
|
|
30
|
+
createResponseTags: (clientPubkey: string, eventId: string) => string[][];
|
|
31
|
+
chooseGiftWrapKind: (params: {
|
|
32
|
+
session: ClientSession;
|
|
33
|
+
fallbackWrapKind?: number;
|
|
34
|
+
}) => number | undefined;
|
|
35
|
+
sendMcpMessage: (message: JSONRPCMessage, targetPubkey: string, kind: number, tags?: string[][], encrypt?: boolean, onCreateEvent?: (eventId: string) => void, giftWrapKind?: number) => Promise<string>;
|
|
36
|
+
measurePublishedMcpMessageSize: (message: JSONRPCMessage, recipientPublicKey: string, kind: number, tags?: string[][], isEncrypted?: boolean, giftWrapKind?: number) => Promise<number>;
|
|
37
|
+
resolveSafeOversizedChunkSize: (params: {
|
|
38
|
+
desiredChunkSizeBytes: number;
|
|
39
|
+
maxPublishedEventBytes: number;
|
|
40
|
+
recipientPublicKey: string;
|
|
41
|
+
kind: number;
|
|
42
|
+
progressToken: string;
|
|
43
|
+
progress: number;
|
|
44
|
+
tags?: string[][];
|
|
45
|
+
isEncrypted?: boolean;
|
|
46
|
+
giftWrapKind?: number;
|
|
47
|
+
}) => Promise<number>;
|
|
48
|
+
logger: Logger;
|
|
49
|
+
onerror?: (error: Error) => void;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Routes outbound JSON-RPC responses back to the original client.
|
|
53
|
+
*/
|
|
54
|
+
export declare class OutboundResponseRouter {
|
|
55
|
+
private deps;
|
|
56
|
+
constructor(deps: OutboundResponseRouterDeps);
|
|
57
|
+
/**
|
|
58
|
+
* Routes a response, handling oversized transfer and stream deferral.
|
|
59
|
+
*/
|
|
60
|
+
route(response: JSONRPCResponse | JSONRPCErrorResponse): Promise<void>;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=outbound-response-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbound-response-router.d.ts","sourceRoot":"","sources":["../../../../src/transport/nostr-server/outbound-response-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { isJSONRPCResultResponse, InitializeResultSchema, ListToolsResultSchema, ListResourcesResultSchema, ListResourceTemplatesResultSchema, ListPromptsResultSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { CTXVM_MESSAGES_KIND } from '../../core/constants.js';
|
|
3
|
+
import { sendOversizedServerResponse } from './oversized-server-handler.js';
|
|
4
|
+
/**
|
|
5
|
+
* Routes outbound JSON-RPC responses back to the original client.
|
|
6
|
+
*/
|
|
7
|
+
export class OutboundResponseRouter {
|
|
8
|
+
constructor(deps) {
|
|
9
|
+
this.deps = deps;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Routes a response, handling oversized transfer and stream deferral.
|
|
13
|
+
*/
|
|
14
|
+
async route(response) {
|
|
15
|
+
var _a, _b, _c, _d, _e;
|
|
16
|
+
// Handle special announcement responses
|
|
17
|
+
if (response.id === 'announcement') {
|
|
18
|
+
const wasHandled = await this.deps.announcementManager.handleAnnouncementResponse(response);
|
|
19
|
+
if (wasHandled && isJSONRPCResultResponse(response)) {
|
|
20
|
+
if (InitializeResultSchema.safeParse(response.result).success) {
|
|
21
|
+
this.deps.logger.info('Initialized');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
// Find the event route using O(1) lookup
|
|
27
|
+
const nostrEventId = response.id;
|
|
28
|
+
if (this.deps.openStreamFactory.deferIfStreamActive(nostrEventId, response)) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const route = this.deps.correlationStore.popEventRoute(nostrEventId);
|
|
32
|
+
if (!route) {
|
|
33
|
+
(_b = (_a = this.deps).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(`No pending request found for response ID: ${response.id}`));
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const pendingEviction = this.deps.openStreamFactory.takePendingEviction(nostrEventId);
|
|
37
|
+
const session = (_c = this.deps.sessionStore.getSession(route.clientPubkey)) !== null && _c !== void 0 ? _c : pendingEviction === null || pendingEviction === void 0 ? void 0 : pendingEviction.session;
|
|
38
|
+
if (!session) {
|
|
39
|
+
(_e = (_d = this.deps).onerror) === null || _e === void 0 ? void 0 : _e.call(_d, new Error(`No session found for client: ${route.clientPubkey}`));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const parsedListToolsResult = isJSONRPCResultResponse(response)
|
|
43
|
+
? ListToolsResultSchema.safeParse(response.result)
|
|
44
|
+
: null;
|
|
45
|
+
const responseToSend = (parsedListToolsResult === null || parsedListToolsResult === void 0 ? void 0 : parsedListToolsResult.success)
|
|
46
|
+
? {
|
|
47
|
+
...response,
|
|
48
|
+
result: this.deps.applyListToolsResultTransformers(parsedListToolsResult.data),
|
|
49
|
+
}
|
|
50
|
+
: response;
|
|
51
|
+
// Restore the original request ID in the response
|
|
52
|
+
responseToSend.id = route.originalRequestId;
|
|
53
|
+
// CEP-22 Oversized Transfer (proactive path for server responses)
|
|
54
|
+
if (this.deps.oversizedConfig.enabled &&
|
|
55
|
+
route.progressToken &&
|
|
56
|
+
session.supportsOversizedTransfer) {
|
|
57
|
+
const continuationFrameTags = this.deps.createResponseTags(route.clientPubkey, nostrEventId);
|
|
58
|
+
const startFrameTags = this.deps.buildOutboundTags({
|
|
59
|
+
baseTags: continuationFrameTags,
|
|
60
|
+
session,
|
|
61
|
+
});
|
|
62
|
+
const giftWrapKind = this.deps.chooseGiftWrapKind({
|
|
63
|
+
session,
|
|
64
|
+
fallbackWrapKind: route.wrapKind,
|
|
65
|
+
});
|
|
66
|
+
const publishedEventSize = await this.deps.measurePublishedMcpMessageSize(responseToSend, route.clientPubkey, CTXVM_MESSAGES_KIND, startFrameTags, session.isEncrypted, giftWrapKind);
|
|
67
|
+
if (publishedEventSize > this.deps.oversizedConfig.threshold) {
|
|
68
|
+
const chunkSizeBytes = await this.deps.resolveSafeOversizedChunkSize({
|
|
69
|
+
desiredChunkSizeBytes: this.deps.oversizedConfig.chunkSize,
|
|
70
|
+
maxPublishedEventBytes: this.deps.oversizedConfig.threshold,
|
|
71
|
+
recipientPublicKey: route.clientPubkey,
|
|
72
|
+
kind: CTXVM_MESSAGES_KIND,
|
|
73
|
+
progressToken: route.progressToken,
|
|
74
|
+
progress: 2,
|
|
75
|
+
tags: continuationFrameTags,
|
|
76
|
+
isEncrypted: session.isEncrypted,
|
|
77
|
+
giftWrapKind,
|
|
78
|
+
});
|
|
79
|
+
const serialized = JSON.stringify(responseToSend);
|
|
80
|
+
await sendOversizedServerResponse({
|
|
81
|
+
serialized,
|
|
82
|
+
clientPubkey: route.clientPubkey,
|
|
83
|
+
progressToken: route.progressToken,
|
|
84
|
+
startFrameTags,
|
|
85
|
+
continuationFrameTags,
|
|
86
|
+
isEncrypted: session.isEncrypted,
|
|
87
|
+
giftWrapKind,
|
|
88
|
+
}, {
|
|
89
|
+
chunkSizeBytes,
|
|
90
|
+
}, {
|
|
91
|
+
sendMcpMessage: this.deps.sendMcpMessage,
|
|
92
|
+
logger: this.deps.logger,
|
|
93
|
+
});
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Send the response back to the original requester
|
|
98
|
+
const tags = this.deps.buildOutboundTags({
|
|
99
|
+
baseTags: this.deps.createResponseTags(route.clientPubkey, nostrEventId),
|
|
100
|
+
session,
|
|
101
|
+
});
|
|
102
|
+
const giftWrapKind = this.deps.chooseGiftWrapKind({
|
|
103
|
+
session,
|
|
104
|
+
fallbackWrapKind: route.wrapKind,
|
|
105
|
+
});
|
|
106
|
+
// Attach pricing tags to capability list responses so clients can access CEP-8 pricing
|
|
107
|
+
if (isJSONRPCResultResponse(responseToSend)) {
|
|
108
|
+
const result = responseToSend.result;
|
|
109
|
+
if (ListToolsResultSchema.safeParse(result).success ||
|
|
110
|
+
ListResourcesResultSchema.safeParse(result).success ||
|
|
111
|
+
ListResourceTemplatesResultSchema.safeParse(result).success ||
|
|
112
|
+
ListPromptsResultSchema.safeParse(result).success) {
|
|
113
|
+
tags.push(...this.deps.announcementManager.getPricingTags());
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
try {
|
|
117
|
+
await this.deps.sendMcpMessage(responseToSend, route.clientPubkey, CTXVM_MESSAGES_KIND, tags, session.isEncrypted, undefined, giftWrapKind);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
this.deps.correlationStore.registerEventRoute(nostrEventId, route.clientPubkey, route.originalRequestId, route.progressToken, route.wrapKind);
|
|
121
|
+
throw error;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=outbound-response-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outbound-response-router.js","sourceRoot":"","sources":["../../../../src/transport/nostr-server/outbound-response-router.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,uBAAuB,EACvB,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,iCAAiC,EACjC,uBAAuB,GAGxB,MAAM,oCAAoC,CAAC;AAM5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AA+D5E;;GAEG;AACH,MAAM,OAAO,sBAAsB;IACjC,YAAoB,IAAgC;QAAhC,SAAI,GAAJ,IAAI,CAA4B;IAAG,CAAC;IAExD;;OAEG;IACI,KAAK,CAAC,KAAK,CAChB,QAAgD;;QAEhD,wCAAwC;QACxC,IAAI,QAAQ,CAAC,EAAE,KAAK,cAAc,EAAE,CAAC;YACnC,MAAM,UAAU,GACd,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,0BAA0B,CAC5D,QAAQ,CACT,CAAC;YACJ,IAAI,UAAU,IAAI,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpD,IAAI,sBAAsB,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;oBAC9D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YACD,OAAO;QACT,CAAC;QAED,yCAAyC;QACzC,MAAM,YAAY,GAAG,QAAQ,CAAC,EAAY,CAAC;QAC3C,IACE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,YAAY,EAAE,QAAQ,CAAC,EACvE,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QAErE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAA,MAAA,IAAI,CAAC,IAAI,EAAC,OAAO,mDACf,IAAI,KAAK,CAAC,6CAA6C,QAAQ,CAAC,EAAE,EAAE,CAAC,CACtE,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,eAAe,GACnB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAChE,MAAM,OAAO,GACX,MAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,mCACrD,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,OAAO,CAAC;QAE3B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAA,MAAA,IAAI,CAAC,IAAI,EAAC,OAAO,mDACf,IAAI,KAAK,CAAC,gCAAgC,KAAK,CAAC,YAAY,EAAE,CAAC,CAChE,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,qBAAqB,GAAG,uBAAuB,CAAC,QAAQ,CAAC;YAC7D,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;YAClD,CAAC,CAAC,IAAI,CAAC;QAET,MAAM,cAAc,GAAG,CAAA,qBAAqB,aAArB,qBAAqB,uBAArB,qBAAqB,CAAE,OAAO;YACnD,CAAC,CAAC;gBACE,GAAG,QAAQ;gBACX,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAChD,qBAAqB,CAAC,IAAI,CAC3B;aACF;YACH,CAAC,CAAC,QAAQ,CAAC;QAEb,kDAAkD;QAClD,cAAc,CAAC,EAAE,GAAG,KAAK,CAAC,iBAAiB,CAAC;QAE5C,kEAAkE;QAClE,IACE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO;YACjC,KAAK,CAAC,aAAa;YACnB,OAAO,CAAC,yBAAyB,EACjC,CAAC;YACD,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CACxD,KAAK,CAAC,YAAY,EAClB,YAAY,CACb,CAAC;YACF,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBACjD,QAAQ,EAAE,qBAAqB;gBAC/B,OAAO;aACR,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;gBAChD,OAAO;gBACP,gBAAgB,EAAE,KAAK,CAAC,QAAQ;aACjC,CAAC,CAAC;YAEH,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,8BAA8B,CACvE,cAAc,EACd,KAAK,CAAC,YAAY,EAClB,mBAAmB,EACnB,cAAc,EACd,OAAO,CAAC,WAAW,EACnB,YAAY,CACb,CAAC;YAEF,IAAI,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;gBAC7D,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC;oBACnE,qBAAqB,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS;oBAC1D,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS;oBAC3D,kBAAkB,EAAE,KAAK,CAAC,YAAY;oBACtC,IAAI,EAAE,mBAAmB;oBACzB,aAAa,EAAE,KAAK,CAAC,aAAa;oBAClC,QAAQ,EAAE,CAAC;oBACX,IAAI,EAAE,qBAAqB;oBAC3B,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,YAAY;iBACb,CAAC,CAAC;gBAEH,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;gBAClD,MAAM,2BAA2B,CAC/B;oBACE,UAAU;oBACV,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,aAAa,EAAE,KAAK,CAAC,aAAa;oBAClC,cAAc;oBACd,qBAAqB;oBACrB,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,YAAY;iBACb,EACD;oBACE,cAAc;iBACf,EACD;oBACE,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;oBACxC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;iBACzB,CACF,CAAC;gBACF,OAAO;YACT,CAAC;QACH,CAAC;QAED,mDAAmD;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;YACvC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC;YACxE,OAAO;SACR,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;YAChD,OAAO;YACP,gBAAgB,EAAE,KAAK,CAAC,QAAQ;SACjC,CAAC,CAAC;QAEH,uFAAuF;QACvF,IAAI,uBAAuB,CAAC,cAAc,CAAC,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;YACrC,IACE,qBAAqB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO;gBAC/C,yBAAyB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO;gBACnD,iCAAiC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO;gBAC3D,uBAAuB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,EACjD,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAC5B,cAAc,EACd,KAAK,CAAC,YAAY,EAClB,mBAAmB,EACnB,IAAI,EACJ,OAAO,CAAC,WAAW,EACnB,SAAS,EACT,YAAY,CACb,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAC3C,YAAY,EACZ,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,iBAAiB,EACvB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,QAAQ,CACf,CAAC;YACF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
|
|
@@ -8,8 +8,11 @@ import { ClientSession, SessionStore } from './nostr-server/session-store.js';
|
|
|
8
8
|
import { CapabilityExclusion } from './nostr-server/authorization-policy.js';
|
|
9
9
|
import { type ProfileMetadata, type ServerInfo } from './nostr-server/announcement-manager.js';
|
|
10
10
|
import { OversizedTransferReceiver, type TransferPolicy } from './oversized-transfer/index.js';
|
|
11
|
-
import { OpenStreamReceiver, OpenStreamWriter } from './open-stream/index.js';
|
|
12
11
|
import type { OpenStreamTransportPolicy } from './open-stream-policy.js';
|
|
12
|
+
import { ServerOpenStreamFactory } from './nostr-server/open-stream-factory.js';
|
|
13
|
+
import { ServerInboundCoordinator } from './nostr-server/inbound-coordinator.js';
|
|
14
|
+
import type { InboundMiddlewareFn } from './middleware.js';
|
|
15
|
+
export type { InboundMiddlewareFn } from './middleware.js';
|
|
13
16
|
/**
|
|
14
17
|
* Options for configuring the NostrServerTransport.
|
|
15
18
|
*/
|
|
@@ -95,10 +98,6 @@ export interface NostrServerTransportOptions extends BaseNostrTransportOptions {
|
|
|
95
98
|
}
|
|
96
99
|
export type ListToolsResultTransformer = (result: ListToolsResult) => ListToolsResult;
|
|
97
100
|
export type ListToolsAnnouncementTagsProducer = (result: ListToolsResult) => string[][];
|
|
98
|
-
export type InboundMiddlewareFn = (message: JSONRPCMessage, ctx: {
|
|
99
|
-
clientPubkey: string;
|
|
100
|
-
clientPmis?: readonly string[];
|
|
101
|
-
}, forward: (message: JSONRPCMessage) => Promise<void>) => Promise<void>;
|
|
102
101
|
/**
|
|
103
102
|
* A server-side transport layer for CTXVM that uses Nostr events for communication.
|
|
104
103
|
* This transport listens for incoming MCP requests via Nostr events and can send
|
|
@@ -130,20 +129,17 @@ export declare class NostrServerTransport extends BaseNostrTransport implements
|
|
|
130
129
|
private readonly seenEventIds;
|
|
131
130
|
/** Receives inbound oversized-transfer frames from clients (client→server requests). */
|
|
132
131
|
private readonly oversizedReceiver;
|
|
133
|
-
/** Receives inbound open-stream frames from clients (client→server notifications). */
|
|
134
|
-
private readonly openStreamReceiver;
|
|
135
|
-
/** Pending final responses held until their CEP-41 stream terminates. */
|
|
136
|
-
private readonly pendingOpenStreamResponses;
|
|
137
|
-
/** Sessions logically evicted after CEP-41 probe timeout, retained only to flush deferred finals. */
|
|
138
|
-
private readonly pendingOpenStreamSessionEvictions;
|
|
139
|
-
/** Client pubkeys that should no longer receive new notifications. */
|
|
140
|
-
private readonly evictedOpenStreamClientPubkeys;
|
|
141
|
-
/** Active server-side CEP-41 writers keyed by inbound request event id. */
|
|
142
|
-
private readonly openStreamWriters;
|
|
143
132
|
private readonly oversizedEnabled;
|
|
144
133
|
private readonly oversizedThreshold;
|
|
145
134
|
private readonly oversizedChunkSize;
|
|
146
135
|
private readonly openStreamEnabled;
|
|
136
|
+
private readonly capabilityNegotiator;
|
|
137
|
+
private readonly openStreamFactory;
|
|
138
|
+
private readonly eventPipeline;
|
|
139
|
+
private readonly inboundCoordinator;
|
|
140
|
+
private readonly inboundNotificationDispatcher;
|
|
141
|
+
private readonly outboundResponseRouter;
|
|
142
|
+
private readonly outboundNotificationBroadcaster;
|
|
147
143
|
constructor(options: NostrServerTransportOptions);
|
|
148
144
|
/**
|
|
149
145
|
* Sets extra tags to include in server announcement + initialize response events.
|
|
@@ -209,32 +205,8 @@ export declare class NostrServerTransport extends BaseNostrTransport implements
|
|
|
209
205
|
* @returns The client session.
|
|
210
206
|
*/
|
|
211
207
|
private getOrCreateClientSession;
|
|
212
|
-
private takePendingServerDiscoveryTags;
|
|
213
|
-
private buildServerOutboundTags;
|
|
214
|
-
private chooseServerOutboundGiftWrapKind;
|
|
215
208
|
private getRelayUrls;
|
|
216
209
|
private publishEventToRelayUrls;
|
|
217
|
-
/**
|
|
218
|
-
* Handles incoming requests with correlation tracking.
|
|
219
|
-
* @param eventId The Nostr event ID.
|
|
220
|
-
* @param request The request message.
|
|
221
|
-
* @param clientPubkey The client's public key.
|
|
222
|
-
*/
|
|
223
|
-
private handleIncomingRequest;
|
|
224
|
-
private flushPendingOpenStreamResponse;
|
|
225
|
-
private handleOpenStreamWriterAbort;
|
|
226
|
-
private finalizePendingOpenStreamSessionEviction;
|
|
227
|
-
private findEventIdByProgressToken;
|
|
228
|
-
/**
|
|
229
|
-
* Cleans up request correlation for a request that was dropped by middleware.
|
|
230
|
-
*/
|
|
231
|
-
private cleanupDroppedRequest;
|
|
232
|
-
/**
|
|
233
|
-
* Handles incoming notifications.
|
|
234
|
-
* @param clientPubkey The client's public key.
|
|
235
|
-
* @param notification The notification message.
|
|
236
|
-
*/
|
|
237
|
-
private handleIncomingNotification;
|
|
238
210
|
/**
|
|
239
211
|
* Handles response messages by finding the original request and routing back to client.
|
|
240
212
|
* @param response The JSON-RPC response or error to send.
|
|
@@ -261,23 +233,6 @@ export declare class NostrServerTransport extends BaseNostrTransport implements
|
|
|
261
233
|
* @param event The incoming Nostr event.
|
|
262
234
|
*/
|
|
263
235
|
private processIncomingEvent;
|
|
264
|
-
/**
|
|
265
|
-
* Handles encrypted (gift-wrapped) events.
|
|
266
|
-
* @param event The incoming gift-wrapped Nostr event.
|
|
267
|
-
*/
|
|
268
|
-
private handleEncryptedEvent;
|
|
269
|
-
/**
|
|
270
|
-
* Handles unencrypted events.
|
|
271
|
-
* @param event The incoming Nostr event.
|
|
272
|
-
*/
|
|
273
|
-
private handleUnencryptedEvent;
|
|
274
|
-
/**
|
|
275
|
-
* Authorizes and processes an incoming Nostr event, handling message validation,
|
|
276
|
-
* client authorization, session management, and optional client public key injection.
|
|
277
|
-
* @param event The Nostr event to process.
|
|
278
|
-
* @param isEncrypted Whether the original event was encrypted.
|
|
279
|
-
*/
|
|
280
|
-
private authorizeAndProcessEvent;
|
|
281
236
|
/**
|
|
282
237
|
* Test-only accessor for internal state.
|
|
283
238
|
* @internal
|
|
@@ -286,13 +241,11 @@ export declare class NostrServerTransport extends BaseNostrTransport implements
|
|
|
286
241
|
sessionStore: SessionStore;
|
|
287
242
|
correlationStore: CorrelationStore;
|
|
288
243
|
oversizedReceiver: OversizedTransferReceiver;
|
|
289
|
-
openStreamReceiver: OpenStreamReceiver;
|
|
244
|
+
openStreamReceiver: import("./index.js").OpenStreamReceiver;
|
|
245
|
+
openStreamWriters: Map<string, import("./index.js").OpenStreamWriter>;
|
|
290
246
|
pendingOpenStreamResponses: Map<string, JSONRPCResponse>;
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
session: ClientSession;
|
|
294
|
-
}>;
|
|
295
|
-
openStreamWriters: Map<string, OpenStreamWriter>;
|
|
247
|
+
openStreamFactory: ServerOpenStreamFactory;
|
|
248
|
+
inboundCoordinator: ServerInboundCoordinator;
|
|
296
249
|
};
|
|
297
250
|
}
|
|
298
251
|
//# sourceMappingURL=nostr-server-transport.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nostr-server-transport.d.ts","sourceRoot":"","sources":["../../../src/transport/nostr-server-transport.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"nostr-server-transport.d.ts","sourceRoot":"","sources":["../../../src/transport/nostr-server-transport.ts"],"names":[],"mappings":"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"}
|