@bubblelab/bubble-core 0.1.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 (275) hide show
  1. package/LICENSE.txt +202 -0
  2. package/dist/bubble-bundle.d.ts +2021 -0
  3. package/dist/bubble-factory.d.ts +161 -0
  4. package/dist/bubble-factory.d.ts.map +1 -0
  5. package/dist/bubble-factory.js +426 -0
  6. package/dist/bubble-factory.js.map +1 -0
  7. package/dist/bubble-flow/bubble-flow-class.d.ts +19 -0
  8. package/dist/bubble-flow/bubble-flow-class.d.ts.map +1 -0
  9. package/dist/bubble-flow/bubble-flow-class.js +23 -0
  10. package/dist/bubble-flow/bubble-flow-class.js.map +1 -0
  11. package/dist/bubble-flow/sample/data-analyst-flow.d.ts +15 -0
  12. package/dist/bubble-flow/sample/data-analyst-flow.d.ts.map +1 -0
  13. package/dist/bubble-flow/sample/data-analyst-flow.js +63 -0
  14. package/dist/bubble-flow/sample/data-analyst-flow.js.map +1 -0
  15. package/dist/bubble-flow/sample/error-ts.d.ts +23 -0
  16. package/dist/bubble-flow/sample/error-ts.d.ts.map +1 -0
  17. package/dist/bubble-flow/sample/error-ts.js +31 -0
  18. package/dist/bubble-flow/sample/error-ts.js.map +1 -0
  19. package/dist/bubble-flow/sample/sanitytest.d.ts +10 -0
  20. package/dist/bubble-flow/sample/sanitytest.d.ts.map +1 -0
  21. package/dist/bubble-flow/sample/sanitytest.js +13 -0
  22. package/dist/bubble-flow/sample/sanitytest.js.map +1 -0
  23. package/dist/bubble-flow/sample/simple-webhook-2.d.ts +19 -0
  24. package/dist/bubble-flow/sample/simple-webhook-2.d.ts.map +1 -0
  25. package/dist/bubble-flow/sample/simple-webhook-2.js +23 -0
  26. package/dist/bubble-flow/sample/simple-webhook-2.js.map +1 -0
  27. package/dist/bubble-flow/sample/simple-webhook.d.ts +10 -0
  28. package/dist/bubble-flow/sample/simple-webhook.d.ts.map +1 -0
  29. package/dist/bubble-flow/sample/simple-webhook.js +18 -0
  30. package/dist/bubble-flow/sample/simple-webhook.js.map +1 -0
  31. package/dist/bubble-flow/sample/simplified-data-analysis.flow.d.ts +29 -0
  32. package/dist/bubble-flow/sample/simplified-data-analysis.flow.d.ts.map +1 -0
  33. package/dist/bubble-flow/sample/simplified-data-analysis.flow.js +150 -0
  34. package/dist/bubble-flow/sample/simplified-data-analysis.flow.js.map +1 -0
  35. package/dist/bubble-flow/sample/slack-v0.1.d.ts +10 -0
  36. package/dist/bubble-flow/sample/slack-v0.1.d.ts.map +1 -0
  37. package/dist/bubble-flow/sample/slack-v0.1.js +59 -0
  38. package/dist/bubble-flow/sample/slack-v0.1.js.map +1 -0
  39. package/dist/bubble-flow/sample/slackagenttest.d.ts +10 -0
  40. package/dist/bubble-flow/sample/slackagenttest.d.ts.map +1 -0
  41. package/dist/bubble-flow/sample/slackagenttest.js +59 -0
  42. package/dist/bubble-flow/sample/slackagenttest.js.map +1 -0
  43. package/dist/bubble-trigger/index.d.ts +2 -0
  44. package/dist/bubble-trigger/index.d.ts.map +1 -0
  45. package/dist/bubble-trigger/index.js +2 -0
  46. package/dist/bubble-trigger/index.js.map +1 -0
  47. package/dist/bubble-trigger/types.d.ts +87 -0
  48. package/dist/bubble-trigger/types.d.ts.map +1 -0
  49. package/dist/bubble-trigger/types.js +14 -0
  50. package/dist/bubble-trigger/types.js.map +1 -0
  51. package/dist/bubbles/service-bubble/ai-agent.d.ts +428 -0
  52. package/dist/bubbles/service-bubble/ai-agent.d.ts.map +1 -0
  53. package/dist/bubbles/service-bubble/ai-agent.js +881 -0
  54. package/dist/bubbles/service-bubble/ai-agent.js.map +1 -0
  55. package/dist/bubbles/service-bubble/gmail.d.ts +3073 -0
  56. package/dist/bubbles/service-bubble/gmail.d.ts.map +1 -0
  57. package/dist/bubbles/service-bubble/gmail.js +908 -0
  58. package/dist/bubbles/service-bubble/gmail.js.map +1 -0
  59. package/dist/bubbles/service-bubble/google-calendar.d.ts +3377 -0
  60. package/dist/bubbles/service-bubble/google-calendar.d.ts.map +1 -0
  61. package/dist/bubbles/service-bubble/google-calendar.js +527 -0
  62. package/dist/bubbles/service-bubble/google-calendar.js.map +1 -0
  63. package/dist/bubbles/service-bubble/google-drive.d.ts +1152 -0
  64. package/dist/bubbles/service-bubble/google-drive.d.ts.map +1 -0
  65. package/dist/bubbles/service-bubble/google-drive.js +943 -0
  66. package/dist/bubbles/service-bubble/google-drive.js.map +1 -0
  67. package/dist/bubbles/service-bubble/google-sheets.d.ts +1811 -0
  68. package/dist/bubbles/service-bubble/google-sheets.d.ts.map +1 -0
  69. package/dist/bubbles/service-bubble/google-sheets.js +904 -0
  70. package/dist/bubbles/service-bubble/google-sheets.js.map +1 -0
  71. package/dist/bubbles/service-bubble/hello-world.d.ts +74 -0
  72. package/dist/bubbles/service-bubble/hello-world.d.ts.map +1 -0
  73. package/dist/bubbles/service-bubble/hello-world.js +67 -0
  74. package/dist/bubbles/service-bubble/hello-world.js.map +1 -0
  75. package/dist/bubbles/service-bubble/http.d.ts +134 -0
  76. package/dist/bubbles/service-bubble/http.d.ts.map +1 -0
  77. package/dist/bubbles/service-bubble/http.js +184 -0
  78. package/dist/bubbles/service-bubble/http.js.map +1 -0
  79. package/dist/bubbles/service-bubble/postgresql.d.ts +180 -0
  80. package/dist/bubbles/service-bubble/postgresql.d.ts.map +1 -0
  81. package/dist/bubbles/service-bubble/postgresql.js +448 -0
  82. package/dist/bubbles/service-bubble/postgresql.js.map +1 -0
  83. package/dist/bubbles/service-bubble/resend.d.ts +301 -0
  84. package/dist/bubbles/service-bubble/resend.d.ts.map +1 -0
  85. package/dist/bubbles/service-bubble/resend.js +253 -0
  86. package/dist/bubbles/service-bubble/resend.js.map +1 -0
  87. package/dist/bubbles/service-bubble/slack.d.ts +5869 -0
  88. package/dist/bubbles/service-bubble/slack.d.ts.map +1 -0
  89. package/dist/bubbles/service-bubble/slack.js +1536 -0
  90. package/dist/bubbles/service-bubble/slack.js.map +1 -0
  91. package/dist/bubbles/service-bubble/storage.d.ts +571 -0
  92. package/dist/bubbles/service-bubble/storage.d.ts.map +1 -0
  93. package/dist/bubbles/service-bubble/storage.js +504 -0
  94. package/dist/bubbles/service-bubble/storage.js.map +1 -0
  95. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +308 -0
  96. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts.map +1 -0
  97. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.js +285 -0
  98. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.js.map +1 -0
  99. package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +416 -0
  100. package/dist/bubbles/tool-bubble/chart-js-tool.d.ts.map +1 -0
  101. package/dist/bubbles/tool-bubble/chart-js-tool.js +570 -0
  102. package/dist/bubbles/tool-bubble/chart-js-tool.js.map +1 -0
  103. package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts +99 -0
  104. package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts.map +1 -0
  105. package/dist/bubbles/tool-bubble/get-bubble-details-tool.js +645 -0
  106. package/dist/bubbles/tool-bubble/get-bubble-details-tool.js.map +1 -0
  107. package/dist/bubbles/tool-bubble/list-bubbles-tool.d.ts +112 -0
  108. package/dist/bubbles/tool-bubble/list-bubbles-tool.d.ts.map +1 -0
  109. package/dist/bubbles/tool-bubble/list-bubbles-tool.js +82 -0
  110. package/dist/bubbles/tool-bubble/list-bubbles-tool.js.map +1 -0
  111. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +413 -0
  112. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts.map +1 -0
  113. package/dist/bubbles/tool-bubble/reddit-scrape-tool.js +327 -0
  114. package/dist/bubbles/tool-bubble/reddit-scrape-tool.js.map +1 -0
  115. package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +122 -0
  116. package/dist/bubbles/tool-bubble/research-agent-tool.d.ts.map +1 -0
  117. package/dist/bubbles/tool-bubble/research-agent-tool.js +343 -0
  118. package/dist/bubbles/tool-bubble/research-agent-tool.js.map +1 -0
  119. package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +131 -0
  120. package/dist/bubbles/tool-bubble/sql-query-tool.d.ts.map +1 -0
  121. package/dist/bubbles/tool-bubble/sql-query-tool.js +147 -0
  122. package/dist/bubbles/tool-bubble/sql-query-tool.js.map +1 -0
  123. package/dist/bubbles/tool-bubble/tool-template.d.ts +257 -0
  124. package/dist/bubbles/tool-bubble/tool-template.d.ts.map +1 -0
  125. package/dist/bubbles/tool-bubble/tool-template.js +238 -0
  126. package/dist/bubbles/tool-bubble/tool-template.js.map +1 -0
  127. package/dist/bubbles/tool-bubble/virtual-file-editor-example.d.ts +8 -0
  128. package/dist/bubbles/tool-bubble/virtual-file-editor-example.d.ts.map +1 -0
  129. package/dist/bubbles/tool-bubble/virtual-file-editor-example.js +65 -0
  130. package/dist/bubbles/tool-bubble/virtual-file-editor-example.js.map +1 -0
  131. package/dist/bubbles/tool-bubble/virtual-file-editor.tool.d.ts +125 -0
  132. package/dist/bubbles/tool-bubble/virtual-file-editor.tool.d.ts.map +1 -0
  133. package/dist/bubbles/tool-bubble/virtual-file-editor.tool.js +169 -0
  134. package/dist/bubbles/tool-bubble/virtual-file-editor.tool.js.map +1 -0
  135. package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts +218 -0
  136. package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts.map +1 -0
  137. package/dist/bubbles/tool-bubble/web-crawl-tool.js +255 -0
  138. package/dist/bubbles/tool-bubble/web-crawl-tool.js.map +1 -0
  139. package/dist/bubbles/tool-bubble/web-extract-tool.d.ts +134 -0
  140. package/dist/bubbles/tool-bubble/web-extract-tool.d.ts.map +1 -0
  141. package/dist/bubbles/tool-bubble/web-extract-tool.js +175 -0
  142. package/dist/bubbles/tool-bubble/web-extract-tool.js.map +1 -0
  143. package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts +228 -0
  144. package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts.map +1 -0
  145. package/dist/bubbles/tool-bubble/web-scrape-tool.js +214 -0
  146. package/dist/bubbles/tool-bubble/web-scrape-tool.js.map +1 -0
  147. package/dist/bubbles/tool-bubble/web-search-tool.d.ts +134 -0
  148. package/dist/bubbles/tool-bubble/web-search-tool.d.ts.map +1 -0
  149. package/dist/bubbles/tool-bubble/web-search-tool.js +155 -0
  150. package/dist/bubbles/tool-bubble/web-search-tool.js.map +1 -0
  151. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts +114 -0
  152. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts.map +1 -0
  153. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js +777 -0
  154. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js.map +1 -0
  155. package/dist/bubbles/workflow-bubble/bubblscript-generateor.workflow.d.ts +97 -0
  156. package/dist/bubbles/workflow-bubble/bubblscript-generateor.workflow.d.ts.map +1 -0
  157. package/dist/bubbles/workflow-bubble/bubblscript-generateor.workflow.js +327 -0
  158. package/dist/bubbles/workflow-bubble/bubblscript-generateor.workflow.js.map +1 -0
  159. package/dist/bubbles/workflow-bubble/database-analyzer.workflow.d.ts +303 -0
  160. package/dist/bubbles/workflow-bubble/database-analyzer.workflow.d.ts.map +1 -0
  161. package/dist/bubbles/workflow-bubble/database-analyzer.workflow.js +297 -0
  162. package/dist/bubbles/workflow-bubble/database-analyzer.workflow.js.map +1 -0
  163. package/dist/bubbles/workflow-bubble/file-editor-agent.workflow.d.ts +157 -0
  164. package/dist/bubbles/workflow-bubble/file-editor-agent.workflow.d.ts.map +1 -0
  165. package/dist/bubbles/workflow-bubble/file-editor-agent.workflow.js +310 -0
  166. package/dist/bubbles/workflow-bubble/file-editor-agent.workflow.js.map +1 -0
  167. package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +543 -0
  168. package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts.map +1 -0
  169. package/dist/bubbles/workflow-bubble/generate-document.workflow.js +628 -0
  170. package/dist/bubbles/workflow-bubble/generate-document.workflow.js.map +1 -0
  171. package/dist/bubbles/workflow-bubble/parse-document.workflow.d.ts +679 -0
  172. package/dist/bubbles/workflow-bubble/parse-document.workflow.d.ts.map +1 -0
  173. package/dist/bubbles/workflow-bubble/parse-document.workflow.js +604 -0
  174. package/dist/bubbles/workflow-bubble/parse-document.workflow.js.map +1 -0
  175. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +1011 -0
  176. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts.map +1 -0
  177. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.js +841 -0
  178. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.js.map +1 -0
  179. package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +883 -0
  180. package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts.map +1 -0
  181. package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.js +781 -0
  182. package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.js.map +1 -0
  183. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +300 -0
  184. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts.map +1 -0
  185. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.js +508 -0
  186. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.js.map +1 -0
  187. package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +731 -0
  188. package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts.map +1 -0
  189. package/dist/bubbles/workflow-bubble/slack-formatter-agent.js +690 -0
  190. package/dist/bubbles/workflow-bubble/slack-formatter-agent.js.map +1 -0
  191. package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts +401 -0
  192. package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts.map +1 -0
  193. package/dist/bubbles/workflow-bubble/slack-notifier.workflow.js +382 -0
  194. package/dist/bubbles/workflow-bubble/slack-notifier.workflow.js.map +1 -0
  195. package/dist/bubbles/workflow-bubble/workflow-template.d.ts +144 -0
  196. package/dist/bubbles/workflow-bubble/workflow-template.d.ts.map +1 -0
  197. package/dist/bubbles/workflow-bubble/workflow-template.js +124 -0
  198. package/dist/bubbles/workflow-bubble/workflow-template.js.map +1 -0
  199. package/dist/index.d.ts +46 -0
  200. package/dist/index.d.ts.map +1 -0
  201. package/dist/index.js +53 -0
  202. package/dist/index.js.map +1 -0
  203. package/dist/logging/BubbleLogger.d.ts +146 -0
  204. package/dist/logging/BubbleLogger.d.ts.map +1 -0
  205. package/dist/logging/BubbleLogger.js +472 -0
  206. package/dist/logging/BubbleLogger.js.map +1 -0
  207. package/dist/logging/StreamingBubbleLogger.d.ts +85 -0
  208. package/dist/logging/StreamingBubbleLogger.d.ts.map +1 -0
  209. package/dist/logging/StreamingBubbleLogger.js +340 -0
  210. package/dist/logging/StreamingBubbleLogger.js.map +1 -0
  211. package/dist/types/ai-models.d.ts +4 -0
  212. package/dist/types/ai-models.d.ts.map +1 -0
  213. package/dist/types/ai-models.js +14 -0
  214. package/dist/types/ai-models.js.map +1 -0
  215. package/dist/types/available-tools.d.ts +4 -0
  216. package/dist/types/available-tools.d.ts.map +1 -0
  217. package/dist/types/available-tools.js +19 -0
  218. package/dist/types/available-tools.js.map +1 -0
  219. package/dist/types/base-bubble-class.d.ts +47 -0
  220. package/dist/types/base-bubble-class.d.ts.map +1 -0
  221. package/dist/types/base-bubble-class.js +212 -0
  222. package/dist/types/base-bubble-class.js.map +1 -0
  223. package/dist/types/bubble-errors.d.ts +44 -0
  224. package/dist/types/bubble-errors.d.ts.map +1 -0
  225. package/dist/types/bubble-errors.js +51 -0
  226. package/dist/types/bubble-errors.js.map +1 -0
  227. package/dist/types/bubble.d.ts +73 -0
  228. package/dist/types/bubble.d.ts.map +1 -0
  229. package/dist/types/bubble.js +2 -0
  230. package/dist/types/bubble.js.map +1 -0
  231. package/dist/types/credentials.d.ts +6 -0
  232. package/dist/types/credentials.d.ts.map +1 -0
  233. package/dist/types/credentials.js +6 -0
  234. package/dist/types/credentials.js.map +1 -0
  235. package/dist/types/service-bubble-class.d.ts +31 -0
  236. package/dist/types/service-bubble-class.d.ts.map +1 -0
  237. package/dist/types/service-bubble-class.js +36 -0
  238. package/dist/types/service-bubble-class.js.map +1 -0
  239. package/dist/types/streaming-events.d.ts +18 -0
  240. package/dist/types/streaming-events.d.ts.map +1 -0
  241. package/dist/types/streaming-events.js +5 -0
  242. package/dist/types/streaming-events.js.map +1 -0
  243. package/dist/types/tool-bubble-class.d.ts +19 -0
  244. package/dist/types/tool-bubble-class.d.ts.map +1 -0
  245. package/dist/types/tool-bubble-class.js +48 -0
  246. package/dist/types/tool-bubble-class.js.map +1 -0
  247. package/dist/types/workflow-bubble-class.d.ts +25 -0
  248. package/dist/types/workflow-bubble-class.d.ts.map +1 -0
  249. package/dist/types/workflow-bubble-class.js +30 -0
  250. package/dist/types/workflow-bubble-class.js.map +1 -0
  251. package/dist/utils/bubbleflow-parser.d.ts +32 -0
  252. package/dist/utils/bubbleflow-parser.d.ts.map +1 -0
  253. package/dist/utils/bubbleflow-parser.js +332 -0
  254. package/dist/utils/bubbleflow-parser.js.map +1 -0
  255. package/dist/utils/bubbleflow-validation.d.ts +9 -0
  256. package/dist/utils/bubbleflow-validation.d.ts.map +1 -0
  257. package/dist/utils/bubbleflow-validation.js +116 -0
  258. package/dist/utils/bubbleflow-validation.js.map +1 -0
  259. package/dist/utils/json-parsing.d.ts +20 -0
  260. package/dist/utils/json-parsing.d.ts.map +1 -0
  261. package/dist/utils/json-parsing.js +394 -0
  262. package/dist/utils/json-parsing.js.map +1 -0
  263. package/dist/utils/mock-data-generator.d.ts +43 -0
  264. package/dist/utils/mock-data-generator.d.ts.map +1 -0
  265. package/dist/utils/mock-data-generator.js +312 -0
  266. package/dist/utils/mock-data-generator.js.map +1 -0
  267. package/dist/utils/param-helper.d.ts +2 -0
  268. package/dist/utils/param-helper.d.ts.map +1 -0
  269. package/dist/utils/param-helper.js +5 -0
  270. package/dist/utils/param-helper.js.map +1 -0
  271. package/dist/utils/source-bubble-parser.d.ts +31 -0
  272. package/dist/utils/source-bubble-parser.d.ts.map +1 -0
  273. package/dist/utils/source-bubble-parser.js +231 -0
  274. package/dist/utils/source-bubble-parser.js.map +1 -0
  275. package/package.json +63 -0
