Merge main changes into development

This commit is contained in:
Joshua Smith
2025-04-21 09:56:58 -04:00
11 changed files with 247 additions and 36 deletions

View File

@@ -23,7 +23,7 @@
"status": "shipped",
"order_date": "2025-04-01",
"last_order_update": "2025-04-01",
"tracking_id": "1Z111111"
"tracking_id": "UPS67890"
},
{
"id": "200",
@@ -32,7 +32,7 @@
"status": "shipped",
"order_date": "2025-04-03",
"last_update": "2025-04-06",
"tracking_id": "991111"
"tracking_id": "USPS12345"
},
{
"id": "300",
@@ -41,7 +41,7 @@
"status": "shipped",
"order_date": "2025-03-30",
"last_update": "2025-04-06",
"tracking_id": "991111"
"tracking_id": "USPS12345"
},
{
"id": "301",
@@ -58,7 +58,7 @@
"status": "delivered",
"order_date": "2025-04-01",
"last_update": "2025-04-06",
"tracking_id": "1Z11111"
"tracking_id": "UPS67890"
},
{
"id": "400",
@@ -67,7 +67,7 @@
"status": "shipped",
"order_date": "2025-04-03",
"last_update": "2025-04-09",
"tracking_id": "1Z111111"
"tracking_id": "UPS67890"
},
{
"id": "401",
@@ -76,6 +76,6 @@
"status": "processing",
"order_date": "2025-04-03",
"last_update": "2025-04-09"
}
}
]
}

View File

@@ -0,0 +1,158 @@
{
"packages": [
{
"TrackingNumber": "USPS12345",
"Delivered": false,
"Carrier": "USPS",
"ServiceType": "USPS Ground Advantage<SUP>&#153;</SUP>",
"PickupDate": "",
"ScheduledDeliveryDate": "April 14, 2025",
"ScheduledDeliveryDateInDateTimeFromat": "2025-04-14T00:00:00",
"StatusCode": "In Transit from Origin Processing",
"Status": "Departed Post Office",
"StatusSummary": "Your item has left our acceptance facility and is in transit to a sorting facility on April 10, 2025 at 7:06 am in IRON RIDGE, WI 53035.",
"Message": "",
"DeliveredDateTime": "",
"DeliveredDateTimeInDateTimeFormat": null,
"SignatureName": "",
"DestinationCity": "CITY",
"DestinationState": "ST",
"DestinationZip": "12345",
"DestinationCountry": null,
"EventDate": "2025-04-10T07:06:00",
"TrackingDetails": [
{
"EventDateTime": "April 10, 2025 7:06 am",
"Event": "Departed Post Office",
"EventAddress": "IRON RIDGE WI 53035",
"State": "WI",
"City": "IRON RIDGE",
"Zip": "53035",
"EventDateTimeInDateTimeFormat": "2025-04-10T07:06:00"
},
{
"EventDateTime": "April 9, 2025 11:29 am",
"Event": "USPS picked up item",
"EventAddress": "IRON RIDGE WI 53035",
"State": "WI",
"City": "IRON RIDGE",
"Zip": "53035",
"EventDateTimeInDateTimeFormat": "2025-04-09T11:29:00"
},
{
"EventDateTime": "April 7, 2025 6:29 am",
"Event": "Shipping Label Created, USPS Awaiting Item",
"EventAddress": "IRON RIDGE WI 53035",
"State": "WI",
"City": "IRON RIDGE",
"Zip": "53035",
"EventDateTimeInDateTimeFormat": "2025-04-07T06:29:00"
}
]
},
{
"TrackingNumber": "UPS67890",
"Delivered": true,
"Carrier": "UPS",
"ServiceType": "UPS Ground Saver®",
"PickupDate": "",
"ScheduledDeliveryDate": "",
"ScheduledDeliveryDateInDateTimeFromat": null,
"StatusCode": "D",
"Status": "DELIVERED",
"StatusSummary": "DELIVERED",
"Message": "",
"DeliveredDateTime": "20250415 154315",
"DeliveredDateTimeInDateTimeFormat": "2025-04-15T15:43:15",
"SignatureName": "",
"DestinationCity": "CHICAGO",
"DestinationState": "IL",
"DestinationZip": "",
"DestinationCountry": "US",
"EventDate": "2025-04-15T15:43:15",
"TrackingDetails": [
{
"EventDateTime": "20250415 154315",
"Event": "DELIVERED ",
"EventAddress": "CHICAGO IL US",
"State": "IL",
"City": "CHICAGO",
"Zip": null,
"EventDateTimeInDateTimeFormat": "2025-04-15T15:43:15"
},
{
"EventDateTime": "20250415 090938",
"Event": "Out For Delivery Today",
"EventAddress": "Chicago IL US",
"State": "IL",
"City": "Chicago",
"Zip": null,
"EventDateTimeInDateTimeFormat": "2025-04-15T09:09:38"
},
{
"EventDateTime": "20250415 074141",
"Event": "Loaded on Delivery Vehicle ",
"EventAddress": "Chicago IL US",
"State": "IL",
"City": "Chicago",
"Zip": null,
"EventDateTimeInDateTimeFormat": "2025-04-15T07:41:41"
},
{
"EventDateTime": "20250415 032200",
"Event": "Arrived at Facility",
"EventAddress": "Chicago IL US",
"State": "IL",
"City": "Chicago",
"Zip": null,
"EventDateTimeInDateTimeFormat": "2025-04-15T03:22:00"
},
{
"EventDateTime": "20250414 223000",
"Event": "Departed from Facility",
"EventAddress": "Hodgkins IL US",
"State": "IL",
"City": "Hodgkins",
"Zip": null,
"EventDateTimeInDateTimeFormat": "2025-04-14T22:30:00"
},
{
"EventDateTime": "20250414 002700",
"Event": "Arrived at Facility",
"EventAddress": "Hodgkins IL US",
"State": "IL",
"City": "Hodgkins",
"Zip": null,
"EventDateTimeInDateTimeFormat": "2025-04-14T00:27:00"
},
{
"EventDateTime": "20250410 211700",
"Event": "Departed from Facility",
"EventAddress": "Las Vegas NV US",
"State": "NV",
"City": "Las Vegas",
"Zip": null,
"EventDateTimeInDateTimeFormat": "2025-04-10T21:17:00"
},
{
"EventDateTime": "20250410 132625",
"Event": "Arrived at Facility",
"EventAddress": "Las Vegas NV US",
"State": "NV",
"City": "Las Vegas",
"Zip": null,
"EventDateTimeInDateTimeFormat": "2025-04-10T13:26:25"
},
{
"EventDateTime": "20250409 100659",
"Event": "Shipper created a label, UPS has not received the package yet. ",
"EventAddress": " US",
"State": null,
"City": null,
"Zip": null,
"EventDateTimeInDateTimeFormat": "2025-04-09T10:06:59"
}
]
}
]
}

