@planu/cli 1.10.0 → 1.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 (323) hide show
  1. package/dist/config/license-plans.json +32 -2
  2. package/dist/engine/api-compat/compatibility-checker.d.ts +4 -0
  3. package/dist/engine/api-compat/compatibility-checker.d.ts.map +1 -0
  4. package/dist/engine/api-compat/compatibility-checker.js +118 -0
  5. package/dist/engine/api-compat/compatibility-checker.js.map +1 -0
  6. package/dist/engine/checkpoint/checkpoint-manager.d.ts +22 -0
  7. package/dist/engine/checkpoint/checkpoint-manager.d.ts.map +1 -0
  8. package/dist/engine/checkpoint/checkpoint-manager.js +76 -0
  9. package/dist/engine/checkpoint/checkpoint-manager.js.map +1 -0
  10. package/dist/engine/checkpoint/policy-engine.d.ts +10 -0
  11. package/dist/engine/checkpoint/policy-engine.d.ts.map +1 -0
  12. package/dist/engine/checkpoint/policy-engine.js +87 -0
  13. package/dist/engine/checkpoint/policy-engine.js.map +1 -0
  14. package/dist/engine/compliance/auto-remediator.d.ts +9 -0
  15. package/dist/engine/compliance/auto-remediator.d.ts.map +1 -0
  16. package/dist/engine/compliance/auto-remediator.js +118 -0
  17. package/dist/engine/compliance/auto-remediator.js.map +1 -0
  18. package/dist/engine/compliance/evidence-builder.d.ts +19 -0
  19. package/dist/engine/compliance/evidence-builder.d.ts.map +1 -0
  20. package/dist/engine/compliance/evidence-builder.js +36 -0
  21. package/dist/engine/compliance/evidence-builder.js.map +1 -0
  22. package/dist/engine/compliance/framework-catalog.d.ts +15 -0
  23. package/dist/engine/compliance/framework-catalog.d.ts.map +1 -0
  24. package/dist/engine/compliance/framework-catalog.js +134 -0
  25. package/dist/engine/compliance/framework-catalog.js.map +1 -0
  26. package/dist/engine/compliance/gap-analyzer.d.ts +11 -0
  27. package/dist/engine/compliance/gap-analyzer.d.ts.map +1 -0
  28. package/dist/engine/compliance/gap-analyzer.js +39 -0
  29. package/dist/engine/compliance/gap-analyzer.js.map +1 -0
  30. package/dist/engine/context-profile/profile-catalog.d.ts +5 -0
  31. package/dist/engine/context-profile/profile-catalog.d.ts.map +1 -0
  32. package/dist/engine/context-profile/profile-catalog.js +145 -0
  33. package/dist/engine/context-profile/profile-catalog.js.map +1 -0
  34. package/dist/engine/critical-path/path-analyzer.d.ts +3 -0
  35. package/dist/engine/critical-path/path-analyzer.d.ts.map +1 -0
  36. package/dist/engine/critical-path/path-analyzer.js +145 -0
  37. package/dist/engine/critical-path/path-analyzer.js.map +1 -0
  38. package/dist/engine/distribution/cost-estimator.d.ts +8 -0
  39. package/dist/engine/distribution/cost-estimator.d.ts.map +1 -0
  40. package/dist/engine/distribution/cost-estimator.js +113 -0
  41. package/dist/engine/distribution/cost-estimator.js.map +1 -0
  42. package/dist/engine/distribution/diagram-generator.d.ts +12 -0
  43. package/dist/engine/distribution/diagram-generator.d.ts.map +1 -0
  44. package/dist/engine/distribution/diagram-generator.js +59 -0
  45. package/dist/engine/distribution/diagram-generator.js.map +1 -0
  46. package/dist/engine/distribution/readiness-analyzer.d.ts +4 -0
  47. package/dist/engine/distribution/readiness-analyzer.d.ts.map +1 -0
  48. package/dist/engine/distribution/readiness-analyzer.js +61 -0
  49. package/dist/engine/distribution/readiness-analyzer.js.map +1 -0
  50. package/dist/engine/distribution/runbook-generator.d.ts +7 -0
  51. package/dist/engine/distribution/runbook-generator.d.ts.map +1 -0
  52. package/dist/engine/distribution/runbook-generator.js +42 -0
  53. package/dist/engine/distribution/runbook-generator.js.map +1 -0
  54. package/dist/engine/drift/violation-resolver.d.ts +9 -0
  55. package/dist/engine/drift/violation-resolver.d.ts.map +1 -0
  56. package/dist/engine/drift/violation-resolver.js +128 -0
  57. package/dist/engine/drift/violation-resolver.js.map +1 -0
  58. package/dist/engine/ears/criterion-scorer.d.ts +7 -0
  59. package/dist/engine/ears/criterion-scorer.d.ts.map +1 -0
  60. package/dist/engine/ears/criterion-scorer.js +87 -0
  61. package/dist/engine/ears/criterion-scorer.js.map +1 -0
  62. package/dist/engine/ears/pattern-matcher.d.ts +5 -0
  63. package/dist/engine/ears/pattern-matcher.d.ts.map +1 -0
  64. package/dist/engine/ears/pattern-matcher.js +48 -0
  65. package/dist/engine/ears/pattern-matcher.js.map +1 -0
  66. package/dist/engine/ears/rewriter.d.ts +7 -0
  67. package/dist/engine/ears/rewriter.d.ts.map +1 -0
  68. package/dist/engine/ears/rewriter.js +45 -0
  69. package/dist/engine/ears/rewriter.js.map +1 -0
  70. package/dist/engine/ears/spec-linter.d.ts +7 -0
  71. package/dist/engine/ears/spec-linter.d.ts.map +1 -0
  72. package/dist/engine/ears/spec-linter.js +127 -0
  73. package/dist/engine/ears/spec-linter.js.map +1 -0
  74. package/dist/engine/health/auto-fixer.d.ts +7 -0
  75. package/dist/engine/health/auto-fixer.d.ts.map +1 -0
  76. package/dist/engine/health/auto-fixer.js +130 -0
  77. package/dist/engine/health/auto-fixer.js.map +1 -0
  78. package/dist/engine/mcp-catalog/catalog-advisor.d.ts +3 -0
  79. package/dist/engine/mcp-catalog/catalog-advisor.d.ts.map +1 -0
  80. package/dist/engine/mcp-catalog/catalog-advisor.js +180 -0
  81. package/dist/engine/mcp-catalog/catalog-advisor.js.map +1 -0
  82. package/dist/engine/mcp-hub/adapter-registry.d.ts +23 -0
  83. package/dist/engine/mcp-hub/adapter-registry.d.ts.map +1 -0
  84. package/dist/engine/mcp-hub/adapter-registry.js +19 -0
  85. package/dist/engine/mcp-hub/adapter-registry.js.map +1 -0
  86. package/dist/engine/mcp-hub/adapters/github-adapter.d.ts +4 -0
  87. package/dist/engine/mcp-hub/adapters/github-adapter.d.ts.map +1 -0
  88. package/dist/engine/mcp-hub/adapters/github-adapter.js +44 -0
  89. package/dist/engine/mcp-hub/adapters/github-adapter.js.map +1 -0
  90. package/dist/engine/mcp-hub/adapters/supabase-adapter.d.ts +4 -0
  91. package/dist/engine/mcp-hub/adapters/supabase-adapter.d.ts.map +1 -0
  92. package/dist/engine/mcp-hub/adapters/supabase-adapter.js +41 -0
  93. package/dist/engine/mcp-hub/adapters/supabase-adapter.js.map +1 -0
  94. package/dist/engine/mcp-hub/event-router.d.ts +19 -0
  95. package/dist/engine/mcp-hub/event-router.d.ts.map +1 -0
  96. package/dist/engine/mcp-hub/event-router.js +47 -0
  97. package/dist/engine/mcp-hub/event-router.js.map +1 -0
  98. package/dist/engine/productivity/calibration-engine.d.ts +17 -0
  99. package/dist/engine/productivity/calibration-engine.d.ts.map +1 -0
  100. package/dist/engine/productivity/calibration-engine.js +49 -0
  101. package/dist/engine/productivity/calibration-engine.js.map +1 -0
  102. package/dist/engine/productivity/time-tracker.d.ts +6 -0
  103. package/dist/engine/productivity/time-tracker.d.ts.map +1 -0
  104. package/dist/engine/productivity/time-tracker.js +28 -0
  105. package/dist/engine/productivity/time-tracker.js.map +1 -0
  106. package/dist/engine/productivity/vibe-tax-calculator.d.ts +14 -0
  107. package/dist/engine/productivity/vibe-tax-calculator.d.ts.map +1 -0
  108. package/dist/engine/productivity/vibe-tax-calculator.js +63 -0
  109. package/dist/engine/productivity/vibe-tax-calculator.js.map +1 -0
  110. package/dist/engine/quality-gates/gate-catalog.d.ts +6 -0
  111. package/dist/engine/quality-gates/gate-catalog.d.ts.map +1 -0
  112. package/dist/engine/quality-gates/gate-catalog.js +351 -0
  113. package/dist/engine/quality-gates/gate-catalog.js.map +1 -0
  114. package/dist/engine/quality-gates/gate-evaluator.d.ts +3 -0
  115. package/dist/engine/quality-gates/gate-evaluator.d.ts.map +1 -0
  116. package/dist/engine/quality-gates/gate-evaluator.js +25 -0
  117. package/dist/engine/quality-gates/gate-evaluator.js.map +1 -0
  118. package/dist/engine/quality-gates/gate-injector.d.ts +20 -0
  119. package/dist/engine/quality-gates/gate-injector.d.ts.map +1 -0
  120. package/dist/engine/quality-gates/gate-injector.js +75 -0
  121. package/dist/engine/quality-gates/gate-injector.js.map +1 -0
  122. package/dist/engine/similar-problems/similarity-finder.d.ts +3 -0
  123. package/dist/engine/similar-problems/similarity-finder.d.ts.map +1 -0
  124. package/dist/engine/similar-problems/similarity-finder.js +144 -0
  125. package/dist/engine/similar-problems/similarity-finder.js.map +1 -0
  126. package/dist/engine/sync/asana-puller.d.ts +9 -0
  127. package/dist/engine/sync/asana-puller.d.ts.map +1 -0
  128. package/dist/engine/sync/asana-puller.js +91 -0
  129. package/dist/engine/sync/asana-puller.js.map +1 -0
  130. package/dist/engine/sync/conflict-resolver.d.ts +17 -0
  131. package/dist/engine/sync/conflict-resolver.d.ts.map +1 -0
  132. package/dist/engine/sync/conflict-resolver.js +58 -0
  133. package/dist/engine/sync/conflict-resolver.js.map +1 -0
  134. package/dist/engine/sync/monday-puller.d.ts +9 -0
  135. package/dist/engine/sync/monday-puller.d.ts.map +1 -0
  136. package/dist/engine/sync/monday-puller.js +110 -0
  137. package/dist/engine/sync/monday-puller.js.map +1 -0
  138. package/dist/engine/sync/notion-puller.d.ts +15 -0
  139. package/dist/engine/sync/notion-puller.d.ts.map +1 -0
  140. package/dist/engine/sync/notion-puller.js +101 -0
  141. package/dist/engine/sync/notion-puller.js.map +1 -0
  142. package/dist/engine/verifier/code-scanner.d.ts +8 -0
  143. package/dist/engine/verifier/code-scanner.d.ts.map +1 -0
  144. package/dist/engine/verifier/code-scanner.js +73 -0
  145. package/dist/engine/verifier/code-scanner.js.map +1 -0
  146. package/dist/engine/verifier/compliance-scorer.d.ts +17 -0
  147. package/dist/engine/verifier/compliance-scorer.d.ts.map +1 -0
  148. package/dist/engine/verifier/compliance-scorer.js +131 -0
  149. package/dist/engine/verifier/compliance-scorer.js.map +1 -0
  150. package/dist/engine/verifier/criterion-matcher.d.ts +15 -0
  151. package/dist/engine/verifier/criterion-matcher.d.ts.map +1 -0
  152. package/dist/engine/verifier/criterion-matcher.js +210 -0
  153. package/dist/engine/verifier/criterion-matcher.js.map +1 -0
  154. package/dist/index.js +24 -0
  155. package/dist/index.js.map +1 -1
  156. package/dist/storage/compliance-audit-store.d.ts +12 -0
  157. package/dist/storage/compliance-audit-store.d.ts.map +1 -0
  158. package/dist/storage/compliance-audit-store.js +40 -0
  159. package/dist/storage/compliance-audit-store.js.map +1 -0
  160. package/dist/storage/compliance-score-store.d.ts +16 -0
  161. package/dist/storage/compliance-score-store.d.ts.map +1 -0
  162. package/dist/storage/compliance-score-store.js +30 -0
  163. package/dist/storage/compliance-score-store.js.map +1 -0
  164. package/dist/storage/context-profile-store.d.ts +14 -0
  165. package/dist/storage/context-profile-store.d.ts.map +1 -0
  166. package/dist/storage/context-profile-store.js +34 -0
  167. package/dist/storage/context-profile-store.js.map +1 -0
  168. package/dist/storage/mcp-hub-store.d.ts +9 -0
  169. package/dist/storage/mcp-hub-store.d.ts.map +1 -0
  170. package/dist/storage/mcp-hub-store.js +28 -0
  171. package/dist/storage/mcp-hub-store.js.map +1 -0
  172. package/dist/storage/time-tracking-store.d.ts +6 -0
  173. package/dist/storage/time-tracking-store.d.ts.map +1 -0
  174. package/dist/storage/time-tracking-store.js +34 -0
  175. package/dist/storage/time-tracking-store.js.map +1 -0
  176. package/dist/storage/workflow-checkpoint-store.d.ts +16 -0
  177. package/dist/storage/workflow-checkpoint-store.d.ts.map +1 -0
  178. package/dist/storage/workflow-checkpoint-store.js +71 -0
  179. package/dist/storage/workflow-checkpoint-store.js.map +1 -0
  180. package/dist/tools/checkpoint/approve-checkpoint-handler.d.ts +3 -0
  181. package/dist/tools/checkpoint/approve-checkpoint-handler.d.ts.map +1 -0
  182. package/dist/tools/checkpoint/approve-checkpoint-handler.js +32 -0
  183. package/dist/tools/checkpoint/approve-checkpoint-handler.js.map +1 -0
  184. package/dist/tools/checkpoint/configure-policy-handler.d.ts +3 -0
  185. package/dist/tools/checkpoint/configure-policy-handler.d.ts.map +1 -0
  186. package/dist/tools/checkpoint/configure-policy-handler.js +60 -0
  187. package/dist/tools/checkpoint/configure-policy-handler.js.map +1 -0
  188. package/dist/tools/checkpoint/list-checkpoints-handler.d.ts +3 -0
  189. package/dist/tools/checkpoint/list-checkpoints-handler.d.ts.map +1 -0
  190. package/dist/tools/checkpoint/list-checkpoints-handler.js +25 -0
  191. package/dist/tools/checkpoint/list-checkpoints-handler.js.map +1 -0
  192. package/dist/tools/checkpoint/reject-checkpoint-handler.d.ts +3 -0
  193. package/dist/tools/checkpoint/reject-checkpoint-handler.d.ts.map +1 -0
  194. package/dist/tools/checkpoint/reject-checkpoint-handler.js +32 -0
  195. package/dist/tools/checkpoint/reject-checkpoint-handler.js.map +1 -0
  196. package/dist/tools/checkpoint/require-checkpoint-handler.d.ts +3 -0
  197. package/dist/tools/checkpoint/require-checkpoint-handler.d.ts.map +1 -0
  198. package/dist/tools/checkpoint/require-checkpoint-handler.js +44 -0
  199. package/dist/tools/checkpoint/require-checkpoint-handler.js.map +1 -0
  200. package/dist/tools/compliance-gap-handler.d.ts +5 -0
  201. package/dist/tools/compliance-gap-handler.d.ts.map +1 -0
  202. package/dist/tools/compliance-gap-handler.js +64 -0
  203. package/dist/tools/compliance-gap-handler.js.map +1 -0
  204. package/dist/tools/distribution-readiness-handler.d.ts +3 -0
  205. package/dist/tools/distribution-readiness-handler.d.ts.map +1 -0
  206. package/dist/tools/distribution-readiness-handler.js +24 -0
  207. package/dist/tools/distribution-readiness-handler.js.map +1 -0
  208. package/dist/tools/generate-cost-estimate-handler.d.ts +3 -0
  209. package/dist/tools/generate-cost-estimate-handler.d.ts.map +1 -0
  210. package/dist/tools/generate-cost-estimate-handler.js +29 -0
  211. package/dist/tools/generate-cost-estimate-handler.js.map +1 -0
  212. package/dist/tools/generate-deployment-diagram-handler.d.ts +3 -0
  213. package/dist/tools/generate-deployment-diagram-handler.d.ts.map +1 -0
  214. package/dist/tools/generate-deployment-diagram-handler.js +26 -0
  215. package/dist/tools/generate-deployment-diagram-handler.js.map +1 -0
  216. package/dist/tools/generate-runbook-handler.d.ts +3 -0
  217. package/dist/tools/generate-runbook-handler.d.ts.map +1 -0
  218. package/dist/tools/generate-runbook-handler.js +18 -0
  219. package/dist/tools/generate-runbook-handler.js.map +1 -0
  220. package/dist/tools/inject-quality-gates-handler.d.ts +7 -0
  221. package/dist/tools/inject-quality-gates-handler.d.ts.map +1 -0
  222. package/dist/tools/inject-quality-gates-handler.js +59 -0
  223. package/dist/tools/inject-quality-gates-handler.js.map +1 -0
  224. package/dist/tools/mcp-hub-handler.d.ts +7 -0
  225. package/dist/tools/mcp-hub-handler.d.ts.map +1 -0
  226. package/dist/tools/mcp-hub-handler.js +73 -0
  227. package/dist/tools/mcp-hub-handler.js.map +1 -0
  228. package/dist/tools/productivity-report-handler.d.ts +4 -0
  229. package/dist/tools/productivity-report-handler.d.ts.map +1 -0
  230. package/dist/tools/productivity-report-handler.js +98 -0
  231. package/dist/tools/productivity-report-handler.js.map +1 -0
  232. package/dist/tools/pull-sync-handler.d.ts +25 -0
  233. package/dist/tools/pull-sync-handler.d.ts.map +1 -0
  234. package/dist/tools/pull-sync-handler.js +161 -0
  235. package/dist/tools/pull-sync-handler.js.map +1 -0
  236. package/dist/tools/register-auto-remediation.d.ts +3 -0
  237. package/dist/tools/register-auto-remediation.d.ts.map +1 -0
  238. package/dist/tools/register-auto-remediation.js +174 -0
  239. package/dist/tools/register-auto-remediation.js.map +1 -0
  240. package/dist/tools/register-checkpoints.d.ts +3 -0
  241. package/dist/tools/register-checkpoints.d.ts.map +1 -0
  242. package/dist/tools/register-checkpoints.js +134 -0
  243. package/dist/tools/register-checkpoints.js.map +1 -0
  244. package/dist/tools/register-context-profile.d.ts +3 -0
  245. package/dist/tools/register-context-profile.d.ts.map +1 -0
  246. package/dist/tools/register-context-profile.js +106 -0
  247. package/dist/tools/register-context-profile.js.map +1 -0
  248. package/dist/tools/register-distribution.d.ts +3 -0
  249. package/dist/tools/register-distribution.d.ts.map +1 -0
  250. package/dist/tools/register-distribution.js +103 -0
  251. package/dist/tools/register-distribution.js.map +1 -0
  252. package/dist/tools/register-ears.d.ts +3 -0
  253. package/dist/tools/register-ears.d.ts.map +1 -0
  254. package/dist/tools/register-ears.js +148 -0
  255. package/dist/tools/register-ears.js.map +1 -0
  256. package/dist/tools/register-enterprise-compliance.d.ts +3 -0
  257. package/dist/tools/register-enterprise-compliance.d.ts.map +1 -0
  258. package/dist/tools/register-enterprise-compliance.js +30 -0
  259. package/dist/tools/register-enterprise-compliance.js.map +1 -0
  260. package/dist/tools/register-mcp-hub.d.ts +3 -0
  261. package/dist/tools/register-mcp-hub.d.ts.map +1 -0
  262. package/dist/tools/register-mcp-hub.js +47 -0
  263. package/dist/tools/register-mcp-hub.js.map +1 -0
  264. package/dist/tools/register-productivity.d.ts +3 -0
  265. package/dist/tools/register-productivity.d.ts.map +1 -0
  266. package/dist/tools/register-productivity.js +25 -0
  267. package/dist/tools/register-productivity.js.map +1 -0
  268. package/dist/tools/register-pull-sync.d.ts +3 -0
  269. package/dist/tools/register-pull-sync.d.ts.map +1 -0
  270. package/dist/tools/register-pull-sync.js +71 -0
  271. package/dist/tools/register-pull-sync.js.map +1 -0
  272. package/dist/tools/register-quality-gates.d.ts +3 -0
  273. package/dist/tools/register-quality-gates.d.ts.map +1 -0
  274. package/dist/tools/register-quality-gates.js +47 -0
  275. package/dist/tools/register-quality-gates.js.map +1 -0
  276. package/dist/tools/register-spec405-tools.d.ts +7 -0
  277. package/dist/tools/register-spec405-tools.d.ts.map +1 -0
  278. package/dist/tools/register-spec405-tools.js +194 -0
  279. package/dist/tools/register-spec405-tools.js.map +1 -0
  280. package/dist/tools/register-verifier.d.ts +3 -0
  281. package/dist/tools/register-verifier.d.ts.map +1 -0
  282. package/dist/tools/register-verifier.js +141 -0
  283. package/dist/tools/register-verifier.js.map +1 -0
  284. package/dist/types/analysis.d.ts +128 -0
  285. package/dist/types/analysis.d.ts.map +1 -1
  286. package/dist/types/context-profile.d.ts +22 -0
  287. package/dist/types/context-profile.d.ts.map +1 -0
  288. package/dist/types/context-profile.js +2 -0
  289. package/dist/types/context-profile.js.map +1 -0
  290. package/dist/types/docs.d.ts +43 -0
  291. package/dist/types/docs.d.ts.map +1 -1
  292. package/dist/types/ears.d.ts +34 -0
  293. package/dist/types/ears.d.ts.map +1 -0
  294. package/dist/types/ears.js +3 -0
  295. package/dist/types/ears.js.map +1 -0
  296. package/dist/types/env.d.ts +23 -0
  297. package/dist/types/env.d.ts.map +1 -1
  298. package/dist/types/estimation.d.ts +30 -0
  299. package/dist/types/estimation.d.ts.map +1 -1
  300. package/dist/types/health.d.ts +40 -0
  301. package/dist/types/health.d.ts.map +1 -0
  302. package/dist/types/health.js +3 -0
  303. package/dist/types/health.js.map +1 -0
  304. package/dist/types/index.d.ts +4 -0
  305. package/dist/types/index.d.ts.map +1 -1
  306. package/dist/types/index.js +4 -0
  307. package/dist/types/index.js.map +1 -1
  308. package/dist/types/notion-asana-monday.d.ts +38 -0
  309. package/dist/types/notion-asana-monday.d.ts.map +1 -1
  310. package/dist/types/orchestration/index.d.ts +1 -0
  311. package/dist/types/orchestration/index.d.ts.map +1 -1
  312. package/dist/types/orchestration/mcp-hub.d.ts +29 -0
  313. package/dist/types/orchestration/mcp-hub.d.ts.map +1 -0
  314. package/dist/types/orchestration/mcp-hub.js +3 -0
  315. package/dist/types/orchestration/mcp-hub.js.map +1 -0
  316. package/dist/types/orchestration.d.ts +1 -1
  317. package/dist/types/orchestration.d.ts.map +1 -1
  318. package/dist/types/workflow-checkpoint.d.ts +66 -0
  319. package/dist/types/workflow-checkpoint.d.ts.map +1 -0
  320. package/dist/types/workflow-checkpoint.js +4 -0
  321. package/dist/types/workflow-checkpoint.js.map +1 -0
  322. package/package.json +1 -1
  323. package/src/config/license-plans.json +32 -2
