@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.
Files changed (69) hide show
  1. package/README.md +159 -0
  2. package/dist/adapter.iife.js +15220 -0
  3. package/dist/adapter.iife.js.map +7 -0
  4. package/dist/index.d.ts +14 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +47 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/priceline-api.d.ts +8 -0
  9. package/dist/priceline-api.d.ts.map +1 -0
  10. package/dist/priceline-api.js +120 -0
  11. package/dist/priceline-api.js.map +1 -0
  12. package/dist/tools/get-abandoned-items.d.ts +13 -0
  13. package/dist/tools/get-abandoned-items.d.ts.map +1 -0
  14. package/dist/tools/get-abandoned-items.js +42 -0
  15. package/dist/tools/get-abandoned-items.js.map +1 -0
  16. package/dist/tools/get-customer-coupons.d.ts +19 -0
  17. package/dist/tools/get-customer-coupons.d.ts.map +1 -0
  18. package/dist/tools/get-customer-coupons.js +56 -0
  19. package/dist/tools/get-customer-coupons.js.map +1 -0
  20. package/dist/tools/get-customer-profile.d.ts +12 -0
  21. package/dist/tools/get-customer-profile.d.ts.map +1 -0
  22. package/dist/tools/get-customer-profile.js +27 -0
  23. package/dist/tools/get-customer-profile.js.map +1 -0
  24. package/dist/tools/get-favorite-hotels.d.ts +10 -0
  25. package/dist/tools/get-favorite-hotels.d.ts.map +1 -0
  26. package/dist/tools/get-favorite-hotels.js +37 -0
  27. package/dist/tools/get-favorite-hotels.js.map +1 -0
  28. package/dist/tools/get-hotel-descriptions.d.ts +10 -0
  29. package/dist/tools/get-hotel-descriptions.d.ts.map +1 -0
  30. package/dist/tools/get-hotel-descriptions.js +29 -0
  31. package/dist/tools/get-hotel-descriptions.js.map +1 -0
  32. package/dist/tools/get-hotel-filters.d.ts +16 -0
  33. package/dist/tools/get-hotel-filters.d.ts.map +1 -0
  34. package/dist/tools/get-hotel-filters.js +41 -0
  35. package/dist/tools/get-hotel-filters.js.map +1 -0
  36. package/dist/tools/get-merchandising-badges.d.ts +11 -0
  37. package/dist/tools/get-merchandising-badges.d.ts.map +1 -0
  38. package/dist/tools/get-merchandising-badges.js +30 -0
  39. package/dist/tools/get-merchandising-badges.js.map +1 -0
  40. package/dist/tools/get-price-guidance.d.ts +23 -0
  41. package/dist/tools/get-price-guidance.d.ts.map +1 -0
  42. package/dist/tools/get-price-guidance.js +49 -0
  43. package/dist/tools/get-price-guidance.js.map +1 -0
  44. package/dist/tools/navigate-to-hotel.d.ts +12 -0
  45. package/dist/tools/navigate-to-hotel.d.ts.map +1 -0
  46. package/dist/tools/navigate-to-hotel.js +29 -0
  47. package/dist/tools/navigate-to-hotel.js.map +1 -0
  48. package/dist/tools/navigate-to-search.d.ts +12 -0
  49. package/dist/tools/navigate-to-search.d.ts.map +1 -0
  50. package/dist/tools/navigate-to-search.js +29 -0
  51. package/dist/tools/navigate-to-search.js.map +1 -0
  52. package/dist/tools/schemas.d.ts +237 -0
  53. package/dist/tools/schemas.d.ts.map +1 -0
  54. package/dist/tools/schemas.js +160 -0
  55. package/dist/tools/schemas.js.map +1 -0
  56. package/dist/tools/search-hotels.d.ts +48 -0
  57. package/dist/tools/search-hotels.d.ts.map +1 -0
  58. package/dist/tools/search-hotels.js +78 -0
  59. package/dist/tools/search-hotels.js.map +1 -0
  60. package/dist/tools/search-locations.d.ts +19 -0
  61. package/dist/tools/search-locations.d.ts.map +1 -0
  62. package/dist/tools/search-locations.js +24 -0
  63. package/dist/tools/search-locations.js.map +1 -0
  64. package/dist/tools/search-points-of-interest.d.ts +21 -0
  65. package/dist/tools/search-points-of-interest.d.ts.map +1 -0
  66. package/dist/tools/search-points-of-interest.js +35 -0
  67. package/dist/tools/search-points-of-interest.js.map +1 -0
  68. package/dist/tools.json +1132 -0
  69. 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":"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"}
@@ -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"}