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,251 @@
1
+ import { getNodesByType } from "../graph/engine.js";
2
+ import { getExclusionSets, isNodeExcludedOrDeprecated } from "../drift/exclusion.js";
3
+ export function calculateCoverage(graph, options) {
4
+ const { removed, deprecated } = getExclusionSets(graph);
5
+ const excludeReqSet = new Set(options?.excludeRequirements || []);
6
+ const excludeTestSet = new Set(options?.excludeTests || []);
7
+ let requirements = getNodesByType(graph, "requirement")
8
+ .filter((r) => !isNodeExcludedOrDeprecated(r.id, r.status, removed, deprecated))
9
+ .filter((r) => !excludeReqSet.has(r.id));
10
+ // Apply focus filters
11
+ if (options?.focusRequirements?.length) {
12
+ const focusSet = new Set(options.focusRequirements);
13
+ requirements = requirements.filter(r => focusSet.has(r.id));
14
+ }
15
+ if (options?.focusKeywords?.length) {
16
+ requirements = requirements.filter(r => {
17
+ const text = `${r.name} ${r.description || ''}`.toLowerCase();
18
+ return options.focusKeywords.some(kw => text.includes(kw.toLowerCase()));
19
+ });
20
+ }
21
+ const items = [];
22
+ const gaps = [];
23
+ // Find orphan tests (tests not linked to any requirement)
24
+ const allTests = graph.nodes.filter((n) => n.type === "test" && !excludeTestSet.has(n.id));
25
+ const testedReqIds = new Set(graph.relationships
26
+ .filter((r) => r.type === "tested_by")
27
+ .map((r) => r.to));
28
+ const orphanTests = allTests
29
+ .filter((t) => !testedReqIds.has(t.id))
30
+ .map((t) => {
31
+ const inferred = inferRequirementFromTest(t, requirements, graph);
32
+ return {
33
+ test_id: t.id,
34
+ test_name: t.name,
35
+ test_path: t.metadata?.target,
36
+ inferred_requirement_id: inferred?.requirement_id,
37
+ inferred_by: inferred?.method,
38
+ };
39
+ });
40
+ for (const req of requirements) {
41
+ const testIds = graph.relationships
42
+ .filter((r) => r.from === req.id && r.type === "tested_by")
43
+ .map((r) => r.to)
44
+ .filter(id => !excludeTestSet.has(id));
45
+ const tests = testIds
46
+ .map((id) => graph.nodes.find((n) => n.id === id))
47
+ .filter(Boolean);
48
+ let aspects = extractAspects(req);
49
+ // Apply focus aspects filter
50
+ if (options?.focusAspects?.length) {
51
+ const focusSet = new Set(options.focusAspects.map(a => a.toLowerCase()));
52
+ aspects = aspects.filter(a => focusSet.has(a.split(':')[0].toLowerCase()));
53
+ }
54
+ const coveredAspects = findCoveredAspects(aspects, tests);
55
+ const missingAspects = aspects.filter((a) => !coveredAspects.includes(a));
56
+ let coverageType = "none";
57
+ if (missingAspects.length === 0 && aspects.length > 0)
58
+ coverageType = "full";
59
+ else if (coveredAspects.length > 0)
60
+ coverageType = "partial";
61
+ items.push({
62
+ requirement_id: req.id,
63
+ requirement_name: req.name,
64
+ test_id: tests[0]?.id,
65
+ test_name: tests[0]?.name,
66
+ coverage_type: coverageType,
67
+ covered_aspects: coveredAspects,
68
+ missing_aspects: missingAspects,
69
+ });
70
+ if (coverageType !== "full") {
71
+ gaps.push(`${req.name}: missing coverage for ${missingAspects.join(", ")}`);
72
+ }
73
+ }
74
+ // Apply max results limit
75
+ if (options?.maxResults && items.length > options.maxResults) {
76
+ items.splice(options.maxResults);
77
+ }
78
+ const covered = items.filter((i) => i.coverage_type === "full").length;
79
+ const partial = items.filter((i) => i.coverage_type === "partial").length;
80
+ const uncovered = items.filter((i) => i.coverage_type === "none").length;
81
+ return {
82
+ items,
83
+ orphan_tests: orphanTests,
84
+ total_requirements: requirements.length,
85
+ covered_count: covered,
86
+ partial_count: partial,
87
+ uncovered_count: uncovered,
88
+ coverage_rate: requirements.length === 0 ? 1 : covered / requirements.length,
89
+ gaps,
90
+ };
91
+ }
92
+ /**
93
+ * Infer which requirement a test covers based on name matching.
94
+ * Uses 3 strategies: filename pattern, imports/dependencies, and describe/it blocks.
95
+ */
96
+ function inferRequirementFromTest(test, requirements, graph) {
97
+ const testId = test.id.toLowerCase();
98
+ const testName = (test.name || "").toLowerCase();
99
+ const testPath = (test.metadata?.target || "").toLowerCase();
100
+ const testText = `${testId} ${testName} ${testPath}`;
101
+ // Strategy 1: Filename pattern matching
102
+ // e.g., "user-auth.test.ts" might test "USER-AUTH-REQ"
103
+ for (const req of requirements) {
104
+ const reqName = req.name.toLowerCase().replace(/\s+/g, "-");
105
+ const reqId = req.id.toLowerCase();
106
+ if (testText.includes(reqName) ||
107
+ testText.includes(reqId) ||
108
+ testName.includes(reqName) ||
109
+ testName.includes(reqId)) {
110
+ return { requirement_id: req.id, method: "filename_pattern" };
111
+ }
112
+ }
113
+ // Strategy 2: Import/dependency analysis
114
+ // Check if the test file imports from files related to a requirement
115
+ const testMeta = test.metadata;
116
+ if (Array.isArray(testMeta.imports)) {
117
+ for (const imp of testMeta.imports) {
118
+ if (typeof imp !== "string")
119
+ continue;
120
+ const impLower = imp.toLowerCase();
121
+ for (const req of requirements) {
122
+ const reqName = req.name.toLowerCase().replace(/\s+/g, "-");
123
+ if (impLower.includes(reqName)) {
124
+ return { requirement_id: req.id, method: "import_analysis" };
125
+ }
126
+ }
127
+ }
128
+ }
129
+ // Strategy 3: Relationship-based inference
130
+ // If test is a child of a file that implements a requirement
131
+ if (testMeta.file_path) {
132
+ const fileNodes = graph.nodes.filter(n => n.type === "file");
133
+ for (const file of fileNodes) {
134
+ const fileMeta = file.metadata;
135
+ if (fileMeta.path === testMeta.file_path) {
136
+ // Find what this file implements
137
+ const implementsRels = graph.relationships.filter(r => r.from === file.id && r.type === "implements");
138
+ for (const rel of implementsRels) {
139
+ // Check if the target is a requirement or feature containing requirements
140
+ const target = graph.nodes.find(n => n.id === rel.to);
141
+ if (target?.type === "requirement") {
142
+ return { requirement_id: target.id, method: "file_relationship" };
143
+ }
144
+ if (target?.type === "feature") {
145
+ // Find requirements contained by this feature
146
+ const reqRels = graph.relationships.filter(r => r.from === target.id && r.type === "contains");
147
+ for (const reqRel of reqRels) {
148
+ const reqNode = graph.nodes.find(n => n.id === reqRel.to);
149
+ if (reqNode?.type === "requirement") {
150
+ return { requirement_id: reqNode.id, method: "feature_relationship" };
151
+ }
152
+ }
153
+ }
154
+ }
155
+ }
156
+ }
157
+ }
158
+ return null;
159
+ }
160
+ function extractAspects(req) {
161
+ const aspects = [];
162
+ if (req.metadata.priority)
163
+ aspects.push(`priority:${req.metadata.priority}`);
164
+ const desc = (req.description || "").toLowerCase();
165
+ if (desc.includes("validation"))
166
+ aspects.push("validation");
167
+ if (desc.includes("error"))
168
+ aspects.push("error_handling");
169
+ if (desc.includes("performance"))
170
+ aspects.push("performance");
171
+ if (desc.includes("security"))
172
+ aspects.push("security");
173
+ if (aspects.length === 0)
174
+ aspects.push("behavior");
175
+ return [...new Set(aspects)];
176
+ }
177
+ function findCoveredAspects(aspects, tests) {
178
+ const covered = [];
179
+ for (const aspect of aspects) {
180
+ const isCovered = tests.some((test) => {
181
+ const testText = ((test.name || "") + " " + (test.description || "")).toLowerCase();
182
+ const aspectKey = aspect.split(":")[0].toLowerCase();
183
+ return testText.includes(aspectKey) ||
184
+ testText.includes(aspect.toLowerCase()) ||
185
+ testText.includes("all") ||
186
+ testText.includes("comprehensive");
187
+ });
188
+ if (isCovered)
189
+ covered.push(aspect);
190
+ }
191
+ return covered;
192
+ }
193
+ export function formatCoverageReport(report) {
194
+ const ratePercent = (report.coverage_rate * 100).toFixed(1);
195
+ const lines = [
196
+ `## Test Coverage: ${ratePercent}%`,
197
+ `Covered: ${report.covered_count} | Partial: ${report.partial_count} | Uncovered: ${report.uncovered_count}`,
198
+ "",
199
+ ];
200
+ const grouped = {
201
+ full: report.items.filter((i) => i.coverage_type === "full"),
202
+ partial: report.items.filter((i) => i.coverage_type === "partial"),
203
+ none: report.items.filter((i) => i.coverage_type === "none"),
204
+ };
205
+ if (grouped.none.length > 0) {
206
+ lines.push("### ❌ Uncovered Requirements");
207
+ for (const item of grouped.none) {
208
+ lines.push(`- **${item.requirement_name}**: ${item.missing_aspects.join(", ")}`);
209
+ }
210
+ lines.push("");
211
+ }
212
+ if (grouped.partial.length > 0) {
213
+ lines.push("### ⚠️ Partially Covered");
214
+ for (const item of grouped.partial) {
215
+ lines.push(`- **${item.requirement_name}**: missing ${item.missing_aspects.join(", ")}`);
216
+ }
217
+ lines.push("");
218
+ }
219
+ if (grouped.full.length > 0) {
220
+ lines.push(`### ✅ Fully Covered (${grouped.full.length})`);
221
+ for (const item of grouped.full) {
222
+ lines.push(`- ${item.requirement_name} → ${item.test_name}`);
223
+ }
224
+ lines.push("");
225
+ }
226
+ if (report.gaps.length > 0) {
227
+ lines.push("### Coverage Gaps");
228
+ for (const gap of report.gaps) {
229
+ lines.push(`- ${gap}`);
230
+ }
231
+ }
232
+ if (report.orphan_tests.length > 0) {
233
+ lines.push("");
234
+ lines.push(`### 🧪 Tests Without Requirement Link (${report.orphan_tests.length})`);
235
+ lines.push("These tests exist but are not linked to any requirement in the graph:");
236
+ for (const test of report.orphan_tests.slice(0, 15)) {
237
+ const pathInfo = test.test_path ? ` (${test.test_path})` : "";
238
+ const inferredInfo = test.inferred_requirement_id
239
+ ? ` → inferred: ${test.inferred_requirement_id} (${test.inferred_by})`
240
+ : "";
241
+ lines.push(`- **${test.test_name}**${pathInfo}${inferredInfo}`);
242
+ }
243
+ if (report.orphan_tests.length > 15) {
244
+ lines.push(`- ... and ${report.orphan_tests.length - 15} more`);
245
+ }
246
+ lines.push("");
247
+ lines.push("Use `sdd.add_relationship` to link: `from=requirement_id, to=test_id, type=tested_by`");
248
+ }
249
+ return lines.join("\n");
250
+ }
251
+ //# sourceMappingURL=tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../../src/sdd/coverage/tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { KnowledgeGraph } from '../domain/types.js';
2
+ export interface DisasterRecoveryPlan {
3
+ rto: string;
4
+ rpo: string;
5
+ backup_strategy: string;
6
+ failover_procedure: string[];
7
+ recovery_steps: string[];
8
+ }
9
+ export declare function generateDisasterRecoveryPlan(_graph: KnowledgeGraph): DisasterRecoveryPlan;
10
+ export declare function formatDisasterRecoveryPlan(plan: DisasterRecoveryPlan): string;
11
+ //# sourceMappingURL=recovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../../src/sdd/disaster/recovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,eAAe,EAAE,MAAM,CAAA;IACvB,kBAAkB,EAAE,MAAM,EAAE,CAAA;IAC5B,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,cAAc,GAAG,oBAAoB,CAmCzF;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CA+B7E"}
@@ -0,0 +1,55 @@
1
+ export function generateDisasterRecoveryPlan(_graph) {
2
+ const rto = "4 horas";
3
+ const rpo = "1 hora";
4
+ const backup_strategy = [
5
+ 'Backup diário do banco de dados',
6
+ 'Backup incremental a cada hora',
7
+ 'Backup do Knowledge Graph antes de cada mudança',
8
+ 'Armazenamento em localização geográfica diferente',
9
+ ].join('\n');
10
+ const failover_procedure = [
11
+ 'Detectar falha principal',
12
+ 'Ativar sistema de backup',
13
+ 'Redirecionar tráfego',
14
+ 'Verificar integridade dos dados',
15
+ 'Notificar stakeholders',
16
+ ];
17
+ const recovery_steps = [
18
+ 'Avaliar extensão da falha',
19
+ 'Restaurar do backup mais recente',
20
+ 'Verificar integridade dos dados',
21
+ 'Retomar operações normais',
22
+ 'Documentar incidente',
23
+ 'Implementar melhorias',
24
+ ];
25
+ return {
26
+ rto,
27
+ rpo,
28
+ backup_strategy,
29
+ failover_procedure,
30
+ recovery_steps,
31
+ };
32
+ }
33
+ export function formatDisasterRecoveryPlan(plan) {
34
+ const lines = [
35
+ '## Plano de Disaster Recovery',
36
+ '',
37
+ `**RTO (Recovery Time Objective):** ${plan.rto}`,
38
+ `**RPO (Recovery Point Objective):** ${plan.rpo}`,
39
+ '',
40
+ '### Estratégia de Backup',
41
+ plan.backup_strategy.split('\n').map(line => `- ${line}`).join('\n'),
42
+ '',
43
+ '### Procedimento de Failover',
44
+ ];
45
+ for (let i = 0; i < plan.failover_procedure.length; i++) {
46
+ lines.push(`${i + 1}. ${plan.failover_procedure[i]}`);
47
+ }
48
+ lines.push('', '### Passos de Recuperação');
49
+ for (let i = 0; i < plan.recovery_steps.length; i++) {
50
+ lines.push(`${i + 1}. ${plan.recovery_steps[i]}`);
51
+ }
52
+ lines.push('', '### Contatos de Emergência', '- **Equipe Principal:** [Adicionar contatos]', '- **Fornecedor:** [Adicionar contato]', '- **Suporte:** [Adicionar contato]');
53
+ return lines.join('\n');
54
+ }
55
+ //# sourceMappingURL=recovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../../src/sdd/disaster/recovery.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,4BAA4B,CAAC,MAAsB;IACjE,MAAM,GAAG,GAAG,SAAS,CAAA;IACrB,MAAM,GAAG,GAAG,QAAQ,CAAA;IAEpB,MAAM,eAAe,GAAG;QACtB,iCAAiC;QACjC,gCAAgC;QAChC,iDAAiD;QACjD,mDAAmD;KACpD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEZ,MAAM,kBAAkB,GAAG;QACzB,0BAA0B;QAC1B,0BAA0B;QAC1B,sBAAsB;QACtB,iCAAiC;QACjC,wBAAwB;KACzB,CAAA;IAED,MAAM,cAAc,GAAG;QACrB,2BAA2B;QAC3B,kCAAkC;QAClC,iCAAiC;QACjC,2BAA2B;QAC3B,sBAAsB;QACtB,uBAAuB;KACxB,CAAA;IAED,OAAO;QACL,GAAG;QACH,GAAG;QACH,eAAe;QACf,kBAAkB;QAClB,cAAc;KACf,CAAA;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,IAA0B;IACnE,MAAM,KAAK,GAAG;QACZ,+BAA+B;QAC/B,EAAE;QACF,sCAAsC,IAAI,CAAC,GAAG,EAAE;QAChD,uCAAuC,IAAI,CAAC,GAAG,EAAE;QACjD,EAAE;QACF,0BAA0B;QAC1B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACpE,EAAE;QACF,8BAA8B;KAC/B,CAAA;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,2BAA2B,CAAC,CAAA;IAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,KAAK,CAAC,IAAI,CACR,EAAE,EACF,4BAA4B,EAC5B,8CAA8C,EAC9C,uCAAuC,EACvC,oCAAoC,CACrC,CAAA;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { KnowledgeGraph } from "../domain/types.js";
2
+ import type { QuestionForUser } from "./briefing.js";
3
+ /**
4
+ * Given a list of discovery questions and the current graph state,
5
+ * filter out questions that are already answered by existing graph data.
6
+ * This prevents redundant questions in brownfield projects.
7
+ */
8
+ export declare function filterAlreadyAnswered(questions: QuestionForUser[], graph: KnowledgeGraph): QuestionForUser[];
9
+ /**
10
+ * Generate context-aware questions based on graph gaps.
11
+ * Instead of generic questions, ask about what's actually missing.
12
+ */
13
+ export declare function generateGapQuestions(graph: KnowledgeGraph): QuestionForUser[];
14
+ //# sourceMappingURL=adaptive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adaptive.d.ts","sourceRoot":"","sources":["../../../src/sdd/discovery/adaptive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAEpD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,eAAe,EAAE,EAC5B,KAAK,EAAE,cAAc,GACpB,eAAe,EAAE,CA+EnB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,EAAE,CAqE7E"}
@@ -0,0 +1,145 @@
1
+ import { getNodesByType } from "../graph/engine.js";
2
+ /**
3
+ * Given a list of discovery questions and the current graph state,
4
+ * filter out questions that are already answered by existing graph data.
5
+ * This prevents redundant questions in brownfield projects.
6
+ */
7
+ export function filterAlreadyAnswered(questions, graph) {
8
+ const existingFeatures = getNodesByType(graph, "feature");
9
+ const existingEntities = getNodesByType(graph, "entity");
10
+ const existingEndpoints = getNodesByType(graph, "endpoint");
11
+ const existingApis = getNodesByType(graph, "api");
12
+ const existingArch = getNodesByType(graph, "architecture_component");
13
+ const existingDb = getNodesByType(graph, "database");
14
+ const existingRules = getNodesByType(graph, "business_rule");
15
+ // Build sets of existing info
16
+ const existingTechStack = new Set();
17
+ for (const arch of existingArch) {
18
+ const tech = arch.metadata.technology;
19
+ if (tech)
20
+ existingTechStack.add(tech.toLowerCase());
21
+ }
22
+ for (const db of existingDb) {
23
+ const engine = db.metadata.engine;
24
+ if (engine)
25
+ existingTechStack.add(engine.toLowerCase());
26
+ }
27
+ const existingEntityNames = new Set(existingEntities.map(e => e.name.toLowerCase()));
28
+ const existingFeatureNames = new Set(existingFeatures.map(f => f.name.toLowerCase()));
29
+ return questions.filter(q => {
30
+ const qLower = q.question.toLowerCase();
31
+ const headerLower = q.header.toLowerCase();
32
+ // Skip framework questions if we already have architecture components
33
+ if ((headerLower.includes("framework") || headerLower.includes("tech") || headerLower.includes("stack")) &&
34
+ existingTechStack.size > 0) {
35
+ return false;
36
+ }
37
+ // Skip database questions if we already have database nodes
38
+ if ((headerLower.includes("database") || headerLower.includes("banco")) &&
39
+ existingDb.length > 0) {
40
+ return false;
41
+ }
42
+ // Skip entity questions if entities already exist
43
+ if ((headerLower.includes("entidade") || headerLower.includes("entity") || headerLower.includes("modelo")) &&
44
+ existingEntities.length > 2) {
45
+ return false;
46
+ }
47
+ // Skip feature questions if features already exist
48
+ if ((headerLower.includes("feature") || headerLower.includes("funcionalidade")) &&
49
+ existingFeatures.length > 2) {
50
+ return false;
51
+ }
52
+ // Skip API questions if endpoints already exist
53
+ if ((headerLower.includes("api") || headerLower.includes("endpoint") || headerLower.includes("rota")) &&
54
+ existingEndpoints.length > 2) {
55
+ return false;
56
+ }
57
+ // Skip business rule questions if rules already exist
58
+ if ((headerLower.includes("regra") || headerLower.includes("rule") || headerLower.includes("negócio")) &&
59
+ existingRules.length > 2) {
60
+ return false;
61
+ }
62
+ // Check if specific options in the question are already covered
63
+ if (q.options && q.options.length > 0) {
64
+ const coveredOptions = q.options.filter(opt => {
65
+ const optLower = opt.label.toLowerCase();
66
+ return existingTechStack.has(optLower) ||
67
+ existingEntityNames.has(optLower) ||
68
+ existingFeatureNames.has(optLower);
69
+ });
70
+ // If most options are already covered, skip this question
71
+ if (coveredOptions.length >= q.options.length * 0.5) {
72
+ return false;
73
+ }
74
+ }
75
+ return true;
76
+ });
77
+ }
78
+ /**
79
+ * Generate context-aware questions based on graph gaps.
80
+ * Instead of generic questions, ask about what's actually missing.
81
+ */
82
+ export function generateGapQuestions(graph) {
83
+ const questions = [];
84
+ // Check for requirements without acceptance criteria
85
+ const reqs = getNodesByType(graph, "requirement");
86
+ const reqsWithoutCriteria = reqs.filter(r => {
87
+ const meta = r.metadata;
88
+ return !meta.acceptance_criteria || meta.acceptance_criteria.length === 0;
89
+ });
90
+ if (reqsWithoutCriteria.length > 0 && reqsWithoutCriteria.length <= 5) {
91
+ for (const req of reqsWithoutCriteria.slice(0, 3)) {
92
+ questions.push({
93
+ question: `What are the acceptance criteria for requirement "${req.name}"?`,
94
+ header: `Acceptance Criteria: ${req.name}`,
95
+ options: [
96
+ { label: "Functional test", description: "Verify the feature works as expected" },
97
+ { label: "Edge cases", description: "Handle error scenarios and boundary conditions" },
98
+ { label: "Performance", description: "Response time and resource usage targets" },
99
+ { label: "Security", description: "Authentication, authorization, data validation" },
100
+ ],
101
+ multiple: true,
102
+ });
103
+ }
104
+ }
105
+ // Check for features without requirements
106
+ const features = getNodesByType(graph, "feature");
107
+ const featuresWithoutReqs = features.filter(f => {
108
+ return !graph.relationships.some(r => r.from === f.id && r.type === "contains" &&
109
+ graph.nodes.some(n => n.id === r.to && n.type === "requirement"));
110
+ });
111
+ if (featuresWithoutReqs.length > 0 && featuresWithoutReqs.length <= 3) {
112
+ for (const feature of featuresWithoutReqs.slice(0, 2)) {
113
+ questions.push({
114
+ question: `What are the specific requirements for feature "${feature.name}"?`,
115
+ header: `Requirements: ${feature.name}`,
116
+ options: [
117
+ { label: "CRUD operations", description: "Create, Read, Update, Delete" },
118
+ { label: "Search & filter", description: "Query with filters and pagination" },
119
+ { label: "Real-time", description: "WebSocket or SSE updates" },
120
+ { label: "Export", description: "PDF, CSV, or other export formats" },
121
+ ],
122
+ multiple: true,
123
+ });
124
+ }
125
+ }
126
+ // Check for entities without persistence
127
+ const entities = getNodesByType(graph, "entity");
128
+ const entitiesWithoutDb = entities.filter(e => {
129
+ return !graph.relationships.some(r => r.from === e.id && r.type === "persists_to");
130
+ });
131
+ if (entitiesWithoutDb.length > 0) {
132
+ questions.push({
133
+ question: `Which database should the ${entitiesWithoutDb.length} entity(ies) (${entitiesWithoutDb.map(e => e.name).join(", ")}) persist to?`,
134
+ header: "Database for entities",
135
+ options: [
136
+ { label: "PostgreSQL", description: "Relational, full-featured, JSON support" },
137
+ { label: "SQLite", description: "Lightweight, file-based, good for development" },
138
+ { label: "MongoDB", description: "Document-based, flexible schema" },
139
+ { label: "MySQL", description: "Popular relational database" },
140
+ ],
141
+ });
142
+ }
143
+ return questions;
144
+ }
145
+ //# sourceMappingURL=adaptive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adaptive.js","sourceRoot":"","sources":["../../../src/sdd/discovery/adaptive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ export interface ExtractedFeature {
2
+ name: string;
3
+ description: string;
4
+ priority: "critical" | "high" | "medium" | "low";
5
+ phase?: number;
6
+ }
7
+ export interface ExtractedEntity {
8
+ name: string;
9
+ description: string;
10
+ fields: Array<{
11
+ name: string;
12
+ type: string;
13
+ required?: boolean;
14
+ unique?: boolean;
15
+ }>;
16
+ }
17
+ export interface ExtractedEndpoint {
18
+ method: string;
19
+ path: string;
20
+ description: string;
21
+ relatedEntity?: string;
22
+ }
23
+ export interface ExtractedBusinessRule {
24
+ name: string;
25
+ description: string;
26
+ relatedFeature?: string;
27
+ }
28
+ export interface ExtractedArchitectureComponent {
29
+ name: string;
30
+ layer: "frontend" | "backend" | "database" | "infrastructure" | "external";
31
+ technology: string;
32
+ description: string;
33
+ }
34
+ export interface ExtractedDecision {
35
+ title: string;
36
+ context: string;
37
+ decision: string;
38
+ consequences: string;
39
+ }
40
+ export interface ExtractedRequirement {
41
+ name: string;
42
+ description: string;
43
+ type: "functional" | "non_functional";
44
+ priority: "critical" | "high" | "medium" | "low";
45
+ acceptanceCriteria: string[];
46
+ }
47
+ export interface ExtractedRelationship {
48
+ from: string;
49
+ to: string;
50
+ type: string;
51
+ }
52
+ export interface BriefingDeepAnalysis {
53
+ features: ExtractedFeature[];
54
+ entities: ExtractedEntity[];
55
+ endpoints: ExtractedEndpoint[];
56
+ businessRules: ExtractedBusinessRule[];
57
+ architectureComponents: ExtractedArchitectureComponent[];
58
+ decisions: ExtractedDecision[];
59
+ requirements: ExtractedRequirement[];
60
+ relationships: ExtractedRelationship[];
61
+ domains: string[];
62
+ techStack: Record<string, string>;
63
+ }
64
+ export declare function analyzeBriefingDeep(text: string): BriefingDeepAnalysis;
65
+ export declare function formatDeepAnalysis(analysis: BriefingDeepAnalysis): string;
66
+ //# sourceMappingURL=briefing-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"briefing-analyzer.d.ts","sourceRoot":"","sources":["../../../src/sdd/discovery/briefing-analyzer.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;IAChD,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CACpF;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,8BAA8B;IAC7C,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,gBAAgB,GAAG,UAAU,CAAA;IAC1E,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,YAAY,GAAG,gBAAgB,CAAA;IACrC,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;IAChD,kBAAkB,EAAE,MAAM,EAAE,CAAA;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,gBAAgB,EAAE,CAAA;IAC5B,QAAQ,EAAE,eAAe,EAAE,CAAA;IAC3B,SAAS,EAAE,iBAAiB,EAAE,CAAA;IAC9B,aAAa,EAAE,qBAAqB,EAAE,CAAA;IACtC,sBAAsB,EAAE,8BAA8B,EAAE,CAAA;IACxD,SAAS,EAAE,iBAAiB,EAAE,CAAA;IAC9B,YAAY,EAAE,oBAAoB,EAAE,CAAA;IACpC,aAAa,EAAE,qBAAqB,EAAE,CAAA;IACtC,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAClC;AAikBD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CA+FtE;AAID,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,CAwDzE"}