@trigger.dev/platform 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -501,6 +501,16 @@ const PromoCreditsResult = zod.z.object({ promoCredits: zod.z.object({
501
501
  expiresAt: zod.z.string().datetime().nullable()
502
502
  }).nullable() });
503
503
  //#endregion
504
+ //#region src/v3/schemas/ipLocation.ts
505
+ /** Approximate country and network owner of an IPv4 address, from the IPinfo Lite dataset. */
506
+ const IpLocation = zod.z.object({
507
+ country: zod.z.string().nullable(),
508
+ countryCode: zod.z.string().nullable(),
509
+ asn: zod.z.number().int().nullable(),
510
+ asName: zod.z.string().nullable()
511
+ });
512
+ const IpLocationResult = zod.z.object({ location: IpLocation.nullable() });
513
+ //#endregion
504
514
  //#region src/v3/client/index.ts
505
515
  var BillingClient = class {
506
516
  constructor(config) {
@@ -639,6 +649,10 @@ var BillingClient = class {
639
649
  async getActiveBillingLimits() {
640
650
  return await this.fetch(`/api/v1/billing-limits/active`, BillingLimitsActiveResult);
641
651
  }
652
+ /** Approximate country and network owner of an IP address. `location` is null when unknown. */
653
+ async getIpLocation(ip) {
654
+ return await this.fetch(`/api/v1/ip-location?ip=${encodeURIComponent(ip)}`, IpLocationResult);
655
+ }
642
656
  async getPrivateLinks(orgId) {
643
657
  return await this.fetch(`/api/v1/orgs/${orgId}/private-connections`, PrivateLinkConnectionList);
644
658
  }
@@ -811,6 +825,8 @@ exports.EnqueueBuildResponseSchema = EnqueueBuildResponseSchema;
811
825
  exports.ErrorSchema = ErrorSchema;
812
826
  exports.FreeConnectRequiredSchema = FreeConnectRequiredSchema;
813
827
  exports.FreeConnectedSchema = FreeConnectedSchema;
828
+ exports.IpLocation = IpLocation;
829
+ exports.IpLocationResult = IpLocationResult;
814
830
  exports.MAX_INVOCATION_COST_IN_CENTS = MAX_INVOCATION_COST_IN_CENTS;
815
831
  exports.PlanDefinitionSchema = PlanDefinitionSchema;
816
832
  exports.Plans = Plans;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["z","z","z","z","z","z","z","z","z","z","z","z","z"],"sources":["../src/v3/schemas/planDefinitions.ts","../src/v3/schemas/subscription.ts","../src/v3/schemas/subscribe.ts","../src/v3/schemas/portal.ts","../src/v3/schemas/error.ts","../src/v3/schemas/usage.ts","../src/v3/schemas/billingAlerts.ts","../src/v3/schemas/billingLimit.ts","../src/v3/schemas/registryCredentials.ts","../src/v3/schemas/enqueueBuild.ts","../src/v3/schemas/initialDeployment.ts","../src/v3/schemas/privateLink.ts","../src/v3/schemas/promoCodes.ts","../src/v3/client/index.ts","../src/v3/machineDefinition.ts","../src/v3/machinePresets.ts"],"sourcesContent":["import { z } from \"zod\";\n\nconst ExceedableLimit = z.object({\n number: z.number(),\n canExceed: z.boolean().optional(),\n});\n\nexport type ExceedableLimit = z.infer<typeof ExceedableLimit>;\n\nconst EnvironmentBasedLimit = z.object({\n production: z.number(),\n staging: z.number(),\n preview: z.number(),\n development: z.number(),\n canExceed: z.boolean().optional(),\n // Legacy, return the `production` value\n number: z.number(),\n});\nexport type EnvironmentBasedLimit = z.infer<typeof EnvironmentBasedLimit>;\n\nconst BatchRateLimitConfig = z.object({\n type: z.string(),\n interval: z.string(),\n maxTokens: z.number(),\n refillRate: z.number(),\n});\nexport type BatchRateLimitConfig = z.infer<typeof BatchRateLimitConfig>;\n\nconst BatchQueueConcurrencyConfig = z.object({\n processingConcurrency: z.number(),\n});\nexport type BatchQueueConcurrencyConfig = z.infer<typeof BatchQueueConcurrencyConfig>;\n\n/**\n * Hosted webhook limits, synced into Organization.webhookLimitsConfig on plan changes. The webapp\n * falls back to its env defaults for any field that isn't set.\n */\nconst WebhookLimitsConfig = z.object({\n maxWaitersPerEnvironment: z.number(),\n maxWaitersPerEndpoint: z.number(),\n concurrency: z.number(),\n deliveryRetentionDays: z.number(),\n deliveryRetentionStrict: z.boolean().optional(),\n endpointRateLimitTokens: z.number().optional(),\n endpointRateLimitWindowSeconds: z.number().optional(),\n environmentRateLimitTokens: z.number().optional(),\n environmentRateLimitWindowSeconds: z.number().optional(),\n});\nexport type WebhookLimitsConfig = z.infer<typeof WebhookLimitsConfig>;\n\nconst QueueSizeLimits = z.object({\n development: z.number(),\n deployed: z.number(),\n});\nexport type QueueSizeLimits = z.infer<typeof QueueSizeLimits>;\n\nconst Limits = z.object({\n includedUsage: z.number(),\n concurrentRuns: EnvironmentBasedLimit,\n teamMembers: ExceedableLimit,\n schedules: ExceedableLimit,\n logRetentionDays: ExceedableLimit,\n queryPeriodDays: ExceedableLimit,\n alerts: ExceedableLimit,\n hasStagingEnvironment: z.boolean(),\n realtimeConcurrentConnections: ExceedableLimit,\n branches: ExceedableLimit,\n branchesDev: ExceedableLimit,\n support: z.enum([\"community\", \"slack\"]),\n batchRateLimitConfig: BatchRateLimitConfig.optional(),\n batchQueueConcurrencyConfig: BatchQueueConcurrencyConfig.optional(),\n webhookLimitsConfig: WebhookLimitsConfig.optional(),\n metricDashboards: ExceedableLimit,\n metricWidgetsPerDashboard: ExceedableLimit,\n // Optional so an older webapp parsing a newer plan doesn't throw.\n // Absent = unlimited via the webapp's getLimit fallback.\n agentMessages: ExceedableLimit.optional(),\n agentWatchMaxHours: ExceedableLimit.optional(),\n agentWatchers: ExceedableLimit.optional(),\n declaredSchedulesPerDeploy: ExceedableLimit.optional(),\n queueSizeLimits: QueueSizeLimits.optional(),\n hasPrivateNetworking: z.boolean().optional(),\n privateLinkConnectionLimit: z.number().optional(),\n hasSso: z.boolean().optional(),\n // Duration string (e.g. \"30d\", \"1y\"). When set, the org gets a\n // dedicated S2 stream basin with this retention; when omitted, the\n // org's streams flow to the shared global basin.\n streamBasinRetention: z.string().optional(),\n});\n\nexport type Limits = z.infer<typeof Limits>;\n\nconst commonMetadata = {\n title: z.string(),\n code: z.string(),\n};\n\nconst pricingLookup = {\n tierPriceCode: z.string(),\n usagePriceCode: z.string(),\n usageCouponCode: z.string().optional(),\n};\nconst FreePlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"free\"),\n limits: Limits,\n});\nexport type FreePlanDefinition = z.infer<typeof FreePlanDefinition>;\n\nconst PaidPlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"paid\"),\n tierPrice: z.number(),\n stripe: z.object(pricingLookup),\n limits: Limits,\n});\nexport type PaidPlanDefinition = z.infer<typeof PaidPlanDefinition>;\n\nconst EnterprisePlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"enterprise\"),\n limits: Limits,\n});\nexport type EnterprisePlanDefinition = z.infer<typeof EnterprisePlanDefinition>;\n\nexport const PlanDefinitionSchema = z.discriminatedUnion(\"type\", [\n FreePlanDefinition,\n PaidPlanDefinition,\n EnterprisePlanDefinition,\n]);\nexport type PlanDefinition = z.infer<typeof PlanDefinitionSchema>;\n\nconst MachineDefinition = z.object({\n code: z.string(),\n title: z.string(),\n cpu: z.number(),\n memory: z.number(),\n centsPerMs: z.number(),\n});\n\nexport type MachineDefinition = z.infer<typeof MachineDefinition>;\n\nexport const Plans = z.object({\n free: FreePlanDefinition,\n hobby: PaidPlanDefinition,\n pro: PaidPlanDefinition,\n enterprise: EnterprisePlanDefinition,\n});\nexport type Plans = z.infer<typeof Plans>;\n\n/** The pricing per step of the add-on, e.g. $10 for 50 units */\nconst AddOnPricing = z.object({\n /** The step size - must purchase in multiples of this amount */\n stepSize: z.number(),\n /** Price per step in cents */\n centsPerStep: z.number(),\n});\nexport type AddOnPricing = z.infer<typeof AddOnPricing>;\n\nexport const PlansResult = z.object({\n plans: Plans,\n usagePricing: z.object({\n centsPerRunInvocation: z.number(),\n machines: z.record(z.string(), MachineDefinition),\n defaultMachine: z.string(),\n }),\n addOnPricing: z.object({\n concurrency: AddOnPricing,\n branches: AddOnPricing,\n seats: AddOnPricing,\n schedules: AddOnPricing,\n }),\n});\n\nexport type PlansResult = z.infer<typeof PlansResult>;\n\nexport const AddOnDefinition = z.object({\n code: z.enum([\"concurrency\", \"branches\", \"seats\", \"schedules\"]),\n priceCode: z.string(),\n pricing: AddOnPricing,\n});\n\nexport type AddOnDefinition = z.infer<typeof AddOnDefinition>;\n\nexport const AddOn = z.object({\n purchased: z.number(),\n quota: z.number().optional(),\n});\nexport type AddOn = z.infer<typeof AddOn>;\n\nexport const AddOns = z.object({\n concurrentRuns: AddOn.optional(),\n branches: AddOn.optional(),\n seats: AddOn.optional(),\n schedules: AddOn.optional(),\n});\nexport type AddOns = z.infer<typeof AddOns>;\n","import { z } from \"zod\";\nimport { AddOns, PlanDefinitionSchema } from \"./planDefinitions\";\n\nconst FreeTierStatus = z.enum([\"requires_connect\", \"approved\", \"rejected\"]);\nexport type FreeTierStatus = z.infer<typeof FreeTierStatus>;\n\nexport const SubscriptionResult = z.object({\n freeTierStatus: FreeTierStatus,\n isPaying: z.boolean(),\n showSelfServe: z.boolean().default(true),\n canceledAt: z.string().optional(),\n plan: PlanDefinitionSchema.optional(),\n addOns: AddOns.optional(),\n});\n\nexport type SubscriptionResult = z.infer<typeof SubscriptionResult>;\n\nexport const CurrentPlan = z.object({\n //todo remove this after the next deploy\n subscription: z.any(),\n v3Subscription: SubscriptionResult,\n});\n\nexport type CurrentPlan = z.infer<typeof CurrentPlan>;\n","import { z } from \"zod\";\n\nconst SetPaidPlanBodySchema = z.object({\n type: z.literal(\"paid\"),\n planCode: z.string(),\n userId: z.string(),\n});\n\nconst SetFreePlanBodySchema = z.object({\n type: z.literal(\"free\"),\n userId: z.string(),\n});\n\nexport const SetPlanBodySchema = z.discriminatedUnion(\"type\", [\n SetPaidPlanBodySchema,\n SetFreePlanBodySchema,\n]);\n\nexport type SetPlanBody = z.infer<typeof SetPlanBodySchema>;\n\nexport const FreeConnectRequiredSchema = z.object({\n action: z.literal(\"free_connect_required\"),\n connectUrl: z.string().url(),\n});\n\nexport type FreeConnectRequired = z.infer<typeof FreeConnectRequiredSchema>;\n\nexport const FreeConnectedSchema = z.object({\n action: z.literal(\"free_connected\"),\n accepted: z.boolean(),\n});\n\nexport type FreeConnected = z.infer<typeof FreeConnectedSchema>;\n\nconst UpdatedSubscriptionResultSchema = z.object({\n action: z.literal(\"updated_subscription\"),\n subscription: z.object({\n planCode: z.string(),\n }),\n});\n\nexport type UpdatedSubscriptionResult = z.infer<typeof UpdatedSubscriptionResultSchema>;\n\nconst CreateSubscriptionFlowStartSchema = z.object({\n action: z.literal(\"create_subscription_flow_start\"),\n subscription: z.object({\n planCode: z.string(),\n }),\n checkoutUrl: z.string().url(),\n});\n\nexport type CreateSubscriptionFlowStart = z.infer<typeof CreateSubscriptionFlowStartSchema>;\n\nconst CanceledSubscriptionResultSchema = z.object({\n action: z.literal(\"canceled_subscription\"),\n});\n\nexport type CanceledSubscriptionResult = z.infer<typeof CanceledSubscriptionResultSchema>;\n\nexport const SubscribeResultSchema = z.discriminatedUnion(\"action\", [\n FreeConnectRequiredSchema,\n FreeConnectedSchema,\n CreateSubscriptionFlowStartSchema,\n UpdatedSubscriptionResultSchema,\n CanceledSubscriptionResultSchema,\n]);\n\nexport type SubscribeResult = z.infer<typeof SubscribeResultSchema>;\n\nexport const SetAddOnBody = z.object({\n type: z.enum([\"concurrency\", \"branches\", \"seats\", \"schedules\"]),\n amount: z.number(),\n});\n\nexport type SetAddOnBody = z.infer<typeof SetAddOnBody>;\n\nexport const SetAddOnResult = z.discriminatedUnion(\"result\", [\n z.object({\n result: z.literal(\"error\"),\n error: z.string(),\n }),\n z.object({\n result: z.literal(\"success\"),\n type: z.string(),\n amount: z.number(),\n subscription: z.object({\n id: z.string(),\n }),\n }),\n z.object({\n result: z.literal(\"max_quota_reached\"),\n type: z.string(),\n maxQuota: z.number(),\n }),\n]);\n\nexport type SetAddOnResult = z.infer<typeof SetAddOnResult>;\n\nexport const CancelSubscriptionResponse = z.object({\n outcome: z.enum([\"canceled\", \"already_canceled\", \"no_subscription\"]),\n cancelAt: z.string().nullable(),\n});\n\nexport type CancelSubscriptionResponse = z.infer<typeof CancelSubscriptionResponse>;\n","import { z } from \"zod\";\n\nexport const CustomerPortalRequestBodySchema = z.object({\n returnUrl: z.string(),\n});\n\nexport type CustomerPortalRequestBody = z.infer<typeof CustomerPortalRequestBodySchema>;\n\nexport const CustomerPortalSchema = z.object({\n customerPortalUrl: z.string().optional(),\n});\n\nexport type CustomerPortal = z.infer<typeof CustomerPortalSchema>;\n","import { z } from \"zod\";\n\n// `.passthrough()` so endpoints can return extra context (e.g. `currentDealKey`\n// on a 409 from /api/admin/coupons/apply) without each one needing its own\n// error schema. `code` is the conventional machine-readable discriminator.\nexport const ErrorSchema = z\n .object({\n error: z.string(),\n code: z.string().optional(),\n })\n .passthrough();\n\nexport type Error = z.infer<typeof ErrorSchema>;\n","import { z } from \"zod\";\n\nexport const UsageParams = z.object({\n from: z.coerce.date(),\n to: z.coerce.date(),\n});\nexport type UsageParams = z.infer<typeof UsageParams>;\n\nexport const UsageResult = z.object({\n cents: z.number(),\n});\nexport type UsageResult = z.infer<typeof UsageResult>;\n\nconst Window = z.enum([\"MINUTE\", \"HOUR\", \"DAY\"]);\n\n// const BooleanParam = z.preprocess((val) => (val === \"true\" ? true : false), z.boolean());\n\nexport const UsageSeriesParams = z.object({\n from: z.coerce.date(),\n to: z.coerce.date(),\n /** defaults to DAY */\n window: Window.optional(),\n timezone: z.string().optional(),\n //these don't work at the moment because you can't group by items that aren't defined in the meter group by\n // groupByEnvironmentType: BooleanParam.optional(),\n // groupByTaskIdentifier: BooleanParam.optional(),\n});\n\nexport type UsageSeriesParams = z.infer<typeof UsageSeriesParams>;\n\nexport const UsageSeriesResult = z.object({\n from: z.string(),\n to: z.string(),\n window: Window.optional(),\n data: z\n .object({\n value: z.number(),\n windowStart: z.string(),\n windowEnd: z.string(),\n //these don't work at the moment\n // groupBy: z\n // .object({\n // environmentType: z.string().optional(),\n // taskIdentifer: z.string().optional(),\n // })\n // .optional(),\n })\n .array(),\n});\n\nexport type UsageSeriesResult = z.infer<typeof UsageSeriesResult>;\n\nexport const ReportComputeUsageEvent = z.object({\n durationMs: z.number(),\n});\n\nexport type ReportComputeUsageEvent = z.infer<typeof ReportComputeUsageEvent>;\n\nexport const ReportUsagePlan = z.object({\n type: z.string(),\n code: z.string(),\n isPaying: z.boolean(),\n});\n\nexport type ReportUsagePlan = z.infer<typeof ReportUsagePlan>;\n\nexport const ReportUsageResult = z.object({\n hasAccess: z.boolean(),\n balance: z.number().optional(),\n usage: z.number().optional(),\n overage: z.number().optional(),\n plan: ReportUsagePlan.optional(),\n limitState: z.literal(\"grace\").optional(),\n reason: z.enum([\"free_tier_exceeded\", \"billing_limit\"]).optional(),\n});\n\nexport type ReportUsageResult = z.infer<typeof ReportUsageResult>;\n\n/** Upper bound for a single invocation base charge ($100). */\nexport const MAX_INVOCATION_COST_IN_CENTS = 10_000;\n\nexport const ReportInvocationUsageEvent = z.object({\n organizationId: z.string().min(1).max(128),\n costInCents: z.number().finite().min(0).max(MAX_INVOCATION_COST_IN_CENTS),\n additionalData: z.record(z.string(), z.any()).optional(),\n});\n\nexport type ReportInvocationUsageEvent = z.infer<typeof ReportInvocationUsageEvent>;\n\nexport const ReportInvocationUsageResult = z.discriminatedUnion(\"success\", [\n z.object({\n success: z.literal(true),\n }),\n z.object({\n success: z.literal(false),\n error: z.string(),\n }),\n]);\n","import { z } from \"zod\";\n\nconst BillingAlertDefinition = z.object({\n amount: z.number(),\n emails: z.array(z.string()),\n alertLevels: z.array(z.number()),\n});\n\nexport const BillingAlertsResult = BillingAlertDefinition;\n\nexport type BillingAlertsResult = z.infer<typeof BillingAlertsResult>;\n\nexport const UpdateBillingAlertsRequest = z.object({\n amount: z.number().positive(),\n emails: z.array(z.string()),\n alertLevels: z.array(z.number()),\n});\n\nexport type UpdateBillingAlertsRequest = z.infer<typeof UpdateBillingAlertsRequest>;\n","import { z } from \"zod\";\n\nexport const BillingLimitState = z.discriminatedUnion(\"status\", [\n z.object({\n status: z.literal(\"ok\"),\n }),\n z.object({\n status: z.literal(\"grace\"),\n hitAt: z.string(),\n graceEndsAt: z.string(),\n }),\n z.object({\n status: z.literal(\"rejected\"),\n hitAt: z.string(),\n graceEndsAt: z.string(),\n }),\n]);\n\nexport type BillingLimitState = z.infer<typeof BillingLimitState>;\n\nconst billingLimitConfiguredFields = {\n isConfigured: z.literal(true),\n cancelInProgressRuns: z.boolean(),\n limitState: BillingLimitState,\n effectiveAmountCents: z.number().int().nonnegative().nullable(),\n gracePeriodMs: z.number().int().nonnegative(),\n};\n\nexport const BillingLimitUnconfigured = z.object({\n isConfigured: z.literal(false),\n gracePeriodMs: z.number().int().nonnegative(),\n});\n\nexport const BillingLimitConfiguredNone = z.object({\n ...billingLimitConfiguredFields,\n mode: z.literal(\"none\"),\n});\n\nexport const BillingLimitConfiguredPlan = z.object({\n ...billingLimitConfiguredFields,\n mode: z.literal(\"plan\"),\n});\n\nexport const BillingLimitConfiguredCustom = z.object({\n ...billingLimitConfiguredFields,\n mode: z.literal(\"custom\"),\n amountCents: z.number().int().positive(),\n});\n\nexport const BillingLimitResult = z.union([\n BillingLimitUnconfigured,\n BillingLimitConfiguredNone,\n BillingLimitConfiguredPlan,\n BillingLimitConfiguredCustom,\n]);\n\nexport type BillingLimitResult = z.infer<typeof BillingLimitResult>;\n\nexport const UpdateBillingLimitRequest = z.discriminatedUnion(\"mode\", [\n z.object({\n mode: z.literal(\"none\"),\n cancelInProgressRuns: z.boolean(),\n }),\n z.object({\n mode: z.literal(\"plan\"),\n cancelInProgressRuns: z.boolean(),\n }),\n z.object({\n mode: z.literal(\"custom\"),\n amountCents: z.number().int().positive(),\n cancelInProgressRuns: z.boolean(),\n }),\n]);\n\nexport type UpdateBillingLimitRequest = z.infer<typeof UpdateBillingLimitRequest>;\n\nexport const ResolveBillingLimitRequest = z.discriminatedUnion(\"action\", [\n z.object({\n action: z.literal(\"increase\"),\n newAmountCents: z.number().int().positive(),\n resumeMode: z.enum([\"queue\", \"new_only\"]),\n }),\n z.object({\n action: z.literal(\"remove\"),\n resumeMode: z.enum([\"queue\", \"new_only\"]),\n }),\n]);\n\nexport type ResolveBillingLimitRequest = z.infer<typeof ResolveBillingLimitRequest>;\n\nexport const BillingLimitActiveOrg = z.object({\n orgId: z.string(),\n limitState: z.enum([\"grace\", \"rejected\"]),\n});\n\nexport const BillingLimitsActiveResult = z.object({\n orgs: z.array(BillingLimitActiveOrg),\n});\n\nexport type BillingLimitsActiveResult = z.infer<typeof BillingLimitsActiveResult>;\n\nexport const BillingLimitPendingResolveOrg = z.object({\n organizationId: z.string(),\n resumeMode: z.enum([\"queue\", \"new_only\"]),\n resolvedAt: z.string(),\n});\n\nexport const BillingLimitsPendingResolvesResult = z.object({\n orgs: z.array(BillingLimitPendingResolveOrg),\n});\n\nexport type BillingLimitsPendingResolvesResult = z.infer<typeof BillingLimitsPendingResolvesResult>;\n","import { z } from \"zod\";\n\nexport const RegistryCredentialsResponseSchema = z.object({\n username: z.string(),\n password: z.string(),\n expiresAt: z.string().datetime(),\n repositoryUri: z.string(),\n});\n\nexport type RegistryCredentialsResponse = z.infer<typeof RegistryCredentialsResponseSchema>;\n","import { z } from \"zod\";\n\nconst EnqueueBuildOptionsSchema = z.object({\n skipPromotion: z.boolean().optional(),\n configFilePath: z.string().optional(),\n // Pre-built bundle: the build server only runs the container build\n fromBundle: z.boolean().optional(),\n});\n\nexport const EnqueueBuildRequestSchema = z.union([\n z.object({\n deploymentId: z.string(),\n artifactKey: z.string(),\n options: EnqueueBuildOptionsSchema,\n }),\n // Build the deployment's commit from the project's connected GitHub repository.\n z.object({\n deploymentId: z.string(),\n github: z.object({\n commitSha: z.string().regex(/^[0-9a-f]{40}$/, \"commitSha must be a full lowercase git SHA\"),\n ref: z.string().min(1).max(255),\n }),\n options: EnqueueBuildOptionsSchema,\n }),\n]);\n\nexport type EnqueueBuildRequest = z.infer<typeof EnqueueBuildRequestSchema>;\n\nexport const EnqueueBuildResponseSchema = z.object({\n buildId: z.string(),\n});\n\nexport type EnqueueBuildResponse = z.infer<typeof EnqueueBuildResponseSchema>;\n\nexport const EnqueueBuildErrorCodeSchema = z.enum([\n \"DEPLOYMENT_NOT_PENDING\",\n \"NO_CONNECTED_REPOSITORY\",\n \"ATOMIC_PRODUCTION_REQUIRES_VERCEL\",\n \"COMMIT_NOT_FOUND\",\n \"GITHUB_UNAVAILABLE\",\n]);\n\nexport type EnqueueBuildErrorCode = z.infer<typeof EnqueueBuildErrorCodeSchema>;\n","import { z } from \"zod\";\n\nexport const TriggerInitialDeploymentRequestSchema = z.object({\n environment: z.enum([\"prod\", \"staging\", \"preview\"]),\n // Optional git branch whose HEAD to build. Absent = the repo's default branch\n // (preserves prior behaviour). Bound the new input before external requests and queueing.\n branch: z.string().min(1).max(255).optional(),\n});\n\nexport type TriggerInitialDeploymentRequest = z.infer<typeof TriggerInitialDeploymentRequestSchema>;\n\nexport const TriggerInitialDeploymentResponseSchema = z.object({\n ok: z.boolean(),\n});\n\nexport type TriggerInitialDeploymentResponse = z.infer<\n typeof TriggerInitialDeploymentResponseSchema\n>;\n","import { z } from \"zod\";\n\nexport const PrivateLinkConnectionStatus = z.enum([\n \"PENDING\",\n \"PROVISIONING\",\n \"ACTIVE\",\n \"ERROR\",\n \"DELETING\",\n]);\nexport type PrivateLinkConnectionStatus = z.infer<typeof PrivateLinkConnectionStatus>;\n\nexport const PrivateLinkConnection = z.object({\n id: z.string(),\n friendlyId: z.string(),\n name: z.string(),\n organizationId: z.string(),\n endpointServiceName: z.string(),\n targetRegion: z.string(),\n status: PrivateLinkConnectionStatus,\n statusMessage: z.string().nullable(),\n endpointDnsName: z.string().nullable(),\n endpointIps: z.array(z.string()).nullable(),\n provisionedAt: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type PrivateLinkConnection = z.infer<typeof PrivateLinkConnection>;\n\nexport const PrivateLinkConnectionList = z.object({\n connections: z.array(PrivateLinkConnection),\n});\nexport type PrivateLinkConnectionList = z.infer<typeof PrivateLinkConnectionList>;\n\nexport const CreatePrivateLinkConnectionBody = z.object({\n name: z\n .string()\n .min(1)\n .max(100)\n .regex(\n /^[a-zA-Z][a-zA-Z0-9 _-]*$/,\n \"Must start with a letter and contain only letters, numbers, spaces, hyphens, or underscores\"\n ),\n endpointServiceName: z\n .string()\n .regex(\n /^com\\.amazonaws\\.vpce\\..+\\.vpce-svc-.+$/,\n \"Must be a valid VPC Endpoint Service name (com.amazonaws.vpce.<region>.vpce-svc-*)\"\n ),\n // Region support is dynamic (driven by the billing service's env vars), so\n // this validates the AWS region *format* only; the authoritative check that\n // the region is actually configured happens server-side against the set of\n // regions discovered from env vars.\n targetRegion: z.string().regex(/^[a-z]{2}-[a-z]+-\\d+$/, \"Must be a valid AWS region\"),\n});\nexport type CreatePrivateLinkConnectionBody = z.infer<typeof CreatePrivateLinkConnectionBody>;\n\nexport const DeletePrivateLinkResult = z.object({\n success: z.boolean(),\n});\nexport type DeletePrivateLinkResult = z.infer<typeof DeletePrivateLinkResult>;\n\nexport const PrivateLinkRegionsResult = z.object({\n availableRegions: z.array(z.string()),\n activeRegions: z.array(z.string()),\n});\nexport type PrivateLinkRegionsResult = z.infer<typeof PrivateLinkRegionsResult>;\n","import { z } from \"zod\";\n\nexport const ValidatePromoCodeBodySchema = z.object({\n code: z.string(),\n});\nexport type ValidatePromoCodeBody = z.infer<typeof ValidatePromoCodeBodySchema>;\n\nexport const ValidatePromoCodeResult = z.object({\n valid: z.boolean(),\n amountInCents: z.number().optional(),\n expiresAt: z.string().datetime().nullable().optional(),\n});\nexport type ValidatePromoCodeResultType = z.infer<typeof ValidatePromoCodeResult>;\n\nexport const ApplyPromoCodeBodySchema = z.object({\n code: z.string(),\n userId: z.string(),\n});\nexport type ApplyPromoCodeBody = z.infer<typeof ApplyPromoCodeBodySchema>;\n\nexport const ApplyPromoCodeResult = z.object({\n applied: z.boolean(),\n amountInCents: z.number().optional(),\n expiresAt: z.string().datetime().nullable().optional(),\n // Present when applied is false, e.g. \"already_redeemed\" or \"invalid\".\n reason: z.string().optional(),\n});\nexport type ApplyPromoCodeResultType = z.infer<typeof ApplyPromoCodeResult>;\n\nexport const PromoCreditsResult = z.object({\n promoCredits: z\n .object({\n grantedCents: z.number(),\n remainingCents: z.number(),\n expiresAt: z.string().datetime().nullable(),\n })\n .nullable(),\n});\nexport type PromoCreditsResultType = z.infer<typeof PromoCreditsResult>;\n","import type { ZodType, z } from \"zod\";\nimport type {\n CustomerPortalRequestBody,\n ReportInvocationUsageEvent,\n SetPlanBody,\n UpdateBillingAlertsRequest,\n UpdateBillingLimitRequest,\n ResolveBillingLimitRequest,\n UsageParams,\n UsageSeriesParams,\n SetAddOnBody,\n EnqueueBuildRequest,\n TriggerInitialDeploymentRequest,\n CreatePrivateLinkConnectionBody,\n} from \"../schemas\";\nimport {\n BillingAlertsResult,\n BillingLimitResult,\n BillingLimitsActiveResult,\n CurrentPlan,\n CustomerPortalSchema,\n ErrorSchema,\n PlansResult,\n ReportInvocationUsageResult,\n ReportUsageResult,\n SubscribeResultSchema,\n CancelSubscriptionResponse,\n UsageResult,\n UsageSeriesResult,\n RegistryCredentialsResponseSchema,\n SetAddOnResult,\n EnqueueBuildResponseSchema,\n TriggerInitialDeploymentResponseSchema,\n PrivateLinkConnectionList,\n PrivateLinkConnection,\n DeletePrivateLinkResult,\n PrivateLinkRegionsResult,\n ValidatePromoCodeResult,\n ApplyPromoCodeResult,\n PromoCreditsResult,\n} from \"../schemas\";\n\ntype BillingClientConfig = {\n url: string;\n apiKey: string;\n};\n\ntype SuccessResult<TSchema extends ZodType> = {\n success: true;\n} & z.infer<TSchema>;\n\ntype ErrorResult = {\n success: false;\n error: string;\n code?: string;\n [key: string]: unknown;\n};\n\ntype Result<TSchema extends ZodType> = SuccessResult<TSchema> | ErrorResult;\n\nexport type PlansResponse = Result<typeof PlansResult>;\nexport type CurrentPlanResponse = Result<typeof CurrentPlan>;\nexport type SetPlanResponse = Result<typeof SubscribeResultSchema>;\nexport type CancelSubscriptionResult = Result<typeof CancelSubscriptionResponse>;\nexport type CustomerPortalResponse = Result<typeof CustomerPortalSchema>;\nexport type UsageResponse = Result<typeof UsageResult>;\nexport type UsageSeriesResponse = Result<typeof UsageSeriesResult>;\nexport type UsageInvocationReportResponse = Result<typeof ReportInvocationUsageResult>;\nexport type UsageEntitlementResponse = Result<typeof ReportUsageResult>;\nexport type BillingAlertsResponse = Result<typeof BillingAlertsResult>;\nexport type BillingLimitResponse = Result<typeof BillingLimitResult>;\nexport type BillingLimitsActiveResponse = Result<typeof BillingLimitsActiveResult>;\nexport type RegistryCredentialsResult = Result<typeof RegistryCredentialsResponseSchema>;\nexport type SetAddOnResponse = Result<typeof SetAddOnResult>;\nexport type EnqueueBuildResult = Result<typeof EnqueueBuildResponseSchema>;\nexport type PrivateLinkConnectionListResponse = Result<typeof PrivateLinkConnectionList>;\nexport type PrivateLinkConnectionResponse = Result<typeof PrivateLinkConnection>;\nexport type DeletePrivateLinkResponse = Result<typeof DeletePrivateLinkResult>;\nexport type PrivateLinkRegionsResponse = Result<typeof PrivateLinkRegionsResult>;\nexport type TriggerInitialDeploymentResult = Result<typeof TriggerInitialDeploymentResponseSchema>;\nexport type ValidatePromoCodeResponse = Result<typeof ValidatePromoCodeResult>;\nexport type ApplyPromoCodeResponse = Result<typeof ApplyPromoCodeResult>;\nexport type PromoCreditsResponse = Result<typeof PromoCreditsResult>;\n\nexport class BillingClient {\n constructor(private readonly config: BillingClientConfig) {}\n\n async plans(): Promise<PlansResponse> {\n return await this.fetch(`/api/v1/plans/v3`, PlansResult);\n }\n\n async currentPlan(orgId: string): Promise<CurrentPlanResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}`, CurrentPlan);\n }\n\n async usage(orgId: string, params: UsageParams): Promise<UsageResponse> {\n const search = objectToSearchParams(params);\n return await this.fetch(`/api/v1/orgs/${orgId}/usage?${search?.toString()}`, UsageResult);\n }\n\n async usageSeries(orgId: string, params: UsageSeriesParams): Promise<UsageSeriesResponse> {\n const search = objectToSearchParams(params);\n return await this.fetch(\n `/api/v1/orgs/${orgId}/usage/series?${search?.toString()}`,\n UsageSeriesResult\n );\n }\n\n async setPlan(orgId: string, body: SetPlanBody): Promise<SetPlanResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/v3/subscription`, SubscribeResultSchema, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async cancelSubscription(orgId: string): Promise<CancelSubscriptionResult> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/v3/subscription/cancel`,\n CancelSubscriptionResponse,\n { method: \"POST\" }\n );\n }\n\n async setAddOn(orgId: string, body: SetAddOnBody): Promise<SetAddOnResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/v3/subscription/addon`, SetAddOnResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async validatePromoCode(code: string): Promise<ValidatePromoCodeResponse> {\n return await this.fetch(`/api/v1/promo-codes/validate`, ValidatePromoCodeResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code }),\n });\n }\n\n async applyPromoCode(\n orgId: string,\n body: { code: string; userId: string }\n ): Promise<ApplyPromoCodeResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/promo/apply`, ApplyPromoCodeResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async promoCredits(orgId: string): Promise<PromoCreditsResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/promo/credits`, PromoCreditsResult);\n }\n\n async createPortalSession(\n orgId: string,\n body: CustomerPortalRequestBody\n ): Promise<CustomerPortalResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/v3/subscription/portal`, CustomerPortalSchema, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n /**\n *\n * @param event The data is in the body, not using a JWT\n * @returns details about usage\n */\n async reportInvocationUsage(\n event: ReportInvocationUsageEvent\n ): Promise<UsageInvocationReportResponse> {\n return await this.fetch(`/api/v1/usage/ingest/invocation`, ReportInvocationUsageResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(event),\n });\n }\n\n /**\n * Generates registry credentials for a project. This is used to push images to a project's container repository.\n *\n * @param projectId The ID of the project\n * @param region The region to generate credentials for\n * @returns The registry credentials\n */\n async generateRegistryCredentials(\n projectId: string,\n region: \"us-east-1\" | \"eu-central-1\"\n ): Promise<RegistryCredentialsResult> {\n return await this.fetch(\n `/api/v1/projects/${projectId}/generate-registry-credentials`,\n RegistryCredentialsResponseSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ region }),\n }\n );\n }\n\n /**\n * Enqueues a build for a project deployment.\n *\n * @param projectId The ID of the project\n * @param body The enqueue build request containing the deployment ID\n * @returns The build ID\n */\n async enqueueBuild(projectId: string, body: EnqueueBuildRequest): Promise<EnqueueBuildResult> {\n return await this.fetch(\n `/api/v1/projects/${projectId}/enqueue-build`,\n EnqueueBuildResponseSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n /**\n *\n * @param event The data is in the body, not using a JWT\n * @returns details about usage\n */\n async getEntitlement(orgId: string): Promise<UsageEntitlementResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/usage/entitlement`, ReportUsageResult);\n }\n\n async getBillingAlerts(orgId: string): Promise<BillingAlertsResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/billing-alerts`, BillingAlertsResult);\n }\n\n async updateBillingAlerts(\n orgId: string,\n body: UpdateBillingAlertsRequest\n ): Promise<BillingAlertsResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/billing-alerts`, BillingAlertsResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async getBillingLimit(orgId: string): Promise<BillingLimitResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/billing-limit`, BillingLimitResult);\n }\n\n async updateBillingLimit(\n orgId: string,\n body: UpdateBillingLimitRequest\n ): Promise<BillingLimitResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/billing-limit`, BillingLimitResult, {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async resolveBillingLimit(\n orgId: string,\n body: ResolveBillingLimitRequest\n ): Promise<BillingLimitResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/billing-limit/resolve`, BillingLimitResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async getActiveBillingLimits(): Promise<BillingLimitsActiveResponse> {\n return await this.fetch(`/api/v1/billing-limits/active`, BillingLimitsActiveResult);\n }\n\n async getPrivateLinks(orgId: string): Promise<PrivateLinkConnectionListResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/private-connections`, PrivateLinkConnectionList);\n }\n\n async createPrivateLink(\n orgId: string,\n body: CreatePrivateLinkConnectionBody\n ): Promise<PrivateLinkConnectionResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/private-connections`, PrivateLinkConnection, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async deletePrivateLink(orgId: string, connectionId: string): Promise<DeletePrivateLinkResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/private-connections/${connectionId}`,\n DeletePrivateLinkResult,\n {\n method: \"DELETE\",\n }\n );\n }\n\n async getPrivateLinkRegions(orgId: string): Promise<PrivateLinkRegionsResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/private-connections/regions`,\n PrivateLinkRegionsResult\n );\n }\n\n async triggerInitialDeployment(\n projectId: string,\n body: TriggerInitialDeploymentRequest\n ): Promise<TriggerInitialDeploymentResult> {\n return await this.fetch(\n `/api/v1/projects/${projectId}/initial-deployment`,\n TriggerInitialDeploymentResponseSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async fetch<TSchema extends ZodType = z.ZodTypeAny>(\n path: string,\n schema: TSchema,\n requestInit?: RequestInit\n ): Promise<Result<TSchema>> {\n const response = await fetch(`${this.config.url}${path}`, {\n ...requestInit,\n headers: {\n ...requestInit?.headers,\n Authorization: `Bearer ${this.config.apiKey}`,\n },\n });\n\n if (!response.ok) {\n // Error bodies should be { error: string } JSON, but anything in\n // the path (proxy 502 pages, runtime-thrown plain-text Responses)\n // can produce non-JSON. Never let the error path itself throw —\n // fall back to a synthetic status-code error the callers' string\n // matching treats as the generic case.\n let parsedError: z.infer<typeof ErrorSchema>;\n try {\n parsedError = ErrorSchema.parse(await response.json());\n } catch {\n parsedError = { error: `http_${response.status}` };\n }\n return {\n success: false,\n ...parsedError,\n };\n }\n\n const json = await response.json();\n // zod v4 types a generic schema's output as `unknown` (v3 gave `any`); intersect\n // with `object` so it remains spreadable while keeping its inferred shape.\n const parsed = schema.parse(json) as z.infer<TSchema> & object;\n return {\n success: true,\n ...parsed,\n };\n }\n}\n\nexport function objectToSearchParams(\n obj:\n | undefined\n | Record<\n string,\n string | string[] | number | number[] | boolean | boolean[] | Date | Date[] | undefined\n >\n): URLSearchParams | undefined {\n if (!obj) return undefined;\n\n const searchParams = new URLSearchParams();\n //for each item add to the search params, skip undefined and join arrays with commas\n Object.entries(obj).forEach(([key, value]) => {\n if (value === undefined) return;\n if (Array.isArray(value)) {\n const values = value.map((d) => {\n if (d instanceof Date) return d.toISOString();\n return d;\n });\n\n searchParams.append(key, values.join(\",\"));\n } else {\n const v = value instanceof Date ? value.toISOString() : value;\n searchParams.append(key, v.toString());\n }\n });\n\n return searchParams;\n}\n","import type { MachineDefinition } from \"./schemas\";\n\nexport type MachineDefinitionInput = {\n code: string;\n title: string;\n cpu: number;\n memory: number;\n centsPerVCpuSecond: number;\n centsPerGbRamSecond: number;\n};\n\nexport function machineDefinition({\n code,\n title,\n cpu,\n memory,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n}: MachineDefinitionInput): MachineDefinition {\n const centsPerSecond = cpu * centsPerVCpuSecond + memory * centsPerGbRamSecond;\n const centsPerMs = centsPerSecond / 1000;\n return {\n code,\n title,\n cpu,\n memory,\n centsPerMs,\n };\n}\n","import { machineDefinition } from \"./machineDefinition\";\n\nconst centsPerVCpuSecond = Number(process.env.CENTS_PER_VCPU_SECOND ?? 0);\nconst centsPerGbRamSecond = Number(process.env.CENTS_PER_GB_RAM_SECOND ?? 0);\n\nexport const machines = {\n micro: machineDefinition({\n code: \"micro\",\n title: \"Micro\",\n cpu: 0.25,\n memory: 0.25,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"small-1x\": machineDefinition({\n code: \"small-1x\",\n title: \"Small 1x\",\n cpu: 0.5,\n memory: 0.5,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"small-2x\": machineDefinition({\n code: \"small-2x\",\n title: \"Small 2x\",\n cpu: 1,\n memory: 1,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"medium-1x\": machineDefinition({\n code: \"medium-1x\",\n title: \"Medium 1x\",\n cpu: 1,\n memory: 2,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"medium-2x\": machineDefinition({\n code: \"medium-2x\",\n title: \"Medium 2x\",\n cpu: 2,\n memory: 4,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"large-1x\": machineDefinition({\n code: \"large-1x\",\n title: \"Large 1x\",\n cpu: 4,\n memory: 8,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"large-2x\": machineDefinition({\n code: \"large-2x\",\n title: \"Large 2x\",\n cpu: 8,\n memory: 16,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n};\n\nexport type MachineCode = keyof typeof machines;\n\nexport const defaultMachine: MachineCode = \"small-1x\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["z","z","z","z","z","z","z","z","z","z","z","z","z","z"],"sources":["../src/v3/schemas/planDefinitions.ts","../src/v3/schemas/subscription.ts","../src/v3/schemas/subscribe.ts","../src/v3/schemas/portal.ts","../src/v3/schemas/error.ts","../src/v3/schemas/usage.ts","../src/v3/schemas/billingAlerts.ts","../src/v3/schemas/billingLimit.ts","../src/v3/schemas/registryCredentials.ts","../src/v3/schemas/enqueueBuild.ts","../src/v3/schemas/initialDeployment.ts","../src/v3/schemas/privateLink.ts","../src/v3/schemas/promoCodes.ts","../src/v3/schemas/ipLocation.ts","../src/v3/client/index.ts","../src/v3/machineDefinition.ts","../src/v3/machinePresets.ts"],"sourcesContent":["import { z } from \"zod\";\n\nconst ExceedableLimit = z.object({\n number: z.number(),\n canExceed: z.boolean().optional(),\n});\n\nexport type ExceedableLimit = z.infer<typeof ExceedableLimit>;\n\nconst EnvironmentBasedLimit = z.object({\n production: z.number(),\n staging: z.number(),\n preview: z.number(),\n development: z.number(),\n canExceed: z.boolean().optional(),\n // Legacy, return the `production` value\n number: z.number(),\n});\nexport type EnvironmentBasedLimit = z.infer<typeof EnvironmentBasedLimit>;\n\nconst BatchRateLimitConfig = z.object({\n type: z.string(),\n interval: z.string(),\n maxTokens: z.number(),\n refillRate: z.number(),\n});\nexport type BatchRateLimitConfig = z.infer<typeof BatchRateLimitConfig>;\n\nconst BatchQueueConcurrencyConfig = z.object({\n processingConcurrency: z.number(),\n});\nexport type BatchQueueConcurrencyConfig = z.infer<typeof BatchQueueConcurrencyConfig>;\n\n/**\n * Hosted webhook limits, synced into Organization.webhookLimitsConfig on plan changes. The webapp\n * falls back to its env defaults for any field that isn't set.\n */\nconst WebhookLimitsConfig = z.object({\n maxWaitersPerEnvironment: z.number(),\n maxWaitersPerEndpoint: z.number(),\n concurrency: z.number(),\n deliveryRetentionDays: z.number(),\n deliveryRetentionStrict: z.boolean().optional(),\n endpointRateLimitTokens: z.number().optional(),\n endpointRateLimitWindowSeconds: z.number().optional(),\n environmentRateLimitTokens: z.number().optional(),\n environmentRateLimitWindowSeconds: z.number().optional(),\n});\nexport type WebhookLimitsConfig = z.infer<typeof WebhookLimitsConfig>;\n\nconst QueueSizeLimits = z.object({\n development: z.number(),\n deployed: z.number(),\n});\nexport type QueueSizeLimits = z.infer<typeof QueueSizeLimits>;\n\nconst Limits = z.object({\n includedUsage: z.number(),\n concurrentRuns: EnvironmentBasedLimit,\n teamMembers: ExceedableLimit,\n schedules: ExceedableLimit,\n logRetentionDays: ExceedableLimit,\n queryPeriodDays: ExceedableLimit,\n alerts: ExceedableLimit,\n hasStagingEnvironment: z.boolean(),\n realtimeConcurrentConnections: ExceedableLimit,\n branches: ExceedableLimit,\n branchesDev: ExceedableLimit,\n support: z.enum([\"community\", \"slack\"]),\n batchRateLimitConfig: BatchRateLimitConfig.optional(),\n batchQueueConcurrencyConfig: BatchQueueConcurrencyConfig.optional(),\n webhookLimitsConfig: WebhookLimitsConfig.optional(),\n metricDashboards: ExceedableLimit,\n metricWidgetsPerDashboard: ExceedableLimit,\n // Optional so an older webapp parsing a newer plan doesn't throw.\n // Absent = unlimited via the webapp's getLimit fallback.\n agentMessages: ExceedableLimit.optional(),\n agentWatchMaxHours: ExceedableLimit.optional(),\n agentWatchers: ExceedableLimit.optional(),\n declaredSchedulesPerDeploy: ExceedableLimit.optional(),\n queueSizeLimits: QueueSizeLimits.optional(),\n hasPrivateNetworking: z.boolean().optional(),\n privateLinkConnectionLimit: z.number().optional(),\n hasSso: z.boolean().optional(),\n // Duration string (e.g. \"30d\", \"1y\"). When set, the org gets a\n // dedicated S2 stream basin with this retention; when omitted, the\n // org's streams flow to the shared global basin.\n streamBasinRetention: z.string().optional(),\n});\n\nexport type Limits = z.infer<typeof Limits>;\n\nconst commonMetadata = {\n title: z.string(),\n code: z.string(),\n};\n\nconst pricingLookup = {\n tierPriceCode: z.string(),\n usagePriceCode: z.string(),\n usageCouponCode: z.string().optional(),\n};\nconst FreePlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"free\"),\n limits: Limits,\n});\nexport type FreePlanDefinition = z.infer<typeof FreePlanDefinition>;\n\nconst PaidPlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"paid\"),\n tierPrice: z.number(),\n stripe: z.object(pricingLookup),\n limits: Limits,\n});\nexport type PaidPlanDefinition = z.infer<typeof PaidPlanDefinition>;\n\nconst EnterprisePlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"enterprise\"),\n limits: Limits,\n});\nexport type EnterprisePlanDefinition = z.infer<typeof EnterprisePlanDefinition>;\n\nexport const PlanDefinitionSchema = z.discriminatedUnion(\"type\", [\n FreePlanDefinition,\n PaidPlanDefinition,\n EnterprisePlanDefinition,\n]);\nexport type PlanDefinition = z.infer<typeof PlanDefinitionSchema>;\n\nconst MachineDefinition = z.object({\n code: z.string(),\n title: z.string(),\n cpu: z.number(),\n memory: z.number(),\n centsPerMs: z.number(),\n});\n\nexport type MachineDefinition = z.infer<typeof MachineDefinition>;\n\nexport const Plans = z.object({\n free: FreePlanDefinition,\n hobby: PaidPlanDefinition,\n pro: PaidPlanDefinition,\n enterprise: EnterprisePlanDefinition,\n});\nexport type Plans = z.infer<typeof Plans>;\n\n/** The pricing per step of the add-on, e.g. $10 for 50 units */\nconst AddOnPricing = z.object({\n /** The step size - must purchase in multiples of this amount */\n stepSize: z.number(),\n /** Price per step in cents */\n centsPerStep: z.number(),\n});\nexport type AddOnPricing = z.infer<typeof AddOnPricing>;\n\nexport const PlansResult = z.object({\n plans: Plans,\n usagePricing: z.object({\n centsPerRunInvocation: z.number(),\n machines: z.record(z.string(), MachineDefinition),\n defaultMachine: z.string(),\n }),\n addOnPricing: z.object({\n concurrency: AddOnPricing,\n branches: AddOnPricing,\n seats: AddOnPricing,\n schedules: AddOnPricing,\n }),\n});\n\nexport type PlansResult = z.infer<typeof PlansResult>;\n\nexport const AddOnDefinition = z.object({\n code: z.enum([\"concurrency\", \"branches\", \"seats\", \"schedules\"]),\n priceCode: z.string(),\n pricing: AddOnPricing,\n});\n\nexport type AddOnDefinition = z.infer<typeof AddOnDefinition>;\n\nexport const AddOn = z.object({\n purchased: z.number(),\n quota: z.number().optional(),\n});\nexport type AddOn = z.infer<typeof AddOn>;\n\nexport const AddOns = z.object({\n concurrentRuns: AddOn.optional(),\n branches: AddOn.optional(),\n seats: AddOn.optional(),\n schedules: AddOn.optional(),\n});\nexport type AddOns = z.infer<typeof AddOns>;\n","import { z } from \"zod\";\nimport { AddOns, PlanDefinitionSchema } from \"./planDefinitions\";\n\nconst FreeTierStatus = z.enum([\"requires_connect\", \"approved\", \"rejected\"]);\nexport type FreeTierStatus = z.infer<typeof FreeTierStatus>;\n\nexport const SubscriptionResult = z.object({\n freeTierStatus: FreeTierStatus,\n isPaying: z.boolean(),\n showSelfServe: z.boolean().default(true),\n canceledAt: z.string().optional(),\n plan: PlanDefinitionSchema.optional(),\n addOns: AddOns.optional(),\n});\n\nexport type SubscriptionResult = z.infer<typeof SubscriptionResult>;\n\nexport const CurrentPlan = z.object({\n //todo remove this after the next deploy\n subscription: z.any(),\n v3Subscription: SubscriptionResult,\n});\n\nexport type CurrentPlan = z.infer<typeof CurrentPlan>;\n","import { z } from \"zod\";\n\nconst SetPaidPlanBodySchema = z.object({\n type: z.literal(\"paid\"),\n planCode: z.string(),\n userId: z.string(),\n});\n\nconst SetFreePlanBodySchema = z.object({\n type: z.literal(\"free\"),\n userId: z.string(),\n});\n\nexport const SetPlanBodySchema = z.discriminatedUnion(\"type\", [\n SetPaidPlanBodySchema,\n SetFreePlanBodySchema,\n]);\n\nexport type SetPlanBody = z.infer<typeof SetPlanBodySchema>;\n\nexport const FreeConnectRequiredSchema = z.object({\n action: z.literal(\"free_connect_required\"),\n connectUrl: z.string().url(),\n});\n\nexport type FreeConnectRequired = z.infer<typeof FreeConnectRequiredSchema>;\n\nexport const FreeConnectedSchema = z.object({\n action: z.literal(\"free_connected\"),\n accepted: z.boolean(),\n});\n\nexport type FreeConnected = z.infer<typeof FreeConnectedSchema>;\n\nconst UpdatedSubscriptionResultSchema = z.object({\n action: z.literal(\"updated_subscription\"),\n subscription: z.object({\n planCode: z.string(),\n }),\n});\n\nexport type UpdatedSubscriptionResult = z.infer<typeof UpdatedSubscriptionResultSchema>;\n\nconst CreateSubscriptionFlowStartSchema = z.object({\n action: z.literal(\"create_subscription_flow_start\"),\n subscription: z.object({\n planCode: z.string(),\n }),\n checkoutUrl: z.string().url(),\n});\n\nexport type CreateSubscriptionFlowStart = z.infer<typeof CreateSubscriptionFlowStartSchema>;\n\nconst CanceledSubscriptionResultSchema = z.object({\n action: z.literal(\"canceled_subscription\"),\n});\n\nexport type CanceledSubscriptionResult = z.infer<typeof CanceledSubscriptionResultSchema>;\n\nexport const SubscribeResultSchema = z.discriminatedUnion(\"action\", [\n FreeConnectRequiredSchema,\n FreeConnectedSchema,\n CreateSubscriptionFlowStartSchema,\n UpdatedSubscriptionResultSchema,\n CanceledSubscriptionResultSchema,\n]);\n\nexport type SubscribeResult = z.infer<typeof SubscribeResultSchema>;\n\nexport const SetAddOnBody = z.object({\n type: z.enum([\"concurrency\", \"branches\", \"seats\", \"schedules\"]),\n amount: z.number(),\n});\n\nexport type SetAddOnBody = z.infer<typeof SetAddOnBody>;\n\nexport const SetAddOnResult = z.discriminatedUnion(\"result\", [\n z.object({\n result: z.literal(\"error\"),\n error: z.string(),\n }),\n z.object({\n result: z.literal(\"success\"),\n type: z.string(),\n amount: z.number(),\n subscription: z.object({\n id: z.string(),\n }),\n }),\n z.object({\n result: z.literal(\"max_quota_reached\"),\n type: z.string(),\n maxQuota: z.number(),\n }),\n]);\n\nexport type SetAddOnResult = z.infer<typeof SetAddOnResult>;\n\nexport const CancelSubscriptionResponse = z.object({\n outcome: z.enum([\"canceled\", \"already_canceled\", \"no_subscription\"]),\n cancelAt: z.string().nullable(),\n});\n\nexport type CancelSubscriptionResponse = z.infer<typeof CancelSubscriptionResponse>;\n","import { z } from \"zod\";\n\nexport const CustomerPortalRequestBodySchema = z.object({\n returnUrl: z.string(),\n});\n\nexport type CustomerPortalRequestBody = z.infer<typeof CustomerPortalRequestBodySchema>;\n\nexport const CustomerPortalSchema = z.object({\n customerPortalUrl: z.string().optional(),\n});\n\nexport type CustomerPortal = z.infer<typeof CustomerPortalSchema>;\n","import { z } from \"zod\";\n\n// `.passthrough()` so endpoints can return extra context (e.g. `currentDealKey`\n// on a 409 from /api/admin/coupons/apply) without each one needing its own\n// error schema. `code` is the conventional machine-readable discriminator.\nexport const ErrorSchema = z\n .object({\n error: z.string(),\n code: z.string().optional(),\n })\n .passthrough();\n\nexport type Error = z.infer<typeof ErrorSchema>;\n","import { z } from \"zod\";\n\nexport const UsageParams = z.object({\n from: z.coerce.date(),\n to: z.coerce.date(),\n});\nexport type UsageParams = z.infer<typeof UsageParams>;\n\nexport const UsageResult = z.object({\n cents: z.number(),\n});\nexport type UsageResult = z.infer<typeof UsageResult>;\n\nconst Window = z.enum([\"MINUTE\", \"HOUR\", \"DAY\"]);\n\n// const BooleanParam = z.preprocess((val) => (val === \"true\" ? true : false), z.boolean());\n\nexport const UsageSeriesParams = z.object({\n from: z.coerce.date(),\n to: z.coerce.date(),\n /** defaults to DAY */\n window: Window.optional(),\n timezone: z.string().optional(),\n //these don't work at the moment because you can't group by items that aren't defined in the meter group by\n // groupByEnvironmentType: BooleanParam.optional(),\n // groupByTaskIdentifier: BooleanParam.optional(),\n});\n\nexport type UsageSeriesParams = z.infer<typeof UsageSeriesParams>;\n\nexport const UsageSeriesResult = z.object({\n from: z.string(),\n to: z.string(),\n window: Window.optional(),\n data: z\n .object({\n value: z.number(),\n windowStart: z.string(),\n windowEnd: z.string(),\n //these don't work at the moment\n // groupBy: z\n // .object({\n // environmentType: z.string().optional(),\n // taskIdentifer: z.string().optional(),\n // })\n // .optional(),\n })\n .array(),\n});\n\nexport type UsageSeriesResult = z.infer<typeof UsageSeriesResult>;\n\nexport const ReportComputeUsageEvent = z.object({\n durationMs: z.number(),\n});\n\nexport type ReportComputeUsageEvent = z.infer<typeof ReportComputeUsageEvent>;\n\nexport const ReportUsagePlan = z.object({\n type: z.string(),\n code: z.string(),\n isPaying: z.boolean(),\n});\n\nexport type ReportUsagePlan = z.infer<typeof ReportUsagePlan>;\n\nexport const ReportUsageResult = z.object({\n hasAccess: z.boolean(),\n balance: z.number().optional(),\n usage: z.number().optional(),\n overage: z.number().optional(),\n plan: ReportUsagePlan.optional(),\n limitState: z.literal(\"grace\").optional(),\n reason: z.enum([\"free_tier_exceeded\", \"billing_limit\"]).optional(),\n});\n\nexport type ReportUsageResult = z.infer<typeof ReportUsageResult>;\n\n/** Upper bound for a single invocation base charge ($100). */\nexport const MAX_INVOCATION_COST_IN_CENTS = 10_000;\n\nexport const ReportInvocationUsageEvent = z.object({\n organizationId: z.string().min(1).max(128),\n costInCents: z.number().finite().min(0).max(MAX_INVOCATION_COST_IN_CENTS),\n additionalData: z.record(z.string(), z.any()).optional(),\n});\n\nexport type ReportInvocationUsageEvent = z.infer<typeof ReportInvocationUsageEvent>;\n\nexport const ReportInvocationUsageResult = z.discriminatedUnion(\"success\", [\n z.object({\n success: z.literal(true),\n }),\n z.object({\n success: z.literal(false),\n error: z.string(),\n }),\n]);\n","import { z } from \"zod\";\n\nconst BillingAlertDefinition = z.object({\n amount: z.number(),\n emails: z.array(z.string()),\n alertLevels: z.array(z.number()),\n});\n\nexport const BillingAlertsResult = BillingAlertDefinition;\n\nexport type BillingAlertsResult = z.infer<typeof BillingAlertsResult>;\n\nexport const UpdateBillingAlertsRequest = z.object({\n amount: z.number().positive(),\n emails: z.array(z.string()),\n alertLevels: z.array(z.number()),\n});\n\nexport type UpdateBillingAlertsRequest = z.infer<typeof UpdateBillingAlertsRequest>;\n","import { z } from \"zod\";\n\nexport const BillingLimitState = z.discriminatedUnion(\"status\", [\n z.object({\n status: z.literal(\"ok\"),\n }),\n z.object({\n status: z.literal(\"grace\"),\n hitAt: z.string(),\n graceEndsAt: z.string(),\n }),\n z.object({\n status: z.literal(\"rejected\"),\n hitAt: z.string(),\n graceEndsAt: z.string(),\n }),\n]);\n\nexport type BillingLimitState = z.infer<typeof BillingLimitState>;\n\nconst billingLimitConfiguredFields = {\n isConfigured: z.literal(true),\n cancelInProgressRuns: z.boolean(),\n limitState: BillingLimitState,\n effectiveAmountCents: z.number().int().nonnegative().nullable(),\n gracePeriodMs: z.number().int().nonnegative(),\n};\n\nexport const BillingLimitUnconfigured = z.object({\n isConfigured: z.literal(false),\n gracePeriodMs: z.number().int().nonnegative(),\n});\n\nexport const BillingLimitConfiguredNone = z.object({\n ...billingLimitConfiguredFields,\n mode: z.literal(\"none\"),\n});\n\nexport const BillingLimitConfiguredPlan = z.object({\n ...billingLimitConfiguredFields,\n mode: z.literal(\"plan\"),\n});\n\nexport const BillingLimitConfiguredCustom = z.object({\n ...billingLimitConfiguredFields,\n mode: z.literal(\"custom\"),\n amountCents: z.number().int().positive(),\n});\n\nexport const BillingLimitResult = z.union([\n BillingLimitUnconfigured,\n BillingLimitConfiguredNone,\n BillingLimitConfiguredPlan,\n BillingLimitConfiguredCustom,\n]);\n\nexport type BillingLimitResult = z.infer<typeof BillingLimitResult>;\n\nexport const UpdateBillingLimitRequest = z.discriminatedUnion(\"mode\", [\n z.object({\n mode: z.literal(\"none\"),\n cancelInProgressRuns: z.boolean(),\n }),\n z.object({\n mode: z.literal(\"plan\"),\n cancelInProgressRuns: z.boolean(),\n }),\n z.object({\n mode: z.literal(\"custom\"),\n amountCents: z.number().int().positive(),\n cancelInProgressRuns: z.boolean(),\n }),\n]);\n\nexport type UpdateBillingLimitRequest = z.infer<typeof UpdateBillingLimitRequest>;\n\nexport const ResolveBillingLimitRequest = z.discriminatedUnion(\"action\", [\n z.object({\n action: z.literal(\"increase\"),\n newAmountCents: z.number().int().positive(),\n resumeMode: z.enum([\"queue\", \"new_only\"]),\n }),\n z.object({\n action: z.literal(\"remove\"),\n resumeMode: z.enum([\"queue\", \"new_only\"]),\n }),\n]);\n\nexport type ResolveBillingLimitRequest = z.infer<typeof ResolveBillingLimitRequest>;\n\nexport const BillingLimitActiveOrg = z.object({\n orgId: z.string(),\n limitState: z.enum([\"grace\", \"rejected\"]),\n});\n\nexport const BillingLimitsActiveResult = z.object({\n orgs: z.array(BillingLimitActiveOrg),\n});\n\nexport type BillingLimitsActiveResult = z.infer<typeof BillingLimitsActiveResult>;\n\nexport const BillingLimitPendingResolveOrg = z.object({\n organizationId: z.string(),\n resumeMode: z.enum([\"queue\", \"new_only\"]),\n resolvedAt: z.string(),\n});\n\nexport const BillingLimitsPendingResolvesResult = z.object({\n orgs: z.array(BillingLimitPendingResolveOrg),\n});\n\nexport type BillingLimitsPendingResolvesResult = z.infer<typeof BillingLimitsPendingResolvesResult>;\n","import { z } from \"zod\";\n\nexport const RegistryCredentialsResponseSchema = z.object({\n username: z.string(),\n password: z.string(),\n expiresAt: z.string().datetime(),\n repositoryUri: z.string(),\n});\n\nexport type RegistryCredentialsResponse = z.infer<typeof RegistryCredentialsResponseSchema>;\n","import { z } from \"zod\";\n\nconst EnqueueBuildOptionsSchema = z.object({\n skipPromotion: z.boolean().optional(),\n configFilePath: z.string().optional(),\n // Pre-built bundle: the build server only runs the container build\n fromBundle: z.boolean().optional(),\n});\n\nexport const EnqueueBuildRequestSchema = z.union([\n z.object({\n deploymentId: z.string(),\n artifactKey: z.string(),\n options: EnqueueBuildOptionsSchema,\n }),\n // Build the deployment's commit from the project's connected GitHub repository.\n z.object({\n deploymentId: z.string(),\n github: z.object({\n commitSha: z.string().regex(/^[0-9a-f]{40}$/, \"commitSha must be a full lowercase git SHA\"),\n ref: z.string().min(1).max(255),\n }),\n options: EnqueueBuildOptionsSchema,\n }),\n]);\n\nexport type EnqueueBuildRequest = z.infer<typeof EnqueueBuildRequestSchema>;\n\nexport const EnqueueBuildResponseSchema = z.object({\n buildId: z.string(),\n});\n\nexport type EnqueueBuildResponse = z.infer<typeof EnqueueBuildResponseSchema>;\n\nexport const EnqueueBuildErrorCodeSchema = z.enum([\n \"DEPLOYMENT_NOT_PENDING\",\n \"NO_CONNECTED_REPOSITORY\",\n \"ATOMIC_PRODUCTION_REQUIRES_VERCEL\",\n \"COMMIT_NOT_FOUND\",\n \"GITHUB_UNAVAILABLE\",\n]);\n\nexport type EnqueueBuildErrorCode = z.infer<typeof EnqueueBuildErrorCodeSchema>;\n","import { z } from \"zod\";\n\nexport const TriggerInitialDeploymentRequestSchema = z.object({\n environment: z.enum([\"prod\", \"staging\", \"preview\"]),\n // Optional git branch whose HEAD to build. Absent = the repo's default branch\n // (preserves prior behaviour). Bound the new input before external requests and queueing.\n branch: z.string().min(1).max(255).optional(),\n});\n\nexport type TriggerInitialDeploymentRequest = z.infer<typeof TriggerInitialDeploymentRequestSchema>;\n\nexport const TriggerInitialDeploymentResponseSchema = z.object({\n ok: z.boolean(),\n});\n\nexport type TriggerInitialDeploymentResponse = z.infer<\n typeof TriggerInitialDeploymentResponseSchema\n>;\n","import { z } from \"zod\";\n\nexport const PrivateLinkConnectionStatus = z.enum([\n \"PENDING\",\n \"PROVISIONING\",\n \"ACTIVE\",\n \"ERROR\",\n \"DELETING\",\n]);\nexport type PrivateLinkConnectionStatus = z.infer<typeof PrivateLinkConnectionStatus>;\n\nexport const PrivateLinkConnection = z.object({\n id: z.string(),\n friendlyId: z.string(),\n name: z.string(),\n organizationId: z.string(),\n endpointServiceName: z.string(),\n targetRegion: z.string(),\n status: PrivateLinkConnectionStatus,\n statusMessage: z.string().nullable(),\n endpointDnsName: z.string().nullable(),\n endpointIps: z.array(z.string()).nullable(),\n provisionedAt: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type PrivateLinkConnection = z.infer<typeof PrivateLinkConnection>;\n\nexport const PrivateLinkConnectionList = z.object({\n connections: z.array(PrivateLinkConnection),\n});\nexport type PrivateLinkConnectionList = z.infer<typeof PrivateLinkConnectionList>;\n\nexport const CreatePrivateLinkConnectionBody = z.object({\n name: z\n .string()\n .min(1)\n .max(100)\n .regex(\n /^[a-zA-Z][a-zA-Z0-9 _-]*$/,\n \"Must start with a letter and contain only letters, numbers, spaces, hyphens, or underscores\"\n ),\n endpointServiceName: z\n .string()\n .regex(\n /^com\\.amazonaws\\.vpce\\..+\\.vpce-svc-.+$/,\n \"Must be a valid VPC Endpoint Service name (com.amazonaws.vpce.<region>.vpce-svc-*)\"\n ),\n // Region support is dynamic (driven by the billing service's env vars), so\n // this validates the AWS region *format* only; the authoritative check that\n // the region is actually configured happens server-side against the set of\n // regions discovered from env vars.\n targetRegion: z.string().regex(/^[a-z]{2}-[a-z]+-\\d+$/, \"Must be a valid AWS region\"),\n});\nexport type CreatePrivateLinkConnectionBody = z.infer<typeof CreatePrivateLinkConnectionBody>;\n\nexport const DeletePrivateLinkResult = z.object({\n success: z.boolean(),\n});\nexport type DeletePrivateLinkResult = z.infer<typeof DeletePrivateLinkResult>;\n\nexport const PrivateLinkRegionsResult = z.object({\n availableRegions: z.array(z.string()),\n activeRegions: z.array(z.string()),\n});\nexport type PrivateLinkRegionsResult = z.infer<typeof PrivateLinkRegionsResult>;\n","import { z } from \"zod\";\n\nexport const ValidatePromoCodeBodySchema = z.object({\n code: z.string(),\n});\nexport type ValidatePromoCodeBody = z.infer<typeof ValidatePromoCodeBodySchema>;\n\nexport const ValidatePromoCodeResult = z.object({\n valid: z.boolean(),\n amountInCents: z.number().optional(),\n expiresAt: z.string().datetime().nullable().optional(),\n});\nexport type ValidatePromoCodeResultType = z.infer<typeof ValidatePromoCodeResult>;\n\nexport const ApplyPromoCodeBodySchema = z.object({\n code: z.string(),\n userId: z.string(),\n});\nexport type ApplyPromoCodeBody = z.infer<typeof ApplyPromoCodeBodySchema>;\n\nexport const ApplyPromoCodeResult = z.object({\n applied: z.boolean(),\n amountInCents: z.number().optional(),\n expiresAt: z.string().datetime().nullable().optional(),\n // Present when applied is false, e.g. \"already_redeemed\" or \"invalid\".\n reason: z.string().optional(),\n});\nexport type ApplyPromoCodeResultType = z.infer<typeof ApplyPromoCodeResult>;\n\nexport const PromoCreditsResult = z.object({\n promoCredits: z\n .object({\n grantedCents: z.number(),\n remainingCents: z.number(),\n expiresAt: z.string().datetime().nullable(),\n })\n .nullable(),\n});\nexport type PromoCreditsResultType = z.infer<typeof PromoCreditsResult>;\n","import { z } from \"zod\";\n\n/** Approximate country and network owner of an IPv4 address, from the IPinfo Lite dataset. */\nexport const IpLocation = z.object({\n country: z.string().nullable(),\n countryCode: z.string().nullable(),\n asn: z.number().int().nullable(),\n asName: z.string().nullable(),\n});\n\nexport type IpLocation = z.infer<typeof IpLocation>;\n\nexport const IpLocationResult = z.object({\n location: IpLocation.nullable(),\n});\n\nexport type IpLocationResultBody = z.infer<typeof IpLocationResult>;\n","import type { ZodType, z } from \"zod\";\nimport type {\n CustomerPortalRequestBody,\n ReportInvocationUsageEvent,\n SetPlanBody,\n UpdateBillingAlertsRequest,\n UpdateBillingLimitRequest,\n ResolveBillingLimitRequest,\n UsageParams,\n UsageSeriesParams,\n SetAddOnBody,\n EnqueueBuildRequest,\n TriggerInitialDeploymentRequest,\n CreatePrivateLinkConnectionBody,\n} from \"../schemas\";\nimport {\n BillingAlertsResult,\n BillingLimitResult,\n BillingLimitsActiveResult,\n IpLocationResult,\n CurrentPlan,\n CustomerPortalSchema,\n ErrorSchema,\n PlansResult,\n ReportInvocationUsageResult,\n ReportUsageResult,\n SubscribeResultSchema,\n CancelSubscriptionResponse,\n UsageResult,\n UsageSeriesResult,\n RegistryCredentialsResponseSchema,\n SetAddOnResult,\n EnqueueBuildResponseSchema,\n TriggerInitialDeploymentResponseSchema,\n PrivateLinkConnectionList,\n PrivateLinkConnection,\n DeletePrivateLinkResult,\n PrivateLinkRegionsResult,\n ValidatePromoCodeResult,\n ApplyPromoCodeResult,\n PromoCreditsResult,\n} from \"../schemas\";\n\ntype BillingClientConfig = {\n url: string;\n apiKey: string;\n};\n\ntype SuccessResult<TSchema extends ZodType> = {\n success: true;\n} & z.infer<TSchema>;\n\ntype ErrorResult = {\n success: false;\n error: string;\n code?: string;\n [key: string]: unknown;\n};\n\ntype Result<TSchema extends ZodType> = SuccessResult<TSchema> | ErrorResult;\n\nexport type PlansResponse = Result<typeof PlansResult>;\nexport type CurrentPlanResponse = Result<typeof CurrentPlan>;\nexport type SetPlanResponse = Result<typeof SubscribeResultSchema>;\nexport type CancelSubscriptionResult = Result<typeof CancelSubscriptionResponse>;\nexport type CustomerPortalResponse = Result<typeof CustomerPortalSchema>;\nexport type UsageResponse = Result<typeof UsageResult>;\nexport type UsageSeriesResponse = Result<typeof UsageSeriesResult>;\nexport type UsageInvocationReportResponse = Result<typeof ReportInvocationUsageResult>;\nexport type UsageEntitlementResponse = Result<typeof ReportUsageResult>;\nexport type BillingAlertsResponse = Result<typeof BillingAlertsResult>;\nexport type BillingLimitResponse = Result<typeof BillingLimitResult>;\nexport type BillingLimitsActiveResponse = Result<typeof BillingLimitsActiveResult>;\nexport type IpLocationResponse = Result<typeof IpLocationResult>;\nexport type RegistryCredentialsResult = Result<typeof RegistryCredentialsResponseSchema>;\nexport type SetAddOnResponse = Result<typeof SetAddOnResult>;\nexport type EnqueueBuildResult = Result<typeof EnqueueBuildResponseSchema>;\nexport type PrivateLinkConnectionListResponse = Result<typeof PrivateLinkConnectionList>;\nexport type PrivateLinkConnectionResponse = Result<typeof PrivateLinkConnection>;\nexport type DeletePrivateLinkResponse = Result<typeof DeletePrivateLinkResult>;\nexport type PrivateLinkRegionsResponse = Result<typeof PrivateLinkRegionsResult>;\nexport type TriggerInitialDeploymentResult = Result<typeof TriggerInitialDeploymentResponseSchema>;\nexport type ValidatePromoCodeResponse = Result<typeof ValidatePromoCodeResult>;\nexport type ApplyPromoCodeResponse = Result<typeof ApplyPromoCodeResult>;\nexport type PromoCreditsResponse = Result<typeof PromoCreditsResult>;\n\nexport class BillingClient {\n constructor(private readonly config: BillingClientConfig) {}\n\n async plans(): Promise<PlansResponse> {\n return await this.fetch(`/api/v1/plans/v3`, PlansResult);\n }\n\n async currentPlan(orgId: string): Promise<CurrentPlanResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}`, CurrentPlan);\n }\n\n async usage(orgId: string, params: UsageParams): Promise<UsageResponse> {\n const search = objectToSearchParams(params);\n return await this.fetch(`/api/v1/orgs/${orgId}/usage?${search?.toString()}`, UsageResult);\n }\n\n async usageSeries(orgId: string, params: UsageSeriesParams): Promise<UsageSeriesResponse> {\n const search = objectToSearchParams(params);\n return await this.fetch(\n `/api/v1/orgs/${orgId}/usage/series?${search?.toString()}`,\n UsageSeriesResult\n );\n }\n\n async setPlan(orgId: string, body: SetPlanBody): Promise<SetPlanResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/v3/subscription`, SubscribeResultSchema, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async cancelSubscription(orgId: string): Promise<CancelSubscriptionResult> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/v3/subscription/cancel`,\n CancelSubscriptionResponse,\n { method: \"POST\" }\n );\n }\n\n async setAddOn(orgId: string, body: SetAddOnBody): Promise<SetAddOnResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/v3/subscription/addon`, SetAddOnResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async validatePromoCode(code: string): Promise<ValidatePromoCodeResponse> {\n return await this.fetch(`/api/v1/promo-codes/validate`, ValidatePromoCodeResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code }),\n });\n }\n\n async applyPromoCode(\n orgId: string,\n body: { code: string; userId: string }\n ): Promise<ApplyPromoCodeResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/promo/apply`, ApplyPromoCodeResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async promoCredits(orgId: string): Promise<PromoCreditsResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/promo/credits`, PromoCreditsResult);\n }\n\n async createPortalSession(\n orgId: string,\n body: CustomerPortalRequestBody\n ): Promise<CustomerPortalResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/v3/subscription/portal`, CustomerPortalSchema, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n /**\n *\n * @param event The data is in the body, not using a JWT\n * @returns details about usage\n */\n async reportInvocationUsage(\n event: ReportInvocationUsageEvent\n ): Promise<UsageInvocationReportResponse> {\n return await this.fetch(`/api/v1/usage/ingest/invocation`, ReportInvocationUsageResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(event),\n });\n }\n\n /**\n * Generates registry credentials for a project. This is used to push images to a project's container repository.\n *\n * @param projectId The ID of the project\n * @param region The region to generate credentials for\n * @returns The registry credentials\n */\n async generateRegistryCredentials(\n projectId: string,\n region: \"us-east-1\" | \"eu-central-1\"\n ): Promise<RegistryCredentialsResult> {\n return await this.fetch(\n `/api/v1/projects/${projectId}/generate-registry-credentials`,\n RegistryCredentialsResponseSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ region }),\n }\n );\n }\n\n /**\n * Enqueues a build for a project deployment.\n *\n * @param projectId The ID of the project\n * @param body The enqueue build request containing the deployment ID\n * @returns The build ID\n */\n async enqueueBuild(projectId: string, body: EnqueueBuildRequest): Promise<EnqueueBuildResult> {\n return await this.fetch(\n `/api/v1/projects/${projectId}/enqueue-build`,\n EnqueueBuildResponseSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n /**\n *\n * @param event The data is in the body, not using a JWT\n * @returns details about usage\n */\n async getEntitlement(orgId: string): Promise<UsageEntitlementResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/usage/entitlement`, ReportUsageResult);\n }\n\n async getBillingAlerts(orgId: string): Promise<BillingAlertsResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/billing-alerts`, BillingAlertsResult);\n }\n\n async updateBillingAlerts(\n orgId: string,\n body: UpdateBillingAlertsRequest\n ): Promise<BillingAlertsResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/billing-alerts`, BillingAlertsResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async getBillingLimit(orgId: string): Promise<BillingLimitResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/billing-limit`, BillingLimitResult);\n }\n\n async updateBillingLimit(\n orgId: string,\n body: UpdateBillingLimitRequest\n ): Promise<BillingLimitResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/billing-limit`, BillingLimitResult, {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async resolveBillingLimit(\n orgId: string,\n body: ResolveBillingLimitRequest\n ): Promise<BillingLimitResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/billing-limit/resolve`, BillingLimitResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async getActiveBillingLimits(): Promise<BillingLimitsActiveResponse> {\n return await this.fetch(`/api/v1/billing-limits/active`, BillingLimitsActiveResult);\n }\n\n /** Approximate country and network owner of an IP address. `location` is null when unknown. */\n async getIpLocation(ip: string): Promise<IpLocationResponse> {\n return await this.fetch(`/api/v1/ip-location?ip=${encodeURIComponent(ip)}`, IpLocationResult);\n }\n\n async getPrivateLinks(orgId: string): Promise<PrivateLinkConnectionListResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/private-connections`, PrivateLinkConnectionList);\n }\n\n async createPrivateLink(\n orgId: string,\n body: CreatePrivateLinkConnectionBody\n ): Promise<PrivateLinkConnectionResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/private-connections`, PrivateLinkConnection, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async deletePrivateLink(orgId: string, connectionId: string): Promise<DeletePrivateLinkResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/private-connections/${connectionId}`,\n DeletePrivateLinkResult,\n {\n method: \"DELETE\",\n }\n );\n }\n\n async getPrivateLinkRegions(orgId: string): Promise<PrivateLinkRegionsResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/private-connections/regions`,\n PrivateLinkRegionsResult\n );\n }\n\n async triggerInitialDeployment(\n projectId: string,\n body: TriggerInitialDeploymentRequest\n ): Promise<TriggerInitialDeploymentResult> {\n return await this.fetch(\n `/api/v1/projects/${projectId}/initial-deployment`,\n TriggerInitialDeploymentResponseSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async fetch<TSchema extends ZodType = z.ZodTypeAny>(\n path: string,\n schema: TSchema,\n requestInit?: RequestInit\n ): Promise<Result<TSchema>> {\n const response = await fetch(`${this.config.url}${path}`, {\n ...requestInit,\n headers: {\n ...requestInit?.headers,\n Authorization: `Bearer ${this.config.apiKey}`,\n },\n });\n\n if (!response.ok) {\n // Error bodies should be { error: string } JSON, but anything in\n // the path (proxy 502 pages, runtime-thrown plain-text Responses)\n // can produce non-JSON. Never let the error path itself throw —\n // fall back to a synthetic status-code error the callers' string\n // matching treats as the generic case.\n let parsedError: z.infer<typeof ErrorSchema>;\n try {\n parsedError = ErrorSchema.parse(await response.json());\n } catch {\n parsedError = { error: `http_${response.status}` };\n }\n return {\n success: false,\n ...parsedError,\n };\n }\n\n const json = await response.json();\n // zod v4 types a generic schema's output as `unknown` (v3 gave `any`); intersect\n // with `object` so it remains spreadable while keeping its inferred shape.\n const parsed = schema.parse(json) as z.infer<TSchema> & object;\n return {\n success: true,\n ...parsed,\n };\n }\n}\n\nexport function objectToSearchParams(\n obj:\n | undefined\n | Record<\n string,\n string | string[] | number | number[] | boolean | boolean[] | Date | Date[] | undefined\n >\n): URLSearchParams | undefined {\n if (!obj) return undefined;\n\n const searchParams = new URLSearchParams();\n //for each item add to the search params, skip undefined and join arrays with commas\n Object.entries(obj).forEach(([key, value]) => {\n if (value === undefined) return;\n if (Array.isArray(value)) {\n const values = value.map((d) => {\n if (d instanceof Date) return d.toISOString();\n return d;\n });\n\n searchParams.append(key, values.join(\",\"));\n } else {\n const v = value instanceof Date ? value.toISOString() : value;\n searchParams.append(key, v.toString());\n }\n });\n\n return searchParams;\n}\n","import type { MachineDefinition } from \"./schemas\";\n\nexport type MachineDefinitionInput = {\n code: string;\n title: string;\n cpu: number;\n memory: number;\n centsPerVCpuSecond: number;\n centsPerGbRamSecond: number;\n};\n\nexport function machineDefinition({\n code,\n title,\n cpu,\n memory,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n}: MachineDefinitionInput): MachineDefinition {\n const centsPerSecond = cpu * centsPerVCpuSecond + memory * centsPerGbRamSecond;\n const centsPerMs = centsPerSecond / 1000;\n return {\n code,\n title,\n cpu,\n memory,\n centsPerMs,\n };\n}\n","import { machineDefinition } from \"./machineDefinition\";\n\nconst centsPerVCpuSecond = Number(process.env.CENTS_PER_VCPU_SECOND ?? 0);\nconst centsPerGbRamSecond = Number(process.env.CENTS_PER_GB_RAM_SECOND ?? 0);\n\nexport const machines = {\n micro: machineDefinition({\n code: \"micro\",\n title: \"Micro\",\n cpu: 0.25,\n memory: 0.25,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"small-1x\": machineDefinition({\n code: \"small-1x\",\n title: \"Small 1x\",\n cpu: 0.5,\n memory: 0.5,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"small-2x\": machineDefinition({\n code: \"small-2x\",\n title: \"Small 2x\",\n cpu: 1,\n memory: 1,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"medium-1x\": machineDefinition({\n code: \"medium-1x\",\n title: \"Medium 1x\",\n cpu: 1,\n memory: 2,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"medium-2x\": machineDefinition({\n code: \"medium-2x\",\n title: \"Medium 2x\",\n cpu: 2,\n memory: 4,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"large-1x\": machineDefinition({\n code: \"large-1x\",\n title: \"Large 1x\",\n cpu: 4,\n memory: 8,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"large-2x\": machineDefinition({\n code: \"large-2x\",\n title: \"Large 2x\",\n cpu: 8,\n memory: 16,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n};\n\nexport type MachineCode = keyof typeof machines;\n\nexport const defaultMachine: MachineCode = \"small-1x\";\n"],"mappings":"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"}
package/dist/index.d.cts CHANGED
@@ -3012,6 +3012,25 @@ declare const PromoCreditsResult: z.ZodObject<{
3012
3012
  }, z.core.$strip>;
3013
3013
  type PromoCreditsResultType = z.infer<typeof PromoCreditsResult>;
3014
3014
  //#endregion
3015
+ //#region src/v3/schemas/ipLocation.d.ts
3016
+ /** Approximate country and network owner of an IPv4 address, from the IPinfo Lite dataset. */
3017
+ declare const IpLocation: z.ZodObject<{
3018
+ country: z.ZodNullable<z.ZodString>;
3019
+ countryCode: z.ZodNullable<z.ZodString>;
3020
+ asn: z.ZodNullable<z.ZodNumber>;
3021
+ asName: z.ZodNullable<z.ZodString>;
3022
+ }, z.core.$strip>;
3023
+ type IpLocation = z.infer<typeof IpLocation>;
3024
+ declare const IpLocationResult: z.ZodObject<{
3025
+ location: z.ZodNullable<z.ZodObject<{
3026
+ country: z.ZodNullable<z.ZodString>;
3027
+ countryCode: z.ZodNullable<z.ZodString>;
3028
+ asn: z.ZodNullable<z.ZodNumber>;
3029
+ asName: z.ZodNullable<z.ZodString>;
3030
+ }, z.core.$strip>>;
3031
+ }, z.core.$strip>;
3032
+ type IpLocationResultBody = z.infer<typeof IpLocationResult>;
3033
+ //#endregion
3015
3034
  //#region src/v3/client/index.d.ts
3016
3035
  type BillingClientConfig = {
3017
3036
  url: string;
@@ -3039,6 +3058,7 @@ type UsageEntitlementResponse = Result<typeof ReportUsageResult>;
3039
3058
  type BillingAlertsResponse = Result<typeof BillingAlertsResult>;
3040
3059
  type BillingLimitResponse = Result<typeof BillingLimitResult>;
3041
3060
  type BillingLimitsActiveResponse = Result<typeof BillingLimitsActiveResult>;
3061
+ type IpLocationResponse = Result<typeof IpLocationResult>;
3042
3062
  type RegistryCredentialsResult = Result<typeof RegistryCredentialsResponseSchema>;
3043
3063
  type SetAddOnResponse = Result<typeof SetAddOnResult>;
3044
3064
  type EnqueueBuildResult = Result<typeof EnqueueBuildResponseSchema>;
@@ -3101,6 +3121,8 @@ declare class BillingClient {
3101
3121
  updateBillingLimit(orgId: string, body: UpdateBillingLimitRequest): Promise<BillingLimitResponse>;
3102
3122
  resolveBillingLimit(orgId: string, body: ResolveBillingLimitRequest): Promise<BillingLimitResponse>;
3103
3123
  getActiveBillingLimits(): Promise<BillingLimitsActiveResponse>;
3124
+ /** Approximate country and network owner of an IP address. `location` is null when unknown. */
3125
+ getIpLocation(ip: string): Promise<IpLocationResponse>;
3104
3126
  getPrivateLinks(orgId: string): Promise<PrivateLinkConnectionListResponse>;
3105
3127
  createPrivateLink(orgId: string, body: CreatePrivateLinkConnectionBody): Promise<PrivateLinkConnectionResponse>;
3106
3128
  deletePrivateLink(orgId: string, connectionId: string): Promise<DeletePrivateLinkResponse>;
@@ -3176,4 +3198,4 @@ declare const machines: {
3176
3198
  type MachineCode = keyof typeof machines;
3177
3199
  declare const defaultMachine: MachineCode;
3178
3200
  //#endregion
3179
- export { AddOn, AddOnDefinition, AddOnPricing, AddOns, ApplyPromoCodeBody, ApplyPromoCodeBodySchema, ApplyPromoCodeResponse, ApplyPromoCodeResult, ApplyPromoCodeResultType, BatchQueueConcurrencyConfig, BatchRateLimitConfig, BillingAlertsResponse, BillingAlertsResult, BillingClient, BillingLimitActiveOrg, BillingLimitConfiguredCustom, BillingLimitConfiguredNone, BillingLimitConfiguredPlan, BillingLimitPendingResolveOrg, BillingLimitResponse, BillingLimitResult, BillingLimitState, BillingLimitUnconfigured, BillingLimitsActiveResponse, BillingLimitsActiveResult, BillingLimitsPendingResolvesResult, CancelSubscriptionResponse, CancelSubscriptionResult, CanceledSubscriptionResult, CreatePrivateLinkConnectionBody, CreateSubscriptionFlowStart, CurrentPlan, CurrentPlanResponse, CustomerPortal, CustomerPortalRequestBody, CustomerPortalRequestBodySchema, CustomerPortalResponse, CustomerPortalSchema, DeletePrivateLinkResponse, DeletePrivateLinkResult, EnqueueBuildErrorCode, EnqueueBuildErrorCodeSchema, EnqueueBuildRequest, EnqueueBuildRequestSchema, EnqueueBuildResponse, EnqueueBuildResponseSchema, EnqueueBuildResult, EnterprisePlanDefinition, EnvironmentBasedLimit, Error, ErrorSchema, ExceedableLimit, FreeConnectRequired, FreeConnectRequiredSchema, FreeConnected, FreeConnectedSchema, FreePlanDefinition, FreeTierStatus, Limits, MAX_INVOCATION_COST_IN_CENTS, MachineCode, MachineDefinition, MachineDefinitionInput, PaidPlanDefinition, PlanDefinition, PlanDefinitionSchema, Plans, PlansResponse, PlansResult, PrivateLinkConnection, PrivateLinkConnectionList, PrivateLinkConnectionListResponse, PrivateLinkConnectionResponse, PrivateLinkConnectionStatus, PrivateLinkRegionsResponse, PrivateLinkRegionsResult, PromoCreditsResponse, PromoCreditsResult, PromoCreditsResultType, QueueSizeLimits, RegistryCredentialsResponse, RegistryCredentialsResponseSchema, RegistryCredentialsResult, ReportComputeUsageEvent, ReportInvocationUsageEvent, ReportInvocationUsageResult, ReportUsagePlan, ReportUsageResult, ResolveBillingLimitRequest, SetAddOnBody, SetAddOnResponse, SetAddOnResult, SetPlanBody, SetPlanBodySchema, SetPlanResponse, SubscribeResult, SubscribeResultSchema, SubscriptionResult, TriggerInitialDeploymentRequest, TriggerInitialDeploymentRequestSchema, TriggerInitialDeploymentResponse, TriggerInitialDeploymentResponseSchema, TriggerInitialDeploymentResult, UpdateBillingAlertsRequest, UpdateBillingLimitRequest, UpdatedSubscriptionResult, UsageEntitlementResponse, UsageInvocationReportResponse, UsageParams, UsageResponse, UsageResult, UsageSeriesParams, UsageSeriesResponse, UsageSeriesResult, ValidatePromoCodeBody, ValidatePromoCodeBodySchema, ValidatePromoCodeResponse, ValidatePromoCodeResult, ValidatePromoCodeResultType, WebhookLimitsConfig, defaultMachine, machineDefinition, machines, objectToSearchParams };
3201
+ export { AddOn, AddOnDefinition, AddOnPricing, AddOns, ApplyPromoCodeBody, ApplyPromoCodeBodySchema, ApplyPromoCodeResponse, ApplyPromoCodeResult, ApplyPromoCodeResultType, BatchQueueConcurrencyConfig, BatchRateLimitConfig, BillingAlertsResponse, BillingAlertsResult, BillingClient, BillingLimitActiveOrg, BillingLimitConfiguredCustom, BillingLimitConfiguredNone, BillingLimitConfiguredPlan, BillingLimitPendingResolveOrg, BillingLimitResponse, BillingLimitResult, BillingLimitState, BillingLimitUnconfigured, BillingLimitsActiveResponse, BillingLimitsActiveResult, BillingLimitsPendingResolvesResult, CancelSubscriptionResponse, CancelSubscriptionResult, CanceledSubscriptionResult, CreatePrivateLinkConnectionBody, CreateSubscriptionFlowStart, CurrentPlan, CurrentPlanResponse, CustomerPortal, CustomerPortalRequestBody, CustomerPortalRequestBodySchema, CustomerPortalResponse, CustomerPortalSchema, DeletePrivateLinkResponse, DeletePrivateLinkResult, EnqueueBuildErrorCode, EnqueueBuildErrorCodeSchema, EnqueueBuildRequest, EnqueueBuildRequestSchema, EnqueueBuildResponse, EnqueueBuildResponseSchema, EnqueueBuildResult, EnterprisePlanDefinition, EnvironmentBasedLimit, Error, ErrorSchema, ExceedableLimit, FreeConnectRequired, FreeConnectRequiredSchema, FreeConnected, FreeConnectedSchema, FreePlanDefinition, FreeTierStatus, IpLocation, IpLocationResponse, IpLocationResult, IpLocationResultBody, Limits, MAX_INVOCATION_COST_IN_CENTS, MachineCode, MachineDefinition, MachineDefinitionInput, PaidPlanDefinition, PlanDefinition, PlanDefinitionSchema, Plans, PlansResponse, PlansResult, PrivateLinkConnection, PrivateLinkConnectionList, PrivateLinkConnectionListResponse, PrivateLinkConnectionResponse, PrivateLinkConnectionStatus, PrivateLinkRegionsResponse, PrivateLinkRegionsResult, PromoCreditsResponse, PromoCreditsResult, PromoCreditsResultType, QueueSizeLimits, RegistryCredentialsResponse, RegistryCredentialsResponseSchema, RegistryCredentialsResult, ReportComputeUsageEvent, ReportInvocationUsageEvent, ReportInvocationUsageResult, ReportUsagePlan, ReportUsageResult, ResolveBillingLimitRequest, SetAddOnBody, SetAddOnResponse, SetAddOnResult, SetPlanBody, SetPlanBodySchema, SetPlanResponse, SubscribeResult, SubscribeResultSchema, SubscriptionResult, TriggerInitialDeploymentRequest, TriggerInitialDeploymentRequestSchema, TriggerInitialDeploymentResponse, TriggerInitialDeploymentResponseSchema, TriggerInitialDeploymentResult, UpdateBillingAlertsRequest, UpdateBillingLimitRequest, UpdatedSubscriptionResult, UsageEntitlementResponse, UsageInvocationReportResponse, UsageParams, UsageResponse, UsageResult, UsageSeriesParams, UsageSeriesResponse, UsageSeriesResult, ValidatePromoCodeBody, ValidatePromoCodeBodySchema, ValidatePromoCodeResponse, ValidatePromoCodeResult, ValidatePromoCodeResultType, WebhookLimitsConfig, defaultMachine, machineDefinition, machines, objectToSearchParams };
package/dist/index.d.ts CHANGED
@@ -3012,6 +3012,25 @@ declare const PromoCreditsResult: z.ZodObject<{
3012
3012
  }, z.core.$strip>;
3013
3013
  type PromoCreditsResultType = z.infer<typeof PromoCreditsResult>;
3014
3014
  //#endregion
3015
+ //#region src/v3/schemas/ipLocation.d.ts
3016
+ /** Approximate country and network owner of an IPv4 address, from the IPinfo Lite dataset. */
3017
+ declare const IpLocation: z.ZodObject<{
3018
+ country: z.ZodNullable<z.ZodString>;
3019
+ countryCode: z.ZodNullable<z.ZodString>;
3020
+ asn: z.ZodNullable<z.ZodNumber>;
3021
+ asName: z.ZodNullable<z.ZodString>;
3022
+ }, z.core.$strip>;
3023
+ type IpLocation = z.infer<typeof IpLocation>;
3024
+ declare const IpLocationResult: z.ZodObject<{
3025
+ location: z.ZodNullable<z.ZodObject<{
3026
+ country: z.ZodNullable<z.ZodString>;
3027
+ countryCode: z.ZodNullable<z.ZodString>;
3028
+ asn: z.ZodNullable<z.ZodNumber>;
3029
+ asName: z.ZodNullable<z.ZodString>;
3030
+ }, z.core.$strip>>;
3031
+ }, z.core.$strip>;
3032
+ type IpLocationResultBody = z.infer<typeof IpLocationResult>;
3033
+ //#endregion
3015
3034
  //#region src/v3/client/index.d.ts
3016
3035
  type BillingClientConfig = {
3017
3036
  url: string;
@@ -3039,6 +3058,7 @@ type UsageEntitlementResponse = Result<typeof ReportUsageResult>;
3039
3058
  type BillingAlertsResponse = Result<typeof BillingAlertsResult>;
3040
3059
  type BillingLimitResponse = Result<typeof BillingLimitResult>;
3041
3060
  type BillingLimitsActiveResponse = Result<typeof BillingLimitsActiveResult>;
3061
+ type IpLocationResponse = Result<typeof IpLocationResult>;
3042
3062
  type RegistryCredentialsResult = Result<typeof RegistryCredentialsResponseSchema>;
3043
3063
  type SetAddOnResponse = Result<typeof SetAddOnResult>;
3044
3064
  type EnqueueBuildResult = Result<typeof EnqueueBuildResponseSchema>;
@@ -3101,6 +3121,8 @@ declare class BillingClient {
3101
3121
  updateBillingLimit(orgId: string, body: UpdateBillingLimitRequest): Promise<BillingLimitResponse>;
3102
3122
  resolveBillingLimit(orgId: string, body: ResolveBillingLimitRequest): Promise<BillingLimitResponse>;
3103
3123
  getActiveBillingLimits(): Promise<BillingLimitsActiveResponse>;
3124
+ /** Approximate country and network owner of an IP address. `location` is null when unknown. */
3125
+ getIpLocation(ip: string): Promise<IpLocationResponse>;
3104
3126
  getPrivateLinks(orgId: string): Promise<PrivateLinkConnectionListResponse>;
3105
3127
  createPrivateLink(orgId: string, body: CreatePrivateLinkConnectionBody): Promise<PrivateLinkConnectionResponse>;
3106
3128
  deletePrivateLink(orgId: string, connectionId: string): Promise<DeletePrivateLinkResponse>;
@@ -3176,4 +3198,4 @@ declare const machines: {
3176
3198
  type MachineCode = keyof typeof machines;
3177
3199
  declare const defaultMachine: MachineCode;
3178
3200
  //#endregion
3179
- export { AddOn, AddOnDefinition, AddOnPricing, AddOns, ApplyPromoCodeBody, ApplyPromoCodeBodySchema, ApplyPromoCodeResponse, ApplyPromoCodeResult, ApplyPromoCodeResultType, BatchQueueConcurrencyConfig, BatchRateLimitConfig, BillingAlertsResponse, BillingAlertsResult, BillingClient, BillingLimitActiveOrg, BillingLimitConfiguredCustom, BillingLimitConfiguredNone, BillingLimitConfiguredPlan, BillingLimitPendingResolveOrg, BillingLimitResponse, BillingLimitResult, BillingLimitState, BillingLimitUnconfigured, BillingLimitsActiveResponse, BillingLimitsActiveResult, BillingLimitsPendingResolvesResult, CancelSubscriptionResponse, CancelSubscriptionResult, CanceledSubscriptionResult, CreatePrivateLinkConnectionBody, CreateSubscriptionFlowStart, CurrentPlan, CurrentPlanResponse, CustomerPortal, CustomerPortalRequestBody, CustomerPortalRequestBodySchema, CustomerPortalResponse, CustomerPortalSchema, DeletePrivateLinkResponse, DeletePrivateLinkResult, EnqueueBuildErrorCode, EnqueueBuildErrorCodeSchema, EnqueueBuildRequest, EnqueueBuildRequestSchema, EnqueueBuildResponse, EnqueueBuildResponseSchema, EnqueueBuildResult, EnterprisePlanDefinition, EnvironmentBasedLimit, Error, ErrorSchema, ExceedableLimit, FreeConnectRequired, FreeConnectRequiredSchema, FreeConnected, FreeConnectedSchema, FreePlanDefinition, FreeTierStatus, Limits, MAX_INVOCATION_COST_IN_CENTS, MachineCode, MachineDefinition, MachineDefinitionInput, PaidPlanDefinition, PlanDefinition, PlanDefinitionSchema, Plans, PlansResponse, PlansResult, PrivateLinkConnection, PrivateLinkConnectionList, PrivateLinkConnectionListResponse, PrivateLinkConnectionResponse, PrivateLinkConnectionStatus, PrivateLinkRegionsResponse, PrivateLinkRegionsResult, PromoCreditsResponse, PromoCreditsResult, PromoCreditsResultType, QueueSizeLimits, RegistryCredentialsResponse, RegistryCredentialsResponseSchema, RegistryCredentialsResult, ReportComputeUsageEvent, ReportInvocationUsageEvent, ReportInvocationUsageResult, ReportUsagePlan, ReportUsageResult, ResolveBillingLimitRequest, SetAddOnBody, SetAddOnResponse, SetAddOnResult, SetPlanBody, SetPlanBodySchema, SetPlanResponse, SubscribeResult, SubscribeResultSchema, SubscriptionResult, TriggerInitialDeploymentRequest, TriggerInitialDeploymentRequestSchema, TriggerInitialDeploymentResponse, TriggerInitialDeploymentResponseSchema, TriggerInitialDeploymentResult, UpdateBillingAlertsRequest, UpdateBillingLimitRequest, UpdatedSubscriptionResult, UsageEntitlementResponse, UsageInvocationReportResponse, UsageParams, UsageResponse, UsageResult, UsageSeriesParams, UsageSeriesResponse, UsageSeriesResult, ValidatePromoCodeBody, ValidatePromoCodeBodySchema, ValidatePromoCodeResponse, ValidatePromoCodeResult, ValidatePromoCodeResultType, WebhookLimitsConfig, defaultMachine, machineDefinition, machines, objectToSearchParams };
3201
+ export { AddOn, AddOnDefinition, AddOnPricing, AddOns, ApplyPromoCodeBody, ApplyPromoCodeBodySchema, ApplyPromoCodeResponse, ApplyPromoCodeResult, ApplyPromoCodeResultType, BatchQueueConcurrencyConfig, BatchRateLimitConfig, BillingAlertsResponse, BillingAlertsResult, BillingClient, BillingLimitActiveOrg, BillingLimitConfiguredCustom, BillingLimitConfiguredNone, BillingLimitConfiguredPlan, BillingLimitPendingResolveOrg, BillingLimitResponse, BillingLimitResult, BillingLimitState, BillingLimitUnconfigured, BillingLimitsActiveResponse, BillingLimitsActiveResult, BillingLimitsPendingResolvesResult, CancelSubscriptionResponse, CancelSubscriptionResult, CanceledSubscriptionResult, CreatePrivateLinkConnectionBody, CreateSubscriptionFlowStart, CurrentPlan, CurrentPlanResponse, CustomerPortal, CustomerPortalRequestBody, CustomerPortalRequestBodySchema, CustomerPortalResponse, CustomerPortalSchema, DeletePrivateLinkResponse, DeletePrivateLinkResult, EnqueueBuildErrorCode, EnqueueBuildErrorCodeSchema, EnqueueBuildRequest, EnqueueBuildRequestSchema, EnqueueBuildResponse, EnqueueBuildResponseSchema, EnqueueBuildResult, EnterprisePlanDefinition, EnvironmentBasedLimit, Error, ErrorSchema, ExceedableLimit, FreeConnectRequired, FreeConnectRequiredSchema, FreeConnected, FreeConnectedSchema, FreePlanDefinition, FreeTierStatus, IpLocation, IpLocationResponse, IpLocationResult, IpLocationResultBody, Limits, MAX_INVOCATION_COST_IN_CENTS, MachineCode, MachineDefinition, MachineDefinitionInput, PaidPlanDefinition, PlanDefinition, PlanDefinitionSchema, Plans, PlansResponse, PlansResult, PrivateLinkConnection, PrivateLinkConnectionList, PrivateLinkConnectionListResponse, PrivateLinkConnectionResponse, PrivateLinkConnectionStatus, PrivateLinkRegionsResponse, PrivateLinkRegionsResult, PromoCreditsResponse, PromoCreditsResult, PromoCreditsResultType, QueueSizeLimits, RegistryCredentialsResponse, RegistryCredentialsResponseSchema, RegistryCredentialsResult, ReportComputeUsageEvent, ReportInvocationUsageEvent, ReportInvocationUsageResult, ReportUsagePlan, ReportUsageResult, ResolveBillingLimitRequest, SetAddOnBody, SetAddOnResponse, SetAddOnResult, SetPlanBody, SetPlanBodySchema, SetPlanResponse, SubscribeResult, SubscribeResultSchema, SubscriptionResult, TriggerInitialDeploymentRequest, TriggerInitialDeploymentRequestSchema, TriggerInitialDeploymentResponse, TriggerInitialDeploymentResponseSchema, TriggerInitialDeploymentResult, UpdateBillingAlertsRequest, UpdateBillingLimitRequest, UpdatedSubscriptionResult, UsageEntitlementResponse, UsageInvocationReportResponse, UsageParams, UsageResponse, UsageResult, UsageSeriesParams, UsageSeriesResponse, UsageSeriesResult, ValidatePromoCodeBody, ValidatePromoCodeBodySchema, ValidatePromoCodeResponse, ValidatePromoCodeResult, ValidatePromoCodeResultType, WebhookLimitsConfig, defaultMachine, machineDefinition, machines, objectToSearchParams };
package/dist/index.js CHANGED
@@ -500,6 +500,16 @@ const PromoCreditsResult = z.object({ promoCredits: z.object({
500
500
  expiresAt: z.string().datetime().nullable()
501
501
  }).nullable() });
502
502
  //#endregion
503
+ //#region src/v3/schemas/ipLocation.ts
504
+ /** Approximate country and network owner of an IPv4 address, from the IPinfo Lite dataset. */
505
+ const IpLocation = z.object({
506
+ country: z.string().nullable(),
507
+ countryCode: z.string().nullable(),
508
+ asn: z.number().int().nullable(),
509
+ asName: z.string().nullable()
510
+ });
511
+ const IpLocationResult = z.object({ location: IpLocation.nullable() });
512
+ //#endregion
503
513
  //#region src/v3/client/index.ts
504
514
  var BillingClient = class {
505
515
  constructor(config) {
@@ -638,6 +648,10 @@ var BillingClient = class {
638
648
  async getActiveBillingLimits() {
639
649
  return await this.fetch(`/api/v1/billing-limits/active`, BillingLimitsActiveResult);
640
650
  }
651
+ /** Approximate country and network owner of an IP address. `location` is null when unknown. */
652
+ async getIpLocation(ip) {
653
+ return await this.fetch(`/api/v1/ip-location?ip=${encodeURIComponent(ip)}`, IpLocationResult);
654
+ }
641
655
  async getPrivateLinks(orgId) {
642
656
  return await this.fetch(`/api/v1/orgs/${orgId}/private-connections`, PrivateLinkConnectionList);
643
657
  }
@@ -781,6 +795,6 @@ const machines = {
781
795
  };
782
796
  const defaultMachine = "small-1x";
783
797
  //#endregion
784
- export { AddOn, AddOnDefinition, AddOns, ApplyPromoCodeBodySchema, ApplyPromoCodeResult, BillingAlertsResult, BillingClient, BillingLimitActiveOrg, BillingLimitConfiguredCustom, BillingLimitConfiguredNone, BillingLimitConfiguredPlan, BillingLimitPendingResolveOrg, BillingLimitResult, BillingLimitState, BillingLimitUnconfigured, BillingLimitsActiveResult, BillingLimitsPendingResolvesResult, CancelSubscriptionResponse, CreatePrivateLinkConnectionBody, CurrentPlan, CustomerPortalRequestBodySchema, CustomerPortalSchema, DeletePrivateLinkResult, EnqueueBuildErrorCodeSchema, EnqueueBuildRequestSchema, EnqueueBuildResponseSchema, ErrorSchema, FreeConnectRequiredSchema, FreeConnectedSchema, MAX_INVOCATION_COST_IN_CENTS, PlanDefinitionSchema, Plans, PlansResult, PrivateLinkConnection, PrivateLinkConnectionList, PrivateLinkConnectionStatus, PrivateLinkRegionsResult, PromoCreditsResult, RegistryCredentialsResponseSchema, ReportComputeUsageEvent, ReportInvocationUsageEvent, ReportInvocationUsageResult, ReportUsagePlan, ReportUsageResult, ResolveBillingLimitRequest, SetAddOnBody, SetAddOnResult, SetPlanBodySchema, SubscribeResultSchema, SubscriptionResult, TriggerInitialDeploymentRequestSchema, TriggerInitialDeploymentResponseSchema, UpdateBillingAlertsRequest, UpdateBillingLimitRequest, UsageParams, UsageResult, UsageSeriesParams, UsageSeriesResult, ValidatePromoCodeBodySchema, ValidatePromoCodeResult, defaultMachine, machineDefinition, machines, objectToSearchParams };
798
+ export { AddOn, AddOnDefinition, AddOns, ApplyPromoCodeBodySchema, ApplyPromoCodeResult, BillingAlertsResult, BillingClient, BillingLimitActiveOrg, BillingLimitConfiguredCustom, BillingLimitConfiguredNone, BillingLimitConfiguredPlan, BillingLimitPendingResolveOrg, BillingLimitResult, BillingLimitState, BillingLimitUnconfigured, BillingLimitsActiveResult, BillingLimitsPendingResolvesResult, CancelSubscriptionResponse, CreatePrivateLinkConnectionBody, CurrentPlan, CustomerPortalRequestBodySchema, CustomerPortalSchema, DeletePrivateLinkResult, EnqueueBuildErrorCodeSchema, EnqueueBuildRequestSchema, EnqueueBuildResponseSchema, ErrorSchema, FreeConnectRequiredSchema, FreeConnectedSchema, IpLocation, IpLocationResult, MAX_INVOCATION_COST_IN_CENTS, PlanDefinitionSchema, Plans, PlansResult, PrivateLinkConnection, PrivateLinkConnectionList, PrivateLinkConnectionStatus, PrivateLinkRegionsResult, PromoCreditsResult, RegistryCredentialsResponseSchema, ReportComputeUsageEvent, ReportInvocationUsageEvent, ReportInvocationUsageResult, ReportUsagePlan, ReportUsageResult, ResolveBillingLimitRequest, SetAddOnBody, SetAddOnResult, SetPlanBodySchema, SubscribeResultSchema, SubscriptionResult, TriggerInitialDeploymentRequestSchema, TriggerInitialDeploymentResponseSchema, UpdateBillingAlertsRequest, UpdateBillingLimitRequest, UsageParams, UsageResult, UsageSeriesParams, UsageSeriesResult, ValidatePromoCodeBodySchema, ValidatePromoCodeResult, defaultMachine, machineDefinition, machines, objectToSearchParams };
785
799
 
786
800
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/v3/schemas/planDefinitions.ts","../src/v3/schemas/subscription.ts","../src/v3/schemas/subscribe.ts","../src/v3/schemas/portal.ts","../src/v3/schemas/error.ts","../src/v3/schemas/usage.ts","../src/v3/schemas/billingAlerts.ts","../src/v3/schemas/billingLimit.ts","../src/v3/schemas/registryCredentials.ts","../src/v3/schemas/enqueueBuild.ts","../src/v3/schemas/initialDeployment.ts","../src/v3/schemas/privateLink.ts","../src/v3/schemas/promoCodes.ts","../src/v3/client/index.ts","../src/v3/machineDefinition.ts","../src/v3/machinePresets.ts"],"sourcesContent":["import { z } from \"zod\";\n\nconst ExceedableLimit = z.object({\n number: z.number(),\n canExceed: z.boolean().optional(),\n});\n\nexport type ExceedableLimit = z.infer<typeof ExceedableLimit>;\n\nconst EnvironmentBasedLimit = z.object({\n production: z.number(),\n staging: z.number(),\n preview: z.number(),\n development: z.number(),\n canExceed: z.boolean().optional(),\n // Legacy, return the `production` value\n number: z.number(),\n});\nexport type EnvironmentBasedLimit = z.infer<typeof EnvironmentBasedLimit>;\n\nconst BatchRateLimitConfig = z.object({\n type: z.string(),\n interval: z.string(),\n maxTokens: z.number(),\n refillRate: z.number(),\n});\nexport type BatchRateLimitConfig = z.infer<typeof BatchRateLimitConfig>;\n\nconst BatchQueueConcurrencyConfig = z.object({\n processingConcurrency: z.number(),\n});\nexport type BatchQueueConcurrencyConfig = z.infer<typeof BatchQueueConcurrencyConfig>;\n\n/**\n * Hosted webhook limits, synced into Organization.webhookLimitsConfig on plan changes. The webapp\n * falls back to its env defaults for any field that isn't set.\n */\nconst WebhookLimitsConfig = z.object({\n maxWaitersPerEnvironment: z.number(),\n maxWaitersPerEndpoint: z.number(),\n concurrency: z.number(),\n deliveryRetentionDays: z.number(),\n deliveryRetentionStrict: z.boolean().optional(),\n endpointRateLimitTokens: z.number().optional(),\n endpointRateLimitWindowSeconds: z.number().optional(),\n environmentRateLimitTokens: z.number().optional(),\n environmentRateLimitWindowSeconds: z.number().optional(),\n});\nexport type WebhookLimitsConfig = z.infer<typeof WebhookLimitsConfig>;\n\nconst QueueSizeLimits = z.object({\n development: z.number(),\n deployed: z.number(),\n});\nexport type QueueSizeLimits = z.infer<typeof QueueSizeLimits>;\n\nconst Limits = z.object({\n includedUsage: z.number(),\n concurrentRuns: EnvironmentBasedLimit,\n teamMembers: ExceedableLimit,\n schedules: ExceedableLimit,\n logRetentionDays: ExceedableLimit,\n queryPeriodDays: ExceedableLimit,\n alerts: ExceedableLimit,\n hasStagingEnvironment: z.boolean(),\n realtimeConcurrentConnections: ExceedableLimit,\n branches: ExceedableLimit,\n branchesDev: ExceedableLimit,\n support: z.enum([\"community\", \"slack\"]),\n batchRateLimitConfig: BatchRateLimitConfig.optional(),\n batchQueueConcurrencyConfig: BatchQueueConcurrencyConfig.optional(),\n webhookLimitsConfig: WebhookLimitsConfig.optional(),\n metricDashboards: ExceedableLimit,\n metricWidgetsPerDashboard: ExceedableLimit,\n // Optional so an older webapp parsing a newer plan doesn't throw.\n // Absent = unlimited via the webapp's getLimit fallback.\n agentMessages: ExceedableLimit.optional(),\n agentWatchMaxHours: ExceedableLimit.optional(),\n agentWatchers: ExceedableLimit.optional(),\n declaredSchedulesPerDeploy: ExceedableLimit.optional(),\n queueSizeLimits: QueueSizeLimits.optional(),\n hasPrivateNetworking: z.boolean().optional(),\n privateLinkConnectionLimit: z.number().optional(),\n hasSso: z.boolean().optional(),\n // Duration string (e.g. \"30d\", \"1y\"). When set, the org gets a\n // dedicated S2 stream basin with this retention; when omitted, the\n // org's streams flow to the shared global basin.\n streamBasinRetention: z.string().optional(),\n});\n\nexport type Limits = z.infer<typeof Limits>;\n\nconst commonMetadata = {\n title: z.string(),\n code: z.string(),\n};\n\nconst pricingLookup = {\n tierPriceCode: z.string(),\n usagePriceCode: z.string(),\n usageCouponCode: z.string().optional(),\n};\nconst FreePlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"free\"),\n limits: Limits,\n});\nexport type FreePlanDefinition = z.infer<typeof FreePlanDefinition>;\n\nconst PaidPlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"paid\"),\n tierPrice: z.number(),\n stripe: z.object(pricingLookup),\n limits: Limits,\n});\nexport type PaidPlanDefinition = z.infer<typeof PaidPlanDefinition>;\n\nconst EnterprisePlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"enterprise\"),\n limits: Limits,\n});\nexport type EnterprisePlanDefinition = z.infer<typeof EnterprisePlanDefinition>;\n\nexport const PlanDefinitionSchema = z.discriminatedUnion(\"type\", [\n FreePlanDefinition,\n PaidPlanDefinition,\n EnterprisePlanDefinition,\n]);\nexport type PlanDefinition = z.infer<typeof PlanDefinitionSchema>;\n\nconst MachineDefinition = z.object({\n code: z.string(),\n title: z.string(),\n cpu: z.number(),\n memory: z.number(),\n centsPerMs: z.number(),\n});\n\nexport type MachineDefinition = z.infer<typeof MachineDefinition>;\n\nexport const Plans = z.object({\n free: FreePlanDefinition,\n hobby: PaidPlanDefinition,\n pro: PaidPlanDefinition,\n enterprise: EnterprisePlanDefinition,\n});\nexport type Plans = z.infer<typeof Plans>;\n\n/** The pricing per step of the add-on, e.g. $10 for 50 units */\nconst AddOnPricing = z.object({\n /** The step size - must purchase in multiples of this amount */\n stepSize: z.number(),\n /** Price per step in cents */\n centsPerStep: z.number(),\n});\nexport type AddOnPricing = z.infer<typeof AddOnPricing>;\n\nexport const PlansResult = z.object({\n plans: Plans,\n usagePricing: z.object({\n centsPerRunInvocation: z.number(),\n machines: z.record(z.string(), MachineDefinition),\n defaultMachine: z.string(),\n }),\n addOnPricing: z.object({\n concurrency: AddOnPricing,\n branches: AddOnPricing,\n seats: AddOnPricing,\n schedules: AddOnPricing,\n }),\n});\n\nexport type PlansResult = z.infer<typeof PlansResult>;\n\nexport const AddOnDefinition = z.object({\n code: z.enum([\"concurrency\", \"branches\", \"seats\", \"schedules\"]),\n priceCode: z.string(),\n pricing: AddOnPricing,\n});\n\nexport type AddOnDefinition = z.infer<typeof AddOnDefinition>;\n\nexport const AddOn = z.object({\n purchased: z.number(),\n quota: z.number().optional(),\n});\nexport type AddOn = z.infer<typeof AddOn>;\n\nexport const AddOns = z.object({\n concurrentRuns: AddOn.optional(),\n branches: AddOn.optional(),\n seats: AddOn.optional(),\n schedules: AddOn.optional(),\n});\nexport type AddOns = z.infer<typeof AddOns>;\n","import { z } from \"zod\";\nimport { AddOns, PlanDefinitionSchema } from \"./planDefinitions\";\n\nconst FreeTierStatus = z.enum([\"requires_connect\", \"approved\", \"rejected\"]);\nexport type FreeTierStatus = z.infer<typeof FreeTierStatus>;\n\nexport const SubscriptionResult = z.object({\n freeTierStatus: FreeTierStatus,\n isPaying: z.boolean(),\n showSelfServe: z.boolean().default(true),\n canceledAt: z.string().optional(),\n plan: PlanDefinitionSchema.optional(),\n addOns: AddOns.optional(),\n});\n\nexport type SubscriptionResult = z.infer<typeof SubscriptionResult>;\n\nexport const CurrentPlan = z.object({\n //todo remove this after the next deploy\n subscription: z.any(),\n v3Subscription: SubscriptionResult,\n});\n\nexport type CurrentPlan = z.infer<typeof CurrentPlan>;\n","import { z } from \"zod\";\n\nconst SetPaidPlanBodySchema = z.object({\n type: z.literal(\"paid\"),\n planCode: z.string(),\n userId: z.string(),\n});\n\nconst SetFreePlanBodySchema = z.object({\n type: z.literal(\"free\"),\n userId: z.string(),\n});\n\nexport const SetPlanBodySchema = z.discriminatedUnion(\"type\", [\n SetPaidPlanBodySchema,\n SetFreePlanBodySchema,\n]);\n\nexport type SetPlanBody = z.infer<typeof SetPlanBodySchema>;\n\nexport const FreeConnectRequiredSchema = z.object({\n action: z.literal(\"free_connect_required\"),\n connectUrl: z.string().url(),\n});\n\nexport type FreeConnectRequired = z.infer<typeof FreeConnectRequiredSchema>;\n\nexport const FreeConnectedSchema = z.object({\n action: z.literal(\"free_connected\"),\n accepted: z.boolean(),\n});\n\nexport type FreeConnected = z.infer<typeof FreeConnectedSchema>;\n\nconst UpdatedSubscriptionResultSchema = z.object({\n action: z.literal(\"updated_subscription\"),\n subscription: z.object({\n planCode: z.string(),\n }),\n});\n\nexport type UpdatedSubscriptionResult = z.infer<typeof UpdatedSubscriptionResultSchema>;\n\nconst CreateSubscriptionFlowStartSchema = z.object({\n action: z.literal(\"create_subscription_flow_start\"),\n subscription: z.object({\n planCode: z.string(),\n }),\n checkoutUrl: z.string().url(),\n});\n\nexport type CreateSubscriptionFlowStart = z.infer<typeof CreateSubscriptionFlowStartSchema>;\n\nconst CanceledSubscriptionResultSchema = z.object({\n action: z.literal(\"canceled_subscription\"),\n});\n\nexport type CanceledSubscriptionResult = z.infer<typeof CanceledSubscriptionResultSchema>;\n\nexport const SubscribeResultSchema = z.discriminatedUnion(\"action\", [\n FreeConnectRequiredSchema,\n FreeConnectedSchema,\n CreateSubscriptionFlowStartSchema,\n UpdatedSubscriptionResultSchema,\n CanceledSubscriptionResultSchema,\n]);\n\nexport type SubscribeResult = z.infer<typeof SubscribeResultSchema>;\n\nexport const SetAddOnBody = z.object({\n type: z.enum([\"concurrency\", \"branches\", \"seats\", \"schedules\"]),\n amount: z.number(),\n});\n\nexport type SetAddOnBody = z.infer<typeof SetAddOnBody>;\n\nexport const SetAddOnResult = z.discriminatedUnion(\"result\", [\n z.object({\n result: z.literal(\"error\"),\n error: z.string(),\n }),\n z.object({\n result: z.literal(\"success\"),\n type: z.string(),\n amount: z.number(),\n subscription: z.object({\n id: z.string(),\n }),\n }),\n z.object({\n result: z.literal(\"max_quota_reached\"),\n type: z.string(),\n maxQuota: z.number(),\n }),\n]);\n\nexport type SetAddOnResult = z.infer<typeof SetAddOnResult>;\n\nexport const CancelSubscriptionResponse = z.object({\n outcome: z.enum([\"canceled\", \"already_canceled\", \"no_subscription\"]),\n cancelAt: z.string().nullable(),\n});\n\nexport type CancelSubscriptionResponse = z.infer<typeof CancelSubscriptionResponse>;\n","import { z } from \"zod\";\n\nexport const CustomerPortalRequestBodySchema = z.object({\n returnUrl: z.string(),\n});\n\nexport type CustomerPortalRequestBody = z.infer<typeof CustomerPortalRequestBodySchema>;\n\nexport const CustomerPortalSchema = z.object({\n customerPortalUrl: z.string().optional(),\n});\n\nexport type CustomerPortal = z.infer<typeof CustomerPortalSchema>;\n","import { z } from \"zod\";\n\n// `.passthrough()` so endpoints can return extra context (e.g. `currentDealKey`\n// on a 409 from /api/admin/coupons/apply) without each one needing its own\n// error schema. `code` is the conventional machine-readable discriminator.\nexport const ErrorSchema = z\n .object({\n error: z.string(),\n code: z.string().optional(),\n })\n .passthrough();\n\nexport type Error = z.infer<typeof ErrorSchema>;\n","import { z } from \"zod\";\n\nexport const UsageParams = z.object({\n from: z.coerce.date(),\n to: z.coerce.date(),\n});\nexport type UsageParams = z.infer<typeof UsageParams>;\n\nexport const UsageResult = z.object({\n cents: z.number(),\n});\nexport type UsageResult = z.infer<typeof UsageResult>;\n\nconst Window = z.enum([\"MINUTE\", \"HOUR\", \"DAY\"]);\n\n// const BooleanParam = z.preprocess((val) => (val === \"true\" ? true : false), z.boolean());\n\nexport const UsageSeriesParams = z.object({\n from: z.coerce.date(),\n to: z.coerce.date(),\n /** defaults to DAY */\n window: Window.optional(),\n timezone: z.string().optional(),\n //these don't work at the moment because you can't group by items that aren't defined in the meter group by\n // groupByEnvironmentType: BooleanParam.optional(),\n // groupByTaskIdentifier: BooleanParam.optional(),\n});\n\nexport type UsageSeriesParams = z.infer<typeof UsageSeriesParams>;\n\nexport const UsageSeriesResult = z.object({\n from: z.string(),\n to: z.string(),\n window: Window.optional(),\n data: z\n .object({\n value: z.number(),\n windowStart: z.string(),\n windowEnd: z.string(),\n //these don't work at the moment\n // groupBy: z\n // .object({\n // environmentType: z.string().optional(),\n // taskIdentifer: z.string().optional(),\n // })\n // .optional(),\n })\n .array(),\n});\n\nexport type UsageSeriesResult = z.infer<typeof UsageSeriesResult>;\n\nexport const ReportComputeUsageEvent = z.object({\n durationMs: z.number(),\n});\n\nexport type ReportComputeUsageEvent = z.infer<typeof ReportComputeUsageEvent>;\n\nexport const ReportUsagePlan = z.object({\n type: z.string(),\n code: z.string(),\n isPaying: z.boolean(),\n});\n\nexport type ReportUsagePlan = z.infer<typeof ReportUsagePlan>;\n\nexport const ReportUsageResult = z.object({\n hasAccess: z.boolean(),\n balance: z.number().optional(),\n usage: z.number().optional(),\n overage: z.number().optional(),\n plan: ReportUsagePlan.optional(),\n limitState: z.literal(\"grace\").optional(),\n reason: z.enum([\"free_tier_exceeded\", \"billing_limit\"]).optional(),\n});\n\nexport type ReportUsageResult = z.infer<typeof ReportUsageResult>;\n\n/** Upper bound for a single invocation base charge ($100). */\nexport const MAX_INVOCATION_COST_IN_CENTS = 10_000;\n\nexport const ReportInvocationUsageEvent = z.object({\n organizationId: z.string().min(1).max(128),\n costInCents: z.number().finite().min(0).max(MAX_INVOCATION_COST_IN_CENTS),\n additionalData: z.record(z.string(), z.any()).optional(),\n});\n\nexport type ReportInvocationUsageEvent = z.infer<typeof ReportInvocationUsageEvent>;\n\nexport const ReportInvocationUsageResult = z.discriminatedUnion(\"success\", [\n z.object({\n success: z.literal(true),\n }),\n z.object({\n success: z.literal(false),\n error: z.string(),\n }),\n]);\n","import { z } from \"zod\";\n\nconst BillingAlertDefinition = z.object({\n amount: z.number(),\n emails: z.array(z.string()),\n alertLevels: z.array(z.number()),\n});\n\nexport const BillingAlertsResult = BillingAlertDefinition;\n\nexport type BillingAlertsResult = z.infer<typeof BillingAlertsResult>;\n\nexport const UpdateBillingAlertsRequest = z.object({\n amount: z.number().positive(),\n emails: z.array(z.string()),\n alertLevels: z.array(z.number()),\n});\n\nexport type UpdateBillingAlertsRequest = z.infer<typeof UpdateBillingAlertsRequest>;\n","import { z } from \"zod\";\n\nexport const BillingLimitState = z.discriminatedUnion(\"status\", [\n z.object({\n status: z.literal(\"ok\"),\n }),\n z.object({\n status: z.literal(\"grace\"),\n hitAt: z.string(),\n graceEndsAt: z.string(),\n }),\n z.object({\n status: z.literal(\"rejected\"),\n hitAt: z.string(),\n graceEndsAt: z.string(),\n }),\n]);\n\nexport type BillingLimitState = z.infer<typeof BillingLimitState>;\n\nconst billingLimitConfiguredFields = {\n isConfigured: z.literal(true),\n cancelInProgressRuns: z.boolean(),\n limitState: BillingLimitState,\n effectiveAmountCents: z.number().int().nonnegative().nullable(),\n gracePeriodMs: z.number().int().nonnegative(),\n};\n\nexport const BillingLimitUnconfigured = z.object({\n isConfigured: z.literal(false),\n gracePeriodMs: z.number().int().nonnegative(),\n});\n\nexport const BillingLimitConfiguredNone = z.object({\n ...billingLimitConfiguredFields,\n mode: z.literal(\"none\"),\n});\n\nexport const BillingLimitConfiguredPlan = z.object({\n ...billingLimitConfiguredFields,\n mode: z.literal(\"plan\"),\n});\n\nexport const BillingLimitConfiguredCustom = z.object({\n ...billingLimitConfiguredFields,\n mode: z.literal(\"custom\"),\n amountCents: z.number().int().positive(),\n});\n\nexport const BillingLimitResult = z.union([\n BillingLimitUnconfigured,\n BillingLimitConfiguredNone,\n BillingLimitConfiguredPlan,\n BillingLimitConfiguredCustom,\n]);\n\nexport type BillingLimitResult = z.infer<typeof BillingLimitResult>;\n\nexport const UpdateBillingLimitRequest = z.discriminatedUnion(\"mode\", [\n z.object({\n mode: z.literal(\"none\"),\n cancelInProgressRuns: z.boolean(),\n }),\n z.object({\n mode: z.literal(\"plan\"),\n cancelInProgressRuns: z.boolean(),\n }),\n z.object({\n mode: z.literal(\"custom\"),\n amountCents: z.number().int().positive(),\n cancelInProgressRuns: z.boolean(),\n }),\n]);\n\nexport type UpdateBillingLimitRequest = z.infer<typeof UpdateBillingLimitRequest>;\n\nexport const ResolveBillingLimitRequest = z.discriminatedUnion(\"action\", [\n z.object({\n action: z.literal(\"increase\"),\n newAmountCents: z.number().int().positive(),\n resumeMode: z.enum([\"queue\", \"new_only\"]),\n }),\n z.object({\n action: z.literal(\"remove\"),\n resumeMode: z.enum([\"queue\", \"new_only\"]),\n }),\n]);\n\nexport type ResolveBillingLimitRequest = z.infer<typeof ResolveBillingLimitRequest>;\n\nexport const BillingLimitActiveOrg = z.object({\n orgId: z.string(),\n limitState: z.enum([\"grace\", \"rejected\"]),\n});\n\nexport const BillingLimitsActiveResult = z.object({\n orgs: z.array(BillingLimitActiveOrg),\n});\n\nexport type BillingLimitsActiveResult = z.infer<typeof BillingLimitsActiveResult>;\n\nexport const BillingLimitPendingResolveOrg = z.object({\n organizationId: z.string(),\n resumeMode: z.enum([\"queue\", \"new_only\"]),\n resolvedAt: z.string(),\n});\n\nexport const BillingLimitsPendingResolvesResult = z.object({\n orgs: z.array(BillingLimitPendingResolveOrg),\n});\n\nexport type BillingLimitsPendingResolvesResult = z.infer<typeof BillingLimitsPendingResolvesResult>;\n","import { z } from \"zod\";\n\nexport const RegistryCredentialsResponseSchema = z.object({\n username: z.string(),\n password: z.string(),\n expiresAt: z.string().datetime(),\n repositoryUri: z.string(),\n});\n\nexport type RegistryCredentialsResponse = z.infer<typeof RegistryCredentialsResponseSchema>;\n","import { z } from \"zod\";\n\nconst EnqueueBuildOptionsSchema = z.object({\n skipPromotion: z.boolean().optional(),\n configFilePath: z.string().optional(),\n // Pre-built bundle: the build server only runs the container build\n fromBundle: z.boolean().optional(),\n});\n\nexport const EnqueueBuildRequestSchema = z.union([\n z.object({\n deploymentId: z.string(),\n artifactKey: z.string(),\n options: EnqueueBuildOptionsSchema,\n }),\n // Build the deployment's commit from the project's connected GitHub repository.\n z.object({\n deploymentId: z.string(),\n github: z.object({\n commitSha: z.string().regex(/^[0-9a-f]{40}$/, \"commitSha must be a full lowercase git SHA\"),\n ref: z.string().min(1).max(255),\n }),\n options: EnqueueBuildOptionsSchema,\n }),\n]);\n\nexport type EnqueueBuildRequest = z.infer<typeof EnqueueBuildRequestSchema>;\n\nexport const EnqueueBuildResponseSchema = z.object({\n buildId: z.string(),\n});\n\nexport type EnqueueBuildResponse = z.infer<typeof EnqueueBuildResponseSchema>;\n\nexport const EnqueueBuildErrorCodeSchema = z.enum([\n \"DEPLOYMENT_NOT_PENDING\",\n \"NO_CONNECTED_REPOSITORY\",\n \"ATOMIC_PRODUCTION_REQUIRES_VERCEL\",\n \"COMMIT_NOT_FOUND\",\n \"GITHUB_UNAVAILABLE\",\n]);\n\nexport type EnqueueBuildErrorCode = z.infer<typeof EnqueueBuildErrorCodeSchema>;\n","import { z } from \"zod\";\n\nexport const TriggerInitialDeploymentRequestSchema = z.object({\n environment: z.enum([\"prod\", \"staging\", \"preview\"]),\n // Optional git branch whose HEAD to build. Absent = the repo's default branch\n // (preserves prior behaviour). Bound the new input before external requests and queueing.\n branch: z.string().min(1).max(255).optional(),\n});\n\nexport type TriggerInitialDeploymentRequest = z.infer<typeof TriggerInitialDeploymentRequestSchema>;\n\nexport const TriggerInitialDeploymentResponseSchema = z.object({\n ok: z.boolean(),\n});\n\nexport type TriggerInitialDeploymentResponse = z.infer<\n typeof TriggerInitialDeploymentResponseSchema\n>;\n","import { z } from \"zod\";\n\nexport const PrivateLinkConnectionStatus = z.enum([\n \"PENDING\",\n \"PROVISIONING\",\n \"ACTIVE\",\n \"ERROR\",\n \"DELETING\",\n]);\nexport type PrivateLinkConnectionStatus = z.infer<typeof PrivateLinkConnectionStatus>;\n\nexport const PrivateLinkConnection = z.object({\n id: z.string(),\n friendlyId: z.string(),\n name: z.string(),\n organizationId: z.string(),\n endpointServiceName: z.string(),\n targetRegion: z.string(),\n status: PrivateLinkConnectionStatus,\n statusMessage: z.string().nullable(),\n endpointDnsName: z.string().nullable(),\n endpointIps: z.array(z.string()).nullable(),\n provisionedAt: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type PrivateLinkConnection = z.infer<typeof PrivateLinkConnection>;\n\nexport const PrivateLinkConnectionList = z.object({\n connections: z.array(PrivateLinkConnection),\n});\nexport type PrivateLinkConnectionList = z.infer<typeof PrivateLinkConnectionList>;\n\nexport const CreatePrivateLinkConnectionBody = z.object({\n name: z\n .string()\n .min(1)\n .max(100)\n .regex(\n /^[a-zA-Z][a-zA-Z0-9 _-]*$/,\n \"Must start with a letter and contain only letters, numbers, spaces, hyphens, or underscores\"\n ),\n endpointServiceName: z\n .string()\n .regex(\n /^com\\.amazonaws\\.vpce\\..+\\.vpce-svc-.+$/,\n \"Must be a valid VPC Endpoint Service name (com.amazonaws.vpce.<region>.vpce-svc-*)\"\n ),\n // Region support is dynamic (driven by the billing service's env vars), so\n // this validates the AWS region *format* only; the authoritative check that\n // the region is actually configured happens server-side against the set of\n // regions discovered from env vars.\n targetRegion: z.string().regex(/^[a-z]{2}-[a-z]+-\\d+$/, \"Must be a valid AWS region\"),\n});\nexport type CreatePrivateLinkConnectionBody = z.infer<typeof CreatePrivateLinkConnectionBody>;\n\nexport const DeletePrivateLinkResult = z.object({\n success: z.boolean(),\n});\nexport type DeletePrivateLinkResult = z.infer<typeof DeletePrivateLinkResult>;\n\nexport const PrivateLinkRegionsResult = z.object({\n availableRegions: z.array(z.string()),\n activeRegions: z.array(z.string()),\n});\nexport type PrivateLinkRegionsResult = z.infer<typeof PrivateLinkRegionsResult>;\n","import { z } from \"zod\";\n\nexport const ValidatePromoCodeBodySchema = z.object({\n code: z.string(),\n});\nexport type ValidatePromoCodeBody = z.infer<typeof ValidatePromoCodeBodySchema>;\n\nexport const ValidatePromoCodeResult = z.object({\n valid: z.boolean(),\n amountInCents: z.number().optional(),\n expiresAt: z.string().datetime().nullable().optional(),\n});\nexport type ValidatePromoCodeResultType = z.infer<typeof ValidatePromoCodeResult>;\n\nexport const ApplyPromoCodeBodySchema = z.object({\n code: z.string(),\n userId: z.string(),\n});\nexport type ApplyPromoCodeBody = z.infer<typeof ApplyPromoCodeBodySchema>;\n\nexport const ApplyPromoCodeResult = z.object({\n applied: z.boolean(),\n amountInCents: z.number().optional(),\n expiresAt: z.string().datetime().nullable().optional(),\n // Present when applied is false, e.g. \"already_redeemed\" or \"invalid\".\n reason: z.string().optional(),\n});\nexport type ApplyPromoCodeResultType = z.infer<typeof ApplyPromoCodeResult>;\n\nexport const PromoCreditsResult = z.object({\n promoCredits: z\n .object({\n grantedCents: z.number(),\n remainingCents: z.number(),\n expiresAt: z.string().datetime().nullable(),\n })\n .nullable(),\n});\nexport type PromoCreditsResultType = z.infer<typeof PromoCreditsResult>;\n","import type { ZodType, z } from \"zod\";\nimport type {\n CustomerPortalRequestBody,\n ReportInvocationUsageEvent,\n SetPlanBody,\n UpdateBillingAlertsRequest,\n UpdateBillingLimitRequest,\n ResolveBillingLimitRequest,\n UsageParams,\n UsageSeriesParams,\n SetAddOnBody,\n EnqueueBuildRequest,\n TriggerInitialDeploymentRequest,\n CreatePrivateLinkConnectionBody,\n} from \"../schemas\";\nimport {\n BillingAlertsResult,\n BillingLimitResult,\n BillingLimitsActiveResult,\n CurrentPlan,\n CustomerPortalSchema,\n ErrorSchema,\n PlansResult,\n ReportInvocationUsageResult,\n ReportUsageResult,\n SubscribeResultSchema,\n CancelSubscriptionResponse,\n UsageResult,\n UsageSeriesResult,\n RegistryCredentialsResponseSchema,\n SetAddOnResult,\n EnqueueBuildResponseSchema,\n TriggerInitialDeploymentResponseSchema,\n PrivateLinkConnectionList,\n PrivateLinkConnection,\n DeletePrivateLinkResult,\n PrivateLinkRegionsResult,\n ValidatePromoCodeResult,\n ApplyPromoCodeResult,\n PromoCreditsResult,\n} from \"../schemas\";\n\ntype BillingClientConfig = {\n url: string;\n apiKey: string;\n};\n\ntype SuccessResult<TSchema extends ZodType> = {\n success: true;\n} & z.infer<TSchema>;\n\ntype ErrorResult = {\n success: false;\n error: string;\n code?: string;\n [key: string]: unknown;\n};\n\ntype Result<TSchema extends ZodType> = SuccessResult<TSchema> | ErrorResult;\n\nexport type PlansResponse = Result<typeof PlansResult>;\nexport type CurrentPlanResponse = Result<typeof CurrentPlan>;\nexport type SetPlanResponse = Result<typeof SubscribeResultSchema>;\nexport type CancelSubscriptionResult = Result<typeof CancelSubscriptionResponse>;\nexport type CustomerPortalResponse = Result<typeof CustomerPortalSchema>;\nexport type UsageResponse = Result<typeof UsageResult>;\nexport type UsageSeriesResponse = Result<typeof UsageSeriesResult>;\nexport type UsageInvocationReportResponse = Result<typeof ReportInvocationUsageResult>;\nexport type UsageEntitlementResponse = Result<typeof ReportUsageResult>;\nexport type BillingAlertsResponse = Result<typeof BillingAlertsResult>;\nexport type BillingLimitResponse = Result<typeof BillingLimitResult>;\nexport type BillingLimitsActiveResponse = Result<typeof BillingLimitsActiveResult>;\nexport type RegistryCredentialsResult = Result<typeof RegistryCredentialsResponseSchema>;\nexport type SetAddOnResponse = Result<typeof SetAddOnResult>;\nexport type EnqueueBuildResult = Result<typeof EnqueueBuildResponseSchema>;\nexport type PrivateLinkConnectionListResponse = Result<typeof PrivateLinkConnectionList>;\nexport type PrivateLinkConnectionResponse = Result<typeof PrivateLinkConnection>;\nexport type DeletePrivateLinkResponse = Result<typeof DeletePrivateLinkResult>;\nexport type PrivateLinkRegionsResponse = Result<typeof PrivateLinkRegionsResult>;\nexport type TriggerInitialDeploymentResult = Result<typeof TriggerInitialDeploymentResponseSchema>;\nexport type ValidatePromoCodeResponse = Result<typeof ValidatePromoCodeResult>;\nexport type ApplyPromoCodeResponse = Result<typeof ApplyPromoCodeResult>;\nexport type PromoCreditsResponse = Result<typeof PromoCreditsResult>;\n\nexport class BillingClient {\n constructor(private readonly config: BillingClientConfig) {}\n\n async plans(): Promise<PlansResponse> {\n return await this.fetch(`/api/v1/plans/v3`, PlansResult);\n }\n\n async currentPlan(orgId: string): Promise<CurrentPlanResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}`, CurrentPlan);\n }\n\n async usage(orgId: string, params: UsageParams): Promise<UsageResponse> {\n const search = objectToSearchParams(params);\n return await this.fetch(`/api/v1/orgs/${orgId}/usage?${search?.toString()}`, UsageResult);\n }\n\n async usageSeries(orgId: string, params: UsageSeriesParams): Promise<UsageSeriesResponse> {\n const search = objectToSearchParams(params);\n return await this.fetch(\n `/api/v1/orgs/${orgId}/usage/series?${search?.toString()}`,\n UsageSeriesResult\n );\n }\n\n async setPlan(orgId: string, body: SetPlanBody): Promise<SetPlanResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/v3/subscription`, SubscribeResultSchema, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async cancelSubscription(orgId: string): Promise<CancelSubscriptionResult> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/v3/subscription/cancel`,\n CancelSubscriptionResponse,\n { method: \"POST\" }\n );\n }\n\n async setAddOn(orgId: string, body: SetAddOnBody): Promise<SetAddOnResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/v3/subscription/addon`, SetAddOnResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async validatePromoCode(code: string): Promise<ValidatePromoCodeResponse> {\n return await this.fetch(`/api/v1/promo-codes/validate`, ValidatePromoCodeResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code }),\n });\n }\n\n async applyPromoCode(\n orgId: string,\n body: { code: string; userId: string }\n ): Promise<ApplyPromoCodeResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/promo/apply`, ApplyPromoCodeResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async promoCredits(orgId: string): Promise<PromoCreditsResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/promo/credits`, PromoCreditsResult);\n }\n\n async createPortalSession(\n orgId: string,\n body: CustomerPortalRequestBody\n ): Promise<CustomerPortalResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/v3/subscription/portal`, CustomerPortalSchema, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n /**\n *\n * @param event The data is in the body, not using a JWT\n * @returns details about usage\n */\n async reportInvocationUsage(\n event: ReportInvocationUsageEvent\n ): Promise<UsageInvocationReportResponse> {\n return await this.fetch(`/api/v1/usage/ingest/invocation`, ReportInvocationUsageResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(event),\n });\n }\n\n /**\n * Generates registry credentials for a project. This is used to push images to a project's container repository.\n *\n * @param projectId The ID of the project\n * @param region The region to generate credentials for\n * @returns The registry credentials\n */\n async generateRegistryCredentials(\n projectId: string,\n region: \"us-east-1\" | \"eu-central-1\"\n ): Promise<RegistryCredentialsResult> {\n return await this.fetch(\n `/api/v1/projects/${projectId}/generate-registry-credentials`,\n RegistryCredentialsResponseSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ region }),\n }\n );\n }\n\n /**\n * Enqueues a build for a project deployment.\n *\n * @param projectId The ID of the project\n * @param body The enqueue build request containing the deployment ID\n * @returns The build ID\n */\n async enqueueBuild(projectId: string, body: EnqueueBuildRequest): Promise<EnqueueBuildResult> {\n return await this.fetch(\n `/api/v1/projects/${projectId}/enqueue-build`,\n EnqueueBuildResponseSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n /**\n *\n * @param event The data is in the body, not using a JWT\n * @returns details about usage\n */\n async getEntitlement(orgId: string): Promise<UsageEntitlementResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/usage/entitlement`, ReportUsageResult);\n }\n\n async getBillingAlerts(orgId: string): Promise<BillingAlertsResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/billing-alerts`, BillingAlertsResult);\n }\n\n async updateBillingAlerts(\n orgId: string,\n body: UpdateBillingAlertsRequest\n ): Promise<BillingAlertsResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/billing-alerts`, BillingAlertsResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async getBillingLimit(orgId: string): Promise<BillingLimitResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/billing-limit`, BillingLimitResult);\n }\n\n async updateBillingLimit(\n orgId: string,\n body: UpdateBillingLimitRequest\n ): Promise<BillingLimitResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/billing-limit`, BillingLimitResult, {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async resolveBillingLimit(\n orgId: string,\n body: ResolveBillingLimitRequest\n ): Promise<BillingLimitResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/billing-limit/resolve`, BillingLimitResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async getActiveBillingLimits(): Promise<BillingLimitsActiveResponse> {\n return await this.fetch(`/api/v1/billing-limits/active`, BillingLimitsActiveResult);\n }\n\n async getPrivateLinks(orgId: string): Promise<PrivateLinkConnectionListResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/private-connections`, PrivateLinkConnectionList);\n }\n\n async createPrivateLink(\n orgId: string,\n body: CreatePrivateLinkConnectionBody\n ): Promise<PrivateLinkConnectionResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/private-connections`, PrivateLinkConnection, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async deletePrivateLink(orgId: string, connectionId: string): Promise<DeletePrivateLinkResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/private-connections/${connectionId}`,\n DeletePrivateLinkResult,\n {\n method: \"DELETE\",\n }\n );\n }\n\n async getPrivateLinkRegions(orgId: string): Promise<PrivateLinkRegionsResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/private-connections/regions`,\n PrivateLinkRegionsResult\n );\n }\n\n async triggerInitialDeployment(\n projectId: string,\n body: TriggerInitialDeploymentRequest\n ): Promise<TriggerInitialDeploymentResult> {\n return await this.fetch(\n `/api/v1/projects/${projectId}/initial-deployment`,\n TriggerInitialDeploymentResponseSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async fetch<TSchema extends ZodType = z.ZodTypeAny>(\n path: string,\n schema: TSchema,\n requestInit?: RequestInit\n ): Promise<Result<TSchema>> {\n const response = await fetch(`${this.config.url}${path}`, {\n ...requestInit,\n headers: {\n ...requestInit?.headers,\n Authorization: `Bearer ${this.config.apiKey}`,\n },\n });\n\n if (!response.ok) {\n // Error bodies should be { error: string } JSON, but anything in\n // the path (proxy 502 pages, runtime-thrown plain-text Responses)\n // can produce non-JSON. Never let the error path itself throw —\n // fall back to a synthetic status-code error the callers' string\n // matching treats as the generic case.\n let parsedError: z.infer<typeof ErrorSchema>;\n try {\n parsedError = ErrorSchema.parse(await response.json());\n } catch {\n parsedError = { error: `http_${response.status}` };\n }\n return {\n success: false,\n ...parsedError,\n };\n }\n\n const json = await response.json();\n // zod v4 types a generic schema's output as `unknown` (v3 gave `any`); intersect\n // with `object` so it remains spreadable while keeping its inferred shape.\n const parsed = schema.parse(json) as z.infer<TSchema> & object;\n return {\n success: true,\n ...parsed,\n };\n }\n}\n\nexport function objectToSearchParams(\n obj:\n | undefined\n | Record<\n string,\n string | string[] | number | number[] | boolean | boolean[] | Date | Date[] | undefined\n >\n): URLSearchParams | undefined {\n if (!obj) return undefined;\n\n const searchParams = new URLSearchParams();\n //for each item add to the search params, skip undefined and join arrays with commas\n Object.entries(obj).forEach(([key, value]) => {\n if (value === undefined) return;\n if (Array.isArray(value)) {\n const values = value.map((d) => {\n if (d instanceof Date) return d.toISOString();\n return d;\n });\n\n searchParams.append(key, values.join(\",\"));\n } else {\n const v = value instanceof Date ? value.toISOString() : value;\n searchParams.append(key, v.toString());\n }\n });\n\n return searchParams;\n}\n","import type { MachineDefinition } from \"./schemas\";\n\nexport type MachineDefinitionInput = {\n code: string;\n title: string;\n cpu: number;\n memory: number;\n centsPerVCpuSecond: number;\n centsPerGbRamSecond: number;\n};\n\nexport function machineDefinition({\n code,\n title,\n cpu,\n memory,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n}: MachineDefinitionInput): MachineDefinition {\n const centsPerSecond = cpu * centsPerVCpuSecond + memory * centsPerGbRamSecond;\n const centsPerMs = centsPerSecond / 1000;\n return {\n code,\n title,\n cpu,\n memory,\n centsPerMs,\n };\n}\n","import { machineDefinition } from \"./machineDefinition\";\n\nconst centsPerVCpuSecond = Number(process.env.CENTS_PER_VCPU_SECOND ?? 0);\nconst centsPerGbRamSecond = Number(process.env.CENTS_PER_GB_RAM_SECOND ?? 0);\n\nexport const machines = {\n micro: machineDefinition({\n code: \"micro\",\n title: \"Micro\",\n cpu: 0.25,\n memory: 0.25,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"small-1x\": machineDefinition({\n code: \"small-1x\",\n title: \"Small 1x\",\n cpu: 0.5,\n memory: 0.5,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"small-2x\": machineDefinition({\n code: \"small-2x\",\n title: \"Small 2x\",\n cpu: 1,\n memory: 1,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"medium-1x\": machineDefinition({\n code: \"medium-1x\",\n title: \"Medium 1x\",\n cpu: 1,\n memory: 2,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"medium-2x\": machineDefinition({\n code: \"medium-2x\",\n title: \"Medium 2x\",\n cpu: 2,\n memory: 4,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"large-1x\": machineDefinition({\n code: \"large-1x\",\n title: \"Large 1x\",\n cpu: 4,\n memory: 8,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"large-2x\": machineDefinition({\n code: \"large-2x\",\n title: \"Large 2x\",\n cpu: 8,\n memory: 16,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n};\n\nexport type MachineCode = keyof typeof machines;\n\nexport const defaultMachine: MachineCode = \"small-1x\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/v3/schemas/planDefinitions.ts","../src/v3/schemas/subscription.ts","../src/v3/schemas/subscribe.ts","../src/v3/schemas/portal.ts","../src/v3/schemas/error.ts","../src/v3/schemas/usage.ts","../src/v3/schemas/billingAlerts.ts","../src/v3/schemas/billingLimit.ts","../src/v3/schemas/registryCredentials.ts","../src/v3/schemas/enqueueBuild.ts","../src/v3/schemas/initialDeployment.ts","../src/v3/schemas/privateLink.ts","../src/v3/schemas/promoCodes.ts","../src/v3/schemas/ipLocation.ts","../src/v3/client/index.ts","../src/v3/machineDefinition.ts","../src/v3/machinePresets.ts"],"sourcesContent":["import { z } from \"zod\";\n\nconst ExceedableLimit = z.object({\n number: z.number(),\n canExceed: z.boolean().optional(),\n});\n\nexport type ExceedableLimit = z.infer<typeof ExceedableLimit>;\n\nconst EnvironmentBasedLimit = z.object({\n production: z.number(),\n staging: z.number(),\n preview: z.number(),\n development: z.number(),\n canExceed: z.boolean().optional(),\n // Legacy, return the `production` value\n number: z.number(),\n});\nexport type EnvironmentBasedLimit = z.infer<typeof EnvironmentBasedLimit>;\n\nconst BatchRateLimitConfig = z.object({\n type: z.string(),\n interval: z.string(),\n maxTokens: z.number(),\n refillRate: z.number(),\n});\nexport type BatchRateLimitConfig = z.infer<typeof BatchRateLimitConfig>;\n\nconst BatchQueueConcurrencyConfig = z.object({\n processingConcurrency: z.number(),\n});\nexport type BatchQueueConcurrencyConfig = z.infer<typeof BatchQueueConcurrencyConfig>;\n\n/**\n * Hosted webhook limits, synced into Organization.webhookLimitsConfig on plan changes. The webapp\n * falls back to its env defaults for any field that isn't set.\n */\nconst WebhookLimitsConfig = z.object({\n maxWaitersPerEnvironment: z.number(),\n maxWaitersPerEndpoint: z.number(),\n concurrency: z.number(),\n deliveryRetentionDays: z.number(),\n deliveryRetentionStrict: z.boolean().optional(),\n endpointRateLimitTokens: z.number().optional(),\n endpointRateLimitWindowSeconds: z.number().optional(),\n environmentRateLimitTokens: z.number().optional(),\n environmentRateLimitWindowSeconds: z.number().optional(),\n});\nexport type WebhookLimitsConfig = z.infer<typeof WebhookLimitsConfig>;\n\nconst QueueSizeLimits = z.object({\n development: z.number(),\n deployed: z.number(),\n});\nexport type QueueSizeLimits = z.infer<typeof QueueSizeLimits>;\n\nconst Limits = z.object({\n includedUsage: z.number(),\n concurrentRuns: EnvironmentBasedLimit,\n teamMembers: ExceedableLimit,\n schedules: ExceedableLimit,\n logRetentionDays: ExceedableLimit,\n queryPeriodDays: ExceedableLimit,\n alerts: ExceedableLimit,\n hasStagingEnvironment: z.boolean(),\n realtimeConcurrentConnections: ExceedableLimit,\n branches: ExceedableLimit,\n branchesDev: ExceedableLimit,\n support: z.enum([\"community\", \"slack\"]),\n batchRateLimitConfig: BatchRateLimitConfig.optional(),\n batchQueueConcurrencyConfig: BatchQueueConcurrencyConfig.optional(),\n webhookLimitsConfig: WebhookLimitsConfig.optional(),\n metricDashboards: ExceedableLimit,\n metricWidgetsPerDashboard: ExceedableLimit,\n // Optional so an older webapp parsing a newer plan doesn't throw.\n // Absent = unlimited via the webapp's getLimit fallback.\n agentMessages: ExceedableLimit.optional(),\n agentWatchMaxHours: ExceedableLimit.optional(),\n agentWatchers: ExceedableLimit.optional(),\n declaredSchedulesPerDeploy: ExceedableLimit.optional(),\n queueSizeLimits: QueueSizeLimits.optional(),\n hasPrivateNetworking: z.boolean().optional(),\n privateLinkConnectionLimit: z.number().optional(),\n hasSso: z.boolean().optional(),\n // Duration string (e.g. \"30d\", \"1y\"). When set, the org gets a\n // dedicated S2 stream basin with this retention; when omitted, the\n // org's streams flow to the shared global basin.\n streamBasinRetention: z.string().optional(),\n});\n\nexport type Limits = z.infer<typeof Limits>;\n\nconst commonMetadata = {\n title: z.string(),\n code: z.string(),\n};\n\nconst pricingLookup = {\n tierPriceCode: z.string(),\n usagePriceCode: z.string(),\n usageCouponCode: z.string().optional(),\n};\nconst FreePlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"free\"),\n limits: Limits,\n});\nexport type FreePlanDefinition = z.infer<typeof FreePlanDefinition>;\n\nconst PaidPlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"paid\"),\n tierPrice: z.number(),\n stripe: z.object(pricingLookup),\n limits: Limits,\n});\nexport type PaidPlanDefinition = z.infer<typeof PaidPlanDefinition>;\n\nconst EnterprisePlanDefinition = z.object({\n ...commonMetadata,\n type: z.literal(\"enterprise\"),\n limits: Limits,\n});\nexport type EnterprisePlanDefinition = z.infer<typeof EnterprisePlanDefinition>;\n\nexport const PlanDefinitionSchema = z.discriminatedUnion(\"type\", [\n FreePlanDefinition,\n PaidPlanDefinition,\n EnterprisePlanDefinition,\n]);\nexport type PlanDefinition = z.infer<typeof PlanDefinitionSchema>;\n\nconst MachineDefinition = z.object({\n code: z.string(),\n title: z.string(),\n cpu: z.number(),\n memory: z.number(),\n centsPerMs: z.number(),\n});\n\nexport type MachineDefinition = z.infer<typeof MachineDefinition>;\n\nexport const Plans = z.object({\n free: FreePlanDefinition,\n hobby: PaidPlanDefinition,\n pro: PaidPlanDefinition,\n enterprise: EnterprisePlanDefinition,\n});\nexport type Plans = z.infer<typeof Plans>;\n\n/** The pricing per step of the add-on, e.g. $10 for 50 units */\nconst AddOnPricing = z.object({\n /** The step size - must purchase in multiples of this amount */\n stepSize: z.number(),\n /** Price per step in cents */\n centsPerStep: z.number(),\n});\nexport type AddOnPricing = z.infer<typeof AddOnPricing>;\n\nexport const PlansResult = z.object({\n plans: Plans,\n usagePricing: z.object({\n centsPerRunInvocation: z.number(),\n machines: z.record(z.string(), MachineDefinition),\n defaultMachine: z.string(),\n }),\n addOnPricing: z.object({\n concurrency: AddOnPricing,\n branches: AddOnPricing,\n seats: AddOnPricing,\n schedules: AddOnPricing,\n }),\n});\n\nexport type PlansResult = z.infer<typeof PlansResult>;\n\nexport const AddOnDefinition = z.object({\n code: z.enum([\"concurrency\", \"branches\", \"seats\", \"schedules\"]),\n priceCode: z.string(),\n pricing: AddOnPricing,\n});\n\nexport type AddOnDefinition = z.infer<typeof AddOnDefinition>;\n\nexport const AddOn = z.object({\n purchased: z.number(),\n quota: z.number().optional(),\n});\nexport type AddOn = z.infer<typeof AddOn>;\n\nexport const AddOns = z.object({\n concurrentRuns: AddOn.optional(),\n branches: AddOn.optional(),\n seats: AddOn.optional(),\n schedules: AddOn.optional(),\n});\nexport type AddOns = z.infer<typeof AddOns>;\n","import { z } from \"zod\";\nimport { AddOns, PlanDefinitionSchema } from \"./planDefinitions\";\n\nconst FreeTierStatus = z.enum([\"requires_connect\", \"approved\", \"rejected\"]);\nexport type FreeTierStatus = z.infer<typeof FreeTierStatus>;\n\nexport const SubscriptionResult = z.object({\n freeTierStatus: FreeTierStatus,\n isPaying: z.boolean(),\n showSelfServe: z.boolean().default(true),\n canceledAt: z.string().optional(),\n plan: PlanDefinitionSchema.optional(),\n addOns: AddOns.optional(),\n});\n\nexport type SubscriptionResult = z.infer<typeof SubscriptionResult>;\n\nexport const CurrentPlan = z.object({\n //todo remove this after the next deploy\n subscription: z.any(),\n v3Subscription: SubscriptionResult,\n});\n\nexport type CurrentPlan = z.infer<typeof CurrentPlan>;\n","import { z } from \"zod\";\n\nconst SetPaidPlanBodySchema = z.object({\n type: z.literal(\"paid\"),\n planCode: z.string(),\n userId: z.string(),\n});\n\nconst SetFreePlanBodySchema = z.object({\n type: z.literal(\"free\"),\n userId: z.string(),\n});\n\nexport const SetPlanBodySchema = z.discriminatedUnion(\"type\", [\n SetPaidPlanBodySchema,\n SetFreePlanBodySchema,\n]);\n\nexport type SetPlanBody = z.infer<typeof SetPlanBodySchema>;\n\nexport const FreeConnectRequiredSchema = z.object({\n action: z.literal(\"free_connect_required\"),\n connectUrl: z.string().url(),\n});\n\nexport type FreeConnectRequired = z.infer<typeof FreeConnectRequiredSchema>;\n\nexport const FreeConnectedSchema = z.object({\n action: z.literal(\"free_connected\"),\n accepted: z.boolean(),\n});\n\nexport type FreeConnected = z.infer<typeof FreeConnectedSchema>;\n\nconst UpdatedSubscriptionResultSchema = z.object({\n action: z.literal(\"updated_subscription\"),\n subscription: z.object({\n planCode: z.string(),\n }),\n});\n\nexport type UpdatedSubscriptionResult = z.infer<typeof UpdatedSubscriptionResultSchema>;\n\nconst CreateSubscriptionFlowStartSchema = z.object({\n action: z.literal(\"create_subscription_flow_start\"),\n subscription: z.object({\n planCode: z.string(),\n }),\n checkoutUrl: z.string().url(),\n});\n\nexport type CreateSubscriptionFlowStart = z.infer<typeof CreateSubscriptionFlowStartSchema>;\n\nconst CanceledSubscriptionResultSchema = z.object({\n action: z.literal(\"canceled_subscription\"),\n});\n\nexport type CanceledSubscriptionResult = z.infer<typeof CanceledSubscriptionResultSchema>;\n\nexport const SubscribeResultSchema = z.discriminatedUnion(\"action\", [\n FreeConnectRequiredSchema,\n FreeConnectedSchema,\n CreateSubscriptionFlowStartSchema,\n UpdatedSubscriptionResultSchema,\n CanceledSubscriptionResultSchema,\n]);\n\nexport type SubscribeResult = z.infer<typeof SubscribeResultSchema>;\n\nexport const SetAddOnBody = z.object({\n type: z.enum([\"concurrency\", \"branches\", \"seats\", \"schedules\"]),\n amount: z.number(),\n});\n\nexport type SetAddOnBody = z.infer<typeof SetAddOnBody>;\n\nexport const SetAddOnResult = z.discriminatedUnion(\"result\", [\n z.object({\n result: z.literal(\"error\"),\n error: z.string(),\n }),\n z.object({\n result: z.literal(\"success\"),\n type: z.string(),\n amount: z.number(),\n subscription: z.object({\n id: z.string(),\n }),\n }),\n z.object({\n result: z.literal(\"max_quota_reached\"),\n type: z.string(),\n maxQuota: z.number(),\n }),\n]);\n\nexport type SetAddOnResult = z.infer<typeof SetAddOnResult>;\n\nexport const CancelSubscriptionResponse = z.object({\n outcome: z.enum([\"canceled\", \"already_canceled\", \"no_subscription\"]),\n cancelAt: z.string().nullable(),\n});\n\nexport type CancelSubscriptionResponse = z.infer<typeof CancelSubscriptionResponse>;\n","import { z } from \"zod\";\n\nexport const CustomerPortalRequestBodySchema = z.object({\n returnUrl: z.string(),\n});\n\nexport type CustomerPortalRequestBody = z.infer<typeof CustomerPortalRequestBodySchema>;\n\nexport const CustomerPortalSchema = z.object({\n customerPortalUrl: z.string().optional(),\n});\n\nexport type CustomerPortal = z.infer<typeof CustomerPortalSchema>;\n","import { z } from \"zod\";\n\n// `.passthrough()` so endpoints can return extra context (e.g. `currentDealKey`\n// on a 409 from /api/admin/coupons/apply) without each one needing its own\n// error schema. `code` is the conventional machine-readable discriminator.\nexport const ErrorSchema = z\n .object({\n error: z.string(),\n code: z.string().optional(),\n })\n .passthrough();\n\nexport type Error = z.infer<typeof ErrorSchema>;\n","import { z } from \"zod\";\n\nexport const UsageParams = z.object({\n from: z.coerce.date(),\n to: z.coerce.date(),\n});\nexport type UsageParams = z.infer<typeof UsageParams>;\n\nexport const UsageResult = z.object({\n cents: z.number(),\n});\nexport type UsageResult = z.infer<typeof UsageResult>;\n\nconst Window = z.enum([\"MINUTE\", \"HOUR\", \"DAY\"]);\n\n// const BooleanParam = z.preprocess((val) => (val === \"true\" ? true : false), z.boolean());\n\nexport const UsageSeriesParams = z.object({\n from: z.coerce.date(),\n to: z.coerce.date(),\n /** defaults to DAY */\n window: Window.optional(),\n timezone: z.string().optional(),\n //these don't work at the moment because you can't group by items that aren't defined in the meter group by\n // groupByEnvironmentType: BooleanParam.optional(),\n // groupByTaskIdentifier: BooleanParam.optional(),\n});\n\nexport type UsageSeriesParams = z.infer<typeof UsageSeriesParams>;\n\nexport const UsageSeriesResult = z.object({\n from: z.string(),\n to: z.string(),\n window: Window.optional(),\n data: z\n .object({\n value: z.number(),\n windowStart: z.string(),\n windowEnd: z.string(),\n //these don't work at the moment\n // groupBy: z\n // .object({\n // environmentType: z.string().optional(),\n // taskIdentifer: z.string().optional(),\n // })\n // .optional(),\n })\n .array(),\n});\n\nexport type UsageSeriesResult = z.infer<typeof UsageSeriesResult>;\n\nexport const ReportComputeUsageEvent = z.object({\n durationMs: z.number(),\n});\n\nexport type ReportComputeUsageEvent = z.infer<typeof ReportComputeUsageEvent>;\n\nexport const ReportUsagePlan = z.object({\n type: z.string(),\n code: z.string(),\n isPaying: z.boolean(),\n});\n\nexport type ReportUsagePlan = z.infer<typeof ReportUsagePlan>;\n\nexport const ReportUsageResult = z.object({\n hasAccess: z.boolean(),\n balance: z.number().optional(),\n usage: z.number().optional(),\n overage: z.number().optional(),\n plan: ReportUsagePlan.optional(),\n limitState: z.literal(\"grace\").optional(),\n reason: z.enum([\"free_tier_exceeded\", \"billing_limit\"]).optional(),\n});\n\nexport type ReportUsageResult = z.infer<typeof ReportUsageResult>;\n\n/** Upper bound for a single invocation base charge ($100). */\nexport const MAX_INVOCATION_COST_IN_CENTS = 10_000;\n\nexport const ReportInvocationUsageEvent = z.object({\n organizationId: z.string().min(1).max(128),\n costInCents: z.number().finite().min(0).max(MAX_INVOCATION_COST_IN_CENTS),\n additionalData: z.record(z.string(), z.any()).optional(),\n});\n\nexport type ReportInvocationUsageEvent = z.infer<typeof ReportInvocationUsageEvent>;\n\nexport const ReportInvocationUsageResult = z.discriminatedUnion(\"success\", [\n z.object({\n success: z.literal(true),\n }),\n z.object({\n success: z.literal(false),\n error: z.string(),\n }),\n]);\n","import { z } from \"zod\";\n\nconst BillingAlertDefinition = z.object({\n amount: z.number(),\n emails: z.array(z.string()),\n alertLevels: z.array(z.number()),\n});\n\nexport const BillingAlertsResult = BillingAlertDefinition;\n\nexport type BillingAlertsResult = z.infer<typeof BillingAlertsResult>;\n\nexport const UpdateBillingAlertsRequest = z.object({\n amount: z.number().positive(),\n emails: z.array(z.string()),\n alertLevels: z.array(z.number()),\n});\n\nexport type UpdateBillingAlertsRequest = z.infer<typeof UpdateBillingAlertsRequest>;\n","import { z } from \"zod\";\n\nexport const BillingLimitState = z.discriminatedUnion(\"status\", [\n z.object({\n status: z.literal(\"ok\"),\n }),\n z.object({\n status: z.literal(\"grace\"),\n hitAt: z.string(),\n graceEndsAt: z.string(),\n }),\n z.object({\n status: z.literal(\"rejected\"),\n hitAt: z.string(),\n graceEndsAt: z.string(),\n }),\n]);\n\nexport type BillingLimitState = z.infer<typeof BillingLimitState>;\n\nconst billingLimitConfiguredFields = {\n isConfigured: z.literal(true),\n cancelInProgressRuns: z.boolean(),\n limitState: BillingLimitState,\n effectiveAmountCents: z.number().int().nonnegative().nullable(),\n gracePeriodMs: z.number().int().nonnegative(),\n};\n\nexport const BillingLimitUnconfigured = z.object({\n isConfigured: z.literal(false),\n gracePeriodMs: z.number().int().nonnegative(),\n});\n\nexport const BillingLimitConfiguredNone = z.object({\n ...billingLimitConfiguredFields,\n mode: z.literal(\"none\"),\n});\n\nexport const BillingLimitConfiguredPlan = z.object({\n ...billingLimitConfiguredFields,\n mode: z.literal(\"plan\"),\n});\n\nexport const BillingLimitConfiguredCustom = z.object({\n ...billingLimitConfiguredFields,\n mode: z.literal(\"custom\"),\n amountCents: z.number().int().positive(),\n});\n\nexport const BillingLimitResult = z.union([\n BillingLimitUnconfigured,\n BillingLimitConfiguredNone,\n BillingLimitConfiguredPlan,\n BillingLimitConfiguredCustom,\n]);\n\nexport type BillingLimitResult = z.infer<typeof BillingLimitResult>;\n\nexport const UpdateBillingLimitRequest = z.discriminatedUnion(\"mode\", [\n z.object({\n mode: z.literal(\"none\"),\n cancelInProgressRuns: z.boolean(),\n }),\n z.object({\n mode: z.literal(\"plan\"),\n cancelInProgressRuns: z.boolean(),\n }),\n z.object({\n mode: z.literal(\"custom\"),\n amountCents: z.number().int().positive(),\n cancelInProgressRuns: z.boolean(),\n }),\n]);\n\nexport type UpdateBillingLimitRequest = z.infer<typeof UpdateBillingLimitRequest>;\n\nexport const ResolveBillingLimitRequest = z.discriminatedUnion(\"action\", [\n z.object({\n action: z.literal(\"increase\"),\n newAmountCents: z.number().int().positive(),\n resumeMode: z.enum([\"queue\", \"new_only\"]),\n }),\n z.object({\n action: z.literal(\"remove\"),\n resumeMode: z.enum([\"queue\", \"new_only\"]),\n }),\n]);\n\nexport type ResolveBillingLimitRequest = z.infer<typeof ResolveBillingLimitRequest>;\n\nexport const BillingLimitActiveOrg = z.object({\n orgId: z.string(),\n limitState: z.enum([\"grace\", \"rejected\"]),\n});\n\nexport const BillingLimitsActiveResult = z.object({\n orgs: z.array(BillingLimitActiveOrg),\n});\n\nexport type BillingLimitsActiveResult = z.infer<typeof BillingLimitsActiveResult>;\n\nexport const BillingLimitPendingResolveOrg = z.object({\n organizationId: z.string(),\n resumeMode: z.enum([\"queue\", \"new_only\"]),\n resolvedAt: z.string(),\n});\n\nexport const BillingLimitsPendingResolvesResult = z.object({\n orgs: z.array(BillingLimitPendingResolveOrg),\n});\n\nexport type BillingLimitsPendingResolvesResult = z.infer<typeof BillingLimitsPendingResolvesResult>;\n","import { z } from \"zod\";\n\nexport const RegistryCredentialsResponseSchema = z.object({\n username: z.string(),\n password: z.string(),\n expiresAt: z.string().datetime(),\n repositoryUri: z.string(),\n});\n\nexport type RegistryCredentialsResponse = z.infer<typeof RegistryCredentialsResponseSchema>;\n","import { z } from \"zod\";\n\nconst EnqueueBuildOptionsSchema = z.object({\n skipPromotion: z.boolean().optional(),\n configFilePath: z.string().optional(),\n // Pre-built bundle: the build server only runs the container build\n fromBundle: z.boolean().optional(),\n});\n\nexport const EnqueueBuildRequestSchema = z.union([\n z.object({\n deploymentId: z.string(),\n artifactKey: z.string(),\n options: EnqueueBuildOptionsSchema,\n }),\n // Build the deployment's commit from the project's connected GitHub repository.\n z.object({\n deploymentId: z.string(),\n github: z.object({\n commitSha: z.string().regex(/^[0-9a-f]{40}$/, \"commitSha must be a full lowercase git SHA\"),\n ref: z.string().min(1).max(255),\n }),\n options: EnqueueBuildOptionsSchema,\n }),\n]);\n\nexport type EnqueueBuildRequest = z.infer<typeof EnqueueBuildRequestSchema>;\n\nexport const EnqueueBuildResponseSchema = z.object({\n buildId: z.string(),\n});\n\nexport type EnqueueBuildResponse = z.infer<typeof EnqueueBuildResponseSchema>;\n\nexport const EnqueueBuildErrorCodeSchema = z.enum([\n \"DEPLOYMENT_NOT_PENDING\",\n \"NO_CONNECTED_REPOSITORY\",\n \"ATOMIC_PRODUCTION_REQUIRES_VERCEL\",\n \"COMMIT_NOT_FOUND\",\n \"GITHUB_UNAVAILABLE\",\n]);\n\nexport type EnqueueBuildErrorCode = z.infer<typeof EnqueueBuildErrorCodeSchema>;\n","import { z } from \"zod\";\n\nexport const TriggerInitialDeploymentRequestSchema = z.object({\n environment: z.enum([\"prod\", \"staging\", \"preview\"]),\n // Optional git branch whose HEAD to build. Absent = the repo's default branch\n // (preserves prior behaviour). Bound the new input before external requests and queueing.\n branch: z.string().min(1).max(255).optional(),\n});\n\nexport type TriggerInitialDeploymentRequest = z.infer<typeof TriggerInitialDeploymentRequestSchema>;\n\nexport const TriggerInitialDeploymentResponseSchema = z.object({\n ok: z.boolean(),\n});\n\nexport type TriggerInitialDeploymentResponse = z.infer<\n typeof TriggerInitialDeploymentResponseSchema\n>;\n","import { z } from \"zod\";\n\nexport const PrivateLinkConnectionStatus = z.enum([\n \"PENDING\",\n \"PROVISIONING\",\n \"ACTIVE\",\n \"ERROR\",\n \"DELETING\",\n]);\nexport type PrivateLinkConnectionStatus = z.infer<typeof PrivateLinkConnectionStatus>;\n\nexport const PrivateLinkConnection = z.object({\n id: z.string(),\n friendlyId: z.string(),\n name: z.string(),\n organizationId: z.string(),\n endpointServiceName: z.string(),\n targetRegion: z.string(),\n status: PrivateLinkConnectionStatus,\n statusMessage: z.string().nullable(),\n endpointDnsName: z.string().nullable(),\n endpointIps: z.array(z.string()).nullable(),\n provisionedAt: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\nexport type PrivateLinkConnection = z.infer<typeof PrivateLinkConnection>;\n\nexport const PrivateLinkConnectionList = z.object({\n connections: z.array(PrivateLinkConnection),\n});\nexport type PrivateLinkConnectionList = z.infer<typeof PrivateLinkConnectionList>;\n\nexport const CreatePrivateLinkConnectionBody = z.object({\n name: z\n .string()\n .min(1)\n .max(100)\n .regex(\n /^[a-zA-Z][a-zA-Z0-9 _-]*$/,\n \"Must start with a letter and contain only letters, numbers, spaces, hyphens, or underscores\"\n ),\n endpointServiceName: z\n .string()\n .regex(\n /^com\\.amazonaws\\.vpce\\..+\\.vpce-svc-.+$/,\n \"Must be a valid VPC Endpoint Service name (com.amazonaws.vpce.<region>.vpce-svc-*)\"\n ),\n // Region support is dynamic (driven by the billing service's env vars), so\n // this validates the AWS region *format* only; the authoritative check that\n // the region is actually configured happens server-side against the set of\n // regions discovered from env vars.\n targetRegion: z.string().regex(/^[a-z]{2}-[a-z]+-\\d+$/, \"Must be a valid AWS region\"),\n});\nexport type CreatePrivateLinkConnectionBody = z.infer<typeof CreatePrivateLinkConnectionBody>;\n\nexport const DeletePrivateLinkResult = z.object({\n success: z.boolean(),\n});\nexport type DeletePrivateLinkResult = z.infer<typeof DeletePrivateLinkResult>;\n\nexport const PrivateLinkRegionsResult = z.object({\n availableRegions: z.array(z.string()),\n activeRegions: z.array(z.string()),\n});\nexport type PrivateLinkRegionsResult = z.infer<typeof PrivateLinkRegionsResult>;\n","import { z } from \"zod\";\n\nexport const ValidatePromoCodeBodySchema = z.object({\n code: z.string(),\n});\nexport type ValidatePromoCodeBody = z.infer<typeof ValidatePromoCodeBodySchema>;\n\nexport const ValidatePromoCodeResult = z.object({\n valid: z.boolean(),\n amountInCents: z.number().optional(),\n expiresAt: z.string().datetime().nullable().optional(),\n});\nexport type ValidatePromoCodeResultType = z.infer<typeof ValidatePromoCodeResult>;\n\nexport const ApplyPromoCodeBodySchema = z.object({\n code: z.string(),\n userId: z.string(),\n});\nexport type ApplyPromoCodeBody = z.infer<typeof ApplyPromoCodeBodySchema>;\n\nexport const ApplyPromoCodeResult = z.object({\n applied: z.boolean(),\n amountInCents: z.number().optional(),\n expiresAt: z.string().datetime().nullable().optional(),\n // Present when applied is false, e.g. \"already_redeemed\" or \"invalid\".\n reason: z.string().optional(),\n});\nexport type ApplyPromoCodeResultType = z.infer<typeof ApplyPromoCodeResult>;\n\nexport const PromoCreditsResult = z.object({\n promoCredits: z\n .object({\n grantedCents: z.number(),\n remainingCents: z.number(),\n expiresAt: z.string().datetime().nullable(),\n })\n .nullable(),\n});\nexport type PromoCreditsResultType = z.infer<typeof PromoCreditsResult>;\n","import { z } from \"zod\";\n\n/** Approximate country and network owner of an IPv4 address, from the IPinfo Lite dataset. */\nexport const IpLocation = z.object({\n country: z.string().nullable(),\n countryCode: z.string().nullable(),\n asn: z.number().int().nullable(),\n asName: z.string().nullable(),\n});\n\nexport type IpLocation = z.infer<typeof IpLocation>;\n\nexport const IpLocationResult = z.object({\n location: IpLocation.nullable(),\n});\n\nexport type IpLocationResultBody = z.infer<typeof IpLocationResult>;\n","import type { ZodType, z } from \"zod\";\nimport type {\n CustomerPortalRequestBody,\n ReportInvocationUsageEvent,\n SetPlanBody,\n UpdateBillingAlertsRequest,\n UpdateBillingLimitRequest,\n ResolveBillingLimitRequest,\n UsageParams,\n UsageSeriesParams,\n SetAddOnBody,\n EnqueueBuildRequest,\n TriggerInitialDeploymentRequest,\n CreatePrivateLinkConnectionBody,\n} from \"../schemas\";\nimport {\n BillingAlertsResult,\n BillingLimitResult,\n BillingLimitsActiveResult,\n IpLocationResult,\n CurrentPlan,\n CustomerPortalSchema,\n ErrorSchema,\n PlansResult,\n ReportInvocationUsageResult,\n ReportUsageResult,\n SubscribeResultSchema,\n CancelSubscriptionResponse,\n UsageResult,\n UsageSeriesResult,\n RegistryCredentialsResponseSchema,\n SetAddOnResult,\n EnqueueBuildResponseSchema,\n TriggerInitialDeploymentResponseSchema,\n PrivateLinkConnectionList,\n PrivateLinkConnection,\n DeletePrivateLinkResult,\n PrivateLinkRegionsResult,\n ValidatePromoCodeResult,\n ApplyPromoCodeResult,\n PromoCreditsResult,\n} from \"../schemas\";\n\ntype BillingClientConfig = {\n url: string;\n apiKey: string;\n};\n\ntype SuccessResult<TSchema extends ZodType> = {\n success: true;\n} & z.infer<TSchema>;\n\ntype ErrorResult = {\n success: false;\n error: string;\n code?: string;\n [key: string]: unknown;\n};\n\ntype Result<TSchema extends ZodType> = SuccessResult<TSchema> | ErrorResult;\n\nexport type PlansResponse = Result<typeof PlansResult>;\nexport type CurrentPlanResponse = Result<typeof CurrentPlan>;\nexport type SetPlanResponse = Result<typeof SubscribeResultSchema>;\nexport type CancelSubscriptionResult = Result<typeof CancelSubscriptionResponse>;\nexport type CustomerPortalResponse = Result<typeof CustomerPortalSchema>;\nexport type UsageResponse = Result<typeof UsageResult>;\nexport type UsageSeriesResponse = Result<typeof UsageSeriesResult>;\nexport type UsageInvocationReportResponse = Result<typeof ReportInvocationUsageResult>;\nexport type UsageEntitlementResponse = Result<typeof ReportUsageResult>;\nexport type BillingAlertsResponse = Result<typeof BillingAlertsResult>;\nexport type BillingLimitResponse = Result<typeof BillingLimitResult>;\nexport type BillingLimitsActiveResponse = Result<typeof BillingLimitsActiveResult>;\nexport type IpLocationResponse = Result<typeof IpLocationResult>;\nexport type RegistryCredentialsResult = Result<typeof RegistryCredentialsResponseSchema>;\nexport type SetAddOnResponse = Result<typeof SetAddOnResult>;\nexport type EnqueueBuildResult = Result<typeof EnqueueBuildResponseSchema>;\nexport type PrivateLinkConnectionListResponse = Result<typeof PrivateLinkConnectionList>;\nexport type PrivateLinkConnectionResponse = Result<typeof PrivateLinkConnection>;\nexport type DeletePrivateLinkResponse = Result<typeof DeletePrivateLinkResult>;\nexport type PrivateLinkRegionsResponse = Result<typeof PrivateLinkRegionsResult>;\nexport type TriggerInitialDeploymentResult = Result<typeof TriggerInitialDeploymentResponseSchema>;\nexport type ValidatePromoCodeResponse = Result<typeof ValidatePromoCodeResult>;\nexport type ApplyPromoCodeResponse = Result<typeof ApplyPromoCodeResult>;\nexport type PromoCreditsResponse = Result<typeof PromoCreditsResult>;\n\nexport class BillingClient {\n constructor(private readonly config: BillingClientConfig) {}\n\n async plans(): Promise<PlansResponse> {\n return await this.fetch(`/api/v1/plans/v3`, PlansResult);\n }\n\n async currentPlan(orgId: string): Promise<CurrentPlanResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}`, CurrentPlan);\n }\n\n async usage(orgId: string, params: UsageParams): Promise<UsageResponse> {\n const search = objectToSearchParams(params);\n return await this.fetch(`/api/v1/orgs/${orgId}/usage?${search?.toString()}`, UsageResult);\n }\n\n async usageSeries(orgId: string, params: UsageSeriesParams): Promise<UsageSeriesResponse> {\n const search = objectToSearchParams(params);\n return await this.fetch(\n `/api/v1/orgs/${orgId}/usage/series?${search?.toString()}`,\n UsageSeriesResult\n );\n }\n\n async setPlan(orgId: string, body: SetPlanBody): Promise<SetPlanResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/v3/subscription`, SubscribeResultSchema, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async cancelSubscription(orgId: string): Promise<CancelSubscriptionResult> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/v3/subscription/cancel`,\n CancelSubscriptionResponse,\n { method: \"POST\" }\n );\n }\n\n async setAddOn(orgId: string, body: SetAddOnBody): Promise<SetAddOnResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/v3/subscription/addon`, SetAddOnResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async validatePromoCode(code: string): Promise<ValidatePromoCodeResponse> {\n return await this.fetch(`/api/v1/promo-codes/validate`, ValidatePromoCodeResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ code }),\n });\n }\n\n async applyPromoCode(\n orgId: string,\n body: { code: string; userId: string }\n ): Promise<ApplyPromoCodeResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/promo/apply`, ApplyPromoCodeResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async promoCredits(orgId: string): Promise<PromoCreditsResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/promo/credits`, PromoCreditsResult);\n }\n\n async createPortalSession(\n orgId: string,\n body: CustomerPortalRequestBody\n ): Promise<CustomerPortalResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/v3/subscription/portal`, CustomerPortalSchema, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n /**\n *\n * @param event The data is in the body, not using a JWT\n * @returns details about usage\n */\n async reportInvocationUsage(\n event: ReportInvocationUsageEvent\n ): Promise<UsageInvocationReportResponse> {\n return await this.fetch(`/api/v1/usage/ingest/invocation`, ReportInvocationUsageResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(event),\n });\n }\n\n /**\n * Generates registry credentials for a project. This is used to push images to a project's container repository.\n *\n * @param projectId The ID of the project\n * @param region The region to generate credentials for\n * @returns The registry credentials\n */\n async generateRegistryCredentials(\n projectId: string,\n region: \"us-east-1\" | \"eu-central-1\"\n ): Promise<RegistryCredentialsResult> {\n return await this.fetch(\n `/api/v1/projects/${projectId}/generate-registry-credentials`,\n RegistryCredentialsResponseSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ region }),\n }\n );\n }\n\n /**\n * Enqueues a build for a project deployment.\n *\n * @param projectId The ID of the project\n * @param body The enqueue build request containing the deployment ID\n * @returns The build ID\n */\n async enqueueBuild(projectId: string, body: EnqueueBuildRequest): Promise<EnqueueBuildResult> {\n return await this.fetch(\n `/api/v1/projects/${projectId}/enqueue-build`,\n EnqueueBuildResponseSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n /**\n *\n * @param event The data is in the body, not using a JWT\n * @returns details about usage\n */\n async getEntitlement(orgId: string): Promise<UsageEntitlementResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/usage/entitlement`, ReportUsageResult);\n }\n\n async getBillingAlerts(orgId: string): Promise<BillingAlertsResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/billing-alerts`, BillingAlertsResult);\n }\n\n async updateBillingAlerts(\n orgId: string,\n body: UpdateBillingAlertsRequest\n ): Promise<BillingAlertsResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/billing-alerts`, BillingAlertsResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async getBillingLimit(orgId: string): Promise<BillingLimitResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/billing-limit`, BillingLimitResult);\n }\n\n async updateBillingLimit(\n orgId: string,\n body: UpdateBillingLimitRequest\n ): Promise<BillingLimitResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/billing-limit`, BillingLimitResult, {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async resolveBillingLimit(\n orgId: string,\n body: ResolveBillingLimitRequest\n ): Promise<BillingLimitResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/billing-limit/resolve`, BillingLimitResult, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async getActiveBillingLimits(): Promise<BillingLimitsActiveResponse> {\n return await this.fetch(`/api/v1/billing-limits/active`, BillingLimitsActiveResult);\n }\n\n /** Approximate country and network owner of an IP address. `location` is null when unknown. */\n async getIpLocation(ip: string): Promise<IpLocationResponse> {\n return await this.fetch(`/api/v1/ip-location?ip=${encodeURIComponent(ip)}`, IpLocationResult);\n }\n\n async getPrivateLinks(orgId: string): Promise<PrivateLinkConnectionListResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/private-connections`, PrivateLinkConnectionList);\n }\n\n async createPrivateLink(\n orgId: string,\n body: CreatePrivateLinkConnectionBody\n ): Promise<PrivateLinkConnectionResponse> {\n return await this.fetch(`/api/v1/orgs/${orgId}/private-connections`, PrivateLinkConnection, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n });\n }\n\n async deletePrivateLink(orgId: string, connectionId: string): Promise<DeletePrivateLinkResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/private-connections/${connectionId}`,\n DeletePrivateLinkResult,\n {\n method: \"DELETE\",\n }\n );\n }\n\n async getPrivateLinkRegions(orgId: string): Promise<PrivateLinkRegionsResponse> {\n return await this.fetch(\n `/api/v1/orgs/${orgId}/private-connections/regions`,\n PrivateLinkRegionsResult\n );\n }\n\n async triggerInitialDeployment(\n projectId: string,\n body: TriggerInitialDeploymentRequest\n ): Promise<TriggerInitialDeploymentResult> {\n return await this.fetch(\n `/api/v1/projects/${projectId}/initial-deployment`,\n TriggerInitialDeploymentResponseSchema,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async fetch<TSchema extends ZodType = z.ZodTypeAny>(\n path: string,\n schema: TSchema,\n requestInit?: RequestInit\n ): Promise<Result<TSchema>> {\n const response = await fetch(`${this.config.url}${path}`, {\n ...requestInit,\n headers: {\n ...requestInit?.headers,\n Authorization: `Bearer ${this.config.apiKey}`,\n },\n });\n\n if (!response.ok) {\n // Error bodies should be { error: string } JSON, but anything in\n // the path (proxy 502 pages, runtime-thrown plain-text Responses)\n // can produce non-JSON. Never let the error path itself throw —\n // fall back to a synthetic status-code error the callers' string\n // matching treats as the generic case.\n let parsedError: z.infer<typeof ErrorSchema>;\n try {\n parsedError = ErrorSchema.parse(await response.json());\n } catch {\n parsedError = { error: `http_${response.status}` };\n }\n return {\n success: false,\n ...parsedError,\n };\n }\n\n const json = await response.json();\n // zod v4 types a generic schema's output as `unknown` (v3 gave `any`); intersect\n // with `object` so it remains spreadable while keeping its inferred shape.\n const parsed = schema.parse(json) as z.infer<TSchema> & object;\n return {\n success: true,\n ...parsed,\n };\n }\n}\n\nexport function objectToSearchParams(\n obj:\n | undefined\n | Record<\n string,\n string | string[] | number | number[] | boolean | boolean[] | Date | Date[] | undefined\n >\n): URLSearchParams | undefined {\n if (!obj) return undefined;\n\n const searchParams = new URLSearchParams();\n //for each item add to the search params, skip undefined and join arrays with commas\n Object.entries(obj).forEach(([key, value]) => {\n if (value === undefined) return;\n if (Array.isArray(value)) {\n const values = value.map((d) => {\n if (d instanceof Date) return d.toISOString();\n return d;\n });\n\n searchParams.append(key, values.join(\",\"));\n } else {\n const v = value instanceof Date ? value.toISOString() : value;\n searchParams.append(key, v.toString());\n }\n });\n\n return searchParams;\n}\n","import type { MachineDefinition } from \"./schemas\";\n\nexport type MachineDefinitionInput = {\n code: string;\n title: string;\n cpu: number;\n memory: number;\n centsPerVCpuSecond: number;\n centsPerGbRamSecond: number;\n};\n\nexport function machineDefinition({\n code,\n title,\n cpu,\n memory,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n}: MachineDefinitionInput): MachineDefinition {\n const centsPerSecond = cpu * centsPerVCpuSecond + memory * centsPerGbRamSecond;\n const centsPerMs = centsPerSecond / 1000;\n return {\n code,\n title,\n cpu,\n memory,\n centsPerMs,\n };\n}\n","import { machineDefinition } from \"./machineDefinition\";\n\nconst centsPerVCpuSecond = Number(process.env.CENTS_PER_VCPU_SECOND ?? 0);\nconst centsPerGbRamSecond = Number(process.env.CENTS_PER_GB_RAM_SECOND ?? 0);\n\nexport const machines = {\n micro: machineDefinition({\n code: \"micro\",\n title: \"Micro\",\n cpu: 0.25,\n memory: 0.25,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"small-1x\": machineDefinition({\n code: \"small-1x\",\n title: \"Small 1x\",\n cpu: 0.5,\n memory: 0.5,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"small-2x\": machineDefinition({\n code: \"small-2x\",\n title: \"Small 2x\",\n cpu: 1,\n memory: 1,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"medium-1x\": machineDefinition({\n code: \"medium-1x\",\n title: \"Medium 1x\",\n cpu: 1,\n memory: 2,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"medium-2x\": machineDefinition({\n code: \"medium-2x\",\n title: \"Medium 2x\",\n cpu: 2,\n memory: 4,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"large-1x\": machineDefinition({\n code: \"large-1x\",\n title: \"Large 1x\",\n cpu: 4,\n memory: 8,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n \"large-2x\": machineDefinition({\n code: \"large-2x\",\n title: \"Large 2x\",\n cpu: 8,\n memory: 16,\n centsPerVCpuSecond,\n centsPerGbRamSecond,\n }),\n};\n\nexport type MachineCode = keyof typeof machines;\n\nexport const defaultMachine: MachineCode = \"small-1x\";\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trigger.dev/platform",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "Used to communicate with the Trigger.dev platform. This is not a package you should use directly.",
5
5
  "license": "MIT",
6
6
  "type": "module",