specforge-mcp 0.1.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.
Files changed (3175) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +257 -0
  3. package/dist/config/advanced-testing-tools.json +210 -0
  4. package/dist/config/agent-capabilities-catalog.json +30 -0
  5. package/dist/config/agent-platforms.json +268 -0
  6. package/dist/config/agent-spec-catalog.json +273 -0
  7. package/dist/config/agile-processes.json +111 -0
  8. package/dist/config/analytics-providers.json +171 -0
  9. package/dist/config/architecture-patterns-modern.json +118 -0
  10. package/dist/config/architecture-patterns.json +324 -0
  11. package/dist/config/automation-templates.json +29 -0
  12. package/dist/config/build-tools-catalog.json +250 -0
  13. package/dist/config/concurrency-models.json +142 -0
  14. package/dist/config/config-health-schemas.json +88 -0
  15. package/dist/config/db-engines.json +99 -0
  16. package/dist/config/deploy-platforms.json +94 -0
  17. package/dist/config/deprecation-patterns/browser.json +42 -0
  18. package/dist/config/deprecation-patterns/dotnet.json +62 -0
  19. package/dist/config/deprecation-patterns/go.json +82 -0
  20. package/dist/config/deprecation-patterns/java.json +82 -0
  21. package/dist/config/deprecation-patterns/nodejs.json +62 -0
  22. package/dist/config/deprecation-patterns/python.json +42 -0
  23. package/dist/config/deprecation-patterns/rust.json +62 -0
  24. package/dist/config/dev-lifecycle-catalog.json +619 -0
  25. package/dist/config/docs-registry.json +94 -0
  26. package/dist/config/edge-db-catalog.json +89 -0
  27. package/dist/config/env-patterns.json +164 -0
  28. package/dist/config/event-brokers.json +63 -0
  29. package/dist/config/hypermedia-tooling.json +189 -0
  30. package/dist/config/idp-tools.json +173 -0
  31. package/dist/config/linter-registry.json +451 -0
  32. package/dist/config/llm-guardrails-tooling.json +122 -0
  33. package/dist/config/local-first-tools.json +122 -0
  34. package/dist/config/mcp-catalog.json +104 -0
  35. package/dist/config/middleware-patterns.json +126 -0
  36. package/dist/config/migration-policies-catalog.json +271 -0
  37. package/dist/config/otel-tooling.json +131 -0
  38. package/dist/config/paradigm-registry.json +380 -0
  39. package/dist/config/pii-patterns.json +231 -0
  40. package/dist/config/pm-platforms.json +49 -0
  41. package/dist/config/quality-principles.json +230 -0
  42. package/dist/config/react-nextjs-catalog.json +200 -0
  43. package/dist/config/resilience-patterns.json +130 -0
  44. package/dist/config/saas-registry.json +183 -0
  45. package/dist/config/security-patterns.json +282 -0
  46. package/dist/config/spec-templates.json +125 -0
  47. package/dist/config/stack-signatures.json +793 -0
  48. package/dist/config/supply-chain-tools.json +107 -0
  49. package/dist/config/ui-frameworks.json +335 -0
  50. package/dist/config/ux-principles.json +190 -0
  51. package/dist/config/validation-libraries.json +152 -0
  52. package/dist/config/workflow-conventions-catalog.json +71 -0
  53. package/dist/engine/advanced-testing/accessibility-checker.d.ts +11 -0
  54. package/dist/engine/advanced-testing/accessibility-checker.d.ts.map +1 -0
  55. package/dist/engine/advanced-testing/accessibility-checker.js +171 -0
  56. package/dist/engine/advanced-testing/accessibility-checker.js.map +1 -0
  57. package/dist/engine/advanced-testing/chaos-generator.d.ts +16 -0
  58. package/dist/engine/advanced-testing/chaos-generator.d.ts.map +1 -0
  59. package/dist/engine/advanced-testing/chaos-generator.js +143 -0
  60. package/dist/engine/advanced-testing/chaos-generator.js.map +1 -0
  61. package/dist/engine/advanced-testing/index.d.ts +6 -0
  62. package/dist/engine/advanced-testing/index.d.ts.map +1 -0
  63. package/dist/engine/advanced-testing/index.js +8 -0
  64. package/dist/engine/advanced-testing/index.js.map +1 -0
  65. package/dist/engine/advanced-testing/mutation-advisor.d.ts +14 -0
  66. package/dist/engine/advanced-testing/mutation-advisor.d.ts.map +1 -0
  67. package/dist/engine/advanced-testing/mutation-advisor.js +226 -0
  68. package/dist/engine/advanced-testing/mutation-advisor.js.map +1 -0
  69. package/dist/engine/advanced-testing/property-based.d.ts +14 -0
  70. package/dist/engine/advanced-testing/property-based.d.ts.map +1 -0
  71. package/dist/engine/advanced-testing/property-based.js +192 -0
  72. package/dist/engine/advanced-testing/property-based.js.map +1 -0
  73. package/dist/engine/advanced-testing/test-data-advisor.d.ts +15 -0
  74. package/dist/engine/advanced-testing/test-data-advisor.d.ts.map +1 -0
  75. package/dist/engine/advanced-testing/test-data-advisor.js +163 -0
  76. package/dist/engine/advanced-testing/test-data-advisor.js.map +1 -0
  77. package/dist/engine/agent-generator/builders.d.ts +8 -0
  78. package/dist/engine/agent-generator/builders.d.ts.map +1 -0
  79. package/dist/engine/agent-generator/builders.js +141 -0
  80. package/dist/engine/agent-generator/builders.js.map +1 -0
  81. package/dist/engine/agent-generator/framework-files-helpers.d.ts +10 -0
  82. package/dist/engine/agent-generator/framework-files-helpers.d.ts.map +1 -0
  83. package/dist/engine/agent-generator/framework-files-helpers.js +54 -0
  84. package/dist/engine/agent-generator/framework-files-helpers.js.map +1 -0
  85. package/dist/engine/agent-generator/framework-files.d.ts +5 -0
  86. package/dist/engine/agent-generator/framework-files.d.ts.map +1 -0
  87. package/dist/engine/agent-generator/framework-files.js +259 -0
  88. package/dist/engine/agent-generator/framework-files.js.map +1 -0
  89. package/dist/engine/agent-generator.d.ts +18 -0
  90. package/dist/engine/agent-generator.d.ts.map +1 -0
  91. package/dist/engine/agent-generator.js +81 -0
  92. package/dist/engine/agent-generator.js.map +1 -0
  93. package/dist/engine/agent-generator.test.d.ts +2 -0
  94. package/dist/engine/agent-generator.test.d.ts.map +1 -0
  95. package/dist/engine/agent-generator.test.js +556 -0
  96. package/dist/engine/agent-generator.test.js.map +1 -0
  97. package/dist/engine/agent-spec-generator/catalog-loader.d.ts +3 -0
  98. package/dist/engine/agent-spec-generator/catalog-loader.d.ts.map +1 -0
  99. package/dist/engine/agent-spec-generator/catalog-loader.js +28 -0
  100. package/dist/engine/agent-spec-generator/catalog-loader.js.map +1 -0
  101. package/dist/engine/agent-spec-generator/constitution-builder.d.ts +7 -0
  102. package/dist/engine/agent-spec-generator/constitution-builder.d.ts.map +1 -0
  103. package/dist/engine/agent-spec-generator/constitution-builder.js +39 -0
  104. package/dist/engine/agent-spec-generator/constitution-builder.js.map +1 -0
  105. package/dist/engine/agent-spec-generator/contract-builder.d.ts +11 -0
  106. package/dist/engine/agent-spec-generator/contract-builder.d.ts.map +1 -0
  107. package/dist/engine/agent-spec-generator/contract-builder.js +78 -0
  108. package/dist/engine/agent-spec-generator/contract-builder.js.map +1 -0
  109. package/dist/engine/agent-spec-generator/execution-phases.d.ts +7 -0
  110. package/dist/engine/agent-spec-generator/execution-phases.d.ts.map +1 -0
  111. package/dist/engine/agent-spec-generator/execution-phases.js +119 -0
  112. package/dist/engine/agent-spec-generator/execution-phases.js.map +1 -0
  113. package/dist/engine/agent-spec-generator/project-detector.d.ts +22 -0
  114. package/dist/engine/agent-spec-generator/project-detector.d.ts.map +1 -0
  115. package/dist/engine/agent-spec-generator/project-detector.js +79 -0
  116. package/dist/engine/agent-spec-generator/project-detector.js.map +1 -0
  117. package/dist/engine/agent-spec-generator/schema-builder.d.ts +6 -0
  118. package/dist/engine/agent-spec-generator/schema-builder.d.ts.map +1 -0
  119. package/dist/engine/agent-spec-generator/schema-builder.js +46 -0
  120. package/dist/engine/agent-spec-generator/schema-builder.js.map +1 -0
  121. package/dist/engine/agent-spec-generator/schema-formatter.d.ts +5 -0
  122. package/dist/engine/agent-spec-generator/schema-formatter.d.ts.map +1 -0
  123. package/dist/engine/agent-spec-generator/schema-formatter.js +26 -0
  124. package/dist/engine/agent-spec-generator/schema-formatter.js.map +1 -0
  125. package/dist/engine/agent-spec-generator/tooling-recommendations.d.ts +7 -0
  126. package/dist/engine/agent-spec-generator/tooling-recommendations.d.ts.map +1 -0
  127. package/dist/engine/agent-spec-generator/tooling-recommendations.js +102 -0
  128. package/dist/engine/agent-spec-generator/tooling-recommendations.js.map +1 -0
  129. package/dist/engine/agent-spec-generator.d.ts +9 -0
  130. package/dist/engine/agent-spec-generator.d.ts.map +1 -0
  131. package/dist/engine/agent-spec-generator.js +11 -0
  132. package/dist/engine/agent-spec-generator.js.map +1 -0
  133. package/dist/engine/agile-config-builder.d.ts +25 -0
  134. package/dist/engine/agile-config-builder.d.ts.map +1 -0
  135. package/dist/engine/agile-config-builder.js +285 -0
  136. package/dist/engine/agile-config-builder.js.map +1 -0
  137. package/dist/engine/ambiguity-detector.d.ts +17 -0
  138. package/dist/engine/ambiguity-detector.d.ts.map +1 -0
  139. package/dist/engine/ambiguity-detector.js +241 -0
  140. package/dist/engine/ambiguity-detector.js.map +1 -0
  141. package/dist/engine/analytics-detector/events.d.ts +29 -0
  142. package/dist/engine/analytics-detector/events.d.ts.map +1 -0
  143. package/dist/engine/analytics-detector/events.js +237 -0
  144. package/dist/engine/analytics-detector/events.js.map +1 -0
  145. package/dist/engine/analytics-detector.d.ts +28 -0
  146. package/dist/engine/analytics-detector.d.ts.map +1 -0
  147. package/dist/engine/analytics-detector.js +243 -0
  148. package/dist/engine/analytics-detector.js.map +1 -0
  149. package/dist/engine/analyzer-db.d.ts +9 -0
  150. package/dist/engine/analyzer-db.d.ts.map +1 -0
  151. package/dist/engine/analyzer-db.js +137 -0
  152. package/dist/engine/analyzer-db.js.map +1 -0
  153. package/dist/engine/analyzer-detectors.d.ts +7 -0
  154. package/dist/engine/analyzer-detectors.d.ts.map +1 -0
  155. package/dist/engine/analyzer-detectors.js +232 -0
  156. package/dist/engine/analyzer-detectors.js.map +1 -0
  157. package/dist/engine/analyzer-env-scanner/env-example.d.ts +6 -0
  158. package/dist/engine/analyzer-env-scanner/env-example.d.ts.map +1 -0
  159. package/dist/engine/analyzer-env-scanner/env-example.js +212 -0
  160. package/dist/engine/analyzer-env-scanner/env-example.js.map +1 -0
  161. package/dist/engine/analyzer-env-scanner/scanner.d.ts +8 -0
  162. package/dist/engine/analyzer-env-scanner/scanner.d.ts.map +1 -0
  163. package/dist/engine/analyzer-env-scanner/scanner.js +117 -0
  164. package/dist/engine/analyzer-env-scanner/scanner.js.map +1 -0
  165. package/dist/engine/analyzer-env-scanner.d.ts +3 -0
  166. package/dist/engine/analyzer-env-scanner.d.ts.map +1 -0
  167. package/dist/engine/analyzer-env-scanner.js +5 -0
  168. package/dist/engine/analyzer-env-scanner.js.map +1 -0
  169. package/dist/engine/analyzer-env.d.ts +6 -0
  170. package/dist/engine/analyzer-env.d.ts.map +1 -0
  171. package/dist/engine/analyzer-env.js +174 -0
  172. package/dist/engine/analyzer-env.js.map +1 -0
  173. package/dist/engine/analyzer-linting/claude-md-extractor.d.ts +8 -0
  174. package/dist/engine/analyzer-linting/claude-md-extractor.d.ts.map +1 -0
  175. package/dist/engine/analyzer-linting/claude-md-extractor.js +75 -0
  176. package/dist/engine/analyzer-linting/claude-md-extractor.js.map +1 -0
  177. package/dist/engine/analyzer-linting/linter-checks.d.ts +3 -0
  178. package/dist/engine/analyzer-linting/linter-checks.d.ts.map +1 -0
  179. package/dist/engine/analyzer-linting/linter-checks.js +214 -0
  180. package/dist/engine/analyzer-linting/linter-checks.js.map +1 -0
  181. package/dist/engine/analyzer-linting/registry.d.ts +9 -0
  182. package/dist/engine/analyzer-linting/registry.d.ts.map +1 -0
  183. package/dist/engine/analyzer-linting/registry.js +73 -0
  184. package/dist/engine/analyzer-linting/registry.js.map +1 -0
  185. package/dist/engine/analyzer-linting.d.ts +4 -0
  186. package/dist/engine/analyzer-linting.d.ts.map +1 -0
  187. package/dist/engine/analyzer-linting.js +6 -0
  188. package/dist/engine/analyzer-linting.js.map +1 -0
  189. package/dist/engine/analyzer.d.ts +19 -0
  190. package/dist/engine/analyzer.d.ts.map +1 -0
  191. package/dist/engine/analyzer.js +173 -0
  192. package/dist/engine/analyzer.js.map +1 -0
  193. package/dist/engine/analyzer.test.d.ts +2 -0
  194. package/dist/engine/analyzer.test.d.ts.map +1 -0
  195. package/dist/engine/analyzer.test.js +1461 -0
  196. package/dist/engine/analyzer.test.js.map +1 -0
  197. package/dist/engine/architecture-detector.d.ts +26 -0
  198. package/dist/engine/architecture-detector.d.ts.map +1 -0
  199. package/dist/engine/architecture-detector.js +216 -0
  200. package/dist/engine/architecture-detector.js.map +1 -0
  201. package/dist/engine/architecture-pattern-detector/actor-temporal-detector.d.ts +6 -0
  202. package/dist/engine/architecture-pattern-detector/actor-temporal-detector.d.ts.map +1 -0
  203. package/dist/engine/architecture-pattern-detector/actor-temporal-detector.js +160 -0
  204. package/dist/engine/architecture-pattern-detector/actor-temporal-detector.js.map +1 -0
  205. package/dist/engine/architecture-pattern-detector/cell-data-bff-detector.d.ts +8 -0
  206. package/dist/engine/architecture-pattern-detector/cell-data-bff-detector.d.ts.map +1 -0
  207. package/dist/engine/architecture-pattern-detector/cell-data-bff-detector.js +164 -0
  208. package/dist/engine/architecture-pattern-detector/cell-data-bff-detector.js.map +1 -0
  209. package/dist/engine/architecture-pattern-detector/ddd-detector.d.ts +4 -0
  210. package/dist/engine/architecture-pattern-detector/ddd-detector.d.ts.map +1 -0
  211. package/dist/engine/architecture-pattern-detector/ddd-detector.js +94 -0
  212. package/dist/engine/architecture-pattern-detector/ddd-detector.js.map +1 -0
  213. package/dist/engine/architecture-pattern-detector/monolith-composable-detector.d.ts +6 -0
  214. package/dist/engine/architecture-pattern-detector/monolith-composable-detector.d.ts.map +1 -0
  215. package/dist/engine/architecture-pattern-detector/monolith-composable-detector.js +118 -0
  216. package/dist/engine/architecture-pattern-detector/monolith-composable-detector.js.map +1 -0
  217. package/dist/engine/architecture-pattern-detector.d.ts +11 -0
  218. package/dist/engine/architecture-pattern-detector.d.ts.map +1 -0
  219. package/dist/engine/architecture-pattern-detector.js +48 -0
  220. package/dist/engine/architecture-pattern-detector.js.map +1 -0
  221. package/dist/engine/auditor-architecture.d.ts +4 -0
  222. package/dist/engine/auditor-architecture.d.ts.map +1 -0
  223. package/dist/engine/auditor-architecture.js +132 -0
  224. package/dist/engine/auditor-architecture.js.map +1 -0
  225. package/dist/engine/auditor-claude-md.d.ts +11 -0
  226. package/dist/engine/auditor-claude-md.d.ts.map +1 -0
  227. package/dist/engine/auditor-claude-md.js +139 -0
  228. package/dist/engine/auditor-claude-md.js.map +1 -0
  229. package/dist/engine/auditor-code-quality.d.ts +6 -0
  230. package/dist/engine/auditor-code-quality.d.ts.map +1 -0
  231. package/dist/engine/auditor-code-quality.js +261 -0
  232. package/dist/engine/auditor-code-quality.js.map +1 -0
  233. package/dist/engine/auditor-scoring.d.ts +7 -0
  234. package/dist/engine/auditor-scoring.d.ts.map +1 -0
  235. package/dist/engine/auditor-scoring.js +76 -0
  236. package/dist/engine/auditor-scoring.js.map +1 -0
  237. package/dist/engine/auditor-security/electron-checks.d.ts +7 -0
  238. package/dist/engine/auditor-security/electron-checks.d.ts.map +1 -0
  239. package/dist/engine/auditor-security/electron-checks.js +83 -0
  240. package/dist/engine/auditor-security/electron-checks.js.map +1 -0
  241. package/dist/engine/auditor-security/error-checks.d.ts +11 -0
  242. package/dist/engine/auditor-security/error-checks.d.ts.map +1 -0
  243. package/dist/engine/auditor-security/error-checks.js +104 -0
  244. package/dist/engine/auditor-security/error-checks.js.map +1 -0
  245. package/dist/engine/auditor-security/performance-checks.d.ts +3 -0
  246. package/dist/engine/auditor-security/performance-checks.d.ts.map +1 -0
  247. package/dist/engine/auditor-security/performance-checks.js +58 -0
  248. package/dist/engine/auditor-security/performance-checks.js.map +1 -0
  249. package/dist/engine/auditor-security/security-checks.d.ts +8 -0
  250. package/dist/engine/auditor-security/security-checks.d.ts.map +1 -0
  251. package/dist/engine/auditor-security/security-checks.js +127 -0
  252. package/dist/engine/auditor-security/security-checks.js.map +1 -0
  253. package/dist/engine/auditor-security/testing-checks.d.ts +3 -0
  254. package/dist/engine/auditor-security/testing-checks.d.ts.map +1 -0
  255. package/dist/engine/auditor-security/testing-checks.js +22 -0
  256. package/dist/engine/auditor-security/testing-checks.js.map +1 -0
  257. package/dist/engine/auditor-security.d.ts +6 -0
  258. package/dist/engine/auditor-security.d.ts.map +1 -0
  259. package/dist/engine/auditor-security.js +9 -0
  260. package/dist/engine/auditor-security.js.map +1 -0
  261. package/dist/engine/auditor.d.ts +15 -0
  262. package/dist/engine/auditor.d.ts.map +1 -0
  263. package/dist/engine/auditor.js +204 -0
  264. package/dist/engine/auditor.js.map +1 -0
  265. package/dist/engine/auditor.test.d.ts +2 -0
  266. package/dist/engine/auditor.test.d.ts.map +1 -0
  267. package/dist/engine/auditor.test.js +2075 -0
  268. package/dist/engine/auditor.test.js.map +1 -0
  269. package/dist/engine/build-tool-detector.d.ts +8 -0
  270. package/dist/engine/build-tool-detector.d.ts.map +1 -0
  271. package/dist/engine/build-tool-detector.js +235 -0
  272. package/dist/engine/build-tool-detector.js.map +1 -0
  273. package/dist/engine/calibrator.d.ts +34 -0
  274. package/dist/engine/calibrator.d.ts.map +1 -0
  275. package/dist/engine/calibrator.js +139 -0
  276. package/dist/engine/calibrator.js.map +1 -0
  277. package/dist/engine/chain-executor.d.ts +16 -0
  278. package/dist/engine/chain-executor.d.ts.map +1 -0
  279. package/dist/engine/chain-executor.js +88 -0
  280. package/dist/engine/chain-executor.js.map +1 -0
  281. package/dist/engine/clarify/contradictions.d.ts +8 -0
  282. package/dist/engine/clarify/contradictions.d.ts.map +1 -0
  283. package/dist/engine/clarify/contradictions.js +85 -0
  284. package/dist/engine/clarify/contradictions.js.map +1 -0
  285. package/dist/engine/clarify/index.d.ts +3 -0
  286. package/dist/engine/clarify/index.d.ts.map +1 -0
  287. package/dist/engine/clarify/index.js +4 -0
  288. package/dist/engine/clarify/index.js.map +1 -0
  289. package/dist/engine/clarify/questions.d.ts +16 -0
  290. package/dist/engine/clarify/questions.d.ts.map +1 -0
  291. package/dist/engine/clarify/questions.js +125 -0
  292. package/dist/engine/clarify/questions.js.map +1 -0
  293. package/dist/engine/config-health/build-tool-checker.d.ts +8 -0
  294. package/dist/engine/config-health/build-tool-checker.d.ts.map +1 -0
  295. package/dist/engine/config-health/build-tool-checker.js +158 -0
  296. package/dist/engine/config-health/build-tool-checker.js.map +1 -0
  297. package/dist/engine/config-health/ci-checker.d.ts +5 -0
  298. package/dist/engine/config-health/ci-checker.d.ts.map +1 -0
  299. package/dist/engine/config-health/ci-checker.js +170 -0
  300. package/dist/engine/config-health/ci-checker.js.map +1 -0
  301. package/dist/engine/config-health/ci-commands-collector.d.ts +10 -0
  302. package/dist/engine/config-health/ci-commands-collector.d.ts.map +1 -0
  303. package/dist/engine/config-health/ci-commands-collector.js +135 -0
  304. package/dist/engine/config-health/ci-commands-collector.js.map +1 -0
  305. package/dist/engine/config-health/ci-version-checker.d.ts +3 -0
  306. package/dist/engine/config-health/ci-version-checker.d.ts.map +1 -0
  307. package/dist/engine/config-health/ci-version-checker.js +131 -0
  308. package/dist/engine/config-health/ci-version-checker.js.map +1 -0
  309. package/dist/engine/config-health/go-checker.d.ts +16 -0
  310. package/dist/engine/config-health/go-checker.d.ts.map +1 -0
  311. package/dist/engine/config-health/go-checker.js +219 -0
  312. package/dist/engine/config-health/go-checker.js.map +1 -0
  313. package/dist/engine/config-health/index.d.ts +19 -0
  314. package/dist/engine/config-health/index.d.ts.map +1 -0
  315. package/dist/engine/config-health/index.js +82 -0
  316. package/dist/engine/config-health/index.js.map +1 -0
  317. package/dist/engine/config-health/otel-checker.d.ts +8 -0
  318. package/dist/engine/config-health/otel-checker.d.ts.map +1 -0
  319. package/dist/engine/config-health/otel-checker.js +76 -0
  320. package/dist/engine/config-health/otel-checker.js.map +1 -0
  321. package/dist/engine/config-health/python-checker.d.ts +20 -0
  322. package/dist/engine/config-health/python-checker.d.ts.map +1 -0
  323. package/dist/engine/config-health/python-checker.js +305 -0
  324. package/dist/engine/config-health/python-checker.js.map +1 -0
  325. package/dist/engine/config-health/rust-checker.d.ts +16 -0
  326. package/dist/engine/config-health/rust-checker.d.ts.map +1 -0
  327. package/dist/engine/config-health/rust-checker.js +228 -0
  328. package/dist/engine/config-health/rust-checker.js.map +1 -0
  329. package/dist/engine/config-health/ts-checker-scripts.d.ts +12 -0
  330. package/dist/engine/config-health/ts-checker-scripts.d.ts.map +1 -0
  331. package/dist/engine/config-health/ts-checker-scripts.js +141 -0
  332. package/dist/engine/config-health/ts-checker-scripts.js.map +1 -0
  333. package/dist/engine/config-health/ts-checker.d.ts +19 -0
  334. package/dist/engine/config-health/ts-checker.d.ts.map +1 -0
  335. package/dist/engine/config-health/ts-checker.js +203 -0
  336. package/dist/engine/config-health/ts-checker.js.map +1 -0
  337. package/dist/engine/context/health.d.ts +12 -0
  338. package/dist/engine/context/health.d.ts.map +1 -0
  339. package/dist/engine/context/health.js +62 -0
  340. package/dist/engine/context/health.js.map +1 -0
  341. package/dist/engine/context/index.d.ts +3 -0
  342. package/dist/engine/context/index.d.ts.map +1 -0
  343. package/dist/engine/context/index.js +4 -0
  344. package/dist/engine/context/index.js.map +1 -0
  345. package/dist/engine/context/tags.d.ts +21 -0
  346. package/dist/engine/context/tags.d.ts.map +1 -0
  347. package/dist/engine/context/tags.js +83 -0
  348. package/dist/engine/context/tags.js.map +1 -0
  349. package/dist/engine/context-merger.d.ts +23 -0
  350. package/dist/engine/context-merger.d.ts.map +1 -0
  351. package/dist/engine/context-merger.js +197 -0
  352. package/dist/engine/context-merger.js.map +1 -0
  353. package/dist/engine/contradiction-detector.d.ts +16 -0
  354. package/dist/engine/contradiction-detector.d.ts.map +1 -0
  355. package/dist/engine/contradiction-detector.js +158 -0
  356. package/dist/engine/contradiction-detector.js.map +1 -0
  357. package/dist/engine/decision-store.d.ts +17 -0
  358. package/dist/engine/decision-store.d.ts.map +1 -0
  359. package/dist/engine/decision-store.js +156 -0
  360. package/dist/engine/decision-store.js.map +1 -0
  361. package/dist/engine/dep-auditor/abandonment-data.d.ts +4 -0
  362. package/dist/engine/dep-auditor/abandonment-data.d.ts.map +1 -0
  363. package/dist/engine/dep-auditor/abandonment-data.js +37 -0
  364. package/dist/engine/dep-auditor/abandonment-data.js.map +1 -0
  365. package/dist/engine/dep-auditor/abandonment-registry.d.ts +26 -0
  366. package/dist/engine/dep-auditor/abandonment-registry.d.ts.map +1 -0
  367. package/dist/engine/dep-auditor/abandonment-registry.js +89 -0
  368. package/dist/engine/dep-auditor/abandonment-registry.js.map +1 -0
  369. package/dist/engine/dep-auditor/cve-fetcher.d.ts +24 -0
  370. package/dist/engine/dep-auditor/cve-fetcher.d.ts.map +1 -0
  371. package/dist/engine/dep-auditor/cve-fetcher.js +187 -0
  372. package/dist/engine/dep-auditor/cve-fetcher.js.map +1 -0
  373. package/dist/engine/dep-auditor/dep-duplicates-detector.d.ts +10 -0
  374. package/dist/engine/dep-auditor/dep-duplicates-detector.d.ts.map +1 -0
  375. package/dist/engine/dep-auditor/dep-duplicates-detector.js +81 -0
  376. package/dist/engine/dep-auditor/dep-duplicates-detector.js.map +1 -0
  377. package/dist/engine/dep-auditor/formatters.d.ts +11 -0
  378. package/dist/engine/dep-auditor/formatters.d.ts.map +1 -0
  379. package/dist/engine/dep-auditor/formatters.js +106 -0
  380. package/dist/engine/dep-auditor/formatters.js.map +1 -0
  381. package/dist/engine/dep-auditor/index.d.ts +9 -0
  382. package/dist/engine/dep-auditor/index.d.ts.map +1 -0
  383. package/dist/engine/dep-auditor/index.js +126 -0
  384. package/dist/engine/dep-auditor/index.js.map +1 -0
  385. package/dist/engine/dep-auditor/license-checker.d.ts +16 -0
  386. package/dist/engine/dep-auditor/license-checker.d.ts.map +1 -0
  387. package/dist/engine/dep-auditor/license-checker.js +131 -0
  388. package/dist/engine/dep-auditor/license-checker.js.map +1 -0
  389. package/dist/engine/dep-auditor/license-registry.d.ts +21 -0
  390. package/dist/engine/dep-auditor/license-registry.d.ts.map +1 -0
  391. package/dist/engine/dep-auditor/license-registry.js +86 -0
  392. package/dist/engine/dep-auditor/license-registry.js.map +1 -0
  393. package/dist/engine/dep-auditor/pre-spec-check.d.ts +9 -0
  394. package/dist/engine/dep-auditor/pre-spec-check.d.ts.map +1 -0
  395. package/dist/engine/dep-auditor/pre-spec-check.js +49 -0
  396. package/dist/engine/dep-auditor/pre-spec-check.js.map +1 -0
  397. package/dist/engine/dep-auditor/vuln-data.d.ts +4 -0
  398. package/dist/engine/dep-auditor/vuln-data.d.ts.map +1 -0
  399. package/dist/engine/dep-auditor/vuln-data.js +154 -0
  400. package/dist/engine/dep-auditor/vuln-data.js.map +1 -0
  401. package/dist/engine/deprecation-scanner/index.d.ts +10 -0
  402. package/dist/engine/deprecation-scanner/index.d.ts.map +1 -0
  403. package/dist/engine/deprecation-scanner/index.js +63 -0
  404. package/dist/engine/deprecation-scanner/index.js.map +1 -0
  405. package/dist/engine/deprecation-scanner/pattern-loader.d.ts +7 -0
  406. package/dist/engine/deprecation-scanner/pattern-loader.d.ts.map +1 -0
  407. package/dist/engine/deprecation-scanner/pattern-loader.js +33 -0
  408. package/dist/engine/deprecation-scanner/pattern-loader.js.map +1 -0
  409. package/dist/engine/deprecation-scanner/source-scanner.d.ts +6 -0
  410. package/dist/engine/deprecation-scanner/source-scanner.d.ts.map +1 -0
  411. package/dist/engine/deprecation-scanner/source-scanner.js +88 -0
  412. package/dist/engine/deprecation-scanner/source-scanner.js.map +1 -0
  413. package/dist/engine/desktop-detector.d.ts +24 -0
  414. package/dist/engine/desktop-detector.d.ts.map +1 -0
  415. package/dist/engine/desktop-detector.js +208 -0
  416. package/dist/engine/desktop-detector.js.map +1 -0
  417. package/dist/engine/detection-utils.d.ts +11 -0
  418. package/dist/engine/detection-utils.d.ts.map +1 -0
  419. package/dist/engine/detection-utils.js +226 -0
  420. package/dist/engine/detection-utils.js.map +1 -0
  421. package/dist/engine/detectors/advanced-framework-detector/css-state-detector.d.ts +5 -0
  422. package/dist/engine/detectors/advanced-framework-detector/css-state-detector.d.ts.map +1 -0
  423. package/dist/engine/detectors/advanced-framework-detector/css-state-detector.js +71 -0
  424. package/dist/engine/detectors/advanced-framework-detector/css-state-detector.js.map +1 -0
  425. package/dist/engine/detectors/advanced-framework-detector/enterprise-ds-detector.d.ts +3 -0
  426. package/dist/engine/detectors/advanced-framework-detector/enterprise-ds-detector.d.ts.map +1 -0
  427. package/dist/engine/detectors/advanced-framework-detector/enterprise-ds-detector.js +40 -0
  428. package/dist/engine/detectors/advanced-framework-detector/enterprise-ds-detector.js.map +1 -0
  429. package/dist/engine/detectors/advanced-framework-detector/helpers.d.ts +6 -0
  430. package/dist/engine/detectors/advanced-framework-detector/helpers.d.ts.map +1 -0
  431. package/dist/engine/detectors/advanced-framework-detector/helpers.js +37 -0
  432. package/dist/engine/detectors/advanced-framework-detector/helpers.js.map +1 -0
  433. package/dist/engine/detectors/advanced-framework-detector/index.d.ts +8 -0
  434. package/dist/engine/detectors/advanced-framework-detector/index.d.ts.map +1 -0
  435. package/dist/engine/detectors/advanced-framework-detector/index.js +79 -0
  436. package/dist/engine/detectors/advanced-framework-detector/index.js.map +1 -0
  437. package/dist/engine/detectors/advanced-framework-detector/legacy-detector.d.ts +4 -0
  438. package/dist/engine/detectors/advanced-framework-detector/legacy-detector.d.ts.map +1 -0
  439. package/dist/engine/detectors/advanced-framework-detector/legacy-detector.js +34 -0
  440. package/dist/engine/detectors/advanced-framework-detector/legacy-detector.js.map +1 -0
  441. package/dist/engine/detectors/advanced-framework-detector/micro-frontend-detector.d.ts +3 -0
  442. package/dist/engine/detectors/advanced-framework-detector/micro-frontend-detector.d.ts.map +1 -0
  443. package/dist/engine/detectors/advanced-framework-detector/micro-frontend-detector.js +25 -0
  444. package/dist/engine/detectors/advanced-framework-detector/micro-frontend-detector.js.map +1 -0
  445. package/dist/engine/detectors/advanced-framework-detector/modern-detector.d.ts +3 -0
  446. package/dist/engine/detectors/advanced-framework-detector/modern-detector.d.ts.map +1 -0
  447. package/dist/engine/detectors/advanced-framework-detector/modern-detector.js +48 -0
  448. package/dist/engine/detectors/advanced-framework-detector/modern-detector.js.map +1 -0
  449. package/dist/engine/detectors/advanced-framework-detector.d.ts +2 -0
  450. package/dist/engine/detectors/advanced-framework-detector.d.ts.map +1 -0
  451. package/dist/engine/detectors/advanced-framework-detector.js +4 -0
  452. package/dist/engine/detectors/advanced-framework-detector.js.map +1 -0
  453. package/dist/engine/detectors/advanced-framework-hints.d.ts +6 -0
  454. package/dist/engine/detectors/advanced-framework-hints.d.ts.map +1 -0
  455. package/dist/engine/detectors/advanced-framework-hints.js +152 -0
  456. package/dist/engine/detectors/advanced-framework-hints.js.map +1 -0
  457. package/dist/engine/detectors/agent-framework-detector.d.ts +24 -0
  458. package/dist/engine/detectors/agent-framework-detector.d.ts.map +1 -0
  459. package/dist/engine/detectors/agent-framework-detector.js +260 -0
  460. package/dist/engine/detectors/agent-framework-detector.js.map +1 -0
  461. package/dist/engine/detectors/agile-detector.d.ts +12 -0
  462. package/dist/engine/detectors/agile-detector.d.ts.map +1 -0
  463. package/dist/engine/detectors/agile-detector.js +169 -0
  464. package/dist/engine/detectors/agile-detector.js.map +1 -0
  465. package/dist/engine/detectors/ai-native-detector.d.ts +12 -0
  466. package/dist/engine/detectors/ai-native-detector.d.ts.map +1 -0
  467. package/dist/engine/detectors/ai-native-detector.js +244 -0
  468. package/dist/engine/detectors/ai-native-detector.js.map +1 -0
  469. package/dist/engine/detectors/cicd-detector.d.ts +7 -0
  470. package/dist/engine/detectors/cicd-detector.d.ts.map +1 -0
  471. package/dist/engine/detectors/cicd-detector.js +177 -0
  472. package/dist/engine/detectors/cicd-detector.js.map +1 -0
  473. package/dist/engine/detectors/css-framework-detector.d.ts +7 -0
  474. package/dist/engine/detectors/css-framework-detector.d.ts.map +1 -0
  475. package/dist/engine/detectors/css-framework-detector.js +187 -0
  476. package/dist/engine/detectors/css-framework-detector.js.map +1 -0
  477. package/dist/engine/detectors/deployment-detector.d.ts +6 -0
  478. package/dist/engine/detectors/deployment-detector.d.ts.map +1 -0
  479. package/dist/engine/detectors/deployment-detector.js +168 -0
  480. package/dist/engine/detectors/deployment-detector.js.map +1 -0
  481. package/dist/engine/detectors/dx-score.d.ts +7 -0
  482. package/dist/engine/detectors/dx-score.d.ts.map +1 -0
  483. package/dist/engine/detectors/dx-score.js +232 -0
  484. package/dist/engine/detectors/dx-score.js.map +1 -0
  485. package/dist/engine/detectors/finops-detector.d.ts +7 -0
  486. package/dist/engine/detectors/finops-detector.d.ts.map +1 -0
  487. package/dist/engine/detectors/finops-detector.js +177 -0
  488. package/dist/engine/detectors/finops-detector.js.map +1 -0
  489. package/dist/engine/detectors/frontend-perf-detector.d.ts +7 -0
  490. package/dist/engine/detectors/frontend-perf-detector.d.ts.map +1 -0
  491. package/dist/engine/detectors/frontend-perf-detector.js +143 -0
  492. package/dist/engine/detectors/frontend-perf-detector.js.map +1 -0
  493. package/dist/engine/detectors/gitops-detector.d.ts +12 -0
  494. package/dist/engine/detectors/gitops-detector.d.ts.map +1 -0
  495. package/dist/engine/detectors/gitops-detector.js +170 -0
  496. package/dist/engine/detectors/gitops-detector.js.map +1 -0
  497. package/dist/engine/detectors/hypermedia-detector.d.ts +7 -0
  498. package/dist/engine/detectors/hypermedia-detector.d.ts.map +1 -0
  499. package/dist/engine/detectors/hypermedia-detector.js +223 -0
  500. package/dist/engine/detectors/hypermedia-detector.js.map +1 -0
  501. package/dist/engine/detectors/idp-detector.d.ts +7 -0
  502. package/dist/engine/detectors/idp-detector.d.ts.map +1 -0
  503. package/dist/engine/detectors/idp-detector.js +126 -0
  504. package/dist/engine/detectors/idp-detector.js.map +1 -0
  505. package/dist/engine/detectors/js-runtime-detector.d.ts +8 -0
  506. package/dist/engine/detectors/js-runtime-detector.d.ts.map +1 -0
  507. package/dist/engine/detectors/js-runtime-detector.js +32 -0
  508. package/dist/engine/detectors/js-runtime-detector.js.map +1 -0
  509. package/dist/engine/detectors/k3s-detector.d.ts +9 -0
  510. package/dist/engine/detectors/k3s-detector.d.ts.map +1 -0
  511. package/dist/engine/detectors/k3s-detector.js +85 -0
  512. package/dist/engine/detectors/k3s-detector.js.map +1 -0
  513. package/dist/engine/detectors/library-detector-langs2.d.ts +39 -0
  514. package/dist/engine/detectors/library-detector-langs2.d.ts.map +1 -0
  515. package/dist/engine/detectors/library-detector-langs2.js +161 -0
  516. package/dist/engine/detectors/library-detector-langs2.js.map +1 -0
  517. package/dist/engine/detectors/library-detector-langs3a.d.ts +34 -0
  518. package/dist/engine/detectors/library-detector-langs3a.d.ts.map +1 -0
  519. package/dist/engine/detectors/library-detector-langs3a.js +242 -0
  520. package/dist/engine/detectors/library-detector-langs3a.js.map +1 -0
  521. package/dist/engine/detectors/library-detector-langs3b.d.ts +31 -0
  522. package/dist/engine/detectors/library-detector-langs3b.d.ts.map +1 -0
  523. package/dist/engine/detectors/library-detector-langs3b.js +206 -0
  524. package/dist/engine/detectors/library-detector-langs3b.js.map +1 -0
  525. package/dist/engine/detectors/library-detector-langs4.d.ts +42 -0
  526. package/dist/engine/detectors/library-detector-langs4.d.ts.map +1 -0
  527. package/dist/engine/detectors/library-detector-langs4.js +235 -0
  528. package/dist/engine/detectors/library-detector-langs4.js.map +1 -0
  529. package/dist/engine/detectors/library-detector-langs5.d.ts +38 -0
  530. package/dist/engine/detectors/library-detector-langs5.d.ts.map +1 -0
  531. package/dist/engine/detectors/library-detector-langs5.js +147 -0
  532. package/dist/engine/detectors/library-detector-langs5.js.map +1 -0
  533. package/dist/engine/detectors/library-detector-mainstream.d.ts +59 -0
  534. package/dist/engine/detectors/library-detector-mainstream.d.ts.map +1 -0
  535. package/dist/engine/detectors/library-detector-mainstream.js +82 -0
  536. package/dist/engine/detectors/library-detector-mainstream.js.map +1 -0
  537. package/dist/engine/detectors/library-detector-multilang-a.d.ts +12 -0
  538. package/dist/engine/detectors/library-detector-multilang-a.d.ts.map +1 -0
  539. package/dist/engine/detectors/library-detector-multilang-a.js +122 -0
  540. package/dist/engine/detectors/library-detector-multilang-a.js.map +1 -0
  541. package/dist/engine/detectors/library-detector-multilang-b.d.ts +12 -0
  542. package/dist/engine/detectors/library-detector-multilang-b.d.ts.map +1 -0
  543. package/dist/engine/detectors/library-detector-multilang-b.js +105 -0
  544. package/dist/engine/detectors/library-detector-multilang-b.js.map +1 -0
  545. package/dist/engine/detectors/library-detector-multilang-c.d.ts +12 -0
  546. package/dist/engine/detectors/library-detector-multilang-c.d.ts.map +1 -0
  547. package/dist/engine/detectors/library-detector-multilang-c.js +132 -0
  548. package/dist/engine/detectors/library-detector-multilang-c.js.map +1 -0
  549. package/dist/engine/detectors/library-detector-multilang.d.ts +4 -0
  550. package/dist/engine/detectors/library-detector-multilang.d.ts.map +1 -0
  551. package/dist/engine/detectors/library-detector-multilang.js +7 -0
  552. package/dist/engine/detectors/library-detector-multilang.js.map +1 -0
  553. package/dist/engine/detectors/library-detector-node.d.ts +8 -0
  554. package/dist/engine/detectors/library-detector-node.d.ts.map +1 -0
  555. package/dist/engine/detectors/library-detector-node.js +40 -0
  556. package/dist/engine/detectors/library-detector-node.js.map +1 -0
  557. package/dist/engine/detectors/library-detector-python.d.ts +11 -0
  558. package/dist/engine/detectors/library-detector-python.d.ts.map +1 -0
  559. package/dist/engine/detectors/library-detector-python.js +111 -0
  560. package/dist/engine/detectors/library-detector-python.js.map +1 -0
  561. package/dist/engine/detectors/library-detector.d.ts +18 -0
  562. package/dist/engine/detectors/library-detector.d.ts.map +1 -0
  563. package/dist/engine/detectors/library-detector.js +102 -0
  564. package/dist/engine/detectors/library-detector.js.map +1 -0
  565. package/dist/engine/detectors/llm-detector/detectors.d.ts +26 -0
  566. package/dist/engine/detectors/llm-detector/detectors.d.ts.map +1 -0
  567. package/dist/engine/detectors/llm-detector/detectors.js +174 -0
  568. package/dist/engine/detectors/llm-detector/detectors.js.map +1 -0
  569. package/dist/engine/detectors/llm-detector/eu-ai-detector.d.ts +7 -0
  570. package/dist/engine/detectors/llm-detector/eu-ai-detector.d.ts.map +1 -0
  571. package/dist/engine/detectors/llm-detector/eu-ai-detector.js +34 -0
  572. package/dist/engine/detectors/llm-detector/eu-ai-detector.js.map +1 -0
  573. package/dist/engine/detectors/llm-detector/file-readers.d.ts +7 -0
  574. package/dist/engine/detectors/llm-detector/file-readers.d.ts.map +1 -0
  575. package/dist/engine/detectors/llm-detector/file-readers.js +33 -0
  576. package/dist/engine/detectors/llm-detector/file-readers.js.map +1 -0
  577. package/dist/engine/detectors/llm-detector/index.d.ts +13 -0
  578. package/dist/engine/detectors/llm-detector/index.d.ts.map +1 -0
  579. package/dist/engine/detectors/llm-detector/index.js +74 -0
  580. package/dist/engine/detectors/llm-detector/index.js.map +1 -0
  581. package/dist/engine/detectors/llm-detector/provider-maps.d.ts +25 -0
  582. package/dist/engine/detectors/llm-detector/provider-maps.d.ts.map +1 -0
  583. package/dist/engine/detectors/llm-detector/provider-maps.js +112 -0
  584. package/dist/engine/detectors/llm-detector/provider-maps.js.map +1 -0
  585. package/dist/engine/detectors/llm-detector.d.ts +2 -0
  586. package/dist/engine/detectors/llm-detector.d.ts.map +1 -0
  587. package/dist/engine/detectors/llm-detector.js +4 -0
  588. package/dist/engine/detectors/llm-detector.js.map +1 -0
  589. package/dist/engine/detectors/mcp-server-detector.d.ts +20 -0
  590. package/dist/engine/detectors/mcp-server-detector.d.ts.map +1 -0
  591. package/dist/engine/detectors/mcp-server-detector.js +98 -0
  592. package/dist/engine/detectors/mcp-server-detector.js.map +1 -0
  593. package/dist/engine/detectors/mfe-detector.d.ts +9 -0
  594. package/dist/engine/detectors/mfe-detector.d.ts.map +1 -0
  595. package/dist/engine/detectors/mfe-detector.js +162 -0
  596. package/dist/engine/detectors/mfe-detector.js.map +1 -0
  597. package/dist/engine/detectors/monitoring-detector.d.ts +6 -0
  598. package/dist/engine/detectors/monitoring-detector.d.ts.map +1 -0
  599. package/dist/engine/detectors/monitoring-detector.js +268 -0
  600. package/dist/engine/detectors/monitoring-detector.js.map +1 -0
  601. package/dist/engine/detectors/monorepo-detector.d.ts +15 -0
  602. package/dist/engine/detectors/monorepo-detector.d.ts.map +1 -0
  603. package/dist/engine/detectors/monorepo-detector.js +56 -0
  604. package/dist/engine/detectors/monorepo-detector.js.map +1 -0
  605. package/dist/engine/detectors/nomad-detector.d.ts +11 -0
  606. package/dist/engine/detectors/nomad-detector.d.ts.map +1 -0
  607. package/dist/engine/detectors/nomad-detector.js +102 -0
  608. package/dist/engine/detectors/nomad-detector.js.map +1 -0
  609. package/dist/engine/detectors/otel-detector.d.ts +7 -0
  610. package/dist/engine/detectors/otel-detector.d.ts.map +1 -0
  611. package/dist/engine/detectors/otel-detector.js +240 -0
  612. package/dist/engine/detectors/otel-detector.js.map +1 -0
  613. package/dist/engine/detectors/otel-ecosystem-detectors.d.ts +28 -0
  614. package/dist/engine/detectors/otel-ecosystem-detectors.d.ts.map +1 -0
  615. package/dist/engine/detectors/otel-ecosystem-detectors.js +104 -0
  616. package/dist/engine/detectors/otel-ecosystem-detectors.js.map +1 -0
  617. package/dist/engine/detectors/platform-specialty-detector.d.ts +8 -0
  618. package/dist/engine/detectors/platform-specialty-detector.d.ts.map +1 -0
  619. package/dist/engine/detectors/platform-specialty-detector.js +262 -0
  620. package/dist/engine/detectors/platform-specialty-detector.js.map +1 -0
  621. package/dist/engine/detectors/python-pm-detector.d.ts +6 -0
  622. package/dist/engine/detectors/python-pm-detector.d.ts.map +1 -0
  623. package/dist/engine/detectors/python-pm-detector.js +42 -0
  624. package/dist/engine/detectors/python-pm-detector.js.map +1 -0
  625. package/dist/engine/detectors/supply-chain-detector.d.ts +7 -0
  626. package/dist/engine/detectors/supply-chain-detector.d.ts.map +1 -0
  627. package/dist/engine/detectors/supply-chain-detector.js +188 -0
  628. package/dist/engine/detectors/supply-chain-detector.js.map +1 -0
  629. package/dist/engine/detectors/template-engine-detector.d.ts +6 -0
  630. package/dist/engine/detectors/template-engine-detector.d.ts.map +1 -0
  631. package/dist/engine/detectors/template-engine-detector.js +172 -0
  632. package/dist/engine/detectors/template-engine-detector.js.map +1 -0
  633. package/dist/engine/detectors/wasm-detector.d.ts +26 -0
  634. package/dist/engine/detectors/wasm-detector.d.ts.map +1 -0
  635. package/dist/engine/detectors/wasm-detector.js +114 -0
  636. package/dist/engine/detectors/wasm-detector.js.map +1 -0
  637. package/dist/engine/doc-generator/arch-api-user-generators.d.ts +5 -0
  638. package/dist/engine/doc-generator/arch-api-user-generators.d.ts.map +1 -0
  639. package/dist/engine/doc-generator/arch-api-user-generators.js +195 -0
  640. package/dist/engine/doc-generator/arch-api-user-generators.js.map +1 -0
  641. package/dist/engine/doc-generator/builders.d.ts +17 -0
  642. package/dist/engine/doc-generator/builders.d.ts.map +1 -0
  643. package/dist/engine/doc-generator/builders.js +255 -0
  644. package/dist/engine/doc-generator/builders.js.map +1 -0
  645. package/dist/engine/doc-generator/deployment-generator.d.ts +3 -0
  646. package/dist/engine/doc-generator/deployment-generator.d.ts.map +1 -0
  647. package/dist/engine/doc-generator/deployment-generator.js +60 -0
  648. package/dist/engine/doc-generator/deployment-generator.js.map +1 -0
  649. package/dist/engine/doc-generator/diagrams.d.ts +10 -0
  650. package/dist/engine/doc-generator/diagrams.d.ts.map +1 -0
  651. package/dist/engine/doc-generator/diagrams.js +181 -0
  652. package/dist/engine/doc-generator/diagrams.js.map +1 -0
  653. package/dist/engine/doc-generator/guide-generators.d.ts +4 -0
  654. package/dist/engine/doc-generator/guide-generators.d.ts.map +1 -0
  655. package/dist/engine/doc-generator/guide-generators.js +9 -0
  656. package/dist/engine/doc-generator/guide-generators.js.map +1 -0
  657. package/dist/engine/doc-generator/mobile-distribution-android.d.ts +6 -0
  658. package/dist/engine/doc-generator/mobile-distribution-android.d.ts.map +1 -0
  659. package/dist/engine/doc-generator/mobile-distribution-android.js +47 -0
  660. package/dist/engine/doc-generator/mobile-distribution-android.js.map +1 -0
  661. package/dist/engine/doc-generator/mobile-distribution-guide.d.ts +7 -0
  662. package/dist/engine/doc-generator/mobile-distribution-guide.d.ts.map +1 -0
  663. package/dist/engine/doc-generator/mobile-distribution-guide.js +288 -0
  664. package/dist/engine/doc-generator/mobile-distribution-guide.js.map +1 -0
  665. package/dist/engine/doc-generator/mobile-distribution-ios.d.ts +6 -0
  666. package/dist/engine/doc-generator/mobile-distribution-ios.d.ts.map +1 -0
  667. package/dist/engine/doc-generator/mobile-distribution-ios.js +58 -0
  668. package/dist/engine/doc-generator/mobile-distribution-ios.js.map +1 -0
  669. package/dist/engine/doc-generator/ops-generators.d.ts +6 -0
  670. package/dist/engine/doc-generator/ops-generators.d.ts.map +1 -0
  671. package/dist/engine/doc-generator/ops-generators.js +188 -0
  672. package/dist/engine/doc-generator/ops-generators.js.map +1 -0
  673. package/dist/engine/doc-generator/readme-setup-generators.d.ts +4 -0
  674. package/dist/engine/doc-generator/readme-setup-generators.d.ts.map +1 -0
  675. package/dist/engine/doc-generator/readme-setup-generators.js +97 -0
  676. package/dist/engine/doc-generator/readme-setup-generators.js.map +1 -0
  677. package/dist/engine/doc-generator/support-generators.d.ts +17 -0
  678. package/dist/engine/doc-generator/support-generators.d.ts.map +1 -0
  679. package/dist/engine/doc-generator/support-generators.js +257 -0
  680. package/dist/engine/doc-generator/support-generators.js.map +1 -0
  681. package/dist/engine/doc-generator/team-generators.d.ts +12 -0
  682. package/dist/engine/doc-generator/team-generators.d.ts.map +1 -0
  683. package/dist/engine/doc-generator/team-generators.js +233 -0
  684. package/dist/engine/doc-generator/team-generators.js.map +1 -0
  685. package/dist/engine/doc-generator.d.ts +15 -0
  686. package/dist/engine/doc-generator.d.ts.map +1 -0
  687. package/dist/engine/doc-generator.js +89 -0
  688. package/dist/engine/doc-generator.js.map +1 -0
  689. package/dist/engine/doc-generator.test.d.ts +2 -0
  690. package/dist/engine/doc-generator.test.d.ts.map +1 -0
  691. package/dist/engine/doc-generator.test.js +961 -0
  692. package/dist/engine/doc-generator.test.js.map +1 -0
  693. package/dist/engine/dor-dod/dod.d.ts +16 -0
  694. package/dist/engine/dor-dod/dod.d.ts.map +1 -0
  695. package/dist/engine/dor-dod/dod.js +136 -0
  696. package/dist/engine/dor-dod/dod.js.map +1 -0
  697. package/dist/engine/dor-dod/dor.d.ts +20 -0
  698. package/dist/engine/dor-dod/dor.d.ts.map +1 -0
  699. package/dist/engine/dor-dod/dor.js +199 -0
  700. package/dist/engine/dor-dod/dor.js.map +1 -0
  701. package/dist/engine/dor-dod/index.d.ts +4 -0
  702. package/dist/engine/dor-dod/index.d.ts.map +1 -0
  703. package/dist/engine/dor-dod/index.js +5 -0
  704. package/dist/engine/dor-dod/index.js.map +1 -0
  705. package/dist/engine/dor-dod/plan.d.ts +8 -0
  706. package/dist/engine/dor-dod/plan.d.ts.map +1 -0
  707. package/dist/engine/dor-dod/plan.js +48 -0
  708. package/dist/engine/dor-dod/plan.js.map +1 -0
  709. package/dist/engine/dor-dod.d.ts +2 -0
  710. package/dist/engine/dor-dod.d.ts.map +1 -0
  711. package/dist/engine/dor-dod.js +4 -0
  712. package/dist/engine/dor-dod.js.map +1 -0
  713. package/dist/engine/dora-metrics/benchmarks.d.ts +39 -0
  714. package/dist/engine/dora-metrics/benchmarks.d.ts.map +1 -0
  715. package/dist/engine/dora-metrics/benchmarks.js +89 -0
  716. package/dist/engine/dora-metrics/benchmarks.js.map +1 -0
  717. package/dist/engine/dora-metrics/calculations.d.ts +26 -0
  718. package/dist/engine/dora-metrics/calculations.d.ts.map +1 -0
  719. package/dist/engine/dora-metrics/calculations.js +100 -0
  720. package/dist/engine/dora-metrics/calculations.js.map +1 -0
  721. package/dist/engine/dora-metrics/git-log.d.ts +11 -0
  722. package/dist/engine/dora-metrics/git-log.d.ts.map +1 -0
  723. package/dist/engine/dora-metrics/git-log.js +75 -0
  724. package/dist/engine/dora-metrics/git-log.js.map +1 -0
  725. package/dist/engine/dora-metrics.d.ts +4 -0
  726. package/dist/engine/dora-metrics.d.ts.map +1 -0
  727. package/dist/engine/dora-metrics.js +7 -0
  728. package/dist/engine/dora-metrics.js.map +1 -0
  729. package/dist/engine/dynamic-migration-detector/catalog-loader.d.ts +10 -0
  730. package/dist/engine/dynamic-migration-detector/catalog-loader.d.ts.map +1 -0
  731. package/dist/engine/dynamic-migration-detector/catalog-loader.js +72 -0
  732. package/dist/engine/dynamic-migration-detector/catalog-loader.js.map +1 -0
  733. package/dist/engine/dynamic-migration-detector/manifest-readers-extended.d.ts +10 -0
  734. package/dist/engine/dynamic-migration-detector/manifest-readers-extended.d.ts.map +1 -0
  735. package/dist/engine/dynamic-migration-detector/manifest-readers-extended.js +165 -0
  736. package/dist/engine/dynamic-migration-detector/manifest-readers-extended.js.map +1 -0
  737. package/dist/engine/dynamic-migration-detector/manifest-readers.d.ts +17 -0
  738. package/dist/engine/dynamic-migration-detector/manifest-readers.d.ts.map +1 -0
  739. package/dist/engine/dynamic-migration-detector/manifest-readers.js +290 -0
  740. package/dist/engine/dynamic-migration-detector/manifest-readers.js.map +1 -0
  741. package/dist/engine/dynamic-migration-detector/plan-generator.d.ts +4 -0
  742. package/dist/engine/dynamic-migration-detector/plan-generator.d.ts.map +1 -0
  743. package/dist/engine/dynamic-migration-detector/plan-generator.js +168 -0
  744. package/dist/engine/dynamic-migration-detector/plan-generator.js.map +1 -0
  745. package/dist/engine/dynamic-migration-detector/risk-assessor.d.ts +8 -0
  746. package/dist/engine/dynamic-migration-detector/risk-assessor.d.ts.map +1 -0
  747. package/dist/engine/dynamic-migration-detector/risk-assessor.js +91 -0
  748. package/dist/engine/dynamic-migration-detector/risk-assessor.js.map +1 -0
  749. package/dist/engine/dynamic-migration-detector.d.ts +9 -0
  750. package/dist/engine/dynamic-migration-detector.d.ts.map +1 -0
  751. package/dist/engine/dynamic-migration-detector.js +106 -0
  752. package/dist/engine/dynamic-migration-detector.js.map +1 -0
  753. package/dist/engine/edge-db-detector.d.ts +7 -0
  754. package/dist/engine/edge-db-detector.d.ts.map +1 -0
  755. package/dist/engine/edge-db-detector.js +150 -0
  756. package/dist/engine/edge-db-detector.js.map +1 -0
  757. package/dist/engine/estimator/calculations.d.ts +14 -0
  758. package/dist/engine/estimator/calculations.d.ts.map +1 -0
  759. package/dist/engine/estimator/calculations.js +107 -0
  760. package/dist/engine/estimator/calculations.js.map +1 -0
  761. package/dist/engine/estimator/constants.d.ts +33 -0
  762. package/dist/engine/estimator/constants.d.ts.map +1 -0
  763. package/dist/engine/estimator/constants.js +71 -0
  764. package/dist/engine/estimator/constants.js.map +1 -0
  765. package/dist/engine/estimator/history.d.ts +16 -0
  766. package/dist/engine/estimator/history.d.ts.map +1 -0
  767. package/dist/engine/estimator/history.js +135 -0
  768. package/dist/engine/estimator/history.js.map +1 -0
  769. package/dist/engine/estimator-helpers.d.ts +14 -0
  770. package/dist/engine/estimator-helpers.d.ts.map +1 -0
  771. package/dist/engine/estimator-helpers.js +58 -0
  772. package/dist/engine/estimator-helpers.js.map +1 -0
  773. package/dist/engine/estimator.d.ts +3 -0
  774. package/dist/engine/estimator.d.ts.map +1 -0
  775. package/dist/engine/estimator.js +6 -0
  776. package/dist/engine/estimator.js.map +1 -0
  777. package/dist/engine/estimator.test.d.ts +2 -0
  778. package/dist/engine/estimator.test.d.ts.map +1 -0
  779. package/dist/engine/estimator.test.js +334 -0
  780. package/dist/engine/estimator.test.js.map +1 -0
  781. package/dist/engine/event-detector.d.ts +33 -0
  782. package/dist/engine/event-detector.d.ts.map +1 -0
  783. package/dist/engine/event-detector.js +90 -0
  784. package/dist/engine/event-detector.js.map +1 -0
  785. package/dist/engine/event-schema-validator/change-classifier.d.ts +14 -0
  786. package/dist/engine/event-schema-validator/change-classifier.d.ts.map +1 -0
  787. package/dist/engine/event-schema-validator/change-classifier.js +58 -0
  788. package/dist/engine/event-schema-validator/change-classifier.js.map +1 -0
  789. package/dist/engine/event-schema-validator/drift-detector.d.ts +7 -0
  790. package/dist/engine/event-schema-validator/drift-detector.d.ts.map +1 -0
  791. package/dist/engine/event-schema-validator/drift-detector.js +77 -0
  792. package/dist/engine/event-schema-validator/drift-detector.js.map +1 -0
  793. package/dist/engine/event-schema-validator/helpers.d.ts +5 -0
  794. package/dist/engine/event-schema-validator/helpers.d.ts.map +1 -0
  795. package/dist/engine/event-schema-validator/helpers.js +33 -0
  796. package/dist/engine/event-schema-validator/helpers.js.map +1 -0
  797. package/dist/engine/event-schema-validator/payload-validator.d.ts +11 -0
  798. package/dist/engine/event-schema-validator/payload-validator.d.ts.map +1 -0
  799. package/dist/engine/event-schema-validator/payload-validator.js +58 -0
  800. package/dist/engine/event-schema-validator/payload-validator.js.map +1 -0
  801. package/dist/engine/event-schema-validator/version-utils.d.ts +27 -0
  802. package/dist/engine/event-schema-validator/version-utils.d.ts.map +1 -0
  803. package/dist/engine/event-schema-validator/version-utils.js +61 -0
  804. package/dist/engine/event-schema-validator/version-utils.js.map +1 -0
  805. package/dist/engine/event-schema-validator.d.ts +5 -0
  806. package/dist/engine/event-schema-validator.d.ts.map +1 -0
  807. package/dist/engine/event-schema-validator.js +8 -0
  808. package/dist/engine/event-schema-validator.js.map +1 -0
  809. package/dist/engine/execution-plan/agent-execution-plan.d.ts +14 -0
  810. package/dist/engine/execution-plan/agent-execution-plan.d.ts.map +1 -0
  811. package/dist/engine/execution-plan/agent-execution-plan.js +47 -0
  812. package/dist/engine/execution-plan/agent-execution-plan.js.map +1 -0
  813. package/dist/engine/execution-plan/desktop-distribution.d.ts +11 -0
  814. package/dist/engine/execution-plan/desktop-distribution.d.ts.map +1 -0
  815. package/dist/engine/execution-plan/desktop-distribution.js +182 -0
  816. package/dist/engine/execution-plan/desktop-distribution.js.map +1 -0
  817. package/dist/engine/execution-plan/mobile-dist/expo-steps.d.ts +3 -0
  818. package/dist/engine/execution-plan/mobile-dist/expo-steps.d.ts.map +1 -0
  819. package/dist/engine/execution-plan/mobile-dist/expo-steps.js +118 -0
  820. package/dist/engine/execution-plan/mobile-dist/expo-steps.js.map +1 -0
  821. package/dist/engine/execution-plan/mobile-dist/flutter-steps.d.ts +3 -0
  822. package/dist/engine/execution-plan/mobile-dist/flutter-steps.d.ts.map +1 -0
  823. package/dist/engine/execution-plan/mobile-dist/flutter-steps.js +119 -0
  824. package/dist/engine/execution-plan/mobile-dist/flutter-steps.js.map +1 -0
  825. package/dist/engine/execution-plan/mobile-dist/native-steps.d.ts +3 -0
  826. package/dist/engine/execution-plan/mobile-dist/native-steps.d.ts.map +1 -0
  827. package/dist/engine/execution-plan/mobile-dist/native-steps.js +107 -0
  828. package/dist/engine/execution-plan/mobile-dist/native-steps.js.map +1 -0
  829. package/dist/engine/execution-plan/mobile-dist/rn-steps.d.ts +3 -0
  830. package/dist/engine/execution-plan/mobile-dist/rn-steps.d.ts.map +1 -0
  831. package/dist/engine/execution-plan/mobile-dist/rn-steps.js +118 -0
  832. package/dist/engine/execution-plan/mobile-dist/rn-steps.js.map +1 -0
  833. package/dist/engine/execution-plan/mobile-distribution.d.ts +17 -0
  834. package/dist/engine/execution-plan/mobile-distribution.d.ts.map +1 -0
  835. package/dist/engine/execution-plan/mobile-distribution.js +56 -0
  836. package/dist/engine/execution-plan/mobile-distribution.js.map +1 -0
  837. package/dist/engine/execution-plan/phases-b.d.ts +4 -0
  838. package/dist/engine/execution-plan/phases-b.d.ts.map +1 -0
  839. package/dist/engine/execution-plan/phases-b.js +88 -0
  840. package/dist/engine/execution-plan/phases-b.js.map +1 -0
  841. package/dist/engine/execution-plan/phases.d.ts +7 -0
  842. package/dist/engine/execution-plan/phases.d.ts.map +1 -0
  843. package/dist/engine/execution-plan/phases.js +217 -0
  844. package/dist/engine/execution-plan/phases.js.map +1 -0
  845. package/dist/engine/execution-plan/plan-utils.d.ts +10 -0
  846. package/dist/engine/execution-plan/plan-utils.d.ts.map +1 -0
  847. package/dist/engine/execution-plan/plan-utils.js +86 -0
  848. package/dist/engine/execution-plan/plan-utils.js.map +1 -0
  849. package/dist/engine/feasibility-validator.d.ts +7 -0
  850. package/dist/engine/feasibility-validator.d.ts.map +1 -0
  851. package/dist/engine/feasibility-validator.js +219 -0
  852. package/dist/engine/feasibility-validator.js.map +1 -0
  853. package/dist/engine/focus-tracker.d.ts +33 -0
  854. package/dist/engine/focus-tracker.d.ts.map +1 -0
  855. package/dist/engine/focus-tracker.js +124 -0
  856. package/dist/engine/focus-tracker.js.map +1 -0
  857. package/dist/engine/framework-detector.d.ts +34 -0
  858. package/dist/engine/framework-detector.d.ts.map +1 -0
  859. package/dist/engine/framework-detector.js +220 -0
  860. package/dist/engine/framework-detector.js.map +1 -0
  861. package/dist/engine/handoff-packager.d.ts +3 -0
  862. package/dist/engine/handoff-packager.d.ts.map +1 -0
  863. package/dist/engine/handoff-packager.js +175 -0
  864. package/dist/engine/handoff-packager.js.map +1 -0
  865. package/dist/engine/intent-mapper.d.ts +14 -0
  866. package/dist/engine/intent-mapper.d.ts.map +1 -0
  867. package/dist/engine/intent-mapper.js +91 -0
  868. package/dist/engine/intent-mapper.js.map +1 -0
  869. package/dist/engine/journey-guidance.d.ts +7 -0
  870. package/dist/engine/journey-guidance.d.ts.map +1 -0
  871. package/dist/engine/journey-guidance.js +168 -0
  872. package/dist/engine/journey-guidance.js.map +1 -0
  873. package/dist/engine/language-detector.d.ts +14 -0
  874. package/dist/engine/language-detector.d.ts.map +1 -0
  875. package/dist/engine/language-detector.js +251 -0
  876. package/dist/engine/language-detector.js.map +1 -0
  877. package/dist/engine/learning-router.d.ts +8 -0
  878. package/dist/engine/learning-router.d.ts.map +1 -0
  879. package/dist/engine/learning-router.js +157 -0
  880. package/dist/engine/learning-router.js.map +1 -0
  881. package/dist/engine/llm-security/eu-ai-act-checker.d.ts +14 -0
  882. package/dist/engine/llm-security/eu-ai-act-checker.d.ts.map +1 -0
  883. package/dist/engine/llm-security/eu-ai-act-checker.js +98 -0
  884. package/dist/engine/llm-security/eu-ai-act-checker.js.map +1 -0
  885. package/dist/engine/llm-security/index.d.ts +4 -0
  886. package/dist/engine/llm-security/index.d.ts.map +1 -0
  887. package/dist/engine/llm-security/index.js +6 -0
  888. package/dist/engine/llm-security/index.js.map +1 -0
  889. package/dist/engine/llm-security/mlops-requirements.d.ts +11 -0
  890. package/dist/engine/llm-security/mlops-requirements.d.ts.map +1 -0
  891. package/dist/engine/llm-security/mlops-requirements.js +80 -0
  892. package/dist/engine/llm-security/mlops-requirements.js.map +1 -0
  893. package/dist/engine/llm-security/owasp-llm-requirements.d.ts +36 -0
  894. package/dist/engine/llm-security/owasp-llm-requirements.d.ts.map +1 -0
  895. package/dist/engine/llm-security/owasp-llm-requirements.js +179 -0
  896. package/dist/engine/llm-security/owasp-llm-requirements.js.map +1 -0
  897. package/dist/engine/local-first/crdt-generator.d.ts +10 -0
  898. package/dist/engine/local-first/crdt-generator.d.ts.map +1 -0
  899. package/dist/engine/local-first/crdt-generator.js +77 -0
  900. package/dist/engine/local-first/crdt-generator.js.map +1 -0
  901. package/dist/engine/local-first/detector.d.ts +7 -0
  902. package/dist/engine/local-first/detector.d.ts.map +1 -0
  903. package/dist/engine/local-first/detector.js +233 -0
  904. package/dist/engine/local-first/detector.js.map +1 -0
  905. package/dist/engine/local-first/index.d.ts +8 -0
  906. package/dist/engine/local-first/index.d.ts.map +1 -0
  907. package/dist/engine/local-first/index.js +6 -0
  908. package/dist/engine/local-first/index.js.map +1 -0
  909. package/dist/engine/local-first/storage-advisor.d.ts +15 -0
  910. package/dist/engine/local-first/storage-advisor.d.ts.map +1 -0
  911. package/dist/engine/local-first/storage-advisor.js +107 -0
  912. package/dist/engine/local-first/storage-advisor.js.map +1 -0
  913. package/dist/engine/local-first/sync-generator.d.ts +10 -0
  914. package/dist/engine/local-first/sync-generator.d.ts.map +1 -0
  915. package/dist/engine/local-first/sync-generator.js +77 -0
  916. package/dist/engine/local-first/sync-generator.js.map +1 -0
  917. package/dist/engine/mermaid-generator.d.ts +38 -0
  918. package/dist/engine/mermaid-generator.d.ts.map +1 -0
  919. package/dist/engine/mermaid-generator.js +255 -0
  920. package/dist/engine/mermaid-generator.js.map +1 -0
  921. package/dist/engine/migration/db-migrator.d.ts +15 -0
  922. package/dist/engine/migration/db-migrator.d.ts.map +1 -0
  923. package/dist/engine/migration/db-migrator.js +234 -0
  924. package/dist/engine/migration/db-migrator.js.map +1 -0
  925. package/dist/engine/migration/equivalence-mapper.d.ts +4 -0
  926. package/dist/engine/migration/equivalence-mapper.d.ts.map +1 -0
  927. package/dist/engine/migration/equivalence-mapper.js +191 -0
  928. package/dist/engine/migration/equivalence-mapper.js.map +1 -0
  929. package/dist/engine/migration/feature-flag-generator.d.ts +8 -0
  930. package/dist/engine/migration/feature-flag-generator.d.ts.map +1 -0
  931. package/dist/engine/migration/feature-flag-generator.js +153 -0
  932. package/dist/engine/migration/feature-flag-generator.js.map +1 -0
  933. package/dist/engine/migration/index.d.ts +11 -0
  934. package/dist/engine/migration/index.d.ts.map +1 -0
  935. package/dist/engine/migration/index.js +14 -0
  936. package/dist/engine/migration/index.js.map +1 -0
  937. package/dist/engine/migration/migration-tracker.d.ts +11 -0
  938. package/dist/engine/migration/migration-tracker.d.ts.map +1 -0
  939. package/dist/engine/migration/migration-tracker.js +108 -0
  940. package/dist/engine/migration/migration-tracker.js.map +1 -0
  941. package/dist/engine/migration/parity-validator.d.ts +7 -0
  942. package/dist/engine/migration/parity-validator.d.ts.map +1 -0
  943. package/dist/engine/migration/parity-validator.js +91 -0
  944. package/dist/engine/migration/parity-validator.js.map +1 -0
  945. package/dist/engine/migration/plan-generator.d.ts +8 -0
  946. package/dist/engine/migration/plan-generator.d.ts.map +1 -0
  947. package/dist/engine/migration/plan-generator.js +159 -0
  948. package/dist/engine/migration/plan-generator.js.map +1 -0
  949. package/dist/engine/migration/rollback-planner.d.ts +18 -0
  950. package/dist/engine/migration/rollback-planner.d.ts.map +1 -0
  951. package/dist/engine/migration/rollback-planner.js +185 -0
  952. package/dist/engine/migration/rollback-planner.js.map +1 -0
  953. package/dist/engine/migration/service-catalogs.d.ts +5 -0
  954. package/dist/engine/migration/service-catalogs.d.ts.map +1 -0
  955. package/dist/engine/migration/service-catalogs.js +302 -0
  956. package/dist/engine/migration/service-catalogs.js.map +1 -0
  957. package/dist/engine/migration/service-migrator-catalogs.d.ts +5 -0
  958. package/dist/engine/migration/service-migrator-catalogs.d.ts.map +1 -0
  959. package/dist/engine/migration/service-migrator-catalogs.js +302 -0
  960. package/dist/engine/migration/service-migrator-catalogs.js.map +1 -0
  961. package/dist/engine/migration/service-migrator-planner.d.ts +4 -0
  962. package/dist/engine/migration/service-migrator-planner.d.ts.map +1 -0
  963. package/dist/engine/migration/service-migrator-planner.js +70 -0
  964. package/dist/engine/migration/service-migrator-planner.js.map +1 -0
  965. package/dist/engine/migration/service-migrator.d.ts +8 -0
  966. package/dist/engine/migration/service-migrator.d.ts.map +1 -0
  967. package/dist/engine/migration/service-migrator.js +94 -0
  968. package/dist/engine/migration/service-migrator.js.map +1 -0
  969. package/dist/engine/migration/stack-analyzer.d.ts +23 -0
  970. package/dist/engine/migration/stack-analyzer.d.ts.map +1 -0
  971. package/dist/engine/migration/stack-analyzer.js +111 -0
  972. package/dist/engine/migration/stack-analyzer.js.map +1 -0
  973. package/dist/engine/migration/strategy-advisor.d.ts +3 -0
  974. package/dist/engine/migration/strategy-advisor.d.ts.map +1 -0
  975. package/dist/engine/migration/strategy-advisor.js +92 -0
  976. package/dist/engine/migration/strategy-advisor.js.map +1 -0
  977. package/dist/engine/mobile-detector-android.d.ts +5 -0
  978. package/dist/engine/mobile-detector-android.d.ts.map +1 -0
  979. package/dist/engine/mobile-detector-android.js +172 -0
  980. package/dist/engine/mobile-detector-android.js.map +1 -0
  981. package/dist/engine/mobile-detector-ios.d.ts +4 -0
  982. package/dist/engine/mobile-detector-ios.d.ts.map +1 -0
  983. package/dist/engine/mobile-detector-ios.js +258 -0
  984. package/dist/engine/mobile-detector-ios.js.map +1 -0
  985. package/dist/engine/mobile-detector-shared.d.ts +4 -0
  986. package/dist/engine/mobile-detector-shared.d.ts.map +1 -0
  987. package/dist/engine/mobile-detector-shared.js +42 -0
  988. package/dist/engine/mobile-detector-shared.js.map +1 -0
  989. package/dist/engine/mobile-detector.d.ts +6 -0
  990. package/dist/engine/mobile-detector.d.ts.map +1 -0
  991. package/dist/engine/mobile-detector.js +41 -0
  992. package/dist/engine/mobile-detector.js.map +1 -0
  993. package/dist/engine/multi-agent/capability-registry.d.ts +38 -0
  994. package/dist/engine/multi-agent/capability-registry.d.ts.map +1 -0
  995. package/dist/engine/multi-agent/capability-registry.js +79 -0
  996. package/dist/engine/multi-agent/capability-registry.js.map +1 -0
  997. package/dist/engine/multi-agent/conflict-detector.d.ts +28 -0
  998. package/dist/engine/multi-agent/conflict-detector.d.ts.map +1 -0
  999. package/dist/engine/multi-agent/conflict-detector.js +167 -0
  1000. package/dist/engine/multi-agent/conflict-detector.js.map +1 -0
  1001. package/dist/engine/multi-agent/handoff-generator.d.ts +19 -0
  1002. package/dist/engine/multi-agent/handoff-generator.d.ts.map +1 -0
  1003. package/dist/engine/multi-agent/handoff-generator.js +68 -0
  1004. package/dist/engine/multi-agent/handoff-generator.js.map +1 -0
  1005. package/dist/engine/multi-agent/index.d.ts +6 -0
  1006. package/dist/engine/multi-agent/index.d.ts.map +1 -0
  1007. package/dist/engine/multi-agent/index.js +6 -0
  1008. package/dist/engine/multi-agent/index.js.map +1 -0
  1009. package/dist/engine/multi-agent/task-router.d.ts +8 -0
  1010. package/dist/engine/multi-agent/task-router.d.ts.map +1 -0
  1011. package/dist/engine/multi-agent/task-router.js +167 -0
  1012. package/dist/engine/multi-agent/task-router.js.map +1 -0
  1013. package/dist/engine/multi-app-detector/app-type.d.ts +9 -0
  1014. package/dist/engine/multi-app-detector/app-type.d.ts.map +1 -0
  1015. package/dist/engine/multi-app-detector/app-type.js +74 -0
  1016. package/dist/engine/multi-app-detector/app-type.js.map +1 -0
  1017. package/dist/engine/multi-app-detector/core.d.ts +46 -0
  1018. package/dist/engine/multi-app-detector/core.d.ts.map +1 -0
  1019. package/dist/engine/multi-app-detector/core.js +218 -0
  1020. package/dist/engine/multi-app-detector/core.js.map +1 -0
  1021. package/dist/engine/multi-app-detector.d.ts +3 -0
  1022. package/dist/engine/multi-app-detector.d.ts.map +1 -0
  1023. package/dist/engine/multi-app-detector.js +4 -0
  1024. package/dist/engine/multi-app-detector.js.map +1 -0
  1025. package/dist/engine/multi-tenancy-detector.d.ts +17 -0
  1026. package/dist/engine/multi-tenancy-detector.d.ts.map +1 -0
  1027. package/dist/engine/multi-tenancy-detector.js +126 -0
  1028. package/dist/engine/multi-tenancy-detector.js.map +1 -0
  1029. package/dist/engine/nfr-profile-detector.d.ts +20 -0
  1030. package/dist/engine/nfr-profile-detector.d.ts.map +1 -0
  1031. package/dist/engine/nfr-profile-detector.js +212 -0
  1032. package/dist/engine/nfr-profile-detector.js.map +1 -0
  1033. package/dist/engine/nli-context.d.ts +34 -0
  1034. package/dist/engine/nli-context.d.ts.map +1 -0
  1035. package/dist/engine/nli-context.js +176 -0
  1036. package/dist/engine/nli-context.js.map +1 -0
  1037. package/dist/engine/nli-keywords.d.ts +7 -0
  1038. package/dist/engine/nli-keywords.d.ts.map +1 -0
  1039. package/dist/engine/nli-keywords.js +246 -0
  1040. package/dist/engine/nli-keywords.js.map +1 -0
  1041. package/dist/engine/nli-resolver.d.ts +20 -0
  1042. package/dist/engine/nli-resolver.d.ts.map +1 -0
  1043. package/dist/engine/nli-resolver.js +230 -0
  1044. package/dist/engine/nli-resolver.js.map +1 -0
  1045. package/dist/engine/otel-requirements/index.d.ts +4 -0
  1046. package/dist/engine/otel-requirements/index.d.ts.map +1 -0
  1047. package/dist/engine/otel-requirements/index.js +7 -0
  1048. package/dist/engine/otel-requirements/index.js.map +1 -0
  1049. package/dist/engine/otel-requirements/metrics-requirements.d.ts +31 -0
  1050. package/dist/engine/otel-requirements/metrics-requirements.d.ts.map +1 -0
  1051. package/dist/engine/otel-requirements/metrics-requirements.js +98 -0
  1052. package/dist/engine/otel-requirements/metrics-requirements.js.map +1 -0
  1053. package/dist/engine/otel-requirements/slo-requirements.d.ts +33 -0
  1054. package/dist/engine/otel-requirements/slo-requirements.d.ts.map +1 -0
  1055. package/dist/engine/otel-requirements/slo-requirements.js +87 -0
  1056. package/dist/engine/otel-requirements/slo-requirements.js.map +1 -0
  1057. package/dist/engine/otel-requirements/trace-requirements.d.ts +22 -0
  1058. package/dist/engine/otel-requirements/trace-requirements.d.ts.map +1 -0
  1059. package/dist/engine/otel-requirements/trace-requirements.js +59 -0
  1060. package/dist/engine/otel-requirements/trace-requirements.js.map +1 -0
  1061. package/dist/engine/package-registry.d.ts +10 -0
  1062. package/dist/engine/package-registry.d.ts.map +1 -0
  1063. package/dist/engine/package-registry.js +258 -0
  1064. package/dist/engine/package-registry.js.map +1 -0
  1065. package/dist/engine/paradigm-advisor/recommendations.d.ts +23 -0
  1066. package/dist/engine/paradigm-advisor/recommendations.d.ts.map +1 -0
  1067. package/dist/engine/paradigm-advisor/recommendations.js +136 -0
  1068. package/dist/engine/paradigm-advisor/recommendations.js.map +1 -0
  1069. package/dist/engine/paradigm-advisor/tables.d.ts +18 -0
  1070. package/dist/engine/paradigm-advisor/tables.d.ts.map +1 -0
  1071. package/dist/engine/paradigm-advisor/tables.js +176 -0
  1072. package/dist/engine/paradigm-advisor/tables.js.map +1 -0
  1073. package/dist/engine/paradigm-advisor.d.ts +2 -0
  1074. package/dist/engine/paradigm-advisor.d.ts.map +1 -0
  1075. package/dist/engine/paradigm-advisor.js +5 -0
  1076. package/dist/engine/paradigm-advisor.js.map +1 -0
  1077. package/dist/engine/paradigm-detector.d.ts +12 -0
  1078. package/dist/engine/paradigm-detector.d.ts.map +1 -0
  1079. package/dist/engine/paradigm-detector.js +236 -0
  1080. package/dist/engine/paradigm-detector.js.map +1 -0
  1081. package/dist/engine/paradigm-drift-detector.d.ts +13 -0
  1082. package/dist/engine/paradigm-drift-detector.d.ts.map +1 -0
  1083. package/dist/engine/paradigm-drift-detector.js +20 -0
  1084. package/dist/engine/paradigm-drift-detector.js.map +1 -0
  1085. package/dist/engine/paradigm-registry.d.ts +20 -0
  1086. package/dist/engine/paradigm-registry.d.ts.map +1 -0
  1087. package/dist/engine/paradigm-registry.js +44 -0
  1088. package/dist/engine/paradigm-registry.js.map +1 -0
  1089. package/dist/engine/phase-tracker.d.ts +41 -0
  1090. package/dist/engine/phase-tracker.d.ts.map +1 -0
  1091. package/dist/engine/phase-tracker.js +89 -0
  1092. package/dist/engine/phase-tracker.js.map +1 -0
  1093. package/dist/engine/pii-detector/core.d.ts +10 -0
  1094. package/dist/engine/pii-detector/core.d.ts.map +1 -0
  1095. package/dist/engine/pii-detector/core.js +148 -0
  1096. package/dist/engine/pii-detector/core.js.map +1 -0
  1097. package/dist/engine/pii-detector/formatters.d.ts +20 -0
  1098. package/dist/engine/pii-detector/formatters.d.ts.map +1 -0
  1099. package/dist/engine/pii-detector/formatters.js +119 -0
  1100. package/dist/engine/pii-detector/formatters.js.map +1 -0
  1101. package/dist/engine/pii-detector/index.d.ts +4 -0
  1102. package/dist/engine/pii-detector/index.d.ts.map +1 -0
  1103. package/dist/engine/pii-detector/index.js +6 -0
  1104. package/dist/engine/pii-detector/index.js.map +1 -0
  1105. package/dist/engine/pii-detector/legal-framework.d.ts +16 -0
  1106. package/dist/engine/pii-detector/legal-framework.d.ts.map +1 -0
  1107. package/dist/engine/pii-detector/legal-framework.js +70 -0
  1108. package/dist/engine/pii-detector/legal-framework.js.map +1 -0
  1109. package/dist/engine/pii-detector.d.ts +2 -0
  1110. package/dist/engine/pii-detector.d.ts.map +1 -0
  1111. package/dist/engine/pii-detector.js +4 -0
  1112. package/dist/engine/pii-detector.js.map +1 -0
  1113. package/dist/engine/platform-detector/desktop.d.ts +15 -0
  1114. package/dist/engine/platform-detector/desktop.d.ts.map +1 -0
  1115. package/dist/engine/platform-detector/desktop.js +60 -0
  1116. package/dist/engine/platform-detector/desktop.js.map +1 -0
  1117. package/dist/engine/platform-detector/extensions.d.ts +11 -0
  1118. package/dist/engine/platform-detector/extensions.d.ts.map +1 -0
  1119. package/dist/engine/platform-detector/extensions.js +76 -0
  1120. package/dist/engine/platform-detector/extensions.js.map +1 -0
  1121. package/dist/engine/platform-detector/games.d.ts +16 -0
  1122. package/dist/engine/platform-detector/games.d.ts.map +1 -0
  1123. package/dist/engine/platform-detector/games.js +68 -0
  1124. package/dist/engine/platform-detector/games.js.map +1 -0
  1125. package/dist/engine/platform-detector.d.ts +13 -0
  1126. package/dist/engine/platform-detector.d.ts.map +1 -0
  1127. package/dist/engine/platform-detector.js +66 -0
  1128. package/dist/engine/platform-detector.js.map +1 -0
  1129. package/dist/engine/platform-engineering/dora-advisor.d.ts +23 -0
  1130. package/dist/engine/platform-engineering/dora-advisor.d.ts.map +1 -0
  1131. package/dist/engine/platform-engineering/dora-advisor.js +94 -0
  1132. package/dist/engine/platform-engineering/dora-advisor.js.map +1 -0
  1133. package/dist/engine/platform-engineering/dx-analyzer.d.ts +12 -0
  1134. package/dist/engine/platform-engineering/dx-analyzer.d.ts.map +1 -0
  1135. package/dist/engine/platform-engineering/dx-analyzer.js +180 -0
  1136. package/dist/engine/platform-engineering/dx-analyzer.js.map +1 -0
  1137. package/dist/engine/platform-engineering/golden-path-generator.d.ts +19 -0
  1138. package/dist/engine/platform-engineering/golden-path-generator.d.ts.map +1 -0
  1139. package/dist/engine/platform-engineering/golden-path-generator.js +125 -0
  1140. package/dist/engine/platform-engineering/golden-path-generator.js.map +1 -0
  1141. package/dist/engine/platform-engineering/idp-detector.d.ts +11 -0
  1142. package/dist/engine/platform-engineering/idp-detector.d.ts.map +1 -0
  1143. package/dist/engine/platform-engineering/idp-detector.js +265 -0
  1144. package/dist/engine/platform-engineering/idp-detector.js.map +1 -0
  1145. package/dist/engine/pm-integrator.d.ts +24 -0
  1146. package/dist/engine/pm-integrator.d.ts.map +1 -0
  1147. package/dist/engine/pm-integrator.js +179 -0
  1148. package/dist/engine/pm-integrator.js.map +1 -0
  1149. package/dist/engine/pm-platform-creators.d.ts +35 -0
  1150. package/dist/engine/pm-platform-creators.d.ts.map +1 -0
  1151. package/dist/engine/pm-platform-creators.js +269 -0
  1152. package/dist/engine/pm-platform-creators.js.map +1 -0
  1153. package/dist/engine/react-detector.d.ts +10 -0
  1154. package/dist/engine/react-detector.d.ts.map +1 -0
  1155. package/dist/engine/react-detector.js +174 -0
  1156. package/dist/engine/react-detector.js.map +1 -0
  1157. package/dist/engine/readiness-checker.d.ts +3 -0
  1158. package/dist/engine/readiness-checker.d.ts.map +1 -0
  1159. package/dist/engine/readiness-checker.js +182 -0
  1160. package/dist/engine/readiness-checker.js.map +1 -0
  1161. package/dist/engine/registry-extender.d.ts +25 -0
  1162. package/dist/engine/registry-extender.d.ts.map +1 -0
  1163. package/dist/engine/registry-extender.js +60 -0
  1164. package/dist/engine/registry-extender.js.map +1 -0
  1165. package/dist/engine/registry-updater.d.ts +11 -0
  1166. package/dist/engine/registry-updater.d.ts.map +1 -0
  1167. package/dist/engine/registry-updater.js +137 -0
  1168. package/dist/engine/registry-updater.js.map +1 -0
  1169. package/dist/engine/resilience-detector/concurrency-detector.d.ts +15 -0
  1170. package/dist/engine/resilience-detector/concurrency-detector.d.ts.map +1 -0
  1171. package/dist/engine/resilience-detector/concurrency-detector.js +165 -0
  1172. package/dist/engine/resilience-detector/concurrency-detector.js.map +1 -0
  1173. package/dist/engine/resilience-detector/helpers.d.ts +5 -0
  1174. package/dist/engine/resilience-detector/helpers.d.ts.map +1 -0
  1175. package/dist/engine/resilience-detector/helpers.js +62 -0
  1176. package/dist/engine/resilience-detector/helpers.js.map +1 -0
  1177. package/dist/engine/resilience-detector/microservice-detector.d.ts +7 -0
  1178. package/dist/engine/resilience-detector/microservice-detector.d.ts.map +1 -0
  1179. package/dist/engine/resilience-detector/microservice-detector.js +80 -0
  1180. package/dist/engine/resilience-detector/microservice-detector.js.map +1 -0
  1181. package/dist/engine/resilience-detector/middleware-detector.d.ts +8 -0
  1182. package/dist/engine/resilience-detector/middleware-detector.d.ts.map +1 -0
  1183. package/dist/engine/resilience-detector/middleware-detector.js +96 -0
  1184. package/dist/engine/resilience-detector/middleware-detector.js.map +1 -0
  1185. package/dist/engine/resilience-detector/ratelimit-detector.d.ts +10 -0
  1186. package/dist/engine/resilience-detector/ratelimit-detector.d.ts.map +1 -0
  1187. package/dist/engine/resilience-detector/ratelimit-detector.js +55 -0
  1188. package/dist/engine/resilience-detector/ratelimit-detector.js.map +1 -0
  1189. package/dist/engine/resilience-detector/validation-detector.d.ts +9 -0
  1190. package/dist/engine/resilience-detector/validation-detector.d.ts.map +1 -0
  1191. package/dist/engine/resilience-detector/validation-detector.js +30 -0
  1192. package/dist/engine/resilience-detector/validation-detector.js.map +1 -0
  1193. package/dist/engine/resilience-detector.d.ts +12 -0
  1194. package/dist/engine/resilience-detector.d.ts.map +1 -0
  1195. package/dist/engine/resilience-detector.js +36 -0
  1196. package/dist/engine/resilience-detector.js.map +1 -0
  1197. package/dist/engine/scope-filter.d.ts +26 -0
  1198. package/dist/engine/scope-filter.d.ts.map +1 -0
  1199. package/dist/engine/scope-filter.js +109 -0
  1200. package/dist/engine/scope-filter.js.map +1 -0
  1201. package/dist/engine/scope-guardian.d.ts +15 -0
  1202. package/dist/engine/scope-guardian.d.ts.map +1 -0
  1203. package/dist/engine/scope-guardian.js +115 -0
  1204. package/dist/engine/scope-guardian.js.map +1 -0
  1205. package/dist/engine/security-analyzer/config-loader.d.ts +3 -0
  1206. package/dist/engine/security-analyzer/config-loader.d.ts.map +1 -0
  1207. package/dist/engine/security-analyzer/config-loader.js +14 -0
  1208. package/dist/engine/security-analyzer/config-loader.js.map +1 -0
  1209. package/dist/engine/security-analyzer/criteria-generator.d.ts +6 -0
  1210. package/dist/engine/security-analyzer/criteria-generator.d.ts.map +1 -0
  1211. package/dist/engine/security-analyzer/criteria-generator.js +77 -0
  1212. package/dist/engine/security-analyzer/criteria-generator.js.map +1 -0
  1213. package/dist/engine/security-analyzer/profile-detector.d.ts +4 -0
  1214. package/dist/engine/security-analyzer/profile-detector.d.ts.map +1 -0
  1215. package/dist/engine/security-analyzer/profile-detector.js +54 -0
  1216. package/dist/engine/security-analyzer/profile-detector.js.map +1 -0
  1217. package/dist/engine/security-analyzer/report-builder.d.ts +3 -0
  1218. package/dist/engine/security-analyzer/report-builder.d.ts.map +1 -0
  1219. package/dist/engine/security-analyzer/report-builder.js +39 -0
  1220. package/dist/engine/security-analyzer/report-builder.js.map +1 -0
  1221. package/dist/engine/security-analyzer/scoring.d.ts +5 -0
  1222. package/dist/engine/security-analyzer/scoring.d.ts.map +1 -0
  1223. package/dist/engine/security-analyzer/scoring.js +106 -0
  1224. package/dist/engine/security-analyzer/scoring.js.map +1 -0
  1225. package/dist/engine/security-analyzer.d.ts +6 -0
  1226. package/dist/engine/security-analyzer.d.ts.map +1 -0
  1227. package/dist/engine/security-analyzer.js +9 -0
  1228. package/dist/engine/security-analyzer.js.map +1 -0
  1229. package/dist/engine/self-improver.d.ts +8 -0
  1230. package/dist/engine/self-improver.d.ts.map +1 -0
  1231. package/dist/engine/self-improver.js +135 -0
  1232. package/dist/engine/self-improver.js.map +1 -0
  1233. package/dist/engine/session-journal.d.ts +20 -0
  1234. package/dist/engine/session-journal.d.ts.map +1 -0
  1235. package/dist/engine/session-journal.js +152 -0
  1236. package/dist/engine/session-journal.js.map +1 -0
  1237. package/dist/engine/skill-generator/detect.d.ts +24 -0
  1238. package/dist/engine/skill-generator/detect.d.ts.map +1 -0
  1239. package/dist/engine/skill-generator/detect.js +113 -0
  1240. package/dist/engine/skill-generator/detect.js.map +1 -0
  1241. package/dist/engine/skill-generator/format.d.ts +8 -0
  1242. package/dist/engine/skill-generator/format.d.ts.map +1 -0
  1243. package/dist/engine/skill-generator/format.js +74 -0
  1244. package/dist/engine/skill-generator/format.js.map +1 -0
  1245. package/dist/engine/skill-generator/sections-knowledge.d.ts +8 -0
  1246. package/dist/engine/skill-generator/sections-knowledge.d.ts.map +1 -0
  1247. package/dist/engine/skill-generator/sections-knowledge.js +135 -0
  1248. package/dist/engine/skill-generator/sections-knowledge.js.map +1 -0
  1249. package/dist/engine/skill-generator/sections-platform.d.ts +7 -0
  1250. package/dist/engine/skill-generator/sections-platform.d.ts.map +1 -0
  1251. package/dist/engine/skill-generator/sections-platform.js +197 -0
  1252. package/dist/engine/skill-generator/sections-platform.js.map +1 -0
  1253. package/dist/engine/skill-generator/sections.d.ts +3 -0
  1254. package/dist/engine/skill-generator/sections.d.ts.map +1 -0
  1255. package/dist/engine/skill-generator/sections.js +4 -0
  1256. package/dist/engine/skill-generator/sections.js.map +1 -0
  1257. package/dist/engine/skill-generator/skills-content.d.ts +8 -0
  1258. package/dist/engine/skill-generator/skills-content.d.ts.map +1 -0
  1259. package/dist/engine/skill-generator/skills-content.js +177 -0
  1260. package/dist/engine/skill-generator/skills-content.js.map +1 -0
  1261. package/dist/engine/skill-generator/skills-orchestration.d.ts +3 -0
  1262. package/dist/engine/skill-generator/skills-orchestration.d.ts.map +1 -0
  1263. package/dist/engine/skill-generator/skills-orchestration.js +174 -0
  1264. package/dist/engine/skill-generator/skills-orchestration.js.map +1 -0
  1265. package/dist/engine/skill-generator/skills.d.ts +3 -0
  1266. package/dist/engine/skill-generator/skills.d.ts.map +1 -0
  1267. package/dist/engine/skill-generator/skills.js +5 -0
  1268. package/dist/engine/skill-generator/skills.js.map +1 -0
  1269. package/dist/engine/skill-generator.d.ts +19 -0
  1270. package/dist/engine/skill-generator.d.ts.map +1 -0
  1271. package/dist/engine/skill-generator.js +135 -0
  1272. package/dist/engine/skill-generator.js.map +1 -0
  1273. package/dist/engine/skill-generator.test.d.ts +2 -0
  1274. package/dist/engine/skill-generator.test.d.ts.map +1 -0
  1275. package/dist/engine/skill-generator.test.js +742 -0
  1276. package/dist/engine/skill-generator.test.js.map +1 -0
  1277. package/dist/engine/solidity-auditor.d.ts +7 -0
  1278. package/dist/engine/solidity-auditor.d.ts.map +1 -0
  1279. package/dist/engine/solidity-auditor.js +182 -0
  1280. package/dist/engine/solidity-auditor.js.map +1 -0
  1281. package/dist/engine/spec-splitter.d.ts +15 -0
  1282. package/dist/engine/spec-splitter.d.ts.map +1 -0
  1283. package/dist/engine/spec-splitter.js +201 -0
  1284. package/dist/engine/spec-splitter.js.map +1 -0
  1285. package/dist/engine/spec-versioner.d.ts +28 -0
  1286. package/dist/engine/spec-versioner.d.ts.map +1 -0
  1287. package/dist/engine/spec-versioner.js +92 -0
  1288. package/dist/engine/spec-versioner.js.map +1 -0
  1289. package/dist/engine/stack-auditor/build-tool-auditor.d.ts +8 -0
  1290. package/dist/engine/stack-auditor/build-tool-auditor.d.ts.map +1 -0
  1291. package/dist/engine/stack-auditor/build-tool-auditor.js +125 -0
  1292. package/dist/engine/stack-auditor/build-tool-auditor.js.map +1 -0
  1293. package/dist/engine/stack-auditor/health-scorer.d.ts +26 -0
  1294. package/dist/engine/stack-auditor/health-scorer.d.ts.map +1 -0
  1295. package/dist/engine/stack-auditor/health-scorer.js +122 -0
  1296. package/dist/engine/stack-auditor/health-scorer.js.map +1 -0
  1297. package/dist/engine/stack-auditor/index.d.ts +6 -0
  1298. package/dist/engine/stack-auditor/index.d.ts.map +1 -0
  1299. package/dist/engine/stack-auditor/index.js +89 -0
  1300. package/dist/engine/stack-auditor/index.js.map +1 -0
  1301. package/dist/engine/stack-auditor/manifest-reader.d.ts +14 -0
  1302. package/dist/engine/stack-auditor/manifest-reader.d.ts.map +1 -0
  1303. package/dist/engine/stack-auditor/manifest-reader.js +219 -0
  1304. package/dist/engine/stack-auditor/manifest-reader.js.map +1 -0
  1305. package/dist/engine/stack-auditor/vulnerability-scanner.d.ts +10 -0
  1306. package/dist/engine/stack-auditor/vulnerability-scanner.d.ts.map +1 -0
  1307. package/dist/engine/stack-auditor/vulnerability-scanner.js +107 -0
  1308. package/dist/engine/stack-auditor/vulnerability-scanner.js.map +1 -0
  1309. package/dist/engine/supply-chain/build-checker.d.ts +10 -0
  1310. package/dist/engine/supply-chain/build-checker.d.ts.map +1 -0
  1311. package/dist/engine/supply-chain/build-checker.js +153 -0
  1312. package/dist/engine/supply-chain/build-checker.js.map +1 -0
  1313. package/dist/engine/supply-chain/dependency-checker.d.ts +10 -0
  1314. package/dist/engine/supply-chain/dependency-checker.d.ts.map +1 -0
  1315. package/dist/engine/supply-chain/dependency-checker.js +161 -0
  1316. package/dist/engine/supply-chain/dependency-checker.js.map +1 -0
  1317. package/dist/engine/supply-chain/index.d.ts +12 -0
  1318. package/dist/engine/supply-chain/index.d.ts.map +1 -0
  1319. package/dist/engine/supply-chain/index.js +38 -0
  1320. package/dist/engine/supply-chain/index.js.map +1 -0
  1321. package/dist/engine/supply-chain/sbom-checker.d.ts +11 -0
  1322. package/dist/engine/supply-chain/sbom-checker.d.ts.map +1 -0
  1323. package/dist/engine/supply-chain/sbom-checker.js +171 -0
  1324. package/dist/engine/supply-chain/sbom-checker.js.map +1 -0
  1325. package/dist/engine/supply-chain/slsa-checker.d.ts +30 -0
  1326. package/dist/engine/supply-chain/slsa-checker.d.ts.map +1 -0
  1327. package/dist/engine/supply-chain/slsa-checker.js +245 -0
  1328. package/dist/engine/supply-chain/slsa-checker.js.map +1 -0
  1329. package/dist/engine/test-contract-generator.d.ts +18 -0
  1330. package/dist/engine/test-contract-generator.d.ts.map +1 -0
  1331. package/dist/engine/test-contract-generator.js +178 -0
  1332. package/dist/engine/test-contract-generator.js.map +1 -0
  1333. package/dist/engine/test-framework-detector/detectors.d.ts +10 -0
  1334. package/dist/engine/test-framework-detector/detectors.d.ts.map +1 -0
  1335. package/dist/engine/test-framework-detector/detectors.js +246 -0
  1336. package/dist/engine/test-framework-detector/detectors.js.map +1 -0
  1337. package/dist/engine/test-framework-detector/strategy.d.ts +10 -0
  1338. package/dist/engine/test-framework-detector/strategy.d.ts.map +1 -0
  1339. package/dist/engine/test-framework-detector/strategy.js +40 -0
  1340. package/dist/engine/test-framework-detector/strategy.js.map +1 -0
  1341. package/dist/engine/test-framework-detector.d.ts +3 -0
  1342. package/dist/engine/test-framework-detector.d.ts.map +1 -0
  1343. package/dist/engine/test-framework-detector.js +5 -0
  1344. package/dist/engine/test-framework-detector.js.map +1 -0
  1345. package/dist/engine/test-generators/agent-test-pytest.d.ts +2 -0
  1346. package/dist/engine/test-generators/agent-test-pytest.d.ts.map +1 -0
  1347. package/dist/engine/test-generators/agent-test-pytest.js +93 -0
  1348. package/dist/engine/test-generators/agent-test-pytest.js.map +1 -0
  1349. package/dist/engine/test-generators/agent-test-templates.d.ts +15 -0
  1350. package/dist/engine/test-generators/agent-test-templates.d.ts.map +1 -0
  1351. package/dist/engine/test-generators/agent-test-templates.js +247 -0
  1352. package/dist/engine/test-generators/agent-test-templates.js.map +1 -0
  1353. package/dist/engine/test-generators/contract-test-generator.d.ts +24 -0
  1354. package/dist/engine/test-generators/contract-test-generator.d.ts.map +1 -0
  1355. package/dist/engine/test-generators/contract-test-generator.js +287 -0
  1356. package/dist/engine/test-generators/contract-test-generator.js.map +1 -0
  1357. package/dist/engine/test-generators/mock-generator.d.ts +18 -0
  1358. package/dist/engine/test-generators/mock-generator.d.ts.map +1 -0
  1359. package/dist/engine/test-generators/mock-generator.js +203 -0
  1360. package/dist/engine/test-generators/mock-generator.js.map +1 -0
  1361. package/dist/engine/test-generators/platform-test-templates-b.d.ts +10 -0
  1362. package/dist/engine/test-generators/platform-test-templates-b.d.ts.map +1 -0
  1363. package/dist/engine/test-generators/platform-test-templates-b.js +188 -0
  1364. package/dist/engine/test-generators/platform-test-templates-b.js.map +1 -0
  1365. package/dist/engine/test-generators/platform-test-templates-ml.d.ts +3 -0
  1366. package/dist/engine/test-generators/platform-test-templates-ml.d.ts.map +1 -0
  1367. package/dist/engine/test-generators/platform-test-templates-ml.js +119 -0
  1368. package/dist/engine/test-generators/platform-test-templates-ml.js.map +1 -0
  1369. package/dist/engine/test-generators/platform-test-templates.d.ts +28 -0
  1370. package/dist/engine/test-generators/platform-test-templates.d.ts.map +1 -0
  1371. package/dist/engine/test-generators/platform-test-templates.js +263 -0
  1372. package/dist/engine/test-generators/platform-test-templates.js.map +1 -0
  1373. package/dist/engine/test-mocks-generator/mock-templates-b.d.ts +4 -0
  1374. package/dist/engine/test-mocks-generator/mock-templates-b.d.ts.map +1 -0
  1375. package/dist/engine/test-mocks-generator/mock-templates-b.js +196 -0
  1376. package/dist/engine/test-mocks-generator/mock-templates-b.js.map +1 -0
  1377. package/dist/engine/test-mocks-generator/mock-templates.d.ts +4 -0
  1378. package/dist/engine/test-mocks-generator/mock-templates.d.ts.map +1 -0
  1379. package/dist/engine/test-mocks-generator/mock-templates.js +114 -0
  1380. package/dist/engine/test-mocks-generator/mock-templates.js.map +1 -0
  1381. package/dist/engine/test-mocks-generator.d.ts +15 -0
  1382. package/dist/engine/test-mocks-generator.d.ts.map +1 -0
  1383. package/dist/engine/test-mocks-generator.js +52 -0
  1384. package/dist/engine/test-mocks-generator.js.map +1 -0
  1385. package/dist/engine/test-scaffold-generator/advanced-scaffold.d.ts +18 -0
  1386. package/dist/engine/test-scaffold-generator/advanced-scaffold.d.ts.map +1 -0
  1387. package/dist/engine/test-scaffold-generator/advanced-scaffold.js +227 -0
  1388. package/dist/engine/test-scaffold-generator/advanced-scaffold.js.map +1 -0
  1389. package/dist/engine/test-scaffold-generator/helpers.d.ts +6 -0
  1390. package/dist/engine/test-scaffold-generator/helpers.d.ts.map +1 -0
  1391. package/dist/engine/test-scaffold-generator/helpers.js +36 -0
  1392. package/dist/engine/test-scaffold-generator/helpers.js.map +1 -0
  1393. package/dist/engine/test-scaffold-generator/unit-scaffold.d.ts +10 -0
  1394. package/dist/engine/test-scaffold-generator/unit-scaffold.d.ts.map +1 -0
  1395. package/dist/engine/test-scaffold-generator/unit-scaffold.js +87 -0
  1396. package/dist/engine/test-scaffold-generator/unit-scaffold.js.map +1 -0
  1397. package/dist/engine/test-scaffold-generator.d.ts +4 -0
  1398. package/dist/engine/test-scaffold-generator.d.ts.map +1 -0
  1399. package/dist/engine/test-scaffold-generator.js +8 -0
  1400. package/dist/engine/test-scaffold-generator.js.map +1 -0
  1401. package/dist/engine/token-tracker.d.ts +11 -0
  1402. package/dist/engine/token-tracker.d.ts.map +1 -0
  1403. package/dist/engine/token-tracker.js +176 -0
  1404. package/dist/engine/token-tracker.js.map +1 -0
  1405. package/dist/engine/upgrade-planner/breaking-change-parser.d.ts +6 -0
  1406. package/dist/engine/upgrade-planner/breaking-change-parser.d.ts.map +1 -0
  1407. package/dist/engine/upgrade-planner/breaking-change-parser.js +101 -0
  1408. package/dist/engine/upgrade-planner/breaking-change-parser.js.map +1 -0
  1409. package/dist/engine/upgrade-planner/impact-analyzer.d.ts +7 -0
  1410. package/dist/engine/upgrade-planner/impact-analyzer.d.ts.map +1 -0
  1411. package/dist/engine/upgrade-planner/impact-analyzer.js +65 -0
  1412. package/dist/engine/upgrade-planner/impact-analyzer.js.map +1 -0
  1413. package/dist/engine/upgrade-planner/index.d.ts +11 -0
  1414. package/dist/engine/upgrade-planner/index.d.ts.map +1 -0
  1415. package/dist/engine/upgrade-planner/index.js +102 -0
  1416. package/dist/engine/upgrade-planner/index.js.map +1 -0
  1417. package/dist/engine/validator/analyzer.d.ts +22 -0
  1418. package/dist/engine/validator/analyzer.d.ts.map +1 -0
  1419. package/dist/engine/validator/analyzer.js +224 -0
  1420. package/dist/engine/validator/analyzer.js.map +1 -0
  1421. package/dist/engine/validator/checklist.d.ts +10 -0
  1422. package/dist/engine/validator/checklist.d.ts.map +1 -0
  1423. package/dist/engine/validator/checklist.js +147 -0
  1424. package/dist/engine/validator/checklist.js.map +1 -0
  1425. package/dist/engine/validator/dor-dod.d.ts +10 -0
  1426. package/dist/engine/validator/dor-dod.d.ts.map +1 -0
  1427. package/dist/engine/validator/dor-dod.js +199 -0
  1428. package/dist/engine/validator/dor-dod.js.map +1 -0
  1429. package/dist/engine/validator/extractors.d.ts +14 -0
  1430. package/dist/engine/validator/extractors.d.ts.map +1 -0
  1431. package/dist/engine/validator/extractors.js +108 -0
  1432. package/dist/engine/validator/extractors.js.map +1 -0
  1433. package/dist/engine/validator.d.ts +15 -0
  1434. package/dist/engine/validator.d.ts.map +1 -0
  1435. package/dist/engine/validator.js +96 -0
  1436. package/dist/engine/validator.js.map +1 -0
  1437. package/dist/engine/validator.test.d.ts +2 -0
  1438. package/dist/engine/validator.test.d.ts.map +1 -0
  1439. package/dist/engine/validator.test.js +2371 -0
  1440. package/dist/engine/validator.test.js.map +1 -0
  1441. package/dist/engine/web-fetcher/cache.d.ts +6 -0
  1442. package/dist/engine/web-fetcher/cache.d.ts.map +1 -0
  1443. package/dist/engine/web-fetcher/cache.js +27 -0
  1444. package/dist/engine/web-fetcher/cache.js.map +1 -0
  1445. package/dist/engine/web-fetcher/content-extractor.d.ts +8 -0
  1446. package/dist/engine/web-fetcher/content-extractor.d.ts.map +1 -0
  1447. package/dist/engine/web-fetcher/content-extractor.js +81 -0
  1448. package/dist/engine/web-fetcher/content-extractor.js.map +1 -0
  1449. package/dist/engine/web-fetcher/docs-fetcher.d.ts +3 -0
  1450. package/dist/engine/web-fetcher/docs-fetcher.d.ts.map +1 -0
  1451. package/dist/engine/web-fetcher/docs-fetcher.js +60 -0
  1452. package/dist/engine/web-fetcher/docs-fetcher.js.map +1 -0
  1453. package/dist/engine/web-fetcher/http-client.d.ts +7 -0
  1454. package/dist/engine/web-fetcher/http-client.d.ts.map +1 -0
  1455. package/dist/engine/web-fetcher/http-client.js +38 -0
  1456. package/dist/engine/web-fetcher/http-client.js.map +1 -0
  1457. package/dist/engine/web-fetcher/registry-loader.d.ts +10 -0
  1458. package/dist/engine/web-fetcher/registry-loader.d.ts.map +1 -0
  1459. package/dist/engine/web-fetcher/registry-loader.js +60 -0
  1460. package/dist/engine/web-fetcher/registry-loader.js.map +1 -0
  1461. package/dist/engine/web-fetcher/stack-advisor.d.ts +15 -0
  1462. package/dist/engine/web-fetcher/stack-advisor.d.ts.map +1 -0
  1463. package/dist/engine/web-fetcher/stack-advisor.js +290 -0
  1464. package/dist/engine/web-fetcher/stack-advisor.js.map +1 -0
  1465. package/dist/engine/web-fetcher/version-checker.d.ts +4 -0
  1466. package/dist/engine/web-fetcher/version-checker.d.ts.map +1 -0
  1467. package/dist/engine/web-fetcher/version-checker.js +30 -0
  1468. package/dist/engine/web-fetcher/version-checker.js.map +1 -0
  1469. package/dist/engine/web-fetcher.d.ts +9 -0
  1470. package/dist/engine/web-fetcher.d.ts.map +1 -0
  1471. package/dist/engine/web-fetcher.js +40 -0
  1472. package/dist/engine/web-fetcher.js.map +1 -0
  1473. package/dist/engine/web-fetcher.test.d.ts +2 -0
  1474. package/dist/engine/web-fetcher.test.d.ts.map +1 -0
  1475. package/dist/engine/web-fetcher.test.js +360 -0
  1476. package/dist/engine/web-fetcher.test.js.map +1 -0
  1477. package/dist/engine/workflow-validator/git-flow.d.ts +3 -0
  1478. package/dist/engine/workflow-validator/git-flow.d.ts.map +1 -0
  1479. package/dist/engine/workflow-validator/git-flow.js +119 -0
  1480. package/dist/engine/workflow-validator/git-flow.js.map +1 -0
  1481. package/dist/engine/workflow-validator/mcp-conventions.d.ts +3 -0
  1482. package/dist/engine/workflow-validator/mcp-conventions.d.ts.map +1 -0
  1483. package/dist/engine/workflow-validator/mcp-conventions.js +142 -0
  1484. package/dist/engine/workflow-validator/mcp-conventions.js.map +1 -0
  1485. package/dist/engine/workflow-validator/model-selector.d.ts +9 -0
  1486. package/dist/engine/workflow-validator/model-selector.d.ts.map +1 -0
  1487. package/dist/engine/workflow-validator/model-selector.js +127 -0
  1488. package/dist/engine/workflow-validator/model-selector.js.map +1 -0
  1489. package/dist/engine/workflow-validator/worktree-protocol.d.ts +4 -0
  1490. package/dist/engine/workflow-validator/worktree-protocol.d.ts.map +1 -0
  1491. package/dist/engine/workflow-validator/worktree-protocol.js +92 -0
  1492. package/dist/engine/workflow-validator/worktree-protocol.js.map +1 -0
  1493. package/dist/engine/workflow-validator.d.ts +5 -0
  1494. package/dist/engine/workflow-validator.d.ts.map +1 -0
  1495. package/dist/engine/workflow-validator.js +8 -0
  1496. package/dist/engine/workflow-validator.js.map +1 -0
  1497. package/dist/i18n/index.d.ts +43 -0
  1498. package/dist/i18n/index.d.ts.map +1 -0
  1499. package/dist/i18n/index.js +283 -0
  1500. package/dist/i18n/index.js.map +1 -0
  1501. package/dist/i18n/index.test.d.ts +2 -0
  1502. package/dist/i18n/index.test.d.ts.map +1 -0
  1503. package/dist/i18n/index.test.js +375 -0
  1504. package/dist/i18n/index.test.js.map +1 -0
  1505. package/dist/index.d.ts +3 -0
  1506. package/dist/index.d.ts.map +1 -0
  1507. package/dist/index.js +69 -0
  1508. package/dist/index.js.map +1 -0
  1509. package/dist/index.test.d.ts +2 -0
  1510. package/dist/index.test.d.ts.map +1 -0
  1511. package/dist/index.test.js +124 -0
  1512. package/dist/index.test.js.map +1 -0
  1513. package/dist/resources/patterns.d.ts +11 -0
  1514. package/dist/resources/patterns.d.ts.map +1 -0
  1515. package/dist/resources/patterns.js +69 -0
  1516. package/dist/resources/patterns.js.map +1 -0
  1517. package/dist/resources/patterns.test.d.ts +2 -0
  1518. package/dist/resources/patterns.test.d.ts.map +1 -0
  1519. package/dist/resources/patterns.test.js +142 -0
  1520. package/dist/resources/patterns.test.js.map +1 -0
  1521. package/dist/resources/process.d.ts +11 -0
  1522. package/dist/resources/process.d.ts.map +1 -0
  1523. package/dist/resources/process.js +117 -0
  1524. package/dist/resources/process.js.map +1 -0
  1525. package/dist/resources/process.test.d.ts +2 -0
  1526. package/dist/resources/process.test.d.ts.map +1 -0
  1527. package/dist/resources/process.test.js +48 -0
  1528. package/dist/resources/process.test.js.map +1 -0
  1529. package/dist/resources/registry.d.ts +6 -0
  1530. package/dist/resources/registry.d.ts.map +1 -0
  1531. package/dist/resources/registry.js +43 -0
  1532. package/dist/resources/registry.js.map +1 -0
  1533. package/dist/resources/registry.test.d.ts +2 -0
  1534. package/dist/resources/registry.test.d.ts.map +1 -0
  1535. package/dist/resources/registry.test.js +138 -0
  1536. package/dist/resources/registry.test.js.map +1 -0
  1537. package/dist/resources/specs.d.ts +11 -0
  1538. package/dist/resources/specs.d.ts.map +1 -0
  1539. package/dist/resources/specs.js +70 -0
  1540. package/dist/resources/specs.js.map +1 -0
  1541. package/dist/resources/specs.test.d.ts +2 -0
  1542. package/dist/resources/specs.test.d.ts.map +1 -0
  1543. package/dist/resources/specs.test.js +130 -0
  1544. package/dist/resources/specs.test.js.map +1 -0
  1545. package/dist/resources/templates.d.ts +11 -0
  1546. package/dist/resources/templates.d.ts.map +1 -0
  1547. package/dist/resources/templates.js +128 -0
  1548. package/dist/resources/templates.js.map +1 -0
  1549. package/dist/resources/templates.test.d.ts +2 -0
  1550. package/dist/resources/templates.test.d.ts.map +1 -0
  1551. package/dist/resources/templates.test.js +119 -0
  1552. package/dist/resources/templates.test.js.map +1 -0
  1553. package/dist/smoke.test.d.ts +2 -0
  1554. package/dist/smoke.test.d.ts.map +1 -0
  1555. package/dist/smoke.test.js +229 -0
  1556. package/dist/smoke.test.js.map +1 -0
  1557. package/dist/storage/base-store.d.ts +24 -0
  1558. package/dist/storage/base-store.d.ts.map +1 -0
  1559. package/dist/storage/base-store.js +70 -0
  1560. package/dist/storage/base-store.js.map +1 -0
  1561. package/dist/storage/base-store.test.d.ts +2 -0
  1562. package/dist/storage/base-store.test.d.ts.map +1 -0
  1563. package/dist/storage/base-store.test.js +180 -0
  1564. package/dist/storage/base-store.test.js.map +1 -0
  1565. package/dist/storage/decision-store.d.ts +22 -0
  1566. package/dist/storage/decision-store.d.ts.map +1 -0
  1567. package/dist/storage/decision-store.js +75 -0
  1568. package/dist/storage/decision-store.js.map +1 -0
  1569. package/dist/storage/global-store.d.ts +89 -0
  1570. package/dist/storage/global-store.d.ts.map +1 -0
  1571. package/dist/storage/global-store.js +246 -0
  1572. package/dist/storage/global-store.js.map +1 -0
  1573. package/dist/storage/global-store.test.d.ts +2 -0
  1574. package/dist/storage/global-store.test.d.ts.map +1 -0
  1575. package/dist/storage/global-store.test.js +327 -0
  1576. package/dist/storage/global-store.test.js.map +1 -0
  1577. package/dist/storage/index.d.ts +8 -0
  1578. package/dist/storage/index.d.ts.map +1 -0
  1579. package/dist/storage/index.js +9 -0
  1580. package/dist/storage/index.js.map +1 -0
  1581. package/dist/storage/index.test.d.ts +2 -0
  1582. package/dist/storage/index.test.d.ts.map +1 -0
  1583. package/dist/storage/index.test.js +56 -0
  1584. package/dist/storage/index.test.js.map +1 -0
  1585. package/dist/storage/knowledge-store/knowledge.d.ts +20 -0
  1586. package/dist/storage/knowledge-store/knowledge.d.ts.map +1 -0
  1587. package/dist/storage/knowledge-store/knowledge.js +47 -0
  1588. package/dist/storage/knowledge-store/knowledge.js.map +1 -0
  1589. package/dist/storage/knowledge-store/sessions.d.ts +20 -0
  1590. package/dist/storage/knowledge-store/sessions.d.ts.map +1 -0
  1591. package/dist/storage/knowledge-store/sessions.js +168 -0
  1592. package/dist/storage/knowledge-store/sessions.js.map +1 -0
  1593. package/dist/storage/knowledge-store.d.ts +3 -0
  1594. package/dist/storage/knowledge-store.d.ts.map +1 -0
  1595. package/dist/storage/knowledge-store.js +8 -0
  1596. package/dist/storage/knowledge-store.js.map +1 -0
  1597. package/dist/storage/knowledge-store.test.d.ts +2 -0
  1598. package/dist/storage/knowledge-store.test.d.ts.map +1 -0
  1599. package/dist/storage/knowledge-store.test.js +368 -0
  1600. package/dist/storage/knowledge-store.test.js.map +1 -0
  1601. package/dist/storage/metrics-store.d.ts +40 -0
  1602. package/dist/storage/metrics-store.d.ts.map +1 -0
  1603. package/dist/storage/metrics-store.js +100 -0
  1604. package/dist/storage/metrics-store.js.map +1 -0
  1605. package/dist/storage/metrics-store.test.d.ts +2 -0
  1606. package/dist/storage/metrics-store.test.d.ts.map +1 -0
  1607. package/dist/storage/metrics-store.test.js +212 -0
  1608. package/dist/storage/metrics-store.test.js.map +1 -0
  1609. package/dist/storage/pattern-store.d.ts +38 -0
  1610. package/dist/storage/pattern-store.d.ts.map +1 -0
  1611. package/dist/storage/pattern-store.js +114 -0
  1612. package/dist/storage/pattern-store.js.map +1 -0
  1613. package/dist/storage/pattern-store.test.d.ts +2 -0
  1614. package/dist/storage/pattern-store.test.d.ts.map +1 -0
  1615. package/dist/storage/pattern-store.test.js +224 -0
  1616. package/dist/storage/pattern-store.test.js.map +1 -0
  1617. package/dist/storage/session-journal-store.d.ts +8 -0
  1618. package/dist/storage/session-journal-store.d.ts.map +1 -0
  1619. package/dist/storage/session-journal-store.js +21 -0
  1620. package/dist/storage/session-journal-store.js.map +1 -0
  1621. package/dist/storage/spec-store.d.ts +70 -0
  1622. package/dist/storage/spec-store.d.ts.map +1 -0
  1623. package/dist/storage/spec-store.js +172 -0
  1624. package/dist/storage/spec-store.js.map +1 -0
  1625. package/dist/storage/spec-store.test.d.ts +2 -0
  1626. package/dist/storage/spec-store.test.d.ts.map +1 -0
  1627. package/dist/storage/spec-store.test.js +227 -0
  1628. package/dist/storage/spec-store.test.js.map +1 -0
  1629. package/dist/storage/stack-audit-store.d.ts +8 -0
  1630. package/dist/storage/stack-audit-store.d.ts.map +1 -0
  1631. package/dist/storage/stack-audit-store.js +28 -0
  1632. package/dist/storage/stack-audit-store.js.map +1 -0
  1633. package/dist/tools/audit-stack.d.ts +3 -0
  1634. package/dist/tools/audit-stack.d.ts.map +1 -0
  1635. package/dist/tools/audit-stack.js +135 -0
  1636. package/dist/tools/audit-stack.js.map +1 -0
  1637. package/dist/tools/audit.d.ts +3 -0
  1638. package/dist/tools/audit.d.ts.map +1 -0
  1639. package/dist/tools/audit.js +161 -0
  1640. package/dist/tools/audit.js.map +1 -0
  1641. package/dist/tools/audit.test.d.ts +2 -0
  1642. package/dist/tools/audit.test.d.ts.map +1 -0
  1643. package/dist/tools/audit.test.js +169 -0
  1644. package/dist/tools/audit.test.js.map +1 -0
  1645. package/dist/tools/capture-learning.d.ts +3 -0
  1646. package/dist/tools/capture-learning.d.ts.map +1 -0
  1647. package/dist/tools/capture-learning.js +188 -0
  1648. package/dist/tools/capture-learning.js.map +1 -0
  1649. package/dist/tools/challenge-spec/agent-challenge-scenarios.d.ts +12 -0
  1650. package/dist/tools/challenge-spec/agent-challenge-scenarios.d.ts.map +1 -0
  1651. package/dist/tools/challenge-spec/agent-challenge-scenarios.js +107 -0
  1652. package/dist/tools/challenge-spec/agent-challenge-scenarios.js.map +1 -0
  1653. package/dist/tools/challenge-spec/architecture-challenge-scenarios.d.ts +12 -0
  1654. package/dist/tools/challenge-spec/architecture-challenge-scenarios.d.ts.map +1 -0
  1655. package/dist/tools/challenge-spec/architecture-challenge-scenarios.js +113 -0
  1656. package/dist/tools/challenge-spec/architecture-challenge-scenarios.js.map +1 -0
  1657. package/dist/tools/challenge-spec/event-challenge-scenarios.d.ts +14 -0
  1658. package/dist/tools/challenge-spec/event-challenge-scenarios.d.ts.map +1 -0
  1659. package/dist/tools/challenge-spec/event-challenge-scenarios.js +84 -0
  1660. package/dist/tools/challenge-spec/event-challenge-scenarios.js.map +1 -0
  1661. package/dist/tools/challenge-spec/platform-challenge-scenarios-b.d.ts +7 -0
  1662. package/dist/tools/challenge-spec/platform-challenge-scenarios-b.d.ts.map +1 -0
  1663. package/dist/tools/challenge-spec/platform-challenge-scenarios-b.js +45 -0
  1664. package/dist/tools/challenge-spec/platform-challenge-scenarios-b.js.map +1 -0
  1665. package/dist/tools/challenge-spec/platform-challenge-scenarios-b1.d.ts +4 -0
  1666. package/dist/tools/challenge-spec/platform-challenge-scenarios-b1.d.ts.map +1 -0
  1667. package/dist/tools/challenge-spec/platform-challenge-scenarios-b1.js +111 -0
  1668. package/dist/tools/challenge-spec/platform-challenge-scenarios-b1.js.map +1 -0
  1669. package/dist/tools/challenge-spec/platform-challenge-scenarios-b2.d.ts +5 -0
  1670. package/dist/tools/challenge-spec/platform-challenge-scenarios-b2.d.ts.map +1 -0
  1671. package/dist/tools/challenge-spec/platform-challenge-scenarios-b2.js +188 -0
  1672. package/dist/tools/challenge-spec/platform-challenge-scenarios-b2.js.map +1 -0
  1673. package/dist/tools/challenge-spec/platform-challenge-scenarios.d.ts +7 -0
  1674. package/dist/tools/challenge-spec/platform-challenge-scenarios.d.ts.map +1 -0
  1675. package/dist/tools/challenge-spec/platform-challenge-scenarios.js +227 -0
  1676. package/dist/tools/challenge-spec/platform-challenge-scenarios.js.map +1 -0
  1677. package/dist/tools/challenge-spec/privacy-challenge-scenarios.d.ts +11 -0
  1678. package/dist/tools/challenge-spec/privacy-challenge-scenarios.d.ts.map +1 -0
  1679. package/dist/tools/challenge-spec/privacy-challenge-scenarios.js +75 -0
  1680. package/dist/tools/challenge-spec/privacy-challenge-scenarios.js.map +1 -0
  1681. package/dist/tools/challenge-spec/resilience-challenge-scenarios-a.d.ts +35 -0
  1682. package/dist/tools/challenge-spec/resilience-challenge-scenarios-a.d.ts.map +1 -0
  1683. package/dist/tools/challenge-spec/resilience-challenge-scenarios-a.js +199 -0
  1684. package/dist/tools/challenge-spec/resilience-challenge-scenarios-a.js.map +1 -0
  1685. package/dist/tools/challenge-spec/resilience-challenge-scenarios-b.d.ts +14 -0
  1686. package/dist/tools/challenge-spec/resilience-challenge-scenarios-b.d.ts.map +1 -0
  1687. package/dist/tools/challenge-spec/resilience-challenge-scenarios-b.js +149 -0
  1688. package/dist/tools/challenge-spec/resilience-challenge-scenarios-b.js.map +1 -0
  1689. package/dist/tools/challenge-spec/resilience-challenge-scenarios.d.ts +8 -0
  1690. package/dist/tools/challenge-spec/resilience-challenge-scenarios.d.ts.map +1 -0
  1691. package/dist/tools/challenge-spec/resilience-challenge-scenarios.js +32 -0
  1692. package/dist/tools/challenge-spec/resilience-challenge-scenarios.js.map +1 -0
  1693. package/dist/tools/challenge-spec/scenarios-data.d.ts +3 -0
  1694. package/dist/tools/challenge-spec/scenarios-data.d.ts.map +1 -0
  1695. package/dist/tools/challenge-spec/scenarios-data.js +52 -0
  1696. package/dist/tools/challenge-spec/scenarios-data.js.map +1 -0
  1697. package/dist/tools/challenge-spec/scenarios-desktop.d.ts +7 -0
  1698. package/dist/tools/challenge-spec/scenarios-desktop.d.ts.map +1 -0
  1699. package/dist/tools/challenge-spec/scenarios-desktop.js +86 -0
  1700. package/dist/tools/challenge-spec/scenarios-desktop.js.map +1 -0
  1701. package/dist/tools/challenge-spec/scenarios-failure.d.ts +3 -0
  1702. package/dist/tools/challenge-spec/scenarios-failure.d.ts.map +1 -0
  1703. package/dist/tools/challenge-spec/scenarios-failure.js +103 -0
  1704. package/dist/tools/challenge-spec/scenarios-failure.js.map +1 -0
  1705. package/dist/tools/challenge-spec/scenarios-game.d.ts +6 -0
  1706. package/dist/tools/challenge-spec/scenarios-game.d.ts.map +1 -0
  1707. package/dist/tools/challenge-spec/scenarios-game.js +71 -0
  1708. package/dist/tools/challenge-spec/scenarios-game.js.map +1 -0
  1709. package/dist/tools/challenge-spec/scenarios-scale.d.ts +3 -0
  1710. package/dist/tools/challenge-spec/scenarios-scale.d.ts.map +1 -0
  1711. package/dist/tools/challenge-spec/scenarios-scale.js +38 -0
  1712. package/dist/tools/challenge-spec/scenarios-scale.js.map +1 -0
  1713. package/dist/tools/challenge-spec/scenarios-security.d.ts +3 -0
  1714. package/dist/tools/challenge-spec/scenarios-security.d.ts.map +1 -0
  1715. package/dist/tools/challenge-spec/scenarios-security.js +56 -0
  1716. package/dist/tools/challenge-spec/scenarios-security.js.map +1 -0
  1717. package/dist/tools/challenge-spec/scenarios-utils.d.ts +6 -0
  1718. package/dist/tools/challenge-spec/scenarios-utils.d.ts.map +1 -0
  1719. package/dist/tools/challenge-spec/scenarios-utils.js +9 -0
  1720. package/dist/tools/challenge-spec/scenarios-utils.js.map +1 -0
  1721. package/dist/tools/challenge-spec/security-challenge-scenarios.d.ts +12 -0
  1722. package/dist/tools/challenge-spec/security-challenge-scenarios.d.ts.map +1 -0
  1723. package/dist/tools/challenge-spec/security-challenge-scenarios.js +138 -0
  1724. package/dist/tools/challenge-spec/security-challenge-scenarios.js.map +1 -0
  1725. package/dist/tools/challenge-spec-helpers.d.ts +6 -0
  1726. package/dist/tools/challenge-spec-helpers.d.ts.map +1 -0
  1727. package/dist/tools/challenge-spec-helpers.js +109 -0
  1728. package/dist/tools/challenge-spec-helpers.js.map +1 -0
  1729. package/dist/tools/challenge-spec-scenarios.d.ts +8 -0
  1730. package/dist/tools/challenge-spec-scenarios.d.ts.map +1 -0
  1731. package/dist/tools/challenge-spec-scenarios.js +10 -0
  1732. package/dist/tools/challenge-spec-scenarios.js.map +1 -0
  1733. package/dist/tools/challenge-spec.d.ts +3 -0
  1734. package/dist/tools/challenge-spec.d.ts.map +1 -0
  1735. package/dist/tools/challenge-spec.js +150 -0
  1736. package/dist/tools/challenge-spec.js.map +1 -0
  1737. package/dist/tools/challenge-spec.test.d.ts +2 -0
  1738. package/dist/tools/challenge-spec.test.d.ts.map +1 -0
  1739. package/dist/tools/challenge-spec.test.js +782 -0
  1740. package/dist/tools/challenge-spec.test.js.map +1 -0
  1741. package/dist/tools/check-config-health.d.ts +9 -0
  1742. package/dist/tools/check-config-health.d.ts.map +1 -0
  1743. package/dist/tools/check-config-health.js +90 -0
  1744. package/dist/tools/check-config-health.js.map +1 -0
  1745. package/dist/tools/check-readiness.d.ts +3 -0
  1746. package/dist/tools/check-readiness.d.ts.map +1 -0
  1747. package/dist/tools/check-readiness.js +100 -0
  1748. package/dist/tools/check-readiness.js.map +1 -0
  1749. package/dist/tools/check-versions.d.ts +3 -0
  1750. package/dist/tools/check-versions.d.ts.map +1 -0
  1751. package/dist/tools/check-versions.js +77 -0
  1752. package/dist/tools/check-versions.js.map +1 -0
  1753. package/dist/tools/check-versions.test.d.ts +2 -0
  1754. package/dist/tools/check-versions.test.d.ts.map +1 -0
  1755. package/dist/tools/check-versions.test.js +214 -0
  1756. package/dist/tools/check-versions.test.js.map +1 -0
  1757. package/dist/tools/clarify-requirements/questions-context.d.ts +8 -0
  1758. package/dist/tools/clarify-requirements/questions-context.d.ts.map +1 -0
  1759. package/dist/tools/clarify-requirements/questions-context.js +185 -0
  1760. package/dist/tools/clarify-requirements/questions-context.js.map +1 -0
  1761. package/dist/tools/clarify-requirements/questions.d.ts +16 -0
  1762. package/dist/tools/clarify-requirements/questions.d.ts.map +1 -0
  1763. package/dist/tools/clarify-requirements/questions.js +116 -0
  1764. package/dist/tools/clarify-requirements/questions.js.map +1 -0
  1765. package/dist/tools/clarify-requirements.d.ts +3 -0
  1766. package/dist/tools/clarify-requirements.d.ts.map +1 -0
  1767. package/dist/tools/clarify-requirements.js +151 -0
  1768. package/dist/tools/clarify-requirements.js.map +1 -0
  1769. package/dist/tools/clarify-requirements.test.d.ts +2 -0
  1770. package/dist/tools/clarify-requirements.test.d.ts.map +1 -0
  1771. package/dist/tools/clarify-requirements.test.js +161 -0
  1772. package/dist/tools/clarify-requirements.test.js.map +1 -0
  1773. package/dist/tools/consult-docs.d.ts +3 -0
  1774. package/dist/tools/consult-docs.d.ts.map +1 -0
  1775. package/dist/tools/consult-docs.js +74 -0
  1776. package/dist/tools/consult-docs.js.map +1 -0
  1777. package/dist/tools/consult-docs.test.d.ts +2 -0
  1778. package/dist/tools/consult-docs.test.d.ts.map +1 -0
  1779. package/dist/tools/consult-docs.test.js +140 -0
  1780. package/dist/tools/consult-docs.test.js.map +1 -0
  1781. package/dist/tools/contribute-context.d.ts +13 -0
  1782. package/dist/tools/contribute-context.d.ts.map +1 -0
  1783. package/dist/tools/contribute-context.js +100 -0
  1784. package/dist/tools/contribute-context.js.map +1 -0
  1785. package/dist/tools/create-spec/agent-spec-adapter-b.d.ts +6 -0
  1786. package/dist/tools/create-spec/agent-spec-adapter-b.d.ts.map +1 -0
  1787. package/dist/tools/create-spec/agent-spec-adapter-b.js +119 -0
  1788. package/dist/tools/create-spec/agent-spec-adapter-b.js.map +1 -0
  1789. package/dist/tools/create-spec/agent-spec-adapter.d.ts +15 -0
  1790. package/dist/tools/create-spec/agent-spec-adapter.d.ts.map +1 -0
  1791. package/dist/tools/create-spec/agent-spec-adapter.js +189 -0
  1792. package/dist/tools/create-spec/agent-spec-adapter.js.map +1 -0
  1793. package/dist/tools/create-spec/analytics-spec-adapter.d.ts +21 -0
  1794. package/dist/tools/create-spec/analytics-spec-adapter.d.ts.map +1 -0
  1795. package/dist/tools/create-spec/analytics-spec-adapter.js +155 -0
  1796. package/dist/tools/create-spec/analytics-spec-adapter.js.map +1 -0
  1797. package/dist/tools/create-spec/event-spec-adapter.d.ts +14 -0
  1798. package/dist/tools/create-spec/event-spec-adapter.d.ts.map +1 -0
  1799. package/dist/tools/create-spec/event-spec-adapter.js +47 -0
  1800. package/dist/tools/create-spec/event-spec-adapter.js.map +1 -0
  1801. package/dist/tools/create-spec/mcp-spec-adapter.d.ts +7 -0
  1802. package/dist/tools/create-spec/mcp-spec-adapter.d.ts.map +1 -0
  1803. package/dist/tools/create-spec/mcp-spec-adapter.js +238 -0
  1804. package/dist/tools/create-spec/mcp-spec-adapter.js.map +1 -0
  1805. package/dist/tools/create-spec/mcp-tool-contract.d.ts +13 -0
  1806. package/dist/tools/create-spec/mcp-tool-contract.d.ts.map +1 -0
  1807. package/dist/tools/create-spec/mcp-tool-contract.js +141 -0
  1808. package/dist/tools/create-spec/mcp-tool-contract.js.map +1 -0
  1809. package/dist/tools/create-spec/platform-spec-adapter.d.ts +7 -0
  1810. package/dist/tools/create-spec/platform-spec-adapter.d.ts.map +1 -0
  1811. package/dist/tools/create-spec/platform-spec-adapter.js +189 -0
  1812. package/dist/tools/create-spec/platform-spec-adapter.js.map +1 -0
  1813. package/dist/tools/create-spec/privacy-spec-adapter.d.ts +7 -0
  1814. package/dist/tools/create-spec/privacy-spec-adapter.d.ts.map +1 -0
  1815. package/dist/tools/create-spec/privacy-spec-adapter.js +22 -0
  1816. package/dist/tools/create-spec/privacy-spec-adapter.js.map +1 -0
  1817. package/dist/tools/create-spec/security-spec-adapter.d.ts +7 -0
  1818. package/dist/tools/create-spec/security-spec-adapter.d.ts.map +1 -0
  1819. package/dist/tools/create-spec/security-spec-adapter.js +226 -0
  1820. package/dist/tools/create-spec/security-spec-adapter.js.map +1 -0
  1821. package/dist/tools/create-spec-hu/advanced-testing-hu-adapter.d.ts +8 -0
  1822. package/dist/tools/create-spec-hu/advanced-testing-hu-adapter.d.ts.map +1 -0
  1823. package/dist/tools/create-spec-hu/advanced-testing-hu-adapter.js +46 -0
  1824. package/dist/tools/create-spec-hu/advanced-testing-hu-adapter.js.map +1 -0
  1825. package/dist/tools/create-spec-hu/ai-native-hu-adapter.d.ts +9 -0
  1826. package/dist/tools/create-spec-hu/ai-native-hu-adapter.d.ts.map +1 -0
  1827. package/dist/tools/create-spec-hu/ai-native-hu-adapter.js +43 -0
  1828. package/dist/tools/create-spec-hu/ai-native-hu-adapter.js.map +1 -0
  1829. package/dist/tools/create-spec-hu/ai-testing-governance-adapter.d.ts +8 -0
  1830. package/dist/tools/create-spec-hu/ai-testing-governance-adapter.d.ts.map +1 -0
  1831. package/dist/tools/create-spec-hu/ai-testing-governance-adapter.js +70 -0
  1832. package/dist/tools/create-spec-hu/ai-testing-governance-adapter.js.map +1 -0
  1833. package/dist/tools/create-spec-hu/build-tool-hu-adapter.d.ts +10 -0
  1834. package/dist/tools/create-spec-hu/build-tool-hu-adapter.d.ts.map +1 -0
  1835. package/dist/tools/create-spec-hu/build-tool-hu-adapter.js +28 -0
  1836. package/dist/tools/create-spec-hu/build-tool-hu-adapter.js.map +1 -0
  1837. package/dist/tools/create-spec-hu/frontend-perf-hu-adapter.d.ts +9 -0
  1838. package/dist/tools/create-spec-hu/frontend-perf-hu-adapter.d.ts.map +1 -0
  1839. package/dist/tools/create-spec-hu/frontend-perf-hu-adapter.js +196 -0
  1840. package/dist/tools/create-spec-hu/frontend-perf-hu-adapter.js.map +1 -0
  1841. package/dist/tools/create-spec-hu/hu-body-generators.d.ts +13 -0
  1842. package/dist/tools/create-spec-hu/hu-body-generators.d.ts.map +1 -0
  1843. package/dist/tools/create-spec-hu/hu-body-generators.js +251 -0
  1844. package/dist/tools/create-spec-hu/hu-body-generators.js.map +1 -0
  1845. package/dist/tools/create-spec-hu/llm-security-hu-adapter.d.ts +8 -0
  1846. package/dist/tools/create-spec-hu/llm-security-hu-adapter.d.ts.map +1 -0
  1847. package/dist/tools/create-spec-hu/llm-security-hu-adapter.js +36 -0
  1848. package/dist/tools/create-spec-hu/llm-security-hu-adapter.js.map +1 -0
  1849. package/dist/tools/create-spec-hu/local-first-hu-adapter.d.ts +8 -0
  1850. package/dist/tools/create-spec-hu/local-first-hu-adapter.d.ts.map +1 -0
  1851. package/dist/tools/create-spec-hu/local-first-hu-adapter.js +28 -0
  1852. package/dist/tools/create-spec-hu/local-first-hu-adapter.js.map +1 -0
  1853. package/dist/tools/create-spec-hu/otel-hu-adapter.d.ts +8 -0
  1854. package/dist/tools/create-spec-hu/otel-hu-adapter.d.ts.map +1 -0
  1855. package/dist/tools/create-spec-hu/otel-hu-adapter.js +43 -0
  1856. package/dist/tools/create-spec-hu/otel-hu-adapter.js.map +1 -0
  1857. package/dist/tools/create-spec-hu/quality-helpers.d.ts +14 -0
  1858. package/dist/tools/create-spec-hu/quality-helpers.d.ts.map +1 -0
  1859. package/dist/tools/create-spec-hu/quality-helpers.js +188 -0
  1860. package/dist/tools/create-spec-hu/quality-helpers.js.map +1 -0
  1861. package/dist/tools/create-spec-hu/supply-chain-hu-adapter.d.ts +7 -0
  1862. package/dist/tools/create-spec-hu/supply-chain-hu-adapter.d.ts.map +1 -0
  1863. package/dist/tools/create-spec-hu/supply-chain-hu-adapter.js +78 -0
  1864. package/dist/tools/create-spec-hu/supply-chain-hu-adapter.js.map +1 -0
  1865. package/dist/tools/create-spec-hu/swift-android-hu-adapter.d.ts +8 -0
  1866. package/dist/tools/create-spec-hu/swift-android-hu-adapter.d.ts.map +1 -0
  1867. package/dist/tools/create-spec-hu/swift-android-hu-adapter.js +37 -0
  1868. package/dist/tools/create-spec-hu/swift-android-hu-adapter.js.map +1 -0
  1869. package/dist/tools/create-spec-hu.d.ts +13 -0
  1870. package/dist/tools/create-spec-hu.d.ts.map +1 -0
  1871. package/dist/tools/create-spec-hu.js +196 -0
  1872. package/dist/tools/create-spec-hu.js.map +1 -0
  1873. package/dist/tools/create-spec-tech/constitution.d.ts +7 -0
  1874. package/dist/tools/create-spec-tech/constitution.d.ts.map +1 -0
  1875. package/dist/tools/create-spec-tech/constitution.js +60 -0
  1876. package/dist/tools/create-spec-tech/constitution.js.map +1 -0
  1877. package/dist/tools/create-spec-tech/ficha-arch.d.ts +11 -0
  1878. package/dist/tools/create-spec-tech/ficha-arch.d.ts.map +1 -0
  1879. package/dist/tools/create-spec-tech/ficha-arch.js +102 -0
  1880. package/dist/tools/create-spec-tech/ficha-arch.js.map +1 -0
  1881. package/dist/tools/create-spec-tech/ficha-content.d.ts +20 -0
  1882. package/dist/tools/create-spec-tech/ficha-content.d.ts.map +1 -0
  1883. package/dist/tools/create-spec-tech/ficha-content.js +185 -0
  1884. package/dist/tools/create-spec-tech/ficha-content.js.map +1 -0
  1885. package/dist/tools/create-spec-tech/ficha-generator.d.ts +3 -0
  1886. package/dist/tools/create-spec-tech/ficha-generator.d.ts.map +1 -0
  1887. package/dist/tools/create-spec-tech/ficha-generator.js +4 -0
  1888. package/dist/tools/create-spec-tech/ficha-generator.js.map +1 -0
  1889. package/dist/tools/create-spec-tech/section-builders.d.ts +11 -0
  1890. package/dist/tools/create-spec-tech/section-builders.d.ts.map +1 -0
  1891. package/dist/tools/create-spec-tech/section-builders.js +163 -0
  1892. package/dist/tools/create-spec-tech/section-builders.js.map +1 -0
  1893. package/dist/tools/create-spec-tech.d.ts +3 -0
  1894. package/dist/tools/create-spec-tech.d.ts.map +1 -0
  1895. package/dist/tools/create-spec-tech.js +5 -0
  1896. package/dist/tools/create-spec-tech.js.map +1 -0
  1897. package/dist/tools/create-spec.d.ts +3 -0
  1898. package/dist/tools/create-spec.d.ts.map +1 -0
  1899. package/dist/tools/create-spec.js +261 -0
  1900. package/dist/tools/create-spec.js.map +1 -0
  1901. package/dist/tools/create-spec.test.d.ts +2 -0
  1902. package/dist/tools/create-spec.test.d.ts.map +1 -0
  1903. package/dist/tools/create-spec.test.js +233 -0
  1904. package/dist/tools/create-spec.test.js.map +1 -0
  1905. package/dist/tools/data-governance/audit-handler.d.ts +10 -0
  1906. package/dist/tools/data-governance/audit-handler.d.ts.map +1 -0
  1907. package/dist/tools/data-governance/audit-handler.js +161 -0
  1908. package/dist/tools/data-governance/audit-handler.js.map +1 -0
  1909. package/dist/tools/data-governance/detect-handler.d.ts +6 -0
  1910. package/dist/tools/data-governance/detect-handler.d.ts.map +1 -0
  1911. package/dist/tools/data-governance/detect-handler.js +138 -0
  1912. package/dist/tools/data-governance/detect-handler.js.map +1 -0
  1913. package/dist/tools/data-governance.d.ts +3 -0
  1914. package/dist/tools/data-governance.d.ts.map +1 -0
  1915. package/dist/tools/data-governance.js +43 -0
  1916. package/dist/tools/data-governance.js.map +1 -0
  1917. package/dist/tools/define-ui-contract/a11y-contract.d.ts +15 -0
  1918. package/dist/tools/define-ui-contract/a11y-contract.d.ts.map +1 -0
  1919. package/dist/tools/define-ui-contract/a11y-contract.js +199 -0
  1920. package/dist/tools/define-ui-contract/a11y-contract.js.map +1 -0
  1921. package/dist/tools/define-ui-contract/agent-interaction-contract.d.ts +14 -0
  1922. package/dist/tools/define-ui-contract/agent-interaction-contract.d.ts.map +1 -0
  1923. package/dist/tools/define-ui-contract/agent-interaction-contract.js +56 -0
  1924. package/dist/tools/define-ui-contract/agent-interaction-contract.js.map +1 -0
  1925. package/dist/tools/define-ui-contract/css-styling-contract.d.ts +21 -0
  1926. package/dist/tools/define-ui-contract/css-styling-contract.d.ts.map +1 -0
  1927. package/dist/tools/define-ui-contract/css-styling-contract.js +227 -0
  1928. package/dist/tools/define-ui-contract/css-styling-contract.js.map +1 -0
  1929. package/dist/tools/define-ui-contract-desktop/desktop-contract.d.ts +10 -0
  1930. package/dist/tools/define-ui-contract-desktop/desktop-contract.d.ts.map +1 -0
  1931. package/dist/tools/define-ui-contract-desktop/desktop-contract.js +192 -0
  1932. package/dist/tools/define-ui-contract-desktop/desktop-contract.js.map +1 -0
  1933. package/dist/tools/define-ui-contract-desktop/native-contract.d.ts +18 -0
  1934. package/dist/tools/define-ui-contract-desktop/native-contract.d.ts.map +1 -0
  1935. package/dist/tools/define-ui-contract-desktop/native-contract.js +160 -0
  1936. package/dist/tools/define-ui-contract-desktop/native-contract.js.map +1 -0
  1937. package/dist/tools/define-ui-contract-desktop.d.ts +3 -0
  1938. package/dist/tools/define-ui-contract-desktop.d.ts.map +1 -0
  1939. package/dist/tools/define-ui-contract-desktop.js +5 -0
  1940. package/dist/tools/define-ui-contract-desktop.js.map +1 -0
  1941. package/dist/tools/define-ui-contract-extensions.d.ts +10 -0
  1942. package/dist/tools/define-ui-contract-extensions.d.ts.map +1 -0
  1943. package/dist/tools/define-ui-contract-extensions.js +261 -0
  1944. package/dist/tools/define-ui-contract-extensions.js.map +1 -0
  1945. package/dist/tools/define-ui-contract-games.d.ts +10 -0
  1946. package/dist/tools/define-ui-contract-games.d.ts.map +1 -0
  1947. package/dist/tools/define-ui-contract-games.js +183 -0
  1948. package/dist/tools/define-ui-contract-games.js.map +1 -0
  1949. package/dist/tools/define-ui-contract-mobile.d.ts +5 -0
  1950. package/dist/tools/define-ui-contract-mobile.d.ts.map +1 -0
  1951. package/dist/tools/define-ui-contract-mobile.js +115 -0
  1952. package/dist/tools/define-ui-contract-mobile.js.map +1 -0
  1953. package/dist/tools/define-ui-contract-web/component-tree.d.ts +4 -0
  1954. package/dist/tools/define-ui-contract-web/component-tree.d.ts.map +1 -0
  1955. package/dist/tools/define-ui-contract-web/component-tree.js +240 -0
  1956. package/dist/tools/define-ui-contract-web/component-tree.js.map +1 -0
  1957. package/dist/tools/define-ui-contract-web/index.d.ts +3 -0
  1958. package/dist/tools/define-ui-contract-web/index.d.ts.map +1 -0
  1959. package/dist/tools/define-ui-contract-web/index.js +4 -0
  1960. package/dist/tools/define-ui-contract-web/index.js.map +1 -0
  1961. package/dist/tools/define-ui-contract-web/states.d.ts +5 -0
  1962. package/dist/tools/define-ui-contract-web/states.d.ts.map +1 -0
  1963. package/dist/tools/define-ui-contract-web/states.js +127 -0
  1964. package/dist/tools/define-ui-contract-web/states.js.map +1 -0
  1965. package/dist/tools/define-ui-contract-web.d.ts +3 -0
  1966. package/dist/tools/define-ui-contract-web.d.ts.map +1 -0
  1967. package/dist/tools/define-ui-contract-web.js +5 -0
  1968. package/dist/tools/define-ui-contract-web.js.map +1 -0
  1969. package/dist/tools/define-ui-contract.d.ts +3 -0
  1970. package/dist/tools/define-ui-contract.d.ts.map +1 -0
  1971. package/dist/tools/define-ui-contract.js +258 -0
  1972. package/dist/tools/define-ui-contract.js.map +1 -0
  1973. package/dist/tools/define-ui-contract.test.d.ts +2 -0
  1974. package/dist/tools/define-ui-contract.test.d.ts.map +1 -0
  1975. package/dist/tools/define-ui-contract.test.js +479 -0
  1976. package/dist/tools/define-ui-contract.test.js.map +1 -0
  1977. package/dist/tools/design-schema/agent-schema.d.ts +11 -0
  1978. package/dist/tools/design-schema/agent-schema.d.ts.map +1 -0
  1979. package/dist/tools/design-schema/agent-schema.js +47 -0
  1980. package/dist/tools/design-schema/agent-schema.js.map +1 -0
  1981. package/dist/tools/design-schema/entity-extractor.d.ts +3 -0
  1982. package/dist/tools/design-schema/entity-extractor.d.ts.map +1 -0
  1983. package/dist/tools/design-schema/entity-extractor.js +130 -0
  1984. package/dist/tools/design-schema/entity-extractor.js.map +1 -0
  1985. package/dist/tools/design-schema/index.d.ts +6 -0
  1986. package/dist/tools/design-schema/index.d.ts.map +1 -0
  1987. package/dist/tools/design-schema/index.js +7 -0
  1988. package/dist/tools/design-schema/index.js.map +1 -0
  1989. package/dist/tools/design-schema/mcp-schema.d.ts +4 -0
  1990. package/dist/tools/design-schema/mcp-schema.d.ts.map +1 -0
  1991. package/dist/tools/design-schema/mcp-schema.js +145 -0
  1992. package/dist/tools/design-schema/mcp-schema.js.map +1 -0
  1993. package/dist/tools/design-schema/platform-schemas-b.d.ts +15 -0
  1994. package/dist/tools/design-schema/platform-schemas-b.d.ts.map +1 -0
  1995. package/dist/tools/design-schema/platform-schemas-b.js +175 -0
  1996. package/dist/tools/design-schema/platform-schemas-b.js.map +1 -0
  1997. package/dist/tools/design-schema/platform-schemas.d.ts +15 -0
  1998. package/dist/tools/design-schema/platform-schemas.d.ts.map +1 -0
  1999. package/dist/tools/design-schema/platform-schemas.js +107 -0
  2000. package/dist/tools/design-schema/platform-schemas.js.map +1 -0
  2001. package/dist/tools/design-schema/privacy-audit.d.ts +8 -0
  2002. package/dist/tools/design-schema/privacy-audit.d.ts.map +1 -0
  2003. package/dist/tools/design-schema/privacy-audit.js +40 -0
  2004. package/dist/tools/design-schema/privacy-audit.js.map +1 -0
  2005. package/dist/tools/design-schema-games.d.ts +10 -0
  2006. package/dist/tools/design-schema-games.d.ts.map +1 -0
  2007. package/dist/tools/design-schema-games.js +177 -0
  2008. package/dist/tools/design-schema-games.js.map +1 -0
  2009. package/dist/tools/design-schema-mobile.d.ts +19 -0
  2010. package/dist/tools/design-schema-mobile.d.ts.map +1 -0
  2011. package/dist/tools/design-schema-mobile.js +88 -0
  2012. package/dist/tools/design-schema-mobile.js.map +1 -0
  2013. package/dist/tools/design-schema-sql/migrations.d.ts +5 -0
  2014. package/dist/tools/design-schema-sql/migrations.d.ts.map +1 -0
  2015. package/dist/tools/design-schema-sql/migrations.js +106 -0
  2016. package/dist/tools/design-schema-sql/migrations.js.map +1 -0
  2017. package/dist/tools/design-schema-sql/tables.d.ts +5 -0
  2018. package/dist/tools/design-schema-sql/tables.d.ts.map +1 -0
  2019. package/dist/tools/design-schema-sql/tables.js +215 -0
  2020. package/dist/tools/design-schema-sql/tables.js.map +1 -0
  2021. package/dist/tools/design-schema-sql.d.ts +3 -0
  2022. package/dist/tools/design-schema-sql.d.ts.map +1 -0
  2023. package/dist/tools/design-schema-sql.js +5 -0
  2024. package/dist/tools/design-schema-sql.js.map +1 -0
  2025. package/dist/tools/design-schema.d.ts +4 -0
  2026. package/dist/tools/design-schema.d.ts.map +1 -0
  2027. package/dist/tools/design-schema.js +219 -0
  2028. package/dist/tools/design-schema.js.map +1 -0
  2029. package/dist/tools/design-schema.test.d.ts +2 -0
  2030. package/dist/tools/design-schema.test.d.ts.map +1 -0
  2031. package/dist/tools/design-schema.test.js +301 -0
  2032. package/dist/tools/design-schema.test.js.map +1 -0
  2033. package/dist/tools/detect-agent.d.ts +3 -0
  2034. package/dist/tools/detect-agent.d.ts.map +1 -0
  2035. package/dist/tools/detect-agent.js +78 -0
  2036. package/dist/tools/detect-agent.js.map +1 -0
  2037. package/dist/tools/detect-agent.test.d.ts +2 -0
  2038. package/dist/tools/detect-agent.test.d.ts.map +1 -0
  2039. package/dist/tools/detect-agent.test.js +133 -0
  2040. package/dist/tools/detect-agent.test.js.map +1 -0
  2041. package/dist/tools/detect-contradictions.d.ts +3 -0
  2042. package/dist/tools/detect-contradictions.d.ts.map +1 -0
  2043. package/dist/tools/detect-contradictions.js +85 -0
  2044. package/dist/tools/detect-contradictions.js.map +1 -0
  2045. package/dist/tools/detect-deprecations.d.ts +3 -0
  2046. package/dist/tools/detect-deprecations.d.ts.map +1 -0
  2047. package/dist/tools/detect-deprecations.js +49 -0
  2048. package/dist/tools/detect-deprecations.js.map +1 -0
  2049. package/dist/tools/detect-drift-event.d.ts +15 -0
  2050. package/dist/tools/detect-drift-event.d.ts.map +1 -0
  2051. package/dist/tools/detect-drift-event.js +67 -0
  2052. package/dist/tools/detect-drift-event.js.map +1 -0
  2053. package/dist/tools/detect-drift.d.ts +3 -0
  2054. package/dist/tools/detect-drift.d.ts.map +1 -0
  2055. package/dist/tools/detect-drift.js +275 -0
  2056. package/dist/tools/detect-drift.js.map +1 -0
  2057. package/dist/tools/detect-drift.test.d.ts +2 -0
  2058. package/dist/tools/detect-drift.test.d.ts.map +1 -0
  2059. package/dist/tools/detect-drift.test.js +312 -0
  2060. package/dist/tools/detect-drift.test.js.map +1 -0
  2061. package/dist/tools/discover-mcps.d.ts +3 -0
  2062. package/dist/tools/discover-mcps.d.ts.map +1 -0
  2063. package/dist/tools/discover-mcps.js +249 -0
  2064. package/dist/tools/discover-mcps.js.map +1 -0
  2065. package/dist/tools/discover-mcps.test.d.ts +2 -0
  2066. package/dist/tools/discover-mcps.test.d.ts.map +1 -0
  2067. package/dist/tools/discover-mcps.test.js +345 -0
  2068. package/dist/tools/discover-mcps.test.js.map +1 -0
  2069. package/dist/tools/estimate.d.ts +3 -0
  2070. package/dist/tools/estimate.d.ts.map +1 -0
  2071. package/dist/tools/estimate.js +84 -0
  2072. package/dist/tools/estimate.js.map +1 -0
  2073. package/dist/tools/estimate.test.d.ts +2 -0
  2074. package/dist/tools/estimate.test.d.ts.map +1 -0
  2075. package/dist/tools/estimate.test.js +137 -0
  2076. package/dist/tools/estimate.test.js.map +1 -0
  2077. package/dist/tools/event-contracts/handlers.d.ts +6 -0
  2078. package/dist/tools/event-contracts/handlers.d.ts.map +1 -0
  2079. package/dist/tools/event-contracts/handlers.js +209 -0
  2080. package/dist/tools/event-contracts/handlers.js.map +1 -0
  2081. package/dist/tools/event-contracts/index.d.ts +3 -0
  2082. package/dist/tools/event-contracts/index.d.ts.map +1 -0
  2083. package/dist/tools/event-contracts/index.js +4 -0
  2084. package/dist/tools/event-contracts/index.js.map +1 -0
  2085. package/dist/tools/event-contracts/schema-helpers.d.ts +15 -0
  2086. package/dist/tools/event-contracts/schema-helpers.d.ts.map +1 -0
  2087. package/dist/tools/event-contracts/schema-helpers.js +69 -0
  2088. package/dist/tools/event-contracts/schema-helpers.js.map +1 -0
  2089. package/dist/tools/event-contracts.d.ts +3 -0
  2090. package/dist/tools/event-contracts.d.ts.map +1 -0
  2091. package/dist/tools/event-contracts.js +28 -0
  2092. package/dist/tools/event-contracts.js.map +1 -0
  2093. package/dist/tools/facilitate.d.ts +8 -0
  2094. package/dist/tools/facilitate.d.ts.map +1 -0
  2095. package/dist/tools/facilitate.js +264 -0
  2096. package/dist/tools/facilitate.js.map +1 -0
  2097. package/dist/tools/generate-adr/decisions.d.ts +3 -0
  2098. package/dist/tools/generate-adr/decisions.d.ts.map +1 -0
  2099. package/dist/tools/generate-adr/decisions.js +275 -0
  2100. package/dist/tools/generate-adr/decisions.js.map +1 -0
  2101. package/dist/tools/generate-adr/helpers.d.ts +5 -0
  2102. package/dist/tools/generate-adr/helpers.d.ts.map +1 -0
  2103. package/dist/tools/generate-adr/helpers.js +39 -0
  2104. package/dist/tools/generate-adr/helpers.js.map +1 -0
  2105. package/dist/tools/generate-adr/index.d.ts +3 -0
  2106. package/dist/tools/generate-adr/index.d.ts.map +1 -0
  2107. package/dist/tools/generate-adr/index.js +4 -0
  2108. package/dist/tools/generate-adr/index.js.map +1 -0
  2109. package/dist/tools/generate-adr.d.ts +3 -0
  2110. package/dist/tools/generate-adr.d.ts.map +1 -0
  2111. package/dist/tools/generate-adr.js +46 -0
  2112. package/dist/tools/generate-adr.js.map +1 -0
  2113. package/dist/tools/generate-adr.test.d.ts +2 -0
  2114. package/dist/tools/generate-adr.test.d.ts.map +1 -0
  2115. package/dist/tools/generate-adr.test.js +206 -0
  2116. package/dist/tools/generate-adr.test.js.map +1 -0
  2117. package/dist/tools/generate-checklist.d.ts +3 -0
  2118. package/dist/tools/generate-checklist.d.ts.map +1 -0
  2119. package/dist/tools/generate-checklist.js +166 -0
  2120. package/dist/tools/generate-checklist.js.map +1 -0
  2121. package/dist/tools/generate-checklist.test.d.ts +2 -0
  2122. package/dist/tools/generate-checklist.test.d.ts.map +1 -0
  2123. package/dist/tools/generate-checklist.test.js +201 -0
  2124. package/dist/tools/generate-checklist.test.js.map +1 -0
  2125. package/dist/tools/generate-docs/agent-docs-generator.d.ts +7 -0
  2126. package/dist/tools/generate-docs/agent-docs-generator.d.ts.map +1 -0
  2127. package/dist/tools/generate-docs/agent-docs-generator.js +213 -0
  2128. package/dist/tools/generate-docs/agent-docs-generator.js.map +1 -0
  2129. package/dist/tools/generate-docs/bounded-context-map-generator.d.ts +4 -0
  2130. package/dist/tools/generate-docs/bounded-context-map-generator.d.ts.map +1 -0
  2131. package/dist/tools/generate-docs/bounded-context-map-generator.js +104 -0
  2132. package/dist/tools/generate-docs/bounded-context-map-generator.js.map +1 -0
  2133. package/dist/tools/generate-docs/mobile-installation-guide.d.ts +8 -0
  2134. package/dist/tools/generate-docs/mobile-installation-guide.d.ts.map +1 -0
  2135. package/dist/tools/generate-docs/mobile-installation-guide.js +136 -0
  2136. package/dist/tools/generate-docs/mobile-installation-guide.js.map +1 -0
  2137. package/dist/tools/generate-docs.d.ts +3 -0
  2138. package/dist/tools/generate-docs.d.ts.map +1 -0
  2139. package/dist/tools/generate-docs.js +138 -0
  2140. package/dist/tools/generate-docs.js.map +1 -0
  2141. package/dist/tools/generate-docs.test.d.ts +2 -0
  2142. package/dist/tools/generate-docs.test.d.ts.map +1 -0
  2143. package/dist/tools/generate-docs.test.js +183 -0
  2144. package/dist/tools/generate-docs.test.js.map +1 -0
  2145. package/dist/tools/generate-execution-plan.d.ts +3 -0
  2146. package/dist/tools/generate-execution-plan.d.ts.map +1 -0
  2147. package/dist/tools/generate-execution-plan.js +130 -0
  2148. package/dist/tools/generate-execution-plan.js.map +1 -0
  2149. package/dist/tools/generate-execution-plan.test.d.ts +2 -0
  2150. package/dist/tools/generate-execution-plan.test.d.ts.map +1 -0
  2151. package/dist/tools/generate-execution-plan.test.js +643 -0
  2152. package/dist/tools/generate-execution-plan.test.js.map +1 -0
  2153. package/dist/tools/generate-orchestration-script.d.ts +3 -0
  2154. package/dist/tools/generate-orchestration-script.d.ts.map +1 -0
  2155. package/dist/tools/generate-orchestration-script.js +50 -0
  2156. package/dist/tools/generate-orchestration-script.js.map +1 -0
  2157. package/dist/tools/generate-rules.d.ts +3 -0
  2158. package/dist/tools/generate-rules.d.ts.map +1 -0
  2159. package/dist/tools/generate-rules.js +71 -0
  2160. package/dist/tools/generate-rules.js.map +1 -0
  2161. package/dist/tools/generate-rules.test.d.ts +2 -0
  2162. package/dist/tools/generate-rules.test.d.ts.map +1 -0
  2163. package/dist/tools/generate-rules.test.js +148 -0
  2164. package/dist/tools/generate-rules.test.js.map +1 -0
  2165. package/dist/tools/generate-skill.d.ts +3 -0
  2166. package/dist/tools/generate-skill.d.ts.map +1 -0
  2167. package/dist/tools/generate-skill.js +57 -0
  2168. package/dist/tools/generate-skill.js.map +1 -0
  2169. package/dist/tools/generate-skill.test.d.ts +2 -0
  2170. package/dist/tools/generate-skill.test.d.ts.map +1 -0
  2171. package/dist/tools/generate-skill.test.js +138 -0
  2172. package/dist/tools/generate-skill.test.js.map +1 -0
  2173. package/dist/tools/generate-sub-agent.d.ts +3 -0
  2174. package/dist/tools/generate-sub-agent.d.ts.map +1 -0
  2175. package/dist/tools/generate-sub-agent.js +82 -0
  2176. package/dist/tools/generate-sub-agent.js.map +1 -0
  2177. package/dist/tools/generate-sub-agent.test.d.ts +2 -0
  2178. package/dist/tools/generate-sub-agent.test.d.ts.map +1 -0
  2179. package/dist/tools/generate-sub-agent.test.js +162 -0
  2180. package/dist/tools/generate-sub-agent.test.js.map +1 -0
  2181. package/dist/tools/generate-tests/adapters/contract-testing-adapter.d.ts +16 -0
  2182. package/dist/tools/generate-tests/adapters/contract-testing-adapter.d.ts.map +1 -0
  2183. package/dist/tools/generate-tests/adapters/contract-testing-adapter.js +67 -0
  2184. package/dist/tools/generate-tests/adapters/contract-testing-adapter.js.map +1 -0
  2185. package/dist/tools/generate-tests/generators/a11y-tests-generator.d.ts +4 -0
  2186. package/dist/tools/generate-tests/generators/a11y-tests-generator.d.ts.map +1 -0
  2187. package/dist/tools/generate-tests/generators/a11y-tests-generator.js +93 -0
  2188. package/dist/tools/generate-tests/generators/a11y-tests-generator.js.map +1 -0
  2189. package/dist/tools/generate-tests/generators/advanced-testing-generator.d.ts +16 -0
  2190. package/dist/tools/generate-tests/generators/advanced-testing-generator.d.ts.map +1 -0
  2191. package/dist/tools/generate-tests/generators/advanced-testing-generator.js +146 -0
  2192. package/dist/tools/generate-tests/generators/advanced-testing-generator.js.map +1 -0
  2193. package/dist/tools/generate-tests/generators/concurrency-test-generator/go-templates.d.ts +2 -0
  2194. package/dist/tools/generate-tests/generators/concurrency-test-generator/go-templates.d.ts.map +1 -0
  2195. package/dist/tools/generate-tests/generators/concurrency-test-generator/go-templates.js +62 -0
  2196. package/dist/tools/generate-tests/generators/concurrency-test-generator/go-templates.js.map +1 -0
  2197. package/dist/tools/generate-tests/generators/concurrency-test-generator/java-templates.d.ts +3 -0
  2198. package/dist/tools/generate-tests/generators/concurrency-test-generator/java-templates.d.ts.map +1 -0
  2199. package/dist/tools/generate-tests/generators/concurrency-test-generator/java-templates.js +94 -0
  2200. package/dist/tools/generate-tests/generators/concurrency-test-generator/java-templates.js.map +1 -0
  2201. package/dist/tools/generate-tests/generators/concurrency-test-generator/js-templates.d.ts +3 -0
  2202. package/dist/tools/generate-tests/generators/concurrency-test-generator/js-templates.d.ts.map +1 -0
  2203. package/dist/tools/generate-tests/generators/concurrency-test-generator/js-templates.js +98 -0
  2204. package/dist/tools/generate-tests/generators/concurrency-test-generator/js-templates.js.map +1 -0
  2205. package/dist/tools/generate-tests/generators/concurrency-test-generator/python-rust-templates.d.ts +4 -0
  2206. package/dist/tools/generate-tests/generators/concurrency-test-generator/python-rust-templates.d.ts.map +1 -0
  2207. package/dist/tools/generate-tests/generators/concurrency-test-generator/python-rust-templates.js +129 -0
  2208. package/dist/tools/generate-tests/generators/concurrency-test-generator/python-rust-templates.js.map +1 -0
  2209. package/dist/tools/generate-tests/generators/concurrency-test-generator/utils.d.ts +6 -0
  2210. package/dist/tools/generate-tests/generators/concurrency-test-generator/utils.d.ts.map +1 -0
  2211. package/dist/tools/generate-tests/generators/concurrency-test-generator/utils.js +43 -0
  2212. package/dist/tools/generate-tests/generators/concurrency-test-generator/utils.js.map +1 -0
  2213. package/dist/tools/generate-tests/generators/concurrency-test-generator.d.ts +26 -0
  2214. package/dist/tools/generate-tests/generators/concurrency-test-generator.d.ts.map +1 -0
  2215. package/dist/tools/generate-tests/generators/concurrency-test-generator.js +128 -0
  2216. package/dist/tools/generate-tests/generators/concurrency-test-generator.js.map +1 -0
  2217. package/dist/tools/generate-tests/generators/event-test-generator.d.ts +17 -0
  2218. package/dist/tools/generate-tests/generators/event-test-generator.d.ts.map +1 -0
  2219. package/dist/tools/generate-tests/generators/event-test-generator.js +144 -0
  2220. package/dist/tools/generate-tests/generators/event-test-generator.js.map +1 -0
  2221. package/dist/tools/generate-tests/generators/game-tests-generator.d.ts +16 -0
  2222. package/dist/tools/generate-tests/generators/game-tests-generator.d.ts.map +1 -0
  2223. package/dist/tools/generate-tests/generators/game-tests-generator.js +166 -0
  2224. package/dist/tools/generate-tests/generators/game-tests-generator.js.map +1 -0
  2225. package/dist/tools/generate-tests/generators/hypermedia-generator-b.d.ts +9 -0
  2226. package/dist/tools/generate-tests/generators/hypermedia-generator-b.d.ts.map +1 -0
  2227. package/dist/tools/generate-tests/generators/hypermedia-generator-b.js +321 -0
  2228. package/dist/tools/generate-tests/generators/hypermedia-generator-b.js.map +1 -0
  2229. package/dist/tools/generate-tests/generators/hypermedia-generator.d.ts +11 -0
  2230. package/dist/tools/generate-tests/generators/hypermedia-generator.d.ts.map +1 -0
  2231. package/dist/tools/generate-tests/generators/hypermedia-generator.js +53 -0
  2232. package/dist/tools/generate-tests/generators/hypermedia-generator.js.map +1 -0
  2233. package/dist/tools/generate-tests/generators/llm-security-test-generator.d.ts +14 -0
  2234. package/dist/tools/generate-tests/generators/llm-security-test-generator.d.ts.map +1 -0
  2235. package/dist/tools/generate-tests/generators/llm-security-test-generator.js +213 -0
  2236. package/dist/tools/generate-tests/generators/llm-security-test-generator.js.map +1 -0
  2237. package/dist/tools/generate-tests/generators/local-first-test-generator.d.ts +14 -0
  2238. package/dist/tools/generate-tests/generators/local-first-test-generator.d.ts.map +1 -0
  2239. package/dist/tools/generate-tests/generators/local-first-test-generator.js +310 -0
  2240. package/dist/tools/generate-tests/generators/local-first-test-generator.js.map +1 -0
  2241. package/dist/tools/generate-tests/generators/mcp-tests-generator.d.ts +5 -0
  2242. package/dist/tools/generate-tests/generators/mcp-tests-generator.d.ts.map +1 -0
  2243. package/dist/tools/generate-tests/generators/mcp-tests-generator.js +237 -0
  2244. package/dist/tools/generate-tests/generators/mcp-tests-generator.js.map +1 -0
  2245. package/dist/tools/generate-tests/generators/otel-test-generator.d.ts +14 -0
  2246. package/dist/tools/generate-tests/generators/otel-test-generator.d.ts.map +1 -0
  2247. package/dist/tools/generate-tests/generators/otel-test-generator.js +272 -0
  2248. package/dist/tools/generate-tests/generators/otel-test-generator.js.map +1 -0
  2249. package/dist/tools/generate-tests/generators/supply-chain-test-generator.d.ts +15 -0
  2250. package/dist/tools/generate-tests/generators/supply-chain-test-generator.d.ts.map +1 -0
  2251. package/dist/tools/generate-tests/generators/supply-chain-test-generator.js +154 -0
  2252. package/dist/tools/generate-tests/generators/supply-chain-test-generator.js.map +1 -0
  2253. package/dist/tools/generate-tests/spec-dispatcher.d.ts +18 -0
  2254. package/dist/tools/generate-tests/spec-dispatcher.d.ts.map +1 -0
  2255. package/dist/tools/generate-tests/spec-dispatcher.js +129 -0
  2256. package/dist/tools/generate-tests/spec-dispatcher.js.map +1 -0
  2257. package/dist/tools/generate-tests-content.d.ts +5 -0
  2258. package/dist/tools/generate-tests-content.d.ts.map +1 -0
  2259. package/dist/tools/generate-tests-content.js +196 -0
  2260. package/dist/tools/generate-tests-content.js.map +1 -0
  2261. package/dist/tools/generate-tests-mobile.d.ts +3 -0
  2262. package/dist/tools/generate-tests-mobile.d.ts.map +1 -0
  2263. package/dist/tools/generate-tests-mobile.js +300 -0
  2264. package/dist/tools/generate-tests-mobile.js.map +1 -0
  2265. package/dist/tools/generate-tests.d.ts +3 -0
  2266. package/dist/tools/generate-tests.d.ts.map +1 -0
  2267. package/dist/tools/generate-tests.js +285 -0
  2268. package/dist/tools/generate-tests.js.map +1 -0
  2269. package/dist/tools/generate-tests.test.d.ts +2 -0
  2270. package/dist/tools/generate-tests.test.d.ts.map +1 -0
  2271. package/dist/tools/generate-tests.test.js +222 -0
  2272. package/dist/tools/generate-tests.test.js.map +1 -0
  2273. package/dist/tools/git/branch-ops.d.ts +4 -0
  2274. package/dist/tools/git/branch-ops.d.ts.map +1 -0
  2275. package/dist/tools/git/branch-ops.js +106 -0
  2276. package/dist/tools/git/branch-ops.js.map +1 -0
  2277. package/dist/tools/git/breaking-ops.d.ts +5 -0
  2278. package/dist/tools/git/breaking-ops.d.ts.map +1 -0
  2279. package/dist/tools/git/breaking-ops.js +181 -0
  2280. package/dist/tools/git/breaking-ops.js.map +1 -0
  2281. package/dist/tools/git/changelog-ops.d.ts +3 -0
  2282. package/dist/tools/git/changelog-ops.d.ts.map +1 -0
  2283. package/dist/tools/git/changelog-ops.js +128 -0
  2284. package/dist/tools/git/changelog-ops.js.map +1 -0
  2285. package/dist/tools/git/commit-ops.d.ts +4 -0
  2286. package/dist/tools/git/commit-ops.d.ts.map +1 -0
  2287. package/dist/tools/git/commit-ops.js +189 -0
  2288. package/dist/tools/git/commit-ops.js.map +1 -0
  2289. package/dist/tools/git/git-helpers.d.ts +27 -0
  2290. package/dist/tools/git/git-helpers.d.ts.map +1 -0
  2291. package/dist/tools/git/git-helpers.js +112 -0
  2292. package/dist/tools/git/git-helpers.js.map +1 -0
  2293. package/dist/tools/git/hook-ops.d.ts +3 -0
  2294. package/dist/tools/git/hook-ops.d.ts.map +1 -0
  2295. package/dist/tools/git/hook-ops.js +194 -0
  2296. package/dist/tools/git/hook-ops.js.map +1 -0
  2297. package/dist/tools/git/pr-ops.d.ts +3 -0
  2298. package/dist/tools/git/pr-ops.d.ts.map +1 -0
  2299. package/dist/tools/git/pr-ops.js +161 -0
  2300. package/dist/tools/git/pr-ops.js.map +1 -0
  2301. package/dist/tools/git/release-ops.d.ts +5 -0
  2302. package/dist/tools/git/release-ops.d.ts.map +1 -0
  2303. package/dist/tools/git/release-ops.js +209 -0
  2304. package/dist/tools/git/release-ops.js.map +1 -0
  2305. package/dist/tools/git/sync-ops.d.ts +5 -0
  2306. package/dist/tools/git/sync-ops.d.ts.map +1 -0
  2307. package/dist/tools/git/sync-ops.js +196 -0
  2308. package/dist/tools/git/sync-ops.js.map +1 -0
  2309. package/dist/tools/init-constitution/handler.d.ts +3 -0
  2310. package/dist/tools/init-constitution/handler.d.ts.map +1 -0
  2311. package/dist/tools/init-constitution/handler.js +109 -0
  2312. package/dist/tools/init-constitution/handler.js.map +1 -0
  2313. package/dist/tools/init-constitution/platform-principles.d.ts +5 -0
  2314. package/dist/tools/init-constitution/platform-principles.d.ts.map +1 -0
  2315. package/dist/tools/init-constitution/platform-principles.js +95 -0
  2316. package/dist/tools/init-constitution/platform-principles.js.map +1 -0
  2317. package/dist/tools/init-constitution/principle-detector.d.ts +13 -0
  2318. package/dist/tools/init-constitution/principle-detector.d.ts.map +1 -0
  2319. package/dist/tools/init-constitution/principle-detector.js +203 -0
  2320. package/dist/tools/init-constitution/principle-detector.js.map +1 -0
  2321. package/dist/tools/init-constitution.d.ts +3 -0
  2322. package/dist/tools/init-constitution.d.ts.map +1 -0
  2323. package/dist/tools/init-constitution.js +5 -0
  2324. package/dist/tools/init-constitution.js.map +1 -0
  2325. package/dist/tools/init-constitution.test.d.ts +2 -0
  2326. package/dist/tools/init-constitution.test.d.ts.map +1 -0
  2327. package/dist/tools/init-constitution.test.js +398 -0
  2328. package/dist/tools/init-constitution.test.js.map +1 -0
  2329. package/dist/tools/init-project/handler.d.ts +3 -0
  2330. package/dist/tools/init-project/handler.d.ts.map +1 -0
  2331. package/dist/tools/init-project/handler.js +221 -0
  2332. package/dist/tools/init-project/handler.js.map +1 -0
  2333. package/dist/tools/init-project/helpers.d.ts +31 -0
  2334. package/dist/tools/init-project/helpers.d.ts.map +1 -0
  2335. package/dist/tools/init-project/helpers.js +201 -0
  2336. package/dist/tools/init-project/helpers.js.map +1 -0
  2337. package/dist/tools/init-project.d.ts +2 -0
  2338. package/dist/tools/init-project.d.ts.map +1 -0
  2339. package/dist/tools/init-project.js +4 -0
  2340. package/dist/tools/init-project.js.map +1 -0
  2341. package/dist/tools/init-project.test.d.ts +2 -0
  2342. package/dist/tools/init-project.test.d.ts.map +1 -0
  2343. package/dist/tools/init-project.test.js +158 -0
  2344. package/dist/tools/init-project.test.js.map +1 -0
  2345. package/dist/tools/integrate-pm.d.ts +3 -0
  2346. package/dist/tools/integrate-pm.d.ts.map +1 -0
  2347. package/dist/tools/integrate-pm.js +255 -0
  2348. package/dist/tools/integrate-pm.js.map +1 -0
  2349. package/dist/tools/integrate-pm.test.d.ts +2 -0
  2350. package/dist/tools/integrate-pm.test.d.ts.map +1 -0
  2351. package/dist/tools/integrate-pm.test.js +558 -0
  2352. package/dist/tools/integrate-pm.test.js.map +1 -0
  2353. package/dist/tools/learn.d.ts +8 -0
  2354. package/dist/tools/learn.d.ts.map +1 -0
  2355. package/dist/tools/learn.js +98 -0
  2356. package/dist/tools/learn.js.map +1 -0
  2357. package/dist/tools/learn.test.d.ts +2 -0
  2358. package/dist/tools/learn.test.d.ts.map +1 -0
  2359. package/dist/tools/learn.test.js +123 -0
  2360. package/dist/tools/learn.test.js.map +1 -0
  2361. package/dist/tools/list-specs.d.ts +3 -0
  2362. package/dist/tools/list-specs.d.ts.map +1 -0
  2363. package/dist/tools/list-specs.js +82 -0
  2364. package/dist/tools/list-specs.js.map +1 -0
  2365. package/dist/tools/list-specs.test.d.ts +2 -0
  2366. package/dist/tools/list-specs.test.d.ts.map +1 -0
  2367. package/dist/tools/list-specs.test.js +110 -0
  2368. package/dist/tools/list-specs.test.js.map +1 -0
  2369. package/dist/tools/log-decision.d.ts +3 -0
  2370. package/dist/tools/log-decision.d.ts.map +1 -0
  2371. package/dist/tools/log-decision.js +138 -0
  2372. package/dist/tools/log-decision.js.map +1 -0
  2373. package/dist/tools/manage-context/crud-handlers.d.ts +7 -0
  2374. package/dist/tools/manage-context/crud-handlers.d.ts.map +1 -0
  2375. package/dist/tools/manage-context/crud-handlers.js +150 -0
  2376. package/dist/tools/manage-context/crud-handlers.js.map +1 -0
  2377. package/dist/tools/manage-context/handlers.d.ts +4 -0
  2378. package/dist/tools/manage-context/handlers.d.ts.map +1 -0
  2379. package/dist/tools/manage-context/handlers.js +8 -0
  2380. package/dist/tools/manage-context/handlers.js.map +1 -0
  2381. package/dist/tools/manage-context/note-health-handlers.d.ts +7 -0
  2382. package/dist/tools/manage-context/note-health-handlers.d.ts.map +1 -0
  2383. package/dist/tools/manage-context/note-health-handlers.js +210 -0
  2384. package/dist/tools/manage-context/note-health-handlers.js.map +1 -0
  2385. package/dist/tools/manage-context/store.d.ts +36 -0
  2386. package/dist/tools/manage-context/store.d.ts.map +1 -0
  2387. package/dist/tools/manage-context/store.js +178 -0
  2388. package/dist/tools/manage-context/store.js.map +1 -0
  2389. package/dist/tools/manage-context.d.ts +3 -0
  2390. package/dist/tools/manage-context.d.ts.map +1 -0
  2391. package/dist/tools/manage-context.js +106 -0
  2392. package/dist/tools/manage-context.js.map +1 -0
  2393. package/dist/tools/manage-context.test.d.ts +2 -0
  2394. package/dist/tools/manage-context.test.d.ts.map +1 -0
  2395. package/dist/tools/manage-context.test.js +359 -0
  2396. package/dist/tools/manage-context.test.js.map +1 -0
  2397. package/dist/tools/manage-git.d.ts +3 -0
  2398. package/dist/tools/manage-git.d.ts.map +1 -0
  2399. package/dist/tools/manage-git.js +61 -0
  2400. package/dist/tools/manage-git.js.map +1 -0
  2401. package/dist/tools/manage-git.test.d.ts +2 -0
  2402. package/dist/tools/manage-git.test.d.ts.map +1 -0
  2403. package/dist/tools/manage-git.test.js +882 -0
  2404. package/dist/tools/manage-git.test.js.map +1 -0
  2405. package/dist/tools/manage-scope.d.ts +3 -0
  2406. package/dist/tools/manage-scope.d.ts.map +1 -0
  2407. package/dist/tools/manage-scope.js +202 -0
  2408. package/dist/tools/manage-scope.js.map +1 -0
  2409. package/dist/tools/migrate-tech/advanced-handlers.d.ts +7 -0
  2410. package/dist/tools/migrate-tech/advanced-handlers.d.ts.map +1 -0
  2411. package/dist/tools/migrate-tech/advanced-handlers.js +216 -0
  2412. package/dist/tools/migrate-tech/advanced-handlers.js.map +1 -0
  2413. package/dist/tools/migrate-tech/build-tool-handlers.d.ts +6 -0
  2414. package/dist/tools/migrate-tech/build-tool-handlers.d.ts.map +1 -0
  2415. package/dist/tools/migrate-tech/build-tool-handlers.js +92 -0
  2416. package/dist/tools/migrate-tech/build-tool-handlers.js.map +1 -0
  2417. package/dist/tools/migrate-tech/core-handlers.d.ts +7 -0
  2418. package/dist/tools/migrate-tech/core-handlers.d.ts.map +1 -0
  2419. package/dist/tools/migrate-tech/core-handlers.js +145 -0
  2420. package/dist/tools/migrate-tech/core-handlers.js.map +1 -0
  2421. package/dist/tools/migrate-tech/data-handlers.d.ts +9 -0
  2422. package/dist/tools/migrate-tech/data-handlers.d.ts.map +1 -0
  2423. package/dist/tools/migrate-tech/data-handlers.js +137 -0
  2424. package/dist/tools/migrate-tech/data-handlers.js.map +1 -0
  2425. package/dist/tools/migrate-tech/detect-pending-handler.d.ts +3 -0
  2426. package/dist/tools/migrate-tech/detect-pending-handler.d.ts.map +1 -0
  2427. package/dist/tools/migrate-tech/detect-pending-handler.js +31 -0
  2428. package/dist/tools/migrate-tech/detect-pending-handler.js.map +1 -0
  2429. package/dist/tools/migrate-tech-advanced/rollback-handlers.d.ts +7 -0
  2430. package/dist/tools/migrate-tech-advanced/rollback-handlers.d.ts.map +1 -0
  2431. package/dist/tools/migrate-tech-advanced/rollback-handlers.js +214 -0
  2432. package/dist/tools/migrate-tech-advanced/rollback-handlers.js.map +1 -0
  2433. package/dist/tools/migrate-tech-advanced/service-handlers.d.ts +6 -0
  2434. package/dist/tools/migrate-tech-advanced/service-handlers.d.ts.map +1 -0
  2435. package/dist/tools/migrate-tech-advanced/service-handlers.js +79 -0
  2436. package/dist/tools/migrate-tech-advanced/service-handlers.js.map +1 -0
  2437. package/dist/tools/migrate-tech-advanced.d.ts +3 -0
  2438. package/dist/tools/migrate-tech-advanced.d.ts.map +1 -0
  2439. package/dist/tools/migrate-tech-advanced.js +5 -0
  2440. package/dist/tools/migrate-tech-advanced.js.map +1 -0
  2441. package/dist/tools/migrate-tech.d.ts +3 -0
  2442. package/dist/tools/migrate-tech.d.ts.map +1 -0
  2443. package/dist/tools/migrate-tech.js +77 -0
  2444. package/dist/tools/migrate-tech.js.map +1 -0
  2445. package/dist/tools/orchestrate/journal-brief-handlers.d.ts +4 -0
  2446. package/dist/tools/orchestrate/journal-brief-handlers.d.ts.map +1 -0
  2447. package/dist/tools/orchestrate/journal-brief-handlers.js +63 -0
  2448. package/dist/tools/orchestrate/journal-brief-handlers.js.map +1 -0
  2449. package/dist/tools/orchestrate/session-handlers.d.ts +8 -0
  2450. package/dist/tools/orchestrate/session-handlers.d.ts.map +1 -0
  2451. package/dist/tools/orchestrate/session-handlers.js +193 -0
  2452. package/dist/tools/orchestrate/session-handlers.js.map +1 -0
  2453. package/dist/tools/orchestrate/state.d.ts +9 -0
  2454. package/dist/tools/orchestrate/state.d.ts.map +1 -0
  2455. package/dist/tools/orchestrate/state.js +31 -0
  2456. package/dist/tools/orchestrate/state.js.map +1 -0
  2457. package/dist/tools/orchestrate/utils.d.ts +3 -0
  2458. package/dist/tools/orchestrate/utils.d.ts.map +1 -0
  2459. package/dist/tools/orchestrate/utils.js +4 -0
  2460. package/dist/tools/orchestrate/utils.js.map +1 -0
  2461. package/dist/tools/orchestrate-agents.d.ts +3 -0
  2462. package/dist/tools/orchestrate-agents.d.ts.map +1 -0
  2463. package/dist/tools/orchestrate-agents.js +82 -0
  2464. package/dist/tools/orchestrate-agents.js.map +1 -0
  2465. package/dist/tools/orchestrate-distribution.d.ts +11 -0
  2466. package/dist/tools/orchestrate-distribution.d.ts.map +1 -0
  2467. package/dist/tools/orchestrate-distribution.js +210 -0
  2468. package/dist/tools/orchestrate-distribution.js.map +1 -0
  2469. package/dist/tools/orchestrate-locking.d.ts +35 -0
  2470. package/dist/tools/orchestrate-locking.d.ts.map +1 -0
  2471. package/dist/tools/orchestrate-locking.js +202 -0
  2472. package/dist/tools/orchestrate-locking.js.map +1 -0
  2473. package/dist/tools/orchestrate.d.ts +3 -0
  2474. package/dist/tools/orchestrate.d.ts.map +1 -0
  2475. package/dist/tools/orchestrate.js +70 -0
  2476. package/dist/tools/orchestrate.js.map +1 -0
  2477. package/dist/tools/orchestrate.test.d.ts +2 -0
  2478. package/dist/tools/orchestrate.test.d.ts.map +1 -0
  2479. package/dist/tools/orchestrate.test.js +1117 -0
  2480. package/dist/tools/orchestrate.test.js.map +1 -0
  2481. package/dist/tools/package-handoff.d.ts +3 -0
  2482. package/dist/tools/package-handoff.d.ts.map +1 -0
  2483. package/dist/tools/package-handoff.js +139 -0
  2484. package/dist/tools/package-handoff.js.map +1 -0
  2485. package/dist/tools/paradigm-report.d.ts +7 -0
  2486. package/dist/tools/paradigm-report.d.ts.map +1 -0
  2487. package/dist/tools/paradigm-report.js +84 -0
  2488. package/dist/tools/paradigm-report.js.map +1 -0
  2489. package/dist/tools/plan-upgrade.d.ts +3 -0
  2490. package/dist/tools/plan-upgrade.d.ts.map +1 -0
  2491. package/dist/tools/plan-upgrade.js +38 -0
  2492. package/dist/tools/plan-upgrade.js.map +1 -0
  2493. package/dist/tools/reality-check.d.ts +3 -0
  2494. package/dist/tools/reality-check.d.ts.map +1 -0
  2495. package/dist/tools/reality-check.js +70 -0
  2496. package/dist/tools/reality-check.js.map +1 -0
  2497. package/dist/tools/reconcile-spec.d.ts +3 -0
  2498. package/dist/tools/reconcile-spec.d.ts.map +1 -0
  2499. package/dist/tools/reconcile-spec.js +247 -0
  2500. package/dist/tools/reconcile-spec.js.map +1 -0
  2501. package/dist/tools/reconcile-spec.test.d.ts +2 -0
  2502. package/dist/tools/reconcile-spec.test.d.ts.map +1 -0
  2503. package/dist/tools/reconcile-spec.test.js +259 -0
  2504. package/dist/tools/reconcile-spec.test.js.map +1 -0
  2505. package/dist/tools/register-agent-tools.d.ts +3 -0
  2506. package/dist/tools/register-agent-tools.d.ts.map +1 -0
  2507. package/dist/tools/register-agent-tools.js +87 -0
  2508. package/dist/tools/register-agent-tools.js.map +1 -0
  2509. package/dist/tools/register-context-tools.d.ts +3 -0
  2510. package/dist/tools/register-context-tools.d.ts.map +1 -0
  2511. package/dist/tools/register-context-tools.js +83 -0
  2512. package/dist/tools/register-context-tools.js.map +1 -0
  2513. package/dist/tools/register-event-tools.d.ts +3 -0
  2514. package/dist/tools/register-event-tools.d.ts.map +1 -0
  2515. package/dist/tools/register-event-tools.js +109 -0
  2516. package/dist/tools/register-event-tools.js.map +1 -0
  2517. package/dist/tools/register-facilitator-tools.d.ts +6 -0
  2518. package/dist/tools/register-facilitator-tools.d.ts.map +1 -0
  2519. package/dist/tools/register-facilitator-tools.js +56 -0
  2520. package/dist/tools/register-facilitator-tools.js.map +1 -0
  2521. package/dist/tools/register-governance-tools.d.ts +3 -0
  2522. package/dist/tools/register-governance-tools.d.ts.map +1 -0
  2523. package/dist/tools/register-governance-tools.js +31 -0
  2524. package/dist/tools/register-governance-tools.js.map +1 -0
  2525. package/dist/tools/register-learning-tools.d.ts +3 -0
  2526. package/dist/tools/register-learning-tools.d.ts.map +1 -0
  2527. package/dist/tools/register-learning-tools.js +37 -0
  2528. package/dist/tools/register-learning-tools.js.map +1 -0
  2529. package/dist/tools/register-memory-tools.d.ts +3 -0
  2530. package/dist/tools/register-memory-tools.d.ts.map +1 -0
  2531. package/dist/tools/register-memory-tools.js +71 -0
  2532. package/dist/tools/register-memory-tools.js.map +1 -0
  2533. package/dist/tools/register-migration-tools.d.ts +3 -0
  2534. package/dist/tools/register-migration-tools.d.ts.map +1 -0
  2535. package/dist/tools/register-migration-tools.js +68 -0
  2536. package/dist/tools/register-migration-tools.js.map +1 -0
  2537. package/dist/tools/register-platform-tools/design-stack-tools.d.ts +6 -0
  2538. package/dist/tools/register-platform-tools/design-stack-tools.d.ts.map +1 -0
  2539. package/dist/tools/register-platform-tools/design-stack-tools.js +161 -0
  2540. package/dist/tools/register-platform-tools/design-stack-tools.js.map +1 -0
  2541. package/dist/tools/register-platform-tools/lifecycle-infra-tools.d.ts +6 -0
  2542. package/dist/tools/register-platform-tools/lifecycle-infra-tools.d.ts.map +1 -0
  2543. package/dist/tools/register-platform-tools/lifecycle-infra-tools.js +155 -0
  2544. package/dist/tools/register-platform-tools/lifecycle-infra-tools.js.map +1 -0
  2545. package/dist/tools/register-platform-tools.d.ts +6 -0
  2546. package/dist/tools/register-platform-tools.d.ts.map +1 -0
  2547. package/dist/tools/register-platform-tools.js +12 -0
  2548. package/dist/tools/register-platform-tools.js.map +1 -0
  2549. package/dist/tools/register-platform-tools.test.d.ts +2 -0
  2550. package/dist/tools/register-platform-tools.test.d.ts.map +1 -0
  2551. package/dist/tools/register-platform-tools.test.js +404 -0
  2552. package/dist/tools/register-platform-tools.test.js.map +1 -0
  2553. package/dist/tools/register-readiness-tools.d.ts +3 -0
  2554. package/dist/tools/register-readiness-tools.d.ts.map +1 -0
  2555. package/dist/tools/register-readiness-tools.js +28 -0
  2556. package/dist/tools/register-readiness-tools.js.map +1 -0
  2557. package/dist/tools/register-scope-tools.d.ts +6 -0
  2558. package/dist/tools/register-scope-tools.d.ts.map +1 -0
  2559. package/dist/tools/register-scope-tools.js +64 -0
  2560. package/dist/tools/register-scope-tools.js.map +1 -0
  2561. package/dist/tools/register-security-tools.d.ts +3 -0
  2562. package/dist/tools/register-security-tools.d.ts.map +1 -0
  2563. package/dist/tools/register-security-tools.js +24 -0
  2564. package/dist/tools/register-security-tools.js.map +1 -0
  2565. package/dist/tools/register-spec-tools/analysis-tools.d.ts +6 -0
  2566. package/dist/tools/register-spec-tools/analysis-tools.d.ts.map +1 -0
  2567. package/dist/tools/register-spec-tools/analysis-tools.js +129 -0
  2568. package/dist/tools/register-spec-tools/analysis-tools.js.map +1 -0
  2569. package/dist/tools/register-spec-tools/core-spec-tools.d.ts +6 -0
  2570. package/dist/tools/register-spec-tools/core-spec-tools.d.ts.map +1 -0
  2571. package/dist/tools/register-spec-tools/core-spec-tools.js +159 -0
  2572. package/dist/tools/register-spec-tools/core-spec-tools.js.map +1 -0
  2573. package/dist/tools/register-spec-tools.d.ts +6 -0
  2574. package/dist/tools/register-spec-tools.d.ts.map +1 -0
  2575. package/dist/tools/register-spec-tools.js +12 -0
  2576. package/dist/tools/register-spec-tools.js.map +1 -0
  2577. package/dist/tools/register-spec-tools.test.d.ts +2 -0
  2578. package/dist/tools/register-spec-tools.test.d.ts.map +1 -0
  2579. package/dist/tools/register-spec-tools.test.js +407 -0
  2580. package/dist/tools/register-spec-tools.test.js.map +1 -0
  2581. package/dist/tools/register-stack-tools.d.ts +3 -0
  2582. package/dist/tools/register-stack-tools.d.ts.map +1 -0
  2583. package/dist/tools/register-stack-tools.js +60 -0
  2584. package/dist/tools/register-stack-tools.js.map +1 -0
  2585. package/dist/tools/register-workflow-tools.d.ts +3 -0
  2586. package/dist/tools/register-workflow-tools.d.ts.map +1 -0
  2587. package/dist/tools/register-workflow-tools.js +36 -0
  2588. package/dist/tools/register-workflow-tools.js.map +1 -0
  2589. package/dist/tools/reverse-engineer/analyzer.d.ts +14 -0
  2590. package/dist/tools/reverse-engineer/analyzer.d.ts.map +1 -0
  2591. package/dist/tools/reverse-engineer/analyzer.js +180 -0
  2592. package/dist/tools/reverse-engineer/analyzer.js.map +1 -0
  2593. package/dist/tools/reverse-engineer/handler.d.ts +3 -0
  2594. package/dist/tools/reverse-engineer/handler.d.ts.map +1 -0
  2595. package/dist/tools/reverse-engineer/handler.js +239 -0
  2596. package/dist/tools/reverse-engineer/handler.js.map +1 -0
  2597. package/dist/tools/reverse-engineer.d.ts +3 -0
  2598. package/dist/tools/reverse-engineer.d.ts.map +1 -0
  2599. package/dist/tools/reverse-engineer.js +5 -0
  2600. package/dist/tools/reverse-engineer.js.map +1 -0
  2601. package/dist/tools/reverse-engineer.test.d.ts +2 -0
  2602. package/dist/tools/reverse-engineer.test.d.ts.map +1 -0
  2603. package/dist/tools/reverse-engineer.test.js +206 -0
  2604. package/dist/tools/reverse-engineer.test.js.map +1 -0
  2605. package/dist/tools/safe-handler.d.ts +10 -0
  2606. package/dist/tools/safe-handler.d.ts.map +1 -0
  2607. package/dist/tools/safe-handler.js +25 -0
  2608. package/dist/tools/safe-handler.js.map +1 -0
  2609. package/dist/tools/schemas/agents.d.ts +21 -0
  2610. package/dist/tools/schemas/agents.d.ts.map +1 -0
  2611. package/dist/tools/schemas/agents.js +22 -0
  2612. package/dist/tools/schemas/agents.js.map +1 -0
  2613. package/dist/tools/schemas/analysis.d.ts +28 -0
  2614. package/dist/tools/schemas/analysis.d.ts.map +1 -0
  2615. package/dist/tools/schemas/analysis.js +29 -0
  2616. package/dist/tools/schemas/analysis.js.map +1 -0
  2617. package/dist/tools/schemas/index.d.ts +6 -0
  2618. package/dist/tools/schemas/index.d.ts.map +1 -0
  2619. package/dist/tools/schemas/index.js +7 -0
  2620. package/dist/tools/schemas/index.js.map +1 -0
  2621. package/dist/tools/schemas/infra.d.ts +22 -0
  2622. package/dist/tools/schemas/infra.d.ts.map +1 -0
  2623. package/dist/tools/schemas/infra.js +17 -0
  2624. package/dist/tools/schemas/infra.js.map +1 -0
  2625. package/dist/tools/schemas/lifecycle.d.ts +72 -0
  2626. package/dist/tools/schemas/lifecycle.d.ts.map +1 -0
  2627. package/dist/tools/schemas/lifecycle.js +68 -0
  2628. package/dist/tools/schemas/lifecycle.js.map +1 -0
  2629. package/dist/tools/schemas/spec.d.ts +45 -0
  2630. package/dist/tools/schemas/spec.d.ts.map +1 -0
  2631. package/dist/tools/schemas/spec.js +28 -0
  2632. package/dist/tools/schemas/spec.js.map +1 -0
  2633. package/dist/tools/schemas.d.ts +20 -0
  2634. package/dist/tools/schemas.d.ts.map +1 -0
  2635. package/dist/tools/schemas.js +133 -0
  2636. package/dist/tools/schemas.js.map +1 -0
  2637. package/dist/tools/schemas.test.d.ts +2 -0
  2638. package/dist/tools/schemas.test.d.ts.map +1 -0
  2639. package/dist/tools/schemas.test.js +245 -0
  2640. package/dist/tools/schemas.test.js.map +1 -0
  2641. package/dist/tools/security-check.d.ts +3 -0
  2642. package/dist/tools/security-check.d.ts.map +1 -0
  2643. package/dist/tools/security-check.js +135 -0
  2644. package/dist/tools/security-check.js.map +1 -0
  2645. package/dist/tools/set-locale.d.ts +3 -0
  2646. package/dist/tools/set-locale.d.ts.map +1 -0
  2647. package/dist/tools/set-locale.js +34 -0
  2648. package/dist/tools/set-locale.js.map +1 -0
  2649. package/dist/tools/set-locale.test.d.ts +2 -0
  2650. package/dist/tools/set-locale.test.d.ts.map +1 -0
  2651. package/dist/tools/set-locale.test.js +74 -0
  2652. package/dist/tools/set-locale.test.js.map +1 -0
  2653. package/dist/tools/suggest-mcps.d.ts +13 -0
  2654. package/dist/tools/suggest-mcps.d.ts.map +1 -0
  2655. package/dist/tools/suggest-mcps.js +219 -0
  2656. package/dist/tools/suggest-mcps.js.map +1 -0
  2657. package/dist/tools/suggest-mcps.test.d.ts +2 -0
  2658. package/dist/tools/suggest-mcps.test.d.ts.map +1 -0
  2659. package/dist/tools/suggest-mcps.test.js +198 -0
  2660. package/dist/tools/suggest-mcps.test.js.map +1 -0
  2661. package/dist/tools/suggest-stack.d.ts +3 -0
  2662. package/dist/tools/suggest-stack.d.ts.map +1 -0
  2663. package/dist/tools/suggest-stack.js +103 -0
  2664. package/dist/tools/suggest-stack.js.map +1 -0
  2665. package/dist/tools/suggest-stack.test.d.ts +2 -0
  2666. package/dist/tools/suggest-stack.test.d.ts.map +1 -0
  2667. package/dist/tools/suggest-stack.test.js +181 -0
  2668. package/dist/tools/suggest-stack.test.js.map +1 -0
  2669. package/dist/tools/suggest-tooling/advanced-testing-catalog.d.ts +7 -0
  2670. package/dist/tools/suggest-tooling/advanced-testing-catalog.d.ts.map +1 -0
  2671. package/dist/tools/suggest-tooling/advanced-testing-catalog.js +197 -0
  2672. package/dist/tools/suggest-tooling/advanced-testing-catalog.js.map +1 -0
  2673. package/dist/tools/suggest-tooling/ai-native-catalog.d.ts +8 -0
  2674. package/dist/tools/suggest-tooling/ai-native-catalog.d.ts.map +1 -0
  2675. package/dist/tools/suggest-tooling/ai-native-catalog.js +110 -0
  2676. package/dist/tools/suggest-tooling/ai-native-catalog.js.map +1 -0
  2677. package/dist/tools/suggest-tooling/build-tool-catalog.d.ts +11 -0
  2678. package/dist/tools/suggest-tooling/build-tool-catalog.d.ts.map +1 -0
  2679. package/dist/tools/suggest-tooling/build-tool-catalog.js +196 -0
  2680. package/dist/tools/suggest-tooling/build-tool-catalog.js.map +1 -0
  2681. package/dist/tools/suggest-tooling/catalog-loader.d.ts +3 -0
  2682. package/dist/tools/suggest-tooling/catalog-loader.d.ts.map +1 -0
  2683. package/dist/tools/suggest-tooling/catalog-loader.js +21 -0
  2684. package/dist/tools/suggest-tooling/catalog-loader.js.map +1 -0
  2685. package/dist/tools/suggest-tooling/css-framework-catalog.d.ts +7 -0
  2686. package/dist/tools/suggest-tooling/css-framework-catalog.d.ts.map +1 -0
  2687. package/dist/tools/suggest-tooling/css-framework-catalog.js +52 -0
  2688. package/dist/tools/suggest-tooling/css-framework-catalog.js.map +1 -0
  2689. package/dist/tools/suggest-tooling/dagger-catalog.d.ts +9 -0
  2690. package/dist/tools/suggest-tooling/dagger-catalog.d.ts.map +1 -0
  2691. package/dist/tools/suggest-tooling/dagger-catalog.js +116 -0
  2692. package/dist/tools/suggest-tooling/dagger-catalog.js.map +1 -0
  2693. package/dist/tools/suggest-tooling/dep-audit-catalog.d.ts +22 -0
  2694. package/dist/tools/suggest-tooling/dep-audit-catalog.d.ts.map +1 -0
  2695. package/dist/tools/suggest-tooling/dep-audit-catalog.js +45 -0
  2696. package/dist/tools/suggest-tooling/dep-audit-catalog.js.map +1 -0
  2697. package/dist/tools/suggest-tooling/dora-output.d.ts +6 -0
  2698. package/dist/tools/suggest-tooling/dora-output.d.ts.map +1 -0
  2699. package/dist/tools/suggest-tooling/dora-output.js +35 -0
  2700. package/dist/tools/suggest-tooling/dora-output.js.map +1 -0
  2701. package/dist/tools/suggest-tooling/framework-catalog.d.ts +4 -0
  2702. package/dist/tools/suggest-tooling/framework-catalog.d.ts.map +1 -0
  2703. package/dist/tools/suggest-tooling/framework-catalog.js +137 -0
  2704. package/dist/tools/suggest-tooling/framework-catalog.js.map +1 -0
  2705. package/dist/tools/suggest-tooling/frontend-perf-catalog.d.ts +7 -0
  2706. package/dist/tools/suggest-tooling/frontend-perf-catalog.d.ts.map +1 -0
  2707. package/dist/tools/suggest-tooling/frontend-perf-catalog.js +132 -0
  2708. package/dist/tools/suggest-tooling/frontend-perf-catalog.js.map +1 -0
  2709. package/dist/tools/suggest-tooling/handler.d.ts +3 -0
  2710. package/dist/tools/suggest-tooling/handler.d.ts.map +1 -0
  2711. package/dist/tools/suggest-tooling/handler.js +252 -0
  2712. package/dist/tools/suggest-tooling/handler.js.map +1 -0
  2713. package/dist/tools/suggest-tooling/hypermedia-catalog.d.ts +10 -0
  2714. package/dist/tools/suggest-tooling/hypermedia-catalog.d.ts.map +1 -0
  2715. package/dist/tools/suggest-tooling/hypermedia-catalog.js +93 -0
  2716. package/dist/tools/suggest-tooling/hypermedia-catalog.js.map +1 -0
  2717. package/dist/tools/suggest-tooling/idp-catalog.d.ts +7 -0
  2718. package/dist/tools/suggest-tooling/idp-catalog.d.ts.map +1 -0
  2719. package/dist/tools/suggest-tooling/idp-catalog.js +38 -0
  2720. package/dist/tools/suggest-tooling/idp-catalog.js.map +1 -0
  2721. package/dist/tools/suggest-tooling/linting-catalog-core.d.ts +3 -0
  2722. package/dist/tools/suggest-tooling/linting-catalog-core.d.ts.map +1 -0
  2723. package/dist/tools/suggest-tooling/linting-catalog-core.js +271 -0
  2724. package/dist/tools/suggest-tooling/linting-catalog-core.js.map +1 -0
  2725. package/dist/tools/suggest-tooling/linting-catalog-extended.d.ts +3 -0
  2726. package/dist/tools/suggest-tooling/linting-catalog-extended.d.ts.map +1 -0
  2727. package/dist/tools/suggest-tooling/linting-catalog-extended.js +216 -0
  2728. package/dist/tools/suggest-tooling/linting-catalog-extended.js.map +1 -0
  2729. package/dist/tools/suggest-tooling/linting-catalog.d.ts +3 -0
  2730. package/dist/tools/suggest-tooling/linting-catalog.d.ts.map +1 -0
  2731. package/dist/tools/suggest-tooling/linting-catalog.js +97 -0
  2732. package/dist/tools/suggest-tooling/linting-catalog.js.map +1 -0
  2733. package/dist/tools/suggest-tooling/llm-security-catalog.d.ts +9 -0
  2734. package/dist/tools/suggest-tooling/llm-security-catalog.d.ts.map +1 -0
  2735. package/dist/tools/suggest-tooling/llm-security-catalog.js +83 -0
  2736. package/dist/tools/suggest-tooling/llm-security-catalog.js.map +1 -0
  2737. package/dist/tools/suggest-tooling/local-first-catalog.d.ts +9 -0
  2738. package/dist/tools/suggest-tooling/local-first-catalog.d.ts.map +1 -0
  2739. package/dist/tools/suggest-tooling/local-first-catalog.js +103 -0
  2740. package/dist/tools/suggest-tooling/local-first-catalog.js.map +1 -0
  2741. package/dist/tools/suggest-tooling/observability-catalog.d.ts +21 -0
  2742. package/dist/tools/suggest-tooling/observability-catalog.d.ts.map +1 -0
  2743. package/dist/tools/suggest-tooling/observability-catalog.js +228 -0
  2744. package/dist/tools/suggest-tooling/observability-catalog.js.map +1 -0
  2745. package/dist/tools/suggest-tooling/orchestration-generator.d.ts +12 -0
  2746. package/dist/tools/suggest-tooling/orchestration-generator.d.ts.map +1 -0
  2747. package/dist/tools/suggest-tooling/orchestration-generator.js +106 -0
  2748. package/dist/tools/suggest-tooling/orchestration-generator.js.map +1 -0
  2749. package/dist/tools/suggest-tooling/otel-catalog.d.ts +9 -0
  2750. package/dist/tools/suggest-tooling/otel-catalog.d.ts.map +1 -0
  2751. package/dist/tools/suggest-tooling/otel-catalog.js +113 -0
  2752. package/dist/tools/suggest-tooling/otel-catalog.js.map +1 -0
  2753. package/dist/tools/suggest-tooling/output-formatter-catalog.d.ts +11 -0
  2754. package/dist/tools/suggest-tooling/output-formatter-catalog.d.ts.map +1 -0
  2755. package/dist/tools/suggest-tooling/output-formatter-catalog.js +75 -0
  2756. package/dist/tools/suggest-tooling/output-formatter-catalog.js.map +1 -0
  2757. package/dist/tools/suggest-tooling/platform-tooling-catalog.d.ts +7 -0
  2758. package/dist/tools/suggest-tooling/platform-tooling-catalog.d.ts.map +1 -0
  2759. package/dist/tools/suggest-tooling/platform-tooling-catalog.js +141 -0
  2760. package/dist/tools/suggest-tooling/platform-tooling-catalog.js.map +1 -0
  2761. package/dist/tools/suggest-tooling/resilience-catalog.d.ts +18 -0
  2762. package/dist/tools/suggest-tooling/resilience-catalog.d.ts.map +1 -0
  2763. package/dist/tools/suggest-tooling/resilience-catalog.js +136 -0
  2764. package/dist/tools/suggest-tooling/resilience-catalog.js.map +1 -0
  2765. package/dist/tools/suggest-tooling/skills-catalog.d.ts +14 -0
  2766. package/dist/tools/suggest-tooling/skills-catalog.d.ts.map +1 -0
  2767. package/dist/tools/suggest-tooling/skills-catalog.js +275 -0
  2768. package/dist/tools/suggest-tooling/skills-catalog.js.map +1 -0
  2769. package/dist/tools/suggest-tooling/skills-fetcher.d.ts +4 -0
  2770. package/dist/tools/suggest-tooling/skills-fetcher.d.ts.map +1 -0
  2771. package/dist/tools/suggest-tooling/skills-fetcher.js +102 -0
  2772. package/dist/tools/suggest-tooling/skills-fetcher.js.map +1 -0
  2773. package/dist/tools/suggest-tooling/supply-chain-catalog.d.ts +14 -0
  2774. package/dist/tools/suggest-tooling/supply-chain-catalog.d.ts.map +1 -0
  2775. package/dist/tools/suggest-tooling/supply-chain-catalog.js +106 -0
  2776. package/dist/tools/suggest-tooling/supply-chain-catalog.js.map +1 -0
  2777. package/dist/tools/suggest-tooling.d.ts +5 -0
  2778. package/dist/tools/suggest-tooling.d.ts.map +1 -0
  2779. package/dist/tools/suggest-tooling.js +7 -0
  2780. package/dist/tools/suggest-tooling.js.map +1 -0
  2781. package/dist/tools/suggest-tooling.test.d.ts +2 -0
  2782. package/dist/tools/suggest-tooling.test.d.ts.map +1 -0
  2783. package/dist/tools/suggest-tooling.test.js +213 -0
  2784. package/dist/tools/suggest-tooling.test.js.map +1 -0
  2785. package/dist/tools/summarize-spec.d.ts +3 -0
  2786. package/dist/tools/summarize-spec.d.ts.map +1 -0
  2787. package/dist/tools/summarize-spec.js +247 -0
  2788. package/dist/tools/summarize-spec.js.map +1 -0
  2789. package/dist/tools/summarize-spec.test.d.ts +2 -0
  2790. package/dist/tools/summarize-spec.test.d.ts.map +1 -0
  2791. package/dist/tools/summarize-spec.test.js +180 -0
  2792. package/dist/tools/summarize-spec.test.js.map +1 -0
  2793. package/dist/tools/update-status.d.ts +3 -0
  2794. package/dist/tools/update-status.d.ts.map +1 -0
  2795. package/dist/tools/update-status.js +189 -0
  2796. package/dist/tools/update-status.js.map +1 -0
  2797. package/dist/tools/update-status.test.d.ts +2 -0
  2798. package/dist/tools/update-status.test.d.ts.map +1 -0
  2799. package/dist/tools/update-status.test.js +142 -0
  2800. package/dist/tools/update-status.test.js.map +1 -0
  2801. package/dist/tools/validate-workflow.d.ts +3 -0
  2802. package/dist/tools/validate-workflow.d.ts.map +1 -0
  2803. package/dist/tools/validate-workflow.js +77 -0
  2804. package/dist/tools/validate-workflow.js.map +1 -0
  2805. package/dist/tools/validate.d.ts +6 -0
  2806. package/dist/tools/validate.d.ts.map +1 -0
  2807. package/dist/tools/validate.js +135 -0
  2808. package/dist/tools/validate.js.map +1 -0
  2809. package/dist/tools/validate.test.d.ts +2 -0
  2810. package/dist/tools/validate.test.d.ts.map +1 -0
  2811. package/dist/tools/validate.test.js +137 -0
  2812. package/dist/tools/validate.test.js.map +1 -0
  2813. package/dist/types/ai-native.d.ts +15 -0
  2814. package/dist/types/ai-native.d.ts.map +1 -0
  2815. package/dist/types/ai-native.js +3 -0
  2816. package/dist/types/ai-native.js.map +1 -0
  2817. package/dist/types/analysis-detection.d.ts +86 -0
  2818. package/dist/types/analysis-detection.d.ts.map +1 -0
  2819. package/dist/types/analysis-detection.js +4 -0
  2820. package/dist/types/analysis-detection.js.map +1 -0
  2821. package/dist/types/analysis-frontend.d.ts +27 -0
  2822. package/dist/types/analysis-frontend.d.ts.map +1 -0
  2823. package/dist/types/analysis-frontend.js +4 -0
  2824. package/dist/types/analysis-frontend.js.map +1 -0
  2825. package/dist/types/analysis.d.ts +166 -0
  2826. package/dist/types/analysis.d.ts.map +1 -0
  2827. package/dist/types/analysis.js +2 -0
  2828. package/dist/types/analysis.js.map +1 -0
  2829. package/dist/types/analytics.d.ts +199 -0
  2830. package/dist/types/analytics.d.ts.map +1 -0
  2831. package/dist/types/analytics.js +4 -0
  2832. package/dist/types/analytics.js.map +1 -0
  2833. package/dist/types/architecture.d.ts +172 -0
  2834. package/dist/types/architecture.d.ts.map +1 -0
  2835. package/dist/types/architecture.js +4 -0
  2836. package/dist/types/architecture.js.map +1 -0
  2837. package/dist/types/common/context.d.ts +29 -0
  2838. package/dist/types/common/context.d.ts.map +1 -0
  2839. package/dist/types/common/context.js +3 -0
  2840. package/dist/types/common/context.js.map +1 -0
  2841. package/dist/types/common/learning.d.ts +113 -0
  2842. package/dist/types/common/learning.d.ts.map +1 -0
  2843. package/dist/types/common/learning.js +2 -0
  2844. package/dist/types/common/learning.js.map +1 -0
  2845. package/dist/types/common/primitives.d.ts +25 -0
  2846. package/dist/types/common/primitives.d.ts.map +1 -0
  2847. package/dist/types/common/primitives.js +2 -0
  2848. package/dist/types/common/primitives.js.map +1 -0
  2849. package/dist/types/common/tech-enums.d.ts +11 -0
  2850. package/dist/types/common/tech-enums.d.ts.map +1 -0
  2851. package/dist/types/common/tech-enums.js +2 -0
  2852. package/dist/types/common/tech-enums.js.map +1 -0
  2853. package/dist/types/common.d.ts +5 -0
  2854. package/dist/types/common.d.ts.map +1 -0
  2855. package/dist/types/common.js +7 -0
  2856. package/dist/types/common.js.map +1 -0
  2857. package/dist/types/concurrency.d.ts +198 -0
  2858. package/dist/types/concurrency.d.ts.map +1 -0
  2859. package/dist/types/concurrency.js +3 -0
  2860. package/dist/types/concurrency.js.map +1 -0
  2861. package/dist/types/context.d.ts +66 -0
  2862. package/dist/types/context.d.ts.map +1 -0
  2863. package/dist/types/context.js +4 -0
  2864. package/dist/types/context.js.map +1 -0
  2865. package/dist/types/decisions.d.ts +58 -0
  2866. package/dist/types/decisions.d.ts.map +1 -0
  2867. package/dist/types/decisions.js +3 -0
  2868. package/dist/types/decisions.js.map +1 -0
  2869. package/dist/types/docs.d.ts +64 -0
  2870. package/dist/types/docs.d.ts.map +1 -0
  2871. package/dist/types/docs.js +2 -0
  2872. package/dist/types/docs.js.map +1 -0
  2873. package/dist/types/dynamic-migration.d.ts +68 -0
  2874. package/dist/types/dynamic-migration.d.ts.map +1 -0
  2875. package/dist/types/dynamic-migration.js +3 -0
  2876. package/dist/types/dynamic-migration.js.map +1 -0
  2877. package/dist/types/edge-db.d.ts +55 -0
  2878. package/dist/types/edge-db.d.ts.map +1 -0
  2879. package/dist/types/edge-db.js +3 -0
  2880. package/dist/types/edge-db.js.map +1 -0
  2881. package/dist/types/env.d.ts +195 -0
  2882. package/dist/types/env.d.ts.map +1 -0
  2883. package/dist/types/env.js +2 -0
  2884. package/dist/types/env.js.map +1 -0
  2885. package/dist/types/estimation.d.ts +80 -0
  2886. package/dist/types/estimation.d.ts.map +1 -0
  2887. package/dist/types/estimation.js +2 -0
  2888. package/dist/types/estimation.js.map +1 -0
  2889. package/dist/types/events.d.ts +203 -0
  2890. package/dist/types/events.d.ts.map +1 -0
  2891. package/dist/types/events.js +4 -0
  2892. package/dist/types/events.js.map +1 -0
  2893. package/dist/types/execution.d.ts +92 -0
  2894. package/dist/types/execution.d.ts.map +1 -0
  2895. package/dist/types/execution.js +2 -0
  2896. package/dist/types/execution.js.map +1 -0
  2897. package/dist/types/facilitator.d.ts +85 -0
  2898. package/dist/types/facilitator.d.ts.map +1 -0
  2899. package/dist/types/facilitator.js +2 -0
  2900. package/dist/types/facilitator.js.map +1 -0
  2901. package/dist/types/git.d.ts +125 -0
  2902. package/dist/types/git.d.ts.map +1 -0
  2903. package/dist/types/git.js +2 -0
  2904. package/dist/types/git.js.map +1 -0
  2905. package/dist/types/index.d.ts +43 -0
  2906. package/dist/types/index.d.ts.map +1 -0
  2907. package/dist/types/index.js +44 -0
  2908. package/dist/types/index.js.map +1 -0
  2909. package/dist/types/lifecycle.d.ts +111 -0
  2910. package/dist/types/lifecycle.d.ts.map +1 -0
  2911. package/dist/types/lifecycle.js +4 -0
  2912. package/dist/types/lifecycle.js.map +1 -0
  2913. package/dist/types/llm-security.d.ts +56 -0
  2914. package/dist/types/llm-security.d.ts.map +1 -0
  2915. package/dist/types/llm-security.js +3 -0
  2916. package/dist/types/llm-security.js.map +1 -0
  2917. package/dist/types/local-first.d.ts +65 -0
  2918. package/dist/types/local-first.d.ts.map +1 -0
  2919. package/dist/types/local-first.js +3 -0
  2920. package/dist/types/local-first.js.map +1 -0
  2921. package/dist/types/mcp.d.ts +167 -0
  2922. package/dist/types/mcp.d.ts.map +1 -0
  2923. package/dist/types/mcp.js +2 -0
  2924. package/dist/types/mcp.js.map +1 -0
  2925. package/dist/types/migration/analysis.d.ts +79 -0
  2926. package/dist/types/migration/analysis.d.ts.map +1 -0
  2927. package/dist/types/migration/analysis.js +3 -0
  2928. package/dist/types/migration/analysis.js.map +1 -0
  2929. package/dist/types/migration/database.d.ts +70 -0
  2930. package/dist/types/migration/database.d.ts.map +1 -0
  2931. package/dist/types/migration/database.js +3 -0
  2932. package/dist/types/migration/database.js.map +1 -0
  2933. package/dist/types/migration/index.d.ts +5 -0
  2934. package/dist/types/migration/index.d.ts.map +1 -0
  2935. package/dist/types/migration/index.js +3 -0
  2936. package/dist/types/migration/index.js.map +1 -0
  2937. package/dist/types/migration/io.d.ts +29 -0
  2938. package/dist/types/migration/io.d.ts.map +1 -0
  2939. package/dist/types/migration/io.js +3 -0
  2940. package/dist/types/migration/io.js.map +1 -0
  2941. package/dist/types/migration/planning.d.ts +104 -0
  2942. package/dist/types/migration/planning.d.ts.map +1 -0
  2943. package/dist/types/migration/planning.js +3 -0
  2944. package/dist/types/migration/planning.js.map +1 -0
  2945. package/dist/types/migration-advanced.d.ts +235 -0
  2946. package/dist/types/migration-advanced.d.ts.map +1 -0
  2947. package/dist/types/migration-advanced.js +4 -0
  2948. package/dist/types/migration-advanced.js.map +1 -0
  2949. package/dist/types/migration.d.ts +4 -0
  2950. package/dist/types/migration.d.ts.map +1 -0
  2951. package/dist/types/migration.js +5 -0
  2952. package/dist/types/migration.js.map +1 -0
  2953. package/dist/types/multi-agent.d.ts +168 -0
  2954. package/dist/types/multi-agent.d.ts.map +1 -0
  2955. package/dist/types/multi-agent.js +3 -0
  2956. package/dist/types/multi-agent.js.map +1 -0
  2957. package/dist/types/orchestration/index.d.ts +4 -0
  2958. package/dist/types/orchestration/index.d.ts.map +1 -0
  2959. package/dist/types/orchestration/index.js +3 -0
  2960. package/dist/types/orchestration/index.js.map +1 -0
  2961. package/dist/types/orchestration/nli.d.ts +98 -0
  2962. package/dist/types/orchestration/nli.d.ts.map +1 -0
  2963. package/dist/types/orchestration/nli.js +2 -0
  2964. package/dist/types/orchestration/nli.js.map +1 -0
  2965. package/dist/types/orchestration/pm.d.ts +71 -0
  2966. package/dist/types/orchestration/pm.d.ts.map +1 -0
  2967. package/dist/types/orchestration/pm.js +3 -0
  2968. package/dist/types/orchestration/pm.js.map +1 -0
  2969. package/dist/types/orchestration/session.d.ts +152 -0
  2970. package/dist/types/orchestration/session.d.ts.map +1 -0
  2971. package/dist/types/orchestration/session.js +2 -0
  2972. package/dist/types/orchestration/session.js.map +1 -0
  2973. package/dist/types/orchestration.d.ts +2 -0
  2974. package/dist/types/orchestration.d.ts.map +1 -0
  2975. package/dist/types/orchestration.js +4 -0
  2976. package/dist/types/orchestration.js.map +1 -0
  2977. package/dist/types/paradigm.d.ts +143 -0
  2978. package/dist/types/paradigm.d.ts.map +1 -0
  2979. package/dist/types/paradigm.js +3 -0
  2980. package/dist/types/paradigm.js.map +1 -0
  2981. package/dist/types/platform-engineering.d.ts +21 -0
  2982. package/dist/types/platform-engineering.d.ts.map +1 -0
  2983. package/dist/types/platform-engineering.js +3 -0
  2984. package/dist/types/platform-engineering.js.map +1 -0
  2985. package/dist/types/privacy.d.ts +142 -0
  2986. package/dist/types/privacy.d.ts.map +1 -0
  2987. package/dist/types/privacy.js +3 -0
  2988. package/dist/types/privacy.js.map +1 -0
  2989. package/dist/types/project/core.d.ts +225 -0
  2990. package/dist/types/project/core.d.ts.map +1 -0
  2991. package/dist/types/project/core.js +2 -0
  2992. package/dist/types/project/core.js.map +1 -0
  2993. package/dist/types/project/inputs.d.ts +60 -0
  2994. package/dist/types/project/inputs.d.ts.map +1 -0
  2995. package/dist/types/project/inputs.js +2 -0
  2996. package/dist/types/project/inputs.js.map +1 -0
  2997. package/dist/types/project/library-groups.d.ts +118 -0
  2998. package/dist/types/project/library-groups.d.ts.map +1 -0
  2999. package/dist/types/project/library-groups.js +4 -0
  3000. package/dist/types/project/library-groups.js.map +1 -0
  3001. package/dist/types/project/platform-exotic.d.ts +112 -0
  3002. package/dist/types/project/platform-exotic.d.ts.map +1 -0
  3003. package/dist/types/project/platform-exotic.js +3 -0
  3004. package/dist/types/project/platform-exotic.js.map +1 -0
  3005. package/dist/types/project/platform-mobile.d.ts +33 -0
  3006. package/dist/types/project/platform-mobile.d.ts.map +1 -0
  3007. package/dist/types/project/platform-mobile.js +3 -0
  3008. package/dist/types/project/platform-mobile.js.map +1 -0
  3009. package/dist/types/project/platform-specialty.d.ts +55 -0
  3010. package/dist/types/project/platform-specialty.d.ts.map +1 -0
  3011. package/dist/types/project/platform-specialty.js +3 -0
  3012. package/dist/types/project/platform-specialty.js.map +1 -0
  3013. package/dist/types/project.d.ts +7 -0
  3014. package/dist/types/project.d.ts.map +1 -0
  3015. package/dist/types/project.js +9 -0
  3016. package/dist/types/project.js.map +1 -0
  3017. package/dist/types/readiness.d.ts +48 -0
  3018. package/dist/types/readiness.d.ts.map +1 -0
  3019. package/dist/types/readiness.js +3 -0
  3020. package/dist/types/readiness.js.map +1 -0
  3021. package/dist/types/schema.d.ts +119 -0
  3022. package/dist/types/schema.d.ts.map +1 -0
  3023. package/dist/types/schema.js +2 -0
  3024. package/dist/types/schema.js.map +1 -0
  3025. package/dist/types/scope.d.ts +129 -0
  3026. package/dist/types/scope.d.ts.map +1 -0
  3027. package/dist/types/scope.js +3 -0
  3028. package/dist/types/scope.js.map +1 -0
  3029. package/dist/types/security.d.ts +99 -0
  3030. package/dist/types/security.d.ts.map +1 -0
  3031. package/dist/types/security.js +4 -0
  3032. package/dist/types/security.js.map +1 -0
  3033. package/dist/types/spec/agent.d.ts +111 -0
  3034. package/dist/types/spec/agent.d.ts.map +1 -0
  3035. package/dist/types/spec/agent.js +3 -0
  3036. package/dist/types/spec/agent.js.map +1 -0
  3037. package/dist/types/spec/clarification.d.ts +85 -0
  3038. package/dist/types/spec/clarification.d.ts.map +1 -0
  3039. package/dist/types/spec/clarification.js +2 -0
  3040. package/dist/types/spec/clarification.js.map +1 -0
  3041. package/dist/types/spec/core.d.ts +141 -0
  3042. package/dist/types/spec/core.d.ts.map +1 -0
  3043. package/dist/types/spec/core.js +2 -0
  3044. package/dist/types/spec/core.js.map +1 -0
  3045. package/dist/types/spec/inputs.d.ts +106 -0
  3046. package/dist/types/spec/inputs.d.ts.map +1 -0
  3047. package/dist/types/spec/inputs.js +2 -0
  3048. package/dist/types/spec/inputs.js.map +1 -0
  3049. package/dist/types/spec.d.ts +5 -0
  3050. package/dist/types/spec.d.ts.map +1 -0
  3051. package/dist/types/spec.js +7 -0
  3052. package/dist/types/spec.js.map +1 -0
  3053. package/dist/types/stack/audit.d.ts +100 -0
  3054. package/dist/types/stack/audit.d.ts.map +1 -0
  3055. package/dist/types/stack/audit.js +3 -0
  3056. package/dist/types/stack/audit.js.map +1 -0
  3057. package/dist/types/stack/build-tool.d.ts +24 -0
  3058. package/dist/types/stack/build-tool.d.ts.map +1 -0
  3059. package/dist/types/stack/build-tool.js +3 -0
  3060. package/dist/types/stack/build-tool.js.map +1 -0
  3061. package/dist/types/stack/deprecation.d.ts +38 -0
  3062. package/dist/types/stack/deprecation.d.ts.map +1 -0
  3063. package/dist/types/stack/deprecation.js +3 -0
  3064. package/dist/types/stack/deprecation.js.map +1 -0
  3065. package/dist/types/stack/hypermedia.d.ts +23 -0
  3066. package/dist/types/stack/hypermedia.d.ts.map +1 -0
  3067. package/dist/types/stack/hypermedia.js +3 -0
  3068. package/dist/types/stack/hypermedia.js.map +1 -0
  3069. package/dist/types/stack/index.d.ts +7 -0
  3070. package/dist/types/stack/index.d.ts.map +1 -0
  3071. package/dist/types/stack/index.js +4 -0
  3072. package/dist/types/stack/index.js.map +1 -0
  3073. package/dist/types/stack/react.d.ts +11 -0
  3074. package/dist/types/stack/react.d.ts.map +1 -0
  3075. package/dist/types/stack/react.js +3 -0
  3076. package/dist/types/stack/react.js.map +1 -0
  3077. package/dist/types/stack/recommend.d.ts +205 -0
  3078. package/dist/types/stack/recommend.d.ts.map +1 -0
  3079. package/dist/types/stack/recommend.js +2 -0
  3080. package/dist/types/stack/recommend.js.map +1 -0
  3081. package/dist/types/stack.d.ts +2 -0
  3082. package/dist/types/stack.d.ts.map +1 -0
  3083. package/dist/types/stack.js +4 -0
  3084. package/dist/types/stack.js.map +1 -0
  3085. package/dist/types/supply-chain.d.ts +92 -0
  3086. package/dist/types/supply-chain.d.ts.map +1 -0
  3087. package/dist/types/supply-chain.js +4 -0
  3088. package/dist/types/supply-chain.js.map +1 -0
  3089. package/dist/types/testing.d.ts +153 -0
  3090. package/dist/types/testing.d.ts.map +1 -0
  3091. package/dist/types/testing.js +2 -0
  3092. package/dist/types/testing.js.map +1 -0
  3093. package/dist/types/tooling/assessment.d.ts +87 -0
  3094. package/dist/types/tooling/assessment.d.ts.map +1 -0
  3095. package/dist/types/tooling/assessment.js +2 -0
  3096. package/dist/types/tooling/assessment.js.map +1 -0
  3097. package/dist/types/tooling/audit.d.ts +78 -0
  3098. package/dist/types/tooling/audit.d.ts.map +1 -0
  3099. package/dist/types/tooling/audit.js +3 -0
  3100. package/dist/types/tooling/audit.js.map +1 -0
  3101. package/dist/types/tooling/catalog.d.ts +134 -0
  3102. package/dist/types/tooling/catalog.d.ts.map +1 -0
  3103. package/dist/types/tooling/catalog.js +3 -0
  3104. package/dist/types/tooling/catalog.js.map +1 -0
  3105. package/dist/types/tooling/database.d.ts +73 -0
  3106. package/dist/types/tooling/database.d.ts.map +1 -0
  3107. package/dist/types/tooling/database.js +3 -0
  3108. package/dist/types/tooling/database.js.map +1 -0
  3109. package/dist/types/tooling/index.d.ts +5 -0
  3110. package/dist/types/tooling/index.d.ts.map +1 -0
  3111. package/dist/types/tooling/index.js +3 -0
  3112. package/dist/types/tooling/index.js.map +1 -0
  3113. package/dist/types/tooling.d.ts +2 -0
  3114. package/dist/types/tooling.d.ts.map +1 -0
  3115. package/dist/types/tooling.js +4 -0
  3116. package/dist/types/tooling.js.map +1 -0
  3117. package/dist/types/ui.d.ts +204 -0
  3118. package/dist/types/ui.d.ts.map +1 -0
  3119. package/dist/types/ui.js +2 -0
  3120. package/dist/types/ui.js.map +1 -0
  3121. package/dist/types/workflow.d.ts +71 -0
  3122. package/dist/types/workflow.d.ts.map +1 -0
  3123. package/dist/types/workflow.js +4 -0
  3124. package/dist/types/workflow.js.map +1 -0
  3125. package/package.json +83 -0
  3126. package/src/config/advanced-testing-tools.json +210 -0
  3127. package/src/config/agent-capabilities-catalog.json +30 -0
  3128. package/src/config/agent-platforms.json +268 -0
  3129. package/src/config/agent-spec-catalog.json +273 -0
  3130. package/src/config/agile-processes.json +111 -0
  3131. package/src/config/analytics-providers.json +171 -0
  3132. package/src/config/architecture-patterns-modern.json +118 -0
  3133. package/src/config/architecture-patterns.json +324 -0
  3134. package/src/config/automation-templates.json +29 -0
  3135. package/src/config/build-tools-catalog.json +250 -0
  3136. package/src/config/concurrency-models.json +142 -0
  3137. package/src/config/config-health-schemas.json +88 -0
  3138. package/src/config/db-engines.json +99 -0
  3139. package/src/config/deploy-platforms.json +94 -0
  3140. package/src/config/deprecation-patterns/browser.json +42 -0
  3141. package/src/config/deprecation-patterns/dotnet.json +62 -0
  3142. package/src/config/deprecation-patterns/go.json +82 -0
  3143. package/src/config/deprecation-patterns/java.json +82 -0
  3144. package/src/config/deprecation-patterns/nodejs.json +62 -0
  3145. package/src/config/deprecation-patterns/python.json +42 -0
  3146. package/src/config/deprecation-patterns/rust.json +62 -0
  3147. package/src/config/dev-lifecycle-catalog.json +619 -0
  3148. package/src/config/docs-registry.json +94 -0
  3149. package/src/config/edge-db-catalog.json +89 -0
  3150. package/src/config/env-patterns.json +164 -0
  3151. package/src/config/event-brokers.json +63 -0
  3152. package/src/config/hypermedia-tooling.json +189 -0
  3153. package/src/config/idp-tools.json +173 -0
  3154. package/src/config/linter-registry.json +451 -0
  3155. package/src/config/llm-guardrails-tooling.json +122 -0
  3156. package/src/config/local-first-tools.json +122 -0
  3157. package/src/config/mcp-catalog.json +104 -0
  3158. package/src/config/middleware-patterns.json +126 -0
  3159. package/src/config/migration-policies-catalog.json +271 -0
  3160. package/src/config/otel-tooling.json +131 -0
  3161. package/src/config/paradigm-registry.json +380 -0
  3162. package/src/config/pii-patterns.json +231 -0
  3163. package/src/config/pm-platforms.json +49 -0
  3164. package/src/config/quality-principles.json +230 -0
  3165. package/src/config/react-nextjs-catalog.json +200 -0
  3166. package/src/config/resilience-patterns.json +130 -0
  3167. package/src/config/saas-registry.json +183 -0
  3168. package/src/config/security-patterns.json +282 -0
  3169. package/src/config/spec-templates.json +125 -0
  3170. package/src/config/stack-signatures.json +793 -0
  3171. package/src/config/supply-chain-tools.json +107 -0
  3172. package/src/config/ui-frameworks.json +335 -0
  3173. package/src/config/ux-principles.json +190 -0
  3174. package/src/config/validation-libraries.json +152 -0
  3175. package/src/config/workflow-conventions-catalog.json +71 -0
@@ -0,0 +1,2075 @@
1
+ // SpecForge — Auditor Engine Tests
2
+ // Comprehensive tests for auditCode and auditFile, exercising all internal
3
+ // check functions (checkCleanCode, checkSolid, checkArchitecture, checkSecurity,
4
+ // checkErrorHandling, checkPerformance, checkTestingPractices, checkDry,
5
+ // checkCustomRule) via the public API surface plus helpers
6
+ // (findFunctionBoundaries, findCodeFiles, buildSummary, calculateScore).
7
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
8
+ // ── Module-level mocks ──────────────────────────────────────────────────────
9
+ vi.mock('node:fs/promises', () => ({
10
+ readFile: vi.fn(),
11
+ stat: vi.fn(),
12
+ }));
13
+ vi.mock('glob', () => ({
14
+ glob: vi.fn().mockResolvedValue([]),
15
+ }));
16
+ import { readFile } from 'node:fs/promises';
17
+ import { glob } from 'glob';
18
+ import { auditCode, auditFile } from './auditor.js';
19
+ const mockReadFile = vi.mocked(readFile);
20
+ const mockGlob = vi.mocked(glob);
21
+ beforeEach(() => {
22
+ vi.clearAllMocks();
23
+ mockGlob.mockResolvedValue([]);
24
+ });
25
+ // ── Helpers ─────────────────────────────────────────────────────────────────
26
+ function findFinding(findings, rule) {
27
+ return findings.find((f) => f.rule === rule);
28
+ }
29
+ function findFindings(findings, rule) {
30
+ return findings.filter((f) => f.rule === rule);
31
+ }
32
+ // ════════════════════════════════════════════════════════════════════════════
33
+ // auditFile — lightweight single-file auditing
34
+ // ════════════════════════════════════════════════════════════════════════════
35
+ describe('auditFile', () => {
36
+ it('returns empty array when readFile throws', async () => {
37
+ mockReadFile.mockRejectedValue(new Error('ENOENT'));
38
+ const findings = await auditFile('/missing.ts');
39
+ expect(findings).toEqual([]);
40
+ });
41
+ it('uses default categories [clean-code, security] when none provided', async () => {
42
+ const content = [
43
+ `const api_key = "realSecretKeyValue1234";`,
44
+ `// TODO: fix this`,
45
+ ].join('\n');
46
+ mockReadFile.mockResolvedValue(content);
47
+ const findings = await auditFile('/test/defaults.ts');
48
+ const cats = new Set(findings.map((f) => f.category));
49
+ // Should include both clean-code and security
50
+ expect(cats.has('clean-code')).toBe(true);
51
+ expect(cats.has('security')).toBe(true);
52
+ // Should NOT include error-handling (not in defaults)
53
+ expect(cats.has('error-handling')).toBe(false);
54
+ });
55
+ it('runs error-handling checks when explicitly requested', async () => {
56
+ const content = `try { doSomething(); } catch (e) {}`;
57
+ mockReadFile.mockResolvedValue(content);
58
+ const findings = await auditFile('/test/err.ts', ['error-handling']);
59
+ expect(findFinding(findings, 'empty-catch')).toBeDefined();
60
+ });
61
+ it('only runs requested category', async () => {
62
+ const content = `const api_key = "superSecretValue12345"; eval("bad"); // TODO: fix`;
63
+ mockReadFile.mockResolvedValue(content);
64
+ const findings = await auditFile('/test/only-sec.ts', ['security']);
65
+ for (const f of findings) {
66
+ expect(f.category).toBe('security');
67
+ }
68
+ });
69
+ });
70
+ // ════════════════════════════════════════════════════════════════════════════
71
+ // auditCode — full project audit
72
+ // ════════════════════════════════════════════════════════════════════════════
73
+ describe('auditCode', () => {
74
+ // -- findCodeFiles --
75
+ it('returns result with zero files when glob returns empty', async () => {
76
+ mockGlob.mockResolvedValue([]);
77
+ const result = await auditCode('src', '/project');
78
+ expect(result.filesAnalyzed).toBe(0);
79
+ expect(result.findings).toEqual([]);
80
+ expect(result.score).toBe(100);
81
+ });
82
+ it('filters by code extensions from glob results', async () => {
83
+ mockGlob.mockResolvedValue(['app.ts', 'readme.md', 'logo.png', 'util.js']);
84
+ mockReadFile.mockResolvedValue('const x = 1;');
85
+ const result = await auditCode('src', '/project');
86
+ // Only .ts and .js should pass
87
+ expect(result.filesAnalyzed).toBe(2);
88
+ });
89
+ it('handles glob failure gracefully (returns empty files)', async () => {
90
+ mockGlob.mockRejectedValue(new Error('permission denied'));
91
+ const result = await auditCode('src', '/project');
92
+ expect(result.filesAnalyzed).toBe(0);
93
+ expect(result.score).toBe(100);
94
+ });
95
+ it('skips files that fail to read and continues', async () => {
96
+ mockGlob.mockResolvedValue(['good.ts', 'bad.ts']);
97
+ mockReadFile
98
+ .mockResolvedValueOnce('const x = 1;')
99
+ .mockRejectedValueOnce(new Error('ENOENT'));
100
+ const result = await auditCode('src', '/project');
101
+ expect(result.filesAnalyzed).toBe(2);
102
+ // Should not throw
103
+ });
104
+ it('resolves absolute path when path starts with /', async () => {
105
+ mockGlob.mockResolvedValue(['app.ts']);
106
+ mockReadFile.mockResolvedValue('const x = 1;');
107
+ await auditCode('/absolute/src', '/project');
108
+ // glob should be called with the absolute path as cwd
109
+ expect(mockGlob).toHaveBeenCalledWith('**/*', expect.objectContaining({ cwd: '/absolute/src' }));
110
+ });
111
+ it('resolves relative path by joining with projectPath', async () => {
112
+ mockGlob.mockResolvedValue(['app.ts']);
113
+ mockReadFile.mockResolvedValue('const x = 1;');
114
+ await auditCode('src', '/project');
115
+ expect(mockGlob).toHaveBeenCalledWith('**/*', expect.objectContaining({ cwd: '/project/src' }));
116
+ });
117
+ // -- Default categories --
118
+ it('uses all default categories when none provided', async () => {
119
+ mockGlob.mockResolvedValue(['app.ts']);
120
+ // Content that triggers multiple categories
121
+ const content = [
122
+ '// TODO: fix',
123
+ 'try { x(); } catch (e) {}',
124
+ ].join('\n');
125
+ mockReadFile.mockResolvedValue(content);
126
+ const result = await auditCode('src', '/project');
127
+ const cats = new Set(result.findings.map((f) => f.category));
128
+ // Default categories include clean-code and error-handling
129
+ expect(cats.has('clean-code')).toBe(true);
130
+ expect(cats.has('error-handling')).toBe(true);
131
+ });
132
+ // -- Profile overrides --
133
+ it('uses enabledCategories from profile when provided', async () => {
134
+ mockGlob.mockResolvedValue(['app.ts']);
135
+ const content = `const api_key = "realSecretKeyValue1234"; // TODO: fix`;
136
+ mockReadFile.mockResolvedValue(content);
137
+ const profile = {
138
+ enabledCategories: ['security'],
139
+ customRules: [],
140
+ principles: [],
141
+ strictness: 'standard',
142
+ };
143
+ const result = await auditCode('src', '/project', ['clean-code'], profile);
144
+ // Should ONLY have security findings (profile overrides passed categories)
145
+ for (const f of result.findings) {
146
+ expect(f.category).toBe('security');
147
+ }
148
+ });
149
+ // -- Custom rules via profile --
150
+ it('runs custom rules that match enabled categories', async () => {
151
+ mockGlob.mockResolvedValue(['app.ts']);
152
+ const content = `const DEBUG_MODE = true; console.log("debug");`;
153
+ mockReadFile.mockResolvedValue(content);
154
+ const customRule = {
155
+ id: 'no-debug-mode',
156
+ description: 'DEBUG_MODE should not be true in production',
157
+ category: 'clean-code',
158
+ severity: 'warning',
159
+ source: 'team-rules',
160
+ pattern: 'DEBUG_MODE\\s*=\\s*true',
161
+ };
162
+ const profile = {
163
+ enabledCategories: ['clean-code'],
164
+ customRules: [customRule],
165
+ principles: [],
166
+ strictness: 'standard',
167
+ };
168
+ const result = await auditCode('src', '/project', [], profile);
169
+ const finding = findFinding(result.findings, 'no-debug-mode');
170
+ expect(finding).toBeDefined();
171
+ expect(finding.message).toBe('DEBUG_MODE should not be true in production');
172
+ expect(finding.suggestion).toContain('team-rules');
173
+ });
174
+ it('skips custom rules whose category is not enabled', async () => {
175
+ mockGlob.mockResolvedValue(['app.ts']);
176
+ const content = `const DEBUG_MODE = true;`;
177
+ mockReadFile.mockResolvedValue(content);
178
+ const customRule = {
179
+ id: 'no-debug-mode',
180
+ description: 'No debug mode',
181
+ category: 'security', // Not in enabledCategories
182
+ severity: 'warning',
183
+ source: 'team-rules',
184
+ pattern: 'DEBUG_MODE',
185
+ };
186
+ const profile = {
187
+ enabledCategories: ['clean-code'],
188
+ customRules: [customRule],
189
+ principles: [],
190
+ strictness: 'standard',
191
+ };
192
+ const result = await auditCode('src', '/project', [], profile);
193
+ expect(findFinding(result.findings, 'no-debug-mode')).toBeUndefined();
194
+ });
195
+ it('handles custom rule with no pattern (returns null)', async () => {
196
+ mockGlob.mockResolvedValue(['app.ts']);
197
+ mockReadFile.mockResolvedValue('const x = 1;');
198
+ const customRule = {
199
+ id: 'no-pattern-rule',
200
+ description: 'Rule without pattern',
201
+ category: 'clean-code',
202
+ severity: 'info',
203
+ source: 'team',
204
+ // no pattern property
205
+ };
206
+ const profile = {
207
+ enabledCategories: ['clean-code'],
208
+ customRules: [customRule],
209
+ principles: [],
210
+ strictness: 'standard',
211
+ };
212
+ const result = await auditCode('src', '/project', [], profile);
213
+ expect(findFinding(result.findings, 'no-pattern-rule')).toBeUndefined();
214
+ });
215
+ it('handles custom rule with invalid regex pattern gracefully', async () => {
216
+ mockGlob.mockResolvedValue(['app.ts']);
217
+ mockReadFile.mockResolvedValue('const x = 1;');
218
+ const customRule = {
219
+ id: 'bad-regex-rule',
220
+ description: 'Rule with broken regex',
221
+ category: 'clean-code',
222
+ severity: 'error',
223
+ source: 'team',
224
+ pattern: '[invalid(regex',
225
+ };
226
+ const profile = {
227
+ enabledCategories: ['clean-code'],
228
+ customRules: [customRule],
229
+ principles: [],
230
+ strictness: 'standard',
231
+ };
232
+ const result = await auditCode('src', '/project', [], profile);
233
+ // Should not throw and finding should not appear
234
+ expect(findFinding(result.findings, 'bad-regex-rule')).toBeUndefined();
235
+ });
236
+ it('handles custom rule whose pattern does not match', async () => {
237
+ mockGlob.mockResolvedValue(['app.ts']);
238
+ mockReadFile.mockResolvedValue('const x = 1;');
239
+ const customRule = {
240
+ id: 'never-matches',
241
+ description: 'Never triggers',
242
+ category: 'clean-code',
243
+ severity: 'info',
244
+ source: 'team',
245
+ pattern: 'NEVER_MATCH_THIS_PATTERN_ABCXYZ',
246
+ };
247
+ const profile = {
248
+ enabledCategories: ['clean-code'],
249
+ customRules: [customRule],
250
+ principles: [],
251
+ strictness: 'standard',
252
+ };
253
+ const result = await auditCode('src', '/project', [], profile);
254
+ expect(findFinding(result.findings, 'never-matches')).toBeUndefined();
255
+ });
256
+ // -- Summary & Score --
257
+ it('returns summary with byCategory, topIssues, strengths, score', async () => {
258
+ mockGlob.mockResolvedValue(['app.ts']);
259
+ const content = `// TODO: fix\n// FIXME: broken`;
260
+ mockReadFile.mockResolvedValue(content);
261
+ const result = await auditCode('src', '/project', ['clean-code', 'security']);
262
+ expect(result.summary).toBeDefined();
263
+ expect(result.summary.byCategory).toBeDefined();
264
+ expect(result.summary.topIssues).toBeInstanceOf(Array);
265
+ expect(result.summary.strengths).toBeInstanceOf(Array);
266
+ expect(typeof result.summary.score).toBe('number');
267
+ });
268
+ it('summary includes strengths for categories with zero findings', async () => {
269
+ mockGlob.mockResolvedValue(['app.ts']);
270
+ const content = `function add(a: number, b: number) { return a + b; }`;
271
+ mockReadFile.mockResolvedValue(content);
272
+ const result = await auditCode('src', '/project', ['clean-code', 'security']);
273
+ // security should have zero findings for clean code
274
+ const securityStrength = result.summary.strengths.find((s) => s.includes('security'));
275
+ expect(securityStrength).toBeDefined();
276
+ });
277
+ it('summary topIssues lists up to 5 most frequent rules', async () => {
278
+ mockGlob.mockResolvedValue(['a.ts', 'b.ts', 'c.ts', 'd.ts', 'e.ts', 'f.ts']);
279
+ // Each file has a TODO
280
+ mockReadFile.mockResolvedValue('// TODO: fixme\n// HACK: workaround');
281
+ const result = await auditCode('src', '/project', ['clean-code']);
282
+ expect(result.summary.topIssues.length).toBeLessThanOrEqual(5);
283
+ if (result.summary.topIssues.length > 0) {
284
+ expect(result.summary.topIssues[0]).toContain('occurrences');
285
+ }
286
+ });
287
+ it('score is 100 when no findings exist', async () => {
288
+ mockGlob.mockResolvedValue([]);
289
+ const result = await auditCode('src', '/project');
290
+ expect(result.score).toBe(100);
291
+ });
292
+ it('score decreases with critical findings', async () => {
293
+ mockGlob.mockResolvedValue(['app.ts']);
294
+ const content = `const api_key = "realSecretKeyValue1234";`;
295
+ mockReadFile.mockResolvedValue(content);
296
+ const result = await auditCode('src', '/project', ['security']);
297
+ expect(result.score).toBeLessThan(100);
298
+ });
299
+ it('score is non-negative even with many findings', async () => {
300
+ mockGlob.mockResolvedValue(['app.ts']);
301
+ // Create content with many critical findings
302
+ const lines = [];
303
+ for (let i = 0; i < 20; i++) {
304
+ lines.push(`const secret${i} = "realApiKeyValue${i}pad_pad";`);
305
+ lines.push(`eval("code${i}");`);
306
+ }
307
+ mockReadFile.mockResolvedValue(lines.join('\n'));
308
+ const result = await auditCode('src', '/project', ['security']);
309
+ expect(result.score).toBeGreaterThanOrEqual(0);
310
+ });
311
+ // -- All category branches in auditCode --
312
+ it('runs performance checks when category is performance', async () => {
313
+ mockGlob.mockResolvedValue(['app.ts']);
314
+ const content = `for (let i = 0; i < items.length; i++) {\n await fetch("/api/" + items[i]);\n}`;
315
+ mockReadFile.mockResolvedValue(content);
316
+ const result = await auditCode('src', '/project', ['performance']);
317
+ const finding = findFinding(result.findings, 'n-plus-one');
318
+ expect(finding).toBeDefined();
319
+ });
320
+ it('runs testing checks when category is testing', async () => {
321
+ mockGlob.mockResolvedValue(['app.test.ts']);
322
+ const content = `it.skip('broken test', () => { expect(true).toBe(true); });`;
323
+ mockReadFile.mockResolvedValue(content);
324
+ const result = await auditCode('src', '/project', ['testing']);
325
+ const finding = findFinding(result.findings, 'test-skip');
326
+ expect(finding).toBeDefined();
327
+ });
328
+ it('runs dry checks when category is dry', async () => {
329
+ mockGlob.mockResolvedValue(['app.ts']);
330
+ const dupLine = 'const result = processItem(item, config, options);';
331
+ const content = Array.from({ length: 5 }, () => dupLine).join('\n');
332
+ mockReadFile.mockResolvedValue(content);
333
+ const result = await auditCode('src', '/project', ['dry']);
334
+ const finding = findFinding(result.findings, 'duplicate-code');
335
+ expect(finding).toBeDefined();
336
+ });
337
+ it('runs solid checks when category is solid', async () => {
338
+ mockGlob.mockResolvedValue(['app.ts']);
339
+ // 3 classes => SRP violation
340
+ const content = `class A {}\nclass B {}\nclass C {}`;
341
+ mockReadFile.mockResolvedValue(content);
342
+ const result = await auditCode('src', '/project', ['solid']);
343
+ const finding = findFinding(result.findings, 'srp-multiple-classes');
344
+ expect(finding).toBeDefined();
345
+ });
346
+ it('runs architecture checks when category is architecture', async () => {
347
+ mockGlob.mockResolvedValue(['repositories/user.ts']);
348
+ const content = `import { useState } from 'react';`;
349
+ mockReadFile.mockResolvedValue(content);
350
+ const result = await auditCode('.', '/project');
351
+ expect(findFinding(result.findings, 'layer-violation-ui-in-data')).toBeDefined();
352
+ });
353
+ });
354
+ // ════════════════════════════════════════════════════════════════════════════
355
+ // checkCleanCode — detailed branch coverage
356
+ // ════════════════════════════════════════════════════════════════════════════
357
+ describe('checkCleanCode', () => {
358
+ // -- file-too-long --
359
+ it('flags files exceeding 500 lines', async () => {
360
+ const longContent = Array.from({ length: 550 }, (_, i) => `const x${i} = ${i};`).join('\n');
361
+ mockReadFile.mockResolvedValue(longContent);
362
+ const findings = await auditFile('/test/long.ts', ['clean-code']);
363
+ const finding = findFinding(findings, 'file-too-long');
364
+ expect(finding).toBeDefined();
365
+ expect(finding.severity).toBe('warning');
366
+ expect(finding.message).toContain('550');
367
+ expect(finding.message).toContain('500');
368
+ });
369
+ it('does not flag file with exactly 500 lines', async () => {
370
+ const content = Array.from({ length: 500 }, (_, i) => `const x${i} = ${i};`).join('\n');
371
+ mockReadFile.mockResolvedValue(content);
372
+ const findings = await auditFile('/test/exact.ts', ['clean-code']);
373
+ expect(findFinding(findings, 'file-too-long')).toBeUndefined();
374
+ });
375
+ // -- function-too-long --
376
+ it('flags functions exceeding 50 lines', async () => {
377
+ const body = Array.from({ length: 55 }, (_, i) => ` const v${i} = ${i};`).join('\n');
378
+ const content = `function longFunction() {\n${body}\n}`;
379
+ mockReadFile.mockResolvedValue(content);
380
+ const findings = await auditFile('/test/long-fn.ts', ['clean-code']);
381
+ const finding = findFinding(findings, 'function-too-long');
382
+ expect(finding).toBeDefined();
383
+ expect(finding.message).toContain('longFunction');
384
+ });
385
+ it('does not flag functions within 50 lines', async () => {
386
+ const body = Array.from({ length: 10 }, (_, i) => ` const v${i} = ${i};`).join('\n');
387
+ const content = `function shortFunction() {\n${body}\n}`;
388
+ mockReadFile.mockResolvedValue(content);
389
+ const findings = await auditFile('/test/short-fn.ts', ['clean-code']);
390
+ expect(findFinding(findings, 'function-too-long')).toBeUndefined();
391
+ });
392
+ it('detects arrow function declarations', async () => {
393
+ const body = Array.from({ length: 55 }, (_, i) => ` const v${i} = ${i};`).join('\n');
394
+ const content = `const myArrowFn = () => {\n${body}\n}`;
395
+ mockReadFile.mockResolvedValue(content);
396
+ const findings = await auditFile('/test/arrow-fn.ts', ['clean-code']);
397
+ const finding = findFinding(findings, 'function-too-long');
398
+ expect(finding).toBeDefined();
399
+ expect(finding.message).toContain('myArrowFn');
400
+ });
401
+ it('detects python def functions', async () => {
402
+ // Python-style function detection
403
+ const body = Array.from({ length: 55 }, (_, i) => ` v${i} = ${i}`).join('\n');
404
+ const content = `def long_function():\n${body}\n`;
405
+ mockReadFile.mockResolvedValue(content);
406
+ const findings = await auditFile('/test/long-fn.py', ['clean-code']);
407
+ const finding = findFinding(findings, 'function-too-long');
408
+ expect(finding).toBeDefined();
409
+ expect(finding.message).toContain('long_function');
410
+ });
411
+ it('detects Go func functions', async () => {
412
+ const body = Array.from({ length: 55 }, (_, i) => ` v${i} := ${i}`).join('\n');
413
+ const content = `func longGoFunction() {\n${body}\n}`;
414
+ mockReadFile.mockResolvedValue(content);
415
+ const findings = await auditFile('/test/long-fn.go', ['clean-code']);
416
+ const finding = findFinding(findings, 'function-too-long');
417
+ expect(finding).toBeDefined();
418
+ expect(finding.message).toContain('longGoFunction');
419
+ });
420
+ it('detects Rust fn functions', async () => {
421
+ const body = Array.from({ length: 55 }, (_, i) => ` let v${i} = ${i};`).join('\n');
422
+ const content = `fn long_rust_function() {\n${body}\n}`;
423
+ mockReadFile.mockResolvedValue(content);
424
+ const findings = await auditFile('/test/long-fn.rs', ['clean-code']);
425
+ const finding = findFinding(findings, 'function-too-long');
426
+ expect(finding).toBeDefined();
427
+ expect(finding.message).toContain('long_rust_function');
428
+ });
429
+ it('detects Kotlin fun functions', async () => {
430
+ const body = Array.from({ length: 55 }, (_, i) => ` val v${i} = ${i}`).join('\n');
431
+ const content = `fun longKotlinFunction() {\n${body}\n}`;
432
+ mockReadFile.mockResolvedValue(content);
433
+ const findings = await auditFile('/test/long-fn.kt', ['clean-code']);
434
+ const finding = findFinding(findings, 'function-too-long');
435
+ expect(finding).toBeDefined();
436
+ expect(finding.message).toContain('longKotlinFunction');
437
+ });
438
+ it('detects async function declarations', async () => {
439
+ const body = Array.from({ length: 55 }, (_, i) => ` const v${i} = ${i};`).join('\n');
440
+ const content = `async function asyncLongFn() {\n${body}\n}`;
441
+ mockReadFile.mockResolvedValue(content);
442
+ const findings = await auditFile('/test/async-long.ts', ['clean-code']);
443
+ const finding = findFinding(findings, 'function-too-long');
444
+ expect(finding).toBeDefined();
445
+ expect(finding.message).toContain('asyncLongFn');
446
+ });
447
+ it('detects export function declarations', async () => {
448
+ const body = Array.from({ length: 55 }, (_, i) => ` const v${i} = ${i};`).join('\n');
449
+ const content = `export function exportedLongFn() {\n${body}\n}`;
450
+ mockReadFile.mockResolvedValue(content);
451
+ const findings = await auditFile('/test/exported-long.ts', ['clean-code']);
452
+ const finding = findFinding(findings, 'function-too-long');
453
+ expect(finding).toBeDefined();
454
+ expect(finding.message).toContain('exportedLongFn');
455
+ });
456
+ it('detects export async function declarations', async () => {
457
+ const body = Array.from({ length: 55 }, (_, i) => ` const v${i} = ${i};`).join('\n');
458
+ const content = `export async function exportAsyncLongFn() {\n${body}\n}`;
459
+ mockReadFile.mockResolvedValue(content);
460
+ const findings = await auditFile('/test/export-async-long.ts', ['clean-code']);
461
+ const finding = findFinding(findings, 'function-too-long');
462
+ expect(finding).toBeDefined();
463
+ expect(finding.message).toContain('exportAsyncLongFn');
464
+ });
465
+ // -- too-many-params --
466
+ it('flags functions with more than 4 parameters', async () => {
467
+ // Must be 80+ chars inside parens AND more than 4 params
468
+ const content = `function bigFn(paramAlpha: string, paramBeta: number, paramGamma: boolean, paramDelta: object, paramEpsilon: any) { return 1; }`;
469
+ mockReadFile.mockResolvedValue(content);
470
+ const findings = await auditFile('/test/params.ts', ['clean-code']);
471
+ const finding = findFinding(findings, 'too-many-params');
472
+ expect(finding).toBeDefined();
473
+ expect(finding.severity).toBe('warning');
474
+ expect(finding.message).toContain('5');
475
+ });
476
+ it('does not flag functions with 4 or fewer parameters', async () => {
477
+ const content = `function smallFn(a: string, b: number, c: boolean, d: object) { return 1; }`;
478
+ mockReadFile.mockResolvedValue(content);
479
+ const findings = await auditFile('/test/few-params.ts', ['clean-code']);
480
+ expect(findFinding(findings, 'too-many-params')).toBeUndefined();
481
+ });
482
+ it('does not flag function params under 80 chars (short signature)', async () => {
483
+ // Even with 5 params, if they're short enough not to exceed 80 chars, regex won't match
484
+ const content = `function fn(a, b, c, d, e) { return 1; }`;
485
+ mockReadFile.mockResolvedValue(content);
486
+ const findings = await auditFile('/test/short-sig.ts', ['clean-code']);
487
+ expect(findFinding(findings, 'too-many-params')).toBeUndefined();
488
+ });
489
+ it('detects def with many params (Python)', async () => {
490
+ const content = `def big_fn(param_alpha, param_beta, param_gamma, param_delta, param_epsilon, param_zeta_extra) :\n pass`;
491
+ mockReadFile.mockResolvedValue(content);
492
+ const findings = await auditFile('/test/params.py', ['clean-code']);
493
+ const finding = findFinding(findings, 'too-many-params');
494
+ expect(finding).toBeDefined();
495
+ });
496
+ // -- pending-marker --
497
+ it('detects TODO markers', async () => {
498
+ const content = `function foo() {\n // TODO: fix this later\n return 42;\n}`;
499
+ mockReadFile.mockResolvedValue(content);
500
+ const findings = await auditFile('/test/todo.ts', ['clean-code']);
501
+ const finding = findFinding(findings, 'pending-marker');
502
+ expect(finding).toBeDefined();
503
+ expect(finding.severity).toBe('info');
504
+ expect(finding.message).toContain('TODO');
505
+ expect(finding.line).toBe(2);
506
+ });
507
+ it('detects FIXME markers', async () => {
508
+ const content = `// FIXME: memory leak here`;
509
+ mockReadFile.mockResolvedValue(content);
510
+ const findings = await auditFile('/test/fixme.ts', ['clean-code']);
511
+ expect(findFinding(findings, 'pending-marker').message).toContain('FIXME');
512
+ });
513
+ it('detects HACK markers', async () => {
514
+ const content = `const x = 1; // HACK: workaround for issue`;
515
+ mockReadFile.mockResolvedValue(content);
516
+ const findings = await auditFile('/test/hack.ts', ['clean-code']);
517
+ expect(findFinding(findings, 'pending-marker').message).toContain('HACK');
518
+ });
519
+ it('detects XXX markers', async () => {
520
+ const content = `// XXX: needs review`;
521
+ mockReadFile.mockResolvedValue(content);
522
+ const findings = await auditFile('/test/xxx.ts', ['clean-code']);
523
+ expect(findFinding(findings, 'pending-marker').message).toContain('XXX');
524
+ });
525
+ it('handles TODO with no description (empty match group)', async () => {
526
+ const content = `// TODO:`;
527
+ mockReadFile.mockResolvedValue(content);
528
+ const findings = await auditFile('/test/todo-empty.ts', ['clean-code']);
529
+ const finding = findFinding(findings, 'pending-marker');
530
+ expect(finding).toBeDefined();
531
+ // message should include "(no description)" or empty string
532
+ expect(finding.message).toContain('TODO');
533
+ });
534
+ // -- deep-nesting --
535
+ it('flags deeply nested code (more than 5 indentation levels)', async () => {
536
+ const content = [
537
+ 'function deep() {',
538
+ ' if (true) {',
539
+ ' if (true) {',
540
+ ' if (true) {',
541
+ ' if (true) {',
542
+ ' if (true) {',
543
+ ' const x = 1;', // 12 spaces = 6 levels
544
+ ' }',
545
+ ' }',
546
+ ' }',
547
+ ' }',
548
+ ' }',
549
+ '}',
550
+ ].join('\n');
551
+ mockReadFile.mockResolvedValue(content);
552
+ const findings = await auditFile('/test/deep.ts', ['clean-code']);
553
+ const finding = findFinding(findings, 'deep-nesting');
554
+ expect(finding).toBeDefined();
555
+ expect(finding.severity).toBe('warning');
556
+ });
557
+ it('does not flag moderately nested code', async () => {
558
+ const content = [
559
+ 'function shallow() {',
560
+ ' if (true) {',
561
+ ' if (true) {',
562
+ ' const x = 1;', // 6 spaces = 3 levels
563
+ ' }',
564
+ ' }',
565
+ '}',
566
+ ].join('\n');
567
+ mockReadFile.mockResolvedValue(content);
568
+ const findings = await auditFile('/test/shallow.ts', ['clean-code']);
569
+ expect(findFinding(findings, 'deep-nesting')).toBeUndefined();
570
+ });
571
+ it('reports only first deep nesting occurrence per file (break)', async () => {
572
+ const content = [
573
+ ' const x = 1;', // deep
574
+ ' const y = 2;', // also deep
575
+ ].join('\n');
576
+ mockReadFile.mockResolvedValue(content);
577
+ const findings = await auditFile('/test/multi-deep.ts', ['clean-code']);
578
+ const deepFindings = findFindings(findings, 'deep-nesting');
579
+ expect(deepFindings).toHaveLength(1);
580
+ });
581
+ it('skips blank deeply indented lines', async () => {
582
+ const content = [
583
+ ' ', // deep but empty (trim().length === 0)
584
+ ' const x = 1;',
585
+ ].join('\n');
586
+ mockReadFile.mockResolvedValue(content);
587
+ const findings = await auditFile('/test/blank-deep.ts', ['clean-code']);
588
+ expect(findFinding(findings, 'deep-nesting')).toBeUndefined();
589
+ });
590
+ // -- magic-number --
591
+ it('detects magic numbers in code', async () => {
592
+ const content = `function calc(x: number) {\n return x * 42;\n}`;
593
+ mockReadFile.mockResolvedValue(content);
594
+ const findings = await auditFile('/test/magic.ts', ['clean-code']);
595
+ const finding = findFinding(findings, 'magic-number');
596
+ expect(finding).toBeDefined();
597
+ expect(finding.severity).toBe('info');
598
+ expect(finding.message).toContain('42');
599
+ });
600
+ it('does not flag common HTTP status codes', async () => {
601
+ const content = `if (status === 404) { return; }`;
602
+ mockReadFile.mockResolvedValue(content);
603
+ const findings = await auditFile('/test/status.ts', ['clean-code']);
604
+ expect(findFinding(findings, 'magic-number')).toBeUndefined();
605
+ });
606
+ it('does not flag 0 or 1', async () => {
607
+ // 0 and 1 are single digit, so the regex won't match (needs 2+ digits)
608
+ const content = `const x = 0; const y = 1;`;
609
+ mockReadFile.mockResolvedValue(content);
610
+ const findings = await auditFile('/test/zero-one.ts', ['clean-code']);
611
+ expect(findFinding(findings, 'magic-number')).toBeUndefined();
612
+ });
613
+ it('does not flag numbers on lines with "port" or "PORT"', async () => {
614
+ const content = `const port = 3000;`;
615
+ mockReadFile.mockResolvedValue(content);
616
+ const findings = await auditFile('/test/port.ts', ['clean-code']);
617
+ expect(findFinding(findings, 'magic-number')).toBeUndefined();
618
+ });
619
+ it('does not flag numbers on lines with "timeout"', async () => {
620
+ const content = `const timeout = 5000;`;
621
+ mockReadFile.mockResolvedValue(content);
622
+ const findings = await auditFile('/test/timeout.ts', ['clean-code']);
623
+ expect(findFinding(findings, 'magic-number')).toBeUndefined();
624
+ });
625
+ it('skips comment lines starting with //', async () => {
626
+ const content = ` // Magic number 42 in comment`;
627
+ mockReadFile.mockResolvedValue(content);
628
+ const findings = await auditFile('/test/comment.ts', ['clean-code']);
629
+ expect(findFinding(findings, 'magic-number')).toBeUndefined();
630
+ });
631
+ it('skips comment lines starting with #', async () => {
632
+ const content = ` # Magic number 42 in comment`;
633
+ mockReadFile.mockResolvedValue(content);
634
+ const findings = await auditFile('/test/hash-comment.ts', ['clean-code']);
635
+ expect(findFinding(findings, 'magic-number')).toBeUndefined();
636
+ });
637
+ it('skips comment lines starting with *', async () => {
638
+ const content = ` * Magic number 42 in JSDoc`;
639
+ mockReadFile.mockResolvedValue(content);
640
+ const findings = await auditFile('/test/jsdoc.ts', ['clean-code']);
641
+ expect(findFinding(findings, 'magic-number')).toBeUndefined();
642
+ });
643
+ it('skips import lines', async () => {
644
+ const content = `import { something42 } from 'module';`;
645
+ mockReadFile.mockResolvedValue(content);
646
+ const findings = await auditFile('/test/import.ts', ['clean-code']);
647
+ expect(findFinding(findings, 'magic-number')).toBeUndefined();
648
+ });
649
+ it('skips require lines', async () => {
650
+ const content = `const mod = require('module42');`;
651
+ mockReadFile.mockResolvedValue(content);
652
+ const findings = await auditFile('/test/require.ts', ['clean-code']);
653
+ expect(findFinding(findings, 'magic-number')).toBeUndefined();
654
+ });
655
+ it('reports only one magic number per file (break)', async () => {
656
+ const content = [
657
+ 'const a = 42;',
658
+ 'const b = 99;',
659
+ ].join('\n');
660
+ mockReadFile.mockResolvedValue(content);
661
+ const findings = await auditFile('/test/multi-magic.ts', ['clean-code']);
662
+ const magicFindings = findFindings(findings, 'magic-number');
663
+ expect(magicFindings).toHaveLength(1);
664
+ });
665
+ it('does not flag common non-magic numbers like 100, 200, etc.', async () => {
666
+ const content = `const pct = 100; const ok = 200; const created = 201;`;
667
+ mockReadFile.mockResolvedValue(content);
668
+ const findings = await auditFile('/test/common-nums.ts', ['clean-code']);
669
+ expect(findFinding(findings, 'magic-number')).toBeUndefined();
670
+ });
671
+ });
672
+ // ════════════════════════════════════════════════════════════════════════════
673
+ // checkSolid — SOLID principle checks
674
+ // ════════════════════════════════════════════════════════════════════════════
675
+ describe('checkSolid', () => {
676
+ // -- srp-multiple-classes --
677
+ it('flags files with more than 2 classes', async () => {
678
+ mockGlob.mockResolvedValue(['multi-class.ts']);
679
+ const content = `class A {}\nclass B {}\nclass C {}`;
680
+ mockReadFile.mockResolvedValue(content);
681
+ const result = await auditCode('src', '/project', ['solid']);
682
+ const finding = findFinding(result.findings, 'srp-multiple-classes');
683
+ expect(finding).toBeDefined();
684
+ expect(finding.severity).toBe('warning');
685
+ expect(finding.message).toContain('3');
686
+ expect(finding.reference).toContain('Single Responsibility');
687
+ });
688
+ it('does not flag files with 2 or fewer classes', async () => {
689
+ mockGlob.mockResolvedValue(['two-class.ts']);
690
+ const content = `class A {}\nclass B {}`;
691
+ mockReadFile.mockResolvedValue(content);
692
+ const result = await auditCode('src', '/project', ['solid']);
693
+ expect(findFinding(result.findings, 'srp-multiple-classes')).toBeUndefined();
694
+ });
695
+ // -- srp-too-many-exports --
696
+ it('flags files with more than 15 exports', async () => {
697
+ mockGlob.mockResolvedValue(['exports.ts']);
698
+ const exports = Array.from({ length: 16 }, (_, i) => `export const x${i} = ${i};`).join('\n');
699
+ mockReadFile.mockResolvedValue(exports);
700
+ const result = await auditCode('src', '/project', ['solid']);
701
+ const finding = findFinding(result.findings, 'srp-too-many-exports');
702
+ expect(finding).toBeDefined();
703
+ expect(finding.severity).toBe('info');
704
+ });
705
+ it('does not flag files with 15 or fewer exports', async () => {
706
+ mockGlob.mockResolvedValue(['exports.ts']);
707
+ const exports = Array.from({ length: 15 }, (_, i) => `export const x${i} = ${i};`).join('\n');
708
+ mockReadFile.mockResolvedValue(exports);
709
+ const result = await auditCode('src', '/project', ['solid']);
710
+ expect(findFinding(result.findings, 'srp-too-many-exports')).toBeUndefined();
711
+ });
712
+ // -- ocp-long-switch --
713
+ it('flags switch statements with more than 7 cases', async () => {
714
+ mockGlob.mockResolvedValue(['switch.ts']);
715
+ const cases = Array.from({ length: 8 }, (_, i) => ` case ${i}: return ${i};`).join('\n');
716
+ const content = `function handler(x: number) {\n switch (x) {\n${cases}\n }\n}`;
717
+ mockReadFile.mockResolvedValue(content);
718
+ const result = await auditCode('src', '/project', ['solid']);
719
+ const finding = findFinding(result.findings, 'ocp-long-switch');
720
+ expect(finding).toBeDefined();
721
+ expect(finding.severity).toBe('warning');
722
+ expect(finding.message).toContain('8');
723
+ expect(finding.reference).toContain('Open/Closed');
724
+ });
725
+ it('does not flag switch with 7 or fewer cases', async () => {
726
+ mockGlob.mockResolvedValue(['switch.ts']);
727
+ const cases = Array.from({ length: 7 }, (_, i) => ` case ${i}: return ${i};`).join('\n');
728
+ const content = `switch (x) {\n${cases}\n}`;
729
+ mockReadFile.mockResolvedValue(content);
730
+ const result = await auditCode('src', '/project', ['solid']);
731
+ expect(findFinding(result.findings, 'ocp-long-switch')).toBeUndefined();
732
+ });
733
+ it('does not flag when no switch exists', async () => {
734
+ mockGlob.mockResolvedValue(['no-switch.ts']);
735
+ const content = `if (x === 1) { return 1; } else if (x === 2) { return 2; }`;
736
+ mockReadFile.mockResolvedValue(content);
737
+ const result = await auditCode('src', '/project', ['solid']);
738
+ expect(findFinding(result.findings, 'ocp-long-switch')).toBeUndefined();
739
+ });
740
+ // -- isp-large-interface --
741
+ it('flags interfaces with more than 8 members (TypeScript files)', async () => {
742
+ mockGlob.mockResolvedValue(['types.ts']);
743
+ const members = Array.from({ length: 10 }, (_, i) => ` field${i}: string;`).join('\n');
744
+ const content = `interface BigInterface {\n${members}\n}`;
745
+ mockReadFile.mockResolvedValue(content);
746
+ const result = await auditCode('src', '/project', ['solid']);
747
+ const finding = findFinding(result.findings, 'isp-large-interface');
748
+ expect(finding).toBeDefined();
749
+ expect(finding.severity).toBe('info');
750
+ expect(finding.message).toContain('BigInterface');
751
+ expect(finding.message).toContain('10');
752
+ expect(finding.reference).toContain('Interface Segregation');
753
+ });
754
+ it('does not flag interfaces with 8 or fewer members', async () => {
755
+ mockGlob.mockResolvedValue(['types.ts']);
756
+ const members = Array.from({ length: 8 }, (_, i) => ` field${i}: string;`).join('\n');
757
+ const content = `interface SmallInterface {\n${members}\n}`;
758
+ mockReadFile.mockResolvedValue(content);
759
+ const result = await auditCode('src', '/project', ['solid']);
760
+ expect(findFinding(result.findings, 'isp-large-interface')).toBeUndefined();
761
+ });
762
+ it('does not check interfaces in non-TS files', async () => {
763
+ mockGlob.mockResolvedValue(['types.js']);
764
+ const members = Array.from({ length: 10 }, (_, i) => ` field${i}: string;`).join('\n');
765
+ const content = `interface BigInterface {\n${members}\n}`;
766
+ mockReadFile.mockResolvedValue(content);
767
+ const result = await auditCode('src', '/project', ['solid']);
768
+ expect(findFinding(result.findings, 'isp-large-interface')).toBeUndefined();
769
+ });
770
+ it('checks interfaces in .tsx files too', async () => {
771
+ mockGlob.mockResolvedValue(['types.tsx']);
772
+ const members = Array.from({ length: 10 }, (_, i) => ` field${i}: string;`).join('\n');
773
+ const content = `interface BigTsxInterface {\n${members}\n}`;
774
+ mockReadFile.mockResolvedValue(content);
775
+ const result = await auditCode('src', '/project', ['solid']);
776
+ const finding = findFinding(result.findings, 'isp-large-interface');
777
+ expect(finding).toBeDefined();
778
+ expect(finding.message).toContain('BigTsxInterface');
779
+ });
780
+ // -- dip-direct-instantiation --
781
+ it('flags direct instantiation of infrastructure classes', async () => {
782
+ mockGlob.mockResolvedValue(['service.ts']);
783
+ const content = `const db = new DatabaseConnection("localhost");`;
784
+ mockReadFile.mockResolvedValue(content);
785
+ const result = await auditCode('src', '/project', ['solid']);
786
+ const finding = findFinding(result.findings, 'dip-direct-instantiation');
787
+ expect(finding).toBeDefined();
788
+ expect(finding.severity).toBe('warning');
789
+ expect(finding.message).toContain('Database');
790
+ expect(finding.reference).toContain('Dependency Inversion');
791
+ });
792
+ it('flags new HttpClient', async () => {
793
+ mockGlob.mockResolvedValue(['service.ts']);
794
+ const content = `const client = new HttpClient();`;
795
+ mockReadFile.mockResolvedValue(content);
796
+ const result = await auditCode('src', '/project', ['solid']);
797
+ expect(findFinding(result.findings, 'dip-direct-instantiation')).toBeDefined();
798
+ });
799
+ it('flags new RedisClient', async () => {
800
+ mockGlob.mockResolvedValue(['service.ts']);
801
+ const content = `const cache = new RedisClient();`;
802
+ mockReadFile.mockResolvedValue(content);
803
+ const result = await auditCode('src', '/project', ['solid']);
804
+ expect(findFinding(result.findings, 'dip-direct-instantiation')).toBeDefined();
805
+ });
806
+ it('flags new MongoClient', async () => {
807
+ mockGlob.mockResolvedValue(['service.ts']);
808
+ const content = `const mongo = new MongoClient("uri");`;
809
+ mockReadFile.mockResolvedValue(content);
810
+ const result = await auditCode('src', '/project', ['solid']);
811
+ expect(findFinding(result.findings, 'dip-direct-instantiation')).toBeDefined();
812
+ });
813
+ it('flags new PrismaClient', async () => {
814
+ mockGlob.mockResolvedValue(['service.ts']);
815
+ const content = `const prisma = new PrismaClient();`;
816
+ mockReadFile.mockResolvedValue(content);
817
+ const result = await auditCode('src', '/project', ['solid']);
818
+ expect(findFinding(result.findings, 'dip-direct-instantiation')).toBeDefined();
819
+ });
820
+ it('flags new SequelizeConnection', async () => {
821
+ mockGlob.mockResolvedValue(['service.ts']);
822
+ const content = `const seq = new SequelizeConnection();`;
823
+ mockReadFile.mockResolvedValue(content);
824
+ const result = await auditCode('src', '/project', ['solid']);
825
+ expect(findFinding(result.findings, 'dip-direct-instantiation')).toBeDefined();
826
+ });
827
+ it('flags new MongooseModel', async () => {
828
+ mockGlob.mockResolvedValue(['service.ts']);
829
+ const content = `const model = new MongooseModel();`;
830
+ mockReadFile.mockResolvedValue(content);
831
+ const result = await auditCode('src', '/project', ['solid']);
832
+ expect(findFinding(result.findings, 'dip-direct-instantiation')).toBeDefined();
833
+ });
834
+ it('does not flag new for non-infrastructure classes', async () => {
835
+ mockGlob.mockResolvedValue(['service.ts']);
836
+ const content = `const user = new User("John");`;
837
+ mockReadFile.mockResolvedValue(content);
838
+ const result = await auditCode('src', '/project', ['solid']);
839
+ expect(findFinding(result.findings, 'dip-direct-instantiation')).toBeUndefined();
840
+ });
841
+ });
842
+ // ════════════════════════════════════════════════════════════════════════════
843
+ // checkArchitecture — layer violation and dependency checks
844
+ // ════════════════════════════════════════════════════════════════════════════
845
+ describe('checkArchitecture', () => {
846
+ // -- layer-violation-ui-in-data --
847
+ it('flags UI logic in data/repository layer', async () => {
848
+ mockGlob.mockResolvedValue(['repositories/user-repo.ts']);
849
+ const content = `import { useState } from 'react';`;
850
+ mockReadFile.mockResolvedValue(content);
851
+ const result = await auditCode('.', '/project', ['architecture']);
852
+ const finding = findFinding(result.findings, 'layer-violation-ui-in-data');
853
+ expect(finding).toBeDefined();
854
+ expect(finding.severity).toBe('error');
855
+ expect(finding.reference).toContain('Separation of Concerns');
856
+ });
857
+ it('flags UI logic in models directory', async () => {
858
+ mockGlob.mockResolvedValue(['models/user.ts']);
859
+ const content = `const el = createElement('div');`;
860
+ mockReadFile.mockResolvedValue(content);
861
+ const result = await auditCode('.', '/project', ['architecture']);
862
+ expect(findFinding(result.findings, 'layer-violation-ui-in-data')).toBeDefined();
863
+ });
864
+ it('flags UI logic in db directory', async () => {
865
+ mockGlob.mockResolvedValue(['db/connection.ts']);
866
+ const content = `useEffect(() => { fetchData(); }, []);`;
867
+ mockReadFile.mockResolvedValue(content);
868
+ const result = await auditCode('.', '/project', ['architecture']);
869
+ expect(findFinding(result.findings, 'layer-violation-ui-in-data')).toBeDefined();
870
+ });
871
+ it('flags component render in data layer', async () => {
872
+ mockGlob.mockResolvedValue(['data/store.tsx']);
873
+ const content = `function render() { return <div>Hello</div>; }`;
874
+ mockReadFile.mockResolvedValue(content);
875
+ const result = await auditCode('.', '/project', ['architecture']);
876
+ expect(findFinding(result.findings, 'layer-violation-ui-in-data')).toBeDefined();
877
+ });
878
+ it('does not flag non-data-layer files with UI logic', async () => {
879
+ mockGlob.mockResolvedValue(['utils/helper.ts']);
880
+ const content = `import { useState } from 'react';`;
881
+ mockReadFile.mockResolvedValue(content);
882
+ const result = await auditCode('.', '/project', ['architecture']);
883
+ expect(findFinding(result.findings, 'layer-violation-ui-in-data')).toBeUndefined();
884
+ });
885
+ // -- layer-violation-data-in-ui --
886
+ it('flags data access in presentation layer', async () => {
887
+ mockGlob.mockResolvedValue(['components/UserList.ts']);
888
+ const content = `const users = await db.query("SELECT * FROM users");`;
889
+ mockReadFile.mockResolvedValue(content);
890
+ const result = await auditCode('.', '/project', ['architecture']);
891
+ const finding = findFinding(result.findings, 'layer-violation-data-in-ui');
892
+ expect(finding).toBeDefined();
893
+ expect(finding.severity).toBe('warning');
894
+ });
895
+ it('flags prisma in pages directory', async () => {
896
+ mockGlob.mockResolvedValue(['pages/index.ts']);
897
+ const content = `const data = await prisma.user.findMany();`;
898
+ mockReadFile.mockResolvedValue(content);
899
+ const result = await auditCode('.', '/project', ['architecture']);
900
+ expect(findFinding(result.findings, 'layer-violation-data-in-ui')).toBeDefined();
901
+ });
902
+ it('flags SQL keywords in views directory', async () => {
903
+ mockGlob.mockResolvedValue(['views/dashboard.ts']);
904
+ const content = `const result = execute("INSERT INTO logs VALUES (1)");`;
905
+ mockReadFile.mockResolvedValue(content);
906
+ const result = await auditCode('.', '/project', ['architecture']);
907
+ expect(findFinding(result.findings, 'layer-violation-data-in-ui')).toBeDefined();
908
+ });
909
+ it('flags mongoose in screens directory', async () => {
910
+ mockGlob.mockResolvedValue(['screens/Home.ts']);
911
+ const content = `const users = await mongoose.model('User').find();`;
912
+ mockReadFile.mockResolvedValue(content);
913
+ const result = await auditCode('.', '/project', ['architecture']);
914
+ expect(findFinding(result.findings, 'layer-violation-data-in-ui')).toBeDefined();
915
+ });
916
+ it('does not flag react-query (false positive exclusion)', async () => {
917
+ mockGlob.mockResolvedValue(['components/UserList.ts']);
918
+ const content = `import { useQuery } from 'react-query';\nconst data = query({ key: 'users' });`;
919
+ mockReadFile.mockResolvedValue(content);
920
+ const result = await auditCode('.', '/project', ['architecture']);
921
+ expect(findFinding(result.findings, 'layer-violation-data-in-ui')).toBeUndefined();
922
+ });
923
+ it('does not flag tanstack (false positive exclusion)', async () => {
924
+ mockGlob.mockResolvedValue(['components/UserList.ts']);
925
+ const content = `import { useQuery } from '@tanstack/react-query';\nconst data = query({ key: 'users' });`;
926
+ mockReadFile.mockResolvedValue(content);
927
+ const result = await auditCode('.', '/project', ['architecture']);
928
+ expect(findFinding(result.findings, 'layer-violation-data-in-ui')).toBeUndefined();
929
+ });
930
+ // -- too-many-dependencies --
931
+ it('flags files with more than 20 imports', async () => {
932
+ mockGlob.mockResolvedValue(['god-module.ts']);
933
+ const imports = Array.from({ length: 21 }, (_, i) => `import { mod${i} } from './mod${i}';`).join('\n');
934
+ const content = imports + '\n\nexport function main() { return 1; }';
935
+ mockReadFile.mockResolvedValue(content);
936
+ const result = await auditCode('.', '/project', ['architecture']);
937
+ const finding = findFinding(result.findings, 'too-many-dependencies');
938
+ expect(finding).toBeDefined();
939
+ expect(finding.severity).toBe('warning');
940
+ expect(finding.message).toContain('21');
941
+ expect(finding.reference).toContain('High Cohesion');
942
+ });
943
+ it('does not flag files with 20 or fewer imports', async () => {
944
+ mockGlob.mockResolvedValue(['normal.ts']);
945
+ const imports = Array.from({ length: 20 }, (_, i) => `import { mod${i} } from './mod${i}';`).join('\n');
946
+ mockReadFile.mockResolvedValue(imports);
947
+ const result = await auditCode('.', '/project', ['architecture']);
948
+ expect(findFinding(result.findings, 'too-many-dependencies')).toBeUndefined();
949
+ });
950
+ it('counts require-style imports', async () => {
951
+ mockGlob.mockResolvedValue(['old-module.js']);
952
+ const requires = Array.from({ length: 21 }, (_, i) => ` const mod${i} = require('./mod${i}');`).join('\n');
953
+ mockReadFile.mockResolvedValue(requires);
954
+ const result = await auditCode('.', '/project', ['architecture']);
955
+ expect(findFinding(result.findings, 'too-many-dependencies')).toBeDefined();
956
+ });
957
+ });
958
+ // ════════════════════════════════════════════════════════════════════════════
959
+ // checkSecurity — security vulnerability detection
960
+ // ════════════════════════════════════════════════════════════════════════════
961
+ describe('checkSecurity', () => {
962
+ // -- hardcoded-secret --
963
+ it('flags hardcoded API keys', async () => {
964
+ const content = `const api_key = "sk-abc123defghijklmno";`;
965
+ mockReadFile.mockResolvedValue(content);
966
+ const findings = await auditFile('/test/secrets.ts', ['security']);
967
+ const finding = findFinding(findings, 'hardcoded-secret');
968
+ expect(finding).toBeDefined();
969
+ expect(finding.severity).toBe('critical');
970
+ expect(finding.reference).toContain('OWASP');
971
+ });
972
+ it('flags hardcoded passwords', async () => {
973
+ const content = `const password = "superSecret123!";`;
974
+ mockReadFile.mockResolvedValue(content);
975
+ const findings = await auditFile('/test/pass.ts', ['security']);
976
+ expect(findFinding(findings, 'hardcoded-secret')).toBeDefined();
977
+ });
978
+ it('flags hardcoded tokens', async () => {
979
+ const content = `const token = "eyJhbGciOiJIUzI1NiIs";`;
980
+ mockReadFile.mockResolvedValue(content);
981
+ const findings = await auditFile('/test/token.ts', ['security']);
982
+ expect(findFinding(findings, 'hardcoded-secret')).toBeDefined();
983
+ });
984
+ it('flags hardcoded private keys', async () => {
985
+ const content = `const private_key = "MIIEvgIBADANBgkqhkiG9w0BAQ";`;
986
+ mockReadFile.mockResolvedValue(content);
987
+ const findings = await auditFile('/test/pk.ts', ['security']);
988
+ expect(findFinding(findings, 'hardcoded-secret')).toBeDefined();
989
+ });
990
+ it('flags hardcoded secret values', async () => {
991
+ const content = `const secret = "my-super-secret-value-123";`;
992
+ mockReadFile.mockResolvedValue(content);
993
+ const findings = await auditFile('/test/secret.ts', ['security']);
994
+ expect(findFinding(findings, 'hardcoded-secret')).toBeDefined();
995
+ });
996
+ it('does not flag placeholder secrets (your-)', async () => {
997
+ const content = `const api_key = "your-api-key-here";`;
998
+ mockReadFile.mockResolvedValue(content);
999
+ const findings = await auditFile('/test/placeholder.ts', ['security']);
1000
+ expect(findFinding(findings, 'hardcoded-secret')).toBeUndefined();
1001
+ });
1002
+ it('does not flag placeholder secrets (example)', async () => {
1003
+ const content = `const api_key = "example-api-key-value";`;
1004
+ mockReadFile.mockResolvedValue(content);
1005
+ const findings = await auditFile('/test/example.ts', ['security']);
1006
+ expect(findFinding(findings, 'hardcoded-secret')).toBeUndefined();
1007
+ });
1008
+ it('does not flag placeholder secrets (TODO)', async () => {
1009
+ const content = `const api_key = "TODO_replace_me_12345";`;
1010
+ mockReadFile.mockResolvedValue(content);
1011
+ const findings = await auditFile('/test/todo.ts', ['security']);
1012
+ expect(findFinding(findings, 'hardcoded-secret')).toBeUndefined();
1013
+ });
1014
+ it('does not flag placeholder secrets (change-me)', async () => {
1015
+ const content = `const api_key = "change-me-placeholder_val";`;
1016
+ mockReadFile.mockResolvedValue(content);
1017
+ const findings = await auditFile('/test/change-me.ts', ['security']);
1018
+ expect(findFinding(findings, 'hardcoded-secret')).toBeUndefined();
1019
+ });
1020
+ it('does not flag placeholder secrets (xxx)', async () => {
1021
+ const content = `const api_key = "xxx-xxx-xxx-placeholder";`;
1022
+ mockReadFile.mockResolvedValue(content);
1023
+ const findings = await auditFile('/test/xxx-secret.ts', ['security']);
1024
+ expect(findFinding(findings, 'hardcoded-secret')).toBeUndefined();
1025
+ });
1026
+ it('does not flag short values (under 8 chars)', async () => {
1027
+ const content = `const api_key = "short";`;
1028
+ mockReadFile.mockResolvedValue(content);
1029
+ const findings = await auditFile('/test/short-secret.ts', ['security']);
1030
+ expect(findFinding(findings, 'hardcoded-secret')).toBeUndefined();
1031
+ });
1032
+ // -- sql-injection-risk --
1033
+ it('flags SQL injection with template literals', async () => {
1034
+ const content = 'const result = query(`SELECT * FROM users WHERE id = ${userId}`);';
1035
+ mockReadFile.mockResolvedValue(content);
1036
+ const findings = await auditFile('/test/sqli.ts', ['security']);
1037
+ const finding = findFinding(findings, 'sql-injection-risk');
1038
+ expect(finding).toBeDefined();
1039
+ expect(finding.severity).toBe('critical');
1040
+ expect(finding.reference).toContain('SQL Injection');
1041
+ });
1042
+ // -- no-eval --
1043
+ it('flags eval() usage', async () => {
1044
+ const content = `const result = eval("1 + 2");`;
1045
+ mockReadFile.mockResolvedValue(content);
1046
+ const findings = await auditFile('/test/eval.ts', ['security']);
1047
+ const finding = findFinding(findings, 'no-eval');
1048
+ expect(finding).toBeDefined();
1049
+ expect(finding.severity).toBe('critical');
1050
+ expect(finding.reference).toContain('Code Injection');
1051
+ });
1052
+ it('does not flag evaluate or evaluation (not eval())', async () => {
1053
+ const content = `const evaluate = (x: number) => x * 2; evaluate(5);`;
1054
+ mockReadFile.mockResolvedValue(content);
1055
+ const findings = await auditFile('/test/evaluate.ts', ['security']);
1056
+ expect(findFinding(findings, 'no-eval')).toBeUndefined();
1057
+ });
1058
+ // -- xss-risk --
1059
+ it('flags innerHTML assignment', async () => {
1060
+ const content = `element.innerHTML = userInput;`;
1061
+ mockReadFile.mockResolvedValue(content);
1062
+ const findings = await auditFile('/test/xss.ts', ['security']);
1063
+ const finding = findFinding(findings, 'xss-risk');
1064
+ expect(finding).toBeDefined();
1065
+ expect(finding.severity).toBe('error');
1066
+ expect(finding.reference).toContain('XSS');
1067
+ });
1068
+ it('flags dangerouslySetInnerHTML', async () => {
1069
+ const content = `<div dangerouslySetInnerHTML={{ __html: data }} />`;
1070
+ mockReadFile.mockResolvedValue(content);
1071
+ const findings = await auditFile('/test/react-xss.tsx', ['security']);
1072
+ expect(findFinding(findings, 'xss-risk')).toBeDefined();
1073
+ });
1074
+ // -- cors-wildcard --
1075
+ it('flags CORS wildcard configuration', async () => {
1076
+ const content = `const cors = "*";`;
1077
+ mockReadFile.mockResolvedValue(content);
1078
+ const findings = await auditFile('/test/cors.ts', ['security']);
1079
+ const finding = findFinding(findings, 'cors-wildcard');
1080
+ expect(finding).toBeDefined();
1081
+ expect(finding.severity).toBe('warning');
1082
+ expect(finding.reference).toContain('OWASP');
1083
+ });
1084
+ it('flags access-control-allow-origin wildcard', async () => {
1085
+ const content = `access-control-allow-origin: "*"`;
1086
+ mockReadFile.mockResolvedValue(content);
1087
+ const findings = await auditFile('/test/cors2.ts', ['security']);
1088
+ expect(findFinding(findings, 'cors-wildcard')).toBeDefined();
1089
+ });
1090
+ it('does not flag non-wildcard CORS', async () => {
1091
+ const content = `cors = "https://example.com";`;
1092
+ mockReadFile.mockResolvedValue(content);
1093
+ const findings = await auditFile('/test/cors-safe.ts', ['security']);
1094
+ expect(findFinding(findings, 'cors-wildcard')).toBeUndefined();
1095
+ });
1096
+ });
1097
+ // ════════════════════════════════════════════════════════════════════════════
1098
+ // checkErrorHandling — error handling patterns
1099
+ // ════════════════════════════════════════════════════════════════════════════
1100
+ describe('checkErrorHandling', () => {
1101
+ // -- empty-catch --
1102
+ it('flags empty catch blocks', async () => {
1103
+ const content = `try { doSomething(); } catch (e) {}`;
1104
+ mockReadFile.mockResolvedValue(content);
1105
+ const findings = await auditFile('/test/empty-catch.ts', ['error-handling']);
1106
+ const finding = findFinding(findings, 'empty-catch');
1107
+ expect(finding).toBeDefined();
1108
+ expect(finding.severity).toBe('error');
1109
+ expect(finding.line).toBeDefined();
1110
+ });
1111
+ it('does not flag catch blocks with code', async () => {
1112
+ const content = `try { doSomething(); } catch (e) { throw e; }`;
1113
+ mockReadFile.mockResolvedValue(content);
1114
+ const findings = await auditFile('/test/good-catch.ts', ['error-handling']);
1115
+ expect(findFinding(findings, 'empty-catch')).toBeUndefined();
1116
+ });
1117
+ // -- catch-only-logs --
1118
+ it('flags catch blocks that only log (console.log)', async () => {
1119
+ const content = [
1120
+ 'try {',
1121
+ ' doSomething();',
1122
+ '} catch (e) {',
1123
+ ' console.log(e);',
1124
+ '}',
1125
+ ].join('\n');
1126
+ mockReadFile.mockResolvedValue(content);
1127
+ const findings = await auditFile('/test/log-catch.ts', ['error-handling']);
1128
+ expect(findFinding(findings, 'catch-only-logs')).toBeDefined();
1129
+ });
1130
+ it('flags catch blocks that only log (console.error)', async () => {
1131
+ const content = [
1132
+ 'try {',
1133
+ ' doSomething();',
1134
+ '} catch (e) {',
1135
+ ' console.error(e);',
1136
+ '}',
1137
+ ].join('\n');
1138
+ mockReadFile.mockResolvedValue(content);
1139
+ const findings = await auditFile('/test/error-log-catch.ts', ['error-handling']);
1140
+ expect(findFinding(findings, 'catch-only-logs')).toBeDefined();
1141
+ });
1142
+ it('does not flag catch blocks that log and throw', async () => {
1143
+ const content = [
1144
+ 'try {',
1145
+ ' doSomething();',
1146
+ '}',
1147
+ 'catch (e) {',
1148
+ ' console.error(e);',
1149
+ ' throw e;',
1150
+ '}',
1151
+ ].join('\n');
1152
+ mockReadFile.mockResolvedValue(content);
1153
+ const findings = await auditFile('/test/log-throw.ts', ['error-handling']);
1154
+ expect(findFinding(findings, 'catch-only-logs')).toBeUndefined();
1155
+ });
1156
+ it('does not flag catch blocks that log and return', async () => {
1157
+ const content = [
1158
+ 'try {',
1159
+ ' doSomething();',
1160
+ '}',
1161
+ 'catch (e) {',
1162
+ ' console.error(e);',
1163
+ ' return null;',
1164
+ '}',
1165
+ ].join('\n');
1166
+ mockReadFile.mockResolvedValue(content);
1167
+ const findings = await auditFile('/test/log-return.ts', ['error-handling']);
1168
+ expect(findFinding(findings, 'catch-only-logs')).toBeUndefined();
1169
+ });
1170
+ it('does not flag catch blocks that log and reject', async () => {
1171
+ const content = [
1172
+ 'try {',
1173
+ ' doSomething();',
1174
+ '}',
1175
+ 'catch (e) {',
1176
+ ' console.error(e);',
1177
+ ' reject(e);',
1178
+ '}',
1179
+ ].join('\n');
1180
+ mockReadFile.mockResolvedValue(content);
1181
+ const findings = await auditFile('/test/log-reject.ts', ['error-handling']);
1182
+ expect(findFinding(findings, 'catch-only-logs')).toBeUndefined();
1183
+ });
1184
+ it('does not flag catch blocks without console.log/error', async () => {
1185
+ const content = [
1186
+ 'try {',
1187
+ ' doSomething();',
1188
+ '} catch (e) {',
1189
+ ' logger.warn(e);',
1190
+ '}',
1191
+ ].join('\n');
1192
+ mockReadFile.mockResolvedValue(content);
1193
+ const findings = await auditFile('/test/custom-logger.ts', ['error-handling']);
1194
+ expect(findFinding(findings, 'catch-only-logs')).toBeUndefined();
1195
+ });
1196
+ // -- unhandled-async --
1197
+ it('flags async functions without try-catch', async () => {
1198
+ const content = [
1199
+ 'async function fetchData() {',
1200
+ ' const res = await fetch("/api/data");',
1201
+ ' return res.json();',
1202
+ '}',
1203
+ ].join('\n');
1204
+ mockReadFile.mockResolvedValue(content);
1205
+ const findings = await auditFile('/test/unhandled.ts', ['error-handling']);
1206
+ const finding = findFinding(findings, 'unhandled-async');
1207
+ expect(finding).toBeDefined();
1208
+ expect(finding.severity).toBe('info');
1209
+ expect(finding.message).toContain('fetchData');
1210
+ });
1211
+ it('does not flag async functions with try-catch', async () => {
1212
+ const content = [
1213
+ 'async function fetchData() {',
1214
+ ' try {',
1215
+ ' const res = await fetch("/api/data");',
1216
+ ' return res.json();',
1217
+ ' } catch (e) {',
1218
+ ' throw new Error("failed");',
1219
+ ' }',
1220
+ '}',
1221
+ ].join('\n');
1222
+ mockReadFile.mockResolvedValue(content);
1223
+ const findings = await auditFile('/test/handled.ts', ['error-handling']);
1224
+ expect(findFinding(findings, 'unhandled-async')).toBeUndefined();
1225
+ });
1226
+ it('does not flag async functions with .catch', async () => {
1227
+ const content = [
1228
+ 'async function fetchData() {',
1229
+ ' const res = await fetch("/api/data").catch(handleError);',
1230
+ ' return res;',
1231
+ '}',
1232
+ ].join('\n');
1233
+ mockReadFile.mockResolvedValue(content);
1234
+ const findings = await auditFile('/test/catch-chain.ts', ['error-handling']);
1235
+ expect(findFinding(findings, 'unhandled-async')).toBeUndefined();
1236
+ });
1237
+ it('only checks async for JS/TS extensions', async () => {
1238
+ const content = [
1239
+ 'async function fetchData() {',
1240
+ ' const res = await fetch("/api/data");',
1241
+ ' return res;',
1242
+ '}',
1243
+ ].join('\n');
1244
+ mockReadFile.mockResolvedValue(content);
1245
+ // .py extension, should not check for unhandled-async
1246
+ const findings = await auditFile('/test/async.py', ['error-handling']);
1247
+ expect(findFinding(findings, 'unhandled-async')).toBeUndefined();
1248
+ });
1249
+ it('checks async in .jsx files', async () => {
1250
+ const content = [
1251
+ 'async function fetchData() {',
1252
+ ' const res = await fetch("/api/data");',
1253
+ ' return res;',
1254
+ '}',
1255
+ ].join('\n');
1256
+ mockReadFile.mockResolvedValue(content);
1257
+ const findings = await auditFile('/test/async.jsx', ['error-handling']);
1258
+ expect(findFinding(findings, 'unhandled-async')).toBeDefined();
1259
+ });
1260
+ });
1261
+ // ════════════════════════════════════════════════════════════════════════════
1262
+ // checkPerformance — performance pattern detection
1263
+ // ════════════════════════════════════════════════════════════════════════════
1264
+ describe('checkPerformance', () => {
1265
+ // -- n-plus-one --
1266
+ it('flags N+1 query patterns (await in loop)', async () => {
1267
+ mockGlob.mockResolvedValue(['app.ts']);
1268
+ const content = `for (const item of items) {\n const data = await fetch("/api/" + item.id);\n}`;
1269
+ mockReadFile.mockResolvedValue(content);
1270
+ const result = await auditCode('src', '/project', ['performance']);
1271
+ const finding = findFinding(result.findings, 'n-plus-one');
1272
+ expect(finding).toBeDefined();
1273
+ expect(finding.severity).toBe('warning');
1274
+ });
1275
+ it('flags N+1 with query in loop', async () => {
1276
+ mockGlob.mockResolvedValue(['app.ts']);
1277
+ const content = `for (let i = 0; i < users.length; i++) {\n const user = query(users[i]);\n}`;
1278
+ mockReadFile.mockResolvedValue(content);
1279
+ const result = await auditCode('src', '/project', ['performance']);
1280
+ expect(findFinding(result.findings, 'n-plus-one')).toBeDefined();
1281
+ });
1282
+ it('does not flag when no loop+query pattern', async () => {
1283
+ mockGlob.mockResolvedValue(['app.ts']);
1284
+ const content = `const data = await fetchAll(ids);`;
1285
+ mockReadFile.mockResolvedValue(content);
1286
+ const result = await auditCode('src', '/project', ['performance']);
1287
+ expect(findFinding(result.findings, 'n-plus-one')).toBeUndefined();
1288
+ });
1289
+ // -- sync-io --
1290
+ it('flags synchronous file reads in TS/JS files', async () => {
1291
+ mockGlob.mockResolvedValue(['app.ts']);
1292
+ const content = `const data = readFileSync("/path/to/file", "utf-8");`;
1293
+ mockReadFile.mockResolvedValue(content);
1294
+ const result = await auditCode('src', '/project', ['performance']);
1295
+ const finding = findFinding(result.findings, 'sync-io');
1296
+ expect(finding).toBeDefined();
1297
+ expect(finding.severity).toBe('warning');
1298
+ });
1299
+ it('flags writeFileSync', async () => {
1300
+ mockGlob.mockResolvedValue(['app.js']);
1301
+ const content = `writeFileSync("/path", data);`;
1302
+ mockReadFile.mockResolvedValue(content);
1303
+ const result = await auditCode('src', '/project', ['performance']);
1304
+ expect(findFinding(result.findings, 'sync-io')).toBeDefined();
1305
+ });
1306
+ it('flags readdirSync', async () => {
1307
+ mockGlob.mockResolvedValue(['app.mjs']);
1308
+ const content = `const files = readdirSync("/path");`;
1309
+ mockReadFile.mockResolvedValue(content);
1310
+ const result = await auditCode('src', '/project', ['performance']);
1311
+ expect(findFinding(result.findings, 'sync-io')).toBeDefined();
1312
+ });
1313
+ it('flags statSync', async () => {
1314
+ mockGlob.mockResolvedValue(['app.ts']);
1315
+ const content = `const stats = statSync("/path");`;
1316
+ mockReadFile.mockResolvedValue(content);
1317
+ const result = await auditCode('src', '/project', ['performance']);
1318
+ expect(findFinding(result.findings, 'sync-io')).toBeDefined();
1319
+ });
1320
+ it('flags existsSync', async () => {
1321
+ mockGlob.mockResolvedValue(['app.ts']);
1322
+ const content = `if (existsSync("/path")) { }`;
1323
+ mockReadFile.mockResolvedValue(content);
1324
+ const result = await auditCode('src', '/project', ['performance']);
1325
+ expect(findFinding(result.findings, 'sync-io')).toBeDefined();
1326
+ });
1327
+ it('does not flag sync I/O in config files', async () => {
1328
+ mockGlob.mockResolvedValue(['config/settings.ts']);
1329
+ const content = `const data = readFileSync("config.json", "utf-8");`;
1330
+ mockReadFile.mockResolvedValue(content);
1331
+ const result = await auditCode('src', '/project', ['performance']);
1332
+ expect(findFinding(result.findings, 'sync-io')).toBeUndefined();
1333
+ });
1334
+ it('does not flag sync I/O in setup files', async () => {
1335
+ mockGlob.mockResolvedValue(['setup/init.ts']);
1336
+ const content = `const data = readFileSync("setup.json", "utf-8");`;
1337
+ mockReadFile.mockResolvedValue(content);
1338
+ const result = await auditCode('src', '/project', ['performance']);
1339
+ expect(findFinding(result.findings, 'sync-io')).toBeUndefined();
1340
+ });
1341
+ it('does not flag sync I/O in init files', async () => {
1342
+ mockGlob.mockResolvedValue(['init/bootstrap.ts']);
1343
+ const content = `const data = readFileSync("init.json", "utf-8");`;
1344
+ mockReadFile.mockResolvedValue(content);
1345
+ const result = await auditCode('src', '/project', ['performance']);
1346
+ expect(findFinding(result.findings, 'sync-io')).toBeUndefined();
1347
+ });
1348
+ it('does not flag sync I/O in non-JS files', async () => {
1349
+ mockGlob.mockResolvedValue(['app.py']);
1350
+ const content = `readFileSync("/path")`;
1351
+ mockReadFile.mockResolvedValue(content);
1352
+ const result = await auditCode('src', '/project', ['performance']);
1353
+ expect(findFinding(result.findings, 'sync-io')).toBeUndefined();
1354
+ });
1355
+ // -- spread-in-loop --
1356
+ it('flags spread in for loop', async () => {
1357
+ mockGlob.mockResolvedValue(['app.ts']);
1358
+ const content = [
1359
+ 'for (const item of items) {',
1360
+ ' result = { ...result, [item.id]: item };',
1361
+ '}',
1362
+ ].join('\n');
1363
+ mockReadFile.mockResolvedValue(content);
1364
+ const result = await auditCode('src', '/project', ['performance']);
1365
+ const finding = findFinding(result.findings, 'spread-in-loop');
1366
+ expect(finding).toBeDefined();
1367
+ expect(finding.severity).toBe('info');
1368
+ });
1369
+ it('flags spread in forEach', async () => {
1370
+ mockGlob.mockResolvedValue(['app.ts']);
1371
+ const content = [
1372
+ 'items.forEach((item) => {',
1373
+ ' result = [...result, item];',
1374
+ '});',
1375
+ ].join('\n');
1376
+ mockReadFile.mockResolvedValue(content);
1377
+ const result = await auditCode('src', '/project', ['performance']);
1378
+ expect(findFinding(result.findings, 'spread-in-loop')).toBeDefined();
1379
+ });
1380
+ it('does not flag spread outside loops', async () => {
1381
+ mockGlob.mockResolvedValue(['app.ts']);
1382
+ const content = `const merged = { ...defaults, ...options };`;
1383
+ mockReadFile.mockResolvedValue(content);
1384
+ const result = await auditCode('src', '/project', ['performance']);
1385
+ expect(findFinding(result.findings, 'spread-in-loop')).toBeUndefined();
1386
+ });
1387
+ });
1388
+ // ════════════════════════════════════════════════════════════════════════════
1389
+ // checkTestingPractices — test file quality checks
1390
+ // ════════════════════════════════════════════════════════════════════════════
1391
+ describe('checkTestingPractices', () => {
1392
+ it('flags it.skip() in test files', async () => {
1393
+ mockGlob.mockResolvedValue(['app.test.ts']);
1394
+ const content = `it.skip('broken test', () => { expect(true).toBe(true); });`;
1395
+ mockReadFile.mockResolvedValue(content);
1396
+ const result = await auditCode('src', '/project', ['testing']);
1397
+ const finding = findFinding(result.findings, 'test-skip');
1398
+ expect(finding).toBeDefined();
1399
+ expect(finding.severity).toBe('warning');
1400
+ expect(finding.message).toContain('.skip()');
1401
+ });
1402
+ it('flags test.skip() in test files', async () => {
1403
+ mockGlob.mockResolvedValue(['app.spec.ts']);
1404
+ const content = `test.skip('broken test', () => { expect(true).toBe(true); });`;
1405
+ mockReadFile.mockResolvedValue(content);
1406
+ const result = await auditCode('src', '/project', ['testing']);
1407
+ expect(findFinding(result.findings, 'test-skip')).toBeDefined();
1408
+ });
1409
+ it('flags describe.skip() in test files', async () => {
1410
+ mockGlob.mockResolvedValue(['app.test.ts']);
1411
+ const content = `describe.skip('suite', () => { it('test', () => {}); });`;
1412
+ mockReadFile.mockResolvedValue(content);
1413
+ const result = await auditCode('src', '/project', ['testing']);
1414
+ expect(findFinding(result.findings, 'test-skip')).toBeDefined();
1415
+ });
1416
+ it('flags it.only() with error severity', async () => {
1417
+ mockGlob.mockResolvedValue(['app.test.ts']);
1418
+ const content = `it.only('focused test', () => { expect(true).toBe(true); });`;
1419
+ mockReadFile.mockResolvedValue(content);
1420
+ const result = await auditCode('src', '/project', ['testing']);
1421
+ const finding = findFinding(result.findings, 'test-only');
1422
+ expect(finding).toBeDefined();
1423
+ expect(finding.severity).toBe('error');
1424
+ expect(finding.message).toContain('.only()');
1425
+ expect(finding.suggestion).toContain('Remove .only()');
1426
+ });
1427
+ it('flags test.only() in test files', async () => {
1428
+ mockGlob.mockResolvedValue(['app.test.ts']);
1429
+ const content = `test.only('focused test', () => { expect(true).toBe(true); });`;
1430
+ mockReadFile.mockResolvedValue(content);
1431
+ const result = await auditCode('src', '/project', ['testing']);
1432
+ expect(findFinding(result.findings, 'test-only')).toBeDefined();
1433
+ });
1434
+ it('flags describe.only() in test files', async () => {
1435
+ mockGlob.mockResolvedValue(['app.test.ts']);
1436
+ const content = `describe.only('focused suite', () => { it('test', () => {}); });`;
1437
+ mockReadFile.mockResolvedValue(content);
1438
+ const result = await auditCode('src', '/project', ['testing']);
1439
+ expect(findFinding(result.findings, 'test-only')).toBeDefined();
1440
+ });
1441
+ it('returns no testing findings for non-test files', async () => {
1442
+ mockGlob.mockResolvedValue(['app.ts']);
1443
+ const content = `it.skip('not a test file', () => {});`;
1444
+ mockReadFile.mockResolvedValue(content);
1445
+ const result = await auditCode('src', '/project', ['testing']);
1446
+ expect(findFinding(result.findings, 'test-skip')).toBeUndefined();
1447
+ });
1448
+ it('returns no testing findings for .spec. files without skip/only', async () => {
1449
+ mockGlob.mockResolvedValue(['app.spec.ts']);
1450
+ const content = `it('normal test', () => { expect(1).toBe(1); });`;
1451
+ mockReadFile.mockResolvedValue(content);
1452
+ const result = await auditCode('src', '/project', ['testing']);
1453
+ expect(result.findings).toHaveLength(0);
1454
+ });
1455
+ });
1456
+ // ════════════════════════════════════════════════════════════════════════════
1457
+ // checkDry — duplicate code detection
1458
+ // ════════════════════════════════════════════════════════════════════════════
1459
+ describe('checkDry', () => {
1460
+ it('flags lines duplicated 4+ times', async () => {
1461
+ mockGlob.mockResolvedValue(['app.ts']);
1462
+ const dupLine = 'const result = processItem(item, config, options);';
1463
+ // 4 identical lines
1464
+ const content = Array.from({ length: 4 }, () => dupLine).join('\n');
1465
+ mockReadFile.mockResolvedValue(content);
1466
+ const result = await auditCode('src', '/project', ['dry']);
1467
+ const finding = findFinding(result.findings, 'duplicate-code');
1468
+ expect(finding).toBeDefined();
1469
+ expect(finding.severity).toBe('info');
1470
+ expect(finding.message).toContain('4 times');
1471
+ });
1472
+ it('does not flag lines duplicated 3 times (threshold is 4)', async () => {
1473
+ mockGlob.mockResolvedValue(['app.ts']);
1474
+ const dupLine = 'const result = processItem(item, config, options);';
1475
+ const content = Array.from({ length: 3 }, () => dupLine).join('\n');
1476
+ mockReadFile.mockResolvedValue(content);
1477
+ const result = await auditCode('src', '/project', ['dry']);
1478
+ expect(findFinding(result.findings, 'duplicate-code')).toBeUndefined();
1479
+ });
1480
+ it('skips short lines (under 10 chars)', async () => {
1481
+ mockGlob.mockResolvedValue(['app.ts']);
1482
+ const content = Array.from({ length: 10 }, () => 'x = 1;').join('\n');
1483
+ mockReadFile.mockResolvedValue(content);
1484
+ const result = await auditCode('src', '/project', ['dry']);
1485
+ expect(findFinding(result.findings, 'duplicate-code')).toBeUndefined();
1486
+ });
1487
+ it('skips comment lines starting with //', async () => {
1488
+ mockGlob.mockResolvedValue(['app.ts']);
1489
+ const dupLine = '// This is a long comment line that repeats';
1490
+ const content = Array.from({ length: 5 }, () => dupLine).join('\n');
1491
+ mockReadFile.mockResolvedValue(content);
1492
+ const result = await auditCode('src', '/project', ['dry']);
1493
+ expect(findFinding(result.findings, 'duplicate-code')).toBeUndefined();
1494
+ });
1495
+ it('skips comment lines starting with #', async () => {
1496
+ mockGlob.mockResolvedValue(['app.py']);
1497
+ const dupLine = '# This is a long comment line that repeats';
1498
+ const content = Array.from({ length: 5 }, () => dupLine).join('\n');
1499
+ mockReadFile.mockResolvedValue(content);
1500
+ const result = await auditCode('src', '/project', ['dry']);
1501
+ expect(findFinding(result.findings, 'duplicate-code')).toBeUndefined();
1502
+ });
1503
+ it('skips comment lines starting with *', async () => {
1504
+ mockGlob.mockResolvedValue(['app.ts']);
1505
+ const dupLine = '* @param something long description here';
1506
+ const content = Array.from({ length: 5 }, () => dupLine).join('\n');
1507
+ mockReadFile.mockResolvedValue(content);
1508
+ const result = await auditCode('src', '/project', ['dry']);
1509
+ expect(findFinding(result.findings, 'duplicate-code')).toBeUndefined();
1510
+ });
1511
+ it('skips common patterns like closing braces', async () => {
1512
+ mockGlob.mockResolvedValue(['app.ts']);
1513
+ // Single closing brace is < 10 chars, but closing patterns are also explicitly filtered
1514
+ // Let's use a pattern that would reach the filter: return statements
1515
+ const content = Array.from({ length: 5 }, () => 'return undefined;').join('\n');
1516
+ mockReadFile.mockResolvedValue(content);
1517
+ const result = await auditCode('src', '/project', ['dry']);
1518
+ expect(findFinding(result.findings, 'duplicate-code')).toBeUndefined();
1519
+ });
1520
+ it('skips break statements', async () => {
1521
+ mockGlob.mockResolvedValue(['app.ts']);
1522
+ const content = Array.from({ length: 5 }, () => ' break; ').join('\n');
1523
+ mockReadFile.mockResolvedValue(content);
1524
+ const result = await auditCode('src', '/project', ['dry']);
1525
+ expect(findFinding(result.findings, 'duplicate-code')).toBeUndefined();
1526
+ });
1527
+ it('reports only first duplicate per file (break)', async () => {
1528
+ mockGlob.mockResolvedValue(['app.ts']);
1529
+ const dup1 = 'const alpha = processAlpha(item, config, options);';
1530
+ const dup2 = 'const beta = processBeta(item, config, options);;';
1531
+ // Both appear 4+ times
1532
+ const content = [
1533
+ ...Array.from({ length: 4 }, () => dup1),
1534
+ ...Array.from({ length: 4 }, () => dup2),
1535
+ ].join('\n');
1536
+ mockReadFile.mockResolvedValue(content);
1537
+ const result = await auditCode('src', '/project', ['dry']);
1538
+ const dupFindings = findFindings(result.findings, 'duplicate-code');
1539
+ expect(dupFindings).toHaveLength(1);
1540
+ });
1541
+ it('truncates long duplicate lines in message to 60 chars with ellipsis', async () => {
1542
+ mockGlob.mockResolvedValue(['app.ts']);
1543
+ const longLine = 'const result = processItemWithVeryLongFunctionNameThatExceedsSixtyCharactersInLength(item, config, options);';
1544
+ const content = Array.from({ length: 4 }, () => longLine).join('\n');
1545
+ mockReadFile.mockResolvedValue(content);
1546
+ const result = await auditCode('src', '/project', ['dry']);
1547
+ const finding = findFinding(result.findings, 'duplicate-code');
1548
+ expect(finding).toBeDefined();
1549
+ expect(finding.message).toContain('...');
1550
+ });
1551
+ it('does not add ellipsis for lines under 60 chars', async () => {
1552
+ mockGlob.mockResolvedValue(['app.ts']);
1553
+ const shortLine = 'const result = processItem(item, config);';
1554
+ const content = Array.from({ length: 4 }, () => shortLine).join('\n');
1555
+ mockReadFile.mockResolvedValue(content);
1556
+ const result = await auditCode('src', '/project', ['dry']);
1557
+ const finding = findFinding(result.findings, 'duplicate-code');
1558
+ expect(finding).toBeDefined();
1559
+ expect(finding.message).not.toContain('...');
1560
+ });
1561
+ });
1562
+ // ════════════════════════════════════════════════════════════════════════════
1563
+ // buildSummary & calculateScore — scoring and summary logic
1564
+ // ════════════════════════════════════════════════════════════════════════════
1565
+ describe('buildSummary and calculateScore', () => {
1566
+ it('calculates score 100 when no findings', async () => {
1567
+ mockGlob.mockResolvedValue([]);
1568
+ const result = await auditCode('src', '/project');
1569
+ expect(result.score).toBe(100);
1570
+ expect(result.summary.score).toBe(100);
1571
+ });
1572
+ it('calculates score with weighted severity penalties', async () => {
1573
+ mockGlob.mockResolvedValue(['app.ts']);
1574
+ // Critical finding: penalty = 10
1575
+ const content = `const api_key = "realSecretKeyAbcde123";`;
1576
+ mockReadFile.mockResolvedValue(content);
1577
+ const result = await auditCode('src', '/project', ['security']);
1578
+ // score should be penalized
1579
+ expect(result.score).toBeLessThan(100);
1580
+ expect(result.score).toBeGreaterThanOrEqual(0);
1581
+ });
1582
+ it('normalizes score by file count (more files = more lenient)', async () => {
1583
+ // Single file with many issues
1584
+ mockGlob.mockResolvedValue(['app.ts']);
1585
+ const content = [
1586
+ `const api_key = "realSecretKeyAbcde123";`,
1587
+ `eval("bad");`,
1588
+ `element.innerHTML = data;`,
1589
+ ].join('\n');
1590
+ mockReadFile.mockResolvedValue(content);
1591
+ const result1 = await auditCode('src', '/project', ['security']);
1592
+ // Reset and test with more files
1593
+ vi.clearAllMocks();
1594
+ const files = Array.from({ length: 10 }, (_, i) => `app${i}.ts`);
1595
+ mockGlob.mockResolvedValue(files);
1596
+ mockReadFile
1597
+ .mockResolvedValueOnce(content) // First file has issues
1598
+ .mockResolvedValue('const x = 1;'); // Rest are clean
1599
+ const result2 = await auditCode('src', '/project', ['security']);
1600
+ // More files = higher score for same findings
1601
+ expect(result2.score).toBeGreaterThan(result1.score);
1602
+ });
1603
+ it('summary.byCategory includes all requested categories', async () => {
1604
+ mockGlob.mockResolvedValue(['app.ts']);
1605
+ mockReadFile.mockResolvedValue('const x = 1;');
1606
+ const categories = ['clean-code', 'security', 'solid'];
1607
+ const result = await auditCode('src', '/project', categories);
1608
+ for (const cat of categories) {
1609
+ expect(result.summary.byCategory[cat]).toBeDefined();
1610
+ expect(result.summary.byCategory[cat].count).toBeDefined();
1611
+ expect(result.summary.byCategory[cat].severity).toBeDefined();
1612
+ }
1613
+ });
1614
+ it('summary.byCategory has worst severity per category', async () => {
1615
+ mockGlob.mockResolvedValue(['app.ts']);
1616
+ const content = [
1617
+ `const api_key = "realSecretKeyAbcde123";`, // critical
1618
+ `element.innerHTML = data;`, // error
1619
+ ].join('\n');
1620
+ mockReadFile.mockResolvedValue(content);
1621
+ const result = await auditCode('src', '/project', ['security']);
1622
+ // Security should have "critical" as worst severity
1623
+ expect(result.summary.byCategory.security?.severity).toBe('critical');
1624
+ });
1625
+ it('summary includes strengths for categories with no findings', async () => {
1626
+ mockGlob.mockResolvedValue(['app.ts']);
1627
+ mockReadFile.mockResolvedValue('function add(a: number, b: number) { return a + b; }');
1628
+ const result = await auditCode('src', '/project', ['clean-code', 'security', 'solid']);
1629
+ // At least some categories should have no findings
1630
+ expect(result.summary.strengths.length).toBeGreaterThan(0);
1631
+ for (const s of result.summary.strengths) {
1632
+ expect(s).toContain('No issues found');
1633
+ }
1634
+ });
1635
+ it('handles unknown severity in calculateScore using default weight', async () => {
1636
+ // This tests the fallback `?? 1` in the weights lookup
1637
+ // We can't directly trigger unknown severity through normal flow,
1638
+ // but we can verify the score handles it through custom rules
1639
+ mockGlob.mockResolvedValue(['app.ts']);
1640
+ mockReadFile.mockResolvedValue('const x = 1;');
1641
+ const result = await auditCode('src', '/project', ['clean-code']);
1642
+ expect(typeof result.score).toBe('number');
1643
+ });
1644
+ });
1645
+ // ════════════════════════════════════════════════════════════════════════════
1646
+ // findFunctionBoundaries — function detection across languages
1647
+ // ════════════════════════════════════════════════════════════════════════════
1648
+ describe('findFunctionBoundaries', () => {
1649
+ it('detects standard JS/TS function declarations', async () => {
1650
+ const body = Array.from({ length: 55 }, (_, i) => ` const v${i} = ${i};`).join('\n');
1651
+ const content = `function myFunction() {\n${body}\n}`;
1652
+ mockReadFile.mockResolvedValue(content);
1653
+ const findings = await auditFile('/test/fn.ts', ['clean-code']);
1654
+ const finding = findFinding(findings, 'function-too-long');
1655
+ expect(finding).toBeDefined();
1656
+ expect(finding.message).toContain('myFunction');
1657
+ });
1658
+ it('detects const arrow functions', async () => {
1659
+ const body = Array.from({ length: 55 }, (_, i) => ` const v${i} = ${i};`).join('\n');
1660
+ const content = `const myArrow = (x: number) => {\n${body}\n}`;
1661
+ mockReadFile.mockResolvedValue(content);
1662
+ const findings = await auditFile('/test/arrow.ts', ['clean-code']);
1663
+ const finding = findFinding(findings, 'function-too-long');
1664
+ expect(finding).toBeDefined();
1665
+ expect(finding.message).toContain('myArrow');
1666
+ });
1667
+ it('detects let arrow functions', async () => {
1668
+ const body = Array.from({ length: 55 }, (_, i) => ` const v${i} = ${i};`).join('\n');
1669
+ const content = `let myLetFn = (x: number) => {\n${body}\n}`;
1670
+ mockReadFile.mockResolvedValue(content);
1671
+ const findings = await auditFile('/test/let-arrow.ts', ['clean-code']);
1672
+ const finding = findFinding(findings, 'function-too-long');
1673
+ expect(finding).toBeDefined();
1674
+ expect(finding.message).toContain('myLetFn');
1675
+ });
1676
+ it('detects Python def', async () => {
1677
+ // Python function detection is indent-based
1678
+ const body = Array.from({ length: 55 }, (_, i) => ` v${i} = ${i}`).join('\n');
1679
+ const content = `def my_python_fn():\n${body}\n`;
1680
+ mockReadFile.mockResolvedValue(content);
1681
+ const findings = await auditFile('/test/fn.py', ['clean-code']);
1682
+ const finding = findFinding(findings, 'function-too-long');
1683
+ expect(finding).toBeDefined();
1684
+ expect(finding.message).toContain('my_python_fn');
1685
+ });
1686
+ it('detects Python def and ends at de-indent', async () => {
1687
+ // Python function with next function at same indent level
1688
+ const body = Array.from({ length: 55 }, (_, i) => ` v${i} = ${i}`).join('\n');
1689
+ const content = [
1690
+ `def long_fn():`,
1691
+ body,
1692
+ `def next_fn():`,
1693
+ ` pass`,
1694
+ ].join('\n');
1695
+ mockReadFile.mockResolvedValue(content);
1696
+ const findings = await auditFile('/test/py-indent.py', ['clean-code']);
1697
+ const finding = findFinding(findings, 'function-too-long');
1698
+ expect(finding).toBeDefined();
1699
+ expect(finding.message).toContain('long_fn');
1700
+ });
1701
+ it('handles functions without braces (fallback to endLine = j)', async () => {
1702
+ // A function where braceCount never reaches 0 - single-line function
1703
+ const content = `function foo() { return 1; }`;
1704
+ mockReadFile.mockResolvedValue(content);
1705
+ const findings = await auditFile('/test/oneliner.ts', ['clean-code']);
1706
+ // Should not crash, function is short
1707
+ expect(findFinding(findings, 'function-too-long')).toBeUndefined();
1708
+ });
1709
+ it('assigns "anonymous" when no name group matches', async () => {
1710
+ // var arrow function
1711
+ const body = Array.from({ length: 55 }, (_, i) => ` const v${i} = ${i};`).join('\n');
1712
+ const content = `var myVarFn = (x: number) => {\n${body}\n}`;
1713
+ mockReadFile.mockResolvedValue(content);
1714
+ const findings = await auditFile('/test/var-arrow.ts', ['clean-code']);
1715
+ const finding = findFinding(findings, 'function-too-long');
1716
+ expect(finding).toBeDefined();
1717
+ expect(finding.message).toContain('myVarFn');
1718
+ });
1719
+ });
1720
+ // ════════════════════════════════════════════════════════════════════════════
1721
+ // Edge cases and integration scenarios
1722
+ // ════════════════════════════════════════════════════════════════════════════
1723
+ describe('edge cases', () => {
1724
+ it('handles empty file content gracefully', async () => {
1725
+ mockReadFile.mockResolvedValue('');
1726
+ const findings = await auditFile('/test/empty.ts', ['clean-code', 'security', 'error-handling']);
1727
+ // Should not crash, should have no findings
1728
+ expect(findings).toEqual([]);
1729
+ });
1730
+ it('handles file with only whitespace', async () => {
1731
+ mockReadFile.mockResolvedValue(' \n \n \n');
1732
+ const findings = await auditFile('/test/whitespace.ts', ['clean-code']);
1733
+ expect(findings).toEqual([]);
1734
+ });
1735
+ it('handles file with only comments', async () => {
1736
+ const content = [
1737
+ '// This is a comment',
1738
+ '// Another comment',
1739
+ '# Python comment',
1740
+ ].join('\n');
1741
+ mockReadFile.mockResolvedValue(content);
1742
+ const findings = await auditFile('/test/comments.ts', ['clean-code']);
1743
+ // Should not flag magic numbers in comments
1744
+ expect(findFinding(findings, 'magic-number')).toBeUndefined();
1745
+ });
1746
+ it('auditCode runs all 8 categories when specified', async () => {
1747
+ mockGlob.mockResolvedValue(['app.test.ts']);
1748
+ const content = [
1749
+ '// TODO: fix this',
1750
+ 'class A {}',
1751
+ 'class B {}',
1752
+ 'class C {}',
1753
+ `const secret = "realSecretKeyAbcde123";`,
1754
+ 'try { x(); } catch (e) {}',
1755
+ 'for (const i of arr) { await fetch(i); }',
1756
+ 'it.skip("broken", () => {});',
1757
+ 'const result = processItem(item, config, options);',
1758
+ 'const result = processItem(item, config, options);',
1759
+ 'const result = processItem(item, config, options);',
1760
+ 'const result = processItem(item, config, options);',
1761
+ ].join('\n');
1762
+ mockReadFile.mockResolvedValue(content);
1763
+ const allCategories = [
1764
+ 'solid',
1765
+ 'clean-code',
1766
+ 'architecture',
1767
+ 'security',
1768
+ 'error-handling',
1769
+ 'performance',
1770
+ 'testing',
1771
+ 'dry',
1772
+ ];
1773
+ const result = await auditCode('.', '/project', allCategories);
1774
+ // Should have findings from multiple categories
1775
+ const cats = new Set(result.findings.map((f) => f.category));
1776
+ expect(cats.size).toBeGreaterThanOrEqual(3);
1777
+ });
1778
+ it('handles files with all supported code extensions', async () => {
1779
+ const exts = [
1780
+ '.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs',
1781
+ '.py', '.go', '.rs', '.java', '.kt', '.kts',
1782
+ '.rb', '.php', '.cs', '.swift', '.dart',
1783
+ '.ex', '.exs', '.scala', '.clj',
1784
+ ];
1785
+ const files = exts.map((ext) => `app${ext}`);
1786
+ mockGlob.mockResolvedValue(files);
1787
+ mockReadFile.mockResolvedValue('const x = 1;');
1788
+ const result = await auditCode('src', '/project', ['clean-code']);
1789
+ expect(result.filesAnalyzed).toBe(exts.length);
1790
+ });
1791
+ it('limits glob results to 200 files', async () => {
1792
+ const files = Array.from({ length: 250 }, (_, i) => `file${i}.ts`);
1793
+ mockGlob.mockResolvedValue(files);
1794
+ mockReadFile.mockResolvedValue('const x = 1;');
1795
+ const result = await auditCode('src', '/project', ['clean-code']);
1796
+ expect(result.filesAnalyzed).toBe(200);
1797
+ });
1798
+ it('all findings have required fields: file, category, severity, rule, message, suggestion', async () => {
1799
+ mockGlob.mockResolvedValue(['app.ts']);
1800
+ const content = [
1801
+ `const api_key = "realSecretKeyAbcde123";`,
1802
+ `eval("bad");`,
1803
+ '// TODO: fix this',
1804
+ 'try { x(); } catch (e) {}',
1805
+ ].join('\n');
1806
+ mockReadFile.mockResolvedValue(content);
1807
+ const result = await auditCode('src', '/project', [
1808
+ 'clean-code',
1809
+ 'security',
1810
+ 'error-handling',
1811
+ ]);
1812
+ for (const finding of result.findings) {
1813
+ expect(finding.file).toBeDefined();
1814
+ expect(finding.category).toBeDefined();
1815
+ expect(finding.severity).toBeDefined();
1816
+ expect(finding.rule).toBeDefined();
1817
+ expect(finding.message).toBeTruthy();
1818
+ expect(finding.suggestion).toBeTruthy();
1819
+ expect(['info', 'warning', 'error', 'critical']).toContain(finding.severity);
1820
+ }
1821
+ });
1822
+ it('catch-only-logs handles body lines at end of file', async () => {
1823
+ // Catch block near end of file (Math.min boundary)
1824
+ const content = [
1825
+ 'try { x(); }',
1826
+ 'catch (e) {',
1827
+ ' console.log(e);',
1828
+ '}',
1829
+ ].join('\n');
1830
+ mockReadFile.mockResolvedValue(content);
1831
+ const findings = await auditFile('/test/eof-catch.ts', ['error-handling']);
1832
+ expect(findFinding(findings, 'catch-only-logs')).toBeDefined();
1833
+ });
1834
+ it('async function detection uses 500-char window', async () => {
1835
+ // Create a long async function body (>500 chars) with a try far away
1836
+ const longBody = Array.from({ length: 60 }, (_, i) => ` const longVarName${i} = ${i};`).join('\n');
1837
+ const content = [
1838
+ 'async function farTry() {',
1839
+ longBody,
1840
+ ' try {',
1841
+ ' return 1;',
1842
+ ' } catch (e) { throw e; }',
1843
+ '}',
1844
+ ].join('\n');
1845
+ mockReadFile.mockResolvedValue(content);
1846
+ const findings = await auditFile('/test/far-try.ts', ['error-handling']);
1847
+ // The try is beyond the 500-char window, so it might still detect unhandled-async
1848
+ findFinding(findings, 'unhandled-async');
1849
+ // Depending on whether "try" falls within the 500-char window
1850
+ // The heuristic only looks at 500 chars after the async keyword
1851
+ // This test just ensures it doesn't crash
1852
+ expect(Array.isArray(findings)).toBe(true);
1853
+ });
1854
+ it('multiple files produce aggregated findings and summary', async () => {
1855
+ mockGlob.mockResolvedValue(['a.ts', 'b.ts']);
1856
+ mockReadFile
1857
+ .mockResolvedValueOnce('// TODO: fix a')
1858
+ .mockResolvedValueOnce('// TODO: fix b');
1859
+ const result = await auditCode('src', '/project', ['clean-code']);
1860
+ expect(result.filesAnalyzed).toBe(2);
1861
+ const todoFindings = findFindings(result.findings, 'pending-marker');
1862
+ expect(todoFindings.length).toBe(2);
1863
+ });
1864
+ it('summary.byCategory.severity defaults to info when no findings', async () => {
1865
+ mockGlob.mockResolvedValue(['app.ts']);
1866
+ mockReadFile.mockResolvedValue('function add(a: number, b: number) { return a + b; }');
1867
+ const result = await auditCode('src', '/project', ['security']);
1868
+ expect(result.summary.byCategory.security?.severity).toBe('info');
1869
+ expect(result.summary.byCategory.security?.count).toBe(0);
1870
+ });
1871
+ });
1872
+ // ════════════════════════════════════════════════════════════════════════════
1873
+ // Sparse/undefined array element guards — defensive coverage
1874
+ // Lines 719, 781, 856, 883: continue when lines[i] is undefined.
1875
+ // These guards protect against sparse arrays. Since content.split('\n')
1876
+ // never produces holes, we exercise the surrounding code paths thoroughly.
1877
+ // ════════════════════════════════════════════════════════════════════════════
1878
+ describe('checkPerformance — spread-in-loop detection with edge-case line patterns', () => {
1879
+ it('detects spread in a for-loop at the boundary of the 10-line window', async () => {
1880
+ mockGlob.mockResolvedValue(['spread-boundary.ts']);
1881
+ // Spread appears at line i+9 (last line within the 10-line window)
1882
+ const lines = [
1883
+ 'for (let i = 0; i < items.length; i++) {',
1884
+ ' const a = 1;',
1885
+ ' const b = 2;',
1886
+ ' const c = 3;',
1887
+ ' const d = 4;',
1888
+ ' const e = 5;',
1889
+ ' const f = 6;',
1890
+ ' const g = 7;',
1891
+ ' const h = 8;',
1892
+ ' const merged = { ...items[i] };',
1893
+ '}',
1894
+ ];
1895
+ mockReadFile.mockResolvedValue(lines.join('\n'));
1896
+ const result = await auditCode('src', '/project', ['performance']);
1897
+ expect(findFinding(result.findings, 'spread-in-loop')).toBeDefined();
1898
+ });
1899
+ it('does not detect spread beyond the 10-line window', async () => {
1900
+ mockGlob.mockResolvedValue(['spread-far.ts']);
1901
+ const lines = [
1902
+ 'for (let i = 0; i < items.length; i++) {',
1903
+ ' const a = 1;',
1904
+ ' const b = 2;',
1905
+ ' const c = 3;',
1906
+ ' const d = 4;',
1907
+ ' const e = 5;',
1908
+ ' const f = 6;',
1909
+ ' const g = 7;',
1910
+ ' const h = 8;',
1911
+ ' const j = 9;',
1912
+ ' const k = 10;',
1913
+ ' const merged = { ...items[i] };', // line i+11, beyond window
1914
+ '}',
1915
+ ];
1916
+ mockReadFile.mockResolvedValue(lines.join('\n'));
1917
+ const result = await auditCode('src', '/project', ['performance']);
1918
+ expect(findFinding(result.findings, 'spread-in-loop')).toBeUndefined();
1919
+ });
1920
+ it('detects spread inside forEach callback', async () => {
1921
+ mockGlob.mockResolvedValue(['spread-foreach.ts']);
1922
+ const content = [
1923
+ 'items.forEach((item) => {',
1924
+ ' const result = { ...item, extra: true };',
1925
+ '});',
1926
+ ].join('\n');
1927
+ mockReadFile.mockResolvedValue(content);
1928
+ const result = await auditCode('src', '/project', ['performance']);
1929
+ expect(findFinding(result.findings, 'spread-in-loop')).toBeDefined();
1930
+ });
1931
+ it('handles for-loop at the very end of a file (window extends past EOF)', async () => {
1932
+ mockGlob.mockResolvedValue(['spread-eof.ts']);
1933
+ // Only 2 lines total; the 10-line window clips to lines.length
1934
+ const content = [
1935
+ 'for (let i = 0; i < arr.length; i++) {',
1936
+ ' const copy = { ...arr[i] };',
1937
+ ].join('\n');
1938
+ mockReadFile.mockResolvedValue(content);
1939
+ const result = await auditCode('src', '/project', ['performance']);
1940
+ expect(findFinding(result.findings, 'spread-in-loop')).toBeDefined();
1941
+ });
1942
+ it('handles empty lines within the for-loop 10-line window', async () => {
1943
+ mockGlob.mockResolvedValue(['spread-empty.ts']);
1944
+ const content = [
1945
+ 'for (let i = 0; i < items.length; i++) {',
1946
+ '',
1947
+ '',
1948
+ '',
1949
+ '',
1950
+ '',
1951
+ '',
1952
+ '',
1953
+ '',
1954
+ ' const merged = { ...items[i] };',
1955
+ '}',
1956
+ ].join('\n');
1957
+ mockReadFile.mockResolvedValue(content);
1958
+ const result = await auditCode('src', '/project', ['performance']);
1959
+ expect(findFinding(result.findings, 'spread-in-loop')).toBeDefined();
1960
+ });
1961
+ });
1962
+ describe('checkDry — duplicate code detection edge cases', () => {
1963
+ it('detects duplicates with many identical long lines', async () => {
1964
+ mockGlob.mockResolvedValue(['dup-lines.ts']);
1965
+ const duplicateLine = 'const result = processItem(item, config, options, extra);';
1966
+ const content = Array.from({ length: 5 }, () => duplicateLine).join('\n');
1967
+ mockReadFile.mockResolvedValue(content);
1968
+ const result = await auditCode('src', '/project', ['dry']);
1969
+ expect(findFinding(result.findings, 'duplicate-code')).toBeDefined();
1970
+ });
1971
+ it('does not flag short lines (under 10 chars) as duplicates', async () => {
1972
+ mockGlob.mockResolvedValue(['short-dup.ts']);
1973
+ const content = Array.from({ length: 10 }, () => 'x = 1;').join('\n');
1974
+ mockReadFile.mockResolvedValue(content);
1975
+ const result = await auditCode('src', '/project', ['dry']);
1976
+ expect(findFinding(result.findings, 'duplicate-code')).toBeUndefined();
1977
+ });
1978
+ it('skips comment lines starting with // in duplicate detection', async () => {
1979
+ mockGlob.mockResolvedValue(['comment-dup.ts']);
1980
+ const comment = '// This is a long comment line that repeats many times in the code';
1981
+ const content = Array.from({ length: 10 }, () => comment).join('\n');
1982
+ mockReadFile.mockResolvedValue(content);
1983
+ const result = await auditCode('src', '/project', ['dry']);
1984
+ expect(findFinding(result.findings, 'duplicate-code')).toBeUndefined();
1985
+ });
1986
+ it('skips comment lines starting with # in duplicate detection', async () => {
1987
+ mockGlob.mockResolvedValue(['hash-comment-dup.py']);
1988
+ const comment = '# This is a long Python comment line that repeats many times';
1989
+ const content = Array.from({ length: 10 }, () => comment).join('\n');
1990
+ mockReadFile.mockResolvedValue(content);
1991
+ const result = await auditCode('src', '/project', ['dry']);
1992
+ expect(findFinding(result.findings, 'duplicate-code')).toBeUndefined();
1993
+ });
1994
+ it('skips comment lines starting with * in duplicate detection', async () => {
1995
+ mockGlob.mockResolvedValue(['jsdoc-dup.ts']);
1996
+ const comment = ' * This is a long JSDoc comment line that appears many times';
1997
+ const content = Array.from({ length: 10 }, () => comment).join('\n');
1998
+ mockReadFile.mockResolvedValue(content);
1999
+ const result = await auditCode('src', '/project', ['dry']);
2000
+ expect(findFinding(result.findings, 'duplicate-code')).toBeUndefined();
2001
+ });
2002
+ it('handles content with only empty lines', async () => {
2003
+ mockGlob.mockResolvedValue(['empty-lines.ts']);
2004
+ const content = '\n\n\n\n\n\n\n\n\n\n';
2005
+ mockReadFile.mockResolvedValue(content);
2006
+ const result = await auditCode('src', '/project', ['dry']);
2007
+ expect(findFinding(result.findings, 'duplicate-code')).toBeUndefined();
2008
+ });
2009
+ });
2010
+ describe('findFunctionBoundaries — edge cases for function detection', () => {
2011
+ it('handles content with no functions at all', async () => {
2012
+ const content = 'const x = 1;\nconst y = 2;\nconst z = 3;';
2013
+ mockReadFile.mockResolvedValue(content);
2014
+ const findings = await auditFile('/test/no-fn.ts', ['clean-code']);
2015
+ expect(findFinding(findings, 'function-too-long')).toBeUndefined();
2016
+ });
2017
+ it('handles function with empty body (no brace counting needed)', async () => {
2018
+ const content = 'function empty() {}';
2019
+ mockReadFile.mockResolvedValue(content);
2020
+ const findings = await auditFile('/test/empty-fn.ts', ['clean-code']);
2021
+ expect(findFinding(findings, 'function-too-long')).toBeUndefined();
2022
+ });
2023
+ it('handles multiple functions where only one exceeds the line limit', async () => {
2024
+ const shortBody = Array.from({ length: 5 }, (_, i) => ` const v${i} = ${i};`).join('\n');
2025
+ const longBody = Array.from({ length: 55 }, (_, i) => ` const v${i} = ${i};`).join('\n');
2026
+ const content = [
2027
+ `function shortOne() {`,
2028
+ shortBody,
2029
+ `}`,
2030
+ `function longOne() {`,
2031
+ longBody,
2032
+ `}`,
2033
+ ].join('\n');
2034
+ mockReadFile.mockResolvedValue(content);
2035
+ const findings = await auditFile('/test/mixed-fn.ts', ['clean-code']);
2036
+ const longFindings = findFindings(findings, 'function-too-long');
2037
+ expect(longFindings).toHaveLength(1);
2038
+ expect(longFindings[0]?.message).toContain('longOne');
2039
+ });
2040
+ it('handles deeply nested braces within a function', async () => {
2041
+ const body = [
2042
+ ' if (true) {',
2043
+ ' if (true) {',
2044
+ ' if (true) {',
2045
+ ...Array.from({ length: 50 }, (_, i) => ` const v${i} = ${i};`),
2046
+ ' }',
2047
+ ' }',
2048
+ ' }',
2049
+ ].join('\n');
2050
+ const content = `function deepBraces() {\n${body}\n}`;
2051
+ mockReadFile.mockResolvedValue(content);
2052
+ const findings = await auditFile('/test/deep-braces.ts', ['clean-code']);
2053
+ expect(findFinding(findings, 'function-too-long')).toBeDefined();
2054
+ });
2055
+ it('handles function followed immediately by another function', async () => {
2056
+ const body = Array.from({ length: 55 }, (_, i) => ` const v${i} = ${i};`).join('\n');
2057
+ const content = [
2058
+ `function first() {\n${body}\n}`,
2059
+ `function second() {\n${body}\n}`,
2060
+ ].join('\n');
2061
+ mockReadFile.mockResolvedValue(content);
2062
+ const findings = await auditFile('/test/back-to-back.ts', ['clean-code']);
2063
+ const longFindings = findFindings(findings, 'function-too-long');
2064
+ expect(longFindings.length).toBeGreaterThanOrEqual(2);
2065
+ });
2066
+ it('handles content with many empty lines between code lines', async () => {
2067
+ const body = Array.from({ length: 55 }, (_, i) => ` const v${i} = ${i};\n`).join('\n');
2068
+ const content = `function spacey() {\n${body}\n}`;
2069
+ mockReadFile.mockResolvedValue(content);
2070
+ const findings = await auditFile('/test/spacey-fn.ts', ['clean-code']);
2071
+ // Function is long due to empty lines counted
2072
+ expect(findFinding(findings, 'function-too-long')).toBeDefined();
2073
+ });
2074
+ });
2075
+ //# sourceMappingURL=auditor.test.js.map