lancer-shared 1.2.124 → 1.2.126

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.
@@ -11984,7 +11984,7 @@ const hourlyBudgetSchema$1 = objectType({
11984
11984
  min: numberType(),
11985
11985
  max: numberType(),
11986
11986
  });
11987
- const feedJobSchemaV2 = objectType({
11987
+ const jobListingSchema = objectType({
11988
11988
  uid: stringType(),
11989
11989
  ciphertext: stringType(),
11990
11990
  title: stringType(),
@@ -12024,7 +12024,7 @@ const jobsSearchSchema = objectType({
12024
12024
  loaded: booleanType(),
12025
12025
  failed: booleanType(),
12026
12026
  }),
12027
- jobs: arrayType(feedJobSchemaV2),
12027
+ jobs: arrayType(jobListingSchema),
12028
12028
  paging: pagingSchema,
12029
12029
  abortController: anyType().nullable(),
12030
12030
  currentPage: numberType(),
@@ -12036,90 +12036,6 @@ const nuxtStateJobsSearchSchema = objectType({
12036
12036
  jobsSearch: jobsSearchSchema,
12037
12037
  }),
12038
12038
  });
12039
- // import { any, array, boolean, number, object, record, string, z } from 'zod';
12040
- // import { Region } from '../shared';
12041
- // // This schema is now more lenient to handle null values for visitor data.
12042
- // const clientSchema = object({
12043
- // location: object({
12044
- // country: string().nullable(),
12045
- // }),
12046
- // isPaymentVerified: boolean(),
12047
- // totalSpent: string().nullable(),
12048
- // totalReviews: number().nullable(), // Changed from number()
12049
- // totalFeedback: number().nullable(), // Changed from number()
12050
- // hasFinancialPrivacy: boolean().nullable(), // Changed from boolean()
12051
- // });
12052
- // const attrsSchema = object({
12053
- // uid: string(),
12054
- // parentSkillUid: string().nullable(),
12055
- // prefLabel: string(),
12056
- // prettyName: string(),
12057
- // freeText: any().nullable(),
12058
- // highlighted: boolean(),
12059
- // });
12060
- // const amountSchema = object({
12061
- // amount: number(),
12062
- // });
12063
- // const hourlyBudgetSchema = object({
12064
- // min: number(),
12065
- // max: number(),
12066
- // });
12067
- // export const feedJobSchemaV2 = object({
12068
- // uid: string(),
12069
- // ciphertext: string(),
12070
- // title: string(),
12071
- // description: string(),
12072
- // createdOn: string(),
12073
- // publishedOn: string(),
12074
- // renewedOn: string().nullable(),
12075
- // type: number(),
12076
- // durationLabel: string().nullable(),
12077
- // engagement: string().nullable(),
12078
- // amount: amountSchema,
12079
- // connectPrice: number().nullable(),
12080
- // client: clientSchema, // Uses the updated clientSchema above
12081
- // clientRelation: any().nullable(),
12082
- // freelancersToHire: number().nullable(), // Changed from number()
12083
- // relevanceEncoded: string(),
12084
- // enterpriseJob: boolean().nullable(), // Changed from boolean()
12085
- // tierText: z.string().nullable(),
12086
- // isApplied: boolean(),
12087
- // proposalsTier: string().nullable(),
12088
- // premium: boolean(),
12089
- // attrs: array(attrsSchema),
12090
- // hourlyBudget: hourlyBudgetSchema,
12091
- // weeklyBudget: amountSchema,
12092
- // isSTSVectorSearchResult: boolean().optional(), // Changed from boolean()
12093
- // });
12094
- // const pagingSchema = object({
12095
- // total: number(),
12096
- // offset: number(),
12097
- // count: number(),
12098
- // });
12099
- // const jobsSearchSchema = object({
12100
- // status: object({
12101
- // loading: boolean(),
12102
- // loaded: boolean(),
12103
- // failed: boolean(),
12104
- // }),
12105
- // jobs: array(feedJobSchemaV2),
12106
- // paging: pagingSchema,
12107
- // abortController: any().nullable(),
12108
- // currentPage: number(),
12109
- // jobsPerPage: number(),
12110
- // searchQueryCache: record(string()),
12111
- // });
12112
- // export const nuxtStateJobsSearchSchema = object({
12113
- // state: object({
12114
- // jobsSearch: jobsSearchSchema,
12115
- // }),
12116
- // });
12117
- // export interface NuxtStateJobsSearch
12118
- // extends z.infer<typeof nuxtStateJobsSearchSchema> {}
12119
- // export interface FeedJobV2 extends z.infer<typeof feedJobSchemaV2> {
12120
- // jobUrl: string;
12121
- // region: Region;
12122
- // }
12123
12039
 
12124
12040
  // Field mapping from feed-job to job-details for the missing fields that were added
12125
12041
  const FEED_JOB_TO_JOB_DETAILS_FIELD_MAPPING = {
@@ -12818,6 +12734,9 @@ const agencyBidProposalDataSchema = bidPayloadProposalDataSchema.extend({
12818
12734
  specializedProfile: z.string().nullable(),
12819
12735
  });
12820
12736
  const bidPayloadSchema = z.object({
12737
+ organizationId: z.string(),
12738
+ campaignId: z.string(),
12739
+ lead: leadSchema,
12821
12740
  jobUrl: z.string(),
12822
12741
  username: z.string(),
12823
12742
  password: z.string(),
@@ -13027,6 +12946,14 @@ function proposalFormWarningAlertException(message) {
13027
12946
  return new ProposalFormWarningAlertException(message);
13028
12947
  }
13029
12948
 
12949
+ class ProposalGenerationFailedException extends Error {
12950
+ code = 'PROPOSAL_GENERATION_FAILED_EXCEPTION';
12951
+ constructor(message, organizationId, campaignId, leadId) {
12952
+ super(`Proposal generation failed for lead ${leadId} in campaign ${campaignId} in organization ${organizationId}\n\n${message}`);
12953
+ }
12954
+ }
12955
+ const proposalGenerationFailed = (message, leadId, campaignId, organizationId) => new ProposalGenerationFailedException(message, organizationId, campaignId, leadId);
12956
+
13030
12957
  class ProposalSubmitFailedException extends Error {
13031
12958
  code = 'PROPOSAL_SUBMIT_FAILED';
13032
12959
  constructor(message) {
@@ -13111,251 +13038,10 @@ class WaitForFunctionTimeoutError extends Error {
13111
13038
  }
13112
13039
  const waitForFunctionTimeoutError = (fn, timeout) => new WaitForFunctionTimeoutError(fn, timeout);
13113
13040
 
13114
- const proposalSchema = z.object({
13115
- coverLetter: z.string(),
13116
- questionAnswerPairs: questionAnswerPairSchema.array(),
13117
- });
13118
-
13119
- const LogEventTypeEnum = z.enum([
13120
- // Scraper Events
13121
- 'scraperStarted',
13122
- 'scraperCompleted',
13123
- 'scrapeJobStarted',
13124
- 'jobScraped',
13125
- 'jobScrapeFailed',
13126
- 'scrapeJobDetailsStarted',
13127
- 'scrapeJobDetailsCompleted',
13128
- 'scrapeJobDetailsFailed',
13129
- 'jobsIndexed',
13130
- 'jobDuplicateSkipped',
13131
- 'scraperFailed',
13132
- 'jobActivityScraped',
13133
- 'jobActivityScrapeFailed',
13134
- 'leadStatusCheckFailed',
13135
- 'leadStatusUpdated',
13136
- 'scrapeJobsCompleted',
13137
- // Feed Scraper Events
13138
- 'feedScrapeStarted',
13139
- 'feedScrapeCompleted',
13140
- 'feedScrapeFailed',
13141
- 'jobListingScraped',
13142
- // Job Sync & Campaign Matching
13143
- 'jobSyncPublished',
13144
- 'jobSyncReceived',
13145
- 'leadsCreatedAndSynced',
13146
- // Suitability Events
13147
- 'suitabilityPending',
13148
- 'suitabilityProcessing',
13041
+ const usageEventTypeEnum = z.enum([
13149
13042
  'suitabilityComplete',
13150
- 'suitabilityFailed',
13151
- 'manualSuitabilityAnalyzed',
13152
- // Proposal Events
13153
- 'proposalProcessing',
13154
13043
  'proposalComplete',
13155
- 'proposalFailed',
13156
- 'manualProposalGenerated',
13157
- // Bidding Events
13158
- 'biddingProcessing',
13159
13044
  'biddingComplete',
13160
- 'biddingFailed',
13161
- 'biddingSkipped',
13162
- 'biddingPending',
13163
- 'biddingRetry',
13164
- 'biddingInsufficientConnects',
13165
- 'biddingWarningAlert',
13166
- 'biddingRejected',
13167
- 'biddingRejectedWithFeedback',
13168
- 'checkSuitableLeadFeedbackStatus',
13169
- 'biddingApproved',
13170
- // System/Generic Events
13171
- 'errorLogged',
13172
- 'cloudTaskRetry',
13173
- 'manualLeadEdited',
13174
- 'leadArchived',
13175
- 'auditTrailLogged',
13176
- // Account Events
13177
- 'scraperAccountError',
13178
- ]);
13179
- const logEventSchema = z.object({
13180
- // The type of event (use a z.enum if possible)
13181
- type: LogEventTypeEnum, // e.g. "suitability-failed", "proposal-generated"
13182
- // The service that triggered the event
13183
- source: z.string(), // e.g. "lancer-agents", "lancer-bidding"
13184
- // Optional: Allow logging non-lead events in the future
13185
- resourceType: z.string().default('lead'), // e.g. "lead", "campaign", "user"
13186
- // ID of the resource (primary entity affected)
13187
- resourceId: z.string().nullable(), // fallback if leadId is not applicable
13188
- // Lead-level metadata
13189
- organizationId: z.string().nullable(),
13190
- userId: z.string().nullable(),
13191
- campaignId: z.string().nullable(),
13192
- leadId: z.string().nullable(),
13193
- // Reason or message for the event
13194
- reason: z.string().nullable(),
13195
- // Generic metadata (stacktrace, score, raw request, etc.)
13196
- metadata: z.record(z.unknown()).nullable(),
13197
- // Optional timestamp override
13198
- timestamp: z.number(),
13199
- });
13200
- const listingScrapedEventMetadata = objectType({
13201
- listing: feedJobSchemaV2,
13202
- region: regionSchema,
13203
- });
13204
- const scrapeFeedEventMetadata = objectType({
13205
- region: regionSchema,
13206
- error: stringType(),
13207
- });
13208
- const scrapeFeedJobsDetailsStartedEventMetadata = objectType({
13209
- region: regionSchema,
13210
- accounts: z.array(z.object({
13211
- id: stringType(),
13212
- email: stringType(),
13213
- })),
13214
- feedJobsCount: numberType(),
13215
- chunksSize: numberType(),
13216
- });
13217
- const scrapeFeedJobsDetailsCompletedEventMetadata = objectType({
13218
- region: regionSchema,
13219
- accountId: stringType(),
13220
- accountEmail: stringType(),
13221
- feedJobsCount: numberType(),
13222
- duration: stringType(),
13223
- });
13224
- const scrapeFeedJobsDetailsFailedEventMetadata = objectType({
13225
- region: regionSchema,
13226
- accountId: stringType(),
13227
- accountEmail: stringType(),
13228
- error: stringType(),
13229
- duration: stringType(),
13230
- });
13231
- const scrapeJobStartedEventMetadata = objectType({
13232
- listing: feedJobSchemaV2,
13233
- region: regionSchema,
13234
- accountId: stringType(),
13235
- accountEmail: stringType(),
13236
- });
13237
- const scrapeJobFailedEventMetadata = objectType({
13238
- listing: feedJobSchemaV2,
13239
- region: regionSchema,
13240
- error: stringType(),
13241
- });
13242
- const jobActivityScrapedEventMetadata = objectType({
13243
- activity: jobActivitySchema,
13244
- region: regionSchema,
13245
- offsetHour: jobActivityOffsetHourSchema,
13246
- scrapedAt: numberType(),
13247
- });
13248
- const jobActivityScrapeFailedEventMetadata = objectType({
13249
- listing: feedJobSchemaV2,
13250
- region: regionSchema,
13251
- offsetHour: jobActivityOffsetHourSchema,
13252
- });
13253
- const feedScrapeStartedEventMetadata = objectType({
13254
- id: stringType(),
13255
- startTime: numberType(),
13256
- region: regionSchema,
13257
- });
13258
- const feedScrapeCompletedEventMetadata = objectType({
13259
- id: stringType(),
13260
- endTime: numberType(),
13261
- listingCount: numberType(),
13262
- duration: stringType(),
13263
- accountEmail: stringType(),
13264
- region: regionSchema,
13265
- durationMillis: numberType().nullish(),
13266
- });
13267
- const biddingCompletedEventMetadata = objectType({
13268
- biddingAmount: numberType(),
13269
- boosted: booleanType(),
13270
- boostingAmount: numberType(),
13271
- });
13272
- const biddingFailedEventMetadata = objectType({
13273
- error: z.any(),
13274
- });
13275
- const userAccountBiddingExceptionEventMetadata = objectType({
13276
- errorType: z.enum(['insufficientConnects', 'proposalFormWarningAlert']),
13277
- context: z.string().optional(),
13278
- });
13279
- const lancerBiddingExceptionEventMetadata = objectType({
13280
- errorType: z.string(),
13281
- errorMessage: z.string(),
13282
- context: z.string().optional(),
13283
- });
13284
- const leadStatusEventMetadata = objectType({
13285
- campaignId: stringType(),
13286
- organizationId: stringType(),
13287
- leadId: stringType(),
13288
- userId: stringType(),
13289
- metadata: z
13290
- .object({
13291
- status: leadStatusSchema,
13292
- proposalId: stringType().nullable(),
13293
- })
13294
- .optional(),
13295
- reason: z.string().optional(),
13296
- });
13297
- const scraperAccountErrorEventMetadata = objectType({
13298
- accountId: stringType(),
13299
- accountEmail: stringType(),
13300
- errorCode: stringType(),
13301
- errorMessage: stringType(),
13302
- });
13303
- const biddingRejectedWithFeedbackEventMetadata = objectType({
13304
- feedback: z.string(),
13305
- });
13306
- const suitabilityPendingEventMetadataSchema = objectType({
13307
- jobId: z.string(),
13308
- jobUrl: z.string(),
13309
- title: z.string(),
13310
- timestamp: z.number(),
13311
- applyToLeads: z.array(z.object({ leadId: z.string(), campaignId: z.string() })),
13312
- });
13313
- const suitabilityCompleteEventMetadataSchema = objectType({
13314
- suitabilityRating: z.number(),
13315
- suitabilityReason: z.string(),
13316
- agentStatus: z.string().optional(),
13317
- model: z.string().optional(),
13318
- provider: z.string().optional(),
13319
- promptTokens: z.number().optional(),
13320
- completionTokens: z.number().optional(),
13321
- messages: z
13322
- .array(objectType({
13323
- role: z.string(),
13324
- content: z.string(),
13325
- }))
13326
- .optional(),
13327
- jobId: z.string(),
13328
- applyToLeads: z.array(z.object({ leadId: z.string(), campaignId: z.string() })),
13329
- });
13330
- const suitabilityFailedEventMetadataSchema = objectType({
13331
- agentStatus: z.string(),
13332
- reason: z.string(),
13333
- });
13334
- const proposalCompleteEventMetadataSchema = objectType({
13335
- proposal: proposalSchema,
13336
- model: z.string().optional(),
13337
- provider: z.string().optional(),
13338
- promptTokens: z.number().optional(),
13339
- completionTokens: z.number().optional(),
13340
- messages: z
13341
- .array(objectType({
13342
- role: z.string(),
13343
- content: z.string(),
13344
- }))
13345
- .optional(),
13346
- jobId: z.string(),
13347
- isOverallHighestPriorityCampaign: z.boolean(),
13348
- applyToLeads: z.array(z.object({ leadId: z.string(), campaignId: z.string() })),
13349
- });
13350
- const eventLoggerPayloadSchema = unionType([
13351
- logEventSchema,
13352
- arrayType(logEventSchema),
13353
- ]);
13354
-
13355
- const usageEventTypeEnum = LogEventTypeEnum.extract([
13356
- "suitabilityComplete",
13357
- "proposalComplete",
13358
- "biddingComplete",
13359
13045
  ]);
13360
13046
  const usageEventMetadataSchema = objectType({
13361
13047
  campaignId: stringType().nullable(),
@@ -13441,8 +13127,8 @@ const onboardingProgressSchema = z.object({
13441
13127
  startCampaign: z.boolean(),
13442
13128
  });
13443
13129
 
13444
- const organizationTypeSchema = z.enum(["agency", "freelancer"]);
13445
- const organizationTierEnum = z.enum(["free", "premium"]);
13130
+ const organizationTypeSchema = z.enum(['agency', 'freelancer']);
13131
+ const organizationTierEnum = z.enum(['free', 'premium']);
13446
13132
  const limitsSchema = objectType({
13447
13133
  monthlyCredits: numberType(),
13448
13134
  usedCredits: numberType(),
@@ -13470,7 +13156,7 @@ const caseStudySchema = objectType({
13470
13156
  description: stringType(),
13471
13157
  });
13472
13158
  z.object({
13473
- type: z.enum(["freelancer", "agency"]),
13159
+ type: z.enum(['freelancer', 'agency']),
13474
13160
  name: z.string(),
13475
13161
  summary: z.string(),
13476
13162
  coreServices: z.string(),
@@ -13490,10 +13176,10 @@ const createOrganizationSchema = organizationSchema.pick({
13490
13176
  name: true,
13491
13177
  type: true,
13492
13178
  });
13493
- const trackUsageEventTypeEnum = LogEventTypeEnum.extract([
13494
- "suitabilityComplete",
13495
- "proposalComplete",
13496
- "biddingComplete",
13179
+ const trackUsageEventTypeEnum = z.enum([
13180
+ 'suitabilityComplete',
13181
+ 'proposalComplete',
13182
+ 'biddingComplete',
13497
13183
  ]);
13498
13184
  const trackUsagePayloadSchema = objectType({
13499
13185
  event: usageEventTypeEnum,
@@ -13524,8 +13210,8 @@ const organizationSettingsSchema = objectType({
13524
13210
  aiConfig: aiConfigSchema,
13525
13211
  });
13526
13212
  const subscribePayloadSchema = objectType({
13527
- planId: stringType().min(1, "Plan id is required."),
13528
- paymentMethodId: stringType().min(1, "Payment method is required."),
13213
+ planId: stringType().min(1, 'Plan id is required.'),
13214
+ paymentMethodId: stringType().min(1, 'Payment method is required.'),
13529
13215
  toltReferral: stringType().optional(),
13530
13216
  couponCode: stringType().nullish(),
13531
13217
  });
@@ -13862,7 +13548,35 @@ const invoiceSchema = objectType({
13862
13548
  updatedAt: numberType(),
13863
13549
  });
13864
13550
 
13865
- const agentTaskRequestSchema = z.object({
13551
+ const proposalSchema = z.object({
13552
+ coverLetter: z.string(),
13553
+ questionAnswerPairs: questionAnswerPairSchema.array(),
13554
+ });
13555
+
13556
+ const agentGenerateProposalRequestSchema = z.object({
13557
+ userId: z.string().nullable(),
13558
+ organizationId: z.string(),
13559
+ campaignId: z.string(),
13560
+ job: z.object({
13561
+ id: z.string(),
13562
+ title: z.string(),
13563
+ description: z.string(),
13564
+ questions: z.array(z.string()),
13565
+ clientCountry: z.string(),
13566
+ }),
13567
+ isOverallHighestPriorityCampaign: z.boolean().optional(),
13568
+ applyToLeads: z
13569
+ .array(z.object({ leadId: z.string(), campaignId: z.string() }))
13570
+ .optional(),
13571
+ });
13572
+ const agentGenerateProposalResponseSchema = z.object({
13573
+ coverLetter: z.string(),
13574
+ questionAnswerPairs: z.array(z.object({
13575
+ question: z.string(),
13576
+ answer: z.string(),
13577
+ })),
13578
+ });
13579
+ const agentCalculateSuitabilityRequestSchema = z.object({
13866
13580
  userId: z.string().nullable(),
13867
13581
  organizationId: z.string(),
13868
13582
  campaignId: z.string(),
@@ -13888,6 +13602,247 @@ const agentTaskResponseSchema = z.object({
13888
13602
  completionTokens: z.number(),
13889
13603
  });
13890
13604
 
13605
+ const LogEventTypeEnum = z.enum([
13606
+ // Lead Status Events
13607
+ 'leadStatusCheckFailed',
13608
+ 'leadStatusUpdated',
13609
+ // Job Sync & Campaign Matching
13610
+ 'jobSyncPublished',
13611
+ 'jobSyncReceived',
13612
+ 'jobsIndexed',
13613
+ 'leadsCreatedAndSynced',
13614
+ 'jobDuplicateSkipped',
13615
+ // Suitability Events
13616
+ 'suitabilityPending',
13617
+ 'suitabilityProcessing',
13618
+ 'suitabilityComplete',
13619
+ 'suitabilityFailed',
13620
+ 'manualSuitabilityAnalyzed',
13621
+ // Proposal Events
13622
+ 'proposalProcessing',
13623
+ 'proposalComplete',
13624
+ 'proposalFailed',
13625
+ 'manualProposalGenerated',
13626
+ // Bidding Events
13627
+ 'biddingProcessing',
13628
+ 'biddingComplete',
13629
+ 'biddingFailed',
13630
+ 'biddingSkipped',
13631
+ 'biddingPending',
13632
+ 'biddingRetry',
13633
+ 'biddingInsufficientConnects',
13634
+ 'biddingWarningAlert',
13635
+ 'biddingRejected',
13636
+ 'biddingRejectedWithFeedback',
13637
+ 'checkSuitableLeadFeedbackStatus',
13638
+ 'biddingApproved',
13639
+ // System/Generic Events
13640
+ 'errorLogged',
13641
+ 'cloudTaskRetry',
13642
+ 'manualLeadEdited',
13643
+ 'leadArchived',
13644
+ 'auditTrailLogged',
13645
+ // Scraper Events
13646
+ 'scrapeFeedStarted',
13647
+ 'scrapeFeedCompleted',
13648
+ 'scrapeFeedFailed',
13649
+ 'scrapeJobDetailsStarted',
13650
+ 'jobScraped',
13651
+ 'scrapeJobDetailsFailed',
13652
+ 'scrapeJobsDetailsStarted',
13653
+ 'scrapeJobsDetailsCompleted',
13654
+ 'scrapeJobsDetailsFailed',
13655
+ 'scrapeJobsCompleted',
13656
+ 'scraperAccountError',
13657
+ ]);
13658
+ const logEventSchema = z.object({
13659
+ // The type of event (use a z.enum if possible)
13660
+ type: LogEventTypeEnum, // e.g. "suitability-failed", "proposal-generated"
13661
+ // The service that triggered the event
13662
+ source: z.string(), // e.g. "lancer-agents", "lancer-bidding"
13663
+ // Optional: Allow logging non-lead events in the future
13664
+ resourceType: z.string().default('lead'), // e.g. "lead", "campaign", "user"
13665
+ // ID of the resource (primary entity affected)
13666
+ resourceId: z.string().nullable(), // fallback if leadId is not applicable
13667
+ // Lead-level metadata
13668
+ organizationId: z.string().nullable(),
13669
+ userId: z.string().nullable(),
13670
+ campaignId: z.string().nullable(),
13671
+ leadId: z.string().nullable(),
13672
+ // Reason or message for the event
13673
+ reason: z.string().nullable(),
13674
+ // Generic metadata (stacktrace, score, raw request, etc.)
13675
+ metadata: z.record(z.unknown()).nullable(),
13676
+ // Optional timestamp override
13677
+ timestamp: z.number(),
13678
+ });
13679
+ const biddingCompletedEventMetadata = objectType({
13680
+ biddingAmount: numberType(),
13681
+ boosted: booleanType(),
13682
+ boostingAmount: numberType(),
13683
+ });
13684
+ const biddingFailedEventMetadata = objectType({
13685
+ error: z.any(),
13686
+ });
13687
+ const userAccountBiddingExceptionEventMetadata = objectType({
13688
+ errorType: z.enum(['insufficientConnects', 'proposalFormWarningAlert']),
13689
+ context: z.string().optional(),
13690
+ });
13691
+ const lancerBiddingExceptionEventMetadata = objectType({
13692
+ errorType: z.string(),
13693
+ errorMessage: z.string(),
13694
+ context: z.string().optional(),
13695
+ });
13696
+ const leadStatusEventMetadata = objectType({
13697
+ campaignId: stringType(),
13698
+ organizationId: stringType(),
13699
+ leadId: stringType(),
13700
+ userId: stringType(),
13701
+ metadata: z
13702
+ .object({
13703
+ status: leadStatusSchema,
13704
+ proposalId: stringType().nullable(),
13705
+ })
13706
+ .optional(),
13707
+ reason: z.string().optional(),
13708
+ });
13709
+ const biddingRejectedWithFeedbackEventMetadata = objectType({
13710
+ feedback: z.string(),
13711
+ });
13712
+ const suitabilityPendingEventMetadataSchema = objectType({
13713
+ jobId: z.string(),
13714
+ jobUrl: z.string(),
13715
+ title: z.string(),
13716
+ timestamp: z.number(),
13717
+ applyToLeads: z.array(z.object({ leadId: z.string(), campaignId: z.string() })),
13718
+ });
13719
+ const suitabilityCompleteEventMetadataSchema = objectType({
13720
+ suitabilityRating: z.number(),
13721
+ suitabilityReason: z.string(),
13722
+ agentStatus: z.string().optional(),
13723
+ model: z.string().optional(),
13724
+ provider: z.string().optional(),
13725
+ promptTokens: z.number().optional(),
13726
+ completionTokens: z.number().optional(),
13727
+ messages: z
13728
+ .array(objectType({
13729
+ role: z.string(),
13730
+ content: z.string(),
13731
+ }))
13732
+ .optional(),
13733
+ jobId: z.string(),
13734
+ applyToLeads: z.array(z.object({ leadId: z.string(), campaignId: z.string() })),
13735
+ });
13736
+ const suitabilityFailedEventMetadataSchema = objectType({
13737
+ agentStatus: z.string(),
13738
+ reason: z.string(),
13739
+ });
13740
+ const proposalCompleteEventMetadataSchema = objectType({
13741
+ proposal: proposalSchema,
13742
+ model: z.string().optional(),
13743
+ provider: z.string().optional(),
13744
+ promptTokens: z.number().optional(),
13745
+ completionTokens: z.number().optional(),
13746
+ messages: z
13747
+ .array(objectType({
13748
+ role: z.string(),
13749
+ content: z.string(),
13750
+ }))
13751
+ .optional(),
13752
+ jobId: z.string(),
13753
+ isOverallHighestPriorityCampaign: z.boolean(),
13754
+ applyToLeads: z.array(z.object({ leadId: z.string(), campaignId: z.string() })),
13755
+ });
13756
+ const eventLoggerPayloadSchema = unionType([
13757
+ logEventSchema,
13758
+ arrayType(logEventSchema),
13759
+ ]);
13760
+
13761
+ const scrapeFeedStartedEventMetadata = objectType({
13762
+ region: regionSchema,
13763
+ accountId: stringType(),
13764
+ accountEmail: stringType(),
13765
+ });
13766
+ const scrapeFeedCompletedEventMetadata = objectType({
13767
+ region: regionSchema,
13768
+ accountId: stringType(),
13769
+ accountEmail: stringType(),
13770
+ listingsCount: numberType(),
13771
+ duration: stringType(),
13772
+ });
13773
+ const scrapeFeedFailedEventMetadata = objectType({
13774
+ region: regionSchema,
13775
+ accountId: stringType(),
13776
+ accountEmail: stringType(),
13777
+ errorMessage: stringType(),
13778
+ errorCode: stringType(),
13779
+ errorStack: stringType(),
13780
+ });
13781
+ const scrapeJobDetailsStartedEventMetadata = objectType({
13782
+ listing: jobListingSchema,
13783
+ region: regionSchema,
13784
+ accountId: stringType(),
13785
+ accountEmail: stringType(),
13786
+ });
13787
+ const jobScrapedEventMetadata = objectType({
13788
+ job: upworkJobSchema,
13789
+ region: regionSchema,
13790
+ duration: stringType(),
13791
+ });
13792
+ const scrapeJobDetailsFailedEventMetadata = objectType({
13793
+ listing: jobListingSchema,
13794
+ region: regionSchema,
13795
+ error: stringType(),
13796
+ });
13797
+ const scrapeJobsDetailsStartedEventMetadata = objectType({
13798
+ region: regionSchema,
13799
+ accountIds: arrayType(stringType()),
13800
+ accountEmails: arrayType(stringType()),
13801
+ jobListingsCount: numberType(),
13802
+ });
13803
+ const scrapeJobsDetailsCompletedEventMetadata = objectType({
13804
+ region: regionSchema,
13805
+ feedScraperAccountId: stringType(),
13806
+ feedScraperAccountEmail: stringType(),
13807
+ uniqueJobsFound: numberType(),
13808
+ duration: stringType(),
13809
+ successfullyScrapedJobsCount: numberType(),
13810
+ failedToScrapeJobsCount: numberType(),
13811
+ });
13812
+ const scrapeJobsDetailsFailedEventMetadata = objectType({
13813
+ region: regionSchema,
13814
+ accountId: stringType(),
13815
+ accountEmail: stringType(),
13816
+ errorMessage: stringType(),
13817
+ errorCode: stringType(),
13818
+ errorStack: stringType(),
13819
+ });
13820
+ const scrapeJobsCompletedEventMetadata = objectType({
13821
+ region: regionSchema,
13822
+ feedScraperAccountId: stringType(),
13823
+ feedScraperAccountEmail: stringType(),
13824
+ uniqueJobsFound: numberType(),
13825
+ duration: stringType(),
13826
+ successfullyScrapedJobsCount: numberType(),
13827
+ failedToScrapeJobsCount: numberType(),
13828
+ });
13829
+ const jobActivityScrapedEventMetadata = objectType({
13830
+ activity: jobActivitySchema,
13831
+ region: regionSchema,
13832
+ offsetHour: jobActivityOffsetHourSchema,
13833
+ scrapedAt: numberType(),
13834
+ });
13835
+ const jobActivityScrapeFailedEventMetadata = objectType({
13836
+ listing: jobListingSchema,
13837
+ region: regionSchema,
13838
+ offsetHour: jobActivityOffsetHourSchema,
13839
+ });
13840
+ const scraperAccountErrorEventMetadata = objectType({
13841
+ errorStack: stringType(),
13842
+ errorCode: stringType(),
13843
+ errorMessage: stringType(),
13844
+ });
13845
+
13891
13846
  const planStripeMetadataSchema = objectType({
13892
13847
  id: stringType().regex(/^prod_[a-zA-Z0-9]+$/),
13893
13848
  name: stringType(),
@@ -13932,7 +13887,7 @@ const scrapeUserProfileRequestSchema = objectType({
13932
13887
  profileUrl: stringType(),
13933
13888
  });
13934
13889
  const scrapeJobPayloadSchema = objectType({
13935
- listing: feedJobSchema,
13890
+ listing: jobListingSchema,
13936
13891
  });
13937
13892
  const processFeedPayloadSchema = objectType({
13938
13893
  region: regionSchema,
@@ -13986,8 +13941,8 @@ const upworkProfileSchema = objectType({
13986
13941
  });
13987
13942
 
13988
13943
  class NoScraperAccountAvailableException extends Error {
13989
- code = "NO_SCRAPER_ACCOUNT_AVAILABLE";
13990
- constructor(message = "No scraper account available.") {
13944
+ code = 'NO_SCRAPER_ACCOUNT_AVAILABLE';
13945
+ constructor(message = 'No scraper account available.') {
13991
13946
  super(message);
13992
13947
  }
13993
13948
  }
@@ -13995,8 +13950,8 @@ const noScraperAccountAvailableException = (message) => {
13995
13950
  return new NoScraperAccountAvailableException(message);
13996
13951
  };
13997
13952
  class OpenPageException extends Error {
13998
- code = "OPEN_PAGE_FAILED";
13999
- constructor(message = "Failed to open page.") {
13953
+ code = 'OPEN_PAGE_FAILED';
13954
+ constructor(message = 'Failed to open page.') {
14000
13955
  super(message);
14001
13956
  }
14002
13957
  }
@@ -14004,14 +13959,32 @@ const openPageException = (message) => {
14004
13959
  return new OpenPageException(message);
14005
13960
  };
14006
13961
  class FeedScrapeException extends Error {
14007
- code = "FEED_SCRAPE_FAILED";
14008
- constructor(message = "Feed scrape failed.") {
13962
+ code = 'FEED_SCRAPE_FAILED';
13963
+ constructor(message = 'Feed scrape failed.') {
14009
13964
  super(message);
14010
13965
  }
14011
13966
  }
14012
13967
  const feedScrapeException = (message) => {
14013
13968
  return new FeedScrapeException(message);
14014
13969
  };
13970
+ class ParseJobListingsException extends Error {
13971
+ code = 'PARSE_JOB_LISTINGS_FAILED';
13972
+ constructor(message = 'Failed to parse job listings.') {
13973
+ super(message);
13974
+ }
13975
+ }
13976
+ const parseJobListingsException = (message) => {
13977
+ return new ParseJobListingsException(message);
13978
+ };
13979
+ class ScrapeJobDetailsException extends Error {
13980
+ code = 'SCRAPE_JOB_DETAILS_FAILED';
13981
+ constructor(jobListing) {
13982
+ super(`Failed to scrape job details for ${JSON.stringify(jobListing)}.`);
13983
+ }
13984
+ }
13985
+ const scrapeJobDetailsException = (jobListing) => {
13986
+ return new ScrapeJobDetailsException(jobListing);
13987
+ };
14015
13988
 
14016
13989
  const systemPromptSchema = objectType({
14017
13990
  suitability: stringType(),
@@ -14555,12 +14528,15 @@ exports.NoGoogleOAuthTokensFoundException = NoGoogleOAuthTokensFoundException;
14555
14528
  exports.NoScraperAccountAvailableException = NoScraperAccountAvailableException;
14556
14529
  exports.OpenPageException = OpenPageException;
14557
14530
  exports.ParseConnectsException = ParseConnectsException;
14531
+ exports.ParseJobListingsException = ParseJobListingsException;
14558
14532
  exports.ProposalErrorAlertException = ProposalErrorAlertException;
14559
14533
  exports.ProposalFormWarningAlertException = ProposalFormWarningAlertException;
14534
+ exports.ProposalGenerationFailedException = ProposalGenerationFailedException;
14560
14535
  exports.ProposalSubmitFailedException = ProposalSubmitFailedException;
14561
14536
  exports.PuppeteerConnectionErrorException = PuppeteerConnectionErrorException;
14562
14537
  exports.QuestionPairNotMatchingException = QuestionPairNotMatchingException;
14563
14538
  exports.ROUTES = ROUTES;
14539
+ exports.ScrapeJobDetailsException = ScrapeJobDetailsException;
14564
14540
  exports.SelectAgencyException = SelectAgencyException;
14565
14541
  exports.SelectContractorException = SelectContractorException;
14566
14542
  exports.SelectorNotFoundError = SelectorNotFoundError;
@@ -14574,8 +14550,10 @@ exports.accountStatusOrder = accountStatusOrder;
14574
14550
  exports.accountStatusSchema = accountStatusSchema;
14575
14551
  exports.agencyBidPayloadSchema = agencyBidPayloadSchema;
14576
14552
  exports.agencyBidProposalDataSchema = agencyBidProposalDataSchema;
14553
+ exports.agentCalculateSuitabilityRequestSchema = agentCalculateSuitabilityRequestSchema;
14554
+ exports.agentGenerateProposalRequestSchema = agentGenerateProposalRequestSchema;
14555
+ exports.agentGenerateProposalResponseSchema = agentGenerateProposalResponseSchema;
14577
14556
  exports.agentStatusSchema = agentStatusSchema;
14578
- exports.agentTaskRequestSchema = agentTaskRequestSchema;
14579
14557
  exports.agentTaskResponseSchema = agentTaskResponseSchema;
14580
14558
  exports.aiConfigSchema = aiConfigSchema;
14581
14559
  exports.bidConfigSchema = bidConfigSchema;
@@ -14647,10 +14625,7 @@ exports.experienceLevelEnum = experienceLevelEnum;
14647
14625
  exports.externalProxySchema = externalProxySchema;
14648
14626
  exports.failedToParseNuxtJobException = failedToParseNuxtJobException;
14649
14627
  exports.feedJobSchema = feedJobSchema;
14650
- exports.feedJobSchemaV2 = feedJobSchemaV2;
14651
- exports.feedScrapeCompletedEventMetadata = feedScrapeCompletedEventMetadata;
14652
14628
  exports.feedScrapeException = feedScrapeException;
14653
- exports.feedScrapeStartedEventMetadata = feedScrapeStartedEventMetadata;
14654
14629
  exports.filterOptionItemSchema = filterOptionItemSchema;
14655
14630
  exports.filterOptionsResponseSchema = filterOptionsResponseSchema;
14656
14631
  exports.findLeadsRequestSchema = findLeadsRequestSchema;
@@ -14694,7 +14669,9 @@ exports.jobActivityUpdateSchema = jobActivityUpdateSchema;
14694
14669
  exports.jobDetailsStateSchema = jobDetailsStateSchema;
14695
14670
  exports.jobFiltersSchema = jobFiltersSchema;
14696
14671
  exports.jobIsPrivateException = jobIsPrivateException;
14672
+ exports.jobListingSchema = jobListingSchema;
14697
14673
  exports.jobQualityScoreSchema = jobQualityScoreSchema;
14674
+ exports.jobScrapedEventMetadata = jobScrapedEventMetadata;
14698
14675
  exports.jobSkillsSchema = jobSkillsSchema;
14699
14676
  exports.jobStatusOrder = jobStatusOrder;
14700
14677
  exports.lancerBiddingExceptionEventMetadata = lancerBiddingExceptionEventMetadata;
@@ -14705,7 +14682,6 @@ exports.leadStatusActivitySchema = leadStatusActivitySchema;
14705
14682
  exports.leadStatusEventMetadata = leadStatusEventMetadata;
14706
14683
  exports.leadStatusSchema = leadStatusSchema;
14707
14684
  exports.limitsSchema = limitsSchema;
14708
- exports.listingScrapedEventMetadata = listingScrapedEventMetadata;
14709
14685
  exports.logEventSchema = logEventSchema;
14710
14686
  exports.loginFailedException = loginFailedException;
14711
14687
  exports.loginSchema = loginSchema;
@@ -14731,6 +14707,7 @@ exports.organizationSettingsSchema = organizationSettingsSchema;
14731
14707
  exports.organizationTierEnum = organizationTierEnum;
14732
14708
  exports.organizationTypeSchema = organizationTypeSchema;
14733
14709
  exports.parseConnectsException = parseConnectsException;
14710
+ exports.parseJobListingsException = parseJobListingsException;
14734
14711
  exports.passwordSchema = passwordSchema;
14735
14712
  exports.paymentTypeEnum = paymentTypeEnum;
14736
14713
  exports.periodTypeSchema = periodTypeSchema;
@@ -14745,6 +14722,7 @@ exports.projectDurationEnum = projectDurationEnum;
14745
14722
  exports.proposalCompleteEventMetadataSchema = proposalCompleteEventMetadataSchema;
14746
14723
  exports.proposalErrorAlertException = proposalErrorAlertException;
14747
14724
  exports.proposalFormWarningAlertException = proposalFormWarningAlertException;
14725
+ exports.proposalGenerationFailed = proposalGenerationFailed;
14748
14726
  exports.proposalSchema = proposalSchema;
14749
14727
  exports.proposalSentActivitySchema = proposalSentActivitySchema;
14750
14728
  exports.proposalSubmitFailedException = proposalSubmitFailedException;
@@ -14766,15 +14744,19 @@ exports.registerSchema = registerSchema;
14766
14744
  exports.requiredEarningsEnum = requiredEarningsEnum;
14767
14745
  exports.requiredJSSEnum = requiredJSSEnum;
14768
14746
  exports.savedSearchSchema = savedSearchSchema;
14769
- exports.scrapeFeedEventMetadata = scrapeFeedEventMetadata;
14770
- exports.scrapeFeedJobsDetailsCompletedEventMetadata = scrapeFeedJobsDetailsCompletedEventMetadata;
14771
- exports.scrapeFeedJobsDetailsFailedEventMetadata = scrapeFeedJobsDetailsFailedEventMetadata;
14772
- exports.scrapeFeedJobsDetailsStartedEventMetadata = scrapeFeedJobsDetailsStartedEventMetadata;
14747
+ exports.scrapeFeedCompletedEventMetadata = scrapeFeedCompletedEventMetadata;
14748
+ exports.scrapeFeedFailedEventMetadata = scrapeFeedFailedEventMetadata;
14773
14749
  exports.scrapeFeedResultSchema = scrapeFeedResultSchema;
14750
+ exports.scrapeFeedStartedEventMetadata = scrapeFeedStartedEventMetadata;
14774
14751
  exports.scrapeJobActivityPayloadSchema = scrapeJobActivityPayloadSchema;
14775
- exports.scrapeJobFailedEventMetadata = scrapeJobFailedEventMetadata;
14752
+ exports.scrapeJobDetailsException = scrapeJobDetailsException;
14753
+ exports.scrapeJobDetailsFailedEventMetadata = scrapeJobDetailsFailedEventMetadata;
14754
+ exports.scrapeJobDetailsStartedEventMetadata = scrapeJobDetailsStartedEventMetadata;
14776
14755
  exports.scrapeJobPayloadSchema = scrapeJobPayloadSchema;
14777
- exports.scrapeJobStartedEventMetadata = scrapeJobStartedEventMetadata;
14756
+ exports.scrapeJobsCompletedEventMetadata = scrapeJobsCompletedEventMetadata;
14757
+ exports.scrapeJobsDetailsCompletedEventMetadata = scrapeJobsDetailsCompletedEventMetadata;
14758
+ exports.scrapeJobsDetailsFailedEventMetadata = scrapeJobsDetailsFailedEventMetadata;
14759
+ exports.scrapeJobsDetailsStartedEventMetadata = scrapeJobsDetailsStartedEventMetadata;
14778
14760
  exports.scrapePayloadSchema = scrapePayloadSchema;
14779
14761
  exports.scrapeResultSchema = scrapeResultSchema;
14780
14762
  exports.scrapeUserProfileRequestSchema = scrapeUserProfileRequestSchema;