@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,30 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { graphql } from '../priceline-api.js';
4
+ import { mapMerchandisingBadge, merchandisingBadgeSchema } from './schemas.js';
5
+ const PERSISTED_HASH = '2af5883a5e9daed74af8585efd7e2995acab8c132e9c9bff7095c0412d6a6157';
6
+ export const getMerchandisingBadges = defineTool({
7
+ name: 'get_merchandising_badges',
8
+ displayName: 'Get Merchandising Badges',
9
+ description: 'Get merchandising badges (top-rated, top-booked) for a batch of hotels. Useful for highlighting popular or highly rated hotels in search results.',
10
+ summary: 'Get top-rated/top-booked badges for hotels',
11
+ icon: 'badge',
12
+ group: 'Hotels',
13
+ input: z.object({
14
+ hotel_ids: z.array(z.string()).describe('Array of Priceline hotel IDs'),
15
+ }),
16
+ output: z.object({
17
+ badges: z.array(merchandisingBadgeSchema).describe('Merchandising badges per hotel'),
18
+ }),
19
+ handle: async (params) => {
20
+ const data = await graphql('getMerchandisingData', {
21
+ addErrToResponse: true,
22
+ appCode: 'DESKTOP',
23
+ entityIds: params.hotel_ids,
24
+ entityType: 'HOTEL',
25
+ }, PERSISTED_HASH);
26
+ const entities = data.merchandising?.merchandisingEntities ?? [];
27
+ return { badges: entities.map(mapMerchandisingBadge) };
28
+ },
29
+ });
30
+ //# sourceMappingURL=get-merchandising-badges.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-merchandising-badges.js","sourceRoot":"","sources":["../../src/tools/get-merchandising-badges.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAA+B,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAE5G,MAAM,cAAc,GAAG,kEAAkE,CAAC;AAQ1F,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAC;IAC/C,IAAI,EAAE,0BAA0B;IAChC,WAAW,EAAE,0BAA0B;IACvC,WAAW,EACT,mJAAmJ;IACrJ,OAAO,EAAE,4CAA4C;IACrD,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;KACxE,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KACrF,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,sBAAsB,EACtB;YACE,gBAAgB,EAAE,IAAI;YACtB,OAAO,EAAE,SAAS;YAClB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,UAAU,EAAE,OAAO;SACpB,EACD,cAAc,CACf,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,qBAAqB,IAAI,EAAE,CAAC;QACjE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC;IACzD,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { z } from 'zod';
2
+ export declare const getPriceGuidance: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ city_id: z.ZodNumber;
4
+ start_date: z.ZodString;
5
+ end_date: z.ZodString;
6
+ star_rating: z.ZodOptional<z.ZodEnum<{
7
+ All_Star: "All_Star";
8
+ Star_2: "Star_2";
9
+ Star_3: "Star_3";
10
+ Star_4: "Star_4";
11
+ Star_5: "Star_5";
12
+ }>>;
13
+ }, z.core.$strip>, z.ZodObject<{
14
+ prices: z.ZodArray<z.ZodObject<{
15
+ date: z.ZodString;
16
+ min_price: z.ZodNumber;
17
+ max_price: z.ZodNumber;
18
+ avg_price: z.ZodNumber;
19
+ star_rating: z.ZodString;
20
+ product: z.ZodString;
21
+ }, z.core.$strip>>;
22
+ }, z.core.$strip>>;
23
+ //# sourceMappingURL=get-price-guidance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-price-guidance.d.ts","sourceRoot":"","sources":["../../src/tools/get-price-guidance.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;kBAkD3B,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { graphql } from '../priceline-api.js';
4
+ import { mapPriceGuidance, priceGuidanceEntrySchema } from './schemas.js';
5
+ const PERSISTED_HASH = '973c01ae60710b06f8078c6b84ecd353734d7fb5da5eaa664ffabf23d901f15f';
6
+ export const getPriceGuidance = defineTool({
7
+ name: 'get_price_guidance',
8
+ displayName: 'Get Price Guidance',
9
+ description: 'Get hotel price trends for a city over a date range. Shows min, max, and average prices by star rating and product type for each date. Useful for finding the cheapest travel dates. Date format is YYYYMMDD.',
10
+ summary: 'Get hotel price trends for a city',
11
+ icon: 'trending-down',
12
+ group: 'Hotels',
13
+ input: z.object({
14
+ city_id: z.number().int().describe('Priceline city ID (numeric, from search_locations)'),
15
+ start_date: z.string().describe('Start of date range in YYYYMMDD format'),
16
+ end_date: z.string().describe('End of date range in YYYYMMDD format'),
17
+ star_rating: z
18
+ .enum(['All_Star', 'Star_2', 'Star_3', 'Star_4', 'Star_5'])
19
+ .optional()
20
+ .describe('Filter by star rating (default returns all star ratings)'),
21
+ }),
22
+ output: z.object({
23
+ prices: z.array(priceGuidanceEntrySchema).describe('Price guidance entries per date'),
24
+ }),
25
+ handle: async (params) => {
26
+ const data = await graphql('getHotelsPriceGuidance', {
27
+ includeMandPropFees: false,
28
+ currency: 'USD',
29
+ entityId: params.city_id,
30
+ entityType: 'CITY',
31
+ startDate: params.start_date,
32
+ endDate: params.end_date,
33
+ product: 'ALL',
34
+ appCode: 'DESKTOP',
35
+ }, PERSISTED_HASH);
36
+ const dateMap = data.hotelsPriceGuidance?.data?.datePriceMap ?? [];
37
+ const prices = [];
38
+ for (const entry of dateMap) {
39
+ for (const value of entry.values ?? []) {
40
+ if (params.star_rating && value.starRating !== params.star_rating) {
41
+ continue;
42
+ }
43
+ prices.push(mapPriceGuidance(entry, value));
44
+ }
45
+ }
46
+ return { prices };
47
+ },
48
+ });
49
+ //# sourceMappingURL=get-price-guidance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-price-guidance.js","sourceRoot":"","sources":["../../src/tools/get-price-guidance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAwB,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAEhG,MAAM,cAAc,GAAG,kEAAkE,CAAC;AAU1F,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;IACzC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,oBAAoB;IACjC,WAAW,EACT,+MAA+M;IACjN,OAAO,EAAE,mCAAmC;IAC5C,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QACxF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QACzE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QACrE,WAAW,EAAE,CAAC;aACX,IAAI,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;aAC1D,QAAQ,EAAE;aACV,QAAQ,CAAC,0DAA0D,CAAC;KACxE,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KACtF,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,wBAAwB,EACxB;YACE,mBAAmB,EAAE,KAAK;YAC1B,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,MAAM,CAAC,OAAO;YACxB,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,MAAM,CAAC,UAAU;YAC5B,OAAO,EAAE,MAAM,CAAC,QAAQ;YACxB,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,SAAS;SACnB,EACD,cAAc,CACf,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,IAAI,EAAE,YAAY,IAAI,EAAE,CAAC;QACnE,MAAM,MAAM,GAA0C,EAAE,CAAC;QAEzD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBACvC,IAAI,MAAM,CAAC,WAAW,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;oBAClE,SAAS;gBACX,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { z } from 'zod';
2
+ export declare const navigateToHotel: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ hotel_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
+ }, z.core.$strip>, z.ZodObject<{
9
+ url: z.ZodString;
10
+ success: z.ZodBoolean;
11
+ }, z.core.$strip>>;
12
+ //# sourceMappingURL=navigate-to-hotel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigate-to-hotel.d.ts","sourceRoot":"","sources":["../../src/tools/navigate-to-hotel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe;;;;;;;;;kBA4B1B,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ export const navigateToHotel = defineTool({
4
+ name: 'navigate_to_hotel',
5
+ displayName: 'Navigate to Hotel',
6
+ description: "Navigate the browser to a specific hotel's detail page on Priceline. This opens the hotel page where the user can view full details, room options, and book. Requires a hotel ID from search_hotels results and the same date/occupancy parameters.",
7
+ summary: 'Open a hotel detail page',
8
+ icon: 'external-link',
9
+ group: 'Hotels',
10
+ input: z.object({
11
+ hotel_id: z.string().describe('Priceline hotel ID from search results'),
12
+ check_in: z.string().describe('Check-in date in YYYYMMDD format'),
13
+ check_out: z.string().describe('Check-out date in YYYYMMDD format'),
14
+ adults: z.number().int().min(1).optional().describe('Number of adults (default 2)'),
15
+ rooms: z.number().int().min(1).optional().describe('Number of rooms (default 1)'),
16
+ }),
17
+ output: z.object({
18
+ url: z.string().describe('The hotel detail page URL'),
19
+ success: z.boolean().describe('Whether navigation was initiated'),
20
+ }),
21
+ handle: async (params) => {
22
+ const adults = params.adults ?? 2;
23
+ const rooms = params.rooms ?? 1;
24
+ const url = `https://www.priceline.com/hotel-deals/h${params.hotel_id}/from/${params.check_in}/to/${params.check_out}/rooms/${rooms}/adults/${adults}`;
25
+ globalThis.location.href = url;
26
+ return { url, success: true };
27
+ },
28
+ });
29
+ //# sourceMappingURL=navigate-to-hotel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigate-to-hotel.js","sourceRoot":"","sources":["../../src/tools/navigate-to-hotel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;IACxC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,mBAAmB;IAChC,WAAW,EACT,qPAAqP;IACvP,OAAO,EAAE,0BAA0B;IACnC,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QACvE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QACnE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QACnF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;KAClF,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QACrD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,kCAAkC,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;QAChC,MAAM,GAAG,GAAG,0CAA0C,MAAM,CAAC,QAAQ,SAAS,MAAM,CAAC,QAAQ,OAAO,MAAM,CAAC,SAAS,UAAU,KAAK,WAAW,MAAM,EAAE,CAAC;QAEvJ,UAAU,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;QAE/B,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAChC,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { z } from 'zod';
2
+ export declare const navigateToSearch: 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
+ }, z.core.$strip>, z.ZodObject<{
9
+ url: z.ZodString;
10
+ success: z.ZodBoolean;
11
+ }, z.core.$strip>>;
12
+ //# sourceMappingURL=navigate-to-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigate-to-search.d.ts","sourceRoot":"","sources":["../../src/tools/navigate-to-search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,gBAAgB;;;;;;;;;kBA4B3B,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ export const navigateToSearch = defineTool({
4
+ name: 'navigate_to_search',
5
+ displayName: 'Navigate to Hotel Search',
6
+ description: 'Navigate the browser to Priceline hotel search results for a given city and dates. This opens the search results page where the user can browse, filter, and select hotels.',
7
+ summary: 'Open hotel search results page',
8
+ icon: 'search',
9
+ group: 'Search',
10
+ input: z.object({
11
+ location_id: z.string().describe('Priceline city or location ID'),
12
+ check_in: z.string().describe('Check-in date in YYYYMMDD format'),
13
+ check_out: z.string().describe('Check-out date in YYYYMMDD format'),
14
+ adults: z.number().int().min(1).optional().describe('Number of adults (default 2)'),
15
+ rooms: z.number().int().min(1).optional().describe('Number of rooms (default 1)'),
16
+ }),
17
+ output: z.object({
18
+ url: z.string().describe('The search results page URL'),
19
+ success: z.boolean().describe('Whether navigation was initiated'),
20
+ }),
21
+ handle: async (params) => {
22
+ const adults = params.adults ?? 2;
23
+ const rooms = params.rooms ?? 1;
24
+ const url = `https://www.priceline.com/relax/in/${params.location_id}/from/${params.check_in}/to/${params.check_out}/rooms/${rooms}/adults/${adults}`;
25
+ globalThis.location.href = url;
26
+ return { url, success: true };
27
+ },
28
+ });
29
+ //# sourceMappingURL=navigate-to-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigate-to-search.js","sourceRoot":"","sources":["../../src/tools/navigate-to-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;IACzC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,0BAA0B;IACvC,WAAW,EACT,6KAA6K;IAC/K,OAAO,EAAE,gCAAgC;IACzC,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QACjE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACjE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QACnE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QACnF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;KAClF,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QACvD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,kCAAkC,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;QAChC,MAAM,GAAG,GAAG,sCAAsC,MAAM,CAAC,WAAW,SAAS,MAAM,CAAC,QAAQ,OAAO,MAAM,CAAC,SAAS,UAAU,KAAK,WAAW,MAAM,EAAE,CAAC;QAEtJ,UAAU,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC;QAE/B,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAChC,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,237 @@
1
+ import { z } from 'zod';
2
+ export declare const searchItemSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ name: z.ZodString;
5
+ type: z.ZodString;
6
+ city_name: z.ZodString;
7
+ state_code: z.ZodString;
8
+ country_code: z.ZodString;
9
+ country_name: z.ZodString;
10
+ latitude: z.ZodNumber;
11
+ longitude: z.ZodNumber;
12
+ display_line_1: z.ZodString;
13
+ display_line_2: z.ZodString;
14
+ }, z.core.$strip>;
15
+ export interface RawSearchItem {
16
+ id?: string;
17
+ itemName?: string;
18
+ type?: string;
19
+ cityName?: string;
20
+ stateCode?: string;
21
+ countryCode?: string;
22
+ countryName?: string;
23
+ lat?: number;
24
+ lon?: number;
25
+ displayLine1?: string;
26
+ displayLine2?: string;
27
+ }
28
+ export declare const mapSearchItem: (item: RawSearchItem) => {
29
+ id: string;
30
+ name: string;
31
+ type: string;
32
+ city_name: string;
33
+ state_code: string;
34
+ country_code: string;
35
+ country_name: string;
36
+ latitude: number;
37
+ longitude: number;
38
+ display_line_1: string;
39
+ display_line_2: string;
40
+ };
41
+ export declare const hotelListingSchema: z.ZodObject<{
42
+ hotel_id: z.ZodString;
43
+ name: z.ZodString;
44
+ star_rating: z.ZodNumber;
45
+ guest_rating: z.ZodNumber;
46
+ total_price: z.ZodNumber;
47
+ avg_nightly_rate: z.ZodNumber;
48
+ display_savings_pct: z.ZodNumber;
49
+ hotel_type: z.ZodString;
50
+ brand_id: z.ZodString;
51
+ thumbnail_url: z.ZodString;
52
+ description: z.ZodString;
53
+ free_cancellation: z.ZodBoolean;
54
+ pay_later: z.ZodBoolean;
55
+ breakfast_included: z.ZodBoolean;
56
+ latitude: z.ZodNumber;
57
+ longitude: z.ZodNumber;
58
+ neighborhood: z.ZodString;
59
+ amenities: z.ZodArray<z.ZodString>;
60
+ }, z.core.$strip>;
61
+ export interface RawHotelListing {
62
+ hotelId?: string;
63
+ name?: string;
64
+ starRating?: number;
65
+ overallGuestRating?: number;
66
+ ratesSummary?: {
67
+ minPrice?: number;
68
+ avgNightlyRate?: number;
69
+ freeCancellation?: boolean;
70
+ payLater?: boolean;
71
+ breakfastIncluded?: boolean;
72
+ };
73
+ displaySavingsPct?: number;
74
+ hotelType?: string;
75
+ brandId?: string;
76
+ thumbnailUrl?: string;
77
+ description?: string;
78
+ location?: {
79
+ latitude?: number;
80
+ longitude?: number;
81
+ neighborhoodName?: string;
82
+ };
83
+ hotelFeatures?: {
84
+ rankedAmenityList?: string[];
85
+ };
86
+ }
87
+ export declare const mapHotelListing: (h: RawHotelListing) => {
88
+ hotel_id: string;
89
+ name: string;
90
+ star_rating: number;
91
+ guest_rating: number;
92
+ total_price: number;
93
+ avg_nightly_rate: number;
94
+ display_savings_pct: number;
95
+ hotel_type: string;
96
+ brand_id: string;
97
+ thumbnail_url: string;
98
+ description: string;
99
+ free_cancellation: boolean;
100
+ pay_later: boolean;
101
+ breakfast_included: boolean;
102
+ latitude: number;
103
+ longitude: number;
104
+ neighborhood: string;
105
+ amenities: string[];
106
+ };
107
+ export declare const cityInfoSchema: z.ZodObject<{
108
+ city_id: z.ZodNumber;
109
+ city_name: z.ZodString;
110
+ state_code: z.ZodString;
111
+ country_code: z.ZodString;
112
+ display_name: z.ZodString;
113
+ latitude: z.ZodNumber;
114
+ longitude: z.ZodNumber;
115
+ }, z.core.$strip>;
116
+ export interface RawCityInfo {
117
+ cityId?: number;
118
+ cityName?: string;
119
+ stateCode?: string;
120
+ countryCode?: string;
121
+ displayCityName?: string;
122
+ lat?: number;
123
+ lon?: number;
124
+ }
125
+ export declare const mapCityInfo: (c: RawCityInfo) => {
126
+ city_id: number;
127
+ city_name: string;
128
+ state_code: string;
129
+ country_code: string;
130
+ display_name: string;
131
+ latitude: number;
132
+ longitude: number;
133
+ };
134
+ export declare const customerProfileSchema: z.ZodObject<{
135
+ loyalty_tier: z.ZodString;
136
+ audiences: z.ZodArray<z.ZodObject<{
137
+ id: z.ZodString;
138
+ name: z.ZodString;
139
+ }, z.core.$strip>>;
140
+ }, z.core.$strip>;
141
+ interface RawAudience {
142
+ id?: string;
143
+ name?: string;
144
+ }
145
+ export interface RawCustomerProfile {
146
+ loyalty?: {
147
+ tierLabel?: string;
148
+ };
149
+ audiences?: RawAudience[];
150
+ }
151
+ export declare const mapCustomerProfile: (p: RawCustomerProfile) => {
152
+ loyalty_tier: string;
153
+ audiences: {
154
+ id: string;
155
+ name: string;
156
+ }[];
157
+ };
158
+ export declare const priceGuidanceEntrySchema: z.ZodObject<{
159
+ date: z.ZodString;
160
+ min_price: z.ZodNumber;
161
+ max_price: z.ZodNumber;
162
+ avg_price: z.ZodNumber;
163
+ star_rating: z.ZodString;
164
+ product: z.ZodString;
165
+ }, z.core.$strip>;
166
+ interface RawPriceGuidanceValue {
167
+ minPrice?: number;
168
+ maxPrice?: number;
169
+ avgPrice?: number;
170
+ starRating?: string;
171
+ product?: string;
172
+ }
173
+ export interface RawDatePriceMap {
174
+ date?: string;
175
+ values?: RawPriceGuidanceValue[];
176
+ }
177
+ export declare const mapPriceGuidance: (entry: RawDatePriceMap, value: RawPriceGuidanceValue) => {
178
+ date: string;
179
+ min_price: number;
180
+ max_price: number;
181
+ avg_price: number;
182
+ star_rating: string;
183
+ product: string;
184
+ };
185
+ export declare const dynamicFilterSchema: z.ZodObject<{
186
+ type: z.ZodString;
187
+ values: z.ZodArray<z.ZodObject<{
188
+ key: z.ZodString;
189
+ display: z.ZodString;
190
+ }, z.core.$strip>>;
191
+ }, z.core.$strip>;
192
+ interface RawFilterValue {
193
+ key?: string;
194
+ display?: string;
195
+ }
196
+ export interface RawDynamicFilter {
197
+ type?: string;
198
+ values?: RawFilterValue[];
199
+ }
200
+ export declare const mapDynamicFilter: (f: RawDynamicFilter) => {
201
+ type: string;
202
+ values: {
203
+ key: string;
204
+ display: string;
205
+ }[];
206
+ };
207
+ export declare const hotelDescriptionSchema: z.ZodObject<{
208
+ hotel_id: z.ZodString;
209
+ short_description: z.ZodString;
210
+ }, z.core.$strip>;
211
+ export interface RawHotelDescription {
212
+ id?: string;
213
+ shortDescription?: string;
214
+ }
215
+ export declare const mapHotelDescription: (h: RawHotelDescription) => {
216
+ hotel_id: string;
217
+ short_description: string;
218
+ };
219
+ export declare const merchandisingBadgeSchema: z.ZodObject<{
220
+ hotel_id: z.ZodString;
221
+ is_top_rated: z.ZodBoolean;
222
+ is_top_booked: z.ZodBoolean;
223
+ }, z.core.$strip>;
224
+ export interface RawMerchandisingEntity {
225
+ entityId?: string;
226
+ topBadges?: {
227
+ isTopRated?: boolean;
228
+ isTopBooked?: boolean;
229
+ };
230
+ }
231
+ export declare const mapMerchandisingBadge: (e: RawMerchandisingEntity) => {
232
+ hotel_id: string;
233
+ is_top_rated: boolean;
234
+ is_top_booked: boolean;
235
+ };
236
+ export {};
237
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,160 @@
1
+ import { z } from 'zod';
2
+ // --- Location / Search Item ---
3
+ export const searchItemSchema = z.object({
4
+ id: z.string().describe('Location ID (city ID, POI ID, etc.)'),
5
+ name: z.string().describe('Location name'),
6
+ type: z.string().describe('Location type (CITY, HOTEL, POI, AIRPORT, NEIGHBORHOOD, GENAI_POI)'),
7
+ city_name: z.string().describe('City name'),
8
+ state_code: z.string().describe('State/province code'),
9
+ country_code: z.string().describe('Country code (e.g., US)'),
10
+ country_name: z.string().describe('Country name'),
11
+ latitude: z.number().describe('Latitude'),
12
+ longitude: z.number().describe('Longitude'),
13
+ display_line_1: z.string().describe('Primary display text'),
14
+ display_line_2: z.string().describe('Secondary display text (region)'),
15
+ });
16
+ export const mapSearchItem = (item) => ({
17
+ id: item.id ?? '',
18
+ name: item.itemName ?? '',
19
+ type: item.type ?? '',
20
+ city_name: item.cityName ?? '',
21
+ state_code: item.stateCode ?? '',
22
+ country_code: item.countryCode ?? '',
23
+ country_name: item.countryName ?? '',
24
+ latitude: item.lat ?? 0,
25
+ longitude: item.lon ?? 0,
26
+ display_line_1: item.displayLine1 ?? '',
27
+ display_line_2: item.displayLine2 ?? '',
28
+ });
29
+ // --- Hotel Listing ---
30
+ export const hotelListingSchema = z.object({
31
+ hotel_id: z.string().describe('Priceline hotel ID'),
32
+ name: z.string().describe('Hotel name'),
33
+ star_rating: z.number().int().describe('Star rating (1-5)'),
34
+ guest_rating: z.number().describe('Overall guest rating (0-10)'),
35
+ total_price: z.number().describe('Total price for the stay in USD'),
36
+ avg_nightly_rate: z.number().describe('Average nightly rate in USD'),
37
+ display_savings_pct: z.number().int().describe('Savings percentage displayed'),
38
+ hotel_type: z.string().describe('Hotel type (RTL=retail, SOPQ=opaque deal)'),
39
+ brand_id: z.string().describe('Hotel brand ID'),
40
+ thumbnail_url: z.string().describe('Thumbnail image URL'),
41
+ description: z.string().describe('Short hotel description'),
42
+ free_cancellation: z.boolean().describe('Whether free cancellation is available'),
43
+ pay_later: z.boolean().describe('Whether pay-at-hotel is available'),
44
+ breakfast_included: z.boolean().describe('Whether breakfast is included'),
45
+ latitude: z.number().describe('Hotel latitude'),
46
+ longitude: z.number().describe('Hotel longitude'),
47
+ neighborhood: z.string().describe('Neighborhood or area name'),
48
+ amenities: z.array(z.string()).describe('List of top amenity names (e.g., Free WiFi, Pool)'),
49
+ });
50
+ export const mapHotelListing = (h) => ({
51
+ hotel_id: h.hotelId ?? '',
52
+ name: h.name ?? '',
53
+ star_rating: h.starRating ?? 0,
54
+ guest_rating: h.overallGuestRating ?? 0,
55
+ total_price: h.ratesSummary?.minPrice ?? 0,
56
+ avg_nightly_rate: h.ratesSummary?.avgNightlyRate ?? 0,
57
+ display_savings_pct: h.displaySavingsPct ?? 0,
58
+ hotel_type: h.hotelType ?? '',
59
+ brand_id: h.brandId ?? '',
60
+ thumbnail_url: h.thumbnailUrl ?? '',
61
+ description: h.description ?? '',
62
+ free_cancellation: h.ratesSummary?.freeCancellation ?? false,
63
+ pay_later: h.ratesSummary?.payLater ?? false,
64
+ breakfast_included: h.ratesSummary?.breakfastIncluded ?? false,
65
+ latitude: h.location?.latitude ?? 0,
66
+ longitude: h.location?.longitude ?? 0,
67
+ neighborhood: h.location?.neighborhoodName ?? '',
68
+ amenities: h.hotelFeatures?.rankedAmenityList ?? [],
69
+ });
70
+ // --- City Info ---
71
+ export const cityInfoSchema = z.object({
72
+ city_id: z.number().int().describe('Priceline city ID'),
73
+ city_name: z.string().describe('City name'),
74
+ state_code: z.string().describe('State/province code'),
75
+ country_code: z.string().describe('Country code'),
76
+ display_name: z.string().describe('Full display name (e.g., South Lake Tahoe, CA)'),
77
+ latitude: z.number().describe('City center latitude'),
78
+ longitude: z.number().describe('City center longitude'),
79
+ });
80
+ export const mapCityInfo = (c) => ({
81
+ city_id: c.cityId ?? 0,
82
+ city_name: c.cityName ?? '',
83
+ state_code: c.stateCode ?? '',
84
+ country_code: c.countryCode ?? '',
85
+ display_name: c.displayCityName ?? '',
86
+ latitude: c.lat ?? 0,
87
+ longitude: c.lon ?? 0,
88
+ });
89
+ // --- Customer Profile ---
90
+ export const customerProfileSchema = z.object({
91
+ loyalty_tier: z.string().describe('VIP loyalty tier label (e.g., BLUE, GOLD)'),
92
+ audiences: z
93
+ .array(z.object({
94
+ id: z.string().describe('Audience ID'),
95
+ name: z.string().describe('Audience name'),
96
+ }))
97
+ .describe('Customer audience segments'),
98
+ });
99
+ export const mapCustomerProfile = (p) => ({
100
+ loyalty_tier: p.loyalty?.tierLabel ?? '',
101
+ audiences: (p.audiences ?? []).map(a => ({
102
+ id: a.id ?? '',
103
+ name: a.name ?? '',
104
+ })),
105
+ });
106
+ // --- Price Guidance ---
107
+ export const priceGuidanceEntrySchema = z.object({
108
+ date: z.string().describe('Date in YYYYMMDD format'),
109
+ min_price: z.number().int().describe('Minimum hotel price for this date'),
110
+ max_price: z.number().int().describe('Maximum hotel price for this date'),
111
+ avg_price: z.number().int().describe('Average hotel price for this date'),
112
+ star_rating: z.string().describe('Star rating filter (All_Star, Star_2, Star_3, Star_4, Star_5)'),
113
+ product: z.string().describe('Product type (RTL=retail, SOPQ=opaque)'),
114
+ });
115
+ export const mapPriceGuidance = (entry, value) => ({
116
+ date: entry.date ?? '',
117
+ min_price: value.minPrice ?? 0,
118
+ max_price: value.maxPrice ?? 0,
119
+ avg_price: value.avgPrice ?? 0,
120
+ star_rating: value.starRating ?? '',
121
+ product: value.product ?? '',
122
+ });
123
+ // --- Dynamic Filter ---
124
+ export const dynamicFilterSchema = z.object({
125
+ type: z.string().describe('Filter category (AMENITY, PRICE, ZONE, DEAL_TYPE, RATE_OPTIONS, etc.)'),
126
+ values: z
127
+ .array(z.object({
128
+ key: z.string().describe('Machine-readable filter key'),
129
+ display: z.string().describe('Human-readable filter label'),
130
+ }))
131
+ .describe('Available filter values'),
132
+ });
133
+ export const mapDynamicFilter = (f) => ({
134
+ type: f.type ?? '',
135
+ values: (f.values ?? []).map(v => ({
136
+ key: v.key ?? '',
137
+ display: v.display ?? '',
138
+ })),
139
+ });
140
+ // --- Hotel Description ---
141
+ export const hotelDescriptionSchema = z.object({
142
+ hotel_id: z.string().describe('Hotel ID'),
143
+ short_description: z.string().describe('AI-generated short description'),
144
+ });
145
+ export const mapHotelDescription = (h) => ({
146
+ hotel_id: h.id ?? '',
147
+ short_description: h.shortDescription ?? '',
148
+ });
149
+ // --- Merchandising Badge ---
150
+ export const merchandisingBadgeSchema = z.object({
151
+ hotel_id: z.string().describe('Hotel ID'),
152
+ is_top_rated: z.boolean().describe('Whether hotel is top-rated'),
153
+ is_top_booked: z.boolean().describe('Whether hotel is top-booked'),
154
+ });
155
+ export const mapMerchandisingBadge = (e) => ({
156
+ hotel_id: e.entityId ?? '',
157
+ is_top_rated: e.topBadges?.isTopRated ?? false,
158
+ is_top_booked: e.topBadges?.isTopBooked ?? false,
159
+ });
160
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"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"}