@juspay/neurolink 9.24.0 → 9.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/adapters/tts/googleTTSHandler.js +26 -1
  3. package/dist/adapters/video/vertexVideoHandler.js +23 -17
  4. package/dist/cli/commands/config.d.ts +3 -3
  5. package/dist/cli/commands/observability.d.ts +53 -0
  6. package/dist/cli/commands/observability.js +453 -0
  7. package/dist/cli/commands/telemetry.d.ts +63 -0
  8. package/dist/cli/commands/telemetry.js +689 -0
  9. package/dist/cli/factories/commandFactory.js +29 -15
  10. package/dist/cli/parser.js +6 -9
  11. package/dist/cli/utils/formatters.d.ts +13 -0
  12. package/dist/cli/utils/formatters.js +23 -0
  13. package/dist/constants/contextWindows.js +6 -0
  14. package/dist/constants/enums.d.ts +6 -0
  15. package/dist/constants/enums.js +8 -2
  16. package/dist/context/budgetChecker.js +75 -48
  17. package/dist/context/contextCompactor.js +135 -127
  18. package/dist/core/baseProvider.d.ts +5 -0
  19. package/dist/core/baseProvider.js +158 -102
  20. package/dist/core/conversationMemoryInitializer.js +7 -4
  21. package/dist/core/conversationMemoryManager.d.ts +2 -0
  22. package/dist/core/conversationMemoryManager.js +6 -2
  23. package/dist/core/modules/GenerationHandler.d.ts +2 -2
  24. package/dist/core/modules/GenerationHandler.js +12 -12
  25. package/dist/evaluation/ragasEvaluator.js +39 -19
  26. package/dist/evaluation/scoring.js +46 -20
  27. package/dist/features/ppt/presentationOrchestrator.js +23 -0
  28. package/dist/features/ppt/slideGenerator.js +13 -0
  29. package/dist/features/ppt/slideRenderers.d.ts +1 -1
  30. package/dist/features/ppt/slideRenderers.js +6 -4
  31. package/dist/features/ppt/slideTypeInference.d.ts +1 -1
  32. package/dist/features/ppt/slideTypeInference.js +75 -73
  33. package/dist/files/fileTools.d.ts +6 -6
  34. package/dist/index.d.ts +46 -12
  35. package/dist/index.js +79 -17
  36. package/dist/lib/adapters/tts/googleTTSHandler.js +26 -1
  37. package/dist/lib/adapters/video/vertexVideoHandler.js +23 -17
  38. package/dist/lib/constants/contextWindows.js +6 -0
  39. package/dist/lib/constants/enums.d.ts +6 -0
  40. package/dist/lib/constants/enums.js +8 -2
  41. package/dist/lib/context/budgetChecker.js +75 -48
  42. package/dist/lib/context/contextCompactor.js +135 -127
  43. package/dist/lib/core/baseProvider.d.ts +5 -0
  44. package/dist/lib/core/baseProvider.js +158 -102
  45. package/dist/lib/core/conversationMemoryInitializer.js +7 -4
  46. package/dist/lib/core/conversationMemoryManager.d.ts +2 -0
  47. package/dist/lib/core/conversationMemoryManager.js +6 -2
  48. package/dist/lib/core/modules/GenerationHandler.d.ts +2 -2
  49. package/dist/lib/core/modules/GenerationHandler.js +12 -12
  50. package/dist/lib/evaluation/ragasEvaluator.js +39 -19
  51. package/dist/lib/evaluation/scoring.js +46 -20
  52. package/dist/lib/features/ppt/presentationOrchestrator.js +23 -0
  53. package/dist/lib/features/ppt/slideGenerator.js +13 -0
  54. package/dist/lib/features/ppt/slideRenderers.d.ts +1 -1
  55. package/dist/lib/features/ppt/slideRenderers.js +6 -4
  56. package/dist/lib/features/ppt/slideTypeInference.d.ts +1 -1
  57. package/dist/lib/features/ppt/slideTypeInference.js +75 -73
  58. package/dist/lib/files/fileTools.d.ts +6 -6
  59. package/dist/lib/index.d.ts +46 -12
  60. package/dist/lib/index.js +79 -17
  61. package/dist/lib/mcp/httpRateLimiter.js +39 -12
  62. package/dist/lib/mcp/httpRetryHandler.js +22 -1
  63. package/dist/lib/mcp/mcpClientFactory.js +13 -15
  64. package/dist/lib/memory/memoryRetrievalTools.js +22 -0
  65. package/dist/lib/neurolink.d.ts +64 -72
  66. package/dist/lib/neurolink.js +984 -566
  67. package/dist/lib/observability/exporterRegistry.d.ts +152 -0
  68. package/dist/lib/observability/exporterRegistry.js +414 -0
  69. package/dist/lib/observability/exporters/arizeExporter.d.ts +32 -0
  70. package/dist/lib/observability/exporters/arizeExporter.js +139 -0
  71. package/dist/lib/observability/exporters/baseExporter.d.ts +117 -0
  72. package/dist/lib/observability/exporters/baseExporter.js +191 -0
  73. package/dist/lib/observability/exporters/braintrustExporter.d.ts +30 -0
  74. package/dist/lib/observability/exporters/braintrustExporter.js +155 -0
  75. package/dist/lib/observability/exporters/datadogExporter.d.ts +37 -0
  76. package/dist/lib/observability/exporters/datadogExporter.js +197 -0
  77. package/dist/lib/observability/exporters/index.d.ts +13 -0
  78. package/dist/lib/observability/exporters/index.js +14 -0
  79. package/dist/lib/observability/exporters/laminarExporter.d.ts +48 -0
  80. package/dist/lib/observability/exporters/laminarExporter.js +303 -0
  81. package/dist/lib/observability/exporters/langfuseExporter.d.ts +47 -0
  82. package/dist/lib/observability/exporters/langfuseExporter.js +200 -0
  83. package/dist/lib/observability/exporters/langsmithExporter.d.ts +26 -0
  84. package/dist/lib/observability/exporters/langsmithExporter.js +124 -0
  85. package/dist/lib/observability/exporters/otelExporter.d.ts +39 -0
  86. package/dist/lib/observability/exporters/otelExporter.js +165 -0
  87. package/dist/lib/observability/exporters/posthogExporter.d.ts +48 -0
  88. package/dist/lib/observability/exporters/posthogExporter.js +288 -0
  89. package/dist/lib/observability/exporters/sentryExporter.d.ts +32 -0
  90. package/dist/lib/observability/exporters/sentryExporter.js +166 -0
  91. package/dist/lib/observability/index.d.ts +25 -0
  92. package/dist/lib/observability/index.js +32 -0
  93. package/dist/lib/observability/metricsAggregator.d.ts +260 -0
  94. package/dist/lib/observability/metricsAggregator.js +553 -0
  95. package/dist/lib/observability/otelBridge.d.ts +49 -0
  96. package/dist/lib/observability/otelBridge.js +132 -0
  97. package/dist/lib/observability/retryPolicy.d.ts +192 -0
  98. package/dist/lib/observability/retryPolicy.js +384 -0
  99. package/dist/lib/observability/sampling/index.d.ts +4 -0
  100. package/dist/lib/observability/sampling/index.js +5 -0
  101. package/dist/lib/observability/sampling/samplers.d.ts +116 -0
  102. package/dist/lib/observability/sampling/samplers.js +217 -0
  103. package/dist/lib/observability/spanProcessor.d.ts +129 -0
  104. package/dist/lib/observability/spanProcessor.js +288 -0
  105. package/dist/lib/observability/tokenTracker.d.ts +156 -0
  106. package/dist/lib/observability/tokenTracker.js +414 -0
  107. package/dist/lib/observability/types/exporterTypes.d.ts +250 -0
  108. package/dist/lib/observability/types/exporterTypes.js +6 -0
  109. package/dist/lib/observability/types/index.d.ts +6 -0
  110. package/dist/lib/observability/types/index.js +5 -0
  111. package/dist/lib/observability/types/spanTypes.d.ts +244 -0
  112. package/dist/lib/observability/types/spanTypes.js +93 -0
  113. package/dist/lib/observability/utils/index.d.ts +4 -0
  114. package/dist/lib/observability/utils/index.js +5 -0
  115. package/dist/lib/observability/utils/spanSerializer.d.ts +115 -0
  116. package/dist/lib/observability/utils/spanSerializer.js +287 -0
  117. package/dist/lib/providers/amazonSagemaker.d.ts +5 -4
  118. package/dist/lib/providers/amazonSagemaker.js +3 -4
  119. package/dist/lib/providers/googleVertex.d.ts +7 -0
  120. package/dist/lib/providers/googleVertex.js +80 -2
  121. package/dist/lib/rag/pipeline/RAGPipeline.d.ts +0 -5
  122. package/dist/lib/rag/pipeline/RAGPipeline.js +122 -87
  123. package/dist/lib/rag/ragIntegration.js +30 -0
  124. package/dist/lib/rag/retrieval/hybridSearch.js +22 -0
  125. package/dist/lib/server/abstract/baseServerAdapter.js +51 -19
  126. package/dist/lib/server/middleware/common.js +44 -12
  127. package/dist/lib/services/server/ai/observability/instrumentation.d.ts +2 -2
  128. package/dist/lib/services/server/ai/observability/instrumentation.js +10 -5
  129. package/dist/lib/types/conversationMemoryInterface.d.ts +2 -0
  130. package/dist/lib/types/modelTypes.d.ts +18 -18
  131. package/dist/lib/types/providers.d.ts +5 -0
  132. package/dist/lib/utils/pricing.js +25 -1
  133. package/dist/lib/utils/ttsProcessor.js +74 -59
  134. package/dist/lib/workflow/config.d.ts +36 -36
  135. package/dist/lib/workflow/core/ensembleExecutor.js +10 -0
  136. package/dist/lib/workflow/core/judgeScorer.js +20 -2
  137. package/dist/lib/workflow/core/workflowRunner.js +34 -1
  138. package/dist/mcp/httpRateLimiter.js +39 -12
  139. package/dist/mcp/httpRetryHandler.js +22 -1
  140. package/dist/mcp/mcpClientFactory.js +13 -15
  141. package/dist/memory/memoryRetrievalTools.js +22 -0
  142. package/dist/neurolink.d.ts +64 -72
  143. package/dist/neurolink.js +984 -566
  144. package/dist/observability/FEATURE-STATUS.md +269 -0
  145. package/dist/observability/exporterRegistry.d.ts +152 -0
  146. package/dist/observability/exporterRegistry.js +413 -0
  147. package/dist/observability/exporters/arizeExporter.d.ts +32 -0
  148. package/dist/observability/exporters/arizeExporter.js +138 -0
  149. package/dist/observability/exporters/baseExporter.d.ts +117 -0
  150. package/dist/observability/exporters/baseExporter.js +190 -0
  151. package/dist/observability/exporters/braintrustExporter.d.ts +30 -0
  152. package/dist/observability/exporters/braintrustExporter.js +154 -0
  153. package/dist/observability/exporters/datadogExporter.d.ts +37 -0
  154. package/dist/observability/exporters/datadogExporter.js +196 -0
  155. package/dist/observability/exporters/index.d.ts +13 -0
  156. package/dist/observability/exporters/index.js +13 -0
  157. package/dist/observability/exporters/laminarExporter.d.ts +48 -0
  158. package/dist/observability/exporters/laminarExporter.js +302 -0
  159. package/dist/observability/exporters/langfuseExporter.d.ts +47 -0
  160. package/dist/observability/exporters/langfuseExporter.js +199 -0
  161. package/dist/observability/exporters/langsmithExporter.d.ts +26 -0
  162. package/dist/observability/exporters/langsmithExporter.js +123 -0
  163. package/dist/observability/exporters/otelExporter.d.ts +39 -0
  164. package/dist/observability/exporters/otelExporter.js +164 -0
  165. package/dist/observability/exporters/posthogExporter.d.ts +48 -0
  166. package/dist/observability/exporters/posthogExporter.js +287 -0
  167. package/dist/observability/exporters/sentryExporter.d.ts +32 -0
  168. package/dist/observability/exporters/sentryExporter.js +165 -0
  169. package/dist/observability/index.d.ts +25 -0
  170. package/dist/observability/index.js +31 -0
  171. package/dist/observability/metricsAggregator.d.ts +260 -0
  172. package/dist/observability/metricsAggregator.js +552 -0
  173. package/dist/observability/otelBridge.d.ts +49 -0
  174. package/dist/observability/otelBridge.js +131 -0
  175. package/dist/observability/retryPolicy.d.ts +192 -0
  176. package/dist/observability/retryPolicy.js +383 -0
  177. package/dist/observability/sampling/index.d.ts +4 -0
  178. package/dist/observability/sampling/index.js +4 -0
  179. package/dist/observability/sampling/samplers.d.ts +116 -0
  180. package/dist/observability/sampling/samplers.js +216 -0
  181. package/dist/observability/spanProcessor.d.ts +129 -0
  182. package/dist/observability/spanProcessor.js +287 -0
  183. package/dist/observability/tokenTracker.d.ts +156 -0
  184. package/dist/observability/tokenTracker.js +413 -0
  185. package/dist/observability/types/exporterTypes.d.ts +250 -0
  186. package/dist/observability/types/exporterTypes.js +5 -0
  187. package/dist/observability/types/index.d.ts +6 -0
  188. package/dist/observability/types/index.js +4 -0
  189. package/dist/observability/types/spanTypes.d.ts +244 -0
  190. package/dist/observability/types/spanTypes.js +92 -0
  191. package/dist/observability/utils/index.d.ts +4 -0
  192. package/dist/observability/utils/index.js +4 -0
  193. package/dist/observability/utils/spanSerializer.d.ts +115 -0
  194. package/dist/observability/utils/spanSerializer.js +286 -0
  195. package/dist/providers/amazonSagemaker.d.ts +5 -4
  196. package/dist/providers/amazonSagemaker.js +3 -4
  197. package/dist/providers/googleVertex.d.ts +7 -0
  198. package/dist/providers/googleVertex.js +80 -2
  199. package/dist/rag/pipeline/RAGPipeline.d.ts +0 -5
  200. package/dist/rag/pipeline/RAGPipeline.js +122 -87
  201. package/dist/rag/ragIntegration.js +30 -0
  202. package/dist/rag/retrieval/hybridSearch.js +22 -0
  203. package/dist/server/abstract/baseServerAdapter.js +51 -19
  204. package/dist/server/middleware/common.js +44 -12
  205. package/dist/services/server/ai/observability/instrumentation.d.ts +2 -2
  206. package/dist/services/server/ai/observability/instrumentation.js +10 -5
  207. package/dist/types/conversationMemoryInterface.d.ts +2 -0
  208. package/dist/types/providers.d.ts +5 -0
  209. package/dist/utils/pricing.js +25 -1
  210. package/dist/utils/ttsProcessor.js +74 -59
  211. package/dist/workflow/config.d.ts +52 -52
  212. package/dist/workflow/core/ensembleExecutor.js +10 -0
  213. package/dist/workflow/core/judgeScorer.js +20 -2
  214. package/dist/workflow/core/workflowRunner.js +34 -1
  215. package/package.json +1 -1
