cogniscrape 1.0.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 (159) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +308 -0
  3. package/dist/graphs/AbstractGraph.d.ts +27 -0
  4. package/dist/graphs/AbstractGraph.d.ts.map +1 -0
  5. package/dist/graphs/AbstractGraph.js +44 -0
  6. package/dist/graphs/AbstractGraph.js.map +1 -0
  7. package/dist/graphs/BaseGraph.d.ts +30 -0
  8. package/dist/graphs/BaseGraph.d.ts.map +1 -0
  9. package/dist/graphs/BaseGraph.js +62 -0
  10. package/dist/graphs/BaseGraph.js.map +1 -0
  11. package/dist/graphs/CSVScraperGraph.d.ts +16 -0
  12. package/dist/graphs/CSVScraperGraph.d.ts.map +1 -0
  13. package/dist/graphs/CSVScraperGraph.js +84 -0
  14. package/dist/graphs/CSVScraperGraph.js.map +1 -0
  15. package/dist/graphs/DepthSearchGraph.d.ts +14 -0
  16. package/dist/graphs/DepthSearchGraph.d.ts.map +1 -0
  17. package/dist/graphs/DepthSearchGraph.js +45 -0
  18. package/dist/graphs/DepthSearchGraph.js.map +1 -0
  19. package/dist/graphs/JSONScraperGraph.d.ts +18 -0
  20. package/dist/graphs/JSONScraperGraph.d.ts.map +1 -0
  21. package/dist/graphs/JSONScraperGraph.js +100 -0
  22. package/dist/graphs/JSONScraperGraph.js.map +1 -0
  23. package/dist/graphs/SearchGraph.d.ts +14 -0
  24. package/dist/graphs/SearchGraph.d.ts.map +1 -0
  25. package/dist/graphs/SearchGraph.js +42 -0
  26. package/dist/graphs/SearchGraph.js.map +1 -0
  27. package/dist/graphs/SmartScraperGraph.d.ts +16 -0
  28. package/dist/graphs/SmartScraperGraph.d.ts.map +1 -0
  29. package/dist/graphs/SmartScraperGraph.js +57 -0
  30. package/dist/graphs/SmartScraperGraph.js.map +1 -0
  31. package/dist/graphs/SmartScraperMultiGraph.d.ts +17 -0
  32. package/dist/graphs/SmartScraperMultiGraph.d.ts.map +1 -0
  33. package/dist/graphs/SmartScraperMultiGraph.js +71 -0
  34. package/dist/graphs/SmartScraperMultiGraph.js.map +1 -0
  35. package/dist/graphs/index.d.ts +12 -0
  36. package/dist/graphs/index.d.ts.map +1 -0
  37. package/dist/graphs/index.js +23 -0
  38. package/dist/graphs/index.js.map +1 -0
  39. package/dist/index.d.ts +10 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +43 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/models/GeminiModel.d.ts +16 -0
  44. package/dist/models/GeminiModel.d.ts.map +1 -0
  45. package/dist/models/GeminiModel.js +127 -0
  46. package/dist/models/GeminiModel.js.map +1 -0
  47. package/dist/models/OllamaModel.d.ts +15 -0
  48. package/dist/models/OllamaModel.d.ts.map +1 -0
  49. package/dist/models/OllamaModel.js +134 -0
  50. package/dist/models/OllamaModel.js.map +1 -0
  51. package/dist/models/index.d.ts +8 -0
  52. package/dist/models/index.d.ts.map +1 -0
  53. package/dist/models/index.js +24 -0
  54. package/dist/models/index.js.map +1 -0
  55. package/dist/nodes/BaseNode.d.ts +37 -0
  56. package/dist/nodes/BaseNode.d.ts.map +1 -0
  57. package/dist/nodes/BaseNode.js +116 -0
  58. package/dist/nodes/BaseNode.js.map +1 -0
  59. package/dist/nodes/CSVExporterNode.d.ts +16 -0
  60. package/dist/nodes/CSVExporterNode.d.ts.map +1 -0
  61. package/dist/nodes/CSVExporterNode.js +85 -0
  62. package/dist/nodes/CSVExporterNode.js.map +1 -0
  63. package/dist/nodes/ConditionalNode.d.ts +16 -0
  64. package/dist/nodes/ConditionalNode.d.ts.map +1 -0
  65. package/dist/nodes/ConditionalNode.js +68 -0
  66. package/dist/nodes/ConditionalNode.js.map +1 -0
  67. package/dist/nodes/FetchNode.d.ts +15 -0
  68. package/dist/nodes/FetchNode.d.ts.map +1 -0
  69. package/dist/nodes/FetchNode.js +182 -0
  70. package/dist/nodes/FetchNode.js.map +1 -0
  71. package/dist/nodes/GenerateAnswerNode.d.ts +14 -0
  72. package/dist/nodes/GenerateAnswerNode.d.ts.map +1 -0
  73. package/dist/nodes/GenerateAnswerNode.js +86 -0
  74. package/dist/nodes/GenerateAnswerNode.js.map +1 -0
  75. package/dist/nodes/JSONExporterNode.d.ts +16 -0
  76. package/dist/nodes/JSONExporterNode.d.ts.map +1 -0
  77. package/dist/nodes/JSONExporterNode.js +42 -0
  78. package/dist/nodes/JSONExporterNode.js.map +1 -0
  79. package/dist/nodes/MergeNode.d.ts +10 -0
  80. package/dist/nodes/MergeNode.d.ts.map +1 -0
  81. package/dist/nodes/MergeNode.js +51 -0
  82. package/dist/nodes/MergeNode.js.map +1 -0
  83. package/dist/nodes/PDFScraperNode.d.ts +10 -0
  84. package/dist/nodes/PDFScraperNode.d.ts.map +1 -0
  85. package/dist/nodes/PDFScraperNode.js +80 -0
  86. package/dist/nodes/PDFScraperNode.js.map +1 -0
  87. package/dist/nodes/ParseNode.d.ts +12 -0
  88. package/dist/nodes/ParseNode.d.ts.map +1 -0
  89. package/dist/nodes/ParseNode.js +44 -0
  90. package/dist/nodes/ParseNode.js.map +1 -0
  91. package/dist/nodes/RAGNode.d.ts +13 -0
  92. package/dist/nodes/RAGNode.d.ts.map +1 -0
  93. package/dist/nodes/RAGNode.js +64 -0
  94. package/dist/nodes/RAGNode.js.map +1 -0
  95. package/dist/nodes/ReasoningNode.d.ts +10 -0
  96. package/dist/nodes/ReasoningNode.d.ts.map +1 -0
  97. package/dist/nodes/ReasoningNode.js +51 -0
  98. package/dist/nodes/ReasoningNode.js.map +1 -0
  99. package/dist/nodes/SearchNode.d.ts +13 -0
  100. package/dist/nodes/SearchNode.d.ts.map +1 -0
  101. package/dist/nodes/SearchNode.js +81 -0
  102. package/dist/nodes/SearchNode.js.map +1 -0
  103. package/dist/nodes/XMLScraperNode.d.ts +11 -0
  104. package/dist/nodes/XMLScraperNode.d.ts.map +1 -0
  105. package/dist/nodes/XMLScraperNode.js +99 -0
  106. package/dist/nodes/XMLScraperNode.js.map +1 -0
  107. package/dist/nodes/index.d.ts +17 -0
  108. package/dist/nodes/index.d.ts.map +1 -0
  109. package/dist/nodes/index.js +33 -0
  110. package/dist/nodes/index.js.map +1 -0
  111. package/dist/prompts/index.d.ts +12 -0
  112. package/dist/prompts/index.d.ts.map +1 -0
  113. package/dist/prompts/index.js +117 -0
  114. package/dist/prompts/index.js.map +1 -0
  115. package/dist/types.d.ts +106 -0
  116. package/dist/types.d.ts.map +1 -0
  117. package/dist/types.js +13 -0
  118. package/dist/types.js.map +1 -0
  119. package/dist/utils/cache.d.ts +28 -0
  120. package/dist/utils/cache.d.ts.map +1 -0
  121. package/dist/utils/cache.js +72 -0
  122. package/dist/utils/cache.js.map +1 -0
  123. package/dist/utils/chunking.d.ts +8 -0
  124. package/dist/utils/chunking.d.ts.map +1 -0
  125. package/dist/utils/chunking.js +51 -0
  126. package/dist/utils/chunking.js.map +1 -0
  127. package/dist/utils/cleanupHtml.d.ts +7 -0
  128. package/dist/utils/cleanupHtml.d.ts.map +1 -0
  129. package/dist/utils/cleanupHtml.js +81 -0
  130. package/dist/utils/cleanupHtml.js.map +1 -0
  131. package/dist/utils/convertToMarkdown.d.ts +6 -0
  132. package/dist/utils/convertToMarkdown.d.ts.map +1 -0
  133. package/dist/utils/convertToMarkdown.js +61 -0
  134. package/dist/utils/convertToMarkdown.js.map +1 -0
  135. package/dist/utils/index.d.ts +13 -0
  136. package/dist/utils/index.d.ts.map +1 -0
  137. package/dist/utils/index.js +40 -0
  138. package/dist/utils/index.js.map +1 -0
  139. package/dist/utils/logger.d.ts +14 -0
  140. package/dist/utils/logger.d.ts.map +1 -0
  141. package/dist/utils/logger.js +35 -0
  142. package/dist/utils/logger.js.map +1 -0
  143. package/dist/utils/proxy.d.ts +30 -0
  144. package/dist/utils/proxy.d.ts.map +1 -0
  145. package/dist/utils/proxy.js +62 -0
  146. package/dist/utils/proxy.js.map +1 -0
  147. package/dist/utils/rateLimiter.d.ts +24 -0
  148. package/dist/utils/rateLimiter.d.ts.map +1 -0
  149. package/dist/utils/rateLimiter.js +61 -0
  150. package/dist/utils/rateLimiter.js.map +1 -0
  151. package/dist/utils/retry.d.ts +17 -0
  152. package/dist/utils/retry.d.ts.map +1 -0
  153. package/dist/utils/retry.js +43 -0
  154. package/dist/utils/retry.js.map +1 -0
  155. package/dist/utils/schemaValidator.d.ts +69 -0
  156. package/dist/utils/schemaValidator.d.ts.map +1 -0
  157. package/dist/utils/schemaValidator.js +133 -0
  158. package/dist/utils/schemaValidator.js.map +1 -0
  159. package/package.json +64 -0
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ /**
3
+ * Google Gemini LLM Model Implementation
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.GeminiModel = void 0;
7
+ const generative_ai_1 = require("@google/generative-ai");
8
+ const types_1 = require("../types");
9
+ const retry_1 = require("../utils/retry");
10
+ const rateLimiter_1 = require("../utils/rateLimiter");
11
+ const cache_1 = require("../utils/cache");
12
+ class GeminiModel extends types_1.BaseLLM {
13
+ constructor(config) {
14
+ super(config);
15
+ if (!config.apiKey) {
16
+ throw new Error('Gemini API key is required. Set GEMINI_API_KEY environment variable or pass apiKey in config.');
17
+ }
18
+ this.genAI = new generative_ai_1.GoogleGenerativeAI(config.apiKey);
19
+ this.modelName = config.model || 'gemini-2.0-flash-exp';
20
+ }
21
+ async generate(prompt, systemPrompt) {
22
+ // Check cache first
23
+ const cacheKey = `gemini:${this.modelName}:${systemPrompt}:${prompt}`;
24
+ const cached = cache_1.cache.get(cacheKey);
25
+ if (cached) {
26
+ return cached;
27
+ }
28
+ // Rate limit requests
29
+ await rateLimiter_1.rateLimiter.wait();
30
+ // Retry with exponential backoff
31
+ const result = await (0, retry_1.retry)(async () => {
32
+ const model = this.genAI.getGenerativeModel({
33
+ model: this.modelName,
34
+ generationConfig: {
35
+ temperature: this.config.temperature ?? 0,
36
+ maxOutputTokens: this.config.maxTokens ?? 2048,
37
+ },
38
+ });
39
+ const fullPrompt = systemPrompt ? `${systemPrompt}\n\n${prompt}` : prompt;
40
+ const result = await model.generateContent(fullPrompt);
41
+ const response = await result.response;
42
+ return response.text();
43
+ }, {
44
+ maxRetries: 3,
45
+ initialDelay: 1000,
46
+ maxDelay: 10000,
47
+ backoffMultiplier: 2,
48
+ });
49
+ // Cache the result
50
+ cache_1.cache.set(cacheKey, result, 3600); // 1 hour TTL
51
+ return result;
52
+ }
53
+ async generateJson(prompt, systemPrompt) {
54
+ // Check cache first
55
+ const cacheKey = `gemini:json:${this.modelName}:${systemPrompt}:${prompt}`;
56
+ const cached = cache_1.cache.get(cacheKey);
57
+ if (cached) {
58
+ return cached;
59
+ }
60
+ // Rate limit requests
61
+ await rateLimiter_1.rateLimiter.wait();
62
+ // Retry with exponential backoff
63
+ const result = await (0, retry_1.retry)(async () => {
64
+ const model = this.genAI.getGenerativeModel({
65
+ model: this.modelName,
66
+ generationConfig: {
67
+ temperature: this.config.temperature ?? 0,
68
+ maxOutputTokens: this.config.maxTokens ?? 2048,
69
+ responseMimeType: "application/json",
70
+ },
71
+ });
72
+ const fullPrompt = `${systemPrompt || ''}\n\n${prompt}\n\nRespond with valid JSON only.`;
73
+ const result = await model.generateContent(fullPrompt);
74
+ const response = await result.response;
75
+ const text = response.text();
76
+ try {
77
+ return JSON.parse(text);
78
+ }
79
+ catch (parseError) {
80
+ // Try to extract JSON from response
81
+ const jsonMatch = text.match(/```json\s*([\s\S]*?)\s*```/) ||
82
+ text.match(/```\s*([\s\S]*?)\s*```/) ||
83
+ text.match(/\{[\s\S]*\}/);
84
+ if (jsonMatch) {
85
+ const jsonStr = jsonMatch[0].replace(/```json|```/g, '').trim();
86
+ return JSON.parse(jsonStr);
87
+ }
88
+ throw new Error(`Failed to parse JSON response: ${text}`);
89
+ }
90
+ }, {
91
+ maxRetries: 3,
92
+ initialDelay: 1000,
93
+ maxDelay: 10000,
94
+ backoffMultiplier: 2,
95
+ });
96
+ // Cache the result
97
+ cache_1.cache.set(cacheKey, result, 3600); // 1 hour TTL
98
+ return result;
99
+ }
100
+ async chat(messages) {
101
+ try {
102
+ const model = this.genAI.getGenerativeModel({
103
+ model: this.modelName,
104
+ generationConfig: {
105
+ temperature: this.config.temperature ?? 0,
106
+ maxOutputTokens: this.config.maxTokens ?? 2048,
107
+ },
108
+ });
109
+ // Convert messages to Gemini format
110
+ const chat = model.startChat({
111
+ history: messages.slice(0, -1).map(msg => ({
112
+ role: msg.role === 'user' ? 'user' : 'model',
113
+ parts: [{ text: msg.content }],
114
+ })),
115
+ });
116
+ const lastMessage = messages[messages.length - 1];
117
+ const result = await chat.sendMessage(lastMessage.content);
118
+ const response = await result.response;
119
+ return response.text();
120
+ }
121
+ catch (error) {
122
+ throw new Error(`Gemini chat error: ${error.message}`);
123
+ }
124
+ }
125
+ }
126
+ exports.GeminiModel = GeminiModel;
127
+ //# sourceMappingURL=GeminiModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeminiModel.js","sourceRoot":"","sources":["../../src/models/GeminiModel.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,yDAA2D;AAC3D,oCAA8C;AAC9C,0CAAuC;AACvC,sDAAmD;AACnD,0CAAuC;AAEvC,MAAa,WAAY,SAAQ,eAAO;IAItC,YAAY,MAAiB;QAC3B,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,+FAA+F,CAAC,CAAC;QACnH,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,kCAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,IAAI,sBAAsB,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,YAAqB;QAClD,oBAAoB;QACpB,MAAM,QAAQ,GAAG,UAAU,IAAI,CAAC,SAAS,IAAI,YAAY,IAAI,MAAM,EAAE,CAAC;QACtE,MAAM,MAAM,GAAG,aAAK,CAAC,GAAG,CAAS,QAAQ,CAAC,CAAC;QAC3C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,sBAAsB;QACtB,MAAM,yBAAW,CAAC,IAAI,EAAE,CAAC;QAEzB,iCAAiC;QACjC,MAAM,MAAM,GAAG,MAAM,IAAA,aAAK,EACxB,KAAK,IAAI,EAAE;YACT,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;gBAC1C,KAAK,EAAE,IAAI,CAAC,SAAS;gBACrB,gBAAgB,EAAE;oBAChB,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC;oBACzC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI;iBAC/C;aACF,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YAC1E,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;YAEvC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC,EACD;YACE,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,CAAC;SACrB,CACF,CAAC;QAEF,mBAAmB;QACnB,aAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa;QAEhD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,YAAqB;QACtD,oBAAoB;QACpB,MAAM,QAAQ,GAAG,eAAe,IAAI,CAAC,SAAS,IAAI,YAAY,IAAI,MAAM,EAAE,CAAC;QAC3E,MAAM,MAAM,GAAG,aAAK,CAAC,GAAG,CAAM,QAAQ,CAAC,CAAC;QACxC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,sBAAsB;QACtB,MAAM,yBAAW,CAAC,IAAI,EAAE,CAAC;QAEzB,iCAAiC;QACjC,MAAM,MAAM,GAAG,MAAM,IAAA,aAAK,EACxB,KAAK,IAAI,EAAE;YACT,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;gBAC1C,KAAK,EAAE,IAAI,CAAC,SAAS;gBACrB,gBAAgB,EAAE;oBAChB,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC;oBACzC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI;oBAC9C,gBAAgB,EAAE,kBAAkB;iBACrC;aACF,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,GAAG,YAAY,IAAI,EAAE,OAAO,MAAM,mCAAmC,CAAC;YACzF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;YACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAE7B,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,oCAAoC;gBACpC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC;oBACzC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC;oBACpC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBAE3C,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;oBAChE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC7B,CAAC;gBAED,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC,EACD;YACE,UAAU,EAAE,CAAC;YACb,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,KAAK;YACf,iBAAiB,EAAE,CAAC;SACrB,CACF,CAAC;QAEF,mBAAmB;QACnB,aAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa;QAEhD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAkD;QAC3D,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;gBAC1C,KAAK,EAAE,IAAI,CAAC,SAAS;gBACrB,gBAAgB,EAAE;oBAChB,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC;oBACzC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI;iBAC/C;aACF,CAAC,CAAC;YAEH,oCAAoC;YACpC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC;gBAC3B,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACzC,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;oBAC5C,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;iBAC/B,CAAC,CAAC;aACJ,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC3D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;YAEvC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CACF;AA9ID,kCA8IC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Ollama LLM Model Implementation
3
+ */
4
+ import { BaseLLM, LLMConfig } from '../types';
5
+ export declare class OllamaModel extends BaseLLM {
6
+ private baseUrl;
7
+ constructor(config: LLMConfig);
8
+ generate(prompt: string, systemPrompt?: string): Promise<string>;
9
+ generateJson(prompt: string, systemPrompt?: string): Promise<any>;
10
+ chat(messages: Array<{
11
+ role: string;
12
+ content: string;
13
+ }>): Promise<string>;
14
+ }
15
+ //# sourceMappingURL=OllamaModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OllamaModel.d.ts","sourceRoot":"","sources":["../../src/models/OllamaModel.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAe,MAAM,UAAU,CAAC;AAK3D,qBAAa,WAAY,SAAQ,OAAO;IACtC,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,SAAS;IAKvB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiDhE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAmEjE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;CAkChF"}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ /**
3
+ * Ollama LLM Model Implementation
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.OllamaModel = void 0;
10
+ const axios_1 = __importDefault(require("axios"));
11
+ const types_1 = require("../types");
12
+ const retry_1 = require("../utils/retry");
13
+ const rateLimiter_1 = require("../utils/rateLimiter");
14
+ const cache_1 = require("../utils/cache");
15
+ class OllamaModel extends types_1.BaseLLM {
16
+ constructor(config) {
17
+ super(config);
18
+ this.baseUrl = config.baseUrl || 'http://localhost:11434';
19
+ }
20
+ async generate(prompt, systemPrompt) {
21
+ // Check cache first
22
+ const cacheKey = `ollama:${this.config.model}:${systemPrompt}:${prompt}`;
23
+ const cached = cache_1.cache.get(cacheKey);
24
+ if (cached) {
25
+ return cached;
26
+ }
27
+ // Rate limit requests
28
+ await rateLimiter_1.rateLimiter.wait();
29
+ // Retry with exponential backoff
30
+ const result = await (0, retry_1.retry)(async () => {
31
+ const response = await axios_1.default.post(`${this.baseUrl}/api/generate`, {
32
+ model: this.config.model,
33
+ prompt: systemPrompt ? `${systemPrompt}\n\n${prompt}` : prompt,
34
+ stream: false,
35
+ options: {
36
+ temperature: this.config.temperature ?? 0,
37
+ num_predict: this.config.maxTokens ?? 2048,
38
+ },
39
+ }, {
40
+ headers: {
41
+ 'Content-Type': 'application/json',
42
+ },
43
+ timeout: 120000, // 2 minutes
44
+ });
45
+ return response.data.response;
46
+ }, {
47
+ maxRetries: 3,
48
+ initialDelay: 1000,
49
+ maxDelay: 10000,
50
+ backoffMultiplier: 2,
51
+ });
52
+ // Cache the result
53
+ cache_1.cache.set(cacheKey, result, 3600); // 1 hour TTL
54
+ return result;
55
+ }
56
+ async generateJson(prompt, systemPrompt) {
57
+ // Check cache first
58
+ const cacheKey = `ollama:json:${this.config.model}:${systemPrompt}:${prompt}`;
59
+ const cached = cache_1.cache.get(cacheKey);
60
+ if (cached) {
61
+ return cached;
62
+ }
63
+ // Rate limit requests
64
+ await rateLimiter_1.rateLimiter.wait();
65
+ const fullPrompt = `${systemPrompt || ''}\n\n${prompt}\n\nRespond with valid JSON only.`;
66
+ // Retry with exponential backoff
67
+ const result = await (0, retry_1.retry)(async () => {
68
+ const response = await axios_1.default.post(`${this.baseUrl}/api/generate`, {
69
+ model: this.config.model,
70
+ prompt: fullPrompt,
71
+ format: 'json',
72
+ stream: false,
73
+ options: {
74
+ temperature: this.config.temperature ?? 0,
75
+ num_predict: this.config.maxTokens ?? 2048,
76
+ },
77
+ }, {
78
+ headers: {
79
+ 'Content-Type': 'application/json',
80
+ },
81
+ timeout: 120000,
82
+ });
83
+ const responseText = response.data.response;
84
+ // Try to parse JSON
85
+ try {
86
+ return JSON.parse(responseText);
87
+ }
88
+ catch (parseError) {
89
+ // If response is not valid JSON, try to extract JSON from markdown code blocks
90
+ const jsonMatch = responseText.match(/```json\s*([\s\S]*?)\s*```/) ||
91
+ responseText.match(/```\s*([\s\S]*?)\s*```/);
92
+ if (jsonMatch) {
93
+ return JSON.parse(jsonMatch[1]);
94
+ }
95
+ throw new Error('Failed to parse JSON response from Ollama');
96
+ }
97
+ }, {
98
+ maxRetries: 3,
99
+ initialDelay: 1000,
100
+ maxDelay: 10000,
101
+ backoffMultiplier: 2,
102
+ });
103
+ // Cache the result
104
+ cache_1.cache.set(cacheKey, result, 3600); // 1 hour TTL
105
+ return result;
106
+ }
107
+ async chat(messages) {
108
+ await rateLimiter_1.rateLimiter.wait();
109
+ return await (0, retry_1.retry)(async () => {
110
+ const response = await axios_1.default.post(`${this.baseUrl}/api/chat`, {
111
+ model: this.config.model,
112
+ messages: messages,
113
+ stream: false,
114
+ options: {
115
+ temperature: this.config.temperature ?? 0,
116
+ num_predict: this.config.maxTokens ?? 2048,
117
+ },
118
+ }, {
119
+ headers: {
120
+ 'Content-Type': 'application/json',
121
+ },
122
+ timeout: 120000,
123
+ });
124
+ return response.data.message.content;
125
+ }, {
126
+ maxRetries: 3,
127
+ initialDelay: 1000,
128
+ maxDelay: 10000,
129
+ backoffMultiplier: 2,
130
+ });
131
+ }
132
+ }
133
+ exports.OllamaModel = OllamaModel;
134
+ //# sourceMappingURL=OllamaModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OllamaModel.js","sourceRoot":"","sources":["../../src/models/OllamaModel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Model factory for creating LLM instances
3
+ */
4
+ import { BaseLLM, LLMConfig } from '../types';
5
+ export declare function createLLM(config: LLMConfig): BaseLLM;
6
+ export { OllamaModel } from './OllamaModel';
7
+ export { GeminiModel } from './GeminiModel';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAI9C,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CASpD;AAED,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * Model factory for creating LLM instances
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.GeminiModel = exports.OllamaModel = void 0;
7
+ exports.createLLM = createLLM;
8
+ const OllamaModel_1 = require("./OllamaModel");
9
+ const GeminiModel_1 = require("./GeminiModel");
10
+ function createLLM(config) {
11
+ switch (config.provider) {
12
+ case 'ollama':
13
+ return new OllamaModel_1.OllamaModel(config);
14
+ case 'gemini':
15
+ return new GeminiModel_1.GeminiModel(config);
16
+ default:
17
+ throw new Error(`Unsupported LLM provider: ${config.provider}`);
18
+ }
19
+ }
20
+ var OllamaModel_2 = require("./OllamaModel");
21
+ Object.defineProperty(exports, "OllamaModel", { enumerable: true, get: function () { return OllamaModel_2.OllamaModel; } });
22
+ var GeminiModel_2 = require("./GeminiModel");
23
+ Object.defineProperty(exports, "GeminiModel", { enumerable: true, get: function () { return GeminiModel_2.GeminiModel; } });
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAMH,8BASC;AAZD,+CAA4C;AAC5C,+CAA4C;AAE5C,SAAgB,SAAS,CAAC,MAAiB;IACzC,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,QAAQ;YACX,OAAO,IAAI,yBAAW,CAAC,MAAM,CAAC,CAAC;QACjC,KAAK,QAAQ;YACX,OAAO,IAAI,yBAAW,CAAC,MAAM,CAAC,CAAC;QACjC;YACE,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AACpB,6CAA4C;AAAnC,0GAAA,WAAW,OAAA"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Base Node class for the graph pipeline
3
+ */
4
+ import { GraphState, NodeConfig, BaseLLM } from '../types';
5
+ import { Logger } from '../utils/logger';
6
+ export declare abstract class BaseNode {
7
+ protected nodeName: string;
8
+ protected nodeType: string;
9
+ protected input: string;
10
+ protected output: string[];
11
+ protected minInputLen: number;
12
+ protected config: NodeConfig;
13
+ protected logger: Logger;
14
+ protected llmModel?: BaseLLM;
15
+ constructor(nodeName: string, nodeType: string, input: string, output: string[], minInputLen?: number, config?: NodeConfig);
16
+ /**
17
+ * Get input keys from the input expression
18
+ */
19
+ protected getInputKeys(state: GraphState): string[];
20
+ /**
21
+ * Validate that required inputs are present in state
22
+ */
23
+ protected validateInputs(state: GraphState): void;
24
+ /**
25
+ * Update state with output values
26
+ */
27
+ protected updateState(state: GraphState, outputs: Record<string, any>): GraphState;
28
+ /**
29
+ * Execute the node logic
30
+ */
31
+ execute(state: GraphState): Promise<GraphState>;
32
+ /**
33
+ * Process logic to be implemented by subclasses
34
+ */
35
+ protected abstract process(state: GraphState): Promise<GraphState>;
36
+ }
37
+ //# sourceMappingURL=BaseNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseNode.d.ts","sourceRoot":"","sources":["../../src/nodes/BaseNode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,8BAAsB,QAAQ;IAC5B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC3B,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC;IAC7B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;gBAG3B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EAAE,EAChB,WAAW,GAAE,MAAU,EACvB,MAAM,GAAE,UAAe;IAczB;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,EAAE;IA2CnD;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAoCjD;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,UAAU;IAOlF;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAcrD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;CACnE"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ /**
3
+ * Base Node class for the graph pipeline
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BaseNode = void 0;
7
+ const logger_1 = require("../utils/logger");
8
+ class BaseNode {
9
+ constructor(nodeName, nodeType, input, output, minInputLen = 1, config = {}) {
10
+ this.nodeName = nodeName;
11
+ this.nodeType = nodeType;
12
+ this.input = input;
13
+ this.output = output;
14
+ this.minInputLen = minInputLen;
15
+ this.config = config;
16
+ this.llmModel = config.llmModel;
17
+ const verbose = config.verbose ?? false;
18
+ this.logger = new logger_1.Logger(nodeName, verbose);
19
+ }
20
+ /**
21
+ * Get input keys from the input expression
22
+ */
23
+ getInputKeys(state) {
24
+ // Parse input expression like "url | local_dir" or "user_prompt & doc"
25
+ const keys = [];
26
+ // Check if expression contains OR (|) or AND (&)
27
+ const hasOr = this.input.includes('|');
28
+ const hasAnd = this.input.includes('&');
29
+ if (hasOr && !hasAnd) {
30
+ // Pure OR case: "url | localDir" - return first available
31
+ const parts = this.input.split('|').map(s => s.trim());
32
+ for (const part of parts) {
33
+ if (state[part] !== undefined) {
34
+ keys.push(part);
35
+ return keys; // Return first match
36
+ }
37
+ }
38
+ // If no match, return all options for error reporting
39
+ return parts;
40
+ }
41
+ // Handle complex expressions with & and optional parts in ()
42
+ const parts = this.input.split('&').map(s => s.trim());
43
+ for (const part of parts) {
44
+ // Handle optional inputs in parentheses like "(relevant_chunks | parsed_doc | doc)"
45
+ if (part.startsWith('(') && part.endsWith(')')) {
46
+ const innerParts = part.slice(1, -1).split('|').map(s => s.trim());
47
+ // Find the first key that exists in state
48
+ for (const innerPart of innerParts) {
49
+ if (state[innerPart] !== undefined) {
50
+ keys.push(innerPart);
51
+ break;
52
+ }
53
+ }
54
+ }
55
+ else {
56
+ keys.push(part);
57
+ }
58
+ }
59
+ return keys;
60
+ }
61
+ /**
62
+ * Validate that required inputs are present in state
63
+ */
64
+ validateInputs(state) {
65
+ const keys = this.getInputKeys(state);
66
+ if (keys.length === 0) {
67
+ throw new Error(`${this.nodeName}: No valid input keys found. Expected one of: ${this.input}`);
68
+ }
69
+ // For OR conditions, we just need at least one valid key
70
+ const hasOr = this.input.includes('|') && !this.input.includes('&');
71
+ if (hasOr) {
72
+ // Check if we have at least one valid input
73
+ const hasValidInput = keys.some(key => state[key] !== undefined);
74
+ if (!hasValidInput) {
75
+ throw new Error(`${this.nodeName}: No valid input found. Expected one of: ${this.input}`);
76
+ }
77
+ return;
78
+ }
79
+ // For AND conditions, validate all required keys
80
+ if (keys.length < this.minInputLen) {
81
+ throw new Error(`${this.nodeName}: Expected at least ${this.minInputLen} inputs, got ${keys.length}`);
82
+ }
83
+ for (const key of keys) {
84
+ if (state[key] === undefined) {
85
+ throw new Error(`${this.nodeName}: Required input '${key}' is missing from state`);
86
+ }
87
+ }
88
+ }
89
+ /**
90
+ * Update state with output values
91
+ */
92
+ updateState(state, outputs) {
93
+ return {
94
+ ...state,
95
+ ...outputs,
96
+ };
97
+ }
98
+ /**
99
+ * Execute the node logic
100
+ */
101
+ async execute(state) {
102
+ this.logger.info(`--- Executing ${this.nodeName} Node ---`);
103
+ try {
104
+ this.validateInputs(state);
105
+ const newState = await this.process(state);
106
+ this.logger.success(`${this.nodeName} completed successfully`);
107
+ return newState;
108
+ }
109
+ catch (error) {
110
+ this.logger.error(`${this.nodeName} failed: ${error.message}`);
111
+ throw error;
112
+ }
113
+ }
114
+ }
115
+ exports.BaseNode = BaseNode;
116
+ //# sourceMappingURL=BaseNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseNode.js","sourceRoot":"","sources":["../../src/nodes/BaseNode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * CSVExporterNode - Export data to CSV format
3
+ */
4
+ import { BaseNode } from './BaseNode';
5
+ import { GraphState, NodeConfig } from '../types';
6
+ export declare class CSVExporterNode extends BaseNode {
7
+ private outputPath?;
8
+ constructor(input: string, output: string[], config?: NodeConfig & {
9
+ outputPath?: string;
10
+ });
11
+ protected process(state: GraphState): Promise<GraphState>;
12
+ private convertToCSV;
13
+ private formatValue;
14
+ private escapeCSVValue;
15
+ }
16
+ //# sourceMappingURL=CSVExporterNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CSVExporterNode.d.ts","sourceRoot":"","sources":["../../src/nodes/CSVExporterNode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAElD,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,OAAO,CAAC,UAAU,CAAC,CAAS;gBAEhB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,GAAE,UAAU,GAAG;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO;cAK9E,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAmB/D,OAAO,CAAC,YAAY;IA8CpB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,cAAc;CAOvB"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ /**
3
+ * CSVExporterNode - Export data to CSV format
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CSVExporterNode = void 0;
7
+ const BaseNode_1 = require("./BaseNode");
8
+ class CSVExporterNode extends BaseNode_1.BaseNode {
9
+ constructor(input, output, config = {}) {
10
+ super('CSVExporter', 'node', input, output, 1, config);
11
+ this.outputPath = config.outputPath;
12
+ }
13
+ async process(state) {
14
+ const data = state.answer || state.parsedDoc;
15
+ if (!data) {
16
+ throw new Error('No data available to export to CSV');
17
+ }
18
+ this.logger.info('Converting data to CSV format');
19
+ const csv = this.convertToCSV(data);
20
+ this.logger.success(`Generated CSV with ${csv.split('\n').length - 1} rows`);
21
+ return this.updateState(state, {
22
+ csv,
23
+ csvPath: this.outputPath,
24
+ });
25
+ }
26
+ convertToCSV(data) {
27
+ // Handle array of objects
28
+ if (Array.isArray(data)) {
29
+ if (data.length === 0) {
30
+ return '';
31
+ }
32
+ // Get all unique keys from all objects
33
+ const allKeys = new Set();
34
+ data.forEach(item => {
35
+ if (typeof item === 'object' && item !== null) {
36
+ Object.keys(item).forEach(key => allKeys.add(key));
37
+ }
38
+ });
39
+ const headers = Array.from(allKeys);
40
+ // Create CSV header
41
+ const csvRows = [headers.map(this.escapeCSVValue).join(',')];
42
+ // Add data rows
43
+ data.forEach(item => {
44
+ if (typeof item === 'object' && item !== null) {
45
+ const row = headers.map(header => {
46
+ const value = item[header];
47
+ return this.escapeCSVValue(this.formatValue(value));
48
+ });
49
+ csvRows.push(row.join(','));
50
+ }
51
+ });
52
+ return csvRows.join('\n');
53
+ }
54
+ // Handle single object
55
+ if (typeof data === 'object' && data !== null) {
56
+ const keys = Object.keys(data);
57
+ const headers = keys.map(this.escapeCSVValue).join(',');
58
+ const values = keys.map(key => this.escapeCSVValue(this.formatValue(data[key]))).join(',');
59
+ return `${headers}\n${values}`;
60
+ }
61
+ // Handle primitive value
62
+ return String(data);
63
+ }
64
+ formatValue(value) {
65
+ if (value === null || value === undefined) {
66
+ return '';
67
+ }
68
+ if (Array.isArray(value)) {
69
+ return value.map(v => this.formatValue(v)).join('; ');
70
+ }
71
+ if (typeof value === 'object') {
72
+ return JSON.stringify(value);
73
+ }
74
+ return String(value);
75
+ }
76
+ escapeCSVValue(value) {
77
+ // If value contains comma, quote, or newline, wrap in quotes and escape quotes
78
+ if (value.includes(',') || value.includes('"') || value.includes('\n')) {
79
+ return `"${value.replace(/"/g, '""')}"`;
80
+ }
81
+ return value;
82
+ }
83
+ }
84
+ exports.CSVExporterNode = CSVExporterNode;
85
+ //# sourceMappingURL=CSVExporterNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CSVExporterNode.js","sourceRoot":"","sources":["../../src/nodes/CSVExporterNode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * ConditionalNode - Execute conditional logic in the graph
3
+ */
4
+ import { BaseNode } from './BaseNode';
5
+ import { GraphState, NodeConfig } from '../types';
6
+ export declare class ConditionalNode extends BaseNode {
7
+ private condition;
8
+ private keyName;
9
+ constructor(input: string, output: string[], config: NodeConfig & {
10
+ condition: string;
11
+ keyName: string;
12
+ });
13
+ protected process(state: GraphState): Promise<GraphState>;
14
+ private evaluateCondition;
15
+ }
16
+ //# sourceMappingURL=ConditionalNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConditionalNode.d.ts","sourceRoot":"","sources":["../../src/nodes/ConditionalNode.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAElD,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;gBAEZ,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,GAAG;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;cAcxF,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAe/D,OAAO,CAAC,iBAAiB;CAyC1B"}