@hyperstar/mcp 0.1.6 → 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 (55) hide show
  1. package/README.md +84 -24
  2. package/dist/auth/cli-auth-client.js +0 -1
  3. package/dist/auth/cli-auth-state.js +0 -1
  4. package/dist/auth/local-callback.js +0 -1
  5. package/dist/auth/pkce.js +0 -1
  6. package/dist/bulk-email-guidance.js +0 -1
  7. package/dist/bulk-email-inputs.d.ts +254 -0
  8. package/dist/bulk-email-inputs.js +168 -0
  9. package/dist/bulk-email-tool-body.d.ts +6 -0
  10. package/dist/bulk-email-tool-body.js +37 -0
  11. package/dist/campaign-creator-selection.js +0 -1
  12. package/dist/cli.js +2 -6
  13. package/dist/config.js +15 -2
  14. package/dist/discovery.d.ts +6 -0
  15. package/dist/discovery.js +62 -0
  16. package/dist/http.js +0 -1
  17. package/dist/index.js +0 -1
  18. package/dist/package-metadata.d.ts +2 -0
  19. package/dist/package-metadata.js +12 -0
  20. package/dist/schemas.js +0 -1
  21. package/dist/search-result-projection.d.ts +3 -1
  22. package/dist/search-result-projection.js +33 -3
  23. package/dist/server.js +7 -2
  24. package/dist/tool-descriptions.d.ts +19 -0
  25. package/dist/tool-descriptions.js +19 -0
  26. package/dist/tool-guidance.d.ts +10 -0
  27. package/dist/tool-guidance.js +82 -0
  28. package/dist/tool-http-helpers.js +0 -1
  29. package/dist/tool-inputs.d.ts +324 -95
  30. package/dist/tool-inputs.js +87 -92
  31. package/dist/tool-result.js +0 -1
  32. package/dist/tools.js +34 -52
  33. package/dist/workflow-content.d.ts +43 -0
  34. package/dist/workflow-content.js +153 -0
  35. package/dist/workspaces.d.ts +1 -1
  36. package/dist/workspaces.js +12 -45
  37. package/package.json +25 -2
  38. package/dist/auth/cli-auth-client.js.map +0 -1
  39. package/dist/auth/cli-auth-state.js.map +0 -1
  40. package/dist/auth/local-callback.js.map +0 -1
  41. package/dist/auth/pkce.js.map +0 -1
  42. package/dist/bulk-email-guidance.js.map +0 -1
  43. package/dist/campaign-creator-selection.js.map +0 -1
  44. package/dist/cli.js.map +0 -1
  45. package/dist/config.js.map +0 -1
  46. package/dist/http.js.map +0 -1
  47. package/dist/index.js.map +0 -1
  48. package/dist/schemas.js.map +0 -1
  49. package/dist/search-result-projection.js.map +0 -1
  50. package/dist/server.js.map +0 -1
  51. package/dist/tool-http-helpers.js.map +0 -1
  52. package/dist/tool-inputs.js.map +0 -1
  53. package/dist/tool-result.js.map +0 -1
  54. package/dist/tools.js.map +0 -1
  55. package/dist/workspaces.js.map +0 -1
@@ -1,5 +1,7 @@
1
1
  import { z } from "zod";
2
+ import { type CheckBulkEmailReadinessInput, type StartBulkEmailInput } from "./bulk-email-inputs.js";
2
3
  import type { JsonObject } from "./http.js";
