diff --git a/apps/web/src/components/project-pricing-plans/project-pricing-plan.tsx b/apps/web/src/components/project-pricing-plans/project-pricing-plan.tsx index 3a2310f7..e7860e7a 100644 --- a/apps/web/src/components/project-pricing-plans/project-pricing-plan.tsx +++ b/apps/web/src/components/project-pricing-plans/project-pricing-plan.tsx @@ -41,14 +41,20 @@ export function ProjectPricingPlan({ const requestsLineItem = lineItems.find( (lineItem) => lineItem.slug === 'requests' ) + + // TODO: rate-limits + // const deployment = project.lastPublishedDeployment + // const requestsRateLimit = plan.rateLimit ?? deployment?.defaultRateLimit + // TODO: support custom line-items // const customLineItems = lineItems.find( // (lineItem) => lineItem.slug !== 'base' && lineItem.slug !== 'requests' // ) // TODO: support defaultAggregation + // TODO: support trialPeriodDays - // TODO: add rate-limits and finesse free tier to not be so basic + // TODO: add rate-limits and finesse free tier to not be so bare-bones return (
@@ -79,7 +85,7 @@ export function ProjectPricingPlan({ {requestsLineItem.billingScheme === 'per_unit' ? ( -
+
${pricingAmountToFixedString(requestsLineItem.unitAmount)}
@@ -92,7 +98,7 @@ export function ProjectPricingPlan({
) : requestsLineItem.billingScheme === 'tiered' ? ( -
+
{requestsLineItem.tiers?.map((tier, index) => { const isFirst = index === 0 // const isLast = index >= requestsLineItem.tiers!.length - 1 @@ -176,6 +182,12 @@ export function ProjectPricingPlan({
)} + {plan.slug === 'free' && ( +

+ Try before you buy. 100% free! +

+ )} + {requestsLineItem?.billingScheme === 'tiered' && (

{requestsLineItem.tiersMode === 'graduated' ? ( diff --git a/packages/types/src/tools.ts b/packages/types/src/tools.ts index 88406a9d..14f0fbd2 100644 --- a/packages/types/src/tools.ts +++ b/packages/types/src/tools.ts @@ -101,8 +101,15 @@ export type PricingPlanToolOverride = z.infer< export const toolConfigExampleSchema = z.object({ /** * The display name of the example. + * + * If not given, defaults to `Example 1`, `Example 2`, etc. */ - name: z.string().describe('The display name of the example.'), + name: z + .string() + .optional() + .describe( + 'The display name of the example. If not given, defaults to `Example 1`, `Example 2`, etc.' + ), /** * The input prompt for agents to use when running this example.