@juspay/neurolink 9.24.0 → 9.25.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/adapters/tts/googleTTSHandler.js +26 -1
- package/dist/adapters/video/vertexVideoHandler.js +23 -17
- package/dist/cli/commands/config.d.ts +3 -3
- package/dist/cli/commands/observability.d.ts +53 -0
- package/dist/cli/commands/observability.js +453 -0
- package/dist/cli/commands/telemetry.d.ts +63 -0
- package/dist/cli/commands/telemetry.js +689 -0
- package/dist/cli/factories/commandFactory.js +29 -15
- package/dist/cli/parser.js +6 -9
- package/dist/cli/utils/formatters.d.ts +13 -0
- package/dist/cli/utils/formatters.js +23 -0
- package/dist/constants/contextWindows.js +6 -0
- package/dist/constants/enums.d.ts +6 -0
- package/dist/constants/enums.js +8 -2
- package/dist/context/budgetChecker.js +75 -48
- package/dist/context/contextCompactor.js +135 -127
- package/dist/core/baseProvider.d.ts +5 -0
- package/dist/core/baseProvider.js +117 -110
- package/dist/core/conversationMemoryInitializer.js +7 -4
- package/dist/core/conversationMemoryManager.d.ts +2 -0
- package/dist/core/conversationMemoryManager.js +6 -2
- package/dist/core/modules/GenerationHandler.d.ts +2 -2
- package/dist/core/modules/GenerationHandler.js +12 -12
- package/dist/evaluation/ragasEvaluator.js +39 -19
- package/dist/evaluation/scoring.js +46 -20
- package/dist/features/ppt/presentationOrchestrator.js +23 -0
- package/dist/features/ppt/slideGenerator.js +13 -0
- package/dist/features/ppt/slideRenderers.d.ts +1 -1
- package/dist/features/ppt/slideRenderers.js +6 -4
- package/dist/features/ppt/slideTypeInference.d.ts +1 -1
- package/dist/features/ppt/slideTypeInference.js +75 -73
- package/dist/files/fileTools.d.ts +6 -6
- package/dist/index.d.ts +46 -12
- package/dist/index.js +79 -17
- package/dist/lib/adapters/tts/googleTTSHandler.js +26 -1
- package/dist/lib/adapters/video/vertexVideoHandler.js +23 -17
- package/dist/lib/constants/contextWindows.js +6 -0
- package/dist/lib/constants/enums.d.ts +6 -0
- package/dist/lib/constants/enums.js +8 -2
- package/dist/lib/context/budgetChecker.js +75 -48
- package/dist/lib/context/contextCompactor.js +135 -127
- package/dist/lib/core/baseProvider.d.ts +5 -0
- package/dist/lib/core/baseProvider.js +117 -110
- package/dist/lib/core/conversationMemoryInitializer.js +7 -4
- package/dist/lib/core/conversationMemoryManager.d.ts +2 -0
- package/dist/lib/core/conversationMemoryManager.js +6 -2
- package/dist/lib/core/modules/GenerationHandler.d.ts +2 -2
- package/dist/lib/core/modules/GenerationHandler.js +12 -12
- package/dist/lib/evaluation/ragasEvaluator.js +39 -19
- package/dist/lib/evaluation/scoring.js +46 -20
- package/dist/lib/features/ppt/presentationOrchestrator.js +23 -0
- package/dist/lib/features/ppt/slideGenerator.js +13 -0
- package/dist/lib/features/ppt/slideRenderers.d.ts +1 -1
- package/dist/lib/features/ppt/slideRenderers.js +6 -4
- package/dist/lib/features/ppt/slideTypeInference.d.ts +1 -1
- package/dist/lib/features/ppt/slideTypeInference.js +75 -73
- package/dist/lib/files/fileTools.d.ts +6 -6
- package/dist/lib/index.d.ts +46 -12
- package/dist/lib/index.js +79 -17
- package/dist/lib/mcp/httpRateLimiter.js +39 -12
- package/dist/lib/mcp/httpRetryHandler.js +22 -1
- package/dist/lib/mcp/mcpClientFactory.js +13 -15
- package/dist/lib/memory/memoryRetrievalTools.js +22 -0
- package/dist/lib/neurolink.d.ts +64 -72
- package/dist/lib/neurolink.js +1007 -564
- package/dist/lib/observability/exporterRegistry.d.ts +152 -0
- package/dist/lib/observability/exporterRegistry.js +414 -0
- package/dist/lib/observability/exporters/arizeExporter.d.ts +32 -0
- package/dist/lib/observability/exporters/arizeExporter.js +139 -0
- package/dist/lib/observability/exporters/baseExporter.d.ts +117 -0
- package/dist/lib/observability/exporters/baseExporter.js +191 -0
- package/dist/lib/observability/exporters/braintrustExporter.d.ts +30 -0
- package/dist/lib/observability/exporters/braintrustExporter.js +155 -0
- package/dist/lib/observability/exporters/datadogExporter.d.ts +37 -0
- package/dist/lib/observability/exporters/datadogExporter.js +197 -0
- package/dist/lib/observability/exporters/index.d.ts +13 -0
- package/dist/lib/observability/exporters/index.js +14 -0
- package/dist/lib/observability/exporters/laminarExporter.d.ts +48 -0
- package/dist/lib/observability/exporters/laminarExporter.js +303 -0
- package/dist/lib/observability/exporters/langfuseExporter.d.ts +47 -0
- package/dist/lib/observability/exporters/langfuseExporter.js +204 -0
- package/dist/lib/observability/exporters/langsmithExporter.d.ts +26 -0
- package/dist/lib/observability/exporters/langsmithExporter.js +124 -0
- package/dist/lib/observability/exporters/otelExporter.d.ts +39 -0
- package/dist/lib/observability/exporters/otelExporter.js +165 -0
- package/dist/lib/observability/exporters/posthogExporter.d.ts +48 -0
- package/dist/lib/observability/exporters/posthogExporter.js +288 -0
- package/dist/lib/observability/exporters/sentryExporter.d.ts +32 -0
- package/dist/lib/observability/exporters/sentryExporter.js +166 -0
- package/dist/lib/observability/index.d.ts +25 -0
- package/dist/lib/observability/index.js +32 -0
- package/dist/lib/observability/metricsAggregator.d.ts +260 -0
- package/dist/lib/observability/metricsAggregator.js +557 -0
- package/dist/lib/observability/otelBridge.d.ts +49 -0
- package/dist/lib/observability/otelBridge.js +132 -0
- package/dist/lib/observability/retryPolicy.d.ts +192 -0
- package/dist/lib/observability/retryPolicy.js +384 -0
- package/dist/lib/observability/sampling/index.d.ts +4 -0
- package/dist/lib/observability/sampling/index.js +5 -0
- package/dist/lib/observability/sampling/samplers.d.ts +116 -0
- package/dist/lib/observability/sampling/samplers.js +217 -0
- package/dist/lib/observability/spanProcessor.d.ts +129 -0
- package/dist/lib/observability/spanProcessor.js +304 -0
- package/dist/lib/observability/tokenTracker.d.ts +156 -0
- package/dist/lib/observability/tokenTracker.js +414 -0
- package/dist/lib/observability/types/exporterTypes.d.ts +250 -0
- package/dist/lib/observability/types/exporterTypes.js +6 -0
- package/dist/lib/observability/types/index.d.ts +6 -0
- package/dist/lib/observability/types/index.js +5 -0
- package/dist/lib/observability/types/spanTypes.d.ts +244 -0
- package/dist/lib/observability/types/spanTypes.js +93 -0
- package/dist/lib/observability/utils/index.d.ts +4 -0
- package/dist/lib/observability/utils/index.js +5 -0
- package/dist/lib/observability/utils/safeMetadata.d.ts +10 -0
- package/dist/lib/observability/utils/safeMetadata.js +26 -0
- package/dist/lib/observability/utils/spanSerializer.d.ts +115 -0
- package/dist/lib/observability/utils/spanSerializer.js +291 -0
- package/dist/lib/providers/amazonSagemaker.d.ts +5 -4
- package/dist/lib/providers/amazonSagemaker.js +3 -4
- package/dist/lib/providers/googleVertex.d.ts +7 -0
- package/dist/lib/providers/googleVertex.js +76 -2
- package/dist/lib/rag/pipeline/RAGPipeline.d.ts +0 -5
- package/dist/lib/rag/pipeline/RAGPipeline.js +122 -87
- package/dist/lib/rag/ragIntegration.js +30 -0
- package/dist/lib/rag/retrieval/hybridSearch.js +22 -0
- package/dist/lib/server/abstract/baseServerAdapter.js +51 -19
- package/dist/lib/server/middleware/common.js +44 -12
- package/dist/lib/services/server/ai/observability/instrumentation.d.ts +2 -2
- package/dist/lib/services/server/ai/observability/instrumentation.js +10 -5
- package/dist/lib/types/conversationMemoryInterface.d.ts +2 -0
- package/dist/lib/types/modelTypes.d.ts +18 -18
- package/dist/lib/types/providers.d.ts +5 -0
- package/dist/lib/utils/pricing.js +25 -1
- package/dist/lib/utils/ttsProcessor.js +74 -59
- package/dist/lib/workflow/config.d.ts +36 -36
- package/dist/lib/workflow/core/ensembleExecutor.js +10 -0
- package/dist/lib/workflow/core/judgeScorer.js +20 -2
- package/dist/lib/workflow/core/workflowRunner.js +34 -1
- package/dist/mcp/httpRateLimiter.js +39 -12
- package/dist/mcp/httpRetryHandler.js +22 -1
- package/dist/mcp/mcpClientFactory.js +13 -15
- package/dist/memory/memoryRetrievalTools.js +22 -0
- package/dist/neurolink.d.ts +64 -72
- package/dist/neurolink.js +1007 -564
- package/dist/observability/FEATURE-STATUS.md +269 -0
- package/dist/observability/exporterRegistry.d.ts +152 -0
- package/dist/observability/exporterRegistry.js +413 -0
- package/dist/observability/exporters/arizeExporter.d.ts +32 -0
- package/dist/observability/exporters/arizeExporter.js +138 -0
- package/dist/observability/exporters/baseExporter.d.ts +117 -0
- package/dist/observability/exporters/baseExporter.js +190 -0
- package/dist/observability/exporters/braintrustExporter.d.ts +30 -0
- package/dist/observability/exporters/braintrustExporter.js +154 -0
- package/dist/observability/exporters/datadogExporter.d.ts +37 -0
- package/dist/observability/exporters/datadogExporter.js +196 -0
- package/dist/observability/exporters/index.d.ts +13 -0
- package/dist/observability/exporters/index.js +13 -0
- package/dist/observability/exporters/laminarExporter.d.ts +48 -0
- package/dist/observability/exporters/laminarExporter.js +302 -0
- package/dist/observability/exporters/langfuseExporter.d.ts +47 -0
- package/dist/observability/exporters/langfuseExporter.js +203 -0
- package/dist/observability/exporters/langsmithExporter.d.ts +26 -0
- package/dist/observability/exporters/langsmithExporter.js +123 -0
- package/dist/observability/exporters/otelExporter.d.ts +39 -0
- package/dist/observability/exporters/otelExporter.js +164 -0
- package/dist/observability/exporters/posthogExporter.d.ts +48 -0
- package/dist/observability/exporters/posthogExporter.js +287 -0
- package/dist/observability/exporters/sentryExporter.d.ts +32 -0
- package/dist/observability/exporters/sentryExporter.js +165 -0
- package/dist/observability/index.d.ts +25 -0
- package/dist/observability/index.js +31 -0
- package/dist/observability/metricsAggregator.d.ts +260 -0
- package/dist/observability/metricsAggregator.js +556 -0
- package/dist/observability/otelBridge.d.ts +49 -0
- package/dist/observability/otelBridge.js +131 -0
- package/dist/observability/retryPolicy.d.ts +192 -0
- package/dist/observability/retryPolicy.js +383 -0
- package/dist/observability/sampling/index.d.ts +4 -0
- package/dist/observability/sampling/index.js +4 -0
- package/dist/observability/sampling/samplers.d.ts +116 -0
- package/dist/observability/sampling/samplers.js +216 -0
- package/dist/observability/spanProcessor.d.ts +129 -0
- package/dist/observability/spanProcessor.js +303 -0
- package/dist/observability/tokenTracker.d.ts +156 -0
- package/dist/observability/tokenTracker.js +413 -0
- package/dist/observability/types/exporterTypes.d.ts +250 -0
- package/dist/observability/types/exporterTypes.js +5 -0
- package/dist/observability/types/index.d.ts +6 -0
- package/dist/observability/types/index.js +4 -0
- package/dist/observability/types/spanTypes.d.ts +244 -0
- package/dist/observability/types/spanTypes.js +92 -0
- package/dist/observability/utils/index.d.ts +4 -0
- package/dist/observability/utils/index.js +4 -0
- package/dist/observability/utils/safeMetadata.d.ts +10 -0
- package/dist/observability/utils/safeMetadata.js +25 -0
- package/dist/observability/utils/spanSerializer.d.ts +115 -0
- package/dist/observability/utils/spanSerializer.js +290 -0
- package/dist/providers/amazonSagemaker.d.ts +5 -4
- package/dist/providers/amazonSagemaker.js +3 -4
- package/dist/providers/googleVertex.d.ts +7 -0
- package/dist/providers/googleVertex.js +76 -2
- package/dist/rag/pipeline/RAGPipeline.d.ts +0 -5
- package/dist/rag/pipeline/RAGPipeline.js +122 -87
- package/dist/rag/ragIntegration.js +30 -0
- package/dist/rag/retrieval/hybridSearch.js +22 -0
- package/dist/server/abstract/baseServerAdapter.js +51 -19
- package/dist/server/middleware/common.js +44 -12
- package/dist/services/server/ai/observability/instrumentation.d.ts +2 -2
- package/dist/services/server/ai/observability/instrumentation.js +10 -5
- package/dist/types/conversationMemoryInterface.d.ts +2 -0
- package/dist/types/providers.d.ts +5 -0
- package/dist/utils/pricing.js +25 -1
- package/dist/utils/ttsProcessor.js +74 -59
- package/dist/workflow/config.d.ts +52 -52
- package/dist/workflow/core/ensembleExecutor.js +10 -0
- package/dist/workflow/core/judgeScorer.js +20 -2
- package/dist/workflow/core/workflowRunner.js +34 -1
- package/package.json +1 -1
package/dist/utils/pricing.js
CHANGED
|
@@ -61,6 +61,12 @@ const PRICING = {
|
|
|
61
61
|
},
|
|
62
62
|
// Google (Gemini)
|
|
63
63
|
google: {
|
|
64
|
+
"gemini-2.5-flash": { input: 0.15 / 1_000_000, output: 0.6 / 1_000_000 },
|
|
65
|
+
"gemini-2.5-pro": { input: 1.25 / 1_000_000, output: 10.0 / 1_000_000 },
|
|
66
|
+
"gemini-2.5-flash-lite": {
|
|
67
|
+
input: 0.075 / 1_000_000,
|
|
68
|
+
output: 0.3 / 1_000_000,
|
|
69
|
+
},
|
|
64
70
|
"gemini-2.0-flash": { input: 0.1 / 1_000_000, output: 0.4 / 1_000_000 },
|
|
65
71
|
"gemini-2.0-pro": { input: 1.25 / 1_000_000, output: 10.0 / 1_000_000 },
|
|
66
72
|
"gemini-1.5-pro": { input: 1.25 / 1_000_000, output: 5.0 / 1_000_000 },
|
|
@@ -101,7 +107,25 @@ function findRates(provider, model) {
|
|
|
101
107
|
// Longest-prefix match
|
|
102
108
|
const sortedKeys = Object.keys(providerPricing).sort((a, b) => b.length - a.length);
|
|
103
109
|
const key = sortedKeys.find((k) => model.startsWith(k));
|
|
104
|
-
|
|
110
|
+
if (key) {
|
|
111
|
+
return providerPricing[key];
|
|
112
|
+
}
|
|
113
|
+
// Fallback: Vertex hosts both Claude and Gemini models.
|
|
114
|
+
// If no match found under "vertex", try "google" pricing for Gemini models.
|
|
115
|
+
if (normalizedProvider === "vertex" && model.startsWith("gemini")) {
|
|
116
|
+
const googlePricing = PRICING["google"];
|
|
117
|
+
if (googlePricing) {
|
|
118
|
+
if (googlePricing[model]) {
|
|
119
|
+
return googlePricing[model];
|
|
120
|
+
}
|
|
121
|
+
const googleKeys = Object.keys(googlePricing).sort((a, b) => b.length - a.length);
|
|
122
|
+
const googleKey = googleKeys.find((k) => model.startsWith(k));
|
|
123
|
+
if (googleKey) {
|
|
124
|
+
return googlePricing[googleKey];
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return undefined;
|
|
105
129
|
}
|
|
106
130
|
/**
|
|
107
131
|
* Calculate the dollar cost of a generate/stream call based on token usage.
|
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
import { logger } from "./logger.js";
|
|
10
10
|
import { ErrorCategory, ErrorSeverity } from "../constants/enums.js";
|
|
11
11
|
import { NeuroLinkError } from "./errorHandling.js";
|
|
12
|
+
import { SpanSerializer, SpanType, SpanStatus, } from "../observability/index.js";
|
|
13
|
+
import { getMetricsAggregator } from "../observability/index.js";
|
|
12
14
|
/**
|
|
13
15
|
* TTS-specific error codes
|
|
14
16
|
*/
|
|
@@ -175,63 +177,70 @@ export class TTSProcessor {
|
|
|
175
177
|
* ```
|
|
176
178
|
*/
|
|
177
179
|
static async synthesize(text, provider, options) {
|
|
178
|
-
//
|
|
179
|
-
const
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
message: "Text is required for TTS synthesis",
|
|
186
|
-
severity: ErrorSeverity.LOW,
|
|
187
|
-
retriable: false,
|
|
188
|
-
context: { provider },
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
// 2. Handler lookup and error if provider not supported
|
|
192
|
-
const handler = this.getHandler(provider);
|
|
193
|
-
if (!handler) {
|
|
194
|
-
logger.error(`[TTSProcessor] Provider "${provider}" is not registered`);
|
|
195
|
-
throw new TTSError({
|
|
196
|
-
code: TTS_ERROR_CODES.PROVIDER_NOT_SUPPORTED,
|
|
197
|
-
message: `TTS provider "${provider}" is not supported. Use TTSProcessor.registerHandler() to register it.`,
|
|
198
|
-
severity: ErrorSeverity.HIGH,
|
|
199
|
-
retriable: false,
|
|
200
|
-
context: {
|
|
201
|
-
provider,
|
|
202
|
-
availableProviders: Array.from(this.handlers.keys()),
|
|
203
|
-
},
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
// 3. Text validation: reject text exceeding provider-specific max length
|
|
207
|
-
const maxTextLength = handler.maxTextLength ?? this.DEFAULT_MAX_TEXT_LENGTH;
|
|
208
|
-
if (trimmedText.length > maxTextLength) {
|
|
209
|
-
logger.error(`[TTSProcessor] Text exceeds maximum length of ${maxTextLength} characters for provider "${provider}"`);
|
|
210
|
-
throw new TTSError({
|
|
211
|
-
code: TTS_ERROR_CODES.TEXT_TOO_LONG,
|
|
212
|
-
message: `Text length (${trimmedText.length}) exceeds maximum allowed length (${maxTextLength} characters) for provider "${provider}"`,
|
|
213
|
-
severity: ErrorSeverity.MEDIUM,
|
|
214
|
-
retriable: false,
|
|
215
|
-
context: {
|
|
216
|
-
provider,
|
|
217
|
-
textLength: trimmedText.length,
|
|
218
|
-
maxLength: maxTextLength,
|
|
219
|
-
},
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
// 4. Configuration check
|
|
223
|
-
if (!handler.isConfigured()) {
|
|
224
|
-
logger.warn(`[TTSProcessor] Provider "${provider}" is not properly configured`);
|
|
225
|
-
throw new TTSError({
|
|
226
|
-
code: TTS_ERROR_CODES.PROVIDER_NOT_CONFIGURED,
|
|
227
|
-
message: `TTS provider "${provider}" is not configured. Please set the required API keys.`,
|
|
228
|
-
category: ErrorCategory.CONFIGURATION,
|
|
229
|
-
severity: ErrorSeverity.HIGH,
|
|
230
|
-
retriable: false,
|
|
231
|
-
context: { provider },
|
|
232
|
-
});
|
|
233
|
-
}
|
|
180
|
+
// Create span early so preflight failures are captured
|
|
181
|
+
const span = SpanSerializer.createSpan(SpanType.TTS, "tts.synthesize", {
|
|
182
|
+
"tts.operation": "synthesize",
|
|
183
|
+
"tts.provider": provider,
|
|
184
|
+
"tts.voice": options.voice,
|
|
185
|
+
"tts.format": options.format,
|
|
186
|
+
});
|
|
234
187
|
try {
|
|
188
|
+
// Trim the text once at the start
|
|
189
|
+
const trimmedText = text.trim();
|
|
190
|
+
// 1. Text validation: reject empty text
|
|
191
|
+
if (!trimmedText) {
|
|
192
|
+
logger.error("[TTSProcessor] Text is required for synthesis");
|
|
193
|
+
throw new TTSError({
|
|
194
|
+
code: TTS_ERROR_CODES.EMPTY_TEXT,
|
|
195
|
+
message: "Text is required for TTS synthesis",
|
|
196
|
+
severity: ErrorSeverity.LOW,
|
|
197
|
+
retriable: false,
|
|
198
|
+
context: { provider },
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
// 2. Handler lookup and error if provider not supported
|
|
202
|
+
const handler = this.getHandler(provider);
|
|
203
|
+
if (!handler) {
|
|
204
|
+
logger.error(`[TTSProcessor] Provider "${provider}" is not registered`);
|
|
205
|
+
throw new TTSError({
|
|
206
|
+
code: TTS_ERROR_CODES.PROVIDER_NOT_SUPPORTED,
|
|
207
|
+
message: `TTS provider "${provider}" is not supported. Use TTSProcessor.registerHandler() to register it.`,
|
|
208
|
+
severity: ErrorSeverity.HIGH,
|
|
209
|
+
retriable: false,
|
|
210
|
+
context: {
|
|
211
|
+
provider,
|
|
212
|
+
availableProviders: Array.from(this.handlers.keys()),
|
|
213
|
+
},
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
// 3. Text validation: reject text exceeding provider-specific max length
|
|
217
|
+
const maxTextLength = handler.maxTextLength ?? this.DEFAULT_MAX_TEXT_LENGTH;
|
|
218
|
+
if (trimmedText.length > maxTextLength) {
|
|
219
|
+
logger.error(`[TTSProcessor] Text exceeds maximum length of ${maxTextLength} characters for provider "${provider}"`);
|
|
220
|
+
throw new TTSError({
|
|
221
|
+
code: TTS_ERROR_CODES.TEXT_TOO_LONG,
|
|
222
|
+
message: `Text length (${trimmedText.length}) exceeds maximum allowed length (${maxTextLength} characters) for provider "${provider}"`,
|
|
223
|
+
severity: ErrorSeverity.MEDIUM,
|
|
224
|
+
retriable: false,
|
|
225
|
+
context: {
|
|
226
|
+
provider,
|
|
227
|
+
textLength: trimmedText.length,
|
|
228
|
+
maxLength: maxTextLength,
|
|
229
|
+
},
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
// 4. Configuration check
|
|
233
|
+
if (!handler.isConfigured()) {
|
|
234
|
+
logger.warn(`[TTSProcessor] Provider "${provider}" is not properly configured`);
|
|
235
|
+
throw new TTSError({
|
|
236
|
+
code: TTS_ERROR_CODES.PROVIDER_NOT_CONFIGURED,
|
|
237
|
+
message: `TTS provider "${provider}" is not configured. Please set the required API keys.`,
|
|
238
|
+
category: ErrorCategory.CONFIGURATION,
|
|
239
|
+
severity: ErrorSeverity.HIGH,
|
|
240
|
+
retriable: false,
|
|
241
|
+
context: { provider },
|
|
242
|
+
});
|
|
243
|
+
}
|
|
235
244
|
logger.debug(`[TTSProcessor] Starting synthesis with provider: ${provider}`);
|
|
236
245
|
// 5. Call handler.synthesize() - providers handle their own timeouts
|
|
237
246
|
const result = await handler.synthesize(trimmedText, options);
|
|
@@ -241,11 +250,17 @@ export class TTSProcessor {
|
|
|
241
250
|
voice: result.voice ?? options.voice,
|
|
242
251
|
};
|
|
243
252
|
logger.info(`[TTSProcessor] Successfully synthesized ${result.size} bytes of audio`);
|
|
244
|
-
// 7.
|
|
253
|
+
// 7. Record successful span
|
|
254
|
+
const endedSpan = SpanSerializer.endSpan(span, SpanStatus.OK);
|
|
255
|
+
getMetricsAggregator().recordSpan(endedSpan);
|
|
256
|
+
// 8. Returns TTSResult with buffer, format, metadata
|
|
245
257
|
return enrichedResult;
|
|
246
258
|
}
|
|
247
259
|
catch (err) {
|
|
248
|
-
//
|
|
260
|
+
// Record error span
|
|
261
|
+
const endedSpan = SpanSerializer.endSpan(span, SpanStatus.ERROR, err instanceof Error ? err.message : String(err));
|
|
262
|
+
getMetricsAggregator().recordSpan(endedSpan);
|
|
263
|
+
// 9. Comprehensive error handling
|
|
249
264
|
// Re-throw TTSError as-is
|
|
250
265
|
if (err instanceof TTSError) {
|
|
251
266
|
throw err;
|
|
@@ -261,7 +276,7 @@ export class TTSProcessor {
|
|
|
261
276
|
retriable: true,
|
|
262
277
|
context: {
|
|
263
278
|
provider,
|
|
264
|
-
textLength:
|
|
279
|
+
textLength: text.trim().length,
|
|
265
280
|
options,
|
|
266
281
|
},
|
|
267
282
|
originalError: err instanceof Error ? err : undefined,
|