@@ -21,6 +21,8 @@ import { SlideGenerator } from "./slideGenerator.js";
21
21
  import { PPT_GENERATION_TIMEOUT_MS } from "./constants.js";
22
22
  import { logger } from "../../utils/logger.js";
23
23
  import { withTimeout, ErrorFactory } from "../../utils/errorHandling.js";
24
+ import { SpanSerializer, SpanType, SpanStatus, } from "../../observability/index.js";
25
+ import { getMetricsAggregator } from "../../observability/index.js";
24
26
  import { generateOutputPath, ensureOutputDirectory, normalizeLogoConfig, getLayoutName, getFailureStage, toError, } from "./utils.js";
25
27
  // ============================================================================
26
28
  // MAIN ORCHESTRATION FUNCTION
@@ -48,6 +50,13 @@ import { generateOutputPath, ensureOutputDirectory, normalizeLogoConfig, getLayo
48
50
  * ```
49
51
  */
50
52
  export async function generatePresentation(options) {
53
+ const span = SpanSerializer.createSpan(SpanType.PPT_GENERATION, "ppt.orchestrate", {
54
+ "ppt.operation": "orchestrate",
55
+ "ppt.slideCount": options.context.pages,
56
+ "ppt.theme": typeof options.context.theme === "string"
57
+ ? options.context.theme
58
+ : "custom",
59
+ });
51
60
  const state = {
52
61
  startTime: Date.now(),
53
62
  contentPlan: null,
@@ -73,6 +82,12 @@ export async function generatePresentation(options) {
73
82
  ErrorFactory.toolTimeout("contentPlanning", PPT_GENERATION_TIMEOUT_MS / 2));
74
83
  // Post-process: ensure title and thank-you slides
75
84
  state.contentPlan = postProcessPlan(planResult);
85
+ // Update span attributes with post-processed plan values (AI may have changed slide count/theme)
86
+ span.attributes["ppt.slideCount"] = state.contentPlan.totalSlides;
87
+ span.attributes["ppt.theme"] =
88
+ typeof state.contentPlan.theme === "string"
89
+ ? state.contentPlan.theme
90
+ : "custom";
76
91
  logger.info("[PresentationOrchestrator] Content plan ready", {
77
92
  title: state.contentPlan.title,
78
93
  totalSlides: state.contentPlan.totalSlides,
@@ -163,6 +178,9 @@ export async function generatePresentation(options) {
163
178
  // =========================================================================
164
179
  // STEP 5: Return Result
165
180
  // =========================================================================
181
+ const endedSpan = SpanSerializer.endSpan(span, SpanStatus.OK);
182
+ getMetricsAggregator().recordSpan(endedSpan);
183
+ neurolink?.recordMetricsSpan(endedSpan);
166
184
  // Use values from content plan (AI may have chosen them if "AI will decide" was passed)
167
185
  const finalTheme = state.contentPlan?.theme || context.theme;
168
186
  const finalAudience = state.contentPlan?.audience || context.audience;
@@ -185,6 +203,11 @@ export async function generatePresentation(options) {
185
203
  };
186
204
  }
187
205
  catch (error) {
206
+ const endedSpan = SpanSerializer.endSpan(span, SpanStatus.ERROR);
207
+ endedSpan.statusMessage =
208
+ error instanceof Error ? error.message : String(error);
209
+ getMetricsAggregator().recordSpan(endedSpan);
210
+ neurolink?.recordMetricsSpan(endedSpan);
188
211
  // Re-throw PPTError as-is
189
212
  if (error instanceof PPTError) {
190
213
  logger.error("[PresentationOrchestrator] Generation failed", {
@@ -19,6 +19,8 @@ import { SLIDE_DIMENSIONS } from "./types.js";
19
19
  import { getTheme, isImageSlideType, enhanceImagePrompt, IMAGE_GENERATION_TIMEOUT_MS, MAX_CONCURRENT_IMAGE_GENERATIONS, } from "./constants.js";
20
20
  import { logger } from "../../utils/logger.js";
21
21
  import { withTimeout, ErrorFactory, NeuroLinkError, } from "../../utils/errorHandling.js";
22
+ import { SpanSerializer, SpanType, SpanStatus, } from "../../observability/index.js";
23
+ import { getMetricsAggregator } from "../../observability/index.js";
22
24
  import { NeuroLink } from "../../neurolink.js";
23
25
  import { LAYOUT_POSITIONS, renderTitleSlide, renderSectionHeaderSlide, renderThankYouSlide, renderContentSlide, renderImageSlide, renderTwoColumnSlide, renderThreeColumnSlide, renderQuoteSlide, renderStatisticsSlide, renderChartSlide, renderTableSlide, renderTimelineSlide, renderProcessFlowSlide, renderComparisonSlide, renderFeaturesSlide, renderTeamSlide, renderConclusionSlide, renderDashboardSlide, renderMixedContentSlide, renderStatsGridSlide, renderIconGridSlide, } from "./slideRenderers.js";
24
26
  // ============================================================================
@@ -86,6 +88,11 @@ export class SlideGenerator {
86
88
  * Generate a single complete slide
87
89
  */
88
90
  async generateSlide(slideSchema) {
91
+ const span = SpanSerializer.createSpan(SpanType.PPT_GENERATION, "ppt.generateSlide", {
92
+ "ppt.operation": "generateSlide",
93
+ "ppt.slideIndex": slideSchema.slideNumber,
94
+ "ppt.theme": this.theme.name,
95
+ });
89
96
  const startTime = Date.now();
90
97
  try {
91
98
  let imageBuffer;
@@ -126,6 +133,8 @@ export class SlideGenerator {
126
133
  hasImage: !!imageBuffer,
127
134
  generationTime,
128
135
  });
136
+ const endedSpan = SpanSerializer.endSpan(span, SpanStatus.OK);
137
+ getMetricsAggregator().recordSpan(endedSpan);
129
138
  return {
130
139
  slideNumber: slideSchema.slideNumber,
131
140
  schema: slideSchema,
@@ -135,6 +144,10 @@ export class SlideGenerator {
135
144
  };
136
145
  }
137
146
  catch (error) {
147
+ const endedSpan = SpanSerializer.endSpan(span, SpanStatus.ERROR);
148
+ endedSpan.statusMessage =
149
+ error instanceof Error ? error.message : String(error);
150
+ getMetricsAggregator().recordSpan(endedSpan);
138
151
  const err = error instanceof NeuroLinkError
139
152
  ? error
140
153
  : ErrorFactory.toolExecutionFailed("slideGenerator", error instanceof Error ? error : new Error(String(error)));
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * @module presentation/slideRenderers
8
8
  */
9
- import type { SlideContent, SlideLayout, SlideType, PresentationTheme, BulletPoint, PptxChartName, PptxSlide, BackgroundStyle, RenderContentSlideOptions, ColumnData } from "./types.js";
9
+ import type { BackgroundStyle, BulletPoint, ColumnData, PptxChartName, PptxSlide, PresentationTheme, RenderContentSlideOptions, SlideContent, SlideLayout, SlideType } from "./types.js";
10
10
  export declare const LAYOUT_POSITIONS: {
11
11
  margin: {
12
12
  x: number;
@@ -6,9 +6,9 @@
6
6
  *
7
7
  * @module presentation/slideRenderers
8
8
  */
9
- import { getSlideTypeFormatting, getBulletOptions } from "./constants.js";
10
9
  import { logger } from "../../utils/logger.js";
11
- import { validateImageBuffer, bufferToDataUrl, parseMarkdownText, hasMarkdownFormatting, createFormattedTextProps, calculateFontSize, } from "./utils.js";
10
+ import { getBulletOptions, getSlideTypeFormatting } from "./constants.js";
11
+ import { bufferToDataUrl, calculateFontSize, createFormattedTextProps, hasMarkdownFormatting, parseMarkdownText, validateImageBuffer, } from "./utils.js";
12
12
  // ============================================================================
13
13
  // LAYOUT POSITIONS
14
14
  // ============================================================================
@@ -986,9 +986,11 @@ export function renderThankYouSlide(slide, title, content, theme, imageBuffer) {
986
986
  fit: DEFAULT_TEXT_FIT,
987
987
  });
988
988
  }
989
- if (content.contactInfo.social && content.contactInfo.social.length > 0) {
989
+ if (content.contactInfo.social &&
990
+ Array.isArray(content.contactInfo.social) &&
991
+ content.contactInfo.social.length > 0) {
990
992
  const socialText = content.contactInfo.social
991
- .map((s) => `${s.platform}: ${s.handle}`)
993
+ .map((s) => `${s.platform || ""}: ${s.handle || ""}`)
992
994
  .join(" • ");
993
995
  slide.addText(socialText, {
994
996
  x: 0.5,
@@ -9,7 +9,7 @@
9
9
  * This helps ensure consistent slide rendering when AI doesn't explicitly
10
10
  * specify a slide type, or when we want to normalize AI responses.
11
11
  */
12
- import type { SlideType, BulletStyle, BulletPoint, SlideContent } from "./types.js";
12
+ import type { BulletPoint, BulletStyle, SlideContent, SlideType } from "./types.js";
13
13
  /**
14
14
  * Infer slide type and bullet style from title text
15
15
  */
@@ -20,13 +20,13 @@ const TITLE_KEYWORD_PATTERNS = [
20
20
  // Agenda / Table of Contents - numbered list
21
21
  {
22
22
  patterns: [
23
- /^agenda$/i,
24
- /^table\s+of\s+contents$/i,
25
- /^outline$/i,
26
- /^overview$/i,
27
- /^what\s+we('ll)?\s+cover$/i,
28
- /^today('s)?\s+topics?$/i,
29
- /^session\s+outline$/i,
23
+ /\bagenda\b/i,
24
+ /\btable\s+of\s+contents\b/i,
25
+ /\boutline\b/i,
26
+ /\boverview\b/i,
27
+ /\bwhat\s+we('ll)?\s+cover\b/i,
28
+ /\btoday('s)?\s+topics?\b/i,
29
+ /\bsession\s+outline\b/i,
30
30
  ],
31
31
  slideType: "agenda",
32
32
  bulletStyle: "number",
@@ -34,18 +34,18 @@ const TITLE_KEYWORD_PATTERNS = [
34
34
  // Conclusion / Summary - checkmark
35
35
  {
36
36
  patterns: [
37
- /^conclusion$/i,
38
- /^summary$/i,
39
- /^key\s+takeaways?$/i,
40
- /^takeaways?$/i,
41
- /^recap$/i,
42
- /^in\s+summary$/i,
43
- /^what\s+we('ve)?\s+learned$/i,
44
- /^main\s+points?$/i,
45
- /^key\s+points?$/i,
46
- /^highlights?$/i,
47
- /^achievements?$/i,
48
- /^accomplishments?$/i,
37
+ /\bconclusion\b/i,
38
+ /\bsummary\b/i,
39
+ /\bkey\s+takeaways?\b/i,
40
+ /\btakeaways?\b/i,
41
+ /\brecap\b/i,
42
+ /\bin\s+summary\b/i,
43
+ /\bwhat\s+we('ve)?\s+learned\b/i,
44
+ /\bmain\s+points?\b/i,
45
+ /\bkey\s+points?\b/i,
46
+ /\bhighlights?\b/i,
47
+ /\bachievements?\b/i,
48
+ /\baccomplishments?\b/i,
49
49
  ],
50
50
  slideType: "conclusion",
51
51
  bulletStyle: "checkmark",
@@ -53,15 +53,15 @@ const TITLE_KEYWORD_PATTERNS = [
53
53
  // Closing / Thank You - checkmark
54
54
  {
55
55
  patterns: [
56
- /^thank\s+you$/i,
57
- /^thanks?$/i,
58
- /^questions?\??$/i,
59
- /^q\s*&\s*a$/i,
60
- /^contact(\s+us)?$/i,
61
- /^next\s+steps?$/i,
62
- /^action\s+items?$/i,
63
- /^let('s)?\s+connect$/i,
64
- /^get\s+(in\s+)?touch$/i,
56
+ /\bthank\s+you\b/i,
57
+ /\bthanks?\b/i,
58
+ /\bquestions?\b\??/i,
59
+ /\bq\s*&\s*a\b/i,
60
+ /\bcontact(\s+us)?\b/i,
61
+ /\bnext\s+steps?\b/i,
62
+ /\baction\s+items?\b/i,
63
+ /\blet('s)?\s+connect\b/i,
64
+ /\bget\s+(in\s+)?touch\b/i,
65
65
  ],
66
66
  slideType: "closing",
67
67
  bulletStyle: "checkmark",
@@ -69,14 +69,15 @@ const TITLE_KEYWORD_PATTERNS = [
69
69
  // Comparison - arrow bullets
70
70
  {
71
71
  patterns: [
72
- /^comparison$/i,
73
- /^vs\.?$/i,
74
- /^versus$/i,
75
- /^before\s+(and|&|vs\.?)\s+after$/i,
76
- /^pros?\s+(and|&|vs\.?)\s+cons?$/i,
77
- /^advantages?\s+(and|&|vs\.?)\s+disadvantages?$/i,
78
- /^benefits?\s+(and|&|vs\.?)\s+risks?$/i,
79
- /^old\s+vs\.?\s+new$/i,
72
+ /\bcomparison\b/i,
73
+ /\bcompare\b/i,
74
+ /\bvs\.?\b/i,
75
+ /\bversus\b/i,
76
+ /\bbefore\s+(and|&|vs\.?)\s+after\b/i,
77
+ /\bpros?\s+(and|&|vs\.?)\s+cons?\b/i,
78
+ /\badvantages?\s+(and|&|vs\.?)\s+disadvantages?\b/i,
79
+ /\bbenefits?\s+(and|&|vs\.?)\s+risks?\b/i,
80
+ /\bold\s+vs\.?\s+new\b/i,
80
81
  ],
81
82
  slideType: "comparison",
82
83
  bulletStyle: "arrow",
@@ -84,15 +85,16 @@ const TITLE_KEYWORD_PATTERNS = [
84
85
  // Process / Steps - numbered
85
86
  {
86
87
  patterns: [
87
- /^process$/i,
88
- /^steps?$/i,
89
- /^how\s+to\b/i,
90
- /^workflow$/i,
91
- /^procedure$/i,
92
- /^methodology$/i,
93
- /^\d+\s+steps?\s+to\b/i,
94
- /^implementation\s+steps?$/i,
95
- /^getting\s+started$/i,
88
+ /\bprocess\b/i,
89
+ /\bsteps?\b/i,
90
+ /\bstep[\s-]+by[\s-]+step\b/i,
91
+ /\bhow\s+to\b/i,
92
+ /\bworkflow\b/i,
93
+ /\bprocedure\b/i,
94
+ /\bmethodology\b/i,
95
+ /\d+\s+steps?\s+to\b/i,
96
+ /\bimplementation\s+steps?\b/i,
97
+ /\bgetting\s+started\b/i,
96
98
  ],
97
99
  slideType: "numbered-list",
98
100
  bulletStyle: "number",
@@ -100,21 +102,21 @@ const TITLE_KEYWORD_PATTERNS = [
100
102
  // Features / Benefits - disc (but could be checkmark for benefits)
101
103
  {
102
104
  patterns: [
103
- /^features?$/i,
104
- /^capabilities?$/i,
105
- /^what\s+(we|it)\s+offers?$/i,
106
- /^our\s+offerings?$/i,
105
+ /\bfeatures?\b/i,
106
+ /\bcapabilities?\b/i,
107
+ /\bwhat\s+(we|it)\s+offers?\b/i,
108
+ /\bour\s+offerings?\b/i,
107
109
  ],
108
110
  slideType: "features",
109
111
  bulletStyle: "disc",
110
112
  },
111
113
  {
112
114
  patterns: [
113
- /^benefits?$/i,
114
- /^advantages?$/i,
115
- /^why\s+choose\b/i,
116
- /^reasons?\s+to\b/i,
117
- /^value\s+proposition$/i,
115
+ /\bbenefits?\b/i,
116
+ /\badvantages?\b/i,
117
+ /\bwhy\s+choose\b/i,
118
+ /\breasons?\s+to\b/i,
119
+ /\bvalue\s+proposition\b/i,
118
120
  ],
119
121
  slideType: "content",
120
122
  bulletStyle: "checkmark",
@@ -122,12 +124,12 @@ const TITLE_KEYWORD_PATTERNS = [
122
124
  // Goals / Objectives - checkmark
123
125
  {
124
126
  patterns: [
125
- /^goals?$/i,
126
- /^objectives?$/i,
127
- /^targets?$/i,
128
- /^aims?$/i,
129
- /^our\s+mission$/i,
130
- /^what\s+we\s+aim\s+for$/i,
127
+ /\bgoals?\b/i,
128
+ /\bobjectives?\b/i,
129
+ /\btargets?\b/i,
130
+ /\baims?\b/i,
131
+ /\bour\s+mission\b/i,
132
+ /\bwhat\s+we\s+aim\s+for\b/i,
131
133
  ],
132
134
  slideType: "content",
133
135
  bulletStyle: "checkmark",
@@ -135,13 +137,13 @@ const TITLE_KEYWORD_PATTERNS = [
135
137
  // Challenges / Risks - arrow
136
138
  {
137
139
  patterns: [
138
- /^challenges?$/i,
139
- /^risks?$/i,
140
- /^obstacles?$/i,
141
- /^barriers?$/i,
142
- /^concerns?$/i,
143
- /^issues?$/i,
144
- /^problems?$/i,
140
+ /\bchallenges?\b/i,
141
+ /\brisks?\b/i,
142
+ /\bobstacles?\b/i,
143
+ /\bbarriers?\b/i,
144
+ /\bconcerns?\b/i,
145
+ /\bissues?\b/i,
146
+ /\bproblems?\b/i,
145
147
  ],
146
148
  slideType: "content",
147
149
  bulletStyle: "arrow",
@@ -149,12 +151,12 @@ const TITLE_KEYWORD_PATTERNS = [
149
151
  // Requirements / Checklist - checkmark
150
152
  {
151
153
  patterns: [
152
- /^requirements?$/i,
153
- /^checklist$/i,
154
- /^prerequisites?$/i,
155
- /^what\s+you\s+need$/i,
156
- /^must\s+haves?$/i,
157
- /^essentials?$/i,
154
+ /\brequirements?\b/i,
155
+ /\bchecklist\b/i,
156
+ /\bprerequisites?\b/i,
157
+ /\bwhat\s+you\s+need\b/i,
158
+ /\bmust\s+haves?\b/i,
159
+ /\bessentials?\b/i,
158
160
  ],
159
161
  slideType: "content",
160
162
  bulletStyle: "checkmark",
@@ -338,10 +338,10 @@ export declare function createFileTools(registry: FileReferenceRegistry): {
338
338
  }, "strip", z.ZodTypeAny, {
339
339
  file_id: string;
340
340
  format?: "text" | "summary" | "detailed" | undefined;
341
+ end_time?: number | undefined;
342
+ start_time?: number | undefined;
341
343
  sheet?: string | undefined;
342
344
  columns?: string[] | undefined;
343
- start_time?: number | undefined;
344
- end_time?: number | undefined;
345
345
  frame_count?: number | undefined;
346
346
  pages?: number[] | undefined;
347
347
  page_range?: {
@@ -356,10 +356,10 @@ export declare function createFileTools(registry: FileReferenceRegistry): {
356
356
  }, {
357
357
  file_id: string;
358
358
  format?: "text" | "summary" | "detailed" | undefined;
359
+ end_time?: number | undefined;
360
+ start_time?: number | undefined;
359
361
  sheet?: string | undefined;
360
362
  columns?: string[] | undefined;
361
- start_time?: number | undefined;
362
- end_time?: number | undefined;
363
363
  frame_count?: number | undefined;
364
364
  pages?: number[] | undefined;
365
365
  page_range?: {
@@ -389,10 +389,10 @@ export declare function createFileTools(registry: FileReferenceRegistry): {
389
389
  execute: (args: {
390
390
  file_id: string;
391
391
  format?: "text" | "summary" | "detailed" | undefined;
392
+ end_time?: number | undefined;
393
+ start_time?: number | undefined;
392
394
  sheet?: string | undefined;
393
395
  columns?: string[] | undefined;
394
- start_time?: number | undefined;
395
- end_time?: number | undefined;
396
396
  frame_count?: number | undefined;
397
397
  pages?: number[] | undefined;
398
398
  page_range?: {
package/dist/index.d.ts CHANGED
@@ -33,17 +33,17 @@
33
33
  */
34
34
  import { AIProviderFactory } from "./core/factory.js";
35
35
  export { AIProviderFactory };
36
+ export { GoogleTTSHandler } from "./adapters/tts/googleTTSHandler.js";
36
37
  export { NeuroLinkConfigManager as ConfigManager } from "./config/configManager.js";
37
38
  export { AIProviderName, BedrockModels, OpenAIModels, VertexModels, } from "./constants/enums.js";
38
39
  export { dynamicModelProvider } from "./core/dynamicModels.js";
39
40
  export { validateTool } from "./sdk/toolRegistration.js";
40
41
  export * from "./types/index.js";
41
42
  export type { DynamicModelConfig, ModelRegistry } from "./types/modelTypes.js";
42
- export { getAvailableProviders, getBestProvider, isValidProvider, } from "./utils/providerUtils.js";
43
- export { calculateCost, hasPricing } from "./utils/pricing.js";
44
43
  export { isAbortError } from "./utils/errorHandling.js";
44
+ export { calculateCost, hasPricing } from "./utils/pricing.js";
45
+ export { getAvailableProviders, getBestProvider, isValidProvider, } from "./utils/providerUtils.js";
45
46
  export { TTSProcessor } from "./utils/ttsProcessor.js";
46
- export { GoogleTTSHandler } from "./adapters/tts/googleTTSHandler.js";
47
47
  import { NeuroLink } from "./neurolink.js";
48
48
  export { NeuroLink };
49
49
  export type { MCPServerInfo } from "./types/mcpTypes.js";
@@ -54,6 +54,15 @@ export type { LangfuseContext } from "./services/server/ai/observability/instrum
54
54
  export { initializeOpenTelemetry, shutdownOpenTelemetry, flushOpenTelemetry, getLangfuseHealthStatus, setLangfuseContext, getLangfuseSpanProcessor, getTracerProvider, isOpenTelemetryInitialized, getSpanProcessors, createContextEnricher, isUsingExternalTracerProvider, getLangfuseContext, getTracer, runWithCurrentLangfuseContext, };
55
55
  export { clearAnalyticsMetrics, createAnalyticsMiddleware, getAnalyticsMetrics, } from "./middleware/builtin/analytics.js";
56
56
  export { MiddlewareFactory } from "./middleware/factory.js";
57
+ export { ExporterRegistry } from "./observability/exporterRegistry.js";
58
+ export { NoOpExporter } from "./observability/exporters/baseExporter.js";
59
+ export type { LatencyStats, MetricsSummary, ModelCostStats, ProviderCostStats, TraceView, } from "./observability/metricsAggregator.js";
60
+ export { getMetricsAggregator, MetricsAggregator, resetMetricsAggregator, } from "./observability/metricsAggregator.js";
61
+ export { AlwaysSampler, NeverSampler, } from "./observability/sampling/samplers.js";
62
+ export { TokenTracker } from "./observability/tokenTracker.js";
63
+ export type { SpanAttributes, SpanData, SpanEvent, } from "./observability/types/spanTypes.js";
64
+ export { GENAI_ATTRIBUTES, SpanStatus, SpanType, } from "./observability/types/spanTypes.js";
65
+ export { SpanSerializer } from "./observability/utils/spanSerializer.js";
57
66
  export type { MiddlewareConfig, MiddlewareContext, MiddlewareFactoryOptions, MiddlewarePreset, NeuroLinkMiddleware, } from "./types/middlewareTypes.js";
58
67
  export declare const VERSION = "1.0.0";
59
68
  /**
@@ -274,17 +283,17 @@ export declare function generateText(options: import("./types/index.js").TextGen
274
283
  * console.log('Total time:', result.workflow?.metrics?.totalTime);
275
284
  * ```
276
285
  */
277
- export type { WorkflowConfig, WorkflowResult, ModelConfig, JudgeConfig, ModelGroup, EnsembleResponse, JudgeScores, MultiJudgeScores, WorkflowType, ExecutionStrategy, WorkflowValidationResult, } from "./workflow/types.js";
278
- export { runWorkflow } from "./workflow/core/workflowRunner.js";
286
+ export { clearRegistry as clearWorkflowRegistry, getWorkflow, listWorkflows, registerWorkflow, } from "./workflow/core/workflowRegistry.js";
279
287
  export type { RunWorkflowOptions } from "./workflow/core/workflowRunner.js";
280
- export { registerWorkflow, getWorkflow, listWorkflows, clearRegistry as clearWorkflowRegistry, } from "./workflow/core/workflowRegistry.js";
281
- export { CONSENSUS_3_WORKFLOW, CONSENSUS_3_FAST_WORKFLOW, createConsensus3WithPrompt, } from "./workflow/workflows/consensusWorkflow.js";
282
- export { FAST_FALLBACK_WORKFLOW, AGGRESSIVE_FALLBACK_WORKFLOW, } from "./workflow/workflows/fallbackWorkflow.js";
283
- export { MULTI_JUDGE_5_WORKFLOW, MULTI_JUDGE_3_WORKFLOW, createMultiJudgeWorkflow, } from "./workflow/workflows/multiJudgeWorkflow.js";
284
- export { QUALITY_MAX_WORKFLOW, SPEED_FIRST_WORKFLOW, BALANCED_ADAPTIVE_WORKFLOW, createAdaptiveWorkflow, } from "./workflow/workflows/adaptiveWorkflow.js";
285
- export { validateWorkflow } from "./workflow/utils/workflowValidation.js";
288
+ export { runWorkflow } from "./workflow/core/workflowRunner.js";
289
+ export { DEFAULT_SCORE_SCALE, WORKFLOW_ENGINE_VERSION, } from "./workflow/index.js";
290
+ export type { EnsembleResponse, ExecutionStrategy, JudgeConfig, JudgeScores, ModelConfig, ModelGroup, MultiJudgeScores, WorkflowConfig, WorkflowResult, WorkflowType, WorkflowValidationResult, } from "./workflow/types.js";
286
291
  export { calculateModelMetrics, compareWorkflows, generateSummaryStats, } from "./workflow/utils/workflowMetrics.js";
287
- export { WORKFLOW_ENGINE_VERSION, DEFAULT_SCORE_SCALE, } from "./workflow/index.js";
292
+ export { validateWorkflow } from "./workflow/utils/workflowValidation.js";
293
+ export { BALANCED_ADAPTIVE_WORKFLOW, createAdaptiveWorkflow, QUALITY_MAX_WORKFLOW, SPEED_FIRST_WORKFLOW, } from "./workflow/workflows/adaptiveWorkflow.js";
294
+ export { CONSENSUS_3_FAST_WORKFLOW, CONSENSUS_3_WORKFLOW, createConsensus3WithPrompt, } from "./workflow/workflows/consensusWorkflow.js";
295
+ export { AGGRESSIVE_FALLBACK_WORKFLOW, FAST_FALLBACK_WORKFLOW, } from "./workflow/workflows/fallbackWorkflow.js";
296
+ export { createMultiJudgeWorkflow, MULTI_JUDGE_3_WORKFLOW, MULTI_JUDGE_5_WORKFLOW, } from "./workflow/workflows/multiJudgeWorkflow.js";
288
297
  export type { AgentExecuteRequest, AgentExecuteResponse, AuthConfig, AuthenticatedUser, AuthResult, AuthStrategy, BodyParserConfig, CacheConfig, CacheEntry, CacheStore, CORSConfig, CreateRoutesOptions, DataEvent, DataStreamEvent, DataStreamEventType, DataStreamResponseConfig, DataStreamWriter, DataStreamWriterConfig, ErrorCategoryType, ErrorEvent, ErrorResponse, ErrorSeverityType, FinishEvent, HealthResponse, HttpMethod, LoggingConfig, MCPServerStatusResponse, MiddlewareDefinition, MiddlewareHandler, OpenAPIGeneratorConfig, OpenAPISpec, PropertySchema, RateLimitConfig as ServerRateLimitConfig, RateLimitMiddlewareConfig, RateLimitStore, ReadyResponse, RequiredServerAdapterConfig, RouteDefinition, RouteGroup, RouteHandler, ServerAdapterConfig, ServerAdapterErrorCodeType, ServerAdapterErrorContext, ServerAdapterEvents, ServerAdapterFactoryOptions, ServerContext, ServerFramework, ServerResponse, ServerStatus, SSEWriteOptions, StreamingConfig, TextDeltaEvent, TextEndEvent, TextStartEvent, ToolCallEvent, ToolExecuteRequest, ToolExecuteResponse, ToolResultEvent, ValidationConfig, ValidationResult, ValidationSchema, WebSocketAuthConfig, WebSocketConfig, WebSocketConnection, WebSocketHandler, WebSocketMessage, WebSocketMessageType, } from "./server/index.js";
289
298
  /**
290
299
  * Server Adapters for exposing NeuroLink as HTTP APIs
@@ -336,3 +345,28 @@ export type { BaseChunkerConfig, BM25Result, CharacterChunkerConfig, Chunk, Chun
336
345
  * ```
337
346
  */
338
347
  export { assembleContext, batchRerank, CharacterChunker, ChunkerRegistry, CohereRelevanceScorer, CrossEncoderReranker, CSVLoader, chunkText, createChunker, createContextWindow, createHybridSearch, createRAGPipeline, createVectorQueryTool, executeWithCircuitBreaker, extractMetadata, formatContextWithCitations, GraphRAG, getAvailableStrategies, getCircuitBreaker, getDefaultChunkerConfig, getRecommendedStrategy, HTMLChunker, HTMLLoader, InMemoryBM25Index, InMemoryVectorStore, JSONChunker as RAGJSONChunker, JSONLoader, LaTeXChunker, LLMMetadataExtractor, linearCombination, loadDocument, loadDocuments, MarkdownChunker, MarkdownLoader, MDocument, PDFLoader, prepareRAGTool, processDocument, RAGCircuitBreaker, type RAGCircuitBreakerConfig, type RAGCircuitBreakerEvents, RAGCircuitBreakerManager, type RAGCircuitBreakerStats, RAGPipeline, RAGRetryHandler, RecursiveChunker, ragCircuitBreakerManager, reciprocalRankFusion, rerank, SemanticChunker, SentenceChunker, simpleRerank, summarizeContext, TextLoader, TokenChunker, WebLoader, } from "./rag/index.js";
348
+ export { ContextBuilder } from "./evaluation/contextBuilder.js";
349
+ /**
350
+ * Evaluation system for AI response quality assessment.
351
+ *
352
+ * Uses RAGAS-style model-based evaluation with a "judge" LLM to score
353
+ * responses on relevance, accuracy, completeness, and overall quality.
354
+ * Supports retry logic with progressive prompt improvement.
355
+ *
356
+ * @example
357
+ * ```typescript
358
+ * import { Evaluator, RAGASEvaluator, ContextBuilder, RetryManager } from '@juspay/neurolink';
359
+ *
360
+ * const evaluator = new Evaluator({
361
+ * evaluationModel: 'gemini-1.5-flash',
362
+ * provider: 'vertex',
363
+ * threshold: 7,
364
+ * });
365
+ * ```
366
+ */
367
+ export { Evaluator } from "./evaluation/index.js";
368
+ export { PromptBuilder } from "./evaluation/prompts.js";
369
+ export { RAGASEvaluator } from "./evaluation/ragasEvaluator.js";
370
+ export { RetryManager } from "./evaluation/retryManager.js";
371
+ export { mapToEvaluationData } from "./evaluation/scoring.js";
372
+ export type { EnhancedConversationTurn, EnhancedEvaluationContext, EvaluationConfig, EvaluationResult, GetPromptFunction, QualityErrorDetails, QueryIntentAnalysis, } from "./types/evaluationTypes.js";
package/dist/index.js CHANGED
@@ -34,6 +34,7 @@
34
34
  // Core exports
35
35
  import { AIProviderFactory } from "./core/factory.js";
36
36
  export { AIProviderFactory };
37
+ export { GoogleTTSHandler } from "./adapters/tts/googleTTSHandler.js";
37
38
  // Config Manager export
38
39
  export { NeuroLinkConfigManager as ConfigManager } from "./config/configManager.js";
39
40
  export { AIProviderName, BedrockModels, OpenAIModels, VertexModels, } from "./constants/enums.js";
@@ -43,15 +44,14 @@ export { dynamicModelProvider } from "./core/dynamicModels.js";
43
44
  export { validateTool } from "./sdk/toolRegistration.js";
44
45
  // Export ALL types from the centralized type barrel
45
46
  export * from "./types/index.js";
46
- // Utility exports
47
- export { getAvailableProviders, getBestProvider, isValidProvider, } from "./utils/providerUtils.js";
48
- // Pricing utilities
49
- export { calculateCost, hasPricing } from "./utils/pricing.js";
50
47
  // Error utilities
51
48
  export { isAbortError } from "./utils/errorHandling.js";
49
+ // Pricing utilities
50
+ export { calculateCost, hasPricing } from "./utils/pricing.js";
51
+ // Utility exports
52
+ export { getAvailableProviders, getBestProvider, isValidProvider, } from "./utils/providerUtils.js";
52
53
  // TTS utilities
53
54
  export { TTSProcessor } from "./utils/ttsProcessor.js";
54
- export { GoogleTTSHandler } from "./adapters/tts/googleTTSHandler.js";
55
55
  // Main NeuroLink wrapper class and diagnostic types
56
56
  import { NeuroLink } from "./neurolink.js";
57
57
  export { NeuroLink };
@@ -72,6 +72,14 @@ runWithCurrentLangfuseContext, };
72
72
  // Analytics Middleware exports
