specweave 0.30.16 → 0.30.18

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 (80) hide show
  1. package/CLAUDE.md +43 -0
  2. package/dist/src/cli/commands/plan/increment-detector.js +2 -2
  3. package/dist/src/cli/commands/plan/increment-detector.js.map +1 -1
  4. package/dist/src/cli/commands/plan/plan-orchestrator.js +1 -1
  5. package/dist/src/cli/commands/plan/plan-orchestrator.js.map +1 -1
  6. package/dist/src/cli/commands/plan/plan-validator.js +1 -1
  7. package/dist/src/cli/commands/plan/plan-validator.js.map +1 -1
  8. package/dist/src/cli/workers/living-docs-worker.js +80 -44
  9. package/dist/src/cli/workers/living-docs-worker.js.map +1 -1
  10. package/dist/src/core/increment/active-increment-manager.js +1 -1
  11. package/dist/src/core/increment/active-increment-manager.js.map +1 -1
  12. package/dist/src/core/increment/metadata-manager.d.ts +1 -1
  13. package/dist/src/core/increment/metadata-manager.d.ts.map +1 -1
  14. package/dist/src/core/increment/metadata-manager.js +7 -7
  15. package/dist/src/core/increment/metadata-manager.js.map +1 -1
  16. package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
  17. package/dist/src/core/living-docs/hierarchy-mapper.js +12 -18
  18. package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
  19. package/dist/src/core/living-docs/living-docs-sync.d.ts +49 -24
  20. package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
  21. package/dist/src/core/living-docs/living-docs-sync.js +207 -96
  22. package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
  23. package/dist/src/core/llm/index.d.ts +1 -0
  24. package/dist/src/core/llm/index.d.ts.map +1 -1
  25. package/dist/src/core/llm/index.js +2 -0
  26. package/dist/src/core/llm/index.js.map +1 -1
  27. package/dist/src/core/llm/providers/anthropic-provider.d.ts.map +1 -1
  28. package/dist/src/core/llm/providers/anthropic-provider.js +15 -26
  29. package/dist/src/core/llm/providers/anthropic-provider.js.map +1 -1
  30. package/dist/src/core/llm/providers/azure-openai-provider.d.ts.map +1 -1
  31. package/dist/src/core/llm/providers/azure-openai-provider.js +13 -5
  32. package/dist/src/core/llm/providers/azure-openai-provider.js.map +1 -1
  33. package/dist/src/core/llm/providers/bedrock-provider.d.ts.map +1 -1
  34. package/dist/src/core/llm/providers/bedrock-provider.js +12 -8
  35. package/dist/src/core/llm/providers/bedrock-provider.js.map +1 -1
  36. package/dist/src/core/llm/providers/claude-code-provider.d.ts.map +1 -1
  37. package/dist/src/core/llm/providers/claude-code-provider.js +15 -25
  38. package/dist/src/core/llm/providers/claude-code-provider.js.map +1 -1
  39. package/dist/src/core/llm/providers/ollama-provider.d.ts.map +1 -1
  40. package/dist/src/core/llm/providers/ollama-provider.js +12 -9
  41. package/dist/src/core/llm/providers/ollama-provider.js.map +1 -1
  42. package/dist/src/core/llm/providers/openai-provider.d.ts.map +1 -1
  43. package/dist/src/core/llm/providers/openai-provider.js +13 -6
  44. package/dist/src/core/llm/providers/openai-provider.js.map +1 -1
  45. package/dist/src/core/llm/providers/vertex-ai-provider.d.ts.map +1 -1
  46. package/dist/src/core/llm/providers/vertex-ai-provider.js +12 -8
  47. package/dist/src/core/llm/providers/vertex-ai-provider.js.map +1 -1
  48. package/dist/src/utils/feature-id-collision.d.ts +28 -0
  49. package/dist/src/utils/feature-id-collision.d.ts.map +1 -1
  50. package/dist/src/utils/feature-id-collision.js +83 -0
  51. package/dist/src/utils/feature-id-collision.js.map +1 -1
  52. package/dist/src/utils/llm-json-extractor.d.ts +105 -0
  53. package/dist/src/utils/llm-json-extractor.d.ts.map +1 -0
  54. package/dist/src/utils/llm-json-extractor.js +336 -0
  55. package/dist/src/utils/llm-json-extractor.js.map +1 -0
  56. package/dist/src/utils/structure-level-detector.d.ts +105 -0
  57. package/dist/src/utils/structure-level-detector.d.ts.map +1 -0
  58. package/dist/src/utils/structure-level-detector.js +388 -0
  59. package/dist/src/utils/structure-level-detector.js.map +1 -0
  60. package/package.json +1 -1
  61. package/plugins/specweave/commands/specweave-increment.md +57 -9
  62. package/plugins/specweave/commands/specweave-qa.md +34 -4
  63. package/plugins/specweave/commands/specweave-sync-specs.md +37 -6
  64. package/plugins/specweave/commands/specweave-validate.md +41 -1
  65. package/plugins/specweave/hooks/hooks.json +10 -0
  66. package/plugins/specweave/hooks/spec-project-validator.sh +111 -0
  67. package/plugins/specweave/lib/vendor/core/increment/active-increment-manager.js +1 -1
  68. package/plugins/specweave/lib/vendor/core/increment/active-increment-manager.js.map +1 -1
  69. package/plugins/specweave/lib/vendor/core/increment/metadata-manager.d.ts +1 -1
  70. package/plugins/specweave/lib/vendor/core/increment/metadata-manager.js +7 -7
  71. package/plugins/specweave/lib/vendor/core/increment/metadata-manager.js.map +1 -1
  72. package/plugins/specweave/skills/increment-planner/SKILL.md +109 -10
  73. package/plugins/specweave/skills/increment-planner/templates/spec-multi-project.md +2 -0
  74. package/plugins/specweave/skills/increment-planner/templates/spec-single-project.md +1 -0
  75. package/plugins/specweave/skills/increment-quality-judge-v2/SKILL.md +41 -2
  76. package/plugins/specweave/skills/multi-project-spec-mapper/SKILL.md +24 -1
  77. package/plugins/specweave/skills/spec-generator/SKILL.md +18 -0
  78. package/plugins/specweave/skills/specweave-framework/SKILL.md +25 -0
  79. package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +14 -0
  80. package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +21 -0