View File

@@ -18,10 +18,6 @@ def get_order(args: dict) -> dict:
for order in order_list:
if order["id"] == order_id:
return order
# if order["status"] == "shipped":
# return{"status": order["status"], "tracking_id": order["tracking_id"]}
# else:
# return{"status": order["status"]}
return_msg = "Order " + order_id + " not found."
return {"error": return_msg}

View File

@@ -2,12 +2,46 @@ import http
import os
import json
def track_package_faked(args: dict) -> dict:
from pathlib import Path
#Send back dummy data in the correct format - to use the real API, 1) change this to be track_package_fake and 2) change the below track_package_real to be track_package
def track_package(args: dict) -> dict:
tracking_id = args.get("tracking_id")
file_path = Path(__file__).resolve().parent.parent / "data" / "dummy_tracking_data.json"
if not file_path.exists():
return {"error": "Data file not found."}
with open(file_path, "r") as file:
data = json.load(file)
package_list = data["packages"]
for package in package_list:
if package["TrackingNumber"] == tracking_id:
scheduled_delivery_date = package["ScheduledDeliveryDate"]
carrier = package["Carrier"]
status_summary = package["StatusSummary"]
tracking_details = package.get("TrackingDetails", [])
last_tracking_update = ""
if tracking_details and tracking_details is not None and tracking_details[0] is not None:
last_tracking_update = tracking_details[0]["EventDateTimeInDateTimeFormat"]
tracking_link = ""
if carrier == "USPS":
tracking_link = f"https://tools.usps.com/go/TrackConfirmAction?qtc_tLabels1={tracking_id}"
elif carrier == "UPS":
tracking_link = f"https://www.ups.com/track?track=yes&trackNums={tracking_id}"
return {
"scheduled_delivery_date": scheduled_delivery_date,
"carrier": carrier,
"status_summary": status_summary,
"tracking_link": tracking_link,
"last_tracking_update": last_tracking_update
}
#return_msg = "Account not found with email address " + email + " or account ID: " + account_id
return {"tracking_info": "delivered, probably"}
return_msg = "Package not found with tracking info " + tracking_id
return {"error": return_msg}
'''Format of response:
{
@@ -61,7 +95,7 @@ def track_package_faked(args: dict) -> dict:
]
}
'''
def track_package(args: dict) -> dict:
def track_package_real(args: dict) -> dict:
tracking_id = args.get("tracking_id")