4
+ export { CheckBulkEmailReadinessDiscoveryInputSchema, CheckBulkEmailReadinessInputSchema, StartBulkEmailDiscoveryInputSchema, StartBulkEmailInputSchema, normalizeCheckBulkEmailReadinessInput, normalizeStartBulkEmailInput, type CampaignCreatorSelectionInput, type CheckBulkEmailReadinessInput, type StartBulkEmailInput, } from "./bulk-email-inputs.js";
3
5
  export declare const SearchCreatorsInputSchema: z.ZodObject<{
4
6
  kind: z.ZodEnum<{
5
7
  semantic: "semantic";
@@ -11,14 +13,333 @@ export declare const SearchCreatorsInputSchema: z.ZodObject<{
11
13
  }>;
12
14
  region: z.ZodPipe<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodString>;
13
15
  query: z.ZodOptional<z.ZodString>;
14
- filters: z.ZodOptional<z.ZodType<import("./schemas.js").JsonObject, unknown, z.core.$ZodTypeInternals<import("./schemas.js").JsonObject, unknown>>>;
16
+ filters: z.ZodOptional<z.ZodPipe<z.ZodObject<{
17
+ has_email: z.ZodOptional<z.ZodBoolean>;
18
+ email_contactability: z.ZodOptional<z.ZodEnum<{
19
+ unlocked: "unlocked";
20
+ locked: "locked";
21
+ missing: "missing";
22
+ }>>;
23
+ min_media_count: z.ZodOptional<z.ZodNumber>;
24
+ follower_range: z.ZodOptional<z.ZodObject<{
25
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
26
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
27
+ }, z.core.$strict>>;
28
+ is_sales: z.ZodOptional<z.ZodBoolean>;
29
+ gmv: z.ZodOptional<z.ZodObject<{
30
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
31
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
32
+ }, z.core.$strict>>;
33
+ gpm: z.ZodOptional<z.ZodObject<{
34
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
35
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
36
+ }, z.core.$strict>>;
37
+ is_verified: z.ZodOptional<z.ZodBoolean>;
38
+ has_tiktok_shop: z.ZodOptional<z.ZodBoolean>;
39
+ commercial_user: z.ZodOptional<z.ZodBoolean>;
40
+ creator_gender: z.ZodOptional<z.ZodEnum<{
41
+ male: "male";
42
+ female: "female";
43
+ }>>;
44
+ creator_language: z.ZodOptional<z.ZodString>;
45
+ category_1: z.ZodOptional<z.ZodString>;
46
+ category_1_not_in: z.ZodOptional<z.ZodArray<z.ZodString>>;
47
+ category_2: z.ZodOptional<z.ZodString>;
48
+ category_2_not_in: z.ZodOptional<z.ZodArray<z.ZodString>>;
49
+ avg_views: z.ZodOptional<z.ZodObject<{
50
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
51
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
52
+ }, z.core.$strict>>;
53
+ avg_engagement_rate: z.ZodOptional<z.ZodObject<{
54
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
55
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
56
+ }, z.core.$strict>>;
57
+ avg_likes: z.ZodOptional<z.ZodObject<{
58
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
59
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
60
+ }, z.core.$strict>>;
61
+ avg_comments: z.ZodOptional<z.ZodObject<{
62
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
63
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
64
+ }, z.core.$strict>>;
65
+ avg_shares: z.ZodOptional<z.ZodObject<{
66
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
67
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
68
+ }, z.core.$strict>>;
69
+ is_business_account: z.ZodOptional<z.ZodBoolean>;
70
+ category_name: z.ZodOptional<z.ZodString>;
71
+ views_growth_rate: z.ZodOptional<z.ZodObject<{
72
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
73
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
74
+ }, z.core.$strict>>;
75
+ engagement_growth_rate: z.ZodOptional<z.ZodObject<{
76
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
77
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
78
+ }, z.core.$strict>>;
79
+ audience_ratio_male: z.ZodOptional<z.ZodObject<{
80
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
81
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
82
+ }, z.core.$strict>>;
83
+ audience_ratio_female: z.ZodOptional<z.ZodObject<{
84
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
85
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
86
+ }, z.core.$strict>>;
87
+ audience_ratio_unknown: z.ZodOptional<z.ZodObject<{
88
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
89
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
90
+ }, z.core.$strict>>;
91
+ audience_ratio_10s: z.ZodOptional<z.ZodObject<{
92
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
93
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
94
+ }, z.core.$strict>>;
95
+ audience_ratio_20s: z.ZodOptional<z.ZodObject<{
96
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
97
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
98
+ }, z.core.$strict>>;
99
+ audience_ratio_30s: z.ZodOptional<z.ZodObject<{
100
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
101
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
102
+ }, z.core.$strict>>;
103
+ audience_ratio_40s: z.ZodOptional<z.ZodObject<{
104
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
105
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
106
+ }, z.core.$strict>>;
107
+ audience_ratio_50s: z.ZodOptional<z.ZodObject<{
108
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
109
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
110
+ }, z.core.$strict>>;
111
+ audience_ratio_60_plus: z.ZodOptional<z.ZodObject<{
112
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
113
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
114
+ }, z.core.$strict>>;
115
+ audience_ratio_15_24: z.ZodOptional<z.ZodObject<{
116
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
117
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
118
+ }, z.core.$strict>>;
119
+ audience_ratio_25_34: z.ZodOptional<z.ZodObject<{
120
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
121
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
122
+ }, z.core.$strict>>;
123
+ audience_ratio_35_44: z.ZodOptional<z.ZodObject<{
124
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
125
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
126
+ }, z.core.$strict>>;
127
+ audience_ratio_45_54: z.ZodOptional<z.ZodObject<{
128
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
129
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
130
+ }, z.core.$strict>>;
131
+ audience_ratio_55_plus: z.ZodOptional<z.ZodObject<{
132
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
133
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
134
+ }, z.core.$strict>>;
135
+ audience_ratio_us: z.ZodOptional<z.ZodObject<{
136
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
137
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
138
+ }, z.core.$strict>>;
139
+ audience_ratio_gb: z.ZodOptional<z.ZodObject<{
140
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
141
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
142
+ }, z.core.$strict>>;
143
+ audience_ratio_kr: z.ZodOptional<z.ZodObject<{
144
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
145
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
146
+ }, z.core.$strict>>;
147
+ audience_ratio_jp: z.ZodOptional<z.ZodObject<{
148
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
149
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
150
+ }, z.core.$strict>>;
151
+ audience_ratio_de: z.ZodOptional<z.ZodObject<{
152
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
153
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
154
+ }, z.core.$strict>>;
155
+ audience_ratio_br: z.ZodOptional<z.ZodObject<{
156
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
157
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
158
+ }, z.core.$strict>>;
159
+ audience_ratio_fr: z.ZodOptional<z.ZodObject<{
160
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
161
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
162
+ }, z.core.$strict>>;
163
+ audience_ratio_in: z.ZodOptional<z.ZodObject<{
164
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
165
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
166
+ }, z.core.$strict>>;
167
+ audience_ratio_id: z.ZodOptional<z.ZodObject<{
168
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
169
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
170
+ }, z.core.$strict>>;
171
+ audience_ratio_mx: z.ZodOptional<z.ZodObject<{
172
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
173
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
174
+ }, z.core.$strict>>;
175
+ audience_ratio_active: z.ZodOptional<z.ZodObject<{
176
+ min: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
177
+ max: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
178
+ }, z.core.$strict>>;
179
+ }, z.core.$strict>, z.ZodTransform<import("./schemas.js").JsonObject, {
180
+ has_email?: boolean | undefined;
181
+ email_contactability?: "unlocked" | "locked" | "missing" | undefined;
182
+ min_media_count?: number | undefined;
183
+ follower_range?: {
184
+ min?: number | null | undefined;
185
+ max?: number | null | undefined;
186
+ } | undefined;
187
+ is_sales?: boolean | undefined;
188
+ gmv?: {
189
+ min?: number | null | undefined;
190
+ max?: number | null | undefined;
191
+ } | undefined;
192
+ gpm?: {
193
+ min?: number | null | undefined;
194
+ max?: number | null | undefined;
195
+ } | undefined;
196
+ is_verified?: boolean | undefined;
197
+ has_tiktok_shop?: boolean | undefined;
198
+ commercial_user?: boolean | undefined;
199
+ creator_gender?: "male" | "female" | undefined;
200
+ creator_language?: string | undefined;
201
+ category_1?: string | undefined;
202
+ category_1_not_in?: string[] | undefined;
203
+ category_2?: string | undefined;
204
+ category_2_not_in?: string[] | undefined;
205
+ avg_views?: {
206
+ min?: number | null | undefined;
207
+ max?: number | null | undefined;
208
+ } | undefined;
209
+ avg_engagement_rate?: {
210
+ min?: number | null | undefined;
211
+ max?: number | null | undefined;
212
+ } | undefined;
213
+ avg_likes?: {
214
+ min?: number | null | undefined;
215
+ max?: number | null | undefined;
216
+ } | undefined;
217
+ avg_comments?: {
218
+ min?: number | null | undefined;
219
+ max?: number | null | undefined;
220
+ } | undefined;
221
+ avg_shares?: {
222
+ min?: number | null | undefined;
223
+ max?: number | null | undefined;
224
+ } | undefined;
225
+ is_business_account?: boolean | undefined;
226
+ category_name?: string | undefined;
227
+ views_growth_rate?: {
228
+ min?: number | null | undefined;
229
+ max?: number | null | undefined;
230
+ } | undefined;
231
+ engagement_growth_rate?: {
232
+ min?: number | null | undefined;
233
+ max?: number | null | undefined;
234
+ } | undefined;
235
+ audience_ratio_male?: {
236
+ min?: number | null | undefined;
237
+ max?: number | null | undefined;
238
+ } | undefined;
239
+ audience_ratio_female?: {
240
+ min?: number | null | undefined;
241
+ max?: number | null | undefined;
242
+ } | undefined;
243
+ audience_ratio_unknown?: {
244
+ min?: number | null | undefined;
245
+ max?: number | null | undefined;
246
+ } | undefined;
247
+ audience_ratio_10s?: {
248
+ min?: number | null | undefined;
249
+ max?: number | null | undefined;
250
+ } | undefined;
251
+ audience_ratio_20s?: {
252
+ min?: number | null | undefined;
253
+ max?: number | null | undefined;
254
+ } | undefined;
255
+ audience_ratio_30s?: {
256
+ min?: number | null | undefined;
257
+ max?: number | null | undefined;
258
+ } | undefined;
259
+ audience_ratio_40s?: {
260
+ min?: number | null | undefined;
261
+ max?: number | null | undefined;
262
+ } | undefined;
263
+ audience_ratio_50s?: {
264
+ min?: number | null | undefined;
265
+ max?: number | null | undefined;
266
+ } | undefined;
267
+ audience_ratio_60_plus?: {
268
+ min?: number | null | undefined;
269
+ max?: number | null | undefined;
270
+ } | undefined;
271
+ audience_ratio_15_24?: {
272
+ min?: number | null | undefined;
273
+ max?: number | null | undefined;
274
+ } | undefined;
275
+ audience_ratio_25_34?: {
276
+ min?: number | null | undefined;
277
+ max?: number | null | undefined;
278
+ } | undefined;
279
+ audience_ratio_35_44?: {
280
+ min?: number | null | undefined;
281
+ max?: number | null | undefined;
282
+ } | undefined;
283
+ audience_ratio_45_54?: {
284
+ min?: number | null | undefined;
285
+ max?: number | null | undefined;
286
+ } | undefined;
287
+ audience_ratio_55_plus?: {
288
+ min?: number | null | undefined;
289
+ max?: number | null | undefined;
290
+ } | undefined;
291
+ audience_ratio_us?: {
292
+ min?: number | null | undefined;
293
+ max?: number | null | undefined;
294
+ } | undefined;
295
+ audience_ratio_gb?: {
296
+ min?: number | null | undefined;
297
+ max?: number | null | undefined;
298
+ } | undefined;
299
+ audience_ratio_kr?: {
300
+ min?: number | null | undefined;
301
+ max?: number | null | undefined;
302
+ } | undefined;
303
+ audience_ratio_jp?: {
304
+ min?: number | null | undefined;
305
+ max?: number | null | undefined;
306
+ } | undefined;
307
+ audience_ratio_de?: {
308
+ min?: number | null | undefined;
309
+ max?: number | null | undefined;
310
+ } | undefined;
311
+ audience_ratio_br?: {
312
+ min?: number | null | undefined;
313
+ max?: number | null | undefined;
314
+ } | undefined;
315
+ audience_ratio_fr?: {
316
+ min?: number | null | undefined;
317
+ max?: number | null | undefined;
318
+ } | undefined;
319
+ audience_ratio_in?: {
320
+ min?: number | null | undefined;
321
+ max?: number | null | undefined;
322
+ } | undefined;
323
+ audience_ratio_id?: {
324
+ min?: number | null | undefined;
325
+ max?: number | null | undefined;
326
+ } | undefined;
327
+ audience_ratio_mx?: {
328
+ min?: number | null | undefined;
329
+ max?: number | null | undefined;
330
+ } | undefined;
331
+ audience_ratio_active?: {
332
+ min?: number | null | undefined;
333
+ max?: number | null | undefined;
334
+ } | undefined;
335
+ }>>>;
15
336
  limit: z.ZodOptional<z.ZodNumber>;
16
337
  reference: z.ZodOptional<z.ZodType<import("./schemas.js").JsonObject, unknown, z.core.$ZodTypeInternals<import("./schemas.js").JsonObject, unknown>>>;
17
338
  sort_by: z.ZodOptional<z.ZodEnum<{
18
- follower_count: "follower_count";
19
- engagement_rate: "engagement_rate";
20
339
  relevance: "relevance";
21
340
  matchScore: "matchScore";
341
+ follower_count: "follower_count";
342
+ engagement_rate: "engagement_rate";
22
343
  avg_views: "avg_views";
23
344
  views_growth_rate: "views_growth_rate";
24
345
  gmv: "gmv";
@@ -78,95 +399,6 @@ export declare const CampaignCreatorsInputSchema: z.ZodObject<{
78
399
  limit: z.ZodOptional<z.ZodNumber>;
79
400
  offset: z.ZodOptional<z.ZodNumber>;
80
401
  }, z.core.$strict>;
81
- export declare const CheckBulkEmailReadinessInputSchema: z.ZodObject<{
82
- campaign_id: z.ZodNumber;
83
- campaign_creator_ids: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
84
- campaign_creator_selection: z.ZodOptional<z.ZodObject<{
85
- workflow_filter: z.ZodOptional<z.ZodEnum<{
86
- email: "email";
87
- content: "content";
88
- all: "all";
89
- email_not_sent: "email_not_sent";
90
- email_sent: "email_sent";
91
- replied: "replied";
92
- negotiating: "negotiating";
93
- rejected_hold: "rejected_hold";
94
- rejected: "rejected";
95
- hold: "hold";
96
- contract: "contract";
97
- contracted: "contracted";
98
- draft: "draft";
99
- final_approved: "final_approved";
100
- posted: "posted";
101
- }>>;
102
- outreach_stage: z.ZodOptional<z.ZodString>;
103
- platform: z.ZodOptional<z.ZodEnum<{
104
- tiktok: "tiktok";
105
- instagram: "instagram";
106
- }>>;
107
- country: z.ZodOptional<z.ZodString>;
108
- has_video: z.ZodOptional<z.ZodBoolean>;
109
- source_type: z.ZodOptional<z.ZodEnum<{
110
- saved_list: "saved_list";
111
- file_upload: "file_upload";
112
- manual_add: "manual_add";
113
- form_submission: "form_submission";
114
- discovery_search: "discovery_search";
115
- }>>;
116
- search: z.ZodOptional<z.ZodString>;
117
- excluded_ids: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
118
- }, z.core.$strict>>;
119
- }, z.core.$strict>;
120
- export declare const StartBulkEmailInputSchema: z.ZodObject<{
121
- campaign_id: z.ZodNumber;
122
- subject: z.ZodString;
123
- body_text: z.ZodString;
124
- from_email: z.ZodOptional<z.ZodString>;
125
- attachments: z.ZodOptional<z.ZodArray<z.ZodString>>;
126
- campaign_creator_ids: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
127
- campaign_creator_selection: z.ZodOptional<z.ZodObject<{
128
- workflow_filter: z.ZodOptional<z.ZodEnum<{
129
- email: "email";
130
- content: "content";
131
- all: "all";
132
- email_not_sent: "email_not_sent";
133
- email_sent: "email_sent";
134
- replied: "replied";
135
- negotiating: "negotiating";
136
- rejected_hold: "rejected_hold";
137
- rejected: "rejected";
138
- hold: "hold";
139
- contract: "contract";
140
- contracted: "contracted";
141
- draft: "draft";
142
- final_approved: "final_approved";
143
- posted: "posted";
144
- }>>;
145
- outreach_stage: z.ZodOptional<z.ZodString>;
146
- platform: z.ZodOptional<z.ZodEnum<{
147
- tiktok: "tiktok";
148
- instagram: "instagram";
149
- }>>;
150
- country: z.ZodOptional<z.ZodString>;
151
- has_video: z.ZodOptional<z.ZodBoolean>;
152
- source_type: z.ZodOptional<z.ZodEnum<{
153
- saved_list: "saved_list";
154
- file_upload: "file_upload";
155
- manual_add: "manual_add";
156
- form_submission: "form_submission";
157
- discovery_search: "discovery_search";
158
- }>>;
159
- search: z.ZodOptional<z.ZodString>;
160
- excluded_ids: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
161
- }, z.core.$strict>>;
162
- form_id: z.ZodOptional<z.ZodNumber>;
163
- form_language: z.ZodOptional<z.ZodEnum<{
164
- en: "en";
165
- ko: "ko";
166
- jp: "jp";
167
- }>>;
168
- idempotency_key: z.ZodString;
169
- }, z.core.$strict>;
170
402
  export declare const BulkEmailJobInputSchema: z.ZodObject<{
171
403
  job_id: z.ZodString;
172
404
  }, z.core.$strict>;
@@ -255,8 +487,6 @@ type SaveSearchResultsToCampaignInput = z.infer<typeof SaveSearchResultsToCampai
255
487
  type ListCampaignsInput = z.infer<typeof ListCampaignsInputSchema>;
256
488
  type CreateCampaignInput = z.infer<typeof CreateCampaignInputSchema>;
257
489
  type CampaignCreatorsInput = z.infer<typeof CampaignCreatorsInputSchema>;
258
- type CheckBulkEmailReadinessInput = z.infer<typeof CheckBulkEmailReadinessInputSchema>;
259
- type StartBulkEmailInput = z.infer<typeof StartBulkEmailInputSchema>;
260
490
  type BulkEmailJobInput = z.infer<typeof BulkEmailJobInputSchema>;
261
491
  type InboxFiltersInput = z.infer<typeof InboxFiltersInputSchema>;
262
492
  type ListInboxThreadsInput = z.infer<typeof ListInboxThreadsInputSchema>;
@@ -281,4 +511,3 @@ export type HyperstarToolHandlers = {
281
511
  readonly updateInboxThreadState: (input: UpdateInboxThreadStateInput) => Promise<JsonObject>;
282
512
  readonly sendInboxReply: (input: SendInboxReplyInput) => Promise<JsonObject>;
283
513
  };
284
- export {};
@@ -1,5 +1,7 @@
1
1
  import { z } from "zod";
2
+ import { EmailSubjectSchema, IdempotencyKeySchema, } from "./bulk-email-inputs.js";
2
3
  import { JsonObjectSchema } from "./schemas.js";
4
+ export { CheckBulkEmailReadinessDiscoveryInputSchema, CheckBulkEmailReadinessInputSchema, StartBulkEmailDiscoveryInputSchema, StartBulkEmailInputSchema, normalizeCheckBulkEmailReadinessInput, normalizeStartBulkEmailInput, } from "./bulk-email-inputs.js";
3
5
  const PositivePageLimitSchema = z.number().int().min(1);
4
6
  const SearchPlatformSchema = z.enum(["tiktok", "instagram"]);
5
7
  const InboxPlatformSchema = z.enum(["tiktok", "instagram", "buyer"]);
@@ -24,80 +26,86 @@ const SearchSortBySchema = z.enum([
24
26
  "gmv",
25
27
  "gpm",
26
28
  ]);
27
- const EmailSubjectSchema = z.string().trim().min(1).max(500);
28
- const HeaderValueSchema = z
29
- .string()
30
- .trim()
31
- .regex(/^[\x21-\x7e]+$/, {
32
- message: "value contains unsupported header characters",
33
- });
34
- const IdempotencyKeySchema = HeaderValueSchema.min(1);
35
- const PositiveIdListSchema = z.array(z.number().int().positive()).optional();
36
- const CampaignCreatorSelectionSchema = z
29
+ const RangeFilterSchema = z
37
30
  .object({
38
- workflow_filter: z
39
- .enum([
40
- "all",
41
- "email",
42
- "email_not_sent",
43
- "email_sent",
44
- "replied",
45
- "negotiating",
46
- "rejected_hold",
47
- "rejected",
48
- "hold",
49
- "contract",
50
- "contracted",
51
- "content",
52
- "draft",
53
- "final_approved",
54
- "posted",
55
- ])
56
- .optional(),
57
- outreach_stage: z.string().trim().min(1).optional(),
58
- platform: SearchPlatformSchema.optional(),
59
- country: z.string().trim().min(1).optional(),
60
- has_video: z.boolean().optional(),
61
- source_type: z
62
- .enum([
63
- "saved_list",
64
- "file_upload",
65
- "manual_add",
66
- "form_submission",
67
- "discovery_search",
68
- ])
69
- .optional(),
70
- search: z.string().trim().min(1).optional(),
71
- excluded_ids: z.array(z.number().int().positive()).optional(),
31
+ min: z.number().finite().nullable().optional(),
32
+ max: z.number().finite().nullable().optional(),
72
33
  })
73
34
  .strict();
74
- function validateRecipientSelection(value, context) {
75
- if (value.campaign_creator_ids !== undefined &&
76
- value.campaign_creator_ids.length > 0 &&
77
- value.campaign_creator_selection !== undefined) {
78
- context.addIssue({
79
- code: "custom",
80
- message: "campaign_creator_ids and campaign_creator_selection are mutually exclusive",
81
- path: ["campaign_creator_selection"],
82
- });
83
- }
84
- }
85
- function validateFormLanguage(value, context) {
86
- if (value.form_language !== undefined && value.form_id === undefined) {
87
- context.addIssue({
88
- code: "custom",
89
- message: "form_id is required when form_language is provided",
90
- path: ["form_id"],
91
- });
92
- }
93
- }
35
+ const AudienceRatioFilterSchema = z
36
+ .object({
37
+ min: z.number().finite().min(0).max(1).nullable().optional(),
38
+ max: z.number().finite().min(0).max(1).nullable().optional(),
39
+ })
40
+ .strict();
41
+ const SearchFiltersInputSchema = z
42
+ .object({
43
+ has_email: z.boolean().optional(),
44
+ email_contactability: z.enum(["unlocked", "locked", "missing"]).optional(),
45
+ min_media_count: z.number().int().min(0).optional(),
46
+ follower_range: z
47
+ .object({
48
+ min: z.number().int().min(0).nullable().optional(),
49
+ max: z.number().int().min(0).nullable().optional(),
50
+ })
51
+ .strict()
52
+ .optional(),
53
+ is_sales: z.boolean().optional(),
54
+ gmv: RangeFilterSchema.optional(),
55
+ gpm: RangeFilterSchema.optional(),
56
+ is_verified: z.boolean().optional(),
57
+ has_tiktok_shop: z.boolean().optional(),
58
+ commercial_user: z.boolean().optional(),
59
+ creator_gender: z.enum(["male", "female"]).optional(),
60
+ creator_language: z.string().trim().min(1).optional(),
61
+ category_1: z.string().trim().min(1).optional(),
62
+ category_1_not_in: z.array(z.string().trim().min(1)).optional(),
63
+ category_2: z.string().trim().min(1).optional(),
64
+ category_2_not_in: z.array(z.string().trim().min(1)).optional(),
65
+ avg_views: RangeFilterSchema.optional(),
66
+ avg_engagement_rate: RangeFilterSchema.optional(),
67
+ avg_likes: RangeFilterSchema.optional(),
68
+ avg_comments: RangeFilterSchema.optional(),
69
+ avg_shares: RangeFilterSchema.optional(),
70
+ is_business_account: z.boolean().optional(),
71
+ category_name: z.string().trim().min(1).optional(),
72
+ views_growth_rate: RangeFilterSchema.optional(),
73
+ engagement_growth_rate: RangeFilterSchema.optional(),
74
+ audience_ratio_male: AudienceRatioFilterSchema.optional(),
75
+ audience_ratio_female: AudienceRatioFilterSchema.optional(),
76
+ audience_ratio_unknown: AudienceRatioFilterSchema.optional(),
77
+ audience_ratio_10s: AudienceRatioFilterSchema.optional(),
78
+ audience_ratio_20s: AudienceRatioFilterSchema.optional(),
79
+ audience_ratio_30s: AudienceRatioFilterSchema.optional(),
80
+ audience_ratio_40s: AudienceRatioFilterSchema.optional(),
81
+ audience_ratio_50s: AudienceRatioFilterSchema.optional(),
82
+ audience_ratio_60_plus: AudienceRatioFilterSchema.optional(),
83
+ audience_ratio_15_24: AudienceRatioFilterSchema.optional(),
84
+ audience_ratio_25_34: AudienceRatioFilterSchema.optional(),
85
+ audience_ratio_35_44: AudienceRatioFilterSchema.optional(),
86
+ audience_ratio_45_54: AudienceRatioFilterSchema.optional(),
87
+ audience_ratio_55_plus: AudienceRatioFilterSchema.optional(),
88
+ audience_ratio_us: AudienceRatioFilterSchema.optional(),
89
+ audience_ratio_gb: AudienceRatioFilterSchema.optional(),
90
+ audience_ratio_kr: AudienceRatioFilterSchema.optional(),
91
+ audience_ratio_jp: AudienceRatioFilterSchema.optional(),
92
+ audience_ratio_de: AudienceRatioFilterSchema.optional(),
93
+ audience_ratio_br: AudienceRatioFilterSchema.optional(),
94
+ audience_ratio_fr: AudienceRatioFilterSchema.optional(),
95
+ audience_ratio_in: AudienceRatioFilterSchema.optional(),
96
+ audience_ratio_id: AudienceRatioFilterSchema.optional(),
97
+ audience_ratio_mx: AudienceRatioFilterSchema.optional(),
98
+ audience_ratio_active: AudienceRatioFilterSchema.optional(),
99
+ })
100
+ .strict()
101
+ .transform((value) => JsonObjectSchema.parse(value));
94
102
  export const SearchCreatorsInputSchema = z
95
103
  .object({
96
104
  kind: z.enum(["semantic", "reference"]),
97
105
  platform: SearchPlatformSchema,
98
106
  region: SearchRegionSchema,
99
107
  query: z.string().trim().min(1).optional(),
100
- filters: JsonObjectSchema.optional(),
108
+ filters: SearchFiltersInputSchema.optional(),
101
109
  limit: SearchCreateLimitSchema.optional(),
102
110
  reference: JsonObjectSchema.optional(),
103
111
  sort_by: SearchSortBySchema.optional(),
@@ -128,6 +136,20 @@ export const SearchCreatorsInputSchema = z
128
136
  path: ["sort_by"],
129
137
  });
130
138
  }
139
+ if (value.platform !== "tiktok" && value.filters?.gmv !== undefined) {
140
+ context.addIssue({
141
+ code: "custom",
142
+ message: "gmv filters are only available for TikTok searches",
143
+ path: ["filters", "gmv"],
144
+ });
145
+ }
146
+ if (value.platform !== "tiktok" && value.filters?.gpm !== undefined) {
147
+ context.addIssue({
148
+ code: "custom",
149
+ message: "gpm filters are only available for TikTok searches",
150
+ path: ["filters", "gpm"],
151
+ });
152
+ }
131
153
  });
