@opentabs-dev/opentabs-plugin-priceline 0.0.74
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/README.md +159 -0
- package/dist/adapter.iife.js +15220 -0
- package/dist/adapter.iife.js.map +7 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/priceline-api.d.ts +8 -0
- package/dist/priceline-api.d.ts.map +1 -0
- package/dist/priceline-api.js +120 -0
- package/dist/priceline-api.js.map +1 -0
- package/dist/tools/get-abandoned-items.d.ts +13 -0
- package/dist/tools/get-abandoned-items.d.ts.map +1 -0
- package/dist/tools/get-abandoned-items.js +42 -0
- package/dist/tools/get-abandoned-items.js.map +1 -0
- package/dist/tools/get-customer-coupons.d.ts +19 -0
- package/dist/tools/get-customer-coupons.d.ts.map +1 -0
- package/dist/tools/get-customer-coupons.js +56 -0
- package/dist/tools/get-customer-coupons.js.map +1 -0
- package/dist/tools/get-customer-profile.d.ts +12 -0
- package/dist/tools/get-customer-profile.d.ts.map +1 -0
- package/dist/tools/get-customer-profile.js +27 -0
- package/dist/tools/get-customer-profile.js.map +1 -0
- package/dist/tools/get-favorite-hotels.d.ts +10 -0
- package/dist/tools/get-favorite-hotels.d.ts.map +1 -0
- package/dist/tools/get-favorite-hotels.js +37 -0
- package/dist/tools/get-favorite-hotels.js.map +1 -0
- package/dist/tools/get-hotel-descriptions.d.ts +10 -0
- package/dist/tools/get-hotel-descriptions.d.ts.map +1 -0
- package/dist/tools/get-hotel-descriptions.js +29 -0
- package/dist/tools/get-hotel-descriptions.js.map +1 -0
- package/dist/tools/get-hotel-filters.d.ts +16 -0
- package/dist/tools/get-hotel-filters.d.ts.map +1 -0
- package/dist/tools/get-hotel-filters.js +41 -0
- package/dist/tools/get-hotel-filters.js.map +1 -0
- package/dist/tools/get-merchandising-badges.d.ts +11 -0
- package/dist/tools/get-merchandising-badges.d.ts.map +1 -0
- package/dist/tools/get-merchandising-badges.js +30 -0
- package/dist/tools/get-merchandising-badges.js.map +1 -0
- package/dist/tools/get-price-guidance.d.ts +23 -0
- package/dist/tools/get-price-guidance.d.ts.map +1 -0
- package/dist/tools/get-price-guidance.js +49 -0
- package/dist/tools/get-price-guidance.js.map +1 -0
- package/dist/tools/navigate-to-hotel.d.ts +12 -0
- package/dist/tools/navigate-to-hotel.d.ts.map +1 -0
- package/dist/tools/navigate-to-hotel.js +29 -0
- package/dist/tools/navigate-to-hotel.js.map +1 -0
- package/dist/tools/navigate-to-search.d.ts +12 -0
- package/dist/tools/navigate-to-search.d.ts.map +1 -0
- package/dist/tools/navigate-to-search.js +29 -0
- package/dist/tools/navigate-to-search.js.map +1 -0
- package/dist/tools/schemas.d.ts +237 -0
- package/dist/tools/schemas.d.ts.map +1 -0
- package/dist/tools/schemas.js +160 -0
- package/dist/tools/schemas.js.map +1 -0
- package/dist/tools/search-hotels.d.ts +48 -0
- package/dist/tools/search-hotels.d.ts.map +1 -0
- package/dist/tools/search-hotels.js +78 -0
- package/dist/tools/search-hotels.js.map +1 -0
- package/dist/tools/search-locations.d.ts +19 -0
- package/dist/tools/search-locations.d.ts.map +1 -0
- package/dist/tools/search-locations.js +24 -0
- package/dist/tools/search-locations.js.map +1 -0
- package/dist/tools/search-points-of-interest.d.ts +21 -0
- package/dist/tools/search-points-of-interest.d.ts.map +1 -0
- package/dist/tools/search-points-of-interest.js +35 -0
- package/dist/tools/search-points-of-interest.js.map +1 -0
- package/dist/tools.json +1132 -0
- package/package.json +54 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const searchHotels: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
location_id: z.ZodString;
|
|
4
|
+
check_in: z.ZodString;
|
|
5
|
+
check_out: z.ZodString;
|
|
6
|
+
adults: z.ZodOptional<z.ZodNumber>;
|
|
7
|
+
rooms: z.ZodOptional<z.ZodNumber>;
|
|
8
|
+
sort_by: z.ZodOptional<z.ZodEnum<{
|
|
9
|
+
HDR: "HDR";
|
|
10
|
+
GSR: "GSR";
|
|
11
|
+
PRC: "PRC";
|
|
12
|
+
SRN: "SRN";
|
|
13
|
+
DS: "DS";
|
|
14
|
+
}>>;
|
|
15
|
+
offset: z.ZodOptional<z.ZodNumber>;
|
|
16
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
17
|
+
city: z.ZodObject<{
|
|
18
|
+
city_id: z.ZodNumber;
|
|
19
|
+
city_name: z.ZodString;
|
|
20
|
+
state_code: z.ZodString;
|
|
21
|
+
country_code: z.ZodString;
|
|
22
|
+
display_name: z.ZodString;
|
|
23
|
+
latitude: z.ZodNumber;
|
|
24
|
+
longitude: z.ZodNumber;
|
|
25
|
+
}, z.core.$strip>;
|
|
26
|
+
hotels: z.ZodArray<z.ZodObject<{
|
|
27
|
+
hotel_id: z.ZodString;
|
|
28
|
+
name: z.ZodString;
|
|
29
|
+
star_rating: z.ZodNumber;
|
|
30
|
+
guest_rating: z.ZodNumber;
|
|
31
|
+
total_price: z.ZodNumber;
|
|
32
|
+
avg_nightly_rate: z.ZodNumber;
|
|
33
|
+
display_savings_pct: z.ZodNumber;
|
|
34
|
+
hotel_type: z.ZodString;
|
|
35
|
+
brand_id: z.ZodString;
|
|
36
|
+
thumbnail_url: z.ZodString;
|
|
37
|
+
description: z.ZodString;
|
|
38
|
+
free_cancellation: z.ZodBoolean;
|
|
39
|
+
pay_later: z.ZodBoolean;
|
|
40
|
+
breakfast_included: z.ZodBoolean;
|
|
41
|
+
latitude: z.ZodNumber;
|
|
42
|
+
longitude: z.ZodNumber;
|
|
43
|
+
neighborhood: z.ZodString;
|
|
44
|
+
amenities: z.ZodArray<z.ZodString>;
|
|
45
|
+
}, z.core.$strip>>;
|
|
46
|
+
total_count: z.ZodNumber;
|
|
47
|
+
}, z.core.$strip>>;
|
|
48
|
+
//# sourceMappingURL=search-hotels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-hotels.d.ts","sourceRoot":"","sources":["../../src/tools/search-hotels.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAqBxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA2EvB,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { defineTool } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { graphql, getCguid, getAuthToken } from '../priceline-api.js';
|
|
4
|
+
import { mapHotelListing, mapCityInfo, hotelListingSchema, cityInfoSchema, } from './schemas.js';
|
|
5
|
+
const PERSISTED_HASH = 'ffaeed6473a0adf0074403134bb897df6c6f402f9a0322017b0ec4d268d943c3';
|
|
6
|
+
export const searchHotels = defineTool({
|
|
7
|
+
name: 'search_hotels',
|
|
8
|
+
displayName: 'Search Hotels',
|
|
9
|
+
description: 'Search for hotels in a city by location ID and travel dates. Returns hotel listings with pricing, ratings, amenities, and availability. Use search_locations first to find the city ID. Date format is YYYYMMDD (e.g., 20260315). Returns up to 30 results per page; use offset for pagination.',
|
|
10
|
+
summary: 'Search hotels by city and dates',
|
|
11
|
+
icon: 'building-2',
|
|
12
|
+
group: 'Hotels',
|
|
13
|
+
input: z.object({
|
|
14
|
+
location_id: z.string().describe('City or location ID from search_locations'),
|
|
15
|
+
check_in: z.string().describe('Check-in date in YYYYMMDD format (e.g., 20260315)'),
|
|
16
|
+
check_out: z.string().describe('Check-out date in YYYYMMDD format (e.g., 20260316)'),
|
|
17
|
+
adults: z.number().int().min(1).max(8).optional().describe('Number of adults (default 2)'),
|
|
18
|
+
rooms: z.number().int().min(1).max(8).optional().describe('Number of rooms (default 1)'),
|
|
19
|
+
sort_by: z
|
|
20
|
+
.enum(['HDR', 'GSR', 'PRC', 'SRN', 'DS'])
|
|
21
|
+
.optional()
|
|
22
|
+
.describe('Sort order: HDR=recommended, GSR=guest rating, PRC=price, SRN=star rating, DS=distance (default HDR)'),
|
|
23
|
+
offset: z.number().int().min(0).optional().describe('Pagination offset (default 0, increments by 30)'),
|
|
24
|
+
}),
|
|
25
|
+
output: z.object({
|
|
26
|
+
city: cityInfoSchema.describe('City information for the search'),
|
|
27
|
+
hotels: z.array(hotelListingSchema).describe('Hotel listings'),
|
|
28
|
+
total_count: z.number().int().describe('Total number of results'),
|
|
29
|
+
}),
|
|
30
|
+
handle: async (params) => {
|
|
31
|
+
const adults = params.adults ?? 2;
|
|
32
|
+
const rooms = params.rooms ?? 1;
|
|
33
|
+
const variables = {
|
|
34
|
+
adults,
|
|
35
|
+
addErrToResponse: true,
|
|
36
|
+
children: [],
|
|
37
|
+
checkIn: params.check_in,
|
|
38
|
+
checkOut: params.check_out,
|
|
39
|
+
currencyCode: 'USD',
|
|
40
|
+
first: 30,
|
|
41
|
+
googleMapStatic: {
|
|
42
|
+
size: { x: 300, y: 150 },
|
|
43
|
+
zoomLevel: 8,
|
|
44
|
+
hidePins: true,
|
|
45
|
+
},
|
|
46
|
+
imageCount: 5,
|
|
47
|
+
allowAllInclusiveImageSort: false,
|
|
48
|
+
imagesOffsetNum: 1,
|
|
49
|
+
imagesSortBy: { amenities: [] },
|
|
50
|
+
includeHotelContent: true,
|
|
51
|
+
includePrepaidFeeRates: true,
|
|
52
|
+
includePSLResponse: true,
|
|
53
|
+
includeStaticFilters: true,
|
|
54
|
+
locationID: params.location_id,
|
|
55
|
+
sortBy: params.sort_by ?? 'HDR',
|
|
56
|
+
offset: params.offset ?? 0,
|
|
57
|
+
productTypes: ['RTL', 'SOPQ'],
|
|
58
|
+
propertyTypeIds: '',
|
|
59
|
+
roomCount: rooms,
|
|
60
|
+
unlockDeals: true,
|
|
61
|
+
vipDeals: false,
|
|
62
|
+
appCode: 'DESKTOP',
|
|
63
|
+
cguid: getCguid(),
|
|
64
|
+
plfCode: 'PCLN',
|
|
65
|
+
rID: 'DTDIRECT',
|
|
66
|
+
authToken: getAuthToken(),
|
|
67
|
+
userCountryCode: 'US',
|
|
68
|
+
};
|
|
69
|
+
const data = await graphql('getAllListings', variables, PERSISTED_HASH);
|
|
70
|
+
const listings = data.listings;
|
|
71
|
+
return {
|
|
72
|
+
city: mapCityInfo(listings?.cityInfo ?? {}),
|
|
73
|
+
hotels: (listings?.hotels ?? []).map(mapHotelListing),
|
|
74
|
+
total_count: listings?.totalSize ?? 0,
|
|
75
|
+
};
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=search-hotels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-hotels.js","sourceRoot":"","sources":["../../src/tools/search-hotels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAGL,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,MAAM,cAAc,GAAG,kEAAkE,CAAC;AAU1F,MAAM,CAAC,MAAM,YAAY,GAAG,UAAU,CAAC;IACrC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,eAAe;IAC5B,WAAW,EACT,iSAAiS;IACnS,OAAO,EAAE,iCAAiC;IAC1C,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;QAC7E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;QAClF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QACpF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC1F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QACxF,OAAO,EAAE,CAAC;aACP,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;aACxC,QAAQ,EAAE;aACV,QAAQ,CAAC,sGAAsG,CAAC;QACnH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;KACvG,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QAChE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC9D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;KAClE,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;QAEhC,MAAM,SAAS,GAA4B;YACzC,MAAM;YACN,gBAAgB,EAAE,IAAI;YACtB,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,MAAM,CAAC,QAAQ;YACxB,QAAQ,EAAE,MAAM,CAAC,SAAS;YAC1B,YAAY,EAAE,KAAK;YACnB,KAAK,EAAE,EAAE;YACT,eAAe,EAAE;gBACf,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE;gBACxB,SAAS,EAAE,CAAC;gBACZ,QAAQ,EAAE,IAAI;aACf;YACD,UAAU,EAAE,CAAC;YACb,0BAA0B,EAAE,KAAK;YACjC,eAAe,EAAE,CAAC;YAClB,YAAY,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;YAC/B,mBAAmB,EAAE,IAAI;YACzB,sBAAsB,EAAE,IAAI;YAC5B,kBAAkB,EAAE,IAAI;YACxB,oBAAoB,EAAE,IAAI;YAC1B,UAAU,EAAE,MAAM,CAAC,WAAW;YAC9B,MAAM,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC;YAC1B,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;YAC7B,eAAe,EAAE,EAAE;YACnB,SAAS,EAAE,KAAK;YAChB,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,QAAQ,EAAE;YACjB,OAAO,EAAE,MAAM;YACf,GAAG,EAAE,UAAU;YACf,SAAS,EAAE,YAAY,EAAE;YACzB,eAAe,EAAE,IAAI;SACtB,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,OAAO,CAAmB,gBAAgB,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QAE1F,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,OAAO;YACL,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC;YAC3C,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC;YACrD,WAAW,EAAE,QAAQ,EAAE,SAAS,IAAI,CAAC;SACtC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const searchLocations: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
keyword: z.ZodString;
|
|
4
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
5
|
+
locations: z.ZodArray<z.ZodObject<{
|
|
6
|
+
id: z.ZodString;
|
|
7
|
+
name: z.ZodString;
|
|
8
|
+
type: z.ZodString;
|
|
9
|
+
city_name: z.ZodString;
|
|
10
|
+
state_code: z.ZodString;
|
|
11
|
+
country_code: z.ZodString;
|
|
12
|
+
country_name: z.ZodString;
|
|
13
|
+
latitude: z.ZodNumber;
|
|
14
|
+
longitude: z.ZodNumber;
|
|
15
|
+
display_line_1: z.ZodString;
|
|
16
|
+
display_line_2: z.ZodString;
|
|
17
|
+
}, z.core.$strip>>;
|
|
18
|
+
}, z.core.$strip>>;
|
|
19
|
+
//# sourceMappingURL=search-locations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-locations.d.ts","sourceRoot":"","sources":["../../src/tools/search-locations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;kBAmB1B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { defineTool } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { rest } from '../priceline-api.js';
|
|
4
|
+
import { mapSearchItem, searchItemSchema } from './schemas.js';
|
|
5
|
+
export const searchLocations = defineTool({
|
|
6
|
+
name: 'search_locations',
|
|
7
|
+
displayName: 'Search Locations',
|
|
8
|
+
description: 'Search for cities, hotels, airports, neighborhoods, and points of interest by keyword. Returns location IDs needed for hotel search. Use this to find a city ID before searching for hotels.',
|
|
9
|
+
summary: 'Search destinations by keyword',
|
|
10
|
+
icon: 'map-pin',
|
|
11
|
+
group: 'Search',
|
|
12
|
+
input: z.object({
|
|
13
|
+
keyword: z.string().describe('Search keyword (city name, hotel name, airport, POI)'),
|
|
14
|
+
}),
|
|
15
|
+
output: z.object({
|
|
16
|
+
locations: z.array(searchItemSchema).describe('Matching locations sorted by relevance'),
|
|
17
|
+
}),
|
|
18
|
+
handle: async (params) => {
|
|
19
|
+
const data = await rest('/index/relax/search/autoSuggest', { keyword: params.keyword });
|
|
20
|
+
const items = data.searchItems ?? [];
|
|
21
|
+
return { locations: items.map(mapSearchItem) };
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=search-locations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-locations.js","sourceRoot":"","sources":["../../src/tools/search-locations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAsB,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAOnF,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;IACxC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EACT,8LAA8L;IAChM,OAAO,EAAE,gCAAgC;IACzC,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;KACrF,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,wCAAwC,CAAC;KACxF,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAsB,iCAAiC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7G,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;QACrC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;IACjD,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const searchPointsOfInterest: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
city_id: z.ZodOptional<z.ZodString>;
|
|
4
|
+
city_name: z.ZodOptional<z.ZodString>;
|
|
5
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
6
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
7
|
+
points_of_interest: z.ZodArray<z.ZodObject<{
|
|
8
|
+
id: z.ZodString;
|
|
9
|
+
name: z.ZodString;
|
|
10
|
+
type: z.ZodString;
|
|
11
|
+
city_name: z.ZodString;
|
|
12
|
+
state_code: z.ZodString;
|
|
13
|
+
country_code: z.ZodString;
|
|
14
|
+
country_name: z.ZodString;
|
|
15
|
+
latitude: z.ZodNumber;
|
|
16
|
+
longitude: z.ZodNumber;
|
|
17
|
+
display_line_1: z.ZodString;
|
|
18
|
+
display_line_2: z.ZodString;
|
|
19
|
+
}, z.core.$strip>>;
|
|
20
|
+
}, z.core.$strip>>;
|
|
21
|
+
//# sourceMappingURL=search-points-of-interest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-points-of-interest.d.ts","sourceRoot":"","sources":["../../src/tools/search-points-of-interest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;kBAgCjC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { defineTool } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { rest } from '../priceline-api.js';
|
|
4
|
+
import { mapSearchItem, searchItemSchema } from './schemas.js';
|
|
5
|
+
export const searchPointsOfInterest = defineTool({
|
|
6
|
+
name: 'search_points_of_interest',
|
|
7
|
+
displayName: 'Search Points of Interest',
|
|
8
|
+
description: 'Search for top points of interest in a city. Returns landmarks, attractions, and popular areas near hotels. Useful for finding hotels near specific attractions.',
|
|
9
|
+
summary: 'Find top attractions in a city',
|
|
10
|
+
icon: 'landmark',
|
|
11
|
+
group: 'Search',
|
|
12
|
+
input: z.object({
|
|
13
|
+
city_id: z.string().optional().describe('Priceline city ID to search within'),
|
|
14
|
+
city_name: z.string().optional().describe('City name to search by (alternative to city_id)'),
|
|
15
|
+
limit: z.number().int().min(1).max(20).optional().describe('Maximum number of results (default 10)'),
|
|
16
|
+
}),
|
|
17
|
+
output: z.object({
|
|
18
|
+
points_of_interest: z.array(searchItemSchema).describe('Points of interest'),
|
|
19
|
+
}),
|
|
20
|
+
handle: async (params) => {
|
|
21
|
+
const query = {
|
|
22
|
+
numGenAiPOIs: params.limit ?? 10,
|
|
23
|
+
};
|
|
24
|
+
if (params.city_id) {
|
|
25
|
+
query.cityId = params.city_id;
|
|
26
|
+
}
|
|
27
|
+
else if (params.city_name) {
|
|
28
|
+
query.cityName = params.city_name;
|
|
29
|
+
}
|
|
30
|
+
const data = await rest('/index/relax/search/topPOIByCityIdOrCityName', query);
|
|
31
|
+
const items = data.searchItems ?? [];
|
|
32
|
+
return { points_of_interest: items.map(mapSearchItem) };
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=search-points-of-interest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-points-of-interest.js","sourceRoot":"","sources":["../../src/tools/search-points-of-interest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAsB,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAOnF,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAC;IAC/C,IAAI,EAAE,2BAA2B;IACjC,WAAW,EAAE,2BAA2B;IACxC,WAAW,EACT,kKAAkK;IACpK,OAAO,EAAE,gCAAgC;IACzC,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAC7E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;QAC5F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;KACrG,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KAC7E,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,KAAK,GAA0D;YACnE,YAAY,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;SACjC,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;QAChC,CAAC;aAAM,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YAC5B,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;QACpC,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAiB,8CAA8C,EAAE,KAAK,CAAC,CAAC;QAE/F,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;QACrC,OAAO,EAAE,kBAAkB,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;IAC1D,CAAC;CACF,CAAC,CAAC"}
|