specforge-mcp 0.11.0 → 0.12.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 (431) hide show
  1. package/dist/engine/agent-generator.test.d.ts +2 -0
  2. package/dist/engine/agent-generator.test.d.ts.map +1 -0
  3. package/dist/engine/agent-generator.test.js +556 -0
  4. package/dist/engine/agent-generator.test.js.map +1 -0
  5. package/dist/engine/analyzer.test.d.ts +2 -0
  6. package/dist/engine/analyzer.test.d.ts.map +1 -0
  7. package/dist/engine/analyzer.test.js +1461 -0
  8. package/dist/engine/analyzer.test.js.map +1 -0
  9. package/dist/engine/auditor.test.d.ts +2 -0
  10. package/dist/engine/auditor.test.d.ts.map +1 -0
  11. package/dist/engine/auditor.test.js +2075 -0
  12. package/dist/engine/auditor.test.js.map +1 -0
  13. package/dist/engine/context-budget/checkpoint.d.ts +8 -0
  14. package/dist/engine/context-budget/checkpoint.d.ts.map +1 -0
  15. package/dist/engine/context-budget/checkpoint.js +79 -0
  16. package/dist/engine/context-budget/checkpoint.js.map +1 -0
  17. package/dist/engine/context-budget/compressor.d.ts +20 -0
  18. package/dist/engine/context-budget/compressor.d.ts.map +1 -0
  19. package/dist/engine/context-budget/compressor.js +122 -0
  20. package/dist/engine/context-budget/compressor.js.map +1 -0
  21. package/dist/engine/context-budget/index.d.ts +5 -0
  22. package/dist/engine/context-budget/index.d.ts.map +1 -0
  23. package/dist/engine/context-budget/index.js +6 -0
  24. package/dist/engine/context-budget/index.js.map +1 -0
  25. package/dist/engine/context-budget/optimizer.d.ts +8 -0
  26. package/dist/engine/context-budget/optimizer.d.ts.map +1 -0
  27. package/dist/engine/context-budget/optimizer.js +87 -0
  28. package/dist/engine/context-budget/optimizer.js.map +1 -0
  29. package/dist/engine/context-budget/tracker.d.ts +19 -0
  30. package/dist/engine/context-budget/tracker.d.ts.map +1 -0
  31. package/dist/engine/context-budget/tracker.js +113 -0
  32. package/dist/engine/context-budget/tracker.js.map +1 -0
  33. package/dist/engine/doc-generator.test.d.ts +2 -0
  34. package/dist/engine/doc-generator.test.d.ts.map +1 -0
  35. package/dist/engine/doc-generator.test.js +961 -0
  36. package/dist/engine/doc-generator.test.js.map +1 -0
  37. package/dist/engine/estimator.test.d.ts +2 -0
  38. package/dist/engine/estimator.test.d.ts.map +1 -0
  39. package/dist/engine/estimator.test.js +334 -0
  40. package/dist/engine/estimator.test.js.map +1 -0
  41. package/dist/engine/skill-generator.test.d.ts +2 -0
  42. package/dist/engine/skill-generator.test.d.ts.map +1 -0
  43. package/dist/engine/skill-generator.test.js +742 -0
  44. package/dist/engine/skill-generator.test.js.map +1 -0
  45. package/dist/engine/test-spec-generator/criterion-parser.d.ts +6 -0
  46. package/dist/engine/test-spec-generator/criterion-parser.d.ts.map +1 -0
  47. package/dist/engine/test-spec-generator/criterion-parser.js +96 -0
  48. package/dist/engine/test-spec-generator/criterion-parser.js.map +1 -0
  49. package/dist/engine/{test-spec-generator.d.ts → test-spec-generator/index.d.ts} +5 -2
  50. package/dist/engine/test-spec-generator/index.d.ts.map +1 -0
  51. package/dist/engine/test-spec-generator/index.js +29 -0
  52. package/dist/engine/test-spec-generator/index.js.map +1 -0
  53. package/dist/engine/test-spec-generator/labels.d.ts +5 -0
  54. package/dist/engine/test-spec-generator/labels.d.ts.map +1 -0
  55. package/dist/engine/test-spec-generator/labels.js +62 -0
  56. package/dist/engine/test-spec-generator/labels.js.map +1 -0
  57. package/dist/engine/test-spec-generator/scenario-builders.d.ts +3 -0
  58. package/dist/engine/test-spec-generator/scenario-builders.d.ts.map +1 -0
  59. package/dist/engine/test-spec-generator/scenario-builders.js +184 -0
  60. package/dist/engine/test-spec-generator/scenario-builders.js.map +1 -0
  61. package/dist/engine/validator.test.d.ts +2 -0
  62. package/dist/engine/validator.test.d.ts.map +1 -0
  63. package/dist/engine/validator.test.js +2371 -0
  64. package/dist/engine/validator.test.js.map +1 -0
  65. package/dist/engine/web-fetcher.test.d.ts +2 -0
  66. package/dist/engine/web-fetcher.test.d.ts.map +1 -0
  67. package/dist/engine/web-fetcher.test.js +360 -0
  68. package/dist/engine/web-fetcher.test.js.map +1 -0
  69. package/dist/i18n/index.test.d.ts +2 -0
  70. package/dist/i18n/index.test.d.ts.map +1 -0
  71. package/dist/i18n/index.test.js +375 -0
  72. package/dist/i18n/index.test.js.map +1 -0
  73. package/dist/index.js +0 -0
  74. package/dist/index.test.d.ts +2 -0
  75. package/dist/index.test.d.ts.map +1 -0
  76. package/dist/index.test.js +124 -0
  77. package/dist/index.test.js.map +1 -0
  78. package/dist/resources/patterns.test.d.ts +2 -0
  79. package/dist/resources/patterns.test.d.ts.map +1 -0
  80. package/dist/resources/patterns.test.js +142 -0
  81. package/dist/resources/patterns.test.js.map +1 -0
  82. package/dist/resources/process.test.d.ts +2 -0
  83. package/dist/resources/process.test.d.ts.map +1 -0
  84. package/dist/resources/process.test.js +48 -0
  85. package/dist/resources/process.test.js.map +1 -0
  86. package/dist/resources/registry.test.d.ts +2 -0
  87. package/dist/resources/registry.test.d.ts.map +1 -0
  88. package/dist/resources/registry.test.js +138 -0
  89. package/dist/resources/registry.test.js.map +1 -0
  90. package/dist/resources/specs.test.d.ts +2 -0
  91. package/dist/resources/specs.test.d.ts.map +1 -0
  92. package/dist/resources/specs.test.js +130 -0
  93. package/dist/resources/specs.test.js.map +1 -0
  94. package/dist/resources/templates.test.d.ts +2 -0
  95. package/dist/resources/templates.test.d.ts.map +1 -0
  96. package/dist/resources/templates.test.js +119 -0
  97. package/dist/resources/templates.test.js.map +1 -0
  98. package/dist/smoke.test.d.ts +2 -0
  99. package/dist/smoke.test.d.ts.map +1 -0
  100. package/dist/smoke.test.js +229 -0
  101. package/dist/smoke.test.js.map +1 -0
  102. package/dist/storage/base-store.test.d.ts +2 -0
  103. package/dist/storage/base-store.test.d.ts.map +1 -0
  104. package/dist/storage/base-store.test.js +180 -0
  105. package/dist/storage/base-store.test.js.map +1 -0
  106. package/dist/storage/checkpoint-store.d.ts +12 -0
  107. package/dist/storage/checkpoint-store.d.ts.map +1 -0
  108. package/dist/storage/checkpoint-store.js +85 -0
  109. package/dist/storage/checkpoint-store.js.map +1 -0
  110. package/dist/storage/global-store.test.d.ts +2 -0
  111. package/dist/storage/global-store.test.d.ts.map +1 -0
  112. package/dist/storage/global-store.test.js +327 -0
  113. package/dist/storage/global-store.test.js.map +1 -0
  114. package/dist/storage/index.test.d.ts +2 -0
  115. package/dist/storage/index.test.d.ts.map +1 -0
  116. package/dist/storage/index.test.js +56 -0
  117. package/dist/storage/index.test.js.map +1 -0
  118. package/dist/storage/knowledge-store.test.d.ts +2 -0
  119. package/dist/storage/knowledge-store.test.d.ts.map +1 -0
  120. package/dist/storage/knowledge-store.test.js +368 -0
  121. package/dist/storage/knowledge-store.test.js.map +1 -0
  122. package/dist/storage/metrics-store.test.d.ts +2 -0
  123. package/dist/storage/metrics-store.test.d.ts.map +1 -0
  124. package/dist/storage/metrics-store.test.js +212 -0
  125. package/dist/storage/metrics-store.test.js.map +1 -0
  126. package/dist/storage/pattern-store.test.d.ts +2 -0
  127. package/dist/storage/pattern-store.test.d.ts.map +1 -0
  128. package/dist/storage/pattern-store.test.js +224 -0
  129. package/dist/storage/pattern-store.test.js.map +1 -0
  130. package/dist/storage/spec-store.test.d.ts +2 -0
  131. package/dist/storage/spec-store.test.d.ts.map +1 -0
  132. package/dist/storage/spec-store.test.js +227 -0
  133. package/dist/storage/spec-store.test.js.map +1 -0
  134. package/dist/tools/audit.test.d.ts +2 -0
  135. package/dist/tools/audit.test.d.ts.map +1 -0
  136. package/dist/tools/audit.test.js +169 -0
  137. package/dist/tools/audit.test.js.map +1 -0
  138. package/dist/tools/challenge-spec.test.d.ts +2 -0
  139. package/dist/tools/challenge-spec.test.d.ts.map +1 -0
  140. package/dist/tools/challenge-spec.test.js +782 -0
  141. package/dist/tools/challenge-spec.test.js.map +1 -0
  142. package/dist/tools/check-versions.test.d.ts +2 -0
  143. package/dist/tools/check-versions.test.d.ts.map +1 -0
  144. package/dist/tools/check-versions.test.js +214 -0
  145. package/dist/tools/check-versions.test.js.map +1 -0
  146. package/dist/tools/clarify-requirements.test.d.ts +2 -0
  147. package/dist/tools/clarify-requirements.test.d.ts.map +1 -0
  148. package/dist/tools/clarify-requirements.test.js +161 -0
  149. package/dist/tools/clarify-requirements.test.js.map +1 -0
  150. package/dist/tools/consult-docs.test.d.ts +2 -0
  151. package/dist/tools/consult-docs.test.d.ts.map +1 -0
  152. package/dist/tools/consult-docs.test.js +140 -0
  153. package/dist/tools/consult-docs.test.js.map +1 -0
  154. package/dist/tools/context-budget.d.ts +3 -0
  155. package/dist/tools/context-budget.d.ts.map +1 -0
  156. package/dist/tools/context-budget.js +131 -0
  157. package/dist/tools/context-budget.js.map +1 -0
  158. package/dist/tools/create-spec.test.d.ts +2 -0
  159. package/dist/tools/create-spec.test.d.ts.map +1 -0
  160. package/dist/tools/create-spec.test.js +233 -0
  161. package/dist/tools/create-spec.test.js.map +1 -0
  162. package/dist/tools/define-ui-contract.test.d.ts +2 -0
  163. package/dist/tools/define-ui-contract.test.d.ts.map +1 -0
  164. package/dist/tools/define-ui-contract.test.js +479 -0
  165. package/dist/tools/define-ui-contract.test.js.map +1 -0
  166. package/dist/tools/design-schema.test.d.ts +2 -0
  167. package/dist/tools/design-schema.test.d.ts.map +1 -0
  168. package/dist/tools/design-schema.test.js +301 -0
  169. package/dist/tools/design-schema.test.js.map +1 -0
  170. package/dist/tools/detect-agent.test.d.ts +2 -0
  171. package/dist/tools/detect-agent.test.d.ts.map +1 -0
  172. package/dist/tools/detect-agent.test.js +133 -0
  173. package/dist/tools/detect-agent.test.js.map +1 -0
  174. package/dist/tools/detect-drift.test.d.ts +2 -0
  175. package/dist/tools/detect-drift.test.d.ts.map +1 -0
  176. package/dist/tools/detect-drift.test.js +312 -0
  177. package/dist/tools/detect-drift.test.js.map +1 -0
  178. package/dist/tools/discover-mcps.test.d.ts +2 -0
  179. package/dist/tools/discover-mcps.test.d.ts.map +1 -0
  180. package/dist/tools/discover-mcps.test.js +345 -0
  181. package/dist/tools/discover-mcps.test.js.map +1 -0
  182. package/dist/tools/estimate.test.d.ts +2 -0
  183. package/dist/tools/estimate.test.d.ts.map +1 -0
  184. package/dist/tools/estimate.test.js +137 -0
  185. package/dist/tools/estimate.test.js.map +1 -0
  186. package/dist/tools/generate-adr.test.d.ts +2 -0
  187. package/dist/tools/generate-adr.test.d.ts.map +1 -0
  188. package/dist/tools/generate-adr.test.js +206 -0
  189. package/dist/tools/generate-adr.test.js.map +1 -0
  190. package/dist/tools/generate-checklist.test.d.ts +2 -0
  191. package/dist/tools/generate-checklist.test.d.ts.map +1 -0
  192. package/dist/tools/generate-checklist.test.js +201 -0
  193. package/dist/tools/generate-checklist.test.js.map +1 -0
  194. package/dist/tools/generate-docs.test.d.ts +2 -0
  195. package/dist/tools/generate-docs.test.d.ts.map +1 -0
  196. package/dist/tools/generate-docs.test.js +183 -0
  197. package/dist/tools/generate-docs.test.js.map +1 -0
  198. package/dist/tools/generate-execution-plan.test.d.ts +2 -0
  199. package/dist/tools/generate-execution-plan.test.d.ts.map +1 -0
  200. package/dist/tools/generate-execution-plan.test.js +643 -0
  201. package/dist/tools/generate-execution-plan.test.js.map +1 -0
  202. package/dist/tools/generate-rules.test.d.ts +2 -0
  203. package/dist/tools/generate-rules.test.d.ts.map +1 -0
  204. package/dist/tools/generate-rules.test.js +148 -0
  205. package/dist/tools/generate-rules.test.js.map +1 -0
  206. package/dist/tools/generate-skill.test.d.ts +2 -0
  207. package/dist/tools/generate-skill.test.d.ts.map +1 -0
  208. package/dist/tools/generate-skill.test.js +138 -0
  209. package/dist/tools/generate-skill.test.js.map +1 -0
  210. package/dist/tools/generate-sub-agent.test.d.ts +2 -0
  211. package/dist/tools/generate-sub-agent.test.d.ts.map +1 -0
  212. package/dist/tools/generate-sub-agent.test.js +162 -0
  213. package/dist/tools/generate-sub-agent.test.js.map +1 -0
  214. package/dist/tools/generate-tests/dispatchers/ai-ml-dispatcher.d.ts +3 -0
  215. package/dist/tools/generate-tests/dispatchers/ai-ml-dispatcher.d.ts.map +1 -0
  216. package/dist/tools/generate-tests/dispatchers/ai-ml-dispatcher.js +33 -0
  217. package/dist/tools/generate-tests/dispatchers/ai-ml-dispatcher.js.map +1 -0
  218. package/dist/tools/generate-tests/dispatchers/database-security-dispatcher.d.ts +5 -0
  219. package/dist/tools/generate-tests/dispatchers/database-security-dispatcher.d.ts.map +1 -0
  220. package/dist/tools/generate-tests/dispatchers/database-security-dispatcher.js +25 -0
  221. package/dist/tools/generate-tests/dispatchers/database-security-dispatcher.js.map +1 -0
  222. package/dist/tools/generate-tests/dispatchers/distributed-dispatcher.d.ts +3 -0
  223. package/dist/tools/generate-tests/dispatchers/distributed-dispatcher.d.ts.map +1 -0
  224. package/dist/tools/generate-tests/dispatchers/distributed-dispatcher.js +29 -0
  225. package/dist/tools/generate-tests/dispatchers/distributed-dispatcher.js.map +1 -0
  226. package/dist/tools/generate-tests/dispatchers/frontend-dispatcher.d.ts +3 -0
  227. package/dist/tools/generate-tests/dispatchers/frontend-dispatcher.d.ts.map +1 -0
  228. package/dist/tools/generate-tests/dispatchers/frontend-dispatcher.js +34 -0
  229. package/dist/tools/generate-tests/dispatchers/frontend-dispatcher.js.map +1 -0
  230. package/dist/tools/generate-tests/dispatchers/infra-dispatcher.d.ts +3 -0
  231. package/dist/tools/generate-tests/dispatchers/infra-dispatcher.d.ts.map +1 -0
  232. package/dist/tools/generate-tests/dispatchers/infra-dispatcher.js +37 -0
  233. package/dist/tools/generate-tests/dispatchers/infra-dispatcher.js.map +1 -0
  234. package/dist/tools/generate-tests/dispatchers/protocols-dispatcher.d.ts +3 -0
  235. package/dist/tools/generate-tests/dispatchers/protocols-dispatcher.d.ts.map +1 -0
  236. package/dist/tools/generate-tests/dispatchers/protocols-dispatcher.js +27 -0
  237. package/dist/tools/generate-tests/dispatchers/protocols-dispatcher.js.map +1 -0
  238. package/dist/tools/generate-tests/generators/database/detectors.d.ts +6 -0
  239. package/dist/tools/generate-tests/generators/database/detectors.d.ts.map +1 -0
  240. package/dist/tools/generate-tests/generators/database/detectors.js +36 -0
  241. package/dist/tools/generate-tests/generators/database/detectors.js.map +1 -0
  242. package/dist/tools/generate-tests/generators/database/index.d.ts +8 -0
  243. package/dist/tools/generate-tests/generators/database/index.d.ts.map +1 -0
  244. package/dist/tools/generate-tests/generators/database/index.js +29 -0
  245. package/dist/tools/generate-tests/generators/database/index.js.map +1 -0
  246. package/dist/tools/generate-tests/generators/database/python-scaffold.d.ts +2 -0
  247. package/dist/tools/generate-tests/generators/database/python-scaffold.d.ts.map +1 -0
  248. package/dist/tools/generate-tests/generators/database/python-scaffold.js +104 -0
  249. package/dist/tools/generate-tests/generators/database/python-scaffold.js.map +1 -0
  250. package/dist/tools/generate-tests/generators/database/test-defs.d.ts +3 -0
  251. package/dist/tools/generate-tests/generators/database/test-defs.d.ts.map +1 -0
  252. package/dist/tools/generate-tests/generators/database/test-defs.js +57 -0
  253. package/dist/tools/generate-tests/generators/database/test-defs.js.map +1 -0
  254. package/dist/tools/generate-tests/generators/database/ts-scaffold.d.ts +2 -0
  255. package/dist/tools/generate-tests/generators/database/ts-scaffold.d.ts.map +1 -0
  256. package/dist/tools/generate-tests/generators/database/ts-scaffold.js +118 -0
  257. package/dist/tools/generate-tests/generators/database/ts-scaffold.js.map +1 -0
  258. package/dist/tools/generate-tests/generators/microservices/detectors.d.ts +5 -0
  259. package/dist/tools/generate-tests/generators/microservices/detectors.d.ts.map +1 -0
  260. package/dist/tools/generate-tests/generators/microservices/detectors.js +47 -0
  261. package/dist/tools/generate-tests/generators/microservices/detectors.js.map +1 -0
  262. package/dist/tools/generate-tests/generators/microservices/index.d.ts +8 -0
  263. package/dist/tools/generate-tests/generators/microservices/index.d.ts.map +1 -0
  264. package/dist/tools/generate-tests/generators/microservices/index.js +26 -0
  265. package/dist/tools/generate-tests/generators/microservices/index.js.map +1 -0
  266. package/dist/tools/generate-tests/generators/microservices/python-scaffold.d.ts +2 -0
  267. package/dist/tools/generate-tests/generators/microservices/python-scaffold.d.ts.map +1 -0
  268. package/dist/tools/generate-tests/generators/microservices/python-scaffold.js +98 -0
  269. package/dist/tools/generate-tests/generators/microservices/python-scaffold.js.map +1 -0
  270. package/dist/tools/generate-tests/generators/microservices/test-defs.d.ts +3 -0
  271. package/dist/tools/generate-tests/generators/microservices/test-defs.d.ts.map +1 -0
  272. package/dist/tools/generate-tests/generators/microservices/test-defs.js +61 -0
  273. package/dist/tools/generate-tests/generators/microservices/test-defs.js.map +1 -0
  274. package/dist/tools/generate-tests/generators/microservices/ts-scaffold.d.ts +2 -0
  275. package/dist/tools/generate-tests/generators/microservices/ts-scaffold.d.ts.map +1 -0
  276. package/dist/tools/generate-tests/generators/microservices/ts-scaffold.js +123 -0
  277. package/dist/tools/generate-tests/generators/microservices/ts-scaffold.js.map +1 -0
  278. package/dist/tools/generate-tests/generators/security/detectors.d.ts +8 -0
  279. package/dist/tools/generate-tests/generators/security/detectors.d.ts.map +1 -0
  280. package/dist/tools/generate-tests/generators/security/detectors.js +61 -0
  281. package/dist/tools/generate-tests/generators/security/detectors.js.map +1 -0
  282. package/dist/tools/generate-tests/generators/security/index.d.ts +8 -0
  283. package/dist/tools/generate-tests/generators/security/index.d.ts.map +1 -0
  284. package/dist/tools/generate-tests/generators/security/index.js +28 -0
  285. package/dist/tools/generate-tests/generators/security/index.js.map +1 -0
  286. package/dist/tools/generate-tests/generators/security/python-scaffold.d.ts +2 -0
  287. package/dist/tools/generate-tests/generators/security/python-scaffold.d.ts.map +1 -0
  288. package/dist/tools/generate-tests/generators/security/python-scaffold.js +89 -0
  289. package/dist/tools/generate-tests/generators/security/python-scaffold.js.map +1 -0
  290. package/dist/tools/generate-tests/generators/security/test-defs.d.ts +3 -0
  291. package/dist/tools/generate-tests/generators/security/test-defs.d.ts.map +1 -0
  292. package/dist/tools/generate-tests/generators/security/test-defs.js +48 -0
  293. package/dist/tools/generate-tests/generators/security/test-defs.js.map +1 -0
  294. package/dist/tools/generate-tests/generators/security/ts-scaffold.d.ts +2 -0
  295. package/dist/tools/generate-tests/generators/security/ts-scaffold.d.ts.map +1 -0
  296. package/dist/tools/generate-tests/generators/security/ts-scaffold.js +107 -0
  297. package/dist/tools/generate-tests/generators/security/ts-scaffold.js.map +1 -0
  298. package/dist/tools/generate-tests/spec-dispatcher.d.ts.map +1 -1
  299. package/dist/tools/generate-tests/spec-dispatcher.js +14 -166
  300. package/dist/tools/generate-tests/spec-dispatcher.js.map +1 -1
  301. package/dist/tools/generate-tests.test.d.ts +2 -0
  302. package/dist/tools/generate-tests.test.d.ts.map +1 -0
  303. package/dist/tools/generate-tests.test.js +222 -0
  304. package/dist/tools/generate-tests.test.js.map +1 -0
  305. package/dist/tools/init-constitution.test.d.ts +2 -0
  306. package/dist/tools/init-constitution.test.d.ts.map +1 -0
  307. package/dist/tools/init-constitution.test.js +398 -0
  308. package/dist/tools/init-constitution.test.js.map +1 -0
  309. package/dist/tools/init-project.test.d.ts +2 -0
  310. package/dist/tools/init-project.test.d.ts.map +1 -0
  311. package/dist/tools/init-project.test.js +158 -0
  312. package/dist/tools/init-project.test.js.map +1 -0
  313. package/dist/tools/integrate-pm.test.d.ts +2 -0
  314. package/dist/tools/integrate-pm.test.d.ts.map +1 -0
  315. package/dist/tools/integrate-pm.test.js +558 -0
  316. package/dist/tools/integrate-pm.test.js.map +1 -0
  317. package/dist/tools/learn.test.d.ts +2 -0
  318. package/dist/tools/learn.test.d.ts.map +1 -0
  319. package/dist/tools/learn.test.js +123 -0
  320. package/dist/tools/learn.test.js.map +1 -0
  321. package/dist/tools/list-specs.test.d.ts +2 -0
  322. package/dist/tools/list-specs.test.d.ts.map +1 -0
  323. package/dist/tools/list-specs.test.js +110 -0
  324. package/dist/tools/list-specs.test.js.map +1 -0
  325. package/dist/tools/manage-context.test.d.ts +2 -0
  326. package/dist/tools/manage-context.test.d.ts.map +1 -0
  327. package/dist/tools/manage-context.test.js +359 -0
  328. package/dist/tools/manage-context.test.js.map +1 -0
  329. package/dist/tools/manage-git.test.d.ts +2 -0
  330. package/dist/tools/manage-git.test.d.ts.map +1 -0
  331. package/dist/tools/manage-git.test.js +882 -0
  332. package/dist/tools/manage-git.test.js.map +1 -0
  333. package/dist/tools/orchestrate.test.d.ts +2 -0
  334. package/dist/tools/orchestrate.test.d.ts.map +1 -0
  335. package/dist/tools/orchestrate.test.js +1117 -0
  336. package/dist/tools/orchestrate.test.js.map +1 -0
  337. package/dist/tools/reconcile-spec.test.d.ts +2 -0
  338. package/dist/tools/reconcile-spec.test.d.ts.map +1 -0
  339. package/dist/tools/reconcile-spec.test.js +259 -0
  340. package/dist/tools/reconcile-spec.test.js.map +1 -0
  341. package/dist/tools/register-platform-tools/lifecycle-infra-tools.d.ts.map +1 -1
  342. package/dist/tools/register-platform-tools/lifecycle-infra-tools.js +37 -1
  343. package/dist/tools/register-platform-tools/lifecycle-infra-tools.js.map +1 -1
  344. package/dist/tools/register-platform-tools.test.d.ts +2 -0
  345. package/dist/tools/register-platform-tools.test.d.ts.map +1 -0
  346. package/dist/tools/register-platform-tools.test.js +404 -0
  347. package/dist/tools/register-platform-tools.test.js.map +1 -0
  348. package/dist/tools/register-spec-tools/analysis-tools.d.ts.map +1 -1
  349. package/dist/tools/register-spec-tools/analysis-tools.js +1 -0
  350. package/dist/tools/register-spec-tools/analysis-tools.js.map +1 -1
  351. package/dist/tools/register-spec-tools.test.d.ts +2 -0
  352. package/dist/tools/register-spec-tools.test.d.ts.map +1 -0
  353. package/dist/tools/register-spec-tools.test.js +407 -0
  354. package/dist/tools/register-spec-tools.test.js.map +1 -0
  355. package/dist/tools/reverse-engineer.test.d.ts +2 -0
  356. package/dist/tools/reverse-engineer.test.d.ts.map +1 -0
  357. package/dist/tools/reverse-engineer.test.js +206 -0
  358. package/dist/tools/reverse-engineer.test.js.map +1 -0
  359. package/dist/tools/schemas/index.d.ts +1 -1
  360. package/dist/tools/schemas/index.d.ts.map +1 -1
  361. package/dist/tools/schemas/index.js +1 -1
  362. package/dist/tools/schemas/index.js.map +1 -1
  363. package/dist/tools/schemas/infra.d.ts +8 -0
  364. package/dist/tools/schemas/infra.d.ts.map +1 -1
  365. package/dist/tools/schemas/infra.js +3 -0
  366. package/dist/tools/schemas/infra.js.map +1 -1
  367. package/dist/tools/schemas.d.ts +20 -0
  368. package/dist/tools/schemas.d.ts.map +1 -0
  369. package/dist/tools/schemas.js +133 -0
  370. package/dist/tools/schemas.js.map +1 -0
  371. package/dist/tools/schemas.test.d.ts +2 -0
  372. package/dist/tools/schemas.test.d.ts.map +1 -0
  373. package/dist/tools/schemas.test.js +245 -0
  374. package/dist/tools/schemas.test.js.map +1 -0
  375. package/dist/tools/set-locale.test.d.ts +2 -0
  376. package/dist/tools/set-locale.test.d.ts.map +1 -0
  377. package/dist/tools/set-locale.test.js +74 -0
  378. package/dist/tools/set-locale.test.js.map +1 -0
  379. package/dist/tools/suggest-mcps.test.d.ts +2 -0
  380. package/dist/tools/suggest-mcps.test.d.ts.map +1 -0
  381. package/dist/tools/suggest-mcps.test.js +198 -0
  382. package/dist/tools/suggest-mcps.test.js.map +1 -0
  383. package/dist/tools/suggest-stack.test.d.ts +2 -0
  384. package/dist/tools/suggest-stack.test.d.ts.map +1 -0
  385. package/dist/tools/suggest-stack.test.js +181 -0
  386. package/dist/tools/suggest-stack.test.js.map +1 -0
  387. package/dist/tools/suggest-tooling.test.d.ts +2 -0
  388. package/dist/tools/suggest-tooling.test.d.ts.map +1 -0
  389. package/dist/tools/suggest-tooling.test.js +213 -0
  390. package/dist/tools/suggest-tooling.test.js.map +1 -0
  391. package/dist/tools/summarize-spec.test.d.ts +2 -0
  392. package/dist/tools/summarize-spec.test.d.ts.map +1 -0
  393. package/dist/tools/summarize-spec.test.js +180 -0
  394. package/dist/tools/summarize-spec.test.js.map +1 -0
  395. package/dist/tools/update-status.test.d.ts +2 -0
  396. package/dist/tools/update-status.test.d.ts.map +1 -0
  397. package/dist/tools/update-status.test.js +142 -0
  398. package/dist/tools/update-status.test.js.map +1 -0
  399. package/dist/tools/validate.test.d.ts +2 -0
  400. package/dist/tools/validate.test.d.ts.map +1 -0
  401. package/dist/tools/validate.test.js +137 -0
  402. package/dist/tools/validate.test.js.map +1 -0
  403. package/dist/types/context-budget.d.ts +90 -0
  404. package/dist/types/context-budget.d.ts.map +1 -0
  405. package/dist/types/context-budget.js +3 -0
  406. package/dist/types/context-budget.js.map +1 -0
  407. package/dist/types/index.d.ts +1 -0
  408. package/dist/types/index.d.ts.map +1 -1
  409. package/dist/types/index.js +1 -0
  410. package/dist/types/index.js.map +1 -1
  411. package/dist/types/testing.d.ts +10 -0
  412. package/dist/types/testing.d.ts.map +1 -1
  413. package/package.json +1 -1
  414. package/src/i18n/messages/en.json +8 -2
  415. package/src/i18n/messages/es.json +8 -2
  416. package/src/i18n/messages/pt.json +6 -0
  417. package/dist/engine/test-spec-generator.d.ts.map +0 -1
  418. package/dist/engine/test-spec-generator.js +0 -348
  419. package/dist/engine/test-spec-generator.js.map +0 -1
  420. package/dist/tools/generate-tests/generators/database-test-generator.d.ts +0 -11
  421. package/dist/tools/generate-tests/generators/database-test-generator.d.ts.map +0 -1
  422. package/dist/tools/generate-tests/generators/database-test-generator.js +0 -329
  423. package/dist/tools/generate-tests/generators/database-test-generator.js.map +0 -1
  424. package/dist/tools/generate-tests/generators/microservices-test-generator.d.ts +0 -10
  425. package/dist/tools/generate-tests/generators/microservices-test-generator.d.ts.map +0 -1
  426. package/dist/tools/generate-tests/generators/microservices-test-generator.js +0 -341
  427. package/dist/tools/generate-tests/generators/microservices-test-generator.js.map +0 -1
  428. package/dist/tools/generate-tests/generators/security-test-generator.d.ts +0 -11
  429. package/dist/tools/generate-tests/generators/security-test-generator.d.ts.map +0 -1
  430. package/dist/tools/generate-tests/generators/security-test-generator.js +0 -318
  431. package/dist/tools/generate-tests/generators/security-test-generator.js.map +0 -1
