@devilsdev/rag-pipeline-utils 2.4.4 → 2.5.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 (225) hide show
  1. package/.ragrc.schema.json +83 -192
  2. package/CHANGELOG.md +345 -0
  3. package/README.md +418 -117
  4. package/SECURITY.md +5 -5
  5. package/dist/experimental.cjs +2 -0
  6. package/dist/experimental.d.ts +1 -0
  7. package/dist/experimental.mjs +5 -0
  8. package/dist/index.cjs +4992 -1242
  9. package/dist/index.d.ts +80 -2
  10. package/dist/index.mjs +1 -1
  11. package/dist/types/agentic/agentic-pipeline.d.ts +103 -0
  12. package/dist/types/agentic/iterative-retriever.d.ts +85 -0
  13. package/dist/types/agentic/query-planner.d.ts +145 -0
  14. package/dist/types/agentic/self-critique.d.ts +45 -0
  15. package/dist/types/ai/adaptive-retrieval.d.ts +44 -0
  16. package/dist/types/ai/federation/federated-learning-coordinator.d.ts +62 -0
  17. package/dist/types/ai/multimodal-processing.d.ts +32 -0
  18. package/dist/types/ai/multimodal.d.ts +39 -0
  19. package/dist/types/ai/retrieval-engine.d.ts +37 -0
  20. package/dist/types/ai/training/model-training-orchestrator.d.ts +31 -0
  21. package/dist/types/chunking/chunking-engine.d.ts +70 -0
  22. package/dist/types/chunking/strategies/fixed-size.d.ts +17 -0
  23. package/dist/types/chunking/strategies/recursive.d.ts +20 -0
  24. package/dist/types/chunking/strategies/semantic.d.ts +19 -0
  25. package/dist/types/chunking/strategies/sentence.d.ts +13 -0
  26. package/dist/types/chunking/strategies/structure-aware.d.ts +19 -0
  27. package/dist/types/citation/citation-tracker.d.ts +64 -0
  28. package/dist/types/citation/hallucination-detector.d.ts +40 -0
  29. package/dist/types/citation/source-mapper.d.ts +37 -0
  30. package/dist/types/connectors/anthropic-connector.d.ts +92 -0
  31. package/dist/types/connectors/base-connector.d.ts +87 -0
  32. package/dist/types/connectors/cohere-connector.d.ts +89 -0
  33. package/dist/types/connectors/connector-utils.d.ts +110 -0
  34. package/dist/types/connectors/local-embedder.d.ts +86 -0
  35. package/dist/types/connectors/memory-retriever.d.ts +91 -0
  36. package/dist/types/connectors/ollama-connector.d.ts +110 -0
  37. package/dist/types/connectors/openai-connector.d.ts +114 -0
  38. package/dist/types/connectors/rag-prompt.d.ts +40 -0
  39. package/dist/types/cost/cost-calculator.d.ts +152 -0
  40. package/dist/types/cost/cost-tracker.d.ts +126 -0
  41. package/dist/types/cost/token-budget.d.ts +110 -0
  42. package/dist/types/dag/core/error-context.d.ts +239 -0
  43. package/dist/types/dag/core/execution-scheduler.d.ts +191 -0
  44. package/dist/types/dag/core/topology-validation.d.ts +226 -0
  45. package/dist/types/dag/dag-engine.d.ts +156 -0
  46. package/dist/types/dag/dag-node.d.ts +37 -0
  47. package/dist/types/dashboard/dashboard-generator.d.ts +127 -0
  48. package/dist/types/dashboard/metrics-aggregator.d.ts +218 -0
  49. package/dist/types/debug/execution-tracer.d.ts +57 -0
  50. package/dist/types/debug/trace-inspector.d.ts +31 -0
  51. package/dist/types/ecosystem/plugin-certification.d.ts +169 -0
  52. package/dist/types/enterprise/data-governance.d.ts +203 -0
  53. package/dist/types/enterprise/multi-tenancy.d.ts +137 -0
  54. package/dist/types/enterprise/sso-integration.d.ts +420 -0
  55. package/dist/types/evaluate/context-metrics.d.ts +55 -0
  56. package/dist/types/evaluate/faithfulness.d.ts +41 -0
  57. package/dist/types/evaluate/groundedness.d.ts +60 -0
  58. package/dist/types/evaluate/pipeline-evaluator.d.ts +88 -0
  59. package/dist/types/evaluate/relevance.d.ts +21 -0
  60. package/dist/types/evaluate/scoring.d.ts +123 -0
  61. package/dist/types/experimental.d.ts +15 -0
  62. package/dist/types/graph/entity-extractor.d.ts +84 -0
  63. package/dist/types/graph/graph-index.d.ts +49 -0
  64. package/dist/types/graph/graph-retriever.d.ts +81 -0
  65. package/dist/types/graph/knowledge-graph.d.ts +129 -0
  66. package/dist/types/guardrails/guardrails-pipeline.d.ts +63 -0
  67. package/dist/types/guardrails/injection-detector.d.ts +47 -0
  68. package/dist/types/guardrails/post-generation-guard.d.ts +61 -0
  69. package/dist/types/guardrails/pre-retrieval-guard.d.ts +64 -0
  70. package/dist/types/guardrails/retrieval-guard.d.ts +57 -0
  71. package/dist/types/mcp/mcp-server.d.ts +85 -0
  72. package/dist/types/mcp/mcp-tool-builder.d.ts +55 -0
  73. package/dist/types/reranker/cascade-reranker.d.ts +40 -0
  74. package/dist/types/reranker/embedding-reranker.d.ts +77 -0
  75. package/dist/types/reranker/scoring-reranker.d.ts +41 -0
  76. package/dist/types/retrieval/bm25-search.d.ts +43 -0
  77. package/dist/types/retrieval/file-vector-store.d.ts +87 -0
  78. package/dist/types/retrieval/hybrid-retriever.d.ts +35 -0
  79. package/dist/types/retrieval/rank-fusion.d.ts +10 -0
  80. package/dist/types/security/jwt-config.d.ts +80 -0
  81. package/dist/types/security/jwt-validator.d.ts +195 -0
  82. package/dist/types/security/plugin-sandbox.d.ts +158 -0
  83. package/dist/types/security/plugin-signature-verifier.d.ts +139 -0
  84. package/dist/types/security/validator.d.ts +5 -0
  85. package/dist/types/streaming/embedding-stream.d.ts +65 -0
  86. package/dist/types/streaming/sse-adapter.d.ts +59 -0
  87. package/dist/types/streaming/stream-router.d.ts +88 -0
  88. package/dist/types/streaming/streaming-embedder.d.ts +99 -0
  89. package/dist/types/streaming/websocket-adapter.d.ts +71 -0
  90. package/dist/types/templates/scaffold.d.ts +55 -0
  91. package/dist/types/templates/template-registry.d.ts +63 -0
  92. package/dist/types/utils/embed-query.d.ts +20 -0
  93. package/dist/types/utils/logger.d.ts +50 -0
  94. package/dist/types/utils/rate-limiter.d.ts +66 -0
  95. package/dist/types/utils/retry.d.ts +27 -0
  96. package/dist/types/utils/run-abort.d.ts +34 -0
  97. package/dist/types/utils/secure-logging.d.ts +51 -0
  98. package/dist/types/utils/structured-logger.d.ts +126 -0
  99. package/package.json +53 -29
  100. package/src/agentic/agentic-pipeline.js +75 -7
  101. package/src/agentic/iterative-retriever.js +47 -10
  102. package/src/agentic/query-planner.js +329 -78
  103. package/src/citation/citation-tracker.js +6 -4
  104. package/src/citation/hallucination-detector.js +2 -2
  105. package/src/citation/source-mapper.js +15 -28
  106. package/src/cli/commands/ai.js +101 -0
  107. package/src/cli/commands/plugin-hub/event-handlers.js +6 -0
  108. package/src/cli/commands/plugin-hub/hub-commands.js +0 -74
  109. package/src/cli/commands/plugin-hub/local-commands.js +143 -0
  110. package/src/cli/commands/plugin-hub.js +96 -36
  111. package/src/cli/diagnostics/config-checker.js +76 -63
  112. package/src/cli/diagnostics/environment-checker.js +62 -31
  113. package/src/cli/diagnostics/plugin-checker.js +36 -89
  114. package/src/cli/doctor-command.js +39 -5
  115. package/src/cli/enhanced-cli-commands.js +72 -217
  116. package/src/cli/handlers/ai-handler.js +364 -0
  117. package/src/cli/handlers/diagnostics-handler.js +78 -31
  118. package/src/cli/handlers/ingest-handler.js +28 -22
  119. package/src/cli/handlers/init-handler.js +148 -25
  120. package/src/cli/handlers/query-handler.js +41 -26
  121. package/src/cli/handlers/run-handler.js +16 -167
  122. package/src/cli/handlers/serve-handler.js +60 -0
  123. package/src/cli/services/bench-stats.js +54 -0
  124. package/src/cli/services/benchmark.js +161 -0
  125. package/src/cli/services/feedback.js +155 -0
  126. package/src/cli/services/rag-service.js +322 -0
  127. package/src/cli/shared/cli-utils.js +24 -7
  128. package/src/cli/shared/config-context.js +21 -0
  129. package/src/cli/wizard/config-builder.js +81 -0
  130. package/src/cli/wizard/init-wizard.js +617 -0
  131. package/src/config/component-factory.js +125 -0
  132. package/src/config/load-config.js +29 -10
  133. package/src/config/load-plugin-config.js +46 -2
  134. package/src/connectors/anthropic-connector.js +93 -55
  135. package/src/connectors/base-connector.js +74 -19
  136. package/src/connectors/cohere-connector.js +88 -32
  137. package/src/connectors/connector-utils.js +302 -0
  138. package/src/connectors/local-embedder.js +43 -5
  139. package/src/connectors/memory-retriever.js +108 -15
  140. package/src/connectors/ollama-connector.js +83 -49
  141. package/src/connectors/openai-connector.js +108 -44
  142. package/src/connectors/rag-prompt.js +88 -0
  143. package/src/core/create-pipeline.js +209 -60
  144. package/src/core/plugin-registry.js +87 -11
  145. package/src/cost/cost-calculator.js +205 -32
  146. package/src/dev/dev-server.js +166 -11
  147. package/src/dev/hot-reload.js +40 -1
  148. package/src/ecosystem/plugin-checks.js +181 -0
  149. package/src/ecosystem/plugin-hub.js +50 -125
  150. package/src/ecosystem/plugin-installer.js +298 -0
  151. package/src/ecosystem/plugin-probe.js +127 -0
  152. package/src/ecosystem/plugin-scanner.js +185 -0
  153. package/src/ecosystem/tar-extract.js +114 -0
  154. package/src/enterprise/audit-logging.js +158 -29
  155. package/src/enterprise/sso-integration.js +715 -228
  156. package/src/evaluate/context-metrics.js +28 -16
  157. package/src/evaluate/evaluator.js +3 -3
  158. package/src/evaluate/faithfulness.js +18 -14
  159. package/src/evaluate/groundedness.js +43 -12
  160. package/src/evaluate/pipeline-evaluator.js +35 -8
  161. package/src/evaluate/scoring.js +251 -3
  162. package/src/experimental.js +71 -0
  163. package/src/guardrails/guardrails-pipeline.js +69 -7
  164. package/src/guardrails/injection-detector.js +283 -0
  165. package/src/guardrails/post-generation-guard.js +19 -0
  166. package/src/guardrails/pre-retrieval-guard.js +36 -36
  167. package/src/guardrails/retrieval-guard.js +58 -8
  168. package/src/index.js +36 -1
  169. package/src/loader/document-reader.js +91 -0
  170. package/src/reranker/cascade-reranker.js +3 -0
  171. package/src/reranker/embedding-reranker.js +136 -21
  172. package/src/reranker/llm-reranker.js +79 -12
  173. package/src/reranker/scoring-reranker.js +3 -0
  174. package/src/retrieval/bm25-search.js +12 -6
  175. package/src/retrieval/file-vector-store.js +212 -0
  176. package/src/retrieval/hybrid-retriever.js +22 -19
  177. package/src/security/jwt-config.js +13 -2
  178. package/src/security/jwt-validator.js +134 -30
  179. package/src/security/plugin-sandbox.js +18 -1
  180. package/src/security/plugin-signature-verifier.js +245 -70
  181. package/src/utils/deprecate.js +69 -0
  182. package/src/utils/embed-query.js +33 -0
  183. package/src/utils/input-sanitizer.js +19 -4
  184. package/src/utils/logger.js +34 -4
  185. package/src/utils/run-abort.js +102 -0
  186. package/src/ai/federated-learning.js +0 -211
  187. package/src/ai/federation.js +0 -71
  188. package/src/ai/index.js +0 -22
  189. package/src/ai/model-trainer.js +0 -217
  190. package/src/ai/model-training.js +0 -202
  191. package/src/ai/multimodal/multi-modal-processor.js +0 -345
  192. package/src/ai/orchestrator.js +0 -65
  193. package/src/ai/retrieval/adaptive-retrieval-engine.js +0 -398
  194. package/src/cli/commands/ai-ml/adaptive-commands.js +0 -178
  195. package/src/cli/commands/ai-ml/federated-commands.js +0 -207
  196. package/src/cli/commands/ai-ml/index.js +0 -17
  197. package/src/cli/commands/ai-ml/multimodal-commands.js +0 -187
  198. package/src/cli/commands/ai-ml/shared.js +0 -51
  199. package/src/cli/commands/ai-ml/training-commands.js +0 -228
  200. package/src/cli/commands/ai-ml.js +0 -386
  201. package/src/cli/commands/docs.js +0 -228
  202. package/src/cli/commands/dx.js +0 -538
  203. package/src/cli/commands/wizard.js +0 -627
  204. package/src/cli/input-sanitization-middleware.js +0 -356
  205. package/src/cli/interactive-wizard.js +0 -373
  206. package/src/cli/templates/development.template.json +0 -64
  207. package/src/cli/templates/minimal.template.json +0 -33
  208. package/src/cli/templates/production.template.json +0 -104
  209. package/src/cli/templates/testing.template.json +0 -45
  210. package/src/cli/wizard/configuration.js +0 -148
  211. package/src/cli/wizard/observability.js +0 -79
  212. package/src/cli/wizard/performance.js +0 -76
  213. package/src/cli/wizard/plugin-selection.js +0 -297
  214. package/src/cli/wizard/preview-save.js +0 -172
  215. package/src/cli/wizard/project-setup.js +0 -66
  216. package/src/core/pipeline-factory.js +0 -59
  217. package/src/dag/enhanced-dag-engine.js +0 -894
  218. package/src/dx/index.js +0 -40
  219. package/src/dx/integration-templates.js +0 -662
  220. package/src/dx/performance-profiler.js +0 -968
  221. package/src/dx/realtime-debugger.js +0 -755
  222. package/src/dx/visual-pipeline-builder.js +0 -578
  223. package/src/ingest.js +0 -59
  224. package/src/pipeline/pipeline.js +0 -18
  225. package/src/query.js +0 -117
