@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,394 @@
1
+ /**
2
+ * JSON parsing utilities extracted from AI Agent for reusability and testing
3
+ */
4
+ /**
5
+ * Strip markdown code fences and return inner content.
6
+ */
7
+ function stripCodeFences(input) {
8
+ let s = input.trim();
9
+ // Remove fenced blocks entirely, keep inner JSON
10
+ s = s.replace(/```(?:json)?\s*\n?([\s\S]*?)\n?```/g, '$1');
11
+ s = s.replace(/^```json\s*/, '').replace(/\s*```[^\n]*$/, '');
12
+ return s.trim();
13
+ }
14
+ /**
15
+ * Extract the first top-level JSON object/array from mixed text using a scanner
16
+ * that respects quotes and escaping.
17
+ */
18
+ function extractTopLevelJson(input) {
19
+ const s = input;
20
+ let start = -1;
21
+ for (let i = 0; i < s.length; i++) {
22
+ const ch = s[i];
23
+ if (ch === '{' || ch === '[') {
24
+ start = i;
25
+ break;
26
+ }
27
+ }
28
+ if (start === -1)
29
+ return null;
30
+ const stack = [];
31
+ let insideString = false;
32
+ let escapeNext = false;
33
+ let end = -1;
34
+ for (let i = start; i < s.length; i++) {
35
+ const ch = s[i];
36
+ if (insideString) {
37
+ if (escapeNext) {
38
+ escapeNext = false;
39
+ }
40
+ else if (ch === '\\') {
41
+ escapeNext = true;
42
+ }
43
+ else if (ch === '"') {
44
+ insideString = false;
45
+ }
46
+ }
47
+ else {
48
+ if (ch === '"') {
49
+ insideString = true;
50
+ }
51
+ else if (ch === '{') {
52
+ stack.push('object');
53
+ }
54
+ else if (ch === '[') {
55
+ stack.push('array');
56
+ }
57
+ else if (ch === '}') {
58
+ if (stack[stack.length - 1] === 'object')
59
+ stack.pop();
60
+ if (stack.length === 0) {
61
+ end = i;
62
+ break;
63
+ }
64
+ }
65
+ else if (ch === ']') {
66
+ if (stack[stack.length - 1] === 'array')
67
+ stack.pop();
68
+ if (stack.length === 0) {
69
+ end = i;
70
+ break;
71
+ }
72
+ }
73
+ }
74
+ }
75
+ if (end !== -1) {
76
+ return s.slice(start, end + 1);
77
+ }
78
+ // If not properly closed, return from start to end and let post-processing fix it
79
+ return s.slice(start);
80
+ }
81
+ /**
82
+ * State-machine pass to escape problematic quotes and control chars inside strings.
83
+ * Heuristic: inside a string, a quote is considered an end if the next non-WS
84
+ * char is a valid JSON delimiter for the string type; otherwise, we escape it.
85
+ */
86
+ function escapeProblematicQuotesAndControlChars(input) {
87
+ const out = [];
88
+ const scope = [];
89
+ let insideString = false;
90
+ let escapeNext = false;
91
+ let isKeyString = false;
92
+ let prevNonWS = null;
93
+ const isWhitespace = (c) => /\s/.test(c);
94
+ for (let i = 0; i < input.length; i++) {
95
+ const ch = input[i];
96
+ if (!insideString) {
97
+ if (ch === '{') {
98
+ scope.push('object');
99
+ out.push(ch);
100
+ prevNonWS = ch;
101
+ continue;
102
+ }
103
+ if (ch === '[') {
104
+ scope.push('array');
105
+ out.push(ch);
106
+ prevNonWS = ch;
107
+ continue;
108
+ }
109
+ if (ch === '}' || ch === ']') {
110
+ scope.pop();
111
+ out.push(ch);
112
+ prevNonWS = ch;
113
+ continue;
114
+ }
115
+ if (ch === '"') {
116
+ // Determine key vs value string
117
+ if (prevNonWS === ':') {
118
+ isKeyString = false;
119
+ }
120
+ else if (scope[scope.length - 1] === 'object' &&
121
+ (prevNonWS === '{' || prevNonWS === ',' || prevNonWS === null)) {
122
+ isKeyString = true;
123
+ }
124
+ else {
125
+ // In arrays or after colon, consider as value string
126
+ isKeyString = false;
127
+ }
128
+ insideString = true;
129
+ out.push('"');
130
+ continue;
131
+ }
132
+ if (!isWhitespace(ch)) {
133
+ prevNonWS = ch;
134
+ }
135
+ out.push(ch);
136
+ continue;
137
+ }
138
+ // inside string
139
+ if (escapeNext) {
140
+ out.push(ch);
141
+ escapeNext = false;
142
+ continue;
143
+ }
144
+ if (ch === '\\') {
145
+ out.push('\\');
146
+ escapeNext = true;
147
+ continue;
148
+ }
149
+ if (ch === '"') {
150
+ // Peek next non-whitespace char
151
+ let j = i + 1;
152
+ let nextNonWS;
153
+ while (j < input.length) {
154
+ const c = input[j];
155
+ if (!isWhitespace(c)) {
156
+ nextNonWS = c;
157
+ break;
158
+ }
159
+ j++;
160
+ }
161
+ const validTerminator = isKeyString
162
+ ? nextNonWS === ':'
163
+ : nextNonWS === ',' ||
164
+ nextNonWS === ']' ||
165
+ nextNonWS === '}' ||
166
+ nextNonWS === undefined;
167
+ if (validTerminator) {
168
+ insideString = false;
169
+ out.push('"');
170
+ continue;
171
+ }
172
+ // Treat as literal quote inside value string
173
+ out.push('\\"');
174
+ continue;
175
+ }
176
+ if (ch === '\n') {
177
+ out.push('\\n');
178
+ continue;
179
+ }
180
+ if (ch === '\r') {
181
+ out.push('\\r');
182
+ continue;
183
+ }
184
+ if (ch === '\t') {
185
+ out.push('\\t');
186
+ continue;
187
+ }
188
+ out.push(ch);
189
+ }
190
+ if (insideString) {
191
+ // Close any unterminated string
192
+ out.push('"');
193
+ }
194
+ return out.join('');
195
+ }
196
+ /**
197
+ * Extract JSON from mixed text/JSON responses with robust cleanup
198
+ */
199
+ export function extractAndCleanJSON(input) {
200
+ const stripped = stripCodeFences(input);
201
+ // Preferred: scan/extract top-level JSON
202
+ const scanned = extractTopLevelJson(stripped);
203
+ if (scanned) {
204
+ const cleaned = postProcessJSON(scanned);
205
+ try {
206
+ JSON.parse(cleaned);
207
+ return cleaned;
208
+ }
209
+ catch {
210
+ // continue
211
+ }
212
+ }
213
+ const trimmed = stripped.trim();
214
+ // Fallback: regex match for object/array
215
+ const jsonMatch = trimmed.match(/({[^{}]*(?:{[^{}]*}[^{}]*)*}|\[[^[\]]*(?:\[[^[\]]*\][^[\]]*)*\])/);
216
+ if (jsonMatch) {
217
+ const candidate = jsonMatch[1];
218
+ const cleaned = postProcessJSON(candidate);
219
+ try {
220
+ JSON.parse(cleaned);
221
+ return cleaned;
222
+ }
223
+ catch {
224
+ // Continue to other strategies
225
+ }
226
+ }
227
+ // Last fallback: slice from first brace/bracket and try to fix
228
+ const firstBracketIdx = trimmed.search(/[[{]/);
229
+ if (firstBracketIdx !== -1) {
230
+ const candidate = trimmed.slice(firstBracketIdx);
231
+ const cleaned = postProcessJSON(candidate);
232
+ try {
233
+ JSON.parse(cleaned);
234
+ return cleaned;
235
+ }
236
+ catch {
237
+ // Continue to other strategies
238
+ }
239
+ }
240
+ return null;
241
+ }
242
+ /**
243
+ * Post-process potentially malformed JSON string to fix common issues
244
+ */
245
+ export function postProcessJSON(jsonString) {
246
+ let processed = jsonString.trim();
247
+ // Remove markdown code blocks if present
248
+ processed = stripCodeFences(processed);
249
+ // Remove trailing backslashes and other non-JSON characters after closing braces/brackets
250
+ processed = processed.replace(/([}\]])\s*\\+[^\n]*$/g, '$1');
251
+ // Remove common prefixes that AI might add
252
+ processed = processed
253
+ .replace(/^(?:Here's|Here is|The JSON is|Result:|Answer:)\s*:?\s*/i, '')
254
+ .replace(/^(?:the result|the response|response|result)\s*:?\s*/i, '')
255
+ .replace(/^["']?\s*/, '') // Remove leading quotes/spaces
256
+ .replace(/\s*["']?$/, ''); // Remove trailing quotes/spaces
257
+ // Fix unquoted keys first (before dealing with quotes)
258
+ processed = processed.replace(/([{,]\s*)([a-zA-Z_$][a-zA-Z0-9_$]*)(\s*):/g, '$1"$2"$3:');
259
+ // Remove trailing commas before closing brackets/braces
260
+ processed = processed.replace(/,\s*(?=[}\]])/g, '');
261
+ // Only convert single-quoted strings to double-quoted strings if the ENTIRE JSON uses single quotes
262
+ // We detect this by checking if there are more single-quoted keys/values than double-quoted ones
263
+ const singleQuotedPattern = /:\s*'[^']*'/g;
264
+ const doubleQuotedPattern = /:\s*"[^"]*"/g;
265
+ const singleQuoteCount = (processed.match(singleQuotedPattern) || []).length;
266
+ const doubleQuoteCount = (processed.match(doubleQuotedPattern) || []).length;
267
+ // Only do global single-quote replacement if it looks like the JSON is using single quotes throughout
268
+ if (singleQuoteCount > doubleQuoteCount && singleQuoteCount > 2) {
269
+ processed = processed.replace(/(^|:|\[|,|\{)\s*'([^'\\]*(?:\\.[^'\\]*)*)'/g, '$1"$2"');
270
+ }
271
+ // Escape problematic quotes and control chars in strings via state machine
272
+ processed = escapeProblematicQuotesAndControlChars(processed);
273
+ // Remove trailing commas before closing brackets/braces again after quote fixes
274
+ processed = processed.replace(/,\s*(?=[}\]])/g, '');
275
+ // Remove control characters that can break JSON
276
+ // eslint-disable-next-line no-control-regex
277
+ processed = processed.replace(/[\x00-\x08\x0B-\x0C\x0E-\x1F\x7F]/g, '');
278
+ // Remove any trailing non-JSON content (like explanatory text after JSON)
279
+ const lastObj = processed.lastIndexOf('}');
280
+ const lastArr = processed.lastIndexOf(']');
281
+ const lastClose = Math.max(lastObj, lastArr);
282
+ if (lastClose !== -1) {
283
+ processed = processed.slice(0, lastClose + 1);
284
+ }
285
+ // Attempt to balance brackets and braces more intelligently
286
+ const openBraces = (processed.match(/{/g) || []).length;
287
+ const closeBraces = (processed.match(/}/g) || []).length;
288
+ const openBrackets = (processed.match(/\[/g) || []).length;
289
+ const closeBrackets = (processed.match(/]/g) || []).length;
290
+ // Add missing closing braces/brackets, but only if the string looks like it should have them
291
+ if (openBraces > closeBraces && processed.includes('{')) {
292
+ // Only add closing braces if the string starts with { or contains proper object structure
293
+ if (processed.trim().startsWith('{') || processed.includes('":')) {
294
+ // For nested structures, we need to be more careful about the order
295
+ // First close inner structures, then outer ones
296
+ const missingBraces = openBraces - closeBraces;
297
+ const missingBrackets = openBrackets - closeBrackets;
298
+ // If we have both missing braces and brackets, close brackets first (inner structures)
299
+ if (missingBrackets > 0 && processed.includes('[')) {
300
+ processed += ']'.repeat(missingBrackets);
301
+ }
302
+ // Then close braces
303
+ processed += '}'.repeat(missingBraces);
304
+ }
305
+ }
306
+ else if (openBrackets > closeBrackets && processed.includes('[')) {
307
+ // Only add closing brackets if the string starts with [ or contains array structure
308
+ if (processed.trim().startsWith('[') || processed.includes('[')) {
309
+ processed += ']'.repeat(openBrackets - closeBrackets);
310
+ }
311
+ }
312
+ // Remove excess closing braces/brackets
313
+ if (closeBraces > openBraces) {
314
+ const excess = closeBraces - openBraces;
315
+ for (let i = 0; i < excess; i++) {
316
+ processed = processed.replace(/}\s*$/, '');
317
+ }
318
+ }
319
+ if (closeBrackets > openBrackets) {
320
+ const excess = closeBrackets - openBrackets;
321
+ for (let i = 0; i < excess; i++) {
322
+ processed = processed.replace(/]\s*$/, '');
323
+ }
324
+ }
325
+ return processed;
326
+ }
327
+ /**
328
+ * Multi-stage JSON parsing approach with various fallback strategies
329
+ */
330
+ export function parseJsonWithFallbacks(finalResponse) {
331
+ const attempts = [
332
+ // Attempt 1: Try parsing the original response as-is
333
+ () => {
334
+ JSON.parse(finalResponse);
335
+ return finalResponse;
336
+ },
337
+ // Attempt 2: Strip code fences, scan-extract, then post-process
338
+ () => {
339
+ const stripped = stripCodeFences(finalResponse);
340
+ const scanned = extractTopLevelJson(stripped);
341
+ if (!scanned)
342
+ throw new Error('No valid JSON found');
343
+ const cleaned = postProcessJSON(scanned);
344
+ JSON.parse(cleaned);
345
+ return cleaned;
346
+ },
347
+ // Attempt 3: Try basic post-processing on original
348
+ () => {
349
+ const processed = postProcessJSON(finalResponse);
350
+ JSON.parse(processed);
351
+ return processed;
352
+ },
353
+ // Attempt 4: Last resort - try to wrap in object if it looks like key-value content
354
+ () => {
355
+ const trimmed = finalResponse.trim();
356
+ if (trimmed && !trimmed.startsWith('{') && !trimmed.startsWith('[')) {
357
+ // If it contains key-like patterns, try wrapping in object
358
+ if (trimmed.includes(':') && !trimmed.includes('\n\n')) {
359
+ const wrapped = `{${trimmed}}`;
360
+ const processed = postProcessJSON(wrapped);
361
+ JSON.parse(processed);
362
+ return processed;
363
+ }
364
+ }
365
+ throw new Error('Cannot convert to valid JSON');
366
+ },
367
+ ];
368
+ let lastError = null;
369
+ for (let i = 0; i < attempts.length; i++) {
370
+ try {
371
+ const result = attempts[i]();
372
+ if (i > 0) {
373
+ console.log(`[JSON Parser] Parsing successful on attempt ${i + 1}`);
374
+ }
375
+ return { response: result, error: undefined, success: true };
376
+ }
377
+ catch (error) {
378
+ lastError =
379
+ error instanceof Error ? error : new Error('Unknown parsing error');
380
+ console.warn(`[JSON Parser] Parsing attempt ${i + 1} failed:`, lastError.message);
381
+ }
382
+ }
383
+ // All attempts failed
384
+ console.warn('[JSON Parser] All JSON parsing attempts failed');
385
+ console.warn('[JSON Parser] Original response:', finalResponse);
386
+ // Try to provide the best available response even if not valid JSON
387
+ const lastAttempt = extractAndCleanJSON(finalResponse) || postProcessJSON(finalResponse);
388
+ return {
389
+ response: lastAttempt,
390
+ error: `AI Agent failed to generate valid JSON. Post-processing attempted but JSON is still malformed: ${lastError?.message || 'Unknown error'}`,
391
+ success: false,
392
+ };
393
+ }
394
+ //# sourceMappingURL=json-parsing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-parsing.js","sourceRoot":"","sources":["../../src/utils/json-parsing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { z } from 'zod';
2
+ import type { BubbleResult, BubbleOperationResult } from '../types/bubble.js';
3
+ /**
4
+ * Utility class for generating mock data from Zod schemas
5
+ * Useful for testing, development, and creating sample data
6
+ */
7
+ export declare class MockDataGenerator {
8
+ /**
9
+ * Generate a complete mock BubbleResult from a result schema
10
+ */
11
+ static generateMockResult<TResult extends BubbleOperationResult>(resultSchema: z.ZodObject<z.ZodRawShape>): BubbleResult<TResult>;
12
+ /**
13
+ * Generate mock data from JSON Schema
14
+ * Converts JSON Schema to mock data with realistic values
15
+ */
16
+ static generateMockFromJsonSchema(jsonSchema: Record<string, unknown>): Record<string, unknown>;
17
+ /**
18
+ * Generate a mock value for a specific JSON Schema property
19
+ */
20
+ static generateMockValueFromJsonSchema(schema: Record<string, unknown>): unknown;
21
+ /**
22
+ * Generate mock data object from a Zod schema
23
+ * Recursively handles nested objects, arrays, and primitive types
24
+ */
25
+ static generateMockFromSchema(schema: z.ZodObject<z.ZodRawShape>): Record<string, unknown>;
26
+ /**
27
+ * Generate a mock value for a specific Zod type
28
+ */
29
+ static generateMockValue(zodType: z.ZodTypeAny): unknown;
30
+ /**
31
+ * Generate mock string values with format-specific handling
32
+ */
33
+ private static generateMockString;
34
+ /**
35
+ * Generate mock number values respecting constraints
36
+ */
37
+ private static generateMockNumber;
38
+ /**
39
+ * Generate mock data with custom seed for reproducible results
40
+ */
41
+ static generateMockWithSeed<TResult extends BubbleOperationResult>(resultSchema: z.ZodObject<z.ZodRawShape>, seed: number): BubbleResult<TResult>;
42
+ }
43
+ //# sourceMappingURL=mock-data-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-data-generator.d.ts","sourceRoot":"","sources":["../../src/utils/mock-data-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE9E;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAAO,SAAS,qBAAqB,EAC7D,YAAY,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,GACvC,YAAY,CAAC,OAAO,CAAC;IAYxB;;;OAGG;IACH,MAAM,CAAC,0BAA0B,CAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA0B1B;;OAEG;IACH,MAAM,CAAC,+BAA+B,CACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO;IAwEV;;;OAGG;IACH,MAAM,CAAC,sBAAsB,CAC3B,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,GACjC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IA0B1B;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,GAAG,OAAO;IA0HxD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAoCjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IA4BjC;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,OAAO,SAAS,qBAAqB,EAC/D,YAAY,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,EACxC,IAAI,EAAE,MAAM,GACX,YAAY,CAAC,OAAO,CAAC;CAmBzB"}