@cyanheads/cpsc-recalls-mcp-server 0.1.8 → 0.2.1
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 +10 -6
- package/CLAUDE.md +10 -6
- package/README.md +16 -13
- package/changelog/0.2.x/0.2.0.md +31 -0
- package/changelog/0.2.x/0.2.1.md +19 -0
- package/dist/index.js +1 -5
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/cpsc-get-recall.tool.d.ts +4 -4
- package/dist/mcp-server/tools/definitions/cpsc-get-recall.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/cpsc-get-recall.tool.js +36 -52
- package/dist/mcp-server/tools/definitions/cpsc-get-recall.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/cpsc-get-recent.tool.d.ts +6 -4
- package/dist/mcp-server/tools/definitions/cpsc-get-recent.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/cpsc-get-recent.tool.js +145 -116
- package/dist/mcp-server/tools/definitions/cpsc-get-recent.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/cpsc-search-recalls.tool.d.ts +12 -9
- package/dist/mcp-server/tools/definitions/cpsc-search-recalls.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/cpsc-search-recalls.tool.js +369 -245
- package/dist/mcp-server/tools/definitions/cpsc-search-recalls.tool.js.map +1 -1
- package/dist/mcp-server/tools/markdown-escape.d.ts +29 -0
- package/dist/mcp-server/tools/markdown-escape.d.ts.map +1 -0
- package/dist/mcp-server/tools/markdown-escape.js +93 -0
- package/dist/mcp-server/tools/markdown-escape.js.map +1 -0
- package/dist/mcp-server/tools/response-budget.d.ts +34 -0
- package/dist/mcp-server/tools/response-budget.d.ts.map +1 -0
- package/dist/mcp-server/tools/response-budget.js +53 -0
- package/dist/mcp-server/tools/response-budget.js.map +1 -0
- package/dist/services/cpsc-recall/cpsc-recall-service.d.ts +15 -1
- package/dist/services/cpsc-recall/cpsc-recall-service.d.ts.map +1 -1
- package/dist/services/cpsc-recall/cpsc-recall-service.js +57 -17
- package/dist/services/cpsc-recall/cpsc-recall-service.js.map +1 -1
- package/dist/services/cpsc-recall/normalize-text.d.ts +18 -0
- package/dist/services/cpsc-recall/normalize-text.d.ts.map +1 -0
- package/dist/services/cpsc-recall/normalize-text.js +108 -0
- package/dist/services/cpsc-recall/normalize-text.js.map +1 -0
- package/dist/services/cpsc-recall/types.d.ts +2 -1
- package/dist/services/cpsc-recall/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/server.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpsc-search-recalls.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/cpsc-search-recalls.tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cpsc-search-recalls.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/cpsc-search-recalls.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Markdown escaping for CPSC text interpolated into `content[]`, so a
|
|
3
|
+
* renderer shows every character of the record instead of reading some as markup.
|
|
4
|
+
* @module mcp-server/tools/markdown-escape
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Backslash-escapes `text` so CommonMark and GFM render it as the literal characters.
|
|
8
|
+
* A carriage return, which CommonMark reads as a line ending, becomes a line feed first,
|
|
9
|
+
* so every line start is escaped and callers that split on `\n` see every line. A web
|
|
10
|
+
* address GFM autolinks is left as it is, since the autolink would show a backslash inside
|
|
11
|
+
* it literally; any other address is plain text and escaped like the text around it.
|
|
12
|
+
* Applied where upstream text is interpolated into `content[]`, never to `structuredContent`.
|
|
13
|
+
*/
|
|
14
|
+
export declare function escapeMarkdown(text: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* `url` as a Markdown link destination. A bare destination ends at the first space and
|
|
17
|
+
* cannot hold `<`, `>`, or an unbalanced parenthesis, so those are percent-encoded. A
|
|
18
|
+
* destination also reads backslash escapes and character references, so a backslash and an
|
|
19
|
+
* `&` opening a reference are backslash-escaped, and the link points at `url` as stored.
|
|
20
|
+
*/
|
|
21
|
+
export declare function linkDestination(url: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* `url` shown as a bare address. A web address has its delimiters percent-encoded, and a
|
|
24
|
+
* trailing `.`, `_`, or `~` — which GFM leaves out of an autolink — is percent-encoded too,
|
|
25
|
+
* so the autolink covers the whole address; encoding those unreserved characters names the
|
|
26
|
+
* same address. A value that is not a web address is escaped as text.
|
|
27
|
+
*/
|
|
28
|
+
export declare function bareAddress(url: string): string;
|
|
29
|
+
//# sourceMappingURL=markdown-escape.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-escape.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/markdown-escape.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA+CH;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAwBnD;AAYD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Markdown escaping for CPSC text interpolated into `content[]`, so a
|
|
3
|
+
* renderer shows every character of the record instead of reading some as markup.
|
|
4
|
+
* @module mcp-server/tools/markdown-escape
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* A character that changes the rendering of plain text wherever it sits — backslash, code
|
|
8
|
+
* and emphasis delimiters, link brackets, strikethrough tildes, `<` opening a tag or
|
|
9
|
+
* autolink, `&` opening a character reference, `_` unless both neighbours are letters or
|
|
10
|
+
* digits (an intraword underscore such as `AMG005197_12_Q` never delimits emphasis), and
|
|
11
|
+
* the first `#` of a run ending a line, which a heading would drop as its closing sequence.
|
|
12
|
+
*/
|
|
13
|
+
const SPECIAL = /[\\`*[\]~]|<(?=[A-Za-z/!?])|&(?=#?[A-Za-z\d]{1,32};)|(?<![\p{L}\p{N}])_|_(?![\p{L}\p{N}])|(?<=[ \t])#(?=#*[ \t]*(?:\n|$))/gu;
|
|
14
|
+
/** A bare web address whose host starts with a letter or digit. */
|
|
15
|
+
const ADDRESS = /(?<![\p{L}\p{N}])(?:https?:\/\/|www\.)(?=[\p{L}\p{N}])[^\s<]*/u;
|
|
16
|
+
/**
|
|
17
|
+
* One pass over the text: group 1 is an {@link ADDRESS}, every other match a
|
|
18
|
+
* {@link SPECIAL} character. Each alternative is anchored on one character and scans at
|
|
19
|
+
* most a bounded or disjoint run, so the pass is linear.
|
|
20
|
+
*/
|
|
21
|
+
const INLINE = new RegExp(`(${ADDRESS.source})|${SPECIAL.source}`, 'gu');
|
|
22
|
+
/**
|
|
23
|
+
* A line start — the string's first character or one after a newline, past any
|
|
24
|
+
* indentation — carrying a block marker: a heading, quote, list bullet, setext underline,
|
|
25
|
+
* table pipe, or the `:` that opens a table delimiter row, or an ordered-list number
|
|
26
|
+
* followed by `.` or `)` and whitespace. Anchored at `^` or `\n`, so each whitespace run is
|
|
27
|
+
* scanned once.
|
|
28
|
+
*/
|
|
29
|
+
const LINE_START = /(^|\n)([ \t]*)(?:([#>+=|:-])|(\d{1,9})([.)])(?=\s|$))/g;
|
|
30
|
+
/**
|
|
31
|
+
* Whether GFM — cmark-gfm and micromark alike — autolinks `address` where it sits after
|
|
32
|
+
* `before`: a `www.` address only at the start of the text or after whitespace, `(`, `*`,
|
|
33
|
+
* `_`, or `~`, and any address only when the last two labels of its host hold no `_`.
|
|
34
|
+
*/
|
|
35
|
+
function autolinks(address, before) {
|
|
36
|
+
if (address.startsWith('www.') && before !== undefined && !/[\s(*_~]/u.test(before)) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
const host = address.replace(/^https?:\/\//, '').replace(/[^\p{L}\p{N}_.-][\s\S]*/u, '');
|
|
40
|
+
return !host
|
|
41
|
+
.split('.')
|
|
42
|
+
.slice(-2)
|
|
43
|
+
.some((label) => label.includes('_'));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Backslash-escapes `text` so CommonMark and GFM render it as the literal characters.
|
|
47
|
+
* A carriage return, which CommonMark reads as a line ending, becomes a line feed first,
|
|
48
|
+
* so every line start is escaped and callers that split on `\n` see every line. A web
|
|
49
|
+
* address GFM autolinks is left as it is, since the autolink would show a backslash inside
|
|
50
|
+
* it literally; any other address is plain text and escaped like the text around it.
|
|
51
|
+
* Applied where upstream text is interpolated into `content[]`, never to `structuredContent`.
|
|
52
|
+
*/
|
|
53
|
+
export function escapeMarkdown(text) {
|
|
54
|
+
return text
|
|
55
|
+
.replace(/\r\n?/g, '\n')
|
|
56
|
+
.replace(INLINE, (char, address, offset, whole) => address === undefined
|
|
57
|
+
? `\\${char}`
|
|
58
|
+
: autolinks(address, whole[offset - 1])
|
|
59
|
+
? address
|
|
60
|
+
: address.replace(SPECIAL, '\\$&'))
|
|
61
|
+
.replace(LINE_START, (_line, lead, indent, marker, digits, delimiter) => marker === undefined
|
|
62
|
+
? `${lead}${indent}${digits}\\${delimiter}`
|
|
63
|
+
: `${lead}${indent}\\${marker}`);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* `url` with whitespace, `<`, `>`, and parentheses percent-encoded as UTF-8 — the
|
|
67
|
+
* characters that end or unbalance an address in Markdown. The address they name is the same.
|
|
68
|
+
*/
|
|
69
|
+
function encodeDelimiters(url) {
|
|
70
|
+
return url.replace(/[\s<>()]/gu, (char) => char === '(' ? '%28' : char === ')' ? '%29' : encodeURIComponent(char));
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* `url` as a Markdown link destination. A bare destination ends at the first space and
|
|
74
|
+
* cannot hold `<`, `>`, or an unbalanced parenthesis, so those are percent-encoded. A
|
|
75
|
+
* destination also reads backslash escapes and character references, so a backslash and an
|
|
76
|
+
* `&` opening a reference are backslash-escaped, and the link points at `url` as stored.
|
|
77
|
+
*/
|
|
78
|
+
export function linkDestination(url) {
|
|
79
|
+
return encodeDelimiters(url).replace(/\\|&(?=#?[A-Za-z\d]{1,32};)/g, '\\$&');
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* `url` shown as a bare address. A web address has its delimiters percent-encoded, and a
|
|
83
|
+
* trailing `.`, `_`, or `~` — which GFM leaves out of an autolink — is percent-encoded too,
|
|
84
|
+
* so the autolink covers the whole address; encoding those unreserved characters names the
|
|
85
|
+
* same address. A value that is not a web address is escaped as text.
|
|
86
|
+
*/
|
|
87
|
+
export function bareAddress(url) {
|
|
88
|
+
if (!/^https?:\/\//.test(url))
|
|
89
|
+
return escapeMarkdown(url);
|
|
90
|
+
const destination = encodeDelimiters(url).replace(/[._~]+$/, (run) => run.replace(/./g, (char) => `%${char.charCodeAt(0).toString(16).toUpperCase()}`));
|
|
91
|
+
return escapeMarkdown(destination);
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=markdown-escape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-escape.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/markdown-escape.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Response size budget shared by the list tools. A page keeps the leading
|
|
3
|
+
* records whose charges fit under one byte cap, applied to the serialized
|
|
4
|
+
* `structuredContent` and to the `content[]` text alike.
|
|
5
|
+
* @module mcp-server/tools/response-budget
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* UTF-8 byte cap on each response surface: the serialized `structuredContent`, and all
|
|
9
|
+
* `content[]` text including the enrichment trailer.
|
|
10
|
+
*/
|
|
11
|
+
export declare const RESPONSE_BUDGET_BYTES = 64000;
|
|
12
|
+
/**
|
|
13
|
+
* Counts how many leading `records` fit in the budget after `overheadBytes`.
|
|
14
|
+
*
|
|
15
|
+
* Each record is charged the larger of its JSON and its rendered text, plus one byte for
|
|
16
|
+
* the separator that joins it on either surface (`,` in the JSON array, `\n` in the text).
|
|
17
|
+
* Charging the larger of the two bounds both surfaces with one running total. Returns at
|
|
18
|
+
* least 1 whenever `records` is non-empty, so a record larger than the whole budget comes
|
|
19
|
+
* back alone rather than as an empty page.
|
|
20
|
+
*/
|
|
21
|
+
export declare function countWithinBudget<T>(records: readonly T[], render: (record: T) => string, overheadBytes: number): number;
|
|
22
|
+
/**
|
|
23
|
+
* Bytes a page spends outside its records: the larger of the `structuredContent` skeleton
|
|
24
|
+
* (records emptied, enrichment merged in) and the rendered non-record text plus the
|
|
25
|
+
* enrichment trailer the framework appends to `content[]`.
|
|
26
|
+
*
|
|
27
|
+
* The trailer is a leading blank line, then each field behind a label of at most seven
|
|
28
|
+
* bytes (`Query: `, `> `), separated from the next by at most a blank line — so each field
|
|
29
|
+
* is reserved nine bytes beyond its value.
|
|
30
|
+
*/
|
|
31
|
+
export declare function pageOverheadBytes(skeleton: object, text: string, enrichment: Readonly<Record<string, string>>): number;
|
|
32
|
+
/** The notice for a page the budget ended before `requested` records. */
|
|
33
|
+
export declare function budgetCutNotice(returned: number, requested: number, nextOffset: number): string;
|
|
34
|
+
//# sourceMappingURL=response-budget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-budget.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/response-budget.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAO5C;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,OAAO,EAAE,SAAS,CAAC,EAAE,EACrB,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,EAC7B,aAAa,EAAE,MAAM,GACpB,MAAM,CASR;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC3C,MAAM,CAMR;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/F"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Response size budget shared by the list tools. A page keeps the leading
|
|
3
|
+
* records whose charges fit under one byte cap, applied to the serialized
|
|
4
|
+
* `structuredContent` and to the `content[]` text alike.
|
|
5
|
+
* @module mcp-server/tools/response-budget
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* UTF-8 byte cap on each response surface: the serialized `structuredContent`, and all
|
|
9
|
+
* `content[]` text including the enrichment trailer.
|
|
10
|
+
*/
|
|
11
|
+
export const RESPONSE_BUDGET_BYTES = 64_000;
|
|
12
|
+
/** UTF-8 byte length of `text`. */
|
|
13
|
+
function utf8Bytes(text) {
|
|
14
|
+
return Buffer.byteLength(text, 'utf8');
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Counts how many leading `records` fit in the budget after `overheadBytes`.
|
|
18
|
+
*
|
|
19
|
+
* Each record is charged the larger of its JSON and its rendered text, plus one byte for
|
|
20
|
+
* the separator that joins it on either surface (`,` in the JSON array, `\n` in the text).
|
|
21
|
+
* Charging the larger of the two bounds both surfaces with one running total. Returns at
|
|
22
|
+
* least 1 whenever `records` is non-empty, so a record larger than the whole budget comes
|
|
23
|
+
* back alone rather than as an empty page.
|
|
24
|
+
*/
|
|
25
|
+
export function countWithinBudget(records, render, overheadBytes) {
|
|
26
|
+
let used = overheadBytes;
|
|
27
|
+
let count = 0;
|
|
28
|
+
for (const record of records) {
|
|
29
|
+
used += Math.max(utf8Bytes(JSON.stringify(record)), utf8Bytes(render(record))) + 1;
|
|
30
|
+
if (count > 0 && used > RESPONSE_BUDGET_BYTES)
|
|
31
|
+
break;
|
|
32
|
+
count++;
|
|
33
|
+
}
|
|
34
|
+
return count;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Bytes a page spends outside its records: the larger of the `structuredContent` skeleton
|
|
38
|
+
* (records emptied, enrichment merged in) and the rendered non-record text plus the
|
|
39
|
+
* enrichment trailer the framework appends to `content[]`.
|
|
40
|
+
*
|
|
41
|
+
* The trailer is a leading blank line, then each field behind a label of at most seven
|
|
42
|
+
* bytes (`Query: `, `> `), separated from the next by at most a blank line — so each field
|
|
43
|
+
* is reserved nine bytes beyond its value.
|
|
44
|
+
*/
|
|
45
|
+
export function pageOverheadBytes(skeleton, text, enrichment) {
|
|
46
|
+
const trailer = Object.values(enrichment).reduce((sum, value) => sum + utf8Bytes(value) + 9, 2);
|
|
47
|
+
return Math.max(utf8Bytes(JSON.stringify({ ...skeleton, ...enrichment })), utf8Bytes(text) + trailer);
|
|
48
|
+
}
|
|
49
|
+
/** The notice for a page the budget ended before `requested` records. */
|
|
50
|
+
export function budgetCutNotice(returned, requested, nextOffset) {
|
|
51
|
+
return `Returned ${returned} of the ${requested} requested recalls: this page reached the ${RESPONSE_BUDGET_BYTES.toLocaleString('en-US')}-byte response size budget. Continue with offset ${nextOffset} for the rest.`;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=response-budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-budget.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/response-budget.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAE5C,mCAAmC;AACnC,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAqB,EACrB,MAA6B,EAC7B,aAAqB;IAErB,IAAI,IAAI,GAAG,aAAa,CAAC;IACzB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACnF,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,GAAG,qBAAqB;YAAE,MAAM;QACrD,KAAK,EAAE,CAAC;IACV,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,IAAY,EACZ,UAA4C;IAE5C,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAChG,OAAO,IAAI,CAAC,GAAG,CACb,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC,EACzD,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAC1B,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,SAAiB,EAAE,UAAkB;IACrF,OAAO,YAAY,QAAQ,WAAW,SAAS,6CAA6C,qBAAqB,CAAC,cAAc,CAAC,OAAO,CAAC,oDAAoD,UAAU,gBAAgB,CAAC;AAC1N,CAAC"}
|
|
@@ -18,11 +18,25 @@ export declare class CpscRecallService {
|
|
|
18
18
|
getByNumber(recallNumber: string, ctx: Context): Promise<RawRecall | null>;
|
|
19
19
|
/**
|
|
20
20
|
* Fetch recalls within a date window. The date range is required — passing no
|
|
21
|
-
* dates returns
|
|
21
|
+
* dates returns the whole dataset (over 10,000 records), which is too large to be useful.
|
|
22
22
|
*/
|
|
23
23
|
getRecent(dateStart: string, dateEnd: string, ctx: Context): Promise<RawRecall[]>;
|
|
24
|
+
/** The request URL: `format` first, or — for the provider-failure retry — last. */
|
|
24
25
|
private buildUrl;
|
|
26
|
+
/**
|
|
27
|
+
* Fetches the records matching `params`, their text normalized.
|
|
28
|
+
*
|
|
29
|
+
* A provider-failure error row gets one immediate retry through the same query with
|
|
30
|
+
* `format` moved last: CPSC serves a failed query's error row from a cache keyed on the
|
|
31
|
+
* exact query string, so repeating the URL keeps failing while the reordered one misses
|
|
32
|
+
* the cache. A second provider failure surfaces as retryable.
|
|
33
|
+
*/
|
|
25
34
|
private fetchRecalls;
|
|
35
|
+
/**
|
|
36
|
+
* One fetch of `url` under the retry boundary. A provider-failure row comes back as a
|
|
37
|
+
* value rather than a throw, so `withRetry` never repeats a URL CPSC answers from cache.
|
|
38
|
+
*/
|
|
39
|
+
private fetchOnce;
|
|
26
40
|
}
|
|
27
41
|
export declare function initCpscRecallService(): void;
|
|
28
42
|
export declare function getCpscRecallService(): CpscRecallService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpsc-recall-service.d.ts","sourceRoot":"","sources":["../../../src/services/cpsc-recall/cpsc-recall-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"cpsc-recall-service.d.ts","sourceRoot":"","sources":["../../../src/services/cpsc-recall/cpsc-recall-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAItD,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAkC9D,qBAAa,iBAAiB;IAC5B;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAkBnE;IAED;;;OAGG;IACG,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAG/E;IAED;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAEhF;IAED,mFAAmF;IACnF,OAAO,CAAC,QAAQ;IAUhB;;;;;;;OAOG;YACW,YAAY;IAgB1B;;;OAGG;IACH,OAAO,CAAC,SAAS;CAkDlB;AAMD,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,wBAAgB,oBAAoB,IAAI,iBAAiB,CAKxD"}
|
|
@@ -5,11 +5,17 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { serviceUnavailable } from '@cyanheads/mcp-ts-core/errors';
|
|
7
7
|
import { fetchWithTimeout, withRetry } from '@cyanheads/mcp-ts-core/utils';
|
|
8
|
+
import { normalizeRecall } from './normalize-text.js';
|
|
8
9
|
const BASE_URL = 'https://www.saferproducts.gov/RestWebServices/Recall';
|
|
9
10
|
/** Request timeout: 30 s. The API returns full datasets; allow enough time. */
|
|
10
11
|
const TIMEOUT_MS = 30_000;
|
|
11
12
|
/** Upper bound on how much of the upstream error text is echoed back in the thrown message. */
|
|
12
13
|
const ERROR_ROW_MESSAGE_LIMIT = 200;
|
|
14
|
+
/**
|
|
15
|
+
* The error-row message CPSC sends when its data source failed, rather than the request.
|
|
16
|
+
* Every other error-row message (an unparseable date filter, for example) is deterministic.
|
|
17
|
+
*/
|
|
18
|
+
const PROVIDER_FAILURE = /underlying provider failed/i;
|
|
13
19
|
/**
|
|
14
20
|
* True when a row is CPSC's error row rather than a recall record.
|
|
15
21
|
*
|
|
@@ -30,7 +36,7 @@ export class CpscRecallService {
|
|
|
30
36
|
* server-side pagination); client-side limiting must be applied by callers.
|
|
31
37
|
*/
|
|
32
38
|
search(params, ctx) {
|
|
33
|
-
|
|
39
|
+
return this.fetchRecalls({
|
|
34
40
|
ProductName: params.ProductName,
|
|
35
41
|
Manufacturer: params.Manufacturer,
|
|
36
42
|
Retailer: params.Retailer,
|
|
@@ -43,35 +49,64 @@ export class CpscRecallService {
|
|
|
43
49
|
RecallDateEnd: params.RecallDateEnd,
|
|
44
50
|
LastPublishDateStart: params.LastPublishDateStart,
|
|
45
51
|
LastPublishDateEnd: params.LastPublishDateEnd,
|
|
46
|
-
});
|
|
47
|
-
return this.fetchRecalls(url, ctx);
|
|
52
|
+
}, ctx);
|
|
48
53
|
}
|
|
49
54
|
/**
|
|
50
55
|
* Fetch a single recall by recall number. Returns `null` when no matching record
|
|
51
56
|
* exists (API returns empty array for unknown numbers).
|
|
52
57
|
*/
|
|
53
58
|
async getByNumber(recallNumber, ctx) {
|
|
54
|
-
const
|
|
55
|
-
const results = await this.fetchRecalls(url, ctx);
|
|
59
|
+
const results = await this.fetchRecalls({ RecallNumber: recallNumber }, ctx);
|
|
56
60
|
return results[0] ?? null;
|
|
57
61
|
}
|
|
58
62
|
/**
|
|
59
63
|
* Fetch recalls within a date window. The date range is required — passing no
|
|
60
|
-
* dates returns
|
|
64
|
+
* dates returns the whole dataset (over 10,000 records), which is too large to be useful.
|
|
61
65
|
*/
|
|
62
66
|
getRecent(dateStart, dateEnd, ctx) {
|
|
63
|
-
|
|
64
|
-
return this.fetchRecalls(url, ctx);
|
|
67
|
+
return this.fetchRecalls({ RecallDateStart: dateStart, RecallDateEnd: dateEnd }, ctx);
|
|
65
68
|
}
|
|
66
|
-
|
|
67
|
-
|
|
69
|
+
/** The request URL: `format` first, or — for the provider-failure retry — last. */
|
|
70
|
+
buildUrl(params, formatLast = false) {
|
|
71
|
+
const qs = new URLSearchParams();
|
|
72
|
+
if (!formatLast)
|
|
73
|
+
qs.set('format', 'json');
|
|
68
74
|
for (const [key, value] of Object.entries(params)) {
|
|
69
75
|
if (value !== undefined && value !== '')
|
|
70
76
|
qs.set(key, value);
|
|
71
77
|
}
|
|
78
|
+
if (formatLast)
|
|
79
|
+
qs.set('format', 'json');
|
|
72
80
|
return `${BASE_URL}?${qs.toString()}`;
|
|
73
81
|
}
|
|
74
|
-
|
|
82
|
+
/**
|
|
83
|
+
* Fetches the records matching `params`, their text normalized.
|
|
84
|
+
*
|
|
85
|
+
* A provider-failure error row gets one immediate retry through the same query with
|
|
86
|
+
* `format` moved last: CPSC serves a failed query's error row from a cache keyed on the
|
|
87
|
+
* exact query string, so repeating the URL keeps failing while the reordered one misses
|
|
88
|
+
* the cache. A second provider failure surfaces as retryable.
|
|
89
|
+
*/
|
|
90
|
+
async fetchRecalls(params, ctx) {
|
|
91
|
+
let outcome = await this.fetchOnce(this.buildUrl(params), ctx);
|
|
92
|
+
if ('providerFailure' in outcome) {
|
|
93
|
+
ctx.log.info('CPSC reported a provider failure; retrying with the query reordered', {
|
|
94
|
+
upstreamMessage: outcome.providerFailure,
|
|
95
|
+
});
|
|
96
|
+
outcome = await this.fetchOnce(this.buildUrl(params, true), ctx);
|
|
97
|
+
}
|
|
98
|
+
if ('providerFailure' in outcome) {
|
|
99
|
+
throw serviceUnavailable(`CPSC reported a temporary failure: ${outcome.providerFailure}`, {
|
|
100
|
+
retryable: true,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
return outcome.recalls.map(normalizeRecall);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* One fetch of `url` under the retry boundary. A provider-failure row comes back as a
|
|
107
|
+
* value rather than a throw, so `withRetry` never repeats a URL CPSC answers from cache.
|
|
108
|
+
*/
|
|
109
|
+
fetchOnce(url, ctx) {
|
|
75
110
|
return withRetry(async () => {
|
|
76
111
|
const response = await fetchWithTimeout(url, TIMEOUT_MS, ctx, {
|
|
77
112
|
signal: ctx.signal,
|
|
@@ -93,15 +128,20 @@ export class CpscRecallService {
|
|
|
93
128
|
}
|
|
94
129
|
const errorRow = data.find(isCpscErrorRow);
|
|
95
130
|
if (errorRow !== undefined) {
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
131
|
+
const title = errorRow?.Title;
|
|
132
|
+
const upstreamMessage = typeof title === 'string' && title.length > 0
|
|
133
|
+
? title.slice(0, ERROR_ROW_MESSAGE_LIMIT)
|
|
134
|
+
: undefined;
|
|
135
|
+
if (upstreamMessage && PROVIDER_FAILURE.test(upstreamMessage)) {
|
|
136
|
+
return { providerFailure: upstreamMessage };
|
|
137
|
+
}
|
|
138
|
+
throw serviceUnavailable(upstreamMessage
|
|
139
|
+
? `CPSC rejected the request: ${upstreamMessage}`
|
|
140
|
+
: 'CPSC rejected the request without saying why.',
|
|
101
141
|
// Deterministic — the same request produces the same error row, so skip retries.
|
|
102
142
|
{ retryable: false });
|
|
103
143
|
}
|
|
104
|
-
return data;
|
|
144
|
+
return { recalls: data };
|
|
105
145
|
}, {
|
|
106
146
|
operation: 'CpscRecallService.fetchRecalls',
|
|
107
147
|
context: ctx,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cpsc-recall-service.js","sourceRoot":"","sources":["../../../src/services/cpsc-recall/cpsc-recall-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"cpsc-recall-service.js","sourceRoot":"","sources":["../../../src/services/cpsc-recall/cpsc-recall-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Converts the HTML residue CPSC stores in its recall text — character
|
|
3
|
+
* references and stray tags — to plain text, once, before any record reaches a handler.
|
|
4
|
+
* @module services/cpsc-recall/normalize-text
|
|
5
|
+
*/
|
|
6
|
+
import type { RawRecall } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Decodes character references and removes tags in one pass.
|
|
9
|
+
*
|
|
10
|
+
* A removed tag never joins its neighbours: it leaves one space, or one line break for
|
|
11
|
+
* `br`/`p`/`tr`/`li`/`div`, in place of itself and the whitespace around it, and nothing
|
|
12
|
+
* at either end of the string. An unknown or out-of-range reference (`C&T;`), a reference
|
|
13
|
+
* to a control character, and a bare `&` stay as they are.
|
|
14
|
+
*/
|
|
15
|
+
export declare function normalizeText(text: string): string;
|
|
16
|
+
/** A copy of `record` with every text field — nested entries included — passed through {@link normalizeText}. */
|
|
17
|
+
export declare function normalizeRecall(record: RawRecall): RawRecall;
|
|
18
|
+
//# sourceMappingURL=normalize-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-text.d.ts","sourceRoot":"","sources":["../../../src/services/cpsc-recall/normalize-text.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAyC5C;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuClD;AAsBD,iHAAiH;AACjH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAE5D"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Converts the HTML residue CPSC stores in its recall text — character
|
|
3
|
+
* references and stray tags — to plain text, once, before any record reaches a handler.
|
|
4
|
+
* @module services/cpsc-recall/normalize-text
|
|
5
|
+
*/
|
|
6
|
+
/** The named references decoded: the five XML ones and ` `. Anything else passes through. */
|
|
7
|
+
const NAMED_REFERENCES = {
|
|
8
|
+
amp: '&',
|
|
9
|
+
lt: '<',
|
|
10
|
+
gt: '>',
|
|
11
|
+
quot: '"',
|
|
12
|
+
apos: "'",
|
|
13
|
+
nbsp: ' ',
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* One alternation, matched in a single left-to-right pass, so text a reference decodes to
|
|
17
|
+
* is never read again as markup. Groups: 1 decimal, 2 hex, 3 named reference; 4 tag name.
|
|
18
|
+
*
|
|
19
|
+
* A tag needs a letter after `<` or `</` (`<5mW` is data). It ends at the next `>`, or — cut
|
|
20
|
+
* off — at the end of the string after its name and an optional `/`. The lookahead stops
|
|
21
|
+
* the name from backtracking, and `[^<>]*` stops at the next `<`, which keeps the scan
|
|
22
|
+
* linear on unterminated input.
|
|
23
|
+
*/
|
|
24
|
+
const MARKUP = /&(?:#(\d{1,7})|#[xX]([\da-fA-F]{1,6})|(amp|lt|gt|quot|apos|nbsp));|<\/?([A-Za-z][A-Za-z\d]*)(?![A-Za-z\d])(?:[^<>]*>|\/?$)/g;
|
|
25
|
+
/** Tags whose removal ends a line; any other tag becomes a space. */
|
|
26
|
+
const LINE_BREAK_TAGS = new Set(['br', 'p', 'tr', 'li', 'div']);
|
|
27
|
+
/**
|
|
28
|
+
* The character a numeric reference names, or `undefined` for a code point no string can
|
|
29
|
+
* hold or a control character other than tab, line feed, and carriage return. A control
|
|
30
|
+
* character would be invisible, and HTML reads 128–159 as Windows-1252 punctuation rather
|
|
31
|
+
* than C1 controls, so those references stay as written.
|
|
32
|
+
*/
|
|
33
|
+
function fromCodePoint(codePoint) {
|
|
34
|
+
const control = (codePoint < 0x20 && codePoint !== 0x09 && codePoint !== 0x0a && codePoint !== 0x0d) ||
|
|
35
|
+
(codePoint >= 0x7f && codePoint <= 0x9f);
|
|
36
|
+
const surrogate = codePoint >= 0xd800 && codePoint <= 0xdfff;
|
|
37
|
+
return control || surrogate || codePoint > 0x10ffff ? undefined : String.fromCodePoint(codePoint);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Decodes character references and removes tags in one pass.
|
|
41
|
+
*
|
|
42
|
+
* A removed tag never joins its neighbours: it leaves one space, or one line break for
|
|
43
|
+
* `br`/`p`/`tr`/`li`/`div`, in place of itself and the whitespace around it, and nothing
|
|
44
|
+
* at either end of the string. An unknown or out-of-range reference (`C&T;`), a reference
|
|
45
|
+
* to a control character, and a bare `&` stay as they are.
|
|
46
|
+
*/
|
|
47
|
+
export function normalizeText(text) {
|
|
48
|
+
if (!text.includes('&') && !text.includes('<'))
|
|
49
|
+
return text;
|
|
50
|
+
let out = '';
|
|
51
|
+
let last = 0;
|
|
52
|
+
/** Separator owed by tags removed since the last emitted text. */
|
|
53
|
+
let owed = '';
|
|
54
|
+
const emit = (segment) => {
|
|
55
|
+
if (owed) {
|
|
56
|
+
segment = segment.trimStart();
|
|
57
|
+
if (!segment)
|
|
58
|
+
return;
|
|
59
|
+
if (out)
|
|
60
|
+
out += owed;
|
|
61
|
+
owed = '';
|
|
62
|
+
}
|
|
63
|
+
out += segment;
|
|
64
|
+
};
|
|
65
|
+
for (const match of text.matchAll(MARKUP)) {
|
|
66
|
+
const [whole, decimal, hex, named, tagName] = match;
|
|
67
|
+
const before = text.slice(last, match.index);
|
|
68
|
+
last = match.index + whole.length;
|
|
69
|
+
if (tagName === undefined) {
|
|
70
|
+
const codePoint = decimal ?? hex;
|
|
71
|
+
const decoded = codePoint === undefined
|
|
72
|
+
? NAMED_REFERENCES[named]
|
|
73
|
+
: fromCodePoint(Number.parseInt(codePoint, decimal === undefined ? 16 : 10));
|
|
74
|
+
emit(before + (decoded ?? whole));
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
emit(before.trimEnd());
|
|
78
|
+
owed = owed === '\n' || LINE_BREAK_TAGS.has(tagName.toLowerCase()) ? '\n' : ' ';
|
|
79
|
+
}
|
|
80
|
+
emit(text.slice(last));
|
|
81
|
+
return out;
|
|
82
|
+
}
|
|
83
|
+
/** Keys whose values are addresses, not text: carried unchanged. */
|
|
84
|
+
const ADDRESS_KEYS = new Set(['URL']);
|
|
85
|
+
/**
|
|
86
|
+
* Normalizes every string in `value`, recursing through arrays and objects, except under
|
|
87
|
+
* `ADDRESS_KEYS`. Builds each copy with `for…in` rather than `Object.entries`, which cost
|
|
88
|
+
* over twice as much across a full-dataset fetch.
|
|
89
|
+
*/
|
|
90
|
+
function normalizeValue(value) {
|
|
91
|
+
if (typeof value === 'string')
|
|
92
|
+
return normalizeText(value);
|
|
93
|
+
if (Array.isArray(value))
|
|
94
|
+
return value.map(normalizeValue);
|
|
95
|
+
if (value === null || typeof value !== 'object')
|
|
96
|
+
return value;
|
|
97
|
+
const copy = {};
|
|
98
|
+
for (const key in value) {
|
|
99
|
+
const field = value[key];
|
|
100
|
+
copy[key] = ADDRESS_KEYS.has(key) ? field : normalizeValue(field);
|
|
101
|
+
}
|
|
102
|
+
return copy;
|
|
103
|
+
}
|
|
104
|
+
/** A copy of `record` with every text field — nested entries included — passed through {@link normalizeText}. */
|
|
105
|
+
export function normalizeRecall(record) {
|
|
106
|
+
return normalizeValue(record);
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=normalize-text.js.map
|