openlore 2.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 (634) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +268 -0
  3. package/dist/api/analyze.d.ts +17 -0
  4. package/dist/api/analyze.d.ts.map +1 -0
  5. package/dist/api/analyze.js +143 -0
  6. package/dist/api/analyze.js.map +1 -0
  7. package/dist/api/audit.d.ts +10 -0
  8. package/dist/api/audit.d.ts.map +1 -0
  9. package/dist/api/audit.js +117 -0
  10. package/dist/api/audit.js.map +1 -0
  11. package/dist/api/decisions.d.ts +55 -0
  12. package/dist/api/decisions.d.ts.map +1 -0
  13. package/dist/api/decisions.js +157 -0
  14. package/dist/api/decisions.js.map +1 -0
  15. package/dist/api/drift.d.ts +21 -0
  16. package/dist/api/drift.d.ts.map +1 -0
  17. package/dist/api/drift.js +152 -0
  18. package/dist/api/drift.js.map +1 -0
  19. package/dist/api/generate.d.ts +18 -0
  20. package/dist/api/generate.d.ts.map +1 -0
  21. package/dist/api/generate.js +259 -0
  22. package/dist/api/generate.js.map +1 -0
  23. package/dist/api/index.d.ts +41 -0
  24. package/dist/api/index.d.ts.map +1 -0
  25. package/dist/api/index.js +34 -0
  26. package/dist/api/index.js.map +1 -0
  27. package/dist/api/init.d.ts +18 -0
  28. package/dist/api/init.d.ts.map +1 -0
  29. package/dist/api/init.js +83 -0
  30. package/dist/api/init.js.map +1 -0
  31. package/dist/api/run.d.ts +19 -0
  32. package/dist/api/run.d.ts.map +1 -0
  33. package/dist/api/run.js +312 -0
  34. package/dist/api/run.js.map +1 -0
  35. package/dist/api/specs.d.ts +49 -0
  36. package/dist/api/specs.d.ts.map +1 -0
  37. package/dist/api/specs.js +137 -0
  38. package/dist/api/specs.js.map +1 -0
  39. package/dist/api/types.d.ts +201 -0
  40. package/dist/api/types.d.ts.map +1 -0
  41. package/dist/api/types.js +9 -0
  42. package/dist/api/types.js.map +1 -0
  43. package/dist/api/verify.d.ts +20 -0
  44. package/dist/api/verify.d.ts.map +1 -0
  45. package/dist/api/verify.js +117 -0
  46. package/dist/api/verify.js.map +1 -0
  47. package/dist/cli/commands/analyze.d.ts +30 -0
  48. package/dist/cli/commands/analyze.d.ts.map +1 -0
  49. package/dist/cli/commands/analyze.js +683 -0
  50. package/dist/cli/commands/analyze.js.map +1 -0
  51. package/dist/cli/commands/audit.d.ts +9 -0
  52. package/dist/cli/commands/audit.d.ts.map +1 -0
  53. package/dist/cli/commands/audit.js +98 -0
  54. package/dist/cli/commands/audit.js.map +1 -0
  55. package/dist/cli/commands/decisions.d.ts +16 -0
  56. package/dist/cli/commands/decisions.d.ts.map +1 -0
  57. package/dist/cli/commands/decisions.js +864 -0
  58. package/dist/cli/commands/decisions.js.map +1 -0
  59. package/dist/cli/commands/digest.d.ts +9 -0
  60. package/dist/cli/commands/digest.d.ts.map +1 -0
  61. package/dist/cli/commands/digest.js +61 -0
  62. package/dist/cli/commands/digest.js.map +1 -0
  63. package/dist/cli/commands/doctor.d.ts +9 -0
  64. package/dist/cli/commands/doctor.d.ts.map +1 -0
  65. package/dist/cli/commands/doctor.js +398 -0
  66. package/dist/cli/commands/doctor.js.map +1 -0
  67. package/dist/cli/commands/drift.d.ts +9 -0
  68. package/dist/cli/commands/drift.d.ts.map +1 -0
  69. package/dist/cli/commands/drift.js +550 -0
  70. package/dist/cli/commands/drift.js.map +1 -0
  71. package/dist/cli/commands/generate.d.ts +9 -0
  72. package/dist/cli/commands/generate.d.ts.map +1 -0
  73. package/dist/cli/commands/generate.js +565 -0
  74. package/dist/cli/commands/generate.js.map +1 -0
  75. package/dist/cli/commands/init.d.ts +9 -0
  76. package/dist/cli/commands/init.d.ts.map +1 -0
  77. package/dist/cli/commands/init.js +173 -0
  78. package/dist/cli/commands/init.js.map +1 -0
  79. package/dist/cli/commands/mcp.d.ts +2235 -0
  80. package/dist/cli/commands/mcp.d.ts.map +1 -0
  81. package/dist/cli/commands/mcp.js +1384 -0
  82. package/dist/cli/commands/mcp.js.map +1 -0
  83. package/dist/cli/commands/refresh-stories.d.ts +10 -0
  84. package/dist/cli/commands/refresh-stories.d.ts.map +1 -0
  85. package/dist/cli/commands/refresh-stories.js +314 -0
  86. package/dist/cli/commands/refresh-stories.js.map +1 -0
  87. package/dist/cli/commands/run.d.ts +9 -0
  88. package/dist/cli/commands/run.d.ts.map +1 -0
  89. package/dist/cli/commands/run.js +459 -0
  90. package/dist/cli/commands/run.js.map +1 -0
  91. package/dist/cli/commands/setup.d.ts +19 -0
  92. package/dist/cli/commands/setup.d.ts.map +1 -0
  93. package/dist/cli/commands/setup.js +355 -0
  94. package/dist/cli/commands/setup.js.map +1 -0
  95. package/dist/cli/commands/test.d.ts +22 -0
  96. package/dist/cli/commands/test.d.ts.map +1 -0
  97. package/dist/cli/commands/test.js +180 -0
  98. package/dist/cli/commands/test.js.map +1 -0
  99. package/dist/cli/commands/verify.d.ts +9 -0
  100. package/dist/cli/commands/verify.d.ts.map +1 -0
  101. package/dist/cli/commands/verify.js +383 -0
  102. package/dist/cli/commands/verify.js.map +1 -0
  103. package/dist/cli/commands/view.d.ts +13 -0
  104. package/dist/cli/commands/view.d.ts.map +1 -0
  105. package/dist/cli/commands/view.js +547 -0
  106. package/dist/cli/commands/view.js.map +1 -0
  107. package/dist/cli/index.d.ts +9 -0
  108. package/dist/cli/index.d.ts.map +1 -0
  109. package/dist/cli/index.js +118 -0
  110. package/dist/cli/index.js.map +1 -0
  111. package/dist/cli/tui-approval.d.ts +11 -0
  112. package/dist/cli/tui-approval.d.ts.map +1 -0
  113. package/dist/cli/tui-approval.js +129 -0
  114. package/dist/cli/tui-approval.js.map +1 -0
  115. package/dist/constants.d.ts +314 -0
  116. package/dist/constants.d.ts.map +1 -0
  117. package/dist/constants.js +382 -0
  118. package/dist/constants.js.map +1 -0
  119. package/dist/core/analyzer/ai-config-generator.d.ts +54 -0
  120. package/dist/core/analyzer/ai-config-generator.d.ts.map +1 -0
  121. package/dist/core/analyzer/ai-config-generator.js +98 -0
  122. package/dist/core/analyzer/ai-config-generator.js.map +1 -0
  123. package/dist/core/analyzer/architecture-writer.d.ts +67 -0
  124. package/dist/core/analyzer/architecture-writer.d.ts.map +1 -0
  125. package/dist/core/analyzer/architecture-writer.js +209 -0
  126. package/dist/core/analyzer/architecture-writer.js.map +1 -0
  127. package/dist/core/analyzer/artifact-generator.d.ts +261 -0
  128. package/dist/core/analyzer/artifact-generator.d.ts.map +1 -0
  129. package/dist/core/analyzer/artifact-generator.js +909 -0
  130. package/dist/core/analyzer/artifact-generator.js.map +1 -0
  131. package/dist/core/analyzer/ast-chunker.d.ts +24 -0
  132. package/dist/core/analyzer/ast-chunker.d.ts.map +1 -0
  133. package/dist/core/analyzer/ast-chunker.js +198 -0
  134. package/dist/core/analyzer/ast-chunker.js.map +1 -0
  135. package/dist/core/analyzer/call-graph.d.ts +162 -0
  136. package/dist/core/analyzer/call-graph.d.ts.map +1 -0
  137. package/dist/core/analyzer/call-graph.js +2040 -0
  138. package/dist/core/analyzer/call-graph.js.map +1 -0
  139. package/dist/core/analyzer/code-shaper.d.ts +33 -0
  140. package/dist/core/analyzer/code-shaper.d.ts.map +1 -0
  141. package/dist/core/analyzer/code-shaper.js +154 -0
  142. package/dist/core/analyzer/code-shaper.js.map +1 -0
  143. package/dist/core/analyzer/codebase-digest.d.ts +40 -0
  144. package/dist/core/analyzer/codebase-digest.d.ts.map +1 -0
  145. package/dist/core/analyzer/codebase-digest.js +195 -0
  146. package/dist/core/analyzer/codebase-digest.js.map +1 -0
  147. package/dist/core/analyzer/cpp-header-resolver.d.ts +30 -0
  148. package/dist/core/analyzer/cpp-header-resolver.d.ts.map +1 -0
  149. package/dist/core/analyzer/cpp-header-resolver.js +71 -0
  150. package/dist/core/analyzer/cpp-header-resolver.js.map +1 -0
  151. package/dist/core/analyzer/dependency-graph.d.ts +230 -0
  152. package/dist/core/analyzer/dependency-graph.d.ts.map +1 -0
  153. package/dist/core/analyzer/dependency-graph.js +752 -0
  154. package/dist/core/analyzer/dependency-graph.js.map +1 -0
  155. package/dist/core/analyzer/duplicate-detector.d.ts +52 -0
  156. package/dist/core/analyzer/duplicate-detector.d.ts.map +1 -0
  157. package/dist/core/analyzer/duplicate-detector.js +289 -0
  158. package/dist/core/analyzer/duplicate-detector.js.map +1 -0
  159. package/dist/core/analyzer/embedding-service.d.ts +56 -0
  160. package/dist/core/analyzer/embedding-service.d.ts.map +1 -0
  161. package/dist/core/analyzer/embedding-service.js +118 -0
  162. package/dist/core/analyzer/embedding-service.js.map +1 -0
  163. package/dist/core/analyzer/env-extractor.d.ts +33 -0
  164. package/dist/core/analyzer/env-extractor.d.ts.map +1 -0
  165. package/dist/core/analyzer/env-extractor.js +196 -0
  166. package/dist/core/analyzer/env-extractor.js.map +1 -0
  167. package/dist/core/analyzer/external-packages.d.ts +20 -0
  168. package/dist/core/analyzer/external-packages.d.ts.map +1 -0
  169. package/dist/core/analyzer/external-packages.js +175 -0
  170. package/dist/core/analyzer/external-packages.js.map +1 -0
  171. package/dist/core/analyzer/file-walker.d.ts +78 -0
  172. package/dist/core/analyzer/file-walker.d.ts.map +1 -0
  173. package/dist/core/analyzer/file-walker.js +532 -0
  174. package/dist/core/analyzer/file-walker.js.map +1 -0
  175. package/dist/core/analyzer/function-registry-trie.d.ts +21 -0
  176. package/dist/core/analyzer/function-registry-trie.d.ts.map +1 -0
  177. package/dist/core/analyzer/function-registry-trie.js +39 -0
  178. package/dist/core/analyzer/function-registry-trie.js.map +1 -0
  179. package/dist/core/analyzer/http-route-parser.d.ts +152 -0
  180. package/dist/core/analyzer/http-route-parser.d.ts.map +1 -0
  181. package/dist/core/analyzer/http-route-parser.js +971 -0
  182. package/dist/core/analyzer/http-route-parser.js.map +1 -0
  183. package/dist/core/analyzer/import-parser.d.ts +100 -0
  184. package/dist/core/analyzer/import-parser.d.ts.map +1 -0
  185. package/dist/core/analyzer/import-parser.js +952 -0
  186. package/dist/core/analyzer/import-parser.js.map +1 -0
  187. package/dist/core/analyzer/import-resolver-bridge.d.ts +25 -0
  188. package/dist/core/analyzer/import-resolver-bridge.d.ts.map +1 -0
  189. package/dist/core/analyzer/import-resolver-bridge.js +99 -0
  190. package/dist/core/analyzer/import-resolver-bridge.js.map +1 -0
  191. package/dist/core/analyzer/index.d.ts +10 -0
  192. package/dist/core/analyzer/index.d.ts.map +1 -0
  193. package/dist/core/analyzer/index.js +10 -0
  194. package/dist/core/analyzer/index.js.map +1 -0
  195. package/dist/core/analyzer/middleware-extractor.d.ts +29 -0
  196. package/dist/core/analyzer/middleware-extractor.d.ts.map +1 -0
  197. package/dist/core/analyzer/middleware-extractor.js +195 -0
  198. package/dist/core/analyzer/middleware-extractor.js.map +1 -0
  199. package/dist/core/analyzer/refactor-analyzer.d.ts +83 -0
  200. package/dist/core/analyzer/refactor-analyzer.d.ts.map +1 -0
  201. package/dist/core/analyzer/refactor-analyzer.js +351 -0
  202. package/dist/core/analyzer/refactor-analyzer.js.map +1 -0
  203. package/dist/core/analyzer/repository-mapper.d.ts +150 -0
  204. package/dist/core/analyzer/repository-mapper.d.ts.map +1 -0
  205. package/dist/core/analyzer/repository-mapper.js +740 -0
  206. package/dist/core/analyzer/repository-mapper.js.map +1 -0
  207. package/dist/core/analyzer/schema-extractor.d.ts +41 -0
  208. package/dist/core/analyzer/schema-extractor.d.ts.map +1 -0
  209. package/dist/core/analyzer/schema-extractor.js +229 -0
  210. package/dist/core/analyzer/schema-extractor.js.map +1 -0
  211. package/dist/core/analyzer/signature-extractor.d.ts +31 -0
  212. package/dist/core/analyzer/signature-extractor.d.ts.map +1 -0
  213. package/dist/core/analyzer/signature-extractor.js +675 -0
  214. package/dist/core/analyzer/signature-extractor.js.map +1 -0
  215. package/dist/core/analyzer/significance-scorer.d.ts +79 -0
  216. package/dist/core/analyzer/significance-scorer.d.ts.map +1 -0
  217. package/dist/core/analyzer/significance-scorer.js +407 -0
  218. package/dist/core/analyzer/significance-scorer.js.map +1 -0
  219. package/dist/core/analyzer/spec-snapshot-generator.d.ts +17 -0
  220. package/dist/core/analyzer/spec-snapshot-generator.d.ts.map +1 -0
  221. package/dist/core/analyzer/spec-snapshot-generator.js +201 -0
  222. package/dist/core/analyzer/spec-snapshot-generator.js.map +1 -0
  223. package/dist/core/analyzer/spec-vector-index.d.ts +68 -0
  224. package/dist/core/analyzer/spec-vector-index.d.ts.map +1 -0
  225. package/dist/core/analyzer/spec-vector-index.js +340 -0
  226. package/dist/core/analyzer/spec-vector-index.js.map +1 -0
  227. package/dist/core/analyzer/subgraph-extractor.d.ts +51 -0
  228. package/dist/core/analyzer/subgraph-extractor.d.ts.map +1 -0
  229. package/dist/core/analyzer/subgraph-extractor.js +147 -0
  230. package/dist/core/analyzer/subgraph-extractor.js.map +1 -0
  231. package/dist/core/analyzer/type-inference-engine.d.ts +23 -0
  232. package/dist/core/analyzer/type-inference-engine.d.ts.map +1 -0
  233. package/dist/core/analyzer/type-inference-engine.js +130 -0
  234. package/dist/core/analyzer/type-inference-engine.js.map +1 -0
  235. package/dist/core/analyzer/ui-component-extractor.d.ts +43 -0
  236. package/dist/core/analyzer/ui-component-extractor.d.ts.map +1 -0
  237. package/dist/core/analyzer/ui-component-extractor.js +245 -0
  238. package/dist/core/analyzer/ui-component-extractor.js.map +1 -0
  239. package/dist/core/analyzer/unified-search.d.ts +116 -0
  240. package/dist/core/analyzer/unified-search.d.ts.map +1 -0
  241. package/dist/core/analyzer/unified-search.js +231 -0
  242. package/dist/core/analyzer/unified-search.js.map +1 -0
  243. package/dist/core/analyzer/vector-index.d.ts +92 -0
  244. package/dist/core/analyzer/vector-index.d.ts.map +1 -0
  245. package/dist/core/analyzer/vector-index.js +451 -0
  246. package/dist/core/analyzer/vector-index.js.map +1 -0
  247. package/dist/core/decisions/consolidator.d.ts +14 -0
  248. package/dist/core/decisions/consolidator.d.ts.map +1 -0
  249. package/dist/core/decisions/consolidator.js +169 -0
  250. package/dist/core/decisions/consolidator.js.map +1 -0
  251. package/dist/core/decisions/extractor.d.ts +26 -0
  252. package/dist/core/decisions/extractor.d.ts.map +1 -0
  253. package/dist/core/decisions/extractor.js +156 -0
  254. package/dist/core/decisions/extractor.js.map +1 -0
  255. package/dist/core/decisions/index.d.ts +19 -0
  256. package/dist/core/decisions/index.d.ts.map +1 -0
  257. package/dist/core/decisions/index.js +16 -0
  258. package/dist/core/decisions/index.js.map +1 -0
  259. package/dist/core/decisions/store.d.ts +36 -0
  260. package/dist/core/decisions/store.d.ts.map +1 -0
  261. package/dist/core/decisions/store.js +109 -0
  262. package/dist/core/decisions/store.js.map +1 -0
  263. package/dist/core/decisions/syncer.d.ts +27 -0
  264. package/dist/core/decisions/syncer.d.ts.map +1 -0
  265. package/dist/core/decisions/syncer.js +214 -0
  266. package/dist/core/decisions/syncer.js.map +1 -0
  267. package/dist/core/decisions/verifier.d.ts +20 -0
  268. package/dist/core/decisions/verifier.d.ts.map +1 -0
  269. package/dist/core/decisions/verifier.js +115 -0
  270. package/dist/core/decisions/verifier.js.map +1 -0
  271. package/dist/core/digest/digest-generator.d.ts +29 -0
  272. package/dist/core/digest/digest-generator.d.ts.map +1 -0
  273. package/dist/core/digest/digest-generator.js +181 -0
  274. package/dist/core/digest/digest-generator.js.map +1 -0
  275. package/dist/core/drift/drift-detector.d.ts +102 -0
  276. package/dist/core/drift/drift-detector.d.ts.map +1 -0
  277. package/dist/core/drift/drift-detector.js +598 -0
  278. package/dist/core/drift/drift-detector.js.map +1 -0
  279. package/dist/core/drift/git-diff.d.ts +60 -0
  280. package/dist/core/drift/git-diff.d.ts.map +1 -0
  281. package/dist/core/drift/git-diff.js +383 -0
  282. package/dist/core/drift/git-diff.js.map +1 -0
  283. package/dist/core/drift/index.d.ts +12 -0
  284. package/dist/core/drift/index.d.ts.map +1 -0
  285. package/dist/core/drift/index.js +9 -0
  286. package/dist/core/drift/index.js.map +1 -0
  287. package/dist/core/drift/spec-mapper.d.ts +73 -0
  288. package/dist/core/drift/spec-mapper.d.ts.map +1 -0
  289. package/dist/core/drift/spec-mapper.js +353 -0
  290. package/dist/core/drift/spec-mapper.js.map +1 -0
  291. package/dist/core/drift/test-suggester.d.ts +18 -0
  292. package/dist/core/drift/test-suggester.d.ts.map +1 -0
  293. package/dist/core/drift/test-suggester.js +107 -0
  294. package/dist/core/drift/test-suggester.js.map +1 -0
  295. package/dist/core/generator/adr-generator.d.ts +32 -0
  296. package/dist/core/generator/adr-generator.d.ts.map +1 -0
  297. package/dist/core/generator/adr-generator.js +192 -0
  298. package/dist/core/generator/adr-generator.js.map +1 -0
  299. package/dist/core/generator/index.d.ts +9 -0
  300. package/dist/core/generator/index.d.ts.map +1 -0
  301. package/dist/core/generator/index.js +12 -0
  302. package/dist/core/generator/index.js.map +1 -0
  303. package/dist/core/generator/mapping-generator.d.ts +54 -0
  304. package/dist/core/generator/mapping-generator.d.ts.map +1 -0
  305. package/dist/core/generator/mapping-generator.js +240 -0
  306. package/dist/core/generator/mapping-generator.js.map +1 -0
  307. package/dist/core/generator/openspec-compat.d.ts +160 -0
  308. package/dist/core/generator/openspec-compat.d.ts.map +1 -0
  309. package/dist/core/generator/openspec-compat.js +524 -0
  310. package/dist/core/generator/openspec-compat.js.map +1 -0
  311. package/dist/core/generator/openspec-format-generator.d.ts +131 -0
  312. package/dist/core/generator/openspec-format-generator.d.ts.map +1 -0
  313. package/dist/core/generator/openspec-format-generator.js +963 -0
  314. package/dist/core/generator/openspec-format-generator.js.map +1 -0
  315. package/dist/core/generator/openspec-writer.d.ts +130 -0
  316. package/dist/core/generator/openspec-writer.d.ts.map +1 -0
  317. package/dist/core/generator/openspec-writer.js +404 -0
  318. package/dist/core/generator/openspec-writer.js.map +1 -0
  319. package/dist/core/generator/prompts.d.ts +35 -0
  320. package/dist/core/generator/prompts.d.ts.map +1 -0
  321. package/dist/core/generator/prompts.js +212 -0
  322. package/dist/core/generator/prompts.js.map +1 -0
  323. package/dist/core/generator/rag-manifest-generator.d.ts +37 -0
  324. package/dist/core/generator/rag-manifest-generator.d.ts.map +1 -0
  325. package/dist/core/generator/rag-manifest-generator.js +134 -0
  326. package/dist/core/generator/rag-manifest-generator.js.map +1 -0
  327. package/dist/core/generator/schemas.d.ts +365 -0
  328. package/dist/core/generator/schemas.d.ts.map +1 -0
  329. package/dist/core/generator/schemas.js +190 -0
  330. package/dist/core/generator/schemas.js.map +1 -0
  331. package/dist/core/generator/spec-pipeline.d.ts +123 -0
  332. package/dist/core/generator/spec-pipeline.d.ts.map +1 -0
  333. package/dist/core/generator/spec-pipeline.js +699 -0
  334. package/dist/core/generator/spec-pipeline.js.map +1 -0
  335. package/dist/core/generator/stages/stage1-survey.d.ts +19 -0
  336. package/dist/core/generator/stages/stage1-survey.d.ts.map +1 -0
  337. package/dist/core/generator/stages/stage1-survey.js +171 -0
  338. package/dist/core/generator/stages/stage1-survey.js.map +1 -0
  339. package/dist/core/generator/stages/stage2-entities.d.ts +11 -0
  340. package/dist/core/generator/stages/stage2-entities.d.ts.map +1 -0
  341. package/dist/core/generator/stages/stage2-entities.js +74 -0
  342. package/dist/core/generator/stages/stage2-entities.js.map +1 -0
  343. package/dist/core/generator/stages/stage3-services.d.ts +11 -0
  344. package/dist/core/generator/stages/stage3-services.d.ts.map +1 -0
  345. package/dist/core/generator/stages/stage3-services.js +85 -0
  346. package/dist/core/generator/stages/stage3-services.js.map +1 -0
  347. package/dist/core/generator/stages/stage4-api.d.ts +11 -0
  348. package/dist/core/generator/stages/stage4-api.d.ts.map +1 -0
  349. package/dist/core/generator/stages/stage4-api.js +72 -0
  350. package/dist/core/generator/stages/stage4-api.js.map +1 -0
  351. package/dist/core/generator/stages/stage5-architecture.d.ts +11 -0
  352. package/dist/core/generator/stages/stage5-architecture.d.ts.map +1 -0
  353. package/dist/core/generator/stages/stage5-architecture.js +75 -0
  354. package/dist/core/generator/stages/stage5-architecture.js.map +1 -0
  355. package/dist/core/generator/stages/stage6-adr.d.ts +8 -0
  356. package/dist/core/generator/stages/stage6-adr.d.ts.map +1 -0
  357. package/dist/core/generator/stages/stage6-adr.js +47 -0
  358. package/dist/core/generator/stages/stage6-adr.js.map +1 -0
  359. package/dist/core/services/chat-agent.d.ts +50 -0
  360. package/dist/core/services/chat-agent.d.ts.map +1 -0
  361. package/dist/core/services/chat-agent.js +369 -0
  362. package/dist/core/services/chat-agent.js.map +1 -0
  363. package/dist/core/services/chat-tools.d.ts +32 -0
  364. package/dist/core/services/chat-tools.d.ts.map +1 -0
  365. package/dist/core/services/chat-tools.js +494 -0
  366. package/dist/core/services/chat-tools.js.map +1 -0
  367. package/dist/core/services/config-manager.d.ts +61 -0
  368. package/dist/core/services/config-manager.d.ts.map +1 -0
  369. package/dist/core/services/config-manager.js +149 -0
  370. package/dist/core/services/config-manager.js.map +1 -0
  371. package/dist/core/services/edge-store.d.ts +57 -0
  372. package/dist/core/services/edge-store.d.ts.map +1 -0
  373. package/dist/core/services/edge-store.js +419 -0
  374. package/dist/core/services/edge-store.js.map +1 -0
  375. package/dist/core/services/gitignore-manager.d.ts +29 -0
  376. package/dist/core/services/gitignore-manager.d.ts.map +1 -0
  377. package/dist/core/services/gitignore-manager.js +95 -0
  378. package/dist/core/services/gitignore-manager.js.map +1 -0
  379. package/dist/core/services/index.d.ts +8 -0
  380. package/dist/core/services/index.d.ts.map +1 -0
  381. package/dist/core/services/index.js +8 -0
  382. package/dist/core/services/index.js.map +1 -0
  383. package/dist/core/services/llm-service.d.ts +379 -0
  384. package/dist/core/services/llm-service.d.ts.map +1 -0
  385. package/dist/core/services/llm-service.js +1553 -0
  386. package/dist/core/services/llm-service.js.map +1 -0
  387. package/dist/core/services/mcp-handlers/analysis.d.ts +127 -0
  388. package/dist/core/services/mcp-handlers/analysis.d.ts.map +1 -0
  389. package/dist/core/services/mcp-handlers/analysis.js +1185 -0
  390. package/dist/core/services/mcp-handlers/analysis.js.map +1 -0
  391. package/dist/core/services/mcp-handlers/change.d.ts +14 -0
  392. package/dist/core/services/mcp-handlers/change.d.ts.map +1 -0
  393. package/dist/core/services/mcp-handlers/change.js +416 -0
  394. package/dist/core/services/mcp-handlers/change.js.map +1 -0
  395. package/dist/core/services/mcp-handlers/decisions.d.ts +16 -0
  396. package/dist/core/services/mcp-handlers/decisions.d.ts.map +1 -0
  397. package/dist/core/services/mcp-handlers/decisions.js +239 -0
  398. package/dist/core/services/mcp-handlers/decisions.js.map +1 -0
  399. package/dist/core/services/mcp-handlers/graph.d.ts +94 -0
  400. package/dist/core/services/mcp-handlers/graph.d.ts.map +1 -0
  401. package/dist/core/services/mcp-handlers/graph.js +693 -0
  402. package/dist/core/services/mcp-handlers/graph.js.map +1 -0
  403. package/dist/core/services/mcp-handlers/orient.d.ts +17 -0
  404. package/dist/core/services/mcp-handlers/orient.d.ts.map +1 -0
  405. package/dist/core/services/mcp-handlers/orient.js +357 -0
  406. package/dist/core/services/mcp-handlers/orient.js.map +1 -0
  407. package/dist/core/services/mcp-handlers/semantic.d.ts +66 -0
  408. package/dist/core/services/mcp-handlers/semantic.d.ts.map +1 -0
  409. package/dist/core/services/mcp-handlers/semantic.js +432 -0
  410. package/dist/core/services/mcp-handlers/semantic.js.map +1 -0
  411. package/dist/core/services/mcp-handlers/utils.d.ts +85 -0
  412. package/dist/core/services/mcp-handlers/utils.d.ts.map +1 -0
  413. package/dist/core/services/mcp-handlers/utils.js +262 -0
  414. package/dist/core/services/mcp-handlers/utils.js.map +1 -0
  415. package/dist/core/services/mcp-watcher.d.ts +41 -0
  416. package/dist/core/services/mcp-watcher.d.ts.map +1 -0
  417. package/dist/core/services/mcp-watcher.js +254 -0
  418. package/dist/core/services/mcp-watcher.js.map +1 -0
  419. package/dist/core/services/project-detector.d.ts +32 -0
  420. package/dist/core/services/project-detector.d.ts.map +1 -0
  421. package/dist/core/services/project-detector.js +100 -0
  422. package/dist/core/services/project-detector.js.map +1 -0
  423. package/dist/core/test-generator/coverage-analyzer.d.ts +27 -0
  424. package/dist/core/test-generator/coverage-analyzer.d.ts.map +1 -0
  425. package/dist/core/test-generator/coverage-analyzer.js +285 -0
  426. package/dist/core/test-generator/coverage-analyzer.js.map +1 -0
  427. package/dist/core/test-generator/framework-detector.d.ts +17 -0
  428. package/dist/core/test-generator/framework-detector.d.ts.map +1 -0
  429. package/dist/core/test-generator/framework-detector.js +65 -0
  430. package/dist/core/test-generator/framework-detector.js.map +1 -0
  431. package/dist/core/test-generator/index.d.ts +14 -0
  432. package/dist/core/test-generator/index.d.ts.map +1 -0
  433. package/dist/core/test-generator/index.js +11 -0
  434. package/dist/core/test-generator/index.js.map +1 -0
  435. package/dist/core/test-generator/renderers/catch2.d.ts +8 -0
  436. package/dist/core/test-generator/renderers/catch2.d.ts.map +1 -0
  437. package/dist/core/test-generator/renderers/catch2.js +47 -0
  438. package/dist/core/test-generator/renderers/catch2.js.map +1 -0
  439. package/dist/core/test-generator/renderers/gtest.d.ts +8 -0
  440. package/dist/core/test-generator/renderers/gtest.d.ts.map +1 -0
  441. package/dist/core/test-generator/renderers/gtest.js +45 -0
  442. package/dist/core/test-generator/renderers/gtest.js.map +1 -0
  443. package/dist/core/test-generator/renderers/index.d.ts +20 -0
  444. package/dist/core/test-generator/renderers/index.d.ts.map +1 -0
  445. package/dist/core/test-generator/renderers/index.js +35 -0
  446. package/dist/core/test-generator/renderers/index.js.map +1 -0
  447. package/dist/core/test-generator/renderers/playwright.d.ts +8 -0
  448. package/dist/core/test-generator/renderers/playwright.d.ts.map +1 -0
  449. package/dist/core/test-generator/renderers/playwright.js +44 -0
  450. package/dist/core/test-generator/renderers/playwright.js.map +1 -0
  451. package/dist/core/test-generator/renderers/pytest.d.ts +8 -0
  452. package/dist/core/test-generator/renderers/pytest.d.ts.map +1 -0
  453. package/dist/core/test-generator/renderers/pytest.js +44 -0
  454. package/dist/core/test-generator/renderers/pytest.js.map +1 -0
  455. package/dist/core/test-generator/renderers/shared.d.ts +21 -0
  456. package/dist/core/test-generator/renderers/shared.d.ts.map +1 -0
  457. package/dist/core/test-generator/renderers/shared.js +56 -0
  458. package/dist/core/test-generator/renderers/shared.js.map +1 -0
  459. package/dist/core/test-generator/renderers/vitest.d.ts +8 -0
  460. package/dist/core/test-generator/renderers/vitest.d.ts.map +1 -0
  461. package/dist/core/test-generator/renderers/vitest.js +52 -0
  462. package/dist/core/test-generator/renderers/vitest.js.map +1 -0
  463. package/dist/core/test-generator/scenario-parser.d.ts +33 -0
  464. package/dist/core/test-generator/scenario-parser.d.ts.map +1 -0
  465. package/dist/core/test-generator/scenario-parser.js +244 -0
  466. package/dist/core/test-generator/scenario-parser.js.map +1 -0
  467. package/dist/core/test-generator/test-generator.d.ts +30 -0
  468. package/dist/core/test-generator/test-generator.d.ts.map +1 -0
  469. package/dist/core/test-generator/test-generator.js +174 -0
  470. package/dist/core/test-generator/test-generator.js.map +1 -0
  471. package/dist/core/test-generator/test-writer.d.ts +25 -0
  472. package/dist/core/test-generator/test-writer.d.ts.map +1 -0
  473. package/dist/core/test-generator/test-writer.js +128 -0
  474. package/dist/core/test-generator/test-writer.js.map +1 -0
  475. package/dist/core/test-generator/then-matchers.d.ts +35 -0
  476. package/dist/core/test-generator/then-matchers.d.ts.map +1 -0
  477. package/dist/core/test-generator/then-matchers.js +211 -0
  478. package/dist/core/test-generator/then-matchers.js.map +1 -0
  479. package/dist/core/verifier/index.d.ts +5 -0
  480. package/dist/core/verifier/index.d.ts.map +1 -0
  481. package/dist/core/verifier/index.js +5 -0
  482. package/dist/core/verifier/index.js.map +1 -0
  483. package/dist/core/verifier/verification-engine.d.ts +293 -0
  484. package/dist/core/verifier/verification-engine.d.ts.map +1 -0
  485. package/dist/core/verifier/verification-engine.js +919 -0
  486. package/dist/core/verifier/verification-engine.js.map +1 -0
  487. package/dist/types/index.d.ts +368 -0
  488. package/dist/types/index.d.ts.map +1 -0
  489. package/dist/types/index.js +5 -0
  490. package/dist/types/index.js.map +1 -0
  491. package/dist/types/pipeline.d.ts +167 -0
  492. package/dist/types/pipeline.d.ts.map +1 -0
  493. package/dist/types/pipeline.js +5 -0
  494. package/dist/types/pipeline.js.map +1 -0
  495. package/dist/types/test-generator.d.ts +103 -0
  496. package/dist/types/test-generator.d.ts.map +1 -0
  497. package/dist/types/test-generator.js +17 -0
  498. package/dist/types/test-generator.js.map +1 -0
  499. package/dist/utils/command-helpers.d.ts +68 -0
  500. package/dist/utils/command-helpers.d.ts.map +1 -0
  501. package/dist/utils/command-helpers.js +150 -0
  502. package/dist/utils/command-helpers.js.map +1 -0
  503. package/dist/utils/errors.d.ts +51 -0
  504. package/dist/utils/errors.d.ts.map +1 -0
  505. package/dist/utils/errors.js +129 -0
  506. package/dist/utils/errors.js.map +1 -0
  507. package/dist/utils/logger.d.ts +149 -0
  508. package/dist/utils/logger.d.ts.map +1 -0
  509. package/dist/utils/logger.js +342 -0
  510. package/dist/utils/logger.js.map +1 -0
  511. package/dist/utils/misc.d.ts +10 -0
  512. package/dist/utils/misc.d.ts.map +1 -0
  513. package/dist/utils/misc.js +21 -0
  514. package/dist/utils/misc.js.map +1 -0
  515. package/dist/utils/progress.d.ts +142 -0
  516. package/dist/utils/progress.d.ts.map +1 -0
  517. package/dist/utils/progress.js +283 -0
  518. package/dist/utils/progress.js.map +1 -0
  519. package/dist/utils/prompts.d.ts +53 -0
  520. package/dist/utils/prompts.d.ts.map +1 -0
  521. package/dist/utils/prompts.js +199 -0
  522. package/dist/utils/prompts.js.map +1 -0
  523. package/dist/utils/shutdown.d.ts +89 -0
  524. package/dist/utils/shutdown.d.ts.map +1 -0
  525. package/dist/utils/shutdown.js +238 -0
  526. package/dist/utils/shutdown.js.map +1 -0
  527. package/examples/bmad/README.md +113 -0
  528. package/examples/bmad/agents/architect.md +226 -0
  529. package/examples/bmad/agents/dev-brownfield.md +69 -0
  530. package/examples/bmad/setup/architect.customize.yaml +14 -0
  531. package/examples/bmad/tasks/implement-story.md +254 -0
  532. package/examples/bmad/tasks/onboarding.md +169 -0
  533. package/examples/bmad/tasks/refactor.md +178 -0
  534. package/examples/bmad/tasks/sprint-planning.md +168 -0
  535. package/examples/bmad/templates/story.md +108 -0
  536. package/examples/cline-workflows/openlore-analyze-codebase.md +101 -0
  537. package/examples/cline-workflows/openlore-check-spec-drift.md +102 -0
  538. package/examples/cline-workflows/openlore-execute-refactor.md +212 -0
  539. package/examples/cline-workflows/openlore-implement-feature.md +266 -0
  540. package/examples/cline-workflows/openlore-plan-refactor.md +279 -0
  541. package/examples/cline-workflows/openlore-refactor-codebase.md +16 -0
  542. package/examples/cline-workflows/openlore-write-tests.md +177 -0
  543. package/examples/drift-demo/openspec/config.yaml +14 -0
  544. package/examples/drift-demo/openspec/specs/architecture/spec.md +30 -0
  545. package/examples/drift-demo/openspec/specs/auth/spec.md +71 -0
  546. package/examples/drift-demo/openspec/specs/database/spec.md +33 -0
  547. package/examples/drift-demo/openspec/specs/overview/spec.md +20 -0
  548. package/examples/drift-demo/openspec/specs/projects/spec.md +55 -0
  549. package/examples/drift-demo/openspec/specs/tasks/spec.md +78 -0
  550. package/examples/drift-demo/package.json +21 -0
  551. package/examples/drift-demo/src/auth/auth-middleware.ts +30 -0
  552. package/examples/drift-demo/src/auth/auth-routes.ts +29 -0
  553. package/examples/drift-demo/src/auth/auth-service.ts +45 -0
  554. package/examples/drift-demo/src/database/connection.ts +27 -0
  555. package/examples/drift-demo/src/index.ts +16 -0
  556. package/examples/drift-demo/src/projects/project-model.ts +15 -0
  557. package/examples/drift-demo/src/projects/project-service.ts +34 -0
  558. package/examples/drift-demo/src/tasks/task-model.ts +37 -0
  559. package/examples/drift-demo/src/tasks/task-routes.ts +53 -0
  560. package/examples/drift-demo/src/tasks/task-service.ts +60 -0
  561. package/examples/drift-demo/src/utils/validation.ts +11 -0
  562. package/examples/drift-demo/tests/auth.test.ts +4 -0
  563. package/examples/drift-demo/tests/tasks.test.ts +4 -0
  564. package/examples/drift-demo/tsconfig.json +10 -0
  565. package/examples/drift-test/run-drift-test.sh +1087 -0
  566. package/examples/gsd/README.md +119 -0
  567. package/examples/gsd/commands/gsd/openlore-drift.md +111 -0
  568. package/examples/gsd/commands/gsd/openlore-orient.md +191 -0
  569. package/examples/mistral-vibe/README.md +101 -0
  570. package/examples/mistral-vibe/antipatterns-template.md +18 -0
  571. package/examples/mistral-vibe/skills/openlore-analyze-codebase/SKILL.md +124 -0
  572. package/examples/mistral-vibe/skills/openlore-brainstorm/SKILL.md +379 -0
  573. package/examples/mistral-vibe/skills/openlore-debug/SKILL.md +330 -0
  574. package/examples/mistral-vibe/skills/openlore-execute-refactor/SKILL.md +291 -0
  575. package/examples/mistral-vibe/skills/openlore-generate/SKILL.md +245 -0
  576. package/examples/mistral-vibe/skills/openlore-implement-story/SKILL.md +326 -0
  577. package/examples/mistral-vibe/skills/openlore-plan-refactor/SKILL.md +365 -0
  578. package/examples/mistral-vibe/skills/openlore-review-changes/SKILL.md +128 -0
  579. package/examples/mistral-vibe/skills/openlore-write-tests/SKILL.md +261 -0
  580. package/examples/opencode/agent-guard.ts +170 -0
  581. package/examples/opencode/plugins/anti-laziness.ts +202 -0
  582. package/examples/opencode/plugins/lib/openlore-context-injector-helpers.ts +116 -0
  583. package/examples/opencode/plugins/lib/openlore-decision-extractor-helpers.ts +65 -0
  584. package/examples/opencode/plugins/openlore-context-injector.test.ts +211 -0
  585. package/examples/opencode/plugins/openlore-context-injector.ts +165 -0
  586. package/examples/opencode/plugins/openlore-decision-extractor.test.ts +131 -0
  587. package/examples/opencode/plugins/openlore-decision-extractor.ts +322 -0
  588. package/examples/opencode/plugins/openlore-enforcer.ts +227 -0
  589. package/examples/opencode/prompts/sisyphus-sdd.md +150 -0
  590. package/examples/opencode-skills/openlore-analyze-codebase/SKILL.md +101 -0
  591. package/examples/opencode-skills/openlore-brainstorm/SKILL.md +354 -0
  592. package/examples/opencode-skills/openlore-debug/SKILL.md +291 -0
  593. package/examples/opencode-skills/openlore-execute-refactor/SKILL.md +241 -0
  594. package/examples/opencode-skills/openlore-generate/SKILL.md +236 -0
  595. package/examples/opencode-skills/openlore-implement-story/SKILL.md +251 -0
  596. package/examples/opencode-skills/openlore-plan-refactor/SKILL.md +298 -0
  597. package/examples/opencode-skills/openlore-review-changes/SKILL.md +134 -0
  598. package/examples/opencode-skills/openlore-write-tests/SKILL.md +230 -0
  599. package/examples/openspec-analysis/README.md +59 -0
  600. package/examples/openspec-analysis/SUMMARY.md +72 -0
  601. package/examples/openspec-analysis/config.json +16 -0
  602. package/examples/openspec-analysis/dependencies.mermaid +35 -0
  603. package/examples/openspec-analysis/dependency-graph.json +12116 -0
  604. package/examples/openspec-analysis/llm-context.json +119 -0
  605. package/examples/openspec-analysis/repo-structure.json +871 -0
  606. package/examples/openspec-cli/README.md +67 -0
  607. package/examples/openspec-cli/openspec/config.yaml +26 -0
  608. package/examples/openspec-cli/openspec/specs/architecture/spec.md +178 -0
  609. package/examples/openspec-cli/openspec/specs/artifact-graph/spec.md +143 -0
  610. package/examples/openspec-cli/openspec/specs/cli/spec.md +138 -0
  611. package/examples/openspec-cli/openspec/specs/overview/spec.md +60 -0
  612. package/examples/openspec-cli/openspec/specs/parsing/spec.md +123 -0
  613. package/examples/openspec-cli/openspec/specs/validation/spec.md +108 -0
  614. package/examples/spec-kit/README.md +104 -0
  615. package/examples/spec-kit/commands/drift.md +87 -0
  616. package/examples/spec-kit/commands/orient.md +138 -0
  617. package/examples/spec-kit/extension.yml +54 -0
  618. package/package.json +125 -0
  619. package/src/viewer/InteractiveGraphViewer.jsx +1600 -0
  620. package/src/viewer/app/index.html +17 -0
  621. package/src/viewer/app/main.jsx +13 -0
  622. package/src/viewer/components/ArchitectureView.jsx +177 -0
  623. package/src/viewer/components/ChatPanel.jsx +450 -0
  624. package/src/viewer/components/ClassGraph.jsx +782 -0
  625. package/src/viewer/components/ClusterGraph.jsx +469 -0
  626. package/src/viewer/components/FilterBar.jsx +179 -0
  627. package/src/viewer/components/FlatGraph.jsx +282 -0
  628. package/src/viewer/components/MicroComponents.jsx +85 -0
  629. package/src/viewer/hooks/usePanZoom.js +79 -0
  630. package/src/viewer/utils/constants.js +64 -0
  631. package/src/viewer/utils/graph-helpers.js +303 -0
  632. package/src/viewer/utils/graph-helpers.test.ts +39 -0
  633. package/src/viewer/utils/themes.js +206 -0
  634. package/stubs/tree-sitter-cli-stub/package.json +6 -0
