@bubblelab/bubble-core 0.1.9 → 0.1.10

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 (186) hide show
  1. package/dist/bubble-bundle.d.ts +252 -1686
  2. package/dist/bubble-factory.d.ts.map +1 -1
  3. package/dist/bubble-factory.js +51 -19
  4. package/dist/bubble-factory.js.map +1 -1
  5. package/dist/bubble-flow/bubble-flow-class.d.ts +17 -1
  6. package/dist/bubble-flow/bubble-flow-class.d.ts.map +1 -1
  7. package/dist/bubble-flow/bubble-flow-class.js +16 -0
  8. package/dist/bubble-flow/bubble-flow-class.js.map +1 -1
  9. package/dist/bubble-flow/sample/data-analyst-flow.d.ts +1 -1
  10. package/dist/bubble-flow/sample/data-analyst-flow.d.ts.map +1 -1
  11. package/dist/bubble-flow/sample/error-ts.d.ts +1 -1
  12. package/dist/bubble-flow/sample/error-ts.d.ts.map +1 -1
  13. package/dist/bubble-flow/sample/sanitytest.d.ts +1 -1
  14. package/dist/bubble-flow/sample/sanitytest.d.ts.map +1 -1
  15. package/dist/bubble-flow/sample/simple-webhook-2.d.ts +1 -1
  16. package/dist/bubble-flow/sample/simple-webhook-2.d.ts.map +1 -1
  17. package/dist/bubble-flow/sample/simple-webhook.d.ts +1 -1
  18. package/dist/bubble-flow/sample/simple-webhook.d.ts.map +1 -1
  19. package/dist/bubble-flow/sample/simplified-data-analysis.flow.d.ts +1 -1
  20. package/dist/bubble-flow/sample/simplified-data-analysis.flow.d.ts.map +1 -1
  21. package/dist/bubble-flow/sample/slack-v0.1.d.ts +1 -1
  22. package/dist/bubble-flow/sample/slack-v0.1.d.ts.map +1 -1
  23. package/dist/bubble-flow/sample/slackagenttest.d.ts +1 -1
  24. package/dist/bubble-flow/sample/slackagenttest.d.ts.map +1 -1
  25. package/dist/bubbles/service-bubble/ai-agent.d.ts +30 -30
  26. package/dist/bubbles/service-bubble/ai-agent.d.ts.map +1 -1
  27. package/dist/bubbles/service-bubble/ai-agent.js +3 -1
  28. package/dist/bubbles/service-bubble/ai-agent.js.map +1 -1
  29. package/dist/bubbles/service-bubble/apify/actors/instagram-hashtag-scraper.d.ts +34 -34
  30. package/dist/bubbles/service-bubble/apify/actors/instagram-scraper.d.ts +42 -42
  31. package/dist/bubbles/service-bubble/apify/actors/linkedin-posts-search.d.ts +21 -21
  32. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-posts.d.ts +6 -6
  33. package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.d.ts +184 -0
  34. package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.d.ts.map +1 -0
  35. package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.js +145 -0
  36. package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.js.map +1 -0
  37. package/dist/bubbles/service-bubble/apify/actors/youtube-transcript-scraper.d.ts +52 -0
  38. package/dist/bubbles/service-bubble/apify/actors/youtube-transcript-scraper.d.ts.map +1 -0
  39. package/dist/bubbles/service-bubble/apify/actors/youtube-transcript-scraper.js +29 -0
  40. package/dist/bubbles/service-bubble/apify/actors/youtube-transcript-scraper.js.map +1 -0
  41. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts +338 -109
  42. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts.map +1 -1
  43. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.js +16 -0
  44. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.js.map +1 -1
  45. package/dist/bubbles/service-bubble/apify/apify.d.ts +10 -10
  46. package/dist/bubbles/service-bubble/apify/index.d.ts +2 -0
  47. package/dist/bubbles/service-bubble/apify/index.d.ts.map +1 -1
  48. package/dist/bubbles/service-bubble/apify/index.js +3 -0
  49. package/dist/bubbles/service-bubble/apify/index.js.map +1 -1
  50. package/dist/bubbles/service-bubble/apify/types.js +1 -2
  51. package/dist/bubbles/service-bubble/apify/types.js.map +1 -1
  52. package/dist/bubbles/service-bubble/gmail.d.ts +678 -184
  53. package/dist/bubbles/service-bubble/gmail.d.ts.map +1 -1
  54. package/dist/bubbles/service-bubble/gmail.js +435 -7
  55. package/dist/bubbles/service-bubble/gmail.js.map +1 -1
  56. package/dist/bubbles/service-bubble/google-calendar.d.ts +60 -60
  57. package/dist/bubbles/service-bubble/google-drive.d.ts +301 -72
  58. package/dist/bubbles/service-bubble/google-drive.d.ts.map +1 -1
  59. package/dist/bubbles/service-bubble/google-drive.js +65 -75
  60. package/dist/bubbles/service-bubble/google-drive.js.map +1 -1
  61. package/dist/bubbles/service-bubble/google-sheets.d.ts +76 -76
  62. package/dist/bubbles/service-bubble/hello-world.d.ts +4 -4
  63. package/dist/bubbles/service-bubble/hello-world.js +2 -2
  64. package/dist/bubbles/service-bubble/hello-world.js.map +1 -1
  65. package/dist/bubbles/service-bubble/http.d.ts +10 -10
  66. package/dist/bubbles/service-bubble/postgresql.d.ts +12 -12
  67. package/dist/bubbles/service-bubble/resend.d.ts +16 -16
  68. package/dist/bubbles/service-bubble/slack.d.ts +469 -469
  69. package/dist/bubbles/service-bubble/storage.d.ts +36 -36
  70. package/dist/bubbles/service-bubble/storage.d.ts.map +1 -1
  71. package/dist/bubbles/service-bubble/storage.js +16 -5
  72. package/dist/bubbles/service-bubble/storage.js.map +1 -1
  73. package/dist/bubbles/service-bubble/x-twitter.d.ts +814 -0
  74. package/dist/bubbles/service-bubble/x-twitter.d.ts.map +1 -0
  75. package/dist/bubbles/service-bubble/x-twitter.js +445 -0
  76. package/dist/bubbles/service-bubble/x-twitter.js.map +1 -0
  77. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +20 -20
  78. package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +10 -10
  79. package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts.map +1 -1
  80. package/dist/bubbles/tool-bubble/get-bubble-details-tool.js +17 -9
  81. package/dist/bubbles/tool-bubble/get-bubble-details-tool.js.map +1 -1
  82. package/dist/bubbles/tool-bubble/instagram-tool.d.ts +86 -86
  83. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +134 -134
  84. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +69 -64
  85. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts.map +1 -1
  86. package/dist/bubbles/tool-bubble/reddit-scrape-tool.js +97 -22
  87. package/dist/bubbles/tool-bubble/reddit-scrape-tool.js.map +1 -1
  88. package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +6 -6
  89. package/dist/bubbles/tool-bubble/research-agent-tool.js +4 -4
  90. package/dist/bubbles/tool-bubble/research-agent-tool.js.map +1 -1
  91. package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +8 -8
  92. package/dist/bubbles/tool-bubble/tool-template.d.ts +8 -8
  93. package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts +10 -10
  94. package/dist/bubbles/tool-bubble/web-extract-tool.d.ts +4 -4
  95. package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts +12 -12
  96. package/dist/bubbles/tool-bubble/web-search-tool.d.ts +11 -10
  97. package/dist/bubbles/tool-bubble/web-search-tool.d.ts.map +1 -1
  98. package/dist/bubbles/tool-bubble/web-search-tool.js +5 -1
  99. package/dist/bubbles/tool-bubble/web-search-tool.js.map +1 -1
  100. package/dist/bubbles/tool-bubble/youtube-tool.d.ts +394 -0
  101. package/dist/bubbles/tool-bubble/youtube-tool.d.ts.map +1 -0
  102. package/dist/bubbles/tool-bubble/youtube-tool.js +352 -0
  103. package/dist/bubbles/tool-bubble/youtube-tool.js.map +1 -0
  104. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts +47 -36
  105. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts.map +1 -1
  106. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js +91 -65
  107. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js.map +1 -1
  108. package/dist/bubbles/workflow-bubble/database-analyzer.workflow.d.ts +4 -4
  109. package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +70 -70
  110. package/dist/bubbles/workflow-bubble/parse-document.workflow.d.ts +66 -66
  111. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +56 -56
  112. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts.map +1 -1
  113. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.js.map +1 -1
  114. package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +44 -44
  115. package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts.map +1 -1
  116. package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.js +1 -1
  117. package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.js.map +1 -1
  118. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +32 -32
  119. package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +58 -58
  120. package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts +18 -18
  121. package/dist/bubbles.json +69 -54
  122. package/dist/index.d.ts +4 -2
  123. package/dist/index.d.ts.map +1 -1
  124. package/dist/index.js +2 -1
  125. package/dist/index.js.map +1 -1
  126. package/dist/logging/BubbleLogger.d.ts.map +1 -1
  127. package/dist/logging/BubbleLogger.js +20 -13
  128. package/dist/logging/BubbleLogger.js.map +1 -1
  129. package/dist/logging/StreamingBubbleLogger.d.ts.map +1 -1
  130. package/dist/logging/StreamingBubbleLogger.js +5 -5
  131. package/dist/logging/StreamingBubbleLogger.js.map +1 -1
  132. package/dist/test-gm.d.ts +10 -0
  133. package/dist/test-gm.d.ts.map +1 -0
  134. package/dist/test-gm.js +95 -0
  135. package/dist/test-gm.js.map +1 -0
  136. package/dist/types/base-bubble-class.d.ts +1 -1
  137. package/dist/types/base-bubble-class.d.ts.map +1 -1
  138. package/dist/types/base-bubble-class.js +29 -21
  139. package/dist/types/base-bubble-class.js.map +1 -1
  140. package/dist/types/bubble.d.ts +1 -10
  141. package/dist/types/bubble.d.ts.map +1 -1
  142. package/dist/types/bubble.js +1 -1
  143. package/dist/types/bubble.js.map +1 -1
  144. package/dist/types/service-bubble-class.d.ts +1 -1
  145. package/dist/types/service-bubble-class.d.ts.map +1 -1
  146. package/dist/types/tool-bubble-class.d.ts +1 -1
  147. package/dist/types/tool-bubble-class.d.ts.map +1 -1
  148. package/dist/types/tool-bubble-class.js +0 -2
  149. package/dist/types/tool-bubble-class.js.map +1 -1
  150. package/dist/types/workflow-bubble-class.d.ts +1 -1
  151. package/dist/types/workflow-bubble-class.d.ts.map +1 -1
  152. package/dist/utils/agent-formatter.d.ts.map +1 -1
  153. package/dist/utils/agent-formatter.js +2 -2
  154. package/dist/utils/agent-formatter.js.map +1 -1
  155. package/dist/utils/bubbleflow-validation.d.ts.map +1 -1
  156. package/dist/utils/bubbleflow-validation.js +89 -32
  157. package/dist/utils/bubbleflow-validation.js.map +1 -1
  158. package/dist/utils/error-sanitizer.d.ts +12 -0
  159. package/dist/utils/error-sanitizer.d.ts.map +1 -0
  160. package/dist/utils/error-sanitizer.js +77 -0
  161. package/dist/utils/error-sanitizer.js.map +1 -0
  162. package/package.json +4 -4
  163. package/dist/bubble-trigger/index.d.ts +0 -2
  164. package/dist/bubble-trigger/index.d.ts.map +0 -1
  165. package/dist/bubble-trigger/index.js +0 -2
  166. package/dist/bubble-trigger/index.js.map +0 -1
  167. package/dist/bubble-trigger/types.d.ts +0 -87
  168. package/dist/bubble-trigger/types.d.ts.map +0 -1
  169. package/dist/bubble-trigger/types.js +0 -14
  170. package/dist/bubble-trigger/types.js.map +0 -1
  171. package/dist/bubbles/service-bubble/apify/api-scraper.schema.d.ts +0 -370
  172. package/dist/bubbles/service-bubble/apify/api-scraper.schema.d.ts.map +0 -1
  173. package/dist/bubbles/service-bubble/apify/api-scraper.schema.js +0 -14
  174. package/dist/bubbles/service-bubble/apify/api-scraper.schema.js.map +0 -1
  175. package/dist/bubbles/service-bubble/apify.d.ts +0 -136
  176. package/dist/bubbles/service-bubble/apify.d.ts.map +0 -1
  177. package/dist/bubbles/service-bubble/apify.js +0 -282
  178. package/dist/bubbles/service-bubble/apify.js.map +0 -1
  179. package/dist/types/ai-models.d.ts +0 -4
  180. package/dist/types/ai-models.d.ts.map +0 -1
  181. package/dist/types/ai-models.js +0 -20
  182. package/dist/types/ai-models.js.map +0 -1
  183. package/dist/types/api-scraper.schema.d.ts +0 -453
  184. package/dist/types/api-scraper.schema.d.ts.map +0 -1
  185. package/dist/types/api-scraper.schema.js +0 -160
  186. package/dist/types/api-scraper.schema.js.map +0 -1
