@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
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FileSummarizer = void 0;
4
+ const tool_builder_1 = require("./../../builders/tool-builder.cjs");
5
+ const zod_1 = require("zod");
6
+ const constants_1 = require("./../../constants.cjs");
7
+ const index_1 = require("./../ast-jsdoc-tools/index.cjs");
8
+ exports.FileSummarizer = tool_builder_1.ToolBuilder.builder
9
+ .setName("file.summarizer")
10
+ .setTitle("File Summarizer")
11
+ .setDescription("Produce a short structured summary for a TypeScript file.")
12
+ .setInputSchema(zod_1.z.object({ filePath: zod_1.z.string() }))
13
+ .setCb(async (args, _extra) => {
14
+ const filePath = args?.filePath ?? args?.path;
15
+ if (!filePath)
16
+ return { content: [{ type: "text", text: "" }] };
17
+ const res = await (0, index_1.analyzeFile)(filePath).catch(() => null);
18
+ const objects = (res && res.astObjects) || [];
19
+ const names = objects.map((o) => o.name || o.id || o.kind).slice(0, 20);
20
+ const summary = `Found ${objects.length} AST objects. Top names: ${names.join(", ")}`;
21
+ return {
22
+ // Text content for readability
23
+ content: [{ type: "text", text: summary }],
24
+ // Structured content matching the declared outputSchema: { summary: string }
25
+ structuredContent: { summary },
26
+ _meta: { count: objects.length },
27
+ };
28
+ })
29
+ .setReasoning(constants_1.ReasoningLevel.NONE)
30
+ .setEffort(constants_1.EffortLevel.NONE)
31
+ .setCost(constants_1.Cost.FREE);
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,2 @@
1
+ import { ToolBuilder } from "../../builders/tool-builder";
2
+ export declare const FileSummarizer: ToolBuilder;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/file-summarizer/index.ts"],"names":[],"mappings":";;;AAAA,oEAA0D;AAC1D,6BAAwB;AACxB,qDAAoE;AAMpE,0DAAuD;AAE1C,QAAA,cAAc,GAAG,0BAAW,CAAC,OAAO;KAC9C,OAAO,CAAC,iBAAiB,CAAC;KAC1B,QAAQ,CAAC,iBAAiB,CAAC;KAC3B,cAAc,CAAC,2DAA2D,CAAC;KAC3E,cAAc,CAAC,OAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;KAClD,KAAK,CACJ,KAAK,EACH,IAAS,EACT,MAA8D,EAC9D,EAAE;IACF,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,IAAI,EAAE,IAAI,CAAC;IAC9C,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAS,CAAC;IACvE,MAAM,GAAG,GAAQ,MAAM,IAAA,mBAAW,EAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,SAAS,OAAO,CAAC,MAAM,4BAA4B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACtF,OAAO;QACL,+BAA+B;QAC/B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC1C,6EAA6E;QAC7E,iBAAiB,EAAE,EAAE,OAAO,EAAE;QAC9B,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE;KAC1B,CAAC;AACX,CAAC,CACF;KACA,YAAY,CAAC,0BAAc,CAAC,IAAI,CAAC;KACjC,SAAS,CAAC,uBAAW,CAAC,IAAI,CAAC;KAC3B,OAAO,CAAC,gBAAI,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Tools = void 0;
4
+ const ts_ast_tool_1 = require("./ast/ts-ast-tool.cjs");
5
+ const example_tool_1 = require("./example-tool/index.cjs");
6
+ const file_summarizer_1 = require("./file-summarizer/index.cjs");
7
+ const ast_jsdoc_tools_1 = require("./ast-jsdoc-tools/index.cjs");
8
+ exports.Tools = [ts_ast_tool_1.TsAstTool, example_tool_1.ExampleTool, file_summarizer_1.FileSummarizer, ast_jsdoc_tools_1.AstJsdocTool];
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,2 @@
1
+ import { ToolBuilder } from "../builders/tool-builder";
2
+ export declare const Tools: ToolBuilder[];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":";;;AAAA,uDAA8C;AAE9C,2DAA6C;AAC7C,iEAAmD;AACnD,iEAAiD;AAEpC,QAAA,KAAK,GAAkB,CAAC,uBAAS,EAAE,0BAAW,EAAE,gCAAc,EAAE,8BAAY,CAAC,CAAC"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TsDocumentElementTool = void 0;
4
+ const zod_1 = require("zod");
5
+ const types_1 = require("./../ast/types.cjs");
6
+ const const_prompt_1 = require("./../../prompts/jsdocs/const-prompt.cjs");
7
+ const class_prompt_1 = require("./../../prompts/jsdocs/class-prompt.cjs");
8
+ const function_prompt_1 = require("./../../prompts/jsdocs/function-prompt.cjs");
9
+ const interface_prompt_1 = require("./../../prompts/jsdocs/interface-prompt.cjs");
10
+ const types_prompt_1 = require("./../../prompts/jsdocs/types-prompt.cjs");
11
+ const enum_prompt_1 = require("./../../prompts/jsdocs/enum-prompt.cjs");
12
+ const decorator_prompt_1 = require("./../../prompts/jsdocs/decorator-prompt.cjs");
13
+ const tool_builder_1 = require("./../../builders/tool-builder.cjs");
14
+ const constants_1 = require("./../../constants.cjs");
15
+ const toolName = "ts.jsdoc.element";
16
+ const inputSchema = zod_1.z
17
+ .object({
18
+ astElement: types_1.zAstObject.describe("The AST TypeScript object to document"),
19
+ previewLength: zod_1.z.number().min(50).max(500).default(100),
20
+ })
21
+ .describe(`the input schema for the ${toolName} tool`);
22
+ const outputSchema = zod_1.z
23
+ .object({})
24
+ .describe(`the output schema for the ${toolName} tool`);
25
+ exports.TsDocumentElementTool = tool_builder_1.ToolBuilder.builder
26
+ .setName(toolName)
27
+ .setTitle("Tool to generate jsdocs for a javascript element (class, interface, function etc)")
28
+ .setDescription("Generate JSDoc comments for a specific element in a TypeScript file according to a curated template and prompt.")
29
+ .setInputSchema(inputSchema)
30
+ .setOutputSchema(outputSchema)
31
+ .setAnnotations({
32
+ title: "Tool to generate jsdocs for a javascript element (class, interface, function etc)",
33
+ readOnlyHint: false,
34
+ destructiveHint: false,
35
+ idempotentHint: true,
36
+ openWorldHint: false,
37
+ })
38
+ .setReasoning(constants_1.ReasoningLevel.HIGH)
39
+ .setEffort(constants_1.EffortLevel.MEDIUM)
40
+ .setCost(constants_1.Cost.LOW)
41
+ .setCb(async (input, extra) => {
42
+ const elType = input.astElement.kind;
43
+ const filePath = input.astElement.location.filePath;
44
+ if (!filePath) {
45
+ throw new Error("AST element is missing filePath in location");
46
+ }
47
+ function getPrompt() {
48
+ switch (elType) {
49
+ case "class":
50
+ return class_prompt_1.TsDocClassPrompt;
51
+ case "function":
52
+ return function_prompt_1.TsDocFunctionPrompt;
53
+ case "interface":
54
+ return interface_prompt_1.TsDocInterfacePrompt;
55
+ case "type":
56
+ return types_prompt_1.TsDocTypeePrompt;
57
+ case "enum":
58
+ return enum_prompt_1.TsDocEnumPrompt;
59
+ case "constant":
60
+ return const_prompt_1.TsDocConstPrompt;
61
+ case "decorator":
62
+ return decorator_prompt_1.TsDocDecoratorPrompt;
63
+ case "namespace":
64
+ case "cli-module":
65
+ case "module":
66
+ default:
67
+ throw new Error(`Invalid element type: ${elType}`);
68
+ }
69
+ }
70
+ const prompt = (await getPrompt()["cb"]({}, extra)).messages
71
+ .map((m) => m.content)
72
+ .join("\n");
73
+ const preview = prompt.substring(0, input.previewLength);
74
+ return {
75
+ // TEXT content so the model sees a readable version in chat
76
+ content: [{ type: "text", text: prompt }],
77
+ // small metadata so hosts can inspect provenance
78
+ _meta: { filePath },
79
+ // STRUCTURED for hosts/clients that inspect tool results
80
+ structuredContent: {
81
+ kind: "messages",
82
+ preview,
83
+ messages: input.astElement,
84
+ },
85
+ };
86
+ });
87
+ //# sourceMappingURL=ts-jsdoc-element-tool.js.map
@@ -0,0 +1,2 @@
1
+ import { ToolBuilder } from "../../builders/tool-builder";
2
+ export declare const TsDocumentElementTool: ToolBuilder;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-jsdoc-element-tool.js","sourceRoot":"","sources":["../../../src/tools/jsdoc/ts-jsdoc-element-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.hasExistingJsDoc = hasExistingJsDoc;
7
+ exports.inferContextHints = inferContextHints;
8
+ const path_1 = __importDefault(require("path"));
9
+ function hasExistingJsDoc(sourceText, nodeStartLine) {
10
+ // Simple heuristic: look for /** */ block immediately preceding the line
11
+ const lines = sourceText.split(/\r?\n/);
12
+ const idx = Math.max(0, nodeStartLine - 2); // 0-based
13
+ for (let i = idx; i >= 0 && i > idx - 6; i--) {
14
+ const line = lines[i].trim();
15
+ if (line.startsWith("/**")) {
16
+ // collect block
17
+ const blockLines = [];
18
+ for (let j = i; j < lines.length; j++) {
19
+ blockLines.push(lines[j]);
20
+ if (lines[j].includes("*/"))
21
+ break;
22
+ }
23
+ return { has: true, block: blockLines.join("\n") };
24
+ }
25
+ if (line && !line.startsWith("*") && !line.startsWith("//"))
26
+ break;
27
+ }
28
+ return { has: false };
29
+ }
30
+ function inferContextHints(filePath, repoRoot) {
31
+ const rel = repoRoot ? path_1.default.relative(repoRoot, filePath) : filePath;
32
+ const parts = rel.split(path_1.default.sep);
33
+ const hints = new Set();
34
+ const p = rel.toLowerCase();
35
+ if (p.includes(`${path_1.default.sep}cli${path_1.default.sep}`) ||
36
+ p.endsWith(".cli.ts") ||
37
+ p.includes("bin"))
38
+ hints.add("cli");
39
+ if (p.includes(`${path_1.default.sep}api${path_1.default.sep}`) || p.includes("/api/"))
40
+ hints.add("api");
41
+ if (p.includes(`${path_1.default.sep}lib${path_1.default.sep}`) || p.includes("/lib/"))
42
+ hints.add("lib");
43
+ if (p.includes("test") || p.includes("__tests__"))
44
+ hints.add("test-fixture");
45
+ if (p.endsWith("index.ts"))
46
+ hints.add("index");
47
+ // filename patterns
48
+ const file = path_1.default.basename(rel);
49
+ if (file.endsWith(".controller.ts"))
50
+ hints.add("controller");
51
+ if (file.endsWith(".service.ts"))
52
+ hints.add("service");
53
+ if (file.endsWith(".spec.ts") || file.endsWith(".test.ts"))
54
+ hints.add("test");
55
+ // default: if under src or lib, mark as library
56
+ if (parts.includes("src") || parts.includes("lib"))
57
+ hints.add("library");
58
+ return Array.from(hints);
59
+ }
60
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1,5 @@
1
+ export declare function hasExistingJsDoc(sourceText: string, nodeStartLine: number): {
2
+ has: boolean;
3
+ block?: string;
4
+ };
5
+ export declare function inferContextHints(filePath: string, repoRoot?: string): string[];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/tools/jsdoc/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TsDocumentElementTool = void 0;
4
+ const zod_1 = require("zod");
5
+ const types_1 = require("./../ast/types.cjs");
6
+ const tool_builder_1 = require("./../../builders/tool-builder.cjs");
7
+ const constants_1 = require("./../../constants.cjs");
8
+ const utils_1 = require("@decaf-ts/utils");
9
+ const toolName = "ts.jsdoc.element";
10
+ const inputSchema = zod_1.z
11
+ .object({
12
+ astElement: types_1.zAstObject.describe("The AST TypeScript object to document"),
13
+ previewLength: zod_1.z.number().min(50).max(500).default(100),
14
+ })
15
+ .describe(`the input schema for the ${toolName} tool`);
16
+ const outputSchema = zod_1.z
17
+ .object({})
18
+ .describe(`the output schema for the ${toolName} tool`);
19
+ exports.TsDocumentElementTool = tool_builder_1.ToolBuilder.builder
20
+ .setName(toolName)
21
+ .setTitle("Tool to generate jsdocs for a javascript element (class, interface, function etc)")
22
+ .setDescription("Generate JSDoc comments for a specific element in a TypeScript file according to a curated template and prompt.")
23
+ .setInputSchema(inputSchema)
24
+ .setOutputSchema(outputSchema)
25
+ .setAnnotations({
26
+ title: "Tool to generate jsdocs for a javascript element (class, interface, function etc)",
27
+ readOnlyHint: false,
28
+ destructiveHint: false,
29
+ idempotentHint: true,
30
+ openWorldHint: false,
31
+ })
32
+ .setReasoning(constants_1.ReasoningLevel.HIGH)
33
+ .setEffort(constants_1.EffortLevel.MEDIUM)
34
+ .setCost(constants_1.Cost.LOW)
35
+ .setCb(async (input,
36
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
37
+ extra) => {
38
+ const cwd = process.cwd();
39
+ const tests = await (0, utils_1.runCommand)("npx jest --listTests", {
40
+ cwd,
41
+ }).promise;
42
+ // run npx jest --listTests and capture output
43
+ return {
44
+ // TEXT content so the model sees a readable version in chat
45
+ content: [{ type: "text", text: tests }],
46
+ // small metadata so hosts can inspect provenance
47
+ _meta: { cwd },
48
+ // STRUCTURED for hosts/clients that inspect tool results
49
+ structuredContent: {
50
+ kind: "messages",
51
+ tests,
52
+ messages: input.astElement,
53
+ },
54
+ };
55
+ });
56
+ //# sourceMappingURL=ts-jest-list-tests.js.map
@@ -0,0 +1,2 @@
1
+ import { ToolBuilder } from "../../builders/tool-builder";
2
+ export declare const TsDocumentElementTool: ToolBuilder;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-jest-list-tests.js","sourceRoot":"","sources":["../../../src/tools/testing/ts-jest-list-tests.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,8CAA0C;AAM1C,oEAA0D;AAC1D,qDAAoE;AACpE,2CAA6C;AAE7C,MAAM,QAAQ,GAAG,kBAAkB,CAAC;AAEpC,MAAM,WAAW,GAAG,OAAC;KAClB,MAAM,CAAC;IACN,UAAU,EAAE,kBAAU,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACxE,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;CACxD,CAAC;KACD,QAAQ,CAAC,4BAA4B,QAAQ,OAAO,CAAC,CAAC;AAEzD,MAAM,YAAY,GAAG,OAAC;KACnB,MAAM,CAAC,EAAE,CAAC;KACV,QAAQ,CAAC,6BAA6B,QAAQ,OAAO,CAAC,CAAC;AAE7C,QAAA,qBAAqB,GAAgB,0BAAW,CAAC,OAAO;KAClE,OAAO,CAAC,QAAQ,CAAC;KACjB,QAAQ,CACP,mFAAmF,CACpF;KACA,cAAc,CACb,iHAAiH,CAClH;KACA,cAAc,CAAC,WAAW,CAAC;KAC3B,eAAe,CAAC,YAAY,CAAC;KAC7B,cAAc,CAAC;IACd,KAAK,EACH,mFAAmF;IACrF,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,IAAI;IACpB,aAAa,EAAE,KAAK;CACrB,CAAC;KACD,YAAY,CAAC,0BAAc,CAAC,IAAI,CAAC;KACjC,SAAS,CAAC,uBAAW,CAAC,MAAM,CAAC;KAC7B,OAAO,CAAC,gBAAI,CAAC,GAAG,CAAC;KACjB,KAAK,CACJ,KAAK,EACH,KAAU;AACV,6DAA6D;AAC7D,KAA6D,EAC7D,EAAE;IACF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,MAAM,IAAA,kBAAU,EAAC,sBAAsB,EAAE;QACrD,GAAG;KACJ,CAAC,CAAC,OAAO,CAAC;IACX,8CAA8C;IAE9C,OAAO;QACL,4DAA4D;QAC5D,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACxC,iDAAiD;QACjD,KAAK,EAAE,EAAE,GAAG,EAAE;QACd,yDAAyD;QACzD,iBAAiB,EAAE;YACjB,IAAI,EAAE,UAAU;YAChB,KAAK;YACL,QAAQ,EAAE,KAAK,CAAC,UAAU;SAC3B;KACF,CAAC;AACJ,CAAC,CACF,CAAC"}
package/lib/types.cjs CHANGED
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ29udGVudFJlc3VsdCwgRmFzdE1DUCwgVG9vbCB9IGZyb20gXCJmYXN0bWNwXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZ1bmN0aW9uIHR5cGUgZm9yIERlY2FmIE1DUCBtb2R1bGVzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzaWduYXR1cmUgZm9yIE1DUCBtb2R1bGUgZnVuY3Rpb25zIHRoYXQgZWFjaCBEZWNhZiBtb2R1bGUgbXVzdCBleHBvcnQgdW5kZXIgdGhlIE1DUF9GSUxFX05BTUUgZmlsZVxuICogVGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gYSBTZXJ2ZXIgb2JqZWN0IG9yIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgU2VydmVyIG9iamVjdFxuICpcbiAqIEB0eXBlZGVmIHtGdW5jdGlvbn0gTWNwTW9kdWxlXG4gKiBAcmV0dXJuIHtTZXJ2ZXJ8UHJvbWlzZTxTZXJ2ZXI+fSBBIENvbW1hbmQgb2JqZWN0IG9yIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIFNlcnZlciBvYmplY3RcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q0xJXG4gKi9cbmV4cG9ydCB0eXBlIE1jcE1vZHVsZSA9IHtcbiAgZW5yaWNoKG1jcDogRmFzdE1DUCk6IEZhc3RNQ1AgfCBQcm9taXNlPEZhc3RNQ1A+O1xuICBQQUNLQUdFX05BTUU6IHN0cmluZztcbiAgVkVSU0lPTjogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgTW9kdWxlU3RhdHVzID0gXCJhY3RpdmVcIiB8IFwiZGlzYWJsZWRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBCYXNlQXNzZXQge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdGFncz86IHN0cmluZ1tdO1xuICBwcm92ZW5hbmNlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb21wdEFzc2V0IGV4dGVuZHMgQmFzZUFzc2V0IHtcbiAgbG9hZDogKCkgPT4gUHJvbWlzZTxzdHJpbmc+IHwgc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlQXNzZXQgZXh0ZW5kcyBCYXNlQXNzZXQge1xuICB1cmk6IHN0cmluZztcbiAgbWltZVR5cGU6IHN0cmluZztcbiAgbG9hZDogKCkgPT4gUHJvbWlzZTxDb250ZW50UmVzdWx0PiB8IENvbnRlbnRSZXN1bHQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVBc3NldCBleHRlbmRzIEJhc2VBc3NldCB7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgcGxhY2Vob2xkZXJzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVG9vbEFzc2V0IGV4dGVuZHMgQmFzZUFzc2V0IHtcbiAgdG9vbDogVG9vbDxhbnksIGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlRXhwb3J0UGFja2FnZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgc3RhdHVzPzogTW9kdWxlU3RhdHVzO1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuICBsYXN0VXBkYXRlZD86IHN0cmluZztcbiAgcHJvbXB0czogUHJvbXB0QXNzZXRbXTtcbiAgcmVzb3VyY2VzOiBSZXNvdXJjZUFzc2V0W107XG4gIHRlbXBsYXRlczogVGVtcGxhdGVBc3NldFtdO1xuICB0b29sczogVG9vbEFzc2V0W107XG59XG5cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25Jc3N1ZVR5cGUgPVxuICB8IFwibWlzc2luZy1mb2xkZXJcIlxuICB8IFwibWlzc2luZy1leHBvcnRcIlxuICB8IFwiZHVwbGljYXRlLWlkXCJcbiAgfCBcImVtcHR5LWFzc2V0XCJcbiAgfCBcInJ1bnRpbWUtZmFpbHVyZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25Jc3N1ZSB7XG4gIHR5cGU6IFZhbGlkYXRpb25Jc3N1ZVR5cGU7XG4gIG1vZHVsZTogc3RyaW5nO1xuICBkZXRhaWw6IHN0cmluZztcbiAgc2V2ZXJpdHk6IFwiZXJyb3JcIiB8IFwid2FybmluZ1wiO1xufVxuIl19
3
+ //# sourceMappingURL=types.js.map
package/lib/types.d.ts CHANGED
@@ -1,55 +1,64 @@
1
- import type { ContentResult, FastMCP, Tool } from "fastmcp";
2
- /**
3
- * @description Function type for Decaf MCP modules
4
- * @summary Defines the signature for MCP module functions that each Decaf module must export under the MCP_FILE_NAME file
5
- * The function should return a Server object or a Promise that resolves to a Server object
6
- *
7
- * @typedef {Function} McpModule
8
- * @return {Server|Promise<Server>} A Command object or Promise that resolves to a Server object
9
- * @memberOf module:CLI
10
- */
11
- export type McpModule = {
12
- enrich(mcp: FastMCP): FastMCP | Promise<FastMCP>;
13
- PACKAGE_NAME: string;
14
- VERSION: string;
15
- };
16
- export type ModuleStatus = "active" | "disabled";
17
- export interface BaseAsset {
1
+ import { ZodErrorMap, ZodOptional, ZodRawShape, ZodType } from "zod";
2
+ import { GetPromptResult, Resource, ToolAnnotations } from "@modelcontextprotocol/sdk/types";
3
+ import { PromptCallback, ReadResourceCallback, ToolCallback } from "@modelcontextprotocol/sdk/server/mcp";
4
+ import { Cost, EffortLevel, ReasoningLevel } from "./constants";
5
+ interface ZodTypeDef {
6
+ errorMap?: ZodErrorMap | undefined;
7
+ description?: string | undefined;
8
+ }
9
+ export type PromptExport = {
18
10
  id: string;
19
11
  title: string;
20
- description?: string;
21
- tags?: string[];
22
- provenance?: string;
12
+ load: (...args: any[]) => any;
13
+ };
14
+ export type ModuleExportPackage = {
15
+ name: string;
16
+ prompts?: PromptExport[];
17
+ resources?: any[];
18
+ templates?: any[];
19
+ tools?: any[];
20
+ };
21
+ export interface Definition {
22
+ name: string;
23
+ title: string;
24
+ description: string;
23
25
  }
24
- export interface PromptAsset extends BaseAsset {
25
- load: () => Promise<string> | string;
26
+ export interface ResourceDefinition extends Definition {
27
+ uriOrTemplate: string;
28
+ config: Omit<Resource, "uri" | "name">;
29
+ _meta: ResourceMeta;
30
+ cb: ReadResourceCallback;
26
31
  }
27
- export interface ResourceAsset extends BaseAsset {
28
- uri: string;
29
- mimeType: string;
30
- load: () => Promise<ContentResult> | ContentResult;
32
+ type PromptArgsRawShape = {
33
+ [k: string]: ZodType<string, ZodTypeDef, string> | ZodOptional<ZodType<string, ZodTypeDef, string>>;
34
+ };
35
+ export interface PromptDefinition<Args extends PromptArgsRawShape> extends Definition {
36
+ argsSchema?: Args;
37
+ _meta: PromptMeta;
38
+ cb: PromptCallback<Args>;
31
39
  }
32
- export interface TemplateAsset extends BaseAsset {
33
- content: string;
34
- placeholders?: string[];
40
+ export type PromptCallbackType = GetPromptResult;
41
+ export interface ToolDefinition<InputArgs extends ZodRawShape, OutputArgs extends ZodRawShape> extends Definition {
42
+ inputSchema: InputArgs;
43
+ outputSchema: OutputArgs;
44
+ annotations: ToolAnnotations;
45
+ _meta: ToolMeta;
46
+ cb: ToolCallback<InputArgs>;
35
47
  }
36
- export interface ToolAsset extends BaseAsset {
37
- tool: Tool<any, any>;
48
+ export interface UsageRequirements {
49
+ reasoning: ReasoningLevel;
50
+ effort: EffortLevel;
51
+ cost: Cost;
38
52
  }
39
- export interface ModuleExportPackage {
40
- name: string;
41
- status?: ModuleStatus;
42
- version?: string;
43
- lastUpdated?: string;
44
- prompts: PromptAsset[];
45
- resources: ResourceAsset[];
46
- templates: TemplateAsset[];
47
- tools: ToolAsset[];
48
- }
49
- export type ValidationIssueType = "missing-folder" | "missing-export" | "duplicate-id" | "empty-asset" | "runtime-failure";
50
- export interface ValidationIssue {
51
- type: ValidationIssueType;
52
- module: string;
53
- detail: string;
54
- severity: "error" | "warning";
53
+ export interface Meta {
54
+ }
55
+ export interface ResourceMeta extends Meta {
56
+ }
57
+ export interface UsableMeta extends Meta {
58
+ usage: UsageRequirements;
59
+ }
60
+ export interface ToolMeta extends UsableMeta {
61
+ }
62
+ export interface PromptMeta extends UsableMeta {
55
63
  }
64
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getSlogan = getSlogan;
7
+ exports.printBanner = printBanner;
8
+ const logging_1 = require("@decaf-ts/logging");
9
+ const styled_string_builder_1 = require("styled-string-builder");
10
+ const path_1 = __importDefault(require("path"));
11
+ const fs_1 = __importDefault(require("fs"));
12
+ const colors = [
13
+ "\x1b[38;5;215m", // soft orange
14
+ "\x1b[38;5;209m", // coral
15
+ "\x1b[38;5;205m", // pink
16
+ "\x1b[38;5;210m", // peachy
17
+ "\x1b[38;5;217m", // salmon
18
+ "\x1b[38;5;216m", // light coral
19
+ "\x1b[38;5;224m", // light peach
20
+ "\x1b[38;5;230m", // soft cream
21
+ "\x1b[38;5;230m", // soft cream
22
+ ];
23
+ function getSlogan() {
24
+ // Find nearest node_modules from this file's directory to survive bundling
25
+ const startDir = __dirname;
26
+ let current = startDir;
27
+ let nodeModulesDir;
28
+ try {
29
+ while (current && current !== path_1.default.parse(current).root) {
30
+ const candidate = path_1.default.join(current, "node_modules");
31
+ if (fs_1.default.existsSync(candidate) && fs_1.default.statSync(candidate).isDirectory()) {
32
+ nodeModulesDir = candidate;
33
+ break;
34
+ }
35
+ const parent = path_1.default.dirname(current);
36
+ if (parent === current)
37
+ break;
38
+ current = parent;
39
+ }
40
+ }
41
+ catch {
42
+ // ignore errors during traversal
43
+ }
44
+ const slogans = [];
45
+ if (nodeModulesDir) {
46
+ const scopeDir = path_1.default.join(nodeModulesDir, "@decaf-ts");
47
+ try {
48
+ if (fs_1.default.existsSync(scopeDir) && fs_1.default.statSync(scopeDir).isDirectory()) {
49
+ const pkgs = fs_1.default.readdirSync(scopeDir);
50
+ for (const pkg of pkgs) {
51
+ const depPath = path_1.default.join(scopeDir, pkg);
52
+ try {
53
+ const slogansPath = path_1.default.join(depPath, "workdocs", "assets", "slogans.json");
54
+ if (fs_1.default.existsSync(slogansPath) &&
55
+ fs_1.default.statSync(slogansPath).isFile()) {
56
+ const raw = fs_1.default.readFileSync(slogansPath, "utf-8");
57
+ const parsed = JSON.parse(raw);
58
+ if (Array.isArray(parsed)) {
59
+ for (const s of parsed) {
60
+ if (typeof s === "string" && s.trim().length > 0) {
61
+ slogans.push(s.trim());
62
+ }
63
+ }
64
+ }
65
+ }
66
+ }
67
+ catch {
68
+ // ignore per-package errors
69
+ }
70
+ }
71
+ }
72
+ }
73
+ catch {
74
+ // ignore scope directory errors
75
+ }
76
+ }
77
+ if (slogans.length === 0) {
78
+ return "Decaf: strongly brewed TypeScript.";
79
+ }
80
+ const idx = Math.floor(Math.random() * slogans.length);
81
+ return slogans[idx];
82
+ }
83
+ function printBanner(logger = logging_1.Logging.get()) {
84
+ let message;
85
+ try {
86
+ message = getSlogan();
87
+ }
88
+ catch {
89
+ message = "Decaf: strongly brewed TypeScript.";
90
+ }
91
+ const banner = `# ░▒▓███████▓▒░ ░▒▓████████▓▒░ ░▒▓██████▓▒░ ░▒▓██████▓▒░ ░▒▓████████▓▒░ ░▒▓████████▓▒░ ░▒▓███████▓▒░
92
+ # ( ( ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░
93
+ # ) ) ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░
94
+ # [=======] ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓██████▓▒░ ░▒▓█▓▒░ ░▒▓████████▓▒░ ░▒▓██████▓▒░ ░▒▓█▓▒░ ░▒▓██████▓▒░
95
+ # \`-----´ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░
96
+ # ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░
97
+ # ░▒▓███████▓▒░ ░▒▓████████▓▒░ ░▒▓██████▓▒░ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓███████▓▒░
98
+ #`.split("\n");
99
+ const maxLength = banner.reduce((max, line) => Math.max(max, line.length), 0);
100
+ banner.push(`# ${message.padStart(maxLength - 3)}`);
101
+ banner.forEach((line, index) => {
102
+ const color = colors[index % colors.length] || "";
103
+ const logFn = logger ? logger.info.bind(logger) : console.log.bind(console);
104
+ try {
105
+ const msg = (0, styled_string_builder_1.style)(line || "").raw(color).text;
106
+ logFn(msg);
107
+ }
108
+ catch {
109
+ // Fallback to plain output if styling fails for any reason
110
+ logFn(String(line || ""));
111
+ }
112
+ });
113
+ }
114
+ //# sourceMappingURL=banner.js.map
@@ -0,0 +1,3 @@
1
+ import { Logger } from "@decaf-ts/logging";
2
+ export declare function getSlogan(): string;
3
+ export declare function printBanner(logger?: Logger): void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/utils/banner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PACKAGE_NAME = exports.VERSION = void 0;
4
+ const decoration_1 = require("@decaf-ts/decoration");
5
+ exports.VERSION = "0.4.6";
6
+ exports.PACKAGE_NAME = "@decaf-ts/mcp-server";
7
+ decoration_1.Metadata.registerLibrary(exports.PACKAGE_NAME, exports.VERSION);
8
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1,2 @@
1
+ export declare const VERSION = "0.4.6";
2
+ export declare const PACKAGE_NAME = "@decaf-ts/mcp-server";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;AAAA,qDAAgD;AAEnC,QAAA,OAAO,GAAG,aAAa,CAAC;AAExB,QAAA,YAAY,GAAG,aAAa,CAAC;AAE1C,qBAAQ,CAAC,eAAe,CAAC,oBAAY,EAAE,eAAO,CAAC,CAAC"}