lancer-shared 1.2.15 → 1.2.17

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.
@@ -5280,15 +5280,6 @@ const updateScraperAccountSchema = scraperAccountSchema
5280
5280
  })
5281
5281
  .partial();
5282
5282
 
5283
- const systemPromptSchema = objectType({
5284
- suitability: stringType(),
5285
- proposal: stringType(),
5286
- questionHandlingGuidelines: stringType(),
5287
- });
5288
- const systemSchema = objectType({
5289
- prompts: systemPromptSchema,
5290
- });
5291
-
5292
5283
  const agentStatusSchema = z.enum([
5293
5284
  "suitabilityPending",
5294
5285
  "suitabilityProcessing",
@@ -5358,6 +5349,300 @@ const findLeadsResponseSchema = z.object({
5358
5349
  error: z.string().optional(),
5359
5350
  });
5360
5351
 
5352
+ const LogEventTypeEnum = z.enum([
5353
+ // Scraper Events
5354
+ "scraperStarted",
5355
+ "scraperCompleted",
5356
+ "jobScraped",
5357
+ "jobScrapeFailed",
5358
+ "jobsIndexed",
5359
+ "jobDuplicateSkipped",
5360
+ "scraperFailed",
5361
+ "jobActivityScraped",
5362
+ "jobActivityScrapeFailed",
5363
+ "leadStatusChecked",
5364
+ "leadStatusCheckFailed",
5365
+ "leadStatusUpdated",
5366
+ // Feed Scraper Events
5367
+ "feedScrapeStarted",
5368
+ "feedScrapeCompleted",
5369
+ "feedScrapeFailed",
5370
+ "jobListingScraped",
5371
+ // Job Sync & Campaign Matching
5372
+ "jobSyncPublished",
5373
+ "jobSyncReceived",
5374
+ "leadsCreatedAndSynced",
5375
+ // Suitability Events
5376
+ "suitabilityPending",
5377
+ "suitabilityProcessing",
5378
+ "suitabilityComplete",
5379
+ "suitabilityFailed",
5380
+ "manualSuitabilityAnalyzed",
5381
+ // Proposal Events
5382
+ "proposalProcessing",
5383
+ "proposalComplete",
5384
+ "proposalFailed",
5385
+ "manualProposalGenerated",
5386
+ // Bidding Events
5387
+ "biddingProcessing",
5388
+ "biddingComplete",
5389
+ "biddingFailed",
5390
+ "biddingSkipped",
5391
+ "biddingPending",
5392
+ "biddingRetry",
5393
+ "biddingInsufficientConnects",
5394
+ "biddingWarningAlert",
5395
+ // System/Generic Events
5396
+ "errorLogged",
5397
+ "cloudTaskRetry",
5398
+ "manualLeadEdited",
5399
+ "leadArchived",
5400
+ "auditTrailLogged",
5401
+ // Model Chain Events
5402
+ "modelFailed",
5403
+ ]);
5404
+ const logEventSchema = z.object({
5405
+ // The type of event (use a z.enum if possible)
5406
+ type: LogEventTypeEnum, // e.g. "suitability-failed", "proposal-generated"
5407
+ // The service that triggered the event
5408
+ source: z.string(), // e.g. "lancer-agents", "lancer-bidding"
5409
+ // Optional: Allow logging non-lead events in the future
5410
+ resourceType: z.string().default("lead"), // e.g. "lead", "campaign", "user"
5411
+ // ID of the resource (primary entity affected)
5412
+ resourceId: z.string().nullable(), // fallback if leadId is not applicable
5413
+ // Lead-level metadata
5414
+ organizationId: z.string().nullable(),
5415
+ userId: z.string().nullable(),
5416
+ campaignId: z.string().nullable(),
5417
+ leadId: z.string().nullable(),
5418
+ // Reason or message for the event
5419
+ reason: z.string().nullable(),
5420
+ // Generic metadata (stacktrace, score, raw request, etc.)
5421
+ metadata: z.record(z.unknown()).nullable(),
5422
+ // Optional timestamp override
5423
+ timestamp: z.number(),
5424
+ });
5425
+ const listingScrapedEventMetadata = objectType({
5426
+ listing: jobListingSchema,
5427
+ region: regionSchema,
5428
+ });
5429
+ const jobActivityScrapedEventMetadata = objectType({
5430
+ activity: jobActivitySchema,
5431
+ region: regionSchema,
5432
+ offsetHour: jobActivityOffsetHourSchema,
5433
+ scrapedAt: numberType(),
5434
+ });
5435
+ const jobActivityScrapeFailedEventMetadata = objectType({
5436
+ listing: jobListingSchema,
5437
+ region: regionSchema,
5438
+ offsetHour: jobActivityOffsetHourSchema,
5439
+ });
5440
+ const feedScrapeStartedEventMetadata = objectType({
5441
+ id: stringType(),
5442
+ startTime: numberType(),
5443
+ region: regionSchema,
5444
+ });
5445
+ const feedScrapeCompletedEventMetadata = objectType({
5446
+ id: stringType(),
5447
+ endTime: numberType(),
5448
+ region: regionSchema,
5449
+ accountUsername: stringType(),
5450
+ });
5451
+ const biddingCompletedEventMetadata = objectType({
5452
+ biddingAmount: numberType(),
5453
+ boosted: booleanType(),
5454
+ boostingAmount: numberType(),
5455
+ });
5456
+ const biddingFailedEventMetadata = objectType({
5457
+ errorType: stringType(),
5458
+ errorMessage: stringType(),
5459
+ context: z.string().optional(),
5460
+ });
5461
+ const biddingWarningAlertEventMetadata = objectType({
5462
+ warningMessage: stringType(),
5463
+ });
5464
+ const biddingRetryEventMetadata = objectType({
5465
+ errorMessage: stringType(),
5466
+ });
5467
+ const leadStatusEventMetadata = objectType({
5468
+ campaignId: stringType(),
5469
+ organizationId: stringType(),
5470
+ leadId: stringType(),
5471
+ userId: stringType(),
5472
+ metadata: z.object({
5473
+ status: leadStatusSchema,
5474
+ proposalId: stringType().nullable(),
5475
+ }),
5476
+ });
5477
+
5478
+ const billingStripeMetadataSchema = objectType({
5479
+ customer: objectType({ id: stringType().nullable() }),
5480
+ });
5481
+ const billingSchema = objectType({
5482
+ savedCard: booleanType(),
5483
+ stripe: billingStripeMetadataSchema,
5484
+ });
5485
+
5486
+ const subscriptionStatusEnum = z.enum([
5487
+ "active",
5488
+ "trialing",
5489
+ "cancelled",
5490
+ "paused",
5491
+ "payment_pending",
5492
+ "payment_failed",
5493
+ ]);
5494
+ const subscriptionSourceEnum = z.enum(["stripe", "manual"]);
5495
+ const subscriptionStripeMetadataItemSchema = objectType({
5496
+ id: stringType(),
5497
+ price: objectType({
5498
+ id: stringType(),
5499
+ }),
5500
+ });
5501
+ const subscriptionStripeMetadataSchema = objectType({
5502
+ id: stringType(),
5503
+ items: arrayType(subscriptionStripeMetadataItemSchema),
5504
+ });
5505
+ const subscriptionSchema = objectType({
5506
+ planId: stringType(),
5507
+ status: subscriptionStatusEnum,
5508
+ startedAt: numberType(),
5509
+ currentPeriodEnd: numberType(),
5510
+ stripe: subscriptionStripeMetadataSchema,
5511
+ source: subscriptionSourceEnum,
5512
+ });
5513
+
5514
+ const organizationMemberRoleEnum = z.enum(["admin", "member"]);
5515
+ const organizationMemberSchema = objectType({
5516
+ role: organizationMemberRoleEnum,
5517
+ joinedAt: numberType(),
5518
+ invitedBy: stringType(),
5519
+ });
5520
+
5521
+ const onboardingProgressSchema = z.object({
5522
+ profileSetup: z.number(),
5523
+ campaignCreated: z.number(),
5524
+ filtersAdded: z.number(),
5525
+ rulesConfigured: z.number(), // 2 is completed, 1 is when the system generates ai config
5526
+ automationEnabled: z.number(),
5527
+ });
5528
+
5529
+ const bidConfigSchema = objectType({
5530
+ agencyName: stringType().nullable(),
5531
+ bidderId: stringType().nullable(),
5532
+ contractorName: stringType().nullable(),
5533
+ specialisedProfile: stringType().nullable(),
5534
+ });
5535
+ const organizationTypeSchema = z.enum(["agency", "freelancer"]);
5536
+ const organizationTierEnum = z.enum(["free", "premium"]);
5537
+ const limitsSchema = objectType({
5538
+ monthlyCredits: numberType(),
5539
+ usedCredits: numberType(),
5540
+ extraCredits: numberType(),
5541
+ });
5542
+ const organizationSchema = objectType({
5543
+ id: stringType(),
5544
+ name: stringType(),
5545
+ type: organizationTypeSchema,
5546
+ tierId: organizationTierEnum,
5547
+ subscription: subscriptionSchema.nullable(),
5548
+ bidConfig: bidConfigSchema,
5549
+ active: booleanType(),
5550
+ limits: limitsSchema,
5551
+ billing: billingSchema.nullable(),
5552
+ createdAt: numberType(),
5553
+ updatedAt: numberType(),
5554
+ });
5555
+ const createOrganizationSchema = organizationSchema.pick({
5556
+ name: true,
5557
+ type: true,
5558
+ tierId: true,
5559
+ });
5560
+ const trackUsageEventTypeEnum = LogEventTypeEnum.extract([
5561
+ "suitabilityComplete",
5562
+ "proposalComplete",
5563
+ "biddingComplete",
5564
+ ]);
5565
+ const trackUsagePayloadSchema = objectType({
5566
+ event: trackUsageEventTypeEnum,
5567
+ campaignId: stringType().nullish(),
5568
+ });
5569
+ const aiConfigSchema = objectType({
5570
+ suitabilityRules: stringType().nullable(),
5571
+ coverLetterRules: stringType().nullable(),
5572
+ coverLetterTemplate: stringType().nullable(),
5573
+ questionRules: stringType().nullable(),
5574
+ });
5575
+ const notificationConfigSchema = objectType({
5576
+ emailEnabled: booleanType(),
5577
+ discordWebhookUrl: stringType().nullable(),
5578
+ slackWebhookUrl: stringType().nullable(),
5579
+ });
5580
+ const organizationSettingsSchema = objectType({
5581
+ aiConfig: aiConfigSchema,
5582
+ notifications: notificationConfigSchema,
5583
+ });
5584
+ const subscribePayloadSchema = objectType({
5585
+ planId: stringType().min(1, "Plan id is required."),
5586
+ paymentMethodId: stringType().min(1, "Payment method is required."),
5587
+ });
5588
+
5589
+ const systemPromptSchema = objectType({
5590
+ suitability: stringType(),
5591
+ proposal: stringType(),
5592
+ questionHandlingGuidelines: stringType(),
5593
+ });
5594
+ const systemSchema = objectType({
5595
+ prompts: systemPromptSchema,
5596
+ });
5597
+
5598
+ const agentTaskRequestSchema = z.object({
5599
+ organizationId: z.string(),
5600
+ userId: z.string().optional(),
5601
+ campaignId: z.string().optional(),
5602
+ leadId: z.string(),
5603
+ aiConfig: aiConfigSchema,
5604
+ lead: leadSchema,
5605
+ });
5606
+ const testSystemPromptsRequestSchema = z.object({
5607
+ organizationId: z.string(),
5608
+ modelSuitability: z.string(),
5609
+ modelProposal: z.string(),
5610
+ systemPrompt: systemPromptSchema,
5611
+ aiConfig: aiConfigSchema,
5612
+ lead: leadSchema,
5613
+ });
5614
+ const suitabilityRatingSchema = z.object({
5615
+ rating: z.number(),
5616
+ reason: z.string(),
5617
+ });
5618
+ const proposalSchema = z.object({
5619
+ coverLetter: z.string(),
5620
+ questionAnswerPairs: questionAnswerPairSchema.array(),
5621
+ });
5622
+ const agentTaskResponseSchema = z.object({
5623
+ result: z.union([suitabilityRatingSchema, proposalSchema]),
5624
+ model: z.string(),
5625
+ provider: z.string(),
5626
+ promptTokens: z.number(),
5627
+ completionTokens: z.number(),
5628
+ });
5629
+ const testSystemPromptsResponseSchema = z.object({
5630
+ proposal: z.object({
5631
+ result: proposalSchema,
5632
+ model: z.string(),
5633
+ provider: z.string(),
5634
+ promptTokens: z.number(),
5635
+ completionTokens: z.number(),
5636
+ }),
5637
+ suitability: z.object({
5638
+ result: suitabilityRatingSchema,
5639
+ model: z.string(),
5640
+ provider: z.string(),
5641
+ promptTokens: z.number(),
5642
+ completionTokens: z.number(),
5643
+ }),
5644
+ });
5645
+
5361
5646
  const bidPayloadProposalDataSchema = z.object({
5362
5647
  coverLetter: z.string(),
5363
5648
  questionAnswerPairs: questionAnswerPairSchema.array().nullable(),
@@ -5521,248 +5806,80 @@ const campaignActivitySchema = z.object({
5521
5806
  jobUrl: true,
5522
5807
  }),
5523
5808
  });
5524
- const campaignActivityCreateSchema = campaignActivitySchema.pick({
5525
- status: true,
5526
- lead: true,
5527
- });
5528
-
5529
- const campaignAIMetricsSchema = z.object({
5530
- leadsAnalyzed: z.number(),
5531
- leadsBidded: z.number(),
5532
- connectsSaved: z.number(),
5533
- });
5534
-
5535
- const LogEventTypeEnum = z.enum([
5536
- // Scraper Events
5537
- "scraperStarted",
5538
- "scraperCompleted",
5539
- "jobScraped",
5540
- "jobScrapeFailed",
5541
- "jobsIndexed",
5542
- "jobDuplicateSkipped",
5543
- "scraperFailed",
5544
- "jobActivityScraped",
5545
- "jobActivityScrapeFailed",
5546
- "leadStatusChecked",
5547
- "leadStatusCheckFailed",
5548
- "leadStatusUpdated",
5549
- // Feed Scraper Events
5550
- "feedScrapeStarted",
5551
- "feedScrapeCompleted",
5552
- "feedScrapeFailed",
5553
- "jobListingScraped",
5554
- // Job Sync & Campaign Matching
5555
- "jobSyncPublished",
5556
- "jobSyncReceived",
5557
- "leadsCreatedAndSynced",
5558
- // Suitability Events
5559
- "suitabilityPending",
5560
- "suitabilityProcessing",
5561
- "suitabilityComplete",
5562
- "suitabilityFailed",
5563
- "manualSuitabilityAnalyzed",
5564
- // Proposal Events
5565
- "proposalProcessing",
5566
- "proposalComplete",
5567
- "proposalFailed",
5568
- "manualProposalGenerated",
5569
- // Bidding Events
5570
- "biddingProcessing",
5571
- "biddingComplete",
5572
- "biddingFailed",
5573
- "biddingSkipped",
5574
- "biddingPending",
5575
- "biddingRetry",
5576
- "biddingInsufficientConnects",
5577
- "biddingWarningAlert",
5578
- // System/Generic Events
5579
- "errorLogged",
5580
- "cloudTaskRetry",
5581
- "manualLeadEdited",
5582
- "leadArchived",
5583
- "auditTrailLogged",
5584
- // Knowledge Base Events
5585
- "knowledgeBaseGenerationComplete",
5586
- "knowledgeBaseGenerationFailed",
5587
- // Model Chain Events
5588
- "modelFailed",
5589
- ]);
5590
- const logEventSchema = z.object({
5591
- // The type of event (use a z.enum if possible)
5592
- type: LogEventTypeEnum, // e.g. "suitability-failed", "proposal-generated"
5593
- // The service that triggered the event
5594
- source: z.string(), // e.g. "lancer-agents", "lancer-bidding"
5595
- // Optional: Allow logging non-lead events in the future
5596
- resourceType: z.string().default("lead"), // e.g. "lead", "campaign", "user"
5597
- // ID of the resource (primary entity affected)
5598
- resourceId: z.string().nullable(), // fallback if leadId is not applicable
5599
- // Lead-level metadata
5600
- organizationId: z.string().nullable(),
5601
- userId: z.string().nullable(),
5602
- campaignId: z.string().nullable(),
5603
- leadId: z.string().nullable(),
5604
- // Reason or message for the event
5605
- reason: z.string().nullable(),
5606
- // Generic metadata (stacktrace, score, raw request, etc.)
5607
- metadata: z.record(z.unknown()).nullable(),
5608
- // Optional timestamp override
5609
- timestamp: z.number(),
5610
- });
5611
- const listingScrapedEventMetadata = objectType({
5612
- listing: jobListingSchema,
5613
- region: regionSchema,
5614
- });
5615
- const jobActivityScrapedEventMetadata = objectType({
5616
- activity: jobActivitySchema,
5617
- region: regionSchema,
5618
- offsetHour: jobActivityOffsetHourSchema,
5619
- scrapedAt: numberType(),
5620
- });
5621
- const jobActivityScrapeFailedEventMetadata = objectType({
5622
- listing: jobListingSchema,
5623
- region: regionSchema,
5624
- offsetHour: jobActivityOffsetHourSchema,
5625
- });
5626
- const feedScrapeStartedEventMetadata = objectType({
5627
- id: stringType(),
5628
- startTime: numberType(),
5629
- region: regionSchema,
5630
- });
5631
- const feedScrapeCompletedEventMetadata = objectType({
5632
- id: stringType(),
5633
- endTime: numberType(),
5634
- region: regionSchema,
5635
- accountUsername: stringType(),
5636
- });
5637
- const biddingCompletedEventMetadata = objectType({
5638
- biddingAmount: numberType(),
5639
- boosted: booleanType(),
5640
- boostingAmount: numberType(),
5641
- });
5642
- const biddingFailedEventMetadata = objectType({
5643
- errorType: stringType(),
5644
- errorMessage: stringType(),
5645
- context: z.string().optional(),
5646
- });
5647
- const biddingWarningAlertEventMetadata = objectType({
5648
- warningMessage: stringType(),
5649
- });
5650
- const biddingRetryEventMetadata = objectType({
5651
- errorMessage: stringType(),
5652
- });
5653
- const leadStatusEventMetadata = objectType({
5654
- campaignId: stringType(),
5655
- organizationId: stringType(),
5656
- leadId: stringType(),
5657
- userId: stringType(),
5658
- metadata: z.object({
5659
- status: leadStatusSchema,
5660
- proposalId: stringType().nullable(),
5661
- }),
5662
- });
5663
-
5664
- const subscriptionStatusEnum = z.enum([
5665
- "active",
5666
- "trialing",
5667
- "cancelled",
5668
- "paused",
5669
- ]);
5670
- const subscriptionSourceEnum = z.enum(["stripe", "manual"]);
5671
- const organizationSubscriptionSchema = objectType({
5672
- tierId: stringType(),
5673
- status: subscriptionStatusEnum,
5674
- creditsRemaining: numberType(),
5675
- startedAt: numberType(),
5676
- currentPeriodEnd: numberType(),
5677
- stripeSubscriptionId: stringType(),
5678
- source: subscriptionSourceEnum,
5679
- });
5680
-
5681
- const organizationMemberRoleEnum = z.enum(["admin", "member"]);
5682
- const organizationMemberSchema = objectType({
5683
- role: organizationMemberRoleEnum,
5684
- joinedAt: numberType(),
5685
- invitedBy: stringType(),
5809
+ const campaignActivityCreateSchema = campaignActivitySchema.pick({
5810
+ status: true,
5811
+ lead: true,
5686
5812
  });
5687
5813
 
5688
- const onboardingProgressSchema = z.object({
5689
- profileSetup: z.number(),
5690
- campaignCreated: z.number(),
5691
- filtersAdded: z.number(),
5692
- rulesConfigured: z.number(), // 2 is completed, 1 is when the system generates ai config
5693
- automationEnabled: z.number(),
5814
+ const campaignAIMetricsSchema = z.object({
5815
+ leadsAnalyzed: z.number(),
5816
+ leadsBidded: z.number(),
5817
+ connectsSaved: z.number(),
5694
5818
  });
5695
5819
 
5696
- const bidConfigSchema = objectType({
5697
- agencyName: stringType().nullable(),
5698
- bidderId: stringType().nullable(),
5699
- contractorName: stringType().nullable(),
5700
- specialisedProfile: stringType().nullable(),
5701
- });
5702
- const organizationTypeSchema = z.enum(["agency", "freelancer"]);
5703
- const organizationTierEnum = z.enum(["free", "premium"]);
5704
- const organizationLimitsSchema = objectType({
5705
- monthlyCredits: numberType(),
5706
- usedCredits: numberType(),
5707
- extraCredits: numberType(),
5708
- });
5709
- const organizationBillingSchema = objectType({
5710
- stripeCustomerId: stringType(),
5711
- savedCard: booleanType(),
5712
- creditsRemaining: numberType(),
5820
+ const invoiceStripeMetadataLineSchema = objectType({
5821
+ description: stringType(),
5822
+ amount: numberType(),
5823
+ quantity: numberType(),
5824
+ currency: stringType(),
5825
+ subscription_item_id: stringType(),
5713
5826
  });
5714
- const organizationSchema = objectType({
5827
+ const invoiceStripeMetadataSchema = objectType({
5715
5828
  id: stringType(),
5716
- name: stringType(),
5717
- type: organizationTypeSchema,
5718
- tierId: organizationTierEnum,
5719
- subscription: organizationSubscriptionSchema.nullable(),
5720
- bidConfig: bidConfigSchema,
5721
- active: booleanType(),
5722
- limits: organizationLimitsSchema,
5723
- billing: organizationBillingSchema.nullable(),
5724
- createdAt: numberType(),
5725
- updatedAt: numberType(),
5829
+ subscription_id: stringType(),
5830
+ hosted_invoice_url: stringType(),
5831
+ lines: arrayType(invoiceStripeMetadataLineSchema),
5832
+ amount_paid: numberType(),
5833
+ amount_due: numberType(),
5834
+ amount_remaining: numberType(),
5835
+ attempt_count: numberType(),
5726
5836
  });
5727
- const createOrganizationSchema = organizationSchema.pick({
5728
- name: true,
5729
- type: true,
5730
- tierId: true,
5837
+ const invoiceLineItemSchema = objectType({
5838
+ description: stringType(),
5839
+ total: numberType(),
5840
+ quantity: numberType(),
5841
+ currency: stringType(),
5731
5842
  });
5732
- const creditDeductionEventTypeEnum = LogEventTypeEnum.extract([
5733
- "suitabilityComplete",
5734
- "proposalComplete",
5843
+ const invoiceStatusEnum = z.enum([
5844
+ "open",
5845
+ "paid",
5846
+ "past_due",
5847
+ "payment_failed",
5735
5848
  ]);
5736
- const creditDeductionPayloadSchema = objectType({
5737
- event: creditDeductionEventTypeEnum,
5738
- campaignId: stringType().nullish(),
5739
- });
5740
- const aiConfigOldSchema = objectType({
5849
+ const invoiceSchema = objectType({
5741
5850
  id: stringType(),
5742
- suitabilityPrompt: stringType().nullable(),
5743
- proposalPrompt: stringType().nullable(),
5744
- questionProposalPrompt: stringType().nullable(),
5745
- knowledgeBase: stringType().nullable(),
5746
- });
5747
- const aiConfigSchema = objectType({
5748
- suitabilityRules: stringType().nullable(),
5749
- coverLetterRules: stringType().nullable(),
5750
- coverLetterTemplate: stringType().nullable(),
5751
- questionRules: stringType().nullable(),
5752
- });
5753
- const knowledgeBaseSchema = objectType({
5754
- about: stringType(),
5755
- caseStudies: stringType(),
5851
+ status: invoiceStatusEnum,
5852
+ subtotal: numberType(),
5853
+ total: numberType(),
5854
+ amountPaid: numberType(),
5855
+ amountDue: numberType(),
5856
+ amountRemaining: numberType(),
5857
+ currency: stringType(),
5858
+ lineItems: arrayType(invoiceLineItemSchema),
5859
+ stripe: invoiceStripeMetadataSchema,
5860
+ createdAt: numberType(),
5756
5861
  });
5757
- const notificationConfigSchema = objectType({
5758
- emailEnabled: booleanType(),
5759
- discordWebhookUrl: stringType().nullable(),
5760
- slackWebhookUrl: stringType().nullable(),
5862
+
5863
+ const planStripeMetadataSchema = objectType({
5864
+ id: stringType().regex(/^prod_[a-zA-Z0-9]+$/),
5865
+ name: stringType(),
5866
+ prices: arrayType(objectType({
5867
+ id: stringType().regex(/^price_[a-zA-Z0-9]+$/),
5868
+ nickname: stringType(),
5869
+ lookup_key: stringType(),
5870
+ })),
5761
5871
  });
5762
- const organizationSettingsSchema = objectType({
5763
- aiConfig: aiConfigSchema,
5764
- knowledgeBase: knowledgeBaseSchema,
5765
- notifications: notificationConfigSchema,
5872
+ const planSchema = objectType({
5873
+ id: stringType().regex(/^prod_[a-zA-Z0-9]+$/),
5874
+ name: stringType(),
5875
+ slug: stringType().regex(/^[a-z0-9-]+$/),
5876
+ stripe: planStripeMetadataSchema,
5877
+ version: numberType().int().positive(),
5878
+ features: arrayType(stringType()),
5879
+ sortOrder: numberType().int().positive(),
5880
+ isActive: booleanType(),
5881
+ createdAt: numberType(),
5882
+ archivedAt: numberType().nullable(),
5766
5883
  });
5767
5884
 
5768
5885
  const proxyCountrySchema = z.enum([
@@ -6058,7 +6175,7 @@ const scrapePayloadSchema = objectType({
6058
6175
  username: stringType(),
6059
6176
  password: stringType(),
6060
6177
  });
6061
- const scrapeUserProfilePayloadSchema = objectType({
6178
+ const scrapeUserProfileRequestSchema = objectType({
6062
6179
  profileUrl: stringType(),
6063
6180
  cookies: arrayType(anyType()),
6064
6181
  username: stringType(),
@@ -6079,55 +6196,6 @@ const checkLeadStatusPayloadSchema = objectType({
6079
6196
  bidder: bidderAccountSchema,
6080
6197
  });
6081
6198
 
6082
- const userSchema = objectType({
6083
- id: stringType(),
6084
- name: stringType(),
6085
- email: stringType(),
6086
- organizationIds: z.array(stringType()),
6087
- createdAt: numberType(),
6088
- updatedAt: numberType(),
6089
- });
6090
- const loginSchema = objectType({
6091
- email: stringType().email(),
6092
- password: passwordSchema,
6093
- });
6094
- const registerSchema = objectType({
6095
- name: stringType().min(1, "First name is required").max(255),
6096
- email: stringType()
6097
- .email("Must be a valid email address")
6098
- .max(255)
6099
- .min(1, "Email address is required"),
6100
- teamName: stringType().min(1, "Team name is required").max(255),
6101
- password: passwordSchema,
6102
- confirmPassword: passwordSchema,
6103
- }).refine(({ password, confirmPassword }) => password === confirmPassword, {
6104
- message: `Passwords don't match.`,
6105
- path: ["confirmPassword"],
6106
- });
6107
- const upworkProfileSchema = objectType({
6108
- name: stringType().nullable(),
6109
- country: stringType().nullable(),
6110
- bio: stringType().nullable(),
6111
- skills: z.array(stringType()).nullable(),
6112
- certifications: z.array(stringType()).nullable(),
6113
- employmentHistory: z
6114
- .array(z.object({
6115
- jobTitle: stringType(),
6116
- period: stringType(),
6117
- description: stringType(),
6118
- }))
6119
- .nullable(),
6120
- languages: z.record(stringType(), stringType()).nullable(),
6121
- portfolio: z
6122
- .array(z.object({
6123
- title: stringType(),
6124
- description: stringType(),
6125
- skills: z.array(stringType()),
6126
- publishedDate: stringType(),
6127
- }))
6128
- .nullable(),
6129
- });
6130
-
6131
6199
  const scrapeResultSchema = objectType({
6132
6200
  jobs: arrayType(upworkJobSchema),
6133
6201
  cookies: arrayType(anyType()),
@@ -6135,11 +6203,6 @@ const scrapeResultSchema = objectType({
6135
6203
  usAccountCookies: arrayType(anyType()).optional(),
6136
6204
  ukAccountCookies: arrayType(anyType()).optional(),
6137
6205
  });
6138
- const scrapeUserProfileResultSchema = objectType({
6139
- success: booleanType(),
6140
- message: stringType(),
6141
- data: upworkProfileSchema,
6142
- });
6143
6206
  const scrapeFeedResultSchema = objectType({
6144
6207
  listings: arrayType(jobListingSchema),
6145
6208
  cookies: arrayType(anyType()),
@@ -6148,30 +6211,40 @@ const scrapeFeedResultSchema = objectType({
6148
6211
  ukAccountCookies: arrayType(anyType()).optional(),
6149
6212
  });
6150
6213
 
6214
+ const employmentHistorySchema = objectType({
6215
+ jobTitle: stringType(),
6216
+ period: stringType(),
6217
+ description: stringType(),
6218
+ });
6219
+ const portfolioSchema = objectType({
6220
+ title: stringType(),
6221
+ description: stringType(),
6222
+ skills: arrayType(stringType()),
6223
+ publishedDate: stringType(),
6224
+ });
6225
+ const upworkProfileSchema = objectType({
6226
+ name: stringType().nullable(),
6227
+ country: stringType().nullable(),
6228
+ bio: stringType().nullable(),
6229
+ skills: arrayType(stringType()).nullable(),
6230
+ certifications: arrayType(stringType()).nullable(),
6231
+ employmentHistory: arrayType(employmentHistorySchema).nullable(),
6232
+ languages: recordType(stringType(), stringType()).nullable(),
6233
+ portfolio: arrayType(portfolioSchema).nullable(),
6234
+ });
6235
+
6151
6236
  const timeFilterSchema = z.union([
6152
6237
  z.literal("last_7_days"),
6153
6238
  z.literal("last_30_days"),
6239
+ z.literal("last_6_months"),
6240
+ z.literal("last_year"),
6154
6241
  z.literal("all_time"),
6155
6242
  ]);
6156
6243
 
6157
- const breakdownSchema = objectType({
6158
- suitability: numberType(),
6159
- proposal: numberType(),
6160
- bidding: numberType(),
6161
- });
6162
- const dailyUsageSchema = objectType({
6163
- breakdown: breakdownSchema,
6164
- tokensUsed: numberType().optional(),
6165
- campaignId: stringType().optional(),
6166
- model: stringType(),
6167
- timestamp: numberType(),
6168
- });
6169
- const periodUsageSchema = objectType({
6170
- usedCredits: numberType(),
6171
- breakdown: breakdownSchema,
6172
- lastUpdated: numberType(),
6244
+ const transactionStripeMetadataSchema = objectType({
6245
+ subscription: objectType({ id: stringType().nullable() }),
6246
+ invoice: objectType({ id: stringType().nullable() }),
6173
6247
  });
6174
-
6175
6248
  const transactionTypeEnum = z.enum(["subscription", "add-on", "refund"]);
6176
6249
  const transactionStatusEnum = z.enum([
6177
6250
  "succeeded",
@@ -6181,64 +6254,54 @@ const transactionStatusEnum = z.enum([
6181
6254
  const transactionSchema = objectType({
6182
6255
  orgId: stringType(),
6183
6256
  type: transactionTypeEnum,
6184
- creditsPurchased: numberType(),
6185
- creditsGranted: numberType().nullable(),
6186
6257
  amountUsd: numberType(),
6187
- stripeInvoiceId: stringType(),
6188
6258
  status: transactionStatusEnum,
6189
6259
  timestamp: numberType(),
6260
+ stripe: transactionStripeMetadataSchema,
6190
6261
  });
6191
6262
 
6192
- const agentTaskRequestSchema = z.object({
6193
- organizationId: z.string(),
6194
- userId: z.string().optional(),
6195
- campaignId: z.string().optional(),
6196
- leadId: z.string(),
6197
- aiConfig: aiConfigSchema,
6198
- lead: leadSchema,
6199
- });
6200
- const testSystemPromptsRequestSchema = z.object({
6201
- organizationId: z.string(),
6202
- modelSuitability: z.string(),
6203
- modelProposal: z.string(),
6204
- systemPrompt: systemPromptSchema,
6205
- aiConfig: aiConfigSchema,
6206
- lead: leadSchema,
6263
+ const breakdownSchema = objectType({
6264
+ suitability: numberType(),
6265
+ proposal: numberType(),
6266
+ bidding: numberType(),
6207
6267
  });
6208
- const generateKnowledgeBaseRequestSchema = z.object({
6209
- profileUrl: z.string(),
6210
- organizationId: z.string(),
6268
+ const dailyUsageSchema = objectType({
6269
+ breakdown: breakdownSchema,
6270
+ tokensUsed: numberType().optional(),
6271
+ campaignId: stringType().optional(),
6272
+ model: stringType(),
6273
+ timestamp: numberType(),
6211
6274
  });
6212
- const suitabilityRatingSchema = z.object({
6213
- rating: z.number(),
6214
- reason: z.string(),
6275
+ const periodUsageSchema = objectType({
6276
+ usedCredits: numberType(),
6277
+ breakdown: breakdownSchema,
6278
+ lastUpdated: numberType(),
6215
6279
  });
6216
- const proposalSchema = z.object({
6217
- coverLetter: z.string(),
6218
- questionAnswerPairs: questionAnswerPairSchema.array(),
6280
+
6281
+ const userSchema = objectType({
6282
+ id: stringType(),
6283
+ name: stringType(),
6284
+ email: stringType(),
6285
+ organizationIds: z.array(stringType()),
6286
+ createdAt: numberType(),
6287
+ updatedAt: numberType(),
6219
6288
  });
6220
- const agentTaskResponseSchema = z.object({
6221
- result: z.union([suitabilityRatingSchema, proposalSchema]),
6222
- model: z.string(),
6223
- provider: z.string(),
6224
- promptTokens: z.number(),
6225
- completionTokens: z.number(),
6289
+ const loginSchema = objectType({
6290
+ email: stringType().email(),
6291
+ password: passwordSchema,
6226
6292
  });
6227
- const testSystemPromptsResponseSchema = z.object({
6228
- proposal: z.object({
6229
- result: proposalSchema,
6230
- model: z.string(),
6231
- provider: z.string(),
6232
- promptTokens: z.number(),
6233
- completionTokens: z.number(),
6234
- }),
6235
- suitability: z.object({
6236
- result: suitabilityRatingSchema,
6237
- model: z.string(),
6238
- provider: z.string(),
6239
- promptTokens: z.number(),
6240
- completionTokens: z.number(),
6241
- }),
6293
+ const registerSchema = objectType({
6294
+ name: stringType().min(1, "First name is required").max(255),
6295
+ email: stringType()
6296
+ .email("Must be a valid email address")
6297
+ .max(255)
6298
+ .min(1, "Email address is required"),
6299
+ teamName: stringType().min(1, "Team name is required").max(255),
6300
+ password: passwordSchema,
6301
+ confirmPassword: passwordSchema,
6302
+ }).refine(({ password, confirmPassword }) => password === confirmPassword, {
6303
+ message: `Passwords don't match.`,
6304
+ path: ["confirmPassword"],
6242
6305
  });
6243
6306
 
6244
6307
  const commonQuestions = [
@@ -12471,7 +12534,7 @@ const ROUTES = {
12471
12534
  BY_ID: (id) => `organizations/${id}`,
12472
12535
  ONBOARDING: (id) => `organizations/${id}/onboarding/progress`,
12473
12536
  AI_CONFIG: (id) => `organizations/${id}/settings/ai-config`,
12474
- KNOWLEDGE_BASE: (id) => `organizations/${id}/settings/knowledge-base`,
12537
+ PROFILE: (id) => `organizations/${id}/profile/data`,
12475
12538
  MEMBERS: {
12476
12539
  BASE: (id) => `organizations/${id}/members`,
12477
12540
  BY_ID: (id, memberId) => `organizations/${id}/members/${memberId}`,
@@ -12480,7 +12543,8 @@ const ROUTES = {
12480
12543
  SETTINGS: (id) => `organizations/${id}/settings`,
12481
12544
  CHARGES: (id) => `organizations/${id}/charges`,
12482
12545
  PAYMENT_METHODS: (id) => `organizations/${id}/payment-methods`,
12483
- DEDUCT_CREDITS: (id) => `organizations/${id}/deduct-credits`,
12546
+ TRACK_USAGE: (id) => `organizations/${id}/track-usage`,
12547
+ SUBSCRIBE: (id) => `organizations/${id}/subscribe`,
12484
12548
  CAMPAIGNS: {
12485
12549
  BASE: (organizationId) => `organizations/${organizationId}/campaigns`,
12486
12550
  BY_ID: (organizationId, campaignId) => `organizations/${organizationId}/campaigns/${campaignId}`,
@@ -12539,6 +12603,14 @@ const ROUTES = {
12539
12603
  BY_DATE: (organizationId, date) => `usage-summaries/${organizationId}/yearly/${moment(date).format("YYYY")}`,
12540
12604
  },
12541
12605
  },
12606
+ INVOICES: {
12607
+ BASE: (organizationId) => `organizations/${organizationId}/invoices`,
12608
+ BY_ID: (organizationId, invoiceId) => `organizations/${organizationId}/invoices/${invoiceId}`,
12609
+ },
12610
+ USERS: {
12611
+ BASE: (id) => `organizations/${id}/users`,
12612
+ BY_ID: (organizationId, userId) => `organizations/${organizationId}/users/${userId}`,
12613
+ },
12542
12614
  },
12543
12615
  TRANSACTIONS: {
12544
12616
  BASE: "transactions",
@@ -12546,8 +12618,7 @@ const ROUTES = {
12546
12618
  },
12547
12619
  AGENT: {
12548
12620
  BASE: "agent",
12549
- GENERATE_KNOWLEDGE_BASE: "agent/generate-knowledge-base",
12550
- GENERATE_DEFAULT_AI_CONFIG: "agent/generate-ai-config",
12621
+ SCRAPE_UPWORK_PROFIL: "agent/scrape-upwork-profile",
12551
12622
  TEST_AI_CONFIG: "agent/test-ai-config",
12552
12623
  TEST_SYSTEM_PROMPTS: "agent/test-system-prompts",
12553
12624
  },
@@ -12555,6 +12626,10 @@ const ROUTES = {
12555
12626
  BASE: "bidders",
12556
12627
  BY_ID: (id) => `bidders/${id}`,
12557
12628
  },
12629
+ PLANS: {
12630
+ BASE: "plans",
12631
+ BY_ID: (id) => `plans/${id}`,
12632
+ },
12558
12633
  };
12559
12634
  // Helper function to build route with parameters
12560
12635
  const buildRoute = (route, params = {}) => {
@@ -12590,7 +12665,8 @@ const bidderAccountProviderDisplayMap = {
12590
12665
 
12591
12666
  const creditDeductionAmountMap = {
12592
12667
  suitabilityComplete: 1,
12593
- proposalComplete: 5,
12668
+ proposalComplete: 1,
12669
+ biddingComplete: 5,
12594
12670
  };
12595
12671
 
12596
12672
  // Main wrapper function
@@ -12832,6 +12908,84 @@ function requireCurrencySymbolMap () {
12832
12908
  var currencySymbolMapExports = requireCurrencySymbolMap();
12833
12909
  var getSymbolFromCurrency = /*@__PURE__*/getDefaultExportFromCjs(currencySymbolMapExports);
12834
12910
 
12911
+ var slugify$2 = {exports: {}};
12912
+
12913
+ var slugify$1 = slugify$2.exports;
12914
+
12915
+ var hasRequiredSlugify;
12916
+
12917
+ function requireSlugify () {
12918
+ if (hasRequiredSlugify) return slugify$2.exports;
12919
+ hasRequiredSlugify = 1;
12920
+ (function (module, exports) {
12921
+ (function (name, root, factory) {
12922
+ {
12923
+ module.exports = factory();
12924
+ module.exports['default'] = factory();
12925
+ }
12926
+ }('slugify', slugify$1, function () {
12927
+ var charMap = JSON.parse('{"$":"dollar","%":"percent","&":"and","<":"less",">":"greater","|":"or","¢":"cent","£":"pound","¤":"currency","¥":"yen","©":"(c)","ª":"a","®":"(r)","º":"o","À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","Æ":"AE","Ç":"C","È":"E","É":"E","Ê":"E","Ë":"E","Ì":"I","Í":"I","Î":"I","Ï":"I","Ð":"D","Ñ":"N","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","Ù":"U","Ú":"U","Û":"U","Ü":"U","Ý":"Y","Þ":"TH","ß":"ss","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","æ":"ae","ç":"c","è":"e","é":"e","ê":"e","ë":"e","ì":"i","í":"i","î":"i","ï":"i","ð":"d","ñ":"n","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","ù":"u","ú":"u","û":"u","ü":"u","ý":"y","þ":"th","ÿ":"y","Ā":"A","ā":"a","Ă":"A","ă":"a","Ą":"A","ą":"a","Ć":"C","ć":"c","Č":"C","č":"c","Ď":"D","ď":"d","Đ":"DJ","đ":"dj","Ē":"E","ē":"e","Ė":"E","ė":"e","Ę":"e","ę":"e","Ě":"E","ě":"e","Ğ":"G","ğ":"g","Ģ":"G","ģ":"g","Ĩ":"I","ĩ":"i","Ī":"i","ī":"i","Į":"I","į":"i","İ":"I","ı":"i","Ķ":"k","ķ":"k","Ļ":"L","ļ":"l","Ľ":"L","ľ":"l","Ł":"L","ł":"l","Ń":"N","ń":"n","Ņ":"N","ņ":"n","Ň":"N","ň":"n","Ō":"O","ō":"o","Ő":"O","ő":"o","Œ":"OE","œ":"oe","Ŕ":"R","ŕ":"r","Ř":"R","ř":"r","Ś":"S","ś":"s","Ş":"S","ş":"s","Š":"S","š":"s","Ţ":"T","ţ":"t","Ť":"T","ť":"t","Ũ":"U","ũ":"u","Ū":"u","ū":"u","Ů":"U","ů":"u","Ű":"U","ű":"u","Ų":"U","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","ź":"z","Ż":"Z","ż":"z","Ž":"Z","ž":"z","Ə":"E","ƒ":"f","Ơ":"O","ơ":"o","Ư":"U","ư":"u","Lj":"LJ","lj":"lj","Nj":"NJ","nj":"nj","Ș":"S","ș":"s","Ț":"T","ț":"t","ə":"e","˚":"o","Ά":"A","Έ":"E","Ή":"H","Ί":"I","Ό":"O","Ύ":"Y","Ώ":"W","ΐ":"i","Α":"A","Β":"B","Γ":"G","Δ":"D","Ε":"E","Ζ":"Z","Η":"H","Θ":"8","Ι":"I","Κ":"K","Λ":"L","Μ":"M","Ν":"N","Ξ":"3","Ο":"O","Π":"P","Ρ":"R","Σ":"S","Τ":"T","Υ":"Y","Φ":"F","Χ":"X","Ψ":"PS","Ω":"W","Ϊ":"I","Ϋ":"Y","ά":"a","έ":"e","ή":"h","ί":"i","ΰ":"y","α":"a","β":"b","γ":"g","δ":"d","ε":"e","ζ":"z","η":"h","θ":"8","ι":"i","κ":"k","λ":"l","μ":"m","ν":"n","ξ":"3","ο":"o","π":"p","ρ":"r","ς":"s","σ":"s","τ":"t","υ":"y","φ":"f","χ":"x","ψ":"ps","ω":"w","ϊ":"i","ϋ":"y","ό":"o","ύ":"y","ώ":"w","Ё":"Yo","Ђ":"DJ","Є":"Ye","І":"I","Ї":"Yi","Ј":"J","Љ":"LJ","Њ":"NJ","Ћ":"C","Џ":"DZ","А":"A","Б":"B","В":"V","Г":"G","Д":"D","Е":"E","Ж":"Zh","З":"Z","И":"I","Й":"J","К":"K","Л":"L","М":"M","Н":"N","О":"O","П":"P","Р":"R","С":"S","Т":"T","У":"U","Ф":"F","Х":"H","Ц":"C","Ч":"Ch","Ш":"Sh","Щ":"Sh","Ъ":"U","Ы":"Y","Ь":"","Э":"E","Ю":"Yu","Я":"Ya","а":"a","б":"b","в":"v","г":"g","д":"d","е":"e","ж":"zh","з":"z","и":"i","й":"j","к":"k","л":"l","м":"m","н":"n","о":"o","п":"p","р":"r","с":"s","т":"t","у":"u","ф":"f","х":"h","ц":"c","ч":"ch","ш":"sh","щ":"sh","ъ":"u","ы":"y","ь":"","э":"e","ю":"yu","я":"ya","ё":"yo","ђ":"dj","є":"ye","і":"i","ї":"yi","ј":"j","љ":"lj","њ":"nj","ћ":"c","ѝ":"u","џ":"dz","Ґ":"G","ґ":"g","Ғ":"GH","ғ":"gh","Қ":"KH","қ":"kh","Ң":"NG","ң":"ng","Ү":"UE","ү":"ue","Ұ":"U","ұ":"u","Һ":"H","һ":"h","Ә":"AE","ә":"ae","Ө":"OE","ө":"oe","Ա":"A","Բ":"B","Գ":"G","Դ":"D","Ե":"E","Զ":"Z","Է":"E\'","Ը":"Y\'","Թ":"T\'","Ժ":"JH","Ի":"I","Լ":"L","Խ":"X","Ծ":"C\'","Կ":"K","Հ":"H","Ձ":"D\'","Ղ":"GH","Ճ":"TW","Մ":"M","Յ":"Y","Ն":"N","Շ":"SH","Չ":"CH","Պ":"P","Ջ":"J","Ռ":"R\'","Ս":"S","Վ":"V","Տ":"T","Ր":"R","Ց":"C","Փ":"P\'","Ք":"Q\'","Օ":"O\'\'","Ֆ":"F","և":"EV","ء":"a","آ":"aa","أ":"a","ؤ":"u","إ":"i","ئ":"e","ا":"a","ب":"b","ة":"h","ت":"t","ث":"th","ج":"j","ح":"h","خ":"kh","د":"d","ذ":"th","ر":"r","ز":"z","س":"s","ش":"sh","ص":"s","ض":"dh","ط":"t","ظ":"z","ع":"a","غ":"gh","ف":"f","ق":"q","ك":"k","ل":"l","م":"m","ن":"n","ه":"h","و":"w","ى":"a","ي":"y","ً":"an","ٌ":"on","ٍ":"en","َ":"a","ُ":"u","ِ":"e","ْ":"","٠":"0","١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","پ":"p","چ":"ch","ژ":"zh","ک":"k","گ":"g","ی":"y","۰":"0","۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","฿":"baht","ა":"a","ბ":"b","გ":"g","დ":"d","ე":"e","ვ":"v","ზ":"z","თ":"t","ი":"i","კ":"k","ლ":"l","მ":"m","ნ":"n","ო":"o","პ":"p","ჟ":"zh","რ":"r","ს":"s","ტ":"t","უ":"u","ფ":"f","ქ":"k","ღ":"gh","ყ":"q","შ":"sh","ჩ":"ch","ც":"ts","ძ":"dz","წ":"ts","ჭ":"ch","ხ":"kh","ჯ":"j","ჰ":"h","Ṣ":"S","ṣ":"s","Ẁ":"W","ẁ":"w","Ẃ":"W","ẃ":"w","Ẅ":"W","ẅ":"w","ẞ":"SS","Ạ":"A","ạ":"a","Ả":"A","ả":"a","Ấ":"A","ấ":"a","Ầ":"A","ầ":"a","Ẩ":"A","ẩ":"a","Ẫ":"A","ẫ":"a","Ậ":"A","ậ":"a","Ắ":"A","ắ":"a","Ằ":"A","ằ":"a","Ẳ":"A","ẳ":"a","Ẵ":"A","ẵ":"a","Ặ":"A","ặ":"a","Ẹ":"E","ẹ":"e","Ẻ":"E","ẻ":"e","Ẽ":"E","ẽ":"e","Ế":"E","ế":"e","Ề":"E","ề":"e","Ể":"E","ể":"e","Ễ":"E","ễ":"e","Ệ":"E","ệ":"e","Ỉ":"I","ỉ":"i","Ị":"I","ị":"i","Ọ":"O","ọ":"o","Ỏ":"O","ỏ":"o","Ố":"O","ố":"o","Ồ":"O","ồ":"o","Ổ":"O","ổ":"o","Ỗ":"O","ỗ":"o","Ộ":"O","ộ":"o","Ớ":"O","ớ":"o","Ờ":"O","ờ":"o","Ở":"O","ở":"o","Ỡ":"O","ỡ":"o","Ợ":"O","ợ":"o","Ụ":"U","ụ":"u","Ủ":"U","ủ":"u","Ứ":"U","ứ":"u","Ừ":"U","ừ":"u","Ử":"U","ử":"u","Ữ":"U","ữ":"u","Ự":"U","ự":"u","Ỳ":"Y","ỳ":"y","Ỵ":"Y","ỵ":"y","Ỷ":"Y","ỷ":"y","Ỹ":"Y","ỹ":"y","–":"-","‘":"\'","’":"\'","“":"\\\"","”":"\\\"","„":"\\\"","†":"+","•":"*","…":"...","₠":"ecu","₢":"cruzeiro","₣":"french franc","₤":"lira","₥":"mill","₦":"naira","₧":"peseta","₨":"rupee","₩":"won","₪":"new shequel","₫":"dong","€":"euro","₭":"kip","₮":"tugrik","₯":"drachma","₰":"penny","₱":"peso","₲":"guarani","₳":"austral","₴":"hryvnia","₵":"cedi","₸":"kazakhstani tenge","₹":"indian rupee","₺":"turkish lira","₽":"russian ruble","₿":"bitcoin","℠":"sm","™":"tm","∂":"d","∆":"delta","∑":"sum","∞":"infinity","♥":"love","元":"yuan","円":"yen","﷼":"rial","ﻵ":"laa","ﻷ":"laa","ﻹ":"lai","ﻻ":"la"}');
12928
+ var locales = JSON.parse('{"bg":{"Й":"Y","Ц":"Ts","Щ":"Sht","Ъ":"A","Ь":"Y","й":"y","ц":"ts","щ":"sht","ъ":"a","ь":"y"},"de":{"Ä":"AE","ä":"ae","Ö":"OE","ö":"oe","Ü":"UE","ü":"ue","ß":"ss","%":"prozent","&":"und","|":"oder","∑":"summe","∞":"unendlich","♥":"liebe"},"es":{"%":"por ciento","&":"y","<":"menor que",">":"mayor que","|":"o","¢":"centavos","£":"libras","¤":"moneda","₣":"francos","∑":"suma","∞":"infinito","♥":"amor"},"fr":{"%":"pourcent","&":"et","<":"plus petit",">":"plus grand","|":"ou","¢":"centime","£":"livre","¤":"devise","₣":"franc","∑":"somme","∞":"infini","♥":"amour"},"pt":{"%":"porcento","&":"e","<":"menor",">":"maior","|":"ou","¢":"centavo","∑":"soma","£":"libra","∞":"infinito","♥":"amor"},"uk":{"И":"Y","и":"y","Й":"Y","й":"y","Ц":"Ts","ц":"ts","Х":"Kh","х":"kh","Щ":"Shch","щ":"shch","Г":"H","г":"h"},"vi":{"Đ":"D","đ":"d"},"da":{"Ø":"OE","ø":"oe","Å":"AA","å":"aa","%":"procent","&":"og","|":"eller","$":"dollar","<":"mindre end",">":"større end"},"nb":{"&":"og","Å":"AA","Æ":"AE","Ø":"OE","å":"aa","æ":"ae","ø":"oe"},"it":{"&":"e"},"nl":{"&":"en"},"sv":{"&":"och","Å":"AA","Ä":"AE","Ö":"OE","å":"aa","ä":"ae","ö":"oe"}}');
12929
+
12930
+ function replace (string, options) {
12931
+ if (typeof string !== 'string') {
12932
+ throw new Error('slugify: string argument expected')
12933
+ }
12934
+
12935
+ options = (typeof options === 'string')
12936
+ ? {replacement: options}
12937
+ : options || {};
12938
+
12939
+ var locale = locales[options.locale] || {};
12940
+
12941
+ var replacement = options.replacement === undefined ? '-' : options.replacement;
12942
+
12943
+ var trim = options.trim === undefined ? true : options.trim;
12944
+
12945
+ var slug = string.normalize().split('')
12946
+ // replace characters based on charMap
12947
+ .reduce(function (result, ch) {
12948
+ var appendChar = locale[ch];
12949
+ if (appendChar === undefined) appendChar = charMap[ch];
12950
+ if (appendChar === undefined) appendChar = ch;
12951
+ if (appendChar === replacement) appendChar = ' ';
12952
+ return result + appendChar
12953
+ // remove not allowed characters
12954
+ .replace(options.remove || /[^\w\s$*_+~.()'"!\-:@]+/g, '')
12955
+ }, '');
12956
+
12957
+ if (options.strict) {
12958
+ slug = slug.replace(/[^A-Za-z0-9\s]/g, '');
12959
+ }
12960
+
12961
+ if (trim) {
12962
+ slug = slug.trim();
12963
+ }
12964
+
12965
+ // Replace spaces with replacement character, treating multiple consecutive
12966
+ // spaces as a single space.
12967
+ slug = slug.replace(/\s+/g, replacement);
12968
+
12969
+ if (options.lower) {
12970
+ slug = slug.toLowerCase();
12971
+ }
12972
+
12973
+ return slug
12974
+ }
12975
+
12976
+ replace.extend = function (customMap) {
12977
+ Object.assign(charMap, customMap);
12978
+ };
12979
+
12980
+ return replace
12981
+ }));
12982
+ } (slugify$2));
12983
+ return slugify$2.exports;
12984
+ }
12985
+
12986
+ var slugifyExports = requireSlugify();
12987
+ var slugify = /*@__PURE__*/getDefaultExportFromCjs(slugifyExports);
12988
+
12835
12989
  const isNumeric = (num) => (typeof num === "number" || (typeof num === "string" && num.trim() !== "")) &&
12836
12990
  !isNaN(num);
12837
12991
  const formatCurrency = (price, currencyCode = "USD") => {
@@ -12851,6 +13005,7 @@ const capitalize = (str) => {
12851
13005
  }
12852
13006
  return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
12853
13007
  };
13008
+ const generateSlug = (name) => slugify(name, { lower: true, trim: true, replacement: "-" });
12854
13009
 
12855
13010
  exports.JOB_FILTER_OPTIONS = JOB_FILTER_OPTIONS;
12856
13011
  exports.LogEventTypeEnum = LogEventTypeEnum;
@@ -12863,7 +13018,6 @@ exports.agencyBidProposalDataSchema = agencyBidProposalDataSchema;
12863
13018
  exports.agentStatusSchema = agentStatusSchema;
12864
13019
  exports.agentTaskRequestSchema = agentTaskRequestSchema;
12865
13020
  exports.agentTaskResponseSchema = agentTaskResponseSchema;
12866
- exports.aiConfigOldSchema = aiConfigOldSchema;
12867
13021
  exports.aiConfigSchema = aiConfigSchema;
12868
13022
  exports.bidConfigSchema = bidConfigSchema;
12869
13023
  exports.bidDtoSchema = bidDtoSchema;
@@ -12907,10 +13061,9 @@ exports.createCampaignSchema = createCampaignSchema;
12907
13061
  exports.createOrganizationSchema = createOrganizationSchema;
12908
13062
  exports.createScraperAccountSchema = createScraperAccountSchema;
12909
13063
  exports.creditDeductionAmountMap = creditDeductionAmountMap;
12910
- exports.creditDeductionEventTypeEnum = creditDeductionEventTypeEnum;
12911
- exports.creditDeductionPayloadSchema = creditDeductionPayloadSchema;
12912
13064
  exports.dailyUsageSchema = dailyUsageSchema;
12913
13065
  exports.dateSchema = dateSchema;
13066
+ exports.employmentHistorySchema = employmentHistorySchema;
12914
13067
  exports.engagementTypeEnum = engagementTypeEnum;
12915
13068
  exports.englishLevelEnum = englishLevelEnum;
12916
13069
  exports.experienceLevelEnum = experienceLevelEnum;
@@ -12924,10 +13077,15 @@ exports.findLeadsResponseSchema = findLeadsResponseSchema;
12924
13077
  exports.formatCurrency = formatCurrency;
12925
13078
  exports.freelancerBidPayloadSchema = freelancerBidPayloadSchema;
12926
13079
  exports.freelancerBidProposalDataSchema = freelancerBidProposalDataSchema;
12927
- exports.generateKnowledgeBaseRequestSchema = generateKnowledgeBaseRequestSchema;
13080
+ exports.generateSlug = generateSlug;
12928
13081
  exports.getNextStatus = getNextStatus;
12929
13082
  exports.getPreviousStatus = getPreviousStatus;
12930
13083
  exports.getRouteWithoutAdminPrefix = getRouteWithoutAdminPrefix;
13084
+ exports.invoiceLineItemSchema = invoiceLineItemSchema;
13085
+ exports.invoiceSchema = invoiceSchema;
13086
+ exports.invoiceStatusEnum = invoiceStatusEnum;
13087
+ exports.invoiceStripeMetadataLineSchema = invoiceStripeMetadataLineSchema;
13088
+ exports.invoiceStripeMetadataSchema = invoiceStripeMetadataSchema;
12931
13089
  exports.isNumeric = isNumeric;
12932
13090
  exports.jobActivityDeltaSchema = jobActivityDeltaSchema;
12933
13091
  exports.jobActivityOffsetEnum = jobActivityOffsetEnum;
@@ -12942,11 +13100,11 @@ exports.jobFiltersSchema = jobFiltersSchema;
12942
13100
  exports.jobListingSchema = jobListingSchema;
12943
13101
  exports.jobSkillsSchema = jobSkillsSchema;
12944
13102
  exports.jobStatusOrder = jobStatusOrder;
12945
- exports.knowledgeBaseSchema = knowledgeBaseSchema;
12946
13103
  exports.leadResponseSchema = leadResponseSchema;
12947
13104
  exports.leadSchema = leadSchema;
12948
13105
  exports.leadStatusEventMetadata = leadStatusEventMetadata;
12949
13106
  exports.leadStatusSchema = leadStatusSchema;
13107
+ exports.limitsSchema = limitsSchema;
12950
13108
  exports.listingScrapedEventMetadata = listingScrapedEventMetadata;
12951
13109
  exports.logEventSchema = logEventSchema;
12952
13110
  exports.loginSchema = loginSchema;
@@ -12954,18 +13112,18 @@ exports.metadataSchema = metadataSchema;
12954
13112
  exports.notificationConfigSchema = notificationConfigSchema;
12955
13113
  exports.nuxtStateJobSchema = nuxtStateJobSchema;
12956
13114
  exports.onboardingProgressSchema = onboardingProgressSchema;
12957
- exports.organizationBillingSchema = organizationBillingSchema;
12958
- exports.organizationLimitsSchema = organizationLimitsSchema;
12959
13115
  exports.organizationMemberRoleEnum = organizationMemberRoleEnum;
12960
13116
  exports.organizationMemberSchema = organizationMemberSchema;
12961
13117
  exports.organizationSchema = organizationSchema;
12962
13118
  exports.organizationSettingsSchema = organizationSettingsSchema;
12963
- exports.organizationSubscriptionSchema = organizationSubscriptionSchema;
12964
13119
  exports.organizationTierEnum = organizationTierEnum;
12965
13120
  exports.organizationTypeSchema = organizationTypeSchema;
12966
13121
  exports.passwordSchema = passwordSchema;
12967
13122
  exports.paymentTypeEnum = paymentTypeEnum;
12968
13123
  exports.periodUsageSchema = periodUsageSchema;
13124
+ exports.planSchema = planSchema;
13125
+ exports.planStripeMetadataSchema = planStripeMetadataSchema;
13126
+ exports.portfolioSchema = portfolioSchema;
12969
13127
  exports.projectDurationEnum = projectDurationEnum;
12970
13128
  exports.proposalSchema = proposalSchema;
12971
13129
  exports.proxyAvailableReplacementsSchema = proxyAvailableReplacementsSchema;
@@ -12986,11 +13144,14 @@ exports.scrapeJobActivityPayloadSchema = scrapeJobActivityPayloadSchema;
12986
13144
  exports.scrapeJobPayloadSchema = scrapeJobPayloadSchema;
12987
13145
  exports.scrapePayloadSchema = scrapePayloadSchema;
12988
13146
  exports.scrapeResultSchema = scrapeResultSchema;
12989
- exports.scrapeUserProfilePayloadSchema = scrapeUserProfilePayloadSchema;
12990
- exports.scrapeUserProfileResultSchema = scrapeUserProfileResultSchema;
13147
+ exports.scrapeUserProfileRequestSchema = scrapeUserProfileRequestSchema;
12991
13148
  exports.scraperAccountSchema = scraperAccountSchema;
13149
+ exports.subscribePayloadSchema = subscribePayloadSchema;
13150
+ exports.subscriptionSchema = subscriptionSchema;
12992
13151
  exports.subscriptionSourceEnum = subscriptionSourceEnum;
12993
13152
  exports.subscriptionStatusEnum = subscriptionStatusEnum;
13153
+ exports.subscriptionStripeMetadataItemSchema = subscriptionStripeMetadataItemSchema;
13154
+ exports.subscriptionStripeMetadataSchema = subscriptionStripeMetadataSchema;
12994
13155
  exports.suitabilityRatingSchema = suitabilityRatingSchema;
12995
13156
  exports.systemPromptSchema = systemPromptSchema;
12996
13157
  exports.systemSchema = systemSchema;
@@ -12998,8 +13159,11 @@ exports.talentTypeEnum = talentTypeEnum;
12998
13159
  exports.testSystemPromptsRequestSchema = testSystemPromptsRequestSchema;
12999
13160
  exports.testSystemPromptsResponseSchema = testSystemPromptsResponseSchema;
13000
13161
  exports.timeFilterSchema = timeFilterSchema;
13162
+ exports.trackUsageEventTypeEnum = trackUsageEventTypeEnum;
13163
+ exports.trackUsagePayloadSchema = trackUsagePayloadSchema;
13001
13164
  exports.transactionSchema = transactionSchema;
13002
13165
  exports.transactionStatusEnum = transactionStatusEnum;
13166
+ exports.transactionStripeMetadataSchema = transactionStripeMetadataSchema;
13003
13167
  exports.transactionTypeEnum = transactionTypeEnum;
13004
13168
  exports.tryCatch = tryCatch;
13005
13169
  exports.updateBidderAccountSchema = updateBidderAccountSchema;