@@ -19,6 +19,7 @@ declare const RedditPostSchema: z.ZodObject<{
19
19
  flair: z.ZodOptional<z.ZodString>;
20
20
  }, "strip", z.ZodTypeAny, {
21
21
  title: string;
22
+ subreddit: string;
22
23
  url: string;
23
24
  author: string;
24
25
  score: number;
@@ -26,14 +27,14 @@ declare const RedditPostSchema: z.ZodObject<{
26
27
  createdUtc: number;
27
28
  postUrl: string;
28
29
  selftext: string;
29
- subreddit: string;
30
30
  isSelf: boolean;
31
+ postHint?: string | null | undefined;
31
32
  thumbnail?: string | undefined;
32
33
  domain?: string | undefined;
33
- postHint?: string | null | undefined;
34
34
  flair?: string | undefined;
35
35
  }, {
36
36
  title: string;
37
+ subreddit: string;
37
38
  url: string;
38
39
  author: string;
39
40
  score: number;
@@ -41,15 +42,14 @@ declare const RedditPostSchema: z.ZodObject<{
41
42
  createdUtc: number;
42
43
  postUrl: string;
43
44
  selftext: string;
44
- subreddit: string;
45
45
  isSelf: boolean;
46
+ postHint?: string | null | undefined;
46
47
  thumbnail?: string | undefined;
47
48
  domain?: string | undefined;
48
- postHint?: string | null | undefined;
49
49
  flair?: string | undefined;
50
50
  }>;
51
51
  declare const RedditScrapeToolParamsSchema: z.ZodObject<{
52
- subreddit: z.ZodString;
52
+ subreddit: z.ZodPipeline<z.ZodEffects<z.ZodString, string, string>, z.ZodString>;
53
53
  limit: z.ZodDefault<z.ZodNumber>;
54
54
  sort: z.ZodDefault<z.ZodEnum<["hot", "new", "top", "rising"]>>;
55
55
  timeFilter: z.ZodOptional<z.ZodEnum<["hour", "day", "week", "month", "year", "all"]>>;
@@ -59,22 +59,22 @@ declare const RedditScrapeToolParamsSchema: z.ZodObject<{
59
59
  credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>;
60
60
  }, "strip", z.ZodTypeAny, {
61
61
  sort: "hot" | "new" | "top" | "rising";
62
- limit: number;
63
62
  subreddit: string;
63
+ limit: number;
64
64
  filterToday: boolean;
65
65
  includeStickied: boolean;
66
- credentials?: Partial<Record<CredentialType, string>> | undefined;
67
- timeFilter?: "all" | "hour" | "day" | "week" | "month" | "year" | undefined;
66
+ timeFilter?: "hour" | "day" | "week" | "month" | "year" | "all" | undefined;
68
67
  minScore?: number | undefined;
68
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
69
69
  }, {
70
70
  subreddit: string;
71
71
  sort?: "hot" | "new" | "top" | "rising" | undefined;
72
- credentials?: Partial<Record<CredentialType, string>> | undefined;
73
72
  limit?: number | undefined;
74
- timeFilter?: "all" | "hour" | "day" | "week" | "month" | "year" | undefined;
73
+ timeFilter?: "hour" | "day" | "week" | "month" | "year" | "all" | undefined;
75
74
  filterToday?: boolean | undefined;
76
75
  includeStickied?: boolean | undefined;
77
76
  minScore?: number | undefined;
77
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
78
78
  }>;
79
79
  declare const RedditScrapeToolResultSchema: z.ZodObject<{
80
80
  posts: z.ZodArray<z.ZodObject<{
@@ -94,6 +94,7 @@ declare const RedditScrapeToolResultSchema: z.ZodObject<{
94
94
  flair: z.ZodOptional<z.ZodString>;
95
95
  }, "strip", z.ZodTypeAny, {
96
96
  title: string;
97
+ subreddit: string;
97
98
  url: string;
98
99
  author: string;
99
100
  score: number;
@@ -101,14 +102,14 @@ declare const RedditScrapeToolResultSchema: z.ZodObject<{
101
102
  createdUtc: number;
102
103
  postUrl: string;
103
104
  selftext: string;
104
- subreddit: string;
105
105
  isSelf: boolean;
106
+ postHint?: string | null | undefined;
106
107
  thumbnail?: string | undefined;
107
108
  domain?: string | undefined;
108
- postHint?: string | null | undefined;
109
109
  flair?: string | undefined;
110
110
  }, {
111
111
  title: string;
112
+ subreddit: string;
112
113
  url: string;
113
114
  author: string;
114
115
  score: number;
@@ -116,11 +117,10 @@ declare const RedditScrapeToolResultSchema: z.ZodObject<{
116
117
  createdUtc: number;
117
118
  postUrl: string;
118
119
  selftext: string;
119
- subreddit: string;
120
120
  isSelf: boolean;
121
+ postHint?: string | null | undefined;
121
122
  thumbnail?: string | undefined;
122
123
  domain?: string | undefined;
123
- postHint?: string | null | undefined;
124
124
  flair?: string | undefined;
125
125
  }>, "many">;
126
126
  metadata: z.ZodObject<{
@@ -154,20 +154,9 @@ declare const RedditScrapeToolResultSchema: z.ZodObject<{
154
154
  success: z.ZodBoolean;
155
155
  error: z.ZodString;
156
156
  }, "strip", z.ZodTypeAny, {
157
- error: string;
158
- success: boolean;
159
- metadata: {
160
- sort: string;
161
- subreddit: string;
162
- requestedLimit: number;
163
- actualCount: number;
164
- filteredCount: number;
165
- scrapedAt: string;
166
- apiEndpoint: string;
167
- timeFilter?: string | undefined;
168
- };
169
157
  posts: {
170
158
  title: string;
159
+ subreddit: string;
171
160
  url: string;
172
161
  author: string;
173
162
  score: number;
@@ -175,16 +164,12 @@ declare const RedditScrapeToolResultSchema: z.ZodObject<{
175
164
  createdUtc: number;
176
165
  postUrl: string;
177
166
  selftext: string;
178
- subreddit: string;
179
167
  isSelf: boolean;
168
+ postHint?: string | null | undefined;
180
169
  thumbnail?: string | undefined;
181
170
  domain?: string | undefined;
182
- postHint?: string | null | undefined;
183
171
  flair?: string | undefined;
184
172
  }[];
185
- }, {
186
- error: string;
187
- success: boolean;
188
173
  metadata: {
189
174
  sort: string;
190
175
  subreddit: string;
@@ -195,8 +180,12 @@ declare const RedditScrapeToolResultSchema: z.ZodObject<{
195
180
  apiEndpoint: string;
196
181
  timeFilter?: string | undefined;
197
182
  };
183
+ success: boolean;
184
+ error: string;
185
+ }, {
198
186
  posts: {
199
187
  title: string;
188
+ subreddit: string;
200
189
  url: string;
201
190
  author: string;
202
191
  score: number;
@@ -204,13 +193,24 @@ declare const RedditScrapeToolResultSchema: z.ZodObject<{
204
193
  createdUtc: number;
205
194
  postUrl: string;
206
195
  selftext: string;
207
- subreddit: string;
208
196
  isSelf: boolean;
197
+ postHint?: string | null | undefined;
209
198
  thumbnail?: string | undefined;
210
199
  domain?: string | undefined;
211
- postHint?: string | null | undefined;
212
200
  flair?: string | undefined;
213
201
  }[];
202
+ metadata: {
203
+ sort: string;
204
+ subreddit: string;
205
+ requestedLimit: number;
206
+ actualCount: number;
207
+ filteredCount: number;
208
+ scrapedAt: string;
209
+ apiEndpoint: string;
210
+ timeFilter?: string | undefined;
211
+ };
212
+ success: boolean;
213
+ error: string;
214
214
  }>;
215
215
  type RedditScrapeToolParams = z.output<typeof RedditScrapeToolParamsSchema>;
216
216
  type RedditScrapeToolResult = z.output<typeof RedditScrapeToolResultSchema>;
@@ -219,7 +219,7 @@ type RedditPost = z.output<typeof RedditPostSchema>;
219
219
  export declare class RedditScrapeTool extends ToolBubble<RedditScrapeToolParams, RedditScrapeToolResult> {
220
220
  static readonly bubbleName: BubbleName;
221
221
  static readonly schema: z.ZodObject<{
222
- subreddit: z.ZodString;
222
+ subreddit: z.ZodPipeline<z.ZodEffects<z.ZodString, string, string>, z.ZodString>;
223
223
  limit: z.ZodDefault<z.ZodNumber>;
224
224
  sort: z.ZodDefault<z.ZodEnum<["hot", "new", "top", "rising"]>>;
225
225
  timeFilter: z.ZodOptional<z.ZodEnum<["hour", "day", "week", "month", "year", "all"]>>;
@@ -229,22 +229,22 @@ export declare class RedditScrapeTool extends ToolBubble<RedditScrapeToolParams,
229
229
  credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>;
230
230
  }, "strip", z.ZodTypeAny, {
231
231
  sort: "hot" | "new" | "top" | "rising";
232
- limit: number;
233
232
  subreddit: string;
233
+ limit: number;
234
234
  filterToday: boolean;
235
235
  includeStickied: boolean;
236
- credentials?: Partial<Record<CredentialType, string>> | undefined;
237
- timeFilter?: "all" | "hour" | "day" | "week" | "month" | "year" | undefined;
236
+ timeFilter?: "hour" | "day" | "week" | "month" | "year" | "all" | undefined;
238
237
  minScore?: number | undefined;
238
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
239
239
  }, {
240
240
  subreddit: string;
241
241
  sort?: "hot" | "new" | "top" | "rising" | undefined;
242
- credentials?: Partial<Record<CredentialType, string>> | undefined;
243
242
  limit?: number | undefined;
244
- timeFilter?: "all" | "hour" | "day" | "week" | "month" | "year" | undefined;
243
+ timeFilter?: "hour" | "day" | "week" | "month" | "year" | "all" | undefined;
245
244
  filterToday?: boolean | undefined;
246
245
  includeStickied?: boolean | undefined;
247
246
  minScore?: number | undefined;
247
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
248
248
  }>;
249
249
  static readonly resultSchema: z.ZodObject<{
250
250
  posts: z.ZodArray<z.ZodObject<{
@@ -264,6 +264,7 @@ export declare class RedditScrapeTool extends ToolBubble<RedditScrapeToolParams,
264
264
  flair: z.ZodOptional<z.ZodString>;
265
265
  }, "strip", z.ZodTypeAny, {
266
266
  title: string;
267
+ subreddit: string;
267
268
  url: string;
268
269
  author: string;
269
270
  score: number;
@@ -271,14 +272,14 @@ export declare class RedditScrapeTool extends ToolBubble<RedditScrapeToolParams,
271
272
  createdUtc: number;
272
273
  postUrl: string;
273
274
  selftext: string;
274
- subreddit: string;
275
275
  isSelf: boolean;
276
+ postHint?: string | null | undefined;
276
277
  thumbnail?: string | undefined;
277
278
  domain?: string | undefined;
278
- postHint?: string | null | undefined;
279
279
  flair?: string | undefined;
280
280
  }, {
281
281
  title: string;
282
+ subreddit: string;
282
283
  url: string;
283
284
  author: string;
284
285
  score: number;
@@ -286,11 +287,10 @@ export declare class RedditScrapeTool extends ToolBubble<RedditScrapeToolParams,
286
287
  createdUtc: number;
287
288
  postUrl: string;
288
289
  selftext: string;
289
- subreddit: string;
290
290
  isSelf: boolean;
291
+ postHint?: string | null | undefined;
291
292
  thumbnail?: string | undefined;
292
293
  domain?: string | undefined;
293
- postHint?: string | null | undefined;
294
294
  flair?: string | undefined;
295
295
  }>, "many">;
296
296
  metadata: z.ZodObject<{
@@ -324,20 +324,9 @@ export declare class RedditScrapeTool extends ToolBubble<RedditScrapeToolParams,
324
324
  success: z.ZodBoolean;
325
325
  error: z.ZodString;
326
326
  }, "strip", z.ZodTypeAny, {
327
- error: string;
328
- success: boolean;
329
- metadata: {
330
- sort: string;
331
- subreddit: string;
332
- requestedLimit: number;
333
- actualCount: number;
334
- filteredCount: number;
335
- scrapedAt: string;
336
- apiEndpoint: string;
337
- timeFilter?: string | undefined;
338
- };
339
327
  posts: {
340
328
  title: string;
329
+ subreddit: string;
341
330
  url: string;
342
331
  author: string;
343
332
  score: number;
@@ -345,16 +334,12 @@ export declare class RedditScrapeTool extends ToolBubble<RedditScrapeToolParams,
345
334
  createdUtc: number;
346
335
  postUrl: string;
347
336
  selftext: string;
348
- subreddit: string;
349
337
  isSelf: boolean;
338
+ postHint?: string | null | undefined;
350
339
  thumbnail?: string | undefined;
351
340
  domain?: string | undefined;
352
- postHint?: string | null | undefined;
353
341
  flair?: string | undefined;
354
342
  }[];
355
- }, {
356
- error: string;
357
- success: boolean;
358
343
  metadata: {
359
344
  sort: string;
360
345
  subreddit: string;
@@ -365,8 +350,12 @@ export declare class RedditScrapeTool extends ToolBubble<RedditScrapeToolParams,
365
350
  apiEndpoint: string;
366
351
  timeFilter?: string | undefined;
367
352
  };
353
+ success: boolean;
354
+ error: string;
355
+ }, {
368
356
  posts: {
369
357
  title: string;
358
+ subreddit: string;
370
359
  url: string;
371
360
  author: string;
372
361
  score: number;
@@ -374,24 +363,40 @@ export declare class RedditScrapeTool extends ToolBubble<RedditScrapeToolParams,
374
363
  createdUtc: number;
375
364
  postUrl: string;
376
365
  selftext: string;
377
- subreddit: string;
378
366
  isSelf: boolean;
367
+ postHint?: string | null | undefined;
379
368
  thumbnail?: string | undefined;
380
369
  domain?: string | undefined;
381
- postHint?: string | null | undefined;
382
370
  flair?: string | undefined;
383
371
  }[];
372
+ metadata: {
373
+ sort: string;
374
+ subreddit: string;
375
+ requestedLimit: number;
376
+ actualCount: number;
377
+ filteredCount: number;
378
+ scrapedAt: string;
379
+ apiEndpoint: string;
380
+ timeFilter?: string | undefined;
381
+ };
382
+ success: boolean;
383
+ error: string;
384
384
  }>;
385
385
  static readonly shortDescription = "Scrapes posts from any Reddit subreddit with flexible filtering and sorting options";
386
- static readonly longDescription = "\n A specialized tool for scraping Reddit posts from any subreddit with comprehensive filtering and sorting capabilities.\n \n \uD83D\uDD25 Core Features:\n - Scrape posts from any public subreddit\n - Multiple sorting options (hot, new, top, rising)\n - Flexible post limits (1-100 posts)\n - Time-based filtering for top posts\n - Today-only filtering option\n - Score-based filtering\n - Stickied post inclusion/exclusion\n \n \uD83D\uDCCA Post Data Extracted:\n - Title, author, and content\n - Upvote scores and comment counts\n - Creation timestamps and permalinks\n - Post types (text vs link posts)\n - External URLs and domains\n - Thumbnails and flairs\n - Comprehensive metadata\n \n \uD83C\uDFAF Use Cases:\n - Monitor specific subreddits for trends\n - Gather posts for content analysis\n - Track community engagement metrics\n - Feed Reddit data into other workflows\n - Research subreddit activity patterns\n - Content aggregation and curation\n \n \u26A1 Technical Features:\n - Uses Reddit's official JSON API\n - No authentication required for public posts\n - Respects Reddit's rate limiting\n - Handles large subreddits efficiently\n - Robust error handling and validation\n - Clean, structured data output\n \n Perfect for integration with AI agents, data analysis workflows, and content monitoring systems.\n ";
386
+ static readonly longDescription = "\n A specialized tool for scraping Reddit posts from any subreddit with comprehensive filtering and sorting capabilities.\n \n \uD83D\uDD25 Core Features:\n - Scrape posts from any public subreddit\n - Multiple sorting options (hot, new, top, rising)\n - Flexible post limits (1-1000 posts with pagination)\n - Time-based filtering for top posts\n - Today-only filtering option\n - Score-based filtering\n - Stickied post inclusion/exclusion\n \n \uD83D\uDCCA Post Data Extracted:\n - Title, author, and content\n - Upvote scores and comment counts\n - Creation timestamps and permalinks\n - Post types (text vs link posts)\n - External URLs and domains\n - Thumbnails and flairs\n - Comprehensive metadata\n \n \uD83C\uDFAF Use Cases:\n - Monitor specific subreddits for trends\n - Gather posts for content analysis\n - Track community engagement metrics\n - Feed Reddit data into other workflows\n - Research subreddit activity patterns\n - Content aggregation and curation\n \n \u26A1 Technical Features:\n - Uses Reddit's official JSON API\n - No authentication required for public posts\n - Respects Reddit's rate limiting\n - Handles large subreddits efficiently\n - Robust error handling and validation\n - Clean, structured data output\n \n Perfect for integration with AI agents, data analysis workflows, and content monitoring systems.\n ";
387
387
  static readonly alias = "reddit";
388
388
  static readonly type = "tool";
389
389
  constructor(params?: RedditScrapeToolParamsInput, context?: BubbleContext);
390
390
  performAction(context?: BubbleContext): Promise<RedditScrapeToolResult>;
391
391
  /**
392
- * Build the Reddit JSON API URL
392
+ * Build the Reddit JSON API URL with optional pagination
393
393
  */
394
394
  private buildRedditApiUrl;
395
+ /**
396
+ * Fetch posts with pagination support (up to 1000 posts)
397
+ * Makes multiple requests if needed, using the 'after' parameter for pagination
398
+ */
399
+ private fetchPostsWithPagination;
395
400
  /**
396
401
  * Get a random user agent to avoid being blocked
397
402
  */
@@ -1 +1 @@
1
- {"version":3,"file":"reddit-scrape-tool.d.ts","sourceRoot":"","sources":["../../../src/bubbles/tool-bubble/reddit-scrape-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5E,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBpB,CAAC;AAGH,QAAA,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8ChC,CAAC;AAGH,QAAA,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBhC,CAAC;AAGH,KAAK,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAC5E,KAAK,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAC5E,KAAK,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAChF,KAAK,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEpD,qBAAa,gBAAiB,SAAQ,UAAU,CAC9C,sBAAsB,EACtB,sBAAsB,CACvB;IAEC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAwB;IAC9D,MAAM,CAAC,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAgC;IACtD,MAAM,CAAC,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAgC;IAC5D,MAAM,CAAC,QAAQ,CAAC,gBAAgB,yFACwD;IACxF,MAAM,CAAC,QAAQ,CAAC,eAAe,y6CAsC7B;IACF,MAAM,CAAC,QAAQ,CAAC,KAAK,YAAY;IACjC,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;gBAG5B,MAAM,GAAE,2BAIP,EACD,OAAO,CAAC,EAAE,aAAa;IAKnB,aAAa,CACjB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,sBAAsB,CAAC;IAuElC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;YACW,eAAe;IAwD7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0C3B;;OAEG;IACH,OAAO,CAAC,YAAY;CA4BrB;AAGD,YAAY,EAAE,UAAU,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"reddit-scrape-tool.d.ts","sourceRoot":"","sources":["../../../src/bubbles/tool-bubble/reddit-scrape-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5E,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBpB,CAAC;AAGH,QAAA,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsDhC,CAAC;AAGH,QAAA,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBhC,CAAC;AAGH,KAAK,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAC5E,KAAK,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAC5E,KAAK,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAChF,KAAK,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEpD,qBAAa,gBAAiB,SAAQ,UAAU,CAC9C,sBAAsB,EACtB,sBAAsB,CACvB;IAEC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAwB;IAC9D,MAAM,CAAC,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAgC;IACtD,MAAM,CAAC,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAgC;IAC5D,MAAM,CAAC,QAAQ,CAAC,gBAAgB,yFACwD;IACxF,MAAM,CAAC,QAAQ,CAAC,eAAe,07CAsC7B;IACF,MAAM,CAAC,QAAQ,CAAC,KAAK,YAAY;IACjC,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;gBAG5B,MAAM,GAAE,2BAIP,EACD,OAAO,CAAC,EAAE,aAAa;IAKnB,aAAa,CACjB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,sBAAsB,CAAC;IA+DlC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;;OAGG;YACW,wBAAwB;IA6DtC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;YACW,eAAe;IAwD7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiE3B;;OAEG;IACH,OAAO,CAAC,YAAY;CA4BrB;AAGD,YAAY,EAAE,UAAU,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,CAAC"}
@@ -10,7 +10,9 @@ const RedditPostSchema = z.object({
10
10
  numComments: z.number().describe('Number of comments on the post'),
11
11
  createdUtc: z.number().describe('Post creation timestamp (Unix UTC)'),
12
12
  postUrl: z.string().describe('Reddit url to the post'),
13
- selftext: z.string().describe('Post content text (for text posts)'),
13
+ selftext: z
14
+ .string()
15
+ .describe("Post content text (for text posts/self posts). Empty for link posts which don't have text content."),
14
16
  subreddit: z.string().describe('Subreddit name'),
15
17
  postHint: z
16
18
  .string()
@@ -29,14 +31,20 @@ const RedditScrapeToolParamsSchema = z.object({
29
31
  subreddit: z
30
32
  .string()
31
33
  .min(1, 'Subreddit name is required')
32
- .regex(/^[a-zA-Z0-9_]+$/, 'Subreddit name can only contain letters, numbers, and underscores')
33
- .describe('Name of the subreddit to scrape (without r/ prefix)'),
34
+ .transform((val) => {
35
+ // Strip "r/" prefix if present (be tolerant of input format)
36
+ return val.startsWith('r/') ? val.substring(2) : val;
37
+ })
38
+ .pipe(z
39
+ .string()
40
+ .regex(/^[a-zA-Z0-9_]+$/, 'Subreddit name can only contain letters, numbers, and underscores'))
41
+ .describe('Name of the subreddit to scrape (with or without r/ prefix)'),
34
42
  limit: z
35
43
  .number()
36
44
  .min(1, 'Limit must be at least 1')
37
- .max(500, 'Limit cannot exceed 500')
38
- .default(25)
39
- .describe('Maximum number of posts to fetch (1-500, default: 25)'),
45
+ .max(1000, 'Limit cannot exceed 1000')
46
+ .default(100)
47
+ .describe('Maximum number of posts to fetch (1-1000, default: 25)'),
40
48
  sort: z
41
49
  .enum(['hot', 'new', 'top', 'rising'])
42
50
  .default('hot')
@@ -92,7 +100,7 @@ export class RedditScrapeTool extends ToolBubble {
92
100
  🔥 Core Features:
93
101
  - Scrape posts from any public subreddit
94
102
  - Multiple sorting options (hot, new, top, rising)
95
- - Flexible post limits (1-100 posts)
103
+ - Flexible post limits (1-1000 posts with pagination)
96
104
  - Time-based filtering for top posts
97
105
  - Today-only filtering option
98
106
  - Score-based filtering
@@ -140,13 +148,8 @@ export class RedditScrapeTool extends ToolBubble {
140
148
  const scrapedAt = new Date().toISOString();
141
149
  try {
142
150
  console.log(`[RedditScrapeTool] Scraping r/${subreddit} with ${limit} ${sort} posts`);
143
- // Build Reddit API URL
144
- const apiUrl = this.buildRedditApiUrl();
145
- console.log(`[RedditScrapeTool] API endpoint: ${apiUrl}`);
146
- // Fetch data from Reddit's JSON API
147
- const redditData = await this.fetchRedditData(apiUrl);
148
- // Parse and process posts
149
- const rawPosts = this.parseRedditResponse(redditData);
151
+ // Fetch posts with pagination support (up to 1000 posts)
152
+ const rawPosts = await this.fetchPostsWithPagination();
150
153
  console.log(`[RedditScrapeTool] Found ${rawPosts.length} raw posts`);
151
154
  // Apply filters
152
155
  const filteredPosts = this.applyFilters(rawPosts);
@@ -163,7 +166,7 @@ export class RedditScrapeTool extends ToolBubble {
163
166
  sort,
164
167
  timeFilter,
165
168
  scrapedAt,
166
- apiEndpoint: apiUrl,
169
+ apiEndpoint: this.buildRedditApiUrl(),
167
170
  },
168
171
  success: true,
169
172
  error: '',
@@ -182,7 +185,7 @@ export class RedditScrapeTool extends ToolBubble {
182
185
  sort,
183
186
  timeFilter,
184
187
  scrapedAt,
185
- apiEndpoint: '',
188
+ apiEndpoint: this.buildRedditApiUrl(),
186
189
  },
187
190
  success: false,
188
191
  error: errorMessage,
@@ -190,17 +193,73 @@ export class RedditScrapeTool extends ToolBubble {
190
193
  }
191
194
  }
192
195
  /**
193
- * Build the Reddit JSON API URL
196
+ * Build the Reddit JSON API URL with optional pagination
194
197
  */
195
- buildRedditApiUrl() {
196
- const { subreddit, sort, timeFilter, limit } = this.params;
197
- let url = `https://www.reddit.com/r/${subreddit}/${sort}.json?limit=${Math.min(limit * 2, 100)}`;
198
+ buildRedditApiUrl(after) {
199
+ const { subreddit, sort, timeFilter } = this.params;
200
+ // Use max limit of 100 per request (Reddit API limit)
201
+ // Add raw_json=1 to get unprocessed JSON content (helps ensure full selftext)
202
+ let url = `https://www.reddit.com/r/${subreddit}/${sort}.json?limit=100&raw_json=1`;
198
203
  // Add time filter for top posts
199
204
  if (sort === 'top' && timeFilter) {
200
205
  url += `&t=${timeFilter}`;
201
206
  }
207
+ // Add pagination parameter if provided
208
+ if (after) {
209
+ url += `&after=${after}`;
210
+ }
202
211
  return url;
203
212
  }
213
+ /**
214
+ * Fetch posts with pagination support (up to 1000 posts)
215
+ * Makes multiple requests if needed, using the 'after' parameter for pagination
216
+ */
217
+ async fetchPostsWithPagination() {
218
+ const { limit } = this.params;
219
+ const allPosts = [];
220
+ let after = null;
221
+ const maxRequests = Math.ceil(limit / 100); // Max 100 posts per request
222
+ for (let requestNum = 0; requestNum < maxRequests && allPosts.length < limit; requestNum++) {
223
+ const apiUrl = this.buildRedditApiUrl(after || undefined);
224
+ if (requestNum === 0) {
225
+ console.log(`[RedditScrapeTool] API endpoint: ${apiUrl}`);
226
+ }
227
+ else {
228
+ console.log(`[RedditScrapeTool] Fetching page ${requestNum + 1}...`);
229
+ }
230
+ try {
231
+ // Fetch data from Reddit's JSON API
232
+ const redditData = await this.fetchRedditData(apiUrl);
233
+ // Parse and process posts
234
+ const posts = this.parseRedditResponse(redditData);
235
+ allPosts.push(...posts);
236
+ // Stop if we've collected enough posts
237
+ if (allPosts.length >= limit) {
238
+ break;
239
+ }
240
+ // Get the 'after' parameter for next page
241
+ after = redditData?.data?.after || null;
242
+ // If no more posts available, break
243
+ if (!after || posts.length === 0) {
244
+ break;
245
+ }
246
+ // Respect rate limits - add a small delay between requests
247
+ if (requestNum < maxRequests - 1 && allPosts.length < limit) {
248
+ await new Promise((resolve) => setTimeout(resolve, 500)); // 500ms delay
249
+ }
250
+ }
251
+ catch (error) {
252
+ console.error(`[RedditScrapeTool] Error fetching page ${requestNum + 1}:`, error);
253
+ // If we have some posts, return what we have
254
+ if (allPosts.length > 0) {
255
+ break;
256
+ }
257
+ // If this is the first request and it fails, throw the error
258
+ throw error;
259
+ }
260
+ }
261
+ return allPosts;
262
+ }
204
263
  /**
205
264
  * Get a random user agent to avoid being blocked
206
265
  */
@@ -270,6 +329,22 @@ export class RedditScrapeTool extends ToolBubble {
270
329
  // Skip if not a post (could be an ad or other content)
271
330
  if (!post || !post.title)
272
331
  continue;
332
+ // Extract selftext - for text posts (is_self=true), this contains the post content
333
+ // For link posts (is_self=false), selftext will be empty (expected - they don't have text content)
334
+ // Try selftext_html as fallback if selftext is empty but post is marked as self post
335
+ let selftext = post.selftext || '';
336
+ const isSelfPost = post.is_self || false;
337
+ // If selftext is empty but we have selftext_html and it's a self post, try to use HTML version
338
+ // (though we prefer plain text, this is a fallback)
339
+ if (isSelfPost && !selftext && post.selftext_html) {
340
+ // For now, we'll use selftext_html as a fallback (could decode HTML if needed)
341
+ selftext = post.selftext_html;
342
+ console.warn(`[RedditScrapeTool] Text post "${post.title.substring(0, 50)}..." has empty selftext, using selftext_html`);
343
+ }
344
+ // Debug logging for text posts without any content (might indicate an API issue)
345
+ if (isSelfPost && !selftext && !post.selftext_html) {
346
+ console.warn(`[RedditScrapeTool] Text post "${post.title.substring(0, 50)}..." has no content (empty selftext and selftext_html)`);
347
+ }
273
348
  posts.push({
274
349
  title: post.title,
275
350
  url: post.url || '',
@@ -280,10 +355,10 @@ export class RedditScrapeTool extends ToolBubble {
280
355
  postUrl: post.permalink
281
356
  ? `https://reddit.com${post.permalink}`
282
357
  : '',
283
- selftext: post.selftext || '',
358
+ selftext: selftext,
284
359
  subreddit: post.subreddit || this.params.subreddit,
285
360
  postHint: post.post_hint || null,
286
- isSelf: post.is_self || false,
361
+ isSelf: isSelfPost,
287
362
  thumbnail: post.thumbnail !== 'self' && post.thumbnail !== 'default'
288
363
  ? post.thumbnail
289
364
  : undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"reddit-scrape-tool.js","sourceRoot":"","sources":["../../../src/bubbles/tool-bubble/reddit-scrape-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reddit-scrape-tool.js","sourceRoot":"","sources":["../../../src/bubbles/tool-bubble/reddit-scrape-tool.ts"],"names":[],"mappings":"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"}