73
73
  export { clearAnalyticsMetrics, createAnalyticsMiddleware, getAnalyticsMetrics, } from "./middleware/builtin/analytics.js";
74
74
  export { MiddlewareFactory } from "./middleware/factory.js";
75
+ export { ExporterRegistry } from "./observability/exporterRegistry.js";
76
+ export { NoOpExporter } from "./observability/exporters/baseExporter.js";
77
+ // Observability modules and types
78
+ export { getMetricsAggregator, MetricsAggregator, resetMetricsAggregator, } from "./observability/metricsAggregator.js";
79
+ export { AlwaysSampler, NeverSampler, } from "./observability/sampling/samplers.js";
80
+ export { TokenTracker } from "./observability/tokenTracker.js";
81
+ export { GENAI_ATTRIBUTES, SpanStatus, SpanType, } from "./observability/types/spanTypes.js";
82
+ export { SpanSerializer } from "./observability/utils/spanSerializer.js";
75
83
  // Version
76
84
  export const VERSION = "1.0.0";
77
85
  /**
@@ -299,23 +307,50 @@ export async function generateText(options) {
299
307
  const neurolink = new NeuroLink();
300
308
  return await neurolink.generateText(options);
301
309
  }
310
+ // ============================================================================
311
+ // WORKFLOW ENGINE - Multi-Model Orchestration with Judge Scoring
312
+ // ============================================================================
313
+ /**
314
+ * Workflow Engine for multi-model ensembles with judge-based evaluation
315
+ *
316
+ * Enables sophisticated AI orchestration patterns:
317
+ * - Ensemble execution (parallel multi-model)
318
+ * - Chain execution (sequential fallback)
319
+ * - Adaptive execution (tier-based quality/cost optimization)
320
+ * - Multi-judge voting for consensus
321
+ *
322
+ * @example
323
+ * ```typescript
324
+ * import { neurolink, CONSENSUS_3_WORKFLOW } from '@juspay/neurolink';
325
+ *
326
+ * // Use workflow via generate() with workflowConfig option
327
+ * const result = await neurolink.generate({
328
+ * input: { text: 'Explain quantum computing' },
329
+ * workflowConfig: CONSENSUS_3_WORKFLOW,
330
+ * });
331
+ *
332
+ * console.log('Best response:', result.content);
333
+ * console.log('Selected model:', result.workflow?.selectedModel);
334
+ * console.log('Total time:', result.workflow?.metrics?.totalTime);
335
+ * ```
336
+ */
337
+ // Workflow registry
338
+ export { clearRegistry as clearWorkflowRegistry, getWorkflow, listWorkflows, registerWorkflow, } from "./workflow/core/workflowRegistry.js";
302
339
  // Workflow execution
