From d09db9f11f079cb8494af4795bcf9e45fd0ea6b4 Mon Sep 17 00:00:00 2001 From: Laine Date: Wed, 5 Mar 2025 17:24:18 -0500 Subject: [PATCH] Move where goal is set, make dummy data default for create_invoice --- api/main.py | 13 ++++++-- tools/create_invoice.py | 72 +++++++++++++++++++++++------------------ tools/goal_registry.py | 1 - 3 files changed, 51 insertions(+), 35 deletions(-) diff --git a/api/main.py b/api/main.py index b381bb6..0b453e2 100644 --- a/api/main.py +++ b/api/main.py @@ -23,12 +23,21 @@ load_dotenv() def get_agent_goal(): """Get the agent goal from environment variables.""" - goal_name = os.getenv("AGENT_GOAL", "goal_match_train_invoice") goals = { "goal_match_train_invoice": goal_match_train_invoice, "goal_event_flight_invoice": goal_event_flight_invoice, } - return goals.get(goal_name, goal_event_flight_invoice) +# Agent Goal Configuration +#AGENT_GOAL=goal_event_flight_invoice +#AGENT_GOAL=goal_match_train_invoice + + #goal_name = os.getenv("AGENT_GOAL") + goal_name = "goal_event_flight_invoice" + if goal_name is not None: + return goals.get(goal_name) + else: + #if no goal is set in the env file, default to event/flight use case + return goals.get("goal_event_flight_invoice", goal_event_flight_invoice) @app.on_event("startup") diff --git a/tools/create_invoice.py b/tools/create_invoice.py index 4771a53..9fcd1aa 100644 --- a/tools/create_invoice.py +++ b/tools/create_invoice.py @@ -4,7 +4,7 @@ from dotenv import load_dotenv load_dotenv(override=True) # Load environment variables from a .env file -stripe.api_key = os.getenv("STRIPE_API_KEY", "YOUR_DEFAULT_KEY") +stripe.api_key = os.getenv("STRIPE_API_KEY") def ensure_customer_exists( @@ -26,41 +26,49 @@ def ensure_customer_exists( def create_invoice(args: dict) -> dict: """Create and finalize a Stripe invoice.""" - # Find or create customer - customer_id = ensure_customer_exists( - args.get("customer_id"), args.get("email", "default@example.com") - ) + # If an API key exists in the env file, find or create customer + if stripe.api_key is not None: + customer_id = ensure_customer_exists( + args.get("customer_id"), args.get("email", "default@example.com") + ) - # Get amount and convert to cents - amount = args.get("amount", 200.00) # Default to $200.00 - try: - amount_cents = int(float(amount) * 100) - except (TypeError, ValueError): - return {"error": "Invalid amount provided. Please confirm the amount."} + # Get amount and convert to cents + amount = args.get("amount", 200.00) # Default to $200.00 + try: + amount_cents = int(float(amount) * 100) + except (TypeError, ValueError): + return {"error": "Invalid amount provided. Please confirm the amount."} - # Create an invoice item - stripe.InvoiceItem.create( - customer=customer_id, - amount=amount_cents, - currency="gbp", - description=args.get("tripDetails", "Service Invoice"), - ) + # Create an invoice item + stripe.InvoiceItem.create( + customer=customer_id, + amount=amount_cents, + currency="gbp", + description=args.get("tripDetails", "Service Invoice"), + ) - # Create and finalize the invoice - invoice = stripe.Invoice.create( - customer=customer_id, - collection_method="send_invoice", # Invoice is sent to the customer - days_until_due=args.get("days_until_due", 7), # Default due date: 7 days - pending_invoice_items_behavior="include", # No pending invoice items - ) - finalized_invoice = stripe.Invoice.finalize_invoice(invoice.id) - - return { - "invoiceStatus": finalized_invoice.status, - "invoiceURL": finalized_invoice.hosted_invoice_url, - "reference": finalized_invoice.number, - } + # Create and finalize the invoice + invoice = stripe.Invoice.create( + customer=customer_id, + collection_method="send_invoice", # Invoice is sent to the customer + days_until_due=args.get("days_until_due", 7), # Default due date: 7 days + pending_invoice_items_behavior="include", # No pending invoice items + ) + finalized_invoice = stripe.Invoice.finalize_invoice(invoice.id) + return { + "invoiceStatus": finalized_invoice.status, + "invoiceURL": finalized_invoice.hosted_invoice_url, + "reference": finalized_invoice.number, + } + # if no API key is in the env file, return dummy info + else: + print("[CreateInvoice] Creating invoice with:", args) + return { + "invoiceStatus": "generated", + "invoiceURL": "https://pay.example.com/invoice/12345", + "reference": "INV-12345", + } def create_invoice_example(args: dict) -> dict: """ diff --git a/tools/goal_registry.py b/tools/goal_registry.py index a903d68..db7d1fc 100644 --- a/tools/goal_registry.py +++ b/tools/goal_registry.py @@ -51,7 +51,6 @@ goal_match_train_invoice = AgentGoal( ), ) -# unused goal_event_flight_invoice = AgentGoal( tools=[ find_events_tool,