@decaf-ts/mcp-server 0.4.2 → 0.4.7

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 (536) hide show
  1. package/LICENSE.md +31 -0
  2. package/dist/mcp-server.cjs +2 -2360
  3. package/dist/mcp-server.cjs.map +1 -0
  4. package/dist/mcp-server.js +2 -0
  5. package/dist/mcp-server.js.map +1 -0
  6. package/lib/bin/cli.cjs +7 -35
  7. package/lib/bin/cli.js.map +1 -0
  8. package/lib/builders/builder.cjs +91 -0
  9. package/lib/builders/builder.d.ts +25 -0
  10. package/lib/builders/builder.js.map +1 -0
  11. package/lib/{mcp/resources → builders}/index.cjs +5 -2
  12. package/lib/builders/index.d.ts +4 -0
  13. package/lib/builders/index.js.map +1 -0
  14. package/lib/builders/prompt-builder.cjs +76 -0
  15. package/lib/builders/prompt-builder.d.ts +12 -0
  16. package/lib/builders/prompt-builder.js.map +1 -0
  17. package/lib/builders/resource-builder.cjs +83 -0
  18. package/lib/builders/resource-builder.d.ts +14 -0
  19. package/lib/builders/resource-builder.js.map +1 -0
  20. package/lib/builders/tool-builder.cjs +104 -0
  21. package/lib/builders/tool-builder.d.ts +16 -0
  22. package/lib/builders/tool-builder.js.map +1 -0
  23. package/lib/constants.cjs +28 -30
  24. package/lib/constants.d.ts +19 -24
  25. package/lib/constants.js.map +1 -0
  26. package/lib/environment.cjs +32 -0
  27. package/lib/environment.d.ts +71 -0
  28. package/lib/environment.js.map +1 -0
  29. package/lib/esm/bin/cli.js +7 -35
  30. package/lib/esm/bin/cli.js.map +1 -0
  31. package/lib/esm/builders/builder.d.ts +25 -0
  32. package/lib/esm/builders/builder.js +86 -0
  33. package/lib/esm/builders/builder.js.map +1 -0
  34. package/lib/esm/builders/index.d.ts +4 -0
  35. package/lib/esm/builders/index.js +5 -0
  36. package/lib/esm/builders/index.js.map +1 -0
  37. package/lib/esm/builders/prompt-builder.d.ts +12 -0
  38. package/lib/esm/builders/prompt-builder.js +72 -0
  39. package/lib/esm/builders/prompt-builder.js.map +1 -0
  40. package/lib/esm/builders/resource-builder.d.ts +14 -0
  41. package/lib/esm/builders/resource-builder.js +79 -0
  42. package/lib/esm/builders/resource-builder.js.map +1 -0
  43. package/lib/esm/builders/tool-builder.d.ts +16 -0
  44. package/lib/esm/builders/tool-builder.js +100 -0
  45. package/lib/esm/builders/tool-builder.js.map +1 -0
  46. package/lib/esm/constants.d.ts +19 -24
  47. package/lib/esm/constants.js +27 -29
  48. package/lib/esm/constants.js.map +1 -0
  49. package/lib/esm/environment.d.ts +71 -0
  50. package/lib/esm/environment.js +29 -0
  51. package/lib/esm/environment.js.map +1 -0
  52. package/lib/esm/index.d.ts +3 -10
  53. package/lib/esm/index.js +4 -11
  54. package/lib/esm/index.js.map +1 -0
  55. package/lib/esm/mcp-server.d.ts +10 -0
  56. package/lib/esm/mcp-server.js +189 -0
  57. package/lib/esm/mcp-server.js.map +1 -0
  58. package/lib/esm/modules/template-module/index.d.ts +6 -0
  59. package/lib/esm/modules/template-module/index.js +4 -0
  60. package/lib/esm/modules/template-module/index.js.map +1 -0
  61. package/lib/esm/prompts/code/constants.d.ts +1 -0
  62. package/lib/esm/prompts/code/constants.js +2 -0
  63. package/lib/esm/prompts/code/constants.js.map +1 -0
  64. package/lib/esm/prompts/code/design-patterns/builder.d.ts +2 -0
  65. package/lib/esm/prompts/code/design-patterns/builder.js +118 -0
  66. package/lib/esm/prompts/code/design-patterns/builder.js.map +1 -0
  67. package/lib/esm/prompts/code/design-patterns/constants.d.ts +1 -0
  68. package/lib/esm/prompts/code/design-patterns/constants.js +3 -0
  69. package/lib/esm/prompts/code/design-patterns/constants.js.map +1 -0
  70. package/lib/esm/prompts/example-prompt/index.d.ts +2 -0
  71. package/lib/esm/prompts/example-prompt/index.js +18 -0
  72. package/lib/esm/prompts/example-prompt/index.js.map +1 -0
  73. package/lib/esm/prompts/index.d.ts +2 -0
  74. package/lib/esm/prompts/index.js +26 -0
  75. package/lib/esm/prompts/index.js.map +1 -0
  76. package/lib/esm/prompts/interactive-jsdoc/index.d.ts +2 -0
  77. package/lib/esm/prompts/interactive-jsdoc/index.js +18 -0
  78. package/lib/esm/prompts/interactive-jsdoc/index.js.map +1 -0
  79. package/lib/esm/prompts/jsdocs/class-prompt.d.ts +2 -0
  80. package/lib/esm/prompts/jsdocs/class-prompt.js +52 -0
  81. package/lib/esm/prompts/jsdocs/class-prompt.js.map +1 -0
  82. package/lib/esm/prompts/jsdocs/const-prompt.d.ts +2 -0
  83. package/lib/esm/prompts/jsdocs/const-prompt.js +24 -0
  84. package/lib/esm/prompts/jsdocs/const-prompt.js.map +1 -0
  85. package/lib/esm/prompts/jsdocs/constants.d.ts +4 -0
  86. package/lib/esm/prompts/jsdocs/constants.js +46 -0
  87. package/lib/esm/prompts/jsdocs/constants.js.map +1 -0
  88. package/lib/esm/prompts/jsdocs/decorator-prompt.d.ts +2 -0
  89. package/lib/esm/prompts/jsdocs/decorator-prompt.js +42 -0
  90. package/lib/esm/prompts/jsdocs/decorator-prompt.js.map +1 -0
  91. package/lib/esm/prompts/jsdocs/enum-prompt.d.ts +2 -0
  92. package/lib/esm/prompts/jsdocs/enum-prompt.js +24 -0
  93. package/lib/esm/prompts/jsdocs/enum-prompt.js.map +1 -0
  94. package/lib/esm/prompts/jsdocs/function-prompt.d.ts +2 -0
  95. package/lib/esm/prompts/jsdocs/function-prompt.js +43 -0
  96. package/lib/esm/prompts/jsdocs/function-prompt.js.map +1 -0
  97. package/lib/esm/prompts/jsdocs/interface-prompt.d.ts +2 -0
  98. package/lib/esm/prompts/jsdocs/interface-prompt.js +24 -0
  99. package/lib/esm/prompts/jsdocs/interface-prompt.js.map +1 -0
  100. package/lib/esm/prompts/jsdocs/types-prompt.d.ts +2 -0
  101. package/lib/esm/prompts/jsdocs/types-prompt.js +24 -0
  102. package/lib/esm/prompts/jsdocs/types-prompt.js.map +1 -0
  103. package/lib/esm/resources/example-resource/index.d.ts +2 -0
  104. package/lib/esm/resources/example-resource/index.js +19 -0
  105. package/lib/esm/resources/example-resource/index.js.map +1 -0
  106. package/lib/esm/resources/index.d.ts +2 -0
  107. package/lib/esm/resources/index.js +4 -0
  108. package/lib/esm/resources/index.js.map +1 -0
  109. package/lib/esm/resources/repo-metadata/index.d.ts +2 -0
  110. package/lib/esm/resources/repo-metadata/index.js +25 -0
  111. package/lib/esm/resources/repo-metadata/index.js.map +1 -0
  112. package/lib/esm/tools/ast/ts-ast-tool.d.ts +2 -0
  113. package/lib/esm/tools/ast/ts-ast-tool.js +67 -0
  114. package/lib/esm/tools/ast/ts-ast-tool.js.map +1 -0
  115. package/lib/esm/tools/ast/types.d.ts +105 -0
  116. package/lib/esm/tools/ast/types.js +33 -0
  117. package/lib/esm/tools/ast/types.js.map +1 -0
  118. package/lib/esm/tools/ast/utils.d.ts +5 -0
  119. package/lib/esm/tools/ast/utils.js +58 -0
  120. package/lib/esm/tools/ast/utils.js.map +1 -0
  121. package/lib/esm/tools/ast-jsdoc-tools/apply.d.ts +6 -0
  122. package/lib/esm/tools/ast-jsdoc-tools/apply.js +29 -0
  123. package/lib/esm/tools/ast-jsdoc-tools/apply.js.map +1 -0
  124. package/lib/esm/tools/ast-jsdoc-tools/cli.js +33 -0
  125. package/lib/esm/tools/ast-jsdoc-tools/cli.js.map +1 -0
  126. package/lib/esm/tools/ast-jsdoc-tools/enumerator.d.ts +1 -0
  127. package/lib/esm/tools/ast-jsdoc-tools/enumerator.js +25 -0
  128. package/lib/esm/tools/ast-jsdoc-tools/enumerator.js.map +1 -0
  129. package/lib/esm/tools/ast-jsdoc-tools/fileRunner.d.ts +11 -0
  130. package/lib/esm/tools/ast-jsdoc-tools/fileRunner.js +29 -0
  131. package/lib/esm/tools/ast-jsdoc-tools/fileRunner.js.map +1 -0
  132. package/lib/esm/tools/ast-jsdoc-tools/formatter.d.ts +6 -0
  133. package/lib/esm/tools/ast-jsdoc-tools/formatter.js +18 -0
  134. package/lib/esm/tools/ast-jsdoc-tools/formatter.js.map +1 -0
  135. package/lib/esm/tools/ast-jsdoc-tools/generator.d.ts +12 -0
  136. package/lib/esm/tools/ast-jsdoc-tools/generator.js +55 -0
  137. package/lib/esm/tools/ast-jsdoc-tools/generator.js.map +1 -0
  138. package/lib/esm/tools/ast-jsdoc-tools/index.d.ts +7 -0
  139. package/lib/esm/tools/ast-jsdoc-tools/index.js +29 -0
  140. package/lib/esm/tools/ast-jsdoc-tools/index.js.map +1 -0
  141. package/lib/esm/tools/ast-jsdoc-tools/interactive.d.ts +1 -0
  142. package/lib/esm/tools/ast-jsdoc-tools/interactive.js +7 -0
  143. package/lib/esm/tools/ast-jsdoc-tools/interactive.js.map +1 -0
  144. package/lib/esm/tools/ast-jsdoc-tools/parser.d.ts +13 -0
  145. package/lib/esm/tools/ast-jsdoc-tools/parser.js +71 -0
  146. package/lib/esm/tools/ast-jsdoc-tools/parser.js.map +1 -0
  147. package/lib/esm/tools/ast-jsdoc-tools/patch.d.ts +2 -0
  148. package/lib/esm/tools/ast-jsdoc-tools/patch.js +23 -0
  149. package/lib/esm/tools/ast-jsdoc-tools/patch.js.map +1 -0
  150. package/lib/esm/tools/ast-jsdoc-tools/prompts/loader.d.ts +10 -0
  151. package/lib/esm/tools/ast-jsdoc-tools/prompts/loader.js +26 -0
  152. package/lib/esm/tools/ast-jsdoc-tools/prompts/loader.js.map +1 -0
  153. package/lib/esm/tools/ast-jsdoc-tools/repoRunner.d.ts +16 -0
  154. package/lib/esm/tools/ast-jsdoc-tools/repoRunner.js +61 -0
  155. package/lib/esm/tools/ast-jsdoc-tools/repoRunner.js.map +1 -0
  156. package/lib/esm/tools/ast-jsdoc-tools/tools/jsdoc-generator.d.ts +5 -0
  157. package/lib/esm/tools/ast-jsdoc-tools/tools/jsdoc-generator.js +78 -0
  158. package/lib/esm/tools/ast-jsdoc-tools/tools/jsdoc-generator.js.map +1 -0
  159. package/lib/esm/tools/ast-jsdoc-tools/utils/conflict-detector.d.ts +5 -0
  160. package/lib/esm/tools/ast-jsdoc-tools/utils/conflict-detector.js +30 -0
  161. package/lib/esm/tools/ast-jsdoc-tools/utils/conflict-detector.js.map +1 -0
  162. package/lib/esm/tools/ast-jsdoc-tools/utils/context-schema.d.ts +7 -0
  163. package/lib/esm/tools/ast-jsdoc-tools/utils/context-schema.js +29 -0
  164. package/lib/esm/tools/ast-jsdoc-tools/utils/context-schema.js.map +1 -0
  165. package/lib/esm/tools/ast-jsdoc-tools/utils/heuristics.d.ts +2 -0
  166. package/lib/esm/tools/ast-jsdoc-tools/utils/heuristics.js +31 -0
  167. package/lib/esm/tools/ast-jsdoc-tools/utils/heuristics.js.map +1 -0
  168. package/lib/esm/tools/ast-jsdoc-tools/utils/ts-project.d.ts +12 -0
  169. package/lib/esm/tools/ast-jsdoc-tools/utils/ts-project.js +21 -0
  170. package/lib/esm/tools/ast-jsdoc-tools/utils/ts-project.js.map +1 -0
  171. package/lib/esm/tools/example-tool/index.d.ts +2 -0
  172. package/lib/esm/tools/example-tool/index.js +29 -0
  173. package/lib/esm/tools/example-tool/index.js.map +1 -0
  174. package/lib/esm/tools/file-summarizer/index.d.ts +2 -0
  175. package/lib/esm/tools/file-summarizer/index.js +29 -0
  176. package/lib/esm/tools/file-summarizer/index.js.map +1 -0
  177. package/lib/esm/tools/index.d.ts +2 -0
  178. package/lib/esm/tools/index.js +6 -0
  179. package/lib/esm/tools/index.js.map +1 -0
  180. package/lib/esm/tools/jsdoc/ts-jsdoc-element-tool.d.ts +2 -0
  181. package/lib/esm/tools/jsdoc/ts-jsdoc-element-tool.js +84 -0
  182. package/lib/esm/tools/jsdoc/ts-jsdoc-element-tool.js.map +1 -0
  183. package/lib/esm/tools/jsdoc/utils.d.ts +5 -0
  184. package/lib/esm/tools/jsdoc/utils.js +53 -0
  185. package/lib/esm/tools/jsdoc/utils.js.map +1 -0
  186. package/lib/esm/tools/testing/ts-jest-list-tests.d.ts +2 -0
  187. package/lib/esm/tools/testing/ts-jest-list-tests.js +53 -0
  188. package/lib/esm/tools/testing/ts-jest-list-tests.js.map +1 -0
  189. package/lib/esm/types.d.ts +56 -47
  190. package/lib/esm/types.js +1 -1
  191. package/lib/esm/types.js.map +1 -0
  192. package/lib/esm/utils/banner.d.ts +3 -0
  193. package/lib/esm/utils/banner.js +107 -0
  194. package/lib/esm/utils/banner.js.map +1 -0
  195. package/lib/esm/version.d.ts +2 -0
  196. package/lib/esm/version.js +5 -0
  197. package/lib/esm/version.js.map +1 -0
  198. package/lib/index.cjs +4 -11
  199. package/lib/index.d.ts +3 -10
  200. package/lib/index.js.map +1 -0
  201. package/lib/mcp-server.cjs +226 -0
  202. package/lib/mcp-server.d.ts +10 -0
  203. package/lib/mcp-server.js.map +1 -0
  204. package/lib/modules/template-module/index.cjs +7 -0
  205. package/lib/modules/template-module/index.d.ts +6 -0
  206. package/lib/modules/template-module/index.js.map +1 -0
  207. package/lib/prompts/code/constants.cjs +5 -0
  208. package/lib/prompts/code/constants.d.ts +1 -0
  209. package/lib/prompts/code/constants.js.map +1 -0
  210. package/lib/prompts/code/design-patterns/builder.cjs +121 -0
  211. package/lib/prompts/code/design-patterns/builder.d.ts +2 -0
  212. package/lib/prompts/code/design-patterns/builder.js.map +1 -0
  213. package/lib/prompts/code/design-patterns/constants.cjs +6 -0
  214. package/lib/prompts/code/design-patterns/constants.d.ts +1 -0
  215. package/lib/prompts/code/design-patterns/constants.js.map +1 -0
  216. package/lib/prompts/example-prompt/index.cjs +21 -0
  217. package/lib/prompts/example-prompt/index.d.ts +2 -0
  218. package/lib/prompts/example-prompt/index.js.map +1 -0
  219. package/lib/prompts/index.cjs +29 -0
  220. package/lib/prompts/index.d.ts +2 -0
  221. package/lib/prompts/index.js.map +1 -0
  222. package/lib/prompts/interactive-jsdoc/index.cjs +21 -0
  223. package/lib/prompts/interactive-jsdoc/index.d.ts +2 -0
  224. package/lib/prompts/interactive-jsdoc/index.js.map +1 -0
  225. package/lib/prompts/jsdocs/class-prompt.cjs +55 -0
  226. package/lib/prompts/jsdocs/class-prompt.d.ts +2 -0
  227. package/lib/prompts/jsdocs/class-prompt.js.map +1 -0
  228. package/lib/prompts/jsdocs/const-prompt.cjs +27 -0
  229. package/lib/prompts/jsdocs/const-prompt.d.ts +2 -0
  230. package/lib/prompts/jsdocs/const-prompt.js.map +1 -0
  231. package/lib/prompts/jsdocs/constants.cjs +49 -0
  232. package/lib/prompts/jsdocs/constants.d.ts +4 -0
  233. package/lib/prompts/jsdocs/constants.js.map +1 -0
  234. package/lib/prompts/jsdocs/decorator-prompt.cjs +45 -0
  235. package/lib/prompts/jsdocs/decorator-prompt.d.ts +2 -0
  236. package/lib/prompts/jsdocs/decorator-prompt.js.map +1 -0
  237. package/lib/prompts/jsdocs/enum-prompt.cjs +27 -0
  238. package/lib/prompts/jsdocs/enum-prompt.d.ts +2 -0
  239. package/lib/prompts/jsdocs/enum-prompt.js.map +1 -0
  240. package/lib/prompts/jsdocs/function-prompt.cjs +46 -0
  241. package/lib/prompts/jsdocs/function-prompt.d.ts +2 -0
  242. package/lib/prompts/jsdocs/function-prompt.js.map +1 -0
  243. package/lib/prompts/jsdocs/interface-prompt.cjs +27 -0
  244. package/lib/prompts/jsdocs/interface-prompt.d.ts +2 -0
  245. package/lib/prompts/jsdocs/interface-prompt.js.map +1 -0
  246. package/lib/prompts/jsdocs/types-prompt.cjs +27 -0
  247. package/lib/prompts/jsdocs/types-prompt.d.ts +2 -0
  248. package/lib/prompts/jsdocs/types-prompt.js.map +1 -0
  249. package/lib/resources/example-resource/index.cjs +22 -0
  250. package/lib/resources/example-resource/index.d.ts +2 -0
  251. package/lib/resources/example-resource/index.js.map +1 -0
  252. package/lib/resources/index.cjs +7 -0
  253. package/lib/resources/index.d.ts +2 -0
  254. package/lib/resources/index.js.map +1 -0
  255. package/lib/resources/repo-metadata/index.cjs +28 -0
  256. package/lib/resources/repo-metadata/index.d.ts +2 -0
  257. package/lib/resources/repo-metadata/index.js.map +1 -0
  258. package/lib/tools/ast/ts-ast-tool.cjs +70 -0
  259. package/lib/tools/ast/ts-ast-tool.d.ts +2 -0
  260. package/lib/tools/ast/ts-ast-tool.js.map +1 -0
  261. package/lib/tools/ast/types.cjs +36 -0
  262. package/lib/tools/ast/types.d.ts +105 -0
  263. package/lib/tools/ast/types.js.map +1 -0
  264. package/lib/tools/ast/utils.cjs +65 -0
  265. package/lib/tools/ast/utils.d.ts +5 -0
  266. package/lib/tools/ast/utils.js.map +1 -0
  267. package/lib/tools/ast-jsdoc-tools/apply.cjs +36 -0
  268. package/lib/tools/ast-jsdoc-tools/apply.d.ts +6 -0
  269. package/lib/tools/ast-jsdoc-tools/apply.js.map +1 -0
  270. package/lib/tools/ast-jsdoc-tools/cli.cjs +38 -0
  271. package/lib/tools/ast-jsdoc-tools/cli.js.map +1 -0
  272. package/lib/tools/ast-jsdoc-tools/enumerator.cjs +31 -0
  273. package/lib/tools/ast-jsdoc-tools/enumerator.d.ts +1 -0
  274. package/lib/tools/ast-jsdoc-tools/enumerator.js.map +1 -0
  275. package/lib/tools/ast-jsdoc-tools/fileRunner.cjs +35 -0
  276. package/lib/tools/ast-jsdoc-tools/fileRunner.d.ts +11 -0
  277. package/lib/tools/ast-jsdoc-tools/fileRunner.js.map +1 -0
  278. package/lib/tools/ast-jsdoc-tools/formatter.cjs +21 -0
  279. package/lib/tools/ast-jsdoc-tools/formatter.d.ts +6 -0
  280. package/lib/tools/ast-jsdoc-tools/formatter.js.map +1 -0
  281. package/lib/tools/ast-jsdoc-tools/generator.cjs +58 -0
  282. package/lib/tools/ast-jsdoc-tools/generator.d.ts +12 -0
  283. package/lib/tools/ast-jsdoc-tools/generator.js.map +1 -0
  284. package/lib/tools/ast-jsdoc-tools/index.cjs +33 -0
  285. package/lib/tools/ast-jsdoc-tools/index.d.ts +7 -0
  286. package/lib/tools/ast-jsdoc-tools/index.js.map +1 -0
  287. package/lib/tools/ast-jsdoc-tools/interactive.cjs +10 -0
  288. package/lib/tools/ast-jsdoc-tools/interactive.d.ts +1 -0
  289. package/lib/tools/ast-jsdoc-tools/interactive.js.map +1 -0
  290. package/lib/tools/ast-jsdoc-tools/parser.cjs +77 -0
  291. package/lib/tools/ast-jsdoc-tools/parser.d.ts +13 -0
  292. package/lib/tools/ast-jsdoc-tools/parser.js.map +1 -0
  293. package/lib/tools/ast-jsdoc-tools/patch.cjs +29 -0
  294. package/lib/tools/ast-jsdoc-tools/patch.d.ts +2 -0
  295. package/lib/tools/ast-jsdoc-tools/patch.js.map +1 -0
  296. package/lib/tools/ast-jsdoc-tools/prompts/loader.cjs +32 -0
  297. package/lib/tools/ast-jsdoc-tools/prompts/loader.d.ts +10 -0
  298. package/lib/tools/ast-jsdoc-tools/prompts/loader.js.map +1 -0
  299. package/lib/tools/ast-jsdoc-tools/repoRunner.cjs +67 -0
  300. package/lib/tools/ast-jsdoc-tools/repoRunner.d.ts +16 -0
  301. package/lib/tools/ast-jsdoc-tools/repoRunner.js.map +1 -0
  302. package/lib/tools/ast-jsdoc-tools/tools/jsdoc-generator.cjs +81 -0
  303. package/lib/tools/ast-jsdoc-tools/tools/jsdoc-generator.d.ts +5 -0
  304. package/lib/tools/ast-jsdoc-tools/tools/jsdoc-generator.js.map +1 -0
  305. package/lib/tools/ast-jsdoc-tools/utils/conflict-detector.cjs +33 -0
  306. package/lib/tools/ast-jsdoc-tools/utils/conflict-detector.d.ts +5 -0
  307. package/lib/tools/ast-jsdoc-tools/utils/conflict-detector.js.map +1 -0
  308. package/lib/tools/ast-jsdoc-tools/utils/context-schema.cjs +32 -0
  309. package/lib/tools/ast-jsdoc-tools/utils/context-schema.d.ts +7 -0
  310. package/lib/tools/ast-jsdoc-tools/utils/context-schema.js.map +1 -0
  311. package/lib/tools/ast-jsdoc-tools/utils/heuristics.cjs +34 -0
  312. package/lib/tools/ast-jsdoc-tools/utils/heuristics.d.ts +2 -0
  313. package/lib/tools/ast-jsdoc-tools/utils/heuristics.js.map +1 -0
  314. package/lib/tools/ast-jsdoc-tools/utils/ts-project.cjs +57 -0
  315. package/lib/tools/ast-jsdoc-tools/utils/ts-project.d.ts +12 -0
  316. package/lib/tools/ast-jsdoc-tools/utils/ts-project.js.map +1 -0
  317. package/lib/tools/example-tool/index.cjs +32 -0
  318. package/lib/tools/example-tool/index.d.ts +2 -0
  319. package/lib/tools/example-tool/index.js.map +1 -0
  320. package/lib/tools/file-summarizer/index.cjs +32 -0
  321. package/lib/tools/file-summarizer/index.d.ts +2 -0
  322. package/lib/tools/file-summarizer/index.js.map +1 -0
  323. package/lib/tools/index.cjs +9 -0
  324. package/lib/tools/index.d.ts +2 -0
  325. package/lib/tools/index.js.map +1 -0
  326. package/lib/tools/jsdoc/ts-jsdoc-element-tool.cjs +87 -0
  327. package/lib/tools/jsdoc/ts-jsdoc-element-tool.d.ts +2 -0
  328. package/lib/tools/jsdoc/ts-jsdoc-element-tool.js.map +1 -0
  329. package/lib/tools/jsdoc/utils.cjs +60 -0
  330. package/lib/tools/jsdoc/utils.d.ts +5 -0
  331. package/lib/tools/jsdoc/utils.js.map +1 -0
  332. package/lib/tools/testing/ts-jest-list-tests.cjs +56 -0
  333. package/lib/tools/testing/ts-jest-list-tests.d.ts +2 -0
  334. package/lib/tools/testing/ts-jest-list-tests.js.map +1 -0
  335. package/lib/types.cjs +1 -1
  336. package/lib/types.d.ts +56 -47
  337. package/lib/types.js.map +1 -0
  338. package/lib/utils/banner.cjs +114 -0
  339. package/lib/utils/banner.d.ts +3 -0
  340. package/lib/utils/banner.js.map +1 -0
  341. package/lib/version.cjs +8 -0
  342. package/lib/version.d.ts +2 -0
  343. package/lib/version.js.map +1 -0
  344. package/package.json +14 -63
  345. package/dist/mcp-server.esm.cjs +0 -2314
  346. package/lib/McpWrapper.cjs +0 -233
  347. package/lib/McpWrapper.d.ts +0 -89
  348. package/lib/bin/validate-modules.cjs +0 -24
  349. package/lib/esm/McpWrapper.d.ts +0 -89
  350. package/lib/esm/McpWrapper.js +0 -196
  351. package/lib/esm/bin/validate-modules.js +0 -22
  352. package/lib/esm/mcp/aggregateModules.d.ts +0 -26
  353. package/lib/esm/mcp/aggregateModules.js +0 -185
  354. package/lib/esm/mcp/code.d.ts +0 -23
  355. package/lib/esm/mcp/code.js +0 -70
  356. package/lib/esm/mcp/decorator-tools.d.ts +0 -118
  357. package/lib/esm/mcp/decorator-tools.js +0 -237
  358. package/lib/esm/mcp/fastmcp-wiring.d.ts +0 -14
  359. package/lib/esm/mcp/fastmcp-wiring.js +0 -56
  360. package/lib/esm/mcp/index.d.ts +0 -9
  361. package/lib/esm/mcp/index.js +0 -29
  362. package/lib/esm/mcp/mcp-module.d.ts +0 -11
  363. package/lib/esm/mcp/mcp-module.js +0 -31
  364. package/lib/esm/mcp/moduleRegistry.d.ts +0 -14
  365. package/lib/esm/mcp/moduleRegistry.js +0 -47
  366. package/lib/esm/mcp/prompts/index.d.ts +0 -4
  367. package/lib/esm/mcp/prompts/index.js +0 -7
  368. package/lib/esm/mcp/prompts/prompts.d.ts +0 -22
  369. package/lib/esm/mcp/prompts/prompts.js +0 -203
  370. package/lib/esm/mcp/resources/index.d.ts +0 -1
  371. package/lib/esm/mcp/resources/index.js +0 -2
  372. package/lib/esm/mcp/resources/resources.d.ts +0 -2
  373. package/lib/esm/mcp/resources/resources.js +0 -69
  374. package/lib/esm/mcp/schemas.d.ts +0 -53
  375. package/lib/esm/mcp/schemas.js +0 -97
  376. package/lib/esm/mcp/templates/codex-templates.d.ts +0 -3
  377. package/lib/esm/mcp/templates/codex-templates.js +0 -33
  378. package/lib/esm/mcp/templates/index.d.ts +0 -71
  379. package/lib/esm/mcp/templates/index.js +0 -66
  380. package/lib/esm/mcp/templates/resource-templates.d.ts +0 -3
  381. package/lib/esm/mcp/templates/resource-templates.js +0 -60
  382. package/lib/esm/mcp/templates/workspace-templates.d.ts +0 -3
  383. package/lib/esm/mcp/templates/workspace-templates.js +0 -66
  384. package/lib/esm/mcp/tools/codex-tools.d.ts +0 -5
  385. package/lib/esm/mcp/tools/codex-tools.js +0 -244
  386. package/lib/esm/mcp/tools/generateMcpModule.d.ts +0 -9
  387. package/lib/esm/mcp/tools/generateMcpModule.js +0 -133
  388. package/lib/esm/mcp/tools/index.d.ts +0 -219
  389. package/lib/esm/mcp/tools/index.js +0 -27
  390. package/lib/esm/mcp/tools/tools.d.ts +0 -10
  391. package/lib/esm/mcp/tools/tools.js +0 -275
  392. package/lib/esm/mcp/types.d.ts +0 -66
  393. package/lib/esm/mcp/types.js +0 -2
  394. package/lib/esm/mcp/utils.d.ts +0 -3
  395. package/lib/esm/mcp/utils.js +0 -46
  396. package/lib/esm/mcp/validation/index.d.ts +0 -13
  397. package/lib/esm/mcp/validation/index.js +0 -116
  398. package/lib/esm/mcp/validation/scaffoldModule.d.ts +0 -9
  399. package/lib/esm/mcp/validation/scaffoldModule.js +0 -88
  400. package/lib/esm/mcp/workspace.d.ts +0 -9
  401. package/lib/esm/mcp/workspace.js +0 -73
  402. package/lib/esm/metadata.d.ts +0 -9
  403. package/lib/esm/metadata.js +0 -22
  404. package/lib/esm/modules/_template/index.d.ts +0 -32
  405. package/lib/esm/modules/_template/index.js +0 -16
  406. package/lib/esm/modules/_template/prompts/index.d.ts +0 -6
  407. package/lib/esm/modules/_template/prompts/index.js +0 -9
  408. package/lib/esm/modules/_template/resources/index.d.ts +0 -6
  409. package/lib/esm/modules/_template/resources/index.js +0 -9
  410. package/lib/esm/modules/_template/templates/index.d.ts +0 -7
  411. package/lib/esm/modules/_template/templates/index.js +0 -10
  412. package/lib/esm/modules/_template/tools/index.d.ts +0 -6
  413. package/lib/esm/modules/_template/tools/index.js +0 -15
  414. package/lib/esm/modules/decoration/index.d.ts +0 -46
  415. package/lib/esm/modules/decoration/index.js +0 -10
  416. package/lib/esm/modules/decoration/prompts/index.d.ts +0 -1
  417. package/lib/esm/modules/decoration/prompts/index.js +0 -2
  418. package/lib/esm/modules/decoration/resources/index.d.ts +0 -7
  419. package/lib/esm/modules/decoration/resources/index.js +0 -10
  420. package/lib/esm/modules/decoration/templates/index.d.ts +0 -6
  421. package/lib/esm/modules/decoration/templates/index.js +0 -9
  422. package/lib/esm/modules/decoration/tools/index.d.ts +0 -26
  423. package/lib/esm/modules/decoration/tools/index.js +0 -7
  424. package/lib/esm/modules/index.d.ts +0 -2
  425. package/lib/esm/modules/index.js +0 -17
  426. package/lib/esm/modules/mcp/decoration-assist.d.ts +0 -4
  427. package/lib/esm/modules/mcp/decoration-assist.js +0 -6
  428. package/lib/esm/modules/mcp/index.d.ts +0 -6
  429. package/lib/esm/modules/mcp/index.js +0 -16
  430. package/lib/esm/modules/mcp/prompts/index.d.ts +0 -2
  431. package/lib/esm/modules/mcp/prompts/index.js +0 -9
  432. package/lib/esm/modules/mcp/resources/index.d.ts +0 -2
  433. package/lib/esm/modules/mcp/resources/index.js +0 -24
  434. package/lib/esm/modules/mcp/templates/index.d.ts +0 -2
  435. package/lib/esm/modules/mcp/templates/index.js +0 -28
  436. package/lib/esm/modules/mcp/tools/index.d.ts +0 -6
  437. package/lib/esm/modules/mcp/tools/index.js +0 -15
  438. package/lib/esm/utils/modulePaths.d.ts +0 -6
  439. package/lib/esm/utils/modulePaths.js +0 -33
  440. package/lib/esm/utils/moduleValidator.d.ts +0 -14
  441. package/lib/esm/utils/moduleValidator.js +0 -176
  442. package/lib/esm/utils.d.ts +0 -61
  443. package/lib/esm/utils.js +0 -86
  444. package/lib/mcp/aggregateModules.cjs +0 -225
  445. package/lib/mcp/aggregateModules.d.ts +0 -26
  446. package/lib/mcp/code.cjs +0 -81
  447. package/lib/mcp/code.d.ts +0 -23
  448. package/lib/mcp/decorator-tools.cjs +0 -243
  449. package/lib/mcp/decorator-tools.d.ts +0 -118
  450. package/lib/mcp/fastmcp-wiring.cjs +0 -59
  451. package/lib/mcp/fastmcp-wiring.d.ts +0 -14
  452. package/lib/mcp/index.cjs +0 -57
  453. package/lib/mcp/index.d.ts +0 -9
  454. package/lib/mcp/mcp-module.cjs +0 -46
  455. package/lib/mcp/mcp-module.d.ts +0 -11
  456. package/lib/mcp/moduleRegistry.cjs +0 -52
  457. package/lib/mcp/moduleRegistry.d.ts +0 -14
  458. package/lib/mcp/prompts/index.cjs +0 -25
  459. package/lib/mcp/prompts/index.d.ts +0 -4
  460. package/lib/mcp/prompts/prompts.cjs +0 -217
  461. package/lib/mcp/prompts/prompts.d.ts +0 -22
  462. package/lib/mcp/resources/index.d.ts +0 -1
  463. package/lib/mcp/resources/resources.cjs +0 -72
  464. package/lib/mcp/resources/resources.d.ts +0 -2
  465. package/lib/mcp/schemas.cjs +0 -100
  466. package/lib/mcp/schemas.d.ts +0 -53
  467. package/lib/mcp/templates/codex-templates.cjs +0 -40
  468. package/lib/mcp/templates/codex-templates.d.ts +0 -3
  469. package/lib/mcp/templates/index.cjs +0 -76
  470. package/lib/mcp/templates/index.d.ts +0 -71
  471. package/lib/mcp/templates/resource-templates.cjs +0 -67
  472. package/lib/mcp/templates/resource-templates.d.ts +0 -3
  473. package/lib/mcp/templates/workspace-templates.cjs +0 -70
  474. package/lib/mcp/templates/workspace-templates.d.ts +0 -3
  475. package/lib/mcp/tools/codex-tools.cjs +0 -250
  476. package/lib/mcp/tools/codex-tools.d.ts +0 -5
  477. package/lib/mcp/tools/generateMcpModule.cjs +0 -139
  478. package/lib/mcp/tools/generateMcpModule.d.ts +0 -9
  479. package/lib/mcp/tools/index.cjs +0 -30
  480. package/lib/mcp/tools/index.d.ts +0 -219
  481. package/lib/mcp/tools/tools.cjs +0 -317
  482. package/lib/mcp/tools/tools.d.ts +0 -10
  483. package/lib/mcp/types.cjs +0 -3
  484. package/lib/mcp/types.d.ts +0 -66
  485. package/lib/mcp/utils.cjs +0 -54
  486. package/lib/mcp/utils.d.ts +0 -3
  487. package/lib/mcp/validation/index.cjs +0 -123
  488. package/lib/mcp/validation/index.d.ts +0 -13
  489. package/lib/mcp/validation/scaffoldModule.cjs +0 -94
  490. package/lib/mcp/validation/scaffoldModule.d.ts +0 -9
  491. package/lib/mcp/workspace.cjs +0 -119
  492. package/lib/mcp/workspace.d.ts +0 -9
  493. package/lib/metadata.cjs +0 -25
  494. package/lib/metadata.d.ts +0 -9
  495. package/lib/modules/_template/index.cjs +0 -23
  496. package/lib/modules/_template/index.d.ts +0 -32
  497. package/lib/modules/_template/prompts/index.cjs +0 -12
  498. package/lib/modules/_template/prompts/index.d.ts +0 -6
  499. package/lib/modules/_template/resources/index.cjs +0 -12
  500. package/lib/modules/_template/resources/index.d.ts +0 -6
  501. package/lib/modules/_template/templates/index.cjs +0 -13
  502. package/lib/modules/_template/templates/index.d.ts +0 -7
  503. package/lib/modules/_template/tools/index.cjs +0 -18
  504. package/lib/modules/_template/tools/index.d.ts +0 -6
  505. package/lib/modules/decoration/index.cjs +0 -17
  506. package/lib/modules/decoration/index.d.ts +0 -46
  507. package/lib/modules/decoration/prompts/index.cjs +0 -5
  508. package/lib/modules/decoration/prompts/index.d.ts +0 -1
  509. package/lib/modules/decoration/resources/index.cjs +0 -13
  510. package/lib/modules/decoration/resources/index.d.ts +0 -7
  511. package/lib/modules/decoration/templates/index.cjs +0 -12
  512. package/lib/modules/decoration/templates/index.d.ts +0 -6
  513. package/lib/modules/decoration/tools/index.cjs +0 -10
  514. package/lib/modules/decoration/tools/index.d.ts +0 -26
  515. package/lib/modules/index.cjs +0 -20
  516. package/lib/modules/index.d.ts +0 -2
  517. package/lib/modules/mcp/decoration-assist.cjs +0 -13
  518. package/lib/modules/mcp/decoration-assist.d.ts +0 -4
  519. package/lib/modules/mcp/index.cjs +0 -23
  520. package/lib/modules/mcp/index.d.ts +0 -6
  521. package/lib/modules/mcp/prompts/index.cjs +0 -12
  522. package/lib/modules/mcp/prompts/index.d.ts +0 -2
  523. package/lib/modules/mcp/resources/index.cjs +0 -27
  524. package/lib/modules/mcp/resources/index.d.ts +0 -2
  525. package/lib/modules/mcp/templates/index.cjs +0 -31
  526. package/lib/modules/mcp/templates/index.d.ts +0 -2
  527. package/lib/modules/mcp/tools/index.cjs +0 -18
  528. package/lib/modules/mcp/tools/index.d.ts +0 -6
  529. package/lib/utils/modulePaths.cjs +0 -43
  530. package/lib/utils/modulePaths.d.ts +0 -6
  531. package/lib/utils/moduleValidator.cjs +0 -184
  532. package/lib/utils/moduleValidator.d.ts +0 -14
  533. package/lib/utils.cjs +0 -129
  534. package/lib/utils.d.ts +0 -61
  535. /package/lib/{bin/validate-modules.d.ts → esm/tools/ast-jsdoc-tools/cli.d.ts} +0 -0
  536. /package/lib/{esm/bin/validate-modules.d.ts → tools/ast-jsdoc-tools/cli.d.ts} +0 -0