303
340
  export { runWorkflow } from "./workflow/core/workflowRunner.js";
304
- // Workflow registry
305
- export { registerWorkflow, getWorkflow, listWorkflows, clearRegistry as clearWorkflowRegistry, } from "./workflow/core/workflowRegistry.js";
341
+ // Workflow constants
342
+ export { DEFAULT_SCORE_SCALE, WORKFLOW_ENGINE_VERSION, } from "./workflow/index.js";
343
+ export { calculateModelMetrics, compareWorkflows, generateSummaryStats, } from "./workflow/utils/workflowMetrics.js";
344
+ // Validation and metrics
345
+ export { validateWorkflow } from "./workflow/utils/workflowValidation.js";
346
+ // Pre-built workflows - Adaptive
347
+ export { BALANCED_ADAPTIVE_WORKFLOW, createAdaptiveWorkflow, QUALITY_MAX_WORKFLOW, SPEED_FIRST_WORKFLOW, } from "./workflow/workflows/adaptiveWorkflow.js";
306
348
  // Pre-built workflows - Consensus
307
- export { CONSENSUS_3_WORKFLOW, CONSENSUS_3_FAST_WORKFLOW, createConsensus3WithPrompt, } from "./workflow/workflows/consensusWorkflow.js";
349
+ export { CONSENSUS_3_FAST_WORKFLOW, CONSENSUS_3_WORKFLOW, createConsensus3WithPrompt, } from "./workflow/workflows/consensusWorkflow.js";
308
350
  // Pre-built workflows - Fallback
