@cyanheads/mcp-ts-core 0.1.0-beta.12

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 (485) hide show
  1. package/CLAUDE.md +583 -0
  2. package/LICENSE +201 -0
  3. package/README.md +287 -0
  4. package/biome.json +103 -0
  5. package/dist/app.d.ts +82 -0
  6. package/dist/app.d.ts.map +1 -0
  7. package/dist/app.js +222 -0
  8. package/dist/app.js.map +1 -0
  9. package/dist/cli/init.d.ts +8 -0
  10. package/dist/cli/init.d.ts.map +1 -0
  11. package/dist/cli/init.js +161 -0
  12. package/dist/cli/init.js.map +1 -0
  13. package/dist/config/index.d.ts +349 -0
  14. package/dist/config/index.d.ts.map +1 -0
  15. package/dist/config/index.js +464 -0
  16. package/dist/config/index.js.map +1 -0
  17. package/dist/context.d.ts +119 -0
  18. package/dist/context.d.ts.map +1 -0
  19. package/dist/context.js +144 -0
  20. package/dist/context.js.map +1 -0
  21. package/dist/index.d.ts +8 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +9 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/mcp-server/prompts/prompt-registration.d.ts +33 -0
  26. package/dist/mcp-server/prompts/prompt-registration.d.ts.map +1 -0
  27. package/dist/mcp-server/prompts/prompt-registration.js +91 -0
  28. package/dist/mcp-server/prompts/prompt-registration.js.map +1 -0
  29. package/dist/mcp-server/prompts/utils/newPromptDefinition.d.ts +49 -0
  30. package/dist/mcp-server/prompts/utils/newPromptDefinition.d.ts.map +1 -0
  31. package/dist/mcp-server/prompts/utils/newPromptDefinition.js +39 -0
  32. package/dist/mcp-server/prompts/utils/newPromptDefinition.js.map +1 -0
  33. package/dist/mcp-server/prompts/utils/promptDefinition.d.ts +37 -0
  34. package/dist/mcp-server/prompts/utils/promptDefinition.d.ts.map +1 -0
  35. package/dist/mcp-server/prompts/utils/promptDefinition.js +2 -0
  36. package/dist/mcp-server/prompts/utils/promptDefinition.js.map +1 -0
  37. package/dist/mcp-server/resources/resource-registration.d.ts +27 -0
  38. package/dist/mcp-server/resources/resource-registration.d.ts.map +1 -0
  39. package/dist/mcp-server/resources/resource-registration.js +85 -0
  40. package/dist/mcp-server/resources/resource-registration.js.map +1 -0
  41. package/dist/mcp-server/resources/utils/newResourceDefinition.d.ts +84 -0
  42. package/dist/mcp-server/resources/utils/newResourceDefinition.d.ts.map +1 -0
  43. package/dist/mcp-server/resources/utils/newResourceDefinition.js +40 -0
  44. package/dist/mcp-server/resources/utils/newResourceDefinition.js.map +1 -0
  45. package/dist/mcp-server/resources/utils/newResourceHandlerFactory.d.ts +32 -0
  46. package/dist/mcp-server/resources/utils/newResourceHandlerFactory.d.ts.map +1 -0
  47. package/dist/mcp-server/resources/utils/newResourceHandlerFactory.js +103 -0
  48. package/dist/mcp-server/resources/utils/newResourceHandlerFactory.js.map +1 -0
  49. package/dist/mcp-server/resources/utils/resourceDefinition.d.ts +94 -0
  50. package/dist/mcp-server/resources/utils/resourceDefinition.d.ts.map +1 -0
  51. package/dist/mcp-server/resources/utils/resourceDefinition.js +2 -0
  52. package/dist/mcp-server/resources/utils/resourceDefinition.js.map +1 -0
  53. package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts +14 -0
  54. package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts.map +1 -0
  55. package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +111 -0
  56. package/dist/mcp-server/resources/utils/resourceHandlerFactory.js.map +1 -0
  57. package/dist/mcp-server/roots/roots-registration.d.ts +22 -0
  58. package/dist/mcp-server/roots/roots-registration.d.ts.map +1 -0
  59. package/dist/mcp-server/roots/roots-registration.js +25 -0
  60. package/dist/mcp-server/roots/roots-registration.js.map +1 -0
  61. package/dist/mcp-server/server.d.ts +34 -0
  62. package/dist/mcp-server/server.d.ts.map +1 -0
  63. package/dist/mcp-server/server.js +62 -0
  64. package/dist/mcp-server/server.js.map +1 -0
  65. package/dist/mcp-server/tasks/core/sessionAwareTaskStore.d.ts +42 -0
  66. package/dist/mcp-server/tasks/core/sessionAwareTaskStore.d.ts.map +1 -0
  67. package/dist/mcp-server/tasks/core/sessionAwareTaskStore.js +70 -0
  68. package/dist/mcp-server/tasks/core/sessionAwareTaskStore.js.map +1 -0
  69. package/dist/mcp-server/tasks/core/storageBackedTaskStore.d.ts +109 -0
  70. package/dist/mcp-server/tasks/core/storageBackedTaskStore.d.ts.map +1 -0
  71. package/dist/mcp-server/tasks/core/storageBackedTaskStore.js +209 -0
  72. package/dist/mcp-server/tasks/core/storageBackedTaskStore.js.map +1 -0
  73. package/dist/mcp-server/tasks/core/taskManager.d.ts +103 -0
  74. package/dist/mcp-server/tasks/core/taskManager.d.ts.map +1 -0
  75. package/dist/mcp-server/tasks/core/taskManager.js +144 -0
  76. package/dist/mcp-server/tasks/core/taskManager.js.map +1 -0
  77. package/dist/mcp-server/tasks/core/taskTypes.d.ts +11 -0
  78. package/dist/mcp-server/tasks/core/taskTypes.d.ts.map +1 -0
  79. package/dist/mcp-server/tasks/core/taskTypes.js +13 -0
  80. package/dist/mcp-server/tasks/core/taskTypes.js.map +1 -0
  81. package/dist/mcp-server/tasks/utils/taskToolDefinition.d.ts +108 -0
  82. package/dist/mcp-server/tasks/utils/taskToolDefinition.d.ts.map +1 -0
  83. package/dist/mcp-server/tasks/utils/taskToolDefinition.js +14 -0
  84. package/dist/mcp-server/tasks/utils/taskToolDefinition.js.map +1 -0
  85. package/dist/mcp-server/tools/tool-registration.d.ts +49 -0
  86. package/dist/mcp-server/tools/tool-registration.d.ts.map +1 -0
  87. package/dist/mcp-server/tools/tool-registration.js +269 -0
  88. package/dist/mcp-server/tools/tool-registration.js.map +1 -0
  89. package/dist/mcp-server/tools/utils/newToolDefinition.d.ts +73 -0
  90. package/dist/mcp-server/tools/utils/newToolDefinition.d.ts.map +1 -0
  91. package/dist/mcp-server/tools/utils/newToolDefinition.js +45 -0
  92. package/dist/mcp-server/tools/utils/newToolDefinition.js.map +1 -0
  93. package/dist/mcp-server/tools/utils/newToolHandlerFactory.d.ts +33 -0
  94. package/dist/mcp-server/tools/utils/newToolHandlerFactory.d.ts.map +1 -0
  95. package/dist/mcp-server/tools/utils/newToolHandlerFactory.js +107 -0
  96. package/dist/mcp-server/tools/utils/newToolHandlerFactory.js.map +1 -0
  97. package/dist/mcp-server/tools/utils/toolDefinition.d.ts +118 -0
  98. package/dist/mcp-server/tools/utils/toolDefinition.d.ts.map +1 -0
  99. package/dist/mcp-server/tools/utils/toolDefinition.js +2 -0
  100. package/dist/mcp-server/tools/utils/toolDefinition.js.map +1 -0
  101. package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts +34 -0
  102. package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -0
  103. package/dist/mcp-server/tools/utils/toolHandlerFactory.js +68 -0
  104. package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -0
  105. package/dist/mcp-server/transports/ITransport.d.ts +15 -0
  106. package/dist/mcp-server/transports/ITransport.d.ts.map +1 -0
  107. package/dist/mcp-server/transports/ITransport.js +2 -0
  108. package/dist/mcp-server/transports/ITransport.js.map +1 -0
  109. package/dist/mcp-server/transports/auth/authFactory.d.ts +11 -0
  110. package/dist/mcp-server/transports/auth/authFactory.d.ts.map +1 -0
  111. package/dist/mcp-server/transports/auth/authFactory.js +43 -0
  112. package/dist/mcp-server/transports/auth/authFactory.js.map +1 -0
  113. package/dist/mcp-server/transports/auth/authMiddleware.d.ts +24 -0
  114. package/dist/mcp-server/transports/auth/authMiddleware.d.ts.map +1 -0
  115. package/dist/mcp-server/transports/auth/authMiddleware.js +69 -0
  116. package/dist/mcp-server/transports/auth/authMiddleware.js.map +1 -0
  117. package/dist/mcp-server/transports/auth/lib/authContext.d.ts +34 -0
  118. package/dist/mcp-server/transports/auth/lib/authContext.d.ts.map +1 -0
  119. package/dist/mcp-server/transports/auth/lib/authContext.js +25 -0
  120. package/dist/mcp-server/transports/auth/lib/authContext.js.map +1 -0
  121. package/dist/mcp-server/transports/auth/lib/authTypes.d.ts +19 -0
  122. package/dist/mcp-server/transports/auth/lib/authTypes.d.ts.map +1 -0
  123. package/dist/mcp-server/transports/auth/lib/authTypes.js +2 -0
  124. package/dist/mcp-server/transports/auth/lib/authTypes.js.map +1 -0
  125. package/dist/mcp-server/transports/auth/lib/authUtils.d.ts +18 -0
  126. package/dist/mcp-server/transports/auth/lib/authUtils.d.ts.map +1 -0
  127. package/dist/mcp-server/transports/auth/lib/authUtils.js +64 -0
  128. package/dist/mcp-server/transports/auth/lib/authUtils.js.map +1 -0
  129. package/dist/mcp-server/transports/auth/lib/checkScopes.d.ts +25 -0
  130. package/dist/mcp-server/transports/auth/lib/checkScopes.d.ts.map +1 -0
  131. package/dist/mcp-server/transports/auth/lib/checkScopes.js +34 -0
  132. package/dist/mcp-server/transports/auth/lib/checkScopes.js.map +1 -0
  133. package/dist/mcp-server/transports/auth/lib/claimParser.d.ts +34 -0
  134. package/dist/mcp-server/transports/auth/lib/claimParser.d.ts.map +1 -0
  135. package/dist/mcp-server/transports/auth/lib/claimParser.js +58 -0
  136. package/dist/mcp-server/transports/auth/lib/claimParser.js.map +1 -0
  137. package/dist/mcp-server/transports/auth/lib/withAuth.d.ts +25 -0
  138. package/dist/mcp-server/transports/auth/lib/withAuth.d.ts.map +1 -0
  139. package/dist/mcp-server/transports/auth/lib/withAuth.js +30 -0
  140. package/dist/mcp-server/transports/auth/lib/withAuth.js.map +1 -0
  141. package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts +18 -0
  142. package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts.map +1 -0
  143. package/dist/mcp-server/transports/auth/strategies/authStrategy.js +2 -0
  144. package/dist/mcp-server/transports/auth/strategies/authStrategy.js.map +1 -0
  145. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts +14 -0
  146. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts.map +1 -0
  147. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js +86 -0
  148. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js.map +1 -0
  149. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts +14 -0
  150. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts.map +1 -0
  151. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js +113 -0
  152. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js.map +1 -0
  153. package/dist/mcp-server/transports/http/httpErrorHandler.d.ts +25 -0
  154. package/dist/mcp-server/transports/http/httpErrorHandler.d.ts.map +1 -0
  155. package/dist/mcp-server/transports/http/httpErrorHandler.js +112 -0
  156. package/dist/mcp-server/transports/http/httpErrorHandler.js.map +1 -0
  157. package/dist/mcp-server/transports/http/httpTransport.d.ts +47 -0
  158. package/dist/mcp-server/transports/http/httpTransport.d.ts.map +1 -0
  159. package/dist/mcp-server/transports/http/httpTransport.js +396 -0
  160. package/dist/mcp-server/transports/http/httpTransport.js.map +1 -0
  161. package/dist/mcp-server/transports/http/httpTypes.d.ts +17 -0
  162. package/dist/mcp-server/transports/http/httpTypes.d.ts.map +1 -0
  163. package/dist/mcp-server/transports/http/httpTypes.js +2 -0
  164. package/dist/mcp-server/transports/http/httpTypes.js.map +1 -0
  165. package/dist/mcp-server/transports/http/protectedResourceMetadata.d.ts +21 -0
  166. package/dist/mcp-server/transports/http/protectedResourceMetadata.d.ts.map +1 -0
  167. package/dist/mcp-server/transports/http/protectedResourceMetadata.js +44 -0
  168. package/dist/mcp-server/transports/http/protectedResourceMetadata.js.map +1 -0
  169. package/dist/mcp-server/transports/http/sessionIdUtils.d.ts +33 -0
  170. package/dist/mcp-server/transports/http/sessionIdUtils.d.ts.map +1 -0
  171. package/dist/mcp-server/transports/http/sessionIdUtils.js +54 -0
  172. package/dist/mcp-server/transports/http/sessionIdUtils.js.map +1 -0
  173. package/dist/mcp-server/transports/http/sessionStore.d.ts +87 -0
  174. package/dist/mcp-server/transports/http/sessionStore.d.ts.map +1 -0
  175. package/dist/mcp-server/transports/http/sessionStore.js +209 -0
  176. package/dist/mcp-server/transports/http/sessionStore.js.map +1 -0
  177. package/dist/mcp-server/transports/manager.d.ts +22 -0
  178. package/dist/mcp-server/transports/manager.d.ts.map +1 -0
  179. package/dist/mcp-server/transports/manager.js +62 -0
  180. package/dist/mcp-server/transports/manager.js.map +1 -0
  181. package/dist/mcp-server/transports/stdio/stdioTransport.d.ts +44 -0
  182. package/dist/mcp-server/transports/stdio/stdioTransport.d.ts.map +1 -0
  183. package/dist/mcp-server/transports/stdio/stdioTransport.js +63 -0
  184. package/dist/mcp-server/transports/stdio/stdioTransport.js.map +1 -0
  185. package/dist/services/graph/core/GraphService.d.ts +205 -0
  186. package/dist/services/graph/core/GraphService.d.ts.map +1 -0
  187. package/dist/services/graph/core/GraphService.js +231 -0
  188. package/dist/services/graph/core/GraphService.js.map +1 -0
  189. package/dist/services/graph/core/IGraphProvider.d.ts +295 -0
  190. package/dist/services/graph/core/IGraphProvider.d.ts.map +1 -0
  191. package/dist/services/graph/core/IGraphProvider.js +8 -0
  192. package/dist/services/graph/core/IGraphProvider.js.map +1 -0
  193. package/dist/services/graph/types.d.ts +107 -0
  194. package/dist/services/graph/types.d.ts.map +1 -0
  195. package/dist/services/graph/types.js +8 -0
  196. package/dist/services/graph/types.js.map +1 -0
  197. package/dist/services/llm/core/ILlmProvider.d.ts +86 -0
  198. package/dist/services/llm/core/ILlmProvider.d.ts.map +1 -0
  199. package/dist/services/llm/core/ILlmProvider.js +2 -0
  200. package/dist/services/llm/core/ILlmProvider.js.map +1 -0
  201. package/dist/services/llm/providers/openrouter.provider.d.ts +187 -0
  202. package/dist/services/llm/providers/openrouter.provider.d.ts.map +1 -0
  203. package/dist/services/llm/providers/openrouter.provider.js +302 -0
  204. package/dist/services/llm/providers/openrouter.provider.js.map +1 -0
  205. package/dist/services/llm/types.d.ts +16 -0
  206. package/dist/services/llm/types.d.ts.map +1 -0
  207. package/dist/services/llm/types.js +9 -0
  208. package/dist/services/llm/types.js.map +1 -0
  209. package/dist/services/speech/core/ISpeechProvider.d.ts +92 -0
  210. package/dist/services/speech/core/ISpeechProvider.d.ts.map +1 -0
  211. package/dist/services/speech/core/ISpeechProvider.js +34 -0
  212. package/dist/services/speech/core/ISpeechProvider.js.map +1 -0
  213. package/dist/services/speech/core/SpeechService.d.ts +87 -0
  214. package/dist/services/speech/core/SpeechService.d.ts.map +1 -0
  215. package/dist/services/speech/core/SpeechService.js +135 -0
  216. package/dist/services/speech/core/SpeechService.js.map +1 -0
  217. package/dist/services/speech/providers/elevenlabs.provider.d.ts +77 -0
  218. package/dist/services/speech/providers/elevenlabs.provider.d.ts.map +1 -0
  219. package/dist/services/speech/providers/elevenlabs.provider.js +199 -0
  220. package/dist/services/speech/providers/elevenlabs.provider.js.map +1 -0
  221. package/dist/services/speech/providers/whisper.provider.d.ts +94 -0
  222. package/dist/services/speech/providers/whisper.provider.d.ts.map +1 -0
  223. package/dist/services/speech/providers/whisper.provider.js +240 -0
  224. package/dist/services/speech/providers/whisper.provider.js.map +1 -0
  225. package/dist/services/speech/types.d.ts +173 -0
  226. package/dist/services/speech/types.d.ts.map +1 -0
  227. package/dist/services/speech/types.js +8 -0
  228. package/dist/services/speech/types.js.map +1 -0
  229. package/dist/storage/core/IStorageProvider.d.ts +159 -0
  230. package/dist/storage/core/IStorageProvider.d.ts.map +1 -0
  231. package/dist/storage/core/IStorageProvider.js +2 -0
  232. package/dist/storage/core/IStorageProvider.js.map +1 -0
  233. package/dist/storage/core/StorageService.d.ts +22 -0
  234. package/dist/storage/core/StorageService.d.ts.map +1 -0
  235. package/dist/storage/core/StorageService.js +151 -0
  236. package/dist/storage/core/StorageService.js.map +1 -0
  237. package/dist/storage/core/storageFactory.d.ts +66 -0
  238. package/dist/storage/core/storageFactory.d.ts.map +1 -0
  239. package/dist/storage/core/storageFactory.js +122 -0
  240. package/dist/storage/core/storageFactory.js.map +1 -0
  241. package/dist/storage/core/storageValidation.d.ts +77 -0
  242. package/dist/storage/core/storageValidation.d.ts.map +1 -0
  243. package/dist/storage/core/storageValidation.js +303 -0
  244. package/dist/storage/core/storageValidation.js.map +1 -0
  245. package/dist/storage/providers/cloudflare/d1Provider.d.ts +94 -0
  246. package/dist/storage/providers/cloudflare/d1Provider.d.ts.map +1 -0
  247. package/dist/storage/providers/cloudflare/d1Provider.js +347 -0
  248. package/dist/storage/providers/cloudflare/d1Provider.js.map +1 -0
  249. package/dist/storage/providers/cloudflare/kvProvider.d.ts +21 -0
  250. package/dist/storage/providers/cloudflare/kvProvider.d.ts.map +1 -0
  251. package/dist/storage/providers/cloudflare/kvProvider.js +183 -0
  252. package/dist/storage/providers/cloudflare/kvProvider.js.map +1 -0
  253. package/dist/storage/providers/cloudflare/r2Provider.d.ts +28 -0
  254. package/dist/storage/providers/cloudflare/r2Provider.d.ts.map +1 -0
  255. package/dist/storage/providers/cloudflare/r2Provider.js +222 -0
  256. package/dist/storage/providers/cloudflare/r2Provider.js.map +1 -0
  257. package/dist/storage/providers/fileSystem/fileSystemProvider.d.ts +20 -0
  258. package/dist/storage/providers/fileSystem/fileSystemProvider.d.ts.map +1 -0
  259. package/dist/storage/providers/fileSystem/fileSystemProvider.js +282 -0
  260. package/dist/storage/providers/fileSystem/fileSystemProvider.js.map +1 -0
  261. package/dist/storage/providers/inMemory/inMemoryProvider.d.ts +21 -0
  262. package/dist/storage/providers/inMemory/inMemoryProvider.d.ts.map +1 -0
  263. package/dist/storage/providers/inMemory/inMemoryProvider.js +139 -0
  264. package/dist/storage/providers/inMemory/inMemoryProvider.js.map +1 -0
  265. package/dist/storage/providers/supabase/supabase.types.d.ts +49 -0
  266. package/dist/storage/providers/supabase/supabase.types.d.ts.map +1 -0
  267. package/dist/storage/providers/supabase/supabase.types.js +8 -0
  268. package/dist/storage/providers/supabase/supabase.types.js.map +1 -0
  269. package/dist/storage/providers/supabase/supabaseProvider.d.ts +24 -0
  270. package/dist/storage/providers/supabase/supabaseProvider.d.ts.map +1 -0
  271. package/dist/storage/providers/supabase/supabaseProvider.js +209 -0
  272. package/dist/storage/providers/supabase/supabaseProvider.js.map +1 -0
  273. package/dist/testing/index.d.ts +53 -0
  274. package/dist/testing/index.d.ts.map +1 -0
  275. package/dist/testing/index.js +132 -0
  276. package/dist/testing/index.js.map +1 -0
  277. package/dist/types-global/errors.d.ts +83 -0
  278. package/dist/types-global/errors.d.ts.map +1 -0
  279. package/dist/types-global/errors.js +113 -0
  280. package/dist/types-global/errors.js.map +1 -0
  281. package/dist/utils/formatting/diffFormatter.d.ts +227 -0
  282. package/dist/utils/formatting/diffFormatter.d.ts.map +1 -0
  283. package/dist/utils/formatting/diffFormatter.js +369 -0
  284. package/dist/utils/formatting/diffFormatter.js.map +1 -0
  285. package/dist/utils/formatting/index.d.ts +9 -0
  286. package/dist/utils/formatting/index.d.ts.map +1 -0
  287. package/dist/utils/formatting/index.js +9 -0
  288. package/dist/utils/formatting/index.js.map +1 -0
  289. package/dist/utils/formatting/markdownBuilder.d.ts +543 -0
  290. package/dist/utils/formatting/markdownBuilder.d.ts.map +1 -0
  291. package/dist/utils/formatting/markdownBuilder.js +674 -0
  292. package/dist/utils/formatting/markdownBuilder.js.map +1 -0
  293. package/dist/utils/formatting/tableFormatter.d.ts +261 -0
  294. package/dist/utils/formatting/tableFormatter.d.ts.map +1 -0
  295. package/dist/utils/formatting/tableFormatter.js +456 -0
  296. package/dist/utils/formatting/tableFormatter.js.map +1 -0
  297. package/dist/utils/formatting/treeFormatter.d.ts +344 -0
  298. package/dist/utils/formatting/treeFormatter.d.ts.map +1 -0
  299. package/dist/utils/formatting/treeFormatter.js +400 -0
  300. package/dist/utils/formatting/treeFormatter.js.map +1 -0
  301. package/dist/utils/internal/encoding.d.ts +42 -0
  302. package/dist/utils/internal/encoding.d.ts.map +1 -0
  303. package/dist/utils/internal/encoding.js +87 -0
  304. package/dist/utils/internal/encoding.js.map +1 -0
  305. package/dist/utils/internal/error-handler/errorHandler.d.ts +140 -0
  306. package/dist/utils/internal/error-handler/errorHandler.d.ts.map +1 -0
  307. package/dist/utils/internal/error-handler/errorHandler.js +318 -0
  308. package/dist/utils/internal/error-handler/errorHandler.js.map +1 -0
  309. package/dist/utils/internal/error-handler/helpers.d.ts +98 -0
  310. package/dist/utils/internal/error-handler/helpers.d.ts.map +1 -0
  311. package/dist/utils/internal/error-handler/helpers.js +214 -0
  312. package/dist/utils/internal/error-handler/helpers.js.map +1 -0
  313. package/dist/utils/internal/error-handler/mappings.d.ts +85 -0
  314. package/dist/utils/internal/error-handler/mappings.d.ts.map +1 -0
  315. package/dist/utils/internal/error-handler/mappings.js +234 -0
  316. package/dist/utils/internal/error-handler/mappings.js.map +1 -0
  317. package/dist/utils/internal/error-handler/types.d.ts +160 -0
  318. package/dist/utils/internal/error-handler/types.d.ts.map +1 -0
  319. package/dist/utils/internal/error-handler/types.js +6 -0
  320. package/dist/utils/internal/error-handler/types.js.map +1 -0
  321. package/dist/utils/internal/health.d.ts +60 -0
  322. package/dist/utils/internal/health.d.ts.map +1 -0
  323. package/dist/utils/internal/health.js +46 -0
  324. package/dist/utils/internal/health.js.map +1 -0
  325. package/dist/utils/internal/logger.d.ts +300 -0
  326. package/dist/utils/internal/logger.d.ts.map +1 -0
  327. package/dist/utils/internal/logger.js +573 -0
  328. package/dist/utils/internal/logger.js.map +1 -0
  329. package/dist/utils/internal/performance.d.ts +78 -0
  330. package/dist/utils/internal/performance.d.ts.map +1 -0
  331. package/dist/utils/internal/performance.js +227 -0
  332. package/dist/utils/internal/performance.js.map +1 -0
  333. package/dist/utils/internal/requestContext.d.ts +200 -0
  334. package/dist/utils/internal/requestContext.d.ts.map +1 -0
  335. package/dist/utils/internal/requestContext.js +163 -0
  336. package/dist/utils/internal/requestContext.js.map +1 -0
  337. package/dist/utils/internal/runtime.d.ts +49 -0
  338. package/dist/utils/internal/runtime.d.ts.map +1 -0
  339. package/dist/utils/internal/runtime.js +90 -0
  340. package/dist/utils/internal/runtime.js.map +1 -0
  341. package/dist/utils/internal/startupBanner.d.ts +23 -0
  342. package/dist/utils/internal/startupBanner.d.ts.map +1 -0
  343. package/dist/utils/internal/startupBanner.js +34 -0
  344. package/dist/utils/internal/startupBanner.js.map +1 -0
  345. package/dist/utils/metrics/tokenCounter.d.ts +97 -0
  346. package/dist/utils/metrics/tokenCounter.d.ts.map +1 -0
  347. package/dist/utils/metrics/tokenCounter.js +162 -0
  348. package/dist/utils/metrics/tokenCounter.js.map +1 -0
  349. package/dist/utils/network/fetchWithTimeout.d.ts +91 -0
  350. package/dist/utils/network/fetchWithTimeout.d.ts.map +1 -0
  351. package/dist/utils/network/fetchWithTimeout.js +305 -0
  352. package/dist/utils/network/fetchWithTimeout.js.map +1 -0
  353. package/dist/utils/pagination/pagination.d.ts +157 -0
  354. package/dist/utils/pagination/pagination.d.ts.map +1 -0
  355. package/dist/utils/pagination/pagination.js +191 -0
  356. package/dist/utils/pagination/pagination.js.map +1 -0
  357. package/dist/utils/parsing/csvParser.d.ts +84 -0
  358. package/dist/utils/parsing/csvParser.d.ts.map +1 -0
  359. package/dist/utils/parsing/csvParser.js +132 -0
  360. package/dist/utils/parsing/csvParser.js.map +1 -0
  361. package/dist/utils/parsing/dateParser.d.ts +103 -0
  362. package/dist/utils/parsing/dateParser.d.ts.map +1 -0
  363. package/dist/utils/parsing/dateParser.js +142 -0
  364. package/dist/utils/parsing/dateParser.js.map +1 -0
  365. package/dist/utils/parsing/frontmatterParser.d.ts +91 -0
  366. package/dist/utils/parsing/frontmatterParser.d.ts.map +1 -0
  367. package/dist/utils/parsing/frontmatterParser.js +163 -0
  368. package/dist/utils/parsing/frontmatterParser.js.map +1 -0
  369. package/dist/utils/parsing/index.d.ts +15 -0
  370. package/dist/utils/parsing/index.d.ts.map +1 -0
  371. package/dist/utils/parsing/index.js +15 -0
  372. package/dist/utils/parsing/index.js.map +1 -0
  373. package/dist/utils/parsing/jsonParser.d.ts +115 -0
  374. package/dist/utils/parsing/jsonParser.d.ts.map +1 -0
  375. package/dist/utils/parsing/jsonParser.js +177 -0
  376. package/dist/utils/parsing/jsonParser.js.map +1 -0
  377. package/dist/utils/parsing/pdfParser.d.ts +563 -0
  378. package/dist/utils/parsing/pdfParser.d.ts.map +1 -0
  379. package/dist/utils/parsing/pdfParser.js +775 -0
  380. package/dist/utils/parsing/pdfParser.js.map +1 -0
  381. package/dist/utils/parsing/thinkBlock.d.ts +31 -0
  382. package/dist/utils/parsing/thinkBlock.d.ts.map +1 -0
  383. package/dist/utils/parsing/thinkBlock.js +31 -0
  384. package/dist/utils/parsing/thinkBlock.js.map +1 -0
  385. package/dist/utils/parsing/xmlParser.d.ts +69 -0
  386. package/dist/utils/parsing/xmlParser.d.ts.map +1 -0
  387. package/dist/utils/parsing/xmlParser.js +140 -0
  388. package/dist/utils/parsing/xmlParser.js.map +1 -0
  389. package/dist/utils/parsing/yamlParser.d.ts +64 -0
  390. package/dist/utils/parsing/yamlParser.d.ts.map +1 -0
  391. package/dist/utils/parsing/yamlParser.js +129 -0
  392. package/dist/utils/parsing/yamlParser.js.map +1 -0
  393. package/dist/utils/scheduling/scheduler.d.ts +174 -0
  394. package/dist/utils/scheduling/scheduler.d.ts.map +1 -0
  395. package/dist/utils/scheduling/scheduler.js +248 -0
  396. package/dist/utils/scheduling/scheduler.js.map +1 -0
  397. package/dist/utils/security/idGenerator.d.ts +189 -0
  398. package/dist/utils/security/idGenerator.d.ts.map +1 -0
  399. package/dist/utils/security/idGenerator.js +301 -0
  400. package/dist/utils/security/idGenerator.js.map +1 -0
  401. package/dist/utils/security/index.d.ts +8 -0
  402. package/dist/utils/security/index.d.ts.map +1 -0
  403. package/dist/utils/security/index.js +8 -0
  404. package/dist/utils/security/index.js.map +1 -0
  405. package/dist/utils/security/rateLimiter.d.ts +171 -0
  406. package/dist/utils/security/rateLimiter.d.ts.map +1 -0
  407. package/dist/utils/security/rateLimiter.js +294 -0
  408. package/dist/utils/security/rateLimiter.js.map +1 -0
  409. package/dist/utils/security/sanitization.d.ts +430 -0
  410. package/dist/utils/security/sanitization.d.ts.map +1 -0
  411. package/dist/utils/security/sanitization.js +759 -0
  412. package/dist/utils/security/sanitization.js.map +1 -0
  413. package/dist/utils/telemetry/index.d.ts +12 -0
  414. package/dist/utils/telemetry/index.d.ts.map +1 -0
  415. package/dist/utils/telemetry/index.js +12 -0
  416. package/dist/utils/telemetry/index.js.map +1 -0
  417. package/dist/utils/telemetry/instrumentation.d.ts +62 -0
  418. package/dist/utils/telemetry/instrumentation.d.ts.map +1 -0
  419. package/dist/utils/telemetry/instrumentation.js +223 -0
  420. package/dist/utils/telemetry/instrumentation.js.map +1 -0
  421. package/dist/utils/telemetry/metrics.d.ts +170 -0
  422. package/dist/utils/telemetry/metrics.d.ts.map +1 -0
  423. package/dist/utils/telemetry/metrics.js +205 -0
  424. package/dist/utils/telemetry/metrics.js.map +1 -0
  425. package/dist/utils/telemetry/semconv.d.ts +147 -0
  426. package/dist/utils/telemetry/semconv.d.ts.map +1 -0
  427. package/dist/utils/telemetry/semconv.js +159 -0
  428. package/dist/utils/telemetry/semconv.js.map +1 -0
  429. package/dist/utils/telemetry/trace.d.ts +141 -0
  430. package/dist/utils/telemetry/trace.d.ts.map +1 -0
  431. package/dist/utils/telemetry/trace.js +193 -0
  432. package/dist/utils/telemetry/trace.js.map +1 -0
  433. package/dist/utils/types/guards.d.ts +209 -0
  434. package/dist/utils/types/guards.d.ts.map +1 -0
  435. package/dist/utils/types/guards.js +229 -0
  436. package/dist/utils/types/guards.js.map +1 -0
  437. package/dist/utils/types/index.d.ts +6 -0
  438. package/dist/utils/types/index.d.ts.map +1 -0
  439. package/dist/utils/types/index.js +6 -0
  440. package/dist/utils/types/index.js.map +1 -0
  441. package/dist/worker.d.ts +59 -0
  442. package/dist/worker.d.ts.map +1 -0
  443. package/dist/worker.js +216 -0
  444. package/dist/worker.js.map +1 -0
  445. package/package.json +377 -0
  446. package/skills/README.md +38 -0
  447. package/skills/add-export/SKILL.md +49 -0
  448. package/skills/add-prompt/SKILL.md +97 -0
  449. package/skills/add-provider/SKILL.md +53 -0
  450. package/skills/add-resource/SKILL.md +107 -0
  451. package/skills/add-service/SKILL.md +113 -0
  452. package/skills/add-tool/SKILL.md +110 -0
  453. package/skills/api-auth/SKILL.md +173 -0
  454. package/skills/api-config/SKILL.md +68 -0
  455. package/skills/api-context/SKILL.md +321 -0
  456. package/skills/api-errors/SKILL.md +146 -0
  457. package/skills/api-services/SKILL.md +24 -0
  458. package/skills/api-services/references/graph.md +124 -0
  459. package/skills/api-services/references/llm.md +46 -0
  460. package/skills/api-services/references/speech.md +72 -0
  461. package/skills/api-testing/SKILL.md +263 -0
  462. package/skills/api-utils/SKILL.md +106 -0
  463. package/skills/api-utils/references/formatting.md +237 -0
  464. package/skills/api-utils/references/parsing.md +263 -0
  465. package/skills/api-utils/references/security.md +226 -0
  466. package/skills/api-workers/SKILL.md +165 -0
  467. package/skills/devcheck/SKILL.md +31 -0
  468. package/skills/maintenance/SKILL.md +52 -0
  469. package/skills/migrate-mcp-ts-template/SKILL.md +131 -0
  470. package/skills/release/SKILL.md +67 -0
  471. package/skills/setup/SKILL.md +89 -0
  472. package/skills/walkthrough-init/SKILL.md +50 -0
  473. package/templates/.env.example +17 -0
  474. package/templates/AGENTS.md +113 -0
  475. package/templates/CLAUDE.md +113 -0
  476. package/templates/_tsconfig.json +33 -0
  477. package/templates/biome.template.json +43 -0
  478. package/templates/package.json +26 -0
  479. package/templates/src/index.ts +16 -0
  480. package/templates/src/mcp-server/prompts/definitions/echo.prompt.ts +19 -0
  481. package/templates/src/mcp-server/resources/definitions/echo.resource.ts +30 -0
  482. package/templates/src/mcp-server/tools/definitions/echo.tool.ts +24 -0
  483. package/templates/vitest.config.ts +12 -0
  484. package/tsconfig.base.json +44 -0
  485. package/vitest.config.base.ts +38 -0
