@shuji-bonji/rfcxml-mcp 0.6.13 → 0.6.53
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 +178 -50
- package/README.md +181 -51
- package/dist/cli/prefetch.d.ts +6 -1
- package/dist/cli/prefetch.d.ts.map +1 -1
- package/dist/cli/prefetch.js +53 -23
- package/dist/cli/prefetch.js.map +1 -1
- package/dist/config.d.ts +0 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -2
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +16 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +80 -7
- package/dist/constants.js.map +1 -1
- package/dist/services/checklist-generator.d.ts.map +1 -1
- package/dist/services/checklist-generator.js +72 -7
- package/dist/services/checklist-generator.js.map +1 -1
- package/dist/services/rfc-fetcher.d.ts +19 -1
- package/dist/services/rfc-fetcher.d.ts.map +1 -1
- package/dist/services/rfc-fetcher.js +116 -19
- package/dist/services/rfc-fetcher.js.map +1 -1
- package/dist/services/rfc-service.d.ts +11 -1
- package/dist/services/rfc-service.d.ts.map +1 -1
- package/dist/services/rfc-service.js +45 -5
- package/dist/services/rfc-service.js.map +1 -1
- package/dist/services/rfc-text-parser.d.ts.map +1 -1
- package/dist/services/rfc-text-parser.js +1594 -88
- package/dist/services/rfc-text-parser.js.map +1 -1
- package/dist/services/rfcxml-parser.d.ts.map +1 -1
- package/dist/services/rfcxml-parser.js +366 -98
- package/dist/services/rfcxml-parser.js.map +1 -1
- package/dist/tools/definitions.d.ts +8 -0
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +17 -1
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/handlers.d.ts +24 -12
- package/dist/tools/handlers.d.ts.map +1 -1
- package/dist/tools/handlers.js +161 -36
- package/dist/tools/handlers.js.map +1 -1
- package/dist/types/index.d.ts +22 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/cache.d.ts +19 -0
- package/dist/utils/cache.d.ts.map +1 -1
- package/dist/utils/cache.js +32 -0
- package/dist/utils/cache.js.map +1 -1
- package/dist/utils/disk-cache.d.ts +10 -6
- package/dist/utils/disk-cache.d.ts.map +1 -1
- package/dist/utils/disk-cache.js +13 -9
- package/dist/utils/disk-cache.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +3 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/requirement-extractor.d.ts.map +1 -1
- package/dist/utils/requirement-extractor.js +413 -21
- package/dist/utils/requirement-extractor.js.map +1 -1
- package/dist/utils/section.d.ts.map +1 -1
- package/dist/utils/section.js +11 -0
- package/dist/utils/section.js.map +1 -1
- package/dist/utils/statement-matcher.d.ts +69 -4
- package/dist/utils/statement-matcher.d.ts.map +1 -1
- package/dist/utils/statement-matcher.js +524 -48
- package/dist/utils/statement-matcher.js.map +1 -1
- package/dist/utils/text.d.ts +62 -0
- package/dist/utils/text.d.ts.map +1 -1
- package/dist/utils/text.js +273 -18
- package/dist/utils/text.js.map +1 -1
- package/package.json +5 -2
package/dist/tools/handlers.js
CHANGED
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { extractRequirements } from '../services/rfcxml-parser.js';
|
|
5
5
|
import { generateChecklist, generateChecklistMarkdown, getChecklistStats, } from '../services/checklist-generator.js';
|
|
6
|
-
import { getParsedRFC, clearParseCache, getSourceNoteIfText } from '../services/rfc-service.js';
|
|
6
|
+
import { getParsedRFC, clearParseCache, getSourceNoteIfText, getXMLFetchFailureNote, } from '../services/rfc-service.js';
|
|
7
7
|
import { fetchRFCMetadata, fetchReferencedBy, fetchReferences } from '../services/rfc-fetcher.js';
|
|
8
8
|
import { validateRFCNumber } from '../utils/validation.js';
|
|
9
9
|
import { findSection, collectCrossReferences, normalizeSectionNumber } from '../utils/section.js';
|
|
10
|
-
import { matchStatement, isSubjectTerm, MATCHING_LIMITS } from '../utils/statement-matcher.js';
|
|
10
|
+
import { matchStatement, isSubjectTerm, findUndecidablePassiveProhibition, findQualifierOnlyViolation, MATCHING_LIMITS, } from '../utils/statement-matcher.js';
|
|
11
|
+
import { clipAtWord } from '../utils/text.js';
|
|
11
12
|
// Re-export clearParseCache for testing
|
|
12
13
|
export { clearParseCache };
|
|
13
14
|
/**
|
|
@@ -22,6 +23,45 @@ export { clearParseCache };
|
|
|
22
23
|
* most one round-trip of latency over the previous behavior, and is free on
|
|
23
24
|
* cache hits.
|
|
24
25
|
*/
|
|
26
|
+
/**
|
|
27
|
+
* Datatracker が返した著者を、本文が印字している順に並べ替える。
|
|
28
|
+
*
|
|
29
|
+
* `documentauthor.order` は古い RFC では本文の並びと食い違う。実測(本文の
|
|
30
|
+
* 著者欄が読めたテキスト経路の RFC 25 本)で、並びが一致したのは 12 本だった。
|
|
31
|
+
*
|
|
32
|
+
* | RFC | 本文 | API の order |
|
|
33
|
+
* |---|---|---|
|
|
34
|
+
* | 6455 | Fette / Melnikov | Melnikov / Fette |
|
|
35
|
+
* | 5246 | Dierks / Rescorla | Rescorla / Dierks |
|
|
36
|
+
* | 4253 | Ylonen / Lonvick | Lonvick / Ylonen |
|
|
37
|
+
* | 2445 | Dawson / Stenerson | Stenerson / Dawson |
|
|
38
|
+
* | 4271 | Rekhter / Li / Hares | Rekhter / Hares / Li |
|
|
39
|
+
* | 1157 | Case / Fedor / Schoffstall / Davin | Fedor / Schoffstall / Davin / Case |
|
|
40
|
+
*
|
|
41
|
+
* **顔ぶれが一致するときだけ並べ替える。** 本文の著者欄から姓を拾う規則は
|
|
42
|
+
* 所属を名前と読み違えることがある(RFC 6265 の `U.C. Berkeley`)ので、
|
|
43
|
+
* 著者を足したり落としたりはしない。顔ぶれが違えば API の並びをそのまま返す。
|
|
44
|
+
*/
|
|
45
|
+
export function orderByDocument(authors, order) {
|
|
46
|
+
if (!order || order.length !== authors.length)
|
|
47
|
+
return authors;
|
|
48
|
+
const surnameOf = (author) => (author.fullname || '').trim().split(/\s+/).pop()?.toLowerCase() ?? '';
|
|
49
|
+
const remaining = new Map();
|
|
50
|
+
for (const author of authors) {
|
|
51
|
+
const key = surnameOf(author);
|
|
52
|
+
if (!remaining.has(key))
|
|
53
|
+
remaining.set(key, []);
|
|
54
|
+
remaining.get(key).push(author);
|
|
55
|
+
}
|
|
56
|
+
const ordered = [];
|
|
57
|
+
for (const surname of order) {
|
|
58
|
+
const bucket = remaining.get(surname);
|
|
59
|
+
if (!bucket || bucket.length === 0)
|
|
60
|
+
return authors;
|
|
61
|
+
ordered.push(bucket.shift());
|
|
62
|
+
}
|
|
63
|
+
return ordered;
|
|
64
|
+
}
|
|
25
65
|
export async function handleGetRFCStructure(args) {
|
|
26
66
|
validateRFCNumber(args.rfc);
|
|
27
67
|
const [parsedResult, apiMetadata] = await Promise.all([
|
|
@@ -30,7 +70,7 @@ export async function handleGetRFCStructure(args) {
|
|
|
30
70
|
// shape inside fetchRFCMetadata, so this never rejects.
|
|
31
71
|
fetchRFCMetadata(args.rfc, { includeAuthors: args.includeAuthors === true }),
|
|
32
72
|
]);
|
|
33
|
-
const { data: parsed, source } = parsedResult;
|
|
73
|
+
const { data: parsed, source, xmlFetchError } = parsedResult;
|
|
34
74
|
// Simplify section structure
|
|
35
75
|
function simplifySection(section, includeContent) {
|
|
36
76
|
const result = {
|
|
@@ -50,19 +90,24 @@ export async function handleGetRFCStructure(args) {
|
|
|
50
90
|
// Merge: prefer XML body for title/docName/number (authoritative for the
|
|
51
91
|
// RFC body), fold in API-derived fields. Authors only included when
|
|
52
92
|
// includeAuthors=true (otherwise the API fetch returned [] anyway).
|
|
93
|
+
// `authorOrder` は並べ替えの手掛かりであって、返す値ではない。
|
|
94
|
+
// `category` / `stream` は Datatracker に届いたときだけ付く。届かなかった
|
|
95
|
+
// ときと、対応表に無い値(RFC 1 の `unkn` / `legacy`)のときは省く。
|
|
96
|
+
// 既定値で埋めると、取れなかったことが応答のどこにも出ない。
|
|
97
|
+
const { authorOrder, ...bodyMetadata } = parsed.metadata;
|
|
53
98
|
const mergedMetadata = {
|
|
54
|
-
...
|
|
99
|
+
...bodyMetadata,
|
|
55
100
|
number: parsed.metadata.number ?? args.rfc,
|
|
56
101
|
title: parsed.metadata.title || apiMetadata.title,
|
|
57
|
-
category: apiMetadata.category,
|
|
58
|
-
stream: apiMetadata.stream,
|
|
102
|
+
...(apiMetadata.category ? { category: apiMetadata.category } : {}),
|
|
103
|
+
...(apiMetadata.stream ? { stream: apiMetadata.stream } : {}),
|
|
59
104
|
// 公開日は本文(RFCXML の front/date、テキストではヘッダ行)から取る。
|
|
60
105
|
// Datatracker の document.time はレコードの更新時刻であって公開日ではない。
|
|
61
106
|
date: parsed.metadata.date,
|
|
62
107
|
abstract: apiMetadata.abstract,
|
|
63
108
|
};
|
|
64
109
|
if (apiMetadata.authors.length > 0) {
|
|
65
|
-
mergedMetadata.authors = apiMetadata.authors;
|
|
110
|
+
mergedMetadata.authors = orderByDocument(apiMetadata.authors, authorOrder);
|
|
66
111
|
}
|
|
67
112
|
return {
|
|
68
113
|
metadata: mergedMetadata,
|
|
@@ -72,15 +117,25 @@ export async function handleGetRFCStructure(args) {
|
|
|
72
117
|
informative: parsed.references.informative.length,
|
|
73
118
|
},
|
|
74
119
|
_source: source,
|
|
75
|
-
_sourceNote: getSourceNoteIfText(source, 'structure'),
|
|
120
|
+
_sourceNote: joinNotes(getSourceNoteIfText(source, 'structure', xmlFetchError), apiMetadata.datatrackerError
|
|
121
|
+
? `IETF Datatracker API was not reachable (${apiMetadata.datatrackerError}); category, stream and abstract are omitted.`
|
|
122
|
+
: undefined),
|
|
76
123
|
};
|
|
77
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* 複数の注記を 1 つの `_sourceNote` にまとめる。どれも無ければ `undefined`
|
|
127
|
+
* (JSON には出ない)。
|
|
128
|
+
*/
|
|
129
|
+
function joinNotes(...notes) {
|
|
130
|
+
const present = notes.filter((note) => Boolean(note));
|
|
131
|
+
return present.length > 0 ? present.join(' ') : undefined;
|
|
132
|
+
}
|
|
78
133
|
/**
|
|
79
134
|
* get_requirements handler
|
|
80
135
|
*/
|
|
81
136
|
export async function handleGetRequirements(args) {
|
|
82
137
|
validateRFCNumber(args.rfc);
|
|
83
|
-
const { data: parsed, source } = await getParsedRFC(args.rfc);
|
|
138
|
+
const { data: parsed, source, xmlFetchError } = await getParsedRFC(args.rfc);
|
|
84
139
|
const requirements = extractRequirements(parsed.sections, {
|
|
85
140
|
section: args.section,
|
|
86
141
|
level: args.level,
|
|
@@ -102,7 +157,7 @@ export async function handleGetRequirements(args) {
|
|
|
102
157
|
stats,
|
|
103
158
|
requirements,
|
|
104
159
|
_source: source,
|
|
105
|
-
_sourceNote: getSourceNoteIfText(source, 'requirements'),
|
|
160
|
+
_sourceNote: getSourceNoteIfText(source, 'requirements', xmlFetchError),
|
|
106
161
|
};
|
|
107
162
|
}
|
|
108
163
|
/**
|
|
@@ -110,7 +165,7 @@ export async function handleGetRequirements(args) {
|
|
|
110
165
|
*/
|
|
111
166
|
export async function handleGetDefinitions(args) {
|
|
112
167
|
validateRFCNumber(args.rfc);
|
|
113
|
-
const { data: parsed, source } = await getParsedRFC(args.rfc);
|
|
168
|
+
const { data: parsed, source, xmlFetchError } = await getParsedRFC(args.rfc);
|
|
114
169
|
let definitions = parsed.definitions;
|
|
115
170
|
// Filter by term
|
|
116
171
|
if (args.term) {
|
|
@@ -123,7 +178,7 @@ export async function handleGetDefinitions(args) {
|
|
|
123
178
|
count: definitions.length,
|
|
124
179
|
definitions,
|
|
125
180
|
_source: source,
|
|
126
|
-
_sourceNote: getSourceNoteIfText(source, 'definitions'),
|
|
181
|
+
_sourceNote: getSourceNoteIfText(source, 'definitions', xmlFetchError),
|
|
127
182
|
};
|
|
128
183
|
}
|
|
129
184
|
/**
|
|
@@ -149,7 +204,7 @@ export async function handleGetDefinitions(args) {
|
|
|
149
204
|
*/
|
|
150
205
|
export async function handleGetDependencies(args) {
|
|
151
206
|
validateRFCNumber(args.rfc);
|
|
152
|
-
const { data: parsed, source } = await getParsedRFC(args.rfc);
|
|
207
|
+
const { data: parsed, source, xmlFetchError } = await getParsedRFC(args.rfc);
|
|
153
208
|
const bodyNormative = parsed.references.normative.map((ref) => ({
|
|
154
209
|
rfcNumber: ref.rfcNumber,
|
|
155
210
|
title: ref.title,
|
|
@@ -207,8 +262,9 @@ export async function handleGetDependencies(args) {
|
|
|
207
262
|
_source: source,
|
|
208
263
|
_referencesSource: referencesSource,
|
|
209
264
|
};
|
|
210
|
-
|
|
211
|
-
|
|
265
|
+
const note = joinNotes(sourceNote, xmlFetchError ? getXMLFetchFailureNote(xmlFetchError) : undefined);
|
|
266
|
+
if (note)
|
|
267
|
+
result._sourceNote = note;
|
|
212
268
|
// Fetch RFCs that reference this RFC from IETF Datatracker API.
|
|
213
269
|
if (args.includeReferencedBy) {
|
|
214
270
|
result.referencedBy = await fetchReferencedBy(args.rfc);
|
|
@@ -220,28 +276,37 @@ export async function handleGetDependencies(args) {
|
|
|
220
276
|
*/
|
|
221
277
|
export async function handleGetRelatedSections(args) {
|
|
222
278
|
validateRFCNumber(args.rfc);
|
|
223
|
-
const { data: parsed, source } = await getParsedRFC(args.rfc);
|
|
279
|
+
const { data: parsed, source, xmlFetchError } = await getParsedRFC(args.rfc);
|
|
280
|
+
// 無い節は throw して `isError: true` にそろえる。v0.6.52 までは
|
|
281
|
+
// `{ error }` を正常応答として返しており、`rfc: 0` や 404 と形が違っていた。
|
|
224
282
|
const targetSection = findSection(parsed.sections, args.section);
|
|
225
283
|
if (!targetSection) {
|
|
226
|
-
|
|
227
|
-
error: `Section ${args.section} not found`,
|
|
228
|
-
};
|
|
284
|
+
throw new Error(`Section ${args.section} not found`);
|
|
229
285
|
}
|
|
230
286
|
// Collect cross-references using utility
|
|
231
287
|
const relatedSections = collectCrossReferences(targetSection);
|
|
288
|
+
// 自分自身は「関連する節」ではない。RFC 8017 §1 は
|
|
289
|
+
// `This document is organized as follows: Section 1 is an introduction …`
|
|
290
|
+
// と自分を挙げるので、§1 を引くと §1 が返っていた。
|
|
291
|
+
relatedSections.delete(args.section);
|
|
292
|
+
relatedSections.delete(normalizeSectionNumber(targetSection.number ?? ''));
|
|
232
293
|
return {
|
|
233
294
|
rfc: args.rfc,
|
|
234
295
|
section: args.section,
|
|
235
296
|
title: targetSection.title,
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
}
|
|
242
|
-
|
|
297
|
+
// 実在する節だけを返す。原文が実在しない節を指していることがある
|
|
298
|
+
// (RFC 1323 §1.2 の `as explained in Section 5.3 and Appendix B` は
|
|
299
|
+
// §5.3 を指すが、RFC 1323 に §5.3 は無い)。番号だけ返しても引けないので、
|
|
300
|
+
// 題名を `Unknown` にして返していた。
|
|
301
|
+
relatedSections: Array.from(relatedSections)
|
|
302
|
+
.map((secNum) => ({ number: secNum, section: findSection(parsed.sections, secNum) }))
|
|
303
|
+
.filter((entry) => entry.section !== undefined && entry.section !== null)
|
|
304
|
+
.map((entry) => ({
|
|
305
|
+
number: entry.number,
|
|
306
|
+
title: entry.section?.title || 'Unknown',
|
|
307
|
+
})),
|
|
243
308
|
_source: source,
|
|
244
|
-
_sourceNote: getSourceNoteIfText(source, 'sections'),
|
|
309
|
+
_sourceNote: getSourceNoteIfText(source, 'sections', xmlFetchError),
|
|
245
310
|
};
|
|
246
311
|
}
|
|
247
312
|
/**
|
|
@@ -249,7 +314,7 @@ export async function handleGetRelatedSections(args) {
|
|
|
249
314
|
*/
|
|
250
315
|
export async function handleGenerateChecklist(args) {
|
|
251
316
|
validateRFCNumber(args.rfc);
|
|
252
|
-
const { data: parsed, source } = await getParsedRFC(args.rfc);
|
|
317
|
+
const { data: parsed, source, xmlFetchError } = await getParsedRFC(args.rfc);
|
|
253
318
|
const requirements = extractRequirements(parsed.sections, {
|
|
254
319
|
sections: args.sections,
|
|
255
320
|
includeSubsections: args.includeSubsections !== false, // デフォルト true
|
|
@@ -265,16 +330,40 @@ export async function handleGenerateChecklist(args) {
|
|
|
265
330
|
stats,
|
|
266
331
|
markdown,
|
|
267
332
|
_source: source,
|
|
268
|
-
_sourceNote: getSourceNoteIfText(source, 'checklist'),
|
|
333
|
+
_sourceNote: getSourceNoteIfText(source, 'checklist', xmlFetchError),
|
|
269
334
|
};
|
|
270
335
|
}
|
|
336
|
+
/**
|
|
337
|
+
* `isValid` が `null` のときに、なぜ判断しなかったかを返す。
|
|
338
|
+
*
|
|
339
|
+
* 理由は 2 つあり、意味が違う。一致が弱くて判断できないのか、一致はあるが
|
|
340
|
+
* 受動態で書かれていて実行者を照合できないのか。前者の文言を後者にも出すと、
|
|
341
|
+
* 一致している要件が `matchingRequirements` の先頭にあるのに「一致が無い」と
|
|
342
|
+
* 読める。
|
|
343
|
+
*/
|
|
344
|
+
function verdictNote(isValid, undecidable, qualifierOnly = null, weakConflicts = []) {
|
|
345
|
+
if (isValid !== null)
|
|
346
|
+
return undefined;
|
|
347
|
+
if (weakConflicts.length > 0) {
|
|
348
|
+
// 矛盾はあるが、その相手との一致が判定の閾値に届かない。「一致が無い」と
|
|
349
|
+
// 読める文言を出すと、`conflicts` に相手が並んでいるのと食い違う。
|
|
350
|
+
return `isValid is null: conflicts were found (${weakConflicts.map((r) => r.id).join(', ')}) but the match with those requirements is below the threshold for a verdict. Read those requirements and decide. This is not a statement of compliance.`;
|
|
351
|
+
}
|
|
352
|
+
if (qualifierOnly) {
|
|
353
|
+
return `isValid is null: requirement ${qualifierOnly.requirement.id} turns on "${qualifierOnly.qualifier}", a word the statement does not use, so whether they describe the same case cannot be decided. This is not a statement of compliance.`;
|
|
354
|
+
}
|
|
355
|
+
if (undecidable) {
|
|
356
|
+
return `isValid is null: requirement ${undecidable.id} forbids this in the passive voice, so who performs the act cannot be matched. Read that requirement and decide. This is not a statement of compliance.`;
|
|
357
|
+
}
|
|
358
|
+
return 'isValid is null: no requirement matched strongly enough to judge. This is not a statement of compliance.';
|
|
359
|
+
}
|
|
271
360
|
/**
|
|
272
361
|
* validate_statement handler
|
|
273
362
|
* Uses weighted keyword matching for better precision
|
|
274
363
|
*/
|
|
275
364
|
export async function handleValidateStatement(args) {
|
|
276
365
|
validateRFCNumber(args.rfc);
|
|
277
|
-
const { data: parsed, source } = await getParsedRFC(args.rfc);
|
|
366
|
+
const { data: parsed, source, xmlFetchError } = await getParsedRFC(args.rfc);
|
|
278
367
|
const requirements = extractRequirements(parsed.sections);
|
|
279
368
|
// Use weighted matching
|
|
280
369
|
const { matches, conflicts, statementLevel, statementSubject } = matchStatement(args.statement, requirements, { maxResults: 10 });
|
|
@@ -286,18 +375,55 @@ export async function handleValidateStatement(args) {
|
|
|
286
375
|
const contentKeywords = (topMatch?.matchedKeywords ?? []).filter((k) => !isSubjectTerm(k));
|
|
287
376
|
const hasVerdictEvidence = topScore >= MATCHING_LIMITS.MIN_SCORE_FOR_VERDICT &&
|
|
288
377
|
contentKeywords.length >= MATCHING_LIMITS.MIN_CONTENT_KEYWORDS_FOR_VERDICT;
|
|
289
|
-
|
|
378
|
+
// 矛盾の相手との一致が閾値に届いていれば、最上位の一致が弱くても `false` を
|
|
379
|
+
// 返す。最上位だけを見ていたため、RFC 6455 の "A client MAY send unmasked
|
|
380
|
+
// frames to the server." は R-5.1-1(MUST mask)との矛盾を `conflicts` に
|
|
381
|
+
// 並べながら `isValid: null` になり、注記は「一致が無い」と読めた。
|
|
382
|
+
// 矛盾は要件文そのものとの突き合わせなので、`true` を準拠の証明にしない
|
|
383
|
+
// 方針とは別で、根拠のある `false` である。閾値に届かない矛盾は `null` の
|
|
384
|
+
// まま、注記だけを「矛盾はあるが判定の閾値に届かない」に変える。
|
|
385
|
+
const strongEnough = (m) => m.score >= MATCHING_LIMITS.MIN_SCORE_FOR_VERDICT &&
|
|
386
|
+
m.matchedKeywords.filter((k) => !isSubjectTerm(k)).length >=
|
|
387
|
+
MATCHING_LIMITS.MIN_CONTENT_KEYWORDS_FOR_VERDICT;
|
|
388
|
+
const conflictMatches = conflicts.map((c) => matches.find((m) => m.requirement.id === c.requirement.id));
|
|
389
|
+
const hasConflictEvidence = conflictMatches.some((m) => m !== undefined && strongEnough(m));
|
|
390
|
+
const weakConflicts = conflicts.length > 0 && !hasVerdictEvidence && !hasConflictEvidence
|
|
391
|
+
? conflicts.map((c) => c.requirement)
|
|
392
|
+
: [];
|
|
393
|
+
// 受動態で書かれた禁止("MUST NOT be used")は、矛盾検出が行為の実行者を
|
|
394
|
+
// 見つけられない。conflicts が空のまま true を返すと、違反している文に
|
|
395
|
+
// 「矛盾なし」と答えることになる。該当したら判断を取り下げる。
|
|
396
|
+
const undecidable = hasVerdictEvidence && conflicts.length === 0
|
|
397
|
+
? findUndecidablePassiveProhibition(args.statement, matches)
|
|
398
|
+
: null;
|
|
399
|
+
// 限定語(`without` `unless` `except`)を言い換えた主張も、矛盾が出ない。
|
|
400
|
+
// "An origin server without a clock MUST NOT generate a Date header field."
|
|
401
|
+
// に対する "… even though it has no clock." が該当する。
|
|
402
|
+
const qualifierOnly = hasVerdictEvidence && conflicts.length === 0 && !undecidable
|
|
403
|
+
? findQualifierOnlyViolation(args.statement, matches)
|
|
404
|
+
: null;
|
|
405
|
+
const isValid = hasConflictEvidence
|
|
406
|
+
? false
|
|
407
|
+
: hasVerdictEvidence && !undecidable && !qualifierOnly
|
|
408
|
+
? conflicts.length === 0
|
|
409
|
+
: null;
|
|
290
410
|
// Build suggestions
|
|
291
411
|
const suggestions = [];
|
|
292
412
|
if (matches.length === 0) {
|
|
293
413
|
suggestions.push("No matching requirements found. Matching is English keyword based; try the RFC's own wording.");
|
|
294
414
|
}
|
|
295
|
-
else if (!hasVerdictEvidence) {
|
|
415
|
+
else if (!hasVerdictEvidence && !hasConflictEvidence) {
|
|
296
416
|
suggestions.push('Matches are too weak to judge. Name the subject (e.g., "client", "server") and what it does, using the RFC\'s own nouns and verbs.');
|
|
297
417
|
}
|
|
298
418
|
if (conflicts.length > 0) {
|
|
299
419
|
suggestions.push('Potential conflicts detected. Review the requirement levels (MUST/SHOULD/MAY) carefully.');
|
|
300
420
|
}
|
|
421
|
+
if (qualifierOnly) {
|
|
422
|
+
suggestions.push(`Cannot judge: requirement ${qualifierOnly.requirement.id} turns on "${qualifierOnly.qualifier}", a word the statement does not use. Read that requirement and decide whether the statement means the same case.`);
|
|
423
|
+
}
|
|
424
|
+
if (undecidable) {
|
|
425
|
+
suggestions.push(`Cannot judge: requirement ${undecidable.id} is written in the passive voice ("${undecidable.level} ${clipAtWord(undecidable.action ?? '', 60)}"), so the text names no actor. Read that requirement and decide.`);
|
|
426
|
+
}
|
|
301
427
|
if (statementLevel && !statementSubject) {
|
|
302
428
|
suggestions.push('Consider specifying the subject (e.g., "client", "server") for better matching.');
|
|
303
429
|
}
|
|
@@ -309,13 +435,12 @@ export async function handleValidateStatement(args) {
|
|
|
309
435
|
detectedSubject: statementSubject,
|
|
310
436
|
},
|
|
311
437
|
isValid,
|
|
312
|
-
_verdictNote: isValid
|
|
313
|
-
? 'isValid is null: no requirement matched strongly enough to judge. This is not a statement of compliance.'
|
|
314
|
-
: undefined,
|
|
438
|
+
_verdictNote: verdictNote(isValid, undecidable, qualifierOnly, weakConflicts),
|
|
315
439
|
matchingRequirements: matches.map((m) => ({
|
|
316
440
|
...m.requirement,
|
|
317
441
|
_matchScore: m.score,
|
|
318
442
|
_matchedKeywords: m.matchedKeywords,
|
|
443
|
+
_contextKeywords: m.contextKeywords.length > 0 ? m.contextKeywords : undefined,
|
|
319
444
|
_subjectMatch: m.subjectMatch,
|
|
320
445
|
_levelMatch: m.levelMatch,
|
|
321
446
|
})),
|
|
@@ -325,7 +450,7 @@ export async function handleValidateStatement(args) {
|
|
|
325
450
|
})),
|
|
326
451
|
suggestions: suggestions.length > 0 ? suggestions : undefined,
|
|
327
452
|
_source: source,
|
|
328
|
-
_sourceNote: getSourceNoteIfText(source, 'validation'),
|
|
453
|
+
_sourceNote: getSourceNoteIfText(source, 'validation', xmlFetchError),
|
|
329
454
|
};
|
|
330
455
|
}
|
|
331
456
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/tools/handlers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAgB,MAAM,8BAA8B,CAAC;AACjF,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAChG,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAYlG,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAE/F,wCAAwC;AACxC,OAAO,EAAE,eAAe,EAAE,CAAC;AAa3B;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAyB;IACnE,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE5B,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpD,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;QACtB,uEAAuE;QACvE,wDAAwD;QACxD,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;KAC7E,CAAC,CAAC;IACH,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC;IAE9C,6BAA6B;IAC7B,SAAS,eAAe,CAAC,OAAgB,EAAE,cAAuB;QAChE,MAAM,MAAM,GAAsB;YAChC,sDAAsD;YACtD,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM;YAChF,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;QAEF,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QACnC,CAAC;QAED,IAAI,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAU,EAAE,EAAE,CAC1D,eAAe,CAAC,CAAC,EAAE,cAAc,CAAC,CACnC,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,yEAAyE;IACzE,oEAAoE;IACpE,oEAAoE;IACpE,MAAM,cAAc,GAA4B;QAC9C,GAAG,MAAM,CAAC,QAAQ;QAClB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG;QAC1C,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,WAAW,CAAC,KAAK;QACjD,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,MAAM,EAAE,WAAW,CAAC,MAAM;QAC1B,8CAA8C;QAC9C,qDAAqD;QACrD,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;QAC1B,QAAQ,EAAE,WAAW,CAAC,QAAQ;KAC/B,CAAC;IACF,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,cAAc,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;IAC/C,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,cAAc;QACxB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,CAAC;QACtF,cAAc,EAAE;YACd,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM;YAC7C,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM;SAClD;QACD,OAAO,EAAE,MAAM;QACf,WAAW,EAAE,mBAAmB,CAAC,MAAM,EAAE,WAAW,CAAC;KACtD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAyB;IACnE,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE9D,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE;QACxD,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,KAAK,EAAE,IAAI,CAAC,KAAyB;KACtC,CAAC,CAAC;IAEH,aAAa;IACb,MAAM,KAAK,GAAG;QACZ,KAAK,EAAE,YAAY,CAAC,MAAM;QAC1B,OAAO,EAAE,EAA4B;KACtC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;IAED,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,MAAM,EAAE;YACN,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,KAAK;YAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK;SAC3B;QACD,KAAK;QACL,YAAY;QACZ,OAAO,EAAE,MAAM;QACf,WAAW,EAAE,mBAAmB,CAAC,MAAM,EAAE,cAAc,CAAC;KACzD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAwB;IACjE,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE9D,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAErC,iBAAiB;IACjB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC3C,WAAW,GAAG,WAAW,CAAC,MAAM,CAC9B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC/F,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,UAAU,EAAE,IAAI,CAAC,IAAI;QACrB,KAAK,EAAE,WAAW,CAAC,MAAM;QACzB,WAAW;QACX,OAAO,EAAE,MAAM;QACf,WAAW,EAAE,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC;KACxD,CAAC;AACJ,CAAC;AA4BD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAyB;IACnE,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE9D,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC9D,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,GAAG,CAAC,MAAM;KACnB,CAAC,CAAC,CAAC;IACJ,MAAM,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAClE,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,GAAG,CAAC,MAAM;KACnB,CAAC,CAAC,CAAC;IACJ,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;IAEtE,IAAI,SAAS,GAAG,aAAa,CAAC;IAC9B,IAAI,WAAW,GAAG,eAAe,CAAC;IAClC,qEAAqE;IACrE,wEAAwE;IACxE,6EAA6E;IAC7E,IAAI,gBAAgB,GAA2B,MAAM,CAAC;IACtD,IAAI,UAA8B,CAAC;IAEnC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,qEAAqE;QACrE,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,SAAS,GAAG,OAAO;iBAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC;iBAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACzF,WAAW,GAAG,OAAO;iBAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC;iBAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACzF,gBAAgB,GAAG,KAAK,CAAC;YACzB,UAAU;gBACR,mIAAmI,CAAC;QACxI,CAAC;aAAM,CAAC;YACN,wDAAwD;YACxD,UAAU;gBACR,MAAM,KAAK,MAAM;oBACf,CAAC,CAAC,gGAAgG;oBAClG,CAAC,CAAC,qEAAqE,CAAC;QAC9E,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,KAAK,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvD,uCAAuC;QACvC,8BAA8B;QAC9B,EAAE;QACF,oCAAoC;QACpC,4CAA4C;QAC5C,6CAA6C;QAC7C,UAAU;YACR,yJAAyJ,CAAC;IAC9J,CAAC;IAED,MAAM,MAAM,GAAqB;QAC/B,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,SAAS;QACT,WAAW;QACX,OAAO,EAAE,MAAM;QACf,iBAAiB,EAAE,gBAAgB;KACpC,CAAC;IACF,IAAI,UAAU;QAAE,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC;IAEhD,gEAAgE;IAChE,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,MAAM,CAAC,YAAY,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAAsC;IACnF,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE9D,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACjE,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;YACL,KAAK,EAAE,WAAW,IAAI,CAAC,OAAO,YAAY;SAC3C,CAAC;IACJ,CAAC;IAED,yCAAyC;IACzC,MAAM,eAAe,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;IAE9D,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,KAAK,EAAE,aAAa,CAAC,KAAK;QAC1B,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1D,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACjD,OAAO;gBACL,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,SAAS;aAC/B,CAAC;QACJ,CAAC,CAAC;QACF,OAAO,EAAE,MAAM;QACf,WAAW,EAAE,mBAAmB,CAAC,MAAM,EAAE,UAAU,CAAC;KACrD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAA2B;IACvE,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE;QACxD,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,KAAK,KAAK,EAAE,aAAa;KACrE,CAAC,CAAC;IAEH,mCAAmC;IACnC,MAAM,SAAS,GAAG,iBAAiB,CACjC,IAAI,CAAC,GAAG,EACR,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,EAC1C,YAAY,EACZ,IAAI,CAAC,IAAI,CACV,CAAC;IAEF,oBAAoB;IACpB,MAAM,QAAQ,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAE3C,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM;QACzB,KAAK;QACL,QAAQ;QACR,OAAO,EAAE,MAAM;QACf,WAAW,EAAE,mBAAmB,CAAC,MAAM,EAAE,WAAW,CAAC;KACtD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAA2B;IACvE,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE1D,wBAAwB;IACxB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,cAAc,CAC7E,IAAI,CAAC,SAAS,EACd,YAAY,EACZ,EAAE,UAAU,EAAE,EAAE,EAAE,CACnB,CAAC;IAEF,qBAAqB;IACrB,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7D,MAAM,QAAQ,GAAG,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC;IACtC,qCAAqC;IACrC,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,eAAe,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,MAAM,kBAAkB,GACtB,QAAQ,IAAI,eAAe,CAAC,qBAAqB;QACjD,eAAe,CAAC,MAAM,IAAI,eAAe,CAAC,gCAAgC,CAAC;IAC7E,MAAM,OAAO,GAAmB,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEnF,oBAAoB;IACpB,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,WAAW,CAAC,IAAI,CACd,+FAA+F,CAChG,CAAC;IACJ,CAAC;SAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC/B,WAAW,CAAC,IAAI,CACd,oIAAoI,CACrI,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,WAAW,CAAC,IAAI,CACd,0FAA0F,CAC3F,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxC,WAAW,CAAC,IAAI,CACd,iFAAiF,CAClF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,QAAQ,EAAE;YACR,aAAa,EAAE,cAAc;YAC7B,eAAe,EAAE,gBAAgB;SAClC;QACD,OAAO;QACP,YAAY,EACV,OAAO,KAAK,IAAI;YACd,CAAC,CAAC,0GAA0G;YAC5G,CAAC,CAAC,SAAS;QACf,oBAAoB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxC,GAAG,CAAC,CAAC,WAAW;YAChB,WAAW,EAAE,CAAC,CAAC,KAAK;YACpB,gBAAgB,EAAE,CAAC,CAAC,eAAe;YACnC,aAAa,EAAE,CAAC,CAAC,YAAY;YAC7B,WAAW,EAAE,CAAC,CAAC,UAAU;SAC1B,CAAC,CAAC;QACH,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,MAAM,EAAE,CAAC,CAAC,MAAM;SACjB,CAAC,CAAC;QACH,WAAW,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QAC7D,OAAO,EAAE,MAAM;QACf,WAAW,EAAE,mBAAmB,CAAC,MAAM,EAAE,YAAY,CAAC;KACvD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,8DAA8D;AAC9D,MAAM,CAAC,MAAM,YAAY,GAAoD;IAC3E,iBAAiB,EAAE,qBAAqB;IACxC,gBAAgB,EAAE,qBAAqB;IACvC,eAAe,EAAE,oBAAoB;IACrC,oBAAoB,EAAE,qBAAqB;IAC3C,oBAAoB,EAAE,wBAAwB;IAC9C,kBAAkB,EAAE,uBAAuB;IAC3C,kBAAkB,EAAE,uBAAuB;CAC5C,CAAC"}
|
|
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
|
@@ -20,6 +20,14 @@ export interface ParsedRFC {
|
|
|
20
20
|
* Datatracker の `document.time` はレコードの更新時刻であって公開日ではない。
|
|
21
21
|
*/
|
|
22
22
|
date?: string;
|
|
23
|
+
/**
|
|
24
|
+
* 本文の著者欄に並ぶ姓を、印字されている順で並べたもの。
|
|
25
|
+
*
|
|
26
|
+
* Datatracker の `documentauthor.order` は、古い RFC では本文の並びと
|
|
27
|
+
* 食い違う。RFC 6455 の本文は `I. Fette` / `A. Melnikov` の順に印字するが、
|
|
28
|
+
* API の `order` は 0=Melnikov、1=Fette である。並べ替えにだけ使う。
|
|
29
|
+
*/
|
|
30
|
+
authorOrder?: string[];
|
|
23
31
|
};
|
|
24
32
|
sections: Section[];
|
|
25
33
|
references: {
|
|
@@ -38,8 +46,20 @@ export interface RFCMetadata {
|
|
|
38
46
|
* 公開日は本文(RFCXML の `front/date` / テキストのヘッダ)から取る。
|
|
39
47
|
*/
|
|
40
48
|
datatrackerUpdated: string;
|
|
41
|
-
|
|
42
|
-
|
|
49
|
+
/**
|
|
50
|
+
* Datatracker の `std_level` / `stream` から引いた値。
|
|
51
|
+
* **API に届かなかったとき、または対応表に無い値のときは付けない。**
|
|
52
|
+
* v0.6.52 までは `'info'` / `'IETF'` を既定値にしていたため、RFC 1
|
|
53
|
+
* (Datatracker は `unkn` / `legacy`)が info / IETF として返っていた。
|
|
54
|
+
*/
|
|
55
|
+
category?: 'std' | 'bcp' | 'info' | 'exp' | 'historic';
|
|
56
|
+
stream?: 'IETF' | 'IAB' | 'IRTF' | 'independent' | 'editorial';
|
|
57
|
+
/**
|
|
58
|
+
* Datatracker の document API に届かなかったときの理由(`HTTP 500` など)。
|
|
59
|
+
* 付いているときは `category` / `stream` / `abstract` が無い。
|
|
60
|
+
* `get_rfc_structure` はこれを `_sourceNote` に書く。
|
|
61
|
+
*/
|
|
62
|
+
datatrackerError?: string;
|
|
43
63
|
abstract?: string;
|
|
44
64
|
keywords?: string[];
|
|
45
65
|
obsoletes?: number[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE;QACR;;;WAGG;QACH,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB;;;;WAIG;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/cache.d.ts
CHANGED
|
@@ -59,4 +59,23 @@ export declare class LRUCache<K, V> {
|
|
|
59
59
|
* デフォルトのキャッシュ設定
|
|
60
60
|
*/
|
|
61
61
|
export declare const DEFAULT_CACHE_OPTIONS: Required<CacheOptions>;
|
|
62
|
+
/**
|
|
63
|
+
* 同じ鍵への同時呼び出しを 1 本の Promise にまとめる。
|
|
64
|
+
*
|
|
65
|
+
* LRU は結果が入るまでのあいだ何も持たない。MCP クライアントは 1 つの RFC に
|
|
66
|
+
* `get_rfc_structure` と `get_requirements` を並列に出すのが普通の使い方で、
|
|
67
|
+
* v0.6.52 まではその数だけ rfc-editor.org を叩き、`parseRFCXML` も回数分走って
|
|
68
|
+
* いた(Issue #15: 同時 3 本で `Fetched from rfcEditor` が 3 行)。
|
|
69
|
+
*
|
|
70
|
+
* 2 本目以降は 1 本目の Promise をそのまま返す。**終わったら成功・失敗を問わず
|
|
71
|
+
* 外す。** 失敗した Promise を残すと、一時的なネットワーク失敗がプロセスの
|
|
72
|
+
* 生きているあいだ再現し続ける。
|
|
73
|
+
*/
|
|
74
|
+
export declare class InFlightMap<K, V> {
|
|
75
|
+
private readonly inFlight;
|
|
76
|
+
/** 走っている呼び出しの数(テスト用) */
|
|
77
|
+
get size(): number;
|
|
78
|
+
share(key: K, start: () => Promise<V>): Promise<V>;
|
|
79
|
+
clear(): void;
|
|
80
|
+
}
|
|
62
81
|
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,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;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAiB1B;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAwB3B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,KAAK,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,CAAC,EAAE,CAAA;KAAE;CAOtD;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,YAAY,CAIxD,CAAC"}
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,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;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAiB1B;;;OAGG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAwB3B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,KAAK,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,CAAC,EAAE,CAAA;KAAE;CAOtD;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,YAAY,CAIxD,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,qBAAa,WAAW,CAAC,CAAC,EAAE,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IAErD,wBAAwB;IACxB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAWlD,KAAK,IAAI,IAAI;CAGd"}
|
package/dist/utils/cache.js
CHANGED
|
@@ -104,4 +104,36 @@ export const DEFAULT_CACHE_OPTIONS = {
|
|
|
104
104
|
debug: false,
|
|
105
105
|
name: 'RFCCache',
|
|
106
106
|
};
|
|
107
|
+
/**
|
|
108
|
+
* 同じ鍵への同時呼び出しを 1 本の Promise にまとめる。
|
|
109
|
+
*
|
|
110
|
+
* LRU は結果が入るまでのあいだ何も持たない。MCP クライアントは 1 つの RFC に
|
|
111
|
+
* `get_rfc_structure` と `get_requirements` を並列に出すのが普通の使い方で、
|
|
112
|
+
* v0.6.52 まではその数だけ rfc-editor.org を叩き、`parseRFCXML` も回数分走って
|
|
113
|
+
* いた(Issue #15: 同時 3 本で `Fetched from rfcEditor` が 3 行)。
|
|
114
|
+
*
|
|
115
|
+
* 2 本目以降は 1 本目の Promise をそのまま返す。**終わったら成功・失敗を問わず
|
|
116
|
+
* 外す。** 失敗した Promise を残すと、一時的なネットワーク失敗がプロセスの
|
|
117
|
+
* 生きているあいだ再現し続ける。
|
|
118
|
+
*/
|
|
119
|
+
export class InFlightMap {
|
|
120
|
+
inFlight = new Map();
|
|
121
|
+
/** 走っている呼び出しの数(テスト用) */
|
|
122
|
+
get size() {
|
|
123
|
+
return this.inFlight.size;
|
|
124
|
+
}
|
|
125
|
+
share(key, start) {
|
|
126
|
+
const existing = this.inFlight.get(key);
|
|
127
|
+
if (existing)
|
|
128
|
+
return existing;
|
|
129
|
+
const promise = start().finally(() => {
|
|
130
|
+
this.inFlight.delete(key);
|
|
131
|
+
});
|
|
132
|
+
this.inFlight.set(key, promise);
|
|
133
|
+
return promise;
|
|
134
|
+
}
|
|
135
|
+
clear() {
|
|
136
|
+
this.inFlight.clear();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
107
139
|
//# sourceMappingURL=cache.js.map
|
package/dist/utils/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*
|
|
9
9
|
* File layout (under `dir`):
|
|
10
10
|
* ./rfc{N}.xml — raw RFCXML body, UTF-8
|
|
11
|
+
* ./rfc{N}.txt — raw RFC text body, UTF-8(`kind: 'text'` のとき)
|
|
11
12
|
*
|
|
12
13
|
* Intentionally minimal: no metadata, no eviction, no checksums. We trust the
|
|
13
14
|
* filesystem and the source URL. If staleness becomes a concern, the operator
|
|
@@ -17,23 +18,26 @@
|
|
|
17
18
|
* `RFCXML_CACHE_DIR` environment variable; returns null when the variable is
|
|
18
19
|
* unset/empty so callers can no-op cleanly.
|
|
19
20
|
*/
|
|
21
|
+
/** 取り出す本文の種類。ファイルの拡張子と、`fromEnv` が使う下位ディレクトリを決める。 */
|
|
22
|
+
export type CacheKind = 'xml' | 'text';
|
|
20
23
|
export declare class DiskCache {
|
|
21
24
|
readonly dir: string;
|
|
25
|
+
readonly kind: CacheKind;
|
|
22
26
|
/**
|
|
23
27
|
* @param dir Absolute or relative directory path. Created lazily on first
|
|
24
28
|
* `set` — readers tolerate non-existent dirs by returning null.
|
|
29
|
+
* @param kind 本文の種類。省略すると `xml`。
|
|
25
30
|
*/
|
|
26
|
-
constructor(dir: string);
|
|
31
|
+
constructor(dir: string, kind?: CacheKind);
|
|
27
32
|
/**
|
|
28
33
|
* Construct a DiskCache from the `RFCXML_CACHE_DIR` environment variable.
|
|
29
34
|
* Returns null when the var is unset/empty so the caller can keep the
|
|
30
35
|
* disk-cache code path optional without conditionals at every call site.
|
|
31
36
|
*
|
|
32
|
-
* The cache is rooted at `<RFCXML_CACHE_DIR
|
|
33
|
-
*
|
|
34
|
-
* mixing files.
|
|
37
|
+
* The cache is rooted at `<RFCXML_CACHE_DIR>/<kind>/` so that XML と
|
|
38
|
+
* テキストが混ざらない。
|
|
35
39
|
*/
|
|
36
|
-
static fromEnv(): DiskCache | null;
|
|
40
|
+
static fromEnv(kind?: CacheKind): DiskCache | null;
|
|
37
41
|
/**
|
|
38
42
|
* Compute the on-disk filepath for a given RFC number. Public so the CLI
|
|
39
43
|
* and tests can sanity-check.
|
|
@@ -51,6 +55,6 @@ export declare class DiskCache {
|
|
|
51
55
|
* and a write failure (e.g., disk full, permission denied) must not break
|
|
52
56
|
* the runtime fetch path.
|
|
53
57
|
*/
|
|
54
|
-
set(rfcNumber: number,
|
|
58
|
+
set(rfcNumber: number, body: string): Promise<void>;
|
|
55
59
|
}
|
|
56
60
|
//# sourceMappingURL=disk-cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disk-cache.d.ts","sourceRoot":"","sources":["../../src/utils/disk-cache.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"disk-cache.d.ts","sourceRoot":"","sources":["../../src/utils/disk-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,qDAAqD;AACrD,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC;AAIvC,qBAAa,SAAS;aAOF,GAAG,EAAE,MAAM;aACX,IAAI,EAAE,SAAS;IAPjC;;;;OAIG;gBAEe,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,SAAiB;IAGzC;;;;;;;OAOG;IACH,MAAM,CAAC,OAAO,CAAC,IAAI,GAAE,SAAiB,GAAG,SAAS,GAAG,IAAI;IAMzD;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI7B,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS9C;;;OAGG;IACG,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAepD;;;;;OAKG;IACG,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAW1D"}
|