309
- export { FAST_FALLBACK_WORKFLOW, AGGRESSIVE_FALLBACK_WORKFLOW, } from "./workflow/workflows/fallbackWorkflow.js";
351
+ export { AGGRESSIVE_FALLBACK_WORKFLOW, FAST_FALLBACK_WORKFLOW, } from "./workflow/workflows/fallbackWorkflow.js";
310
352
  // Pre-built workflows - Multi-judge
311
- export { MULTI_JUDGE_5_WORKFLOW, MULTI_JUDGE_3_WORKFLOW, createMultiJudgeWorkflow, } from "./workflow/workflows/multiJudgeWorkflow.js";
312
- // Pre-built workflows - Adaptive
313
- export { QUALITY_MAX_WORKFLOW, SPEED_FIRST_WORKFLOW, BALANCED_ADAPTIVE_WORKFLOW, createAdaptiveWorkflow, } from "./workflow/workflows/adaptiveWorkflow.js";
314
- // Validation and metrics
315
- export { validateWorkflow } from "./workflow/utils/workflowValidation.js";
316
- export { calculateModelMetrics, compareWorkflows, generateSummaryStats, } from "./workflow/utils/workflowMetrics.js";
317
- // Workflow constants
318
- export { WORKFLOW_ENGINE_VERSION, DEFAULT_SCORE_SCALE, } from "./workflow/index.js";
353
+ export { createMultiJudgeWorkflow, MULTI_JUDGE_3_WORKFLOW, MULTI_JUDGE_5_WORKFLOW, } from "./workflow/workflows/multiJudgeWorkflow.js";
319
354
  /**
320
355
  * Server Adapters for exposing NeuroLink as HTTP APIs
321
356
  *
@@ -403,3 +438,30 @@ extractMetadata, formatContextWithCitations,
403
438
  GraphRAG, getAvailableStrategies, getCircuitBreaker, getDefaultChunkerConfig, getRecommendedStrategy, HTMLChunker, HTMLLoader, InMemoryBM25Index, InMemoryVectorStore, JSONChunker as RAGJSONChunker, JSONLoader, LaTeXChunker, LLMMetadataExtractor, linearCombination, loadDocument, loadDocuments, MarkdownChunker, MarkdownLoader, MDocument, PDFLoader,
404
439
  // RAG Integration for generate/stream
405
440
  prepareRAGTool, processDocument, RAGCircuitBreaker, RAGCircuitBreakerManager, RAGPipeline, RAGRetryHandler, RecursiveChunker, ragCircuitBreakerManager, reciprocalRankFusion, rerank, SemanticChunker, SentenceChunker, simpleRerank, summarizeContext, TextLoader, TokenChunker, WebLoader, } from "./rag/index.js";
441
+ // ============================================================================
442
+ // EVALUATION / SCORING - RAGAS-style Response Quality Evaluation
443
+ // ============================================================================
444
+ export { ContextBuilder } from "./evaluation/contextBuilder.js";
445
+ /**
446
+ * Evaluation system for AI response quality assessment.
447
+ *
448
+ * Uses RAGAS-style model-based evaluation with a "judge" LLM to score
449
+ * responses on relevance, accuracy, completeness, and overall quality.
450
+ * Supports retry logic with progressive prompt improvement.
451
+ *
452
+ * @example
453
+ * ```typescript
454
+ * import { Evaluator, RAGASEvaluator, ContextBuilder, RetryManager } from '@juspay/neurolink';
455
+ *
456
+ * const evaluator = new Evaluator({
457
+ * evaluationModel: 'gemini-1.5-flash',
458
+ * provider: 'vertex',
459
+ * threshold: 7,
460
+ * });
461
+ * ```
462
+ */
463
+ export { Evaluator } from "./evaluation/index.js";
464
+ export { PromptBuilder } from "./evaluation/prompts.js";
465
+ export { RAGASEvaluator } from "./evaluation/ragasEvaluator.js";
466
+ export { RetryManager } from "./evaluation/retryManager.js";
467
+ export { mapToEvaluationData } from "./evaluation/scoring.js";