@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.
Files changed (77) hide show
  1. package/README.ja.md +11 -4
  2. package/README.md +11 -4
  3. package/dist/config.d.ts +22 -0
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +32 -1
  6. package/dist/config.js.map +1 -1
  7. package/dist/errors.d.ts +69 -5
  8. package/dist/errors.d.ts.map +1 -1
  9. package/dist/errors.js +70 -9
  10. package/dist/errors.js.map +1 -1
  11. package/dist/index.d.ts +1 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +5 -42
  14. package/dist/index.js.map +1 -1
  15. package/dist/server.d.ts +18 -0
  16. package/dist/server.d.ts.map +1 -0
  17. package/dist/server.js +59 -0
  18. package/dist/server.js.map +1 -0
  19. package/dist/services/compare-service.d.ts +1 -1
  20. package/dist/services/compare-service.d.ts.map +1 -1
  21. package/dist/services/compare-service.js +2 -2
  22. package/dist/services/compare-service.js.map +1 -1
  23. package/dist/services/content-extractor.d.ts +65 -0
  24. package/dist/services/content-extractor.d.ts.map +1 -1
  25. package/dist/services/content-extractor.js +142 -10
  26. package/dist/services/content-extractor.js.map +1 -1
  27. package/dist/services/outline-resolver.d.ts +1 -1
  28. package/dist/services/outline-resolver.d.ts.map +1 -1
  29. package/dist/services/pdf-loader.d.ts +12 -2
  30. package/dist/services/pdf-loader.d.ts.map +1 -1
  31. package/dist/services/pdf-loader.js +21 -13
  32. package/dist/services/pdf-loader.js.map +1 -1
  33. package/dist/services/pdf-registry.d.ts.map +1 -1
  34. package/dist/services/pdf-registry.js +16 -8
  35. package/dist/services/pdf-registry.js.map +1 -1
  36. package/dist/services/pdf-service.d.ts +13 -1
  37. package/dist/services/pdf-service.d.ts.map +1 -1
  38. package/dist/services/pdf-service.js +79 -72
  39. package/dist/services/pdf-service.js.map +1 -1
  40. package/dist/services/requirement-extractor.d.ts +1 -1
  41. package/dist/services/requirement-extractor.d.ts.map +1 -1
  42. package/dist/services/requirement-extractor.js +40 -4
  43. package/dist/services/requirement-extractor.js.map +1 -1
  44. package/dist/services/search-index.d.ts +8 -1
  45. package/dist/services/search-index.d.ts.map +1 -1
  46. package/dist/services/search-index.js +48 -18
  47. package/dist/services/search-index.js.map +1 -1
  48. package/dist/services/table-collector.d.ts +19 -0
  49. package/dist/services/table-collector.d.ts.map +1 -0
  50. package/dist/services/table-collector.js +106 -0
  51. package/dist/services/table-collector.js.map +1 -0
  52. package/dist/tools/definitions.d.ts +26 -3
  53. package/dist/tools/definitions.d.ts.map +1 -1
  54. package/dist/tools/definitions.js +47 -114
  55. package/dist/tools/definitions.js.map +1 -1
  56. package/dist/tools/handlers.d.ts +18 -9
  57. package/dist/tools/handlers.d.ts.map +1 -1
  58. package/dist/tools/handlers.js +57 -38
  59. package/dist/tools/handlers.js.map +1 -1
  60. package/dist/types/index.d.ts +28 -33
  61. package/dist/types/index.d.ts.map +1 -1
  62. package/dist/utils/cache.d.ts.map +1 -1
  63. package/dist/utils/cache.js +4 -0
  64. package/dist/utils/cache.js.map +1 -1
  65. package/dist/utils/stdout-guard.d.ts +24 -0
  66. package/dist/utils/stdout-guard.d.ts.map +1 -0
  67. package/dist/utils/stdout-guard.js +27 -0
  68. package/dist/utils/stdout-guard.js.map +1 -0
  69. package/dist/utils/validation.d.ts +96 -14
  70. package/dist/utils/validation.d.ts.map +1 -1
  71. package/dist/utils/validation.js +152 -94
  72. package/dist/utils/validation.js.map +1 -1
  73. package/package.json +14 -11
  74. package/dist/container.d.ts +0 -25
  75. package/dist/container.d.ts.map +0 -1
  76. package/dist/container.js +0 -25
  77. package/dist/container.js.map +0 -1
