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