132
154
  export const WhoamiInputSchema = z.object({}).strict();
133
155
  export const ListWorkspacesInputSchema = z.object({}).strict();
@@ -183,32 +205,6 @@ export const CampaignCreatorsInputSchema = z
183
205
  offset: z.number().int().min(0).optional(),
184
206
  })
185
207
  .strict();
186
- export const CheckBulkEmailReadinessInputSchema = z
187
- .object({
188
- campaign_id: z.number().int().positive(),
189
- campaign_creator_ids: PositiveIdListSchema,
190
- campaign_creator_selection: CampaignCreatorSelectionSchema.optional(),
191
- })
192
- .strict()
193
- .superRefine(validateRecipientSelection);
194
- export const StartBulkEmailInputSchema = z
195
- .object({
196
- campaign_id: z.number().int().positive(),
197
- subject: EmailSubjectSchema,
198
- body_text: z.string().trim().min(1),
199
- from_email: z.string().trim().min(1).optional(),
200
- attachments: z.array(z.string().trim().min(1)).optional(),
201
- campaign_creator_ids: PositiveIdListSchema,
202
- campaign_creator_selection: CampaignCreatorSelectionSchema.optional(),
203
- form_id: z.number().int().positive().optional(),
204
- form_language: z.enum(["en", "ko", "jp"]).optional(),
205
- idempotency_key: IdempotencyKeySchema,
206
- })
207
- .strict()
208
- .superRefine((value, context) => {
209
- validateRecipientSelection(value, context);
210
- validateFormLanguage(value, context);
211
- });
212
208
  export const BulkEmailJobInputSchema = z
213
209
  .object({
214
210
  job_id: z.string().trim().min(1),
@@ -261,4 +257,3 @@ export const SendInboxReplyInputSchema = z
261
257
  idempotency_key: IdempotencyKeySchema,
262
258
  })
263
259
  .strict();
264
- //# sourceMappingURL=tool-inputs.js.map
@@ -20,4 +20,3 @@ function structuredContentFrom(output) {
20
20
  function isJsonObject(value) {
21
21
  return value !== null && typeof value === "object" && !Array.isArray(value);
22
22
  }
23
- //# sourceMappingURL=tool-result.js.map