dero-mcp-server 0.4.0 → 0.4.2
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/data/docs-index.json +161 -38
- package/dist/docs-parse.d.ts.map +1 -1
- package/dist/docs-parse.js +50 -3
- package/dist/docs-parse.js.map +1 -1
- package/dist/docs.d.ts +9 -0
- package/dist/docs.d.ts.map +1 -1
- package/dist/docs.js +13 -1
- package/dist/docs.js.map +1 -1
- package/dist/http-server.d.ts.map +1 -1
- package/dist/http-server.js +15 -8
- package/dist/http-server.js.map +1 -1
- package/dist/rpc-xswd.d.ts +26 -0
- package/dist/rpc-xswd.d.ts.map +1 -0
- package/dist/rpc-xswd.js +232 -0
- package/dist/rpc-xswd.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +9 -3
- package/dist/server.js.map +1 -1
- package/dist/tool-descriptions.d.ts +1 -1
- package/dist/tool-descriptions.d.ts.map +1 -1
- package/dist/tool-descriptions.js +3 -2
- package/dist/tool-descriptions.js.map +1 -1
- package/package.json +2 -2
package/dist/docs-parse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-parse.d.ts","sourceRoot":"","sources":["../src/docs-parse.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,mDAAoD,CAAA;AAClF,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE/D,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAKxD,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAKxD,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,CAAC,CAAA;IACV,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,YAAY,EAAE,CAAA;CACtB,CAAA;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAYD,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOrE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWpE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ1D;
|
|
1
|
+
{"version":3,"file":"docs-parse.d.ts","sourceRoot":"","sources":["../src/docs-parse.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,mDAAoD,CAAA;AAClF,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE/D,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAKxD,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAKxD,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,CAAC,CAAA;IACV,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,YAAY,EAAE,CAAA;CACtB,CAAA;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAYD,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOrE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWpE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ1D;AAoDD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAalD;AAyCD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAqC7E;AAED,wBAAsB,mBAAmB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkBrF"}
|
package/dist/docs-parse.js
CHANGED
|
@@ -60,15 +60,62 @@ export function extractHeadings(markdown) {
|
|
|
60
60
|
}
|
|
61
61
|
return headings;
|
|
62
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Decode the HTML entities that survive MDX → plaintext: &, <, >,
|
|
65
|
+
* ", ', ', and numeric entities. Without this, Captain quotes
|
|
66
|
+
* containing `&` (MDX-escaped `&`) reach MCP consumers as literal "&".
|
|
67
|
+
*/
|
|
68
|
+
function decodeHtmlEntities(input) {
|
|
69
|
+
return input
|
|
70
|
+
.replace(/&#(\d+);/g, (_, code) => String.fromCodePoint(Number(code)))
|
|
71
|
+
.replace(/&#x([0-9a-fA-F]+);/g, (_, hex) => String.fromCodePoint(parseInt(hex, 16)))
|
|
72
|
+
.replace(/"/g, '"')
|
|
73
|
+
.replace(/'/g, "'")
|
|
74
|
+
.replace(/</g, '<')
|
|
75
|
+
.replace(/>/g, '>')
|
|
76
|
+
.replace(/&/g, '&');
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Pull an attribute value out of a JSX opening-tag string. Handles
|
|
80
|
+
* double-quoted and single-quoted forms; returns `undefined` if not present.
|
|
81
|
+
*/
|
|
82
|
+
function readJsxAttr(openTag, name) {
|
|
83
|
+
const match = openTag.match(new RegExp(`${name}\\s*=\\s*"([^"]*)"|${name}\\s*=\\s*'([^']*)'`));
|
|
84
|
+
return match?.[1] ?? match?.[2];
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Transform <CaptainNote> and <Quote> blocks into markdown blockquotes that
|
|
88
|
+
* preserve attribution. Without this, the body text reaches MCP consumers
|
|
89
|
+
* unattributed — "— Captain", date, channel, and source link are all rendered
|
|
90
|
+
* by the React component and never appear in the MDX source.
|
|
91
|
+
*
|
|
92
|
+
* Output shape: `> {body}\n>\n> — {author}, {date}, {channel} ({source})`.
|
|
93
|
+
* Runs before generic JSX stripping so the body survives.
|
|
94
|
+
*/
|
|
95
|
+
function shimAttributedQuotes(input) {
|
|
96
|
+
const pattern = /<(CaptainNote|Quote)\b([\s\S]*?)>([\s\S]*?)<\/\1>/g;
|
|
97
|
+
return input.replace(pattern, (_match, _tag, attrs, body) => {
|
|
98
|
+
const author = readJsxAttr(attrs, 'author') ?? 'Captain';
|
|
99
|
+
const date = readJsxAttr(attrs, 'date') ?? '';
|
|
100
|
+
const channel = readJsxAttr(attrs, 'channel') ?? '';
|
|
101
|
+
const source = readJsxAttr(attrs, 'source') ?? '';
|
|
102
|
+
const codeRef = readJsxAttr(attrs, 'codeRef') ?? '';
|
|
103
|
+
const bodyText = body.trim();
|
|
104
|
+
const attribution = [`— ${author}`, date, channel].filter(Boolean).join(', ');
|
|
105
|
+
const head = source ? `${attribution} (${source})` : attribution;
|
|
106
|
+
const tail = codeRef ? `${head}; verified · Release 142: ${codeRef}` : head;
|
|
107
|
+
return `\n\n> ${bodyText}\n>\n> ${tail}\n\n`;
|
|
108
|
+
});
|
|
109
|
+
}
|
|
63
110
|
export function mdxToPlainText(raw) {
|
|
64
|
-
return raw
|
|
111
|
+
return decodeHtmlEntities(shimAttributedQuotes(raw)
|
|
65
112
|
.replace(/```[\s\S]*?```/g, ' ')
|
|
66
113
|
.replace(/^import\s+.*$/gm, ' ')
|
|
67
|
-
.replace(/<[
|
|
114
|
+
.replace(/<[^>]+>/gs, ' ')
|
|
68
115
|
.replace(/!\[([^\]]*)\]\([^)]+\)/g, '$1')
|
|
69
116
|
.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1')
|
|
70
117
|
.replace(/^#{1,6}\s+/gm, '')
|
|
71
|
-
.replace(/`([^`]+)`/g, '$1')
|
|
118
|
+
.replace(/`([^`]+)`/g, '$1'))
|
|
72
119
|
.replace(/\s+/g, ' ')
|
|
73
120
|
.trim();
|
|
74
121
|
}
|
package/dist/docs-parse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-parse.js","sourceRoot":"","sources":["../src/docs-parse.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"docs-parse.js","sourceRoot":"","sources":["../src/docs-parse.ts"],"names":[],"mappings":"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"}
|
package/dist/docs.d.ts
CHANGED
|
@@ -71,6 +71,7 @@ export declare function searchDeroDocs(args: SearchArgs): Promise<{
|
|
|
71
71
|
export declare function getDeroDocPage(params: {
|
|
72
72
|
product?: DeroDocProduct;
|
|
73
73
|
slug: string;
|
|
74
|
+
offset?: number;
|
|
74
75
|
}): Promise<{
|
|
75
76
|
product: "derod" | "tela" | "hologram" | "deropay";
|
|
76
77
|
slug: string;
|
|
@@ -80,6 +81,10 @@ export declare function getDeroDocPage(params: {
|
|
|
80
81
|
last_updated: string | null;
|
|
81
82
|
headings: string[];
|
|
82
83
|
content: string;
|
|
84
|
+
content_offset: number;
|
|
85
|
+
content_length: number;
|
|
86
|
+
content_truncated: boolean;
|
|
87
|
+
next_offset: number | null;
|
|
83
88
|
source_path: string;
|
|
84
89
|
docs_source: "bundled";
|
|
85
90
|
bundled_index: string;
|
|
@@ -93,6 +98,10 @@ export declare function getDeroDocPage(params: {
|
|
|
93
98
|
last_updated: string | null;
|
|
94
99
|
headings: string[];
|
|
95
100
|
content: string;
|
|
101
|
+
content_offset: number;
|
|
102
|
+
content_length: number;
|
|
103
|
+
content_truncated: boolean;
|
|
104
|
+
next_offset: number | null;
|
|
96
105
|
source_path: string;
|
|
97
106
|
docs_source: "filesystem";
|
|
98
107
|
docs_root: string;
|
package/dist/docs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../src/docs.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,cAAc,EAOpB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAkF7F,KAAK,UAAU,GAAG;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAmBD,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;GAgB1D;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CpD;
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../src/docs.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,cAAc,EAOpB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAkF7F,KAAK,UAAU,GAAG;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAmBD,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;GAgB1D;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CpD;AAOD,wBAAsB,cAAc,CAAC,MAAM,EAAE;IAC3C,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCA"}
|
package/dist/docs.js
CHANGED
|
@@ -141,6 +141,10 @@ export async function searchDeroDocs(args) {
|
|
|
141
141
|
results,
|
|
142
142
|
};
|
|
143
143
|
}
|
|
144
|
+
// Per-call content cap. Long pages (e.g. /captain at ~75k chars) need to be
|
|
145
|
+
// fetched in slices to stay LLM-context-friendly; callers paginate via offset
|
|
146
|
+
// using `content_truncated` + `next_offset` in the response.
|
|
147
|
+
const PAGE_CONTENT_CHUNK = 60000;
|
|
144
148
|
export async function getDeroDocPage(params) {
|
|
145
149
|
const slug = normalizeSlug(params.slug);
|
|
146
150
|
if (!slug)
|
|
@@ -156,6 +160,10 @@ export async function getDeroDocPage(params) {
|
|
|
156
160
|
? `Doc page not found for product=${params.product} slug=${slug}`
|
|
157
161
|
: `Doc page not found for slug=${slug}`);
|
|
158
162
|
}
|
|
163
|
+
const total = target.plainText.length;
|
|
164
|
+
const offset = Math.max(0, Math.min(params.offset ?? 0, total));
|
|
165
|
+
const end = Math.min(offset + PAGE_CONTENT_CHUNK, total);
|
|
166
|
+
const truncated = end < total;
|
|
159
167
|
return {
|
|
160
168
|
...sourceMeta(source),
|
|
161
169
|
product: target.product,
|
|
@@ -165,7 +173,11 @@ export async function getDeroDocPage(params) {
|
|
|
165
173
|
canonical_url: target.canonicalUrl,
|
|
166
174
|
last_updated: target.lastUpdated,
|
|
167
175
|
headings: target.headings,
|
|
168
|
-
content: target.plainText.slice(
|
|
176
|
+
content: target.plainText.slice(offset, end),
|
|
177
|
+
content_offset: offset,
|
|
178
|
+
content_length: total,
|
|
179
|
+
content_truncated: truncated,
|
|
180
|
+
next_offset: truncated ? end : null,
|
|
169
181
|
source_path: target.sourcePath,
|
|
170
182
|
};
|
|
171
183
|
}
|
package/dist/docs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../src/docs.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../src/docs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EACL,iBAAiB,EAIjB,iBAAiB,EACjB,aAAa,EACb,UAAU,GAEX,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,iBAAiB,EAAuB,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAE7F,MAAM,YAAY,GAAG,KAAK,CAAA;AAW1B,IAAI,SAAS,GAA+D,IAAI,CAAA;AAEhF,SAAS,gBAAgB;IACvB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACzD,0CAA0C;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAA;AACtD,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,SAAiB;IAC/C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IAC/C,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAkB,CAAA;IAC/C,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM;QAAE,OAAO,IAAI,CAAA;IACvC,OAAO,MAAM,CAAC,KAAK,CAAA;AACrB,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC9B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,CAAA;IACvD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;QACjE,IAAI,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,CAAA;QACnD,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,gBAAgB,EAAE,CAAA;IACtC,IAAI,MAAM,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,CAAA;IACpD,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAA;IACxC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F,CAAA;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;IAChG,IAAI,SAAS,IAAI,SAAS,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,QAAQ,GAAG,YAAY,EAAE,CAAC;QAC9F,OAAO,SAAS,CAAC,IAAI,CAAA;IACvB,CAAC;IAED,IAAI,KAAqB,CAAA;IACzB,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACxD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;QACjE,CAAC;QACD,KAAK,GAAG,OAAO,CAAA;IACjB,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC9C,CAAC;IAED,MAAM,IAAI,GAAe,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IAC1C,SAAS,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAA;IACzD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,UAAU,CAAC,MAAkB;IACpC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,EAAE,WAAW,EAAE,SAAkB,EAAE,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAA;IAC5F,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,YAAqB,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;AACvE,CAAC;AASD,SAAS,SAAS,CAAC,IAAkB,EAAE,KAAe;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;IACpC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;IACzD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAA;IACzC,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,KAAK,IAAI,CAAC,CAAA;QACpC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,KAAK,IAAI,CAAC,CAAA;QACnC,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,KAAK,IAAI,CAAC,CAAA;QAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,KAAK,IAAI,CAAC,CAAA;IACrC,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAwB;IACzD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,SAAS,EAAE,CAAA;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAEnF,OAAO;QACL,GAAG,UAAU,CAAC,MAAM,CAAC;QACrB,KAAK,EAAE,QAAQ,CAAC,MAAM;QACtB,QAAQ,EAAE,iBAAiB;QAC3B,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,aAAa,EAAE,IAAI,CAAC,YAAY;YAChC,YAAY,EAAE,IAAI,CAAC,WAAW;SAC/B,CAAC,CAAC;KACJ,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAgB;IACnD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;IAC/B,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAE1E,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,SAAS,EAAE,CAAA;IAC3C,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,CAAA;IACrE,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;QACnE,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;YACpC,OAAO,IAAI,KAAK,iBAAiB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,iBAAiB,GAAG,CAAC,CAAA;QAC/E,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,KAAK;SAChB,WAAW,EAAE;SACb,KAAK,CAAC,KAAK,CAAC;SACZ,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC,CAAA;IAElB,MAAM,MAAM,GAAG,QAAQ;SACpB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;SACxD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;SAClC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA;IAEpC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IACxD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/D,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,aAAa,EAAE,IAAI,CAAC,YAAY;QAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;QACrC,KAAK;KACN,CAAC,CAAC,CAAA;IAEH,OAAO;QACL,GAAG,UAAU,CAAC,MAAM,CAAC;QACrB,KAAK;QACL,aAAa,EAAE,MAAM,CAAC,MAAM;QAC5B,QAAQ,EAAE,OAAO,CAAC,MAAM;QACxB,OAAO;KACR,CAAA;AACH,CAAC;AAED,4EAA4E;AAC5E,8EAA8E;AAC9E,6DAA6D;AAC7D,MAAM,kBAAkB,GAAG,KAAK,CAAA;AAEhC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAIpC;IACC,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACvC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;IAE1E,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,SAAS,EAAE,CAAA;IAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACjC,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO;YAAE,OAAO,KAAK,CAAA;QACnE,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAA;IACtE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,MAAM,CAAC,OAAO;YACZ,CAAC,CAAC,kCAAkC,MAAM,CAAC,OAAO,SAAS,IAAI,EAAE;YACjE,CAAC,CAAC,+BAA+B,IAAI,EAAE,CAC1C,CAAA;IACH,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAA;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;IAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,kBAAkB,EAAE,KAAK,CAAC,CAAA;IACxD,MAAM,SAAS,GAAG,GAAG,GAAG,KAAK,CAAA;IAE7B,OAAO;QACL,GAAG,UAAU,CAAC,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,aAAa,EAAE,MAAM,CAAC,YAAY;QAClC,YAAY,EAAE,MAAM,CAAC,WAAW;QAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC;QAC5C,cAAc,EAAE,MAAM;QACtB,cAAc,EAAE,KAAK;QACrB,iBAAiB,EAAE,SAAS;QAC5B,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;QACnC,WAAW,EAAE,MAAM,CAAC,UAAU;KAC/B,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAsCH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAsCH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAoFrD"}
|
package/dist/http-server.js
CHANGED
|
@@ -39,7 +39,7 @@ import { timingSafeEqual } from 'node:crypto';
|
|
|
39
39
|
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
40
40
|
import { createDeroMcpServer } from './server.js';
|
|
41
41
|
import { resolveDaemonBase, describeDaemonResolution } from './daemon-base.js';
|
|
42
|
-
const PACKAGE_VERSION = '0.4.
|
|
42
|
+
const PACKAGE_VERSION = '0.4.1';
|
|
43
43
|
function readEnv() {
|
|
44
44
|
const port = Number.parseInt(process.env.DERO_MCP_HTTP_PORT ?? '8787', 10);
|
|
45
45
|
const host = process.env.DERO_MCP_HTTP_HOST ?? '127.0.0.1';
|
|
@@ -71,13 +71,6 @@ export async function startHttpServer() {
|
|
|
71
71
|
const { port, host, authToken } = readEnv();
|
|
72
72
|
const resolution = await resolveDaemonBase();
|
|
73
73
|
const daemonUrl = resolution.base;
|
|
74
|
-
const mcpServer = createDeroMcpServer(daemonUrl);
|
|
75
|
-
// Stateless mode: no session IDs, no in-memory state across requests.
|
|
76
|
-
// Fits read-only semantics and minimizes the privacy surface.
|
|
77
|
-
const transport = new StreamableHTTPServerTransport({
|
|
78
|
-
sessionIdGenerator: undefined,
|
|
79
|
-
});
|
|
80
|
-
await mcpServer.connect(transport);
|
|
81
74
|
const httpServer = http.createServer(async (req, res) => {
|
|
82
75
|
const url = new URL(req.url ?? '/', `http://${req.headers.host ?? 'localhost'}`);
|
|
83
76
|
if (url.pathname === '/health' && req.method === 'GET') {
|
|
@@ -102,7 +95,21 @@ export async function startHttpServer() {
|
|
|
102
95
|
send(res, 401, JSON.stringify({ error: 'unauthorized' }));
|
|
103
96
|
return;
|
|
104
97
|
}
|
|
98
|
+
// Stateless mode: fresh McpServer + transport per request. The SDK's
|
|
99
|
+
// StreamableHTTPServerTransport carries per-request state (the active
|
|
100
|
+
// response writer, SSE stream); reusing a single transport across
|
|
101
|
+
// requests wedges every request after the first. Per-request isolation
|
|
102
|
+
// also prevents request-ID collisions across concurrent clients.
|
|
103
|
+
const mcpServer = createDeroMcpServer(daemonUrl);
|
|
104
|
+
const transport = new StreamableHTTPServerTransport({
|
|
105
|
+
sessionIdGenerator: undefined,
|
|
106
|
+
});
|
|
107
|
+
res.on('close', () => {
|
|
108
|
+
transport.close().catch(() => { });
|
|
109
|
+
mcpServer.close().catch(() => { });
|
|
110
|
+
});
|
|
105
111
|
try {
|
|
112
|
+
await mcpServer.connect(transport);
|
|
106
113
|
await transport.handleRequest(req, res);
|
|
107
114
|
}
|
|
108
115
|
catch (err) {
|
package/dist/http-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAA;AAClG,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAE9E,MAAM,eAAe,GAAG,OAAO,CAAA;AAE/B,SAAS,OAAO;IACd,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,MAAM,EAAE,EAAE,CAAC,CAAA;IAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,WAAW,CAAA;IAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,SAAS,CAAA;IACtE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;AAClC,CAAC;AAED,SAAS,YAAY,CAAC,GAAyB,EAAE,aAAqB;IACpE,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;IAC3C,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAA;IAClD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;IAC1C,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IACpB,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAA;IAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IACpC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IACvC,OAAO,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAC9B,CAAC;AAED,SAAS,IAAI,CAAC,GAAwB,EAAE,MAAc,EAAE,IAAY,EAAE,WAAW,GAAG,kBAAkB;IACpG,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE;QACpB,cAAc,EAAE,WAAW;QAC3B,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;KAC1C,CAAC,CAAA;IACF,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAA;IAC3C,MAAM,UAAU,GAAG,MAAM,iBAAiB,EAAE,CAAA;IAC5C,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare const XSWD_PORT = 44326;
|
|
2
|
+
export declare const XSWD_ENDPOINT = "ws://localhost:44326/xswd";
|
|
3
|
+
export declare const XSWD_BASE_APP_ID = "io.github.DHEBP/dero-mcp-server";
|
|
4
|
+
export type XswdConfig = {
|
|
5
|
+
client: string;
|
|
6
|
+
endpoint?: string;
|
|
7
|
+
};
|
|
8
|
+
export type XswdTransport = {
|
|
9
|
+
rpc<T>(method: string, params?: unknown, opts?: {
|
|
10
|
+
timeoutMs?: number;
|
|
11
|
+
}): Promise<T>;
|
|
12
|
+
appId: string;
|
|
13
|
+
close(): void;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Create an XSWD transport that proxies DERO.* JSON-RPC calls through the
|
|
17
|
+
* user's wallet on ws://localhost:44326/xswd. Per XSWD routing rules
|
|
18
|
+
* (walletapi/xswd/xswd.go:660-693), DERO.* methods bypass the permission
|
|
19
|
+
* system entirely — one handshake modal at connect, zero per-call modals.
|
|
20
|
+
*
|
|
21
|
+
* Connects lazily on the first rpc() call. Fails loud on unreachable wallet:
|
|
22
|
+
* the rejection surfaces through the existing `RPC_UNREACHABLE` classifier
|
|
23
|
+
* branch via the network-error message match.
|
|
24
|
+
*/
|
|
25
|
+
export declare function createXswdTransport(config: XswdConfig): Promise<XswdTransport>;
|
|
26
|
+
//# sourceMappingURL=rpc-xswd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-xswd.d.ts","sourceRoot":"","sources":["../src/rpc-xswd.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,SAAS,QAAQ,CAAA;AAC9B,eAAO,MAAM,aAAa,8BAAqC,CAAA;AAC/D,eAAO,MAAM,gBAAgB,oCAAoC,CAAA;AAEjE,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IACnF,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,IAAI,IAAI,CAAA;CACd,CAAA;AAwCD;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CA8MpF"}
|
package/dist/rpc-xswd.js
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
const DEFAULT_TIMEOUT_MS = 90_000;
|
|
3
|
+
const HANDSHAKE_TIMEOUT_MS = 30_000;
|
|
4
|
+
// Warm-up traverses the wallet→daemon hop once at startup under an aggressive
|
|
5
|
+
// sub-timeout. The wallet's "always permitted" branch (walletapi/xswd/xswd.go:651)
|
|
6
|
+
// is gated on IsDaemonOnlineCached() — a cached boolean, not a probe — and the
|
|
7
|
+
// forwarding RPC.Call at xswd.go:660 has no per-call deadline. A stale cache
|
|
8
|
+
// silently hangs every DERO.* call until the bridge's outer timeout fires, so
|
|
9
|
+
// surface that mismatch as a fast startup error instead of a slow first-call hang.
|
|
10
|
+
const WARMUP_TIMEOUT_MS = 7_000;
|
|
11
|
+
export const XSWD_PORT = 44326;
|
|
12
|
+
export const XSWD_ENDPOINT = `ws://localhost:${XSWD_PORT}/xswd`;
|
|
13
|
+
export const XSWD_BASE_APP_ID = 'io.github.DHEBP/dero-mcp-server';
|
|
14
|
+
function appIdForClient(client) {
|
|
15
|
+
return createHash('sha256').update(`${XSWD_BASE_APP_ID}:${client}`).digest('hex');
|
|
16
|
+
}
|
|
17
|
+
// XSWD's isASCII check (walletapi/xswd/xswd.go:856-863) is a byte-level loop:
|
|
18
|
+
// any byte > 0x7F fails. So em-dash, en-dash, curly quotes, ellipsis, NBSP,
|
|
19
|
+
// accented letters, and emoji are all rejected. Enforce 7-bit ASCII locally
|
|
20
|
+
// so a stray Unicode glyph fails loudly here instead of round-tripping to the
|
|
21
|
+
// wallet for a generic "Invalid description" / "Invalid name".
|
|
22
|
+
function assertAsciiHandshakeField(field, value) {
|
|
23
|
+
for (let i = 0; i < value.length; i++) {
|
|
24
|
+
const code = value.charCodeAt(i);
|
|
25
|
+
if (code > 0x7f) {
|
|
26
|
+
throw new Error(`XSWD handshake field "${field}" contains non-ASCII char U+${code
|
|
27
|
+
.toString(16)
|
|
28
|
+
.toUpperCase()
|
|
29
|
+
.padStart(4, '0')} at index ${i}; XSWD rejects any byte > 0x7F.`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function describeWsCloseCode(code) {
|
|
34
|
+
if (code === 1000)
|
|
35
|
+
return 'normal closure';
|
|
36
|
+
if (code === 1001)
|
|
37
|
+
return 'going away';
|
|
38
|
+
if (code === 1006)
|
|
39
|
+
return 'abnormal closure (no close frame)';
|
|
40
|
+
if (code === 1008)
|
|
41
|
+
return 'policy violation';
|
|
42
|
+
if (code === 1011)
|
|
43
|
+
return 'internal server error';
|
|
44
|
+
return `code ${code}`;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create an XSWD transport that proxies DERO.* JSON-RPC calls through the
|
|
48
|
+
* user's wallet on ws://localhost:44326/xswd. Per XSWD routing rules
|
|
49
|
+
* (walletapi/xswd/xswd.go:660-693), DERO.* methods bypass the permission
|
|
50
|
+
* system entirely — one handshake modal at connect, zero per-call modals.
|
|
51
|
+
*
|
|
52
|
+
* Connects lazily on the first rpc() call. Fails loud on unreachable wallet:
|
|
53
|
+
* the rejection surfaces through the existing `RPC_UNREACHABLE` classifier
|
|
54
|
+
* branch via the network-error message match.
|
|
55
|
+
*/
|
|
56
|
+
export async function createXswdTransport(config) {
|
|
57
|
+
const client = config.client.trim() || 'headless';
|
|
58
|
+
const endpoint = config.endpoint ?? XSWD_ENDPOINT;
|
|
59
|
+
const appId = appIdForClient(client);
|
|
60
|
+
const appName = `dero-mcp-server.${client}`;
|
|
61
|
+
const appDescription = `dero-mcp-server (${client}) - read-only DERO.* chain access via XSWD.`;
|
|
62
|
+
const ws = new WebSocket(endpoint);
|
|
63
|
+
const pending = new Map();
|
|
64
|
+
let nextId = 1;
|
|
65
|
+
let closed = false;
|
|
66
|
+
let closeReason;
|
|
67
|
+
const failPending = (err) => {
|
|
68
|
+
for (const req of pending.values()) {
|
|
69
|
+
clearTimeout(req.timer);
|
|
70
|
+
req.reject(err);
|
|
71
|
+
}
|
|
72
|
+
pending.clear();
|
|
73
|
+
};
|
|
74
|
+
ws.addEventListener('message', (event) => {
|
|
75
|
+
const data = typeof event.data === 'string' ? event.data : '';
|
|
76
|
+
if (!data)
|
|
77
|
+
return;
|
|
78
|
+
let parsed;
|
|
79
|
+
try {
|
|
80
|
+
parsed = JSON.parse(data);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
if (typeof parsed.id !== 'number')
|
|
86
|
+
return;
|
|
87
|
+
const req = pending.get(parsed.id);
|
|
88
|
+
if (!req)
|
|
89
|
+
return;
|
|
90
|
+
pending.delete(parsed.id);
|
|
91
|
+
clearTimeout(req.timer);
|
|
92
|
+
if (parsed.error) {
|
|
93
|
+
req.reject(new Error(`RPC error ${parsed.error.code}: ${parsed.error.message}${parsed.error.data != null ? ` ${JSON.stringify(parsed.error.data)}` : ''}`));
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
req.resolve(parsed.result);
|
|
97
|
+
});
|
|
98
|
+
ws.addEventListener('close', (event) => {
|
|
99
|
+
closed = true;
|
|
100
|
+
closeReason = describeWsCloseCode(event.code);
|
|
101
|
+
failPending(new Error(`XSWD connection closed: ${closeReason}`));
|
|
102
|
+
});
|
|
103
|
+
ws.addEventListener('error', () => {
|
|
104
|
+
// The close handler runs next and carries the structured reason.
|
|
105
|
+
// Surface a network-shaped message so the existing RPC_UNREACHABLE
|
|
106
|
+
// classifier branch picks this up.
|
|
107
|
+
if (!closed) {
|
|
108
|
+
failPending(new Error('XSWD network error (fetch failed)'));
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
await new Promise((resolve, reject) => {
|
|
112
|
+
const onOpen = () => {
|
|
113
|
+
ws.removeEventListener('open', onOpen);
|
|
114
|
+
ws.removeEventListener('error', onError);
|
|
115
|
+
resolve();
|
|
116
|
+
};
|
|
117
|
+
const onError = () => {
|
|
118
|
+
ws.removeEventListener('open', onOpen);
|
|
119
|
+
ws.removeEventListener('error', onError);
|
|
120
|
+
reject(new Error(`XSWD unreachable at ${endpoint} (fetch failed — is your wallet running with XSWD enabled?)`));
|
|
121
|
+
};
|
|
122
|
+
ws.addEventListener('open', onOpen);
|
|
123
|
+
ws.addEventListener('error', onError);
|
|
124
|
+
});
|
|
125
|
+
// Handshake: the wallet replies with { accepted: bool, message: string }.
|
|
126
|
+
// Approval modal pops at this step; the user sees `appName` / `appDescription`.
|
|
127
|
+
const handshakePayload = {
|
|
128
|
+
id: appId,
|
|
129
|
+
name: appName,
|
|
130
|
+
description: appDescription,
|
|
131
|
+
url: 'https://github.com/DHEBP/dero-mcp-server',
|
|
132
|
+
permissions: {},
|
|
133
|
+
};
|
|
134
|
+
const handshakeAck = await new Promise((resolve, reject) => {
|
|
135
|
+
const timer = setTimeout(() => {
|
|
136
|
+
ws.removeEventListener('message', onMessage);
|
|
137
|
+
reject(new Error(`XSWD handshake timed out after ${HANDSHAKE_TIMEOUT_MS}ms (no approval modal acknowledged?)`));
|
|
138
|
+
}, HANDSHAKE_TIMEOUT_MS);
|
|
139
|
+
const onMessage = (event) => {
|
|
140
|
+
const data = typeof event.data === 'string' ? event.data : '';
|
|
141
|
+
if (!data)
|
|
142
|
+
return;
|
|
143
|
+
try {
|
|
144
|
+
const parsed = JSON.parse(data);
|
|
145
|
+
if (typeof parsed.accepted !== 'boolean')
|
|
146
|
+
return;
|
|
147
|
+
clearTimeout(timer);
|
|
148
|
+
ws.removeEventListener('message', onMessage);
|
|
149
|
+
resolve(parsed);
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
// Not the handshake reply — wait for the next message.
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
ws.addEventListener('message', onMessage);
|
|
156
|
+
assertAsciiHandshakeField('name', handshakePayload.name);
|
|
157
|
+
assertAsciiHandshakeField('description', handshakePayload.description);
|
|
158
|
+
assertAsciiHandshakeField('url', handshakePayload.url);
|
|
159
|
+
ws.send(JSON.stringify(handshakePayload));
|
|
160
|
+
});
|
|
161
|
+
if (!handshakeAck.accepted) {
|
|
162
|
+
ws.close();
|
|
163
|
+
throw new Error(`XSWD handshake rejected by wallet: ${handshakeAck.message}`);
|
|
164
|
+
}
|
|
165
|
+
const rpc = async (method, params, opts) => {
|
|
166
|
+
if (closed) {
|
|
167
|
+
throw new Error(`XSWD connection closed: ${closeReason ?? 'unknown'}`);
|
|
168
|
+
}
|
|
169
|
+
const timeoutMs = opts?.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
170
|
+
const id = nextId++;
|
|
171
|
+
const body = { jsonrpc: '2.0', id, method };
|
|
172
|
+
if (params !== undefined)
|
|
173
|
+
body.params = params;
|
|
174
|
+
return new Promise((resolve, reject) => {
|
|
175
|
+
const timer = setTimeout(() => {
|
|
176
|
+
pending.delete(id);
|
|
177
|
+
reject(new Error(`XSWD request timed out after ${timeoutMs}ms (method ${method})`));
|
|
178
|
+
}, timeoutMs);
|
|
179
|
+
pending.set(id, {
|
|
180
|
+
resolve: (value) => resolve(value),
|
|
181
|
+
reject,
|
|
182
|
+
timer,
|
|
183
|
+
});
|
|
184
|
+
try {
|
|
185
|
+
ws.send(JSON.stringify(body));
|
|
186
|
+
}
|
|
187
|
+
catch (err) {
|
|
188
|
+
pending.delete(id);
|
|
189
|
+
clearTimeout(timer);
|
|
190
|
+
reject(new Error(`XSWD send failed (fetch failed): ${err instanceof Error ? err.message : String(err)}`));
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
};
|
|
194
|
+
const close = () => {
|
|
195
|
+
if (!closed)
|
|
196
|
+
ws.close();
|
|
197
|
+
};
|
|
198
|
+
// Warm-up ping: force one traversal of the wallet→daemon hop now, under
|
|
199
|
+
// WARMUP_TIMEOUT_MS, so a stale IsDaemonOnlineCached() reading fails fast
|
|
200
|
+
// as a startup error instead of silently eating the user's first DERO.*
|
|
201
|
+
// call for the full DEFAULT_TIMEOUT_MS budget. DERO.GetHeight is the
|
|
202
|
+
// leanest idempotent method and bypasses the permission modal via the
|
|
203
|
+
// "always permitted" branch (walletapi/xswd/xswd.go:660-693), exercising
|
|
204
|
+
// the exact code path a real call will take.
|
|
205
|
+
try {
|
|
206
|
+
await rpc('DERO.GetHeight', undefined, { timeoutMs: WARMUP_TIMEOUT_MS });
|
|
207
|
+
}
|
|
208
|
+
catch (err) {
|
|
209
|
+
close();
|
|
210
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
211
|
+
// Classify the failure so the operator sees what actually broke. Three
|
|
212
|
+
// distinct shapes, each pointing at a different layer:
|
|
213
|
+
// 1. Our 7s timer fired (no reply from wallet) → daemon link issue
|
|
214
|
+
// 2. Wallet returned a JSON-RPC error (e.g. -32003) → permission/protocol issue
|
|
215
|
+
// 3. Anything else (ws send failure, socket closed) → connection issue
|
|
216
|
+
// rpc-xswd flattens jrpc errors to "RPC error <code>: <msg>" at line 107,
|
|
217
|
+
// matching the convention classifyToolError() uses for -32601/-32602/-32098.
|
|
218
|
+
if (detail.includes('XSWD request timed out')) {
|
|
219
|
+
throw new Error(`XSWD warm-up failed: wallet's daemon link is unreachable — ` +
|
|
220
|
+
`check that the daemon is running and the wallet's daemon address is current (${detail})`);
|
|
221
|
+
}
|
|
222
|
+
if (detail.startsWith('RPC error ')) {
|
|
223
|
+
throw new Error(`XSWD warm-up failed: wallet refused the warm-up call — ` +
|
|
224
|
+
`DERO.GetHeight should be permitted for a read-only handshake. ` +
|
|
225
|
+
`This usually means the wallet is gating DERO.* methods on a wallet permission ` +
|
|
226
|
+
`(e.g. View Balance), which over-restricts public chain reads per the XSWD spec (${detail})`);
|
|
227
|
+
}
|
|
228
|
+
throw new Error(`XSWD warm-up failed: ${detail}`);
|
|
229
|
+
}
|
|
230
|
+
return { rpc, appId, close };
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=rpc-xswd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-xswd.js","sourceRoot":"","sources":["../src/rpc-xswd.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AA2SnE,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AA2SnE,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CA82BpE"}
|
package/dist/server.js
CHANGED
|
@@ -230,7 +230,7 @@ export function createDeroMcpServer(daemonBaseUrl) {
|
|
|
230
230
|
const rpc = async (method, params) => deroJsonRpc(endpoint, method, params);
|
|
231
231
|
const server = new McpServer({
|
|
232
232
|
name: 'dero-daemon-mcp',
|
|
233
|
-
version: '0.4.
|
|
233
|
+
version: '0.4.1',
|
|
234
234
|
});
|
|
235
235
|
server.registerTool('dero_daemon_ping', readOnly({
|
|
236
236
|
description: TOOL_DESCRIPTIONS.dero_daemon_ping,
|
|
@@ -517,8 +517,14 @@ export function createDeroMcpServer(daemonBaseUrl) {
|
|
|
517
517
|
product: deroDocProductSchema
|
|
518
518
|
.optional()
|
|
519
519
|
.describe('Optional product scope to disambiguate duplicate slugs'),
|
|
520
|
+
offset: z
|
|
521
|
+
.number()
|
|
522
|
+
.int()
|
|
523
|
+
.nonnegative()
|
|
524
|
+
.optional()
|
|
525
|
+
.describe('Byte offset into the page plaintext. Use 0 (or omit) for the first chunk; pass next_offset from a prior response to continue reading a long page.'),
|
|
520
526
|
},
|
|
521
|
-
}), withStructuredErrors('dero_docs_get_page', async ({ slug, product }) => getDeroDocPage({ slug, product })));
|
|
527
|
+
}), withStructuredErrors('dero_docs_get_page', async ({ slug, product, offset }) => getDeroDocPage({ slug, product, offset })));
|
|
522
528
|
server.registerTool('dero_docs_list', readOnly({
|
|
523
529
|
description: TOOL_DESCRIPTIONS.dero_docs_list,
|
|
524
530
|
inputSchema: {
|
|
@@ -584,7 +590,7 @@ export function createDeroMcpServer(daemonBaseUrl) {
|
|
|
584
590
|
mimeType: 'application/json',
|
|
585
591
|
text: JSON.stringify({
|
|
586
592
|
name: 'dero-daemon-mcp',
|
|
587
|
-
version: '0.4.
|
|
593
|
+
version: '0.4.1',
|
|
588
594
|
mode: 'read-only',
|
|
589
595
|
endpoint: endpoint,
|
|
590
596
|
docs_products: DERO_DOC_PRODUCTS,
|