remnote-mcp-server 0.5.1 → 0.7.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/CHANGELOG.md +46 -2
- package/README.md +20 -8
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/logger.js +3 -3
- package/dist/logger.js.map +1 -1
- package/dist/schemas/remnote-schemas.d.ts +27 -1
- package/dist/schemas/remnote-schemas.js +73 -2
- package/dist/schemas/remnote-schemas.js.map +1 -1
- package/dist/tools/index.d.ts +316 -4
- package/dist/tools/index.js +224 -18
- package/dist/tools/index.js.map +1 -1
- package/dist/types/bridge.d.ts +8 -1
- package/dist/version-compat.d.ts +7 -0
- package/dist/version-compat.js +28 -0
- package/dist/version-compat.js.map +1 -0
- package/dist/websocket-server.d.ts +5 -1
- package/dist/websocket-server.js +22 -1
- package/dist/websocket-server.js.map +1 -1
- package/package.json +1 -1
package/dist/tools/index.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
2
2
|
import { CreateNoteSchema } from '../schemas/remnote-schemas.js';
|
|
3
3
|
import { SearchSchema } from '../schemas/remnote-schemas.js';
|
|
4
|
+
import { SearchByTagSchema } from '../schemas/remnote-schemas.js';
|
|
4
5
|
import { ReadNoteSchema } from '../schemas/remnote-schemas.js';
|
|
5
6
|
import { UpdateNoteSchema } from '../schemas/remnote-schemas.js';
|
|
6
7
|
import { AppendJournalSchema } from '../schemas/remnote-schemas.js';
|
|
8
|
+
import { checkVersionCompatibility } from '../version-compat.js';
|
|
7
9
|
export const CREATE_NOTE_TOOL = {
|
|
8
10
|
name: 'remnote_create_note',
|
|
9
11
|
description: 'Create a new note in RemNote with optional content, parent, and tags',
|
|
@@ -20,15 +22,28 @@ export const CREATE_NOTE_TOOL = {
|
|
|
20
22
|
};
|
|
21
23
|
export const SEARCH_TOOL = {
|
|
22
24
|
name: 'remnote_search',
|
|
23
|
-
description: 'Search the RemNote knowledge base. Results are sorted by type: documents first, then concepts, descriptors, portals, and plain text.',
|
|
25
|
+
description: 'Search the RemNote knowledge base. Results are sorted by type: documents first, then concepts, descriptors, portals, and plain text. Use includeContent: "markdown" for indented markdown previews or "structured" for nested child objects with remIds.',
|
|
24
26
|
inputSchema: {
|
|
25
27
|
type: 'object',
|
|
26
28
|
properties: {
|
|
27
29
|
query: { type: 'string', description: 'Search query text' },
|
|
28
30
|
limit: { type: 'number', description: 'Maximum results (1-150, default: 50)' },
|
|
29
31
|
includeContent: {
|
|
30
|
-
type: '
|
|
31
|
-
|
|
32
|
+
type: 'string',
|
|
33
|
+
enum: ['none', 'markdown', 'structured'],
|
|
34
|
+
description: 'Content rendering mode: "none" omits content (default), "markdown" renders child subtree as indented markdown, "structured" returns nested child objects with remIds',
|
|
35
|
+
},
|
|
36
|
+
depth: {
|
|
37
|
+
type: 'number',
|
|
38
|
+
description: 'Depth of child hierarchy to render for markdown/structured content (0-10, default: 1)',
|
|
39
|
+
},
|
|
40
|
+
childLimit: {
|
|
41
|
+
type: 'number',
|
|
42
|
+
description: 'Maximum children per level (1-500, default: 20)',
|
|
43
|
+
},
|
|
44
|
+
maxContentLength: {
|
|
45
|
+
type: 'number',
|
|
46
|
+
description: 'Maximum character length for rendered content (default: 3000)',
|
|
32
47
|
},
|
|
33
48
|
},
|
|
34
49
|
required: ['query'],
|
|
@@ -44,9 +59,22 @@ export const SEARCH_TOOL = {
|
|
|
44
59
|
properties: {
|
|
45
60
|
remId: { type: 'string', description: 'Unique Rem ID' },
|
|
46
61
|
title: { type: 'string', description: 'Rendered title with markdown formatting' },
|
|
47
|
-
|
|
62
|
+
headline: {
|
|
63
|
+
type: 'string',
|
|
64
|
+
description: 'Display-oriented full line: title + type-aware delimiter + detail (e.g. "Term :: Definition")',
|
|
65
|
+
},
|
|
66
|
+
parentRemId: {
|
|
67
|
+
type: 'string',
|
|
68
|
+
description: 'Direct parent Rem ID (omitted for top-level Rems)',
|
|
69
|
+
},
|
|
70
|
+
parentTitle: {
|
|
48
71
|
type: 'string',
|
|
49
|
-
description: '
|
|
72
|
+
description: 'Direct parent title/front text (omitted for top-level Rems)',
|
|
73
|
+
},
|
|
74
|
+
aliases: {
|
|
75
|
+
type: 'array',
|
|
76
|
+
items: { type: 'string' },
|
|
77
|
+
description: 'Alternate names for the Rem (omitted if none)',
|
|
50
78
|
},
|
|
51
79
|
remType: {
|
|
52
80
|
type: 'string',
|
|
@@ -58,7 +86,59 @@ export const SEARCH_TOOL = {
|
|
|
58
86
|
},
|
|
59
87
|
content: {
|
|
60
88
|
type: 'string',
|
|
61
|
-
description: '
|
|
89
|
+
description: 'Rendered markdown content of child subtree (only when includeContent="markdown")',
|
|
90
|
+
},
|
|
91
|
+
contentStructured: {
|
|
92
|
+
type: 'array',
|
|
93
|
+
description: 'Structured child subtree with nested remIds and metadata (only when includeContent="structured")',
|
|
94
|
+
items: {
|
|
95
|
+
type: 'object',
|
|
96
|
+
properties: {
|
|
97
|
+
remId: { type: 'string', description: 'Child Rem ID' },
|
|
98
|
+
title: { type: 'string', description: 'Rendered child title' },
|
|
99
|
+
headline: {
|
|
100
|
+
type: 'string',
|
|
101
|
+
description: 'Display-oriented child line with type-aware delimiter',
|
|
102
|
+
},
|
|
103
|
+
aliases: {
|
|
104
|
+
type: 'array',
|
|
105
|
+
items: { type: 'string' },
|
|
106
|
+
description: 'Alternate names for the child Rem (omitted if none)',
|
|
107
|
+
},
|
|
108
|
+
remType: {
|
|
109
|
+
type: 'string',
|
|
110
|
+
description: 'Child Rem classification: document, dailyDocument, concept, descriptor, portal, or text',
|
|
111
|
+
},
|
|
112
|
+
cardDirection: {
|
|
113
|
+
type: 'string',
|
|
114
|
+
description: 'Child flashcard direction: forward, reverse, or bidirectional (omitted if not a flashcard)',
|
|
115
|
+
},
|
|
116
|
+
children: {
|
|
117
|
+
type: 'array',
|
|
118
|
+
description: 'Nested child nodes (same shape recursively)',
|
|
119
|
+
items: { type: 'object' },
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
required: ['remId', 'title', 'headline', 'remType', 'children'],
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
contentProperties: {
|
|
126
|
+
type: 'object',
|
|
127
|
+
description: 'Metadata about rendered content',
|
|
128
|
+
properties: {
|
|
129
|
+
childrenRendered: {
|
|
130
|
+
type: 'number',
|
|
131
|
+
description: 'Number of children included in rendered content',
|
|
132
|
+
},
|
|
133
|
+
childrenTotal: {
|
|
134
|
+
type: 'number',
|
|
135
|
+
description: 'Total children in subtree (capped at 2000)',
|
|
136
|
+
},
|
|
137
|
+
contentTruncated: {
|
|
138
|
+
type: 'boolean',
|
|
139
|
+
description: 'Whether content was truncated by maxContentLength',
|
|
140
|
+
},
|
|
141
|
+
},
|
|
62
142
|
},
|
|
63
143
|
},
|
|
64
144
|
},
|
|
@@ -66,14 +146,63 @@ export const SEARCH_TOOL = {
|
|
|
66
146
|
},
|
|
67
147
|
},
|
|
68
148
|
};
|
|
149
|
+
export const SEARCH_BY_TAG_TOOL = {
|
|
150
|
+
name: 'remnote_search_by_tag',
|
|
151
|
+
description: 'Find notes by tag and return resolved ancestor context targets (nearest document/daily document when available, otherwise nearest non-document ancestor). Supports the same includeContent modes as remnote_search.',
|
|
152
|
+
inputSchema: {
|
|
153
|
+
type: 'object',
|
|
154
|
+
properties: {
|
|
155
|
+
tag: {
|
|
156
|
+
type: 'string',
|
|
157
|
+
description: 'Tag name to search (with or without # prefix)',
|
|
158
|
+
},
|
|
159
|
+
limit: { type: 'number', description: 'Maximum results (1-150, default: 50)' },
|
|
160
|
+
includeContent: {
|
|
161
|
+
type: 'string',
|
|
162
|
+
enum: ['none', 'markdown', 'structured'],
|
|
163
|
+
description: 'Content rendering mode: "none" omits content (default), "markdown" renders child subtree as indented markdown, "structured" returns nested child objects with remIds',
|
|
164
|
+
},
|
|
165
|
+
depth: {
|
|
166
|
+
type: 'number',
|
|
167
|
+
description: 'Depth of child hierarchy to render for markdown/structured content (0-10, default: 1)',
|
|
168
|
+
},
|
|
169
|
+
childLimit: {
|
|
170
|
+
type: 'number',
|
|
171
|
+
description: 'Maximum children per level (1-500, default: 20)',
|
|
172
|
+
},
|
|
173
|
+
maxContentLength: {
|
|
174
|
+
type: 'number',
|
|
175
|
+
description: 'Maximum character length for rendered content (default: 3000)',
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
|
+
required: ['tag'],
|
|
179
|
+
},
|
|
180
|
+
outputSchema: SEARCH_TOOL.outputSchema,
|
|
181
|
+
};
|
|
69
182
|
export const READ_NOTE_TOOL = {
|
|
70
183
|
name: 'remnote_read_note',
|
|
71
|
-
description: 'Read a specific note from RemNote by its Rem ID
|
|
184
|
+
description: 'Read a specific note from RemNote by its Rem ID. Returns metadata plus child content in markdown or structured form. Use includeContent: "none" to skip content rendering.',
|
|
72
185
|
inputSchema: {
|
|
73
186
|
type: 'object',
|
|
74
187
|
properties: {
|
|
75
188
|
remId: { type: 'string', description: 'The Rem ID to read' },
|
|
76
|
-
depth: {
|
|
189
|
+
depth: {
|
|
190
|
+
type: 'number',
|
|
191
|
+
description: 'Depth of child hierarchy to render (0-10, default: 5)',
|
|
192
|
+
},
|
|
193
|
+
includeContent: {
|
|
194
|
+
type: 'string',
|
|
195
|
+
enum: ['none', 'markdown', 'structured'],
|
|
196
|
+
description: 'Content rendering mode: "markdown" renders child subtree (default), "structured" returns nested child objects with remIds, "none" omits content',
|
|
197
|
+
},
|
|
198
|
+
childLimit: {
|
|
199
|
+
type: 'number',
|
|
200
|
+
description: 'Maximum children per level (1-500, default: 100)',
|
|
201
|
+
},
|
|
202
|
+
maxContentLength: {
|
|
203
|
+
type: 'number',
|
|
204
|
+
description: 'Maximum character length for rendered content (default: 100000)',
|
|
205
|
+
},
|
|
77
206
|
},
|
|
78
207
|
required: ['remId'],
|
|
79
208
|
},
|
|
@@ -82,9 +211,22 @@ export const READ_NOTE_TOOL = {
|
|
|
82
211
|
properties: {
|
|
83
212
|
remId: { type: 'string', description: 'Unique Rem ID' },
|
|
84
213
|
title: { type: 'string', description: 'Rendered title with markdown formatting' },
|
|
85
|
-
|
|
214
|
+
headline: {
|
|
215
|
+
type: 'string',
|
|
216
|
+
description: 'Display-oriented full line: title + type-aware delimiter + detail (e.g. "Term :: Definition")',
|
|
217
|
+
},
|
|
218
|
+
parentRemId: {
|
|
219
|
+
type: 'string',
|
|
220
|
+
description: 'Direct parent Rem ID (omitted for top-level Rems)',
|
|
221
|
+
},
|
|
222
|
+
parentTitle: {
|
|
86
223
|
type: 'string',
|
|
87
|
-
description: '
|
|
224
|
+
description: 'Direct parent title/front text (omitted for top-level Rems)',
|
|
225
|
+
},
|
|
226
|
+
aliases: {
|
|
227
|
+
type: 'array',
|
|
228
|
+
items: { type: 'string' },
|
|
229
|
+
description: 'Alternate names for the Rem (omitted if none)',
|
|
88
230
|
},
|
|
89
231
|
remType: {
|
|
90
232
|
type: 'string',
|
|
@@ -94,16 +236,59 @@ export const READ_NOTE_TOOL = {
|
|
|
94
236
|
type: 'string',
|
|
95
237
|
description: 'Flashcard direction: forward, reverse, or bidirectional (omitted if not a flashcard)',
|
|
96
238
|
},
|
|
97
|
-
content: {
|
|
98
|
-
|
|
239
|
+
content: {
|
|
240
|
+
type: 'string',
|
|
241
|
+
description: 'Rendered markdown content of child subtree (when includeContent="markdown", which is the default)',
|
|
242
|
+
},
|
|
243
|
+
contentStructured: {
|
|
99
244
|
type: 'array',
|
|
100
|
-
description: '
|
|
245
|
+
description: 'Structured child subtree with nested remIds and metadata (only when includeContent="structured")',
|
|
101
246
|
items: {
|
|
102
247
|
type: 'object',
|
|
103
248
|
properties: {
|
|
104
|
-
remId: { type: 'string' },
|
|
105
|
-
|
|
106
|
-
|
|
249
|
+
remId: { type: 'string', description: 'Child Rem ID' },
|
|
250
|
+
title: { type: 'string', description: 'Rendered child title' },
|
|
251
|
+
headline: {
|
|
252
|
+
type: 'string',
|
|
253
|
+
description: 'Display-oriented child line with type-aware delimiter',
|
|
254
|
+
},
|
|
255
|
+
aliases: {
|
|
256
|
+
type: 'array',
|
|
257
|
+
items: { type: 'string' },
|
|
258
|
+
description: 'Alternate names for the child Rem (omitted if none)',
|
|
259
|
+
},
|
|
260
|
+
remType: {
|
|
261
|
+
type: 'string',
|
|
262
|
+
description: 'Child Rem classification: document, dailyDocument, concept, descriptor, portal, or text',
|
|
263
|
+
},
|
|
264
|
+
cardDirection: {
|
|
265
|
+
type: 'string',
|
|
266
|
+
description: 'Child flashcard direction: forward, reverse, or bidirectional (omitted if not a flashcard)',
|
|
267
|
+
},
|
|
268
|
+
children: {
|
|
269
|
+
type: 'array',
|
|
270
|
+
description: 'Nested child nodes (same shape recursively)',
|
|
271
|
+
items: { type: 'object' },
|
|
272
|
+
},
|
|
273
|
+
},
|
|
274
|
+
required: ['remId', 'title', 'headline', 'remType', 'children'],
|
|
275
|
+
},
|
|
276
|
+
},
|
|
277
|
+
contentProperties: {
|
|
278
|
+
type: 'object',
|
|
279
|
+
description: 'Metadata about rendered content',
|
|
280
|
+
properties: {
|
|
281
|
+
childrenRendered: {
|
|
282
|
+
type: 'number',
|
|
283
|
+
description: 'Number of children included in rendered content',
|
|
284
|
+
},
|
|
285
|
+
childrenTotal: {
|
|
286
|
+
type: 'number',
|
|
287
|
+
description: 'Total children in subtree (capped at 2000)',
|
|
288
|
+
},
|
|
289
|
+
contentTruncated: {
|
|
290
|
+
type: 'boolean',
|
|
291
|
+
description: 'Whether content was truncated by maxContentLength',
|
|
107
292
|
},
|
|
108
293
|
},
|
|
109
294
|
},
|
|
@@ -165,6 +350,11 @@ export function registerAllTools(server, wsServer, logger) {
|
|
|
165
350
|
result = await wsServer.sendRequest('search', args);
|
|
166
351
|
break;
|
|
167
352
|
}
|
|
353
|
+
case 'remnote_search_by_tag': {
|
|
354
|
+
const args = SearchByTagSchema.parse(request.params.arguments);
|
|
355
|
+
result = await wsServer.sendRequest('search_by_tag', args);
|
|
356
|
+
break;
|
|
357
|
+
}
|
|
168
358
|
case 'remnote_read_note': {
|
|
169
359
|
const args = ReadNoteSchema.parse(request.params.arguments);
|
|
170
360
|
result = await wsServer.sendRequest('read_note', args);
|
|
@@ -182,12 +372,27 @@ export function registerAllTools(server, wsServer, logger) {
|
|
|
182
372
|
}
|
|
183
373
|
case 'remnote_status': {
|
|
184
374
|
const connected = wsServer.isConnected();
|
|
375
|
+
const serverVersion = wsServer.getServerVersion();
|
|
376
|
+
const bridgeVersion = wsServer.getBridgeVersion();
|
|
185
377
|
if (!connected) {
|
|
186
|
-
result = { connected: false, message: 'RemNote plugin not connected' };
|
|
378
|
+
result = { connected: false, serverVersion, message: 'RemNote plugin not connected' };
|
|
187
379
|
}
|
|
188
380
|
else {
|
|
189
381
|
const statusResult = await wsServer.sendRequest('get_status', {});
|
|
190
|
-
|
|
382
|
+
const statusObj = typeof statusResult === 'object' && statusResult !== null
|
|
383
|
+
? statusResult
|
|
384
|
+
: {};
|
|
385
|
+
const fallbackBridgeVersion = typeof statusObj.pluginVersion === 'string' ? statusObj.pluginVersion : null;
|
|
386
|
+
const effectiveBridgeVersion = bridgeVersion ?? fallbackBridgeVersion;
|
|
387
|
+
const versionWarning = effectiveBridgeVersion
|
|
388
|
+
? checkVersionCompatibility(serverVersion, effectiveBridgeVersion)
|
|
389
|
+
: null;
|
|
390
|
+
result = {
|
|
391
|
+
connected: true,
|
|
392
|
+
serverVersion,
|
|
393
|
+
...statusObj,
|
|
394
|
+
...(versionWarning ? { version_warning: versionWarning } : {}),
|
|
395
|
+
};
|
|
191
396
|
}
|
|
192
397
|
break;
|
|
193
398
|
}
|
|
@@ -225,6 +430,7 @@ export function registerAllTools(server, wsServer, logger) {
|
|
|
225
430
|
tools: [
|
|
226
431
|
CREATE_NOTE_TOOL,
|
|
227
432
|
SEARCH_TOOL,
|
|
433
|
+
SEARCH_BY_TAG_TOOL,
|
|
228
434
|
READ_NOTE_TOOL,
|
|
229
435
|
UPDATE_NOTE_TOOL,
|
|
230
436
|
APPEND_JOURNAL_TOOL,
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/bridge.d.ts
CHANGED
|
@@ -14,6 +14,13 @@ export interface BridgeResponse {
|
|
|
14
14
|
result?: unknown;
|
|
15
15
|
error?: string;
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Sent by the bridge plugin on connect to identify its version.
|
|
19
|
+
*/
|
|
20
|
+
export interface HelloMessage {
|
|
21
|
+
type: 'hello';
|
|
22
|
+
version: string;
|
|
23
|
+
}
|
|
17
24
|
/**
|
|
18
25
|
* Heartbeat messages
|
|
19
26
|
*/
|
|
@@ -23,4 +30,4 @@ export interface HeartbeatPing {
|
|
|
23
30
|
export interface HeartbeatPong {
|
|
24
31
|
type: 'pong';
|
|
25
32
|
}
|
|
26
|
-
export type BridgeMessage = BridgeRequest | BridgeResponse | HeartbeatPing | HeartbeatPong;
|
|
33
|
+
export type BridgeMessage = BridgeRequest | BridgeResponse | HelloMessage | HeartbeatPing | HeartbeatPong;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version compatibility check for 0.x semver.
|
|
3
|
+
*
|
|
4
|
+
* During 0.x development, minor version bumps may contain breaking changes.
|
|
5
|
+
* Compatible iff major.minor match (patch differences are OK).
|
|
6
|
+
*/
|
|
7
|
+
export declare function checkVersionCompatibility(localVersion: string, bridgeVersion: string): string | null;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version compatibility check for 0.x semver.
|
|
3
|
+
*
|
|
4
|
+
* During 0.x development, minor version bumps may contain breaking changes.
|
|
5
|
+
* Compatible iff major.minor match (patch differences are OK).
|
|
6
|
+
*/
|
|
7
|
+
export function checkVersionCompatibility(localVersion, bridgeVersion) {
|
|
8
|
+
const local = parseVersion(localVersion);
|
|
9
|
+
const bridge = parseVersion(bridgeVersion);
|
|
10
|
+
if (!local || !bridge) {
|
|
11
|
+
return `Cannot parse versions: local=${localVersion}, bridge=${bridgeVersion}`;
|
|
12
|
+
}
|
|
13
|
+
if (local.major !== bridge.major || local.minor !== bridge.minor) {
|
|
14
|
+
return `Version mismatch: server v${localVersion} ↔ bridge v${bridgeVersion}. Minor version must match during 0.x development. See compatibility guide.`;
|
|
15
|
+
}
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
function parseVersion(version) {
|
|
19
|
+
const match = version.match(/^(\d+)\.(\d+)\.(\d+)/);
|
|
20
|
+
if (!match)
|
|
21
|
+
return null;
|
|
22
|
+
return {
|
|
23
|
+
major: parseInt(match[1], 10),
|
|
24
|
+
minor: parseInt(match[2], 10),
|
|
25
|
+
patch: parseInt(match[3], 10),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=version-compat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-compat.js","sourceRoot":"","sources":["../src/version-compat.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,YAAoB,EACpB,aAAqB;IAErB,MAAM,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAE3C,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACtB,OAAO,gCAAgC,YAAY,YAAY,aAAa,EAAE,CAAC;IACjF,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;QACjE,OAAO,6BAA6B,YAAY,cAAc,aAAa,6EAA6E,CAAC;IAC3J,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC7B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;KAC9B,CAAC;AACJ,CAAC"}
|
|
@@ -7,14 +7,18 @@ export declare class WebSocketServer {
|
|
|
7
7
|
private logger;
|
|
8
8
|
private requestLogger;
|
|
9
9
|
private responseLogger;
|
|
10
|
+
private serverVersion;
|
|
11
|
+
private bridgeVersion;
|
|
10
12
|
private pendingRequests;
|
|
11
13
|
private connectCallbacks;
|
|
12
14
|
private disconnectCallbacks;
|
|
13
|
-
constructor(port: number, host: string, logger: Logger, requestLogger?: Logger, responseLogger?: Logger);
|
|
15
|
+
constructor(port: number, host: string, logger: Logger, serverVersion: string, requestLogger?: Logger, responseLogger?: Logger);
|
|
14
16
|
start(): Promise<void>;
|
|
15
17
|
stop(): Promise<void>;
|
|
16
18
|
sendRequest(action: string, payload: Record<string, unknown>): Promise<unknown>;
|
|
17
19
|
isConnected(): boolean;
|
|
20
|
+
getBridgeVersion(): string | null;
|
|
21
|
+
getServerVersion(): string;
|
|
18
22
|
onClientConnect(callback: () => void): void;
|
|
19
23
|
onClientDisconnect(callback: () => void): void;
|
|
20
24
|
private handleMessage;
|
package/dist/websocket-server.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { WebSocketServer as WSServer, WebSocket } from 'ws';
|
|
2
2
|
import { randomUUID } from 'crypto';
|
|
3
|
+
import { checkVersionCompatibility } from './version-compat.js';
|
|
3
4
|
export class WebSocketServer {
|
|
4
5
|
wss = null;
|
|
5
6
|
client = null;
|
|
@@ -8,13 +9,16 @@ export class WebSocketServer {
|
|
|
8
9
|
logger;
|
|
9
10
|
requestLogger = null;
|
|
10
11
|
responseLogger = null;
|
|
12
|
+
serverVersion;
|
|
13
|
+
bridgeVersion = null;
|
|
11
14
|
pendingRequests = new Map();
|
|
12
15
|
connectCallbacks = [];
|
|
13
16
|
disconnectCallbacks = [];
|
|
14
|
-
constructor(port, host, logger, requestLogger, responseLogger) {
|
|
17
|
+
constructor(port, host, logger, serverVersion, requestLogger, responseLogger) {
|
|
15
18
|
this.port = port;
|
|
16
19
|
this.host = host;
|
|
17
20
|
this.logger = logger.child({ context: 'websocket-server' });
|
|
21
|
+
this.serverVersion = serverVersion;
|
|
18
22
|
this.requestLogger = requestLogger || null;
|
|
19
23
|
this.responseLogger = responseLogger || null;
|
|
20
24
|
}
|
|
@@ -49,6 +53,7 @@ export class WebSocketServer {
|
|
|
49
53
|
ws.on('close', () => {
|
|
50
54
|
this.logger.info('WebSocket client disconnected');
|
|
51
55
|
this.client = null;
|
|
56
|
+
this.bridgeVersion = null;
|
|
52
57
|
// Reject all pending requests
|
|
53
58
|
for (const [_id, pending] of this.pendingRequests.entries()) {
|
|
54
59
|
clearTimeout(pending.timeout);
|
|
@@ -138,6 +143,12 @@ export class WebSocketServer {
|
|
|
138
143
|
isConnected() {
|
|
139
144
|
return this.client !== null && this.client.readyState === WebSocket.OPEN;
|
|
140
145
|
}
|
|
146
|
+
getBridgeVersion() {
|
|
147
|
+
return this.bridgeVersion;
|
|
148
|
+
}
|
|
149
|
+
getServerVersion() {
|
|
150
|
+
return this.serverVersion;
|
|
151
|
+
}
|
|
141
152
|
onClientConnect(callback) {
|
|
142
153
|
this.connectCallbacks.push(callback);
|
|
143
154
|
}
|
|
@@ -150,6 +161,16 @@ export class WebSocketServer {
|
|
|
150
161
|
this.logger.debug({
|
|
151
162
|
type: 'type' in message ? message.type : 'response',
|
|
152
163
|
}, 'Received message');
|
|
164
|
+
// Handle hello from bridge plugin
|
|
165
|
+
if ('type' in message && message.type === 'hello') {
|
|
166
|
+
this.bridgeVersion = message.version;
|
|
167
|
+
this.logger.info({ bridgeVersion: message.version }, 'Bridge identified');
|
|
168
|
+
const warning = checkVersionCompatibility(this.serverVersion, message.version);
|
|
169
|
+
if (warning) {
|
|
170
|
+
this.logger.warn({ warning }, 'Bridge version compatibility warning');
|
|
171
|
+
}
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
153
174
|
// Handle pong response to ping
|
|
154
175
|
if ('type' in message && message.type === 'pong') {
|
|
155
176
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-server.js","sourceRoot":"","sources":["../src/websocket-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,IAAI,QAAQ,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"websocket-server.js","sourceRoot":"","sources":["../src/websocket-server.ts"],"names":[],"mappings":"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"}
|