@@ -0,0 +1,28 @@
1
+ // security/index.ts — SPEC-058b Section G
2
+ // Public API: re-exports all security generator functions and
3
+ // implements generateSecurityTestFiles() as the main entry point.
4
+ import { detectAuth, detectFileUpload, hasPublicApi } from './detectors.js';
5
+ import { buildTsSecurityTest } from './ts-scaffold.js';
6
+ import { buildPythonSecurityTest } from './python-scaffold.js';
7
+ export { detectAuth, detectFileUpload, hasPublicApi, isSecurityTestProject } from './detectors.js';
8
+ export { generateSecurityTestDefs } from './test-defs.js';
9
+ export function generateSecurityTestFiles(spec, testDir, framework, language, testExt, autoGenerate, knowledge) {
10
+ const auth = detectAuth(knowledge);
11
+ const upload = detectFileUpload(knowledge);
12
+ const publicApi = hasPublicApi(knowledge);
13
+ const isPython = language === 'python';
14
+ const ext = isPython ? 'py' : testExt;
15
+ const fw = isPython ? 'pytest' : framework;
16
+ const content = isPython
17
+ ? buildPythonSecurityTest(spec.title, auth, upload, publicApi)
18
+ : buildTsSecurityTest(spec.title, auth, upload, publicApi);
19
+ return [
20
+ {
21
+ path: `${testDir}/security/${spec.slug}.security.test.${ext}`,
22
+ framework: fw,
23
+ content,
24
+ ready: autoGenerate,
25
+ },
26
+ ];
27
+ }
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/tools/generate-tests/generators/security/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,8DAA8D;AAC9D,kEAAkE;AAGlE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACnG,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,MAAM,UAAU,yBAAyB,CACvC,IAAqC,EACrC,OAAe,EACf,SAAiB,EACjB,QAAgB,EAChB,OAAe,EACf,YAAqB,EACrB,SAA2B;IAE3B,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,QAAQ,KAAK,QAAQ,CAAC;IACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;IACtC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3C,MAAM,OAAO,GAAG,QAAQ;QACtB,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC;QAC9D,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAE7D,OAAO;QACL;YACE,IAAI,EAAE,GAAG,OAAO,aAAa,IAAI,CAAC,IAAI,kBAAkB,GAAG,EAAE;YAC7D,SAAS,EAAE,EAAE;YACb,OAAO;YACP,KAAK,EAAE,YAAY;SACpB;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function buildPythonSecurityTest(title: string, auth: string | null, upload: string | null, publicApi: boolean): string;
2
+ //# sourceMappingURL=python-scaffold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python-scaffold.d.ts","sourceRoot":"","sources":["../../../../../src/tools/generate-tests/generators/security/python-scaffold.ts"],"names":[],"mappings":"AAGA,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,SAAS,EAAE,OAAO,GACjB,MAAM,CAyFR"}
@@ -0,0 +1,89 @@
1
+ // security/python-scaffold.ts — SPEC-058b Section G
2
+ // Builds Python/pytest security test file content as a string.
3
+ export function buildPythonSecurityTest(title, auth, upload, publicApi) {
4
+ const cls = title.replace(/[^a-zA-Z0-9]/g, '');
5
+ const owaspSection = publicApi
6
+ ? `
7
+ def test_sql_injection_rejected(self) -> None:
8
+ """SQL injection in query parameters is rejected."""
9
+ # response = client.get("/api/users?id=' OR 1=1 --")
10
+ # assert response.status_code == 400
11
+ pass
12
+
13
+ def test_xss_payload_escaped(self) -> None:
14
+ """XSS payloads are escaped in response."""
15
+ pass
16
+
17
+ def test_csrf_token_validated(self) -> None:
18
+ """CSRF token is required on state-changing requests."""
19
+ pass
20
+
21
+ def test_auth_bypass_rejected(self) -> None:
22
+ """Auth bypass attempts are rejected."""
23
+ pass
24
+ `
25
+ : '';
26
+ const authSection = auth
27
+ ? `
28
+ def test_expired_token_returns_401(self) -> None:
29
+ """Expired token is rejected with 401."""
30
+ pass
31
+
32
+ def test_refresh_token_returns_new_access_token(self) -> None:
33
+ """Refresh token flow issues a new access token."""
34
+ pass
35
+
36
+ def test_privilege_escalation_prevented(self) -> None:
37
+ """User cannot access admin-only endpoints."""
38
+ pass
39
+
40
+ def test_session_fixation_prevented(self) -> None:
41
+ """Session fixation attack is prevented."""
42
+ pass
43
+ `
44
+ : '';
45
+ const uploadSection = upload
46
+ ? `
47
+ def test_disallowed_file_type_rejected(self) -> None:
48
+ """Disallowed file types are rejected on upload."""
49
+ pass
50
+
51
+ def test_max_file_size_enforced(self) -> None:
52
+ """Files exceeding size limit are rejected."""
53
+ pass
54
+
55
+ def test_path_traversal_in_filename_prevented(self) -> None:
56
+ """Path traversal in filename is sanitized."""
57
+ pass
58
+
59
+ def test_malicious_content_detected(self) -> None:
60
+ """Malicious file content is detected and rejected."""
61
+ pass
62
+ `
63
+ : '';
64
+ const apiSection = publicApi
65
+ ? `
66
+ def test_rate_limiter_blocks_excess(self) -> None:
67
+ """Rate limiter returns 429 after threshold."""
68
+ pass
69
+
70
+ def test_cors_rejects_unauthorized_origin(self) -> None:
71
+ """CORS policy rejects requests from unauthorized origins."""
72
+ pass
73
+
74
+ def test_api_key_rotation_supported(self) -> None:
75
+ """API key rotation works without downtime."""
76
+ pass
77
+ `
78
+ : '';
79
+ return `"""Security tests for: ${title}
80
+ Generated by SpecForge SDD MCP Server (SPEC-058b).
81
+ """
82
+ import pytest
83
+
84
+
85
+ class Test${cls}Security:
86
+ """Security test suite for ${title}."""
87
+ ${owaspSection}${authSection}${uploadSection}${apiSection}`;
88
+ }
89
+ //# sourceMappingURL=python-scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python-scaffold.js","sourceRoot":"","sources":["../../../../../src/tools/generate-tests/generators/security/python-scaffold.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,+DAA+D;AAE/D,MAAM,UAAU,uBAAuB,CACrC,KAAa,EACb,IAAmB,EACnB,MAAqB,EACrB,SAAkB;IAElB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,SAAS;QAC5B,CAAC,CAAC;;;;;;;;;;;;;;;;;;CAkBL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,WAAW,GAAG,IAAI;QACtB,CAAC,CAAC;;;;;;;;;;;;;;;;CAgBL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,aAAa,GAAG,MAAM;QAC1B,CAAC,CAAC;;;;;;;;;;;;;;;;CAgBL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,UAAU,GAAG,SAAS;QAC1B,CAAC,CAAC;;;;;;;;;;;;CAYL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,0BAA0B,KAAK;;;;;;YAM5B,GAAG;iCACkB,KAAK;EACpC,YAAY,GAAG,WAAW,GAAG,aAAa,GAAG,UAAU,EAAE,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { TestDefinition, ProjectKnowledge } from '../../../../types/index.js';
2
+ export declare function generateSecurityTestDefs(title: string, testDir: string, _testExt: string, knowledge: ProjectKnowledge): TestDefinition[];
3
+ //# sourceMappingURL=test-defs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-defs.d.ts","sourceRoot":"","sources":["../../../../../src/tools/generate-tests/generators/security/test-defs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGnF,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,gBAAgB,GAC1B,cAAc,EAAE,CAiDlB"}
@@ -0,0 +1,48 @@
1
+ // security/test-defs.ts — SPEC-058b Section G
2
+ // Generates TestDefinition[] entries for security test scenarios.
3
+ import { hasPublicApi, detectAuth, detectFileUpload } from './detectors.js';
4
+ export function generateSecurityTestDefs(title, testDir, _testExt, knowledge) {
5
+ const defs = [];
6
+ if (hasPublicApi(knowledge)) {
7
+ defs.push({
8
+ name: `${title} — OWASP Top 10: injection, XSS, CSRF, auth bypass`,
9
+ type: 'integration',
10
+ file: `${testDir}/security/`,
11
+ description: 'Verify protection against OWASP Top 10 vulnerabilities on public endpoints',
12
+ priority: 'critical',
13
+ automatable: true,
14
+ });
15
+ }
16
+ if (detectAuth(knowledge) !== null) {
17
+ defs.push({
18
+ name: `${title} — auth: token expiration, refresh flow, privilege escalation`,
19
+ type: 'integration',
20
+ file: `${testDir}/security/`,
21
+ description: 'Verify auth token lifecycle, refresh flow, and privilege escalation prevention',
22
+ priority: 'critical',
23
+ automatable: true,
24
+ });
25
+ }
26
+ if (detectFileUpload(knowledge) !== null) {
27
+ defs.push({
28
+ name: `${title} — file upload: type validation, size limits, path traversal`,
29
+ type: 'integration',
30
+ file: `${testDir}/security/`,
31
+ description: 'Verify file upload security: type validation, size limits, path traversal prevention',
32
+ priority: 'high',
33
+ automatable: true,
34
+ });
35
+ }
36
+ if (hasPublicApi(knowledge)) {
37
+ defs.push({
38
+ name: `${title} — API security: rate limiting, CORS, API key rotation`,
39
+ type: 'integration',
40
+ file: `${testDir}/security/`,
41
+ description: 'Verify rate limiting effectiveness, CORS policy, and API key rotation support',
42
+ priority: 'high',
43
+ automatable: true,
44
+ });
45
+ }
46
+ return defs;
47
+ }
48
+ //# sourceMappingURL=test-defs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-defs.js","sourceRoot":"","sources":["../../../../../src/tools/generate-tests/generators/security/test-defs.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,kEAAkE;AAGlE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE5E,MAAM,UAAU,wBAAwB,CACtC,KAAa,EACb,OAAe,EACf,QAAgB,EAChB,SAA2B;IAE3B,MAAM,IAAI,GAAqB,EAAE,CAAC;IAElC,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,GAAG,KAAK,oDAAoD;YAClE,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,OAAO,YAAY;YAC5B,WAAW,EAAE,4EAA4E;YACzF,QAAQ,EAAE,UAAU;YACpB,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,GAAG,KAAK,+DAA+D;YAC7E,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,OAAO,YAAY;YAC5B,WAAW,EAAE,gFAAgF;YAC7F,QAAQ,EAAE,UAAU;YACpB,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,gBAAgB,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,GAAG,KAAK,8DAA8D;YAC5E,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,OAAO,YAAY;YAC5B,WAAW,EACT,sFAAsF;YACxF,QAAQ,EAAE,MAAM;YAChB,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,GAAG,KAAK,wDAAwD;YACtE,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,OAAO,YAAY;YAC5B,WAAW,EAAE,+EAA+E;YAC5F,QAAQ,EAAE,MAAM;YAChB,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function buildTsSecurityTest(title: string, auth: string | null, upload: string | null, publicApi: boolean): string;
2
+ //# sourceMappingURL=ts-scaffold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-scaffold.d.ts","sourceRoot":"","sources":["../../../../../src/tools/generate-tests/generators/security/ts-scaffold.ts"],"names":[],"mappings":"AAGA,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,SAAS,EAAE,OAAO,GACjB,MAAM,CA2GR"}
@@ -0,0 +1,107 @@
1
+ // security/ts-scaffold.ts — SPEC-058b Section G
2
+ // Builds TypeScript/Vitest security test file content as a string.
3
+ export function buildTsSecurityTest(title, auth, upload, publicApi) {
4
+ const owaspSection = publicApi
5
+ ? `
6
+ describe('OWASP Top 10', () => {
7
+ it('rejects SQL injection in query parameters', async () => {
8
+ // const res = await request(app).get("/api/users?id=' OR 1=1 --");
9
+ // expect(res.status).toBe(400);
10
+ expect(true).toBe(true);
11
+ });
12
+
13
+ it('escapes XSS payloads in response', async () => {
14
+ // const res = await request(app).post('/api/comments')
15
+ // .send({ body: '<script>alert("xss")</script>' });
16
+ // expect(res.body.body).not.toContain('<script>');
17
+ expect(true).toBe(true);
18
+ });
19
+
20
+ it('validates CSRF token on state-changing requests', async () => {
21
+ expect(true).toBe(true);
22
+ });
23
+
24
+ it('rejects auth bypass attempts', async () => {
25
+ expect(true).toBe(true);
26
+ });
27
+ });
28
+ `
29
+ : '';
30
+ const authSection = auth
31
+ ? `
32
+ describe('Authentication (${auth})', () => {
33
+ it('rejects expired token with 401', async () => {
34
+ // const expiredToken = signToken({ exp: Math.floor(Date.now()/1000) - 60 });
35
+ // const res = await request(app).get('/api/me').set('Authorization', \`Bearer \${expiredToken}\`);
36
+ // expect(res.status).toBe(401);
37
+ expect(true).toBe(true);
38
+ });
39
+
40
+ it('refresh token returns new access token', async () => {
41
+ expect(true).toBe(true);
42
+ });
43
+
44
+ it('prevents privilege escalation (user cannot access admin)', async () => {
45
+ expect(true).toBe(true);
46
+ });
47
+
48
+ it('prevents session fixation attack', async () => {
49
+ expect(true).toBe(true);
50
+ });
51
+ });
52
+ `
53
+ : '';
54
+ const uploadSection = upload
55
+ ? `
56
+ describe('File upload (${upload})', () => {
57
+ it('rejects disallowed file types', async () => {
58
+ // const res = await request(app).post('/api/upload')
59
+ // .attach('file', Buffer.from('#!/bin/sh'), { filename: 'evil.sh' });
60
+ // expect(res.status).toBe(400);
61
+ expect(true).toBe(true);
62
+ });
63
+
64
+ it('enforces maximum file size', async () => {
65
+ expect(true).toBe(true);
66
+ });
67
+
68
+ it('prevents path traversal in filename', async () => {
69
+ // filename: '../../etc/passwd' → should be sanitized
70
+ expect(true).toBe(true);
71
+ });
72
+
73
+ it('scans for malicious content', async () => {
74
+ expect(true).toBe(true);
75
+ });
76
+ });
77
+ `
78
+ : '';
79
+ const apiSection = publicApi
80
+ ? `
81
+ describe('API security', () => {
82
+ it('rate limiter blocks excessive requests', async () => {
83
+ // for (let i = 0; i < 101; i++) await request(app).get('/api/data');
84
+ // const res = await request(app).get('/api/data');
85
+ // expect(res.status).toBe(429);
86
+ expect(true).toBe(true);
87
+ });
88
+
89
+ it('CORS rejects requests from unauthorized origins', async () => {
90
+ expect(true).toBe(true);
91
+ });
92
+
93
+ it('supports API key rotation without downtime', async () => {
94
+ expect(true).toBe(true);
95
+ });
96
+ });
97
+ `
98
+ : '';
99
+ return `// Security tests for: ${title}
100
+ // Generated by SpecForge SDD MCP Server (SPEC-058b)
101
+ import { describe, it, expect } from 'vitest';
102
+
103
+ describe('${title} — Security Tests', () => {
104
+ ${owaspSection}${authSection}${uploadSection}${apiSection}});
105
+ `;
106
+ }
107
+ //# sourceMappingURL=ts-scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-scaffold.js","sourceRoot":"","sources":["../../../../../src/tools/generate-tests/generators/security/ts-scaffold.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,mEAAmE;AAEnE,MAAM,UAAU,mBAAmB,CACjC,KAAa,EACb,IAAmB,EACnB,MAAqB,EACrB,SAAkB;IAElB,MAAM,YAAY,GAAG,SAAS;QAC5B,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;CAuBL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,WAAW,GAAG,IAAI;QACtB,CAAC,CAAC;8BACwB,IAAI;;;;;;;;;;;;;;;;;;;;CAoBjC;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,aAAa,GAAG,MAAM;QAC1B,CAAC,CAAC;2BACqB,MAAM;;;;;;;;;;;;;;;;;;;;;CAqBhC;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,UAAU,GAAG,SAAS;QAC1B,CAAC,CAAC;;;;;;;;;;;;;;;;;CAiBL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,0BAA0B,KAAK;;;;YAI5B,KAAK;EACf,YAAY,GAAG,WAAW,GAAG,aAAa,GAAG,UAAU;CACxD,CAAC;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"spec-dispatcher.d.ts","sourceRoot":"","sources":["../../../src/tools/generate-tests/spec-dispatcher.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AA4G7F;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE;IACJ,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,gBAAgB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB,EACD,SAAS,EAAE,cAAc,EAAE,EAC3B,gBAAgB,EAAE,cAAc,EAAE,EAClC,SAAS,EAAE,QAAQ,EAAE,GACpB;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,CA0QxB"}
1
+ {"version":3,"file":"spec-dispatcher.d.ts","sourceRoot":"","sources":["../../../src/tools/generate-tests/spec-dispatcher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAQ7F;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE;IACJ,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,gBAAgB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB,EACD,SAAS,EAAE,cAAc,EAAE,EAC3B,gBAAgB,EAAE,cAAc,EAAE,EAClC,SAAS,EAAE,QAAQ,EAAE,GACpB;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,CAgFxB"}
@@ -1,29 +1,11 @@
1
- // tools/generate-tests/spec-dispatcher.ts — Spec-specific test generation dispatchers
2
- // Plugin registry for generate_tests. To add a new spec:
3
- // 1. Import its isXxx / generateXxxTestDefs / generateXxxTestFiles here
4
- // 2. Add a dispatch block in runSpecializedGenerators()
5
- // No changes needed in generate-tests.ts
6
- import { isGameProject, generateGameTestDefs, generateGameTestContent, } from './generators/game-tests-generator.js';
7
- import { isAgentProject, generateAgentTestDefs, generateAgentTestFiles, } from '../../engine/test-generators/agent-test-templates.js';
8
- import { isSmartContractProject, isMLProject, generateSmartContractTestDefs, generateMLTestDefs, buildSmartContractTestFiles, buildMLTestFiles, } from '../../engine/test-generators/platform-test-templates.js';
9
- import { buildContractTestFile, buildMockServerFile } from './adapters/contract-testing-adapter.js';
10
- import { isMcpProject, generateMcpTestDefs, generateMcpTestFiles, } from './generators/mcp-tests-generator.js';
11
- import { generateA11yTestDefs, generateA11yTestContent, } from './generators/a11y-tests-generator.js';
12
- import { isEventProject, generateEventTestDefs, generateEventTestFiles, } from './generators/event-test-generator.js';
13
- import { isConcurrencyProject, isMicroserviceProject, generateConcurrencyTestDefs, generateConcurrencyTestFiles, generatePactTestDefs, generatePactTestFiles, } from './generators/concurrency-test-generator.js';
14
- import { isHypermediaProject, generateHypermediaTestDefs, generateHypermediaTestFiles, } from './generators/hypermedia-generator.js';
15
- import { isOtelProject, generateOtelTestDefs, generateOtelTestFiles, } from './generators/otel-test-generator.js';
16
- import { isSupplyChainProject, generateSupplyChainTestDefs, generateSupplyChainTestFiles, } from './generators/supply-chain-test-generator.js';
17
- import { isLlmSecurityProject, generateLlmSecurityTestDefs, generateLlmSecurityTestFiles, } from './generators/llm-security-test-generator.js';
18
- import { isLocalFirstProject, generateLocalFirstTestDefs, generateLocalFirstTestFiles, } from './generators/local-first-test-generator.js';
19
- import { isAdvancedTestingProject, generateAdvancedTestingDefs, generateAdvancedTestingFiles, } from './generators/advanced-testing-generator.js';
20
- import { isVisualRegressionProject, generateVisualRegressionTestDefs, generateVisualRegressionTestFiles, } from './generators/visual-regression-generator.js';
21
- import { isGraphqlProject, generateGraphqlTestDefs, generateGraphqlTestFiles, } from './generators/graphql-test-generator.js';
22
- import { isGrpcProject, generateGrpcTestDefs, generateGrpcTestFiles, } from './generators/grpc-test-generator.js';
23
- import { isWebSocketProject, generateWebSocketTestDefs, generateWebSocketTestFiles, } from './generators/websocket-test-generator.js';
24
- import { isMicroservicesTestProject, generateMicroservicesTestDefs, generateMicroservicesTestFiles, } from './generators/microservices-test-generator.js';
25
- import { isDatabaseTestProject, generateDatabaseTestDefs, generateDatabaseTestFiles, } from './generators/database-test-generator.js';
26
- import { isSecurityTestProject, generateSecurityTestDefs, generateSecurityTestFiles, } from './generators/security-test-generator.js';
1
+ // tools/generate-tests/spec-dispatcher.ts — Orchestrator for spec-specific test generation
2
+ // Delegates to domain-grouped sub-dispatchers in ./dispatchers/
3
+ import { dispatchAiMl } from './dispatchers/ai-ml-dispatcher.js';
4
+ import { dispatchFrontend } from './dispatchers/frontend-dispatcher.js';
5
+ import { dispatchProtocols } from './dispatchers/protocols-dispatcher.js';
6
+ import { dispatchDistributed } from './dispatchers/distributed-dispatcher.js';
7
+ import { dispatchInfra } from './dispatchers/infra-dispatcher.js';
8
+ import { dispatchDatabaseSecurity } from './dispatchers/database-security-dispatcher.js';
27
9
  /**
28
10
  * Runs all spec-specific test generation dispatchers.
29
11
  * Mutates unitTests, integrationTests, testFiles in-place.
@@ -31,145 +13,11 @@ import { isSecurityTestProject, generateSecurityTestDefs, generateSecurityTestFi
31
13
  */
32
14
  export function runSpecializedGenerators(args, unitTests, integrationTests, testFiles) {
33
15
  const { spec, knowledge, testDir, testFramework, slug, autoGenerate, testExt } = args;
34
- if (isAgentProject(knowledge) || spec.type === 'agent') {
35
- const agentDefs = generateAgentTestDefs(spec.title, testDir);
36
- unitTests.push(...agentDefs.filter((d) => d.type === 'unit'));
37
- integrationTests.push(...agentDefs.filter((d) => d.type === 'integration'));
38
- testFiles.push(...generateAgentTestFiles(spec, testDir, testFramework, knowledge.language));
39
- }
40
- if (isSmartContractProject(knowledge)) {
41
- const contractDefs = generateSmartContractTestDefs(spec.title, testDir);
42
- unitTests.push(...contractDefs.filter((d) => d.type === 'unit'));
43
- integrationTests.push(...contractDefs.filter((d) => d.type === 'integration'));
44
- testFiles.push(...buildSmartContractTestFiles(spec.title, slug, testDir, knowledge.framework ?? 'hardhat', autoGenerate));
45
- }
46
- if (isMLProject(knowledge)) {
47
- const mlDefs = generateMLTestDefs(spec.title, testDir);
48
- unitTests.push(...mlDefs.filter((d) => d.type === 'unit'));
49
- integrationTests.push(...mlDefs.filter((d) => d.type === 'integration'));
50
- testFiles.push(...buildMLTestFiles(spec.title, slug, testDir, autoGenerate));
51
- }
52
- if (spec.target === 'frontend' || spec.target === 'fullstack') {
53
- const a11yTests = generateA11yTestDefs(spec.title, testDir);
54
- unitTests.push(...a11yTests);
55
- testFiles.push({
56
- path: `${testDir}/a11y/${slug}.a11y.test.${testExt}`,
57
- framework: testFramework,
58
- content: generateA11yTestContent(spec.title, testFramework, knowledge.language),
59
- ready: autoGenerate,
60
- });
61
- }
62
- if (isGameProject(knowledge)) {
63
- const gameDefs = generateGameTestDefs(spec.title, testDir, knowledge);
64
- unitTests.push(...gameDefs.filter((d) => d.type === 'unit'));
65
- integrationTests.push(...gameDefs.filter((d) => d.type === 'integration'));
66
- testFiles.push({
67
- path: `${testDir}/unit/game-logic/${slug}.game.test.${testExt}`,
68
- framework: testFramework,
69
- content: generateGameTestContent(spec.title, knowledge.framework ?? 'phaser', testFramework),
70
- ready: autoGenerate,
71
- });
72
- }
73
- if (isMcpProject(knowledge) || spec.type === 'agent') {
74
- const mcpDefs = generateMcpTestDefs(spec.title, testDir);
75
- unitTests.push(...mcpDefs.filter((d) => d.type === 'unit'));
76
- integrationTests.push(...mcpDefs.filter((d) => d.type === 'integration'));
77
- if (isMcpProject(knowledge)) {
78
- testFiles.push(...generateMcpTestFiles(spec, testDir, testFramework, knowledge.language));
79
- }
80
- }
81
- if (isEventProject(knowledge)) {
82
- const eventDefs = generateEventTestDefs(spec.title, testDir, knowledge);
83
- unitTests.push(...eventDefs.filter((d) => d.type === 'unit'));
84
- integrationTests.push(...eventDefs.filter((d) => d.type === 'integration'));
85
- testFiles.push(...generateEventTestFiles(spec, testDir, testFramework, knowledge.language, knowledge, autoGenerate));
86
- }
87
- if (isConcurrencyProject(knowledge)) {
88
- const concurrencyDefs = generateConcurrencyTestDefs(spec.title, testDir, knowledge.language);
89
- unitTests.push(...concurrencyDefs.filter((d) => d.type === 'unit'));
90
- integrationTests.push(...concurrencyDefs.filter((d) => d.type === 'integration'));
91
- testFiles.push(...generateConcurrencyTestFiles(spec, testDir, testFramework, knowledge.language, knowledge, autoGenerate));
92
- }
93
- if (isMicroserviceProject(knowledge)) {
94
- integrationTests.push(...generatePactTestDefs(spec.title, testDir));
95
- testFiles.push(...generatePactTestFiles(spec, testDir, testFramework, knowledge.language, autoGenerate));
96
- }
97
- if (isHypermediaProject(knowledge)) {
98
- integrationTests.push(...generateHypermediaTestDefs(spec.title, testDir));
99
- testFiles.push(...generateHypermediaTestFiles(spec, testDir, knowledge.language, autoGenerate));
100
- }
101
- if (isOtelProject(knowledge)) {
102
- const otelDefs = generateOtelTestDefs(spec.title, testDir);
103
- unitTests.push(...otelDefs.filter((d) => d.type === 'unit'));
104
- integrationTests.push(...otelDefs.filter((d) => d.type === 'integration'));
105
- testFiles.push(...generateOtelTestFiles(spec, testDir, knowledge.language, autoGenerate));
106
- }
107
- if (isSupplyChainProject(knowledge)) {
108
- integrationTests.push(...generateSupplyChainTestDefs(spec.title, testDir));
109
- testFiles.push(...generateSupplyChainTestFiles(spec, testDir, knowledge.language, autoGenerate));
110
- }
111
- if (isLlmSecurityProject(knowledge)) {
112
- const llmDefs = generateLlmSecurityTestDefs(spec.title, testDir);
113
- unitTests.push(...llmDefs.filter((d) => d.type === 'unit'));
114
- integrationTests.push(...llmDefs.filter((d) => d.type === 'integration'));
115
- testFiles.push(...generateLlmSecurityTestFiles(spec, testDir, knowledge.language, autoGenerate));
116
- }
117
- if (isLocalFirstProject(knowledge)) {
118
- const localFirstDefs = generateLocalFirstTestDefs(spec.title, testDir);
119
- unitTests.push(...localFirstDefs.filter((d) => d.type === 'unit'));
120
- integrationTests.push(...localFirstDefs.filter((d) => d.type === 'integration'));
121
- testFiles.push(...generateLocalFirstTestFiles(spec, testDir, knowledge.language, autoGenerate));
122
- }
123
- if (isAdvancedTestingProject(spec, knowledge)) {
124
- const advancedDefs = generateAdvancedTestingDefs(spec, testDir);
125
- unitTests.push(...advancedDefs.filter((d) => d.type === 'unit'));
126
- integrationTests.push(...advancedDefs.filter((d) => d.type === 'integration'));
127
- testFiles.push(...generateAdvancedTestingFiles(spec, testDir, knowledge.language, knowledge, autoGenerate));
128
- }
129
- if (isVisualRegressionProject(knowledge)) {
130
- const vrDefs = generateVisualRegressionTestDefs(slug, testDir, testExt);
131
- unitTests.push(...vrDefs.filter((d) => d.type === 'unit'));
132
- integrationTests.push(...vrDefs.filter((d) => d.type === 'integration'));
133
- testFiles.push(...generateVisualRegressionTestFiles({ title: spec.title, slug }, testDir, testFramework, knowledge.language, testExt, autoGenerate));
134
- }
135
- if (isGraphqlProject(knowledge)) {
136
- const gqlDefs = generateGraphqlTestDefs(spec.title, testDir, testExt);
137
- integrationTests.push(...gqlDefs);
138
- testFiles.push(...generateGraphqlTestFiles({ title: spec.title, slug }, testDir, testFramework, knowledge.language, testExt, autoGenerate));
139
- }
140
- if (isGrpcProject(knowledge)) {
141
- const grpcDefs = generateGrpcTestDefs(spec.title, testDir, testExt);
142
- integrationTests.push(...grpcDefs);
143
- testFiles.push(...generateGrpcTestFiles({ title: spec.title, slug }, testDir, testFramework, knowledge.language, testExt, autoGenerate));
144
- }
145
- if (isWebSocketProject(knowledge)) {
146
- const wsDefs = generateWebSocketTestDefs(spec.title, testDir, testExt);
147
- integrationTests.push(...wsDefs);
148
- testFiles.push(...generateWebSocketTestFiles({ title: spec.title, slug }, testDir, testFramework, knowledge.language, testExt, autoGenerate));
149
- }
150
- // SPEC-058b: Microservices & Distributed Systems
151
- if (isMicroservicesTestProject(knowledge)) {
152
- const msDefs = generateMicroservicesTestDefs(spec.title, testDir, testExt, knowledge);
153
- integrationTests.push(...msDefs);
154
- testFiles.push(...generateMicroservicesTestFiles({ title: spec.title, slug }, testDir, testFramework, knowledge.language, testExt, autoGenerate, knowledge));
155
- }
156
- // SPEC-058b: Database & Data Layer
157
- if (isDatabaseTestProject(knowledge)) {
158
- const dbDefs = generateDatabaseTestDefs(spec.title, testDir, testExt, knowledge);
159
- integrationTests.push(...dbDefs);
160
- testFiles.push(...generateDatabaseTestFiles({ title: spec.title, slug }, testDir, testFramework, knowledge.language, testExt, autoGenerate, knowledge));
161
- }
162
- // SPEC-058b: Security Testing
163
- if (isSecurityTestProject(knowledge)) {
164
- const secDefs = generateSecurityTestDefs(spec.title, testDir, testExt, knowledge);
165
- integrationTests.push(...secDefs);
166
- testFiles.push(...generateSecurityTestFiles({ title: spec.title, slug }, testDir, testFramework, knowledge.language, testExt, autoGenerate, knowledge));
167
- }
168
- const isApiSpec = spec.target === 'backend' || spec.target === 'fullstack';
169
- if (isApiSpec) {
170
- testFiles.push(buildContractTestFile(spec.title, slug, knowledge, autoGenerate));
171
- testFiles.push(buildMockServerFile(spec.title, slug, knowledge, autoGenerate));
172
- }
173
- return { isApiSpec };
16
+ dispatchAiMl(spec, knowledge, testDir, testFramework, slug, autoGenerate, testExt, unitTests, integrationTests, testFiles);
17
+ dispatchFrontend(spec, knowledge, testDir, testFramework, slug, autoGenerate, testExt, unitTests, integrationTests, testFiles);
18
+ dispatchDistributed(spec, knowledge, testDir, testFramework, slug, autoGenerate, testExt, unitTests, integrationTests, testFiles);
19
+ dispatchProtocols(spec, knowledge, testDir, testFramework, slug, autoGenerate, testExt, unitTests, integrationTests, testFiles);
20
+ dispatchInfra(spec, knowledge, testDir, testFramework, slug, autoGenerate, testExt, unitTests, integrationTests, testFiles);
21
+ return dispatchDatabaseSecurity(spec, knowledge, testDir, testFramework, slug, autoGenerate, testExt, unitTests, integrationTests, testFiles);
174
22
  }
175
23
  //# sourceMappingURL=spec-dispatcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spec-dispatcher.js","sourceRoot":"","sources":["../../../src/tools/generate-tests/spec-dispatcher.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,yDAAyD;AACzD,0EAA0E;AAC1E,0DAA0D;AAC1D,2CAA2C;AAG3C,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EACL,sBAAsB,EACtB,WAAW,EACX,6BAA6B,EAC7B,kBAAkB,EAClB,2BAA2B,EAC3B,gBAAgB,GACjB,MAAM,yDAAyD,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AACpG,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,2BAA2B,EAC3B,4BAA4B,EAC5B,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,oBAAoB,EACpB,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACL,yBAAyB,EACzB,gCAAgC,EAChC,iCAAiC,GAClC,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,yCAAyC,CAAC;AAEjD;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAQC,EACD,SAA2B,EAC3B,gBAAkC,EAClC,SAAqB;IAErB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEtF,IAAI,cAAc,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvD,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7D,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;QAC9D,gBAAgB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC;QAC5E,SAAS,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,IAAI,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,MAAM,YAAY,GAAG,6BAA6B,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACxE,SAAS,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;QACjE,gBAAgB,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC;QAC/E,SAAS,CAAC,IAAI,CACZ,GAAG,2BAA2B,CAC5B,IAAI,CAAC,KAAK,EACV,IAAI,EACJ,OAAO,EACP,SAAS,CAAC,SAAS,IAAI,SAAS,EAChC,YAAY,CACb,CACF,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvD,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;QAC3D,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC;QACzE,SAAS,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAC9D,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5D,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAC7B,SAAS,CAAC,IAAI,CAAC;YACb,IAAI,EAAE,GAAG,OAAO,SAAS,IAAI,cAAc,OAAO,EAAE;YACpD,SAAS,EAAE,aAAa;YACxB,OAAO,EAAE,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC,QAAQ,CAAC;YAC/E,KAAK,EAAE,YAAY;SACpB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACtE,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;QAC7D,gBAAgB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC;QAC3E,SAAS,CAAC,IAAI,CAAC;YACb,IAAI,EAAE,GAAG,OAAO,oBAAoB,IAAI,cAAc,OAAO,EAAE;YAC/D,SAAS,EAAE,aAAa;YACxB,OAAO,EAAE,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,IAAI,QAAQ,EAAE,aAAa,CAAC;YAC5F,KAAK,EAAE,YAAY;SACpB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,YAAY,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACzD,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;QAC5D,gBAAgB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC;QAC1E,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5B,SAAS,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAED,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACxE,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;QAC9D,gBAAgB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC;QAC5E,SAAS,CAAC,IAAI,CACZ,GAAG,sBAAsB,CACvB,IAAI,EACJ,OAAO,EACP,aAAa,EACb,SAAS,CAAC,QAAQ,EAClB,SAAS,EACT,YAAY,CACb,CACF,CAAC;IACJ,CAAC;IAED,IAAI,oBAAoB,CAAC,SAAS,CAAC,EAAE,CAAC;QACpC,MAAM,eAAe,GAAG,2BAA2B,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC7F,SAAS,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;QACpE,gBAAgB,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC;QAClF,SAAS,CAAC,IAAI,CACZ,GAAG,4BAA4B,CAC7B,IAAI,EACJ,OAAO,EACP,aAAa,EACb,SAAS,CAAC,QAAQ,EAClB,SAAS,EACT,YAAY,CACb,CACF,CAAC;IACJ,CAAC;IAED,IAAI,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,gBAAgB,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QACpE,SAAS,CAAC,IAAI,CACZ,GAAG,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CACzF,CAAC;IACJ,CAAC;IAED,IAAI,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,gBAAgB,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1E,SAAS,CAAC,IAAI,CAAC,GAAG,2BAA2B,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IAClG,CAAC;IAED,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3D,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;QAC7D,gBAAgB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC;QAC3E,SAAS,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IAC5F,CAAC;IAED,IAAI,oBAAoB,CAAC,SAAS,CAAC,EAAE,CAAC;QACpC,gBAAgB,CAAC,IAAI,CAAC,GAAG,2BAA2B,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3E,SAAS,CAAC,IAAI,CACZ,GAAG,4BAA4B,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CACjF,CAAC;IACJ,CAAC;IAED,IAAI,oBAAoB,CAAC,SAAS,CAAC,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,2BAA2B,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACjE,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;QAC5D,gBAAgB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC;QAC1E,SAAS,CAAC,IAAI,CACZ,GAAG,4BAA4B,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CACjF,CAAC;IACJ,CAAC;IAED,IAAI,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,MAAM,cAAc,GAAG,0BAA0B,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvE,SAAS,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;QACnE,gBAAgB,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC;QACjF,SAAS,CAAC,IAAI,CAAC,GAAG,2BAA2B,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IAClG,CAAC;IAED,IAAI,wBAAwB,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;QAC9C,MAAM,YAAY,GAAG,2BAA2B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAChE,SAAS,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;QACjE,gBAAgB,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC;QAC/E,SAAS,CAAC,IAAI,CACZ,GAAG,4BAA4B,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,CAC5F,CAAC;IACJ,CAAC;IAED,IAAI,yBAAyB,CAAC,SAAS,CAAC,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,gCAAgC,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACxE,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;QAC3D,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC;QACzE,SAAS,CAAC,IAAI,CACZ,GAAG,iCAAiC,CAClC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAC3B,OAAO,EACP,aAAa,EACb,SAAS,CAAC,QAAQ,EAClB,OAAO,EACP,YAAY,CACb,CACF,CAAC;IACJ,CAAC;IAED,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACtE,gBAAgB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QAClC,SAAS,CAAC,IAAI,CACZ,GAAG,wBAAwB,CACzB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAC3B,OAAO,EACP,aAAa,EACb,SAAS,CAAC,QAAQ,EAClB,OAAO,EACP,YAAY,CACb,CACF,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACpE,gBAAgB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QACnC,SAAS,CAAC,IAAI,CACZ,GAAG,qBAAqB,CACtB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAC3B,OAAO,EACP,aAAa,EACb,SAAS,CAAC,QAAQ,EAClB,OAAO,EACP,YAAY,CACb,CACF,CAAC;IACJ,CAAC;IAED,IAAI,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,yBAAyB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACvE,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QACjC,SAAS,CAAC,IAAI,CACZ,GAAG,0BAA0B,CAC3B,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAC3B,OAAO,EACP,aAAa,EACb,SAAS,CAAC,QAAQ,EAClB,OAAO,EACP,YAAY,CACb,CACF,CAAC;IACJ,CAAC;IAED,iDAAiD;IACjD,IAAI,0BAA0B,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,6BAA6B,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACtF,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QACjC,SAAS,CAAC,IAAI,CACZ,GAAG,8BAA8B,CAC/B,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAC3B,OAAO,EACP,aAAa,EACb,SAAS,CAAC,QAAQ,EAClB,OAAO,EACP,YAAY,EACZ,SAAS,CACV,CACF,CAAC;IACJ,CAAC;IAED,mCAAmC;IACnC,IAAI,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACjF,gBAAgB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QACjC,SAAS,CAAC,IAAI,CACZ,GAAG,yBAAyB,CAC1B,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAC3B,OAAO,EACP,aAAa,EACb,SAAS,CAAC,QAAQ,EAClB,OAAO,EACP,YAAY,EACZ,SAAS,CACV,CACF,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,IAAI,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAClF,gBAAgB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QAClC,SAAS,CAAC,IAAI,CACZ,GAAG,yBAAyB,CAC1B,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAC3B,OAAO,EACP,aAAa,EACb,SAAS,CAAC,QAAQ,EAClB,OAAO,EACP,YAAY,EACZ,SAAS,CACV,CACF,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC;IAC3E,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;QACjF,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"spec-dispatcher.js","sourceRoot":"","sources":["../../../src/tools/generate-tests/spec-dispatcher.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,gEAAgE;AAGhE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AAEzF;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAQC,EACD,SAA2B,EAC3B,gBAAkC,EAClC,SAAqB;IAErB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEtF,YAAY,CACV,IAAI,EACJ,SAAS,EACT,OAAO,EACP,aAAa,EACb,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,SAAS,CACV,CAAC;IAEF,gBAAgB,CACd,IAAI,EACJ,SAAS,EACT,OAAO,EACP,aAAa,EACb,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,SAAS,CACV,CAAC;IAEF,mBAAmB,CACjB,IAAI,EACJ,SAAS,EACT,OAAO,EACP,aAAa,EACb,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,SAAS,CACV,CAAC;IAEF,iBAAiB,CACf,IAAI,EACJ,SAAS,EACT,OAAO,EACP,aAAa,EACb,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,SAAS,CACV,CAAC;IAEF,aAAa,CACX,IAAI,EACJ,SAAS,EACT,OAAO,EACP,aAAa,EACb,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,SAAS,CACV,CAAC;IAEF,OAAO,wBAAwB,CAC7B,IAAI,EACJ,SAAS,EACT,OAAO,EACP,aAAa,EACb,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,SAAS,CACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=generate-tests.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-tests.test.d.ts","sourceRoot":"","sources":["../../src/tools/generate-tests.test.ts"],"names":[],"mappings":""}