@bubblelab/bubble-core 0.1.237 → 0.1.238

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 (92) hide show
  1. package/dist/bubble-bundle.d.ts +134 -113
  2. package/dist/bubble-factory.d.ts.map +1 -1
  3. package/dist/bubble-factory.js +3 -0
  4. package/dist/bubble-factory.js.map +1 -1
  5. package/dist/bubbles/service-bubble/agi-inc.d.ts +20 -20
  6. package/dist/bubbles/service-bubble/ai-agent.d.ts +68 -22
  7. package/dist/bubbles/service-bubble/ai-agent.d.ts.map +1 -1
  8. package/dist/bubbles/service-bubble/ai-agent.js +30 -2
  9. package/dist/bubbles/service-bubble/ai-agent.js.map +1 -1
  10. package/dist/bubbles/service-bubble/airtable.d.ts +24 -24
  11. package/dist/bubbles/service-bubble/apify/actors/app-rankings-scraper.d.ts +84 -0
  12. package/dist/bubbles/service-bubble/apify/actors/app-rankings-scraper.d.ts.map +1 -0
  13. package/dist/bubbles/service-bubble/apify/actors/app-rankings-scraper.js +214 -0
  14. package/dist/bubbles/service-bubble/apify/actors/app-rankings-scraper.js.map +1 -0
  15. package/dist/bubbles/service-bubble/apify/actors/google-maps-scraper.d.ts +2 -2
  16. package/dist/bubbles/service-bubble/apify/actors/instagram-hashtag-scraper.d.ts +2 -2
  17. package/dist/bubbles/service-bubble/apify/actors/instagram-scraper.d.ts +4 -4
  18. package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.d.ts +2 -2
  19. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts +95 -10
  20. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts.map +1 -1
  21. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.js +8 -0
  22. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.js.map +1 -1
  23. package/dist/bubbles/service-bubble/apify/apify.d.ts +5 -5
  24. package/dist/bubbles/service-bubble/apify/apify.d.ts.map +1 -1
  25. package/dist/bubbles/service-bubble/apify/apify.js +2 -1
  26. package/dist/bubbles/service-bubble/apify/apify.js.map +1 -1
  27. package/dist/bubbles/service-bubble/apify/index.d.ts +1 -0
  28. package/dist/bubbles/service-bubble/apify/index.d.ts.map +1 -1
  29. package/dist/bubbles/service-bubble/apify/index.js +2 -0
  30. package/dist/bubbles/service-bubble/apify/index.js.map +1 -1
  31. package/dist/bubbles/service-bubble/ashby/ashby.d.ts +112 -112
  32. package/dist/bubbles/service-bubble/ashby/ashby.schema.d.ts +160 -160
  33. package/dist/bubbles/service-bubble/assembled/assembled.d.ts +2 -2
  34. package/dist/bubbles/service-bubble/assembled/assembled.schema.d.ts +2 -2
  35. package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +4 -4
  36. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +6 -6
  37. package/dist/bubbles/service-bubble/capability-pipeline.d.ts +2 -2
  38. package/dist/bubbles/service-bubble/capability-pipeline.d.ts.map +1 -1
  39. package/dist/bubbles/service-bubble/capability-pipeline.js +18 -1
  40. package/dist/bubbles/service-bubble/capability-pipeline.js.map +1 -1
  41. package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +78 -78
  42. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts +94 -94
  43. package/dist/bubbles/service-bubble/firecrawl.d.ts +176 -176
  44. package/dist/bubbles/service-bubble/github.d.ts +72 -72
  45. package/dist/bubbles/service-bubble/gmail.d.ts +64 -64
  46. package/dist/bubbles/service-bubble/google-calendar.d.ts +86 -86
  47. package/dist/bubbles/service-bubble/google-drive.d.ts +36 -36
  48. package/dist/bubbles/service-bubble/http.d.ts +8 -8
  49. package/dist/bubbles/service-bubble/hubspot/hubspot.d.ts +6 -6
  50. package/dist/bubbles/service-bubble/hubspot/hubspot.schema.d.ts +6 -6
  51. package/dist/bubbles/service-bubble/jira/jira.d.ts +38 -38
  52. package/dist/bubbles/service-bubble/jira/jira.schema.d.ts +46 -46
  53. package/dist/bubbles/service-bubble/notion/notion.d.ts +380 -380
  54. package/dist/bubbles/service-bubble/posthog/posthog.d.ts +2 -2
  55. package/dist/bubbles/service-bubble/posthog/posthog.schema.d.ts +2 -2
  56. package/dist/bubbles/service-bubble/sendsafely/sendsafely.d.ts +4 -4
  57. package/dist/bubbles/service-bubble/sendsafely/sendsafely.schema.d.ts +6 -6
  58. package/dist/bubbles/service-bubble/slab/slab.d.ts +16 -16
  59. package/dist/bubbles/service-bubble/slab/slab.schema.d.ts +20 -20
  60. package/dist/bubbles/service-bubble/slack/slack.d.ts +98 -98
  61. package/dist/bubbles/service-bubble/stripe/stripe.d.ts +32 -32
  62. package/dist/bubbles/service-bubble/stripe/stripe.schema.d.ts +36 -36
  63. package/dist/bubbles/service-bubble/zendesk/zendesk.d.ts +2 -2
  64. package/dist/bubbles/service-bubble/zendesk/zendesk.schema.d.ts +2 -2
  65. package/dist/bubbles/tool-bubble/app-rankings-tool.d.ts +285 -0
  66. package/dist/bubbles/tool-bubble/app-rankings-tool.d.ts.map +1 -0
  67. package/dist/bubbles/tool-bubble/app-rankings-tool.js +230 -0
  68. package/dist/bubbles/tool-bubble/app-rankings-tool.js.map +1 -0
  69. package/dist/bubbles/tool-bubble/browser-tools/_shared/schema.d.ts +2 -2
  70. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +4 -4
  71. package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +10 -10
  72. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +12 -12
  73. package/dist/bubbles/tool-bubble/list-capabilities-tool.d.ts +8 -8
  74. package/dist/bubbles/tool-bubble/people-search-tool.d.ts +34 -34
  75. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +10 -10
  76. package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts +4 -4
  77. package/dist/bubbles/tool-bubble/web-extract-tool.d.ts +4 -4
  78. package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts +8 -8
  79. package/dist/bubbles/tool-bubble/yc-scraper-tool.d.ts +4 -4
  80. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +36 -36
  81. package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +16 -16
  82. package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +24 -24
  83. package/dist/bubbles.json +279 -3
  84. package/dist/index.d.ts +1 -0
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +1 -0
  87. package/dist/index.js.map +1 -1
  88. package/dist/types/available-tools.d.ts +1 -1
  89. package/dist/types/available-tools.d.ts.map +1 -1
  90. package/dist/types/available-tools.js +1 -0
  91. package/dist/types/available-tools.js.map +1 -1
  92. package/package.json +2 -2