@@ -0,0 +1,570 @@
1
+ import { z } from 'zod';
2
+ import { ToolBubble } from '../../types/tool-bubble-class.js';
3
+ import { CredentialType } from '@bubblelab/shared-schemas';
4
+ import { ChartJSNodeCanvas } from 'chartjs-node-canvas';
5
+ import * as fs from 'fs/promises';
6
+ import * as path from 'path';
7
+ // Define supported chart types
8
+ const ChartType = z.enum([
9
+ 'line',
10
+ 'bar',
11
+ 'pie',
12
+ 'doughnut',
13
+ 'radar',
14
+ 'scatter',
15
+ 'bubble',
16
+ 'polarArea',
17
+ ]);
18
+ // Define color schemes
19
+ const ColorScheme = z.enum([
20
+ 'default',
21
+ 'viridis',
22
+ 'plasma',
23
+ 'inferno',
24
+ 'magma',
25
+ 'blues',
26
+ 'greens',
27
+ 'reds',
28
+ 'oranges',
29
+ 'categorical',
30
+ ]);
31
+ // Define chart options for common customizations
32
+ const ChartOptionsSchema = z.object({
33
+ title: z.string().optional().describe('Chart title'),
34
+ xAxisLabel: z.string().optional().describe('X-axis label'),
35
+ yAxisLabel: z.string().optional().describe('Y-axis label'),
36
+ colorScheme: ColorScheme.default('default').describe('Color scheme for the chart'),
37
+ responsive: z.boolean().default(true).describe('Make chart responsive'),
38
+ maintainAspectRatio: z
39
+ .boolean()
40
+ .default(true)
41
+ .describe('Maintain aspect ratio'),
42
+ showLegend: z.boolean().default(true).describe('Show chart legend'),
43
+ showTooltips: z.boolean().default(true).describe('Show tooltips on hover'),
44
+ });
45
+ // Define the parameters schema
46
+ const ChartJSToolParamsSchema = z.object({
47
+ data: z
48
+ .array(z.record(z.unknown()))
49
+ .min(1, 'Data array cannot be empty')
50
+ .describe('Array of data objects (typically from SQL query results)'),
51
+ chartType: ChartType.describe('Type of chart to generate'),
52
+ xColumn: z
53
+ .string()
54
+ .optional()
55
+ .describe('Column name to use for X-axis (auto-detected if not provided)'),
56
+ yColumn: z
57
+ .string()
58
+ .optional()
59
+ .describe('Column name to use for Y-axis (auto-detected if not provided)'),
60
+ groupByColumn: z
61
+ .string()
62
+ .optional()
63
+ .describe('Column to group data by for multiple series'),
64
+ options: ChartOptionsSchema.optional().describe('Chart customization options'),
65
+ advancedConfig: z
66
+ .record(z.unknown())
67
+ .optional()
68
+ .describe('Advanced Chart.js configuration object (overrides simple options)'),
69
+ reasoning: z
70
+ .string()
71
+ .describe('Explain why this chart type and configuration was chosen'),
72
+ generateFile: z
73
+ .boolean()
74
+ .default(false)
75
+ .describe('Generate an actual chart image file (PNG format)'),
76
+ filePath: z
77
+ .string()
78
+ .optional()
79
+ .describe('Custom file path for generated chart (defaults to temp directory)'),
80
+ fileName: z
81
+ .string()
82
+ .optional()
83
+ .describe('Custom file name for generated chart (defaults to auto-generated name)'),
84
+ width: z
85
+ .number()
86
+ .optional()
87
+ .default(800)
88
+ .describe('Chart width in pixels (default: 800)'),
89
+ height: z
90
+ .number()
91
+ .optional()
92
+ .default(600)
93
+ .describe('Chart height in pixels (default: 600)'),
94
+ // Hidden from AI agents - injected at runtime
95
+ credentials: z
96
+ .record(z.nativeEnum(CredentialType), z.string())
97
+ .optional()
98
+ .describe('Credentials (HIDDEN from AI - injected at runtime)'),
99
+ config: z
100
+ .record(z.string(), z.unknown())
101
+ .optional()
102
+ .describe('Configuration for the tool bubble (HIDDEN from AI - injected at runtime)'),
103
+ });
104
+ // Result schema
105
+ const ChartJSToolResultSchema = z.object({
106
+ chartConfig: z
107
+ .record(z.unknown())
108
+ .describe('Complete Chart.js configuration object'),
109
+ chartType: z.string().describe('Chart type that was generated'),
110
+ datasetCount: z.number().describe('Number of datasets in the chart'),
111
+ dataPointCount: z.number().describe('Total number of data points'),
112
+ suggestedSize: z
113
+ .object({
114
+ width: z.number(),
115
+ height: z.number(),
116
+ })
117
+ .describe('Suggested canvas size for the chart'),
118
+ metadata: z
119
+ .object({
120
+ xColumn: z.string().optional(),
121
+ yColumn: z.string().optional(),
122
+ groupByColumn: z.string().optional(),
123
+ colorScheme: z.string(),
124
+ generatedAt: z.string(),
125
+ })
126
+ .describe('Metadata about chart generation'),
127
+ filePath: z
128
+ .string()
129
+ .optional()
130
+ .describe('Path to generated chart file (if generateFile was true)'),
131
+ fileExists: z
132
+ .boolean()
133
+ .optional()
134
+ .describe('Whether the generated file exists on disk'),
135
+ fileSize: z.number().optional().describe('Size of generated file in bytes'),
136
+ // Standard result fields
137
+ success: z.boolean(),
138
+ error: z.string(),
139
+ });
140
+ /**
141
+ * ChartJSTool - Generate Chart.js configurations from data
142
+ *
143
+ * This tool bubble converts data (typically from SQL queries) into Chart.js
144
+ * configuration objects that can be used to render interactive charts.
145
+ */
146
+ export class ChartJSTool extends ToolBubble {
147
+ static type = 'tool';
148
+ static bubbleName = 'chart-js-tool';
149
+ static schema = ChartJSToolParamsSchema;
150
+ static resultSchema = ChartJSToolResultSchema;
151
+ static shortDescription = 'Generate Chart.js configurations from data for interactive visualizations';
152
+ static longDescription = `
153
+ A tool bubble that converts data into Chart.js configuration objects for creating
154
+ interactive charts and visualizations.
155
+
156
+ Features:
157
+ - Support for multiple chart types (line, bar, pie, scatter, etc.)
158
+ - Automatic data column detection and mapping
159
+ - Smart color scheme selection
160
+ - Responsive chart configurations
161
+ - Support for grouped data and multiple series
162
+ - Advanced customization through Chart.js config
163
+
164
+ Chart Types:
165
+ - Line charts: Time series, trends, continuous data
166
+ - Bar charts: Categorical comparisons, counts
167
+ - Pie/Doughnut: Parts of a whole, percentages
168
+ - Scatter: Correlation analysis, x-y relationships
169
+ - Radar: Multi-dimensional comparisons
170
+ - Bubble: Three-dimensional data visualization
171
+
172
+ Use cases:
173
+ - Converting SQL query results into visual charts
174
+ - Creating dashboards and reports
175
+ - Data analysis and presentation
176
+ - Interactive data exploration
177
+ `;
178
+ static alias = 'chart';
179
+ constructor(params, context) {
180
+ super(params, context);
181
+ }
182
+ async performAction(context) {
183
+ void context;
184
+ try {
185
+ console.debug(`\n📊 [ChartJSTool] Generating ${this.params.chartType} chart...`);
186
+ console.debug(`💭 [ChartJSTool] Reasoning: ${this.params.reasoning}`);
187
+ console.debug(`📝 [ChartJSTool] Data points: ${this.params.data?.length}`);
188
+ const { data, chartType, xColumn, yColumn, groupByColumn, options, advancedConfig, } = this.params;
189
+ // Auto-detect columns if not provided
190
+ const detectedColumns = this.detectColumns(data, xColumn, yColumn);
191
+ const finalXColumn = xColumn || detectedColumns.xColumn;
192
+ const finalYColumn = yColumn || detectedColumns.yColumn;
193
+ if (!finalYColumn) {
194
+ throw new Error('Could not detect Y-axis column. Please specify yColumn parameter.');
195
+ }
196
+ // Generate chart configuration
197
+ const chartConfig = await this.generateChartConfig(data, chartType, finalXColumn, finalYColumn, groupByColumn, options, advancedConfig);
198
+ // Calculate metadata
199
+ const configData = chartConfig.data;
200
+ const datasetCount = Array.isArray(configData?.datasets)
201
+ ? configData.datasets.length
202
+ : 1;
203
+ const dataPointCount = this.calculateDataPointCount(chartConfig);
204
+ const suggestedSize = this.getSuggestedSize(chartType, dataPointCount);
205
+ // Generate file if requested
206
+ let filePath;
207
+ let fileExists;
208
+ let fileSize;
209
+ if (this.params.generateFile) {
210
+ const parsedParams = ChartJSToolParamsSchema.parse(this.params);
211
+ const dimensions = {
212
+ width: parsedParams.width,
213
+ height: parsedParams.height,
214
+ };
215
+ const fileResult = await this.generateChartFile(chartConfig, dimensions);
216
+ filePath = fileResult.filePath;
217
+ fileExists = fileResult.fileExists;
218
+ fileSize = fileResult.fileSize;
219
+ }
220
+ console.log(`✅ [ChartJSTool] Chart generated successfully:`);
221
+ console.log(`📈 [ChartJSTool] Type: ${chartType}`);
222
+ console.log(`📊 [ChartJSTool] Datasets: ${datasetCount}`);
223
+ console.log(`📍 [ChartJSTool] Data points: ${dataPointCount}`);
224
+ if (filePath) {
225
+ console.log(`💾 [ChartJSTool] File: ${filePath} (${fileSize} bytes, exists: ${fileExists})`);
226
+ }
227
+ return {
228
+ chartConfig,
229
+ chartType,
230
+ datasetCount,
231
+ dataPointCount,
232
+ suggestedSize,
233
+ metadata: {
234
+ xColumn: finalXColumn,
235
+ yColumn: finalYColumn,
236
+ groupByColumn,
237
+ colorScheme: options?.colorScheme || 'default',
238
+ generatedAt: new Date().toISOString(),
239
+ },
240
+ filePath,
241
+ fileExists,
242
+ fileSize,
243
+ success: true,
244
+ error: '',
245
+ };
246
+ }
247
+ catch (error) {
248
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
249
+ console.log(`❌ [ChartJSTool] Chart generation failed: ${errorMessage}`);
250
+ return {
251
+ chartConfig: {},
252
+ chartType: this.params.chartType,
253
+ datasetCount: 0,
254
+ dataPointCount: 0,
255
+ suggestedSize: { width: 400, height: 300 },
256
+ metadata: {
257
+ colorScheme: 'default',
258
+ generatedAt: new Date().toISOString(),
259
+ },
260
+ filePath: undefined,
261
+ fileExists: false,
262
+ fileSize: undefined,
263
+ success: false,
264
+ error: errorMessage,
265
+ };
266
+ }
267
+ }
268
+ /**
269
+ * Auto-detect appropriate columns for X and Y axes
270
+ */
271
+ detectColumns(data, xColumn, yColumn) {
272
+ if (!data.length)
273
+ return {};
274
+ const firstRow = data[0];
275
+ const columns = Object.keys(firstRow);
276
+ // If both are provided, return them
277
+ if (xColumn && yColumn) {
278
+ return { xColumn, yColumn };
279
+ }
280
+ // Detect numeric columns for Y-axis
281
+ const numericColumns = columns.filter((col) => {
282
+ const values = data.slice(0, 10).map((row) => row[col]);
283
+ return values.every((val) => val !== null &&
284
+ val !== undefined &&
285
+ (typeof val === 'number' || !isNaN(Number(val))));
286
+ });
287
+ // Detect categorical/date columns for X-axis
288
+ const categoricalColumns = columns.filter((col) => !numericColumns.includes(col));
289
+ return {
290
+ xColumn: xColumn || categoricalColumns[0],
291
+ yColumn: yColumn || numericColumns[0],
292
+ };
293
+ }
294
+ /**
295
+ * Generate complete Chart.js configuration
296
+ */
297
+ async generateChartConfig(data, chartType, xColumn, yColumn, groupByColumn, options, advancedConfig) {
298
+ // If advanced config is provided, use it as base
299
+ if (advancedConfig) {
300
+ return {
301
+ type: chartType,
302
+ ...advancedConfig,
303
+ };
304
+ }
305
+ // Generate basic configuration
306
+ const chartData = this.prepareChartData(data, chartType, xColumn, yColumn, groupByColumn, options);
307
+ const chartOptions = this.generateChartOptions(options);
308
+ const config = {
309
+ type: chartType,
310
+ data: chartData,
311
+ options: chartOptions,
312
+ };
313
+ return config;
314
+ }
315
+ /**
316
+ * Prepare data in Chart.js format
317
+ */
318
+ prepareChartData(data, chartType, xColumn, yColumn, groupByColumn, options) {
319
+ const colors = this.getColorPalette(options?.colorScheme || 'default');
320
+ if (groupByColumn) {
321
+ return this.prepareGroupedData(data, chartType, xColumn, yColumn, groupByColumn, colors);
322
+ }
323
+ else {
324
+ return this.prepareSingleSeriesData(data, chartType, xColumn, yColumn, colors);
325
+ }
326
+ }
327
+ /**
328
+ * Prepare single series data
329
+ */
330
+ prepareSingleSeriesData(data, chartType, xColumn, yColumn, colors) {
331
+ const labels = xColumn ? data.map((row) => String(row[xColumn])) : [];
332
+ const values = yColumn ? data.map((row) => Number(row[yColumn])) : [];
333
+ // For pie/doughnut charts, use categories as labels
334
+ if (chartType === 'pie' || chartType === 'doughnut') {
335
+ return {
336
+ labels: labels.length ? labels : values.map((_, i) => `Item ${i + 1}`),
337
+ datasets: [
338
+ {
339
+ data: values,
340
+ backgroundColor: colors,
341
+ borderColor: colors.map((c) => c.replace('0.8', '1')),
342
+ borderWidth: 1,
343
+ },
344
+ ],
345
+ };
346
+ }
347
+ // For scatter/bubble charts
348
+ if (chartType === 'scatter' || chartType === 'bubble') {
349
+ const scatterData = data.map((row, i) => ({
350
+ x: xColumn ? Number(row[xColumn]) : i,
351
+ y: yColumn ? Number(row[yColumn]) : 0,
352
+ ...(chartType === 'bubble' && { r: 5 }), // Default bubble radius
353
+ }));
354
+ return {
355
+ datasets: [
356
+ {
357
+ label: yColumn || 'Data',
358
+ data: scatterData,
359
+ backgroundColor: colors[0],
360
+ borderColor: colors[0].replace('0.8', '1'),
361
+ },
362
+ ],
363
+ };
364
+ }
365
+ // For line/bar charts
366
+ return {
367
+ labels: labels.length ? labels : data.map((_, i) => `Point ${i + 1}`),
368
+ datasets: [
369
+ {
370
+ label: yColumn || 'Data',
371
+ data: values,
372
+ backgroundColor: colors[0],
373
+ borderColor: colors[0].replace('0.8', '1'),
374
+ borderWidth: chartType === 'line' ? 2 : 1,
375
+ fill: chartType === 'line' ? false : true,
376
+ },
377
+ ],
378
+ };
379
+ }
380
+ /**
381
+ * Prepare grouped data (multiple series)
382
+ */
383
+ prepareGroupedData(data, chartType, xColumn, yColumn, groupByColumn, colors) {
384
+ // Group data by groupByColumn
385
+ const groups = new Map();
386
+ data.forEach((row) => {
387
+ const groupKey = String(row[groupByColumn]);
388
+ if (!groups.has(groupKey)) {
389
+ groups.set(groupKey, []);
390
+ }
391
+ groups.get(groupKey).push(row);
392
+ });
393
+ const labels = xColumn
394
+ ? [...new Set(data.map((row) => String(row[xColumn])))]
395
+ : [];
396
+ const datasets = Array.from(groups.entries()).map(([groupName, groupData], index) => {
397
+ const values = yColumn
398
+ ? groupData.map((row) => Number(row[yColumn]))
399
+ : [];
400
+ const color = colors[index % colors.length];
401
+ return {
402
+ label: groupName,
403
+ data: values,
404
+ backgroundColor: color,
405
+ borderColor: color.replace('0.8', '1'),
406
+ borderWidth: chartType === 'line' ? 2 : 1,
407
+ fill: chartType === 'line' ? false : true,
408
+ };
409
+ });
410
+ return {
411
+ labels: labels.length ? labels : [],
412
+ datasets,
413
+ };
414
+ }
415
+ /**
416
+ * Generate Chart.js options
417
+ */
418
+ generateChartOptions(options) {
419
+ const chartOptions = {
420
+ responsive: options?.responsive ?? true,
421
+ maintainAspectRatio: options?.maintainAspectRatio ?? true,
422
+ };
423
+ if (options?.title) {
424
+ chartOptions.plugins = {
425
+ title: {
426
+ display: true,
427
+ text: options.title,
428
+ },
429
+ legend: {
430
+ display: options.showLegend ?? true,
431
+ },
432
+ tooltip: {
433
+ enabled: options.showTooltips ?? true,
434
+ },
435
+ };
436
+ }
437
+ if (options?.xAxisLabel || options?.yAxisLabel) {
438
+ chartOptions.scales = {
439
+ x: {
440
+ display: true,
441
+ title: {
442
+ display: !!options?.xAxisLabel,
443
+ text: options?.xAxisLabel || '',
444
+ },
445
+ },
446
+ y: {
447
+ display: true,
448
+ title: {
449
+ display: !!options?.yAxisLabel,
450
+ text: options?.yAxisLabel || '',
451
+ },
452
+ },
453
+ };
454
+ }
455
+ return chartOptions;
456
+ }
457
+ /**
458
+ * Get color palette based on scheme
459
+ */
460
+ getColorPalette(scheme) {
461
+ const palettes = {
462
+ default: [
463
+ 'rgba(54, 162, 235, 0.8)',
464
+ 'rgba(255, 99, 132, 0.8)',
465
+ 'rgba(255, 205, 86, 0.8)',
466
+ 'rgba(75, 192, 192, 0.8)',
467
+ 'rgba(153, 102, 255, 0.8)',
468
+ 'rgba(255, 159, 64, 0.8)',
469
+ ],
470
+ viridis: [
471
+ 'rgba(68, 1, 84, 0.8)',
472
+ 'rgba(59, 82, 139, 0.8)',
473
+ 'rgba(33, 145, 140, 0.8)',
474
+ 'rgba(94, 201, 98, 0.8)',
475
+ 'rgba(253, 231, 37, 0.8)',
476
+ ],
477
+ blues: [
478
+ 'rgba(8, 48, 107, 0.8)',
479
+ 'rgba(8, 81, 156, 0.8)',
480
+ 'rgba(33, 113, 181, 0.8)',
481
+ 'rgba(66, 146, 198, 0.8)',
482
+ 'rgba(107, 174, 214, 0.8)',
483
+ 'rgba(158, 202, 225, 0.8)',
484
+ ],
485
+ categorical: [
486
+ 'rgba(31, 119, 180, 0.8)',
487
+ 'rgba(255, 127, 14, 0.8)',
488
+ 'rgba(44, 160, 44, 0.8)',
489
+ 'rgba(214, 39, 40, 0.8)',
490
+ 'rgba(148, 103, 189, 0.8)',
491
+ 'rgba(140, 86, 75, 0.8)',
492
+ 'rgba(227, 119, 194, 0.8)',
493
+ 'rgba(127, 127, 127, 0.8)',
494
+ 'rgba(188, 189, 34, 0.8)',
495
+ 'rgba(23, 190, 207, 0.8)',
496
+ ],
497
+ };
498
+ return palettes[scheme] || palettes.default;
499
+ }
500
+ /**
501
+ * Calculate total data point count
502
+ */
503
+ calculateDataPointCount(chartConfig) {
504
+ const data = chartConfig.data;
505
+ if (!data?.datasets)
506
+ return 0;
507
+ return data.datasets.reduce((total, dataset) => {
508
+ return total + (Array.isArray(dataset.data) ? dataset.data.length : 0);
509
+ }, 0);
510
+ }
511
+ /**
512
+ * Get suggested canvas size based on chart type and data
513
+ */
514
+ getSuggestedSize(chartType, dataPointCount) {
515
+ const baseSize = { width: 400, height: 300 };
516
+ // Adjust for chart type
517
+ if (chartType === 'pie' ||
518
+ chartType === 'doughnut' ||
519
+ chartType === 'polarArea') {
520
+ return { width: 400, height: 400 }; // Square for circular charts
521
+ }
522
+ if (chartType === 'radar') {
523
+ return { width: 450, height: 450 }; // Square for radar charts
524
+ }
525
+ // Adjust for data density
526
+ if (dataPointCount > 50) {
527
+ return { width: 600, height: 400 };
528
+ }
529
+ return baseSize;
530
+ }
531
+ /**
532
+ * Generate actual chart file using chartjs-node-canvas
533
+ */
534
+ async generateChartFile(chartConfig, dimensions) {
535
+ const { width, height } = dimensions;
536
+ // Create chartjs-node-canvas instance
537
+ const chartJSNodeCanvas = new ChartJSNodeCanvas({
538
+ width,
539
+ height,
540
+ backgroundColour: 'white',
541
+ });
542
+ try {
543
+ // Generate the chart buffer
544
+ console.log(`🎨 [ChartJSTool] Rendering chart to buffer (${width}x${height})...`);
545
+ const buffer = await chartJSNodeCanvas.renderToBuffer(chartConfig);
546
+ // Determine file path
547
+ const outputDir = this.params.filePath || '/tmp/charts';
548
+ const fileName = this.params.fileName ||
549
+ `chart-${this.params.chartType}-${Date.now()}.png`;
550
+ const fullPath = path.join(outputDir, fileName);
551
+ // Ensure directory exists
552
+ await fs.mkdir(outputDir, { recursive: true });
553
+ // Write file
554
+ await fs.writeFile(fullPath, buffer);
555
+ // Verify file exists and get size
556
+ const stats = await fs.stat(fullPath);
557
+ console.log(`💾 [ChartJSTool] Chart file generated: ${fullPath}`);
558
+ return {
559
+ filePath: fullPath,
560
+ fileExists: true,
561
+ fileSize: stats.size,
562
+ };
563
+ }
564
+ catch (error) {
565
+ console.error(`❌ [ChartJSTool] File generation failed:`, error);
566
+ throw new Error(`Chart file generation failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
567
+ }
568
+ }
569
+ }
570
+ //# sourceMappingURL=chart-js-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-js-tool.js","sourceRoot":"","sources":["../../../src/bubbles/tool-bubble/chart-js-tool.ts"],"names":[],"mappings":"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"}