@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,163 @@
1
+ /**
2
+ * @fileoverview Provides a utility class for extracting and parsing YAML frontmatter from markdown.
3
+ * Supports Obsidian-style and Jekyll-style frontmatter (YAML between --- delimiters).
4
+ * Leverages the existing yamlParser for parsing extracted YAML content.
5
+ * @module src/utils/parsing/frontmatterParser
6
+ */
7
+ import { JsonRpcErrorCode, McpError } from '../../types-global/errors.js';
8
+ import { logger } from '../../utils/internal/logger.js';
9
+ import { requestContextService } from '../../utils/internal/requestContext.js';
10
+ import { yamlParser } from './yamlParser.js';
11
+ /**
12
+ * Regular expression to extract frontmatter from markdown.
13
+ * Matches YAML content between --- delimiters at the start of the document.
14
+ * - Group 1: YAML content between delimiters
15
+ * - Group 2: Remaining markdown content
16
+ * @private
17
+ */
18
+ const frontmatterRegex = /^---\s*\n([\s\S]*?)^---\s*([\s\S]*)$/m;
19
+ /**
20
+ * Utility class for extracting and parsing YAML frontmatter from markdown documents.
21
+ * Supports Obsidian-style and Jekyll-style frontmatter (YAML between `---` delimiters).
22
+ * Delegates YAML parsing to {@link yamlParser}.
23
+ */
24
+ export class FrontmatterParser {
25
+ /**
26
+ * Extracts and parses YAML frontmatter from a markdown string.
27
+ *
28
+ * Looks for a `---`-delimited block at the very start of the document. If
29
+ * found, the YAML inside is parsed via {@link yamlParser} and the remaining
30
+ * markdown is returned separately. An empty `---\n---` block is accepted and
31
+ * returns `frontmatter: {}` with `hasFrontmatter: true`. If no frontmatter
32
+ * block is present, the original string is returned unchanged.
33
+ *
34
+ * @template T - The expected shape of the parsed frontmatter object. Defaults to `unknown`.
35
+ * @param markdown - The markdown string that may contain a frontmatter block.
36
+ * @param context - Optional {@link RequestContext} used for correlated logging.
37
+ * @returns A {@link FrontmatterResult} with `frontmatter`, `content`, and `hasFrontmatter`.
38
+ * @throws {McpError} With code `ValidationError` if the YAML content is present but malformed.
39
+ * @example
40
+ * ```typescript
41
+ * import { frontmatterParser } from './frontmatterParser.js';
42
+ *
43
+ * const md = `---\ntitle: Hello\ntags: [a, b]\n---\n\n# Body`;
44
+ * const result = await frontmatterParser.parse<{ title: string; tags: string[] }>(md);
45
+ * // result.frontmatter → { title: 'Hello', tags: ['a', 'b'] }
46
+ * // result.content → '\n# Body'
47
+ * // result.hasFrontmatter → true
48
+ * ```
49
+ */
50
+ async parse(markdown, context) {
51
+ const match = markdown.match(frontmatterRegex);
52
+ if (!match) {
53
+ // No frontmatter found - return original content
54
+ const logContext = context ||
55
+ requestContextService.createRequestContext({
56
+ operation: 'FrontmatterParser.noFrontmatter',
57
+ });
58
+ logger.debug('No frontmatter detected in markdown.', logContext);
59
+ return {
60
+ frontmatter: {},
61
+ content: markdown,
62
+ hasFrontmatter: false,
63
+ };
64
+ }
65
+ const yamlContent = match[1] ?? '';
66
+ const markdownContent = match[2] ?? '';
67
+ const logContext = context ||
68
+ requestContextService.createRequestContext({
69
+ operation: 'FrontmatterParser.parse',
70
+ });
71
+ logger.debug('Frontmatter detected, extracting and parsing.', {
72
+ ...logContext,
73
+ yamlLength: yamlContent.length,
74
+ contentLength: markdownContent.length,
75
+ });
76
+ // Validate that we have YAML content
77
+ const trimmedYaml = yamlContent.trim();
78
+ if (!trimmedYaml) {
79
+ logger.debug('Empty frontmatter block detected.', logContext);
80
+ return {
81
+ frontmatter: {},
82
+ content: markdownContent,
83
+ hasFrontmatter: true,
84
+ };
85
+ }
86
+ try {
87
+ // Use existing yamlParser for parsing (handles <think> blocks too)
88
+ const parsedFrontmatter = await yamlParser.parse(yamlContent, context);
89
+ logger.debug('Frontmatter parsed successfully.', {
90
+ ...logContext,
91
+ frontmatterKeys: parsedFrontmatter &&
92
+ typeof parsedFrontmatter === 'object' &&
93
+ !Array.isArray(parsedFrontmatter)
94
+ ? Object.keys(parsedFrontmatter)
95
+ : [],
96
+ });
97
+ return {
98
+ frontmatter: parsedFrontmatter,
99
+ content: markdownContent,
100
+ hasFrontmatter: true,
101
+ };
102
+ }
103
+ catch (e) {
104
+ const error = e instanceof Error ? e : new Error(String(e));
105
+ const errorLogContext = context ||
106
+ requestContextService.createRequestContext({
107
+ operation: 'FrontmatterParser.parseError',
108
+ });
109
+ logger.error('Failed to parse frontmatter YAML content.', {
110
+ ...errorLogContext,
111
+ errorDetails: error.message,
112
+ yamlContentSample: yamlContent.substring(0, 200),
113
+ });
114
+ // Re-throw McpError from yamlParser or create new one
115
+ if (error instanceof McpError) {
116
+ throw error;
117
+ }
118
+ throw new McpError(JsonRpcErrorCode.ValidationError, `Failed to parse frontmatter: ${error.message}`, {
119
+ ...context,
120
+ yamlContentSample: yamlContent.substring(0, 200) + (yamlContent.length > 200 ? '...' : ''),
121
+ rawError: error instanceof Error ? error.stack : String(error),
122
+ });
123
+ }
124
+ }
125
+ }
126
+ /**
127
+ * Singleton instance of {@link FrontmatterParser}.
128
+ *
129
+ * Use this shared instance to extract and parse YAML frontmatter from markdown
130
+ * documents rather than constructing a new parser per call.
131
+ *
132
+ * @example
133
+ * ```typescript
134
+ * import { frontmatterParser } from './frontmatterParser.js';
135
+ * import { requestContextService } from '../../utils/internal/requestContext.js';
136
+ *
137
+ * const context = requestContextService.createRequestContext({ operation: 'ParseObsidianNote' });
138
+ *
139
+ * // Markdown with frontmatter
140
+ * const markdown = `---
141
+ * title: My Note
142
+ * tags: [productivity, notes]
143
+ * date: 2025-01-15
144
+ * ---
145
+ *
146
+ * # Note Content
147
+ * This is the actual note.`;
148
+ *
149
+ * const result = await frontmatterParser.parse(markdown, context);
150
+ * console.log(result.frontmatter); // { title: 'My Note', tags: [...], date: '2025-01-15' }
151
+ * console.log(result.content); // '\n# Note Content\nThis is the actual note.'
152
+ * console.log(result.hasFrontmatter); // true
153
+ *
154
+ * // Markdown without frontmatter
155
+ * const plainMarkdown = '# Just Content';
156
+ * const result2 = await frontmatterParser.parse(plainMarkdown, context);
157
+ * console.log(result2.frontmatter); // {}
158
+ * console.log(result2.content); // '# Just Content'
159
+ * console.log(result2.hasFrontmatter); // false
160
+ * ```
161
+ */
162
+ export const frontmatterParser = new FrontmatterParser();
163
+ //# sourceMappingURL=frontmatterParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatterParser.js","sourceRoot":"","sources":["../../../src/utils/parsing/frontmatterParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @fileoverview Barrel export for content parsing utilities.
3
+ * All parsers use lazy dynamic imports — install the underlying dependency
4
+ * only when you need a specific parser.
5
+ * @module utils/parsing
6
+ */
7
+ export { CsvParser, csvParser } from './csvParser.js';
8
+ export { dateParser, parseDateString, parseDateStringDetailed } from './dateParser.js';
9
+ export { FrontmatterParser, type FrontmatterResult, frontmatterParser, } from './frontmatterParser.js';
10
+ export { Allow, JsonParser, jsonParser } from './jsonParser.js';
11
+ export { type AddPageOptions, type DrawImageOptions, type DrawTextOptions, type EmbedImageOptions, type ExtractTextOptions, type ExtractTextResult, type FillFormOptions, type PageRange, type PdfMetadata, PdfParser, pdfParser, type SetMetadataOptions, } from './pdfParser.js';
12
+ export { thinkBlockRegex } from './thinkBlock.js';
13
+ export { XmlParser, xmlParser } from './xmlParser.js';
14
+ export { YamlParser, yamlParser } from './yamlParser.js';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,SAAS,EACT,SAAS,EACT,KAAK,kBAAkB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @fileoverview Barrel export for content parsing utilities.
3
+ * All parsers use lazy dynamic imports — install the underlying dependency
4
+ * only when you need a specific parser.
5
+ * @module utils/parsing
6
+ */
7
+ export { CsvParser, csvParser } from './csvParser.js';
8
+ export { dateParser, parseDateString, parseDateStringDetailed } from './dateParser.js';
9
+ export { FrontmatterParser, frontmatterParser, } from './frontmatterParser.js';
10
+ export { Allow, JsonParser, jsonParser } from './jsonParser.js';
11
+ export { PdfParser, pdfParser, } from './pdfParser.js';
12
+ export { thinkBlockRegex } from './thinkBlock.js';
13
+ export { XmlParser, xmlParser } from './xmlParser.js';
14
+ export { YamlParser, yamlParser } from './yamlParser.js';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/parsing/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EACL,iBAAiB,EAEjB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAUL,SAAS,EACT,SAAS,GAEV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,115 @@
1
+ import { type RequestContext } from '../../utils/internal/requestContext.js';
2
+ /**
3
+ * Bit flags specifying which partial JSON types are permissible during parsing.
4
+ * Mirrors `partial-json`'s `Allow` constants. Combine flags with bitwise OR
5
+ * to allow multiple partial types simultaneously.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * // Allow only partial strings and arrays
10
+ * const result = await jsonParser.parse(str, Allow.STR | Allow.ARR);
11
+ *
12
+ * // Allow everything (default)
13
+ * const result = await jsonParser.parse(str, Allow.ALL);
14
+ * ```
15
+ */
16
+ export declare const Allow: {
17
+ /** Allow partial strings. */
18
+ readonly STR: 1;
19
+ /** Allow partial numbers. */
20
+ readonly NUM: 2;
21
+ /** Allow partial arrays. */
22
+ readonly ARR: 4;
23
+ /** Allow partial objects. */
24
+ readonly OBJ: 8;
25
+ /** Allow partial null values. */
26
+ readonly NULL: 16;
27
+ /** Allow partial booleans. */
28
+ readonly BOOL: 32;
29
+ /** Allow NaN values. */
30
+ readonly NAN: 64;
31
+ /** Allow positive Infinity. */
32
+ readonly INFINITY: 128;
33
+ /** Allow negative Infinity. */
34
+ readonly _INFINITY: 256;
35
+ /** Allow both positive and negative Infinity (`INFINITY | _INFINITY`). */
36
+ readonly INF: number;
37
+ /** Allow all special values: NULL, BOOL, NAN, INFINITY, _INFINITY. */
38
+ readonly SPECIAL: number;
39
+ /** Allow all atomic types: STR, NUM, NULL, BOOL, NAN, INFINITY, _INFINITY. */
40
+ readonly ATOM: number;
41
+ /** Allow partial collections: ARR and OBJ. */
42
+ readonly COLLECTION: number;
43
+ /** Allow all partial types. */
44
+ readonly ALL: number;
45
+ };
46
+ /**
47
+ * Utility class for parsing potentially partial JSON strings.
48
+ * Wraps the `partial-json` library for robust JSON parsing, handling
49
+ * incomplete structures and optional `<think>` blocks from LLM outputs.
50
+ *
51
+ * All parse methods are async due to lazy loading of the `partial-json` peer dependency.
52
+ * Install it with: `bun add partial-json`
53
+ */
54
+ export declare class JsonParser {
55
+ /**
56
+ * Parses a JSON string, which may be partial or prefixed with a `<think>` block.
57
+ *
58
+ * If a `<think>...</think>` block is present at the start of the string, its content
59
+ * is logged at debug level and stripped before parsing. The remainder is then parsed
60
+ * using `partial-json`, which tolerates incomplete JSON structures.
61
+ *
62
+ * This method is async due to lazy loading of the `partial-json` peer dependency
63
+ * (`bun add partial-json`).
64
+ *
65
+ * @template T - The expected type of the parsed result. Defaults to `unknown`.
66
+ * @param jsonString - The raw string to parse. May include a leading `<think>` block
67
+ * and/or be a partial (incomplete) JSON value.
68
+ * @param allowPartial - Bitwise OR combination of `Allow` flags controlling which
69
+ * partial JSON types are accepted. Defaults to `Allow.ALL`.
70
+ * @param context - Optional `RequestContext` for correlated logging and error metadata.
71
+ * @returns The parsed JavaScript value cast to `T`.
72
+ * @throws {McpError} With `ValidationError` if the string is empty after stripping the
73
+ * `<think>` block and trimming, or if `partial-json` fails to parse the content.
74
+ * @throws {McpError} With `ConfigurationError` if the `partial-json` package is not installed.
75
+ * @example
76
+ * ```typescript
77
+ * import { jsonParser, Allow } from '../../utils/parsing/jsonParser.js';
78
+ *
79
+ * // Parse complete JSON
80
+ * const obj = await jsonParser.parse<{ key: string }>('{"key": "value"}');
81
+ * console.log(obj.key); // "value"
82
+ *
83
+ * // Parse partial JSON with a <think> prefix
84
+ * const partial = '<think>reasoning...</think>{"items": [1, 2,';
85
+ * const result = await jsonParser.parse(partial, Allow.ALL);
86
+ * console.log(result); // { items: [1, 2] }
87
+ * ```
88
+ */
89
+ parse<T = unknown>(jsonString: string, allowPartial?: number, context?: RequestContext): Promise<T>;
90
+ }
91
+ /**
92
+ * Singleton instance of `JsonParser`.
93
+ *
94
+ * Provides partial JSON parsing with `<think>` block stripping. Methods are async
95
+ * due to lazy loading of the `partial-json` peer dependency (`bun add partial-json`).
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * import { jsonParser, Allow } from '../../utils/parsing/jsonParser.js';
100
+ * import { requestContextService } from '../../utils/internal/requestContext.js';
101
+ *
102
+ * const ctx = requestContextService.createRequestContext({ operation: 'myOp' });
103
+ *
104
+ * // Full JSON
105
+ * const obj = await jsonParser.parse<{ key: string }>('{"key": "value"}', Allow.ALL, ctx);
106
+ * console.log(obj.key); // "value"
107
+ *
108
+ * // Partial JSON with think block
109
+ * const raw = '<think>reasoning...</think>{"key": "value", "arr": [1,';
110
+ * const partial = await jsonParser.parse(raw, Allow.ALL, ctx);
111
+ * console.log(partial); // { key: 'value', arr: [1] }
112
+ * ```
113
+ */
114
+ export declare const jsonParser: JsonParser;
115
+ //# sourceMappingURL=jsonParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonParser.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/jsonParser.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,cAAc,EAAyB,MAAM,oCAAoC,CAAC;AAchG;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,KAAK;IAChB,6BAA6B;;IAE7B,6BAA6B;;IAE7B,4BAA4B;;IAE5B,6BAA6B;;IAE7B,iCAAiC;;IAEjC,8BAA8B;;IAE9B,wBAAwB;;IAExB,+BAA+B;;IAE/B,+BAA+B;;IAE/B,0EAA0E;;IAE1E,sEAAsE;;IAEtE,8EAA8E;;IAE9E,8CAA8C;;IAE9C,+BAA+B;;CAEvB,CAAC;AAEX;;;;;;;GAOG;AACH,qBAAa,UAAU;IACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACG,KAAK,CAAC,CAAC,GAAG,OAAO,EACrB,UAAU,EAAE,MAAM,EAClB,YAAY,GAAE,MAAkB,EAChC,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,CAAC,CAAC;CA8Dd;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,UAAU,YAAmB,CAAC"}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * @fileoverview Provides a utility class for parsing potentially partial JSON strings.
3
+ * It wraps the 'partial-json' npm library and includes functionality to handle
4
+ * optional <think>...</think> blocks often found at the beginning of LLM outputs.
5
+ * @module src/utils/parsing/jsonParser
6
+ */
7
+ import { JsonRpcErrorCode, McpError } from '../../types-global/errors.js';
8
+ import { logger } from '../../utils/internal/logger.js';
9
+ import { requestContextService } from '../../utils/internal/requestContext.js';
10
+ import { thinkBlockRegex } from './thinkBlock.js';
11
+ let _partialJson;
12
+ async function getPartialJson() {
13
+ _partialJson ??= await import('partial-json').catch(() => {
14
+ throw new McpError(JsonRpcErrorCode.ConfigurationError, 'Install "partial-json" to use partial JSON parsing: bun add partial-json');
15
+ });
16
+ return _partialJson;
17
+ }
18
+ /**
19
+ * Bit flags specifying which partial JSON types are permissible during parsing.
20
+ * Mirrors `partial-json`'s `Allow` constants. Combine flags with bitwise OR
21
+ * to allow multiple partial types simultaneously.
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * // Allow only partial strings and arrays
26
+ * const result = await jsonParser.parse(str, Allow.STR | Allow.ARR);
27
+ *
28
+ * // Allow everything (default)
29
+ * const result = await jsonParser.parse(str, Allow.ALL);
30
+ * ```
31
+ */
32
+ export const Allow = {
33
+ /** Allow partial strings. */
34
+ STR: 0x1,
35
+ /** Allow partial numbers. */
36
+ NUM: 0x2,
37
+ /** Allow partial arrays. */
38
+ ARR: 0x4,
39
+ /** Allow partial objects. */
40
+ OBJ: 0x8,
41
+ /** Allow partial null values. */
42
+ NULL: 0x10,
43
+ /** Allow partial booleans. */
44
+ BOOL: 0x20,
45
+ /** Allow NaN values. */
46
+ NAN: 0x40,
47
+ /** Allow positive Infinity. */
48
+ INFINITY: 0x80,
49
+ /** Allow negative Infinity. */
50
+ _INFINITY: 0x100,
51
+ /** Allow both positive and negative Infinity (`INFINITY | _INFINITY`). */
52
+ INF: 0x80 | 0x100,
53
+ /** Allow all special values: NULL, BOOL, NAN, INFINITY, _INFINITY. */
54
+ SPECIAL: 0x10 | 0x20 | 0x40 | 0x80 | 0x100,
55
+ /** Allow all atomic types: STR, NUM, NULL, BOOL, NAN, INFINITY, _INFINITY. */
56
+ ATOM: 0x1 | 0x2 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100,
57
+ /** Allow partial collections: ARR and OBJ. */
58
+ COLLECTION: 0x4 | 0x8,
59
+ /** Allow all partial types. */
60
+ ALL: 0x1 | 0x2 | 0x4 | 0x8 | 0x10 | 0x20 | 0x40 | 0x80 | 0x100,
61
+ };
62
+ /**
63
+ * Utility class for parsing potentially partial JSON strings.
64
+ * Wraps the `partial-json` library for robust JSON parsing, handling
65
+ * incomplete structures and optional `<think>` blocks from LLM outputs.
66
+ *
67
+ * All parse methods are async due to lazy loading of the `partial-json` peer dependency.
68
+ * Install it with: `bun add partial-json`
69
+ */
70
+ export class JsonParser {
71
+ /**
72
+ * Parses a JSON string, which may be partial or prefixed with a `<think>` block.
73
+ *
74
+ * If a `<think>...</think>` block is present at the start of the string, its content
75
+ * is logged at debug level and stripped before parsing. The remainder is then parsed
76
+ * using `partial-json`, which tolerates incomplete JSON structures.
77
+ *
78
+ * This method is async due to lazy loading of the `partial-json` peer dependency
79
+ * (`bun add partial-json`).
80
+ *
81
+ * @template T - The expected type of the parsed result. Defaults to `unknown`.
82
+ * @param jsonString - The raw string to parse. May include a leading `<think>` block
83
+ * and/or be a partial (incomplete) JSON value.
84
+ * @param allowPartial - Bitwise OR combination of `Allow` flags controlling which
85
+ * partial JSON types are accepted. Defaults to `Allow.ALL`.
86
+ * @param context - Optional `RequestContext` for correlated logging and error metadata.
87
+ * @returns The parsed JavaScript value cast to `T`.
88
+ * @throws {McpError} With `ValidationError` if the string is empty after stripping the
89
+ * `<think>` block and trimming, or if `partial-json` fails to parse the content.
90
+ * @throws {McpError} With `ConfigurationError` if the `partial-json` package is not installed.
91
+ * @example
92
+ * ```typescript
93
+ * import { jsonParser, Allow } from '../../utils/parsing/jsonParser.js';
94
+ *
95
+ * // Parse complete JSON
96
+ * const obj = await jsonParser.parse<{ key: string }>('{"key": "value"}');
97
+ * console.log(obj.key); // "value"
98
+ *
99
+ * // Parse partial JSON with a <think> prefix
100
+ * const partial = '<think>reasoning...</think>{"items": [1, 2,';
101
+ * const result = await jsonParser.parse(partial, Allow.ALL);
102
+ * console.log(result); // { items: [1, 2] }
103
+ * ```
104
+ */
105
+ async parse(jsonString, allowPartial = Allow.ALL, context) {
106
+ let stringToParse = jsonString;
107
+ const match = jsonString.match(thinkBlockRegex);
108
+ if (match) {
109
+ const thinkContent = match[1]?.trim() ?? '';
110
+ const restOfString = match[2] ?? '';
111
+ const logContext = context ||
112
+ requestContextService.createRequestContext({
113
+ operation: 'JsonParser.thinkBlock',
114
+ });
115
+ if (thinkContent) {
116
+ logger.debug('LLM <think> block detected and logged.', {
117
+ ...logContext,
118
+ thinkContent,
119
+ });
120
+ }
121
+ else {
122
+ logger.debug('Empty LLM <think> block detected.', logContext);
123
+ }
124
+ stringToParse = restOfString;
125
+ }
126
+ stringToParse = stringToParse.trim();
127
+ if (!stringToParse) {
128
+ throw new McpError(JsonRpcErrorCode.ValidationError, 'JSON string is empty after removing <think> block and trimming.', context);
129
+ }
130
+ try {
131
+ const { parse: parsePartialJson } = await getPartialJson();
132
+ return parsePartialJson(stringToParse, allowPartial);
133
+ }
134
+ catch (e) {
135
+ const error = e instanceof Error ? e : new Error(String(e));
136
+ const errorLogContext = context ||
137
+ requestContextService.createRequestContext({
138
+ operation: 'JsonParser.parseError',
139
+ });
140
+ logger.error('Failed to parse JSON content.', {
141
+ ...errorLogContext,
142
+ errorDetails: error.message,
143
+ contentAttempted: stringToParse.substring(0, 200),
144
+ });
145
+ throw new McpError(JsonRpcErrorCode.ValidationError, `Failed to parse JSON: ${error.message}`, {
146
+ ...context,
147
+ originalContentSample: stringToParse.substring(0, 200) + (stringToParse.length > 200 ? '...' : ''),
148
+ rawError: error instanceof Error ? error.stack : String(error),
149
+ });
150
+ }
151
+ }
152
+ }
153
+ /**
154
+ * Singleton instance of `JsonParser`.
155
+ *
156
+ * Provides partial JSON parsing with `<think>` block stripping. Methods are async
157
+ * due to lazy loading of the `partial-json` peer dependency (`bun add partial-json`).
158
+ *
159
+ * @example
160
+ * ```typescript
161
+ * import { jsonParser, Allow } from '../../utils/parsing/jsonParser.js';
162
+ * import { requestContextService } from '../../utils/internal/requestContext.js';
163
+ *
164
+ * const ctx = requestContextService.createRequestContext({ operation: 'myOp' });
165
+ *
166
+ * // Full JSON
167
+ * const obj = await jsonParser.parse<{ key: string }>('{"key": "value"}', Allow.ALL, ctx);
168
+ * console.log(obj.key); // "value"
169
+ *
170
+ * // Partial JSON with think block
171
+ * const raw = '<think>reasoning...</think>{"key": "value", "arr": [1,';
172
+ * const partial = await jsonParser.parse(raw, Allow.ALL, ctx);
173
+ * console.log(partial); // { key: 'value', arr: [1] }
174
+ * ```
175
+ */
176
+ export const jsonParser = new JsonParser();
177
+ //# sourceMappingURL=jsonParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonParser.js","sourceRoot":"","sources":["../../../src/utils/parsing/jsonParser.ts"],"names":[],"mappings":"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"}