@bubblelab/bubble-core 0.1.237 → 0.1.239
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.
- package/dist/bubble-bundle.d.ts +147 -126
- package/dist/bubble-factory.d.ts.map +1 -1
- package/dist/bubble-factory.js +3 -0
- package/dist/bubble-factory.js.map +1 -1
- package/dist/bubbles/service-bubble/agi-inc.d.ts +20 -20
- package/dist/bubbles/service-bubble/ai-agent.d.ts +128 -82
- package/dist/bubbles/service-bubble/ai-agent.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/ai-agent.js +30 -2
- package/dist/bubbles/service-bubble/ai-agent.js.map +1 -1
- package/dist/bubbles/service-bubble/airtable.d.ts +76 -76
- package/dist/bubbles/service-bubble/apify/actors/app-rankings-scraper.d.ts +84 -0
- package/dist/bubbles/service-bubble/apify/actors/app-rankings-scraper.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/app-rankings-scraper.js +214 -0
- package/dist/bubbles/service-bubble/apify/actors/app-rankings-scraper.js.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/google-maps-scraper.d.ts +2 -2
- package/dist/bubbles/service-bubble/apify/actors/instagram-hashtag-scraper.d.ts +2 -2
- package/dist/bubbles/service-bubble/apify/actors/instagram-scraper.d.ts +4 -4
- package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.d.ts +2 -2
- package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts +95 -10
- package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/apify/apify-scraper.schema.js +8 -0
- package/dist/bubbles/service-bubble/apify/apify-scraper.schema.js.map +1 -1
- package/dist/bubbles/service-bubble/apify/apify.d.ts +23 -23
- package/dist/bubbles/service-bubble/apify/apify.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/apify/apify.js +2 -1
- package/dist/bubbles/service-bubble/apify/apify.js.map +1 -1
- package/dist/bubbles/service-bubble/apify/index.d.ts +1 -0
- package/dist/bubbles/service-bubble/apify/index.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/apify/index.js +2 -0
- package/dist/bubbles/service-bubble/apify/index.js.map +1 -1
- package/dist/bubbles/service-bubble/ashby/ashby.d.ts +2 -2
- package/dist/bubbles/service-bubble/ashby/ashby.schema.d.ts +2 -2
- package/dist/bubbles/service-bubble/assembled/assembled.d.ts +6 -6
- package/dist/bubbles/service-bubble/assembled/assembled.schema.d.ts +2 -2
- package/dist/bubbles/service-bubble/attio/attio.d.ts +2 -2
- package/dist/bubbles/service-bubble/attio/attio.schema.d.ts +2 -2
- package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +1 -1
- package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +1 -1
- package/dist/bubbles/service-bubble/capability-pipeline.d.ts +2 -2
- package/dist/bubbles/service-bubble/capability-pipeline.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/capability-pipeline.js +18 -1
- package/dist/bubbles/service-bubble/capability-pipeline.js.map +1 -1
- package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +8 -8
- package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts +16 -16
- package/dist/bubbles/service-bubble/firecrawl.d.ts +346 -346
- package/dist/bubbles/service-bubble/followupboss.d.ts +4 -4
- package/dist/bubbles/service-bubble/github.d.ts +60 -60
- package/dist/bubbles/service-bubble/gmail.d.ts +164 -164
- package/dist/bubbles/service-bubble/google-calendar.d.ts +6 -6
- package/dist/bubbles/service-bubble/google-drive.d.ts +36 -36
- package/dist/bubbles/service-bubble/http.d.ts +2 -2
- package/dist/bubbles/service-bubble/hubspot/hubspot.d.ts +2 -2
- package/dist/bubbles/service-bubble/hubspot/hubspot.schema.d.ts +2 -2
- package/dist/bubbles/service-bubble/insforge-db.d.ts +8 -8
- package/dist/bubbles/service-bubble/jira/jira.d.ts +42 -42
- package/dist/bubbles/service-bubble/jira/jira.schema.d.ts +50 -50
- package/dist/bubbles/service-bubble/notion/notion.d.ts +848 -848
- package/dist/bubbles/service-bubble/postgresql.d.ts +8 -8
- package/dist/bubbles/service-bubble/posthog/posthog.d.ts +10 -10
- package/dist/bubbles/service-bubble/posthog/posthog.schema.d.ts +14 -14
- package/dist/bubbles/service-bubble/slack/slack.d.ts +238 -238
- package/dist/bubbles/service-bubble/stripe/stripe.d.ts +46 -46
- package/dist/bubbles/service-bubble/stripe/stripe.schema.d.ts +52 -52
- package/dist/bubbles/service-bubble/xero/xero.d.ts +2 -2
- package/dist/bubbles/service-bubble/xero/xero.schema.d.ts +2 -2
- package/dist/bubbles/service-bubble/zendesk/zendesk.d.ts +20 -20
- package/dist/bubbles/service-bubble/zendesk/zendesk.schema.d.ts +20 -20
- package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +2 -2
- package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.schema.d.ts +2 -2
- package/dist/bubbles/tool-bubble/app-rankings-tool.d.ts +285 -0
- package/dist/bubbles/tool-bubble/app-rankings-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/app-rankings-tool.js +230 -0
- package/dist/bubbles/tool-bubble/app-rankings-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/browser-tools/_shared/schema.d.ts +2 -2
- package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +10 -10
- package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +334 -334
- package/dist/bubbles/tool-bubble/people-search-tool.d.ts +34 -34
- package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +10 -10
- package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +52 -52
- package/dist/bubbles/tool-bubble/twitter-tool.d.ts +124 -124
- package/dist/bubbles/tool-bubble/yc-scraper-tool.d.ts +8 -8
- package/dist/bubbles/tool-bubble/youtube-tool.d.ts +20 -20
- package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +12 -12
- package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +16 -16
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +2 -2
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +34 -34
- package/dist/bubbles.json +279 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/types/available-tools.d.ts +1 -1
- package/dist/types/available-tools.d.ts.map +1 -1
- package/dist/types/available-tools.js +1 -0
- package/dist/types/available-tools.js.map +1 -1
- 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
|
+
developer: string | null;
|
|
54
|
+
store: "google" | "apple";
|
|
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
|
+
developer: string | null;
|
|
71
|
+
store: "google" | "apple";
|
|
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
|
+
developer: string | null;
|
|
96
|
+
store: "google" | "apple";
|
|
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
|
+
developer: string | null;
|
|
119
|
+
store: "google" | "apple";
|
|
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
|
+
developer: string | null;
|
|
191
|
+
store: "google" | "apple";
|
|
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
|
+
developer: string | null;
|
|
208
|
+
store: "google" | "apple";
|
|
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
|
+
developer: string | null;
|
|
233
|
+
store: "google" | "apple";
|
|
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
|
+
developer: string | null;
|
|
256
|
+
store: "google" | "apple";
|
|
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 ";
|