View File

@@ -77,8 +77,6 @@ async def move_money(args: dict) -> dict:
# Async function to start workflow
async def start_workflow(amount_cents: int, from_account_name: str, to_account_name: str)-> str:
# Connect to Temporal
client = await get_temporal_client()
start_real_workflow = os.getenv("FIN_START_REAL_WORKFLOW")
if start_real_workflow is not None and start_real_workflow.lower() == "false":
START_REAL_WORKFLOW = False
@@ -86,6 +84,8 @@ async def start_workflow(amount_cents: int, from_account_name: str, to_account_n
START_REAL_WORKFLOW = True
if START_REAL_WORKFLOW:
# Connect to Temporal
client = await get_temporal_client()
# Create the parameter object
params = MoneyMovementWorkflowParameterObj(
amount=amount_cents,

View File

@@ -46,14 +46,14 @@ async def submit_loan_application(args: dict) -> dict:
# Async function to start workflow
async def start_workflow(amount: str, account_name: str, )-> dict:
# Connect to Temporal
client = await get_temporal_client()
start_real_workflow = os.getenv("FIN_START_REAL_WORKFLOW")
if start_real_workflow is not None and start_real_workflow.lower() == "false":
START_REAL_WORKFLOW = False
return {'loan_application_status': "applied", 'application_details': "loan application is submitted and initial validation is complete",'transaction_id': "APPLICATION"+account_name, 'advisement': "You'll receive a confirmation for final approval in three business days", }
else:
START_REAL_WORKFLOW = True
# Connect to Temporal
client = await get_temporal_client()
# Define the workflow ID and task queue
workflow_id = "LOAN_APPLICATION-"+account_name+"-"+date.today().strftime('%Y-%m-%d')

View File

@@ -346,7 +346,7 @@ goal_fin_move_money = AgentGoal(
)
# this starts a loan approval process
# it also uses a separate workflow/tool, see ./setup.md for details #todo
# it also uses a separate workflow/tool, see ./setup.md for details
goal_fin_loan_application = AgentGoal(
id = "goal_fin_loan_application",
category_tag="fin",
@@ -354,7 +354,7 @@ goal_fin_loan_application = AgentGoal(
agent_friendly_description="Initiate loan application.",
tools=[
tool_registry.financial_check_account_is_valid,
tool_registry.financial_submit_loan_approval, #todo
tool_registry.financial_submit_loan_approval,
],
description="The user wants to apply for a loan at the financial institution. To assist with that goal, help the user gather args for these tools in order: "
"1. FinCheckAccountIsValid: validate the user's account is valid"
@@ -377,7 +377,6 @@ goal_fin_loan_application = AgentGoal(
)
# ----- E-Commerce Goals ---
#todo: add goal to list all orders for last X amount of time?
# this tool checks account balances, and uses ./data/customer_account_data.json as dummy data
goal_ecomm_order_status = AgentGoal(
id = "goal_ecomm_order_status",
@@ -395,8 +394,8 @@ goal_ecomm_order_status = AgentGoal(
example_conversation_history="\n ".join(
[
"user: I'd like to know the status of my order",
"agent: Sure! I can help you out with that. May I have your email address or order number?",
"user: email is bob.johnson@emailzzz.com ",
"agent: Sure! I can help you out with that. May I have your order number?",
"user: 102 ",
"user_confirmed_tool_run: <user clicks confirm on GetOrderStatus tool>",
"tool_result: { 'id': '102', 'summary': 'Red Sunglasses', 'email': 'matt.murdock@nelsonmurdock.com', 'status': 'shipped', 'order_date': '2025-04-01', 'last_order_update': '2025-04-06', 'tracking_id': '039813852990618' }",
"agent: Your order 'Red Sunglasses,' placed April 1, 2025, was shipped on April 6, 2025. Would you like to see the tracking inforation?",