@decaf-ts/mcp-server 0.4.2 → 0.4.6

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,118 +0,0 @@
1
- export type DecoratorSpec = {
2
- name: string;
3
- args?: unknown[];
4
- };
5
- export type AttributeSpec = {
6
- name: string;
7
- type: string;
8
- decorators?: DecoratorSpec[];
9
- };
10
- export declare const decoratorTools: {
11
- readonly createOrUpdateModelTool: {
12
- readonly name: "create-or-update-model";
13
- readonly description: "Create or update a validation-ready model class";
14
- readonly execute: (args: {
15
- filePath: string;
16
- className: string;
17
- classDecorators?: DecoratorSpec[];
18
- properties: AttributeSpec[];
19
- importsFrom: string;
20
- overwrite?: boolean;
21
- }) => Promise<{
22
- filePath: string;
23
- }>;
24
- };
25
- readonly addAttributeTool: {
26
- readonly name: "add-attribute";
27
- readonly description: "Add a decorated attribute to an existing model";
28
- readonly execute: (args: {
29
- filePath: string;
30
- className: string;
31
- attribute: AttributeSpec;
32
- importsFrom: string;
33
- }) => Promise<{
34
- filePath: string;
35
- }>;
36
- };
37
- readonly removeAttributeTool: {
38
- readonly name: "remove-attribute";
39
- readonly description: "Remove an attribute from a model class";
40
- readonly execute: (args: {
41
- filePath: string;
42
- className: string;
43
- attributeName: string;
44
- }) => Promise<{
45
- filePath: string;
46
- }>;
47
- };
48
- readonly applyDecoratorTool: {
49
- readonly name: "apply-decorator";
50
- readonly description: "Apply a decorator to a class or property";
51
- readonly execute: (args: {
52
- filePath: string;
53
- className: string;
54
- target: {
55
- kind: "class" | "property";
56
- name?: string;
57
- };
58
- decorator: DecoratorSpec;
59
- importsFrom: string;
60
- }) => Promise<{
61
- filePath: string;
62
- }>;
63
- };
64
- readonly removeDecoratorTool: {
65
- readonly name: "remove-decorator";
66
- readonly description: "Remove a decorator from a class or property";
67
- readonly execute: (args: {
68
- filePath: string;
69
- className: string;
70
- target: {
71
- kind: "class" | "property";
72
- name?: string;
73
- };
74
- decoratorName: string;
75
- }) => Promise<{
76
- filePath: string;
77
- }>;
78
- };
79
- readonly scaffoldValidatorTool: {
80
- readonly name: "scaffold-validator";
81
- readonly description: "Scaffold a validator class and optional decorator";
82
- readonly execute: (args: {
83
- validatorsDir: string;
84
- decoratorDir?: string;
85
- name: string;
86
- }) => Promise<{
87
- classFile: string;
88
- decoratorFile: string | undefined;
89
- }>;
90
- };
91
- readonly scaffoldSerializerTool: {
92
- readonly name: "scaffold-serializer";
93
- readonly description: "Scaffold a serializer class and optional registry";
94
- readonly execute: (args: {
95
- dir: string;
96
- name: string;
97
- registerDir?: string;
98
- setDefault?: boolean;
99
- }) => Promise<{
100
- classFile: string;
101
- registerFile: string | undefined;
102
- }>;
103
- };
104
- readonly scaffoldHashingTool: {
105
- readonly name: "scaffold-hashing";
106
- readonly description: "Scaffold a hashing function and optional registry";
107
- readonly execute: (args: {
108
- dir: string;
109
- name: string;
110
- registerDir?: string;
111
- setDefault?: boolean;
112
- }) => Promise<{
113
- functionFile: string;
114
- registerFile: string | undefined;
115
- }>;
116
- };
117
- };
118
- export type DecoratorTools = typeof decoratorTools;
@@ -1,237 +0,0 @@
1
- import fs from "fs";
2
- import path from "path";
3
- function escapeRegExp(value) {
4
- return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
5
- }
6
- function formatDecorator(spec) {
7
- const args = (spec.args || []).map((arg) => JSON.stringify(arg)).join(", ");
8
- return `@${spec.name}(${args})`;
9
- }
10
- function ensureDirectory(filePath) {
11
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
12
- }
13
- function collectDecoratorNames(classDecorators, properties) {
14
- const names = new Set();
15
- names.add("model");
16
- for (const decorator of classDecorators || []) {
17
- names.add(decorator.name);
18
- }
19
- for (const property of properties || []) {
20
- for (const decorator of property.decorators || []) {
21
- names.add(decorator.name);
22
- }
23
- }
24
- return names;
25
- }
26
- function ensureImport(content, importsFrom, decorators) {
27
- /* istanbul ignore next */
28
- if (!decorators.size)
29
- return content;
30
- const importRegex = new RegExp(`import\\s+\\{([^}]+)\\}\\s+from\\s+["']${escapeRegExp(importsFrom)}["'];`);
31
- const match = content.match(importRegex);
32
- const sorted = Array.from(decorators).sort();
33
- if (match) {
34
- const existing = match[1]
35
- .split(",")
36
- .map((name) => name.trim())
37
- .filter(Boolean);
38
- const merged = Array.from(new Set([...existing, ...sorted])).sort();
39
- return content.replace(importRegex, `import { ${merged.join(", ")} } from "${importsFrom}";`);
40
- }
41
- const importLine = `import { ${sorted.join(", ")} } from "${importsFrom}";`;
42
- return `${importLine}\n\n${content}`;
43
- }
44
- function addPropertyBlock(property) {
45
- const decorators = (property.decorators || [])
46
- .map(formatDecorator)
47
- .join("\n ");
48
- const decoratorBlock = decorators ? ` ${decorators}\n` : "";
49
- return `${decoratorBlock} ${property.name}: ${property.type};`;
50
- }
51
- function removePropertyBlock(content, propertyName) {
52
- const lines = content.split(/\r?\n/);
53
- const result = [];
54
- for (let i = 0; i < lines.length; i++) {
55
- const line = lines[i];
56
- if (line.trim().startsWith(`@`) &&
57
- lines[i + 1]?.includes(`${propertyName}:`)) {
58
- continue;
59
- }
60
- if (line.includes(`${propertyName}:`)) {
61
- // skip this line and any trailing blank line
62
- continue;
63
- }
64
- result.push(line);
65
- }
66
- return result.join("\n");
67
- }
68
- function insertDecorator(content, decorator, target) {
69
- const decoratorLine = formatDecorator(decorator);
70
- if (target.kind === "class") {
71
- const classRegex = /(export\s+class\s+[^\s{]+\s*\{)/;
72
- if (content.includes(decoratorLine))
73
- return content;
74
- return content.replace(classRegex, `${decoratorLine}\n$1`);
75
- }
76
- if (!target.name)
77
- return content;
78
- const propertyRegex = new RegExp(`(^\\s*)(?:@.*\\n\\1)*${escapeRegExp(target.name)}:`, "m");
79
- const match = propertyRegex.exec(content);
80
- if (!match)
81
- return content;
82
- const indent = match[1] || " ";
83
- if (content.includes(`${indent}${decoratorLine}`))
84
- return content;
85
- return (content.slice(0, match.index) +
86
- `${indent}${decoratorLine}\n` +
87
- content.slice(match.index));
88
- }
89
- function removeDecorator(content, decoratorName, target) {
90
- const decoratorRegex = new RegExp(`^\\s*@${escapeRegExp(decoratorName)}\\([^)]*\\)`, "m");
91
- if (target.kind === "class") {
92
- return content.replace(decoratorRegex, "");
93
- }
94
- if (target.name) {
95
- const pattern = new RegExp(`(^\\s*@${escapeRegExp(decoratorName)}\\([^)]*\\)\\s*$\\n)(?=\\s*${escapeRegExp(target.name)}:)`, "m");
96
- return content.replace(pattern, "");
97
- }
98
- return content;
99
- }
100
- function writeIfChanged(filePath, content) {
101
- ensureDirectory(filePath);
102
- fs.writeFileSync(filePath, content);
103
- }
104
- export const decoratorTools = {
105
- createOrUpdateModelTool: {
106
- name: "create-or-update-model",
107
- description: "Create or update a validation-ready model class",
108
- execute: async (args) => {
109
- if (!args.overwrite && fs.existsSync(args.filePath)) {
110
- throw new Error(`File already exists at ${args.filePath}`);
111
- }
112
- const decorators = collectDecoratorNames(args.classDecorators, args.properties);
113
- let content = `@model()`;
114
- for (const decorator of args.classDecorators || []) {
115
- content += `\n${formatDecorator(decorator)}`;
116
- }
117
- const properties = (args.properties || [])
118
- .map(addPropertyBlock)
119
- .join("\n\n");
120
- content += `\nexport class ${args.className} {\n${properties ? `${properties}\n` : ""}}\n`;
121
- content = ensureImport(content, args.importsFrom, decorators);
122
- writeIfChanged(args.filePath, content);
123
- return { filePath: args.filePath };
124
- },
125
- },
126
- addAttributeTool: {
127
- name: "add-attribute",
128
- description: "Add a decorated attribute to an existing model",
129
- execute: async (args) => {
130
- if (!fs.existsSync(args.filePath)) {
131
- throw new Error(`Model file not found at ${args.filePath}`);
132
- }
133
- let content = fs.readFileSync(args.filePath, "utf8");
134
- if (content.includes(`${args.attribute.name}:`)) {
135
- return { filePath: args.filePath };
136
- }
137
- const decorators = collectDecoratorNames(undefined, [args.attribute]);
138
- content = ensureImport(content, args.importsFrom, decorators);
139
- const insertionPoint = content.lastIndexOf("}");
140
- const block = addPropertyBlock(args.attribute);
141
- const before = content.slice(0, insertionPoint).replace(/\s*$/, "");
142
- const after = content.slice(insertionPoint);
143
- const updated = `${before}\n${block}\n${after}`;
144
- writeIfChanged(args.filePath, updated);
145
- return { filePath: args.filePath };
146
- },
147
- },
148
- removeAttributeTool: {
149
- name: "remove-attribute",
150
- description: "Remove an attribute from a model class",
151
- execute: async (args) => {
152
- if (!fs.existsSync(args.filePath))
153
- return { filePath: args.filePath };
154
- const content = fs.readFileSync(args.filePath, "utf8");
155
- const updated = removePropertyBlock(content, args.attributeName);
156
- writeIfChanged(args.filePath, updated);
157
- return { filePath: args.filePath };
158
- },
159
- },
160
- applyDecoratorTool: {
161
- name: "apply-decorator",
162
- description: "Apply a decorator to a class or property",
163
- execute: async (args) => {
164
- if (!fs.existsSync(args.filePath)) {
165
- throw new Error(`Model file not found at ${args.filePath}`);
166
- }
167
- let content = fs.readFileSync(args.filePath, "utf8");
168
- const decorators = new Set([args.decorator.name]);
169
- content = ensureImport(content, args.importsFrom, decorators);
170
- content = insertDecorator(content, args.decorator, args.target);
171
- writeIfChanged(args.filePath, content);
172
- return { filePath: args.filePath };
173
- },
174
- },
175
- removeDecoratorTool: {
176
- name: "remove-decorator",
177
- description: "Remove a decorator from a class or property",
178
- execute: async (args) => {
179
- if (!fs.existsSync(args.filePath))
180
- return { filePath: args.filePath };
181
- let content = fs.readFileSync(args.filePath, "utf8");
182
- content = removeDecorator(content, args.decoratorName, args.target);
183
- writeIfChanged(args.filePath, content);
184
- return { filePath: args.filePath };
185
- },
186
- },
187
- scaffoldValidatorTool: {
188
- name: "scaffold-validator",
189
- description: "Scaffold a validator class and optional decorator",
190
- execute: async (args) => {
191
- const classFile = path.join(args.validatorsDir, `${args.name}.ts`);
192
- ensureDirectory(classFile);
193
- const classContent = `export class ${args.name} {\n validate(value: unknown): boolean {\n return value !== undefined;\n }\n}\n`;
194
- fs.writeFileSync(classFile, classContent);
195
- let decoratorFile;
196
- if (args.decoratorDir) {
197
- decoratorFile = path.join(args.decoratorDir, `${args.name}Decorator.ts`);
198
- ensureDirectory(decoratorFile);
199
- fs.writeFileSync(decoratorFile, `export function ${args.name}Decorator() {\n return () => void 0;\n}\n`);
200
- }
201
- return { classFile, decoratorFile };
202
- },
203
- },
204
- scaffoldSerializerTool: {
205
- name: "scaffold-serializer",
206
- description: "Scaffold a serializer class and optional registry",
207
- execute: async (args) => {
208
- const classFile = path.join(args.dir, `${args.name}.ts`);
209
- ensureDirectory(classFile);
210
- fs.writeFileSync(classFile, `export class ${args.name} {\n serialize(value: unknown): string {\n return JSON.stringify(value);\n }\n}\n`);
211
- let registerFile;
212
- if (args.registerDir) {
213
- registerFile = path.join(args.registerDir, `${args.name}Register.ts`);
214
- ensureDirectory(registerFile);
215
- fs.writeFileSync(registerFile, `export function register${args.name}() {\n return ${args.setDefault ? "'default'" : "'optional'"};\n}\n`);
216
- }
217
- return { classFile, registerFile };
218
- },
219
- },
220
- scaffoldHashingTool: {
221
- name: "scaffold-hashing",
222
- description: "Scaffold a hashing function and optional registry",
223
- execute: async (args) => {
224
- const functionFile = path.join(args.dir, `${args.name}.ts`);
225
- ensureDirectory(functionFile);
226
- fs.writeFileSync(functionFile, `export function ${args.name}(value: string): string {\n return value.split('').reverse().join('');\n}\n`);
227
- let registerFile;
228
- if (args.registerDir) {
229
- registerFile = path.join(args.registerDir, `${args.name}Register.ts`);
230
- ensureDirectory(registerFile);
231
- fs.writeFileSync(registerFile, `export function register${args.name}() {\n return ${args.setDefault ? "'default'" : "'optional'"};\n}\n`);
232
- }
233
- return { functionFile, registerFile };
234
- },
235
- },
236
- };
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9yLXRvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21jcC9kZWNvcmF0b3ItdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQWF4QixTQUFTLFlBQVksQ0FBQyxLQUFhO0lBQ2pDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsSUFBbUI7SUFDMUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUcsQ0FBQztBQUNsQyxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsUUFBZ0I7SUFDdkMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUVELFNBQVMscUJBQXFCLENBQzVCLGVBQTRDLEVBQzVDLFVBQXVDO0lBRXZDLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDaEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQixLQUFLLE1BQU0sU0FBUyxJQUFJLGVBQWUsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUM5QyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixD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MkJBQTJCLElBQUksQ0FBQyxJQUFJLGtCQUFrQixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFlBQVksUUFBUSxDQUMzRyxDQUFDO1lBQ0osQ0FBQztZQUNELE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLENBQUM7UUFDeEMsQ0FBQztLQUNGO0NBQ08sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmV4cG9ydCB0eXBlIERlY29yYXRvclNwZWMgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgYXJncz86IHVua25vd25bXTtcbn07XG5cbmV4cG9ydCB0eXBlIEF0dHJpYnV0ZVNwZWMgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBkZWNvcmF0b3JzPzogRGVjb3JhdG9yU3BlY1tdO1xufTtcblxuZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHZhbHVlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCBcIlxcXFwkJlwiKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0RGVjb3JhdG9yKHNwZWM6IERlY29yYXRvclNwZWMpOiBzdHJpbmcge1xuICBjb25zdCBhcmdzID0gKHNwZWMuYXJncyB8fCBbXSkubWFwKChhcmcpID0+IEpTT04uc3RyaW5naWZ5KGFyZykpLmpvaW4oXCIsIFwiKTtcbiAgcmV0dXJuIGBAJHtzcGVjLm5hbWV9KCR7YXJnc30pYDtcbn1cblxuZnVuY3Rpb24gZW5zdXJlRGlyZWN0b3J5KGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgZnMubWtkaXJTeW5jKHBhdGguZGlybmFtZShmaWxlUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xufVxuXG5mdW5jdGlvbiBjb2xsZWN0RGVjb3JhdG9yTmFtZXMoXG4gIGNsYXNzRGVjb3JhdG9yczogRGVjb3JhdG9yU3BlY1tdIHwgdW5kZWZpbmVkLFxuICBwcm9wZXJ0aWVzOiBBdHRyaWJ1dGVTcGVjW10gfCB1bmRlZmluZWRcbikge1xuICBjb25zdCBuYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBuYW1lcy5hZGQoXCJtb2RlbFwiKTtcbiAgZm9yIChjb25zdCBkZWNvcmF0b3Igb2YgY2xhc3NEZWNvcmF0b3JzIHx8IFtdKSB7XG4gICAgbmFtZXMuYWRkKGRlY29yYXRvci5uYW1lKTtcbiAgfVxuICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXMgfHwgW10pIHtcbiAgICBmb3IgKGNvbnN0IGRlY29yYXRvciBvZiBwcm9wZXJ0eS5kZWNvcmF0b3JzIHx8IFtdKSB7XG4gICAgICBuYW1lcy5hZGQoZGVjb3JhdG9yLm5hbWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmFtZXM7XG59XG5cbmZ1bmN0aW9uIGVuc3VyZUltcG9ydChcbiAgY29udGVudDogc3RyaW5nLFxuICBpbXBvcnRzRnJvbTogc3RyaW5nLFxuICBkZWNvcmF0b3JzOiBTZXQ8c3RyaW5nPlxuKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmICghZGVjb3JhdG9ycy5zaXplKSByZXR1cm4gY29udGVudDtcbiAgY29uc3QgaW1wb3J0UmVnZXggPSBuZXcgUmVnRXhwKFxuICAgIGBpbXBvcnRcXFxccytcXFxceyhbXn1dKylcXFxcfVxcXFxzK2Zyb21cXFxccytbXCInXSR7ZXNjYXBlUmVnRXhwKGltcG9ydHNGcm9tKX1bXCInXTtgXG4gICk7XG4gIGNvbnN0IG1hdGNoID0gY29udGVudC5tYXRjaChpbXBvcnRSZWdleCk7XG4gIGNvbnN0IHNvcnRlZCA9IEFycmF5LmZyb20oZGVjb3JhdG9ycykuc29ydCgpO1xuXG4gIGlmIChtYXRjaCkge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gbWF0Y2hbMV1cbiAgICAgIC5zcGxpdChcIixcIilcbiAgICAgIC5tYXAoKG5hbWUpID0+IG5hbWUudHJpbSgpKVxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgICBjb25zdCBtZXJnZWQgPSBBcnJheS5mcm9tKG5ldyBTZXQoWy4uLmV4aXN0aW5nLCAuLi5zb3J0ZWRdKSkuc29ydCgpO1xuICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoXG4gICAgICBpbXBvcnRSZWdleCxcbiAgICAgIGBpbXBvcnQgeyAke21lcmdlZC5qb2luKFwiLCBcIil9IH0gZnJvbSBcIiR7aW1wb3J0c0Zyb219XCI7YFxuICAgICk7XG4gIH1cblxuICBjb25zdCBpbXBvcnRMaW5lID0gYGltcG9ydCB7ICR7c29ydGVkLmpvaW4oXCIsIFwiKX0gfSBmcm9tIFwiJHtpbXBvcnRzRnJvbX1cIjtgO1xuICByZXR1cm4gYCR7aW1wb3J0TGluZX1cXG5cXG4ke2NvbnRlbnR9YDtcbn1cblxuZnVuY3Rpb24gYWRkUHJvcGVydHlCbG9jayhwcm9wZXJ0eTogQXR0cmlidXRlU3BlYykge1xuICBjb25zdCBkZWNvcmF0b3JzID0gKHByb3BlcnR5LmRlY29yYXRvcnMgfHwgW10pXG4gICAgLm1hcChmb3JtYXREZWNvcmF0b3IpXG4gICAgLmpvaW4oXCJcXG4gIFwiKTtcbiAgY29uc3QgZGVjb3JhdG9yQmxvY2sgPSBkZWNvcmF0b3JzID8gYCAgJHtkZWNvcmF0b3JzfVxcbmAgOiBcIlwiO1xuICByZXR1cm4gYCR7ZGVjb3JhdG9yQmxvY2t9ICAke3Byb3BlcnR5Lm5hbWV9OiAke3Byb3BlcnR5LnR5cGV9O2A7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVByb3BlcnR5QmxvY2soY29udGVudDogc3RyaW5nLCBwcm9wZXJ0eU5hbWU6IHN0cmluZykge1xuICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoL1xccj9cXG4vKTtcbiAgY29uc3QgcmVzdWx0OiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgbGluZSA9IGxpbmVzW2ldO1xuICAgIGlmIChcbiAgICAgIGxpbmUudHJpbSgpLnN0YXJ0c1dpdGgoYEBgKSAmJlxuICAgICAgbGluZXNbaSArIDFdPy5pbmNsdWRlcyhgJHtwcm9wZXJ0eU5hbWV9OmApXG4gICAgKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGxpbmUuaW5jbHVkZXMoYCR7cHJvcGVydHlOYW1lfTpgKSkge1xuICAgICAgLy8gc2tpcCB0aGlzIGxpbmUgYW5kIGFueSB0cmFpbGluZyBibGFuayBsaW5lXG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgcmVzdWx0LnB1c2gobGluZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdC5qb2luKFwiXFxuXCIpO1xufVxuXG5mdW5jdGlvbiBpbnNlcnREZWNvcmF0b3IoXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgZGVjb3JhdG9yOiBEZWNvcmF0b3JTcGVjLFxuICB0YXJnZXQ6IHtcbiAgICBraW5kOiBcImNsYXNzXCIgfCBcInByb3BlcnR5XCI7XG4gICAgbmFtZT86IHN0cmluZztcbiAgfVxuKSB7XG4gIGNvbnN0IGRlY29yYXRvckxpbmUgPSBmb3JtYXREZWNvcmF0b3IoZGVjb3JhdG9yKTtcbiAgaWYgKHRhcmdldC5raW5kID09PSBcImNsYXNzXCIpIHtcbiAgICBjb25zdCBjbGFzc1JlZ2V4ID0gLyhleHBvcnRcXHMrY2xhc3NcXHMrW15cXHN7XStcXHMqXFx7KS87XG4gICAgaWYgKGNvbnRlbnQuaW5jbHVkZXMoZGVjb3JhdG9yTGluZSkpIHJldHVybiBjb250ZW50O1xuICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoY2xhc3NSZWdleCwgYCR7ZGVjb3JhdG9yTGluZX1cXG4kMWApO1xuICB9XG4gIGlmICghdGFyZ2V0Lm5hbWUpIHJldHVybiBjb250ZW50O1xuICBjb25zdCBwcm9wZXJ0eVJlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgICBgKF5cXFxccyopKD86QC4qXFxcXG5cXFxcMSkqJHtlc2NhcGVSZWdFeHAodGFyZ2V0Lm5hbWUpfTpgLFxuICAgIFwibVwiXG4gICk7XG4gIGNvbnN0IG1hdGNoID0gcHJvcGVydHlSZWdleC5leGVjKGNvbnRlbnQpO1xuICBpZiAoIW1hdGNoKSByZXR1cm4gY29udGVudDtcbiAgY29uc3QgaW5kZW50ID0gbWF0Y2hbMV0gfHwgXCIgIFwiO1xuICBpZiAoY29udGVudC5pbmNsdWRlcyhgJHtpbmRlbnR9JHtkZWNvcmF0b3JMaW5lfWApKSByZXR1cm4gY29udGVudDtcbiAgcmV0dXJuIChcbiAgICBjb250ZW50LnNsaWNlKDAsIG1hdGNoLmluZGV4KSArXG4gICAgYCR7aW5kZW50fSR7ZGVjb3JhdG9yTGluZX1cXG5gICtcbiAgICBjb250ZW50LnNsaWNlKG1hdGNoLmluZGV4KVxuICApO1xufVxuXG5mdW5jdGlvbiByZW1vdmVEZWNvcmF0b3IoXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgZGVjb3JhdG9yTmFtZTogc3RyaW5nLFxuICB0YXJnZXQ6IHtcbiAgICBraW5kOiBcImNsYXNzXCIgfCBcInByb3BlcnR5XCI7XG4gICAgbmFtZT86IHN0cmluZztcbiAgfVxuKSB7XG4gIGNvbnN0IGRlY29yYXRvclJlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgICBgXlxcXFxzKkAke2VzY2FwZVJlZ0V4cChkZWNvcmF0b3JOYW1lKX1cXFxcKFteKV0qXFxcXClgLFxuICAgIFwibVwiXG4gICk7XG4gIGlmICh0YXJnZXQua2luZCA9PT0gXCJjbGFzc1wiKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZShkZWNvcmF0b3JSZWdleCwgXCJcIik7XG4gIH1cbiAgaWYgKHRhcmdldC5uYW1lKSB7XG4gICAgY29uc3QgcGF0dGVybiA9IG5ldyBSZWdFeHAoXG4gICAgICBgKF5cXFxccypAJHtlc2NhcGVSZWdFeHAoZGVjb3JhdG9yTmFtZSl9XFxcXChbXildKlxcXFwpXFxcXHMqJFxcXFxuKSg/PVxcXFxzKiR7ZXNjYXBlUmVnRXhwKHRhcmdldC5uYW1lKX06KWAsXG4gICAgICBcIm1cIlxuICAgICk7XG4gICAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZShwYXR0ZXJuLCBcIlwiKTtcbiAgfVxuICByZXR1cm4gY29udGVudDtcbn1cblxuZnVuY3Rpb24gd3JpdGVJZkNoYW5nZWQoZmlsZVBhdGg6IHN0cmluZywgY29udGVudDogc3RyaW5nKSB7XG4gIGVuc3VyZURpcmVjdG9yeShmaWxlUGF0aCk7XG4gIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIGNvbnRlbnQpO1xufVxuXG5leHBvcnQgY29uc3QgZGVjb3JhdG9yVG9vbHMgPSB7XG4gIGNyZWF0ZU9yVXBkYXRlTW9kZWxUb29sOiB7XG4gICAgbmFtZTogXCJjcmVhdGUtb3ItdXBkYXRlLW1vZGVsXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQ3JlYXRlIG9yIHVwZGF0ZSBhIHZhbGlkYXRpb24tcmVhZHkgbW9kZWwgY2xhc3NcIixcbiAgICBleGVjdXRlOiBhc3luYyAoYXJnczoge1xuICAgICAgZmlsZVBhdGg6IHN0cmluZztcbiAgICAgIGNsYXNzTmFtZTogc3RyaW5nO1xuICAgICAgY2xhc3NEZWNvcmF0b3JzPzogRGVjb3JhdG9yU3BlY1tdO1xuICAgICAgcHJvcGVydGllczogQXR0cmlidXRlU3BlY1tdO1xuICAgICAgaW1wb3J0c0Zyb206IHN0cmluZztcbiAgICAgIG92ZXJ3cml0ZT86IGJvb2xlYW47XG4gICAgfSkgPT4ge1xuICAgICAgaWYgKCFhcmdzLm92ZXJ3cml0ZSAmJiBmcy5leGlzdHNTeW5jKGFyZ3MuZmlsZVBhdGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRmlsZSBhbHJlYWR5IGV4aXN0cyBhdCAke2FyZ3MuZmlsZVBhdGh9YCk7XG4gICAgICB9XG4gICAgICBjb25zdCBkZWNvcmF0b3JzID0gY29sbGVjdERlY29yYXRvck5hbWVzKFxuICAgICAgICBhcmdzLmNsYXNzRGVjb3JhdG9ycyxcbiAgICAgICAgYXJncy5wcm9wZXJ0aWVzXG4gICAgICApO1xuICAgICAgbGV0IGNvbnRlbnQgPSBgQG1vZGVsKClgO1xuICAgICAgZm9yIChjb25zdCBkZWNvcmF0b3Igb2YgYXJncy5jbGFzc0RlY29yYXRvcnMgfHwgW10pIHtcbiAgICAgICAgY29udGVudCArPSBgXFxuJHtmb3JtYXREZWNvcmF0b3IoZGVjb3JhdG9yKX1gO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJvcGVydGllcyA9IChhcmdzLnByb3BlcnRpZXMgfHwgW10pXG4gICAgICAgIC5tYXAoYWRkUHJvcGVydHlCbG9jaylcbiAgICAgICAgLmpvaW4oXCJcXG5cXG5cIik7XG4gICAgICBjb250ZW50ICs9IGBcXG5leHBvcnQgY2xhc3MgJHthcmdzLmNsYXNzTmFtZX0ge1xcbiR7cHJvcGVydGllcyA/IGAke3Byb3BlcnRpZXN9XFxuYCA6IFwiXCJ9fVxcbmA7XG4gICAgICBjb250ZW50ID0gZW5zdXJlSW1wb3J0KGNvbnRlbnQsIGFyZ3MuaW1wb3J0c0Zyb20sIGRlY29yYXRvcnMpO1xuICAgICAgd3JpdGVJZkNoYW5nZWQoYXJncy5maWxlUGF0aCwgY29udGVudCk7XG4gICAgICByZXR1cm4geyBmaWxlUGF0aDogYXJncy5maWxlUGF0aCB9O1xuICAgIH0sXG4gIH0sXG4gIGFkZEF0dHJpYnV0ZVRvb2w6IHtcbiAgICBuYW1lOiBcImFkZC1hdHRyaWJ1dGVcIixcbiAgICBkZXNjcmlwdGlvbjogXCJBZGQgYSBkZWNvcmF0ZWQgYXR0cmlidXRlIHRvIGFuIGV4aXN0aW5nIG1vZGVsXCIsXG4gICAgZXhlY3V0ZTogYXN5bmMgKGFyZ3M6IHtcbiAgICAgIGZpbGVQYXRoOiBzdHJpbmc7XG4gICAgICBjbGFzc05hbWU6IHN0cmluZztcbiAgICAgIGF0dHJpYnV0ZTogQXR0cmlidXRlU3BlYztcbiAgICAgIGltcG9ydHNGcm9tOiBzdHJpbmc7XG4gICAgfSkgPT4ge1xuICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKGFyZ3MuZmlsZVBhdGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTW9kZWwgZmlsZSBub3QgZm91bmQgYXQgJHthcmdzLmZpbGVQYXRofWApO1xuICAgICAgfVxuICAgICAgbGV0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoYXJncy5maWxlUGF0aCwgXCJ1dGY4XCIpO1xuICAgICAgaWYgKGNvbnRlbnQuaW5jbHVkZXMoYCR7YXJncy5hdHRyaWJ1dGUubmFtZX06YCkpIHtcbiAgICAgICAgcmV0dXJuIHsgZmlsZVBhdGg6IGFyZ3MuZmlsZVBhdGggfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRlY29yYXRvcnMgPSBjb2xsZWN0RGVjb3JhdG9yTmFtZXModW5kZWZpbmVkLCBbYXJncy5hdHRyaWJ1dGVdKTtcbiAgICAgIGNvbnRlbnQgPSBlbnN1cmVJbXBvcnQoY29udGVudCwgYXJncy5pbXBvcnRzRnJvbSwgZGVjb3JhdG9ycyk7XG4gICAgICBjb25zdCBpbnNlcnRpb25Qb2ludCA9IGNvbnRlbnQubGFzdEluZGV4T2YoXCJ9XCIpO1xuICAgICAgY29uc3QgYmxvY2sgPSBhZGRQcm9wZXJ0eUJsb2NrKGFyZ3MuYXR0cmlidXRlKTtcbiAgICAgIGNvbnN0IGJlZm9yZSA9IGNvbnRlbnQuc2xpY2UoMCwgaW5zZXJ0aW9uUG9pbnQpLnJlcGxhY2UoL1xccyokLywgXCJcIik7XG4gICAgICBjb25zdCBhZnRlciA9IGNvbnRlbnQuc2xpY2UoaW5zZXJ0aW9uUG9pbnQpO1xuICAgICAgY29uc3QgdXBkYXRlZCA9IGAke2JlZm9yZX1cXG4ke2Jsb2NrfVxcbiR7YWZ0ZXJ9YDtcbiAgICAgIHdyaXRlSWZDaGFuZ2VkKGFyZ3MuZmlsZVBhdGgsIHVwZGF0ZWQpO1xuICAgICAgcmV0dXJuIHsgZmlsZVBhdGg6IGFyZ3MuZmlsZVBhdGggfTtcbiAgICB9LFxuICB9LFxuICByZW1vdmVBdHRyaWJ1dGVUb29sOiB7XG4gICAgbmFtZTogXCJyZW1vdmUtYXR0cmlidXRlXCIsXG4gICAgZGVzY3JpcHRpb246IFwiUmVtb3ZlIGFuIGF0dHJpYnV0ZSBmcm9tIGEgbW9kZWwgY2xhc3NcIixcbiAgICBleGVjdXRlOiBhc3luYyAoYXJnczoge1xuICAgICAgZmlsZVBhdGg6IHN0cmluZztcbiAgICAgIGNsYXNzTmFtZTogc3RyaW5nO1xuICAgICAgYXR0cmlidXRlTmFtZTogc3RyaW5nO1xuICAgIH0pID0+IHtcbiAgICAgIGlmICghZnMuZXhpc3RzU3luYyhhcmdzLmZpbGVQYXRoKSkgcmV0dXJuIHsgZmlsZVBhdGg6IGFyZ3MuZmlsZVBhdGggfTtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoYXJncy5maWxlUGF0aCwgXCJ1dGY4XCIpO1xuICAgICAgY29uc3QgdXBkYXRlZCA9IHJlbW92ZVByb3BlcnR5QmxvY2soY29udGVudCwgYXJncy5hdHRyaWJ1dGVOYW1lKTtcbiAgICAgIHdyaXRlSWZDaGFuZ2VkKGFyZ3MuZmlsZVBhdGgsIHVwZGF0ZWQpO1xuICAgICAgcmV0dXJuIHsgZmlsZVBhdGg6IGFyZ3MuZmlsZVBhdGggfTtcbiAgICB9LFxuICB9LFxuICBhcHBseURlY29yYXRvclRvb2w6IHtcbiAgICBuYW1lOiBcImFwcGx5LWRlY29yYXRvclwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkFwcGx5IGEgZGVjb3JhdG9yIHRvIGEgY2xhc3Mgb3IgcHJvcGVydHlcIixcbiAgICBleGVjdXRlOiBhc3luYyAoYXJnczoge1xuICAgICAgZmlsZVBhdGg6IHN0cmluZztcbiAgICAgIGNsYXNzTmFtZTogc3RyaW5nO1xuICAgICAgdGFyZ2V0OiB7IGtpbmQ6IFwiY2xhc3NcIiB8IFwicHJvcGVydHlcIjsgbmFtZT86IHN0cmluZyB9O1xuICAgICAgZGVjb3JhdG9yOiBEZWNvcmF0b3JTcGVjO1xuICAgICAgaW1wb3J0c0Zyb206IHN0cmluZztcbiAgICB9KSA9PiB7XG4gICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoYXJncy5maWxlUGF0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNb2RlbCBmaWxlIG5vdCBmb3VuZCBhdCAke2FyZ3MuZmlsZVBhdGh9YCk7XG4gICAgICB9XG4gICAgICBsZXQgY29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhhcmdzLmZpbGVQYXRoLCBcInV0ZjhcIik7XG4gICAgICBjb25zdCBkZWNvcmF0b3JzID0gbmV3IFNldDxzdHJpbmc+KFthcmdzLmRlY29yYXRvci5uYW1lXSk7XG4gICAgICBjb250ZW50ID0gZW5zdXJlSW1wb3J0KGNvbnRlbnQsIGFyZ3MuaW1wb3J0c0Zyb20sIGRlY29yYXRvcnMpO1xuICAgICAgY29udGVudCA9IGluc2VydERlY29yYXRvcihjb250ZW50LCBhcmdzLmRlY29yYXRvciwgYXJncy50YXJnZXQpO1xuICAgICAgd3JpdGVJZkNoYW5nZWQoYXJncy5maWxlUGF0aCwgY29udGVudCk7XG4gICAgICByZXR1cm4geyBmaWxlUGF0aDogYXJncy5maWxlUGF0aCB9O1xuICAgIH0sXG4gIH0sXG4gIHJlbW92ZURlY29yYXRvclRvb2w6IHtcbiAgICBuYW1lOiBcInJlbW92ZS1kZWNvcmF0b3JcIixcbiAgICBkZXNjcmlwdGlvbjogXCJSZW1vdmUgYSBkZWNvcmF0b3IgZnJvbSBhIGNsYXNzIG9yIHByb3BlcnR5XCIsXG4gICAgZXhlY3V0ZTogYXN5bmMgKGFyZ3M6IHtcbiAgICAgIGZpbGVQYXRoOiBzdHJpbmc7XG4gICAgICBjbGFzc05hbWU6IHN0cmluZztcbiAgICAgIHRhcmdldDogeyBraW5kOiBcImNsYXNzXCIgfCBcInByb3BlcnR5XCI7IG5hbWU/OiBzdHJpbmcgfTtcbiAgICAgIGRlY29yYXRvck5hbWU6IHN0cmluZztcbiAgICB9KSA9PiB7XG4gICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoYXJncy5maWxlUGF0aCkpIHJldHVybiB7IGZpbGVQYXRoOiBhcmdzLmZpbGVQYXRoIH07XG4gICAgICBsZXQgY29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhhcmdzLmZpbGVQYXRoLCBcInV0ZjhcIik7XG4gICAgICBjb250ZW50ID0gcmVtb3ZlRGVjb3JhdG9yKGNvbnRlbnQsIGFyZ3MuZGVjb3JhdG9yTmFtZSwgYXJncy50YXJnZXQpO1xuICAgICAgd3JpdGVJZkNoYW5nZWQoYXJncy5maWxlUGF0aCwgY29udGVudCk7XG4gICAgICByZXR1cm4geyBmaWxlUGF0aDogYXJncy5maWxlUGF0aCB9O1xuICAgIH0sXG4gIH0sXG4gIHNjYWZmb2xkVmFsaWRhdG9yVG9vbDoge1xuICAgIG5hbWU6IFwic2NhZmZvbGQtdmFsaWRhdG9yXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU2NhZmZvbGQgYSB2YWxpZGF0b3IgY2xhc3MgYW5kIG9wdGlvbmFsIGRlY29yYXRvclwiLFxuICAgIGV4ZWN1dGU6IGFzeW5jIChhcmdzOiB7XG4gICAgICB2YWxpZGF0b3JzRGlyOiBzdHJpbmc7XG4gICAgICBkZWNvcmF0b3JEaXI/OiBzdHJpbmc7XG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgfSkgPT4ge1xuICAgICAgY29uc3QgY2xhc3NGaWxlID0gcGF0aC5qb2luKGFyZ3MudmFsaWRhdG9yc0RpciwgYCR7YXJncy5uYW1lfS50c2ApO1xuICAgICAgZW5zdXJlRGlyZWN0b3J5KGNsYXNzRmlsZSk7XG4gICAgICBjb25zdCBjbGFzc0NvbnRlbnQgPSBgZXhwb3J0IGNsYXNzICR7YXJncy5uYW1lfSB7XFxuICB2YWxpZGF0ZSh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xcbiAgICByZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZDtcXG4gIH1cXG59XFxuYDtcbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoY2xhc3NGaWxlLCBjbGFzc0NvbnRlbnQpO1xuICAgICAgbGV0IGRlY29yYXRvckZpbGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChhcmdzLmRlY29yYXRvckRpcikge1xuICAgICAgICBkZWNvcmF0b3JGaWxlID0gcGF0aC5qb2luKFxuICAgICAgICAgIGFyZ3MuZGVjb3JhdG9yRGlyLFxuICAgICAgICAgIGAke2FyZ3MubmFtZX1EZWNvcmF0b3IudHNgXG4gICAgICAgICk7XG4gICAgICAgIGVuc3VyZURpcmVjdG9yeShkZWNvcmF0b3JGaWxlKTtcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICBkZWNvcmF0b3JGaWxlLFxuICAgICAgICAgIGBleHBvcnQgZnVuY3Rpb24gJHthcmdzLm5hbWV9RGVjb3JhdG9yKCkge1xcbiAgcmV0dXJuICgpID0+IHZvaWQgMDtcXG59XFxuYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgY2xhc3NGaWxlLCBkZWNvcmF0b3JGaWxlIH07XG4gICAgfSxcbiAgfSxcbiAgc2NhZmZvbGRTZXJpYWxpemVyVG9vbDoge1xuICAgIG5hbWU6IFwic2NhZmZvbGQtc2VyaWFsaXplclwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlNjYWZmb2xkIGEgc2VyaWFsaXplciBjbGFzcyBhbmQgb3B0aW9uYWwgcmVnaXN0cnlcIixcbiAgICBleGVjdXRlOiBhc3luYyAoYXJnczoge1xuICAgICAgZGlyOiBzdHJpbmc7XG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICByZWdpc3RlckRpcj86IHN0cmluZztcbiAgICAgIHNldERlZmF1bHQ/OiBib29sZWFuO1xuICAgIH0pID0+IHtcbiAgICAgIGNvbnN0IGNsYXNzRmlsZSA9IHBhdGguam9pbihhcmdzLmRpciwgYCR7YXJncy5uYW1lfS50c2ApO1xuICAgICAgZW5zdXJlRGlyZWN0b3J5KGNsYXNzRmlsZSk7XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICBjbGFzc0ZpbGUsXG4gICAgICAgIGBleHBvcnQgY2xhc3MgJHthcmdzLm5hbWV9IHtcXG4gIHNlcmlhbGl6ZSh2YWx1ZTogdW5rbm93bik6IHN0cmluZyB7XFxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XFxuICB9XFxufVxcbmBcbiAgICAgICk7XG4gICAgICBsZXQgcmVnaXN0ZXJGaWxlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAoYXJncy5yZWdpc3RlckRpcikge1xuICAgICAgICByZWdpc3RlckZpbGUgPSBwYXRoLmpvaW4oYXJncy5yZWdpc3RlckRpciwgYCR7YXJncy5uYW1lfVJlZ2lzdGVyLnRzYCk7XG4gICAgICAgIGVuc3VyZURpcmVjdG9yeShyZWdpc3RlckZpbGUpO1xuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICAgIHJlZ2lzdGVyRmlsZSxcbiAgICAgICAgICBgZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyJHthcmdzLm5hbWV9KCkge1xcbiAgcmV0dXJuICR7YXJncy5zZXREZWZhdWx0ID8gXCInZGVmYXVsdCdcIiA6IFwiJ29wdGlvbmFsJ1wifTtcXG59XFxuYFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgY2xhc3NGaWxlLCByZWdpc3RlckZpbGUgfTtcbiAgICB9LFxuICB9LFxuICBzY2FmZm9sZEhhc2hpbmdUb29sOiB7XG4gICAgbmFtZTogXCJzY2FmZm9sZC1oYXNoaW5nXCIsXG4gICAgZGVzY3JpcHRpb246IFwiU2NhZmZvbGQgYSBoYXNoaW5nIGZ1bmN0aW9uIGFuZCBvcHRpb25hbCByZWdpc3RyeVwiLFxuICAgIGV4ZWN1dGU6IGFzeW5jIChhcmdzOiB7XG4gICAgICBkaXI6IHN0cmluZztcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIHJlZ2lzdGVyRGlyPzogc3RyaW5nO1xuICAgICAgc2V0RGVmYXVsdD86IGJvb2xlYW47XG4gICAgfSkgPT4ge1xuICAgICAgY29uc3QgZnVuY3Rpb25GaWxlID0gcGF0aC5qb2luKGFyZ3MuZGlyLCBgJHthcmdzLm5hbWV9LnRzYCk7XG4gICAgICBlbnN1cmVEaXJlY3RvcnkoZnVuY3Rpb25GaWxlKTtcbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgIGZ1bmN0aW9uRmlsZSxcbiAgICAgICAgYGV4cG9ydCBmdW5jdGlvbiAke2FyZ3MubmFtZX0odmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XFxuICByZXR1cm4gdmFsdWUuc3BsaXQoJycpLnJldmVyc2UoKS5qb2luKCcnKTtcXG59XFxuYFxuICAgICAgKTtcbiAgICAgIGxldCByZWdpc3RlckZpbGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChhcmdzLnJlZ2lzdGVyRGlyKSB7XG4gICAgICAgIHJlZ2lzdGVyRmlsZSA9IHBhdGguam9pbihhcmdzLnJlZ2lzdGVyRGlyLCBgJHthcmdzLm5hbWV9UmVnaXN0ZXIudHNgKTtcbiAgICAgICAgZW5zdXJlRGlyZWN0b3J5KHJlZ2lzdGVyRmlsZSk7XG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgcmVnaXN0ZXJGaWxlLFxuICAgICAgICAgIGBleHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXIke2FyZ3MubmFtZX0oKSB7XFxuICByZXR1cm4gJHthcmdzLnNldERlZmF1bHQgPyBcIidkZWZhdWx0J1wiIDogXCInb3B0aW9uYWwnXCJ9O1xcbn1cXG5gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4geyBmdW5jdGlvbkZpbGUsIHJlZ2lzdGVyRmlsZSB9O1xuICAgIH0sXG4gIH0sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBEZWNvcmF0b3JUb29scyA9IHR5cGVvZiBkZWNvcmF0b3JUb29scztcbiJdfQ==
@@ -1,14 +0,0 @@
1
- export type FastMCPLike = {
2
- addPrompt: (p: any) => void;
3
- addTool: (t: any) => void;
4
- addResource: (r: any) => void;
5
- addResourceTemplate: (t: any) => void;
6
- };
7
- /**
8
- * Aggregate module assets and register them on the provided FastMCP-like server.
9
- * Falls back to built-in lists if aggregation yields none.
10
- */
11
- export declare function EnrichCoreWithAggregation(server: FastMCPLike, repoRoot?: string): Promise<{
12
- modulesChecked: number;
13
- conflicts: import("./aggregateModules").AggregationConflict[];
14
- }>;
@@ -1,56 +0,0 @@
1
- import { aggregateModules } from "./aggregateModules";
2
- import { loadPrompts, promptList } from "./prompts/index";
3
- import { toolList } from "./tools/index";
4
- import { resources } from "./resources/index";
5
- import { buildResourceTemplates } from "./templates/index";
6
- /**
7
- * Aggregate module assets and register them on the provided FastMCP-like server.
8
- * Falls back to built-in lists if aggregation yields none.
9
- */
10
- export async function EnrichCoreWithAggregation(server, repoRoot = process.cwd()) {
11
- // First register built-in prompts/tools/resources/templates (legacy behavior)
12
- try {
13
- loadPrompts();
14
- for (const prompt of promptList)
15
- server.addPrompt(prompt);
16
- }
17
- catch (e) {
18
- // ignore if loadPrompts not available or fails
19
- }
20
- try {
21
- for (const tool of toolList)
22
- server.addTool(tool);
23
- }
24
- catch (e) { }
25
- try {
26
- for (const resource of resources)
27
- server.addResource(resource);
28
- }
29
- catch (e) { }
30
- try {
31
- const templates = buildResourceTemplates();
32
- for (const template of templates)
33
- server.addResourceTemplate(template);
34
- }
35
- catch (e) { }
36
- // Now aggregate modules and register aggregated assets with provenance
37
- const agg = await aggregateModules(repoRoot);
38
- for (const p of agg.prompts) {
39
- server.addPrompt(p);
40
- }
41
- for (const t of agg.tools) {
42
- server.addTool(t);
43
- }
44
- for (const r of agg.resources) {
45
- server.addResource(r);
46
- }
47
- for (const tpl of agg.templates) {
48
- server.addResourceTemplate(tpl);
49
- }
50
- // return aggregation summary for calling tests/CI
51
- return {
52
- modulesChecked: agg.prompts.concat(agg.tools).length,
53
- conflicts: agg.conflicts,
54
- };
55
- }
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFzdG1jcC13aXJpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWNwL2Zhc3RtY3Atd2lyaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFTM0Q7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSx5QkFBeUIsQ0FDN0MsTUFBbUIsRUFDbkIsUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFFeEIsOEVBQThFO0lBQzlFLElBQUksQ0FBQztRQUNILFdBQVcsRUFBRSxDQUFDO1FBQ2QsS0FBSyxNQUFNLE1BQU0sSUFBSSxVQUFVO1lBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFhLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLCtDQUErQztJQUNqRCxDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsS0FBSyxNQUFNLElBQUksSUFBSSxRQUFRO1lBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFXLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUM7SUFFZCxJQUFJLENBQUM7UUFDSCxLQUFLLE1BQU0sUUFBUSxJQUFJLFNBQVM7WUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQztJQUVkLElBQUksQ0FBQztRQUNILE1BQU0sU0FBUyxHQUFHLHNCQUFzQixFQUFFLENBQUM7UUFDM0MsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTO1lBQzlCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFlLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUM7SUFFZCx1RUFBdUU7SUFDdkUsTUFBTSxHQUFHLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU3QyxLQUFLLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM1QixNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxQixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM5QixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxLQUFLLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGtEQUFrRDtJQUNsRCxPQUFPO1FBQ0wsY0FBYyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNO1FBQ3BELFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUztLQUN6QixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFnZ3JlZ2F0ZU1vZHVsZXMgfSBmcm9tIFwiLi9hZ2dyZWdhdGVNb2R1bGVzXCI7XG5pbXBvcnQgeyBsb2FkUHJvbXB0cywgcHJvbXB0TGlzdCB9IGZyb20gXCIuL3Byb21wdHMvaW5kZXhcIjtcbmltcG9ydCB7IHRvb2xMaXN0IH0gZnJvbSBcIi4vdG9vbHMvaW5kZXhcIjtcbmltcG9ydCB7IHJlc291cmNlcyB9IGZyb20gXCIuL3Jlc291cmNlcy9pbmRleFwiO1xuaW1wb3J0IHsgYnVpbGRSZXNvdXJjZVRlbXBsYXRlcyB9IGZyb20gXCIuL3RlbXBsYXRlcy9pbmRleFwiO1xuXG5leHBvcnQgdHlwZSBGYXN0TUNQTGlrZSA9IHtcbiAgYWRkUHJvbXB0OiAocDogYW55KSA9PiB2b2lkO1xuICBhZGRUb29sOiAodDogYW55KSA9PiB2b2lkO1xuICBhZGRSZXNvdXJjZTogKHI6IGFueSkgPT4gdm9pZDtcbiAgYWRkUmVzb3VyY2VUZW1wbGF0ZTogKHQ6IGFueSkgPT4gdm9pZDtcbn07XG5cbi8qKlxuICogQWdncmVnYXRlIG1vZHVsZSBhc3NldHMgYW5kIHJlZ2lzdGVyIHRoZW0gb24gdGhlIHByb3ZpZGVkIEZhc3RNQ1AtbGlrZSBzZXJ2ZXIuXG4gKiBGYWxscyBiYWNrIHRvIGJ1aWx0LWluIGxpc3RzIGlmIGFnZ3JlZ2F0aW9uIHlpZWxkcyBub25lLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gRW5yaWNoQ29yZVdpdGhBZ2dyZWdhdGlvbihcbiAgc2VydmVyOiBGYXN0TUNQTGlrZSxcbiAgcmVwb1Jvb3QgPSBwcm9jZXNzLmN3ZCgpXG4pIHtcbiAgLy8gRmlyc3QgcmVnaXN0ZXIgYnVpbHQtaW4gcHJvbXB0cy90b29scy9yZXNvdXJjZXMvdGVtcGxhdGVzIChsZWdhY3kgYmVoYXZpb3IpXG4gIHRyeSB7XG4gICAgbG9hZFByb21wdHMoKTtcbiAgICBmb3IgKGNvbnN0IHByb21wdCBvZiBwcm9tcHRMaXN0KSBzZXJ2ZXIuYWRkUHJvbXB0KHByb21wdCBhcyBhbnkpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gaWdub3JlIGlmIGxvYWRQcm9tcHRzIG5vdCBhdmFpbGFibGUgb3IgZmFpbHNcbiAgfVxuXG4gIHRyeSB7XG4gICAgZm9yIChjb25zdCB0b29sIG9mIHRvb2xMaXN0KSBzZXJ2ZXIuYWRkVG9vbCh0b29sIGFzIGFueSk7XG4gIH0gY2F0Y2ggKGUpIHt9XG5cbiAgdHJ5IHtcbiAgICBmb3IgKGNvbnN0IHJlc291cmNlIG9mIHJlc291cmNlcykgc2VydmVyLmFkZFJlc291cmNlKHJlc291cmNlIGFzIGFueSk7XG4gIH0gY2F0Y2ggKGUpIHt9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCB0ZW1wbGF0ZXMgPSBidWlsZFJlc291cmNlVGVtcGxhdGVzKCk7XG4gICAgZm9yIChjb25zdCB0ZW1wbGF0ZSBvZiB0ZW1wbGF0ZXMpXG4gICAgICBzZXJ2ZXIuYWRkUmVzb3VyY2VUZW1wbGF0ZSh0ZW1wbGF0ZSBhcyBhbnkpO1xuICB9IGNhdGNoIChlKSB7fVxuXG4gIC8vIE5vdyBhZ2dyZWdhdGUgbW9kdWxlcyBhbmQgcmVnaXN0ZXIgYWdncmVnYXRlZCBhc3NldHMgd2l0aCBwcm92ZW5hbmNlXG4gIGNvbnN0IGFnZyA9IGF3YWl0IGFnZ3JlZ2F0ZU1vZHVsZXMocmVwb1Jvb3QpO1xuXG4gIGZvciAoY29uc3QgcCBvZiBhZ2cucHJvbXB0cykge1xuICAgIHNlcnZlci5hZGRQcm9tcHQocCk7XG4gIH1cbiAgZm9yIChjb25zdCB0IG9mIGFnZy50b29scykge1xuICAgIHNlcnZlci5hZGRUb29sKHQpO1xuICB9XG4gIGZvciAoY29uc3QgciBvZiBhZ2cucmVzb3VyY2VzKSB7XG4gICAgc2VydmVyLmFkZFJlc291cmNlKHIpO1xuICB9XG4gIGZvciAoY29uc3QgdHBsIG9mIGFnZy50ZW1wbGF0ZXMpIHtcbiAgICBzZXJ2ZXIuYWRkUmVzb3VyY2VUZW1wbGF0ZSh0cGwpO1xuICB9XG5cbiAgLy8gcmV0dXJuIGFnZ3JlZ2F0aW9uIHN1bW1hcnkgZm9yIGNhbGxpbmcgdGVzdHMvQ0lcbiAgcmV0dXJuIHtcbiAgICBtb2R1bGVzQ2hlY2tlZDogYWdnLnByb21wdHMuY29uY2F0KGFnZy50b29scykubGVuZ3RoLFxuICAgIGNvbmZsaWN0czogYWdnLmNvbmZsaWN0cyxcbiAgfTtcbn1cbiJdfQ==
@@ -1,9 +0,0 @@
1
- import { FastMCP } from "fastmcp";
2
- export * from "./mcp-module";
3
- export { default } from "./mcp-module";
4
- export { validateModules } from "./validation";
5
- export { aggregateModules, aggregateModulesSync } from "./aggregateModules";
6
- export { EnrichCoreWithAggregation } from "./fastmcp-wiring";
7
- export { buildDocPrompts } from "./prompts/index";
8
- export { buildResourceTemplates } from "./templates/index";
9
- export declare function EnrichCore(server: FastMCP): void;
@@ -1,29 +0,0 @@
1
- import { loadPrompts, promptList } from "./prompts/index";
2
- import { toolList } from "./tools/index";
3
- import { resources } from "./resources/index";
4
- import { buildResourceTemplates } from "./templates/index";
5
- export * from "./mcp-module";
6
- export { default } from "./mcp-module";
7
- export { validateModules } from "./validation";
8
- export { aggregateModules, aggregateModulesSync } from "./aggregateModules";
9
- export { EnrichCoreWithAggregation } from "./fastmcp-wiring";
10
- // re-export helpers used by tests and other modules
11
- export { buildDocPrompts } from "./prompts/index";
12
- export { buildResourceTemplates } from "./templates/index";
13
- export function EnrichCore(server) {
14
- loadPrompts();
15
- for (const prompt of promptList) {
16
- server.addPrompt(prompt);
17
- }
18
- for (const tool of toolList) {
19
- server.addTool(tool);
20
- }
21
- for (const resource of resources) {
22
- server.addResource(resource);
23
- }
24
- const templates = buildResourceTemplates();
25
- for (const template of templates) {
26
- server.addResourceTemplate(template);
27
- }
28
- }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWNwL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFM0QsY0FBYyxjQUFjLENBQUM7QUFDN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTdELG9EQUFvRDtBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFM0QsTUFBTSxVQUFVLFVBQVUsQ0FBQyxNQUFlO0lBQ3hDLFdBQVcsRUFBRSxDQUFDO0lBQ2QsS0FBSyxNQUFNLE1BQU0sSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNoQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQWEsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxLQUFLLE1BQU0sSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzVCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBVyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELEtBQUssTUFBTSxRQUFRLElBQUksU0FBUyxFQUFFLENBQUM7UUFDakMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFlLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsTUFBTSxTQUFTLEdBQUcsc0JBQXNCLEVBQUUsQ0FBQztJQUMzQyxLQUFLLE1BQU0sUUFBUSxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFlLENBQUMsQ0FBQztJQUM5QyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhc3RNQ1AgfSBmcm9tIFwiZmFzdG1jcFwiO1xuaW1wb3J0IHsgbG9hZFByb21wdHMsIHByb21wdExpc3QgfSBmcm9tIFwiLi9wcm9tcHRzL2luZGV4XCI7XG5pbXBvcnQgeyB0b29sTGlzdCB9IGZyb20gXCIuL3Rvb2xzL2luZGV4XCI7XG5pbXBvcnQgeyByZXNvdXJjZXMgfSBmcm9tIFwiLi9yZXNvdXJjZXMvaW5kZXhcIjtcbmltcG9ydCB7IGJ1aWxkUmVzb3VyY2VUZW1wbGF0ZXMgfSBmcm9tIFwiLi90ZW1wbGF0ZXMvaW5kZXhcIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vbWNwLW1vZHVsZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCB9IGZyb20gXCIuL21jcC1tb2R1bGVcIjtcblxuZXhwb3J0IHsgdmFsaWRhdGVNb2R1bGVzIH0gZnJvbSBcIi4vdmFsaWRhdGlvblwiO1xuZXhwb3J0IHsgYWdncmVnYXRlTW9kdWxlcywgYWdncmVnYXRlTW9kdWxlc1N5bmMgfSBmcm9tIFwiLi9hZ2dyZWdhdGVNb2R1bGVzXCI7XG5leHBvcnQgeyBFbnJpY2hDb3JlV2l0aEFnZ3JlZ2F0aW9uIH0gZnJvbSBcIi4vZmFzdG1jcC13aXJpbmdcIjtcblxuLy8gcmUtZXhwb3J0IGhlbHBlcnMgdXNlZCBieSB0ZXN0cyBhbmQgb3RoZXIgbW9kdWxlc1xuZXhwb3J0IHsgYnVpbGREb2NQcm9tcHRzIH0gZnJvbSBcIi4vcHJvbXB0cy9pbmRleFwiO1xuZXhwb3J0IHsgYnVpbGRSZXNvdXJjZVRlbXBsYXRlcyB9IGZyb20gXCIuL3RlbXBsYXRlcy9pbmRleFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gRW5yaWNoQ29yZShzZXJ2ZXI6IEZhc3RNQ1ApIHtcbiAgbG9hZFByb21wdHMoKTtcbiAgZm9yIChjb25zdCBwcm9tcHQgb2YgcHJvbXB0TGlzdCkge1xuICAgIHNlcnZlci5hZGRQcm9tcHQocHJvbXB0IGFzIGFueSk7XG4gIH1cbiAgZm9yIChjb25zdCB0b29sIG9mIHRvb2xMaXN0KSB7XG4gICAgc2VydmVyLmFkZFRvb2wodG9vbCBhcyBhbnkpO1xuICB9XG4gIGZvciAoY29uc3QgcmVzb3VyY2Ugb2YgcmVzb3VyY2VzKSB7XG4gICAgc2VydmVyLmFkZFJlc291cmNlKHJlc291cmNlIGFzIGFueSk7XG4gIH1cbiAgY29uc3QgdGVtcGxhdGVzID0gYnVpbGRSZXNvdXJjZVRlbXBsYXRlcygpO1xuICBmb3IgKGNvbnN0IHRlbXBsYXRlIG9mIHRlbXBsYXRlcykge1xuICAgIHNlcnZlci5hZGRSZXNvdXJjZVRlbXBsYXRlKHRlbXBsYXRlIGFzIGFueSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,11 +0,0 @@
1
- import type { FastMCP } from "fastmcp";
2
- import { promptList } from "./prompts";
3
- import { resources } from "./resources";
4
- import { buildDecorationResourceTemplates, buildResourceTemplates, decorationResourceTemplates, templateList, workspaceResourceTemplates } from "./templates";
5
- import { toolList, tools } from "./tools";
6
- import { __resetWorkspaceRoot, getWorkspaceRoot, setWorkspaceRoot } from "./workspace";
7
- export declare function enrich(mcp: FastMCP): FastMCP;
8
- export default enrich;
9
- export declare const PACKAGE_NAME = "##PACKAGE_NAME##";
10
- export declare const VERSION = "0.4.1";
11
- export { tools, toolList, buildDecorationResourceTemplates, buildResourceTemplates, decorationResourceTemplates, promptList, resources, templateList, workspaceResourceTemplates, getWorkspaceRoot, setWorkspaceRoot, __resetWorkspaceRoot, };
@@ -1,31 +0,0 @@
1
- import { PACKAGE_NAME as PKG, VERSION as V } from "../metadata";
2
- import { loadPrompts, promptList } from "./prompts";
3
- import { resources } from "./resources";
4
- import { buildDecorationResourceTemplates, buildResourceTemplates, decorationResourceTemplates, templateList, workspaceResourceTemplates, } from "./templates";
5
- import { toolList, tools } from "./tools";
6
- import { __resetWorkspaceRoot, getWorkspaceRoot, setWorkspaceRoot, } from "./workspace";
7
- export function enrich(mcp) {
8
- const promptEntries = loadPrompts();
9
- for (const prompt of promptEntries) {
10
- mcp.addPrompt(prompt);
11
- }
12
- for (const tool of toolList) {
13
- mcp.addTool(tool);
14
- }
15
- const templates = buildResourceTemplates();
16
- for (const template of templates) {
17
- mcp.addResourceTemplate(template);
18
- }
19
- for (const resource of resources) {
20
- const addResource = mcp.addResource;
21
- if (typeof addResource === "function") {
22
- addResource.call(mcp, resource);
23
- }
24
- }
25
- return mcp;
26
- }
27
- export default enrich;
28
- export const PACKAGE_NAME = PKG;
29
- export const VERSION = V;
30
- export { tools, toolList, buildDecorationResourceTemplates, buildResourceTemplates, decorationResourceTemplates, promptList, resources, templateList, workspaceResourceTemplates, getWorkspaceRoot, setWorkspaceRoot, __resetWorkspaceRoot, };
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWNwLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tY3AvbWNwLW1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxJQUFJLEdBQUcsRUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDeEMsT0FBTyxFQUNMLGdDQUFnQyxFQUNoQyxzQkFBc0IsRUFDdEIsMkJBQTJCLEVBQzNCLFlBQVksRUFDWiwwQkFBMEIsR0FDM0IsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDMUMsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEdBQ2pCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE1BQU0sVUFBVSxNQUFNLENBQUMsR0FBWTtJQUNqQyxNQUFNLGFBQWEsR0FBRyxXQUFXLEVBQUUsQ0FBQztJQUNwQyxLQUFLLE1BQU0sTUFBTSxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQ25DLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBYSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7UUFDNUIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFXLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsc0JBQXNCLEVBQUUsQ0FBQztJQUMzQyxLQUFLLE1BQU0sUUFBUSxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2pDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxRQUFlLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFdBQVcsR0FDZixHQUNELENBQUMsV0FBVyxDQUFDO1FBQ2QsSUFBSSxPQUFPLFdBQVcsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN0QyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFlLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELGVBQWUsTUFBTSxDQUFDO0FBQ3RCLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUM7QUFDaEMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQztBQUV6QixPQUFPLEVBQ0wsS0FBSyxFQUNMLFFBQVEsRUFDUixnQ0FBZ0MsRUFDaEMsc0JBQXNCLEVBQ3RCLDJCQUEyQixFQUMzQixVQUFVLEVBQ1YsU0FBUyxFQUNULFlBQVksRUFDWiwwQkFBMEIsRUFDMUIsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixvQkFBb0IsR0FDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmFzdE1DUCB9IGZyb20gXCJmYXN0bWNwXCI7XG5pbXBvcnQgeyBQQUNLQUdFX05BTUUgYXMgUEtHLCBWRVJTSU9OIGFzIFYgfSBmcm9tIFwiLi4vbWV0YWRhdGFcIjtcbmltcG9ydCB7IGxvYWRQcm9tcHRzLCBwcm9tcHRMaXN0IH0gZnJvbSBcIi4vcHJvbXB0c1wiO1xuaW1wb3J0IHsgcmVzb3VyY2VzIH0gZnJvbSBcIi4vcmVzb3VyY2VzXCI7XG5pbXBvcnQge1xuICBidWlsZERlY29yYXRpb25SZXNvdXJjZVRlbXBsYXRlcyxcbiAgYnVpbGRSZXNvdXJjZVRlbXBsYXRlcyxcbiAgZGVjb3JhdGlvblJlc291cmNlVGVtcGxhdGVzLFxuICB0ZW1wbGF0ZUxpc3QsXG4gIHdvcmtzcGFjZVJlc291cmNlVGVtcGxhdGVzLFxufSBmcm9tIFwiLi90ZW1wbGF0ZXNcIjtcbmltcG9ydCB7IHRvb2xMaXN0LCB0b29scyB9IGZyb20gXCIuL3Rvb2xzXCI7XG5pbXBvcnQge1xuICBfX3Jlc2V0V29ya3NwYWNlUm9vdCxcbiAgZ2V0V29ya3NwYWNlUm9vdCxcbiAgc2V0V29ya3NwYWNlUm9vdCxcbn0gZnJvbSBcIi4vd29ya3NwYWNlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnJpY2gobWNwOiBGYXN0TUNQKTogRmFzdE1DUCB7XG4gIGNvbnN0IHByb21wdEVudHJpZXMgPSBsb2FkUHJvbXB0cygpO1xuICBmb3IgKGNvbnN0IHByb21wdCBvZiBwcm9tcHRFbnRyaWVzKSB7XG4gICAgbWNwLmFkZFByb21wdChwcm9tcHQgYXMgYW55KTtcbiAgfVxuXG4gIGZvciAoY29uc3QgdG9vbCBvZiB0b29sTGlzdCkge1xuICAgIG1jcC5hZGRUb29sKHRvb2wgYXMgYW55KTtcbiAgfVxuXG4gIGNvbnN0IHRlbXBsYXRlcyA9IGJ1aWxkUmVzb3VyY2VUZW1wbGF0ZXMoKTtcbiAgZm9yIChjb25zdCB0ZW1wbGF0ZSBvZiB0ZW1wbGF0ZXMpIHtcbiAgICBtY3AuYWRkUmVzb3VyY2VUZW1wbGF0ZSh0ZW1wbGF0ZSBhcyBhbnkpO1xuICB9XG5cbiAgZm9yIChjb25zdCByZXNvdXJjZSBvZiByZXNvdXJjZXMpIHtcbiAgICBjb25zdCBhZGRSZXNvdXJjZSA9IChcbiAgICAgIG1jcCBhcyB1bmtub3duIGFzIHsgYWRkUmVzb3VyY2U/OiAocmVzOiB1bmtub3duKSA9PiB2b2lkIH1cbiAgICApLmFkZFJlc291cmNlO1xuICAgIGlmICh0eXBlb2YgYWRkUmVzb3VyY2UgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgYWRkUmVzb3VyY2UuY2FsbChtY3AsIHJlc291cmNlIGFzIGFueSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1jcDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZW5yaWNoO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfTkFNRSA9IFBLRztcbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gVjtcblxuZXhwb3J0IHtcbiAgdG9vbHMsXG4gIHRvb2xMaXN0LFxuICBidWlsZERlY29yYXRpb25SZXNvdXJjZVRlbXBsYXRlcyxcbiAgYnVpbGRSZXNvdXJjZVRlbXBsYXRlcyxcbiAgZGVjb3JhdGlvblJlc291cmNlVGVtcGxhdGVzLFxuICBwcm9tcHRMaXN0LFxuICByZXNvdXJjZXMsXG4gIHRlbXBsYXRlTGlzdCxcbiAgd29ya3NwYWNlUmVzb3VyY2VUZW1wbGF0ZXMsXG4gIGdldFdvcmtzcGFjZVJvb3QsXG4gIHNldFdvcmtzcGFjZVJvb3QsXG4gIF9fcmVzZXRXb3Jrc3BhY2VSb290LFxufTtcbiJdfQ==
@@ -1,14 +0,0 @@
1
- import type { ModuleExportPackage, PromptAsset, ResourceAsset, TemplateAsset, ToolAsset } from "../types";
2
- export declare class ModuleRegistry {
3
- private packages;
4
- constructor(packages?: ModuleExportPackage[]);
5
- setPackages(pkgs: ModuleExportPackage[]): void;
6
- listPackages(): ModuleExportPackage[];
7
- listPrompts(): PromptAsset[];
8
- listResources(): ResourceAsset[];
9
- listTemplates(): TemplateAsset[];
10
- listTools(): ToolAsset[];
11
- private collectAssets;
12
- }
13
- export declare const moduleRegistry: ModuleRegistry;
14
- export declare function registerModulePackages(pkgs: ModuleExportPackage[]): void;