opencode-telos 1.0.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 (568) hide show
  1. package/README.md +927 -0
  2. package/dist/code-intelligence/analyzer.d.ts +9 -0
  3. package/dist/code-intelligence/analyzer.d.ts.map +1 -0
  4. package/dist/code-intelligence/analyzer.js +321 -0
  5. package/dist/code-intelligence/analyzer.js.map +1 -0
  6. package/dist/code-intelligence/ast/cache.d.ts +16 -0
  7. package/dist/code-intelligence/ast/cache.d.ts.map +1 -0
  8. package/dist/code-intelligence/ast/cache.js +44 -0
  9. package/dist/code-intelligence/ast/cache.js.map +1 -0
  10. package/dist/code-intelligence/ast/common.d.ts +8 -0
  11. package/dist/code-intelligence/ast/common.d.ts.map +1 -0
  12. package/dist/code-intelligence/ast/common.js +42 -0
  13. package/dist/code-intelligence/ast/common.js.map +1 -0
  14. package/dist/code-intelligence/ast/component.d.ts +10 -0
  15. package/dist/code-intelligence/ast/component.d.ts.map +1 -0
  16. package/dist/code-intelligence/ast/component.js +38 -0
  17. package/dist/code-intelligence/ast/component.js.map +1 -0
  18. package/dist/code-intelligence/ast/fallback.d.ts +9 -0
  19. package/dist/code-intelligence/ast/fallback.d.ts.map +1 -0
  20. package/dist/code-intelligence/ast/fallback.js +38 -0
  21. package/dist/code-intelligence/ast/fallback.js.map +1 -0
  22. package/dist/code-intelligence/ast/index.d.ts +5 -0
  23. package/dist/code-intelligence/ast/index.d.ts.map +1 -0
  24. package/dist/code-intelligence/ast/index.js +5 -0
  25. package/dist/code-intelligence/ast/index.js.map +1 -0
  26. package/dist/code-intelligence/ast/ir.d.ts +72 -0
  27. package/dist/code-intelligence/ast/ir.d.ts.map +1 -0
  28. package/dist/code-intelligence/ast/ir.js +2 -0
  29. package/dist/code-intelligence/ast/ir.js.map +1 -0
  30. package/dist/code-intelligence/ast/metrics.d.ts +25 -0
  31. package/dist/code-intelligence/ast/metrics.d.ts.map +1 -0
  32. package/dist/code-intelligence/ast/metrics.js +38 -0
  33. package/dist/code-intelligence/ast/metrics.js.map +1 -0
  34. package/dist/code-intelligence/ast/registry.d.ts +5 -0
  35. package/dist/code-intelligence/ast/registry.d.ts.map +1 -0
  36. package/dist/code-intelligence/ast/registry.js +22 -0
  37. package/dist/code-intelligence/ast/registry.js.map +1 -0
  38. package/dist/code-intelligence/ast/tree-sitter.d.ts +8 -0
  39. package/dist/code-intelligence/ast/tree-sitter.d.ts.map +1 -0
  40. package/dist/code-intelligence/ast/tree-sitter.js +247 -0
  41. package/dist/code-intelligence/ast/tree-sitter.js.map +1 -0
  42. package/dist/code-intelligence/ast/typescript.d.ts +8 -0
  43. package/dist/code-intelligence/ast/typescript.d.ts.map +1 -0
  44. package/dist/code-intelligence/ast/typescript.js +147 -0
  45. package/dist/code-intelligence/ast/typescript.js.map +1 -0
  46. package/dist/index.d.ts +10 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +18 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/mcp/server.d.ts +27 -0
  51. package/dist/mcp/server.d.ts.map +1 -0
  52. package/dist/mcp/server.js +67 -0
  53. package/dist/mcp/server.js.map +1 -0
  54. package/dist/opencode/hooks.d.ts +9 -0
  55. package/dist/opencode/hooks.d.ts.map +1 -0
  56. package/dist/opencode/hooks.js +583 -0
  57. package/dist/opencode/hooks.js.map +1 -0
  58. package/dist/opencode/router/categories.d.ts +31 -0
  59. package/dist/opencode/router/categories.d.ts.map +1 -0
  60. package/dist/opencode/router/categories.js +165 -0
  61. package/dist/opencode/router/categories.js.map +1 -0
  62. package/dist/opencode/router/embeddings.d.ts +41 -0
  63. package/dist/opencode/router/embeddings.d.ts.map +1 -0
  64. package/dist/opencode/router/embeddings.js +136 -0
  65. package/dist/opencode/router/embeddings.js.map +1 -0
  66. package/dist/opencode/router/graph-state-snapshot.d.ts +35 -0
  67. package/dist/opencode/router/graph-state-snapshot.d.ts.map +1 -0
  68. package/dist/opencode/router/graph-state-snapshot.js +129 -0
  69. package/dist/opencode/router/graph-state-snapshot.js.map +1 -0
  70. package/dist/opencode/router/index.d.ts +21 -0
  71. package/dist/opencode/router/index.d.ts.map +1 -0
  72. package/dist/opencode/router/index.js +23 -0
  73. package/dist/opencode/router/index.js.map +1 -0
  74. package/dist/opencode/router/intent-classifier.d.ts +35 -0
  75. package/dist/opencode/router/intent-classifier.d.ts.map +1 -0
  76. package/dist/opencode/router/intent-classifier.js +108 -0
  77. package/dist/opencode/router/intent-classifier.js.map +1 -0
  78. package/dist/opencode/router/semantic-nudge.d.ts +42 -0
  79. package/dist/opencode/router/semantic-nudge.d.ts.map +1 -0
  80. package/dist/opencode/router/semantic-nudge.js +73 -0
  81. package/dist/opencode/router/semantic-nudge.js.map +1 -0
  82. package/dist/opencode/router/state-gate.d.ts +25 -0
  83. package/dist/opencode/router/state-gate.d.ts.map +1 -0
  84. package/dist/opencode/router/state-gate.js +178 -0
  85. package/dist/opencode/router/state-gate.js.map +1 -0
  86. package/dist/opencode/router/tool-embeddings.d.ts +36 -0
  87. package/dist/opencode/router/tool-embeddings.d.ts.map +1 -0
  88. package/dist/opencode/router/tool-embeddings.js +140 -0
  89. package/dist/opencode/router/tool-embeddings.js.map +1 -0
  90. package/dist/opencode/router/tool-registry.d.ts +45 -0
  91. package/dist/opencode/router/tool-registry.d.ts.map +1 -0
  92. package/dist/opencode/router/tool-registry.js +103 -0
  93. package/dist/opencode/router/tool-registry.js.map +1 -0
  94. package/dist/opencode/router/tool-taxonomy.d.ts +51 -0
  95. package/dist/opencode/router/tool-taxonomy.d.ts.map +1 -0
  96. package/dist/opencode/router/tool-taxonomy.js +250 -0
  97. package/dist/opencode/router/tool-taxonomy.js.map +1 -0
  98. package/dist/opencode/router/tools-composite.d.ts +21 -0
  99. package/dist/opencode/router/tools-composite.d.ts.map +1 -0
  100. package/dist/opencode/router/tools-composite.js +684 -0
  101. package/dist/opencode/router/tools-composite.js.map +1 -0
  102. package/dist/opencode/shell-hooks.d.ts +7 -0
  103. package/dist/opencode/shell-hooks.d.ts.map +1 -0
  104. package/dist/opencode/shell-hooks.js +96 -0
  105. package/dist/opencode/shell-hooks.js.map +1 -0
  106. package/dist/opencode/system-prompt.d.ts +10 -0
  107. package/dist/opencode/system-prompt.d.ts.map +1 -0
  108. package/dist/opencode/system-prompt.js +600 -0
  109. package/dist/opencode/system-prompt.js.map +1 -0
  110. package/dist/opencode/tools.d.ts +8 -0
  111. package/dist/opencode/tools.d.ts.map +1 -0
  112. package/dist/opencode/tools.js +3731 -0
  113. package/dist/opencode/tools.js.map +1 -0
  114. package/dist/opencode/workflows/chains.d.ts +52 -0
  115. package/dist/opencode/workflows/chains.d.ts.map +1 -0
  116. package/dist/opencode/workflows/chains.js +170 -0
  117. package/dist/opencode/workflows/chains.js.map +1 -0
  118. package/dist/opencode/workflows/executor.d.ts +52 -0
  119. package/dist/opencode/workflows/executor.d.ts.map +1 -0
  120. package/dist/opencode/workflows/executor.js +130 -0
  121. package/dist/opencode/workflows/executor.js.map +1 -0
  122. package/dist/opencode/workflows/index.d.ts +14 -0
  123. package/dist/opencode/workflows/index.d.ts.map +1 -0
  124. package/dist/opencode/workflows/index.js +15 -0
  125. package/dist/opencode/workflows/index.js.map +1 -0
  126. package/dist/opencode/workflows/tools-workflow.d.ts +24 -0
  127. package/dist/opencode/workflows/tools-workflow.d.ts.map +1 -0
  128. package/dist/opencode/workflows/tools-workflow.js +85 -0
  129. package/dist/opencode/workflows/tools-workflow.js.map +1 -0
  130. package/dist/opencode/workflows/types.d.ts +32 -0
  131. package/dist/opencode/workflows/types.d.ts.map +1 -0
  132. package/dist/opencode/workflows/types.js +13 -0
  133. package/dist/opencode/workflows/types.js.map +1 -0
  134. package/dist/sdd/analysis/compliance.d.ts +30 -0
  135. package/dist/sdd/analysis/compliance.d.ts.map +1 -0
  136. package/dist/sdd/analysis/compliance.js +251 -0
  137. package/dist/sdd/analysis/compliance.js.map +1 -0
  138. package/dist/sdd/analysis/scalability.d.ts +15 -0
  139. package/dist/sdd/analysis/scalability.d.ts.map +1 -0
  140. package/dist/sdd/analysis/scalability.js +72 -0
  141. package/dist/sdd/analysis/scalability.js.map +1 -0
  142. package/dist/sdd/analysis/security.d.ts +25 -0
  143. package/dist/sdd/analysis/security.d.ts.map +1 -0
  144. package/dist/sdd/analysis/security.js +94 -0
  145. package/dist/sdd/analysis/security.js.map +1 -0
  146. package/dist/sdd/brownfield/scanner.d.ts +31 -0
  147. package/dist/sdd/brownfield/scanner.d.ts.map +1 -0
  148. package/dist/sdd/brownfield/scanner.js +228 -0
  149. package/dist/sdd/brownfield/scanner.js.map +1 -0
  150. package/dist/sdd/cache/manager.d.ts +237 -0
  151. package/dist/sdd/cache/manager.d.ts.map +1 -0
  152. package/dist/sdd/cache/manager.js +770 -0
  153. package/dist/sdd/cache/manager.js.map +1 -0
  154. package/dist/sdd/cache/snapshot-store.d.ts +39 -0
  155. package/dist/sdd/cache/snapshot-store.d.ts.map +1 -0
  156. package/dist/sdd/cache/snapshot-store.js +156 -0
  157. package/dist/sdd/cache/snapshot-store.js.map +1 -0
  158. package/dist/sdd/changes/manager.d.ts +58 -0
  159. package/dist/sdd/changes/manager.d.ts.map +1 -0
  160. package/dist/sdd/changes/manager.js +235 -0
  161. package/dist/sdd/changes/manager.js.map +1 -0
  162. package/dist/sdd/cicd/generators.d.ts +16 -0
  163. package/dist/sdd/cicd/generators.d.ts.map +1 -0
  164. package/dist/sdd/cicd/generators.js +1042 -0
  165. package/dist/sdd/cicd/generators.js.map +1 -0
  166. package/dist/sdd/code-quality/complexity.d.ts +38 -0
  167. package/dist/sdd/code-quality/complexity.d.ts.map +1 -0
  168. package/dist/sdd/code-quality/complexity.js +161 -0
  169. package/dist/sdd/code-quality/complexity.js.map +1 -0
  170. package/dist/sdd/code-quality/conventions.d.ts +33 -0
  171. package/dist/sdd/code-quality/conventions.d.ts.map +1 -0
  172. package/dist/sdd/code-quality/conventions.js +193 -0
  173. package/dist/sdd/code-quality/conventions.js.map +1 -0
  174. package/dist/sdd/code-quality/dependencies.d.ts +27 -0
  175. package/dist/sdd/code-quality/dependencies.d.ts.map +1 -0
  176. package/dist/sdd/code-quality/dependencies.js +142 -0
  177. package/dist/sdd/code-quality/dependencies.js.map +1 -0
  178. package/dist/sdd/code-quality/import-analyzer.d.ts +49 -0
  179. package/dist/sdd/code-quality/import-analyzer.d.ts.map +1 -0
  180. package/dist/sdd/code-quality/import-analyzer.js +213 -0
  181. package/dist/sdd/code-quality/import-analyzer.js.map +1 -0
  182. package/dist/sdd/code-quality/metrics.d.ts +35 -0
  183. package/dist/sdd/code-quality/metrics.d.ts.map +1 -0
  184. package/dist/sdd/code-quality/metrics.js +172 -0
  185. package/dist/sdd/code-quality/metrics.js.map +1 -0
  186. package/dist/sdd/code-quality/smells.d.ts +38 -0
  187. package/dist/sdd/code-quality/smells.d.ts.map +1 -0
  188. package/dist/sdd/code-quality/smells.js +319 -0
  189. package/dist/sdd/code-quality/smells.js.map +1 -0
  190. package/dist/sdd/code-quality/symbol-parser.d.ts +28 -0
  191. package/dist/sdd/code-quality/symbol-parser.d.ts.map +1 -0
  192. package/dist/sdd/code-quality/symbol-parser.js +230 -0
  193. package/dist/sdd/code-quality/symbol-parser.js.map +1 -0
  194. package/dist/sdd/code-quality/usage-tracker.d.ts +59 -0
  195. package/dist/sdd/code-quality/usage-tracker.d.ts.map +1 -0
  196. package/dist/sdd/code-quality/usage-tracker.js +402 -0
  197. package/dist/sdd/code-quality/usage-tracker.js.map +1 -0
  198. package/dist/sdd/code-quality/utils.d.ts +6 -0
  199. package/dist/sdd/code-quality/utils.d.ts.map +1 -0
  200. package/dist/sdd/code-quality/utils.js +14 -0
  201. package/dist/sdd/code-quality/utils.js.map +1 -0
  202. package/dist/sdd/codegen/generator.d.ts +42 -0
  203. package/dist/sdd/codegen/generator.d.ts.map +1 -0
  204. package/dist/sdd/codegen/generator.js +1023 -0
  205. package/dist/sdd/codegen/generator.js.map +1 -0
  206. package/dist/sdd/constitution/validator.d.ts +37 -0
  207. package/dist/sdd/constitution/validator.d.ts.map +1 -0
  208. package/dist/sdd/constitution/validator.js +192 -0
  209. package/dist/sdd/constitution/validator.js.map +1 -0
  210. package/dist/sdd/cost/estimator.d.ts +31 -0
  211. package/dist/sdd/cost/estimator.d.ts.map +1 -0
  212. package/dist/sdd/cost/estimator.js +92 -0
  213. package/dist/sdd/cost/estimator.js.map +1 -0
  214. package/dist/sdd/coverage/tracker.d.ts +47 -0
  215. package/dist/sdd/coverage/tracker.d.ts.map +1 -0
  216. package/dist/sdd/coverage/tracker.js +251 -0
  217. package/dist/sdd/coverage/tracker.js.map +1 -0
  218. package/dist/sdd/disaster/recovery.d.ts +11 -0
  219. package/dist/sdd/disaster/recovery.d.ts.map +1 -0
  220. package/dist/sdd/disaster/recovery.js +55 -0
  221. package/dist/sdd/disaster/recovery.js.map +1 -0
  222. package/dist/sdd/discovery/adaptive.d.ts +14 -0
  223. package/dist/sdd/discovery/adaptive.d.ts.map +1 -0
  224. package/dist/sdd/discovery/adaptive.js +145 -0
  225. package/dist/sdd/discovery/adaptive.js.map +1 -0
  226. package/dist/sdd/discovery/briefing-analyzer.d.ts +66 -0
  227. package/dist/sdd/discovery/briefing-analyzer.d.ts.map +1 -0
  228. package/dist/sdd/discovery/briefing-analyzer.js +672 -0
  229. package/dist/sdd/discovery/briefing-analyzer.js.map +1 -0
  230. package/dist/sdd/discovery/briefing.d.ts +109 -0
  231. package/dist/sdd/discovery/briefing.d.ts.map +1 -0
  232. package/dist/sdd/discovery/briefing.js +617 -0
  233. package/dist/sdd/discovery/briefing.js.map +1 -0
  234. package/dist/sdd/discovery/graph-builder.d.ts +10 -0
  235. package/dist/sdd/discovery/graph-builder.d.ts.map +1 -0
  236. package/dist/sdd/discovery/graph-builder.js +510 -0
  237. package/dist/sdd/discovery/graph-builder.js.map +1 -0
  238. package/dist/sdd/documentation/generator.d.ts +7 -0
  239. package/dist/sdd/documentation/generator.d.ts.map +1 -0
  240. package/dist/sdd/documentation/generator.js +119 -0
  241. package/dist/sdd/documentation/generator.js.map +1 -0
  242. package/dist/sdd/domain/types.d.ts +460 -0
  243. package/dist/sdd/domain/types.d.ts.map +1 -0
  244. package/dist/sdd/domain/types.js +25 -0
  245. package/dist/sdd/domain/types.js.map +1 -0
  246. package/dist/sdd/drift/detector.d.ts +28 -0
  247. package/dist/sdd/drift/detector.d.ts.map +1 -0
  248. package/dist/sdd/drift/detector.js +379 -0
  249. package/dist/sdd/drift/detector.js.map +1 -0
  250. package/dist/sdd/drift/exclusion.d.ts +54 -0
  251. package/dist/sdd/drift/exclusion.d.ts.map +1 -0
  252. package/dist/sdd/drift/exclusion.js +179 -0
  253. package/dist/sdd/drift/exclusion.js.map +1 -0
  254. package/dist/sdd/drift/signals.d.ts +52 -0
  255. package/dist/sdd/drift/signals.d.ts.map +1 -0
  256. package/dist/sdd/drift/signals.js +470 -0
  257. package/dist/sdd/drift/signals.js.map +1 -0
  258. package/dist/sdd/enforcement/interceptor.d.ts +47 -0
  259. package/dist/sdd/enforcement/interceptor.d.ts.map +1 -0
  260. package/dist/sdd/enforcement/interceptor.js +365 -0
  261. package/dist/sdd/enforcement/interceptor.js.map +1 -0
  262. package/dist/sdd/enforcement/workflow-tracker.d.ts +66 -0
  263. package/dist/sdd/enforcement/workflow-tracker.d.ts.map +1 -0
  264. package/dist/sdd/enforcement/workflow-tracker.js +229 -0
  265. package/dist/sdd/enforcement/workflow-tracker.js.map +1 -0
  266. package/dist/sdd/graph/engine.d.ts +44 -0
  267. package/dist/sdd/graph/engine.d.ts.map +1 -0
  268. package/dist/sdd/graph/engine.js +203 -0
  269. package/dist/sdd/graph/engine.js.map +1 -0
  270. package/dist/sdd/graph/index.d.ts +160 -0
  271. package/dist/sdd/graph/index.d.ts.map +1 -0
  272. package/dist/sdd/graph/index.js +624 -0
  273. package/dist/sdd/graph/index.js.map +1 -0
  274. package/dist/sdd/graph/integrity-guard.d.ts +129 -0
  275. package/dist/sdd/graph/integrity-guard.d.ts.map +1 -0
  276. package/dist/sdd/graph/integrity-guard.js +263 -0
  277. package/dist/sdd/graph/integrity-guard.js.map +1 -0
  278. package/dist/sdd/graph/integrity.d.ts +79 -0
  279. package/dist/sdd/graph/integrity.d.ts.map +1 -0
  280. package/dist/sdd/graph/integrity.js +462 -0
  281. package/dist/sdd/graph/integrity.js.map +1 -0
  282. package/dist/sdd/graph/pruner.d.ts +27 -0
  283. package/dist/sdd/graph/pruner.d.ts.map +1 -0
  284. package/dist/sdd/graph/pruner.js +203 -0
  285. package/dist/sdd/graph/pruner.js.map +1 -0
  286. package/dist/sdd/graph/traverse.d.ts +43 -0
  287. package/dist/sdd/graph/traverse.d.ts.map +1 -0
  288. package/dist/sdd/graph/traverse.js +265 -0
  289. package/dist/sdd/graph/traverse.js.map +1 -0
  290. package/dist/sdd/incidents/manager.d.ts +10 -0
  291. package/dist/sdd/incidents/manager.d.ts.map +1 -0
  292. package/dist/sdd/incidents/manager.js +63 -0
  293. package/dist/sdd/incidents/manager.js.map +1 -0
  294. package/dist/sdd/knowledge/transfer.d.ts +24 -0
  295. package/dist/sdd/knowledge/transfer.d.ts.map +1 -0
  296. package/dist/sdd/knowledge/transfer.js +94 -0
  297. package/dist/sdd/knowledge/transfer.js.map +1 -0
  298. package/dist/sdd/migrations/fixes.d.ts +2 -0
  299. package/dist/sdd/migrations/fixes.d.ts.map +1 -0
  300. package/dist/sdd/migrations/fixes.js +159 -0
  301. package/dist/sdd/migrations/fixes.js.map +1 -0
  302. package/dist/sdd/migrations/index.d.ts +2 -0
  303. package/dist/sdd/migrations/index.d.ts.map +1 -0
  304. package/dist/sdd/migrations/index.js +5 -0
  305. package/dist/sdd/migrations/index.js.map +1 -0
  306. package/dist/sdd/migrations/migration-runner.d.ts +41 -0
  307. package/dist/sdd/migrations/migration-runner.d.ts.map +1 -0
  308. package/dist/sdd/migrations/migration-runner.js +91 -0
  309. package/dist/sdd/migrations/migration-runner.js.map +1 -0
  310. package/dist/sdd/monitoring/setup.d.ts +40 -0
  311. package/dist/sdd/monitoring/setup.d.ts.map +1 -0
  312. package/dist/sdd/monitoring/setup.js +177 -0
  313. package/dist/sdd/monitoring/setup.js.map +1 -0
  314. package/dist/sdd/monitoring/telemetry.d.ts +18 -0
  315. package/dist/sdd/monitoring/telemetry.d.ts.map +1 -0
  316. package/dist/sdd/monitoring/telemetry.js +37 -0
  317. package/dist/sdd/monitoring/telemetry.js.map +1 -0
  318. package/dist/sdd/patterns/anti-patterns.d.ts +21 -0
  319. package/dist/sdd/patterns/anti-patterns.d.ts.map +1 -0
  320. package/dist/sdd/patterns/anti-patterns.js +286 -0
  321. package/dist/sdd/patterns/anti-patterns.js.map +1 -0
  322. package/dist/sdd/patterns/ast-clones.d.ts +23 -0
  323. package/dist/sdd/patterns/ast-clones.d.ts.map +1 -0
  324. package/dist/sdd/patterns/ast-clones.js +171 -0
  325. package/dist/sdd/patterns/ast-clones.js.map +1 -0
  326. package/dist/sdd/patterns/config-drift.d.ts +16 -0
  327. package/dist/sdd/patterns/config-drift.d.ts.map +1 -0
  328. package/dist/sdd/patterns/config-drift.js +322 -0
  329. package/dist/sdd/patterns/config-drift.js.map +1 -0
  330. package/dist/sdd/patterns/contradictions.d.ts +38 -0
  331. package/dist/sdd/patterns/contradictions.d.ts.map +1 -0
  332. package/dist/sdd/patterns/contradictions.js +237 -0
  333. package/dist/sdd/patterns/contradictions.js.map +1 -0
  334. package/dist/sdd/patterns/learner.d.ts +49 -0
  335. package/dist/sdd/patterns/learner.d.ts.map +1 -0
  336. package/dist/sdd/patterns/learner.js +226 -0
  337. package/dist/sdd/patterns/learner.js.map +1 -0
  338. package/dist/sdd/permissions/access.d.ts +69 -0
  339. package/dist/sdd/permissions/access.d.ts.map +1 -0
  340. package/dist/sdd/permissions/access.js +333 -0
  341. package/dist/sdd/permissions/access.js.map +1 -0
  342. package/dist/sdd/persistence/repository.d.ts +60 -0
  343. package/dist/sdd/persistence/repository.d.ts.map +1 -0
  344. package/dist/sdd/persistence/repository.js +96 -0
  345. package/dist/sdd/persistence/repository.js.map +1 -0
  346. package/dist/sdd/persistence/sqlite.d.ts +122 -0
  347. package/dist/sdd/persistence/sqlite.d.ts.map +1 -0
  348. package/dist/sdd/persistence/sqlite.js +602 -0
  349. package/dist/sdd/persistence/sqlite.js.map +1 -0
  350. package/dist/sdd/persistence/yaml.d.ts +41 -0
  351. package/dist/sdd/persistence/yaml.d.ts.map +1 -0
  352. package/dist/sdd/persistence/yaml.js +382 -0
  353. package/dist/sdd/persistence/yaml.js.map +1 -0
  354. package/dist/sdd/promises/classifier.d.ts +48 -0
  355. package/dist/sdd/promises/classifier.d.ts.map +1 -0
  356. package/dist/sdd/promises/classifier.js +215 -0
  357. package/dist/sdd/promises/classifier.js.map +1 -0
  358. package/dist/sdd/promises/tracker.d.ts +20 -0
  359. package/dist/sdd/promises/tracker.d.ts.map +1 -0
  360. package/dist/sdd/promises/tracker.js +204 -0
  361. package/dist/sdd/promises/tracker.js.map +1 -0
  362. package/dist/sdd/quality/scorer.d.ts +44 -0
  363. package/dist/sdd/quality/scorer.d.ts.map +1 -0
  364. package/dist/sdd/quality/scorer.js +216 -0
  365. package/dist/sdd/quality/scorer.js.map +1 -0
  366. package/dist/sdd/rollback/manager.d.ts +45 -0
  367. package/dist/sdd/rollback/manager.d.ts.map +1 -0
  368. package/dist/sdd/rollback/manager.js +266 -0
  369. package/dist/sdd/rollback/manager.js.map +1 -0
  370. package/dist/sdd/session/handoff.d.ts +52 -0
  371. package/dist/sdd/session/handoff.d.ts.map +1 -0
  372. package/dist/sdd/session/handoff.js +264 -0
  373. package/dist/sdd/session/handoff.js.map +1 -0
  374. package/dist/sdd/sla/tracker.d.ts +11 -0
  375. package/dist/sdd/sla/tracker.d.ts.map +1 -0
  376. package/dist/sdd/sla/tracker.js +52 -0
  377. package/dist/sdd/sla/tracker.js.map +1 -0
  378. package/dist/sdd/sync/git-sync.d.ts +61 -0
  379. package/dist/sdd/sync/git-sync.d.ts.map +1 -0
  380. package/dist/sdd/sync/git-sync.js +297 -0
  381. package/dist/sdd/sync/git-sync.js.map +1 -0
  382. package/dist/sdd/toggle/state.d.ts +8 -0
  383. package/dist/sdd/toggle/state.d.ts.map +1 -0
  384. package/dist/sdd/toggle/state.js +32 -0
  385. package/dist/sdd/toggle/state.js.map +1 -0
  386. package/dist/sdd/transactions/manager.d.ts +12 -0
  387. package/dist/sdd/transactions/manager.d.ts.map +1 -0
  388. package/dist/sdd/transactions/manager.js +80 -0
  389. package/dist/sdd/transactions/manager.js.map +1 -0
  390. package/dist/sdd/validation/coverage-index.d.ts +117 -0
  391. package/dist/sdd/validation/coverage-index.d.ts.map +1 -0
  392. package/dist/sdd/validation/coverage-index.js +251 -0
  393. package/dist/sdd/validation/coverage-index.js.map +1 -0
  394. package/dist/sdd/validation/executable.d.ts +26 -0
  395. package/dist/sdd/validation/executable.d.ts.map +1 -0
  396. package/dist/sdd/validation/executable.js +122 -0
  397. package/dist/sdd/validation/executable.js.map +1 -0
  398. package/dist/sdd/validation/smart-validator.d.ts +53 -0
  399. package/dist/sdd/validation/smart-validator.d.ts.map +1 -0
  400. package/dist/sdd/validation/smart-validator.js +347 -0
  401. package/dist/sdd/validation/smart-validator.js.map +1 -0
  402. package/dist/sdd/validation/validator.d.ts +39 -0
  403. package/dist/sdd/validation/validator.d.ts.map +1 -0
  404. package/dist/sdd/validation/validator.js +512 -0
  405. package/dist/sdd/validation/validator.js.map +1 -0
  406. package/dist/sdd/workflow/exporter.d.ts +36 -0
  407. package/dist/sdd/workflow/exporter.d.ts.map +1 -0
  408. package/dist/sdd/workflow/exporter.js +112 -0
  409. package/dist/sdd/workflow/exporter.js.map +1 -0
  410. package/dist/sdd/workflows/ab-testing.d.ts +18 -0
  411. package/dist/sdd/workflows/ab-testing.d.ts.map +1 -0
  412. package/dist/sdd/workflows/ab-testing.js +67 -0
  413. package/dist/sdd/workflows/ab-testing.js.map +1 -0
  414. package/dist/sdd/workflows/bug-fix.d.ts +13 -0
  415. package/dist/sdd/workflows/bug-fix.d.ts.map +1 -0
  416. package/dist/sdd/workflows/bug-fix.js +65 -0
  417. package/dist/sdd/workflows/bug-fix.js.map +1 -0
  418. package/dist/sdd/workflows/data-migration.d.ts +14 -0
  419. package/dist/sdd/workflows/data-migration.d.ts.map +1 -0
  420. package/dist/sdd/workflows/data-migration.js +68 -0
  421. package/dist/sdd/workflows/data-migration.js.map +1 -0
  422. package/dist/sdd/workflows/deprecation.d.ts +15 -0
  423. package/dist/sdd/workflows/deprecation.d.ts.map +1 -0
  424. package/dist/sdd/workflows/deprecation.js +68 -0
  425. package/dist/sdd/workflows/deprecation.js.map +1 -0
  426. package/dist/sdd/workflows/feature-flags.d.ts +14 -0
  427. package/dist/sdd/workflows/feature-flags.d.ts.map +1 -0
  428. package/dist/sdd/workflows/feature-flags.js +73 -0
  429. package/dist/sdd/workflows/feature-flags.js.map +1 -0
  430. package/dist/sdd/workflows/hotfix.d.ts +13 -0
  431. package/dist/sdd/workflows/hotfix.d.ts.map +1 -0
  432. package/dist/sdd/workflows/hotfix.js +67 -0
  433. package/dist/sdd/workflows/hotfix.js.map +1 -0
  434. package/dist/sdd/workflows/multi-tenancy.d.ts +13 -0
  435. package/dist/sdd/workflows/multi-tenancy.d.ts.map +1 -0
  436. package/dist/sdd/workflows/multi-tenancy.js +68 -0
  437. package/dist/sdd/workflows/multi-tenancy.js.map +1 -0
  438. package/dist/sdd/workflows/onboarding.d.ts +7 -0
  439. package/dist/sdd/workflows/onboarding.d.ts.map +1 -0
  440. package/dist/sdd/workflows/onboarding.js +43 -0
  441. package/dist/sdd/workflows/onboarding.js.map +1 -0
  442. package/dist/sdd/workflows/refactoring.d.ts +14 -0
  443. package/dist/sdd/workflows/refactoring.d.ts.map +1 -0
  444. package/dist/sdd/workflows/refactoring.js +73 -0
  445. package/dist/sdd/workflows/refactoring.js.map +1 -0
  446. package/dist/server/events.d.ts +64 -0
  447. package/dist/server/events.d.ts.map +1 -0
  448. package/dist/server/events.js +149 -0
  449. package/dist/server/events.js.map +1 -0
  450. package/dist/server/server.d.ts +33 -0
  451. package/dist/server/server.d.ts.map +1 -0
  452. package/dist/server/server.js +1019 -0
  453. package/dist/server/server.js.map +1 -0
  454. package/marketplace.json +39 -0
  455. package/package.json +65 -0
  456. package/src/code-intelligence/analyzer.ts +350 -0
  457. package/src/code-intelligence/ast/cache.ts +61 -0
  458. package/src/code-intelligence/ast/common.ts +62 -0
  459. package/src/code-intelligence/ast/component.ts +39 -0
  460. package/src/code-intelligence/ast/fallback.ts +44 -0
  461. package/src/code-intelligence/ast/index.ts +4 -0
  462. package/src/code-intelligence/ast/ir.ts +91 -0
  463. package/src/code-intelligence/ast/metrics.ts +65 -0
  464. package/src/code-intelligence/ast/registry.ts +28 -0
  465. package/src/code-intelligence/ast/tree-sitter.ts +226 -0
  466. package/src/code-intelligence/ast/typescript.ts +140 -0
  467. package/src/index.ts +22 -0
  468. package/src/mcp/server.ts +77 -0
  469. package/src/opencode/hooks.ts +728 -0
  470. package/src/opencode/router/categories.ts +192 -0
  471. package/src/opencode/router/embeddings.ts +149 -0
  472. package/src/opencode/router/graph-state-snapshot.ts +163 -0
  473. package/src/opencode/router/index.ts +44 -0
  474. package/src/opencode/router/intent-classifier.ts +140 -0
  475. package/src/opencode/router/semantic-nudge.ts +89 -0
  476. package/src/opencode/router/state-gate.ts +192 -0
  477. package/src/opencode/router/tool-embeddings.ts +162 -0
  478. package/src/opencode/router/tool-registry.ts +135 -0
  479. package/src/opencode/router/tool-taxonomy.ts +284 -0
  480. package/src/opencode/router/tools-composite.ts +685 -0
  481. package/src/opencode/shell-hooks.ts +115 -0
  482. package/src/opencode/system-prompt.ts +617 -0
  483. package/src/opencode/tools.ts +4102 -0
  484. package/src/opencode/workflows/chains.ts +205 -0
  485. package/src/opencode/workflows/executor.ts +172 -0
  486. package/src/opencode/workflows/index.ts +21 -0
  487. package/src/opencode/workflows/tools-workflow.ts +91 -0
  488. package/src/opencode/workflows/types.ts +42 -0
  489. package/src/sdd/analysis/compliance.ts +279 -0
  490. package/src/sdd/analysis/scalability.ts +97 -0
  491. package/src/sdd/analysis/security.ts +135 -0
  492. package/src/sdd/brownfield/scanner.ts +276 -0
  493. package/src/sdd/cache/manager.ts +899 -0
  494. package/src/sdd/cache/snapshot-store.ts +185 -0
  495. package/src/sdd/changes/manager.ts +326 -0
  496. package/src/sdd/cicd/generators.ts +1095 -0
  497. package/src/sdd/code-quality/complexity.ts +235 -0
  498. package/src/sdd/code-quality/conventions.ts +220 -0
  499. package/src/sdd/code-quality/dependencies.ts +203 -0
  500. package/src/sdd/code-quality/import-analyzer.ts +294 -0
  501. package/src/sdd/code-quality/metrics.ts +232 -0
  502. package/src/sdd/code-quality/smells.ts +415 -0
  503. package/src/sdd/code-quality/symbol-parser.ts +335 -0
  504. package/src/sdd/code-quality/usage-tracker.ts +527 -0
  505. package/src/sdd/code-quality/utils.ts +13 -0
  506. package/src/sdd/codegen/generator.ts +1181 -0
  507. package/src/sdd/constitution/validator.ts +253 -0
  508. package/src/sdd/cost/estimator.ts +147 -0
  509. package/src/sdd/coverage/tracker.ts +342 -0
  510. package/src/sdd/disaster/recovery.ts +79 -0
  511. package/src/sdd/discovery/adaptive.ts +167 -0
  512. package/src/sdd/discovery/briefing-analyzer.ts +802 -0
  513. package/src/sdd/discovery/briefing.ts +770 -0
  514. package/src/sdd/discovery/graph-builder.ts +598 -0
  515. package/src/sdd/documentation/generator.ts +158 -0
  516. package/src/sdd/domain/types.ts +658 -0
  517. package/src/sdd/drift/detector.ts +465 -0
  518. package/src/sdd/drift/exclusion.ts +223 -0
  519. package/src/sdd/drift/signals.ts +577 -0
  520. package/src/sdd/enforcement/interceptor.ts +444 -0
  521. package/src/sdd/enforcement/workflow-tracker.ts +263 -0
  522. package/src/sdd/graph/engine.ts +277 -0
  523. package/src/sdd/graph/index.ts +700 -0
  524. package/src/sdd/graph/integrity-guard.ts +348 -0
  525. package/src/sdd/graph/integrity.ts +628 -0
  526. package/src/sdd/graph/pruner.ts +221 -0
  527. package/src/sdd/graph/traverse.ts +331 -0
  528. package/src/sdd/incidents/manager.ts +87 -0
  529. package/src/sdd/knowledge/transfer.ts +140 -0
  530. package/src/sdd/migrations/fixes.ts +154 -0
  531. package/src/sdd/migrations/index.ts +14 -0
  532. package/src/sdd/migrations/migration-runner.ts +118 -0
  533. package/src/sdd/monitoring/setup.ts +237 -0
  534. package/src/sdd/monitoring/telemetry.ts +44 -0
  535. package/src/sdd/patterns/anti-patterns.ts +333 -0
  536. package/src/sdd/patterns/ast-clones.ts +214 -0
  537. package/src/sdd/patterns/config-drift.ts +346 -0
  538. package/src/sdd/patterns/contradictions.ts +323 -0
  539. package/src/sdd/patterns/learner.ts +266 -0
  540. package/src/sdd/permissions/access.ts +478 -0
  541. package/src/sdd/persistence/repository.ts +166 -0
  542. package/src/sdd/persistence/sqlite.ts +703 -0
  543. package/src/sdd/persistence/yaml.ts +409 -0
  544. package/src/sdd/promises/classifier.ts +253 -0
  545. package/src/sdd/promises/tracker.ts +258 -0
  546. package/src/sdd/quality/scorer.ts +263 -0
  547. package/src/sdd/rollback/manager.ts +361 -0
  548. package/src/sdd/session/handoff.ts +354 -0
  549. package/src/sdd/sla/tracker.ts +68 -0
  550. package/src/sdd/sync/git-sync.ts +401 -0
  551. package/src/sdd/toggle/state.ts +38 -0
  552. package/src/sdd/transactions/manager.ts +93 -0
  553. package/src/sdd/validation/coverage-index.ts +339 -0
  554. package/src/sdd/validation/executable.ts +127 -0
  555. package/src/sdd/validation/smart-validator.ts +470 -0
  556. package/src/sdd/validation/validator.ts +641 -0
  557. package/src/sdd/workflow/exporter.ts +169 -0
  558. package/src/sdd/workflows/ab-testing.ts +90 -0
  559. package/src/sdd/workflows/bug-fix.ts +81 -0
  560. package/src/sdd/workflows/data-migration.ts +86 -0
  561. package/src/sdd/workflows/deprecation.ts +87 -0
  562. package/src/sdd/workflows/feature-flags.ts +91 -0
  563. package/src/sdd/workflows/hotfix.ts +83 -0
  564. package/src/sdd/workflows/multi-tenancy.ts +84 -0
  565. package/src/sdd/workflows/onboarding.ts +82 -0
  566. package/src/sdd/workflows/refactoring.ts +90 -0
  567. package/src/server/events.ts +184 -0
  568. package/src/server/server.ts +1088 -0