@@ -0,0 +1,254 @@
1
+ # Task: Implement Story
2
+
3
+ **Purpose**: Implement a BMAD story on any codebase — new or existing.
4
+ Structural analysis is used proportionally to the risk level already known from planning.
5
+
6
+ ---
7
+
8
+ ## Inputs
9
+
10
+ From the story file:
11
+ - `$STORY_TITLE`, `$AC`, `$PROJECT_ROOT`
12
+ - `$RISK_CONTEXT` — the `risk_context` section (pre-filled by Architect Agent at planning time)
13
+
14
+ If `.claude/antipatterns.md` exists, read it and store as `$ANTIPATTERNS`.
15
+ This list will be cross-checked at Step 4b.
16
+
17
+ ---
18
+
19
+ ## Step 1 — Read the risk context
20
+
21
+ Open the story file and check whether `risk_context` is populated.
22
+
23
+ ### If risk_context IS present (normal case — planning was done)
24
+
25
+ Use it directly. Do not re-run structural analysis unless something feels wrong.
26
+
27
+ | Risk level in story | Approach |
28
+ |---|---|
29
+ | 🟢 low (< 40) | Proceed to Step 3. Quick orient to confirm insertion point. |
30
+ | 🟡 medium (40–69) | Run Step 2 impact check. Proceed with callers protected. |
31
+ | 🔴 high / critical (≥ 70) | Story should have a blocking refactor. If not scheduled, stop and flag it. |
32
+
33
+ ### If risk_context is ABSENT (planning was skipped or story is new)
34
+
35
+ Run the full orientation in Step 2 before proceeding.
36
+
37
+ ---
38
+
39
+ ## Step 2 — Orient (full or confirm)
40
+
41
+ **Full orient** (risk_context absent, or medium+ risk):
42
+
43
+ ```xml
44
+ <use_mcp_tool>
45
+ <server_name>openlore</server_name>
46
+ <tool_name>orient</tool_name>
47
+ <arguments>{
48
+ "directory": "$PROJECT_ROOT",
49
+ "task": "$STORY_TITLE — $AC1",
50
+ "limit": 7
51
+ }</arguments>
52
+ </use_mcp_tool>
53
+ ```
54
+
55
+ If orient returns `"error": "no cache"` → run `analyze_codebase` first, then retry.
56
+
57
+ **For medium+ risk**, also run impact on the top 2 functions:
58
+
59
+ ```xml
60
+ <use_mcp_tool>
61
+ <server_name>openlore</server_name>
62
+ <tool_name>analyze_impact</tool_name>
63
+ <arguments>{
64
+ "directory": "$PROJECT_ROOT",
65
+ "symbol": "$FUNCTION_NAME",
66
+ "depth": 2
67
+ }</arguments>
68
+ </use_mcp_tool>
69
+ ```
70
+
71
+ If a function has `riskScore ≥ 70` that was NOT flagged at planning: **stop**.
72
+ Create a blocking refactor story and do not implement until it's resolved.
73
+
74
+ ---
75
+
76
+ ## Step 2.5 — Audit spec coverage of the target domain
77
+
78
+ Run a parity audit to check if the domain you're about to touch has spec gaps.
79
+
80
+ ```xml
81
+ <use_mcp_tool>
82
+ <server_name>openlore</server_name>
83
+ <tool_name>audit_spec_coverage</tool_name>
84
+ <arguments>{"directory": "$PROJECT_ROOT"}</arguments>
85
+ </use_mcp_tool>
86
+ ```
87
+
88
+ From the result, check:
89
+ - `staleDomains` — if the target domain appears here, its spec is outdated.
90
+ Recommend running `openlore generate --domains $DOMAIN` before implementing.
91
+ - `hubGaps` — uncovered hub functions. If the feature touches one of these,
92
+ add it to the adversarial check in Step 4b (high blast radius + no spec = risk).
93
+
94
+ If both are clean, continue to Step 3 without action.
95
+
96
+ ---
97
+
98
+ ## Step 3 — Check the spec
99
+
100
+ First verify that OpenSpec specs exist for this project:
101
+
102
+ ```bash
103
+ ls $PROJECT_ROOT/openspec/specs/ 2>/dev/null | wc -l
104
+ ```
105
+
106
+ **If 0 specs found:**
107
+ > No OpenSpec specs exist yet for this project. `search_specs` will return empty
108
+ > results and `check_spec_drift` (Step 7) will flag all files as uncovered.
109
+ >
110
+ > The Architect agent should have run `openlore generate` during onboarding.
111
+ > If it hasn't been run yet, note it in the Dev Agent Record and proceed with
112
+ > structural analysis only. The spec baseline can be created post-sprint with
113
+ > `openlore generate $PROJECT_ROOT`.
114
+
115
+ Skip `search_specs` and go to Step 4.
116
+
117
+ **If specs exist:**
118
+
119
+ ```xml
120
+ <use_mcp_tool>
121
+ <server_name>openlore</server_name>
122
+ <tool_name>search_specs</tool_name>
123
+ <arguments>{
124
+ "directory": "$PROJECT_ROOT",
125
+ "query": "$STORY_TITLE",
126
+ "limit": 5
127
+ }</arguments>
128
+ </use_mcp_tool>
129
+ ```
130
+
131
+ If relevant requirements are found, read the domain spec before writing code.
132
+ Note any constraints that apply to the implementation.
133
+
134
+ ---
135
+
136
+ ## Step 4 — Find the insertion point
137
+
138
+ Use the `insertion_points` from `risk_context` if present. Otherwise:
139
+
140
+ ```xml
141
+ <use_mcp_tool>
142
+ <server_name>openlore</server_name>
143
+ <tool_name>suggest_insertion_points</tool_name>
144
+ <arguments>{
145
+ "directory": "$PROJECT_ROOT",
146
+ "description": "$STORY_TITLE",
147
+ "limit": 5
148
+ }</arguments>
149
+ </use_mcp_tool>
150
+ ```
151
+
152
+ Read the skeleton of the target file:
153
+
154
+ ```xml
155
+ <use_mcp_tool>
156
+ <server_name>openlore</server_name>
157
+ <tool_name>get_function_skeleton</tool_name>
158
+ <arguments>{
159
+ "directory": "$PROJECT_ROOT",
160
+ "filePath": "$TARGET_FILE"
161
+ }</arguments>
162
+ </use_mcp_tool>
163
+ ```
164
+
165
+ Confirm the approach with the user before writing code.
166
+
167
+ ### Step 4b — Adversarial self-check
168
+
169
+ Before writing any code, state explicitly what could break with this approach.
170
+ If `$ANTIPATTERNS` was loaded (see Inputs), include any applicable patterns.
171
+
172
+ > "Risk check on `$INSERTION_POINT`:
173
+ > - `$CALLER_A` and `$CALLER_B` depend on this function — verify their assumptions hold after the change.
174
+ > - `$EDGE_CASE` is not covered by the current test suite — add it in Step 6.
175
+ > - [if antipatterns apply] AP-NNN (`$PATTERN_NAME`) — `$RULE` — applies here because `$REASON`."
176
+
177
+ This is not a gate — do not wait for user input. It is a mandatory self-check
178
+ that must appear in the output before the first line of code is written.
179
+
180
+ ---
181
+
182
+ ## Step 5 — Implement
183
+
184
+ Apply changes in this order:
185
+ 1. New types/interfaces (if needed)
186
+ 2. Core logic at the insertion point
187
+ 3. Updated call sites (if any)
188
+
189
+ Do not touch functions outside the scope from Step 2/risk_context without re-running the gate.
190
+
191
+ ---
192
+
193
+ ## Step 6 — Tests
194
+
195
+ Two levels, both required before proceeding:
196
+
197
+ **Mandatory — existing tests must not regress:**
198
+ Run the full test suite. If any pre-existing test breaks, fix the regression before continuing.
199
+ A green CI on existing tests is the minimum gate.
200
+
201
+ **Recommended — at least one new test per AC:**
202
+ Write a test that directly exercises the new behaviour described in the acceptance criterion.
203
+ This is the proof that the implementation matches the intent — without it, the spec update in Step 7 has no evidence.
204
+
205
+ | Situation | Action |
206
+ |---|---|
207
+ | All tests green, new tests written | Proceed to Step 7 |
208
+ | Existing test broken | Fix regression. Do not proceed. |
209
+ | New test reveals a misunderstanding of the AC | Return to Step 5, adjust implementation |
210
+ | Brownfield: no existing test coverage | Write the new test anyway. Note the coverage gap in the Dev Agent Record. |
211
+
212
+ ---
213
+
214
+ ## Step 7 — Verify drift
215
+
216
+ Only run once tests are green.
217
+
218
+ ```xml
219
+ <use_mcp_tool>
220
+ <server_name>openlore</server_name>
221
+ <tool_name>check_spec_drift</tool_name>
222
+ <arguments>{"directory": "$PROJECT_ROOT"}</arguments>
223
+ </use_mcp_tool>
224
+ ```
225
+
226
+ | Drift type | Resolution |
227
+ |---|---|
228
+ | `uncovered` on new files | Propose `openlore generate` post-sprint |
229
+ | `gap` on existing domain | Run `openlore generate --domains $DOMAIN` |
230
+ | `stale` | Fix the reference |
231
+ | No drift | ✅ |
232
+
233
+ If drift is found on a domain touched by this story, note it in the Dev Agent Record — the spec update can be proposed after the sprint, not mid-implementation.
234
+
235
+ ---
236
+
237
+ ## Step 8 — Update the story
238
+
239
+ Fill in the **Dev Agent Record** section of the story file and mark as `Review`.
240
+
241
+ Include:
242
+ - test files written / modified
243
+ - whether existing coverage was sufficient or a gap remains
244
+ - any drift found in Step 7
245
+
246
+ ---
247
+
248
+ ## Absolute constraints
249
+
250
+ - Do not write code before Step 4 confirmation
251
+ - Step 4b adversarial self-check is mandatory — never skip it
252
+ - If riskScore ≥ 70 was not caught at planning — stop, do not work around it
253
+ - Do not run `check_spec_drift` before tests are green
254
+ - Do not propose a spec update on untested code
@@ -0,0 +1,169 @@
1
+ # Task: Brownfield Onboarding
2
+
3
+ **Purpose**: Establish a structural baseline on an existing codebase.
4
+ **Phase**: Architecture — run this BEFORE writing architecture documents, planning epics, or creating stories.
5
+ Run once per project, then re-run at the start of each planning cycle (quarterly or after major refactors).
6
+
7
+ **Who runs this**: Architect Agent (not Dev Agent).
8
+
9
+ **Output**: populated `openspec/` + `.openlore/` + risk register embedded in architecture doc.
10
+
11
+ **Estimated time**: 5–15 minutes depending on codebase size.
12
+
13
+ ---
14
+
15
+ ## Prerequisites
16
+
17
+ - openlore MCP server connected
18
+ - `openlore` CLI available (`npx openlore` or local install)
19
+ - Read access to the project directory
20
+
21
+ ---
22
+
23
+ ## Step 1 — Run static analysis
24
+
25
+ ```xml
26
+ <use_mcp_tool>
27
+ <server_name>openlore</server_name>
28
+ <tool_name>analyze_codebase</tool_name>
29
+ <arguments>{
30
+ "directory": "$PROJECT_ROOT",
31
+ "force": false
32
+ }</arguments>
33
+ </use_mcp_tool>
34
+ ```
35
+
36
+ Expected output: summary with module count, function count, cycle count.
37
+ If `cycles_detected > 0`, note it — this is a brownfield risk signal.
38
+
39
+ ---
40
+
41
+ ## Step 2 — Understand the architecture
42
+
43
+ ```xml
44
+ <use_mcp_tool>
45
+ <server_name>openlore</server_name>
46
+ <tool_name>get_architecture_overview</tool_name>
47
+ <arguments>{"directory": "$PROJECT_ROOT"}</arguments>
48
+ </use_mcp_tool>
49
+ ```
50
+
51
+ From the result, record:
52
+ - **Domain clusters** (the logical groupings openlore detected)
53
+ - **Cross-cluster dependencies** (coupling risks)
54
+ - **Entry points** (where requests enter the system)
55
+ - **Critical hubs** (high fan-in functions — touch with care)
56
+
57
+ ---
58
+
59
+ ## Step 3 — Identify hotspots
60
+
61
+ ```xml
62
+ <use_mcp_tool>
63
+ <server_name>openlore</server_name>
64
+ <tool_name>get_refactor_report</tool_name>
65
+ <arguments>{"directory": "$PROJECT_ROOT"}</arguments>
66
+ </use_mcp_tool>
67
+ ```
68
+
69
+ Create a brownfield risk register — a simple table:
70
+
71
+ | Function | File | Issues | Priority | Action |
72
+ |---|---|---|---|---|
73
+ | ... | ... | high_fan_out | 85 | Refactor before touching |
74
+ | ... | ... | in_cycle | 60 | Isolate cycle first |
75
+ | ... | ... | multi_requirement | 40 | Document carefully |
76
+
77
+ Functions with priority > 70 are **no-touch zones** until refactored.
78
+
79
+ ---
80
+
81
+ ## Step 4 — Check for duplicate code
82
+
83
+ ```xml
84
+ <use_mcp_tool>
85
+ <server_name>openlore</server_name>
86
+ <tool_name>get_duplicate_report</tool_name>
87
+ <arguments>{"directory": "$PROJECT_ROOT"}</arguments>
88
+ </use_mcp_tool>
89
+ ```
90
+
91
+ Note any clone groups — they indicate debt that will multiply if features are added naively.
92
+
93
+ ---
94
+
95
+ ## Step 5 — Generate OpenSpec (if no specs exist)
96
+
97
+ If `openspec/` does not exist or has no specs, generate them:
98
+
99
+ ```bash
100
+ openlore analyze --embed
101
+ openlore generate
102
+ ```
103
+
104
+ Or trigger the openlore skill in your AI agent:
105
+
106
+ > "Run openlore on this codebase and generate OpenSpec specifications."
107
+
108
+ This creates `openspec/specs/{domain}/spec.md` for each detected domain.
109
+ Commit the result — these become the baseline for drift detection.
110
+
111
+ ---
112
+
113
+ ## Step 6 — Verify spec coverage
114
+
115
+ ```xml
116
+ <use_mcp_tool>
117
+ <server_name>openlore</server_name>
118
+ <tool_name>check_spec_drift</tool_name>
119
+ <arguments>{
120
+ "directory": "$PROJECT_ROOT",
121
+ "base": "HEAD"
122
+ }</arguments>
123
+ </use_mcp_tool>
124
+ ```
125
+
126
+ At this point drift should be zero (we just generated specs from HEAD).
127
+ If `uncovered` files appear, add them to the backlog as "spec missing" items.
128
+
129
+ ---
130
+
131
+ ## Step 7 — Record the baseline
132
+
133
+ Create or update `openspec/specs/architecture/spec.md` with a **brownfield baseline** section:
134
+
135
+ ```markdown
136
+ ## Brownfield Baseline
137
+
138
+ > Established: {date}
139
+
140
+ ### Risk Register
141
+
142
+ | Function | Issues | Priority |
143
+ |---|---|---|
144
+ | ... | ... | ... |
145
+
146
+ ### No-touch zones (priority > 70)
147
+
148
+ - `functionName` in `path/to/file.ts` — reason
149
+
150
+ ### Known duplicate groups
151
+
152
+ - N clone groups detected (see `.openlore/analysis/`)
153
+
154
+ ### Onboarding notes
155
+
156
+ - ...
157
+ ```
158
+
159
+ ---
160
+
161
+ ## Completion Criteria
162
+
163
+ - [ ] `openlore analyze` completed without error
164
+ - [ ] Architecture overview reviewed and understood
165
+ - [ ] Risk register created with functions priority > 70 flagged
166
+ - [ ] `openspec/` populated (generated or pre-existing)
167
+ - [ ] `check_spec_drift` shows zero drift on HEAD
168
+ - [ ] Baseline documented in `openspec/specs/architecture/spec.md`
169
+ - [ ] BMAD project backlog updated with any "spec missing" items
@@ -0,0 +1,178 @@
1
+ # Task: Brownfield Refactor
2
+
3
+ **Purpose**: Plan and execute a safe refactoring on a brownfield codebase before implementing a story.
4
+ Typically triggered by the `dev-brownfield` agent gate when `riskScore ≥ 70`.
5
+
6
+ **Output**: `.openlore/refactor-plan.md` applied and verified.
7
+
8
+ ---
9
+
10
+ ## Inputs
11
+
12
+ - `$TARGET_FUNCTION` — function identified as high-risk by `analyze_impact`
13
+ - `$PROJECT_ROOT` — absolute path to the project
14
+
15
+ ---
16
+
17
+ ## Step 1 — Confirm target and scope
18
+
19
+ Present the risk signal to the user:
20
+
21
+ > "`$TARGET_FUNCTION` has a risk score of $SCORE ($ISSUES).
22
+ > Implementing the planned story on this function as-is risks breaking $CALLERS.
23
+ > This task will refactor it first. Proceed?"
24
+
25
+ If the user declines, mark the story as blocked with dependency: "Refactor `$TARGET_FUNCTION` first."
26
+
27
+ ---
28
+
29
+ ## Step 2 — Get the refactor report
30
+
31
+ ```xml
32
+ <use_mcp_tool>
33
+ <server_name>openlore</server_name>
34
+ <tool_name>get_refactor_report</tool_name>
35
+ <arguments>{"directory": "$PROJECT_ROOT"}</arguments>
36
+ </use_mcp_tool>
37
+ ```
38
+
39
+ Confirm `$TARGET_FUNCTION` appears in the report and note its issues and priority score.
40
+
41
+ ---
42
+
43
+ ## Step 3 — Check for clones
44
+
45
+ ```xml
46
+ <use_mcp_tool>
47
+ <server_name>openlore</server_name>
48
+ <tool_name>get_duplicate_report</tool_name>
49
+ <arguments>{"directory": "$PROJECT_ROOT"}</arguments>
50
+ </use_mcp_tool>
51
+ ```
52
+
53
+ If `$TARGET_FUNCTION` appears in a clone group:
54
+ > "⚠️ This function has N near-clones. Consolidate them first to reduce blast radius."
55
+ Propose consolidation as Change 0 in the plan.
56
+
57
+ ---
58
+
59
+ ## Step 4 — Analyse the call neighbourhood
60
+
61
+ ```xml
62
+ <use_mcp_tool>
63
+ <server_name>openlore</server_name>
64
+ <tool_name>analyze_impact</tool_name>
65
+ <arguments>{
66
+ "directory": "$PROJECT_ROOT",
67
+ "symbol": "$TARGET_FUNCTION",
68
+ "depth": 3
69
+ }</arguments>
70
+ </use_mcp_tool>
71
+ ```
72
+
73
+ ```xml
74
+ <use_mcp_tool>
75
+ <server_name>openlore</server_name>
76
+ <tool_name>get_subgraph</tool_name>
77
+ <arguments>{
78
+ "directory": "$PROJECT_ROOT",
79
+ "functionName": "$TARGET_FUNCTION",
80
+ "direction": "both",
81
+ "format": "mermaid"
82
+ }</arguments>
83
+ </use_mcp_tool>
84
+ ```
85
+
86
+ Show the Mermaid diagram. Identify extraction candidates in the downstream subgraph.
87
+
88
+ ---
89
+
90
+ ## Step 5 — Find safe extraction targets
91
+
92
+ ```xml
93
+ <use_mcp_tool>
94
+ <server_name>openlore</server_name>
95
+ <tool_name>get_low_risk_refactor_candidates</tool_name>
96
+ <arguments>{
97
+ "directory": "$PROJECT_ROOT",
98
+ "filePattern": "$TARGET_FILE",
99
+ "limit": 5
100
+ }</arguments>
101
+ </use_mcp_tool>
102
+ ```
103
+
104
+ Cross-reference with the subgraph: good extraction candidates are already callees of `$TARGET_FUNCTION`.
105
+
106
+ ---
107
+
108
+ ## Step 6 — Find landing zones for extracted helpers
109
+
110
+ ```xml
111
+ <use_mcp_tool>
112
+ <server_name>openlore</server_name>
113
+ <tool_name>suggest_insertion_points</tool_name>
114
+ <arguments>{
115
+ "directory": "$PROJECT_ROOT",
116
+ "description": "extract helper from $TARGET_FUNCTION",
117
+ "limit": 5
118
+ }</arguments>
119
+ </use_mcp_tool>
120
+ ```
121
+
122
+ ---
123
+
124
+ ## Step 7 — Design the change sequence
125
+
126
+ Design an ordered sequence of atomic changes. Each change must specify:
127
+
128
+ - **What**: the exact block to extract (description or line range)
129
+ - **New name**: function name
130
+ - **Target file**: where to place it (existing or new)
131
+ - **Call sites to update**: list each file that calls `$TARGET_FUNCTION` or the extracted block
132
+
133
+ **Present the full sequence to the user and wait for explicit approval before writing the plan.**
134
+
135
+ ---
136
+
137
+ ## Step 8 — Execute (delegate to openlore-execute-refactor)
138
+
139
+ Once the plan is approved, hand off to the `openlore-execute-refactor` skill:
140
+
141
+ 1. Write `.openlore/refactor-plan.md` with the full plan (see skill template)
142
+ 2. Invoke `/openlore-execute-refactor`
143
+
144
+ The execute skill handles:
145
+ - Green baseline verification
146
+ - Restore point setup
147
+ - Atomic change application with tests after each step
148
+ - Post-refactor risk score verification
149
+
150
+ ---
151
+
152
+ ## Step 9 — Re-run the gate
153
+
154
+ After the refactor is complete, re-run `analyze_impact` on `$TARGET_FUNCTION`:
155
+
156
+ ```xml
157
+ <use_mcp_tool>
158
+ <server_name>openlore</server_name>
159
+ <tool_name>analyze_impact</tool_name>
160
+ <arguments>{
161
+ "directory": "$PROJECT_ROOT",
162
+ "symbol": "$TARGET_FUNCTION",
163
+ "depth": 2
164
+ }</arguments>
165
+ </use_mcp_tool>
166
+ ```
167
+
168
+ - If `riskScore` is now < 70 → return to the story implementation task
169
+ - If `riskScore` is still ≥ 70 → repeat from Step 4 with the updated subgraph
170
+
171
+ ---
172
+
173
+ ## Completion Criteria
174
+
175
+ - [ ] `riskScore` for `$TARGET_FUNCTION` < 70
176
+ - [ ] Full test suite passes (green)
177
+ - [ ] `check_spec_drift` clean or addressed
178
+ - [ ] Story unblocked — return to `implement-story-brownfield`