package/src/dx/index.js DELETED
@@ -1,40 +0,0 @@
1
- /**
2
- * Developer Experience (DX) Enhancements
3
- *
4
- * This module provides advanced developer tools and interfaces for the RAG pipeline:
5
- * - Visual Pipeline Builder: Web-based drag-and-drop interface
6
- * - Real-time Debugging: Live pipeline inspection and debugging
7
- * - Performance Profiler: Detailed bottleneck analysis
8
- * - Integration Templates: Pre-built connectors for popular services
9
- */
10
-
11
- const VisualPipelineBuilder = require("./visual-pipeline-builder");
12
- // eslint-disable-line global-require
13
- const RealtimeDebugger = require("./realtime-debugger");
14
- // eslint-disable-line global-require
15
- const PerformanceProfiler = require("./performance-profiler");
16
- // eslint-disable-line global-require
17
- const IntegrationTemplates = require("./integration-templates");
18
- // eslint-disable-line global-require
19
-
20
- module.exports = {
21
- VisualPipelineBuilder,
22
- RealtimeDebugger,
23
- PerformanceProfiler,
24
- IntegrationTemplates,
25
-
26
- // Convenience factory methods
27
- createVisualBuilder: (_options = {}) => new VisualPipelineBuilder(_options),
28
- createDebugger: (_options = {}) => new RealtimeDebugger(_options),
29
- createProfiler: (_options = {}) => new PerformanceProfiler(_options),
30
- getTemplates: () => IntegrationTemplates.getAllTemplates(),
31
-
32
- // DX utilities
33
- getDXInfo: () => ({
34
- version: "1.0.0",
35
- components: ["visual-builder", "debugger", "profiler", "templates"],
36
- status: "active",
37
- }),
38
- };
39
-
40
- // Ensure module.exports is properly defined
@@ -1,662 +0,0 @@
1
- /**
2
- * Integration Templates
3
- *
4
- * Pre-built connectors and templates for popular services and platforms.
5
- * Provides ready-to-use configurations for common RAG pipeline integrations.
6
- */
7
-
8
- const fs = require("fs").promises; // eslint-disable-line global-require
9
- const path = require("path"); // eslint-disable-line global-require
10
-
11
- /**
12
- * Normalize template shape and keep back-compat.
13
- * Google-style: small helpers, explicit transformation.
14
- */
15
- function normalize(t) {
16
- return {
17
- id: t.id,
18
- name: t.name,
19
- description: t.description,
20
- type: t.type ?? t._type,
21
- config: t.config ?? t._config,
22
- generateIntegrationCode: t.generateIntegrationCode,
23
- category: t.category,
24
- dependencies: t.dependencies,
25
- usage: t.usage,
26
- };
27
- }
28
-
29
- function addBackCompat(template) {
30
- if (!Object.getOwnPropertyDescriptor(template, "_type")) {
31
- Object.defineProperty(template, "_type", {
32
- get() {
33
- return template.type;
34
- },
35
- });
36
- }
37
- if (!Object.getOwnPropertyDescriptor(template, "_config")) {
38
- Object.defineProperty(template, "_config", {
39
- get() {
40
- return template.config;
41
- },
42
- });
43
- }
44
- return template;
45
- }
46
-
47
- class IntegrationTemplates {
48
- constructor() {
49
- this.templates = new Map();
50
- this.categories = new Map();
51
-
52
- this.initializeTemplates();
53
- }
54
-
55
- /**
56
- * Initialize built-in integration templates
57
- */
58
- initializeTemplates() {
59
- // Data Source Templates
60
- this.addTemplate("confluence", {
61
- name: "Atlassian Confluence",
62
- category: "data-sources",
63
- description: "Connect to Confluence spaces and pages",
64
- type: "loader",
65
- config: {
66
- baseUrl: {
67
- _type: "string",
68
- required: true,
69
- description: "Confluence base URL",
70
- },
71
- username: {
72
- _type: "string",
73
- required: true,
74
- description: "Username or email",
75
- },
76
- apiToken: {
77
- _type: "string",
78
- required: true,
79
- secret: true,
80
- description: "API token",
81
- },
82
- spaceKey: {
83
- _type: "string",
84
- required: false,
85
- description: "Specific space key (optional)",
86
- },
87
- pageLimit: {
88
- _type: "number",
89
- default: 100,
90
- description: "Maximum pages to fetch",
91
- },
92
- },
93
- dependencies: ["axios"],
94
- usage: "Load documents from Confluence spaces and pages",
95
- });
96
-
97
- this.addTemplate("notion", {
98
- name: "Notion Database",
99
- category: "data-sources",
100
- description: "Connect to Notion databases and pages",
101
- type: "loader",
102
- config: {
103
- apiToken: {
104
- _type: "string",
105
- required: true,
106
- secret: true,
107
- description: "Notion API token",
108
- },
109
- databaseId: {
110
- _type: "string",
111
- required: true,
112
- description: "Database ID to query",
113
- },
114
- filter: {
115
- _type: "object",
116
- required: false,
117
- description: "Query filter (optional)",
118
- },
119
- pageSize: {
120
- _type: "number",
121
- default: 100,
122
- description: "Results per page",
123
- },
124
- },
125
- dependencies: ["@notionhq/client"],
126
- usage: "Load documents from Notion databases",
127
- });
128
-
129
- this.addTemplate("sharepoint", {
130
- name: "Microsoft SharePoint",
131
- category: "data-sources",
132
- description: "Connect to SharePoint document libraries",
133
- type: "loader",
134
- config: {
135
- siteUrl: {
136
- _type: "string",
137
- required: true,
138
- description: "SharePoint site URL",
139
- },
140
- clientId: {
141
- _type: "string",
142
- required: true,
143
- description: "Azure app client ID",
144
- },
145
- clientSecret: {
146
- _type: "string",
147
- required: true,
148
- secret: true,
149
- description: "Azure app client secret",
150
- },
151
- tenantId: {
152
- _type: "string",
153
- required: true,
154
- description: "Azure tenant ID",
155
- },
156
- libraryName: {
157
- _type: "string",
158
- default: "Documents",
159
- description: "Document library name",
160
- },
161
- },
162
- dependencies: ["@microsoft/microsoft-graph-client", "@azure/identity"],
163
- usage: "Load documents from SharePoint libraries",
164
- });
165
-
166
- // Vector Database Templates
167
- this.addTemplate("pinecone", {
168
- name: "Pinecone Vector Database",
169
- category: "vector-stores",
170
- description: "Connect to Pinecone for vector storage and retrieval",
171
- type: "retriever",
172
- config: {
173
- apiKey: {
174
- _type: "string",
175
- required: true,
176
- secret: true,
177
- description: "Pinecone API key",
178
- },
179
- environment: {
180
- _type: "string",
181
- required: true,
182
- description: "Pinecone environment",
183
- },
184
- indexName: {
185
- _type: "string",
186
- required: true,
187
- description: "Index name",
188
- },
189
- topK: {
190
- _type: "number",
191
- default: 5,
192
- description: "Number of results to return",
193
- },
194
- includeMetadata: {
195
- _type: "boolean",
196
- default: true,
197
- description: "Include metadata in results",
198
- },
199
- },
200
- dependencies: ["@pinecone-database/pinecone"],
201
- usage: "Store and retrieve vectors from Pinecone",
202
- });
203
-
204
- this.addTemplate("weaviate", {
205
- name: "Weaviate Vector Database",
206
- category: "vector-stores",
207
- description: "Connect to Weaviate for semantic search",
208
- type: "retriever",
209
- config: {
210
- host: {
211
- _type: "string",
212
- required: true,
213
- description: "Weaviate host URL",
214
- },
215
- apiKey: {
216
- _type: "string",
217
- required: false,
218
- secret: true,
219
- description: "API key (if required)",
220
- },
221
- className: {
222
- _type: "string",
223
- required: true,
224
- description: "Weaviate class name",
225
- },
226
- limit: {
227
- _type: "number",
228
- default: 5,
229
- description: "Number of results to return",
230
- },
231
- },
232
- dependencies: ["weaviate-ts-client"],
233
- usage: "Semantic search with Weaviate",
234
- });
235
-
236
- // LLM Provider Templates
237
- this.addTemplate("openai-gpt4", {
238
- name: "OpenAI GPT-4",
239
- category: "llm-providers",
240
- description: "OpenAI GPT-4 language model integration",
241
- type: "llm",
242
- config: {
243
- apiKey: {
244
- _type: "string",
245
- required: true,
246
- secret: true,
247
- description: "OpenAI API key",
248
- },
249
- model: { _type: "string", default: "gpt-4", description: "Model name" },
250
- temperature: {
251
- _type: "number",
252
- default: 0.7,
253
- description: "Sampling temperature",
254
- },
255
- maxTokens: {
256
- _type: "number",
257
- default: 1000,
258
- description: "Maximum tokens to generate",
259
- },
260
- systemPrompt: {
261
- _type: "string",
262
- required: false,
263
- description: "System prompt",
264
- },
265
- },
266
- dependencies: ["openai"],
267
- usage: "Generate responses using OpenAI GPT-4",
268
- });
269
-
270
- this.addTemplate("anthropic-claude", {
271
- name: "Anthropic Claude",
272
- category: "llm-providers",
273
- description: "Anthropic Claude language model integration",
274
- type: "llm",
275
- config: {
276
- apiKey: {
277
- _type: "string",
278
- required: true,
279
- secret: true,
280
- description: "Anthropic API key",
281
- },
282
- model: {
283
- _type: "string",
284
- default: "claude-3-sonnet-20240229",
285
- description: "Model name",
286
- },
287
- maxTokens: {
288
- _type: "number",
289
- default: 1000,
290
- description: "Maximum tokens to generate",
291
- },
292
- systemPrompt: {
293
- _type: "string",
294
- required: false,
295
- description: "System prompt",
296
- },
297
- },
298
- dependencies: ["@anthropic-ai/sdk"],
299
- usage: "Generate responses using Anthropic Claude",
300
- });
301
-
302
- // Embedding Provider Templates
303
- this.addTemplate("openai-embeddings", {
304
- name: "OpenAI Embeddings",
305
- category: "embedding-providers",
306
- description: "OpenAI text embedding models",
307
- type: "embedder",
308
- config: {
309
- apiKey: {
310
- _type: "string",
311
- required: true,
312
- secret: true,
313
- description: "OpenAI API key",
314
- },
315
- model: {
316
- _type: "string",
317
- default: "text-embedding-3-small",
318
- description: "Embedding model",
319
- },
320
- batchSize: {
321
- _type: "number",
322
- default: 100,
323
- description: "Batch size for processing",
324
- },
325
- },
326
- dependencies: ["openai"],
327
- usage: "Generate text embeddings using OpenAI",
328
- });
329
-
330
- // Monitoring & Analytics Templates
331
- this.addTemplate("datadog", {
332
- name: "Datadog Monitoring",
333
- category: "monitoring",
334
- description: "Send metrics and logs to Datadog",
335
- type: "monitor",
336
- config: {
337
- apiKey: {
338
- _type: "string",
339
- required: true,
340
- secret: true,
341
- description: "Datadog API key",
342
- },
343
- site: {
344
- _type: "string",
345
- default: "datadoghq.com",
346
- description: "Datadog site",
347
- },
348
- service: {
349
- _type: "string",
350
- default: "rag-pipeline",
351
- description: "Service name",
352
- },
353
- environment: {
354
- _type: "string",
355
- default: "production",
356
- description: "Environment",
357
- },
358
- },
359
- dependencies: ["node-statsd", "axios"],
360
- usage: "Monitor pipeline performance with Datadog",
361
- });
362
-
363
- // Initialize categories
364
- this.categories.set("data-sources", {
365
- name: "Data Sources",
366
- description:
367
- "Connectors for various data sources and content management systems",
368
- });
369
-
370
- this.categories.set("vector-stores", {
371
- name: "Vector Databases",
372
- description: "Vector database integrations for semantic search",
373
- });
374
-
375
- this.categories.set("llm-providers", {
376
- name: "LLM Providers",
377
- description: "Language model provider integrations",
378
- });
379
-
380
- this.categories.set("embedding-providers", {
381
- name: "Embedding Providers",
382
- description: "Text embedding service integrations",
383
- });
384
-
385
- this.categories.set("monitoring", {
386
- name: "Monitoring & Analytics",
387
- description: "Monitoring, logging, and analytics integrations",
388
- });
389
- }
390
-
391
- /**
392
- * Add a new template
393
- */
394
- addTemplate(id, template) {
395
- this.templates.set(id, {
396
- id,
397
- ...template,
398
- created: new Date().toISOString(),
399
- });
400
- }
401
-
402
- /**
403
- * Get template by ID
404
- */
405
- getTemplate(id) {
406
- const t = this.templates.get(id);
407
- return t ? addBackCompat(normalize(t)) : undefined;
408
- }
409
-
410
- /**
411
- * Get all templates
412
- */
413
- getAllTemplates() {
414
- return Array.from(this.templates.values());
415
- }
416
-
417
- /**
418
- * Get templates by category
419
- */
420
- getTemplatesByCategory(category) {
421
- return Array.from(this.templates.values()).filter(
422
- (template) => template.category === category,
423
- );
424
- }
425
-
426
- /**
427
- * Get templates by type
428
- */
429
- getTemplatesByType(type) {
430
- return Array.from(this.templates.values())
431
- .filter((t) => (t.type ?? t._type) === type)
432
- .map((t) => addBackCompat(normalize(t)));
433
- }
434
-
435
- /**
436
- * Search templates
437
- */
438
- searchTemplates(query) {
439
- const searchTerm = query.toLowerCase();
440
- return Array.from(this.templates.values()).filter(
441
- (template) =>
442
- template.name.toLowerCase().includes(searchTerm) ||
443
- template.description.toLowerCase().includes(searchTerm) ||
444
- template.category.toLowerCase().includes(searchTerm),
445
- );
446
- }
447
-
448
- /**
449
- * Generate integration code from template
450
- */
451
- generateIntegration(templateId, userConfig = {}) {
452
- const template = this.templates.get(templateId);
453
- if (!template) {
454
- throw new Error(`Template ${templateId} not found`);
455
- }
456
-
457
- // Validate required config
458
- const missingRequired = [];
459
- Object.entries(template.config).forEach(([key, configDef]) => {
460
- if (configDef.required && !userConfig[key]) {
461
- missingRequired.push(key);
462
- }
463
- });
464
-
465
- if (missingRequired.length > 0) {
466
- throw new Error(
467
- `Missing required configuration: ${missingRequired.join(", ")}`,
468
- );
469
- }
470
-
471
- // Merge with defaults
472
- const finalConfig = {};
473
- Object.entries(template.config).forEach(([key, configDef]) => {
474
- finalConfig[key] =
475
- userConfig[key] !== undefined ? userConfig[key] : configDef.default;
476
- });
477
-
478
- return {
479
- name: template.name,
480
- type: template.type,
481
- config: finalConfig,
482
- dependencies: template.dependencies || [],
483
- usage: template.usage,
484
- setupInstructions: this.generateSetupInstructions(template, finalConfig),
485
- };
486
- }
487
-
488
- /**
489
- * Generate setup instructions
490
- */
491
- generateSetupInstructions(template, _config) {
492
- const instructions = [];
493
-
494
- instructions.push(`# ${template.name} Integration Setup`);
495
- instructions.push("");
496
- instructions.push("## 1. Install Dependencies");
497
- instructions.push("```bash");
498
- instructions.push(`npm install ${template.dependencies.join(" ")}`);
499
- instructions.push("```");
500
- instructions.push("");
501
- instructions.push("## 2. Configuration");
502
- instructions.push("```javascript");
503
- instructions.push(`const _config = ${JSON.stringify(_config, null, 2)};`);
504
- instructions.push("```");
505
- instructions.push("");
506
- instructions.push("## 3. Usage");
507
- instructions.push(`${template.usage}`);
508
-
509
- return instructions.join("\n");
510
- }
511
-
512
- /**
513
- * Get all categories
514
- */
515
- getAllCategories() {
516
- return Array.from(this.categories.values());
517
- }
518
-
519
- /**
520
- * Export template as file
521
- */
522
- async exportTemplate(templateId, outputDir = "./templates") {
523
- const template = this.templates.get(templateId);
524
- if (!template) {
525
- throw new Error(`Template ${templateId} not found`);
526
- }
527
-
528
- await fs.mkdir(outputDir, { recursive: true });
529
-
530
- const _filePath = path.join(outputDir, `${templateId}.json`);
531
- await fs.writeFile(_filePath, JSON.stringify(template, null, 2));
532
-
533
- return _filePath;
534
- }
535
-
536
- /**
537
- * Import template from file
538
- */
539
- async importTemplate(_filePath) {
540
- const data = await fs.readFile(_filePath, "utf8");
541
- const template = JSON.parse(data);
542
-
543
- if (!template.id) {
544
- throw new Error("Template must have an id field");
545
- }
546
-
547
- this.addTemplate(template.id, template);
548
- return template.id;
549
- }
550
-
551
- /**
552
- * Get template statistics
553
- */
554
- getStatistics() {
555
- const templates = Array.from(this.templates.values());
556
- const categories = {};
557
- const types = {};
558
-
559
- templates.forEach((template) => {
560
- categories[template.category] = (categories[template.category] || 0) + 1;
561
- types[template.type] = (types[template.type] || 0) + 1;
562
- });
563
-
564
- return {
565
- totalTemplates: templates.length,
566
- categoryCounts: categories,
567
- typeCounts: types,
568
- totalCategories: this.categories.size,
569
- };
570
- }
571
-
572
- /**
573
- * Get template statistics (alias for tests)
574
- */
575
- getTemplateStats() {
576
- return this.getStatistics();
577
- }
578
- }
579
-
580
- // Create a singleton instance for module-level exports
581
- const defaultInstance = new IntegrationTemplates();
582
-
583
- // Module-level _config object with templates
584
- const _config = {
585
- llm: {
586
- "openai-gpt4": {
587
- name: "OpenAI GPT-4",
588
- category: "llm-providers",
589
- description: "OpenAI GPT-4 language model integration",
590
- type: "llm",
591
- config: {
592
- apiKey: {
593
- _type: "string",
594
- required: true,
595
- secret: true,
596
- description: "OpenAI API key",
597
- },
598
- model: { _type: "string", default: "gpt-4", description: "Model name" },
599
- temperature: {
600
- _type: "number",
601
- default: 0.7,
602
- description: "Sampling temperature",
603
- },
604
- maxTokens: {
605
- _type: "number",
606
- default: 1000,
607
- description: "Maximum tokens to generate",
608
- },
609
- },
610
- dependencies: ["openai"],
611
- usage: "Generate responses using OpenAI GPT-4",
612
- },
613
- },
614
- loader: {
615
- confluence: {
616
- name: "Atlassian Confluence",
617
- category: "data-sources",
618
- description: "Connect to Confluence spaces and pages",
619
- type: "loader",
620
- config: {
621
- baseUrl: {
622
- _type: "string",
623
- required: true,
624
- description: "Confluence base URL",
625
- },
626
- username: {
627
- _type: "string",
628
- required: true,
629
- description: "Username or email",
630
- },
631
- apiToken: {
632
- _type: "string",
633
- required: true,
634
- secret: true,
635
- description: "API token",
636
- },
637
- },
638
- dependencies: ["axios"],
639
- usage: "Load documents from Confluence spaces and pages",
640
- },
641
- },
642
- };
643
-
644
- // Module-level functions
645
- function generateIntegration(templateKey, userConfig = {}) {
646
- return defaultInstance.generateIntegration(templateKey, userConfig);
647
- }
648
-
649
- function getTemplateStats() {
650
- return defaultInstance.getTemplateStats();
651
- }
652
-
653
- function addTemplate(key, def) {
654
- return defaultInstance.addTemplate(key, def);
655
- }
656
-
657
- // Export both class and module-level API
658
- module.exports = IntegrationTemplates;
659
- module.exports._config = _config;
660
- module.exports.generateIntegration = generateIntegration;
661
- module.exports.getTemplateStats = getTemplateStats;
662
- module.exports.addTemplate = addTemplate;