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,118 @@
1
+ // tools/generate-tests/generators/database/ts-scaffold.ts
2
+ // Builds TypeScript/Vitest database test scaffold content.
3
+ export function buildTsDatabaseTest(title, db, orm, cache, search) {
4
+ const cacheSection = cache
5
+ ? `
6
+ describe('Caching (${cache})', () => {
7
+ it('returns cached value on cache hit', async () => {
8
+ // await cache.set('user:1', { name: 'Test' }, { ttl: 60 });
9
+ // const result = await cache.get('user:1');
10
+ // expect(result).toMatchObject({ name: 'Test' });
11
+ expect(true).toBe(true);
12
+ });
13
+
14
+ it('returns null on cache miss', async () => {
15
+ expect(true).toBe(true);
16
+ });
17
+
18
+ it('expires entry after TTL', async () => {
19
+ expect(true).toBe(true);
20
+ });
21
+
22
+ it('invalidates cache on data update', async () => {
23
+ expect(true).toBe(true);
24
+ });
25
+ });
26
+ `
27
+ : '';
28
+ const searchSection = search
29
+ ? `
30
+ describe('Full-text search (${search})', () => {
31
+ it('indexes document and makes it searchable', async () => {
32
+ // await searchClient.index('products').addDocuments([{ id: 1, name: 'Widget' }]);
33
+ // const results = await searchClient.index('products').search('Widget');
34
+ // expect(results.hits).toHaveLength(1);
35
+ expect(true).toBe(true);
36
+ });
37
+
38
+ it('returns relevant results ranked by score', async () => {
39
+ expect(true).toBe(true);
40
+ });
41
+
42
+ it('supports fuzzy matching for typos', async () => {
43
+ expect(true).toBe(true);
44
+ });
45
+ });
46
+ `
47
+ : '';
48
+ const ormSection = orm
49
+ ? `
50
+ describe('Transactions and locking', () => {
51
+ it('commits transaction on success', async () => {
52
+ expect(true).toBe(true);
53
+ });
54
+
55
+ it('rolls back transaction on error', async () => {
56
+ expect(true).toBe(true);
57
+ });
58
+
59
+ it('detects optimistic locking conflict', async () => {
60
+ // Concurrent update with stale version → should throw
61
+ expect(true).toBe(true);
62
+ });
63
+ });
64
+ `
65
+ : '';
66
+ return `// Database & Data Layer tests for: ${title}
67
+ // Generated by SpecForge SDD MCP Server (SPEC-058b)
68
+ import { describe, it, expect } from 'vitest';
69
+
70
+ describe('${title} — Database Tests (${db})', () => {
71
+ describe('Migrations', () => {
72
+ it('schema migration up applies cleanly', async () => {
73
+ // await migrate.up();
74
+ // const tables = await db.query("SELECT name FROM sqlite_master WHERE type='table'");
75
+ // expect(tables).toContainEqual({ name: 'users' });
76
+ expect(true).toBe(true); // Replace with real migration assertion
77
+ });
78
+
79
+ it('schema migration down reverts cleanly', async () => {
80
+ expect(true).toBe(true);
81
+ });
82
+
83
+ it('data integrity preserved after migration', async () => {
84
+ expect(true).toBe(true);
85
+ });
86
+
87
+ it('rollback does not lose existing data', async () => {
88
+ expect(true).toBe(true);
89
+ });
90
+ });
91
+
92
+ describe('Repository / DAO — CRUD', () => {
93
+ it('creates a record and returns its id', async () => {
94
+ // const user = await repo.create({ name: 'Test', email: 'test@example.com' });
95
+ // expect(user.id).toBeDefined();
96
+ expect(true).toBe(true);
97
+ });
98
+
99
+ it('reads a record by id', async () => {
100
+ expect(true).toBe(true);
101
+ });
102
+
103
+ it('updates a record', async () => {
104
+ expect(true).toBe(true);
105
+ });
106
+
107
+ it('deletes a record', async () => {
108
+ expect(true).toBe(true);
109
+ });
110
+
111
+ it('returns null for non-existent record', async () => {
112
+ expect(true).toBe(true);
113
+ });
114
+ });
115
+ ${ormSection}${cacheSection}${searchSection}});
116
+ `;
117
+ }
118
+ //# sourceMappingURL=ts-scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-scaffold.js","sourceRoot":"","sources":["../../../../../src/tools/generate-tests/generators/database/ts-scaffold.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,2DAA2D;AAE3D,MAAM,UAAU,mBAAmB,CACjC,KAAa,EACb,EAAU,EACV,GAAY,EACZ,KAAoB,EACpB,MAAqB;IAErB,MAAM,YAAY,GAAG,KAAK;QACxB,CAAC,CAAC;uBACiB,KAAK;;;;;;;;;;;;;;;;;;;;CAoB3B;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,aAAa,GAAG,MAAM;QAC1B,CAAC,CAAC;gCAC0B,MAAM;;;;;;;;;;;;;;;;CAgBrC;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,UAAU,GAAG,GAAG;QACpB,CAAC,CAAC;;;;;;;;;;;;;;;CAeL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,uCAAuC,KAAK;;;;YAIzC,KAAK,sBAAsB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CvC,UAAU,GAAG,YAAY,GAAG,aAAa;CAC1C,CAAC;AACF,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ProjectKnowledge } from '../../../../types/index.js';
2
+ export declare function detectBroker(knowledge: ProjectKnowledge): string | null;
3
+ export declare function detectServiceMesh(knowledge: ProjectKnowledge): string | null;
4
+ export declare function isMicroservicesTestProject(knowledge: ProjectKnowledge): boolean;
5
+ //# sourceMappingURL=detectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectors.d.ts","sourceRoot":"","sources":["../../../../../src/tools/generate-tests/generators/microservices/detectors.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAanE,wBAAgB,YAAY,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAQvE;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAQ5E;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAe/E"}
@@ -0,0 +1,47 @@
1
+ // tools/generate-tests/generators/microservices/detectors.ts — SPEC-058b Section E
2
+ // Broker and service mesh detection signals and predicates for microservices test generation.
3
+ const BROKER_SIGNALS = ['kafka', 'rabbitmq', 'sqs', 'nats', 'redis-streams', 'pulsar', 'amqp'];
4
+ const MESH_SIGNALS = [
5
+ 'istio',
6
+ 'envoy',
7
+ 'linkerd',
8
+ 'kong',
9
+ 'traefik',
10
+ 'nginx-ingress',
11
+ 'api-gateway',
12
+ ];
13
+ export function detectBroker(knowledge) {
14
+ const stackLower = knowledge.stack.map((s) => s.toLowerCase());
15
+ for (const sig of BROKER_SIGNALS) {
16
+ if (stackLower.some((s) => s.includes(sig))) {
17
+ return sig;
18
+ }
19
+ }
20
+ return null;
21
+ }
22
+ export function detectServiceMesh(knowledge) {
23
+ const stackLower = knowledge.stack.map((s) => s.toLowerCase());
24
+ for (const sig of MESH_SIGNALS) {
25
+ if (stackLower.some((s) => s.includes(sig))) {
26
+ return sig;
27
+ }
28
+ }
29
+ return null;
30
+ }
31
+ export function isMicroservicesTestProject(knowledge) {
32
+ if (knowledge.architecture.primary === 'microservices') {
33
+ return true;
34
+ }
35
+ if (knowledge.architecture.secondary.some((s) => s === 'microservices')) {
36
+ return true;
37
+ }
38
+ if (detectBroker(knowledge) !== null) {
39
+ return true;
40
+ }
41
+ if (detectServiceMesh(knowledge) !== null) {
42
+ return true;
43
+ }
44
+ const backends = knowledge.apps.filter((a) => a.type === 'backend' || a.type === 'worker');
45
+ return backends.length > 1;
46
+ }
47
+ //# sourceMappingURL=detectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectors.js","sourceRoot":"","sources":["../../../../../src/tools/generate-tests/generators/microservices/detectors.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,8FAA8F;AAI9F,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC/F,MAAM,YAAY,GAAG;IACnB,OAAO;IACP,OAAO;IACP,SAAS;IACT,MAAM;IACN,SAAS;IACT,eAAe;IACf,aAAa;CACd,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,SAA2B;IACtD,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/D,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5C,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAA2B;IAC3D,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/D,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5C,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,SAA2B;IACpE,IAAI,SAAS,CAAC,YAAY,CAAC,OAAO,KAAK,eAAe,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,eAAe,CAAC,EAAE,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,YAAY,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,iBAAiB,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAC3F,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { TestFile, ProjectKnowledge } from '../../../../types/index.js';
2
+ export { detectBroker, detectServiceMesh, isMicroservicesTestProject } from './detectors.js';
3
+ export { generateMicroservicesTestDefs } from './test-defs.js';
4
+ export declare function generateMicroservicesTestFiles(spec: {
5
+ title: string;
6
+ slug: string;
7
+ }, testDir: string, framework: string, language: string, testExt: string, autoGenerate: boolean, knowledge: ProjectKnowledge): TestFile[];
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/tools/generate-tests/generators/microservices/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAK7E,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AAE/D,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACrC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,OAAO,EACrB,SAAS,EAAE,gBAAgB,GAC1B,QAAQ,EAAE,CAkBZ"}
@@ -0,0 +1,26 @@
1
+ // tools/generate-tests/generators/microservices/index.ts — SPEC-058b Section E
2
+ // Public API for the microservices test generator. Re-exports all public symbols.
3
+ import { detectBroker, detectServiceMesh } from './detectors.js';
4
+ import { buildTsMicroservicesTest } from './ts-scaffold.js';
5
+ import { buildPythonMicroservicesTest } from './python-scaffold.js';
6
+ export { detectBroker, detectServiceMesh, isMicroservicesTestProject } from './detectors.js';
7
+ export { generateMicroservicesTestDefs } from './test-defs.js';
8
+ export function generateMicroservicesTestFiles(spec, testDir, framework, language, testExt, autoGenerate, knowledge) {
9
+ const broker = detectBroker(knowledge);
10
+ const mesh = detectServiceMesh(knowledge);
11
+ const isPython = language === 'python';
12
+ const ext = isPython ? 'py' : testExt;
13
+ const fw = isPython ? 'pytest' : framework;
14
+ const content = isPython
15
+ ? buildPythonMicroservicesTest(spec.title, broker, mesh)
16
+ : buildTsMicroservicesTest(spec.title, broker, mesh);
17
+ return [
18
+ {
19
+ path: `${testDir}/microservices/${spec.slug}.microservices.test.${ext}`,
20
+ framework: fw,
21
+ content,
22
+ ready: autoGenerate,
23
+ },
24
+ ];
25
+ }
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/tools/generate-tests/generators/microservices/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,kFAAkF;AAGlF,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AAE/D,MAAM,UAAU,8BAA8B,CAC5C,IAAqC,EACrC,OAAe,EACf,SAAiB,EACjB,QAAgB,EAChB,OAAe,EACf,YAAqB,EACrB,SAA2B;IAE3B,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,iBAAiB,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,4BAA4B,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;QACxD,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAEvD,OAAO;QACL;YACE,IAAI,EAAE,GAAG,OAAO,kBAAkB,IAAI,CAAC,IAAI,uBAAuB,GAAG,EAAE;YACvE,SAAS,EAAE,EAAE;YACb,OAAO;YACP,KAAK,EAAE,YAAY;SACpB;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function buildPythonMicroservicesTest(title: string, broker: string | null, mesh: string | null): 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/microservices/python-scaffold.ts"],"names":[],"mappings":"AAGA,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,IAAI,EAAE,MAAM,GAAG,IAAI,GAClB,MAAM,CAgGR"}
@@ -0,0 +1,98 @@
1
+ // tools/generate-tests/generators/microservices/python-scaffold.ts — SPEC-058b Section E
2
+ // Builds Python/pytest scaffold content for microservices tests.
3
+ export function buildPythonMicroservicesTest(title, broker, mesh) {
4
+ const cls = title.replace(/[^a-zA-Z0-9]/g, '');
5
+ const brokerSection = broker
6
+ ? `
7
+ def test_message_delivery_guarantee(self) -> None:
8
+ """Messages are delivered to consumers with at-least-once guarantee."""
9
+ # TODO: producer.send('orders', {'id': 1})
10
+ # msg = consumer.poll(timeout=5.0)
11
+ # assert msg.value == {'id': 1}
12
+ pass
13
+
14
+ def test_dead_letter_queue_routing(self) -> None:
15
+ """Failed messages are routed to the dead letter queue."""
16
+ pass
17
+
18
+ def test_message_ordering_within_partition(self) -> None:
19
+ """Messages within same partition maintain ordering."""
20
+ pass
21
+
22
+ def test_consumer_group_rebalancing(self) -> None:
23
+ """Consumer group rebalancing does not lose messages."""
24
+ pass
25
+ `
26
+ : '';
27
+ const meshSection = mesh
28
+ ? `
29
+ def test_routing_rules(self) -> None:
30
+ """Traffic is routed according to configured rules."""
31
+ pass
32
+
33
+ def test_mtls_verification(self) -> None:
34
+ """mTLS certificates are verified between services."""
35
+ pass
36
+
37
+ def test_traffic_splitting(self) -> None:
38
+ """Traffic is split correctly between service versions."""
39
+ pass
40
+ `
41
+ : '';
42
+ return `"""Microservices & Distributed Systems tests for: ${title}
43
+ Generated by SpecForge SDD MCP Server (SPEC-058b).
44
+ """
45
+ import pytest
46
+
47
+
48
+ class Test${cls}Microservices:
49
+ """Microservices test suite for ${title}."""
50
+
51
+ def test_consumer_contract_matches_provider(self) -> None:
52
+ """Consumer-driven contract matches the provider API."""
53
+ # TODO: pact = Pact('consumer', 'provider')
54
+ # pact.given('user exists').upon_receiving('get user')
55
+ # .with_request('GET', '/api/users/1')
56
+ # .will_respond_with(200, body={'id': 1})
57
+ pass
58
+
59
+ def test_circuit_breaker_opens_on_failures(self) -> None:
60
+ """Circuit breaker opens after consecutive failures."""
61
+ pass
62
+
63
+ def test_circuit_breaker_half_open_transition(self) -> None:
64
+ """Circuit transitions from open to half-open after timeout."""
65
+ pass
66
+
67
+ def test_circuit_breaker_closes_on_recovery(self) -> None:
68
+ """Circuit closes after successful request in half-open state."""
69
+ pass
70
+
71
+ def test_retry_exponential_backoff(self) -> None:
72
+ """Retries use exponential backoff with jitter."""
73
+ pass
74
+
75
+ def test_retry_respects_max_limit(self) -> None:
76
+ """Retry stops after max attempts."""
77
+ pass
78
+
79
+ def test_idempotency_key_prevents_duplicates(self) -> None:
80
+ """Idempotency key prevents duplicate processing on retry."""
81
+ pass
82
+
83
+ def test_healthz_returns_200(self) -> None:
84
+ """GET /healthz returns 200 when service is alive."""
85
+ # TODO: response = client.get('/healthz')
86
+ # assert response.status_code == 200
87
+ pass
88
+
89
+ def test_readyz_returns_200_when_ready(self) -> None:
90
+ """GET /readyz returns 200 when all dependencies are ready."""
91
+ pass
92
+
93
+ def test_readyz_returns_503_when_dependency_down(self) -> None:
94
+ """GET /readyz returns 503 when a dependency is unavailable."""
95
+ pass
96
+ ${brokerSection}${meshSection}`;
97
+ }
98
+ //# sourceMappingURL=python-scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python-scaffold.js","sourceRoot":"","sources":["../../../../../src/tools/generate-tests/generators/microservices/python-scaffold.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,iEAAiE;AAEjE,MAAM,UAAU,4BAA4B,CAC1C,KAAa,EACb,MAAqB,EACrB,IAAmB;IAEnB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,MAAM;QAC1B,CAAC,CAAC;;;;;;;;;;;;;;;;;;;CAmBL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,WAAW,GAAG,IAAI;QACtB,CAAC,CAAC;;;;;;;;;;;;CAYL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,qDAAqD,KAAK;;;;;;YAMvD,GAAG;sCACuB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CzC,aAAa,GAAG,WAAW,EAAE,CAAC;AAChC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { TestDefinition, ProjectKnowledge } from '../../../../types/index.js';
2
+ export declare function generateMicroservicesTestDefs(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/microservices/test-defs.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGnF,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,gBAAgB,GAC1B,cAAc,EAAE,CA+DlB"}
@@ -0,0 +1,61 @@
1
+ // tools/generate-tests/generators/microservices/test-defs.ts — SPEC-058b Section E
2
+ // Generates TestDefinition array for microservices test scenarios.
3
+ import { detectBroker, detectServiceMesh } from './detectors.js';
4
+ export function generateMicroservicesTestDefs(title, testDir, _testExt, knowledge) {
5
+ const defs = [
6
+ {
7
+ name: `${title} — contract testing: inter-service Pact verification`,
8
+ type: 'integration',
9
+ file: `${testDir}/microservices/`,
10
+ description: 'Consumer-driven contract tests verify API compatibility between services',
11
+ priority: 'critical',
12
+ automatable: true,
13
+ },
14
+ {
15
+ name: `${title} — circuit breaker: open/half-open/closed state transitions`,
16
+ type: 'integration',
17
+ file: `${testDir}/microservices/`,
18
+ description: 'Verify circuit breaker opens on failures, transitions to half-open, and closes on recovery',
19
+ priority: 'high',
20
+ automatable: true,
21
+ },
22
+ {
23
+ name: `${title} — retry with backoff: exponential backoff and idempotency`,
24
+ type: 'integration',
25
+ file: `${testDir}/microservices/`,
26
+ description: 'Verify retry logic uses exponential backoff with jitter and respects idempotency keys',
27
+ priority: 'high',
28
+ automatable: true,
29
+ },
30
+ {
31
+ name: `${title} — health checks: liveness and readiness probes`,
32
+ type: 'integration',
33
+ file: `${testDir}/microservices/`,
34
+ description: 'Verify /healthz, /readyz, and startup probes return correct status codes',
35
+ priority: 'critical',
36
+ automatable: true,
37
+ },
38
+ ];
39
+ if (detectBroker(knowledge) !== null) {
40
+ defs.push({
41
+ name: `${title} — message broker: delivery guarantee and DLQ handling`,
42
+ type: 'integration',
43
+ file: `${testDir}/microservices/`,
44
+ description: 'Verify message delivery, ordering, dead letter queue handling, and consumer group rebalancing',
45
+ priority: 'high',
46
+ automatable: true,
47
+ });
48
+ }
49
+ if (detectServiceMesh(knowledge) !== null) {
50
+ defs.push({
51
+ name: `${title} — service mesh: routing rules and mTLS verification`,
52
+ type: 'integration',
53
+ file: `${testDir}/microservices/`,
54
+ description: 'Verify routing rules, mTLS certificate verification, and traffic splitting configuration',
55
+ priority: 'medium',
56
+ automatable: true,
57
+ });
58
+ }
59
+ return defs;
60
+ }
61
+ //# sourceMappingURL=test-defs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-defs.js","sourceRoot":"","sources":["../../../../../src/tools/generate-tests/generators/microservices/test-defs.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,mEAAmE;AAGnE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEjE,MAAM,UAAU,6BAA6B,CAC3C,KAAa,EACb,OAAe,EACf,QAAgB,EAChB,SAA2B;IAE3B,MAAM,IAAI,GAAqB;QAC7B;YACE,IAAI,EAAE,GAAG,KAAK,sDAAsD;YACpE,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,OAAO,iBAAiB;YACjC,WAAW,EAAE,0EAA0E;YACvF,QAAQ,EAAE,UAAU;YACpB,WAAW,EAAE,IAAI;SAClB;QACD;YACE,IAAI,EAAE,GAAG,KAAK,6DAA6D;YAC3E,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,OAAO,iBAAiB;YACjC,WAAW,EACT,4FAA4F;YAC9F,QAAQ,EAAE,MAAM;YAChB,WAAW,EAAE,IAAI;SAClB;QACD;YACE,IAAI,EAAE,GAAG,KAAK,4DAA4D;YAC1E,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,OAAO,iBAAiB;YACjC,WAAW,EACT,uFAAuF;YACzF,QAAQ,EAAE,MAAM;YAChB,WAAW,EAAE,IAAI;SAClB;QACD;YACE,IAAI,EAAE,GAAG,KAAK,iDAAiD;YAC/D,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,OAAO,iBAAiB;YACjC,WAAW,EAAE,0EAA0E;YACvF,QAAQ,EAAE,UAAU;YACpB,WAAW,EAAE,IAAI;SAClB;KACF,CAAC;IAEF,IAAI,YAAY,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,GAAG,KAAK,wDAAwD;YACtE,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,OAAO,iBAAiB;YACjC,WAAW,EACT,+FAA+F;YACjG,QAAQ,EAAE,MAAM;YAChB,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,iBAAiB,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,GAAG,KAAK,sDAAsD;YACpE,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,GAAG,OAAO,iBAAiB;YACjC,WAAW,EACT,0FAA0F;YAC5F,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function buildTsMicroservicesTest(title: string, broker: string | null, mesh: string | null): 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/microservices/ts-scaffold.ts"],"names":[],"mappings":"AAGA,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,IAAI,EAAE,MAAM,GAAG,IAAI,GAClB,MAAM,CAyHR"}
@@ -0,0 +1,123 @@
1
+ // tools/generate-tests/generators/microservices/ts-scaffold.ts — SPEC-058b Section E
2
+ // Builds TypeScript/vitest scaffold content for microservices tests.
3
+ export function buildTsMicroservicesTest(title, broker, mesh) {
4
+ const brokerSection = broker
5
+ ? `
6
+ describe('Message broker (${broker})', () => {
7
+ it('guarantees message delivery to consumer', async () => {
8
+ // const producer = createProducer({ broker: '${broker}' });
9
+ // await producer.send({ topic: 'orders', value: { id: 1 } });
10
+ // const received = await consumer.waitForMessage('orders', 5000);
11
+ // expect(received.value).toMatchObject({ id: 1 });
12
+ expect(true).toBe(true); // Replace with real broker assertion
13
+ });
14
+
15
+ it('routes failed messages to dead letter queue', async () => {
16
+ // Simulate processing failure → verify message lands in DLQ
17
+ expect(true).toBe(true);
18
+ });
19
+
20
+ it('preserves message ordering within partition', async () => {
21
+ expect(true).toBe(true);
22
+ });
23
+
24
+ it('handles consumer group rebalancing gracefully', async () => {
25
+ expect(true).toBe(true);
26
+ });
27
+ });
28
+ `
29
+ : '';
30
+ const meshSection = mesh
31
+ ? `
32
+ describe('Service mesh (${mesh})', () => {
33
+ it('routes traffic according to configured rules', async () => {
34
+ expect(true).toBe(true);
35
+ });
36
+
37
+ it('verifies mTLS certificates between services', async () => {
38
+ expect(true).toBe(true);
39
+ });
40
+
41
+ it('splits traffic correctly between versions', async () => {
42
+ expect(true).toBe(true);
43
+ });
44
+ });
45
+ `
46
+ : '';
47
+ return `// Microservices & Distributed Systems tests for: ${title}
48
+ // Generated by SpecForge SDD MCP Server (SPEC-058b)
49
+ import { describe, it, expect } from 'vitest';
50
+
51
+ describe('${title} — Microservices Tests', () => {
52
+ describe('Contract testing (Pact)', () => {
53
+ it('consumer contract matches provider API', async () => {
54
+ // const interaction = new PactInteraction()
55
+ // .uponReceiving('a request for user')
56
+ // .withRequest({ method: 'GET', path: '/api/users/1' })
57
+ // .willRespondWith({ status: 200, body: { id: 1, name: 'Test' } });
58
+ // await provider.verify(interaction);
59
+ expect(true).toBe(true); // Replace with real Pact assertion
60
+ });
61
+ });
62
+
63
+ describe('Circuit breaker', () => {
64
+ it('opens after consecutive failures', async () => {
65
+ // Simulate 5 failures → verify circuit is open
66
+ expect(true).toBe(true);
67
+ });
68
+
69
+ it('transitions from open to half-open after timeout', async () => {
70
+ expect(true).toBe(true);
71
+ });
72
+
73
+ it('closes after successful request in half-open state', async () => {
74
+ expect(true).toBe(true);
75
+ });
76
+
77
+ it('returns fallback response when circuit is open', async () => {
78
+ expect(true).toBe(true);
79
+ });
80
+ });
81
+
82
+ describe('Retry with backoff', () => {
83
+ it('retries with exponential backoff on transient failure', async () => {
84
+ // Verify delays: 100ms, 200ms, 400ms (exponential)
85
+ expect(true).toBe(true);
86
+ });
87
+
88
+ it('respects max retry limit', async () => {
89
+ expect(true).toBe(true);
90
+ });
91
+
92
+ it('applies jitter to avoid thundering herd', async () => {
93
+ expect(true).toBe(true);
94
+ });
95
+
96
+ it('uses idempotency key to prevent duplicate processing', async () => {
97
+ expect(true).toBe(true);
98
+ });
99
+ });
100
+
101
+ describe('Health check endpoints', () => {
102
+ it('GET /healthz returns 200 when service is alive', async () => {
103
+ // const res = await request(app).get('/healthz');
104
+ // expect(res.status).toBe(200);
105
+ expect(true).toBe(true);
106
+ });
107
+
108
+ it('GET /readyz returns 200 when dependencies are ready', async () => {
109
+ expect(true).toBe(true);
110
+ });
111
+
112
+ it('GET /readyz returns 503 when a dependency is down', async () => {
113
+ expect(true).toBe(true);
114
+ });
115
+
116
+ it('startup probe succeeds within timeout', async () => {
117
+ expect(true).toBe(true);
118
+ });
119
+ });
120
+ ${brokerSection}${meshSection}});
121
+ `;
122
+ }
123
+ //# sourceMappingURL=ts-scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-scaffold.js","sourceRoot":"","sources":["../../../../../src/tools/generate-tests/generators/microservices/ts-scaffold.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,qEAAqE;AAErE,MAAM,UAAU,wBAAwB,CACtC,KAAa,EACb,MAAqB,EACrB,IAAmB;IAEnB,MAAM,aAAa,GAAG,MAAM;QAC1B,CAAC,CAAC;8BACwB,MAAM;;sDAEkB,MAAM;;;;;;;;;;;;;;;;;;;;CAoB3D;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,WAAW,GAAG,IAAI;QACtB,CAAC,CAAC;4BACsB,IAAI;;;;;;;;;;;;;CAa/B;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,qDAAqD,KAAK;;;;YAIvD,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqEf,aAAa,GAAG,WAAW;CAC5B,CAAC;AACF,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ProjectKnowledge } from '../../../../types/index.js';
2
+ export declare const AUTH_SIGNALS: string[];
3
+ export declare const UPLOAD_SIGNALS: string[];
4
+ export declare function detectAuth(knowledge: ProjectKnowledge): string | null;
5
+ export declare function detectFileUpload(knowledge: ProjectKnowledge): string | null;
6
+ export declare function hasPublicApi(knowledge: ProjectKnowledge): boolean;
7
+ export declare function isSecurityTestProject(knowledge: ProjectKnowledge): boolean;
8
+ //# sourceMappingURL=detectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectors.d.ts","sourceRoot":"","sources":["../../../../../src/tools/generate-tests/generators/security/detectors.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,eAAO,MAAM,YAAY,UAcxB,CAAC;AAEF,eAAO,MAAM,cAAc,UAS1B,CAAC;AAEF,wBAAgB,UAAU,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAQrE;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAQ3E;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAKjE;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAQ1E"}
@@ -0,0 +1,61 @@
1
+ // security/detectors.ts — SPEC-058b Section G
2
+ // Signal constants and detector functions for auth, file upload, and API presence.
3
+ export const AUTH_SIGNALS = [
4
+ 'jwt',
5
+ 'oauth',
6
+ 'passport',
7
+ 'keycloak',
8
+ 'auth0',
9
+ 'clerk',
10
+ 'supabase',
11
+ 'session',
12
+ 'cookie-session',
13
+ 'express-session',
14
+ 'next-auth',
15
+ 'lucia',
16
+ 'better-auth',
17
+ ];
18
+ export const UPLOAD_SIGNALS = [
19
+ 'multer',
20
+ 'formidable',
21
+ 'busboy',
22
+ 'sharp',
23
+ 'jimp',
24
+ 'imagemagick',
25
+ 'file-upload',
26
+ 'multipart',
27
+ ];
28
+ export function detectAuth(knowledge) {
29
+ const stackLower = knowledge.stack.map((s) => s.toLowerCase());
30
+ for (const sig of AUTH_SIGNALS) {
31
+ if (stackLower.some((s) => s.includes(sig))) {
32
+ return sig;
33
+ }
34
+ }
35
+ return null;
36
+ }
37
+ export function detectFileUpload(knowledge) {
38
+ const stackLower = knowledge.stack.map((s) => s.toLowerCase());
39
+ for (const sig of UPLOAD_SIGNALS) {
40
+ if (stackLower.some((s) => s.includes(sig))) {
41
+ return sig;
42
+ }
43
+ }
44
+ return null;
45
+ }
46
+ export function hasPublicApi(knowledge) {
47
+ if (knowledge.apiContracts.length > 0) {
48
+ return true;
49
+ }
50
+ return knowledge.apps.some((a) => a.type === 'backend');
51
+ }
52
+ export function isSecurityTestProject(knowledge) {
53
+ if (detectAuth(knowledge) !== null) {
54
+ return true;
55
+ }
56
+ if (hasPublicApi(knowledge)) {
57
+ return true;
58
+ }
59
+ return knowledge.apps.some((a) => a.type === 'backend' || a.type === 'frontend');
60
+ }
61
+ //# sourceMappingURL=detectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectors.js","sourceRoot":"","sources":["../../../../../src/tools/generate-tests/generators/security/detectors.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,mFAAmF;AAInF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,KAAK;IACL,OAAO;IACP,UAAU;IACV,UAAU;IACV,OAAO;IACP,OAAO;IACP,UAAU;IACV,SAAS;IACT,gBAAgB;IAChB,iBAAiB;IACjB,WAAW;IACX,OAAO;IACP,aAAa;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,QAAQ;IACR,YAAY;IACZ,QAAQ;IACR,OAAO;IACP,MAAM;IACN,aAAa;IACb,aAAa;IACb,WAAW;CACZ,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,SAA2B;IACpD,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/D,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5C,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,SAA2B;IAC1D,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/D,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5C,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAA2B;IACtD,IAAI,SAAS,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,SAA2B;IAC/D,IAAI,UAAU,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;AACnF,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { TestFile, ProjectKnowledge } from '../../../../types/index.js';
2
+ export { detectAuth, detectFileUpload, hasPublicApi, isSecurityTestProject } from './detectors.js';
3
+ export { generateSecurityTestDefs } from './test-defs.js';
4
+ export declare function generateSecurityTestFiles(spec: {
5
+ title: string;
6
+ slug: string;
7
+ }, testDir: string, framework: string, language: string, testExt: string, autoGenerate: boolean, knowledge: ProjectKnowledge): TestFile[];
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/tools/generate-tests/generators/security/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAK7E,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACnG,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,wBAAgB,yBAAyB,CACvC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACrC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,OAAO,EACrB,SAAS,EAAE,gBAAgB,GAC1B,QAAQ,EAAE,CAmBZ"}