@@ -0,0 +1,351 @@
1
+ export const GATE_CATALOG = [
2
+ // Security gates (15)
3
+ {
4
+ id: 'sec-sql-injection',
5
+ category: 'security',
6
+ title: 'All DB queries use parameterized queries or ORM — no string interpolation in SQL',
7
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
8
+ riskLevels: ['low', 'medium', 'high'],
9
+ specTypes: ['all'],
10
+ },
11
+ {
12
+ id: 'sec-input-validation',
13
+ category: 'security',
14
+ title: 'All user inputs validated with Zod/Pydantic/schema at system boundaries',
15
+ stacks: ['typescript', 'python', 'generic'],
16
+ riskLevels: ['low', 'medium', 'high'],
17
+ specTypes: ['all'],
18
+ },
19
+ {
20
+ id: 'sec-auth-check',
21
+ category: 'security',
22
+ title: 'All endpoints/routes require authentication check before processing',
23
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
24
+ riskLevels: ['medium', 'high'],
25
+ specTypes: ['feature', 'infra'],
26
+ },
27
+ {
28
+ id: 'sec-sensitive-data',
29
+ category: 'security',
30
+ title: 'No PII or secrets logged to console/file — use redaction or masking',
31
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
32
+ riskLevels: ['medium', 'high'],
33
+ specTypes: ['all'],
34
+ },
35
+ {
36
+ id: 'sec-cors',
37
+ category: 'security',
38
+ title: 'CORS configured explicitly — no wildcard origin in production',
39
+ stacks: ['typescript', 'python', 'generic'],
40
+ riskLevels: ['medium', 'high'],
41
+ specTypes: ['feature', 'infra'],
42
+ },
43
+ {
44
+ id: 'sec-rate-limit',
45
+ category: 'security',
46
+ title: 'Rate limiting applied to all public endpoints',
47
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
48
+ riskLevels: ['high'],
49
+ specTypes: ['feature', 'infra'],
50
+ },
51
+ {
52
+ id: 'sec-xss',
53
+ category: 'security',
54
+ title: 'All user-generated content escaped before rendering in HTML',
55
+ stacks: ['typescript', 'generic'],
56
+ riskLevels: ['medium', 'high'],
57
+ specTypes: ['feature'],
58
+ },
59
+ {
60
+ id: 'sec-csrf',
61
+ category: 'security',
62
+ title: 'CSRF tokens required for state-changing operations in browser context',
63
+ stacks: ['typescript', 'generic'],
64
+ riskLevels: ['medium', 'high'],
65
+ specTypes: ['feature'],
66
+ },
67
+ {
68
+ id: 'sec-dependency-check',
69
+ category: 'security',
70
+ title: 'No new dependencies with known critical vulnerabilities (npm audit / pip audit)',
71
+ stacks: ['typescript', 'python', 'generic'],
72
+ riskLevels: ['low', 'medium', 'high'],
73
+ specTypes: ['all'],
74
+ },
75
+ {
76
+ id: 'sec-env-secrets',
77
+ category: 'security',
78
+ title: 'No secrets hardcoded — all credentials via environment variables',
79
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
80
+ riskLevels: ['low', 'medium', 'high'],
81
+ specTypes: ['all'],
82
+ },
83
+ {
84
+ id: 'sec-error-disclosure',
85
+ category: 'security',
86
+ title: 'Error responses do not expose internal stack traces or system details to clients',
87
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
88
+ riskLevels: ['medium', 'high'],
89
+ specTypes: ['all'],
90
+ },
91
+ {
92
+ id: 'sec-jwt-validation',
93
+ category: 'security',
94
+ title: 'JWT tokens validated for signature, expiry, and issuer on every protected route',
95
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
96
+ riskLevels: ['high'],
97
+ specTypes: ['feature', 'infra'],
98
+ },
99
+ {
100
+ id: 'sec-file-upload',
101
+ category: 'security',
102
+ title: 'File uploads: type validation, size limits, and virus scanning configured',
103
+ stacks: ['typescript', 'python', 'generic'],
104
+ riskLevels: ['high'],
105
+ specTypes: ['feature'],
106
+ },
107
+ {
108
+ id: 'sec-path-traversal',
109
+ category: 'security',
110
+ title: 'File system paths sanitized — no user-controlled path traversal possible',
111
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
112
+ riskLevels: ['medium', 'high'],
113
+ specTypes: ['feature', 'infra'],
114
+ },
115
+ {
116
+ id: 'sec-https-only',
117
+ category: 'security',
118
+ title: 'All external API calls use HTTPS — no HTTP in production',
119
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
120
+ riskLevels: ['medium', 'high'],
121
+ specTypes: ['all'],
122
+ },
123
+ // Testing gates (10)
124
+ {
125
+ id: 'test-unit-coverage',
126
+ category: 'testing',
127
+ title: 'Unit tests cover ≥95% branch coverage for all new modules',
128
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
129
+ riskLevels: ['low', 'medium', 'high'],
130
+ specTypes: ['all'],
131
+ },
132
+ {
133
+ id: 'test-integration',
134
+ category: 'testing',
135
+ title: 'Integration test for each external dependency interaction (API, DB, cache)',
136
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
137
+ riskLevels: ['medium', 'high'],
138
+ specTypes: ['feature', 'infra'],
139
+ },
140
+ {
141
+ id: 'test-happy-path',
142
+ category: 'testing',
143
+ title: 'Happy path test for each acceptance criterion',
144
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
145
+ riskLevels: ['low', 'medium', 'high'],
146
+ specTypes: ['all'],
147
+ },
148
+ {
149
+ id: 'test-error-paths',
150
+ category: 'testing',
151
+ title: 'Error path tests: invalid input, network failure, not-found cases',
152
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
153
+ riskLevels: ['medium', 'high'],
154
+ specTypes: ['all'],
155
+ },
156
+ {
157
+ id: 'test-edge-cases',
158
+ category: 'testing',
159
+ title: 'Edge case tests: empty input, maximum values, concurrent operations',
160
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
161
+ riskLevels: ['medium', 'high'],
162
+ specTypes: ['feature'],
163
+ },
164
+ {
165
+ id: 'test-no-mocks-abuse',
166
+ category: 'testing',
167
+ title: 'Tests do not mock the unit under test — only external dependencies mocked',
168
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
169
+ riskLevels: ['low', 'medium', 'high'],
170
+ specTypes: ['all'],
171
+ },
172
+ {
173
+ id: 'test-deterministic',
174
+ category: 'testing',
175
+ title: 'All tests are deterministic — no random data, flaky network, or time-dependent state',
176
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
177
+ riskLevels: ['low', 'medium', 'high'],
178
+ specTypes: ['all'],
179
+ },
180
+ {
181
+ id: 'test-ci-passes',
182
+ category: 'testing',
183
+ title: 'All tests pass in CI environment without manual intervention',
184
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
185
+ riskLevels: ['low', 'medium', 'high'],
186
+ specTypes: ['all'],
187
+ },
188
+ {
189
+ id: 'test-performance-regression',
190
+ category: 'testing',
191
+ title: 'Performance regression test: response time within 10% of baseline',
192
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
193
+ riskLevels: ['high'],
194
+ specTypes: ['feature'],
195
+ },
196
+ {
197
+ id: 'test-snapshot',
198
+ category: 'testing',
199
+ title: 'Snapshot tests for all UI components and generated outputs',
200
+ stacks: ['typescript', 'generic'],
201
+ riskLevels: ['medium', 'high'],
202
+ specTypes: ['feature'],
203
+ },
204
+ // Architecture gates (10)
205
+ {
206
+ id: 'arch-layer-violation',
207
+ category: 'architecture',
208
+ title: 'No cross-layer imports: frontend does not import from backend modules directly',
209
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
210
+ riskLevels: ['low', 'medium', 'high'],
211
+ specTypes: ['all'],
212
+ },
213
+ {
214
+ id: 'arch-single-responsibility',
215
+ category: 'architecture',
216
+ title: 'Each module/class has single responsibility — max 1 reason to change',
217
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
218
+ riskLevels: ['medium', 'high'],
219
+ specTypes: ['all'],
220
+ },
221
+ {
222
+ id: 'arch-no-god-object',
223
+ category: 'architecture',
224
+ title: 'No god objects — functions max 80 lines, files max 400 lines',
225
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
226
+ riskLevels: ['medium', 'high'],
227
+ specTypes: ['all'],
228
+ },
229
+ {
230
+ id: 'arch-dependency-injection',
231
+ category: 'architecture',
232
+ title: 'External dependencies injected (not imported directly) for testability',
233
+ stacks: ['typescript', 'python', 'java', 'generic'],
234
+ riskLevels: ['medium', 'high'],
235
+ specTypes: ['feature'],
236
+ },
237
+ {
238
+ id: 'arch-no-circular',
239
+ category: 'architecture',
240
+ title: 'No circular module dependencies — verified with madge or similar',
241
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
242
+ riskLevels: ['low', 'medium', 'high'],
243
+ specTypes: ['all'],
244
+ },
245
+ {
246
+ id: 'arch-api-contract',
247
+ category: 'architecture',
248
+ title: 'API contracts (request/response) defined with typed schemas before implementation',
249
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
250
+ riskLevels: ['medium', 'high'],
251
+ specTypes: ['feature'],
252
+ },
253
+ {
254
+ id: 'arch-error-boundaries',
255
+ category: 'architecture',
256
+ title: 'Error boundaries defined at module edges — errors do not propagate silently',
257
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
258
+ riskLevels: ['medium', 'high'],
259
+ specTypes: ['all'],
260
+ },
261
+ {
262
+ id: 'arch-backward-compat',
263
+ category: 'architecture',
264
+ title: 'No breaking changes to existing public APIs without major version bump',
265
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
266
+ riskLevels: ['medium', 'high'],
267
+ specTypes: ['refactor'],
268
+ },
269
+ {
270
+ id: 'arch-logging',
271
+ category: 'architecture',
272
+ title: 'Structured logging with request ID / correlation ID for all operations',
273
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
274
+ riskLevels: ['medium', 'high'],
275
+ specTypes: ['feature', 'infra'],
276
+ },
277
+ {
278
+ id: 'arch-config-externalized',
279
+ category: 'architecture',
280
+ title: 'All configuration externalized — no magic strings/numbers in business logic',
281
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
282
+ riskLevels: ['medium', 'high'],
283
+ specTypes: ['all'],
284
+ },
285
+ // Performance gates (8)
286
+ {
287
+ id: 'perf-lcp',
288
+ category: 'performance',
289
+ title: 'LCP (Largest Contentful Paint) ≤2.5s on 4G mobile connection',
290
+ stacks: ['typescript', 'generic'],
291
+ riskLevels: ['medium', 'high'],
292
+ specTypes: ['feature'],
293
+ },
294
+ {
295
+ id: 'perf-no-n-plus-1',
296
+ category: 'performance',
297
+ title: 'No N+1 query patterns — use batching, DataLoader, or eager loading',
298
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
299
+ riskLevels: ['medium', 'high'],
300
+ specTypes: ['feature'],
301
+ },
302
+ {
303
+ id: 'perf-bundle-size',
304
+ category: 'performance',
305
+ title: 'JavaScript bundle size increase <50KB gzipped per feature',
306
+ stacks: ['typescript', 'generic'],
307
+ riskLevels: ['medium', 'high'],
308
+ specTypes: ['feature'],
309
+ },
310
+ {
311
+ id: 'perf-db-indexes',
312
+ category: 'performance',
313
+ title: 'Database queries on new tables use appropriate indexes',
314
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
315
+ riskLevels: ['medium', 'high'],
316
+ specTypes: ['feature', 'infra'],
317
+ },
318
+ {
319
+ id: 'perf-caching',
320
+ category: 'performance',
321
+ title: 'Expensive computations (>100ms) cached with appropriate TTL',
322
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
323
+ riskLevels: ['high'],
324
+ specTypes: ['feature'],
325
+ },
326
+ {
327
+ id: 'perf-async',
328
+ category: 'performance',
329
+ title: 'No synchronous blocking I/O in hot paths — all disk/network operations async',
330
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
331
+ riskLevels: ['medium', 'high'],
332
+ specTypes: ['feature', 'infra'],
333
+ },
334
+ {
335
+ id: 'perf-pagination',
336
+ category: 'performance',
337
+ title: 'All list endpoints paginated — no unbounded queries returning full table',
338
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
339
+ riskLevels: ['medium', 'high'],
340
+ specTypes: ['feature'],
341
+ },
342
+ {
343
+ id: 'perf-timeout',
344
+ category: 'performance',
345
+ title: 'Timeout configured for all external API calls — no indefinite waits',
346
+ stacks: ['typescript', 'python', 'java', 'go', 'generic'],
347
+ riskLevels: ['medium', 'high'],
348
+ specTypes: ['feature', 'infra'],
349
+ },
350
+ ];
351
+ //# sourceMappingURL=gate-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate-catalog.js","sourceRoot":"","sources":["../../../src/engine/quality-gates/gate-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { QualityGateEvaluation } from '../../types/index.js';
2
+ export declare function evaluateGates(specMarkdown: string): QualityGateEvaluation;
3
+ //# sourceMappingURL=gate-evaluator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate-evaluator.d.ts","sourceRoot":"","sources":["../../../src/engine/quality-gates/gate-evaluator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAGlE,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,qBAAqB,CAmBzE"}
@@ -0,0 +1,25 @@
1
+ import { GATE_CATALOG } from './gate-catalog.js';
2
+ export function evaluateGates(specMarkdown) {
3
+ const autoGates = GATE_CATALOG.filter((g) => specMarkdown.includes(`[AUTO] ${g.title}`));
4
+ const passed = autoGates.filter((g) => {
5
+ // Look for checked version: [x] [AUTO] title
6
+ const checkedPattern = new RegExp(`- \\[x\\] \\[AUTO\\] ${escapeRegex(g.title)}`, 'i');
7
+ return checkedPattern.test(specMarkdown);
8
+ });
9
+ const failed = autoGates.filter((g) => !passed.includes(g));
10
+ return {
11
+ total: autoGates.length,
12
+ passed: passed.length,
13
+ failed: failed.length,
14
+ failedGates: failed.map((g) => ({
15
+ id: g.id,
16
+ title: g.title,
17
+ category: g.category,
18
+ })),
19
+ score: autoGates.length === 0 ? 100 : Math.round((passed.length / autoGates.length) * 100),
20
+ };
21
+ }
22
+ function escapeRegex(str) {
23
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
24
+ }
25
+ //# sourceMappingURL=gate-evaluator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate-evaluator.js","sourceRoot":"","sources":["../../../src/engine/quality-gates/gate-evaluator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,UAAU,aAAa,CAAC,YAAoB;IAChD,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACzF,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACpC,6CAA6C;QAC7C,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,wBAAwB,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACvF,OAAO,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,OAAO;QACL,KAAK,EAAE,SAAS,CAAC,MAAM;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9B,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACrB,CAAC,CAAC;QACH,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;KAC3F,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { QualityGateInjectionResult } from '../../types/index.js';
2
+ import { GATE_CATALOG, type GateCategory, type StackType } from './gate-catalog.js';
3
+ interface InjectionContext {
4
+ specType: string;
5
+ risk: 'low' | 'medium' | 'high';
6
+ stack: StackType;
7
+ categories: GateCategory[];
8
+ }
9
+ export declare function selectGates(ctx: InjectionContext): typeof GATE_CATALOG;
10
+ export declare function formatGatesSection(gates: typeof GATE_CATALOG): string;
11
+ export declare function inferStack(language?: string, framework?: string): StackType;
12
+ export declare function injectQualityGates(params: {
13
+ specType: string;
14
+ risk: 'low' | 'medium' | 'high';
15
+ language?: string;
16
+ framework?: string;
17
+ categories?: GateCategory[];
18
+ }): QualityGateInjectionResult;
19
+ export {};
20
+ //# sourceMappingURL=gate-injector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate-injector.d.ts","sourceRoot":"","sources":["../../../src/engine/quality-gates/gate-injector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGpF,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAChC,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,YAAY,EAAE,CAAC;CAC5B;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,YAAY,CAQtE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,YAAY,GAAG,MAAM,CAmBrE;AAED,wBAAgB,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAsB3E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;CAC7B,GAAG,0BAA0B,CAyB7B"}
@@ -0,0 +1,75 @@
1
+ import { GATE_CATALOG } from './gate-catalog.js';
2
+ export function selectGates(ctx) {
3
+ return GATE_CATALOG.filter((g) => (g.specTypes.includes(ctx.specType) || g.specTypes.includes('all')) &&
4
+ g.riskLevels.includes(ctx.risk) &&
5
+ (g.stacks.includes(ctx.stack) || g.stacks.includes('generic')) &&
6
+ ctx.categories.includes(g.category));
7
+ }
8
+ export function formatGatesSection(gates) {
9
+ if (gates.length === 0) {
10
+ return '';
11
+ }
12
+ const byCategory = new Map();
13
+ for (const g of gates) {
14
+ const list = byCategory.get(g.category) ?? [];
15
+ list.push(g);
16
+ byCategory.set(g.category, list);
17
+ }
18
+ const lines = ['\n## Quality Gates [AUTO]', ''];
19
+ for (const [cat, catGates] of byCategory) {
20
+ lines.push(`### ${cat.charAt(0).toUpperCase() + cat.slice(1)}`);
21
+ for (const g of catGates) {
22
+ lines.push(`- [ ] [AUTO] ${g.title}`);
23
+ }
24
+ lines.push('');
25
+ }
26
+ return lines.join('\n');
27
+ }
28
+ export function inferStack(language, framework) {
29
+ const lang = (language ?? '').toLowerCase();
30
+ const fw = (framework ?? '').toLowerCase();
31
+ if (lang.includes('python') || fw.includes('fastapi') || fw.includes('django')) {
32
+ return 'python';
33
+ }
34
+ // Check typescript/javascript BEFORE java to avoid 'javascript'.includes('java') matching
35
+ if (lang.includes('typescript') ||
36
+ lang.includes('javascript') ||
37
+ fw.includes('node') ||
38
+ fw.includes('next')) {
39
+ return 'typescript';
40
+ }
41
+ if (lang === 'java' || fw.includes('spring')) {
42
+ return 'java';
43
+ }
44
+ if (lang.includes('go') || fw.includes('gin') || fw.includes('fiber')) {
45
+ return 'go';
46
+ }
47
+ return 'generic';
48
+ }
49
+ export function injectQualityGates(params) {
50
+ const stack = inferStack(params.language, params.framework);
51
+ const categories = params.categories ?? [
52
+ 'security',
53
+ 'testing',
54
+ 'architecture',
55
+ 'performance',
56
+ ];
57
+ const gates = selectGates({
58
+ specType: params.specType,
59
+ risk: params.risk,
60
+ stack,
61
+ categories,
62
+ });
63
+ return {
64
+ gates,
65
+ markdownSection: formatGatesSection(gates),
66
+ count: gates.length,
67
+ categoryCounts: {
68
+ security: gates.filter((g) => g.category === 'security').length,
69
+ testing: gates.filter((g) => g.category === 'testing').length,
70
+ architecture: gates.filter((g) => g.category === 'architecture').length,
71
+ performance: gates.filter((g) => g.category === 'performance').length,
72
+ },
73
+ };
74
+ }
75
+ //# sourceMappingURL=gate-injector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate-injector.js","sourceRoot":"","sources":["../../../src/engine/quality-gates/gate-injector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAqC,MAAM,mBAAmB,CAAC;AAUpF,MAAM,UAAU,WAAW,CAAC,GAAqB;IAC/C,OAAO,YAAY,CAAC,MAAM,CACxB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QAC/B,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC9D,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CACtC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAA0B;IAC3D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,GAAG,EAA+B,CAAC;IAC1D,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,KAAK,GAAa,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;IAC1D,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,UAAU,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAChE,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAiB,EAAE,SAAkB;IAC9D,MAAM,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/E,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,0FAA0F;IAC1F,IACE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC3B,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnB,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EACnB,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAMlC;IACC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAmB,MAAM,CAAC,UAAU,IAAI;QACtD,UAAU;QACV,SAAS;QACT,cAAc;QACd,aAAa;KACd,CAAC;IACF,MAAM,KAAK,GAAG,WAAW,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK;QACL,UAAU;KACX,CAAC,CAAC;IACH,OAAO;QACL,KAAK;QACL,eAAe,EAAE,kBAAkB,CAAC,KAAK,CAAC;QAC1C,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,cAAc,EAAE;YACd,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,MAAM;YAC/D,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM;YAC7D,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,cAAc,CAAC,CAAC,MAAM;YACvE,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,MAAM;SACtE;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SimilarProblemsResult } from '../../types/index.js';
2
+ export declare function findSimilarProblems(query: string, projectPath: string, specId?: string): Promise<SimilarProblemsResult>;
3
+ //# sourceMappingURL=similarity-finder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"similarity-finder.d.ts","sourceRoot":"","sources":["../../../src/engine/similar-problems/similarity-finder.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAEV,qBAAqB,EAEtB,MAAM,sBAAsB,CAAC;AAyG9B,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,qBAAqB,CAAC,CAiDhC"}