@cyanheads/zenodo-mcp-server 0.1.1 → 0.1.3
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/AGENTS.md +30 -22
- package/CLAUDE.md +30 -22
- package/Dockerfile +86 -40
- package/README.md +31 -4
- package/changelog/0.1.x/0.1.2.md +33 -0
- package/changelog/0.1.x/0.1.3.md +35 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/get-record.tool.d.ts +106 -2
- package/dist/mcp-server/tools/definitions/get-record.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/get-record.tool.js +453 -107
- package/dist/mcp-server/tools/definitions/get-record.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/index.d.ts +283 -180
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/list-files.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/list-files.tool.js +28 -22
- package/dist/mcp-server/tools/definitions/list-files.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/list-versions.tool.d.ts +1 -1
- package/dist/mcp-server/tools/definitions/list-versions.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/list-versions.tool.js +30 -21
- package/dist/mcp-server/tools/definitions/list-versions.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/lookup-vocabulary.tool.d.ts +2 -1
- package/dist/mcp-server/tools/definitions/lookup-vocabulary.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/lookup-vocabulary.tool.js +41 -24
- package/dist/mcp-server/tools/definitions/lookup-vocabulary.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/read-file.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/read-file.tool.js +29 -27
- package/dist/mcp-server/tools/definitions/read-file.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-records.tool.d.ts +3 -3
- package/dist/mcp-server/tools/definitions/search-records.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-records.tool.js +145 -35
- package/dist/mcp-server/tools/definitions/search-records.tool.js.map +1 -1
- package/dist/mcp-server/tools/paging.d.ts +42 -0
- package/dist/mcp-server/tools/paging.d.ts.map +1 -0
- package/dist/mcp-server/tools/paging.js +44 -0
- package/dist/mcp-server/tools/paging.js.map +1 -0
- package/dist/mcp-server/tools/record-miss.d.ts +5 -1
- package/dist/mcp-server/tools/record-miss.d.ts.map +1 -1
- package/dist/mcp-server/tools/record-miss.js +6 -2
- package/dist/mcp-server/tools/record-miss.js.map +1 -1
- package/dist/services/zenodo/html-to-text.d.ts +19 -8
- package/dist/services/zenodo/html-to-text.d.ts.map +1 -1
- package/dist/services/zenodo/html-to-text.js +175 -48
- package/dist/services/zenodo/html-to-text.js.map +1 -1
- package/dist/services/zenodo/http.d.ts.map +1 -1
- package/dist/services/zenodo/http.js +21 -32
- package/dist/services/zenodo/http.js.map +1 -1
- package/dist/services/zenodo/identifiers.js +1 -1
- package/dist/services/zenodo/identifiers.js.map +1 -1
- package/dist/services/zenodo/normalize.d.ts.map +1 -1
- package/dist/services/zenodo/normalize.js +5 -2
- package/dist/services/zenodo/normalize.js.map +1 -1
- package/dist/services/zenodo/query-builder.d.ts +84 -8
- package/dist/services/zenodo/query-builder.d.ts.map +1 -1
- package/dist/services/zenodo/query-builder.js +484 -21
- package/dist/services/zenodo/query-builder.js.map +1 -1
- package/dist/services/zenodo/text-preview.d.ts +1 -1
- package/dist/services/zenodo/text-preview.d.ts.map +1 -1
- package/dist/services/zenodo/text-preview.js +38 -38
- package/dist/services/zenodo/text-preview.js.map +1 -1
- package/package.json +14 -12
- package/server.json +16 -24
|
@@ -1,22 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Deterministic HTML → plain-text conversion for depositor-supplied
|
|
3
3
|
* record descriptions. The one documented transformation of upstream text: drop
|
|
4
|
-
* script/style, turn block ends and line breaks into newlines,
|
|
5
|
-
*
|
|
4
|
+
* script/style, turn block ends and line breaks into newlines, put each table row on
|
|
5
|
+
* one line (a one-cell row keeps its line breaks), inline link targets, strip tags,
|
|
6
|
+
* decode entities, normalize whitespace.
|
|
6
7
|
* @module services/zenodo/html-to-text
|
|
7
8
|
*/
|
|
8
9
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
10
|
+
* Every named entity the converter decodes, keyed by exact name: the 252 HTML 4.01
|
|
11
|
+
* entities plus `apos`. `nbsp` decodes to a plain space (the later entry wins).
|
|
12
|
+
*/
|
|
13
|
+
export declare const NAMED_ENTITIES: ReadonlyMap<string, string>;
|
|
14
|
+
/**
|
|
15
|
+
* Decodes numeric (decimal and hex) references and `NAMED_ENTITIES` in one
|
|
16
|
+
* left-to-right pass, so decoded text is never read again. Names match by exact case,
|
|
17
|
+
* except the `ANY_CASE` names; every other name stays as written.
|
|
11
18
|
*/
|
|
12
19
|
export declare function decodeEntities(text: string): string;
|
|
13
20
|
/**
|
|
14
21
|
* Converts an HTML fragment to plain text:
|
|
15
22
|
* 1. drops `<script>`/`<style>` elements with their content (and comments);
|
|
16
|
-
* 2. `<br>` → newline,
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
23
|
+
* 2. `<br>` → newline, together with a line break directly after it; closing block
|
|
24
|
+
* tags → newline; `<li>` → `- `;
|
|
25
|
+
* 3. each table row → one line, cells joined by ` | `, whitespace and block breaks
|
|
26
|
+
* inside a cell collapsed to single spaces; a row with one cell keeps the cell's
|
|
27
|
+
* line breaks, each line collapsed and trimmed the same way;
|
|
28
|
+
* 4. `<a href="X">T</a>` → `T (X)` when X is http(s) and differs from T;
|
|
29
|
+
* 5. strips remaining tags; 6. decodes entities (numeric and the HTML 4 named set);
|
|
30
|
+
* 7. normalizes CRLF/CR to LF, trims trailing spaces per line, collapses 3+
|
|
20
31
|
* newlines to 2, and trims the result.
|
|
21
32
|
*/
|
|
22
33
|
export declare function htmlToText(html: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-to-text.d.ts","sourceRoot":"","sources":["../../../src/services/zenodo/html-to-text.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"html-to-text.d.ts","sourceRoot":"","sources":["../../../src/services/zenodo/html-to-text.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAcH;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAOrD,CAAC;AAgBH;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASnD;AAiMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAY/C"}
|
|
@@ -1,50 +1,48 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview Deterministic HTML → plain-text conversion for depositor-supplied
|
|
3
3
|
* record descriptions. The one documented transformation of upstream text: drop
|
|
4
|
-
* script/style, turn block ends and line breaks into newlines,
|
|
5
|
-
*
|
|
4
|
+
* script/style, turn block ends and line breaks into newlines, put each table row on
|
|
5
|
+
* one line (a one-cell row keeps its line breaks), inline link targets, strip tags,
|
|
6
|
+
* decode entities, normalize whitespace.
|
|
6
7
|
* @module services/zenodo/html-to-text
|
|
7
8
|
*/
|
|
8
|
-
const NAMED_ENTITIES = {
|
|
9
|
-
amp: '&',
|
|
10
|
-
lt: '<',
|
|
11
|
-
gt: '>',
|
|
12
|
-
quot: '"',
|
|
13
|
-
apos: "'",
|
|
14
|
-
nbsp: ' ',
|
|
15
|
-
ndash: '–',
|
|
16
|
-
mdash: '—',
|
|
17
|
-
hellip: '…',
|
|
18
|
-
lsquo: '‘',
|
|
19
|
-
rsquo: '’',
|
|
20
|
-
ldquo: '“',
|
|
21
|
-
rdquo: '”',
|
|
22
|
-
copy: '©',
|
|
23
|
-
reg: '®',
|
|
24
|
-
deg: '°',
|
|
25
|
-
};
|
|
26
9
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
10
|
+
* `name:code` pairs of the HTML 4.01 character entity sets, transcribed in DTD order
|
|
11
|
+
* from https://www.w3.org/TR/html401/HTMLlat1.ent (96 names, U+00A0–U+00FF),
|
|
12
|
+
* HTMLsymbol.ent (124: Greek, math, arrows), and HTMLspecial.ent (32: markup-significant
|
|
13
|
+
* characters, Latin Extended-A, spacing and punctuation).
|
|
30
14
|
*/
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
15
|
+
const HTML4_ENTITY_SETS = [
|
|
16
|
+
'nbsp:160 iexcl:161 cent:162 pound:163 curren:164 yen:165 brvbar:166 sect:167 uml:168 copy:169 ordf:170 laquo:171 not:172 shy:173 reg:174 macr:175 deg:176 plusmn:177 sup2:178 sup3:179 acute:180 micro:181 para:182 middot:183 cedil:184 sup1:185 ordm:186 raquo:187 frac14:188 frac12:189 frac34:190 iquest:191 Agrave:192 Aacute:193 Acirc:194 Atilde:195 Auml:196 Aring:197 AElig:198 Ccedil:199 Egrave:200 Eacute:201 Ecirc:202 Euml:203 Igrave:204 Iacute:205 Icirc:206 Iuml:207 ETH:208 Ntilde:209 Ograve:210 Oacute:211 Ocirc:212 Otilde:213 Ouml:214 times:215 Oslash:216 Ugrave:217 Uacute:218 Ucirc:219 Uuml:220 Yacute:221 THORN:222 szlig:223 agrave:224 aacute:225 acirc:226 atilde:227 auml:228 aring:229 aelig:230 ccedil:231 egrave:232 eacute:233 ecirc:234 euml:235 igrave:236 iacute:237 icirc:238 iuml:239 eth:240 ntilde:241 ograve:242 oacute:243 ocirc:244 otilde:245 ouml:246 divide:247 oslash:248 ugrave:249 uacute:250 ucirc:251 uuml:252 yacute:253 thorn:254 yuml:255',
|
|
17
|
+
'fnof:402 Alpha:913 Beta:914 Gamma:915 Delta:916 Epsilon:917 Zeta:918 Eta:919 Theta:920 Iota:921 Kappa:922 Lambda:923 Mu:924 Nu:925 Xi:926 Omicron:927 Pi:928 Rho:929 Sigma:931 Tau:932 Upsilon:933 Phi:934 Chi:935 Psi:936 Omega:937 alpha:945 beta:946 gamma:947 delta:948 epsilon:949 zeta:950 eta:951 theta:952 iota:953 kappa:954 lambda:955 mu:956 nu:957 xi:958 omicron:959 pi:960 rho:961 sigmaf:962 sigma:963 tau:964 upsilon:965 phi:966 chi:967 psi:968 omega:969 thetasym:977 upsih:978 piv:982 bull:8226 hellip:8230 prime:8242 Prime:8243 oline:8254 frasl:8260 weierp:8472 image:8465 real:8476 trade:8482 alefsym:8501 larr:8592 uarr:8593 rarr:8594 darr:8595 harr:8596 crarr:8629 lArr:8656 uArr:8657 rArr:8658 dArr:8659 hArr:8660 forall:8704 part:8706 exist:8707 empty:8709 nabla:8711 isin:8712 notin:8713 ni:8715 prod:8719 sum:8721 minus:8722 lowast:8727 radic:8730 prop:8733 infin:8734 ang:8736 and:8743 or:8744 cap:8745 cup:8746 int:8747 there4:8756 sim:8764 cong:8773 asymp:8776 ne:8800 equiv:8801 le:8804 ge:8805 sub:8834 sup:8835 nsub:8836 sube:8838 supe:8839 oplus:8853 otimes:8855 perp:8869 sdot:8901 lceil:8968 rceil:8969 lfloor:8970 rfloor:8971 lang:9001 rang:9002 loz:9674 spades:9824 clubs:9827 hearts:9829 diams:9830',
|
|
18
|
+
'quot:34 amp:38 lt:60 gt:62 OElig:338 oelig:339 Scaron:352 scaron:353 Yuml:376 circ:710 tilde:732 ensp:8194 emsp:8195 thinsp:8201 zwnj:8204 zwj:8205 lrm:8206 rlm:8207 ndash:8211 mdash:8212 lsquo:8216 rsquo:8217 sbquo:8218 ldquo:8220 rdquo:8221 bdquo:8222 dagger:8224 Dagger:8225 permil:8240 lsaquo:8249 rsaquo:8250 euro:8364',
|
|
19
|
+
];
|
|
20
|
+
/**
|
|
21
|
+
* Every named entity the converter decodes, keyed by exact name: the 252 HTML 4.01
|
|
22
|
+
* entities plus `apos`. `nbsp` decodes to a plain space (the later entry wins).
|
|
23
|
+
*/
|
|
24
|
+
export const NAMED_ENTITIES = new Map([
|
|
25
|
+
...HTML4_ENTITY_SETS.flatMap((set) => set.split(' ')).map((pair) => {
|
|
26
|
+
const [name = '', code] = pair.split(':');
|
|
27
|
+
return [name, String.fromCodePoint(Number(code))];
|
|
28
|
+
}),
|
|
29
|
+
['apos', "'"],
|
|
30
|
+
['nbsp', ' '],
|
|
31
|
+
]);
|
|
32
|
+
/** The common names, also matched in any letter case (`&`, `&Nbsp;`). */
|
|
33
|
+
const ANY_CASE = new Set('amp lt gt quot apos nbsp ndash mdash hellip lsquo rsquo ldquo rdquo copy reg deg'.split(' '));
|
|
37
34
|
function codePointToString(codePoint) {
|
|
38
35
|
return Number.isInteger(codePoint) &&
|
|
39
36
|
codePoint > 0 &&
|
|
40
37
|
codePoint <= 0x10ffff &&
|
|
41
38
|
(codePoint < 0xd800 || codePoint > 0xdfff)
|
|
42
39
|
? String.fromCodePoint(codePoint)
|
|
43
|
-
:
|
|
40
|
+
: String.fromCodePoint(0xfffd);
|
|
44
41
|
}
|
|
45
42
|
/**
|
|
46
|
-
* Decodes numeric (decimal and hex)
|
|
47
|
-
*
|
|
43
|
+
* Decodes numeric (decimal and hex) references and `NAMED_ENTITIES` in one
|
|
44
|
+
* left-to-right pass, so decoded text is never read again. Names match by exact case,
|
|
45
|
+
* except the `ANY_CASE` names; every other name stays as written.
|
|
48
46
|
*/
|
|
49
47
|
export function decodeEntities(text) {
|
|
50
48
|
return text.replace(/&(#x[0-9a-f]+|#\d+|[a-z][a-z0-9]*);/gi, (match, body) => {
|
|
@@ -52,11 +50,8 @@ export function decodeEntities(text) {
|
|
|
52
50
|
const hex = body[1] === 'x' || body[1] === 'X';
|
|
53
51
|
return codePointToString(Number.parseInt(body.slice(hex ? 2 : 1), hex ? 16 : 10));
|
|
54
52
|
}
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
return named;
|
|
58
|
-
const latin1 = LATIN1_ENTITIES[body];
|
|
59
|
-
return latin1 === undefined ? match : String.fromCodePoint(latin1);
|
|
53
|
+
const lower = body.toLowerCase();
|
|
54
|
+
return NAMED_ENTITIES.get(ANY_CASE.has(lower) ? lower : body) ?? match;
|
|
60
55
|
});
|
|
61
56
|
}
|
|
62
57
|
/** Re-escapes the characters entity decoding would otherwise read twice. */
|
|
@@ -112,6 +107,139 @@ function inlineLinks(html) {
|
|
|
112
107
|
}
|
|
113
108
|
return out + html.slice(from);
|
|
114
109
|
}
|
|
110
|
+
/** `<br>` with the line break directly after it, and the spaces and tabs around that break. */
|
|
111
|
+
const BR = /<br\s*\/?>(?:[ \t]*(?:\r\n?|\n)[ \t]*)?/gi;
|
|
112
|
+
/** Line breaks, block ends, list items, links, tag stripping, and entity decoding. */
|
|
113
|
+
function flowToText(html) {
|
|
114
|
+
const s = html
|
|
115
|
+
.replace(BR, '\n')
|
|
116
|
+
.replace(/<\/(?:p|div|h[1-6]|li|tr|blockquote|pre|ul|ol|table)\s*>/gi, '\n')
|
|
117
|
+
.replace(/<li\b[^<>]*>/gi, '- ');
|
|
118
|
+
return decodeEntities(stripTags(inlineLinks(s)));
|
|
119
|
+
}
|
|
120
|
+
/** `text` with each whitespace run collapsed to one space, trimmed. */
|
|
121
|
+
function collapseSpace(text) {
|
|
122
|
+
return text.replace(/[\s\u0085]+/g, ' ').trim();
|
|
123
|
+
}
|
|
124
|
+
/** A table cell, or text inside a table but outside its cells, as one line. */
|
|
125
|
+
function cellToText(html) {
|
|
126
|
+
return collapseSpace(flowToText(html));
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* The cell of a one-cell row as blocks: its line breaks kept, whitespace inside each
|
|
130
|
+
* line collapsed as in a cell (so a pretty-printed layout table leaves no indentation),
|
|
131
|
+
* and blank lines at either end dropped.
|
|
132
|
+
*/
|
|
133
|
+
function blockToText(html) {
|
|
134
|
+
const lines = flowToText(html)
|
|
135
|
+
.split(/\r\n?|\n/)
|
|
136
|
+
.map(collapseSpace);
|
|
137
|
+
let start = 0;
|
|
138
|
+
let end = lines.length;
|
|
139
|
+
while (start < end && lines[start] === '')
|
|
140
|
+
start++;
|
|
141
|
+
while (end > start && lines[end - 1] === '')
|
|
142
|
+
end--;
|
|
143
|
+
return lines.slice(start, end).join('\n');
|
|
144
|
+
}
|
|
145
|
+
/** A row from its cells' HTML: one cell as blocks, several as one line joined by ` | `; `''` when no cell has text. */
|
|
146
|
+
function rowToText(cells) {
|
|
147
|
+
if (cells.length === 1)
|
|
148
|
+
return blockToText(cells[0] ?? '');
|
|
149
|
+
const texts = cells.map(cellToText);
|
|
150
|
+
return texts.some((text) => text !== '') ? texts.join(' | ') : '';
|
|
151
|
+
}
|
|
152
|
+
/** A `table`, `tr`, `td`, or `th` tag, opening or closing, that closes before the next `<`. */
|
|
153
|
+
const TABLE_TAG = /<(\/?)(table|tr|t[dh])(?=[\s/>])[^<>]*>/gi;
|
|
154
|
+
/** True when `text` is empty or ends with a line break, ignoring trailing spaces and tabs. */
|
|
155
|
+
function atLineStart(text) {
|
|
156
|
+
let end = text.length;
|
|
157
|
+
while (end > 0 && (text[end - 1] === ' ' || text[end - 1] === '\t'))
|
|
158
|
+
end--;
|
|
159
|
+
return end === 0 || text[end - 1] === '\n' || text[end - 1] === '\r';
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Converts `html` in one forward scan over its table tags. Text outside tables goes
|
|
163
|
+
* through `flowToText`. Each table becomes one line per row, cells joined by ` | `,
|
|
164
|
+
* on its own line and followed by a blank line; a row with exactly one cell keeps that
|
|
165
|
+
* cell's line breaks instead (a layout table). A cell or row without its closing tag
|
|
166
|
+
* ends where the next cell, row, or the table does. A table nested in a cell becomes
|
|
167
|
+
* part of that cell's text, its row and table ends kept as line breaks and its other
|
|
168
|
+
* tags as spaces, and text inside a table but outside its cells gets a line of its own.
|
|
169
|
+
*/
|
|
170
|
+
function convertBlocks(html) {
|
|
171
|
+
let out = '';
|
|
172
|
+
let from = 0; // start of the input not yet converted
|
|
173
|
+
let depth = 0; // table nesting at the scan position
|
|
174
|
+
let lines = [];
|
|
175
|
+
let row; // HTML of each closed cell of the open row
|
|
176
|
+
let cell; // HTML of the open cell
|
|
177
|
+
const take = (end) => {
|
|
178
|
+
const chunk = html.slice(from, end);
|
|
179
|
+
if (cell !== undefined) {
|
|
180
|
+
cell += chunk;
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
const text = cellToText(chunk);
|
|
184
|
+
if (text)
|
|
185
|
+
lines.push(text);
|
|
186
|
+
};
|
|
187
|
+
const closeCell = () => {
|
|
188
|
+
if (cell === undefined)
|
|
189
|
+
return;
|
|
190
|
+
row ??= [];
|
|
191
|
+
row.push(cell);
|
|
192
|
+
cell = undefined;
|
|
193
|
+
};
|
|
194
|
+
const closeRow = () => {
|
|
195
|
+
closeCell();
|
|
196
|
+
const text = row ? rowToText(row) : '';
|
|
197
|
+
if (text)
|
|
198
|
+
lines.push(text);
|
|
199
|
+
row = undefined;
|
|
200
|
+
};
|
|
201
|
+
const closeTable = () => {
|
|
202
|
+
closeRow();
|
|
203
|
+
if (lines.length > 0)
|
|
204
|
+
out += `${atLineStart(out) ? '' : '\n'}${lines.join('\n')}\n`;
|
|
205
|
+
out += '\n';
|
|
206
|
+
lines = [];
|
|
207
|
+
};
|
|
208
|
+
for (const tag of html.matchAll(TABLE_TAG)) {
|
|
209
|
+
const closing = tag[1] === '/';
|
|
210
|
+
const name = tag[2]?.toLowerCase();
|
|
211
|
+
if (depth === 0) {
|
|
212
|
+
if (name !== 'table' || closing)
|
|
213
|
+
continue;
|
|
214
|
+
out += flowToText(html.slice(from, tag.index));
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
take(tag.index);
|
|
218
|
+
}
|
|
219
|
+
from = tag.index + tag[0].length;
|
|
220
|
+
const nested = depth > 1 || (depth === 1 && name === 'table' && !closing);
|
|
221
|
+
if (name === 'table')
|
|
222
|
+
depth += closing ? -1 : 1;
|
|
223
|
+
if (depth === 0)
|
|
224
|
+
closeTable();
|
|
225
|
+
else if (nested) {
|
|
226
|
+
if (cell !== undefined)
|
|
227
|
+
cell += closing && (name === 'tr' || name === 'table') ? '\n' : ' ';
|
|
228
|
+
}
|
|
229
|
+
else if (name === 'tr')
|
|
230
|
+
closeRow();
|
|
231
|
+
else if (name !== 'table') {
|
|
232
|
+
closeCell();
|
|
233
|
+
if (!closing)
|
|
234
|
+
cell = '';
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
if (depth === 0)
|
|
238
|
+
return out + flowToText(html.slice(from));
|
|
239
|
+
take(html.length);
|
|
240
|
+
closeTable();
|
|
241
|
+
return out;
|
|
242
|
+
}
|
|
115
243
|
/** `line` without trailing spaces and tabs. */
|
|
116
244
|
function trimTrailingBlanks(line) {
|
|
117
245
|
let end = line.length;
|
|
@@ -122,22 +250,21 @@ function trimTrailingBlanks(line) {
|
|
|
122
250
|
/**
|
|
123
251
|
* Converts an HTML fragment to plain text:
|
|
124
252
|
* 1. drops `<script>`/`<style>` elements with their content (and comments);
|
|
125
|
-
* 2. `<br>` → newline,
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
253
|
+
* 2. `<br>` → newline, together with a line break directly after it; closing block
|
|
254
|
+
* tags → newline; `<li>` → `- `;
|
|
255
|
+
* 3. each table row → one line, cells joined by ` | `, whitespace and block breaks
|
|
256
|
+
* inside a cell collapsed to single spaces; a row with one cell keeps the cell's
|
|
257
|
+
* line breaks, each line collapsed and trimmed the same way;
|
|
258
|
+
* 4. `<a href="X">T</a>` → `T (X)` when X is http(s) and differs from T;
|
|
259
|
+
* 5. strips remaining tags; 6. decodes entities (numeric and the HTML 4 named set);
|
|
260
|
+
* 7. normalizes CRLF/CR to LF, trims trailing spaces per line, collapses 3+
|
|
129
261
|
* newlines to 2, and trims the result.
|
|
130
262
|
*/
|
|
131
263
|
export function htmlToText(html) {
|
|
132
|
-
|
|
264
|
+
const s = html
|
|
133
265
|
.replace(/<!--[\s\S]*?(?:-->|$)/g, '')
|
|
134
266
|
.replace(/<(script|style)\b[^<>]*>[\s\S]*?(?:<\/\1\s*>|$)/gi, '');
|
|
135
|
-
|
|
136
|
-
.replace(/<br\s*\/?>/gi, '\n')
|
|
137
|
-
.replace(/<\/(?:p|div|h[1-6]|li|tr|blockquote|pre|ul|ol|table)\s*>/gi, '\n')
|
|
138
|
-
.replace(/<li\b[^<>]*>/gi, '- ');
|
|
139
|
-
s = decodeEntities(stripTags(inlineLinks(s)));
|
|
140
|
-
return s
|
|
267
|
+
return convertBlocks(s)
|
|
141
268
|
.replace(/\r\n?/g, '\n')
|
|
142
269
|
.split('\n')
|
|
143
270
|
.map(trimTrailingBlanks)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-to-text.js","sourceRoot":"","sources":["../../../src/services/zenodo/html-to-text.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"html-to-text.js","sourceRoot":"","sources":["../../../src/services/zenodo/html-to-text.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/services/zenodo/http.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAuBtD,oFAAoF;AACpF,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAEjG,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,YAAY,CAAC;IACvB,+EAA+E;IAC/E,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAChC;AAED,sFAAsF;AACtF,eAAO,MAAM,eAAe,QAAS,CAAC;AACtC,eAAO,MAAM,kBAAkB,QAAS,CAAC;AAyBzC,+EAA+E;AAC/E,wBAAsB,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D;AAED,mGAAmG;AACnG,wBAAsB,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAS7D;AAED,kGAAkG;AAClG,wBAAsB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAgB3D;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,MAAM,EAChB,SAAS,SAAI,GACZ,OAAO,CAAC;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAkC/C;AAED,8EAA8E;AAC9E,qBAAa,UAAU;;IAOrB,YAAY,OAAO,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAwB3E;IAED,4DAA4D;IAC5D,OAAO,IAAI,IAAI,CAGd;IAED;;;;OAIG;IACG,OAAO,CAAC,CAAC,EACb,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,EACnC,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/services/zenodo/http.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAuBtD,oFAAoF;AACpF,MAAM,MAAM,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAEjG,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,YAAY,CAAC;IACvB,+EAA+E;IAC/E,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAChC;AAED,sFAAsF;AACtF,eAAO,MAAM,eAAe,QAAS,CAAC;AACtC,eAAO,MAAM,kBAAkB,QAAS,CAAC;AAyBzC,+EAA+E;AAC/E,wBAAsB,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D;AAED,mGAAmG;AACnG,wBAAsB,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAS7D;AAED,kGAAkG;AAClG,wBAAsB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAgB3D;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,MAAM,EAChB,SAAS,SAAI,GACZ,OAAO,CAAC;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAkC/C;AAED,8EAA8E;AAC9E,qBAAa,UAAU;;IAOrB,YAAY,OAAO,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAwB3E;IAED,4DAA4D;IAC5D,OAAO,IAAI,IAAI,CAGd;IAED;;;;OAIG;IACG,OAAO,CAAC,CAAC,EACb,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,EACnC,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,CAAC,CAAC,CA4BZ;CA0OF"}
|
|
@@ -39,7 +39,7 @@ export async function discardBody(res) {
|
|
|
39
39
|
export async function readText(res) {
|
|
40
40
|
const { bytes, more } = await readCapped(res, MAX_BODY_BYTES);
|
|
41
41
|
if (more) {
|
|
42
|
-
throw serviceUnavailable(`Zenodo returned a response body over ${MAX_BODY_BYTES} bytes; it was not read.`, { status: res.status, retryable: false });
|
|
42
|
+
throw serviceUnavailable(`Zenodo returned a response body over ${MAX_BODY_BYTES.toLocaleString('en-US')} bytes; it was not read.`, { status: res.status, retryable: false });
|
|
43
43
|
}
|
|
44
44
|
return new TextDecoder().decode(bytes);
|
|
45
45
|
}
|
|
@@ -146,7 +146,7 @@ export class ZenodoHttp {
|
|
|
146
146
|
*/
|
|
147
147
|
async request(req, read, ctx) {
|
|
148
148
|
try {
|
|
149
|
-
return await withRetry((attempt) => this.#paced(req, read,
|
|
149
|
+
return await withRetry((attempt) => this.#paced(req, read, attempt), {
|
|
150
150
|
maxRetries: 1,
|
|
151
151
|
baseDelayMs: 1_000,
|
|
152
152
|
maxDelayMs: 15_000,
|
|
@@ -165,17 +165,16 @@ export class ZenodoHttp {
|
|
|
165
165
|
throw rateLimited("Zenodo request queue is full; this server's shared rate budget is spent for now.", {
|
|
166
166
|
reason: 'rate_limited',
|
|
167
167
|
...(retryAfter !== undefined ? { retryAfter } : {}),
|
|
168
|
-
...ctx.recoveryFor('rate_limited'),
|
|
169
168
|
}, { cause: error });
|
|
170
169
|
}
|
|
171
170
|
if (reason === 'retry_deadline_exceeded')
|
|
172
|
-
throw this.#timeoutError(req,
|
|
171
|
+
throw this.#timeoutError(req, error);
|
|
173
172
|
throw error;
|
|
174
173
|
}
|
|
175
174
|
}
|
|
176
|
-
#paced(req, read,
|
|
175
|
+
#paced(req, read, attempt) {
|
|
177
176
|
const options = { signal: attempt.signal, maxWaitMs: PACER_MAX_WAIT_MS };
|
|
178
|
-
const task = (signal) => this.#dispatch(req, read,
|
|
177
|
+
const task = (signal) => this.#dispatch(req, read, signal, attempt.remainingMs);
|
|
179
178
|
if (req.bucket === 'general')
|
|
180
179
|
return this.#general.run(task, options);
|
|
181
180
|
// A search also counts against the global budget: reserve a general start slot,
|
|
@@ -184,8 +183,8 @@ export class ZenodoHttp {
|
|
|
184
183
|
.run(async () => undefined, options)
|
|
185
184
|
.then(() => this.#search.run(task, options));
|
|
186
185
|
}
|
|
187
|
-
async #dispatch(req, read,
|
|
188
|
-
this.#checkGate(req.bucket
|
|
186
|
+
async #dispatch(req, read, signal, remainingMs) {
|
|
187
|
+
this.#checkGate(req.bucket);
|
|
189
188
|
const budget = Math.max(1, Math.min(req.attemptMs, remainingMs));
|
|
190
189
|
const deadline = new AbortController();
|
|
191
190
|
const timer = setTimeout(() => deadline.abort(), budget);
|
|
@@ -193,7 +192,7 @@ export class ZenodoHttp {
|
|
|
193
192
|
try {
|
|
194
193
|
const res = await this.#fetchWithinZenodo(req, AbortSignal.any([signal, deadline.signal]));
|
|
195
194
|
if (!req.okStatuses.includes(res.status)) {
|
|
196
|
-
throw await this.#statusError(req, res,
|
|
195
|
+
throw await this.#statusError(req, res, Date.now() - started);
|
|
197
196
|
}
|
|
198
197
|
return await read(res);
|
|
199
198
|
}
|
|
@@ -201,7 +200,7 @@ export class ZenodoHttp {
|
|
|
201
200
|
if (error instanceof McpError)
|
|
202
201
|
throw error;
|
|
203
202
|
if (deadline.signal.aborted && !signal.aborted)
|
|
204
|
-
throw this.#timeoutError(req,
|
|
203
|
+
throw this.#timeoutError(req, error);
|
|
205
204
|
if (signal.aborted)
|
|
206
205
|
throw error;
|
|
207
206
|
throw serviceUnavailable(`Zenodo request failed before a response arrived (${req.operation}).`, { operation: req.operation }, { cause: error });
|
|
@@ -266,7 +265,7 @@ export class ZenodoHttp {
|
|
|
266
265
|
};
|
|
267
266
|
}
|
|
268
267
|
/** Refuses to dispatch while the bucket's advertised window is spent. */
|
|
269
|
-
#checkGate(bucket
|
|
268
|
+
#checkGate(bucket) {
|
|
270
269
|
const { remaining, resetAt } = this.#headers[bucket];
|
|
271
270
|
if (remaining === undefined || resetAt === undefined || remaining > 0)
|
|
272
271
|
return;
|
|
@@ -276,10 +275,9 @@ export class ZenodoHttp {
|
|
|
276
275
|
throw rateLimited(`Zenodo's ${bucket} rate-limit window is spent until it resets.`, {
|
|
277
276
|
reason: 'rate_limited',
|
|
278
277
|
retryAfter: Math.ceil(waitMs / 1000),
|
|
279
|
-
...ctx.recoveryFor('rate_limited'),
|
|
280
278
|
});
|
|
281
279
|
}
|
|
282
|
-
async #statusError(req, res,
|
|
280
|
+
async #statusError(req, res, elapsedMs) {
|
|
283
281
|
const status = res.status;
|
|
284
282
|
if (status === 429) {
|
|
285
283
|
const reset = headerNumber(res.headers, 'x-ratelimit-reset');
|
|
@@ -290,15 +288,14 @@ export class ZenodoHttp {
|
|
|
290
288
|
reason: 'rate_limited',
|
|
291
289
|
status,
|
|
292
290
|
...(retryAfter !== undefined ? { retryAfter } : {}),
|
|
293
|
-
...ctx.recoveryFor('rate_limited'),
|
|
294
291
|
});
|
|
295
292
|
}
|
|
296
293
|
if (status >= 500) {
|
|
297
294
|
await discardBody(res);
|
|
298
295
|
if (status === 504 && elapsedMs >= SLOW_GATEWAY_MS)
|
|
299
|
-
return this.#timeoutError(req
|
|
296
|
+
return this.#timeoutError(req);
|
|
300
297
|
if (status === 500)
|
|
301
|
-
return this.#serverError(req
|
|
298
|
+
return this.#serverError(req);
|
|
302
299
|
return serviceUnavailable(`Zenodo answered HTTP ${status} (${req.operation}).`, { status });
|
|
303
300
|
}
|
|
304
301
|
const error = await httpErrorFromResponse(res, {
|
|
@@ -315,61 +312,53 @@ export class ZenodoHttp {
|
|
|
315
312
|
* (after the one retry) or never finished. The message names the archive's
|
|
316
313
|
* download URL, the path that still works.
|
|
317
314
|
*/
|
|
318
|
-
#archiveError(req,
|
|
315
|
+
#archiveError(req, failure, cause) {
|
|
319
316
|
const what = failure === 'status_500' ? 'HTTP 500' : 'no complete response in time';
|
|
320
317
|
return new McpError(JsonRpcErrorCode.ServiceUnavailable, `Zenodo could not open this .zip archive (${what}); download it from ${req.downloadUrl ?? 'its download_url'} instead.`, {
|
|
321
318
|
reason: 'archive_unavailable',
|
|
322
319
|
...(failure === 'status_500' ? { status: 500 } : { retryable: false }),
|
|
323
|
-
...ctx.recoveryFor('archive_unavailable'),
|
|
324
320
|
}, cause === undefined ? undefined : { cause });
|
|
325
321
|
}
|
|
326
322
|
/** HTTP 500, per the retry matrix. */
|
|
327
|
-
#serverError(req
|
|
323
|
+
#serverError(req) {
|
|
328
324
|
switch (req.endpoint) {
|
|
329
325
|
case 'search':
|
|
330
326
|
return serviceUnavailable('Zenodo answered HTTP 500 for this search query.', {
|
|
331
327
|
reason: 'query_failed',
|
|
332
328
|
status: 500,
|
|
333
329
|
retryable: false,
|
|
334
|
-
...ctx.recoveryFor('query_failed'),
|
|
335
330
|
});
|
|
336
331
|
case 'doi_lookup':
|
|
337
332
|
return serviceUnavailable('Zenodo answered HTTP 500 while resolving the DOI.', {
|
|
338
333
|
reason: 'record_unavailable',
|
|
339
334
|
status: 500,
|
|
340
335
|
retryable: false,
|
|
341
|
-
...ctx.recoveryFor('record_unavailable'),
|
|
342
336
|
});
|
|
343
337
|
case 'record':
|
|
344
338
|
case 'versions':
|
|
345
339
|
return serviceUnavailable('Zenodo answered HTTP 500 for this record.', {
|
|
346
340
|
reason: 'record_unavailable',
|
|
347
341
|
status: 500,
|
|
348
|
-
...ctx.recoveryFor('record_unavailable'),
|
|
349
342
|
});
|
|
350
343
|
case 'archive':
|
|
351
|
-
return this.#archiveError(req,
|
|
344
|
+
return this.#archiveError(req, 'status_500');
|
|
352
345
|
default:
|
|
353
346
|
return serviceUnavailable(`Zenodo answered HTTP 500 (${req.operation}).`, { status: 500 });
|
|
354
347
|
}
|
|
355
348
|
}
|
|
356
349
|
/** Slow 504, attempt timeout, or ladder deadline — deterministic for oversized payloads, never retried. */
|
|
357
|
-
#timeoutError(req,
|
|
350
|
+
#timeoutError(req, cause) {
|
|
358
351
|
const options = cause === undefined ? undefined : { cause };
|
|
359
352
|
switch (req.endpoint) {
|
|
360
353
|
case 'search':
|
|
361
|
-
return timeout('Zenodo did not finish the search page within its time budget; large file manifests in the hits make pages heavy.', { reason: 'upstream_timeout', retryable: false
|
|
354
|
+
return timeout('Zenodo did not finish the search page within its time budget; large file manifests in the hits make pages heavy.', { reason: 'upstream_timeout', retryable: false }, options);
|
|
362
355
|
case 'versions':
|
|
363
|
-
return timeout('Zenodo did not finish the versions page within its time budget; the series holds large file manifests.', { reason: 'upstream_timeout', retryable: false
|
|
356
|
+
return timeout('Zenodo did not finish the versions page within its time budget; the series holds large file manifests.', { reason: 'upstream_timeout', retryable: false }, options);
|
|
364
357
|
case 'record':
|
|
365
358
|
case 'doi_lookup':
|
|
366
|
-
return new McpError(JsonRpcErrorCode.ServiceUnavailable, 'Zenodo did not serve this record within its time budget (gateway cutoff or timeout).', {
|
|
367
|
-
reason: 'record_unavailable',
|
|
368
|
-
retryable: false,
|
|
369
|
-
...ctx.recoveryFor('record_unavailable'),
|
|
370
|
-
}, options);
|
|
359
|
+
return new McpError(JsonRpcErrorCode.ServiceUnavailable, 'Zenodo did not serve this record within its time budget (gateway cutoff or timeout).', { reason: 'record_unavailable', retryable: false }, options);
|
|
371
360
|
case 'archive':
|
|
372
|
-
return this.#archiveError(req,
|
|
361
|
+
return this.#archiveError(req, 'timeout', cause);
|
|
373
362
|
default:
|
|
374
363
|
return timeout(`Zenodo did not respond within the time budget (${req.operation}).`, { retryable: false }, options);
|
|
375
364
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/services/zenodo/http.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/services/zenodo/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -105,7 +105,7 @@ function parseUrl(raw) {
|
|
|
105
105
|
return classifyDoi(doi, 'url');
|
|
106
106
|
}
|
|
107
107
|
if (!ZENODO_HOSTS.has(host)) {
|
|
108
|
-
const note = host.endsWith('zenodo.org')
|
|
108
|
+
const note = host.endsWith('.zenodo.org')
|
|
109
109
|
? `${host} is a different Zenodo instance; only zenodo.org records are served.`
|
|
110
110
|
: `${host} is not zenodo.org or doi.org.`;
|
|
111
111
|
return { kind: 'invalid', message: note };
|