@@ -0,0 +1,674 @@
1
+ /**
2
+ * @fileoverview Markdown builder utility for creating well-structured, semantic markdown content
3
+ * @module utils/formatting/markdownBuilder
4
+ */
5
+ /**
6
+ * Utility class for building well-formatted markdown content with consistent structure.
7
+ *
8
+ * Provides a fluent API for creating markdown documents with proper spacing, hierarchy,
9
+ * and semantic structure. Eliminates string concatenation and ensures consistent
10
+ * formatting across tool response formatters. Each method appends to an internal buffer
11
+ * and returns `this` for chaining; call {@link MarkdownBuilder.build} to produce the
12
+ * final string.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const output = new MarkdownBuilder()
17
+ * .h1('Commit Created Successfully')
18
+ * .keyValue('Commit Hash', 'abc123def')
19
+ * .keyValue('Author', 'John Doe')
20
+ * .section('Files Changed', () => {
21
+ * // `section` calls the callback immediately; builder state is mutated in place
22
+ * })
23
+ * .list(['file1.ts', 'file2.ts'])
24
+ * .build();
25
+ * ```
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * // Using the `markdown()` factory shorthand
30
+ * import { markdown } from '@cyanheads/mcp-ts-core/utils/formatting';
31
+ *
32
+ * const md = markdown()
33
+ * .h2('Results')
34
+ * .table(['Name', 'Status'], [['foo', 'ok'], ['bar', 'fail']])
35
+ * .build();
36
+ * ```
37
+ */
38
+ export class MarkdownBuilder {
39
+ sections = [];
40
+ /**
41
+ * Add a level 1 heading (`# text`).
42
+ *
43
+ * @param text - The heading text
44
+ * @param emoji - Optional emoji prepended before the text with a space
45
+ * @returns this builder for chaining
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * markdown().h1('Report').build(); // '# Report'
50
+ * markdown().h1('Report', '📋').build(); // '# 📋 Report'
51
+ * ```
52
+ */
53
+ h1(text, emoji) {
54
+ const prefix = emoji ? `${emoji} ` : '';
55
+ this.sections.push(`# ${prefix}${text}\n\n`);
56
+ return this;
57
+ }
58
+ /**
59
+ * Add a level 2 heading (`## text`).
60
+ *
61
+ * @param text - The heading text
62
+ * @param emoji - Optional emoji prepended before the text with a space
63
+ * @returns this builder for chaining
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * markdown().h2('Section').build(); // '## Section'
68
+ * ```
69
+ */
70
+ h2(text, emoji) {
71
+ const prefix = emoji ? `${emoji} ` : '';
72
+ this.sections.push(`## ${prefix}${text}\n\n`);
73
+ return this;
74
+ }
75
+ /**
76
+ * Add a level 3 heading (`### text`).
77
+ *
78
+ * @param text - The heading text
79
+ * @param emoji - Optional emoji prepended before the text with a space
80
+ * @returns this builder for chaining
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * markdown().h3('Subsection').build(); // '### Subsection'
85
+ * ```
86
+ */
87
+ h3(text, emoji) {
88
+ const prefix = emoji ? `${emoji} ` : '';
89
+ this.sections.push(`### ${prefix}${text}\n\n`);
90
+ return this;
91
+ }
92
+ /**
93
+ * Add a level 4 heading (`#### text`).
94
+ *
95
+ * @param text - The heading text
96
+ * @param emoji - Optional emoji prepended before the text with a space
97
+ * @returns this builder for chaining
98
+ *
99
+ * @example
100
+ * ```typescript
101
+ * markdown().h4('Detail').build(); // '#### Detail'
102
+ * ```
103
+ */
104
+ h4(text, emoji) {
105
+ const prefix = emoji ? `${emoji} ` : '';
106
+ this.sections.push(`#### ${prefix}${text}\n\n`);
107
+ return this;
108
+ }
109
+ /**
110
+ * Add a bold key-value pair on a single line (`**key:** value`).
111
+ * `null` values are rendered as the string `'null'`.
112
+ *
113
+ * @param key - The key label, rendered in bold
114
+ * @param value - The value; `null` renders as `'null'`
115
+ * @returns this builder for chaining
116
+ *
117
+ * @example
118
+ * ```typescript
119
+ * markdown().keyValue('Status', 'active').build(); // '**Status:** active'
120
+ * markdown().keyValue('Count', 42).build(); // '**Count:** 42'
121
+ * markdown().keyValue('Flag', null).build(); // '**Flag:** null'
122
+ * ```
123
+ */
124
+ keyValue(key, value) {
125
+ const displayValue = value === null ? 'null' : String(value);
126
+ this.sections.push(`**${key}:** ${displayValue}\n`);
127
+ return this;
128
+ }
129
+ /**
130
+ * Add a plain (unbolded) key-value pair on a single line (`key: value`).
131
+ * Use when less visual emphasis is desired compared to {@link keyValue}.
132
+ * `null` values are rendered as the string `'null'`.
133
+ *
134
+ * @param key - The key label, rendered without formatting
135
+ * @param value - The value; `null` renders as `'null'`
136
+ * @returns this builder for chaining
137
+ *
138
+ * @example
139
+ * ```typescript
140
+ * markdown().keyValuePlain('host', 'localhost').build(); // 'host: localhost'
141
+ * ```
142
+ */
143
+ keyValuePlain(key, value) {
144
+ const displayValue = value === null ? 'null' : String(value);
145
+ this.sections.push(`${key}: ${displayValue}\n`);
146
+ return this;
147
+ }
148
+ /**
149
+ * Add a bulleted (`-`) or numbered list. Empty arrays are silently ignored.
150
+ *
151
+ * @param items - Array of string items to render
152
+ * @param ordered - When `true`, renders a numbered list (`1.`, `2.`, …); defaults to `false` (bulleted)
153
+ * @returns this builder for chaining
154
+ *
155
+ * @example
156
+ * ```typescript
157
+ * markdown().list(['alpha', 'beta', 'gamma']).build();
158
+ * // - alpha
159
+ * // - beta
160
+ * // - gamma
161
+ *
162
+ * markdown().list(['first', 'second'], true).build();
163
+ * // 1. first
164
+ * // 2. second
165
+ * ```
166
+ */
167
+ list(items, ordered = false) {
168
+ if (items.length === 0)
169
+ return this;
170
+ const marker = ordered ? (i) => `${i + 1}.` : () => '-';
171
+ this.sections.push(`${items.map((item, i) => `${marker(i)} ${item}`).join('\n')}\n\n`);
172
+ return this;
173
+ }
174
+ /**
175
+ * Add a fenced code block with optional syntax highlighting.
176
+ *
177
+ * @param content - The code content placed verbatim inside the fence
178
+ * @param language - Language identifier for syntax highlighting (e.g. `'typescript'`, `'json'`, `'diff'`); defaults to no language
179
+ * @returns this builder for chaining
180
+ *
181
+ * @example
182
+ * ```typescript
183
+ * markdown().codeBlock('const x = 1;', 'typescript').build();
184
+ * // ```typescript
185
+ * // const x = 1;
186
+ * // ```
187
+ * ```
188
+ */
189
+ codeBlock(content, language = '') {
190
+ this.sections.push(`\`\`\`${language}\n${content}\n\`\`\`\n\n`);
191
+ return this;
192
+ }
193
+ /**
194
+ * Append inline code wrapped in single backticks (`` `code` ``).
195
+ * No trailing newline is added — suitable for inline use within a sentence.
196
+ *
197
+ * @param code - The code text to wrap
198
+ * @returns this builder for chaining
199
+ *
200
+ * @example
201
+ * ```typescript
202
+ * markdown().text('Call ').inlineCode('build()').text(' when done.').build();
203
+ * // Call `build()` when done.
204
+ * ```
205
+ */
206
+ inlineCode(code) {
207
+ this.sections.push(`\`${code}\``);
208
+ return this;
209
+ }
210
+ /**
211
+ * Add a paragraph of text followed by two newlines.
212
+ *
213
+ * @param text - The paragraph content
214
+ * @returns this builder for chaining
215
+ *
216
+ * @example
217
+ * ```typescript
218
+ * markdown().paragraph('Hello world.').paragraph('Second paragraph.').build();
219
+ * // Hello world.
220
+ * //
221
+ * // Second paragraph.
222
+ * ```
223
+ */
224
+ paragraph(text) {
225
+ this.sections.push(`${text}\n\n`);
226
+ return this;
227
+ }
228
+ /**
229
+ * Add a blockquote. Each line of `text` is prefixed with `> `.
230
+ *
231
+ * @param text - The quoted text; multi-line strings are handled correctly
232
+ * @returns this builder for chaining
233
+ *
234
+ * @example
235
+ * ```typescript
236
+ * markdown().blockquote('Line one\nLine two').build();
237
+ * // > Line one
238
+ * // > Line two
239
+ * ```
240
+ */
241
+ blockquote(text) {
242
+ const lines = text.split('\n');
243
+ const quoted = lines.map((line) => `> ${line}`).join('\n');
244
+ this.sections.push(`${quoted}\n\n`);
245
+ return this;
246
+ }
247
+ /**
248
+ * Add a horizontal rule.
249
+ * @returns this builder for chaining
250
+ */
251
+ hr() {
252
+ this.sections.push('---\n\n');
253
+ return this;
254
+ }
255
+ /**
256
+ * Append an inline markdown link (`[text](url)`).
257
+ * No trailing newline is added — suitable for inline use within a sentence.
258
+ *
259
+ * @param text - The visible link label
260
+ * @param url - The link target URL
261
+ * @returns this builder for chaining
262
+ *
263
+ * @example
264
+ * ```typescript
265
+ * markdown().text('See ').link('the docs', 'https://example.com').text(' for details.').build();
266
+ * // See [the docs](https://example.com) for details.
267
+ * ```
268
+ */
269
+ link(text, url) {
270
+ this.sections.push(`[${text}](${url})`);
271
+ return this;
272
+ }
273
+ /**
274
+ * Add a GFM-style table. Returns without modification if `headers` or `rows` is empty.
275
+ * All separator cells use `---`; no alignment syntax is applied.
276
+ *
277
+ * @param headers - Column header labels
278
+ * @param rows - Data rows; each inner array should have the same length as `headers`
279
+ * @returns this builder for chaining
280
+ *
281
+ * @example
282
+ * ```typescript
283
+ * markdown().table(['Name', 'Status'], [['foo', 'ok'], ['bar', 'fail']]).build();
284
+ * // | Name | Status |
285
+ * // | --- | --- |
286
+ * // | foo | ok |
287
+ * // | bar | fail |
288
+ * ```
289
+ */
290
+ table(headers, rows) {
291
+ if (headers.length === 0 || rows.length === 0)
292
+ return this;
293
+ // Header row
294
+ this.sections.push(`| ${headers.join(' | ')} |\n`);
295
+ // Separator row
296
+ this.sections.push(`| ${headers.map(() => '---').join(' | ')} |\n`);
297
+ // Data rows
298
+ rows.forEach((row) => {
299
+ this.sections.push(`| ${row.join(' | ')} |\n`);
300
+ });
301
+ this.sections.push('\n');
302
+ return this;
303
+ }
304
+ section(title, levelOrContent, content) {
305
+ let level;
306
+ let callback;
307
+ if (typeof levelOrContent === 'function') {
308
+ level = 2;
309
+ callback = levelOrContent;
310
+ }
311
+ else {
312
+ level = levelOrContent;
313
+ // Safe: the overload signatures guarantee content is provided when level is a number
314
+ callback = content ?? (() => { });
315
+ }
316
+ switch (level) {
317
+ case 2:
318
+ this.h2(title);
319
+ break;
320
+ case 3:
321
+ this.h3(title);
322
+ break;
323
+ case 4:
324
+ this.h4(title);
325
+ break;
326
+ }
327
+ callback();
328
+ return this;
329
+ }
330
+ /**
331
+ * Add a collapsible `<details>`/`<summary>` HTML block.
332
+ * The `summary` is always visible; `details` content is collapsed by default.
333
+ * Not all markdown renderers support this — GitHub and GitLab do.
334
+ *
335
+ * @param summary - The always-visible summary label
336
+ * @param details - The collapsible body content (plain text or markdown)
337
+ * @returns this builder for chaining
338
+ *
339
+ * @example
340
+ * ```typescript
341
+ * markdown().details('Show stack trace', 'Error: something went wrong\n at foo.ts:10').build();
342
+ * // <details>
343
+ * // <summary>Show stack trace</summary>
344
+ * //
345
+ * // Error: something went wrong
346
+ * // at foo.ts:10
347
+ * //
348
+ * // </details>
349
+ * ```
350
+ */
351
+ details(summary, details) {
352
+ this.sections.push(`<details>\n<summary>${summary}</summary>\n\n`);
353
+ this.sections.push(`${details}\n\n`);
354
+ this.sections.push(`</details>\n\n`);
355
+ return this;
356
+ }
357
+ /**
358
+ * Add a status/alert box (GitHub/GitLab style).
359
+ * Renders as a highlighted blockquote with an icon.
360
+ *
361
+ * Supported types:
362
+ * - 'note': 📝 Neutral information
363
+ * - 'tip': 💡 Helpful suggestions
364
+ * - 'important': ❗ Critical information
365
+ * - 'warning': ⚠️ Warning/caution
366
+ * - 'caution': 🚨 Danger/destructive action
367
+ *
368
+ * @param type - Alert type
369
+ * @param content - Alert content (can be multi-line)
370
+ * @returns this builder for chaining
371
+ *
372
+ * @example
373
+ * ```typescript
374
+ * md.alert('warning', 'This operation cannot be undone!');
375
+ * // Renders: > [!WARNING]
376
+ * // > This operation cannot be undone!
377
+ * ```
378
+ */
379
+ alert(type, content) {
380
+ const typeUpper = type.toUpperCase();
381
+ const lines = content.split('\n');
382
+ this.sections.push(`> [!${typeUpper}]\n`);
383
+ lines.forEach((line) => {
384
+ this.sections.push(`> ${line}\n`);
385
+ });
386
+ this.sections.push('\n');
387
+ return this;
388
+ }
389
+ /**
390
+ * Add a task list with checkboxes (GitHub style).
391
+ *
392
+ * @param items - Array of tasks with checked status
393
+ * @returns this builder for chaining
394
+ *
395
+ * @example
396
+ * ```typescript
397
+ * md.taskList([
398
+ * { checked: true, text: 'Complete setup' },
399
+ * { checked: false, text: 'Run tests' },
400
+ * ]);
401
+ * // Renders: - [x] Complete setup
402
+ * // - [ ] Run tests
403
+ * ```
404
+ */
405
+ taskList(items) {
406
+ if (items.length === 0)
407
+ return this;
408
+ this.sections.push(`${items.map((item) => `- [${item.checked ? 'x' : ' '}] ${item.text}`).join('\n')}\n\n`);
409
+ return this;
410
+ }
411
+ /**
412
+ * Add an image with alt text and optional title.
413
+ *
414
+ * @param altText - Alternative text for the image
415
+ * @param url - Image URL
416
+ * @param title - Optional title (shown on hover)
417
+ * @returns this builder for chaining
418
+ *
419
+ * @example
420
+ * ```typescript
421
+ * md.image('Architecture diagram', '/assets/diagram.png', 'System Architecture');
422
+ * // Renders: ![Architecture diagram](/assets/diagram.png "System Architecture")
423
+ * ```
424
+ */
425
+ image(altText, url, title) {
426
+ const titlePart = title ? ` "${title}"` : '';
427
+ this.sections.push(`![${altText}](${url}${titlePart})\n\n`);
428
+ return this;
429
+ }
430
+ /**
431
+ * Add strikethrough text.
432
+ *
433
+ * @param text - Text to strike through
434
+ * @returns this builder for chaining
435
+ *
436
+ * @example
437
+ * ```typescript
438
+ * md.text('Price: ').strikethrough('$100').text(' $80');
439
+ * // Renders: Price: ~~$100~~ $80
440
+ * ```
441
+ */
442
+ strikethrough(text) {
443
+ this.sections.push(`~~${text}~~`);
444
+ return this;
445
+ }
446
+ /**
447
+ * Add a `diff`-language fenced code block showing additions and deletions.
448
+ * Rendering order: context lines (two-space indent) → deletions (`- ` prefix) → additions (`+ ` prefix).
449
+ * If all three arrays are empty or omitted, nothing is appended.
450
+ *
451
+ * @param changes - Line arrays for the diff
452
+ * @param changes.context - Unchanged context lines (rendered with two-space indent)
453
+ * @param changes.deletions - Removed lines (rendered with `- ` prefix)
454
+ * @param changes.additions - Added lines (rendered with `+ ` prefix)
455
+ * @returns this builder for chaining
456
+ *
457
+ * @example
458
+ * ```typescript
459
+ * markdown().diff({
460
+ * context: ['// Configuration'],
461
+ * deletions: ['const oldFeature = false;'],
462
+ * additions: ['const newFeature = true;'],
463
+ * }).build();
464
+ * // ```diff
465
+ * // // Configuration
466
+ * // - const oldFeature = false;
467
+ * // + const newFeature = true;
468
+ * // ```
469
+ * ```
470
+ */
471
+ diff(changes) {
472
+ const lines = [];
473
+ // Context lines (no prefix)
474
+ if (changes.context) {
475
+ lines.push(...changes.context.map((line) => ` ${line}`));
476
+ }
477
+ // Deletions (- prefix)
478
+ if (changes.deletions) {
479
+ lines.push(...changes.deletions.map((line) => `- ${line}`));
480
+ }
481
+ // Additions (+ prefix)
482
+ if (changes.additions) {
483
+ lines.push(...changes.additions.map((line) => `+ ${line}`));
484
+ }
485
+ if (lines.length > 0) {
486
+ this.codeBlock(lines.join('\n'), 'diff');
487
+ }
488
+ return this;
489
+ }
490
+ /**
491
+ * Add a badge/shield (uses shields.io style).
492
+ *
493
+ * @param label - Badge label (left side)
494
+ * @param message - Badge message (right side)
495
+ * @param color - Optional color (e.g., 'green', 'red', 'blue', 'yellow')
496
+ * @returns this builder for chaining
497
+ *
498
+ * @example
499
+ * ```typescript
500
+ * md.badge('build', 'passing', 'green');
501
+ * // Renders: ![build: passing](https://img.shields.io/badge/build-passing-green)
502
+ * ```
503
+ */
504
+ badge(label, message, color = 'blue') {
505
+ const encodedLabel = encodeURIComponent(label);
506
+ const encodedMessage = encodeURIComponent(message);
507
+ const url = `https://img.shields.io/badge/${encodedLabel}-${encodedMessage}-${color}`;
508
+ this.sections.push(`![${label}: ${message}](${url})`);
509
+ return this;
510
+ }
511
+ /**
512
+ * Add bold text.
513
+ *
514
+ * @param text - Text to make bold
515
+ * @returns this builder for chaining
516
+ *
517
+ * @example
518
+ * ```typescript
519
+ * md.text('This is ').bold('important').text(' information.');
520
+ * // Renders: This is **important** information.
521
+ * ```
522
+ */
523
+ bold(text) {
524
+ this.sections.push(`**${text}**`);
525
+ return this;
526
+ }
527
+ /**
528
+ * Add italic text.
529
+ *
530
+ * @param text - Text to make italic
531
+ * @returns this builder for chaining
532
+ *
533
+ * @example
534
+ * ```typescript
535
+ * md.text('This is ').italic('emphasized').text('.');
536
+ * // Renders: This is *emphasized*.
537
+ * ```
538
+ */
539
+ italic(text) {
540
+ this.sections.push(`*${text}*`);
541
+ return this;
542
+ }
543
+ /**
544
+ * Add bold and italic text.
545
+ *
546
+ * @param text - Text to make bold and italic
547
+ * @returns this builder for chaining
548
+ *
549
+ * @example
550
+ * ```typescript
551
+ * md.boldItalic('Very important');
552
+ * // Renders: ***Very important***
553
+ * ```
554
+ */
555
+ boldItalic(text) {
556
+ this.sections.push(`***${text}***`);
557
+ return this;
558
+ }
559
+ /**
560
+ * Append a raw markdown string directly to the buffer without any transformation.
561
+ * Use this for custom formatting not covered by other methods.
562
+ *
563
+ * @param markdown - Raw markdown string appended verbatim
564
+ * @returns this builder for chaining
565
+ *
566
+ * @example
567
+ * ```typescript
568
+ * markdown().raw('> custom blockquote\n\n').build();
569
+ * // > custom blockquote
570
+ * ```
571
+ */
572
+ raw(markdown) {
573
+ this.sections.push(markdown);
574
+ return this;
575
+ }
576
+ /**
577
+ * Add a blank line for spacing.
578
+ * @returns this builder for chaining
579
+ */
580
+ blankLine() {
581
+ this.sections.push('\n');
582
+ return this;
583
+ }
584
+ /**
585
+ * Append plain text without any markdown formatting or implicit line breaks.
586
+ * Useful for building inline content by interleaving with methods like
587
+ * {@link bold}, {@link italic}, {@link inlineCode}, and {@link link}.
588
+ *
589
+ * @param text - The text to append verbatim
590
+ * @returns this builder for chaining
591
+ *
592
+ * @example
593
+ * ```typescript
594
+ * markdown().text('Result: ').bold('42').text(' items found.').build();
595
+ * // Result: **42** items found.
596
+ * ```
597
+ */
598
+ text(text) {
599
+ this.sections.push(text);
600
+ return this;
601
+ }
602
+ /**
603
+ * Conditionally append content. The callback is invoked synchronously only when
604
+ * `condition` is `true`; otherwise the builder is returned unchanged.
605
+ *
606
+ * @param condition - When `true`, the callback is invoked
607
+ * @param content - Callback that appends content to this builder
608
+ * @returns this builder for chaining
609
+ *
610
+ * @example
611
+ * ```typescript
612
+ * md.when(files.length > 0, () => {
613
+ * md.h2('Files Changed').list(files);
614
+ * });
615
+ * ```
616
+ */
617
+ when(condition, content) {
618
+ if (condition) {
619
+ content();
620
+ }
621
+ return this;
622
+ }
623
+ /**
624
+ * Concatenate all buffered sections and return the final markdown string.
625
+ * Leading and trailing whitespace is trimmed so documents always end cleanly.
626
+ * The builder instance is NOT reset — call {@link reset} explicitly if reuse is needed.
627
+ *
628
+ * @returns The complete markdown document as a trimmed string
629
+ *
630
+ * @example
631
+ * ```typescript
632
+ * const output = markdown().h1('Hello').paragraph('World').build();
633
+ * // '# Hello\n\nWorld'
634
+ * ```
635
+ */
636
+ build() {
637
+ return this.sections.join('').trim();
638
+ }
639
+ /**
640
+ * Clear all buffered content so the builder can be reused for a new document.
641
+ *
642
+ * @returns this builder for chaining
643
+ *
644
+ * @example
645
+ * ```typescript
646
+ * const md = markdown().h1('Draft');
647
+ * md.reset().h1('Final').build(); // '# Final'
648
+ * ```
649
+ */
650
+ reset() {
651
+ this.sections = [];
652
+ return this;
653
+ }
654
+ }
655
+ /**
656
+ * Factory function that creates a new {@link MarkdownBuilder} instance.
657
+ * Prefer this over `new MarkdownBuilder()` for concise call-site syntax.
658
+ *
659
+ * @returns A fresh, empty `MarkdownBuilder`
660
+ *
661
+ * @example
662
+ * ```typescript
663
+ * import { markdown } from '@cyanheads/mcp-ts-core/utils/formatting';
664
+ *
665
+ * const output = markdown()
666
+ * .h1('Summary')
667
+ * .keyValue('Total', 5)
668
+ * .build();
669
+ * ```
670
+ */
671
+ export function markdown() {
672
+ return new MarkdownBuilder();
673
+ }
674
+ //# sourceMappingURL=markdownBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdownBuilder.js","sourceRoot":"","sources":["../../../src/utils/formatting/markdownBuilder.ts"],"names":[],"mappings":"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"}