@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,400 @@
1
+ /**
2
+ * @fileoverview Tree formatter utility for visualizing hierarchical data structures.
3
+ * Supports ASCII, Unicode box-drawing, and compact tree styles with icons and metadata.
4
+ * @module src/utils/formatting/treeFormatter
5
+ */
6
+ import { JsonRpcErrorCode, McpError } from '../../types-global/errors.js';
7
+ import { logger } from '../../utils/internal/logger.js';
8
+ import { requestContextService } from '../../utils/internal/requestContext.js';
9
+ /**
10
+ * Utility class for formatting hierarchical data as tree structures.
11
+ *
12
+ * Renders a {@link TreeNode} graph as a multi-line string using ASCII, Unicode
13
+ * box-drawing, or compact indented styles. Handles arbitrary depth, optional icons,
14
+ * inline metadata, and detects circular references at render time.
15
+ *
16
+ * Use the exported {@link treeFormatter} singleton rather than constructing directly.
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import { treeFormatter } from '../../utils/formatting/treeFormatter.js';
21
+ *
22
+ * const tree: TreeNode = {
23
+ * name: 'src',
24
+ * children: [
25
+ * { name: 'index.ts' },
26
+ * { name: 'utils', children: [{ name: 'helper.ts' }] },
27
+ * ],
28
+ * };
29
+ *
30
+ * console.log(treeFormatter.format(tree, { style: 'unicode' }));
31
+ * // src
32
+ * // ├── index.ts
33
+ * // └── utils
34
+ * // └── helper.ts
35
+ * ```
36
+ */
37
+ export class TreeFormatter {
38
+ /**
39
+ * Default formatting options.
40
+ * @private
41
+ */
42
+ defaultOptions = {
43
+ style: 'unicode',
44
+ maxDepth: undefined,
45
+ showMetadata: false,
46
+ icons: false,
47
+ indent: ' ',
48
+ folderIcon: '📁',
49
+ fileIcon: '📄',
50
+ };
51
+ /**
52
+ * Track seen nodes for circular reference detection.
53
+ * @private
54
+ */
55
+ seenNodes = new Set();
56
+ /**
57
+ * Format a single tree into a multi-line string.
58
+ *
59
+ * Merges `options` with defaults, resets circular-reference tracking, then
60
+ * recursively renders each node with branch connectors, optional icons, and
61
+ * optional metadata. Lines are joined with `\n`.
62
+ *
63
+ * @param root - Root node of the tree. Must have a non-empty `name` string.
64
+ * @param options - Formatting options. Merged with defaults; all fields are optional.
65
+ * @param context - Optional request context for correlated log output. A new context
66
+ * is created automatically when omitted.
67
+ * @returns Multi-line tree string. The root node appears on the first line with no
68
+ * connector prefix; child nodes are indented and prefixed with branch connectors.
69
+ * @throws {McpError} With code `ValidationError` if `root` is missing or has no `name`.
70
+ * @throws {McpError} With code `InternalError` if rendering fails unexpectedly.
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * const tree = {
75
+ * name: 'src',
76
+ * children: [
77
+ * { name: 'index.ts' },
78
+ * {
79
+ * name: 'utils',
80
+ * children: [
81
+ * { name: 'helper.ts' },
82
+ * { name: 'types.ts' },
83
+ * ],
84
+ * },
85
+ * ],
86
+ * };
87
+ *
88
+ * console.log(treeFormatter.format(tree, { style: 'unicode', icons: true }));
89
+ * // 📁 src
90
+ * // ├── 📄 index.ts
91
+ * // └── 📁 utils
92
+ * // ├── 📄 helper.ts
93
+ * // └── 📄 types.ts
94
+ * ```
95
+ */
96
+ format(root, options, context) {
97
+ const logContext = context ||
98
+ requestContextService.createRequestContext({
99
+ operation: 'TreeFormatter.format',
100
+ });
101
+ // Validate input
102
+ if (!root || typeof root.name !== 'string') {
103
+ throw new McpError(JsonRpcErrorCode.ValidationError, 'Root node must have a name property', logContext);
104
+ }
105
+ const opts = {
106
+ ...this.defaultOptions,
107
+ ...options,
108
+ };
109
+ try {
110
+ // Reset circular reference detection
111
+ this.seenNodes.clear();
112
+ logger.debug('Formatting tree structure', {
113
+ ...logContext,
114
+ rootName: root.name,
115
+ style: opts.style,
116
+ });
117
+ const lines = [];
118
+ this.renderNode(root, '', true, true, lines, opts, 0);
119
+ const result = lines.join('\n');
120
+ logger.debug('Tree formatted successfully', {
121
+ ...logContext,
122
+ lineCount: lines.length,
123
+ });
124
+ return result;
125
+ }
126
+ catch (error) {
127
+ if (error instanceof McpError) {
128
+ throw error;
129
+ }
130
+ const message = error instanceof Error ? error.message : String(error);
131
+ const stack = error instanceof Error ? error.stack : undefined;
132
+ logger.error('Failed to format tree', {
133
+ ...logContext,
134
+ error: message,
135
+ });
136
+ throw new McpError(JsonRpcErrorCode.InternalError, `Failed to format tree: ${message}`, {
137
+ ...logContext,
138
+ originalError: stack,
139
+ });
140
+ }
141
+ }
142
+ /**
143
+ * Format multiple independent trees (forest) into a single string.
144
+ *
145
+ * Calls {@link format} on each root in order and joins the results with a blank
146
+ * line (`\n\n`) between them. Useful for rendering several top-level structures
147
+ * side-by-side in one output block (e.g. `src/`, `tests/`, `docs/`).
148
+ *
149
+ * @param roots - Non-empty array of root nodes. Each must satisfy the same
150
+ * constraints as the `root` parameter of {@link format}.
151
+ * @param options - Formatting options applied uniformly to every tree.
152
+ * @param context - Optional request context for correlated log output. A new context
153
+ * is created automatically when omitted.
154
+ * @returns Each formatted tree separated by a blank line.
155
+ * @throws {McpError} With code `ValidationError` if `roots` is empty or not an array.
156
+ * @throws {McpError} With code `ValidationError` / `InternalError` propagated from
157
+ * {@link format} if any individual tree fails to render.
158
+ *
159
+ * @example
160
+ * ```typescript
161
+ * const roots = [
162
+ * { name: 'src', children: [{ name: 'index.ts' }] },
163
+ * { name: 'tests', children: [{ name: 'index.test.ts' }] },
164
+ * ];
165
+ *
166
+ * console.log(treeFormatter.formatMultiple(roots, { style: 'unicode' }));
167
+ * // src
168
+ * // └── index.ts
169
+ * //
170
+ * // tests
171
+ * // └── index.test.ts
172
+ * ```
173
+ */
174
+ formatMultiple(roots, options, context) {
175
+ const logContext = context ||
176
+ requestContextService.createRequestContext({
177
+ operation: 'TreeFormatter.formatMultiple',
178
+ });
179
+ if (!Array.isArray(roots) || roots.length === 0) {
180
+ throw new McpError(JsonRpcErrorCode.ValidationError, 'Roots must be a non-empty array', logContext);
181
+ }
182
+ try {
183
+ logger.debug('Formatting multiple tree structures', {
184
+ ...logContext,
185
+ count: roots.length,
186
+ });
187
+ const results = roots.map((root) => this.format(root, options, logContext));
188
+ return results.join('\n\n');
189
+ }
190
+ catch (error) {
191
+ if (error instanceof McpError) {
192
+ throw error;
193
+ }
194
+ const message = error instanceof Error ? error.message : String(error);
195
+ const stack = error instanceof Error ? error.stack : undefined;
196
+ throw new McpError(JsonRpcErrorCode.InternalError, `Failed to format multiple trees: ${message}`, { ...logContext, originalError: stack });
197
+ }
198
+ }
199
+ /**
200
+ * Recursively render a tree node and its children into `lines`.
201
+ *
202
+ * Uses a post-order removal strategy for circular-reference detection: the node is
203
+ * added to `seenNodes` before descending into children and removed afterward, so
204
+ * the same node can appear in multiple independent branches without false positives —
205
+ * only true ancestor-descendant cycles are flagged.
206
+ *
207
+ * @param node - Current node to render.
208
+ * @param prefix - String prepended to every line produced by this call and its
209
+ * descendants (carries the vertical-connector continuation from parent levels).
210
+ * @param isRoot - Whether this is the top-level node (suppresses the leading connector).
211
+ * @param isLast - Whether this node is the last sibling (determines corner vs. tee connector).
212
+ * @param lines - Accumulator array; rendered lines are pushed here in order.
213
+ * @param options - Resolved formatting options.
214
+ * @param depth - Current render depth (0 = root). Used to enforce `maxDepth`.
215
+ * @private
216
+ */
217
+ renderNode(node, prefix, isRoot, isLast, lines, options, depth) {
218
+ // Check max depth
219
+ if (options.maxDepth !== undefined && depth > options.maxDepth) {
220
+ return;
221
+ }
222
+ // Check for circular references
223
+ if (this.seenNodes.has(node)) {
224
+ lines.push(`${prefix}${this.getConnector('circular', isLast, options.style)} [Circular Reference]`);
225
+ return;
226
+ }
227
+ this.seenNodes.add(node);
228
+ // Build node line
229
+ const connector = isRoot ? '' : this.getConnector('node', isLast, options.style);
230
+ const icon = this.getIcon(node, options);
231
+ const name = node.name;
232
+ const metadata = this.formatMetadata(node, options);
233
+ const line = `${prefix}${connector}${icon}${name}${metadata}`;
234
+ lines.push(line);
235
+ // Render children
236
+ const children = node.children || [];
237
+ if (children.length > 0) {
238
+ const childPrefix = isRoot
239
+ ? ''
240
+ : prefix + this.getChildPrefix(isLast, options.style, options.indent);
241
+ children.forEach((child, index) => {
242
+ const isLastChild = index === children.length - 1;
243
+ this.renderNode(child, childPrefix, false, isLastChild, lines, options, depth + 1);
244
+ });
245
+ }
246
+ this.seenNodes.delete(node);
247
+ }
248
+ /**
249
+ * Return the branch-connector string that precedes a node's name.
250
+ *
251
+ * For `type === 'circular'`, always uses a minimal connector regardless of style
252
+ * (compact: two spaces; others: corner or tee). For normal nodes, the connector
253
+ * depends on `style` and whether this is the last sibling.
254
+ *
255
+ * @param type - `'node'` for a normal node; `'circular'` for a cycle marker.
256
+ * @param isLast - Whether this node is the last among its siblings.
257
+ * @param style - Active tree style.
258
+ * @returns Connector string (e.g. `'└── '`, `'+-- '`, or `''`).
259
+ * @private
260
+ */
261
+ getConnector(type, isLast, style) {
262
+ if (type === 'circular') {
263
+ return style === 'compact' ? ' ' : isLast ? '└─ ' : '├─ ';
264
+ }
265
+ switch (style) {
266
+ case 'unicode':
267
+ return isLast ? '└── ' : '├── ';
268
+ case 'ascii':
269
+ return isLast ? '\\-- ' : '+-- ';
270
+ case 'compact':
271
+ return '';
272
+ default:
273
+ return '';
274
+ }
275
+ }
276
+ /**
277
+ * Return the prefix string to prepend to all lines produced by child nodes.
278
+ *
279
+ * When the parent is not the last sibling, a vertical connector (`│` for unicode,
280
+ * `|` for ascii) is prepended and padded to match `indent`'s width, keeping the
281
+ * tree visually connected. When the parent is last, a blank indent is used instead.
282
+ *
283
+ * @param isLast - Whether the parent node is the last among its siblings.
284
+ * @param style - Active tree style.
285
+ * @param indent - Configured indentation string (its length determines padding width).
286
+ * @returns Prefix string to pass as `prefix` when recursing into children.
287
+ * @private
288
+ */
289
+ getChildPrefix(isLast, style, indent) {
290
+ // When not the last child, replace the first character of indent with a vertical
291
+ // connector so the tree lines stay visually connected. Pad to match indent width.
292
+ const padding = indent.length > 1 ? ' '.repeat(indent.length - 1) : '';
293
+ switch (style) {
294
+ case 'unicode':
295
+ return isLast ? indent : `│${padding}`;
296
+ case 'ascii':
297
+ return isLast ? indent : `|${padding}`;
298
+ case 'compact':
299
+ return indent;
300
+ default:
301
+ return indent;
302
+ }
303
+ }
304
+ /**
305
+ * Return the icon prefix string for a node, or an empty string when icons are disabled.
306
+ *
307
+ * A node is treated as a "folder" (uses `folderIcon`) if it has at least one child;
308
+ * otherwise it uses `fileIcon`. The returned string includes a trailing space so
309
+ * the icon is separated from the node name.
310
+ *
311
+ * @param node - Node to select an icon for.
312
+ * @param options - Resolved formatting options.
313
+ * @returns Icon string with trailing space (e.g. `'📁 '`), or `''` if `icons` is false.
314
+ * @private
315
+ */
316
+ getIcon(node, options) {
317
+ if (!options.icons) {
318
+ return '';
319
+ }
320
+ const hasChildren = node.children && node.children.length > 0;
321
+ const icon = hasChildren ? options.folderIcon : options.fileIcon;
322
+ return `${icon} `;
323
+ }
324
+ /**
325
+ * Return the metadata suffix string for a node, or an empty string when metadata display
326
+ * is disabled or the node has no metadata.
327
+ *
328
+ * Entries are formatted as `key=value` pairs joined by `', '` and wrapped in
329
+ * parentheses: ` (size=1KB, type=text)`. All values are coerced to strings via
330
+ * `String()`. Returns `''` if the resulting entry list is empty.
331
+ *
332
+ * @param node - Node whose `metadata` record to format.
333
+ * @param options - Resolved formatting options (`showMetadata` must be `true` to emit output).
334
+ * @returns Metadata suffix string (e.g. `' (size=1KB)'`) or `''`.
335
+ * @private
336
+ */
337
+ formatMetadata(node, options) {
338
+ if (!options.showMetadata || !node.metadata) {
339
+ return '';
340
+ }
341
+ const entries = Object.entries(node.metadata)
342
+ .map(([key, value]) => `${key}=${String(value)}`)
343
+ .join(', ');
344
+ return entries ? ` (${entries})` : '';
345
+ }
346
+ }
347
+ /**
348
+ * Singleton instance of TreeFormatter.
349
+ * Use this instance to format hierarchical data as tree structures.
350
+ *
351
+ * @example
352
+ * ```typescript
353
+ * import { treeFormatter } from '../../utils/formatting/treeFormatter.js';
354
+ *
355
+ * // Simple directory tree
356
+ * const tree = {
357
+ * name: 'project',
358
+ * children: [
359
+ * {
360
+ * name: 'src',
361
+ * children: [
362
+ * { name: 'index.ts' },
363
+ * { name: 'types.ts' }
364
+ * ]
365
+ * },
366
+ * { name: 'package.json' },
367
+ * { name: 'README.md' }
368
+ * ]
369
+ * };
370
+ *
371
+ * // Unicode tree with icons
372
+ * console.log(treeFormatter.format(tree, {
373
+ * style: 'unicode',
374
+ * icons: true
375
+ * }));
376
+ * // 📁 project
377
+ * // ├── 📁 src
378
+ * // │ ├── 📄 index.ts
379
+ * // │ └── 📄 types.ts
380
+ * // ├── 📄 package.json
381
+ * // └── 📄 README.md
382
+ *
383
+ * // With metadata
384
+ * const treeWithMeta = {
385
+ * name: 'files',
386
+ * metadata: { count: 3 },
387
+ * children: [
388
+ * { name: 'file1.txt', metadata: { size: '1KB' } },
389
+ * { name: 'file2.txt', metadata: { size: '2KB' } }
390
+ * ]
391
+ * };
392
+ *
393
+ * console.log(treeFormatter.format(treeWithMeta, { showMetadata: true }));
394
+ * // files (count=3)
395
+ * // ├── file1.txt (size=1KB)
396
+ * // └── file2.txt (size=2KB)
397
+ * ```
398
+ */
399
+ export const treeFormatter = new TreeFormatter();
400
+ //# sourceMappingURL=treeFormatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treeFormatter.js","sourceRoot":"","sources":["../../../src/utils/formatting/treeFormatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Encodes an ArrayBuffer into a base64 string in a cross-platform manner.
3
+ * Prefers Node.js Buffer for performance if available, otherwise uses a
4
+ * chunked `btoa` fallback to avoid stack overflow on large buffers.
5
+ *
6
+ * @param buffer - The ArrayBuffer to encode.
7
+ * @returns The base64-encoded string.
8
+ * @example
9
+ * ```typescript
10
+ * const buf = new TextEncoder().encode('hello').buffer;
11
+ * arrayBufferToBase64(buf); // 'aGVsbG8='
12
+ * ```
13
+ */
14
+ export declare function arrayBufferToBase64(buffer: ArrayBuffer): string;
15
+ /**
16
+ * Encodes a UTF-8 string to base64 in a cross-platform manner.
17
+ * Prefers Node.js Buffer for performance if available, otherwise uses
18
+ * TextEncoder + {@link arrayBufferToBase64} for Cloudflare Workers compatibility.
19
+ *
20
+ * @param str - The UTF-8 string to encode.
21
+ * @returns The base64-encoded string.
22
+ * @example
23
+ * ```typescript
24
+ * stringToBase64('hello'); // 'aGVsbG8='
25
+ * ```
26
+ */
27
+ export declare function stringToBase64(str: string): string;
28
+ /**
29
+ * Decodes a base64-encoded string to UTF-8 in a cross-platform manner.
30
+ * Prefers Node.js Buffer for performance if available, otherwise uses
31
+ * `atob` + TextDecoder for Cloudflare Workers compatibility.
32
+ *
33
+ * @param base64 - The base64-encoded string to decode.
34
+ * @returns The decoded UTF-8 string.
35
+ * @throws {Error} If the input is not valid base64 (thrown by `Buffer` or `atob`).
36
+ * @example
37
+ * ```typescript
38
+ * base64ToString('aGVsbG8='); // 'hello'
39
+ * ```
40
+ */
41
+ export declare function base64ToString(base64: string): string;
42
+ //# sourceMappingURL=encoding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../../src/utils/internal/encoding.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAgB/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAUlD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAarD"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * @fileoverview Provides cross-platform encoding utilities.
3
+ * @module src/utils/internal/encoding
4
+ */
5
+ import { runtimeCaps } from './runtime.js';
6
+ /**
7
+ * Encodes an ArrayBuffer into a base64 string in a cross-platform manner.
8
+ * Prefers Node.js Buffer for performance if available, otherwise uses a
9
+ * chunked `btoa` fallback to avoid stack overflow on large buffers.
10
+ *
11
+ * @param buffer - The ArrayBuffer to encode.
12
+ * @returns The base64-encoded string.
13
+ * @example
14
+ * ```typescript
15
+ * const buf = new TextEncoder().encode('hello').buffer;
16
+ * arrayBufferToBase64(buf); // 'aGVsbG8='
17
+ * ```
18
+ */
19
+ export function arrayBufferToBase64(buffer) {
20
+ if (runtimeCaps.hasBuffer) {
21
+ // Node.js environment
22
+ return Buffer.from(buffer).toString('base64');
23
+ }
24
+ else {
25
+ // Browser/Worker environment — chunked to avoid stack overflow on large buffers
26
+ const bytes = new Uint8Array(buffer);
27
+ const chunks = [];
28
+ const CHUNK_SIZE = 0x8000; // 32KB
29
+ for (let i = 0; i < bytes.length; i += CHUNK_SIZE) {
30
+ chunks.push(String.fromCharCode.apply(null, bytes.subarray(i, i + CHUNK_SIZE)));
31
+ }
32
+ return btoa(chunks.join(''));
33
+ }
34
+ }
35
+ /**
36
+ * Encodes a UTF-8 string to base64 in a cross-platform manner.
37
+ * Prefers Node.js Buffer for performance if available, otherwise uses
38
+ * TextEncoder + {@link arrayBufferToBase64} for Cloudflare Workers compatibility.
39
+ *
40
+ * @param str - The UTF-8 string to encode.
41
+ * @returns The base64-encoded string.
42
+ * @example
43
+ * ```typescript
44
+ * stringToBase64('hello'); // 'aGVsbG8='
45
+ * ```
46
+ */
47
+ export function stringToBase64(str) {
48
+ if (runtimeCaps.hasBuffer) {
49
+ // Node.js environment - most performant
50
+ return Buffer.from(str, 'utf-8').toString('base64');
51
+ }
52
+ else {
53
+ // Worker/Browser environment - use Web APIs
54
+ const encoder = new TextEncoder();
55
+ const bytes = encoder.encode(str);
56
+ return arrayBufferToBase64(bytes.buffer);
57
+ }
58
+ }
59
+ /**
60
+ * Decodes a base64-encoded string to UTF-8 in a cross-platform manner.
61
+ * Prefers Node.js Buffer for performance if available, otherwise uses
62
+ * `atob` + TextDecoder for Cloudflare Workers compatibility.
63
+ *
64
+ * @param base64 - The base64-encoded string to decode.
65
+ * @returns The decoded UTF-8 string.
66
+ * @throws {Error} If the input is not valid base64 (thrown by `Buffer` or `atob`).
67
+ * @example
68
+ * ```typescript
69
+ * base64ToString('aGVsbG8='); // 'hello'
70
+ * ```
71
+ */
72
+ export function base64ToString(base64) {
73
+ if (runtimeCaps.hasBuffer) {
74
+ // Node.js environment - most performant
75
+ return Buffer.from(base64, 'base64').toString('utf-8');
76
+ }
77
+ else {
78
+ // Worker/Browser environment - use Web APIs
79
+ const decoded = atob(base64);
80
+ const bytes = new Uint8Array(decoded.length);
81
+ for (let i = 0; i < decoded.length; i++) {
82
+ bytes[i] = decoded.charCodeAt(i);
83
+ }
84
+ return new TextDecoder().decode(bytes);
85
+ }
86
+ }
87
+ //# sourceMappingURL=encoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.js","sourceRoot":"","sources":["../../../src/utils/internal/encoding.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAmB;IACrD,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;QAC1B,sBAAsB;QACtB,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,gFAAgF;QAChF,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,OAAO;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAwB,CAAC,CAC1F,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;QAC1B,wCAAwC;QACxC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,4CAA4C;QAC5C,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,mBAAmB,CAAC,KAAK,CAAC,MAAqB,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;QAC1B,wCAAwC;QACxC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,4CAA4C;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;AACH,CAAC"}