@@ -1,275 +0,0 @@
1
- import fs from "fs";
2
- import path from "path";
3
- import { applyPatch, createTwoFilesPatch } from "diff";
4
- import { analyzeRepoSchema, codeChangeSchema, documentCodeSchema, enumerateCapabilitiesSchema, planFeatureSchema, } from "../schemas";
5
- import { analyzeRepo } from "../code";
6
- import { deriveCapabilities } from "../utils";
7
- import { getWorkspaceRoot, resolveInWorkspace, throwUserError, WorkspaceError, } from "../workspace";
8
- export function buildAnalyzeRepositoryTool() {
9
- return {
10
- name: "analyze-repository",
11
- description: "Analyze a local repository's source, tests, and docs to extract exported APIs, decorators, and test mentions.",
12
- parameters: analyzeRepoSchema,
13
- execute: async (input) => {
14
- let repoRoot = path.resolve(process.cwd(), input.repoPath);
15
- if (!fs.existsSync(repoRoot)) {
16
- // try resolving from monorepo root (parent of current cwd)
17
- const alt = path.resolve(process.cwd(), "..", input.repoPath);
18
- if (fs.existsSync(alt))
19
- repoRoot = alt;
20
- }
21
- if (!fs.existsSync(repoRoot)) {
22
- // if input was absolute and still not found, try ../<basename>
23
- const alt2 = path.resolve(process.cwd(), "..", path.basename(input.repoPath));
24
- if (fs.existsSync(alt2))
25
- repoRoot = alt2;
26
- }
27
- if (!fs.existsSync(repoRoot))
28
- throw new Error(`Repository not found at ${repoRoot}`);
29
- const result = analyzeRepo(repoRoot);
30
- return {
31
- content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
32
- };
33
- },
34
- };
35
- }
36
- export function buildEnumerateCapabilitiesTool() {
37
- return {
38
- name: "enumerate-capabilities",
39
- description: "Enumerate developer-facing capabilities of the given repository, inferred from code, tests, and docs.",
40
- parameters: enumerateCapabilitiesSchema,
41
- execute: async (input) => {
42
- let repoRoot = path.resolve(process.cwd(), input.repoPath);
43
- if (!fs.existsSync(repoRoot)) {
44
- const alt = path.resolve(process.cwd(), "..", input.repoPath);
45
- if (fs.existsSync(alt))
46
- repoRoot = alt;
47
- }
48
- if (!fs.existsSync(repoRoot)) {
49
- const alt2 = path.resolve(process.cwd(), "..", path.basename(input.repoPath));
50
- if (fs.existsSync(alt2))
51
- repoRoot = alt2;
52
- }
53
- if (!fs.existsSync(repoRoot))
54
- throw new Error(`Repository not found at ${repoRoot}`);
55
- const analysis = analyzeRepo(repoRoot);
56
- const capabilities = deriveCapabilities(analysis);
57
- return {
58
- content: [
59
- {
60
- type: "text",
61
- text: JSON.stringify({
62
- capabilities,
63
- analysisSummary: {
64
- files: analysis.files.length,
65
- testFiles: analysis.testFiles.length,
66
- readme: analysis.readme?.title,
67
- },
68
- }, null, 2),
69
- },
70
- ],
71
- };
72
- },
73
- };
74
- }
75
- export function buildPlanFeatureTool() {
76
- return {
77
- name: "plan-feature-implementation",
78
- description: "Given a feature request, select appropriate MCP tools (including existing and new ones) and produce an execution plan.",
79
- parameters: planFeatureSchema,
80
- execute: async (input) => {
81
- const steps = [];
82
- let i = 1;
83
- steps.push({
84
- step: i++,
85
- action: "Analyze repository to enumerate APIs and decorators",
86
- tool: "analyze-repository",
87
- arguments: { repoPath: input.repoPath },
88
- rationale: "Understand available building blocks.",
89
- });
90
- steps.push({
91
- step: i++,
92
- action: "List capabilities expected for developers",
93
- tool: "enumerate-capabilities",
94
- arguments: { repoPath: input.repoPath },
95
- rationale: "Align the plan with supported capabilities.",
96
- });
97
- // Suggest existing generic tools from mcp-module
98
- steps.push({
99
- step: i++,
100
- action: "Select documentation prompt and gather relevant source file(s)",
101
- tool: "document-code",
102
- arguments: { filePath: "<target-file>" },
103
- rationale: "Provide context and instructions for changes.",
104
- });
105
- steps.push({
106
- step: i++,
107
- action: "Apply code changes using unified diff patch",
108
- tool: "apply-code-change",
109
- arguments: {
110
- filePath: "<target-file>",
111
- patch: "<unified-diff>",
112
- dryRun: true,
113
- },
114
- rationale: "Validate changes safely before committing.",
115
- });
116
- steps.push({
117
- step: i++,
118
- action: "Commit code changes",
119
- tool: "apply-code-change",
120
- arguments: {
121
- filePath: "<target-file>",
122
- patch: "<unified-diff>",
123
- dryRun: false,
124
- },
125
- rationale: "Persist the update.",
126
- });
127
- // If decoration-related terms present, suggest decorator tools
128
- if (/decorat|flavour|override|extend|builder/i.test(input.feature)) {
129
- steps.unshift({
130
- step: 0,
131
- action: "Use decorator tooling to insert/remove/modify decorators",
132
- tool: "decorator-tools",
133
- arguments: { action: "help" },
134
- rationale: "Leverage specialized utilities for decoration patterns.",
135
- });
136
- steps.forEach((s, idx) => (s.step = idx + 1));
137
- }
138
- return {
139
- content: [
140
- {
141
- type: "text",
142
- text: JSON.stringify({
143
- plan: steps,
144
- notes: "Replace placeholder arguments like <target-file> and <unified-diff> based on the analysis output.",
145
- }, null, 2),
146
- },
147
- ],
148
- };
149
- },
150
- };
151
- }
152
- export const documentCodeTool = {
153
- annotations: {
154
- idempotentHint: true,
155
- openWorldHint: false,
156
- readOnlyHint: true,
157
- title: "Document Source File",
158
- },
159
- description: "Generate documentation guidance for a file by combining repository prompts with the target source code.",
160
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
161
- execute: async (input, _context) => {
162
- const args = documentCodeSchema.parse(input);
163
- const root = getWorkspaceRoot();
164
- let filePath;
165
- try {
166
- filePath = resolveInWorkspace(root, args.filePath);
167
- }
168
- catch (error) {
169
- if (error instanceof WorkspaceError) {
170
- return throwUserError(error.message);
171
- }
172
- /* istanbul ignore next */
173
- throw error;
174
- }
175
- if (!fs.existsSync(filePath)) {
176
- return throwUserError(`Cannot document missing file at ${args.filePath}`);
177
- }
178
- const fileContent = fs.readFileSync(filePath, {
179
- encoding: args.encoding,
180
- });
181
- // dynamically import prompt helpers
182
- const promptMod = await import("../prompts/prompts");
183
- const { discoverDocPrompts, selectPrompt, DEFAULT_PROMPT_NAME, buildDocumentationPayload, } = promptMod;
184
- const prompts = discoverDocPrompts(root);
185
- if (!prompts.length) {
186
- return throwUserError("No documentation prompts found under .code/prompts or .codex/prompts");
187
- }
188
- const prompt = selectPrompt(prompts, args.promptName ?? DEFAULT_PROMPT_NAME);
189
- return buildDocumentationPayload({
190
- filePath: args.filePath,
191
- fileContent,
192
- prompt,
193
- includeCode: args.includeCode,
194
- includePrompt: args.includePrompt,
195
- includeMetadata: args.includeMetadata,
196
- additionalContext: args.additionalContext,
197
- });
198
- },
199
- name: "document-code",
200
- parameters: documentCodeSchema,
201
- };
202
- export const applyCodeChangeTool = {
203
- annotations: {
204
- destructiveHint: true,
205
- idempotentHint: false,
206
- openWorldHint: false,
207
- readOnlyHint: false,
208
- title: "Apply Code Patch",
209
- },
210
- description: "Apply a unified diff patch to a workspace file with optional dry-run validation and diff preview.",
211
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
212
- execute: async (input, _context) => {
213
- const args = codeChangeSchema.parse(input);
214
- const root = getWorkspaceRoot();
215
- let filePath;
216
- try {
217
- filePath = resolveInWorkspace(root, args.filePath);
218
- }
219
- catch (error) {
220
- if (error instanceof WorkspaceError) {
221
- return throwUserError(error.message);
222
- }
223
- throw error;
224
- }
225
- const original = fs.existsSync(filePath)
226
- ? fs.readFileSync(filePath, args.encoding)
227
- : "";
228
- let patched;
229
- try {
230
- patched = applyPatch(original, args.patch);
231
- }
232
- catch (error) {
233
- return throwUserError(`Failed to apply provided patch to ${args.filePath}: ${error instanceof Error ? error.message : error}`);
234
- }
235
- /* istanbul ignore next */
236
- if (patched === false) {
237
- return throwUserError(`Failed to apply provided patch to ${args.filePath}`);
238
- }
239
- if (!args.dryRun) {
240
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
241
- fs.writeFileSync(filePath, patched, {
242
- encoding: args.encoding,
243
- });
244
- }
245
- if (!args.showDiff) {
246
- return `Patch ${args.dryRun ? "validated" : "applied"} for ${args.filePath}`;
247
- }
248
- const preview = createTwoFilesPatch(args.filePath, args.filePath, original, patched, undefined, undefined, { context: args.diffContext });
249
- return {
250
- content: [
251
- {
252
- type: "text",
253
- text: `Patch ${args.dryRun ? "validated" : "applied"} for ${args.filePath}`,
254
- },
255
- {
256
- type: "text",
257
- text: ["```diff", preview.trim(), "```"].join("\n"),
258
- },
259
- ],
260
- };
261
- },
262
- name: "apply-code-change",
263
- parameters: codeChangeSchema,
264
- };
265
- const analyticTools = [
266
- buildAnalyzeRepositoryTool(),
267
- buildEnumerateCapabilitiesTool(),
268
- buildPlanFeatureTool(),
269
- ];
270
- export const toolList = [
271
- ...analyticTools,
272
- documentCodeTool,
273
- applyCodeChangeTool,
274
- ];
275
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWNwL3Rvb2xzL3Rvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFFeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBQzNCLGlCQUFpQixHQUNsQixNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM5QyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsY0FBYyxHQUNmLE1BQU0sY0FBYyxDQUFDO0FBT3RCLE1BQU0sVUFBVSwwQkFBMEI7SUFJeEMsT0FBTztRQUNMLElBQUksRUFBRSxvQkFBb0I7UUFDMUIsV0FBVyxFQUNULCtHQUErRztRQUNqSCxVQUFVLEVBQUUsaUJBQWlCO1FBQzdCLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDdkIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLDJEQUEyRDtnQkFDM0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFD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QUM1QixDQUFDO0lBQ0QsSUFBSSxFQUFFLG1CQUFtQjtJQUN6QixVQUFVLEVBQUUsZ0JBQWdCO0NBQzdCLENBQUM7QUFJRixNQUFNLGFBQWEsR0FBYztJQUMvQiwwQkFBMEIsRUFBRTtJQUM1Qiw4QkFBOEIsRUFBRTtJQUNoQyxvQkFBb0IsRUFBRTtDQUN2QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFjO0lBQ2pDLEdBQUcsYUFBYTtJQUNoQixnQkFBZ0I7SUFDaEIsbUJBQW1CO0NBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgQ29udGVudFJlc3VsdCwgVG9vbCB9IGZyb20gXCJmYXN0bWNwXCI7XG5pbXBvcnQgeyBhcHBseVBhdGNoLCBjcmVhdGVUd29GaWxlc1BhdGNoIH0gZnJvbSBcImRpZmZcIjtcbmltcG9ydCB7XG4gIGFuYWx5emVSZXBvU2NoZW1hLFxuICBjb2RlQ2hhbmdlU2NoZW1hLFxuICBkb2N1bWVudENvZGVTY2hlbWEsXG4gIGVudW1lcmF0ZUNhcGFiaWxpdGllc1NjaGVtYSxcbiAgcGxhbkZlYXR1cmVTY2hlbWEsXG59IGZyb20gXCIuLi9zY2hlbWFzXCI7XG5pbXBvcnQgeyBhbmFseXplUmVwbyB9IGZyb20gXCIuLi9jb2RlXCI7XG5pbXBvcnQgeyBkZXJpdmVDYXBhYmlsaXRpZXMgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7XG4gIGdldFdvcmtzcGFjZVJvb3QsXG4gIHJlc29sdmVJbldvcmtzcGFjZSxcbiAgdGhyb3dVc2VyRXJyb3IsXG4gIFdvcmtzcGFjZUVycm9yLFxufSBmcm9tIFwiLi4vd29ya3NwYWNlXCI7XG4vLyBOT1RFOiBwcm9tcHQgaGVscGVycyAoYnVpbGREb2N1bWVudGF0aW9uUGF5bG9hZCwgZGlzY292ZXJEb2NQcm9tcHRzLCBzZWxlY3RQcm9tcHQsIERFRkFVTFRfUFJPTVBUX05BTUUpXG4vLyBhcmUgaW1wb3J0ZWQgZHluYW1pY2FsbHkgaW5zaWRlIGRvY3VtZW50Q29kZVRvb2wuZXhlY3V0ZSB0byBhdm9pZCBjcmVhdGluZyBhIHN0YXRpYyBjaXJjdWxhciBpbXBvcnRcbi8vIGF0IG1vZHVsZSBsb2FkIHRpbWUgKG1vZHVsZVJlZ2lzdHJ5IC0+IG1vZHVsZXMgLT4gZGVjb3JhdGlvbiB0b29scyAtPiBtY3AvdG9vbHMgLT4gcHJvbXB0cykuXG4vLyBUaGV5IHdpbGwgYmUgbG9hZGVkIHdoZW4gdGhlIHRvb2wgZXhlY3V0ZXMuXG5pbXBvcnQgdHlwZSB7IEFwcGx5Q29kZUNoYW5nZUFyZ3MsIERvY3VtZW50Q29kZUFyZ3MgfSBmcm9tIFwiLi4vdHlwZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkQW5hbHl6ZVJlcG9zaXRvcnlUb29sKCk6IFRvb2w8XG4gIHVuZGVmaW5lZCxcbiAgdHlwZW9mIGFuYWx5emVSZXBvU2NoZW1hXG4+IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBcImFuYWx5emUtcmVwb3NpdG9yeVwiLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJBbmFseXplIGEgbG9jYWwgcmVwb3NpdG9yeSdzIHNvdXJjZSwgdGVzdHMsIGFuZCBkb2NzIHRvIGV4dHJhY3QgZXhwb3J0ZWQgQVBJcywgZGVjb3JhdG9ycywgYW5kIHRlc3QgbWVudGlvbnMuXCIsXG4gICAgcGFyYW1ldGVyczogYW5hbHl6ZVJlcG9TY2hlbWEsXG4gICAgZXhlY3V0ZTogYXN5bmMgKGlucHV0KSA9PiB7XG4gICAgICBsZXQgcmVwb1Jvb3QgPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgaW5wdXQucmVwb1BhdGgpO1xuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHJlcG9Sb290KSkge1xuICAgICAgICAvLyB0cnkgcmVzb2x2aW5nIGZyb20gbW9ub3JlcG8gcm9vdCAocGFyZW50IG9mIGN1cnJlbnQgY3dkKVxuICAgICAgICBjb25zdCBhbHQgPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgXCIuLlwiLCBpbnB1dC5yZXBvUGF0aCk7XG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKGFsdCkpIHJlcG9Sb290ID0gYWx0O1xuICAgICAgfVxuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHJlcG9Sb290KSkge1xuICAgICAgICAvLyBpZiBpbnB1dCB3YXMgYWJzb2x1dGUgYW5kIHN0aWxsIG5vdCBmb3VuZCwgdHJ5IC4uLzxiYXNlbmFtZT5cbiAgICAgICAgY29uc3QgYWx0MiA9IHBhdGgucmVzb2x2ZShcbiAgICAgICAgICBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICAgIFwiLi5cIixcbiAgICAgICAgICBwYXRoLmJhc2VuYW1lKGlucHV0LnJlcG9QYXRoKVxuICAgICAgICApO1xuICAgICAgICBpZiAoZnMuZXhpc3RzU3luYyhhbHQyKSkgcmVwb1Jvb3QgPSBhbHQyO1xuICAgICAgfVxuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHJlcG9Sb290KSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZXBvc2l0b3J5IG5vdCBmb3VuZCBhdCAke3JlcG9Sb290fWApO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYW5hbHl6ZVJlcG8ocmVwb1Jvb3QpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogW3sgdHlwZTogXCJ0ZXh0XCIsIHRleHQ6IEpTT04uc3RyaW5naWZ5KHJlc3VsdCwgbnVsbCwgMikgfV0sXG4gICAgICB9O1xuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEVudW1lcmF0ZUNhcGFiaWxpdGllc1Rvb2woKTogVG9vbDxcbiAgdW5kZWZpbmVkLFxuICB0eXBlb2YgZW51bWVyYXRlQ2FwYWJpbGl0aWVzU2NoZW1hXG4+IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBcImVudW1lcmF0ZS1jYXBhYmlsaXRpZXNcIixcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgIFwiRW51bWVyYXRlIGRldmVsb3Blci1mYWNpbmcgY2FwYWJpbGl0aWVzIG9mIHRoZSBnaXZlbiByZXBvc2l0b3J5LCBpbmZlcnJlZCBmcm9tIGNvZGUsIHRlc3RzLCBhbmQgZG9jcy5cIixcbiAgICBwYXJhbWV0ZXJzOiBlbnVtZXJhdGVDYXBhYmlsaXRpZXNTY2hlbWEsXG4gICAgZXhlY3V0ZTogYXN5bmMgKGlucHV0KSA9PiB7XG4gICAgICBsZXQgcmVwb1Jvb3QgPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgaW5wdXQucmVwb1BhdGgpO1xuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHJlcG9Sb290KSkge1xuICAgICAgICBjb25zdCBhbHQgPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgXCIuLlwiLCBpbnB1dC5yZXBvUGF0aCk7XG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKGFsdCkpIHJlcG9Sb290ID0gYWx0O1xuICAgICAgfVxuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHJlcG9Sb290KSkge1xuICAgICAgICBjb25zdCBhbHQyID0gcGF0aC5yZXNvbHZlKFxuICAgICAgICAgIHByb2Nlc3MuY3dkKCksXG4gICAgICAgICAgXCIuLlwiLFxuICAgICAgICAgIHBhdGguYmFzZW5hbWUoaW5wdXQucmVwb1BhdGgpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKGFsdDIpKSByZXBvUm9vdCA9IGFsdDI7XG4gICAgICB9XG4gICAgICBpZiAoIWZzLmV4aXN0c1N5bmMocmVwb1Jvb3QpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlcG9zaXRvcnkgbm90IGZvdW5kIGF0ICR7cmVwb1Jvb3R9YCk7XG4gICAgICBjb25zdCBhbmFseXNpcyA9IGFuYWx5emVSZXBvKHJlcG9Sb290KTtcbiAgICAgIGNvbnN0IGNhcGFiaWxpdGllcyA9IGRlcml2ZUNhcGFiaWxpdGllcyhhbmFseXNpcyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICB0ZXh0OiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllcyxcbiAgICAgICAgICAgICAgICBhbmFseXNpc1N1bW1hcnk6IHtcbiAgICAgICAgICAgICAgICAgIGZpbGVzOiBhbmFseXNpcy5maWxlcy5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICB0ZXN0RmlsZXM6IGFuYWx5c2lzLnRlc3RGaWxlcy5sZW5ndGgsXG4gICAgICAgICAgICAgICAgICByZWFkbWU6IGFuYWx5c2lzLnJlYWRtZT8udGl0bGUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQbGFuRmVhdHVyZVRvb2woKTogVG9vbDxcbiAgdW5kZWZpbmVkLFxuICB0eXBlb2YgcGxhbkZlYXR1cmVTY2hlbWFcbj4ge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IFwicGxhbi1mZWF0dXJlLWltcGxlbWVudGF0aW9uXCIsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIkdpdmVuIGEgZmVhdHVyZSByZXF1ZXN0LCBzZWxlY3QgYXBwcm9wcmlhdGUgTUNQIHRvb2xzIChpbmNsdWRpbmcgZXhpc3RpbmcgYW5kIG5ldyBvbmVzKSBhbmQgcHJvZHVjZSBhbiBleGVjdXRpb24gcGxhbi5cIixcbiAgICBwYXJhbWV0ZXJzOiBwbGFuRmVhdHVyZVNjaGVtYSxcbiAgICBleGVjdXRlOiBhc3luYyAoaW5wdXQpID0+IHtcbiAgICAgIGNvbnN0IHN0ZXBzOiBBcnJheTx7XG4gICAgICAgIHN0ZXA6IG51bWJlcjtcbiAgICAgICAgYWN0aW9uOiBzdHJpbmc7XG4gICAgICAgIHRvb2w/OiBzdHJpbmc7XG4gICAgICAgIGFyZ3VtZW50cz86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgICAgIHJhdGlvbmFsZTogc3RyaW5nO1xuICAgICAgfT4gPSBbXTtcbiAgICAgIGxldCBpID0gMTtcbiAgICAgIHN0ZXBzLnB1c2goe1xuICAgICAgICBzdGVwOiBpKyssXG4gICAgICAgIGFjdGlvbjogXCJBbmFseXplIHJlcG9zaXRvcnkgdG8gZW51bWVyYXRlIEFQSXMgYW5kIGRlY29yYXRvcnNcIixcbiAgICAgICAgdG9vbDogXCJhbmFseXplLXJlcG9zaXRvcnlcIixcbiAgICAgICAgYXJndW1lbnRzOiB7IHJlcG9QYXRoOiBpbnB1dC5yZXBvUGF0aCB9LFxuICAgICAgICByYXRpb25hbGU6IFwiVW5kZXJzdGFuZCBhdmFpbGFibGUgYnVpbGRpbmcgYmxvY2tzLlwiLFxuICAgICAgfSk7XG4gICAgICBzdGVwcy5wdXNoKHtcbiAgICAgICAgc3RlcDogaSsrLFxuICAgICAgICBhY3Rpb246IFwiTGlzdCBjYXBhYmlsaXRpZXMgZXhwZWN0ZWQgZm9yIGRldmVsb3BlcnNcIixcbiAgICAgICAgdG9vbDogXCJlbnVtZXJhdGUtY2FwYWJpbGl0aWVzXCIsXG4gICAgICAgIGFyZ3VtZW50czogeyByZXBvUGF0aDogaW5wdXQucmVwb1BhdGggfSxcbiAgICAgICAgcmF0aW9uYWxlOiBcIkFsaWduIHRoZSBwbGFuIHdpdGggc3VwcG9ydGVkIGNhcGFiaWxpdGllcy5cIixcbiAgICAgIH0pO1xuICAgICAgLy8gU3VnZ2VzdCBleGlzdGluZyBnZW5lcmljIHRvb2xzIGZyb20gbWNwLW1vZHVsZVxuICAgICAgc3RlcHMucHVzaCh7XG4gICAgICAgIHN0ZXA6IGkrKyxcbiAgICAgICAgYWN0aW9uOlxuICAgICAgICAgIFwiU2VsZWN0IGRvY3VtZW50YXRpb24gcHJvbXB0IGFuZCBnYXRoZXIgcmVsZXZhbnQgc291cmNlIGZpbGUocylcIixcbiAgICAgICAgdG9vbDogXCJkb2N1bWVudC1jb2RlXCIsXG4gICAgICAgIGFyZ3VtZW50czogeyBmaWxlUGF0aDogXCI8dGFyZ2V0LWZpbGU+XCIgfSxcbiAgICAgICAgcmF0aW9uYWxlOiBcIlByb3ZpZGUgY29udGV4dCBhbmQgaW5zdHJ1Y3Rpb25zIGZvciBjaGFuZ2VzLlwiLFxuICAgICAgfSk7XG4gICAgICBzdGVwcy5wdXNoKHtcbiAgICAgICAgc3RlcDogaSsrLFxuICAgICAgICBhY3Rpb246IFwiQXBwbHkgY29kZSBjaGFuZ2VzIHVzaW5nIHVuaWZpZWQgZGlmZiBwYXRjaFwiLFxuICAgICAgICB0b29sOiBcImFwcGx5LWNvZGUtY2hhbmdlXCIsXG4gICAgICAgIGFyZ3VtZW50czoge1xuICAgICAgICAgIGZpbGVQYXRoOiBcIjx0YXJnZXQtZmlsZT5cIixcbiAgICAgICAgICBwYXRjaDogXCI8dW5pZmllZC1kaWZmPlwiLFxuICAgICAgICAgIGRyeVJ1bjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcmF0aW9uYWxlOiBcIlZhbGlkYXRlIGNoYW5nZXMgc2FmZWx5IGJlZm9yZSBjb21taXR0aW5nLlwiLFxuICAgICAgfSk7XG4gICAgICBzdGVwcy5wdXNoKHtcbiAgICAgICAgc3RlcDogaSsrLFxuICAgICAgICBhY3Rpb246IFwiQ29tbWl0IGNvZGUgY2hhbmdlc1wiLFxuICAgICAgICB0b29sOiBcImFwcGx5LWNvZGUtY2hhbmdlXCIsXG4gICAgICAgIGFyZ3VtZW50czoge1xuICAgICAgICAgIGZpbGVQYXRoOiBcIjx0YXJnZXQtZmlsZT5cIixcbiAgICAgICAgICBwYXRjaDogXCI8dW5pZmllZC1kaWZmPlwiLFxuICAgICAgICAgIGRyeVJ1bjogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHJhdGlvbmFsZTogXCJQZXJzaXN0IHRoZSB1cGRhdGUuXCIsXG4gICAgICB9KTtcbiAgICAgIC8vIElmIGRlY29yYXRpb24tcmVsYXRlZCB0ZXJtcyBwcmVzZW50LCBzdWdnZXN0IGRlY29yYXRvciB0b29sc1xuICAgICAgaWYgKC9kZWNvcmF0fGZsYXZvdXJ8b3ZlcnJpZGV8ZXh0ZW5kfGJ1aWxkZXIvaS50ZXN0KGlucHV0LmZlYXR1cmUpKSB7XG4gICAgICAgIHN0ZXBzLnVuc2hpZnQoe1xuICAgICAgICAgIHN0ZXA6IDAsXG4gICAgICAgICAgYWN0aW9uOiBcIlVzZSBkZWNvcmF0b3IgdG9vbGluZyB0byBpbnNlcnQvcmVtb3ZlL21vZGlmeSBkZWNvcmF0b3JzXCIsXG4gICAgICAgICAgdG9vbDogXCJkZWNvcmF0b3ItdG9vbHNcIixcbiAgICAgICAgICBhcmd1bWVudHM6IHsgYWN0aW9uOiBcImhlbHBcIiB9LFxuICAgICAgICAgIHJhdGlvbmFsZTogXCJMZXZlcmFnZSBzcGVjaWFsaXplZCB1dGlsaXRpZXMgZm9yIGRlY29yYXRpb24gcGF0dGVybnMuXCIsXG4gICAgICAgIH0pO1xuICAgICAgICBzdGVwcy5mb3JFYWNoKChzLCBpZHgpID0+IChzLnN0ZXAgPSBpZHggKyAxKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICB0ZXh0OiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHBsYW46IHN0ZXBzLFxuICAgICAgICAgICAgICAgIG5vdGVzOlxuICAgICAgICAgICAgICAgICAgXCJSZXBsYWNlIHBsYWNlaG9sZGVyIGFyZ3VtZW50cyBsaWtlIDx0YXJnZXQtZmlsZT4gYW5kIDx1bmlmaWVkLWRpZmY+IGJhc2VkIG9uIHRoZSBhbmFseXNpcyBvdXRwdXQuXCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGRvY3VtZW50Q29kZVRvb2w6IFRvb2w8dW5kZWZpbmVkLCB0eXBlb2YgZG9jdW1lbnRDb2RlU2NoZW1hPiA9IHtcbiAgYW5ub3RhdGlvbnM6IHtcbiAgICBpZGVtcG90ZW50SGludDogdHJ1ZSxcbiAgICBvcGVuV29ybGRIaW50OiBmYWxzZSxcbiAgICByZWFkT25seUhpbnQ6IHRydWUsXG4gICAgdGl0bGU6IFwiRG9jdW1lbnQgU291cmNlIEZpbGVcIixcbiAgfSxcbiAgZGVzY3JpcHRpb246XG4gICAgXCJHZW5lcmF0ZSBkb2N1bWVudGF0aW9uIGd1aWRhbmNlIGZvciBhIGZpbGUgYnkgY29tYmluaW5nIHJlcG9zaXRvcnkgcHJvbXB0cyB3aXRoIHRoZSB0YXJnZXQgc291cmNlIGNvZGUuXCIsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgZXhlY3V0ZTogYXN5bmMgKGlucHV0LCBfY29udGV4dCk6IFByb21pc2U8Q29udGVudFJlc3VsdD4gPT4ge1xuICAgIGNvbnN0IGFyZ3MgPSBkb2N1bWVudENvZGVTY2hlbWEucGFyc2UoaW5wdXQgYXMgRG9jdW1lbnRDb2RlQXJncyk7XG4gICAgY29uc3Qgcm9vdCA9IGdldFdvcmtzcGFjZVJvb3QoKTtcbiAgICBsZXQgZmlsZVBhdGg6IHN0cmluZztcbiAgICB0cnkge1xuICAgICAgZmlsZVBhdGggPSByZXNvbHZlSW5Xb3Jrc3BhY2Uocm9vdCwgYXJncy5maWxlUGF0aCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFdvcmtzcGFjZUVycm9yKSB7XG4gICAgICAgIHJldHVybiB0aHJvd1VzZXJFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZmlsZVBhdGgpKSB7XG4gICAgICByZXR1cm4gdGhyb3dVc2VyRXJyb3IoYENhbm5vdCBkb2N1bWVudCBtaXNzaW5nIGZpbGUgYXQgJHthcmdzLmZpbGVQYXRofWApO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbGVDb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCB7XG4gICAgICBlbmNvZGluZzogYXJncy5lbmNvZGluZyBhcyBCdWZmZXJFbmNvZGluZyxcbiAgICB9KTtcbiAgICAvLyBkeW5hbWljYWxseSBpbXBvcnQgcHJvbXB0IGhlbHBlcnNcbiAgICBjb25zdCBwcm9tcHRNb2QgPSBhd2FpdCBpbXBvcnQoXCIuLi9wcm9tcHRzL3Byb21wdHNcIik7XG4gICAgY29uc3Qge1xuICAgICAgZGlzY292ZXJEb2NQcm9tcHRzLFxuICAgICAgc2VsZWN0UHJvbXB0LFxuICAgICAgREVGQVVMVF9QUk9NUFRfTkFNRSxcbiAgICAgIGJ1aWxkRG9jdW1lbnRhdGlvblBheWxvYWQsXG4gICAgfSA9IHByb21wdE1vZDtcbiAgICBjb25zdCBwcm9tcHRzID0gZGlzY292ZXJEb2NQcm9tcHRzKHJvb3QpO1xuXG4gICAgaWYgKCFwcm9tcHRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRocm93VXNlckVycm9yKFxuICAgICAgICBcIk5vIGRvY3VtZW50YXRpb24gcHJvbXB0cyBmb3VuZCB1bmRlciAuY29kZS9wcm9tcHRzIG9yIC5jb2RleC9wcm9tcHRzXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvbXB0ID0gc2VsZWN0UHJvbXB0KFxuICAgICAgcHJvbXB0cyxcbiAgICAgIGFyZ3MucHJvbXB0TmFtZSA/PyBERUZBVUxUX1BST01QVF9OQU1FXG4gICAgKTtcblxuICAgIHJldHVybiBidWlsZERvY3VtZW50YXRpb25QYXlsb2FkKHtcbiAgICAgIGZpbGVQYXRoOiBhcmdzLmZpbGVQYXRoLFxuICAgICAgZmlsZUNvbnRlbnQsXG4gICAgICBwcm9tcHQsXG4gICAgICBpbmNsdWRlQ29kZTogYXJncy5pbmNsdWRlQ29kZSxcbiAgICAgIGluY2x1ZGVQcm9tcHQ6IGFyZ3MuaW5jbHVkZVByb21wdCxcbiAgICAgIGluY2x1ZGVNZXRhZGF0YTogYXJncy5pbmNsdWRlTWV0YWRhdGEsXG4gICAgICBhZGRpdGlvbmFsQ29udGV4dDogYXJncy5hZGRpdGlvbmFsQ29udGV4dCxcbiAgICB9KTtcbiAgfSxcbiAgbmFtZTogXCJkb2N1bWVudC1jb2RlXCIsXG4gIHBhcmFtZXRlcnM6IGRvY3VtZW50Q29kZVNjaGVtYSxcbn07XG5cbmV4cG9ydCBjb25zdCBhcHBseUNvZGVDaGFuZ2VUb29sOiBUb29sPHVuZGVmaW5lZCwgdHlwZW9mIGNvZGVDaGFuZ2VTY2hlbWE+ID0ge1xuICBhbm5vdGF0aW9uczoge1xuICAgIGRlc3RydWN0aXZlSGludDogdHJ1ZSxcbiAgICBpZGVtcG90ZW50SGludDogZmFsc2UsXG4gICAgb3BlbldvcmxkSGludDogZmFsc2UsXG4gICAgcmVhZE9ubHlIaW50OiBmYWxzZSxcbiAgICB0aXRsZTogXCJBcHBseSBDb2RlIFBhdGNoXCIsXG4gIH0sXG4gIGRlc2NyaXB0aW9uOlxuICAgIFwiQXBwbHkgYSB1bmlmaWVkIGRpZmYgcGF0Y2ggdG8gYSB3b3Jrc3BhY2UgZmlsZSB3aXRoIG9wdGlvbmFsIGRyeS1ydW4gdmFsaWRhdGlvbiBhbmQgZGlmZiBwcmV2aWV3LlwiLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIGV4ZWN1dGU6IGFzeW5jIChpbnB1dCwgX2NvbnRleHQpOiBQcm9taXNlPHN0cmluZyB8IENvbnRlbnRSZXN1bHQ+ID0+IHtcbiAgICBjb25zdCBhcmdzID0gY29kZUNoYW5nZVNjaGVtYS5wYXJzZShpbnB1dCBhcyBBcHBseUNvZGVDaGFuZ2VBcmdzKTtcbiAgICBjb25zdCByb290ID0gZ2V0V29ya3NwYWNlUm9vdCgpO1xuICAgIGxldCBmaWxlUGF0aDogc3RyaW5nO1xuICAgIHRyeSB7XG4gICAgICBmaWxlUGF0aCA9IHJlc29sdmVJbldvcmtzcGFjZShyb290LCBhcmdzLmZpbGVQYXRoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgV29ya3NwYWNlRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHRocm93VXNlckVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luYWwgPSBmcy5leGlzdHNTeW5jKGZpbGVQYXRoKVxuICAgICAgPyBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsIGFyZ3MuZW5jb2RpbmcgYXMgQnVmZmVyRW5jb2RpbmcpXG4gICAgICA6IFwiXCI7XG5cbiAgICBsZXQgcGF0Y2hlZDogc3RyaW5nIHwgZmFsc2U7XG4gICAgdHJ5IHtcbiAgICAgIHBhdGNoZWQgPSBhcHBseVBhdGNoKG9yaWdpbmFsLCBhcmdzLnBhdGNoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIHRocm93VXNlckVycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIGFwcGx5IHByb3ZpZGVkIHBhdGNoIHRvICR7YXJncy5maWxlUGF0aH06ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBlcnJvcn1gXG4gICAgICApO1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmIChwYXRjaGVkID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIHRocm93VXNlckVycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIGFwcGx5IHByb3ZpZGVkIHBhdGNoIHRvICR7YXJncy5maWxlUGF0aH1gXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghYXJncy5kcnlSdW4pIHtcbiAgICAgIGZzLm1rZGlyU3luYyhwYXRoLmRpcm5hbWUoZmlsZVBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIHBhdGNoZWQsIHtcbiAgICAgICAgZW5jb2Rpbmc6IGFyZ3MuZW5jb2RpbmcgYXMgQnVmZmVyRW5jb2RpbmcsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoIWFyZ3Muc2hvd0RpZmYpIHtcbiAgICAgIHJldHVybiBgUGF0Y2ggJHthcmdzLmRyeVJ1biA/IFwidmFsaWRhdGVkXCIgOiBcImFwcGxpZWRcIn0gZm9yICR7YXJncy5maWxlUGF0aH1gO1xuICAgIH1cblxuICAgIGNvbnN0IHByZXZpZXcgPSBjcmVhdGVUd29GaWxlc1BhdGNoKFxuICAgICAgYXJncy5maWxlUGF0aCxcbiAgICAgIGFyZ3MuZmlsZVBhdGgsXG4gICAgICBvcmlnaW5hbCxcbiAgICAgIHBhdGNoZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB7IGNvbnRleHQ6IGFyZ3MuZGlmZkNvbnRleHQgfVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgdGV4dDogYFBhdGNoICR7YXJncy5kcnlSdW4gPyBcInZhbGlkYXRlZFwiIDogXCJhcHBsaWVkXCJ9IGZvciAke2FyZ3MuZmlsZVBhdGh9YCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIHRleHQ6IFtcImBgYGRpZmZcIiwgcHJldmlldy50cmltKCksIFwiYGBgXCJdLmpvaW4oXCJcXG5cIiksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0gc2F0aXNmaWVzIENvbnRlbnRSZXN1bHQ7XG4gIH0sXG4gIG5hbWU6IFwiYXBwbHktY29kZS1jaGFuZ2VcIixcbiAgcGFyYW1ldGVyczogY29kZUNoYW5nZVNjaGVtYSxcbn07XG5cbnR5cGUgQW55VG9vbCA9IFRvb2w8dW5kZWZpbmVkLCBhbnk+O1xuXG5jb25zdCBhbmFseXRpY1Rvb2xzOiBBbnlUb29sW10gPSBbXG4gIGJ1aWxkQW5hbHl6ZVJlcG9zaXRvcnlUb29sKCksXG4gIGJ1aWxkRW51bWVyYXRlQ2FwYWJpbGl0aWVzVG9vbCgpLFxuICBidWlsZFBsYW5GZWF0dXJlVG9vbCgpLFxuXTtcblxuZXhwb3J0IGNvbnN0IHRvb2xMaXN0OiBBbnlUb29sW10gPSBbXG4gIC4uLmFuYWx5dGljVG9vbHMsXG4gIGRvY3VtZW50Q29kZVRvb2wsXG4gIGFwcGx5Q29kZUNoYW5nZVRvb2wsXG5dO1xuIl19
@@ -1,66 +0,0 @@
1
- import { z } from "zod";
2
- import { analyzeRepoSchema, enumerateCapabilitiesSchema, planFeatureSchema, documentCodeSchema, codeChangeSchema, documentObjectSchema, coverageTaskSchema, readmeImprovementSchema } from "./schemas";
3
- export type AnalyzeRepoArgs = z.infer<typeof analyzeRepoSchema>;
4
- export type EnumerateCapabilitiesArgs = z.infer<typeof enumerateCapabilitiesSchema>;
5
- export type PlanFeatureArgs = z.infer<typeof planFeatureSchema>;
6
- export type DecorationResourceTemplate = {
7
- name: string;
8
- description: string;
9
- uriTemplate: string;
10
- mimeType: string;
11
- arguments: ReadonlyArray<{
12
- name: string;
13
- description: string;
14
- required: boolean;
15
- }>;
16
- load: (args: {
17
- path: string;
18
- }) => Promise<{
19
- text: string;
20
- }>;
21
- };
22
- export type DocumentCodeArgs = z.infer<typeof documentCodeSchema>;
23
- export type ApplyCodeChangeArgs = z.infer<typeof codeChangeSchema>;
24
- export type DocumentObjectArgs = z.infer<typeof documentObjectSchema>;
25
- export type CoverageTaskArgs = z.infer<typeof coverageTaskSchema>;
26
- export type ReadmeImprovementArgs = z.infer<typeof readmeImprovementSchema>;
27
- export type DocPrompt = {
28
- name: string;
29
- title: string;
30
- description: string;
31
- content: string;
32
- absolutePath: string;
33
- };
34
- export type WorkspaceResourceTemplate = {
35
- name: string;
36
- description: string;
37
- uriTemplate: string;
38
- mimeType: string;
39
- arguments: ReadonlyArray<{
40
- name: string;
41
- description: string;
42
- required: boolean;
43
- }>;
44
- load: (args: {
45
- path: string;
46
- }) => Promise<{
47
- text: string;
48
- }>;
49
- };
50
- export type PromptResourceTemplate = {
51
- name: string;
52
- description: string;
53
- uriTemplate: string;
54
- mimeType: string;
55
- arguments: ReadonlyArray<{
56
- name: string;
57
- description: string;
58
- required: boolean;
59
- }>;
60
- load: (args: {
61
- name: string;
62
- }) => Promise<{
63
- text: string;
64
- uri?: string;
65
- }>;
66
- };
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWNwL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHtcbiAgYW5hbHl6ZVJlcG9TY2hlbWEsXG4gIGVudW1lcmF0ZUNhcGFiaWxpdGllc1NjaGVtYSxcbiAgcGxhbkZlYXR1cmVTY2hlbWEsXG4gIGRvY3VtZW50Q29kZVNjaGVtYSxcbiAgY29kZUNoYW5nZVNjaGVtYSxcbiAgZG9jdW1lbnRPYmplY3RTY2hlbWEsXG4gIGNvdmVyYWdlVGFza1NjaGVtYSxcbiAgcmVhZG1lSW1wcm92ZW1lbnRTY2hlbWEsXG59IGZyb20gXCIuL3NjaGVtYXNcIjtcblxuZXhwb3J0IHR5cGUgQW5hbHl6ZVJlcG9BcmdzID0gei5pbmZlcjx0eXBlb2YgYW5hbHl6ZVJlcG9TY2hlbWE+O1xuZXhwb3J0IHR5cGUgRW51bWVyYXRlQ2FwYWJpbGl0aWVzQXJncyA9IHouaW5mZXI8XG4gIHR5cGVvZiBlbnVtZXJhdGVDYXBhYmlsaXRpZXNTY2hlbWFcbj47XG5leHBvcnQgdHlwZSBQbGFuRmVhdHVyZUFyZ3MgPSB6LmluZmVyPHR5cGVvZiBwbGFuRmVhdHVyZVNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIERlY29yYXRpb25SZXNvdXJjZVRlbXBsYXRlID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHVyaVRlbXBsYXRlOiBzdHJpbmc7XG4gIG1pbWVUeXBlOiBzdHJpbmc7XG4gIGFyZ3VtZW50czogUmVhZG9ubHlBcnJheTx7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIH0+O1xuICBsb2FkOiAoYXJnczogeyBwYXRoOiBzdHJpbmcgfSkgPT4gUHJvbWlzZTx7IHRleHQ6IHN0cmluZyB9Pjtcbn07XG5cbmV4cG9ydCB0eXBlIERvY3VtZW50Q29kZUFyZ3MgPSB6LmluZmVyPHR5cGVvZiBkb2N1bWVudENvZGVTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBBcHBseUNvZGVDaGFuZ2VBcmdzID0gei5pbmZlcjx0eXBlb2YgY29kZUNoYW5nZVNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIERvY3VtZW50T2JqZWN0QXJncyA9IHouaW5mZXI8dHlwZW9mIGRvY3VtZW50T2JqZWN0U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgQ292ZXJhZ2VUYXNrQXJncyA9IHouaW5mZXI8dHlwZW9mIGNvdmVyYWdlVGFza1NjaGVtYT47XG5cbmV4cG9ydCB0eXBlIFJlYWRtZUltcHJvdmVtZW50QXJncyA9IHouaW5mZXI8dHlwZW9mIHJlYWRtZUltcHJvdmVtZW50U2NoZW1hPjtcblxuZXhwb3J0IHR5cGUgRG9jUHJvbXB0ID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgYWJzb2x1dGVQYXRoOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBXb3Jrc3BhY2VSZXNvdXJjZVRlbXBsYXRlID0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHVyaVRlbXBsYXRlOiBzdHJpbmc7XG4gIG1pbWVUeXBlOiBzdHJpbmc7XG4gIGFyZ3VtZW50czogUmVhZG9ubHlBcnJheTx7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIH0+O1xuICBsb2FkOiAoYXJnczogeyBwYXRoOiBzdHJpbmcgfSkgPT4gUHJvbWlzZTx7IHRleHQ6IHN0cmluZyB9Pjtcbn07XG5cbmV4cG9ydCB0eXBlIFByb21wdFJlc291cmNlVGVtcGxhdGUgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgdXJpVGVtcGxhdGU6IHN0cmluZztcbiAgbWltZVR5cGU6IHN0cmluZztcbiAgYXJndW1lbnRzOiBSZWFkb25seUFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICByZXF1aXJlZDogYm9vbGVhbjtcbiAgfT47XG4gIGxvYWQ6IChhcmdzOiB7IG5hbWU6IHN0cmluZyB9KSA9PiBQcm9taXNlPHsgdGV4dDogc3RyaW5nOyB1cmk/OiBzdHJpbmcgfT47XG59O1xuIl19
@@ -1,3 +0,0 @@
1
- export declare function readFileSafe(filePath: string, encoding?: BufferEncoding): string | undefined;
2
- export declare function listFilesRecursive(root: string, matcher?: (p: string) => boolean): string[];
3
- export declare function deriveCapabilities(analysis: any): string[];
@@ -1,46 +0,0 @@
1
- import fs from "fs";
2
- import path from "path";
3
- export function readFileSafe(filePath, encoding = "utf8") {
4
- try {
5
- return fs.readFileSync(filePath, { encoding });
6
- }
7
- catch {
8
- return undefined;
9
- }
10
- }
11
- export function listFilesRecursive(root, matcher) {
12
- const out = [];
13
- const stack = [root];
14
- while (stack.length) {
15
- const cur = stack.pop();
16
- const stat = fs.statSync(cur);
17
- if (stat.isDirectory()) {
18
- for (const f of fs.readdirSync(cur))
19
- stack.push(path.join(cur, f));
20
- }
21
- else if (!matcher || matcher(cur)) {
22
- out.push(cur);
23
- }
24
- }
25
- return out.sort();
26
- }
27
- export function deriveCapabilities(analysis) {
28
- const cap = new Set();
29
- // heuristics: if decorators like Decoration, flavouredAs, extend, override appear, add capabilities
30
- const allDecs = new Set();
31
- for (const k of Object.keys(analysis.api)) {
32
- for (const d of analysis.api[k].decorators)
33
- allDecs.add(d);
34
- for (const e of analysis.api[k].exports)
35
- if (/Decoration|decorate|Builder|Flavour/i.test(e))
36
- cap.add("use-decoration-api");
37
- }
38
- if ([...allDecs].some((d) => /override|extend/i.test(d)))
39
- cap.add("override-and-extend-decorations");
40
- if (Object.keys(analysis.tests).length > 0)
41
- cap.add("validate-with-tests");
42
- if (analysis.readme)
43
- cap.add("follow-readme-guides");
44
- return [...cap].sort();
45
- }
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWNwL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFFeEIsTUFBTSxVQUFVLFlBQVksQ0FDMUIsUUFBZ0IsRUFDaEIsV0FBMkIsTUFBTTtJQUVqQyxJQUFJLENBQUM7UUFDSCxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLElBQVksRUFDWixPQUFnQztJQUVoQyxNQUFNLEdBQUcsR0FBYSxFQUFFLENBQUM7SUFDekIsTUFBTSxLQUFLLEdBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixPQUFPLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFHLENBQUM7UUFDekIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7Z0JBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7YUFBTSxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNwQixDQUFDO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFFBQWE7SUFDOUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUM5QixvR0FBb0c7SUFDcEcsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUNsQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDMUMsS0FBSyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVU7WUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNELEtBQUssTUFBTSxDQUFDLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPO1lBQ3JDLElBQUksc0NBQXNDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDaEQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RCxHQUFHLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFDN0MsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUMzRSxJQUFJLFFBQVEsQ0FBQyxNQUFNO1FBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3JELE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEZpbGVTYWZlKFxuICBmaWxlUGF0aDogc3RyaW5nLFxuICBlbmNvZGluZzogQnVmZmVyRW5jb2RpbmcgPSBcInV0ZjhcIlxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCB7IGVuY29kaW5nIH0pO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXN0RmlsZXNSZWN1cnNpdmUoXG4gIHJvb3Q6IHN0cmluZyxcbiAgbWF0Y2hlcj86IChwOiBzdHJpbmcpID0+IGJvb2xlYW5cbik6IHN0cmluZ1tdIHtcbiAgY29uc3Qgb3V0OiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBzdGFjazogc3RyaW5nW10gPSBbcm9vdF07XG4gIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcbiAgICBjb25zdCBjdXIgPSBzdGFjay5wb3AoKSE7XG4gICAgY29uc3Qgc3RhdCA9IGZzLnN0YXRTeW5jKGN1cik7XG4gICAgaWYgKHN0YXQuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgZm9yIChjb25zdCBmIG9mIGZzLnJlYWRkaXJTeW5jKGN1cikpIHN0YWNrLnB1c2gocGF0aC5qb2luKGN1ciwgZikpO1xuICAgIH0gZWxzZSBpZiAoIW1hdGNoZXIgfHwgbWF0Y2hlcihjdXIpKSB7XG4gICAgICBvdXQucHVzaChjdXIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0LnNvcnQoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlcml2ZUNhcGFiaWxpdGllcyhhbmFseXNpczogYW55KTogc3RyaW5nW10ge1xuICBjb25zdCBjYXAgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgLy8gaGV1cmlzdGljczogaWYgZGVjb3JhdG9ycyBsaWtlIERlY29yYXRpb24sIGZsYXZvdXJlZEFzLCBleHRlbmQsIG92ZXJyaWRlIGFwcGVhciwgYWRkIGNhcGFiaWxpdGllc1xuICBjb25zdCBhbGxEZWNzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgayBvZiBPYmplY3Qua2V5cyhhbmFseXNpcy5hcGkpKSB7XG4gICAgZm9yIChjb25zdCBkIG9mIGFuYWx5c2lzLmFwaVtrXS5kZWNvcmF0b3JzKSBhbGxEZWNzLmFkZChkKTtcbiAgICBmb3IgKGNvbnN0IGUgb2YgYW5hbHlzaXMuYXBpW2tdLmV4cG9ydHMpXG4gICAgICBpZiAoL0RlY29yYXRpb258ZGVjb3JhdGV8QnVpbGRlcnxGbGF2b3VyL2kudGVzdChlKSlcbiAgICAgICAgY2FwLmFkZChcInVzZS1kZWNvcmF0aW9uLWFwaVwiKTtcbiAgfVxuICBpZiAoWy4uLmFsbERlY3NdLnNvbWUoKGQpID0+IC9vdmVycmlkZXxleHRlbmQvaS50ZXN0KGQpKSlcbiAgICBjYXAuYWRkKFwib3ZlcnJpZGUtYW5kLWV4dGVuZC1kZWNvcmF0aW9uc1wiKTtcbiAgaWYgKE9iamVjdC5rZXlzKGFuYWx5c2lzLnRlc3RzKS5sZW5ndGggPiAwKSBjYXAuYWRkKFwidmFsaWRhdGUtd2l0aC10ZXN0c1wiKTtcbiAgaWYgKGFuYWx5c2lzLnJlYWRtZSkgY2FwLmFkZChcImZvbGxvdy1yZWFkbWUtZ3VpZGVzXCIpO1xuICByZXR1cm4gWy4uLmNhcF0uc29ydCgpO1xufVxuXG4iXX0=
@@ -1,13 +0,0 @@
1
- export type ValidationIssue = {
2
- module: string;
3
- path: string;
4
- type: "missing-folder" | "missing-export" | "empty-list" | "disabled" | "other";
5
- detail?: string;
6
- };
7
- export type ValidationReport = {
8
- ok: boolean;
9
- modulesChecked: number;
10
- issues: ValidationIssue[];
11
- };
12
- export declare function findModuleDirs(repoRoot: string): string[];
13
- export declare function validateModules(repoRoot: string): ValidationReport;
@@ -1,116 +0,0 @@
1
- // New: validation entrypoint for module structure
2
- import fs from "fs";
3
- import path from "path";
4
- const REQUIRED_SUBFOLDERS = ["prompts", "resources", "templates", "tools"];
5
- export function findModuleDirs(repoRoot) {
6
- const modulesPath = path.resolve(repoRoot, "src", "modules");
7
- if (!fs.existsSync(modulesPath) || !fs.statSync(modulesPath).isDirectory()) {
8
- return [];
9
- }
10
- return fs
11
- .readdirSync(modulesPath, { withFileTypes: true })
12
- .filter((d) => d.isDirectory())
13
- .map((d) => path.join(modulesPath, d.name));
14
- }
15
- function hasIndexExport(folderPath) {
16
- const candidates = [
17
- "index.ts",
18
- "index.tsx",
19
- "index.js",
20
- "index.cjs",
21
- "index.mjs",
22
- ];
23
- for (const c of candidates) {
24
- if (fs.existsSync(path.join(folderPath, c)))
25
- return true;
26
- }
27
- return false;
28
- }
29
- export function validateModules(repoRoot) {
30
- const dirs = findModuleDirs(repoRoot);
31
- const issues = [];
32
- for (const moduleDir of dirs) {
33
- const moduleName = path.basename(moduleDir);
34
- for (const sub of REQUIRED_SUBFOLDERS) {
35
- const subPath = path.join(moduleDir, sub);
36
- if (!fs.existsSync(subPath) || !fs.statSync(subPath).isDirectory()) {
37
- issues.push({
38
- module: moduleName,
39
- path: subPath,
40
- type: "missing-folder",
41
- detail: `Required folder '${sub}' is missing in module '${moduleName}'`,
42
- });
43
- continue;
44
- }
45
- // If folder exists, check for index export
46
- if (!hasIndexExport(subPath)) {
47
- issues.push({
48
- module: moduleName,
49
- path: subPath,
50
- type: "missing-export",
51
- detail: `No index export found in '${subPath}'. Expected one of index.ts, index.js, etc.`,
52
- });
53
- continue;
54
- }
55
- // Optionally inspect the index file to see if it exports a list (lightweight check)
56
- try {
57
- const indexFile = candidatesFindingIndex(subPath);
58
- if (indexFile) {
59
- const content = fs.readFileSync(indexFile, "utf8");
60
- // crude heuristics: look for `export const name = [` or `export const name: Type[] = [`,
61
- // or any named export like `export { something }` which implies exports exist.
62
- const exportListPattern = /export\s+(const|let|var)\s+[\w$]+(?:\s*:\s*[^=]+)?\s*=\s*\[/;
63
- if (!exportListPattern.test(content) &&
64
- !/export\s+\{/.test(content)) {
65
- issues.push({
66
- module: moduleName,
67
- path: indexFile,
68
- type: "empty-list",
69
- detail: `Index file does not appear to export a list of assets: ${path.basename(indexFile)}`,
70
- });
71
- }
72
- }
73
- }
74
- catch (err) {
75
- issues.push({
76
- module: moduleName,
77
- path: subPath,
78
- type: "other",
79
- detail: `Error reading index file: ${err.message}`,
80
- });
81
- }
82
- }
83
- }
84
- return {
85
- ok: issues.length === 0,
86
- modulesChecked: dirs.length,
87
- issues,
88
- };
89
- }
90
- function candidatesFindingIndex(folderPath) {
91
- const candidates = [
92
- "index.ts",
93
- "index.tsx",
94
- "index.js",
95
- "index.cjs",
96
- "index.mjs",
97
- ];
98
- for (const c of candidates) {
99
- const full = path.join(folderPath, c);
100
- if (fs.existsSync(full))
101
- return full;
102
- }
103
- return undefined;
104
- }
105
- // CLI helper
106
- if (require.main === module) {
107
- const repoRoot = process.cwd();
108
- const report = validateModules(repoRoot);
109
- if (!report.ok) {
110
- console.error("Module validation failed:\n", JSON.stringify(report, null, 2));
111
- process.exit(2);
112
- }
113
- console.log("Module validation passed");
114
- process.exit(0);
115
- }
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbWNwL3ZhbGlkYXRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0RBQWtEO0FBQ2xELE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFvQnhCLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUUzRSxNQUFNLFVBQVUsY0FBYyxDQUFDLFFBQWdCO0lBQzdDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM3RCxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztRQUMzRSxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxPQUFPLEVBQUU7U0FDTixXQUFXLENBQUMsV0FBVyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDO1NBQ2pELE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLFVBQWtCO0lBQ3hDLE1BQU0sVUFBVSxHQUFHO1FBQ2pCLFVBQVU7UUFDVixXQUFXO1FBQ1gsVUFBVTtRQUNWLFdBQVc7UUFDWCxXQUFXO0tBQ1osQ0FBQztJQUNGLEtBQUssTUFBTSxDQUFDLElB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QUFNO1FBQzNCLE1BQU07S0FDUCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQUMsVUFBa0I7SUFDaEQsTUFBTSxVQUFVLEdBQUc7UUFDakIsVUFBVTtRQUNWLFdBQVc7UUFDWCxVQUFVO1FBQ1YsV0FBVztRQUNYLFdBQVc7S0FDWixDQUFDO0lBQ0YsS0FBSyxNQUFNLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0QyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxhQUFhO0FBQ2IsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO0lBQzVCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMvQixNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNmLE9BQU8sQ0FBQyxLQUFLLENBQ1gsNkJBQTZCLEVBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FDaEMsQ0FBQztRQUNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUN4QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBOZXc6IHZhbGlkYXRpb24gZW50cnlwb2ludCBmb3IgbW9kdWxlIHN0cnVjdHVyZVxuaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbklzc3VlID0ge1xuICBtb2R1bGU6IHN0cmluZztcbiAgcGF0aDogc3RyaW5nO1xuICB0eXBlOlxuICAgIHwgXCJtaXNzaW5nLWZvbGRlclwiXG4gICAgfCBcIm1pc3NpbmctZXhwb3J0XCJcbiAgICB8IFwiZW1wdHktbGlzdFwiXG4gICAgfCBcImRpc2FibGVkXCJcbiAgICB8IFwib3RoZXJcIjtcbiAgZGV0YWlsPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblJlcG9ydCA9IHtcbiAgb2s6IGJvb2xlYW47XG4gIG1vZHVsZXNDaGVja2VkOiBudW1iZXI7XG4gIGlzc3VlczogVmFsaWRhdGlvbklzc3VlW107XG59O1xuXG5jb25zdCBSRVFVSVJFRF9TVUJGT0xERVJTID0gW1wicHJvbXB0c1wiLCBcInJlc291cmNlc1wiLCBcInRlbXBsYXRlc1wiLCBcInRvb2xzXCJdO1xuXG5leHBvcnQgZnVuY3Rpb24gZmluZE1vZHVsZURpcnMocmVwb1Jvb3Q6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgbW9kdWxlc1BhdGggPSBwYXRoLnJlc29sdmUocmVwb1Jvb3QsIFwic3JjXCIsIFwibW9kdWxlc1wiKTtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKG1vZHVsZXNQYXRoKSB8fCAhZnMuc3RhdFN5bmMobW9kdWxlc1BhdGgpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIGZzXG4gICAgLnJlYWRkaXJTeW5jKG1vZHVsZXNQYXRoLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUgfSlcbiAgICAuZmlsdGVyKChkKSA9PiBkLmlzRGlyZWN0b3J5KCkpXG4gICAgLm1hcCgoZCkgPT4gcGF0aC5qb2luKG1vZHVsZXNQYXRoLCBkLm5hbWUpKTtcbn1cblxuZnVuY3Rpb24gaGFzSW5kZXhFeHBvcnQoZm9sZGVyUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IGNhbmRpZGF0ZXMgPSBbXG4gICAgXCJpbmRleC50c1wiLFxuICAgIFwiaW5kZXgudHN4XCIsXG4gICAgXCJpbmRleC5qc1wiLFxuICAgIFwiaW5kZXguY2pzXCIsXG4gICAgXCJpbmRleC5tanNcIixcbiAgXTtcbiAgZm9yIChjb25zdCBjIG9mIGNhbmRpZGF0ZXMpIHtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhwYXRoLmpvaW4oZm9sZGVyUGF0aCwgYykpKSByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZU1vZHVsZXMocmVwb1Jvb3Q6IHN0cmluZyk6IFZhbGlkYXRpb25SZXBvcnQge1xuICBjb25zdCBkaXJzID0gZmluZE1vZHVsZURpcnMocmVwb1Jvb3QpO1xuICBjb25zdCBpc3N1ZXM6IFZhbGlkYXRpb25Jc3N1ZVtdID0gW107XG5cbiAgZm9yIChjb25zdCBtb2R1bGVEaXIgb2YgZGlycykge1xuICAgIGNvbnN0IG1vZHVsZU5hbWUgPSBwYXRoLmJhc2VuYW1lKG1vZHVsZURpcik7XG4gICAgZm9yIChjb25zdCBzdWIgb2YgUkVRVUlSRURfU1VCRk9MREVSUykge1xuICAgICAgY29uc3Qgc3ViUGF0aCA9IHBhdGguam9pbihtb2R1bGVEaXIsIHN1Yik7XG4gICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoc3ViUGF0aCkgfHwgIWZzLnN0YXRTeW5jKHN1YlBhdGgpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgaXNzdWVzLnB1c2goe1xuICAgICAgICAgIG1vZHVsZTogbW9kdWxlTmFtZSxcbiAgICAgICAgICBwYXRoOiBzdWJQYXRoLFxuICAgICAgICAgIHR5cGU6IFwibWlzc2luZy1mb2xkZXJcIixcbiAgICAgICAgICBkZXRhaWw6IGBSZXF1aXJlZCBmb2xkZXIgJyR7c3VifScgaXMgbWlzc2luZyBpbiBtb2R1bGUgJyR7bW9kdWxlTmFtZX0nYCxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgLy8gSWYgZm9sZGVyIGV4aXN0cywgY2hlY2sgZm9yIGluZGV4IGV4cG9ydFxuICAgICAgaWYgKCFoYXNJbmRleEV4cG9ydChzdWJQYXRoKSkge1xuICAgICAgICBpc3N1ZXMucHVzaCh7XG4gICAgICAgICAgbW9kdWxlOiBtb2R1bGVOYW1lLFxuICAgICAgICAgIHBhdGg6IHN1YlBhdGgsXG4gICAgICAgICAgdHlwZTogXCJtaXNzaW5nLWV4cG9ydFwiLFxuICAgICAgICAgIGRldGFpbDogYE5vIGluZGV4IGV4cG9ydCBmb3VuZCBpbiAnJHtzdWJQYXRofScuIEV4cGVjdGVkIG9uZSBvZiBpbmRleC50cywgaW5kZXguanMsIGV0Yy5gLFxuICAgICAgICB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICAvLyBPcHRpb25hbGx5IGluc3BlY3QgdGhlIGluZGV4IGZpbGUgdG8gc2VlIGlmIGl0IGV4cG9ydHMgYSBsaXN0IChsaWdodHdlaWdodCBjaGVjaylcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGluZGV4RmlsZSA9IGNhbmRpZGF0ZXNGaW5kaW5nSW5kZXgoc3ViUGF0aCk7XG4gICAgICAgIGlmIChpbmRleEZpbGUpIHtcbiAgICAgICAgICBjb25zdCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGluZGV4RmlsZSwgXCJ1dGY4XCIpO1xuICAgICAgICAgIC8vIGNydWRlIGhldXJpc3RpY3M6IGxvb2sgZm9yIGBleHBvcnQgY29uc3QgbmFtZSA9IFtgIG9yIGBleHBvcnQgY29uc3QgbmFtZTogVHlwZVtdID0gW2AsXG4gICAgICAgICAgLy8gb3IgYW55IG5hbWVkIGV4cG9ydCBsaWtlIGBleHBvcnQgeyBzb21ldGhpbmcgfWAgd2hpY2ggaW1wbGllcyBleHBvcnRzIGV4aXN0LlxuICAgICAgICAgIGNvbnN0IGV4cG9ydExpc3RQYXR0ZXJuID1cbiAgICAgICAgICAgIC9leHBvcnRcXHMrKGNvbnN0fGxldHx2YXIpXFxzK1tcXHckXSsoPzpcXHMqOlxccypbXj1dKyk/XFxzKj1cXHMqXFxbLztcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAhZXhwb3J0TGlzdFBhdHRlcm4udGVzdChjb250ZW50KSAmJlxuICAgICAgICAgICAgIS9leHBvcnRcXHMrXFx7Ly50ZXN0KGNvbnRlbnQpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgIG1vZHVsZTogbW9kdWxlTmFtZSxcbiAgICAgICAgICAgICAgcGF0aDogaW5kZXhGaWxlLFxuICAgICAgICAgICAgICB0eXBlOiBcImVtcHR5LWxpc3RcIixcbiAgICAgICAgICAgICAgZGV0YWlsOiBgSW5kZXggZmlsZSBkb2VzIG5vdCBhcHBlYXIgdG8gZXhwb3J0IGEgbGlzdCBvZiBhc3NldHM6ICR7cGF0aC5iYXNlbmFtZShpbmRleEZpbGUpfWAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgIGlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICBtb2R1bGU6IG1vZHVsZU5hbWUsXG4gICAgICAgICAgcGF0aDogc3ViUGF0aCxcbiAgICAgICAgICB0eXBlOiBcIm90aGVyXCIsXG4gICAgICAgICAgZGV0YWlsOiBgRXJyb3IgcmVhZGluZyBpbmRleCBmaWxlOiAke2Vyci5tZXNzYWdlfWAsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgb2s6IGlzc3Vlcy5sZW5ndGggPT09IDAsXG4gICAgbW9kdWxlc0NoZWNrZWQ6IGRpcnMubGVuZ3RoLFxuICAgIGlzc3VlcyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY2FuZGlkYXRlc0ZpbmRpbmdJbmRleChmb2xkZXJQYXRoOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBjYW5kaWRhdGVzID0gW1xuICAgIFwiaW5kZXgudHNcIixcbiAgICBcImluZGV4LnRzeFwiLFxuICAgIFwiaW5kZXguanNcIixcbiAgICBcImluZGV4LmNqc1wiLFxuICAgIFwiaW5kZXgubWpzXCIsXG4gIF07XG4gIGZvciAoY29uc3QgYyBvZiBjYW5kaWRhdGVzKSB7XG4gICAgY29uc3QgZnVsbCA9IHBhdGguam9pbihmb2xkZXJQYXRoLCBjKTtcbiAgICBpZiAoZnMuZXhpc3RzU3luYyhmdWxsKSkgcmV0dXJuIGZ1bGw7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLy8gQ0xJIGhlbHBlclxuaWYgKHJlcXVpcmUubWFpbiA9PT0gbW9kdWxlKSB7XG4gIGNvbnN0IHJlcG9Sb290ID0gcHJvY2Vzcy5jd2QoKTtcbiAgY29uc3QgcmVwb3J0ID0gdmFsaWRhdGVNb2R1bGVzKHJlcG9Sb290KTtcbiAgaWYgKCFyZXBvcnQub2spIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJNb2R1bGUgdmFsaWRhdGlvbiBmYWlsZWQ6XFxuXCIsXG4gICAgICBKU09OLnN0cmluZ2lmeShyZXBvcnQsIG51bGwsIDIpXG4gICAgKTtcbiAgICBwcm9jZXNzLmV4aXQoMik7XG4gIH1cbiAgY29uc29sZS5sb2coXCJNb2R1bGUgdmFsaWRhdGlvbiBwYXNzZWRcIik7XG4gIHByb2Nlc3MuZXhpdCgwKTtcbn1cbiJdfQ==
@@ -1,9 +0,0 @@
1
- export type ScaffoldResult = {
2
- modulePath: string;
3
- createdFiles: string[];
4
- };
5
- /**
6
- * Create a module scaffold under repoRoot/src/modules/<moduleName>
7
- * Returns created files list.
8
- */
9
- export declare function scaffoldModule(repoRoot: string, moduleName: string): ScaffoldResult;