@shuji-bonji/pdf-spec-mcp 0.3.2 → 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/README.ja.md +11 -4
- package/README.md +11 -4
- package/dist/config.d.ts +22 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +32 -1
- package/dist/config.js.map +1 -1
- package/dist/errors.d.ts +69 -5
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +70 -9
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -42
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +18 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +59 -0
- package/dist/server.js.map +1 -0
- package/dist/services/compare-service.d.ts +1 -1
- package/dist/services/compare-service.d.ts.map +1 -1
- package/dist/services/compare-service.js +2 -2
- package/dist/services/compare-service.js.map +1 -1
- package/dist/services/content-extractor.d.ts +65 -0
- package/dist/services/content-extractor.d.ts.map +1 -1
- package/dist/services/content-extractor.js +142 -10
- package/dist/services/content-extractor.js.map +1 -1
- package/dist/services/outline-resolver.d.ts +1 -1
- package/dist/services/outline-resolver.d.ts.map +1 -1
- package/dist/services/pdf-loader.d.ts +12 -2
- package/dist/services/pdf-loader.d.ts.map +1 -1
- package/dist/services/pdf-loader.js +21 -13
- package/dist/services/pdf-loader.js.map +1 -1
- package/dist/services/pdf-registry.d.ts.map +1 -1
- package/dist/services/pdf-registry.js +16 -8
- package/dist/services/pdf-registry.js.map +1 -1
- package/dist/services/pdf-service.d.ts +13 -1
- package/dist/services/pdf-service.d.ts.map +1 -1
- package/dist/services/pdf-service.js +79 -72
- package/dist/services/pdf-service.js.map +1 -1
- package/dist/services/requirement-extractor.d.ts +1 -1
- package/dist/services/requirement-extractor.d.ts.map +1 -1
- package/dist/services/requirement-extractor.js +40 -4
- package/dist/services/requirement-extractor.js.map +1 -1
- package/dist/services/search-index.d.ts +8 -1
- package/dist/services/search-index.d.ts.map +1 -1
- package/dist/services/search-index.js +48 -18
- package/dist/services/search-index.js.map +1 -1
- package/dist/services/table-collector.d.ts +19 -0
- package/dist/services/table-collector.d.ts.map +1 -0
- package/dist/services/table-collector.js +106 -0
- package/dist/services/table-collector.js.map +1 -0
- package/dist/tools/definitions.d.ts +26 -3
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +47 -114
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/handlers.d.ts +18 -9
- package/dist/tools/handlers.d.ts.map +1 -1
- package/dist/tools/handlers.js +57 -38
- package/dist/tools/handlers.js.map +1 -1
- package/dist/types/index.d.ts +28 -33
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/cache.d.ts.map +1 -1
- package/dist/utils/cache.js +4 -0
- package/dist/utils/cache.js.map +1 -1
- package/dist/utils/stdout-guard.d.ts +24 -0
- package/dist/utils/stdout-guard.d.ts.map +1 -0
- package/dist/utils/stdout-guard.js +27 -0
- package/dist/utils/stdout-guard.js.map +1 -0
- package/dist/utils/validation.d.ts +96 -14
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +152 -94
- package/dist/utils/validation.js.map +1 -1
- package/package.json +14 -11
- package/dist/container.d.ts +0 -25
- package/dist/container.d.ts.map +0 -1
- package/dist/container.js +0 -25
- package/dist/container.js.map +0 -1
package/dist/tools/handlers.js
CHANGED
|
@@ -1,28 +1,45 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MCP Tool Handlers
|
|
3
|
+
*
|
|
4
|
+
* Adding a tool takes three edits:
|
|
5
|
+
* 1. a Zod shape + schema in utils/validation.ts
|
|
6
|
+
* 2. one entry in the definitions.ts registry
|
|
7
|
+
* 3. a handleXxx here, plus a line in toolHandlers
|
|
8
|
+
*
|
|
9
|
+
* Every handler parses its arguments with parseArgs before doing anything. The SDK also
|
|
10
|
+
* checks the published shape, but handlers are called directly in tests too, and parseArgs
|
|
11
|
+
* is what turns a bad argument into the family's structured VALIDATION_ERROR.
|
|
3
12
|
*/
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
13
|
+
import { COVERAGE_GAPS } from '../config.js';
|
|
14
|
+
import { NEXT_ACTIONS, ToolPrerequisiteError } from '../errors.js';
|
|
6
15
|
import { compareVersions } from '../services/compare-service.js';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
16
|
+
import { ensureRegistryInitialized, getSpecInfo, isSpecAvailable, listSpecs, } from '../services/pdf-registry.js';
|
|
17
|
+
import { getDefinitions, getRequirements, getSectionContent, getSectionIndex, getTables, searchSpec, } from '../services/pdf-service.js';
|
|
18
|
+
import { CompareVersionsSchema, GetDefinitionsSchema, GetRequirementsSchema, GetSectionSchema, GetStructureSchema, GetTablesSchema, ListSpecsSchema, normalizeRequirementLevel, normalizeTerm, parseArgs, resolveMaxResults, SearchSpecSchema, } from '../utils/validation.js';
|
|
9
19
|
// ========================================
|
|
10
20
|
// list_specs
|
|
11
21
|
// ========================================
|
|
12
|
-
async function handleListSpecs(
|
|
22
|
+
async function handleListSpecs(rawArgs) {
|
|
23
|
+
const args = parseArgs(ListSpecsSchema, rawArgs);
|
|
13
24
|
await ensureRegistryInitialized();
|
|
14
25
|
const specs = listSpecs(args.category);
|
|
15
26
|
return {
|
|
16
27
|
totalSpecs: specs.length,
|
|
17
28
|
specs,
|
|
29
|
+
// Reported unconditionally, including when a category filter is in play: the gaps are
|
|
30
|
+
// properties of the corpus, not of the current query.
|
|
31
|
+
coverage: {
|
|
32
|
+
note: 'These normative areas are outside this corpus. A search returning no hits for them ' +
|
|
33
|
+
'means "cannot answer", not "no such requirement".',
|
|
34
|
+
gaps: COVERAGE_GAPS,
|
|
35
|
+
},
|
|
18
36
|
};
|
|
19
37
|
}
|
|
20
38
|
// ========================================
|
|
21
39
|
// get_structure
|
|
22
40
|
// ========================================
|
|
23
|
-
async function handleGetStructure(
|
|
24
|
-
const specId =
|
|
25
|
-
const maxDepth = validateMaxDepth(args.max_depth);
|
|
41
|
+
async function handleGetStructure(rawArgs) {
|
|
42
|
+
const { spec: specId, max_depth: maxDepth } = parseArgs(GetStructureSchema, rawArgs);
|
|
26
43
|
await ensureRegistryInitialized();
|
|
27
44
|
const index = await getSectionIndex(specId);
|
|
28
45
|
const sections = maxDepth ? pruneTree(index.tree, 0, maxDepth) : index.tree;
|
|
@@ -38,21 +55,19 @@ async function handleGetStructure(args) {
|
|
|
38
55
|
// ========================================
|
|
39
56
|
// get_section
|
|
40
57
|
// ========================================
|
|
41
|
-
async function handleGetSection(
|
|
42
|
-
const
|
|
43
|
-
validateSectionId(args.section);
|
|
58
|
+
async function handleGetSection(rawArgs) {
|
|
59
|
+
const args = parseArgs(GetSectionSchema, rawArgs);
|
|
44
60
|
await ensureRegistryInitialized();
|
|
45
|
-
return getSectionContent(args.section,
|
|
61
|
+
return getSectionContent(args.section, args.spec);
|
|
46
62
|
}
|
|
47
63
|
// ========================================
|
|
48
64
|
// search_spec
|
|
49
65
|
// ========================================
|
|
50
|
-
async function handleSearchSpec(
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
const maxResults = validateMaxResults(args.max_results);
|
|
66
|
+
async function handleSearchSpec(rawArgs) {
|
|
67
|
+
const args = parseArgs(SearchSpecSchema, rawArgs);
|
|
68
|
+
const maxResults = resolveMaxResults(args.max_results);
|
|
54
69
|
await ensureRegistryInitialized();
|
|
55
|
-
const hits = await searchSpec(args.query, maxResults,
|
|
70
|
+
const hits = await searchSpec(args.query, maxResults, args.spec);
|
|
56
71
|
return {
|
|
57
72
|
query: args.query,
|
|
58
73
|
totalResults: hits.length,
|
|
@@ -71,50 +86,54 @@ function pruneTree(entries, depth, maxDepth) {
|
|
|
71
86
|
// ========================================
|
|
72
87
|
// get_requirements
|
|
73
88
|
// ========================================
|
|
74
|
-
async function handleGetRequirements(
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
validateSectionId(args.section);
|
|
78
|
-
}
|
|
79
|
-
const level = validateRequirementLevel(args.level);
|
|
89
|
+
async function handleGetRequirements(rawArgs) {
|
|
90
|
+
const args = parseArgs(GetRequirementsSchema, rawArgs);
|
|
91
|
+
const level = normalizeRequirementLevel(args.level);
|
|
80
92
|
await ensureRegistryInitialized();
|
|
81
|
-
return getRequirements(args.section, level,
|
|
93
|
+
return getRequirements(args.section, level, args.spec);
|
|
82
94
|
}
|
|
83
95
|
// ========================================
|
|
84
96
|
// get_definitions
|
|
85
97
|
// ========================================
|
|
86
|
-
async function handleGetDefinitions(
|
|
87
|
-
const
|
|
88
|
-
const term = validateTermQuery(args.term);
|
|
98
|
+
async function handleGetDefinitions(rawArgs) {
|
|
99
|
+
const args = parseArgs(GetDefinitionsSchema, rawArgs);
|
|
89
100
|
await ensureRegistryInitialized();
|
|
90
|
-
return getDefinitions(term,
|
|
101
|
+
return getDefinitions(normalizeTerm(args.term), args.spec);
|
|
91
102
|
}
|
|
92
103
|
// ========================================
|
|
93
104
|
// get_tables
|
|
94
105
|
// ========================================
|
|
95
|
-
async function handleGetTables(
|
|
96
|
-
const
|
|
97
|
-
validateSectionId(args.section);
|
|
98
|
-
const tableIndex = validateTableIndex(args.table_index);
|
|
106
|
+
async function handleGetTables(rawArgs) {
|
|
107
|
+
const args = parseArgs(GetTablesSchema, rawArgs);
|
|
99
108
|
await ensureRegistryInitialized();
|
|
100
|
-
return getTables(args.section,
|
|
109
|
+
return getTables(args.section, args.table_index, args.spec);
|
|
101
110
|
}
|
|
102
111
|
// ========================================
|
|
103
112
|
// compare_versions
|
|
104
113
|
// ========================================
|
|
105
|
-
async function handleCompareVersions(
|
|
114
|
+
async function handleCompareVersions(rawArgs) {
|
|
115
|
+
const args = parseArgs(CompareVersionsSchema, rawArgs);
|
|
106
116
|
await ensureRegistryInitialized();
|
|
107
117
|
// Prerequisite: both pdf17 and iso32000-2 must be available
|
|
108
118
|
if (!isSpecAvailable('pdf17')) {
|
|
109
119
|
throw new ToolPrerequisiteError('compare_versions requires PDF32000_2008.pdf in PDF_SPEC_DIR. ' +
|
|
110
|
-
'Download it from https://opensource.adobe.com/dc-acrobat-sdk-docs/pdfstandards/PDF32000_2008.pdf'
|
|
120
|
+
'Download it from https://opensource.adobe.com/dc-acrobat-sdk-docs/pdfstandards/PDF32000_2008.pdf', {
|
|
121
|
+
hint: 'compare_versions diffs PDF 1.7 against PDF 2.0, so both PDFs must be present.',
|
|
122
|
+
next_actions: [
|
|
123
|
+
NEXT_ACTIONS.downloadSpec('PDF32000_2008.pdf', 'https://opensource.adobe.com/dc-acrobat-sdk-docs/pdfstandards/PDF32000_2008.pdf'),
|
|
124
|
+
],
|
|
125
|
+
});
|
|
111
126
|
}
|
|
112
127
|
if (!isSpecAvailable('iso32000-2')) {
|
|
113
128
|
throw new ToolPrerequisiteError('compare_versions requires ISO_32000-2_sponsored-ec2.pdf in PDF_SPEC_DIR. ' +
|
|
114
|
-
'Download it from https://pdfa.org/resource/iso-32000-pdf/'
|
|
129
|
+
'Download it from https://pdfa.org/resource/iso-32000-pdf/', {
|
|
130
|
+
hint: 'compare_versions diffs PDF 1.7 against PDF 2.0, so both PDFs must be present.',
|
|
131
|
+
next_actions: [
|
|
132
|
+
NEXT_ACTIONS.downloadSpec('ISO_32000-2_sponsored_EC3.pdf', 'https://pdfa.org/resource/iso-32000-pdf/'),
|
|
133
|
+
],
|
|
134
|
+
});
|
|
115
135
|
}
|
|
116
|
-
|
|
117
|
-
return compareVersions(section);
|
|
136
|
+
return compareVersions(args.section);
|
|
118
137
|
}
|
|
119
138
|
// ========================================
|
|
120
139
|
// Tool handler registry
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/tools/handlers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/tools/handlers.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -15,13 +15,27 @@ export interface SpecInfo {
|
|
|
15
15
|
outlineEntries: number | null;
|
|
16
16
|
description: string;
|
|
17
17
|
}
|
|
18
|
+
/** A normative area the corpus does not cover (see config.ts COVERAGE_GAPS) */
|
|
19
|
+
export interface CoverageGapInfo {
|
|
20
|
+
area: string;
|
|
21
|
+
standards: string[];
|
|
22
|
+
consequence: string;
|
|
23
|
+
}
|
|
18
24
|
/** list_specs result */
|
|
19
25
|
export interface ListSpecsResult {
|
|
20
26
|
totalSpecs: number;
|
|
21
27
|
specs: SpecInfo[];
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
28
|
+
/**
|
|
29
|
+
* What this server cannot answer for.
|
|
30
|
+
*
|
|
31
|
+
* Reported alongside what it *can* answer, because a caller that only sees the corpus has
|
|
32
|
+
* no way to tell "no requirement" from "not in the corpus" — and list_specs is the tool
|
|
33
|
+
* an agent reaches for first.
|
|
34
|
+
*/
|
|
35
|
+
coverage: {
|
|
36
|
+
note: string;
|
|
37
|
+
gaps: CoverageGapInfo[];
|
|
38
|
+
};
|
|
25
39
|
}
|
|
26
40
|
/** A matched section pair between two spec versions */
|
|
27
41
|
export interface SectionMapping {
|
|
@@ -45,9 +59,6 @@ export interface CompareVersionsResult {
|
|
|
45
59
|
added: UnmatchedSection[];
|
|
46
60
|
removed: UnmatchedSection[];
|
|
47
61
|
}
|
|
48
|
-
export interface CompareVersionsArgs {
|
|
49
|
-
section?: string;
|
|
50
|
-
}
|
|
51
62
|
/** Outline entry from PDF bookmark tree */
|
|
52
63
|
export interface OutlineEntry {
|
|
53
64
|
title: string;
|
|
@@ -127,19 +138,6 @@ export interface SearchResult {
|
|
|
127
138
|
totalResults: number;
|
|
128
139
|
results: SearchHit[];
|
|
129
140
|
}
|
|
130
|
-
export interface GetStructureArgs {
|
|
131
|
-
spec?: string;
|
|
132
|
-
max_depth?: number;
|
|
133
|
-
}
|
|
134
|
-
export interface GetSectionArgs {
|
|
135
|
-
spec?: string;
|
|
136
|
-
section: string;
|
|
137
|
-
}
|
|
138
|
-
export interface SearchSpecArgs {
|
|
139
|
-
spec?: string;
|
|
140
|
-
query: string;
|
|
141
|
-
max_results?: number;
|
|
142
|
-
}
|
|
143
141
|
/** ISO normative requirement levels (lowercase per ISO/IEC Directives Part 2) */
|
|
144
142
|
export type ISORequirementLevel = 'shall' | 'shall not' | 'should' | 'should not' | 'may';
|
|
145
143
|
/** A single extracted normative requirement */
|
|
@@ -149,6 +147,17 @@ export interface Requirement {
|
|
|
149
147
|
text: string;
|
|
150
148
|
section: string;
|
|
151
149
|
sectionTitle: string;
|
|
150
|
+
/** Where the sentence was found. Absent means prose (paragraph / list / note). */
|
|
151
|
+
source?: 'table';
|
|
152
|
+
/**
|
|
153
|
+
* Context for a requirement lifted out of a table, which its sentence alone loses.
|
|
154
|
+
*
|
|
155
|
+
* "The type of annotation ... shall be Highlight, Underline, ..." is unusable without
|
|
156
|
+
* knowing it constrains Table 182's `Subtype` entry. `text` stays verbatim so it can be
|
|
157
|
+
* quoted; the context rides alongside.
|
|
158
|
+
*/
|
|
159
|
+
table?: string;
|
|
160
|
+
key?: string;
|
|
152
161
|
}
|
|
153
162
|
export interface RequirementsResult {
|
|
154
163
|
filter: {
|
|
@@ -159,11 +168,6 @@ export interface RequirementsResult {
|
|
|
159
168
|
statistics: Record<string, number>;
|
|
160
169
|
requirements: Requirement[];
|
|
161
170
|
}
|
|
162
|
-
export interface GetRequirementsArgs {
|
|
163
|
-
spec?: string;
|
|
164
|
-
section?: string;
|
|
165
|
-
level?: string;
|
|
166
|
-
}
|
|
167
171
|
/** A term definition from Section 3 */
|
|
168
172
|
export interface Definition {
|
|
169
173
|
term: string;
|
|
@@ -177,10 +181,6 @@ export interface DefinitionsResult {
|
|
|
177
181
|
searchTerm?: string;
|
|
178
182
|
definitions: Definition[];
|
|
179
183
|
}
|
|
180
|
-
export interface GetDefinitionsArgs {
|
|
181
|
-
spec?: string;
|
|
182
|
-
term?: string;
|
|
183
|
-
}
|
|
184
184
|
/** A table extracted from a section with optional caption */
|
|
185
185
|
export interface TableInfo {
|
|
186
186
|
index: number;
|
|
@@ -194,11 +194,6 @@ export interface TablesResult {
|
|
|
194
194
|
totalTables: number;
|
|
195
195
|
tables: TableInfo[];
|
|
196
196
|
}
|
|
197
|
-
export interface GetTablesArgs {
|
|
198
|
-
spec?: string;
|
|
199
|
-
section: string;
|
|
200
|
-
table_index?: number;
|
|
201
|
-
}
|
|
202
197
|
export interface PageText {
|
|
203
198
|
page: number;
|
|
204
199
|
section: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,0DAA0D;AAC1D,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAE5B,+BAA+B;AAC/B,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAE7E,uCAAuC;AACvC,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,YAAY,CAAC;IACvB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAwB;AACxB,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,QAAQ,CAAC,CAAC,EAAE,CAAC;IACxB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAElB,OAAO,GAAE,YAAiB;IAOtC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,QAAQ,CAAC,CAAC,EAAE,CAAC;IACxB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAElB,OAAO,GAAE,YAAiB;IAOtC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAiB1B,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAa3B,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIvB,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
|
package/dist/utils/cache.js
CHANGED
|
@@ -17,6 +17,10 @@ export class LRUCache {
|
|
|
17
17
|
if (!this.cache.has(key)) {
|
|
18
18
|
return undefined;
|
|
19
19
|
}
|
|
20
|
+
// `has` above establishes the entry exists. The assertion cannot be replaced by
|
|
21
|
+
// `?.` or an `=== undefined` check: V is unconstrained, so a stored `undefined`
|
|
22
|
+
// is a legitimate value and must stay distinguishable from "absent".
|
|
23
|
+
// biome-ignore lint/style/noNonNullAssertion: guarded by the has() check above
|
|
20
24
|
const value = this.cache.get(key);
|
|
21
25
|
this.cache.delete(key);
|
|
22
26
|
this.cache.set(key, value);
|
package/dist/utils/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,OAAO,QAAQ;IACX,KAAK,CAAY;IACR,OAAO,CAAS;IAChB,KAAK,CAAU;IACf,IAAI,CAAS;IAE9B,YAAY,UAAwB,EAAE;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,GAAG,CAAC,GAAM;QACR,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,gBAAgB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,GAAG,CAAC,GAAM,EAAE,KAAQ;QAClB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YACjD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG,CAAC,GAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,GAAM;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,OAAO,QAAQ;IACX,KAAK,CAAY;IACR,OAAO,CAAS;IAChB,KAAK,CAAU;IACf,IAAI,CAAS;IAE9B,YAAY,UAAwB,EAAE;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,GAAG,CAAC,GAAM;QACR,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,gFAAgF;QAChF,gFAAgF;QAChF,qEAAqE;QACrE,+EAA+E;QAC/E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,gBAAgB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,GAAG,CAAC,GAAM,EAAE,KAAQ;QAClB,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YACjD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG,CAAC,GAAM;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,GAAM;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* stdout guard (side-effect only).
|
|
3
|
+
*
|
|
4
|
+
* MCP は stdout で JSON-RPC を喋るため、依存ライブラリが stdout へ書くと
|
|
5
|
+
* ストリームが壊れる。Node では **`console.log` と `console.info` が stdout**、
|
|
6
|
+
* `console.warn` / `console.error` は stderr に出る。
|
|
7
|
+
*
|
|
8
|
+
* 本リポジトリが依存する pdfjs-dist (v5) の実際の経路を確認した結果:
|
|
9
|
+
* - `warn()` → `console.warn` … **stderr。stdout は汚さない**
|
|
10
|
+
* - `info()` → `console.info` … **stdout**(既定 verbosity では出ないが、上がれば漏れる)
|
|
11
|
+
* - `deprecated()` → `console.log` … **stdout**(非推奨 API を踏むと無条件に出る)
|
|
12
|
+
*
|
|
13
|
+
* したがってガードすべき本命は `console.info` と `console.log` であり、
|
|
14
|
+
* `console.warn` の転送は保険(将来 pdfjs 側の実装が変わる / 他の依存が使う場合)。
|
|
15
|
+
* family の writer / verify は log と warn のみを塞いでおり info が素通りなので、
|
|
16
|
+
* こちらへ合わせるべき(別途 issue 化のこと)。
|
|
17
|
+
*
|
|
18
|
+
* エントリポイントの**最初の import** であること。ESM は import をトップレベル
|
|
19
|
+
* 文より先に巻き上げるため、index.ts にインラインで書くと依存モジュールの
|
|
20
|
+
* 評価後に実行されてしまう。独立モジュールに隔離し最初に import することで、
|
|
21
|
+
* 他のモジュールがロードされる前にガードが入ることを保証する。
|
|
22
|
+
*/
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=stdout-guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdout-guard.d.ts","sourceRoot":"","sources":["../../src/utils/stdout-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* stdout guard (side-effect only).
|
|
3
|
+
*
|
|
4
|
+
* MCP は stdout で JSON-RPC を喋るため、依存ライブラリが stdout へ書くと
|
|
5
|
+
* ストリームが壊れる。Node では **`console.log` と `console.info` が stdout**、
|
|
6
|
+
* `console.warn` / `console.error` は stderr に出る。
|
|
7
|
+
*
|
|
8
|
+
* 本リポジトリが依存する pdfjs-dist (v5) の実際の経路を確認した結果:
|
|
9
|
+
* - `warn()` → `console.warn` … **stderr。stdout は汚さない**
|
|
10
|
+
* - `info()` → `console.info` … **stdout**(既定 verbosity では出ないが、上がれば漏れる)
|
|
11
|
+
* - `deprecated()` → `console.log` … **stdout**(非推奨 API を踏むと無条件に出る)
|
|
12
|
+
*
|
|
13
|
+
* したがってガードすべき本命は `console.info` と `console.log` であり、
|
|
14
|
+
* `console.warn` の転送は保険(将来 pdfjs 側の実装が変わる / 他の依存が使う場合)。
|
|
15
|
+
* family の writer / verify は log と warn のみを塞いでおり info が素通りなので、
|
|
16
|
+
* こちらへ合わせるべき(別途 issue 化のこと)。
|
|
17
|
+
*
|
|
18
|
+
* エントリポイントの**最初の import** であること。ESM は import をトップレベル
|
|
19
|
+
* 文より先に巻き上げるため、index.ts にインラインで書くと依存モジュールの
|
|
20
|
+
* 評価後に実行されてしまう。独立モジュールに隔離し最初に import することで、
|
|
21
|
+
* 他のモジュールがロードされる前にガードが入ることを保証する。
|
|
22
|
+
*/
|
|
23
|
+
console.log = (...args) => console.error('[log]', ...args);
|
|
24
|
+
console.info = (...args) => console.error('[info]', ...args);
|
|
25
|
+
console.warn = (...args) => console.error('[warn]', ...args);
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=stdout-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdout-guard.js","sourceRoot":"","sources":["../../src/utils/stdout-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AACtE,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;AACxE,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC"}
|
|
@@ -1,22 +1,104 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Input Validation
|
|
2
|
+
* Input Validation — Zod schemas as the single source of truth (A-4)
|
|
3
|
+
*
|
|
4
|
+
* Previously the same constraints were maintained twice: hand-written `assert` helpers
|
|
5
|
+
* here, and a hand-written JSON Schema in definitions.ts. They could drift — the published
|
|
6
|
+
* schema saying one thing while the runtime check enforced another. From this version the
|
|
7
|
+
* Zod schema is the one source both are derived from:
|
|
8
|
+
* - the schema published to MCP (definitions.ts hands the shape to registerTool)
|
|
9
|
+
* - the runtime check (handlers.ts parses with the same schema)
|
|
10
|
+
* Limits stay in config.ts (VALIDATION_LIMITS).
|
|
11
|
+
*
|
|
12
|
+
* Field descriptions live here too, so a tool's advertised argument and the check that
|
|
13
|
+
* enforces it cannot disagree.
|
|
3
14
|
*/
|
|
15
|
+
import { z } from 'zod';
|
|
4
16
|
import type { ISORequirementLevel } from '../types/index.js';
|
|
5
|
-
export declare
|
|
6
|
-
export declare
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export declare
|
|
10
|
-
|
|
11
|
-
|
|
17
|
+
export declare const REQUIREMENT_LEVELS: [ISORequirementLevel, ...ISORequirementLevel[]];
|
|
18
|
+
export declare const listSpecsShape: {
|
|
19
|
+
category: z.ZodOptional<z.ZodString>;
|
|
20
|
+
};
|
|
21
|
+
export declare const ListSpecsSchema: z.ZodObject<{
|
|
22
|
+
category: z.ZodOptional<z.ZodString>;
|
|
23
|
+
}, z.core.$strip>;
|
|
24
|
+
export declare const getStructureShape: {
|
|
25
|
+
spec: z.ZodOptional<z.ZodString>;
|
|
26
|
+
max_depth: z.ZodOptional<z.ZodNumber>;
|
|
27
|
+
};
|
|
28
|
+
export declare const GetStructureSchema: z.ZodObject<{
|
|
29
|
+
spec: z.ZodOptional<z.ZodString>;
|
|
30
|
+
max_depth: z.ZodOptional<z.ZodNumber>;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
export declare const getSectionShape: {
|
|
33
|
+
spec: z.ZodOptional<z.ZodString>;
|
|
34
|
+
section: z.ZodString;
|
|
35
|
+
};
|
|
36
|
+
export declare const GetSectionSchema: z.ZodObject<{
|
|
37
|
+
spec: z.ZodOptional<z.ZodString>;
|
|
38
|
+
section: z.ZodString;
|
|
39
|
+
}, z.core.$strip>;
|
|
40
|
+
export declare const searchSpecShape: {
|
|
41
|
+
spec: z.ZodOptional<z.ZodString>;
|
|
42
|
+
query: z.ZodString;
|
|
43
|
+
max_results: z.ZodOptional<z.ZodNumber>;
|
|
44
|
+
};
|
|
45
|
+
export declare const SearchSpecSchema: z.ZodObject<{
|
|
46
|
+
spec: z.ZodOptional<z.ZodString>;
|
|
47
|
+
query: z.ZodString;
|
|
48
|
+
max_results: z.ZodOptional<z.ZodNumber>;
|
|
49
|
+
}, z.core.$strip>;
|
|
50
|
+
export declare const getRequirementsShape: {
|
|
51
|
+
spec: z.ZodOptional<z.ZodString>;
|
|
52
|
+
section: z.ZodOptional<z.ZodString>;
|
|
53
|
+
level: z.ZodOptional<z.ZodString>;
|
|
54
|
+
};
|
|
55
|
+
export declare const GetRequirementsSchema: z.ZodObject<{
|
|
56
|
+
spec: z.ZodOptional<z.ZodString>;
|
|
57
|
+
section: z.ZodOptional<z.ZodString>;
|
|
58
|
+
level: z.ZodOptional<z.ZodString>;
|
|
59
|
+
}, z.core.$strip>;
|
|
60
|
+
export declare const getDefinitionsShape: {
|
|
61
|
+
spec: z.ZodOptional<z.ZodString>;
|
|
62
|
+
term: z.ZodOptional<z.ZodString>;
|
|
63
|
+
};
|
|
64
|
+
export declare const GetDefinitionsSchema: z.ZodObject<{
|
|
65
|
+
spec: z.ZodOptional<z.ZodString>;
|
|
66
|
+
term: z.ZodOptional<z.ZodString>;
|
|
67
|
+
}, z.core.$strip>;
|
|
68
|
+
export declare const getTablesShape: {
|
|
69
|
+
spec: z.ZodOptional<z.ZodString>;
|
|
70
|
+
section: z.ZodString;
|
|
71
|
+
table_index: z.ZodOptional<z.ZodNumber>;
|
|
72
|
+
};
|
|
73
|
+
export declare const GetTablesSchema: z.ZodObject<{
|
|
74
|
+
spec: z.ZodOptional<z.ZodString>;
|
|
75
|
+
section: z.ZodString;
|
|
76
|
+
table_index: z.ZodOptional<z.ZodNumber>;
|
|
77
|
+
}, z.core.$strip>;
|
|
78
|
+
export declare const compareVersionsShape: {
|
|
79
|
+
section: z.ZodOptional<z.ZodString>;
|
|
80
|
+
};
|
|
81
|
+
export declare const CompareVersionsSchema: z.ZodObject<{
|
|
82
|
+
section: z.ZodOptional<z.ZodString>;
|
|
83
|
+
}, z.core.$strip>;
|
|
12
84
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
85
|
+
* Parse tool arguments, reporting failures as ValidationError.
|
|
86
|
+
*
|
|
87
|
+
* The SDK validates against the published shape too, but this stays the enforcement point:
|
|
88
|
+
* it is what runs for callers reaching a handler directly (unit tests included), and it
|
|
89
|
+
* turns a Zod failure into the same structured error as every other rejection.
|
|
15
90
|
*/
|
|
16
|
-
export declare function
|
|
91
|
+
export declare function parseArgs<T extends z.ZodType>(schema: T, args: unknown): z.infer<T>;
|
|
17
92
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
93
|
+
* Normalise a requirement level.
|
|
94
|
+
*
|
|
95
|
+
* Kept out of the Zod schema as a plain enum so that case and stray whitespace are still
|
|
96
|
+
* forgiven ("SHALL " → "shall"), which the hand-written validator did and callers rely on.
|
|
97
|
+
* The published schema advertises the accepted values in its description.
|
|
20
98
|
*/
|
|
21
|
-
export declare function
|
|
99
|
+
export declare function normalizeRequirementLevel(level?: string): ISORequirementLevel | undefined;
|
|
100
|
+
/** Default applied when max_results is omitted. */
|
|
101
|
+
export declare function resolveMaxResults(max?: number): number;
|
|
102
|
+
/** Trim a term the way the previous hand-written validator did. */
|
|
103
|
+
export declare function normalizeTerm(term?: string): string | undefined;
|
|
22
104
|
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAkC7D,eAAO,MAAM,kBAAkB,EAAE,CAAC,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,CAM9E,CAAC;AAUF,eAAO,MAAM,cAAc;;CAK1B,CAAC;AACF,eAAO,MAAM,eAAe;;iBAA2B,CAAC;AAExD,eAAO,MAAM,iBAAiB;;;CAS7B,CAAC;AACF,eAAO,MAAM,kBAAkB;;;iBAA8B,CAAC;AAE9D,eAAO,MAAM,eAAe;;;CAG3B,CAAC;AACF,eAAO,MAAM,gBAAgB;;;iBAA4B,CAAC;AAE1D,eAAO,MAAM,eAAe;;;;CAe3B,CAAC;AACF,eAAO,MAAM,gBAAgB;;;;iBAA4B,CAAC;AAE1D,eAAO,MAAM,oBAAoB;;;;CAOhC,CAAC;AACF,eAAO,MAAM,qBAAqB;;;;iBAAiC,CAAC;AAEpE,eAAO,MAAM,mBAAmB;;;CAS/B,CAAC;AACF,eAAO,MAAM,oBAAoB;;;iBAAgC,CAAC;AAElE,eAAO,MAAM,cAAc;;;;CAS1B,CAAC;AACF,eAAO,MAAM,eAAe;;;;iBAA2B,CAAC;AAExD,eAAO,MAAM,oBAAoB;;CAEhC,CAAC;AACF,eAAO,MAAM,qBAAqB;;iBAAiC,CAAC;AAMpE;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CASnF;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CASzF;AAED,mDAAmD;AACnD,wBAAgB,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE/D"}
|