@juspay/neurolink 9.31.2 → 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 +12 -0
- package/dist/auth/AuthProviderFactory.d.ts +71 -0
- package/dist/auth/AuthProviderFactory.js +111 -0
- package/dist/auth/AuthProviderRegistry.d.ts +33 -0
- package/dist/auth/AuthProviderRegistry.js +190 -0
- package/dist/auth/RequestContext.d.ts +23 -0
- package/dist/auth/RequestContext.js +78 -0
- package/dist/auth/anthropicOAuth.js +1 -1
- package/dist/auth/authContext.d.ts +198 -0
- package/dist/auth/authContext.js +314 -0
- package/dist/auth/errors.d.ts +63 -0
- package/dist/auth/errors.js +39 -0
- package/dist/auth/index.d.ts +20 -8
- package/dist/auth/index.js +35 -7
- package/dist/auth/middleware/AuthMiddleware.d.ts +181 -0
- package/dist/auth/middleware/AuthMiddleware.js +519 -0
- package/dist/auth/middleware/rateLimitByUser.d.ts +282 -0
- package/dist/auth/middleware/rateLimitByUser.js +554 -0
- package/dist/auth/providers/BaseAuthProvider.d.ts +259 -0
- package/dist/auth/providers/BaseAuthProvider.js +723 -0
- package/dist/auth/providers/CognitoProvider.d.ts +61 -0
- package/dist/auth/providers/CognitoProvider.js +304 -0
- package/dist/auth/providers/KeycloakProvider.d.ts +61 -0
- package/dist/auth/providers/KeycloakProvider.js +393 -0
- package/dist/auth/providers/auth0.d.ts +59 -0
- package/dist/auth/providers/auth0.js +274 -0
- package/dist/auth/providers/betterAuth.d.ts +51 -0
- package/dist/auth/providers/betterAuth.js +182 -0
- package/dist/auth/providers/clerk.d.ts +65 -0
- package/dist/auth/providers/clerk.js +317 -0
- package/dist/auth/providers/custom.d.ts +64 -0
- package/dist/auth/providers/custom.js +112 -0
- package/dist/auth/providers/firebase.d.ts +63 -0
- package/dist/auth/providers/firebase.js +226 -0
- package/dist/auth/providers/jwt.d.ts +68 -0
- package/dist/auth/providers/jwt.js +212 -0
- package/dist/auth/providers/oauth2.d.ts +73 -0
- package/dist/auth/providers/oauth2.js +303 -0
- package/dist/auth/providers/supabase.d.ts +63 -0
- package/dist/auth/providers/supabase.js +259 -0
- package/dist/auth/providers/workos.d.ts +61 -0
- package/dist/auth/providers/workos.js +284 -0
- package/dist/auth/serverBridge.d.ts +14 -0
- package/dist/auth/serverBridge.js +25 -0
- package/dist/auth/sessionManager.d.ts +142 -0
- package/dist/auth/sessionManager.js +437 -0
- package/dist/cli/commands/authProviders.d.ts +43 -0
- package/dist/cli/commands/authProviders.js +399 -0
- package/dist/cli/commands/proxy.js +18 -5
- package/dist/cli/factories/authCommandFactory.d.ts +23 -5
- package/dist/cli/factories/authCommandFactory.js +108 -5
- package/dist/cli/parser.js +1 -1
- package/dist/client/aiSdkAdapter.js +1 -1
- package/dist/client/index.js +138 -477
- package/dist/core/factory.js +0 -1
- package/dist/core/infrastructure/baseRegistry.d.ts +3 -1
- package/dist/core/infrastructure/baseRegistry.js +5 -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/index.d.ts +1 -0
- package/dist/index.js +25 -0
- package/dist/lib/auth/AuthProviderFactory.d.ts +71 -0
- package/dist/lib/auth/AuthProviderFactory.js +112 -0
- package/dist/lib/auth/AuthProviderRegistry.d.ts +33 -0
- package/dist/lib/auth/AuthProviderRegistry.js +191 -0
- package/dist/lib/auth/RequestContext.d.ts +23 -0
- package/dist/lib/auth/RequestContext.js +79 -0
- package/dist/lib/auth/authContext.d.ts +198 -0
- package/dist/lib/auth/authContext.js +315 -0
- package/dist/lib/auth/errors.d.ts +63 -0
- package/dist/lib/auth/errors.js +40 -0
- package/dist/lib/auth/index.d.ts +20 -8
- package/dist/lib/auth/index.js +35 -7
- package/dist/lib/auth/middleware/AuthMiddleware.d.ts +181 -0
- package/dist/lib/auth/middleware/AuthMiddleware.js +520 -0
- package/dist/lib/auth/middleware/rateLimitByUser.d.ts +282 -0
- package/dist/lib/auth/middleware/rateLimitByUser.js +555 -0
- package/dist/lib/auth/providers/BaseAuthProvider.d.ts +259 -0
- package/dist/lib/auth/providers/BaseAuthProvider.js +724 -0
- package/dist/lib/auth/providers/CognitoProvider.d.ts +61 -0
- package/dist/lib/auth/providers/CognitoProvider.js +305 -0
- package/dist/lib/auth/providers/KeycloakProvider.d.ts +61 -0
- package/dist/lib/auth/providers/KeycloakProvider.js +394 -0
- package/dist/lib/auth/providers/auth0.d.ts +59 -0
- package/dist/lib/auth/providers/auth0.js +275 -0
- package/dist/lib/auth/providers/betterAuth.d.ts +51 -0
- package/dist/lib/auth/providers/betterAuth.js +183 -0
- package/dist/lib/auth/providers/clerk.d.ts +65 -0
- package/dist/lib/auth/providers/clerk.js +318 -0
- package/dist/lib/auth/providers/custom.d.ts +64 -0
- package/dist/lib/auth/providers/custom.js +113 -0
- package/dist/lib/auth/providers/firebase.d.ts +63 -0
- package/dist/lib/auth/providers/firebase.js +227 -0
- package/dist/lib/auth/providers/jwt.d.ts +68 -0
- package/dist/lib/auth/providers/jwt.js +213 -0
- package/dist/lib/auth/providers/oauth2.d.ts +73 -0
- package/dist/lib/auth/providers/oauth2.js +304 -0
- package/dist/lib/auth/providers/supabase.d.ts +63 -0
- package/dist/lib/auth/providers/supabase.js +260 -0
- package/dist/lib/auth/providers/workos.d.ts +61 -0
- package/dist/lib/auth/providers/workos.js +285 -0
- package/dist/lib/auth/serverBridge.d.ts +14 -0
- package/dist/lib/auth/serverBridge.js +26 -0
- package/dist/lib/auth/sessionManager.d.ts +142 -0
- package/dist/lib/auth/sessionManager.js +438 -0
- package/dist/lib/core/infrastructure/baseRegistry.d.ts +3 -1
- package/dist/lib/core/infrastructure/baseRegistry.js +5 -1
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.js +25 -0
- package/dist/lib/mcp/toolRegistry.js +11 -1
- package/dist/lib/neurolink.d.ts +42 -1
- package/dist/lib/neurolink.js +218 -0
- package/dist/lib/rag/ChunkerRegistry.js +2 -2
- package/dist/lib/rag/metadata/MetadataExtractorRegistry.js +2 -2
- package/dist/lib/rag/reranker/RerankerRegistry.js +2 -2
- package/dist/lib/server/routes/agentRoutes.js +20 -2
- package/dist/lib/server/routes/claudeProxyRoutes.js +45 -9
- package/dist/lib/types/authTypes.d.ts +937 -1
- package/dist/lib/types/authTypes.js +2 -1
- package/dist/lib/types/configTypes.d.ts +46 -0
- package/dist/lib/types/generateTypes.d.ts +6 -0
- package/dist/lib/types/index.d.ts +1 -0
- package/dist/lib/types/streamTypes.d.ts +6 -0
- package/dist/mcp/elicitationProtocol.js +1 -1
- package/dist/mcp/servers/agent/directToolsServer.js +0 -1
- package/dist/mcp/toolRegistry.js +11 -1
- package/dist/neurolink.d.ts +42 -1
- package/dist/neurolink.js +218 -0
- package/dist/providers/azureOpenai.js +1 -1
- package/dist/providers/huggingFace.js +0 -1
- package/dist/providers/openaiCompatible.js +0 -1
- package/dist/rag/ChunkerRegistry.js +2 -2
- package/dist/rag/metadata/MetadataExtractorRegistry.js +2 -2
- package/dist/rag/reranker/RerankerRegistry.js +2 -2
- package/dist/sdk/toolRegistration.js +0 -1
- package/dist/server/openapi/generator.js +1 -1
- package/dist/server/routes/agentRoutes.js +20 -2
- package/dist/server/routes/claudeProxyRoutes.js +45 -9
- package/dist/types/authTypes.d.ts +937 -1
- package/dist/types/authTypes.js +2 -1
- package/dist/types/configTypes.d.ts +46 -0
- package/dist/types/configTypes.js +0 -5
- package/dist/types/generateTypes.d.ts +6 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/modelTypes.js +0 -1
- package/dist/types/streamTypes.d.ts +6 -0
- 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 +3 -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/anthropicOAuth.js +0 -974
- 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 -49
- 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 -719
- 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 -8015
- 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 -171
- 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 -8
- 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,450 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* On-Demand File Access Tools
|
|
3
|
-
*
|
|
4
|
-
* Exposes file operations as LLM tools via the Vercel AI SDK `tool()` pattern.
|
|
5
|
-
* These tools allow the LLM to access file content lazily — only reading
|
|
6
|
-
* the specific sections, lines, or search results it needs.
|
|
7
|
-
*
|
|
8
|
-
* Tools:
|
|
9
|
-
* - list_attached_files: List all registered files with metadata
|
|
10
|
-
* - read_file_section: Read specific line range with token budget
|
|
11
|
-
* - search_in_file: Search for patterns within a file
|
|
12
|
-
* - get_file_preview: Get the preview/summary of a file
|
|
13
|
-
* - extract_file_content: Targeted extraction for any file type (video frames,
|
|
14
|
-
* PDF pages, spreadsheet ranges, archive entries, PPTX slides)
|
|
15
|
-
*
|
|
16
|
-
* @module files/fileTools
|
|
17
|
-
*/
|
|
18
|
-
import { tool } from "ai";
|
|
19
|
-
import { z } from "zod";
|
|
20
|
-
/**
|
|
21
|
-
* Create file access tools bound to a FileReferenceRegistry instance.
|
|
22
|
-
*
|
|
23
|
-
* These tools follow the same pattern as the existing directAgentTools
|
|
24
|
-
* (getCurrentTime, readFile, etc.) in src/lib/agent/directTools.ts.
|
|
25
|
-
* They use `tool()` from the Vercel AI SDK with zod parameter schemas.
|
|
26
|
-
*
|
|
27
|
-
* @param registry - The FileReferenceRegistry instance to bind to
|
|
28
|
-
* @returns Record of tool name to tool definition
|
|
29
|
-
*
|
|
30
|
-
* @example
|
|
31
|
-
* ```typescript
|
|
32
|
-
* const registry = new FileReferenceRegistry();
|
|
33
|
-
* const tools = createFileTools(registry);
|
|
34
|
-
* // tools.list_attached_files, tools.read_file_section, etc.
|
|
35
|
-
* ```
|
|
36
|
-
*/
|
|
37
|
-
export function createFileTools(registry) {
|
|
38
|
-
return {
|
|
39
|
-
list_attached_files: createListAttachedFilesTool(registry),
|
|
40
|
-
read_file_section: createReadFileSectionTool(registry),
|
|
41
|
-
search_in_file: createSearchInFileTool(registry),
|
|
42
|
-
get_file_preview: createGetFilePreviewTool(registry),
|
|
43
|
-
extract_file_content: createExtractFileContentTool(registry),
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
// ---------------------------------------------------------------------------
|
|
47
|
-
// Individual tool factory helpers
|
|
48
|
-
// ---------------------------------------------------------------------------
|
|
49
|
-
/**
|
|
50
|
-
* List all files that have been attached/registered for this conversation.
|
|
51
|
-
* Returns a formatted table with filename, type, size, and status.
|
|
52
|
-
*/
|
|
53
|
-
function createListAttachedFilesTool(registry) {
|
|
54
|
-
return tool({
|
|
55
|
-
description: "List all files attached to this conversation with their metadata. " +
|
|
56
|
-
"Shows filename, type, size, estimated tokens, and processing status. " +
|
|
57
|
-
"Each file has a unique UUID 'id' field — use that ID (or the filename) " +
|
|
58
|
-
"as the file_id parameter in read_file_section, search_in_file, and get_file_preview. " +
|
|
59
|
-
"Always call this first to discover available files.",
|
|
60
|
-
inputSchema: z.object({}),
|
|
61
|
-
execute: async () => {
|
|
62
|
-
try {
|
|
63
|
-
const files = registry.list();
|
|
64
|
-
if (files.length === 0) {
|
|
65
|
-
return {
|
|
66
|
-
success: true,
|
|
67
|
-
message: "No files are attached to this conversation.",
|
|
68
|
-
fileCount: 0,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
const fileList = files.map((f, i) => ({
|
|
72
|
-
index: i + 1,
|
|
73
|
-
id: f.id,
|
|
74
|
-
filename: f.filename,
|
|
75
|
-
type: f.detectedType,
|
|
76
|
-
size: formatSize(f.sizeBytes),
|
|
77
|
-
sizeBytes: f.sizeBytes,
|
|
78
|
-
sizeTier: f.sizeTier,
|
|
79
|
-
estimatedTokens: f.estimatedTokens,
|
|
80
|
-
status: f.status,
|
|
81
|
-
hasPreview: !!f.preview,
|
|
82
|
-
hasSummary: !!f.summary,
|
|
83
|
-
totalLines: f.totalLines ?? null,
|
|
84
|
-
}));
|
|
85
|
-
return {
|
|
86
|
-
success: true,
|
|
87
|
-
fileCount: files.length,
|
|
88
|
-
files: fileList,
|
|
89
|
-
formatted: registry.listFormatted(),
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
catch (error) {
|
|
93
|
-
return {
|
|
94
|
-
success: false,
|
|
95
|
-
error: error instanceof Error ? error.message : String(error),
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
},
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Read a specific section (line range) of an attached file.
|
|
103
|
-
* Supports token budget to prevent reading too much content.
|
|
104
|
-
*/
|
|
105
|
-
function createReadFileSectionTool(registry) {
|
|
106
|
-
return tool({
|
|
107
|
-
description: "Read specific lines from an attached file. Specify the file_id " +
|
|
108
|
-
"(UUID from list_attached_files, or the exact filename), start line, and end line. " +
|
|
109
|
-
"Uses a token budget to prevent reading too much content at once. " +
|
|
110
|
-
"For large files, read in sections rather than all at once.",
|
|
111
|
-
inputSchema: z.object({
|
|
112
|
-
file_id: z
|
|
113
|
-
.string()
|
|
114
|
-
.describe("The file ID (UUID from list_attached_files) or the exact filename"),
|
|
115
|
-
start_line: z
|
|
116
|
-
.number()
|
|
117
|
-
.int()
|
|
118
|
-
.min(1)
|
|
119
|
-
.default(1)
|
|
120
|
-
.describe("Starting line number (1-indexed, default: 1)"),
|
|
121
|
-
end_line: z
|
|
122
|
-
.number()
|
|
123
|
-
.int()
|
|
124
|
-
.min(1)
|
|
125
|
-
.optional()
|
|
126
|
-
.describe("Ending line number (1-indexed, default: read until token budget is exhausted)"),
|
|
127
|
-
token_budget: z
|
|
128
|
-
.number()
|
|
129
|
-
.int()
|
|
130
|
-
.min(100)
|
|
131
|
-
.max(100_000)
|
|
132
|
-
.default(10_000)
|
|
133
|
-
.describe("Maximum tokens to return (default: 10000, max: 100000)"),
|
|
134
|
-
}),
|
|
135
|
-
execute: async ({ file_id, start_line, end_line, token_budget }) => {
|
|
136
|
-
try {
|
|
137
|
-
// Resolve file_id: supports both UUID and filename
|
|
138
|
-
const ref = registry.getByIdOrFilename(file_id);
|
|
139
|
-
if (!ref) {
|
|
140
|
-
return {
|
|
141
|
-
success: false,
|
|
142
|
-
error: `File not found: "${file_id}". Use list_attached_files to see available file IDs.`,
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
const resolvedId = ref.id;
|
|
146
|
-
const result = await registry.readSection(resolvedId, start_line, end_line, token_budget);
|
|
147
|
-
return {
|
|
148
|
-
success: true,
|
|
149
|
-
content: result.content,
|
|
150
|
-
startLine: result.startLine,
|
|
151
|
-
endLine: result.endLine,
|
|
152
|
-
totalLines: result.totalLines,
|
|
153
|
-
truncated: result.truncated,
|
|
154
|
-
estimatedTokens: result.estimatedTokens,
|
|
155
|
-
guidance: result.truncated
|
|
156
|
-
? `Content was truncated at token budget (${token_budget}). ` +
|
|
157
|
-
`Read from line ${result.endLine + 1} to continue.`
|
|
158
|
-
: undefined,
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
catch (error) {
|
|
162
|
-
return {
|
|
163
|
-
success: false,
|
|
164
|
-
error: error instanceof Error ? error.message : String(error),
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
},
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Search for a text pattern or regex within an attached file.
|
|
172
|
-
* Returns matching lines with surrounding context.
|
|
173
|
-
*/
|
|
174
|
-
function createSearchInFileTool(registry) {
|
|
175
|
-
return tool({
|
|
176
|
-
description: "Search for a text pattern within an attached file. " +
|
|
177
|
-
"Specify file_id as the UUID from list_attached_files or the exact filename. " +
|
|
178
|
-
"Supports plain text and regex patterns. Returns matching lines " +
|
|
179
|
-
"with context lines before and after each match. " +
|
|
180
|
-
"Use this to find specific content without reading the entire file.",
|
|
181
|
-
inputSchema: z.object({
|
|
182
|
-
file_id: z
|
|
183
|
-
.string()
|
|
184
|
-
.describe("The file ID (UUID from list_attached_files) or the exact filename"),
|
|
185
|
-
pattern: z
|
|
186
|
-
.string()
|
|
187
|
-
.describe("Text or regex pattern to search for (case-insensitive by default)"),
|
|
188
|
-
max_matches: z
|
|
189
|
-
.number()
|
|
190
|
-
.int()
|
|
191
|
-
.min(1)
|
|
192
|
-
.max(100)
|
|
193
|
-
.default(20)
|
|
194
|
-
.describe("Maximum number of matches to return (default: 20)"),
|
|
195
|
-
}),
|
|
196
|
-
execute: async ({ file_id, pattern, max_matches }) => {
|
|
197
|
-
try {
|
|
198
|
-
// Resolve file_id: supports both UUID and filename
|
|
199
|
-
const ref = registry.getByIdOrFilename(file_id);
|
|
200
|
-
if (!ref) {
|
|
201
|
-
return {
|
|
202
|
-
success: false,
|
|
203
|
-
error: `File not found: "${file_id}". Use list_attached_files to see available file IDs.`,
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
const resolvedId = ref.id;
|
|
207
|
-
const result = await registry.search(resolvedId, pattern, max_matches);
|
|
208
|
-
const formattedMatches = result.matches.map((m) => ({
|
|
209
|
-
lineNumber: m.lineNumber,
|
|
210
|
-
line: m.line,
|
|
211
|
-
context: m.contextBefore.length > 0 || m.contextAfter.length > 0
|
|
212
|
-
? {
|
|
213
|
-
before: m.contextBefore,
|
|
214
|
-
after: m.contextAfter,
|
|
215
|
-
}
|
|
216
|
-
: undefined,
|
|
217
|
-
}));
|
|
218
|
-
return {
|
|
219
|
-
success: true,
|
|
220
|
-
pattern,
|
|
221
|
-
totalMatches: result.totalMatches,
|
|
222
|
-
matchesReturned: result.matches.length,
|
|
223
|
-
truncated: result.truncated,
|
|
224
|
-
matches: formattedMatches,
|
|
225
|
-
};
|
|
226
|
-
}
|
|
227
|
-
catch (error) {
|
|
228
|
-
return {
|
|
229
|
-
success: false,
|
|
230
|
-
error: error instanceof Error ? error.message : String(error),
|
|
231
|
-
};
|
|
232
|
-
}
|
|
233
|
-
},
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
/**
|
|
237
|
-
* Get the preview or summary of an attached file.
|
|
238
|
-
* For files that have been summarized, returns the summary.
|
|
239
|
-
* Otherwise returns the initial preview.
|
|
240
|
-
*/
|
|
241
|
-
function createGetFilePreviewTool(registry) {
|
|
242
|
-
return tool({
|
|
243
|
-
description: "Get the preview or summary of an attached file. " +
|
|
244
|
-
"Specify file_id as the UUID from list_attached_files or the exact filename. " +
|
|
245
|
-
"Returns the file's initial preview (first ~2000 chars) or its " +
|
|
246
|
-
"LLM-generated summary if available. Includes file metadata.",
|
|
247
|
-
inputSchema: z.object({
|
|
248
|
-
file_id: z
|
|
249
|
-
.string()
|
|
250
|
-
.describe("The file ID (UUID from list_attached_files) or the exact filename"),
|
|
251
|
-
}),
|
|
252
|
-
execute: async ({ file_id }) => {
|
|
253
|
-
try {
|
|
254
|
-
// Resolve file_id: supports both UUID and filename
|
|
255
|
-
const ref = registry.getByIdOrFilename(file_id);
|
|
256
|
-
if (!ref) {
|
|
257
|
-
return {
|
|
258
|
-
success: false,
|
|
259
|
-
error: `File not found: "${file_id}". Use list_attached_files to see available file IDs.`,
|
|
260
|
-
};
|
|
261
|
-
}
|
|
262
|
-
// Ensure binary files are processed so preview contains real content
|
|
263
|
-
// instead of placeholder metadata like "[PDF document: 4.39 MB]"
|
|
264
|
-
await registry.ensureProcessed(ref.id);
|
|
265
|
-
return {
|
|
266
|
-
success: true,
|
|
267
|
-
filename: ref.filename,
|
|
268
|
-
type: ref.detectedType,
|
|
269
|
-
size: formatSize(ref.sizeBytes),
|
|
270
|
-
sizeBytes: ref.sizeBytes,
|
|
271
|
-
sizeTier: ref.sizeTier,
|
|
272
|
-
mimeType: ref.mimeType,
|
|
273
|
-
estimatedTokens: ref.estimatedTokens,
|
|
274
|
-
status: ref.status,
|
|
275
|
-
totalLines: ref.totalLines ?? null,
|
|
276
|
-
preview: ref.preview,
|
|
277
|
-
summary: ref.summary ?? null,
|
|
278
|
-
hasSummary: !!ref.summary,
|
|
279
|
-
};
|
|
280
|
-
}
|
|
281
|
-
catch (error) {
|
|
282
|
-
return {
|
|
283
|
-
success: false,
|
|
284
|
-
error: error instanceof Error ? error.message : String(error),
|
|
285
|
-
};
|
|
286
|
-
}
|
|
287
|
-
},
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
/**
|
|
291
|
-
* Extract targeted content from any attached file type.
|
|
292
|
-
* Supports type-specific parameters for deep content access.
|
|
293
|
-
*/
|
|
294
|
-
function createExtractFileContentTool(registry) {
|
|
295
|
-
return tool({
|
|
296
|
-
description: "Extract specific content from an attached file. This is the universal extraction tool " +
|
|
297
|
-
"that handles all file types with type-specific parameters:\n" +
|
|
298
|
-
"- VIDEO: Use start_time/end_time to get frames from a time range\n" +
|
|
299
|
-
"- PDF: Use pages (e.g., [1,3,5]) or page_range to get specific pages\n" +
|
|
300
|
-
"- SPREADSHEET (xlsx): Use sheet, row_range, and columns for targeted data\n" +
|
|
301
|
-
"- PPTX: Use pages to get specific slides\n" +
|
|
302
|
-
"- ARCHIVE (zip): Use entry_path to extract a specific file from the archive\n" +
|
|
303
|
-
"- TEXT/CODE: Use page_range as line range for targeted reading\n\n" +
|
|
304
|
-
"For video extraction, the result includes images (frames) that will be visible to you. " +
|
|
305
|
-
"Always call list_attached_files first to discover file IDs.",
|
|
306
|
-
inputSchema: z.object({
|
|
307
|
-
file_id: z
|
|
308
|
-
.string()
|
|
309
|
-
.describe("File ID (UUID) or exact filename from list_attached_files"),
|
|
310
|
-
// Video parameters
|
|
311
|
-
start_time: z
|
|
312
|
-
.number()
|
|
313
|
-
.optional()
|
|
314
|
-
.describe("Start timestamp in seconds (video only)"),
|
|
315
|
-
end_time: z
|
|
316
|
-
.number()
|
|
317
|
-
.optional()
|
|
318
|
-
.describe("End timestamp in seconds (video only)"),
|
|
319
|
-
frame_count: z
|
|
320
|
-
.number()
|
|
321
|
-
.int()
|
|
322
|
-
.min(1)
|
|
323
|
-
.max(20)
|
|
324
|
-
.optional()
|
|
325
|
-
.describe("Number of frames to extract in time range (video only, default: 5, max: 20)"),
|
|
326
|
-
// PDF / PPTX parameters
|
|
327
|
-
pages: z
|
|
328
|
-
.array(z.number().int().min(1))
|
|
329
|
-
.optional()
|
|
330
|
-
.describe("Specific page/slide numbers to extract (1-indexed)"),
|
|
331
|
-
page_range: z
|
|
332
|
-
.object({
|
|
333
|
-
start: z.number().int().min(1),
|
|
334
|
-
end: z.number().int().min(1),
|
|
335
|
-
})
|
|
336
|
-
.optional()
|
|
337
|
-
.describe("Page/slide range to extract (1-indexed, inclusive)"),
|
|
338
|
-
// Spreadsheet parameters
|
|
339
|
-
sheet: z
|
|
340
|
-
.string()
|
|
341
|
-
.optional()
|
|
342
|
-
.describe("Sheet name or 0-based index as string e.g. '0', '1' (spreadsheet only, default: first sheet)"),
|
|
343
|
-
row_range: z
|
|
344
|
-
.object({
|
|
345
|
-
start: z.number().int().min(1),
|
|
346
|
-
end: z.number().int().min(1),
|
|
347
|
-
})
|
|
348
|
-
.optional()
|
|
349
|
-
.describe("Row range (1-indexed, spreadsheet only)"),
|
|
350
|
-
columns: z
|
|
351
|
-
.array(z.string())
|
|
352
|
-
.optional()
|
|
353
|
-
.describe("Specific column letters to include (e.g., ['A', 'B', 'D'], spreadsheet only)"),
|
|
354
|
-
// Archive parameters
|
|
355
|
-
entry_path: z
|
|
356
|
-
.string()
|
|
357
|
-
.optional()
|
|
358
|
-
.describe("File path within archive to extract (archive only)"),
|
|
359
|
-
// General
|
|
360
|
-
format: z
|
|
361
|
-
.enum(["text", "detailed", "summary"])
|
|
362
|
-
.optional()
|
|
363
|
-
.describe("Output format hint (default: text)"),
|
|
364
|
-
}),
|
|
365
|
-
execute: async (params) => {
|
|
366
|
-
try {
|
|
367
|
-
// Convert sheet from string to number if it's a numeric index
|
|
368
|
-
const extractParams = {
|
|
369
|
-
...params,
|
|
370
|
-
sheet: params.sheet !== undefined
|
|
371
|
-
? /^\d+$/.test(params.sheet)
|
|
372
|
-
? parseInt(params.sheet, 10)
|
|
373
|
-
: params.sheet
|
|
374
|
-
: undefined,
|
|
375
|
-
};
|
|
376
|
-
const result = await registry.extractContent(extractParams);
|
|
377
|
-
if (!result.success) {
|
|
378
|
-
return {
|
|
379
|
-
success: false,
|
|
380
|
-
error: result.error,
|
|
381
|
-
text: undefined,
|
|
382
|
-
metadata: undefined,
|
|
383
|
-
imageCount: 0,
|
|
384
|
-
_images: undefined,
|
|
385
|
-
};
|
|
386
|
-
}
|
|
387
|
-
return {
|
|
388
|
-
success: true,
|
|
389
|
-
text: result.text,
|
|
390
|
-
metadata: result.metadata,
|
|
391
|
-
imageCount: result.images?.length ?? 0,
|
|
392
|
-
// Store raw buffers for experimental_toToolResultContent to convert
|
|
393
|
-
_images: result.images,
|
|
394
|
-
error: undefined,
|
|
395
|
-
};
|
|
396
|
-
}
|
|
397
|
-
catch (error) {
|
|
398
|
-
return {
|
|
399
|
-
success: false,
|
|
400
|
-
error: error instanceof Error ? error.message : String(error),
|
|
401
|
-
text: undefined,
|
|
402
|
-
metadata: undefined,
|
|
403
|
-
imageCount: 0,
|
|
404
|
-
_images: undefined,
|
|
405
|
-
};
|
|
406
|
-
}
|
|
407
|
-
},
|
|
408
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
409
|
-
toModelOutput: ({ output }) => {
|
|
410
|
-
const parts = [];
|
|
411
|
-
// Add text content
|
|
412
|
-
if (output.text) {
|
|
413
|
-
parts.push({ type: "text", text: output.text });
|
|
414
|
-
}
|
|
415
|
-
else if (output.error) {
|
|
416
|
-
parts.push({ type: "text", text: `Error: ${output.error}` });
|
|
417
|
-
}
|
|
418
|
-
// Add images as image content parts so the LLM can see them
|
|
419
|
-
if (output._images && output._images.length > 0) {
|
|
420
|
-
for (const img of output._images) {
|
|
421
|
-
parts.push({
|
|
422
|
-
type: "image-data",
|
|
423
|
-
data: img.toString("base64"),
|
|
424
|
-
mediaType: "image/jpeg",
|
|
425
|
-
});
|
|
426
|
-
}
|
|
427
|
-
}
|
|
428
|
-
// Fallback: always have at least one text part
|
|
429
|
-
if (parts.length === 0) {
|
|
430
|
-
parts.push({ type: "text", text: "(No content extracted)" });
|
|
431
|
-
}
|
|
432
|
-
return { type: "content", value: parts };
|
|
433
|
-
},
|
|
434
|
-
});
|
|
435
|
-
}
|
|
436
|
-
/**
|
|
437
|
-
* Format byte size as human-readable string.
|
|
438
|
-
*/
|
|
439
|
-
function formatSize(bytes) {
|
|
440
|
-
if (bytes < 1024) {
|
|
441
|
-
return `${bytes} B`;
|
|
442
|
-
}
|
|
443
|
-
if (bytes < 1024 * 1024) {
|
|
444
|
-
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
445
|
-
}
|
|
446
|
-
if (bytes < 1024 * 1024 * 1024) {
|
|
447
|
-
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
448
|
-
}
|
|
449
|
-
return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)} GB`;
|
|
450
|
-
}
|