diff --git a/tools/data/customer_order_data.json b/tools/data/customer_order_data.json
index 8281351..23294ce 100644
--- a/tools/data/customer_order_data.json
+++ b/tools/data/customer_order_data.json
@@ -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"
- }
+ }
]
}
\ No newline at end of file
diff --git a/tools/data/dummy_tracking_data.json b/tools/data/dummy_tracking_data.json
new file mode 100644
index 0000000..17dc30a
--- /dev/null
+++ b/tools/data/dummy_tracking_data.json
@@ -0,0 +1,158 @@
+{
+ "packages": [
+ {
+ "TrackingNumber": "USPS12345",
+ "Delivered": false,
+ "Carrier": "USPS",
+ "ServiceType": "USPS Ground Advantage",
+ "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"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tools/ecommerce/get_order.py b/tools/ecommerce/get_order.py
index 5634b7a..c796cec 100644
--- a/tools/ecommerce/get_order.py
+++ b/tools/ecommerce/get_order.py
@@ -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}
\ No newline at end of file
diff --git a/tools/ecommerce/track_package.py b/tools/ecommerce/track_package.py
index 55b14fd..05d67e8 100644
--- a/tools/ecommerce/track_package.py
+++ b/tools/ecommerce/track_package.py
@@ -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")
diff --git a/tools/goal_registry.py b/tools/goal_registry.py
index a164498..a29e9d2 100644
--- a/tools/goal_registry.py
+++ b/tools/goal_registry.py
@@ -371,7 +371,9 @@ goal_fin_loan_application = AgentGoal(
"user_confirmed_tool_run: ",
"tool_result: { 'status': submitted, 'detailed_status': loan application is submitted and initial validation is complete, 'confirmation id': 333421, 'next_step': You'll receive a confirmation for final approval in three business days }",
"agent: I have submitted your loan application process and the initial validation is successful. Your application ID is 333421. You'll receive a notification for final approval from us in three business days. "
-
+ ]
+ ),
+)
# ----- 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
diff --git a/tools/tool_registry.py b/tools/tool_registry.py
index efc3cf3..ed19e63 100644
--- a/tools/tool_registry.py
+++ b/tools/tool_registry.py
@@ -333,6 +333,9 @@ financial_submit_loan_approval = ToolDefinition(
name="amount",
type="string",
description="amount requested for the loan",
+ ),
+ ],
+)
# ----- ECommerce Use Case Tools -----
ecomm_list_orders = ToolDefinition(