@@ -0,0 +1,285 @@
1
+ import { z } from 'zod';
2
+ import { ToolBubble } from '../../types/tool-bubble-class.js';
3
+ import type { BubbleContext } from '../../types/bubble.js';
4
+ import { CredentialType, type BubbleName } from '@bubblelab/shared-schemas';
5
+ declare const AppRankingsToolParamsSchema: z.ZodObject<{
6
+ operation: z.ZodEnum<["rankings"]>;
7
+ stores: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodEnum<["apple", "google"]>, "many">>>;
8
+ countries: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString, "many">>>;
9
+ appleCategories: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString, "many">>>;
10
+ googleCategories: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString, "many">>>;
11
+ chartType: z.ZodOptional<z.ZodDefault<z.ZodEnum<["free", "paid", "grossing"]>>>;
12
+ limit: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
13
+ credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ operation: "rankings";
16
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
17
+ limit?: number | undefined;
18
+ stores?: ("google" | "apple")[] | undefined;
19
+ appleCategories?: string[] | undefined;
20
+ googleCategories?: string[] | undefined;
21
+ chartType?: "free" | "paid" | "grossing" | undefined;
22
+ countries?: string[] | undefined;
23
+ }, {
24
+ operation: "rankings";
25
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
26
+ limit?: number | undefined;
27
+ stores?: ("google" | "apple")[] | undefined;
28
+ appleCategories?: string[] | undefined;
29
+ googleCategories?: string[] | undefined;
30
+ chartType?: "free" | "paid" | "grossing" | undefined;
31
+ countries?: string[] | undefined;
32
+ }>;
33
+ declare const AppRankingsToolResultSchema: z.ZodObject<{
34
+ operation: z.ZodEnum<["rankings"]>;
35
+ rankings: z.ZodArray<z.ZodObject<{
36
+ store: z.ZodEnum<["apple", "google"]>;
37
+ rank: z.ZodNumber;
38
+ appName: z.ZodString;
39
+ appId: z.ZodString;
40
+ appUrl: z.ZodNullable<z.ZodString>;
41
+ developer: z.ZodNullable<z.ZodString>;
42
+ rating: z.ZodNullable<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
43
+ ratingCount: z.ZodNullable<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
44
+ price: z.ZodNullable<z.ZodString>;
45
+ category: z.ZodString;
46
+ chartType: z.ZodString;
47
+ genres: z.ZodNullable<z.ZodString>;
48
+ country: z.ZodString;
49
+ releaseDate: z.ZodNullable<z.ZodString>;
50
+ iconUrl: z.ZodNullable<z.ZodString>;
51
+ scrapedAt: z.ZodString;
52
+ }, "strip", z.ZodTypeAny, {
53
+ store: "google" | "apple";
54
+ developer: string | null;
55
+ rating: string | number | null;
56
+ category: string;
57
+ country: string;
58
+ price: string | null;
59
+ scrapedAt: string;
60
+ rank: number;
61
+ appId: string;
62
+ iconUrl: string | null;
63
+ appName: string;
64
+ appUrl: string | null;
65
+ ratingCount: string | number | null;
66
+ chartType: string;
67
+ genres: string | null;
68
+ releaseDate: string | null;
69
+ }, {
70
+ store: "google" | "apple";
71
+ developer: string | null;
72
+ rating: string | number | null;
73
+ category: string;
74
+ country: string;
75
+ price: string | null;
76
+ scrapedAt: string;
77
+ rank: number;
78
+ appId: string;
79
+ iconUrl: string | null;
80
+ appName: string;
81
+ appUrl: string | null;
82
+ ratingCount: string | number | null;
83
+ chartType: string;
84
+ genres: string | null;
85
+ releaseDate: string | null;
86
+ }>, "many">;
87
+ totalApps: z.ZodNumber;
88
+ success: z.ZodBoolean;
89
+ error: z.ZodString;
90
+ }, "strip", z.ZodTypeAny, {
91
+ error: string;
92
+ success: boolean;
93
+ operation: "rankings";
94
+ rankings: {
95
+ store: "google" | "apple";
96
+ developer: string | null;
97
+ rating: string | number | null;
98
+ category: string;
99
+ country: string;
100
+ price: string | null;
101
+ scrapedAt: string;
102
+ rank: number;
103
+ appId: string;
104
+ iconUrl: string | null;
105
+ appName: string;
106
+ appUrl: string | null;
107
+ ratingCount: string | number | null;
108
+ chartType: string;
109
+ genres: string | null;
110
+ releaseDate: string | null;
111
+ }[];
112
+ totalApps: number;
113
+ }, {
114
+ error: string;
115
+ success: boolean;
116
+ operation: "rankings";
117
+ rankings: {
118
+ store: "google" | "apple";
119
+ developer: string | null;
120
+ rating: string | number | null;
121
+ category: string;
122
+ country: string;
123
+ price: string | null;
124
+ scrapedAt: string;
125
+ rank: number;
126
+ appId: string;
127
+ iconUrl: string | null;
128
+ appName: string;
129
+ appUrl: string | null;
130
+ ratingCount: string | number | null;
131
+ chartType: string;
132
+ genres: string | null;
133
+ releaseDate: string | null;
134
+ }[];
135
+ totalApps: number;
136
+ }>;
137
+ type AppRankingsToolParams = z.output<typeof AppRankingsToolParamsSchema>;
138
+ type AppRankingsToolResult = z.output<typeof AppRankingsToolResultSchema>;
139
+ type AppRankingsToolParamsInput = z.input<typeof AppRankingsToolParamsSchema>;
140
+ export declare class AppRankingsTool extends ToolBubble<AppRankingsToolParams, AppRankingsToolResult> {
141
+ static readonly bubbleName: BubbleName;
142
+ static readonly schema: z.ZodObject<{
143
+ operation: z.ZodEnum<["rankings"]>;
144
+ stores: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodEnum<["apple", "google"]>, "many">>>;
145
+ countries: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString, "many">>>;
146
+ appleCategories: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString, "many">>>;
147
+ googleCategories: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString, "many">>>;
148
+ chartType: z.ZodOptional<z.ZodDefault<z.ZodEnum<["free", "paid", "grossing"]>>>;
149
+ limit: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
150
+ credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>;
151
+ }, "strip", z.ZodTypeAny, {
152
+ operation: "rankings";
153
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
154
+ limit?: number | undefined;
155
+ stores?: ("google" | "apple")[] | undefined;
156
+ appleCategories?: string[] | undefined;
157
+ googleCategories?: string[] | undefined;
158
+ chartType?: "free" | "paid" | "grossing" | undefined;
159
+ countries?: string[] | undefined;
160
+ }, {
161
+ operation: "rankings";
162
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
163
+ limit?: number | undefined;
164
+ stores?: ("google" | "apple")[] | undefined;
165
+ appleCategories?: string[] | undefined;
166
+ googleCategories?: string[] | undefined;
167
+ chartType?: "free" | "paid" | "grossing" | undefined;
168
+ countries?: string[] | undefined;
169
+ }>;
170
+ static readonly resultSchema: z.ZodObject<{
171
+ operation: z.ZodEnum<["rankings"]>;
172
+ rankings: z.ZodArray<z.ZodObject<{
173
+ store: z.ZodEnum<["apple", "google"]>;
174
+ rank: z.ZodNumber;
175
+ appName: z.ZodString;
176
+ appId: z.ZodString;
177
+ appUrl: z.ZodNullable<z.ZodString>;
178
+ developer: z.ZodNullable<z.ZodString>;
179
+ rating: z.ZodNullable<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
180
+ ratingCount: z.ZodNullable<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
181
+ price: z.ZodNullable<z.ZodString>;
182
+ category: z.ZodString;
183
+ chartType: z.ZodString;
184
+ genres: z.ZodNullable<z.ZodString>;
185
+ country: z.ZodString;
186
+ releaseDate: z.ZodNullable<z.ZodString>;
187
+ iconUrl: z.ZodNullable<z.ZodString>;
188
+ scrapedAt: z.ZodString;
189
+ }, "strip", z.ZodTypeAny, {
190
+ store: "google" | "apple";
191
+ developer: string | null;
192
+ rating: string | number | null;
193
+ category: string;
194
+ country: string;
195
+ price: string | null;
196
+ scrapedAt: string;
197
+ rank: number;
198
+ appId: string;
199
+ iconUrl: string | null;
200
+ appName: string;
201
+ appUrl: string | null;
202
+ ratingCount: string | number | null;
203
+ chartType: string;
204
+ genres: string | null;
205
+ releaseDate: string | null;
206
+ }, {
207
+ store: "google" | "apple";
208
+ developer: string | null;
209
+ rating: string | number | null;
210
+ category: string;
211
+ country: string;
212
+ price: string | null;
213
+ scrapedAt: string;
214
+ rank: number;
215
+ appId: string;
216
+ iconUrl: string | null;
217
+ appName: string;
218
+ appUrl: string | null;
219
+ ratingCount: string | number | null;
220
+ chartType: string;
221
+ genres: string | null;
222
+ releaseDate: string | null;
223
+ }>, "many">;
224
+ totalApps: z.ZodNumber;
225
+ success: z.ZodBoolean;
226
+ error: z.ZodString;
227
+ }, "strip", z.ZodTypeAny, {
228
+ error: string;
229
+ success: boolean;
230
+ operation: "rankings";
231
+ rankings: {
232
+ store: "google" | "apple";
233
+ developer: string | null;
234
+ rating: string | number | null;
235
+ category: string;
236
+ country: string;
237
+ price: string | null;
238
+ scrapedAt: string;
239
+ rank: number;
240
+ appId: string;
241
+ iconUrl: string | null;
242
+ appName: string;
243
+ appUrl: string | null;
244
+ ratingCount: string | number | null;
245
+ chartType: string;
246
+ genres: string | null;
247
+ releaseDate: string | null;
248
+ }[];
249
+ totalApps: number;
250
+ }, {
251
+ error: string;
252
+ success: boolean;
253
+ operation: "rankings";
254
+ rankings: {
255
+ store: "google" | "apple";
256
+ developer: string | null;
257
+ rating: string | number | null;
258
+ category: string;
259
+ country: string;
260
+ price: string | null;
261
+ scrapedAt: string;
262
+ rank: number;
263
+ appId: string;
264
+ iconUrl: string | null;
265
+ appName: string;
266
+ appUrl: string | null;
267
+ ratingCount: string | number | null;
268
+ chartType: string;
269
+ genres: string | null;
270
+ releaseDate: string | null;
271
+ }[];
272
+ totalApps: number;
273
+ }>;
274
+ static readonly shortDescription = "Scrape Apple App Store and Google Play top free, paid, and grossing chart rankings across countries and categories.";
275
+ static readonly longDescription = "\n App store rankings scraping tool for iOS and Android top charts.\n\n Operations:\n - rankings: Get top chart rankings (free, paid, or grossing) across 60+ countries and 50+ categories\n\n Supports both Apple App Store and Google Play Store in a single run.\n Returns up to `limit` apps per store/country/category combination as a flat array.\n Use the `store`, `country`, and `category` fields on each result to filter/group.\n\n Examples:\n // US top 10 free apps (both stores):\n { operation: 'rankings', limit: 10 }\n\n // Apple-only Games category, top 50:\n { operation: 'rankings', stores: ['apple'], appleCategories: ['6014'], limit: 50 }\n\n // Top grossing across US, JP, DE:\n { operation: 'rankings', chartType: 'grossing', countries: ['us', 'jp', 'de'] }\n\n // Multiple categories (Health & Medical):\n { operation: 'rankings', appleCategories: ['6013', '6020'], googleCategories: ['HEALTH_AND_FITNESS', 'MEDICAL'] }\n\n Apple Category IDs: overall, 6000 (Business), 6001 (Weather), 6002 (Utilities), 6003 (Travel),\n 6004 (Sports), 6005 (Social Networking), 6006 (Reference), 6007 (Productivity), 6008 (Lifestyle),\n 6009 (News), 6010 (Navigation), 6011 (Music), 6012 (Photo & Video), 6013 (Health & Fitness),\n 6014 (Games), 6015 (Finance), 6016 (Entertainment), 6017 (Education), 6018 (Books),\n 6020 (Medical), 6023 (Food & Drink), 6024 (Shopping), 6026 (Magazines & Newspapers)\n\n Google Play Categories: APPLICATION, GAME, ART_AND_DESIGN, AUTO_AND_VEHICLES, BEAUTY,\n BOOKS_AND_REFERENCE, BUSINESS, COMMUNICATION, DATING, EDUCATION, ENTERTAINMENT, EVENTS,\n FINANCE, FOOD_AND_DRINK, HEALTH_AND_FITNESS, LIFESTYLE, MAPS_AND_NAVIGATION, MEDICAL,\n MUSIC_AND_AUDIO, NEWS_AND_MAGAZINES, PHOTOGRAPHY, PRODUCTIVITY, SHOPPING, SOCIAL, SPORTS,\n TOOLS, TRAVEL_AND_LOCAL, VIDEO_PLAYERS, WEATHER\n\n Uses Apify's slothtechlabs/ios-android-app-rankings-scraper.\n ";
276
+ static readonly alias = "app-rankings";
277
+ static readonly type = "tool";
278
+ constructor(params?: AppRankingsToolParamsInput, context?: BubbleContext);
279
+ performAction(): Promise<AppRankingsToolResult>;
280
+ private createErrorResult;
281
+ private scrapeRankings;
282
+ private transformRankings;
283
+ }
284
+ export {};
285
+ //# sourceMappingURL=app-rankings-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-rankings-tool.d.ts","sourceRoot":"","sources":["../../../src/bubbles/tool-bubble/app-rankings-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;AA+B5E,QAAA,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4D/B,CAAC;AAEH,QAAA,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM/B,CAAC;AAEH,KAAK,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAC1E,KAAK,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAC1E,KAAK,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAW9E,qBAAa,eAAgB,SAAQ,UAAU,CAC7C,qBAAqB,EACrB,qBAAqB,CACtB;IACC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAuB;IAC7D,MAAM,CAAC,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;OAA+B;IACrD,MAAM,CAAC,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAA+B;IAC3D,MAAM,CAAC,QAAQ,CAAC,gBAAgB,yHACwF;IACxH,MAAM,CAAC,QAAQ,CAAC,eAAe,y8DAoC7B;IACF,MAAM,CAAC,QAAQ,CAAC,KAAK,kBAAkB;IACvC,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;gBAG5B,MAAM,GAAE,0BAIP,EACD,OAAO,CAAC,EAAE,aAAa;IAKnB,aAAa,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAwBrD,OAAO,CAAC,iBAAiB;YAUX,cAAc;IAkE5B,OAAO,CAAC,iBAAiB;CA6B1B"}
@@ -0,0 +1,230 @@
1
+ import { z } from 'zod';
2
+ import { ToolBubble } from '../../types/tool-bubble-class.js';
3
+ import { CredentialType } from '@bubblelab/shared-schemas';
4
+ import { ApifyBubble } from '../service-bubble/apify/apify.js';
5
+ const AppRankingSchema = z.object({
6
+ store: z
7
+ .enum(['apple', 'google'])
8
+ .describe('Which app store this ranking is from'),
9
+ rank: z.number().describe('Chart position (1-indexed)'),
10
+ appName: z.string().describe('App display name'),
11
+ appId: z.string().describe('Unique app identifier'),
12
+ appUrl: z.string().nullable().describe('Direct link to store listing'),
13
+ developer: z.string().nullable().describe('Developer or publisher name'),
14
+ rating: z
15
+ .union([z.number(), z.string()])
16
+ .nullable()
17
+ .describe('Average user rating or "Not enough reviews yet"'),
18
+ ratingCount: z
19
+ .union([z.number(), z.string()])
20
+ .nullable()
21
+ .describe('Total ratings count'),
22
+ price: z.string().nullable().describe('Price ("Free" for free apps)'),
23
+ category: z.string().describe('Human-readable category name'),
24
+ chartType: z.string().describe('Chart type (e.g., "top-free")'),
25
+ genres: z.string().nullable().describe('Comma-separated genre tags'),
26
+ country: z.string().describe('ISO country code'),
27
+ releaseDate: z.string().nullable().describe('Original release date'),
28
+ iconUrl: z.string().nullable().describe('App icon image URL'),
29
+ scrapedAt: z.string().describe('When data was scraped (ISO 8601)'),
30
+ });
31
+ const AppRankingsToolParamsSchema = z.object({
32
+ operation: z
33
+ .enum(['rankings'])
34
+ .describe('Operation (only rankings supported)'),
35
+ stores: z
36
+ .array(z.enum(['apple', 'google']))
37
+ .min(1)
38
+ .default(['apple', 'google'])
39
+ .optional()
40
+ .describe("Array of stores to scrape: 'apple', 'google', or both. Default: ['apple', 'google']. Pass ['apple'] for App Store only."),
41
+ countries: z
42
+ .array(z.string())
43
+ .default(['us'])
44
+ .optional()
45
+ .describe('Array of ISO 3166-1 alpha-2 country codes. Default: ["us"]. Example: ["us", "jp", "de"]'),
46
+ appleCategories: z
47
+ .array(z.string())
48
+ .default(['overall'])
49
+ .optional()
50
+ .describe('Array of Apple category IDs. Use "overall" for all apps. Common IDs: "6014" (Games), "6015" (Finance), "6013" (Health & Fitness), "6020" (Medical), "6016" (Entertainment), "6005" (Social Networking), "6007" (Productivity), "6002" (Utilities), "6017" (Education), "6008" (Lifestyle). Default: ["overall"]'),
51
+ googleCategories: z
52
+ .array(z.string())
53
+ .default(['APPLICATION'])
54
+ .optional()
55
+ .describe('Array of Google Play category IDs. Use "APPLICATION" for all apps. Common values: "GAME", "FINANCE", "HEALTH_AND_FITNESS", "MEDICAL", "ENTERTAINMENT", "SOCIAL", "PRODUCTIVITY", "TOOLS", "EDUCATION", "LIFESTYLE". Default: ["APPLICATION"]'),
56
+ chartType: z
57
+ .enum(['free', 'paid', 'grossing'])
58
+ .default('free')
59
+ .optional()
60
+ .describe("Which chart to scrape. One of: 'free', 'paid', 'grossing'. Default: 'free'"),
61
+ limit: z
62
+ .number()
63
+ .min(1)
64
+ .max(100)
65
+ .default(100)
66
+ .optional()
67
+ .describe('Number of apps to return per store/country/category combination (1-100, default: 100)'),
68
+ credentials: z
69
+ .record(z.nativeEnum(CredentialType), z.string())
70
+ .optional()
71
+ .describe('Required credentials (auto-injected)'),
72
+ });
73
+ const AppRankingsToolResultSchema = z.object({
74
+ operation: z.enum(['rankings']).describe('Operation performed'),
75
+ rankings: z.array(AppRankingSchema).describe('App rankings'),
76
+ totalApps: z.number().describe('Total apps returned'),
77
+ success: z.boolean().describe('Whether the operation was successful'),
78
+ error: z.string().describe('Error message if operation failed'),
79
+ });
80
+ const CHART_TYPE_MAP = {
81
+ free: { apple: 'topfreeapplications', google: 'topselling_free' },
82
+ paid: { apple: 'toppaidapplications', google: 'topselling_paid' },
83
+ grossing: {
84
+ apple: 'topgrossingapplications',
85
+ google: 'topgrossing',
86
+ },
87
+ };
88
+ export class AppRankingsTool extends ToolBubble {
89
+ static bubbleName = 'app-rankings-tool';
90
+ static schema = AppRankingsToolParamsSchema;
91
+ static resultSchema = AppRankingsToolResultSchema;
92
+ static shortDescription = 'Scrape Apple App Store and Google Play top free, paid, and grossing chart rankings across countries and categories.';
93
+ static longDescription = `
94
+ App store rankings scraping tool for iOS and Android top charts.
95
+
96
+ Operations:
97
+ - rankings: Get top chart rankings (free, paid, or grossing) across 60+ countries and 50+ categories
98
+
99
+ Supports both Apple App Store and Google Play Store in a single run.
100
+ Returns up to \`limit\` apps per store/country/category combination as a flat array.
101
+ Use the \`store\`, \`country\`, and \`category\` fields on each result to filter/group.
102
+
103
+ Examples:
104
+ // US top 10 free apps (both stores):
105
+ { operation: 'rankings', limit: 10 }
106
+
107
+ // Apple-only Games category, top 50:
108
+ { operation: 'rankings', stores: ['apple'], appleCategories: ['6014'], limit: 50 }
109
+
110
+ // Top grossing across US, JP, DE:
111
+ { operation: 'rankings', chartType: 'grossing', countries: ['us', 'jp', 'de'] }
112
+
113
+ // Multiple categories (Health & Medical):
114
+ { operation: 'rankings', appleCategories: ['6013', '6020'], googleCategories: ['HEALTH_AND_FITNESS', 'MEDICAL'] }
115
+
116
+ Apple Category IDs: overall, 6000 (Business), 6001 (Weather), 6002 (Utilities), 6003 (Travel),
117
+ 6004 (Sports), 6005 (Social Networking), 6006 (Reference), 6007 (Productivity), 6008 (Lifestyle),
118
+ 6009 (News), 6010 (Navigation), 6011 (Music), 6012 (Photo & Video), 6013 (Health & Fitness),
119
+ 6014 (Games), 6015 (Finance), 6016 (Entertainment), 6017 (Education), 6018 (Books),
120
+ 6020 (Medical), 6023 (Food & Drink), 6024 (Shopping), 6026 (Magazines & Newspapers)
121
+
122
+ Google Play Categories: APPLICATION, GAME, ART_AND_DESIGN, AUTO_AND_VEHICLES, BEAUTY,
123
+ BOOKS_AND_REFERENCE, BUSINESS, COMMUNICATION, DATING, EDUCATION, ENTERTAINMENT, EVENTS,
124
+ FINANCE, FOOD_AND_DRINK, HEALTH_AND_FITNESS, LIFESTYLE, MAPS_AND_NAVIGATION, MEDICAL,
125
+ MUSIC_AND_AUDIO, NEWS_AND_MAGAZINES, PHOTOGRAPHY, PRODUCTIVITY, SHOPPING, SOCIAL, SPORTS,
126
+ TOOLS, TRAVEL_AND_LOCAL, VIDEO_PLAYERS, WEATHER
127
+
128
+ Uses Apify's slothtechlabs/ios-android-app-rankings-scraper.
129
+ `;
130
+ static alias = 'app-rankings';
131
+ static type = 'tool';
132
+ constructor(params = {
133
+ operation: 'rankings',
134
+ stores: ['apple', 'google'],
135
+ limit: 100,
136
+ }, context) {
137
+ super(params, context);
138
+ }
139
+ async performAction() {
140
+ const credentials = this.params.credentials;
141
+ if (!credentials || !credentials[CredentialType.APIFY_CRED]) {
142
+ return this.createErrorResult('App rankings scraping requires authentication. Please configure APIFY_CRED.');
143
+ }
144
+ try {
145
+ const result = await this.scrapeRankings();
146
+ return {
147
+ operation: 'rankings',
148
+ rankings: result.rankings,
149
+ totalApps: result.rankings.length,
150
+ success: result.success,
151
+ error: result.error,
152
+ };
153
+ }
154
+ catch (error) {
155
+ return this.createErrorResult(error instanceof Error ? error.message : 'Unknown error occurred');
156
+ }
157
+ }
158
+ createErrorResult(errorMessage) {
159
+ return {
160
+ operation: 'rankings',
161
+ rankings: [],
162
+ totalApps: 0,
163
+ success: false,
164
+ error: errorMessage,
165
+ };
166
+ }
167
+ async scrapeRankings() {
168
+ const { stores = ['apple', 'google'], countries = ['us'], appleCategories = ['overall'], googleCategories = ['APPLICATION'], chartType = 'free', limit = 100, } = this.params;
169
+ const chartMapping = CHART_TYPE_MAP[chartType];
170
+ const input = {
171
+ stores: stores,
172
+ appleCountries: countries,
173
+ appleCategories: appleCategories,
174
+ appleChartTypes: [chartMapping.apple],
175
+ googleCountries: countries,
176
+ googleCategories: googleCategories,
177
+ googleChartTypes: [chartMapping.google],
178
+ limit,
179
+ };
180
+ const scraper = new ApifyBubble({
181
+ actorId: 'slothtechlabs/ios-android-app-rankings-scraper',
182
+ input,
183
+ waitForFinish: true,
184
+ timeout: 300000,
185
+ limit: stores.length * countries.length * limit,
186
+ credentials: this.params.credentials,
187
+ }, this.context, 'appRankingsScraper');
188
+ const apifyResult = await scraper.action();
189
+ if (!apifyResult.data.success) {
190
+ return {
191
+ rankings: [],
192
+ success: false,
193
+ error: apifyResult.data.error || 'Failed to scrape app rankings',
194
+ };
195
+ }
196
+ const items = apifyResult.data.items || [];
197
+ const rankings = this.transformRankings(items);
198
+ return {
199
+ rankings,
200
+ success: true,
201
+ error: '',
202
+ };
203
+ }
204
+ transformRankings(items) {
205
+ return items.map((item) => ({
206
+ store: item.store,
207
+ rank: item.rank,
208
+ appName: item.appName,
209
+ appId: item.appId,
210
+ appUrl: item.appUrl || null,
211
+ developer: item.developer || null,
212
+ rating: typeof item.rating === 'number' || typeof item.rating === 'string'
213
+ ? item.rating
214
+ : null,
215
+ ratingCount: typeof item.ratingCount === 'number' ||
216
+ typeof item.ratingCount === 'string'
217
+ ? item.ratingCount
218
+ : null,
219
+ price: item.price || null,
220
+ category: item.category,
221
+ chartType: item.chartType,
222
+ genres: item.genres || null,
223
+ country: item.country,
224
+ releaseDate: item.releaseDate || null,
225
+ iconUrl: item.iconUrl || null,
226
+ scrapedAt: item.scrapedAt,
227
+ }));
228
+ }
229
+ }
230
+ //# sourceMappingURL=app-rankings-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-rankings-tool.js","sourceRoot":"","sources":["../../../src/bubbles/tool-bubble/app-rankings-tool.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,6 @@ export declare const BrowserSessionDataSchema: z.ZodObject<{
30
30
  secure?: boolean | undefined;