@@ -0,0 +1,1095 @@
1
+ import type { KnowledgeGraph, EndpointNode } from "../domain/types.js"
2
+ import { getNodesByType } from "../graph/engine.js"
3
+ import { writeFileSync, existsSync, mkdirSync } from "fs"
4
+ import { join, dirname } from "path"
5
+
6
+ export type CicdPlatform = "github" | "gitlab" | "jenkins" | "docker" | "circleci" | "azure" | "aws" | "travis" | "npm" | "compose" | "maven" | "pip" | "all"
7
+
8
+ export interface CicdConfig {
9
+ platform: CicdPlatform
10
+ projectDir: string
11
+ graph: KnowledgeGraph
12
+ }
13
+
14
+ export interface CicdResult {
15
+ platform: string
16
+ file_path: string
17
+ content: string
18
+ }
19
+
20
+ export function generateCicd(config: CicdConfig): CicdResult[] {
21
+ const results: CicdResult[] = []
22
+ const platforms = config.platform === "all"
23
+ ? ["github", "gitlab", "jenkins", "docker", "circleci", "azure", "aws", "travis", "npm", "compose", "maven", "pip", "go"]
24
+ : [config.platform]
25
+
26
+ for (const platform of platforms) {
27
+ const generator = generators[platform]
28
+ if (generator) {
29
+ results.push(generator(config))
30
+ }
31
+ }
32
+
33
+ return results
34
+ }
35
+
36
+ function generateGitHubActions(config: CicdConfig): CicdResult {
37
+ const endpoints = getNodesByType<EndpointNode>(config.graph, "endpoint")
38
+ const hasApi = endpoints.length > 0
39
+
40
+ const apiSteps = hasApi ? `
41
+ - name: Run API tests
42
+ run: |
43
+ echo "Running API tests for ${endpoints.length} endpoints"
44
+ npm test -- --grep "api"
45
+ ` : ""
46
+
47
+ const content = `name: SDD CI Pipeline
48
+
49
+ on:
50
+ push:
51
+ branches: [main, develop]
52
+ pull_request:
53
+ branches: [main]
54
+
55
+ jobs:
56
+ sdd-validate:
57
+ runs-on: ubuntu-latest
58
+ steps:
59
+ - uses: actions/checkout@v4
60
+
61
+ - name: Setup Node.js
62
+ uses: actions/setup-node@v4
63
+ with:
64
+ node-version: '20'
65
+
66
+ - name: Install dependencies
67
+ run: npm ci
68
+
69
+ - name: Validate SDD graph
70
+ run: |
71
+ echo "Validating SDD specification..."
72
+ npx opencode-telos validate
73
+ continue-on-error: false
74
+
75
+ - name: Check SDD drift
76
+ run: |
77
+ echo "Checking specification drift..."
78
+ npx opencode-telos drift
79
+ continue-on-error: true
80
+
81
+ - name: Check SDD quality
82
+ run: |
83
+ echo "Checking SDD quality score..."
84
+ npx opencode-telos quality
85
+ continue-on-error: true
86
+
87
+ - name: Detect anti-patterns
88
+ run: |
89
+ echo "Detecting anti-patterns..."
90
+ npx opencode-telos anti-patterns
91
+ continue-on-error: true
92
+
93
+ - name: Check test coverage
94
+ run: |
95
+ echo "Checking test coverage..."
96
+ npx opencode-telos coverage
97
+ continue-on-error: true
98
+
99
+ - name: Detect contradictions
100
+ run: |
101
+ echo "Detecting contradictions..."
102
+ npx opencode-telos contradictions
103
+ continue-on-error: true
104
+ ${apiSteps}
105
+ - name: Build
106
+ run: npm run build
107
+
108
+ sdd-deploy:
109
+ needs: sdd-validate
110
+ runs-on: ubuntu-latest
111
+ if: github.ref == 'refs/heads/main'
112
+ steps:
113
+ - uses: actions/checkout@v4
114
+
115
+ - name: Setup Node.js
116
+ uses: actions/setup-node@v4
117
+ with:
118
+ node-version: '20'
119
+
120
+ - name: Install dependencies
121
+ run: npm ci
122
+
123
+ - name: Build
124
+ run: npm run build
125
+
126
+ - name: Deploy
127
+ run: |
128
+ echo "Deploying with SDD validation..."
129
+ npx opencode-telos full-cycle
130
+ `
131
+
132
+ const filePath = join(config.projectDir, ".github", "workflows", "sdd-ci.yml")
133
+ return { platform: "GitHub Actions", file_path: filePath, content }
134
+ }
135
+
136
+ function generateGitLabCI(config: CicdConfig): CicdResult {
137
+ const content = `stages:
138
+ - validate
139
+ - test
140
+ - build
141
+ - deploy
142
+
143
+ sdd-validate:
144
+ stage: validate
145
+ image: node:20
146
+ script:
147
+ - npm ci
148
+ - echo "Validating SDD graph..."
149
+ - npx opencode-telos validate
150
+ - echo "Checking SDD drift..."
151
+ - npx opencode-telos drift || true
152
+ - echo "Checking SDD quality..."
153
+ - npx opencode-telos quality || true
154
+ - echo "Detecting anti-patterns..."
155
+ - npx opencode-telos anti-patterns || true
156
+ allow_failure: false
157
+
158
+ sdd-test:
159
+ stage: test
160
+ image: node:20
161
+ script:
162
+ - npm ci
163
+ - npm test
164
+ allow_failure: false
165
+
166
+ sdd-build:
167
+ stage: build
168
+ image: node:20
169
+ script:
170
+ - npm ci
171
+ - npm run build
172
+ only:
173
+ - main
174
+ - develop
175
+
176
+ sdd-deploy:
177
+ stage: deploy
178
+ image: node:20
179
+ script:
180
+ - echo "Deploying with SDD validation..."
181
+ - npx opencode-telos full-cycle
182
+ only:
183
+ - main
184
+ when: manual
185
+ `
186
+
187
+ const filePath = join(config.projectDir, ".gitlab-ci.yml")
188
+ return { platform: "GitLab CI", file_path: filePath, content }
189
+ }
190
+
191
+ function generateJenkins(config: CicdConfig): CicdResult {
192
+ const content = `pipeline {
193
+ agent any
194
+
195
+ stages {
196
+ stage('SDD Validate') {
197
+ steps {
198
+ script {
199
+ echo "Validating SDD graph..."
200
+ sh 'npx opencode-telos validate'
201
+ echo "Checking SDD drift..."
202
+ sh 'npx opencode-telos drift || true'
203
+ echo "Checking SDD quality..."
204
+ sh 'npx opencode-telos quality || true'
205
+ echo "Detecting anti-patterns..."
206
+ sh 'npx opencode-telos anti-patterns || true'
207
+ }
208
+ }
209
+ }
210
+
211
+ stage('Test') {
212
+ steps {
213
+ sh 'npm test'
214
+ }
215
+ }
216
+
217
+ stage('Build') {
218
+ steps {
219
+ sh 'npm run build'
220
+ }
221
+ }
222
+
223
+ stage('Deploy') {
224
+ when {
225
+ branch 'main'
226
+ }
227
+ steps {
228
+ script {
229
+ echo "Deploying with SDD validation..."
230
+ sh 'npx opencode-telos full-cycle'
231
+ }
232
+ }
233
+ }
234
+ }
235
+
236
+ post {
237
+ always {
238
+ echo "SDD pipeline completed"
239
+ }
240
+ success {
241
+ echo "SDD pipeline succeeded"
242
+ }
243
+ failure {
244
+ echo "SDD pipeline failed"
245
+ }
246
+ }
247
+ }
248
+ `
249
+
250
+ const filePath = join(config.projectDir, "Jenkinsfile")
251
+ return { platform: "Jenkins", file_path: filePath, content }
252
+ }
253
+
254
+ function generateDocker(config: CicdConfig): CicdResult {
255
+ const content = `# Multi-stage build for SDD-validated project
256
+ FROM node:20-alpine AS builder
257
+
258
+ WORKDIR /app
259
+
260
+ # Copy package files
261
+ COPY package*.json ./
262
+
263
+ # Install dependencies
264
+ RUN npm ci --only=production
265
+
266
+ # Copy source code
267
+ COPY . .
268
+
269
+ # Run SDD validation before build
270
+ RUN npx opencode-telos validate || echo "SDD validation skipped in Docker"
271
+
272
+ # Build application
273
+ RUN npm run build
274
+
275
+ # Production stage
276
+ FROM node:20-alpine AS production
277
+
278
+ WORKDIR /app
279
+
280
+ # Copy built application
281
+ COPY --from=builder /app/dist ./dist
282
+ COPY --from=builder /app/node_modules ./node_modules
283
+ COPY --from=builder /app/package.json ./
284
+
285
+ # Health check
286
+ HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \\
287
+ CMD curl -f http://localhost:3000/health || exit 1
288
+
289
+ EXPOSE 3000
290
+
291
+ CMD ["node", "dist/index.js"]
292
+ `
293
+
294
+ const filePath = join(config.projectDir, "Dockerfile")
295
+ return { platform: "Docker", file_path: filePath, content }
296
+ }
297
+
298
+ function generateCircleCI(config: CicdConfig): CicdResult {
299
+ const content = `version: 2.1
300
+
301
+ orbs:
302
+ node: circleci/node@5.1
303
+ sdd: circleci/opencode-telos@1.0
304
+
305
+ executors:
306
+ node-executor:
307
+ docker:
308
+ - image: cimg/node:20.0
309
+
310
+ jobs:
311
+ sdd-validate:
312
+ executor: node-executor
313
+ steps:
314
+ - checkout
315
+ - node/install-packages
316
+ - run:
317
+ name: Validate SDD graph
318
+ command: npx opencode-telos validate
319
+ - run:
320
+ name: Check SDD drift
321
+ command: npx opencode-telos drift || true
322
+ - run:
323
+ name: Check SDD quality
324
+ command: npx opencode-telos quality || true
325
+ - run:
326
+ name: Detect anti-patterns
327
+ command: npx opencode-telos anti-patterns || true
328
+
329
+ test:
330
+ executor: node-executor
331
+ steps:
332
+ - checkout
333
+ - node/install-packages
334
+ - run:
335
+ name: Run tests
336
+ command: npm test
337
+
338
+ build:
339
+ executor: node-executor
340
+ steps:
341
+ - checkout
342
+ - node/install-packages
343
+ - run:
344
+ name: Build
345
+ command: npm run build
346
+
347
+ workflows:
348
+ sdd-pipeline:
349
+ jobs:
350
+ - sdd-validate
351
+ - test:
352
+ requires:
353
+ - sdd-validate
354
+ - build:
355
+ requires:
356
+ - test
357
+ filters:
358
+ branches:
359
+ only: main
360
+ `
361
+
362
+ const filePath = join(config.projectDir, ".circleci", "config.yml")
363
+ return { platform: "CircleCI", file_path: filePath, content }
364
+ }
365
+
366
+ function generateAzureDevOps(config: CicdConfig): CicdResult {
367
+ const content = `trigger:
368
+ branches:
369
+ include:
370
+ - main
371
+ - develop
372
+
373
+ pool:
374
+ vmImage: 'ubuntu-latest'
375
+
376
+ stages:
377
+ - stage: Validate
378
+ displayName: 'SDD Validation'
379
+ jobs:
380
+ - job: SDDValidate
381
+ displayName: 'Validate SDD Graph'
382
+ steps:
383
+ - task: NodeTool@0
384
+ inputs:
385
+ versionSpec: '20.x'
386
+ displayName: 'Install Node.js'
387
+ - script: |
388
+ npm ci
389
+ echo "Validating SDD graph..."
390
+ npx opencode-telos validate
391
+ displayName: 'SDD Validate'
392
+ - script: |
393
+ echo "Checking SDD drift..."
394
+ npx opencode-telos drift || true
395
+ displayName: 'Check Drift'
396
+ - script: |
397
+ echo "Checking SDD quality..."
398
+ npx opencode-telos quality || true
399
+ displayName: 'Check Quality'
400
+
401
+ - stage: Test
402
+ displayName: 'Run Tests'
403
+ dependsOn: Validate
404
+ jobs:
405
+ - job: Test
406
+ displayName: 'Run Tests'
407
+ steps:
408
+ - task: NodeTool@0
409
+ inputs:
410
+ versionSpec: '20.x'
411
+ displayName: 'Install Node.js'
412
+ - script: |
413
+ npm ci
414
+ npm test
415
+ displayName: 'Run Tests'
416
+
417
+ - stage: Build
418
+ displayName: 'Build'
419
+ dependsOn: Test
420
+ jobs:
421
+ - job: Build
422
+ displayName: 'Build Application'
423
+ steps:
424
+ - task: NodeTool@0
425
+ inputs:
426
+ versionSpec: '20.x'
427
+ displayName: 'Install Node.js'
428
+ - script: |
429
+ npm ci
430
+ npm run build
431
+ displayName: 'Build'
432
+
433
+ - stage: Deploy
434
+ displayName: 'Deploy'
435
+ dependsOn: Build
436
+ condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
437
+ jobs:
438
+ - job: Deploy
439
+ displayName: 'Deploy Application'
440
+ steps:
441
+ - script: |
442
+ echo "Deploying with SDD validation..."
443
+ npx opencode-telos full-cycle
444
+ displayName: 'Deploy'
445
+ `
446
+
447
+ const filePath = join(config.projectDir, "azure-pipelines.yml")
448
+ return { platform: "Azure DevOps", file_path: filePath, content }
449
+ }
450
+
451
+ function generateAWSCodePipeline(config: CicdConfig): CicdResult {
452
+ const content = `# AWS CodePipeline configuration for SDD-validated project
453
+ # This file should be used with AWS CloudFormation or CDK
454
+
455
+ AWSTemplateFormatVersion: '2010-09-09'
456
+ Description: 'SDD CI/CD Pipeline'
457
+
458
+ Resources:
459
+ SDDPipeline:
460
+ Type: AWS::CodePipeline::Pipeline
461
+ Properties:
462
+ Name: SDD-Pipeline
463
+ RoleArn: !GetAtt PipelineRole.Arn
464
+ ArtifactStore:
465
+ Type: S3
466
+ Location: !Ref ArtifactBucket
467
+ Stages:
468
+ - Name: Source
469
+ Actions:
470
+ - Name: SourceAction
471
+ ActionTypeId:
472
+ Category: Source
473
+ Owner: AWS
474
+ Provider: CodeStarSourceConnection
475
+ Version: '1'
476
+ Configuration:
477
+ ConnectionArn: !Ref GitHubConnection
478
+ FullRepositoryId: !Ref RepositoryId
479
+ BranchName: main
480
+ OutputArtifacts:
481
+ - Name: SourceOutput
482
+
483
+ - Name: Validate
484
+ Actions:
485
+ - Name: SDDValidate
486
+ ActionTypeId:
487
+ Category: Build
488
+ Owner: AWS
489
+ Provider: CodeBuild
490
+ Version: '1'
491
+ Configuration:
492
+ ProjectName: !Ref SDDValidateProject
493
+ InputArtifacts:
494
+ - Name: SourceOutput
495
+ OutputArtifacts:
496
+ - Name: ValidateOutput
497
+
498
+ - Name: Test
499
+ Actions:
500
+ - Name: Test
501
+ ActionTypeId:
502
+ Category: Build
503
+ Owner: AWS
504
+ Provider: CodeBuild
505
+ Version: '1'
506
+ Configuration:
507
+ ProjectName: !Ref TestProject
508
+ InputArtifacts:
509
+ - Name: ValidateOutput
510
+ OutputArtifacts:
511
+ - Name: TestOutput
512
+
513
+ - Name: Deploy
514
+ Actions:
515
+ - Name: Deploy
516
+ ActionTypeId:
517
+ Category: Deploy
518
+ Owner: AWS
519
+ Provider: CodeDeploy
520
+ Version: '1'
521
+ Configuration:
522
+ ApplicationName: !Ref ApplicationName
523
+ DeploymentGroupName: !Ref DeploymentGroupName
524
+ InputArtifacts:
525
+ - Name: TestOutput
526
+
527
+ SDDValidateProject:
528
+ Type: AWS::CodeBuild::Project
529
+ Properties:
530
+ Name: SDD-Validate
531
+ ServiceRole: !GetAtt CodeBuildRole.Arn
532
+ Artifacts:
533
+ Type: CODEPIPELINE
534
+ Environment:
535
+ Type: LINUX_CONTAINER
536
+ Image: aws/codebuild/amazonlinux2-x86_64-standard:4.0
537
+ ComputeType: BUILD_GENERAL1_SMALL
538
+ Source:
539
+ Type: CODEPIPELINE
540
+ BuildSpec: |
541
+ version: 0.2
542
+ phases:
543
+ install:
544
+ runtime-versions:
545
+ nodejs: 20
546
+ commands:
547
+ - npm ci
548
+ build:
549
+ commands:
550
+ - echo "Validating SDD graph..."
551
+ - npx opencode-telos validate
552
+ - echo "Checking SDD drift..."
553
+ - npx opencode-telos drift || true
554
+ - echo "Checking SDD quality..."
555
+ - npx opencode-telos quality || true
556
+
557
+ TestProject:
558
+ Type: AWS::CodeBuild::Project
559
+ Properties:
560
+ Name: SDD-Test
561
+ ServiceRole: !GetAtt CodeBuildRole.Arn
562
+ Artifacts:
563
+ Type: CODEPIPELINE
564
+ Environment:
565
+ Type: LINUX_CONTAINER
566
+ Image: aws/codebuild/amazonlinux2-x86_64-standard:4.0
567
+ ComputeType: BUILD_GENERAL1_SMALL
568
+ Source:
569
+ Type: CODEPIPELINE
570
+ BuildSpec: |
571
+ version: 0.2
572
+ phases:
573
+ install:
574
+ runtime-versions:
575
+ nodejs: 20
576
+ commands:
577
+ - npm ci
578
+ build:
579
+ commands:
580
+ - npm test
581
+
582
+ ArtifactBucket:
583
+ Type: AWS::S3::Bucket
584
+
585
+ PipelineRole:
586
+ Type: AWS::IAM::Role
587
+ Properties:
588
+ AssumeRolePolicyDocument:
589
+ Version: '2012-10-17'
590
+ Statement:
591
+ - Effect: Allow
592
+ Principal:
593
+ Service: codepipeline.amazonaws.com
594
+ Action: sts:AssumeRole
595
+
596
+ CodeBuildRole:
597
+ Type: AWS::IAM::Role
598
+ Properties:
599
+ AssumeRolePolicyDocument:
600
+ Version: '2012-10-17'
601
+ Statement:
602
+ - Effect: Allow
603
+ Principal:
604
+ Service: codebuild.amazonaws.com
605
+ Action: sts:AssumeRole
606
+
607
+ Parameters:
608
+ RepositoryId:
609
+ Type: String
610
+ Description: 'GitHub repository ID (owner/repo)'
611
+ GitHubConnection:
612
+ Type: String
613
+ Description: 'ARN of CodeStar connection to GitHub'
614
+ ApplicationName:
615
+ Type: String
616
+ Description: 'Name of the application'
617
+ DeploymentGroupName:
618
+ Type: String
619
+ Description: 'Name of the deployment group'
620
+ `
621
+
622
+ const filePath = join(config.projectDir, "buildspec.yml")
623
+ return { platform: "AWS CodePipeline", file_path: filePath, content }
624
+ }
625
+
626
+ function generateTravisCI(config: CicdConfig): CicdResult {
627
+ const content = `language: node_js
628
+
629
+ node_js:
630
+ - '20'
631
+
632
+ cache:
633
+ directories:
634
+ - node_modules
635
+
636
+ branches:
637
+ only:
638
+ - main
639
+ - develop
640
+
641
+ stages:
642
+ - validate
643
+ - test
644
+ - build
645
+ - name: deploy
646
+ if: branch = main
647
+
648
+ jobs:
649
+ include:
650
+ - stage: validate
651
+ script:
652
+ - echo "Validating SDD graph..."
653
+ - npx opencode-telos validate
654
+ - echo "Checking SDD drift..."
655
+ - npx opencode-telos drift || true
656
+ - echo "Checking SDD quality..."
657
+ - npx opencode-telos quality || true
658
+ - echo "Detecting anti-patterns..."
659
+ - npx opencode-telos anti-patterns || true
660
+
661
+ - stage: test
662
+ script:
663
+ - npm test
664
+
665
+ - stage: build
666
+ script:
667
+ - npm run build
668
+
669
+ - stage: deploy
670
+ script:
671
+ - echo "Deploying with SDD validation..."
672
+ - npx opencode-telos full-cycle
673
+
674
+ notifications:
675
+ email:
676
+ on_success: never
677
+ on_failure: always
678
+ `
679
+
680
+ const filePath = join(config.projectDir, ".travis.yml")
681
+ return { platform: "Travis CI", file_path: filePath, content }
682
+ }
683
+
684
+ function generateNpmPublish(config: CicdConfig): CicdResult {
685
+ const content = `name: NPM Publish
686
+
687
+ on:
688
+ release:
689
+ types: [created]
690
+
691
+ jobs:
692
+ publish:
693
+ runs-on: ubuntu-latest
694
+ steps:
695
+ - uses: actions/checkout@v4
696
+
697
+ - name: Setup Node.js
698
+ uses: actions/setup-node@v4
699
+ with:
700
+ node-version: '20'
701
+ registry-url: 'https://registry.npmjs.org'
702
+
703
+ - name: Install dependencies
704
+ run: npm ci
705
+
706
+ - name: Run tests
707
+ run: npm test
708
+
709
+ - name: Build
710
+ run: npm run build
711
+
712
+ - name: Validate SDD before publish
713
+ run: |
714
+ echo "Validating SDD graph before publish..."
715
+ npx opencode-telos validate
716
+ npx opencode-telos quality
717
+
718
+ - name: Publish to NPM
719
+ run: npm publish
720
+ env:
721
+ NODE_AUTH_TOKEN: \${{ secrets.NPM_TOKEN }}
722
+
723
+ - name: Create GitHub Release
724
+ uses: softprops/action-gh-release@v1
725
+ with:
726
+ files: |
727
+ dist/**
728
+ package.json
729
+ env:
730
+ GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }}
731
+ `
732
+
733
+ const filePath = join(config.projectDir, ".github", "workflows", "npm-publish.yml")
734
+ return { platform: "NPM Publish", file_path: filePath, content }
735
+ }
736
+
737
+ function generateDockerCompose(config: CicdConfig): CicdResult {
738
+ const endpoints = getNodesByType<EndpointNode>(config.graph, "endpoint")
739
+ const hasApi = endpoints.length > 0
740
+ const port = hasApi ? 3000 : 8080
741
+
742
+ const content = `version: '3.8'
743
+
744
+ services:
745
+ app:
746
+ build:
747
+ context: .
748
+ dockerfile: Dockerfile
749
+ ports:
750
+ - "\${APP_PORT:-${port}}:${port}"
751
+ environment:
752
+ - NODE_ENV=\${NODE_ENV:-production}
753
+ - DATABASE_URL=\${DATABASE_URL}
754
+ - REDIS_URL=\${REDIS_URL:-redis://redis:6379}
755
+ depends_on:
756
+ - redis
757
+ - db
758
+ restart: unless-stopped
759
+ healthcheck:
760
+ test: ["CMD", "curl", "-f", "http://localhost:${port}/health"]
761
+ interval: 30s
762
+ timeout: 10s
763
+ retries: 3
764
+ start_period: 40s
765
+ networks:
766
+ - app-network
767
+
768
+ redis:
769
+ image: redis:7-alpine
770
+ ports:
771
+ - "6379:6379"
772
+ volumes:
773
+ - redis-data:/data
774
+ restart: unless-stopped
775
+ networks:
776
+ - app-network
777
+
778
+ db:
779
+ image: postgres:15-alpine
780
+ environment:
781
+ - POSTGRES_DB=\${POSTGRES_DB:-app}
782
+ - POSTGRES_USER=\${POSTGRES_USER:-postgres}
783
+ - POSTGRES_PASSWORD=\${POSTGRES_PASSWORD:-secret}
784
+ ports:
785
+ - "5432:5432"
786
+ volumes:
787
+ - postgres-data:/var/lib/postgresql/data
788
+ restart: unless-stopped
789
+ networks:
790
+ - app-network
791
+
792
+ nginx:
793
+ image: nginx:alpine
794
+ ports:
795
+ - "80:80"
796
+ - "443:443"
797
+ volumes:
798
+ - ./nginx.conf:/etc/nginx/nginx.conf:ro
799
+ - ./certs:/etc/nginx/certs:ro
800
+ depends_on:
801
+ - app
802
+ restart: unless-stopped
803
+ networks:
804
+ - app-network
805
+
806
+ volumes:
807
+ redis-data:
808
+ postgres-data:
809
+
810
+ networks:
811
+ app-network:
812
+ driver: bridge
813
+ `
814
+
815
+ const filePath = join(config.projectDir, "docker-compose.yml")
816
+ return { platform: "Docker Compose", file_path: filePath, content }
817
+ }
818
+
819
+ function generateMaven(config: CicdConfig): CicdResult {
820
+ const content = `<?xml version="1.0" encoding="UTF-8"?>
821
+ <project xmlns="http://maven.apache.org/POM/4.0.0"
822
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
823
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
824
+ <modelVersion>4.0.0</modelVersion>
825
+
826
+ <groupId>com.example</groupId>
827
+ <artifactId>sdd-project</artifactId>
828
+ <version>1.0.0</version>
829
+ <packaging>jar</packaging>
830
+
831
+ <properties>
832
+ <maven.compiler.source>17</maven.compiler.source>
833
+ <maven.compiler.target>17</maven.compiler.target>
834
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
835
+ </properties>
836
+
837
+ <dependencies>
838
+ <dependency>
839
+ <groupId>org.springframework.boot</groupId>
840
+ <artifactId>spring-boot-starter-web</artifactId>
841
+ <version>3.2.0</version>
842
+ </dependency>
843
+ <dependency>
844
+ <groupId>org.springframework.boot</groupId>
845
+ <artifactId>spring-boot-starter-data-jpa</artifactId>
846
+ <version>3.2.0</version>
847
+ </dependency>
848
+ <dependency>
849
+ <groupId>com.h2database</groupId>
850
+ <artifactId>h2</artifactId>
851
+ <scope>runtime</scope>
852
+ </dependency>
853
+ <dependency>
854
+ <groupId>org.springframework.boot</groupId>
855
+ <artifactId>spring-boot-starter-test</artifactId>
856
+ <scope>test</scope>
857
+ </dependency>
858
+ </dependencies>
859
+
860
+ <build>
861
+ <plugins>
862
+ <plugin>
863
+ <groupId>org.springframework.boot</groupId>
864
+ <artifactId>spring-boot-maven-plugin</artifactId>
865
+ </plugin>
866
+ <plugin>
867
+ <groupId>org.apache.maven.plugins</groupId>
868
+ <artifactId>maven-surefire-plugin</artifactId>
869
+ <version>3.2.2</version>
870
+ </plugin>
871
+ </plugins>
872
+ </build>
873
+
874
+ <profiles>
875
+ <profile>
876
+ <id>sdd-validate</id>
877
+ <build>
878
+ <plugins>
879
+ <plugin>
880
+ <groupId>org.codehaus.mojo</groupId>
881
+ <artifactId>exec-maven-plugin</artifactId>
882
+ <version>3.1.0</version>
883
+ <executions>
884
+ <execution>
885
+ <id>sdd-validate</id>
886
+ <phase>validate</phase>
887
+ <goals>
888
+ <goal>exec</goal>
889
+ </goals>
890
+ <configuration>
891
+ <executable>npx</executable>
892
+ <arguments>
893
+ <argument>opencode-telos</argument>
894
+ <argument>validate</argument>
895
+ </arguments>
896
+ </configuration>
897
+ </execution>
898
+ </executions>
899
+ </plugin>
900
+ </plugins>
901
+ </build>
902
+ </profile>
903
+ </profiles>
904
+ </project>
905
+ `
906
+
907
+ const filePath = join(config.projectDir, "pom.xml")
908
+ return { platform: "Maven (Java)", file_path: filePath, content }
909
+ }
910
+
911
+ function generatePip(config: CicdConfig): CicdResult {
912
+ const content = `name: Python CI/CD
913
+
914
+ on:
915
+ push:
916
+ branches: [main, develop]
917
+ pull_request:
918
+ branches: [main]
919
+
920
+ jobs:
921
+ test:
922
+ runs-on: ubuntu-latest
923
+ strategy:
924
+ matrix:
925
+ python-version: ['3.10', '3.11', '3.12']
926
+
927
+ steps:
928
+ - uses: actions/checkout@v4
929
+
930
+ - name: Set up Python \${{ matrix.python-version }}
931
+ uses: actions/setup-python@v5
932
+ with:
933
+ python-version: \${{ matrix.python-version }}
934
+
935
+ - name: Install dependencies
936
+ run: |
937
+ python -m pip install --upgrade pip
938
+ pip install -r requirements.txt
939
+ pip install -r requirements-dev.txt
940
+
941
+ - name: Lint with flake8
942
+ run: |
943
+ flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
944
+ flake8 . --count --max-complexity=10 --max-line-length=127 --statistics
945
+
946
+ - name: Test with pytest
947
+ run: |
948
+ pytest --cov=src --cov-report=xml
949
+
950
+ - name: Validate SDD
951
+ run: |
952
+ echo "Validating SDD graph..."
953
+ npx opencode-telos validate
954
+ npx opencode-telos quality
955
+
956
+ publish:
957
+ needs: test
958
+ runs-on: ubuntu-latest
959
+ if: github.ref == 'refs/heads/main'
960
+
961
+ steps:
962
+ - uses: actions/checkout@v4
963
+
964
+ - name: Set up Python
965
+ uses: actions/setup-python@v5
966
+ with:
967
+ python-version: '3.12'
968
+
969
+ - name: Install build dependencies
970
+ run: |
971
+ python -m pip install --upgrade pip
972
+ pip install build twine
973
+
974
+ - name: Build package
975
+ run: python -m build
976
+
977
+ - name: Publish to PyPI
978
+ uses: pypa/gh-action-pypi-publish@release/v1
979
+ with:
980
+ password: \${{ secrets.PYPI_API_TOKEN }}
981
+ `
982
+
983
+ const filePath = join(config.projectDir, ".github", "workflows", "python-ci.yml")
984
+ return { platform: "Python (pip)", file_path: filePath, content }
985
+ }
986
+
987
+ function generateGoReleaser(config: CicdConfig): CicdResult {
988
+ const content = `name: Go Release
989
+
990
+ on:
991
+ push:
992
+ tags:
993
+ - 'v*'
994
+
995
+ permissions:
996
+ contents: write
997
+
998
+ jobs:
999
+ test:
1000
+ runs-on: ubuntu-latest
1001
+ steps:
1002
+ - uses: actions/checkout@v4
1003
+
1004
+ - name: Set up Go
1005
+ uses: actions/setup-go@v5
1006
+ with:
1007
+ go-version: '1.21'
1008
+
1009
+ - name: Run tests
1010
+ run: go test ./...
1011
+
1012
+ - name: Validate SDD
1013
+ run: |
1014
+ echo "Validating SDD graph..."
1015
+ npx opencode-telos validate
1016
+
1017
+ release:
1018
+ needs: test
1019
+ runs-on: ubuntu-latest
1020
+ steps:
1021
+ - uses: actions/checkout@v4
1022
+ with:
1023
+ fetch-depth: 0
1024
+
1025
+ - name: Set up Go
1026
+ uses: actions/setup-go@v5
1027
+ with:
1028
+ go-version: '1.21'
1029
+
1030
+ - name: Run GoReleaser
1031
+ uses: goreleaser/goreleaser-action@v5
1032
+ with:
1033
+ distribution: goreleaser
1034
+ version: latest
1035
+ args: release --clean
1036
+ env:
1037
+ GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }}
1038
+ `
1039
+
1040
+ const filePath = join(config.projectDir, ".github", "workflows", "go-release.yml")
1041
+ return { platform: "Go (GoReleaser)", file_path: filePath, content }
1042
+ }
1043
+
1044
+ const generators: Record<string, (config: CicdConfig) => CicdResult> = {
1045
+ github: generateGitHubActions,
1046
+ gitlab: generateGitLabCI,
1047
+ jenkins: generateJenkins,
1048
+ docker: generateDocker,
1049
+ circleci: generateCircleCI,
1050
+ azure: generateAzureDevOps,
1051
+ aws: generateAWSCodePipeline,
1052
+ travis: generateTravisCI,
1053
+ npm: generateNpmPublish,
1054
+ compose: generateDockerCompose,
1055
+ maven: generateMaven,
1056
+ pip: generatePip,
1057
+ go: generateGoReleaser,
1058
+ }
1059
+
1060
+ export function writeCicdFiles(results: CicdResult[]): string[] {
1061
+ const written: string[] = []
1062
+
1063
+ for (const result of results) {
1064
+ const dir = dirname(result.file_path)
1065
+ if (!existsSync(dir)) mkdirSync(dir, { recursive: true })
1066
+ writeFileSync(result.file_path, result.content, "utf-8")
1067
+ written.push(result.file_path)
1068
+ }
1069
+
1070
+ return written
1071
+ }
1072
+
1073
+ export function formatCicdResults(results: CicdResult[]): string {
1074
+ const lines = [
1075
+ "## CI/CD Configuration Generated",
1076
+ "",
1077
+ ]
1078
+
1079
+ for (const result of results) {
1080
+ lines.push(`### ${result.platform}`)
1081
+ lines.push(`- File: \`${result.file_path}\``)
1082
+ lines.push(`- Size: ${result.content.length} bytes`)
1083
+ lines.push("")
1084
+ }
1085
+
1086
+ lines.push("### SDD Validation Steps Included")
1087
+ lines.push("- Graph validation")
1088
+ lines.push("- Drift detection")
1089
+ lines.push("- Quality scoring")
1090
+ lines.push("- Anti-pattern detection")
1091
+ lines.push("- Test coverage check")
1092
+ lines.push("- Contradiction detection")
1093
+
1094
+ return lines.join("\n")
1095
+ }