@@ -110,4 +110,32 @@ export declare function findNextAvailableUSId(projectSpecsPath: string, options?
110
110
  * @returns true if either US-XXX or US-XXXE exists
111
111
  */
112
112
  export declare function isUSIdUsed(number: number, projectSpecsPath: string): boolean;
113
+ /**
114
+ * Validate increment number uniqueness
115
+ *
116
+ * CRITICAL (2025-12-04): Prevents duplicate increment numbers like:
117
+ * - 0101-judge-llm-command
118
+ * - 0101-llm-json-extraction-hardening
119
+ *
120
+ * This causes chain shifts in living docs sync because each sync sees
121
+ * the other's FS folder as a "collision".
122
+ *
123
+ * @param incrementNumber - Numeric prefix to validate (e.g., 101 for 0101-xxx)
124
+ * @param incrementsPath - Path to increments folder
125
+ * @returns Object with validation result and existing increment name if duplicate found
126
+ */
127
+ export declare function validateIncrementNumberUnique(incrementNumber: number, incrementsPath: string): {
128
+ isUnique: boolean;
129
+ existingIncrement?: string;
130
+ };
131
+ /**
132
+ * Scan for duplicate increment numbers in the increments folder
133
+ *
134
+ * Returns all increment numbers that appear more than once.
135
+ * Useful for detecting existing duplicates that need cleanup.
136
+ *
137
+ * @param incrementsPath - Path to increments folder
138
+ * @returns Map of increment number to array of full increment names
139
+ */
140
+ export declare function findDuplicateIncrementNumbers(incrementsPath: string): Map<number, string[]>;
113
141
  //# sourceMappingURL=feature-id-collision.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature-id-collision.d.ts","sourceRoot":"","sources":["../../../src/utils/feature-id-collision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,EAAE,MAAM,EAAiB,MAAM,aAAa,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,MAAM,CAAC,CA+EjB;AA2DD;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAuDR;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CA4B3H;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qBAAqB,CACnC,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAqDR;AAsBD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CA8B5E"}
1
+ {"version":3,"file":"feature-id-collision.d.ts","sourceRoot":"","sources":["../../../src/utils/feature-id-collision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,EAAE,MAAM,EAAiB,MAAM,aAAa,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,MAAM,CAAC,CA+EjB;AA2DD;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAuDR;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CA4B3H;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qBAAqB,CACnC,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAqDR;AAsBD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CA8B5E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,6BAA6B,CAC3C,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,MAAM,GACrB;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,CAgCnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,cAAc,EAAE,MAAM,GACrB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAmCvB"}
@@ -371,4 +371,87 @@ export function isUSIdUsed(number, projectSpecsPath) {
371
371
  }
372
372
  return usedIds.has(number);
373
373
  }
374
+ /**
375
+ * Validate increment number uniqueness
376
+ *
377
+ * CRITICAL (2025-12-04): Prevents duplicate increment numbers like:
378
+ * - 0101-judge-llm-command
379
+ * - 0101-llm-json-extraction-hardening
380
+ *
381
+ * This causes chain shifts in living docs sync because each sync sees
382
+ * the other's FS folder as a "collision".
383
+ *
384
+ * @param incrementNumber - Numeric prefix to validate (e.g., 101 for 0101-xxx)
385
+ * @param incrementsPath - Path to increments folder
386
+ * @returns Object with validation result and existing increment name if duplicate found
387
+ */
388
+ export function validateIncrementNumberUnique(incrementNumber, incrementsPath) {
389
+ if (!fs.existsSync(incrementsPath)) {
390
+ return { isUnique: true };
391
+ }
392
+ const paddedNumber = incrementNumber.toString().padStart(4, '0');
393
+ const pattern = new RegExp(`^${paddedNumber}-`);
394
+ try {
395
+ const entries = fs.readdirSync(incrementsPath, { withFileTypes: true });
396
+ for (const entry of entries) {
397
+ if (entry.isDirectory() && entry.name !== '_archive' && pattern.test(entry.name)) {
398
+ return { isUnique: false, existingIncrement: entry.name };
399
+ }
400
+ }
401
+ // Also check archive
402
+ const archivePath = path.join(incrementsPath, '_archive');
403
+ if (fs.existsSync(archivePath)) {
404
+ const archiveEntries = fs.readdirSync(archivePath, { withFileTypes: true });
405
+ for (const entry of archiveEntries) {
406
+ if (entry.isDirectory() && pattern.test(entry.name)) {
407
+ return { isUnique: false, existingIncrement: `_archive/${entry.name}` };
408
+ }
409
+ }
410
+ }
411
+ }
412
+ catch {
413
+ // Error reading - assume unique to avoid blocking
414
+ }
415
+ return { isUnique: true };
416
+ }
417
+ /**
418
+ * Scan for duplicate increment numbers in the increments folder
419
+ *
420
+ * Returns all increment numbers that appear more than once.
421
+ * Useful for detecting existing duplicates that need cleanup.
422
+ *
423
+ * @param incrementsPath - Path to increments folder
424
+ * @returns Map of increment number to array of full increment names
425
+ */
426
+ export function findDuplicateIncrementNumbers(incrementsPath) {
427
+ const duplicates = new Map();
428
+ if (!fs.existsSync(incrementsPath)) {
429
+ return duplicates;
430
+ }
431
+ const numberToNames = new Map();
432
+ try {
433
+ const entries = fs.readdirSync(incrementsPath, { withFileTypes: true });
434
+ for (const entry of entries) {
435
+ if (!entry.isDirectory() || entry.name === '_archive')
436
+ continue;
437
+ const match = entry.name.match(/^(\d{4})-/);
438
+ if (match) {
439
+ const num = parseInt(match[1], 10);
440
+ const existing = numberToNames.get(num) || [];
441
+ existing.push(entry.name);
442
+ numberToNames.set(num, existing);
443
+ }
444
+ }
445
+ // Filter to only duplicates
446
+ for (const [num, names] of numberToNames) {
447
+ if (names.length > 1) {
448
+ duplicates.set(num, names);
449
+ }
450
+ }
451
+ }
452
+ catch {
453
+ // Error reading folder
454
+ }
455
+ return duplicates;
456
+ }
374
457
  //# sourceMappingURL=feature-id-collision.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature-id-collision.js","sourceRoot":"","sources":["../../../src/utils/feature-id-collision.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAU,aAAa,EAAE,MAAM,aAAa,CAAC;AAapD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,UAAkB,EAClB,SAAiB,EACjB,WAAmB,EACnB,UAAiC,EAAE;IAEnC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC;IAC/C,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;IAEpD,yFAAyF;IACzF,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAE3D,yDAAyD;IACzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,aAAa,GAAG,UAAU,CAAC;IAC/B,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,OAAO,UAAU,GAAG,aAAa,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QACrE,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;QAEtE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;QAE7D,MAAM,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACnD,MAAM,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAEnD,wDAAwD;QACxD,2EAA2E;QAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;QAC5D,MAAM,qBAAqB,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;QAChF,MAAM,qBAAqB,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;QAEhF,wDAAwD;QACxD,4DAA4D;QAC5D,MAAM,WAAW,GAAG,mBAAmB,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;QAEzE,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,IAAI,CAAC,qBAAqB,IAAI,CAAC,qBAAqB,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3G,uBAAuB;YACvB,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;gBACjC,sEAAsE;gBACtE,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;gBACtE,MAAM,cAAc,GAAG,GAAG,cAAc,GAAG,CAAC;gBAC5C,MAAM,kBAAkB,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,CAAC;gBACtF,MAAM,kBAAkB,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,CAAC;gBACtF,MAAM,UAAU,GAAG,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC;gBAExE,MAAM,CAAC,IAAI,CACT,oCAAoC,WAAW,IAAI,UAAU,WAAW;oBACxE,YAAY,aAAa,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAChE,CAAC;YACJ,CAAC;YACD,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,kCAAkC;QAClC,MAAM,YAAY,GAAG,cAAc,IAAI,cAAc,IAAI,qBAAqB,IAAI,qBAAqB,IAAI,WAAW,CAAC;QACvH,IAAI,UAAU,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;YACrC,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,CAAC,GAAG,CAAC,6BAA6B,WAAW,IAAI,UAAU,SAAS,CAAC,CAAC;YAC9E,CAAC;iBAAM,IAAI,cAAc,EAAE,CAAC;gBAC1B,MAAM,CAAC,GAAG,CAAC,6BAA6B,WAAW,IAAI,UAAU,SAAS,CAAC,CAAC;YAC9E,CAAC;iBAAM,IAAI,qBAAqB,EAAE,CAAC;gBACjC,MAAM,CAAC,GAAG,CAAC,6BAA6B,WAAW,aAAa,UAAU,SAAS,CAAC,CAAC;YACvF,CAAC;iBAAM,IAAI,qBAAqB,EAAE,CAAC;gBACjC,MAAM,CAAC,GAAG,CAAC,6BAA6B,WAAW,aAAa,UAAU,SAAS,CAAC,CAAC;YACvF,CAAC;iBAAM,IAAI,WAAW,EAAE,CAAC;gBACvB,MAAM,CAAC,GAAG,CAAC,gCAAgC,aAAa,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACjH,CAAC;QACH,CAAC;QAED,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,CAAC;IACf,CAAC;IAED,kCAAkC;IAClC,MAAM,IAAI,KAAK,CACb,6CAA6C,aAAa,eAAe;QACzE,cAAc,UAAU,mBAAmB,aAAa,GAAG,CAAC,IAAI;QAChE,yDAAyD,CAC1D,CAAC;AACJ,CAAC;AAED,4DAA4D;AAC5D,SAAS,oBAAoB,CAAC,gBAAwB,EAAE,UAAkB;IACxE,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IACtE,MAAM,cAAc,GAAG,GAAG,cAAc,GAAG,CAAC;IAC5C,MAAM,kBAAkB,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,CAAC;IACtF,OAAO,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC;AAC9D,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,gBAAwB,EAAE,QAAgB;IACrE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAE5D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,QAAQ,QAAQ,IAAI,EAAE,GAAG,CAAC,CAAC;QAExD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,0CAA0C;YAC1C,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,qDAAqD;YACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAC/C,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC5D,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBACnD,6EAA6E;oBAC7E,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBACtD,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,QAAQ,EAAE,CAAC;wBAC7C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,QAAQ,GAAG,CAAC;wBAC9C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,QAAQ,EAAE,CAAC;wBAC9C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,QAAQ,GAAG,CAAC,EAAE,CAAC;wBACpD,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,wBAAwB;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,qDAAqD;IACvD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,+BAA+B,CAC7C,UAAkB,EAClB,SAAiB,EACjB,WAAmB,EACnB,UAAiC,EAAE;IAEnC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC;IAC/C,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;IAEpD,yFAAyF;IACzF,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAE3D,yDAAyD;IACzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,aAAa,GAAG,UAAU,CAAC;IAC/B,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,OAAO,UAAU,GAAG,aAAa,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QACrE,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;QAEtE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;QAE7D,MAAM,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACnD,MAAM,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAEnD,wDAAwD;QACxD,2EAA2E;QAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;QAC5D,MAAM,qBAAqB,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;QAChF,MAAM,qBAAqB,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;QAEhF,wDAAwD;QACxD,MAAM,WAAW,GAAG,mBAAmB,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;QAEzE,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,IAAI,CAAC,qBAAqB,IAAI,CAAC,qBAAqB,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3G,uBAAuB;YACvB,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;gBACjC,6DAA6D;gBAC7D,MAAM,UAAU,GAAG,oBAAoB,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;gBACtE,MAAM,CAAC,IAAI,CACT,oCAAoC,WAAW,IAAI,UAAU,WAAW;oBACxE,YAAY,aAAa,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAChE,CAAC;YACJ,CAAC;YACD,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,CAAC;IACf,CAAC;IAED,kCAAkC;IAClC,MAAM,IAAI,KAAK,CACb,6CAA6C,aAAa,cAAc,CACzE,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAc,EACd,SAAiB,EACjB,WAAmB;IAEnB,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAE3D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACzH,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAC9D,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;IAE/D,MAAM,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC;IAC9E,MAAM,cAAc,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC;IAE9E,wDAAwD;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC5D,MAAM,qBAAqB,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IAChF,MAAM,qBAAqB,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IAChF,MAAM,aAAa,GAAG,qBAAqB,IAAI,qBAAqB,CAAC;IAErE,MAAM,WAAW,GAAG,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAElE,OAAO;QACL,cAAc;QACd,cAAc;QACd,aAAa;QACb,WAAW;QACX,YAAY,EAAE,cAAc,IAAI,cAAc,IAAI,aAAa,IAAI,WAAW;KAC/E,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,qBAAqB,CACnC,gBAAwB,EACxB,UAAiC,EAAE;IAEnC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC;IAE/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,gBAAgB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1E,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBAAE,SAAS;YAEnC,wCAAwC;YACxC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5D,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC3C,CAAC;YAED,uBAAuB;YACvB,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5D,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC3C,CAAC;YAED,gEAAgE;YAChE,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5D,IAAI,CAAC;oBACH,MAAM,cAAc,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC5E,KAAK,MAAM,YAAY,IAAI,cAAc,EAAE,CAAC;wBAC1C,IAAI,YAAY,CAAC,WAAW,EAAE,IAAI,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC1E,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;wBACzE,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,0CAA0C;gBAC5C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,mCAAmC;IACnC,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IACnC,OAAO,KAAK,GAAG,CAAC,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,UAAkB,EAAE,OAAoB;IAClE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACzC,sDAAsD;QACtD,MAAM,SAAS,GAAG,iBAAiB,CAAC;QAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACpC,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,gBAAwB;IACjE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,gBAAgB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAE1E,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBAAE,SAAS;YAEnC,sBAAsB;YACtB,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;gBACrE,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,OAAO,IAAI,CAAC;YACvC,CAAC;YAED,uBAAuB;YACvB,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC9B,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;gBACrE,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,OAAO,IAAI,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uCAAuC;IACzC,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"feature-id-collision.js","sourceRoot":"","sources":["../../../src/utils/feature-id-collision.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * LLM JSON Extractor - Robust JSON parsing from LLM responses
3
+ *
4
+ * Handles common LLM output patterns:
5
+ * - "Based on the analysis, here is the JSON: {...}"
6
+ * - "```json\n{...}\n```"
7
+ * - "Here's what I found:\n{...}"
8
+ * - Pure JSON responses
9
+ *
10
+ * Features:
11
+ * - 4-level extraction strategy (pure -> code blocks -> regex -> array)
12
+ * - Input sanitization (BOM, trailing commas)
13
+ * - Schema-aware correction prompts
14
+ * - Required field validation
15
+ * - Retry-with-correction prompting
16
+ */
17
+ import { Logger } from './logger.js';
18
+ /**
19
+ * Result of JSON extraction attempt
20
+ */
21
+ export interface ExtractionResult<T = unknown> {
22
+ success: boolean;
23
+ data: T | null;
24
+ rawResponse: string;
25
+ extractedJson: string | null;
26
+ error: string | null;
27
+ /** How the JSON was extracted */
28
+ extractionMethod: 'pure' | 'code-block' | 'regex' | 'failed';
29
+ }
30
+ /**
31
+ * Options for JSON extraction
32
+ */
33
+ export interface ExtractionOptions {
34
+ /** Required fields to validate in the parsed JSON */
35
+ requiredFields?: string[];
36
+ /** Schema for correction prompts (recommended for retry flows) */
37
+ schema?: Record<string, unknown>;
38
+ /** Logger instance */
39
+ logger?: Logger;
40
+ }
41
+ /**
42
+ * Extract JSON from an LLM response that may contain prose
43
+ *
44
+ * Tries multiple extraction strategies in order:
45
+ * 1. Direct parse (pure JSON)
46
+ * 2. Remove markdown code blocks
47
+ * 3. Find JSON object via regex (handles prose around JSON)
48
+ * 4. Find JSON array via regex
49
+ */
50
+ export declare function extractJson<T = unknown>(response: string, options?: ExtractionOptions): ExtractionResult<T>;
51
+ /**
52
+ * Generate a correction prompt for retry after failed JSON extraction
53
+ *
54
+ * @param originalPrompt - The original prompt that was sent
55
+ * @param failedResponse - The failed response from the LLM
56
+ * @param schema - Optional schema to show expected structure (recommended)
57
+ */
58
+ export declare function generateCorrectionPrompt(originalPrompt: string, failedResponse: string, schema?: Record<string, unknown>): string;
59
+ /**
60
+ * Extract required field names from a JSON schema object
61
+ *
62
+ * Handles common schema patterns:
63
+ * - Simple objects: extracts top-level keys
64
+ * - Objects with "type" descriptors: extracts keys
65
+ *
66
+ * @param schema - The schema object passed to analyzeStructured (any object type)
67
+ * @returns Array of required field names
68
+ */
69
+ export declare function extractRequiredFieldsFromSchema(schema: unknown): string[];
70
+ /**
71
+ * Build a prompt that strongly encourages JSON-only output
72
+ *
73
+ * Uses multiple techniques:
74
+ * 1. Leading instruction (most important position)
75
+ * 2. Schema definition
76
+ * 3. Trailing reminder
77
+ */
78
+ export declare function buildJsonPrompt(context: string, schema: Record<string, string>, instruction: string): string;
79
+ /**
80
+ * Retry wrapper that attempts extraction with correction prompts
81
+ *
82
+ * Uses schema-aware correction prompts for better retry success.
83
+ */
84
+ export declare function extractJsonWithRetry<T = unknown>(sendPrompt: (prompt: string) => Promise<string>, originalPrompt: string, options?: ExtractionOptions & {
85
+ maxRetries?: number;
86
+ }): Promise<ExtractionResult<T>>;
87
+ /**
88
+ * Create a structured output analyzer with built-in retry
89
+ *
90
+ * This is the recommended way to get structured JSON from LLMs.
91
+ * Combines prompt building, extraction, validation, and retry.
92
+ *
93
+ * @param analyze - Function that sends prompt to LLM and returns response
94
+ * @param schema - Expected schema (used for prompt, validation, and correction)
95
+ * @param options - Configuration options
96
+ */
97
+ export declare function analyzeStructuredWithRetry<T = unknown>(analyze: (prompt: string) => Promise<string>, prompt: string, schema: Record<string, unknown>, options?: {
98
+ maxRetries?: number;
99
+ logger?: Logger;
100
+ }): Promise<{
101
+ success: boolean;
102
+ data: T | null;
103
+ error: string | null;
104
+ }>;
105
+ //# sourceMappingURL=llm-json-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-json-extractor.d.ts","sourceRoot":"","sources":["../../../src/utils/llm-json-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAiB,MAAM,aAAa,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,OAAO;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,iCAAiC;IACjC,gBAAgB,EAAE,MAAM,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;CAC9D;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,GAAG,OAAO,EACrC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB,CAAC,CAAC,CAAC,CAkFrB;AA6HD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CA4BR;AAED;;;;;;;;;GASG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,OAAO,GACd,MAAM,EAAE,CAQV;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,WAAW,EAAE,MAAM,GAClB,MAAM,CAmBR;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,GAAG,OAAO,EACpD,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAC/C,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,iBAAiB,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACxD,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CA6B9B;AAED;;;;;;;;;GASG;AACH,wBAAsB,0BAA0B,CAAC,CAAC,GAAG,OAAO,EAC1D,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAC5C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACZ,GACL,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAmBrE"}
@@ -0,0 +1,336 @@
1
+ /**
2
+ * LLM JSON Extractor - Robust JSON parsing from LLM responses
3
+ *
4
+ * Handles common LLM output patterns:
5
+ * - "Based on the analysis, here is the JSON: {...}"
6
+ * - "```json\n{...}\n```"
7
+ * - "Here's what I found:\n{...}"
8
+ * - Pure JSON responses
9
+ *
10
+ * Features:
11
+ * - 4-level extraction strategy (pure -> code blocks -> regex -> array)
12
+ * - Input sanitization (BOM, trailing commas)
13
+ * - Schema-aware correction prompts
14
+ * - Required field validation
15
+ * - Retry-with-correction prompting
16
+ */
17
+ import { consoleLogger } from './logger.js';
18
+ /**
19
+ * Extract JSON from an LLM response that may contain prose
20
+ *
21
+ * Tries multiple extraction strategies in order:
22
+ * 1. Direct parse (pure JSON)
23
+ * 2. Remove markdown code blocks
24
+ * 3. Find JSON object via regex (handles prose around JSON)
25
+ * 4. Find JSON array via regex
26
+ */
27
+ export function extractJson(response, options = {}) {
28
+ const logger = options.logger ?? consoleLogger;
29
+ const result = {
30
+ success: false,
31
+ data: null,
32
+ rawResponse: response,
33
+ extractedJson: null,
34
+ error: null,
35
+ extractionMethod: 'failed'
36
+ };
37
+ if (!response || typeof response !== 'string') {
38
+ result.error = 'Empty or invalid response';
39
+ return result;
40
+ }
41
+ // Sanitize input: strip BOM and normalize
42
+ const sanitized = sanitizeInput(response);
43
+ const trimmed = sanitized.trim();
44
+ // Strategy 1: Direct parse (pure JSON) - with trailing comma fallback
45
+ const directParsed = tryParseJson(trimmed);
46
+ if (directParsed !== null && validateParsedJson(directParsed, options.requiredFields)) {
47
+ result.success = true;
48
+ result.data = directParsed;
49
+ result.extractedJson = trimmed;
50
+ result.extractionMethod = 'pure';
51
+ return result;
52
+ }
53
+ // Strategy 2: Remove markdown code blocks
54
+ const codeBlockPatterns = [
55
+ /^```(?:json)?\s*\n?([\s\S]*?)\n?```$/m, // Full code block
56
+ /```(?:json)?\s*\n?([\s\S]*?)\n?```/, // Code block anywhere
57
+ ];
58
+ for (const pattern of codeBlockPatterns) {
59
+ const match = trimmed.match(pattern);
60
+ if (match?.[1]) {
61
+ const codeBlockContent = match[1].trim();
62
+ const parsed = tryParseJson(codeBlockContent);
63
+ if (parsed !== null && validateParsedJson(parsed, options.requiredFields)) {
64
+ result.success = true;
65
+ result.data = parsed;
66
+ result.extractedJson = codeBlockContent;
67
+ result.extractionMethod = 'code-block';
68
+ return result;
69
+ }
70
+ }
71
+ }
72
+ // Strategy 3: Find JSON object via regex (handles "Based on... here is: {...}")
73
+ // Find the outermost balanced braces
74
+ const jsonObject = findBalancedJson(trimmed, '{', '}');
75
+ if (jsonObject) {
76
+ const parsed = tryParseJson(jsonObject);
77
+ if (parsed !== null && validateParsedJson(parsed, options.requiredFields)) {
78
+ result.success = true;
79
+ result.data = parsed;
80
+ result.extractedJson = jsonObject;
81
+ result.extractionMethod = 'regex';
82
+ return result;
83
+ }
84
+ }
85
+ // Strategy 4: Find JSON array
86
+ const jsonArray = findBalancedJson(trimmed, '[', ']');
87
+ if (jsonArray) {
88
+ const parsed = tryParseJson(jsonArray);
89
+ if (parsed !== null && validateParsedJson(parsed, options.requiredFields)) {
90
+ result.success = true;
91
+ result.data = parsed;
92
+ result.extractedJson = jsonArray;
93
+ result.extractionMethod = 'regex';
94
+ return result;
95
+ }
96
+ }
97
+ // All strategies failed
98
+ result.error = generateErrorMessage(trimmed);
99
+ logger.debug?.(`JSON extraction failed: ${result.error}`);
100
+ return result;
101
+ }
102
+ /**
103
+ * Find balanced JSON by matching opening/closing brackets
104
+ * Handles nested structures and strings with escaped characters
105
+ */
106
+ function findBalancedJson(text, openChar, closeChar) {
107
+ const startIdx = text.indexOf(openChar);
108
+ if (startIdx === -1)
109
+ return null;
110
+ let depth = 0;
111
+ let inString = false;
112
+ let escapeNext = false;
113
+ for (let i = startIdx; i < text.length; i++) {
114
+ const char = text[i];
115
+ if (escapeNext) {
116
+ escapeNext = false;
117
+ continue;
118
+ }
119
+ if (char === '\\' && inString) {
120
+ escapeNext = true;
121
+ continue;
122
+ }
123
+ if (char === '"') {
124
+ inString = !inString;
125
+ continue;
126
+ }
127
+ if (!inString) {
128
+ if (char === openChar) {
129
+ depth++;
130
+ }
131
+ else if (char === closeChar) {
132
+ depth--;
133
+ if (depth === 0) {
134
+ return text.slice(startIdx, i + 1);
135
+ }
136
+ }
137
+ }
138
+ }
139
+ return null;
140
+ }
141
+ /**
142
+ * Validate parsed JSON has required fields
143
+ */
144
+ function validateParsedJson(parsed, requiredFields) {
145
+ if (!parsed || typeof parsed !== 'object') {
146
+ return false;
147
+ }
148
+ if (!requiredFields || requiredFields.length === 0) {
149
+ return true;
150
+ }
151
+ const obj = parsed;
152
+ return requiredFields.every(field => field in obj);
153
+ }
154
+ /**
155
+ * Sanitize LLM response input before JSON extraction
156
+ *
157
+ * Handles common issues:
158
+ * - UTF-8 BOM character
159
+ * - Trailing commas in arrays/objects (common LLM mistake)
160
+ */
161
+ function sanitizeInput(input) {
162
+ // Strip UTF-8 BOM if present
163
+ let sanitized = input.replace(/^\uFEFF/, '');
164
+ return sanitized;
165
+ }
166
+ /**
167
+ * Clean trailing commas from JSON string
168
+ * Called after extraction but before parsing
169
+ */
170
+ function cleanTrailingCommas(json) {
171
+ // Remove trailing commas before ] or }
172
+ // Be careful not to modify strings - only do this on extracted JSON
173
+ return json.replace(/,\s*([}\]])/g, '$1');
174
+ }
175
+ /**
176
+ * Try to parse JSON with trailing comma cleanup as fallback
177
+ */
178
+ function tryParseJson(json) {
179
+ try {
180
+ return JSON.parse(json);
181
+ }
182
+ catch {
183
+ // Try with trailing comma cleanup
184
+ try {
185
+ const cleaned = cleanTrailingCommas(json);
186
+ return JSON.parse(cleaned);
187
+ }
188
+ catch {
189
+ return null;
190
+ }
191
+ }
192
+ }
193
+ /**
194
+ * Generate helpful error message for failed extraction
195
+ */
196
+ function generateErrorMessage(response) {
197
+ const preview = response.slice(0, 100).replace(/\n/g, ' ');
198
+ if (response.toLowerCase().startsWith('based on')) {
199
+ return `Model returned prose instead of JSON. Response starts with: "${preview}..."`;
200
+ }
201
+ if (response.toLowerCase().includes('i apologize') || response.toLowerCase().includes('sorry')) {
202
+ return `Model returned an apology/error message instead of JSON. Response starts with: "${preview}..."`;
203
+ }
204
+ if (response.includes('{')) {
205
+ return `Found JSON-like content but parsing failed. Response starts with: "${preview}..."`;
206
+ }
207
+ return `No valid JSON found in response. Response starts with: "${preview}..."`;
208
+ }
209
+ /**
210
+ * Generate a correction prompt for retry after failed JSON extraction
211
+ *
212
+ * @param originalPrompt - The original prompt that was sent
213
+ * @param failedResponse - The failed response from the LLM
214
+ * @param schema - Optional schema to show expected structure (recommended)
215
+ */
216
+ export function generateCorrectionPrompt(originalPrompt, failedResponse, schema) {
217
+ // Build schema example - either from provided schema or use default
218
+ let schemaExample;
219
+ if (schema && Object.keys(schema).length > 0) {
220
+ // Use provided schema
221
+ schemaExample = JSON.stringify(schema, null, 2);
222
+ }
223
+ else {
224
+ // Fallback to generic example (backward compatible)
225
+ schemaExample = `{
226
+ "purpose": "...",
227
+ "keyConcepts": [...],
228
+ "dependencies": [...],
229
+ "complexity": "low|medium|high",
230
+ "suggestedDocs": [...],
231
+ "architecturalNotes": "..."
232
+ }`;
233
+ }
234
+ return `Your previous response was not valid JSON. I need ONLY a JSON object, with no explanations or prose.
235
+
236
+ INCORRECT (what you sent):
237
+ ${failedResponse.slice(0, 200)}${failedResponse.length > 200 ? '...' : ''}
238
+
239
+ CORRECT format - respond with ONLY this JSON structure, nothing else before or after:
240
+ ${schemaExample}
241
+
242
+ Now provide ONLY the JSON for: ${originalPrompt.slice(0, 500)}`;
243
+ }
244
+ /**
245
+ * Extract required field names from a JSON schema object
246
+ *
247
+ * Handles common schema patterns:
248
+ * - Simple objects: extracts top-level keys
249
+ * - Objects with "type" descriptors: extracts keys
250
+ *
251
+ * @param schema - The schema object passed to analyzeStructured (any object type)
252
+ * @returns Array of required field names
253
+ */
254
+ export function extractRequiredFieldsFromSchema(schema) {
255
+ if (!schema || typeof schema !== 'object') {
256
+ return [];
257
+ }
258
+ // For simple schemas like { purpose: "...", complexity: "..." }
259
+ // Return all top-level keys
260
+ return Object.keys(schema);
261
+ }
262
+ /**
263
+ * Build a prompt that strongly encourages JSON-only output
264
+ *
265
+ * Uses multiple techniques:
266
+ * 1. Leading instruction (most important position)
267
+ * 2. Schema definition
268
+ * 3. Trailing reminder
269
+ */
270
+ export function buildJsonPrompt(context, schema, instruction) {
271
+ const schemaExample = JSON.stringify(Object.fromEntries(Object.entries(schema).map(([k, v]) => [k, v])), null, 2);
272
+ return `IMPORTANT: Respond with ONLY valid JSON. No explanations, no markdown, no text before or after.
273
+
274
+ ${instruction}
275
+
276
+ ${context}
277
+
278
+ Required JSON schema:
279
+ ${schemaExample}
280
+
281
+ Remember: Output ONLY the JSON object. Any text outside the JSON will cause errors.`;
282
+ }
283
+ /**
284
+ * Retry wrapper that attempts extraction with correction prompts
285
+ *
286
+ * Uses schema-aware correction prompts for better retry success.
287
+ */
288
+ export async function extractJsonWithRetry(sendPrompt, originalPrompt, options = {}) {
289
+ const maxRetries = options.maxRetries ?? 2;
290
+ const logger = options.logger ?? consoleLogger;
291
+ let lastResult;
292
+ let currentPrompt = originalPrompt;
293
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
294
+ if (attempt > 0) {
295
+ logger.debug?.(`JSON extraction retry ${attempt}/${maxRetries}`);
296
+ }
297
+ const response = await sendPrompt(currentPrompt);
298
+ lastResult = extractJson(response, options);
299
+ if (lastResult.success) {
300
+ if (attempt > 0) {
301
+ logger.debug?.(`JSON extraction succeeded on retry ${attempt}`);
302
+ }
303
+ return lastResult;
304
+ }
305
+ // Generate schema-aware correction prompt for next attempt
306
+ if (attempt < maxRetries) {
307
+ currentPrompt = generateCorrectionPrompt(originalPrompt, response, options.schema);
308
+ }
309
+ }
310
+ return lastResult;
311
+ }
312
+ /**
313
+ * Create a structured output analyzer with built-in retry
314
+ *
315
+ * This is the recommended way to get structured JSON from LLMs.
316
+ * Combines prompt building, extraction, validation, and retry.
317
+ *
318
+ * @param analyze - Function that sends prompt to LLM and returns response
319
+ * @param schema - Expected schema (used for prompt, validation, and correction)
320
+ * @param options - Configuration options
321
+ */
322
+ export async function analyzeStructuredWithRetry(analyze, prompt, schema, options = {}) {
323
+ const requiredFields = extractRequiredFieldsFromSchema(schema);
324
+ const result = await extractJsonWithRetry(analyze, prompt, {
325
+ requiredFields,
326
+ schema,
327
+ maxRetries: options.maxRetries ?? 2,
328
+ logger: options.logger
329
+ });
330
+ return {
331
+ success: result.success,
332
+ data: result.data,
333
+ error: result.error
334
+ };
335
+ }
336
+ //# sourceMappingURL=llm-json-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-json-extractor.js","sourceRoot":"","sources":["../../../src/utils/llm-json-extractor.ts"],"names":[],"mappings":"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"}