31
31
  }>, "many">;
32
32
  }, "strip", z.ZodTypeAny, {
33
- contextId: string;
34
33
  cookies: {
35
34
  value: string;
36
35
  name: string;
@@ -40,8 +39,8 @@ export declare const BrowserSessionDataSchema: z.ZodObject<{
40
39
  httpOnly?: boolean | undefined;
41
40
  secure?: boolean | undefined;
42
41
  }[];
43
- }, {
44
42
  contextId: string;
43
+ }, {
45
44
  cookies: {
46
45
  value: string;
47
46
  name: string;
@@ -51,6 +50,7 @@ export declare const BrowserSessionDataSchema: z.ZodObject<{
51
50
  httpOnly?: boolean | undefined;
52
51
  secure?: boolean | undefined;
53
52
  }[];
53
+ contextId: string;
54
54
  }>;
55
55
  /**
56
56
  * Custom proxy configuration
@@ -135,13 +135,13 @@ declare const BubbleFlowValidationToolResultSchema: z.ZodObject<{
135
135
  hasActionCall: boolean;
136
136
  parameterCount: number;
137
137
  }[] | undefined;
138
- bubbleCount?: number | undefined;
139
138
  variableTypes?: {
140
139
  type: string;
141
140
  name: string;
142
141
  column: number;
143
142
  line: number;
144
143
  }[] | undefined;
144
+ bubbleCount?: number | undefined;
145
145
  }, {
146
146
  valid: boolean;
147
147
  error: string;
@@ -160,13 +160,13 @@ declare const BubbleFlowValidationToolResultSchema: z.ZodObject<{
160
160
  hasActionCall: boolean;
161
161
  parameterCount: number;
162
162
  }[] | undefined;
163
- bubbleCount?: number | undefined;
164
163
  variableTypes?: {
165
164
  type: string;
166
165
  name: string;
167
166
  column: number;
168
167
  line: number;
169
168
  }[] | undefined;
169
+ bubbleCount?: number | undefined;
170
170
  }>;
171
171
  /**
172
172
  * BubbleFlow Validation Tool
@@ -284,13 +284,13 @@ export declare class BubbleFlowValidationTool extends ToolBubble<BubbleFlowValid
284
284
  hasActionCall: boolean;
285
285
  parameterCount: number;
286
286
  }[] | undefined;
287
- bubbleCount?: number | undefined;
288
287
  variableTypes?: {
289
288
  type: string;
290
289
  name: string;
291
290
  column: number;
292
291
  line: number;
293
292
  }[] | undefined;
293
+ bubbleCount?: number | undefined;
294
294
  }, {
295
295
  valid: boolean;
296
296
  error: string;
@@ -309,13 +309,13 @@ export declare class BubbleFlowValidationTool extends ToolBubble<BubbleFlowValid
309
309
  hasActionCall: boolean;
310
310
  parameterCount: number;
311
311
  }[] | undefined;
312
- bubbleCount?: number | undefined;
313
312
  variableTypes?: {
314
313
  type: string;
315
314
  name: string;
316
315
  column: number;
317
316
  line: number;
318
317
  }[] | undefined;
318
+ bubbleCount?: number | undefined;
319
319
  }>;
320
320
  static readonly shortDescription = "Validates BubbleFlow TypeScript code for syntax and structure";
321
321
  static readonly longDescription = "\n A comprehensive validation tool for BubbleFlow TypeScript code.\n \n What it does:\n - Validates TypeScript syntax and compilation\n - Checks BubbleFlow class structure and requirements\n - Parses and analyzes bubble instantiations\n - Provides detailed error reporting with line numbers\n - Returns metadata about detected bubbles\n \n How it works:\n - Uses TypeScript compiler API for syntax validation\n - Validates that code extends BubbleFlow and has handle method\n - Parses bubble instantiations using AST analysis\n - Maps bubble class names to registered bubble types\n \n Use cases:\n - When an AI agent needs to validate user-provided BubbleFlow code\n - When checking code before execution or deployment\n - When providing feedback on BubbleFlow implementation\n - When analyzing bubble usage patterns in code\n ";