@gherk/requirements-extractor 1.4.0 → 1.5.0
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/dist/heuristics.d.ts +14 -0
- package/dist/heuristics.d.ts.map +1 -0
- package/dist/heuristics.js +255 -0
- package/dist/heuristics.js.map +1 -0
- package/dist/index.js +94 -9
- package/dist/index.js.map +1 -1
- package/dist/requirement-analyzer.d.ts +15 -0
- package/dist/requirement-analyzer.d.ts.map +1 -0
- package/dist/requirement-analyzer.js +277 -0
- package/dist/requirement-analyzer.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type Language = "es" | "en" | "auto";
|
|
2
|
+
export type Confidence = "high" | "medium" | "low";
|
|
3
|
+
export interface HeuristicMatch {
|
|
4
|
+
text: string;
|
|
5
|
+
page: number;
|
|
6
|
+
patternType: string;
|
|
7
|
+
pattern: string;
|
|
8
|
+
confidence: Confidence;
|
|
9
|
+
suggestedCategories: string[];
|
|
10
|
+
reason: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function detectLanguage(text: string): "es" | "en";
|
|
13
|
+
export declare function scanForImplicitRequirements(text: string, startPage: number, endPage: number, language?: Language): HeuristicMatch[];
|
|
14
|
+
//# sourceMappingURL=heuristics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heuristics.d.ts","sourceRoot":"","sources":["../src/heuristics.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAC5C,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;CAClB;AAsID,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAKxD;AA2CD,wBAAgB,2BAA2B,CACvC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,QAAiB,GAC5B,cAAc,EAAE,CA+ClB"}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
// ─── Heuristic Scanner for Implicit Requirements ────────────────────
|
|
2
|
+
//
|
|
3
|
+
// Scans parsed PDF text for implicit requirements that lack formal identifiers.
|
|
4
|
+
// Supports multilingual patterns (ES/EN) with auto-detect fallback.
|
|
5
|
+
const PATTERNS = {
|
|
6
|
+
es: {
|
|
7
|
+
obligation: [
|
|
8
|
+
"debe", "deberá", "es obligatorio", "se requiere", "tiene que",
|
|
9
|
+
"necesita", "tendrá que", "ha de", "es necesario", "es imprescindible",
|
|
10
|
+
"será obligatorio", "no puede estar vacío",
|
|
11
|
+
],
|
|
12
|
+
capability: [
|
|
13
|
+
"puede", "podrá", "será capaz de", "permite", "será posible",
|
|
14
|
+
"tendrá la posibilidad", "habilitará",
|
|
15
|
+
],
|
|
16
|
+
access: [
|
|
17
|
+
"tendrá acceso", "tiene acceso a", "acceso a ver", "acceso a crear",
|
|
18
|
+
"acceso a modificar", "acceso a eliminar", "acceso a gestionar",
|
|
19
|
+
"will have access", "has access to",
|
|
20
|
+
],
|
|
21
|
+
system: [
|
|
22
|
+
"el sistema deberá", "la plataforma", "el backend", "la aplicación",
|
|
23
|
+
"el portal", "el panel", "el módulo",
|
|
24
|
+
],
|
|
25
|
+
condition: [
|
|
26
|
+
"si.*entonces", "cuando.*debe", "en caso de", "siempre que",
|
|
27
|
+
"a menos que", "excepto si",
|
|
28
|
+
],
|
|
29
|
+
validation: [
|
|
30
|
+
"no debe", "no puede", "no se permite", "no está permitido",
|
|
31
|
+
"no se aceptará", "restringido a", "limitado a",
|
|
32
|
+
],
|
|
33
|
+
configuration: [
|
|
34
|
+
"configurable", "editable", "campo obligatorio", "parámetro",
|
|
35
|
+
"a nivel de empresa", "a nivel de fleet", "por empresa",
|
|
36
|
+
"personalizable", "activar.*desactivar",
|
|
37
|
+
],
|
|
38
|
+
structural: [
|
|
39
|
+
"observaciones preliminares", "introducción", "contexto",
|
|
40
|
+
"caso de uso", "supuestos", "restricciones", "alcance",
|
|
41
|
+
"flujo de trabajo", "proceso", "preliminary remarks",
|
|
42
|
+
"use case", "assumptions",
|
|
43
|
+
],
|
|
44
|
+
actors: [
|
|
45
|
+
"fleet manager", "super admin", "control room", "call center",
|
|
46
|
+
"company manager", "company user", "driver", "conductor",
|
|
47
|
+
"dealer", "concesionario", "administrador", "usuario",
|
|
48
|
+
"equipo acs", "acs team", "icc team",
|
|
49
|
+
],
|
|
50
|
+
integration: [
|
|
51
|
+
"api", "dms", "obd", "canbus", "can-bus", "payment gateway",
|
|
52
|
+
"pasarela de pago", "sincronización", "integración", "webhook",
|
|
53
|
+
"bluetooth", "ble", "gps", "psd2", "gdpr",
|
|
54
|
+
],
|
|
55
|
+
workflow: [
|
|
56
|
+
"el usuario llama", "envía.*email", "se notifica", "se envía",
|
|
57
|
+
"sube.*archivo", "descarga", "completar.*perfil",
|
|
58
|
+
"validar.*perfil", "proceso.*kyc", "onboarding",
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
en: {
|
|
62
|
+
obligation: [
|
|
63
|
+
"must", "shall", "is required", "needs to", "has to",
|
|
64
|
+
"will have to", "is mandatory", "cannot be empty",
|
|
65
|
+
],
|
|
66
|
+
capability: [
|
|
67
|
+
"can", "could", "will be able to", "allows", "enables",
|
|
68
|
+
"makes it possible",
|
|
69
|
+
],
|
|
70
|
+
access: [
|
|
71
|
+
"will have access", "has access to", "access to view",
|
|
72
|
+
"access to create", "access to modify", "access to delete",
|
|
73
|
+
"access to manage",
|
|
74
|
+
],
|
|
75
|
+
system: [
|
|
76
|
+
"the system must", "the system shall", "the platform",
|
|
77
|
+
"the backend", "the application", "the portal", "the module",
|
|
78
|
+
],
|
|
79
|
+
condition: [
|
|
80
|
+
"if.*then", "when.*must", "in case of", "whenever",
|
|
81
|
+
"unless", "except when",
|
|
82
|
+
],
|
|
83
|
+
validation: [
|
|
84
|
+
"must not", "cannot", "is not allowed", "shall not",
|
|
85
|
+
"restricted to", "limited to",
|
|
86
|
+
],
|
|
87
|
+
configuration: [
|
|
88
|
+
"configurable", "editable", "mandatory field", "parameter",
|
|
89
|
+
"at company level", "at fleet level", "per company",
|
|
90
|
+
"customizable", "enable.*disable",
|
|
91
|
+
],
|
|
92
|
+
structural: [
|
|
93
|
+
"preliminary remarks", "introduction", "context",
|
|
94
|
+
"use case", "assumptions", "constraints", "scope",
|
|
95
|
+
"workflow", "process",
|
|
96
|
+
],
|
|
97
|
+
actors: [
|
|
98
|
+
"fleet manager", "super admin", "control room", "call center",
|
|
99
|
+
"company manager", "company user", "driver",
|
|
100
|
+
"dealer", "administrator", "user",
|
|
101
|
+
"acs team", "icc team",
|
|
102
|
+
],
|
|
103
|
+
integration: [
|
|
104
|
+
"api", "dms", "obd", "canbus", "can-bus", "payment gateway",
|
|
105
|
+
"synchronization", "integration", "webhook",
|
|
106
|
+
"bluetooth", "ble", "gps", "psd2", "gdpr",
|
|
107
|
+
],
|
|
108
|
+
workflow: [
|
|
109
|
+
"the user calls", "sends.*email", "is notified", "is sent",
|
|
110
|
+
"uploads.*file", "downloads", "complete.*profile",
|
|
111
|
+
"validate.*profile", "kyc process", "onboarding",
|
|
112
|
+
],
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
// ─── Language Detection ─────────────────────────────────────────────
|
|
116
|
+
const ES_MARKERS = ["debe", "deberá", "tiene", "puede", "también", "está", "será", "según", "configurar", "gestionar"];
|
|
117
|
+
const EN_MARKERS = ["must", "shall", "should", "will", "can", "the system", "access to", "configure", "manage"];
|
|
118
|
+
export function detectLanguage(text) {
|
|
119
|
+
const lower = text.toLowerCase();
|
|
120
|
+
const esScore = ES_MARKERS.reduce((acc, m) => acc + (lower.split(m).length - 1), 0);
|
|
121
|
+
const enScore = EN_MARKERS.reduce((acc, m) => acc + (lower.split(m).length - 1), 0);
|
|
122
|
+
return esScore >= enScore ? "es" : "en";
|
|
123
|
+
}
|
|
124
|
+
// ─── Category Suggestion ────────────────────────────────────────────
|
|
125
|
+
function suggestCategories(text) {
|
|
126
|
+
const lower = text.toLowerCase();
|
|
127
|
+
const cats = [];
|
|
128
|
+
// Backend signals
|
|
129
|
+
if (/api|endpoint|rest|servicio|service|lógica de negocio|business logic|base de datos|database|email|integración|integration/.test(lower)) {
|
|
130
|
+
cats.push("backend");
|
|
131
|
+
}
|
|
132
|
+
// BO signals
|
|
133
|
+
if (/gestionar|gestión|administrar|configurar|crud|panel|backoffice|back.?office|fleet manager|super admin|control room|crear.*desde.*backend|menu.*backend/.test(lower)) {
|
|
134
|
+
cats.push("bo");
|
|
135
|
+
}
|
|
136
|
+
// Frontend signals
|
|
137
|
+
if (/portal.*driver|driver.*portal|portal.*web|web.*portal|el conductor ve|el driver|the driver sees|usuario final|end.?user/.test(lower)) {
|
|
138
|
+
cats.push("frontend");
|
|
139
|
+
}
|
|
140
|
+
// Mobile signals
|
|
141
|
+
if (/app|aplicación|ios|android|móvil|mobile|bluetooth|ble|push.*notif|notificación.*push|pantalla/.test(lower)) {
|
|
142
|
+
cats.push("mobile");
|
|
143
|
+
}
|
|
144
|
+
// Non-functional signals
|
|
145
|
+
if (/psd2|gdpr|seguridad|security|rendimiento|performance|escalabilidad|scalability|sla|auditoría|audit/.test(lower)) {
|
|
146
|
+
cats.push("non-functional");
|
|
147
|
+
}
|
|
148
|
+
// Infra signals
|
|
149
|
+
if (/entorno|environment|uat|preprod|staging|producción|production|base de datos|database|migración|migration/.test(lower)) {
|
|
150
|
+
cats.push("infra");
|
|
151
|
+
}
|
|
152
|
+
return cats.length > 0 ? cats : ["backend"];
|
|
153
|
+
}
|
|
154
|
+
// ─── Scanner ────────────────────────────────────────────────────────
|
|
155
|
+
export function scanForImplicitRequirements(text, startPage, endPage, language = "auto") {
|
|
156
|
+
const lang = language === "auto" ? detectLanguage(text) : language;
|
|
157
|
+
const patterns = PATTERNS[lang];
|
|
158
|
+
const matches = [];
|
|
159
|
+
const seen = new Set();
|
|
160
|
+
// Split into sentences for granular matching
|
|
161
|
+
const sentences = text.split(/[.!?\n]/).map(s => s.trim()).filter(s => s.length > 20);
|
|
162
|
+
for (const sentence of sentences) {
|
|
163
|
+
const lower = sentence.toLowerCase();
|
|
164
|
+
// Skip boilerplate (copyright, confidentiality, version control)
|
|
165
|
+
if (/copyright|confidential|version control|change history|issued by|arval internal use/.test(lower)) {
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
for (const [patternType, patternList] of Object.entries(patterns)) {
|
|
169
|
+
for (const pattern of patternList) {
|
|
170
|
+
const regex = new RegExp(pattern, "i");
|
|
171
|
+
if (regex.test(lower)) {
|
|
172
|
+
// Deduplicate by sentence
|
|
173
|
+
const key = `${patternType}:${sentence.substring(0, 80)}`;
|
|
174
|
+
if (seen.has(key))
|
|
175
|
+
continue;
|
|
176
|
+
seen.add(key);
|
|
177
|
+
const confidence = getConfidence(patternType, lower);
|
|
178
|
+
const suggestedCategories = suggestCategories(sentence);
|
|
179
|
+
matches.push({
|
|
180
|
+
text: sentence.substring(0, 300),
|
|
181
|
+
page: startPage,
|
|
182
|
+
patternType,
|
|
183
|
+
pattern,
|
|
184
|
+
confidence,
|
|
185
|
+
suggestedCategories,
|
|
186
|
+
reason: getReasonMessage(patternType, pattern, lang),
|
|
187
|
+
});
|
|
188
|
+
break; // One match per pattern type per sentence
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// Deduplicate and keep only most confident per text
|
|
194
|
+
return deduplicateMatches(matches);
|
|
195
|
+
}
|
|
196
|
+
function getConfidence(patternType, text) {
|
|
197
|
+
// High confidence: obligation verbs + structural sections with actors
|
|
198
|
+
if (patternType === "obligation" || patternType === "access")
|
|
199
|
+
return "high";
|
|
200
|
+
if (patternType === "workflow")
|
|
201
|
+
return "high";
|
|
202
|
+
// Medium: system, validation, configuration
|
|
203
|
+
if (patternType === "system" || patternType === "validation" || patternType === "configuration")
|
|
204
|
+
return "medium";
|
|
205
|
+
if (patternType === "actors" || patternType === "integration")
|
|
206
|
+
return "medium";
|
|
207
|
+
// Low: capability, structural, condition
|
|
208
|
+
return "low";
|
|
209
|
+
}
|
|
210
|
+
function getReasonMessage(patternType, pattern, lang) {
|
|
211
|
+
const reasons = {
|
|
212
|
+
es: {
|
|
213
|
+
obligation: `Verbo de obligación detectado ("${pattern}") — probable requisito funcional`,
|
|
214
|
+
capability: `Verbo de capacidad detectado ("${pattern}") — posible requisito funcional`,
|
|
215
|
+
access: `Patrón de acceso/permisos detectado ("${pattern}") — requisito de RBAC/BO`,
|
|
216
|
+
system: `Referencia al sistema detectada ("${pattern}") — requisito técnico`,
|
|
217
|
+
condition: `Condición de negocio detectada ("${pattern}") — regla de negocio`,
|
|
218
|
+
validation: `Restricción/validación detectada ("${pattern}") — requisito de validación`,
|
|
219
|
+
configuration: `Parámetro configurable detectado ("${pattern}") — requisito de configuración`,
|
|
220
|
+
structural: `Sección contextual con contenido técnico ("${pattern}") — posible requisito disfrazado de contexto`,
|
|
221
|
+
actors: `Actor del sistema detectado ("${pattern}") — verificar que tiene requisitos asociados`,
|
|
222
|
+
integration: `Integración externa detectada ("${pattern}") — requisito de integración`,
|
|
223
|
+
workflow: `Flujo de trabajo/proceso detectado ("${pattern}") — requisito de proceso/onboarding`,
|
|
224
|
+
},
|
|
225
|
+
en: {
|
|
226
|
+
obligation: `Obligation verb detected ("${pattern}") — likely functional requirement`,
|
|
227
|
+
capability: `Capability verb detected ("${pattern}") — possible functional requirement`,
|
|
228
|
+
access: `Access/permission pattern detected ("${pattern}") — RBAC/BO requirement`,
|
|
229
|
+
system: `System reference detected ("${pattern}") — technical requirement`,
|
|
230
|
+
condition: `Business condition detected ("${pattern}") — business rule`,
|
|
231
|
+
validation: `Restriction/validation detected ("${pattern}") — validation requirement`,
|
|
232
|
+
configuration: `Configurable parameter detected ("${pattern}") — configuration requirement`,
|
|
233
|
+
structural: `Contextual section with technical content ("${pattern}") — possible requirement disguised as context`,
|
|
234
|
+
actors: `System actor detected ("${pattern}") — verify associated requirements exist`,
|
|
235
|
+
integration: `External integration detected ("${pattern}") — integration requirement`,
|
|
236
|
+
workflow: `Workflow/process detected ("${pattern}") — process/onboarding requirement`,
|
|
237
|
+
},
|
|
238
|
+
};
|
|
239
|
+
return reasons[lang][patternType] || `Pattern "${pattern}" matched in category "${patternType}"`;
|
|
240
|
+
}
|
|
241
|
+
function deduplicateMatches(matches) {
|
|
242
|
+
const byText = new Map();
|
|
243
|
+
for (const m of matches) {
|
|
244
|
+
const key = m.text.substring(0, 80);
|
|
245
|
+
const existing = byText.get(key);
|
|
246
|
+
if (!existing || confidenceRank(m.confidence) > confidenceRank(existing.confidence)) {
|
|
247
|
+
byText.set(key, m);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return Array.from(byText.values()).sort((a, b) => confidenceRank(b.confidence) - confidenceRank(a.confidence));
|
|
251
|
+
}
|
|
252
|
+
function confidenceRank(c) {
|
|
253
|
+
return c === "high" ? 3 : c === "medium" ? 2 : 1;
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=heuristics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heuristics.js","sourceRoot":"","sources":["../src/heuristics.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,8 @@ import { checkProvider } from "./llm-client.js";
|
|
|
10
10
|
import { parsePdf } from "./pdf-parser.js";
|
|
11
11
|
import { DEFAULT_CATEGORIES } from "./types.js";
|
|
12
12
|
import { jobManager } from "./job-manager.js";
|
|
13
|
+
import { scanForImplicitRequirements, detectLanguage } from "./heuristics.js";
|
|
14
|
+
import { analyzeRequirement, formatWarnings } from "./requirement-analyzer.js";
|
|
13
15
|
// ─── MCP Server ─────────────────────────────────────────────────────
|
|
14
16
|
const server = new McpServer({
|
|
15
17
|
name: "mcp-requirements-extractor",
|
|
@@ -242,12 +244,18 @@ When analyzing requirements, remember that a SINGLE requirement from the PDF oft
|
|
|
242
244
|
- Does the end-user (driver/client) SEE or USE it in a web portal? → Write a "frontend" requirement
|
|
243
245
|
- Does the user interact with it on a mobile app (iOS/Android)? → Write a "mobile" requirement
|
|
244
246
|
|
|
247
|
+
NEW — HEURISTIC HINTS:
|
|
248
|
+
Each chunk now includes "heuristicHints" — automatically detected patterns that may indicate implicit requirements.
|
|
249
|
+
Pay special attention to hints with confidence "high" — these are likely real requirements disguised as context.
|
|
250
|
+
Do NOT skip introductory sections (Preliminary Remarks, Use Cases, etc.) — they often contain critical requirements.
|
|
251
|
+
|
|
245
252
|
Categories: backend, bo, frontend, mobile, infra, devops, non-functional
|
|
246
253
|
Use write_requirement to save each decomposed requirement to its category directory.`, {
|
|
247
254
|
pdfPath: z.string().describe("Absolute path to the PDF file"),
|
|
248
255
|
pagesPerChunk: z.number().optional().default(5).describe("Number of pages per chunk (default: 5)"),
|
|
249
256
|
chunkIndex: z.number().optional().describe("If set, return only this specific chunk (0-based). Omit to get all chunks."),
|
|
250
|
-
|
|
257
|
+
language: z.enum(["es", "en", "auto"]).optional().default("auto").describe("Language for heuristic scanning: 'es', 'en', or 'auto' (auto-detect)"),
|
|
258
|
+
}, async ({ pdfPath, pagesPerChunk, chunkIndex, language }) => {
|
|
251
259
|
if (!fs.existsSync(pdfPath)) {
|
|
252
260
|
return {
|
|
253
261
|
content: [{ type: "text", text: `❌ PDF not found: ${pdfPath}` }],
|
|
@@ -262,6 +270,7 @@ Use write_requirement to save each decomposed requirement to its category direct
|
|
|
262
270
|
};
|
|
263
271
|
}
|
|
264
272
|
const chunk = chunks[chunkIndex];
|
|
273
|
+
const hints = scanForImplicitRequirements(chunk.text, chunk.startPage, chunk.endPage, language);
|
|
265
274
|
return {
|
|
266
275
|
content: [{
|
|
267
276
|
type: "text",
|
|
@@ -271,23 +280,28 @@ Use write_requirement to save each decomposed requirement to its category direct
|
|
|
271
280
|
startPage: chunk.startPage,
|
|
272
281
|
endPage: chunk.endPage,
|
|
273
282
|
text: chunk.text,
|
|
283
|
+
heuristicHints: hints.filter(h => h.confidence !== "low"),
|
|
274
284
|
}),
|
|
275
285
|
}],
|
|
276
286
|
};
|
|
277
287
|
}
|
|
278
|
-
// Return all chunks with metadata
|
|
288
|
+
// Return all chunks with metadata and heuristic hints
|
|
279
289
|
return {
|
|
280
290
|
content: [{
|
|
281
291
|
type: "text",
|
|
282
292
|
text: JSON.stringify({
|
|
283
293
|
totalChunks: chunks.length,
|
|
284
294
|
totalPages: chunks[chunks.length - 1]?.endPage || 0,
|
|
285
|
-
chunks: chunks.map((c, i) =>
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
295
|
+
chunks: chunks.map((c, i) => {
|
|
296
|
+
const hints = scanForImplicitRequirements(c.text, c.startPage, c.endPage, language);
|
|
297
|
+
return {
|
|
298
|
+
index: i,
|
|
299
|
+
startPage: c.startPage,
|
|
300
|
+
endPage: c.endPage,
|
|
301
|
+
text: c.text,
|
|
302
|
+
heuristicHints: hints.filter(h => h.confidence !== "low"),
|
|
303
|
+
};
|
|
304
|
+
}),
|
|
291
305
|
}),
|
|
292
306
|
}],
|
|
293
307
|
};
|
|
@@ -306,6 +320,14 @@ Use this after YOU (the IDE AI) have generated the requirement content.
|
|
|
306
320
|
The file will be saved as: {outputDir}/{category}/{filename}
|
|
307
321
|
It also creates the category directory if it doesn't exist.
|
|
308
322
|
|
|
323
|
+
ACTIVE VALIDATION — This tool now analyzes the content before writing and returns warnings:
|
|
324
|
+
- 🔍 GRANULARITY: Items within the requirement that could be separate requirements (e.g., "Fuel Cards: Crear y gestionar" inside a Vehicle Management requirement)
|
|
325
|
+
- 🏗️ MISSING LAYERS: If the content mentions admin actors (Fleet Manager, Super Admin) but category is not 'bo', it suggests creating a BO requirement too
|
|
326
|
+
- 📋 ACCEPTANCE CRITERIA QUALITY: Flags vague criteria that read like user stories instead of specific, testable conditions
|
|
327
|
+
- 🔗 CROSS-REFERENCES: Checks if referenced requirement IDs exist as files
|
|
328
|
+
|
|
329
|
+
Pay attention to these warnings and act on them — create additional requirements for flagged sub-items and missing layers.
|
|
330
|
+
|
|
309
331
|
IMPORTANT: A single requirement from the source PDF often results in MULTIPLE calls to this tool — one per layer/category.
|
|
310
332
|
For example, "Booking Management" might generate:
|
|
311
333
|
- backend/ACS_BE_07_bookings.md (API + business logic)
|
|
@@ -327,10 +349,13 @@ Expected markdown format:
|
|
|
327
349
|
fs.mkdirSync(catDir, { recursive: true });
|
|
328
350
|
const filePath = path.join(catDir, filename);
|
|
329
351
|
fs.writeFileSync(filePath, content, "utf-8");
|
|
352
|
+
// Analyze the written requirement
|
|
353
|
+
const analysis = analyzeRequirement(content, category, outputDir);
|
|
354
|
+
const warningsText = formatWarnings(analysis);
|
|
330
355
|
return {
|
|
331
356
|
content: [{
|
|
332
357
|
type: "text",
|
|
333
|
-
text: `✅ Written: ${category}/${filename} (${content.length} bytes)`,
|
|
358
|
+
text: `✅ Written: ${category}/${filename} (${content.length} bytes)${warningsText}`,
|
|
334
359
|
}],
|
|
335
360
|
};
|
|
336
361
|
}
|
|
@@ -341,6 +366,66 @@ Expected markdown format:
|
|
|
341
366
|
};
|
|
342
367
|
}
|
|
343
368
|
});
|
|
369
|
+
// ─── Tool: scan_implicit_requirements (IDE-driven) ──────────────────
|
|
370
|
+
server.tool("scan_implicit_requirements", `Scans text for implicit requirements using multilingual heuristic patterns.
|
|
371
|
+
Use this AFTER parse_pdf to find requirements that lack formal identifiers (e.g., "ACS_BE_XX").
|
|
372
|
+
|
|
373
|
+
This tool detects:
|
|
374
|
+
- Obligation verbs: "must", "shall", "debe", "deberá", "tiene que"
|
|
375
|
+
- Access/permission patterns: "will have access to", "tendrá acceso a"
|
|
376
|
+
- Actor workflows: onboarding flows, KYC processes, dealer interactions
|
|
377
|
+
- Integration references: API, DMS, OBD, PSD2, GDPR
|
|
378
|
+
- Structural sections: "Preliminary Remarks", "Use Cases" that often hide real requirements
|
|
379
|
+
- Configuration patterns: "configurable", "editable", "campo obligatorio"
|
|
380
|
+
|
|
381
|
+
Each match includes confidence (high/medium/low), suggested categories, and reason.
|
|
382
|
+
Focus on "high" confidence matches — they are very likely real requirements.
|
|
383
|
+
|
|
384
|
+
Supports auto-detection of Spanish (ES) and English (EN) documents.`, {
|
|
385
|
+
text: z.string().describe("Text content to scan (from parse_pdf chunks)"),
|
|
386
|
+
startPage: z.number().optional().default(1).describe("Start page number for reference"),
|
|
387
|
+
endPage: z.number().optional().default(1).describe("End page number for reference"),
|
|
388
|
+
language: z.enum(["es", "en", "auto"]).optional().default("auto").describe("Language: 'es', 'en', or 'auto'"),
|
|
389
|
+
minConfidence: z.enum(["high", "medium", "low"]).optional().default("medium").describe("Minimum confidence level to return"),
|
|
390
|
+
}, async ({ text, startPage, endPage, language, minConfidence }) => {
|
|
391
|
+
try {
|
|
392
|
+
const detectedLang = language === "auto" ? detectLanguage(text) : language;
|
|
393
|
+
const allMatches = scanForImplicitRequirements(text, startPage, endPage, language);
|
|
394
|
+
// Filter by minimum confidence
|
|
395
|
+
const confidenceOrder = { high: 3, medium: 2, low: 1 };
|
|
396
|
+
const minLevel = confidenceOrder[minConfidence];
|
|
397
|
+
const filtered = allMatches.filter(m => confidenceOrder[m.confidence] >= minLevel);
|
|
398
|
+
// Format output
|
|
399
|
+
const summary = [
|
|
400
|
+
`🔎 Scanned ${text.length} characters (pages ${startPage}-${endPage})`,
|
|
401
|
+
`📝 Language detected: ${detectedLang}`,
|
|
402
|
+
`📊 Found: ${filtered.length} potential implicit requirements (${allMatches.length} total, filtered ≥${minConfidence})`,
|
|
403
|
+
"",
|
|
404
|
+
];
|
|
405
|
+
for (const match of filtered) {
|
|
406
|
+
const icon = match.confidence === "high" ? "🔴" : match.confidence === "medium" ? "🟡" : "⚪";
|
|
407
|
+
summary.push(`${icon} [${match.confidence}] [${match.patternType}] ${match.reason}`);
|
|
408
|
+
summary.push(` 📄 "${match.text.substring(0, 120)}..."`);
|
|
409
|
+
summary.push(` 📂 Suggested categories: ${match.suggestedCategories.join(", ")}`);
|
|
410
|
+
summary.push("");
|
|
411
|
+
}
|
|
412
|
+
if (filtered.length === 0) {
|
|
413
|
+
summary.push("✅ No implicit requirements detected at this confidence level.");
|
|
414
|
+
}
|
|
415
|
+
return {
|
|
416
|
+
content: [{
|
|
417
|
+
type: "text",
|
|
418
|
+
text: summary.join("\n"),
|
|
419
|
+
}],
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
catch (error) {
|
|
423
|
+
return {
|
|
424
|
+
content: [{ type: "text", text: `❌ Error scanning: ${error.message}` }],
|
|
425
|
+
isError: true,
|
|
426
|
+
};
|
|
427
|
+
}
|
|
428
|
+
});
|
|
344
429
|
// ─── Tool: write_summary (IDE-driven) ───────────────────────────────
|
|
345
430
|
server.tool("write_summary", `Writes a README.md summary file and/or a VALORACION.md estimation file to the requirements directory.
|
|
346
431
|
Use this after all requirements have been written to generate an index.`, {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type WarningSeverity = "error" | "warning" | "suggestion";
|
|
2
|
+
export interface RequirementWarning {
|
|
3
|
+
severity: WarningSeverity;
|
|
4
|
+
type: "granularity" | "missing_layer" | "vague_criteria" | "cross_reference";
|
|
5
|
+
message: string;
|
|
6
|
+
detail?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface RequirementAnalysis {
|
|
9
|
+
warnings: RequirementWarning[];
|
|
10
|
+
score: number;
|
|
11
|
+
summary: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function analyzeRequirement(content: string, category: string, outputDir: string): RequirementAnalysis;
|
|
14
|
+
export declare function formatWarnings(analysis: RequirementAnalysis): string;
|
|
15
|
+
//# sourceMappingURL=requirement-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requirement-analyzer.d.ts","sourceRoot":"","sources":["../src/requirement-analyzer.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC;AAEjE,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,EAAE,eAAe,CAAC;IAC1B,IAAI,EAAE,aAAa,GAAG,eAAe,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACnB;AAsQD,wBAAgB,kBAAkB,CAC9B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAClB,mBAAmB,CAkCrB;AAID,wBAAgB,cAAc,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CAgBpE"}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
// ─── Requirement Analyzer ───────────────────────────────────────────
|
|
2
|
+
//
|
|
3
|
+
// Analyzes requirement content before writing to detect:
|
|
4
|
+
// 1. Sub-items that should be separate requirements (granularity)
|
|
5
|
+
// 2. Missing layer coverage (e.g. backend CRUD without BO)
|
|
6
|
+
// 3. Vague acceptance criteria (user-story-level vs specific)
|
|
7
|
+
// 4. Cross-reference suggestions
|
|
8
|
+
import fs from "node:fs";
|
|
9
|
+
import path from "node:path";
|
|
10
|
+
// ─── CRUD / Sub-requirement Detection ───────────────────────────────
|
|
11
|
+
const CRUD_PATTERNS = [
|
|
12
|
+
/crear\s+y\s+gestionar/i,
|
|
13
|
+
/create\s+and\s+manage/i,
|
|
14
|
+
/crud\b/i,
|
|
15
|
+
/listar.*crear.*editar.*eliminar/i,
|
|
16
|
+
/list.*create.*edit.*delete/i,
|
|
17
|
+
/gestión\s+de\s+\w+/i,
|
|
18
|
+
/management\s+of\s+\w+/i,
|
|
19
|
+
/configurar\s+y\s+gestionar/i,
|
|
20
|
+
/configure\s+and\s+manage/i,
|
|
21
|
+
];
|
|
22
|
+
const SUB_REQUIREMENT_INDICATORS = [
|
|
23
|
+
// Pattern: "- **Something**: verb + object" (bold label with description)
|
|
24
|
+
/^-\s+\*\*([^*]+)\*\*:\s*(.+)/gm,
|
|
25
|
+
// Pattern: "- Something: verb + object" (plain label with description)
|
|
26
|
+
/^-\s+([A-Z][^:]{3,30}):\s*((?:crear|gestionar|configurar|listar|CRUD|manage|create|configure|list).+)/gim,
|
|
27
|
+
];
|
|
28
|
+
function detectSubRequirements(content) {
|
|
29
|
+
const warnings = [];
|
|
30
|
+
const lines = content.split("\n");
|
|
31
|
+
for (const line of lines) {
|
|
32
|
+
const trimmed = line.trim();
|
|
33
|
+
// Check for bold-labeled items that look like standalone requirements
|
|
34
|
+
const boldMatch = trimmed.match(/^-\s+\*\*([^*]+)\*\*\s*[:—]\s*(.+)/);
|
|
35
|
+
if (boldMatch) {
|
|
36
|
+
const [, label, description] = boldMatch;
|
|
37
|
+
const descLower = description.toLowerCase();
|
|
38
|
+
// Does it contain CRUD-like verbs?
|
|
39
|
+
const hasCrud = CRUD_PATTERNS.some(p => p.test(descLower));
|
|
40
|
+
// Does it look substantial enough to be its own requirement?
|
|
41
|
+
const isSubstantial = description.length > 30 || hasCrud;
|
|
42
|
+
if (isSubstantial && hasCrud) {
|
|
43
|
+
warnings.push({
|
|
44
|
+
severity: "warning",
|
|
45
|
+
type: "granularity",
|
|
46
|
+
message: `"${label}" podría ser un requisito separado`,
|
|
47
|
+
detail: `El ítem "${label}: ${description.substring(0, 80)}..." contiene operaciones CRUD propias. Considere extraerlo como un requisito independiente para mayor especificidad y trazabilidad.`,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return warnings;
|
|
53
|
+
}
|
|
54
|
+
// ─── Missing Layer Detection ────────────────────────────────────────
|
|
55
|
+
const BO_INDICATORS = [
|
|
56
|
+
/fleet\s*manager/i, /super\s*admin/i, /control\s*room/i,
|
|
57
|
+
/back\s*office/i, /panel\s*admin/i, /gestionar/i, /administrar/i,
|
|
58
|
+
/configurar/i, /crud/i, /crear.*desde.*backend/i,
|
|
59
|
+
/menú\s+de\s+gestión/i, /management\s+menu/i,
|
|
60
|
+
];
|
|
61
|
+
const FRONTEND_INDICATORS = [
|
|
62
|
+
/driver\s*portal/i, /portal\s*web/i, /el\s+conductor/i,
|
|
63
|
+
/el\s+driver/i, /usuario\s+final/i, /end.?user/i,
|
|
64
|
+
/web\s*portal/i, /driver\s*web/i,
|
|
65
|
+
];
|
|
66
|
+
const MOBILE_INDICATORS = [
|
|
67
|
+
/\bapp\b/i, /ios/i, /android/i, /móvil/i, /mobile/i,
|
|
68
|
+
/bluetooth/i, /ble\b/i, /push\s*notif/i, /pantalla/i,
|
|
69
|
+
];
|
|
70
|
+
const BACKEND_INDICATORS = [
|
|
71
|
+
/api\b/i, /endpoint/i, /rest\b/i, /lógica\s+de\s+negocio/i,
|
|
72
|
+
/business\s+logic/i, /base\s+de\s+datos/i, /database/i,
|
|
73
|
+
/email\s+automát/i, /automatic\s+email/i,
|
|
74
|
+
];
|
|
75
|
+
function detectMissingLayers(content, category) {
|
|
76
|
+
const warnings = [];
|
|
77
|
+
const lower = content.toLowerCase();
|
|
78
|
+
// If writing a backend requirement with CRUD content → suggest BO
|
|
79
|
+
if (category === "backend") {
|
|
80
|
+
const hasBoSignals = BO_INDICATORS.some(p => p.test(content));
|
|
81
|
+
if (hasBoSignals) {
|
|
82
|
+
warnings.push({
|
|
83
|
+
severity: "suggestion",
|
|
84
|
+
type: "missing_layer",
|
|
85
|
+
message: "Este requisito backend menciona gestión/admin → ¿existe el correspondiente requisito BO?",
|
|
86
|
+
detail: "El contenido menciona actores de administración (Fleet Manager, Super Admin, etc.) o verbos de gestión (configurar, gestionar, CRUD). Asegúrate de crear también un requisito en la categoría 'bo' para la interfaz de administración.",
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
const hasFrontendSignals = FRONTEND_INDICATORS.some(p => p.test(content));
|
|
90
|
+
if (hasFrontendSignals) {
|
|
91
|
+
warnings.push({
|
|
92
|
+
severity: "suggestion",
|
|
93
|
+
type: "missing_layer",
|
|
94
|
+
message: "Este requisito backend menciona driver portal → ¿existe el correspondiente requisito frontend?",
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
const hasMobileSignals = MOBILE_INDICATORS.some(p => p.test(content));
|
|
98
|
+
if (hasMobileSignals) {
|
|
99
|
+
warnings.push({
|
|
100
|
+
severity: "suggestion",
|
|
101
|
+
type: "missing_layer",
|
|
102
|
+
message: "Este requisito backend menciona app/mobile → ¿existe el correspondiente requisito mobile?",
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// If writing a BO requirement → check backend exists
|
|
107
|
+
if (category === "bo") {
|
|
108
|
+
const hasBackendSignals = BACKEND_INDICATORS.some(p => p.test(content));
|
|
109
|
+
if (hasBackendSignals) {
|
|
110
|
+
warnings.push({
|
|
111
|
+
severity: "suggestion",
|
|
112
|
+
type: "missing_layer",
|
|
113
|
+
message: "Este requisito BO necesita APIs backend → ¿existe el correspondiente requisito backend?",
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// If writing mobile → check backend
|
|
118
|
+
if (category === "mobile") {
|
|
119
|
+
warnings.push({
|
|
120
|
+
severity: "suggestion",
|
|
121
|
+
type: "missing_layer",
|
|
122
|
+
message: "Los requisitos mobile siempre necesitan backend → ¿existe el correspondiente requisito backend?",
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
return warnings;
|
|
126
|
+
}
|
|
127
|
+
// ─── Acceptance Criteria Quality ────────────────────────────────────
|
|
128
|
+
const VAGUE_PATTERNS = [
|
|
129
|
+
/funcional$/i,
|
|
130
|
+
/disponible$/i,
|
|
131
|
+
/implementad[oa]$/i,
|
|
132
|
+
/correcto$/i,
|
|
133
|
+
/^se puede/i,
|
|
134
|
+
/^it works/i,
|
|
135
|
+
/^funciona/i,
|
|
136
|
+
/^works correctly/i,
|
|
137
|
+
];
|
|
138
|
+
const SPECIFIC_INDICATORS = [
|
|
139
|
+
/\d+/, // Contains numbers
|
|
140
|
+
/error.*mensaje|message.*error/i, // Error handling
|
|
141
|
+
/cuando.*entonces|when.*then/i, // Condition-action
|
|
142
|
+
/validate|validar/i, // Validation
|
|
143
|
+
/no puede|must not|cannot/i, // Negative constraint
|
|
144
|
+
/formato|format|patrón|pattern/i, // Format specification
|
|
145
|
+
/antes de|después de|before|after/i, // Temporal
|
|
146
|
+
];
|
|
147
|
+
function analyzeAcceptanceCriteria(content) {
|
|
148
|
+
const warnings = [];
|
|
149
|
+
// Extract criteria lines
|
|
150
|
+
const criteriaLines = content.match(/- \[ \] .+/g) || [];
|
|
151
|
+
if (criteriaLines.length === 0) {
|
|
152
|
+
warnings.push({
|
|
153
|
+
severity: "warning",
|
|
154
|
+
type: "vague_criteria",
|
|
155
|
+
message: "No se encontraron criterios de aceptación (formato '- [ ] ...')",
|
|
156
|
+
});
|
|
157
|
+
return warnings;
|
|
158
|
+
}
|
|
159
|
+
let vagueCount = 0;
|
|
160
|
+
for (const line of criteriaLines) {
|
|
161
|
+
const criterion = line.replace(/- \[ \] /, "").trim();
|
|
162
|
+
// Check if too short
|
|
163
|
+
if (criterion.length < 20) {
|
|
164
|
+
vagueCount++;
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
// Check for vague patterns
|
|
168
|
+
const isVague = VAGUE_PATTERNS.some(p => p.test(criterion));
|
|
169
|
+
const isSpecific = SPECIFIC_INDICATORS.some(p => p.test(criterion));
|
|
170
|
+
if (isVague && !isSpecific) {
|
|
171
|
+
vagueCount++;
|
|
172
|
+
warnings.push({
|
|
173
|
+
severity: "suggestion",
|
|
174
|
+
type: "vague_criteria",
|
|
175
|
+
message: `Criterio genérico: "${criterion.substring(0, 60)}..."`,
|
|
176
|
+
detail: "Considera añadir condiciones específicas, valores concretos, o formato Given/When/Then para mayor especificidad.",
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (vagueCount > criteriaLines.length / 2) {
|
|
181
|
+
warnings.push({
|
|
182
|
+
severity: "warning",
|
|
183
|
+
type: "vague_criteria",
|
|
184
|
+
message: `${vagueCount} de ${criteriaLines.length} criterios parecen demasiado genéricos (tipo historia de usuario). Añade condiciones concretas, valores numéricos, o acciones específicas.`,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
return warnings;
|
|
188
|
+
}
|
|
189
|
+
// ─── Cross-Reference Suggestions ────────────────────────────────────
|
|
190
|
+
function findCrossReferences(content, category, outputDir) {
|
|
191
|
+
const warnings = [];
|
|
192
|
+
// Check if outputDir exists
|
|
193
|
+
if (!fs.existsSync(outputDir))
|
|
194
|
+
return warnings;
|
|
195
|
+
// Look for references to other requirement IDs in content
|
|
196
|
+
const idRefs = content.match(/ACS_[A-Z]{2}_\d{2}/g) || [];
|
|
197
|
+
const uniqueRefs = [...new Set(idRefs)];
|
|
198
|
+
// Check if referenced requirements exist
|
|
199
|
+
for (const ref of uniqueRefs) {
|
|
200
|
+
const found = findRequirementFile(outputDir, ref);
|
|
201
|
+
if (!found) {
|
|
202
|
+
warnings.push({
|
|
203
|
+
severity: "suggestion",
|
|
204
|
+
type: "cross_reference",
|
|
205
|
+
message: `Referencia a "${ref}" encontrada pero no existe como fichero de requisito`,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return warnings;
|
|
210
|
+
}
|
|
211
|
+
function findRequirementFile(outputDir, reqId) {
|
|
212
|
+
try {
|
|
213
|
+
const subdirs = fs.readdirSync(outputDir, { withFileTypes: true });
|
|
214
|
+
for (const entry of subdirs) {
|
|
215
|
+
if (!entry.isDirectory())
|
|
216
|
+
continue;
|
|
217
|
+
const catDir = path.join(outputDir, entry.name);
|
|
218
|
+
const files = fs.readdirSync(catDir);
|
|
219
|
+
if (files.some(f => f.includes(reqId)))
|
|
220
|
+
return true;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
// Ignore errors
|
|
225
|
+
}
|
|
226
|
+
return false;
|
|
227
|
+
}
|
|
228
|
+
// ─── Main Analysis Function ─────────────────────────────────────────
|
|
229
|
+
export function analyzeRequirement(content, category, outputDir) {
|
|
230
|
+
const allWarnings = [
|
|
231
|
+
...detectSubRequirements(content),
|
|
232
|
+
...detectMissingLayers(content, category),
|
|
233
|
+
...analyzeAcceptanceCriteria(content),
|
|
234
|
+
...findCrossReferences(content, category, outputDir),
|
|
235
|
+
];
|
|
236
|
+
// Calculate quality score
|
|
237
|
+
const errorCount = allWarnings.filter(w => w.severity === "error").length;
|
|
238
|
+
const warningCount = allWarnings.filter(w => w.severity === "warning").length;
|
|
239
|
+
const suggestionCount = allWarnings.filter(w => w.severity === "suggestion").length;
|
|
240
|
+
let score = 100;
|
|
241
|
+
score -= errorCount * 20;
|
|
242
|
+
score -= warningCount * 10;
|
|
243
|
+
score -= suggestionCount * 3;
|
|
244
|
+
score = Math.max(0, Math.min(100, score));
|
|
245
|
+
// Build summary
|
|
246
|
+
const parts = [];
|
|
247
|
+
if (errorCount > 0)
|
|
248
|
+
parts.push(`❌ ${errorCount} error(s)`);
|
|
249
|
+
if (warningCount > 0)
|
|
250
|
+
parts.push(`⚠️ ${warningCount} warning(s)`);
|
|
251
|
+
if (suggestionCount > 0)
|
|
252
|
+
parts.push(`💡 ${suggestionCount} suggestion(s)`);
|
|
253
|
+
const summary = parts.length > 0
|
|
254
|
+
? `Quality: ${score}/100 — ${parts.join(", ")}`
|
|
255
|
+
: `Quality: ${score}/100 — ✅ No issues detected`;
|
|
256
|
+
return {
|
|
257
|
+
warnings: allWarnings,
|
|
258
|
+
score,
|
|
259
|
+
summary,
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
// ─── Format Warnings for Output ─────────────────────────────────────
|
|
263
|
+
export function formatWarnings(analysis) {
|
|
264
|
+
if (analysis.warnings.length === 0) {
|
|
265
|
+
return `\n📊 ${analysis.summary}`;
|
|
266
|
+
}
|
|
267
|
+
const lines = [`\n📊 ${analysis.summary}\n`];
|
|
268
|
+
for (const w of analysis.warnings) {
|
|
269
|
+
const icon = w.severity === "error" ? "❌" : w.severity === "warning" ? "⚠️" : "💡";
|
|
270
|
+
lines.push(`${icon} [${w.type}] ${w.message}`);
|
|
271
|
+
if (w.detail) {
|
|
272
|
+
lines.push(` → ${w.detail}`);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return lines.join("\n");
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=requirement-analyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requirement-analyzer.js","sourceRoot":"","sources":["../src/requirement-analyzer.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -80,4 +80,6 @@ export interface OllamaResponse {
|
|
|
80
80
|
response: string;
|
|
81
81
|
done: boolean;
|
|
82
82
|
}
|
|
83
|
+
export type { HeuristicMatch, Language, Confidence } from "./heuristics.js";
|
|
84
|
+
export type { RequirementWarning, RequirementAnalysis, WarningSeverity } from "./requirement-analyzer.js";
|
|
83
85
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gherk/requirements-extractor",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "MCP server that extracts, classifies and generates structured requirements from PDF documents
|
|
3
|
+
"version": "1.5.0",
|
|
4
|
+
"description": "MCP server that extracts, classifies and generates structured requirements from PDF documents with heuristic scanning and active validation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|