@@ -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 { getSectionIndex, getSectionContent, searchSpec, getRequirements, getDefinitions, getTables, } from '../services/pdf-service.js';
5
- import { ensureRegistryInitialized, listSpecs, isSpecAvailable, getSpecInfo, } from '../services/pdf-registry.js';
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 { ToolPrerequisiteError } from '../errors.js';
8
- import { validateSectionId, validateSearchQuery, validateMaxDepth, validateMaxResults, validateRequirementLevel, validateTermQuery, validateTableIndex, validateSpecId, validateCompareSection, } from '../utils/validation.js';
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(args) {
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(args) {
24
- const specId = validateSpecId(args.spec);
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(args) {
42
- const specId = validateSpecId(args.spec);
43
- validateSectionId(args.section);
58
+ async function handleGetSection(rawArgs) {
59
+ const args = parseArgs(GetSectionSchema, rawArgs);
44
60
  await ensureRegistryInitialized();
45
- return getSectionContent(args.section, specId);
61
+ return getSectionContent(args.section, args.spec);
46
62
  }
47
63
  // ========================================
48
64
  // search_spec
49
65
  // ========================================
50
- async function handleSearchSpec(args) {
51
- const specId = validateSpecId(args.spec);
52
- validateSearchQuery(args.query);
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, specId);
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(args) {
75
- const specId = validateSpecId(args.spec);
76
- if (args.section !== undefined) {
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, specId);
93
+ return getRequirements(args.section, level, args.spec);
82
94
  }
83
95
  // ========================================
84
96
  // get_definitions
85
97
  // ========================================
86
- async function handleGetDefinitions(args) {
87
- const specId = validateSpecId(args.spec);
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, specId);
101
+ return getDefinitions(normalizeTerm(args.term), args.spec);
91
102
  }
92
103
  // ========================================
93
104
  // get_tables
94
105
  // ========================================
95
- async function handleGetTables(args) {
96
- const specId = validateSpecId(args.spec);
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, tableIndex, specId);
109
+ return getTables(args.section, args.table_index, args.spec);
101
110
  }
102
111
  // ========================================
103
112
  // compare_versions
104
113
  // ========================================
105
- async function handleCompareVersions(args) {
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
- const section = validateCompareSection(args.section);
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":"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"}
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/tools/handlers.ts"],"names":[],"mappings":"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"}
@@ -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
- export interface ListSpecsArgs {
24
- category?: string;
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":"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"}
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;IAa1B,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"}
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"}
@@ -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);
@@ -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 Utilities
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 function validateSectionId(section: unknown): asserts section is string;
6
- export declare function validateSearchQuery(query: unknown): asserts query is string;
7
- export declare function validateMaxDepth(depth: unknown): number | undefined;
8
- export declare function validateMaxResults(max: unknown): number;
9
- export declare function validateRequirementLevel(level: unknown): ISORequirementLevel | undefined;
10
- export declare function validateTermQuery(term: unknown): string | undefined;
11
- export declare function validateTableIndex(index: unknown): number | undefined;
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
- * Validate spec ID parameter.
14
- * Returns undefined if not provided (caller should use DEFAULT_SPEC_ID via resolveSpecId).
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 validateSpecId(specId: unknown): string | undefined;
91
+ export declare function parseArgs<T extends z.ZodType>(schema: T, args: unknown): z.infer<T>;
17
92
  /**
18
- * Validate section parameter for compare_versions.
19
- * Returns undefined if not provided (compare all sections).
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 validateCompareSection(section: unknown): string | undefined;
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;;GAEG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAW7D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAO7E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAU3E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAanE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAavD;AAUD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS,CAYxF;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAYnE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAMrE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CASlE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAI3E"}
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"}