@juspay/neurolink 9.32.0 → 9.32.1
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/CHANGELOG.md +6 -0
- package/dist/auth/anthropicOAuth.js +1 -1
- package/dist/cli/commands/proxy.js +18 -5
- package/dist/client/aiSdkAdapter.js +1 -1
- package/dist/client/index.js +137 -501
- package/dist/core/factory.js +0 -1
- package/dist/core/redisConversationMemoryManager.js +1 -1
- package/dist/features/ppt/slideGenerator.js +0 -1
- package/dist/features/ppt/utils.js +0 -1
- package/dist/lib/server/routes/claudeProxyRoutes.js +45 -9
- package/dist/mcp/elicitationProtocol.js +1 -1
- package/dist/mcp/servers/agent/directToolsServer.js +0 -1
- package/dist/providers/azureOpenai.js +1 -1
- package/dist/providers/huggingFace.js +0 -1
- package/dist/providers/openaiCompatible.js +0 -1
- package/dist/sdk/toolRegistration.js +0 -1
- package/dist/server/openapi/generator.js +1 -1
- package/dist/server/routes/claudeProxyRoutes.js +45 -9
- package/dist/types/configTypes.js +0 -5
- package/dist/types/modelTypes.js +0 -1
- package/dist/types/tools.js +0 -1
- package/dist/types/typeAliases.js +0 -1
- package/dist/types/utilities.js +1 -1
- package/dist/types/workflowTypes.js +0 -1
- package/dist/utils/providerRetry.js +0 -1
- package/dist/utils/providerUtils.js +0 -1
- package/package.json +2 -2
- package/dist/client/adapters/providerImageAdapter.js +0 -588
- package/dist/client/adapters/tts/googleTTSHandler.js +0 -344
- package/dist/client/adapters/video/directorPipeline.js +0 -516
- package/dist/client/adapters/video/ffmpegAdapter.js +0 -206
- package/dist/client/adapters/video/frameExtractor.js +0 -143
- package/dist/client/adapters/video/vertexVideoHandler.js +0 -763
- package/dist/client/adapters/video/videoAnalyzer.js +0 -238
- package/dist/client/adapters/video/videoMerger.js +0 -171
- package/dist/client/agent/directTools.js +0 -840
- package/dist/client/auth/AuthProviderFactory.js +0 -111
- package/dist/client/auth/AuthProviderRegistry.js +0 -190
- package/dist/client/auth/RequestContext.js +0 -78
- package/dist/client/auth/accountPool.js +0 -178
- package/dist/client/auth/anthropicOAuth.js +0 -974
- package/dist/client/auth/authContext.js +0 -314
- package/dist/client/auth/errors.js +0 -39
- package/dist/client/auth/index.js +0 -61
- package/dist/client/auth/middleware/AuthMiddleware.js +0 -519
- package/dist/client/auth/middleware/rateLimitByUser.js +0 -554
- package/dist/client/auth/providers/BaseAuthProvider.js +0 -723
- package/dist/client/auth/providers/CognitoProvider.js +0 -304
- package/dist/client/auth/providers/KeycloakProvider.js +0 -393
- package/dist/client/auth/providers/auth0.js +0 -274
- package/dist/client/auth/providers/betterAuth.js +0 -182
- package/dist/client/auth/providers/clerk.js +0 -317
- package/dist/client/auth/providers/custom.js +0 -112
- package/dist/client/auth/providers/firebase.js +0 -226
- package/dist/client/auth/providers/jwt.js +0 -212
- package/dist/client/auth/providers/oauth2.js +0 -303
- package/dist/client/auth/providers/supabase.js +0 -259
- package/dist/client/auth/providers/workos.js +0 -284
- package/dist/client/auth/serverBridge.js +0 -25
- package/dist/client/auth/sessionManager.js +0 -437
- package/dist/client/auth/tokenStore.js +0 -799
- package/dist/client/client/aiSdkAdapter.js +0 -487
- package/dist/client/client/auth.js +0 -473
- package/dist/client/client/errors.js +0 -552
- package/dist/client/client/httpClient.js +0 -837
- package/dist/client/client/index.js +0 -172
- package/dist/client/client/interceptors.js +0 -601
- package/dist/client/client/sseClient.js +0 -545
- package/dist/client/client/streamingClient.js +0 -917
- package/dist/client/client/wsClient.js +0 -369
- package/dist/client/config/configManager.js +0 -303
- package/dist/client/config/conversationMemory.js +0 -86
- package/dist/client/config/taskClassificationConfig.js +0 -148
- package/dist/client/constants/contextWindows.js +0 -295
- package/dist/client/constants/enums.js +0 -853
- package/dist/client/constants/index.js +0 -207
- package/dist/client/constants/performance.js +0 -389
- package/dist/client/constants/retry.js +0 -266
- package/dist/client/constants/timeouts.js +0 -182
- package/dist/client/constants/tokens.js +0 -380
- package/dist/client/constants/videoErrors.js +0 -46
- package/dist/client/context/budgetChecker.js +0 -98
- package/dist/client/context/contextCompactor.js +0 -205
- package/dist/client/context/emergencyTruncation.js +0 -88
- package/dist/client/context/errorDetection.js +0 -171
- package/dist/client/context/errors.js +0 -21
- package/dist/client/context/fileTokenBudget.js +0 -127
- package/dist/client/context/prompts/summarizationPrompt.js +0 -117
- package/dist/client/context/stages/fileReadDeduplicator.js +0 -66
- package/dist/client/context/stages/slidingWindowTruncator.js +0 -190
- package/dist/client/context/stages/structuredSummarizer.js +0 -99
- package/dist/client/context/stages/toolOutputPruner.js +0 -52
- package/dist/client/context/summarizationEngine.js +0 -136
- package/dist/client/context/toolOutputLimits.js +0 -78
- package/dist/client/context/toolPairRepair.js +0 -66
- package/dist/client/core/analytics.js +0 -88
- package/dist/client/core/baseProvider.js +0 -1385
- package/dist/client/core/constants.js +0 -140
- package/dist/client/core/conversationMemoryFactory.js +0 -141
- package/dist/client/core/conversationMemoryInitializer.js +0 -128
- package/dist/client/core/conversationMemoryManager.js +0 -344
- package/dist/client/core/dynamicModels.js +0 -358
- package/dist/client/core/evaluation.js +0 -309
- package/dist/client/core/evaluationProviders.js +0 -248
- package/dist/client/core/factory.js +0 -412
- package/dist/client/core/infrastructure/baseError.js +0 -22
- package/dist/client/core/infrastructure/baseFactory.js +0 -54
- package/dist/client/core/infrastructure/baseRegistry.js +0 -53
- package/dist/client/core/infrastructure/index.js +0 -5
- package/dist/client/core/infrastructure/retry.js +0 -20
- package/dist/client/core/infrastructure/typedEventEmitter.js +0 -23
- package/dist/client/core/modelConfiguration.js +0 -851
- package/dist/client/core/modules/GenerationHandler.js +0 -588
- package/dist/client/core/modules/MessageBuilder.js +0 -273
- package/dist/client/core/modules/StreamHandler.js +0 -185
- package/dist/client/core/modules/TelemetryHandler.js +0 -203
- package/dist/client/core/modules/ToolsManager.js +0 -499
- package/dist/client/core/modules/Utilities.js +0 -331
- package/dist/client/core/redisConversationMemoryManager.js +0 -1435
- package/dist/client/core/streamAnalytics.js +0 -131
- package/dist/client/evaluation/contextBuilder.js +0 -134
- package/dist/client/evaluation/index.js +0 -61
- package/dist/client/evaluation/prompts.js +0 -73
- package/dist/client/evaluation/ragasEvaluator.js +0 -110
- package/dist/client/evaluation/retryManager.js +0 -78
- package/dist/client/evaluation/scoring.js +0 -61
- package/dist/client/factories/providerFactory.js +0 -166
- package/dist/client/factories/providerRegistry.js +0 -166
- package/dist/client/features/ppt/constants.js +0 -896
- package/dist/client/features/ppt/contentPlanner.js +0 -529
- package/dist/client/features/ppt/presentationOrchestrator.js +0 -236
- package/dist/client/features/ppt/slideGenerator.js +0 -532
- package/dist/client/features/ppt/slideRenderers.js +0 -2383
- package/dist/client/features/ppt/slideTypeInference.js +0 -405
- package/dist/client/features/ppt/types.js +0 -13
- package/dist/client/features/ppt/utils.js +0 -443
- package/dist/client/files/fileReferenceRegistry.js +0 -1543
- package/dist/client/files/fileTools.js +0 -450
- package/dist/client/files/streamingReader.js +0 -321
- package/dist/client/files/types.js +0 -23
- package/dist/client/hitl/hitlErrors.js +0 -54
- package/dist/client/hitl/hitlManager.js +0 -460
- package/dist/client/mcp/agentExposure.js +0 -356
- package/dist/client/mcp/auth/index.js +0 -11
- package/dist/client/mcp/auth/oauthClientProvider.js +0 -325
- package/dist/client/mcp/auth/tokenStorage.js +0 -134
- package/dist/client/mcp/batching/index.js +0 -10
- package/dist/client/mcp/batching/requestBatcher.js +0 -441
- package/dist/client/mcp/caching/index.js +0 -10
- package/dist/client/mcp/caching/toolCache.js +0 -433
- package/dist/client/mcp/elicitation/elicitationManager.js +0 -376
- package/dist/client/mcp/elicitation/index.js +0 -11
- package/dist/client/mcp/elicitation/types.js +0 -10
- package/dist/client/mcp/elicitationProtocol.js +0 -375
- package/dist/client/mcp/enhancedToolDiscovery.js +0 -481
- package/dist/client/mcp/externalServerManager.js +0 -1478
- package/dist/client/mcp/factory.js +0 -161
- package/dist/client/mcp/flexibleToolValidator.js +0 -161
- package/dist/client/mcp/httpRateLimiter.js +0 -391
- package/dist/client/mcp/httpRetryHandler.js +0 -178
- package/dist/client/mcp/index.js +0 -74
- package/dist/client/mcp/mcpCircuitBreaker.js +0 -427
- package/dist/client/mcp/mcpClientFactory.js +0 -708
- package/dist/client/mcp/mcpRegistryClient.js +0 -488
- package/dist/client/mcp/mcpServerBase.js +0 -373
- package/dist/client/mcp/multiServerManager.js +0 -579
- package/dist/client/mcp/registry.js +0 -158
- package/dist/client/mcp/routing/index.js +0 -10
- package/dist/client/mcp/routing/toolRouter.js +0 -416
- package/dist/client/mcp/serverCapabilities.js +0 -502
- package/dist/client/mcp/servers/agent/directToolsServer.js +0 -150
- package/dist/client/mcp/toolAnnotations.js +0 -239
- package/dist/client/mcp/toolConverter.js +0 -258
- package/dist/client/mcp/toolDiscoveryService.js +0 -798
- package/dist/client/mcp/toolIntegration.js +0 -334
- package/dist/client/mcp/toolRegistry.js +0 -729
- package/dist/client/memory/hippocampusInitializer.js +0 -19
- package/dist/client/memory/memoryRetrievalTools.js +0 -166
- package/dist/client/middleware/builtin/analytics.js +0 -132
- package/dist/client/middleware/builtin/autoEvaluation.js +0 -203
- package/dist/client/middleware/builtin/guardrails.js +0 -109
- package/dist/client/middleware/builtin/lifecycle.js +0 -168
- package/dist/client/middleware/factory.js +0 -327
- package/dist/client/middleware/registry.js +0 -295
- package/dist/client/middleware/utils/guardrailsUtils.js +0 -396
- package/dist/client/models/anthropicModels.js +0 -527
- package/dist/client/neurolink.js +0 -8233
- package/dist/client/observability/exporterRegistry.js +0 -413
- package/dist/client/observability/exporters/arizeExporter.js +0 -138
- package/dist/client/observability/exporters/baseExporter.js +0 -190
- package/dist/client/observability/exporters/braintrustExporter.js +0 -154
- package/dist/client/observability/exporters/datadogExporter.js +0 -196
- package/dist/client/observability/exporters/laminarExporter.js +0 -302
- package/dist/client/observability/exporters/langfuseExporter.js +0 -209
- package/dist/client/observability/exporters/langsmithExporter.js +0 -143
- package/dist/client/observability/exporters/otelExporter.js +0 -164
- package/dist/client/observability/exporters/posthogExporter.js +0 -287
- package/dist/client/observability/exporters/sentryExporter.js +0 -165
- package/dist/client/observability/index.js +0 -31
- package/dist/client/observability/metricsAggregator.js +0 -556
- package/dist/client/observability/otelBridge.js +0 -131
- package/dist/client/observability/retryPolicy.js +0 -383
- package/dist/client/observability/sampling/samplers.js +0 -216
- package/dist/client/observability/spanProcessor.js +0 -303
- package/dist/client/observability/tokenTracker.js +0 -413
- package/dist/client/observability/types/exporterTypes.js +0 -5
- package/dist/client/observability/types/index.js +0 -4
- package/dist/client/observability/types/spanTypes.js +0 -92
- package/dist/client/observability/utils/safeMetadata.js +0 -25
- package/dist/client/observability/utils/spanSerializer.js +0 -292
- package/dist/client/processors/archive/ArchiveProcessor.js +0 -1308
- package/dist/client/processors/base/BaseFileProcessor.js +0 -614
- package/dist/client/processors/base/types.js +0 -82
- package/dist/client/processors/config/fileTypes.js +0 -520
- package/dist/client/processors/config/index.js +0 -92
- package/dist/client/processors/config/languageMap.js +0 -410
- package/dist/client/processors/config/mimeTypes.js +0 -363
- package/dist/client/processors/config/sizeLimits.js +0 -258
- package/dist/client/processors/document/ExcelProcessor.js +0 -590
- package/dist/client/processors/document/OpenDocumentProcessor.js +0 -212
- package/dist/client/processors/document/PptxProcessor.js +0 -157
- package/dist/client/processors/document/RtfProcessor.js +0 -361
- package/dist/client/processors/document/WordProcessor.js +0 -353
- package/dist/client/processors/errors/FileErrorCode.js +0 -255
- package/dist/client/processors/errors/errorHelpers.js +0 -386
- package/dist/client/processors/errors/errorSerializer.js +0 -507
- package/dist/client/processors/errors/index.js +0 -49
- package/dist/client/processors/markup/SvgProcessor.js +0 -240
- package/dist/client/processors/media/AudioProcessor.js +0 -707
- package/dist/client/processors/media/VideoProcessor.js +0 -1045
- package/dist/client/providers/amazonBedrock.js +0 -1512
- package/dist/client/providers/amazonSagemaker.js +0 -162
- package/dist/client/providers/anthropic.js +0 -831
- package/dist/client/providers/azureOpenai.js +0 -143
- package/dist/client/providers/googleAiStudio.js +0 -1200
- package/dist/client/providers/googleNativeGemini3.js +0 -543
- package/dist/client/providers/googleVertex.js +0 -2936
- package/dist/client/providers/huggingFace.js +0 -315
- package/dist/client/providers/litellm.js +0 -488
- package/dist/client/providers/mistral.js +0 -157
- package/dist/client/providers/ollama.js +0 -1579
- package/dist/client/providers/openAI.js +0 -627
- package/dist/client/providers/openRouter.js +0 -543
- package/dist/client/providers/openaiCompatible.js +0 -290
- package/dist/client/providers/providerTypeUtils.js +0 -46
- package/dist/client/providers/sagemaker/adaptive-semaphore.js +0 -215
- package/dist/client/providers/sagemaker/client.js +0 -472
- package/dist/client/providers/sagemaker/config.js +0 -317
- package/dist/client/providers/sagemaker/detection.js +0 -606
- package/dist/client/providers/sagemaker/error-constants.js +0 -227
- package/dist/client/providers/sagemaker/errors.js +0 -299
- package/dist/client/providers/sagemaker/language-model.js +0 -775
- package/dist/client/providers/sagemaker/parsers.js +0 -634
- package/dist/client/providers/sagemaker/streaming.js +0 -331
- package/dist/client/providers/sagemaker/structured-parser.js +0 -625
- package/dist/client/proxy/accountQuota.js +0 -162
- package/dist/client/proxy/claudeFormat.js +0 -595
- package/dist/client/proxy/modelRouter.js +0 -29
- package/dist/client/proxy/oauthFetch.js +0 -367
- package/dist/client/proxy/proxyFetch.js +0 -586
- package/dist/client/proxy/requestLogger.js +0 -207
- package/dist/client/proxy/tokenRefresh.js +0 -124
- package/dist/client/proxy/usageStats.js +0 -74
- package/dist/client/proxy/utils/noProxyUtils.js +0 -149
- package/dist/client/rag/ChunkerFactory.js +0 -320
- package/dist/client/rag/ChunkerRegistry.js +0 -421
- package/dist/client/rag/chunkers/BaseChunker.js +0 -143
- package/dist/client/rag/chunkers/CharacterChunker.js +0 -28
- package/dist/client/rag/chunkers/HTMLChunker.js +0 -38
- package/dist/client/rag/chunkers/JSONChunker.js +0 -68
- package/dist/client/rag/chunkers/LaTeXChunker.js +0 -63
- package/dist/client/rag/chunkers/MarkdownChunker.js +0 -306
- package/dist/client/rag/chunkers/RecursiveChunker.js +0 -139
- package/dist/client/rag/chunkers/SemanticMarkdownChunker.js +0 -138
- package/dist/client/rag/chunkers/SentenceChunker.js +0 -66
- package/dist/client/rag/chunkers/TokenChunker.js +0 -61
- package/dist/client/rag/chunkers/index.js +0 -15
- package/dist/client/rag/chunking/characterChunker.js +0 -142
- package/dist/client/rag/chunking/chunkerRegistry.js +0 -194
- package/dist/client/rag/chunking/htmlChunker.js +0 -247
- package/dist/client/rag/chunking/index.js +0 -17
- package/dist/client/rag/chunking/jsonChunker.js +0 -281
- package/dist/client/rag/chunking/latexChunker.js +0 -251
- package/dist/client/rag/chunking/markdownChunker.js +0 -373
- package/dist/client/rag/chunking/recursiveChunker.js +0 -148
- package/dist/client/rag/chunking/semanticChunker.js +0 -306
- package/dist/client/rag/chunking/sentenceChunker.js +0 -230
- package/dist/client/rag/chunking/tokenChunker.js +0 -183
- package/dist/client/rag/document/MDocument.js +0 -392
- package/dist/client/rag/document/index.js +0 -5
- package/dist/client/rag/document/loaders.js +0 -500
- package/dist/client/rag/errors/RAGError.js +0 -274
- package/dist/client/rag/errors/index.js +0 -6
- package/dist/client/rag/graphRag/graphRAG.js +0 -401
- package/dist/client/rag/graphRag/index.js +0 -4
- package/dist/client/rag/index.js +0 -141
- package/dist/client/rag/metadata/MetadataExtractorFactory.js +0 -418
- package/dist/client/rag/metadata/MetadataExtractorRegistry.js +0 -362
- package/dist/client/rag/metadata/index.js +0 -9
- package/dist/client/rag/metadata/metadataExtractor.js +0 -280
- package/dist/client/rag/pipeline/RAGPipeline.js +0 -436
- package/dist/client/rag/pipeline/contextAssembly.js +0 -341
- package/dist/client/rag/pipeline/index.js +0 -5
- package/dist/client/rag/ragIntegration.js +0 -321
- package/dist/client/rag/reranker/RerankerFactory.js +0 -430
- package/dist/client/rag/reranker/RerankerRegistry.js +0 -402
- package/dist/client/rag/reranker/index.js +0 -9
- package/dist/client/rag/reranker/reranker.js +0 -277
- package/dist/client/rag/resilience/CircuitBreaker.js +0 -431
- package/dist/client/rag/resilience/RetryHandler.js +0 -304
- package/dist/client/rag/resilience/index.js +0 -7
- package/dist/client/rag/retrieval/hybridSearch.js +0 -335
- package/dist/client/rag/retrieval/index.js +0 -5
- package/dist/client/rag/retrieval/vectorQueryTool.js +0 -307
- package/dist/client/rag/types.js +0 -8
- package/dist/client/sdk/toolRegistration.js +0 -377
- package/dist/client/server/abstract/baseServerAdapter.js +0 -575
- package/dist/client/server/adapters/expressAdapter.js +0 -486
- package/dist/client/server/adapters/fastifyAdapter.js +0 -472
- package/dist/client/server/adapters/honoAdapter.js +0 -632
- package/dist/client/server/adapters/koaAdapter.js +0 -510
- package/dist/client/server/errors.js +0 -486
- package/dist/client/server/factory/serverAdapterFactory.js +0 -160
- package/dist/client/server/index.js +0 -108
- package/dist/client/server/middleware/abortSignal.js +0 -111
- package/dist/client/server/middleware/auth.js +0 -388
- package/dist/client/server/middleware/cache.js +0 -359
- package/dist/client/server/middleware/common.js +0 -281
- package/dist/client/server/middleware/deprecation.js +0 -190
- package/dist/client/server/middleware/mcpBodyAttachment.js +0 -63
- package/dist/client/server/middleware/rateLimit.js +0 -227
- package/dist/client/server/middleware/validation.js +0 -388
- package/dist/client/server/openapi/generator.js +0 -398
- package/dist/client/server/openapi/index.js +0 -36
- package/dist/client/server/openapi/schemas.js +0 -695
- package/dist/client/server/openapi/templates.js +0 -374
- package/dist/client/server/routes/agentRoutes.js +0 -189
- package/dist/client/server/routes/claudeProxyRoutes.js +0 -1600
- package/dist/client/server/routes/healthRoutes.js +0 -187
- package/dist/client/server/routes/index.js +0 -57
- package/dist/client/server/routes/mcpRoutes.js +0 -342
- package/dist/client/server/routes/memoryRoutes.js +0 -350
- package/dist/client/server/routes/openApiRoutes.js +0 -126
- package/dist/client/server/routes/toolRoutes.js +0 -199
- package/dist/client/server/streaming/dataStream.js +0 -486
- package/dist/client/server/streaming/index.js +0 -11
- package/dist/client/server/types.js +0 -67
- package/dist/client/server/utils/redaction.js +0 -334
- package/dist/client/server/utils/validation.js +0 -243
- package/dist/client/server/websocket/WebSocketHandler.js +0 -383
- package/dist/client/server/websocket/index.js +0 -4
- package/dist/client/services/server/ai/observability/instrumentation.js +0 -808
- package/dist/client/telemetry/attributes.js +0 -100
- package/dist/client/telemetry/index.js +0 -26
- package/dist/client/telemetry/telemetryService.js +0 -308
- package/dist/client/telemetry/tracers.js +0 -17
- package/dist/client/telemetry/withSpan.js +0 -34
- package/dist/client/types/actionTypes.js +0 -6
- package/dist/client/types/analytics.js +0 -5
- package/dist/client/types/authTypes.js +0 -9
- package/dist/client/types/circuitBreakerErrors.js +0 -34
- package/dist/client/types/cli.js +0 -21
- package/dist/client/types/clientTypes.js +0 -10
- package/dist/client/types/common.js +0 -51
- package/dist/client/types/configTypes.js +0 -49
- package/dist/client/types/content.js +0 -19
- package/dist/client/types/contextTypes.js +0 -400
- package/dist/client/types/conversation.js +0 -47
- package/dist/client/types/conversationMemoryInterface.js +0 -6
- package/dist/client/types/domainTypes.js +0 -5
- package/dist/client/types/errors.js +0 -167
- package/dist/client/types/evaluation.js +0 -5
- package/dist/client/types/evaluationProviders.js +0 -5
- package/dist/client/types/evaluationTypes.js +0 -1
- package/dist/client/types/externalMcp.js +0 -6
- package/dist/client/types/fileReferenceTypes.js +0 -8
- package/dist/client/types/fileTypes.js +0 -4
- package/dist/client/types/generateTypes.js +0 -1
- package/dist/client/types/guardrails.js +0 -1
- package/dist/client/types/hitlTypes.js +0 -8
- package/dist/client/types/index.js +0 -57
- package/dist/client/types/mcpTypes.js +0 -5
- package/dist/client/types/middlewareTypes.js +0 -1
- package/dist/client/types/modelTypes.js +0 -30
- package/dist/client/types/multimodal.js +0 -135
- package/dist/client/types/observability.js +0 -6
- package/dist/client/types/pptTypes.js +0 -82
- package/dist/client/types/providers.js +0 -111
- package/dist/client/types/proxyTypes.js +0 -16
- package/dist/client/types/ragTypes.js +0 -7
- package/dist/client/types/sdkTypes.js +0 -8
- package/dist/client/types/serviceTypes.js +0 -5
- package/dist/client/types/streamTypes.js +0 -1
- package/dist/client/types/subscriptionTypes.js +0 -9
- package/dist/client/types/taskClassificationTypes.js +0 -5
- package/dist/client/types/tools.js +0 -24
- package/dist/client/types/ttsTypes.js +0 -57
- package/dist/client/types/typeAliases.js +0 -48
- package/dist/client/types/utilities.js +0 -4
- package/dist/client/types/workflowTypes.js +0 -30
- package/dist/client/utils/async/withTimeout.js +0 -98
- package/dist/client/utils/asyncMutex.js +0 -60
- package/dist/client/utils/conversationMemory.js +0 -431
- package/dist/client/utils/csvProcessor.js +0 -846
- package/dist/client/utils/errorHandling.js +0 -936
- package/dist/client/utils/evaluationUtils.js +0 -131
- package/dist/client/utils/factoryProcessing.js +0 -589
- package/dist/client/utils/fileDetector.js +0 -2161
- package/dist/client/utils/imageCache.js +0 -376
- package/dist/client/utils/imageProcessor.js +0 -704
- package/dist/client/utils/logger.js +0 -491
- package/dist/client/utils/mcpDefaults.js +0 -134
- package/dist/client/utils/messageBuilder.js +0 -1653
- package/dist/client/utils/modelAliasResolver.js +0 -54
- package/dist/client/utils/modelDetection.js +0 -80
- package/dist/client/utils/modelRouter.js +0 -292
- package/dist/client/utils/multimodalOptionsBuilder.js +0 -65
- package/dist/client/utils/observabilityHelpers.js +0 -47
- package/dist/client/utils/parameterValidation.js +0 -966
- package/dist/client/utils/pdfProcessor.js +0 -410
- package/dist/client/utils/performance.js +0 -222
- package/dist/client/utils/pricing.js +0 -340
- package/dist/client/utils/promptRedaction.js +0 -62
- package/dist/client/utils/providerConfig.js +0 -1009
- package/dist/client/utils/providerHealth.js +0 -1237
- package/dist/client/utils/providerRetry.js +0 -112
- package/dist/client/utils/providerUtils.js +0 -434
- package/dist/client/utils/rateLimiter.js +0 -200
- package/dist/client/utils/redis.js +0 -368
- package/dist/client/utils/retryHandler.js +0 -269
- package/dist/client/utils/retryability.js +0 -22
- package/dist/client/utils/sanitizers/svg.js +0 -481
- package/dist/client/utils/schemaConversion.js +0 -255
- package/dist/client/utils/taskClassificationUtils.js +0 -149
- package/dist/client/utils/taskClassifier.js +0 -94
- package/dist/client/utils/thinkingConfig.js +0 -104
- package/dist/client/utils/timeout.js +0 -359
- package/dist/client/utils/tokenEstimation.js +0 -142
- package/dist/client/utils/tokenLimits.js +0 -125
- package/dist/client/utils/tokenUtils.js +0 -239
- package/dist/client/utils/toolUtils.js +0 -75
- package/dist/client/utils/transformationUtils.js +0 -554
- package/dist/client/utils/ttsProcessor.js +0 -286
- package/dist/client/utils/typeUtils.js +0 -97
- package/dist/client/utils/videoAnalysisProcessor.js +0 -67
- package/dist/client/workflow/config.js +0 -398
- package/dist/client/workflow/core/ensembleExecutor.js +0 -407
- package/dist/client/workflow/core/judgeScorer.js +0 -544
- package/dist/client/workflow/core/responseConditioner.js +0 -225
- package/dist/client/workflow/core/types/conditionerTypes.js +0 -7
- package/dist/client/workflow/core/types/ensembleTypes.js +0 -7
- package/dist/client/workflow/core/types/index.js +0 -7
- package/dist/client/workflow/core/types/judgeTypes.js +0 -7
- package/dist/client/workflow/core/types/layerTypes.js +0 -7
- package/dist/client/workflow/core/types/registryTypes.js +0 -7
- package/dist/client/workflow/core/workflowRegistry.js +0 -304
- package/dist/client/workflow/core/workflowRunner.js +0 -586
- package/dist/client/workflow/index.js +0 -50
- package/dist/client/workflow/types.js +0 -9
- package/dist/client/workflow/utils/types/index.js +0 -7
- package/dist/client/workflow/utils/workflowMetrics.js +0 -311
- package/dist/client/workflow/utils/workflowValidation.js +0 -420
- package/dist/client/workflow/workflows/adaptiveWorkflow.js +0 -366
- package/dist/client/workflow/workflows/consensusWorkflow.js +0 -192
- package/dist/client/workflow/workflows/fallbackWorkflow.js +0 -225
- package/dist/client/workflow/workflows/multiJudgeWorkflow.js +0 -351
- /package/dist/client/{client/reactHooks.js → reactHooks.js} +0 -0
|
@@ -1,353 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Word Document Processing Utility
|
|
3
|
-
*
|
|
4
|
-
* Handles downloading, validating, and processing Word (.docx, .doc) files.
|
|
5
|
-
* Uses mammoth library to extract text and HTML content from Word documents.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - DOCX format validation via ZIP/PK signature check
|
|
9
|
-
* - Text extraction using mammoth.extractRawText()
|
|
10
|
-
* - HTML conversion using mammoth.convertToHtml()
|
|
11
|
-
* - Warning collection from mammoth processing
|
|
12
|
-
* - Support for both URL downloads and direct buffer input
|
|
13
|
-
*
|
|
14
|
-
* @module processors/document/WordProcessor
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* ```typescript
|
|
18
|
-
* import { wordProcessor, processWord, isWordFile } from "./WordProcessor.js";
|
|
19
|
-
*
|
|
20
|
-
* // Check if file is supported
|
|
21
|
-
* if (isWordFile(file.mimetype, file.name)) {
|
|
22
|
-
* const result = await processWord(fileInfo, {
|
|
23
|
-
* authHeaders: { Authorization: "Bearer token" },
|
|
24
|
-
* });
|
|
25
|
-
*
|
|
26
|
-
* if (result.success) {
|
|
27
|
-
* console.log("Text:", result.data.textContent);
|
|
28
|
-
* console.log("HTML:", result.data.htmlContent);
|
|
29
|
-
* console.log("Warnings:", result.data.warnings);
|
|
30
|
-
* }
|
|
31
|
-
* }
|
|
32
|
-
* ```
|
|
33
|
-
*/
|
|
34
|
-
import * as mammoth from "mammoth";
|
|
35
|
-
import { BaseFileProcessor } from "../base/BaseFileProcessor.js";
|
|
36
|
-
import { SIZE_LIMITS } from "../config/index.js";
|
|
37
|
-
import { FileErrorCode } from "../errors/index.js";
|
|
38
|
-
// =============================================================================
|
|
39
|
-
// CONSTANTS
|
|
40
|
-
// =============================================================================
|
|
41
|
-
/**
|
|
42
|
-
* Supported MIME types for Word documents
|
|
43
|
-
*/
|
|
44
|
-
const SUPPORTED_WORD_MIME_TYPES = [
|
|
45
|
-
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
46
|
-
"application/msword",
|
|
47
|
-
];
|
|
48
|
-
/**
|
|
49
|
-
* Supported file extensions for Word documents
|
|
50
|
-
*/
|
|
51
|
-
const SUPPORTED_WORD_EXTENSIONS = [".docx", ".doc"];
|
|
52
|
-
/**
|
|
53
|
-
* Default timeout for Word processing (60 seconds)
|
|
54
|
-
* Word documents can be larger due to embedded images and complex formatting
|
|
55
|
-
*/
|
|
56
|
-
const WORD_TIMEOUT_MS = 60000;
|
|
57
|
-
// =============================================================================
|
|
58
|
-
// WORD PROCESSOR CLASS
|
|
59
|
-
// =============================================================================
|
|
60
|
-
/**
|
|
61
|
-
* Word Processor - handles .docx and .doc files
|
|
62
|
-
*
|
|
63
|
-
* Uses mammoth library for both text and HTML extraction. The processor
|
|
64
|
-
* validates DOCX files by checking for the ZIP/PK signature (since DOCX
|
|
65
|
-
* files are actually ZIP archives).
|
|
66
|
-
*
|
|
67
|
-
* @example
|
|
68
|
-
* ```typescript
|
|
69
|
-
* const processor = new WordProcessor();
|
|
70
|
-
*
|
|
71
|
-
* // Check if file is supported
|
|
72
|
-
* if (processor.isFileSupported("application/msword", "report.doc")) {
|
|
73
|
-
* const result = await processor.processFile(fileInfo);
|
|
74
|
-
* if (result.success) {
|
|
75
|
-
* console.log("Extracted text:", result.data.textContent);
|
|
76
|
-
* }
|
|
77
|
-
* }
|
|
78
|
-
* ```
|
|
79
|
-
*/
|
|
80
|
-
export class WordProcessor extends BaseFileProcessor {
|
|
81
|
-
constructor() {
|
|
82
|
-
super({
|
|
83
|
-
maxSizeMB: SIZE_LIMITS.WORD_MAX_MB,
|
|
84
|
-
timeoutMs: WORD_TIMEOUT_MS,
|
|
85
|
-
supportedMimeTypes: SUPPORTED_WORD_MIME_TYPES,
|
|
86
|
-
supportedExtensions: SUPPORTED_WORD_EXTENSIONS,
|
|
87
|
-
fileTypeName: "Word",
|
|
88
|
-
defaultFilename: "document.docx",
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Validate downloaded Word document has correct magic bytes.
|
|
93
|
-
* DOCX files are ZIP archives starting with PK signature (0x50 0x4B).
|
|
94
|
-
*
|
|
95
|
-
* @param buffer - Downloaded file content
|
|
96
|
-
* @param fileInfo - Original file information
|
|
97
|
-
* @returns null if valid, error message if invalid
|
|
98
|
-
*/
|
|
99
|
-
async validateDownloadedFile(buffer, _fileInfo) {
|
|
100
|
-
// Minimum size check
|
|
101
|
-
if (buffer.length < 4) {
|
|
102
|
-
return "Invalid Word document - file too small";
|
|
103
|
-
}
|
|
104
|
-
// DOCX files are ZIP archives (PK signature: 0x50 0x4B)
|
|
105
|
-
const pkSignature = buffer.subarray(0, 2).toString("ascii");
|
|
106
|
-
if (pkSignature !== "PK") {
|
|
107
|
-
// Log what we actually received to help debug
|
|
108
|
-
const preview = buffer
|
|
109
|
-
.subarray(0, 100)
|
|
110
|
-
.toString("utf8")
|
|
111
|
-
.substring(0, 100);
|
|
112
|
-
const looksLikeHtml = preview.includes("<!DOCTYPE") || preview.includes("<html");
|
|
113
|
-
// Provide more specific error message
|
|
114
|
-
if (looksLikeHtml) {
|
|
115
|
-
return "Invalid Word document - received HTML response instead of file content (possibly an error page)";
|
|
116
|
-
}
|
|
117
|
-
return "Invalid Word document - not a valid DOCX format (expected ZIP/PK signature)";
|
|
118
|
-
}
|
|
119
|
-
return null;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Build processed Word result with extracted text and HTML content.
|
|
123
|
-
* This is a stub that returns an empty result - actual processing
|
|
124
|
-
* happens in the overridden processFile method since mammoth
|
|
125
|
-
* operations are asynchronous.
|
|
126
|
-
*
|
|
127
|
-
* @param buffer - Downloaded file content
|
|
128
|
-
* @param fileInfo - Original file information
|
|
129
|
-
* @returns Processed Word result (placeholder)
|
|
130
|
-
*/
|
|
131
|
-
buildProcessedResult(buffer, fileInfo) {
|
|
132
|
-
// Note: This is a synchronous placeholder since buildProcessedResult is sync
|
|
133
|
-
// The actual mammoth extraction happens in the overridden processFile method
|
|
134
|
-
return {
|
|
135
|
-
textContent: "",
|
|
136
|
-
htmlContent: "",
|
|
137
|
-
warnings: [],
|
|
138
|
-
buffer,
|
|
139
|
-
mimetype: fileInfo.mimetype ||
|
|
140
|
-
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
141
|
-
size: fileInfo.size,
|
|
142
|
-
filename: this.getFilename(fileInfo),
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Override processFile for async mammoth extraction.
|
|
147
|
-
*
|
|
148
|
-
* The mammoth library's extractRawText and convertToHtml methods are
|
|
149
|
-
* asynchronous, so we need to override the entire processFile method
|
|
150
|
-
* rather than just buildProcessedResult.
|
|
151
|
-
*
|
|
152
|
-
* Processing steps:
|
|
153
|
-
* 1. Validate file type and size
|
|
154
|
-
* 2. Get buffer (download from URL or use provided buffer)
|
|
155
|
-
* 3. Validate downloaded file (check PK signature)
|
|
156
|
-
* 4. Extract text with mammoth.extractRawText()
|
|
157
|
-
* 5. Convert to HTML with mammoth.convertToHtml()
|
|
158
|
-
* 6. Collect any warnings from mammoth
|
|
159
|
-
* 7. Return structured result
|
|
160
|
-
*
|
|
161
|
-
* @param fileInfo - File information with URL or buffer
|
|
162
|
-
* @param options - Optional processing options
|
|
163
|
-
* @returns Processing result with text, HTML, and warnings
|
|
164
|
-
*/
|
|
165
|
-
async processFile(fileInfo, options) {
|
|
166
|
-
try {
|
|
167
|
-
// Step 1: Validate file type and size
|
|
168
|
-
const validationResult = this.validateFileWithResult(fileInfo);
|
|
169
|
-
if (!validationResult.success) {
|
|
170
|
-
return {
|
|
171
|
-
success: false,
|
|
172
|
-
error: validationResult.error,
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
// Step 2: Get file buffer (from direct buffer or download from URL)
|
|
176
|
-
let buffer;
|
|
177
|
-
if (fileInfo.buffer) {
|
|
178
|
-
// Direct buffer provided - skip download
|
|
179
|
-
buffer = fileInfo.buffer;
|
|
180
|
-
}
|
|
181
|
-
else if (fileInfo.url) {
|
|
182
|
-
// Download from URL
|
|
183
|
-
const downloadResult = await this.downloadFileWithRetry(fileInfo, options);
|
|
184
|
-
if (!downloadResult.success) {
|
|
185
|
-
return {
|
|
186
|
-
success: false,
|
|
187
|
-
error: downloadResult.error,
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
|
-
if (!downloadResult.data) {
|
|
191
|
-
return {
|
|
192
|
-
success: false,
|
|
193
|
-
error: this.createError(FileErrorCode.DOWNLOAD_FAILED, {
|
|
194
|
-
reason: "Download succeeded but returned no data",
|
|
195
|
-
}),
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
buffer = downloadResult.data;
|
|
199
|
-
}
|
|
200
|
-
else {
|
|
201
|
-
// No buffer or URL provided
|
|
202
|
-
return {
|
|
203
|
-
success: false,
|
|
204
|
-
error: this.createError(FileErrorCode.DOWNLOAD_FAILED, {
|
|
205
|
-
reason: "No buffer or URL provided for file",
|
|
206
|
-
}),
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
// Step 3: Validate downloaded file (check magic bytes)
|
|
210
|
-
const postValidationError = await this.validateDownloadedFile(buffer, fileInfo);
|
|
211
|
-
if (postValidationError) {
|
|
212
|
-
return {
|
|
213
|
-
success: false,
|
|
214
|
-
error: this.createError(FileErrorCode.INVALID_FORMAT, {
|
|
215
|
-
reason: postValidationError,
|
|
216
|
-
}),
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
// Step 4 & 5: Extract text and HTML content using mammoth
|
|
220
|
-
let textContent = "";
|
|
221
|
-
let htmlContent = "";
|
|
222
|
-
const warnings = [];
|
|
223
|
-
try {
|
|
224
|
-
// Extract plain text
|
|
225
|
-
const textResult = await mammoth.extractRawText({ buffer });
|
|
226
|
-
textContent = textResult.value;
|
|
227
|
-
// Collect warnings from text extraction
|
|
228
|
-
if (textResult.messages && textResult.messages.length > 0) {
|
|
229
|
-
warnings.push(...textResult.messages.map((m) => `[text] ${m.message}`));
|
|
230
|
-
}
|
|
231
|
-
// Convert to HTML for richer formatting
|
|
232
|
-
const htmlResult = await mammoth.convertToHtml({ buffer });
|
|
233
|
-
htmlContent = htmlResult.value;
|
|
234
|
-
// Collect warnings from HTML conversion
|
|
235
|
-
if (htmlResult.messages && htmlResult.messages.length > 0) {
|
|
236
|
-
warnings.push(...htmlResult.messages.map((m) => `[html] ${m.message}`));
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
catch (extractError) {
|
|
240
|
-
return {
|
|
241
|
-
success: false,
|
|
242
|
-
error: this.createError(FileErrorCode.PROCESSING_FAILED, {
|
|
243
|
-
reason: "Failed to extract Word document content",
|
|
244
|
-
fileType: "Word",
|
|
245
|
-
}, extractError instanceof Error ? extractError : undefined),
|
|
246
|
-
};
|
|
247
|
-
}
|
|
248
|
-
// Step 6: Return structured result
|
|
249
|
-
return {
|
|
250
|
-
success: true,
|
|
251
|
-
data: {
|
|
252
|
-
buffer,
|
|
253
|
-
mimetype: fileInfo.mimetype ||
|
|
254
|
-
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
255
|
-
size: fileInfo.size,
|
|
256
|
-
filename: this.getFilename(fileInfo),
|
|
257
|
-
textContent,
|
|
258
|
-
htmlContent,
|
|
259
|
-
warnings,
|
|
260
|
-
},
|
|
261
|
-
};
|
|
262
|
-
}
|
|
263
|
-
catch (error) {
|
|
264
|
-
// Catch any unexpected errors
|
|
265
|
-
return {
|
|
266
|
-
success: false,
|
|
267
|
-
error: this.createError(FileErrorCode.UNKNOWN_ERROR, {
|
|
268
|
-
error: error instanceof Error ? error.message : String(error),
|
|
269
|
-
}, error instanceof Error ? error : undefined),
|
|
270
|
-
};
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
// =============================================================================
|
|
275
|
-
// SINGLETON INSTANCE
|
|
276
|
-
// =============================================================================
|
|
277
|
-
/**
|
|
278
|
-
* Singleton Word processor instance.
|
|
279
|
-
* Use this for most use cases to avoid creating multiple instances.
|
|
280
|
-
*/
|
|
281
|
-
export const wordProcessor = new WordProcessor();
|
|
282
|
-
// =============================================================================
|
|
283
|
-
// HELPER FUNCTIONS
|
|
284
|
-
// =============================================================================
|
|
285
|
-
/**
|
|
286
|
-
* Check if a file is a Word document (.docx or .doc).
|
|
287
|
-
*
|
|
288
|
-
* @param mimetype - MIME type of the file
|
|
289
|
-
* @param filename - Filename (for extension-based detection)
|
|
290
|
-
* @returns true if the file is a supported Word document
|
|
291
|
-
*
|
|
292
|
-
* @example
|
|
293
|
-
* ```typescript
|
|
294
|
-
* if (isWordFile(file.mimetype, file.name)) {
|
|
295
|
-
* const result = await processWord(file);
|
|
296
|
-
* }
|
|
297
|
-
* ```
|
|
298
|
-
*/
|
|
299
|
-
export function isWordFile(mimetype, filename) {
|
|
300
|
-
return wordProcessor.isFileSupported(mimetype, filename);
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
* Validate Word document size against configured limit.
|
|
304
|
-
*
|
|
305
|
-
* @param sizeBytes - File size in bytes
|
|
306
|
-
* @returns true if size is within the allowed limit
|
|
307
|
-
*
|
|
308
|
-
* @example
|
|
309
|
-
* ```typescript
|
|
310
|
-
* if (!validateWordSize(file.size)) {
|
|
311
|
-
* throw new Error(`File exceeds ${SIZE_LIMITS.WORD_MAX_MB}MB limit`);
|
|
312
|
-
* }
|
|
313
|
-
* ```
|
|
314
|
-
*/
|
|
315
|
-
export function validateWordSize(sizeBytes) {
|
|
316
|
-
const maxBytes = SIZE_LIMITS.WORD_MAX_MB * 1024 * 1024;
|
|
317
|
-
return sizeBytes <= maxBytes;
|
|
318
|
-
}
|
|
319
|
-
/**
|
|
320
|
-
* Process a single Word document.
|
|
321
|
-
*
|
|
322
|
-
* Convenience function that uses the singleton wordProcessor instance.
|
|
323
|
-
*
|
|
324
|
-
* @param fileInfo - File information with URL or buffer
|
|
325
|
-
* @param options - Optional processing options (auth headers, timeout, retry config)
|
|
326
|
-
* @returns Processing result with extracted text, HTML, and warnings
|
|
327
|
-
*
|
|
328
|
-
* @example
|
|
329
|
-
* ```typescript
|
|
330
|
-
* const result = await processWord({
|
|
331
|
-
* id: "doc-123",
|
|
332
|
-
* name: "report.docx",
|
|
333
|
-
* mimetype: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
334
|
-
* size: 12345,
|
|
335
|
-
* url: "https://example.com/files/report.docx",
|
|
336
|
-
* }, {
|
|
337
|
-
* authHeaders: { Authorization: "Bearer token" },
|
|
338
|
-
* });
|
|
339
|
-
*
|
|
340
|
-
* if (result.success) {
|
|
341
|
-
* console.log("Text content:", result.data.textContent);
|
|
342
|
-
* console.log("HTML content:", result.data.htmlContent);
|
|
343
|
-
* if (result.data.warnings.length > 0) {
|
|
344
|
-
* console.warn("Warnings:", result.data.warnings);
|
|
345
|
-
* }
|
|
346
|
-
* } else {
|
|
347
|
-
* console.error("Failed:", result.error.userMessage);
|
|
348
|
-
* }
|
|
349
|
-
* ```
|
|
350
|
-
*/
|
|
351
|
-
export async function processWord(fileInfo, options) {
|
|
352
|
-
return wordProcessor.processFile(fileInfo, options);
|
|
353
|
-
}
|
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* File Processing Error Codes
|
|
3
|
-
*
|
|
4
|
-
* Comprehensive error codes for file processing operations including:
|
|
5
|
-
* - Download operations (timeout, auth, network)
|
|
6
|
-
* - File validation (size, type, format)
|
|
7
|
-
* - Content processing (parsing, encoding, extraction)
|
|
8
|
-
* - Security validation (XXE, XSS, zip bombs)
|
|
9
|
-
* - System errors
|
|
10
|
-
*
|
|
11
|
-
* @module processors/errors
|
|
12
|
-
*/
|
|
13
|
-
/**
|
|
14
|
-
* Enumeration of all file processing error codes.
|
|
15
|
-
* Each code represents a specific failure scenario with associated messaging.
|
|
16
|
-
*/
|
|
17
|
-
export var FileErrorCode;
|
|
18
|
-
(function (FileErrorCode) {
|
|
19
|
-
// ============================================================================
|
|
20
|
-
// DOWNLOAD ERRORS
|
|
21
|
-
// ============================================================================
|
|
22
|
-
/** File download failed due to network or server error */
|
|
23
|
-
FileErrorCode["DOWNLOAD_FAILED"] = "DOWNLOAD_FAILED";
|
|
24
|
-
/** Download operation exceeded timeout threshold */
|
|
25
|
-
FileErrorCode["DOWNLOAD_TIMEOUT"] = "DOWNLOAD_TIMEOUT";
|
|
26
|
-
/** Authentication failed when accessing the file */
|
|
27
|
-
FileErrorCode["DOWNLOAD_AUTH_FAILED"] = "DOWNLOAD_AUTH_FAILED";
|
|
28
|
-
/** Network error during download (connection reset, DNS failure, etc.) */
|
|
29
|
-
FileErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
|
|
30
|
-
/** File was not found at the specified location */
|
|
31
|
-
FileErrorCode["FILE_NOT_FOUND"] = "FILE_NOT_FOUND";
|
|
32
|
-
/** Request was rate limited by the server */
|
|
33
|
-
FileErrorCode["RATE_LIMITED"] = "RATE_LIMITED";
|
|
34
|
-
// ============================================================================
|
|
35
|
-
// VALIDATION ERRORS
|
|
36
|
-
// ============================================================================
|
|
37
|
-
/** File exceeds maximum allowed size */
|
|
38
|
-
FileErrorCode["FILE_TOO_LARGE"] = "FILE_TOO_LARGE";
|
|
39
|
-
/** File type is not supported for processing */
|
|
40
|
-
FileErrorCode["UNSUPPORTED_TYPE"] = "UNSUPPORTED_TYPE";
|
|
41
|
-
/** File format is invalid or malformed */
|
|
42
|
-
FileErrorCode["INVALID_FORMAT"] = "INVALID_FORMAT";
|
|
43
|
-
/** File MIME type doesn't match expected format */
|
|
44
|
-
FileErrorCode["INVALID_MIME_TYPE"] = "INVALID_MIME_TYPE";
|
|
45
|
-
/** File magic bytes don't match expected file type */
|
|
46
|
-
FileErrorCode["INVALID_MAGIC_BYTES"] = "INVALID_MAGIC_BYTES";
|
|
47
|
-
/** File appears to be corrupted or damaged */
|
|
48
|
-
FileErrorCode["CORRUPTED_FILE"] = "CORRUPTED_FILE";
|
|
49
|
-
/** File internal structure is invalid */
|
|
50
|
-
FileErrorCode["INVALID_STRUCTURE"] = "INVALID_STRUCTURE";
|
|
51
|
-
// ============================================================================
|
|
52
|
-
// PROCESSING ERRORS
|
|
53
|
-
// ============================================================================
|
|
54
|
-
/** Generic processing failure */
|
|
55
|
-
FileErrorCode["PROCESSING_FAILED"] = "PROCESSING_FAILED";
|
|
56
|
-
/** Failed to parse file content */
|
|
57
|
-
FileErrorCode["PARSING_FAILED"] = "PARSING_FAILED";
|
|
58
|
-
/** Text encoding error (not UTF-8, BOM issues, etc.) */
|
|
59
|
-
FileErrorCode["ENCODING_ERROR"] = "ENCODING_ERROR";
|
|
60
|
-
/** Failed to extract content from file */
|
|
61
|
-
FileErrorCode["EXTRACTION_FAILED"] = "EXTRACTION_FAILED";
|
|
62
|
-
/** Failed to decompress file content */
|
|
63
|
-
FileErrorCode["DECOMPRESSION_FAILED"] = "DECOMPRESSION_FAILED";
|
|
64
|
-
// ============================================================================
|
|
65
|
-
// SECURITY ERRORS
|
|
66
|
-
// ============================================================================
|
|
67
|
-
/** Security validation failed */
|
|
68
|
-
FileErrorCode["SECURITY_VALIDATION_FAILED"] = "SECURITY_VALIDATION_FAILED";
|
|
69
|
-
/** XML External Entity (XXE) attack detected */
|
|
70
|
-
FileErrorCode["XXE_DETECTED"] = "XXE_DETECTED";
|
|
71
|
-
/** Cross-site scripting (XSS) attack detected */
|
|
72
|
-
FileErrorCode["XSS_DETECTED"] = "XSS_DETECTED";
|
|
73
|
-
/** Potentially malicious code execution detected */
|
|
74
|
-
FileErrorCode["CODE_EXECUTION_DETECTED"] = "CODE_EXECUTION_DETECTED";
|
|
75
|
-
/** Zip bomb or decompression bomb detected */
|
|
76
|
-
FileErrorCode["ZIP_BOMB_DETECTED"] = "ZIP_BOMB_DETECTED";
|
|
77
|
-
// ============================================================================
|
|
78
|
-
// SYSTEM ERRORS
|
|
79
|
-
// ============================================================================
|
|
80
|
-
/** Unknown or unexpected error */
|
|
81
|
-
FileErrorCode["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
|
|
82
|
-
})(FileErrorCode || (FileErrorCode = {}));
|
|
83
|
-
/**
|
|
84
|
-
* Error messages map with technical and user-friendly messaging for each error code.
|
|
85
|
-
* All messages are designed to be clear, actionable, and free of technical jargon.
|
|
86
|
-
*/
|
|
87
|
-
export const ERROR_MESSAGES = {
|
|
88
|
-
// Download errors
|
|
89
|
-
[FileErrorCode.DOWNLOAD_FAILED]: {
|
|
90
|
-
message: "Failed to download the file from the source.",
|
|
91
|
-
userMessage: "We couldn't download your file.",
|
|
92
|
-
suggestedAction: "Please try uploading the file again. If the problem persists, the file may have been deleted or access revoked.",
|
|
93
|
-
retryable: true,
|
|
94
|
-
},
|
|
95
|
-
[FileErrorCode.DOWNLOAD_TIMEOUT]: {
|
|
96
|
-
message: "File download timed out.",
|
|
97
|
-
userMessage: "The download took too long and was cancelled.",
|
|
98
|
-
suggestedAction: "This usually happens with very large files or slow connections. Try re-uploading a smaller version or check your network connection.",
|
|
99
|
-
retryable: true,
|
|
100
|
-
},
|
|
101
|
-
[FileErrorCode.DOWNLOAD_AUTH_FAILED]: {
|
|
102
|
-
message: "Authentication failed when accessing the file.",
|
|
103
|
-
userMessage: "We don't have permission to access this file.",
|
|
104
|
-
suggestedAction: "Please check the file permissions and ensure it's accessible, then try again.",
|
|
105
|
-
retryable: false,
|
|
106
|
-
},
|
|
107
|
-
[FileErrorCode.NETWORK_ERROR]: {
|
|
108
|
-
message: "Network error while downloading the file.",
|
|
109
|
-
userMessage: "A network error occurred while downloading.",
|
|
110
|
-
suggestedAction: "This is usually temporary. Please try uploading the file again.",
|
|
111
|
-
retryable: true,
|
|
112
|
-
},
|
|
113
|
-
[FileErrorCode.FILE_NOT_FOUND]: {
|
|
114
|
-
message: "The file could not be found at the specified location.",
|
|
115
|
-
userMessage: "The file could not be found.",
|
|
116
|
-
suggestedAction: "The file may have been moved or deleted. Please re-upload the file.",
|
|
117
|
-
retryable: false,
|
|
118
|
-
},
|
|
119
|
-
[FileErrorCode.RATE_LIMITED]: {
|
|
120
|
-
message: "Request was rate limited by the server.",
|
|
121
|
-
userMessage: "Too many requests in a short time.",
|
|
122
|
-
suggestedAction: "Please wait a few seconds and try again.",
|
|
123
|
-
retryable: true,
|
|
124
|
-
},
|
|
125
|
-
// Validation errors
|
|
126
|
-
[FileErrorCode.FILE_TOO_LARGE]: {
|
|
127
|
-
message: "File exceeds the maximum allowed size.",
|
|
128
|
-
userMessage: "This file is too large to process.",
|
|
129
|
-
suggestedAction: "Try compressing the file or splitting it into smaller parts. Consider reducing image quality or removing unnecessary content.",
|
|
130
|
-
retryable: false,
|
|
131
|
-
},
|
|
132
|
-
[FileErrorCode.UNSUPPORTED_TYPE]: {
|
|
133
|
-
message: "The file type is not supported for processing.",
|
|
134
|
-
userMessage: "This file type is not supported.",
|
|
135
|
-
suggestedAction: "Please convert your file to a supported format and try again.",
|
|
136
|
-
retryable: false,
|
|
137
|
-
},
|
|
138
|
-
[FileErrorCode.INVALID_FORMAT]: {
|
|
139
|
-
message: "The file format is invalid or malformed.",
|
|
140
|
-
userMessage: "This file appears to be in an invalid format.",
|
|
141
|
-
suggestedAction: "Please ensure the file is properly saved and not corrupted, then try again.",
|
|
142
|
-
retryable: false,
|
|
143
|
-
},
|
|
144
|
-
[FileErrorCode.INVALID_MIME_TYPE]: {
|
|
145
|
-
message: "File MIME type doesn't match the expected format.",
|
|
146
|
-
userMessage: "The file type doesn't match its extension.",
|
|
147
|
-
suggestedAction: "Please ensure the file extension matches its actual content type and try again.",
|
|
148
|
-
retryable: false,
|
|
149
|
-
},
|
|
150
|
-
[FileErrorCode.INVALID_MAGIC_BYTES]: {
|
|
151
|
-
message: "File magic bytes don't match the expected file type.",
|
|
152
|
-
userMessage: "This file doesn't appear to be a valid file of the expected type.",
|
|
153
|
-
suggestedAction: "The file may be corrupted or saved in the wrong format. Try re-saving the file in the correct format.",
|
|
154
|
-
retryable: true,
|
|
155
|
-
},
|
|
156
|
-
[FileErrorCode.CORRUPTED_FILE]: {
|
|
157
|
-
message: "File appears to be corrupted or damaged.",
|
|
158
|
-
userMessage: "This file appears to be corrupted or invalid.",
|
|
159
|
-
suggestedAction: "The file structure is invalid. Try re-downloading from the original source or re-creating the file.",
|
|
160
|
-
retryable: false,
|
|
161
|
-
},
|
|
162
|
-
[FileErrorCode.INVALID_STRUCTURE]: {
|
|
163
|
-
message: "File internal structure is invalid.",
|
|
164
|
-
userMessage: "The file has an invalid internal structure.",
|
|
165
|
-
suggestedAction: "The file format is correct but the content is malformed. Try validating the file with a format checker or re-exporting from the original application.",
|
|
166
|
-
retryable: false,
|
|
167
|
-
},
|
|
168
|
-
// Processing errors
|
|
169
|
-
[FileErrorCode.PROCESSING_FAILED]: {
|
|
170
|
-
message: "Failed to process the file content.",
|
|
171
|
-
userMessage: "We couldn't process this file.",
|
|
172
|
-
suggestedAction: "Please try again. If the problem persists, the file may be in an unsupported variant.",
|
|
173
|
-
retryable: true,
|
|
174
|
-
},
|
|
175
|
-
[FileErrorCode.PARSING_FAILED]: {
|
|
176
|
-
message: "Failed to parse the file content.",
|
|
177
|
-
userMessage: "We couldn't read the contents of this file.",
|
|
178
|
-
suggestedAction: "The file structure may be invalid. Try validating the file with a format checker or re-creating the file.",
|
|
179
|
-
retryable: false,
|
|
180
|
-
},
|
|
181
|
-
[FileErrorCode.ENCODING_ERROR]: {
|
|
182
|
-
message: "Text encoding error detected.",
|
|
183
|
-
userMessage: "We couldn't decode the text in this file.",
|
|
184
|
-
suggestedAction: "Try re-saving the file with UTF-8 encoding. Most modern text editors have this option in 'Save As' settings.",
|
|
185
|
-
retryable: false,
|
|
186
|
-
},
|
|
187
|
-
[FileErrorCode.EXTRACTION_FAILED]: {
|
|
188
|
-
message: "Failed to extract content from the file.",
|
|
189
|
-
userMessage: "We couldn't extract the content from this file.",
|
|
190
|
-
suggestedAction: "The file may be password-protected, corrupted, or use an unsupported variant. Try re-saving without protection.",
|
|
191
|
-
retryable: false,
|
|
192
|
-
},
|
|
193
|
-
[FileErrorCode.DECOMPRESSION_FAILED]: {
|
|
194
|
-
message: "Failed to decompress the file content.",
|
|
195
|
-
userMessage: "We couldn't decompress this file.",
|
|
196
|
-
suggestedAction: "The file may be corrupted or use an unsupported compression method. Try re-uploading or using a different file format.",
|
|
197
|
-
retryable: true,
|
|
198
|
-
},
|
|
199
|
-
// Security errors
|
|
200
|
-
[FileErrorCode.SECURITY_VALIDATION_FAILED]: {
|
|
201
|
-
message: "File failed security validation.",
|
|
202
|
-
userMessage: "This file contains content that is blocked for security reasons.",
|
|
203
|
-
suggestedAction: "Please remove the problematic content and try again. If you believe this is a legitimate file, please contact support.",
|
|
204
|
-
retryable: false,
|
|
205
|
-
},
|
|
206
|
-
[FileErrorCode.XXE_DETECTED]: {
|
|
207
|
-
message: "XML External Entity (XXE) attack pattern detected.",
|
|
208
|
-
userMessage: "This XML file contains DOCTYPE or ENTITY declarations that could pose security risks.",
|
|
209
|
-
suggestedAction: "Please remove DOCTYPE and ENTITY declarations from the XML file. Most XML files don't need these for basic data storage.",
|
|
210
|
-
retryable: false,
|
|
211
|
-
},
|
|
212
|
-
[FileErrorCode.XSS_DETECTED]: {
|
|
213
|
-
message: "Cross-site scripting (XSS) attack pattern detected.",
|
|
214
|
-
userMessage: "This file contains script tags or event handlers that could pose security risks.",
|
|
215
|
-
suggestedAction: "Please remove <script> tags and event handlers (onclick, onerror, etc.) from the file.",
|
|
216
|
-
retryable: false,
|
|
217
|
-
},
|
|
218
|
-
[FileErrorCode.CODE_EXECUTION_DETECTED]: {
|
|
219
|
-
message: "Potentially malicious code execution pattern detected.",
|
|
220
|
-
userMessage: "This file contains code execution tags that are not allowed.",
|
|
221
|
-
suggestedAction: "Please remove custom object/function tags and use standard data structures only.",
|
|
222
|
-
retryable: false,
|
|
223
|
-
},
|
|
224
|
-
[FileErrorCode.ZIP_BOMB_DETECTED]: {
|
|
225
|
-
message: "Zip bomb or decompression bomb pattern detected.",
|
|
226
|
-
userMessage: "This file has an unusually high compression ratio that could indicate a security threat.",
|
|
227
|
-
suggestedAction: "If this is a legitimate file, try re-saving it without extreme compression. Otherwise, please verify the file source.",
|
|
228
|
-
retryable: false,
|
|
229
|
-
},
|
|
230
|
-
// System errors
|
|
231
|
-
[FileErrorCode.UNKNOWN_ERROR]: {
|
|
232
|
-
message: "An unexpected error occurred.",
|
|
233
|
-
userMessage: "An unexpected error occurred while processing your file.",
|
|
234
|
-
suggestedAction: "Please try again. If the problem persists, contact support.",
|
|
235
|
-
retryable: true,
|
|
236
|
-
},
|
|
237
|
-
};
|
|
238
|
-
/**
|
|
239
|
-
* Get the error message template for a specific error code.
|
|
240
|
-
*
|
|
241
|
-
* @param code - The FileErrorCode to get the template for
|
|
242
|
-
* @returns The ErrorMessageTemplate for the given code
|
|
243
|
-
*/
|
|
244
|
-
export function getErrorTemplate(code) {
|
|
245
|
-
return ERROR_MESSAGES[code] ?? ERROR_MESSAGES[FileErrorCode.UNKNOWN_ERROR];
|
|
246
|
-
}
|
|
247
|
-
/**
|
|
248
|
-
* Check if an error code represents a retryable error.
|
|
249
|
-
*
|
|
250
|
-
* @param code - The FileErrorCode to check
|
|
251
|
-
* @returns true if the error is retryable
|
|
252
|
-
*/
|
|
253
|
-
export function isRetryableErrorCode(code) {
|
|
254
|
-
return ERROR_MESSAGES[code]?.retryable ?? false;
|
|
255
|
-
}
|