agentmall 0.1.17 → 0.1.18
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/cli.js +91 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -405,6 +405,71 @@ var FAILURE_MESSAGES = {
|
|
|
405
405
|
function formatCents(cents) {
|
|
406
406
|
return `$${(cents / 100).toFixed(2)}`;
|
|
407
407
|
}
|
|
408
|
+
function compactTrackingValue(value) {
|
|
409
|
+
if (typeof value === "string") {
|
|
410
|
+
const trimmed = value.trim();
|
|
411
|
+
return trimmed || null;
|
|
412
|
+
}
|
|
413
|
+
if (typeof value === "number" || typeof value === "boolean") {
|
|
414
|
+
return String(value);
|
|
415
|
+
}
|
|
416
|
+
return null;
|
|
417
|
+
}
|
|
418
|
+
function normalizeTrackingCarrier(carrier, trackingNumber) {
|
|
419
|
+
const carrierValue = carrier?.trim().toLowerCase() ?? null;
|
|
420
|
+
const trackingValue = trackingNumber?.trim().toUpperCase() ?? null;
|
|
421
|
+
if ((carrierValue === "znlogic" || carrierValue === "amazon logistics") && trackingValue?.startsWith("TBA")) {
|
|
422
|
+
return "amazon";
|
|
423
|
+
}
|
|
424
|
+
return carrierValue;
|
|
425
|
+
}
|
|
426
|
+
function trackingUrlForCarrier(carrier, trackingNumber) {
|
|
427
|
+
if (!trackingNumber) return null;
|
|
428
|
+
switch (normalizeTrackingCarrier(carrier, trackingNumber)) {
|
|
429
|
+
case "ups":
|
|
430
|
+
return `https://www.ups.com/track?tracknum=${encodeURIComponent(trackingNumber)}`;
|
|
431
|
+
case "fedex":
|
|
432
|
+
return `https://www.fedex.com/fedextrack/?trknbr=${encodeURIComponent(trackingNumber)}`;
|
|
433
|
+
case "usps":
|
|
434
|
+
return `https://tools.usps.com/go/TrackConfirmAction?tLabels=${encodeURIComponent(trackingNumber)}`;
|
|
435
|
+
case "amazon":
|
|
436
|
+
return `https://www.amazon.com/progress-tracker/package/?trackingId=${encodeURIComponent(trackingNumber)}`;
|
|
437
|
+
case "dhl":
|
|
438
|
+
return `https://www.dhl.com/us-en/home/tracking.html?tracking-id=${encodeURIComponent(trackingNumber)}`;
|
|
439
|
+
default:
|
|
440
|
+
return null;
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
function trackingLines(tracking) {
|
|
444
|
+
const direct = compactTrackingValue(tracking);
|
|
445
|
+
if (direct) return [direct];
|
|
446
|
+
if (Array.isArray(tracking)) {
|
|
447
|
+
return tracking.flatMap((entry) => trackingLines(entry)).filter((line2, index, lines2) => line2 && lines2.indexOf(line2) === index);
|
|
448
|
+
}
|
|
449
|
+
if (!tracking || typeof tracking !== "object") {
|
|
450
|
+
return [];
|
|
451
|
+
}
|
|
452
|
+
const record = tracking;
|
|
453
|
+
const carrierRaw = compactTrackingValue(record.carrier) ?? compactTrackingValue(record.provider) ?? compactTrackingValue(record.shipper);
|
|
454
|
+
const number = compactTrackingValue(record.tracking_number) ?? compactTrackingValue(record.trackingNumber) ?? compactTrackingValue(record.number) ?? compactTrackingValue(record.code);
|
|
455
|
+
const carrier = normalizeTrackingCarrier(carrierRaw, number);
|
|
456
|
+
const url = compactTrackingValue(record.tracking_url) ?? compactTrackingValue(record.trackingUrl) ?? compactTrackingValue(record.url) ?? trackingUrlForCarrier(carrier, number);
|
|
457
|
+
const lines = [];
|
|
458
|
+
if (carrier && number) {
|
|
459
|
+
lines.push(`${carrier}: ${number}`);
|
|
460
|
+
} else if (number) {
|
|
461
|
+
lines.push(number);
|
|
462
|
+
} else if (carrier) {
|
|
463
|
+
lines.push(carrier);
|
|
464
|
+
}
|
|
465
|
+
if (url) lines.push(url);
|
|
466
|
+
for (const nestedKey of ["shipments", "tracking_numbers", "trackingNumbers", "numbers"]) {
|
|
467
|
+
if (nestedKey in record) {
|
|
468
|
+
lines.push(...trackingLines(record[nestedKey]));
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
return lines.filter((line2, index, all) => line2 && all.indexOf(line2) === index);
|
|
472
|
+
}
|
|
408
473
|
function getBudgetBasePrice(product) {
|
|
409
474
|
return product.price;
|
|
410
475
|
}
|
|
@@ -568,6 +633,13 @@ function displayStatus(purchase) {
|
|
|
568
633
|
if (purchase.deliveryMethod) {
|
|
569
634
|
kv("Shipping", purchase.deliveryMethod);
|
|
570
635
|
}
|
|
636
|
+
const tracking = trackingLines(purchase.tracking);
|
|
637
|
+
if (tracking.length) {
|
|
638
|
+
kv("Tracking", tracking[0]);
|
|
639
|
+
for (const extra of tracking.slice(1)) {
|
|
640
|
+
kv("", extra, { dim: true });
|
|
641
|
+
}
|
|
642
|
+
}
|
|
571
643
|
kv("Created", new Date(purchase.createdAt).toLocaleString(), { dim: true });
|
|
572
644
|
gap();
|
|
573
645
|
}
|
|
@@ -592,7 +664,7 @@ function displayRefund(refund2) {
|
|
|
592
664
|
import { input, confirm, select } from "@inquirer/prompts";
|
|
593
665
|
async function promptProductUrl() {
|
|
594
666
|
return input({
|
|
595
|
-
message: "Product URL",
|
|
667
|
+
message: "Product URL or retailer link",
|
|
596
668
|
validate: (value) => {
|
|
597
669
|
try {
|
|
598
670
|
const url = new URL(value);
|
|
@@ -758,6 +830,19 @@ async function getBuyerToken(purchaseId) {
|
|
|
758
830
|
|
|
759
831
|
// src/cli/index.ts
|
|
760
832
|
var EMAIL_PATTERN = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
833
|
+
var SUPPORTED_RETAILER_LABELS = [
|
|
834
|
+
"Amazon",
|
|
835
|
+
"Walmart",
|
|
836
|
+
"Target",
|
|
837
|
+
"Best Buy",
|
|
838
|
+
"Home Depot",
|
|
839
|
+
"eBay",
|
|
840
|
+
"Lowe's",
|
|
841
|
+
"Wayfair",
|
|
842
|
+
"Ace Hardware",
|
|
843
|
+
"1-800-Flowers",
|
|
844
|
+
"Pokemon Center"
|
|
845
|
+
];
|
|
761
846
|
function parseTempoBalance(balance) {
|
|
762
847
|
const parsed = Number.parseFloat(balance ?? "0");
|
|
763
848
|
return Number.isFinite(parsed) ? parsed : 0;
|
|
@@ -939,6 +1024,11 @@ async function buy(urlArg) {
|
|
|
939
1024
|
try {
|
|
940
1025
|
banner();
|
|
941
1026
|
gap();
|
|
1027
|
+
if (!urlArg) {
|
|
1028
|
+
muted("Paste a product URL from a supported retailer.");
|
|
1029
|
+
muted(`Supported retailers: ${SUPPORTED_RETAILER_LABELS.join(", ")}.`);
|
|
1030
|
+
gap();
|
|
1031
|
+
}
|
|
942
1032
|
const url = urlArg ?? await promptProductUrl();
|
|
943
1033
|
const client = new AgentMall();
|
|
944
1034
|
const product = await spin(
|
package/dist/index.d.cts
CHANGED
package/dist/index.d.ts
CHANGED