@myrjfa/state 3.0.4 → 3.0.6

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 (38) hide show
  1. package/dist/lib/actions/chat.d.ts +1 -1
  2. package/dist/lib/actions/chat.d.ts.map +1 -1
  3. package/dist/lib/actions/chat.js +2 -2
  4. package/dist/lib/actions/companion.d.ts +57 -2
  5. package/dist/lib/actions/companion.d.ts.map +1 -1
  6. package/dist/lib/actions/companion.js +64 -2
  7. package/dist/lib/actions/fetcher.d.ts +2 -1
  8. package/dist/lib/actions/fetcher.d.ts.map +1 -1
  9. package/dist/lib/actions/fetcher.js +40 -1
  10. package/dist/lib/actions/itinerary.d.ts +19 -2
  11. package/dist/lib/actions/itinerary.d.ts.map +1 -1
  12. package/dist/lib/actions/itinerary.js +40 -2
  13. package/dist/lib/actions/itineraryOrder.d.ts +6 -2
  14. package/dist/lib/actions/itineraryOrder.d.ts.map +1 -1
  15. package/dist/lib/actions/itineraryOrder.js +4 -0
  16. package/dist/lib/companion/discoveryPrefill.d.ts +27 -0
  17. package/dist/lib/companion/discoveryPrefill.d.ts.map +1 -0
  18. package/dist/lib/companion/discoveryPrefill.js +80 -0
  19. package/dist/lib/companion/inspiration.d.ts +9 -0
  20. package/dist/lib/companion/inspiration.d.ts.map +1 -0
  21. package/dist/lib/companion/inspiration.js +15 -0
  22. package/dist/lib/context/ChatContext.d.ts +1 -0
  23. package/dist/lib/context/ChatContext.d.ts.map +1 -1
  24. package/dist/lib/context/ChatContext.js +1 -1
  25. package/dist/lib/data/itineraryDestinations.d.ts +11 -0
  26. package/dist/lib/data/itineraryDestinations.d.ts.map +1 -0
  27. package/dist/lib/data/itineraryDestinations.js +32 -0
  28. package/dist/lib/models/companion.d.ts +24 -0
  29. package/dist/lib/models/companion.d.ts.map +1 -1
  30. package/dist/lib/models/itinerary.d.ts +124 -0
  31. package/dist/lib/models/itinerary.d.ts.map +1 -1
  32. package/dist/lib/utils/itineraryPlacement.d.ts +24 -0
  33. package/dist/lib/utils/itineraryPlacement.d.ts.map +1 -0
  34. package/dist/lib/utils/itineraryPlacement.js +118 -0
  35. package/dist/lib/utils/itineraryPlanner.d.ts +7 -0
  36. package/dist/lib/utils/itineraryPlanner.d.ts.map +1 -0
  37. package/dist/lib/utils/itineraryPlanner.js +19 -0
  38. package/package.json +1 -1
@@ -354,7 +354,7 @@ export declare const chatApi: {
354
354
  }>;
355
355
  getBalances: (convId: string) => Promise<any>;
356
356
  getExpenseCategories: (convId: string) => Promise<string[]>;
357
- uploadFiles: (formData: FormData) => Promise<{
357
+ uploadFiles: (formData: FormData, onUploadProgress?: (percent: number) => void) => Promise<{
358
358
  error: string;
359
359
  data: any;
360
360
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/chat.ts"],"names":[],"mappings":"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"}
@@ -796,9 +796,9 @@ export const chatApi = {
796
796
  return [];
797
797
  }
798
798
  },
799
- uploadFiles: async (formData) => {
799
+ uploadFiles: async (formData, onUploadProgress) => {
800
800
  try {
801
- const response = await post(`${BASE_PATH}/upload`, formData);
801
+ const response = await post(`${BASE_PATH}/upload`, formData, true, { onUploadProgress });
802
802
  return response;
803
803
  }
804
804
  catch (error) {
@@ -1,4 +1,4 @@
1
- import type { CompanionSavedType } from "../models/companion";
1
+ import type { CompanionListingCard, CompanionListingSuggestions, CompanionSavedType, CompanionStandaloneKind } from "../models/companion";
2
2
  export declare function getCompanionSavedStatus(type: CompanionSavedType, targetId: string): Promise<{
3
3
  success: boolean;
4
4
  saved: boolean;
@@ -62,7 +62,19 @@ export declare function createTravelPlan(planData: any): Promise<{
62
62
  plan: any;
63
63
  error?: undefined;
64
64
  }>;
65
- export declare function createTravelPlanFromItinerary(itineraryId: string, inviteCount: number, joinPolicy?: "approval_required" | "open"): Promise<{
65
+ export declare function uploadCompanionTripCover(file: File): Promise<{
66
+ success: boolean;
67
+ url: string;
68
+ error?: undefined;
69
+ } | {
70
+ success: boolean;
71
+ error: string;
72
+ url?: undefined;
73
+ }>;
74
+ export declare function createTravelPlanFromItinerary(itineraryId: string, inviteCount: number, joinPolicy?: "approval_required" | "open", options?: {
75
+ createAnother?: boolean;
76
+ requestId?: string;
77
+ }): Promise<{
66
78
  success: boolean;
67
79
  error: any;
68
80
  plan?: undefined;
@@ -73,6 +85,49 @@ export declare function createTravelPlanFromItinerary(itineraryId: string, invit
73
85
  message: any;
74
86
  error?: undefined;
75
87
  }>;
88
+ export declare function attachItineraryToTravelPlan(planId: string, itineraryId: string): Promise<{
89
+ success: boolean;
90
+ error: any;
91
+ plan?: undefined;
92
+ } | {
93
+ success: boolean;
94
+ plan: any;
95
+ error?: undefined;
96
+ }>;
97
+ export declare function getCompanionListingSuggestions(planId: string): Promise<{
98
+ success: boolean;
99
+ suggestions: CompanionListingSuggestions;
100
+ error?: undefined;
101
+ } | {
102
+ success: boolean;
103
+ suggestions: null;
104
+ error: string;
105
+ }>;
106
+ export declare function addCompanionStandaloneLink(planId: string, kind: CompanionStandaloneKind, entityId: string): Promise<{
107
+ success: boolean;
108
+ item: CompanionListingCard;
109
+ error?: undefined;
110
+ } | {
111
+ success: boolean;
112
+ error: string;
113
+ item?: undefined;
114
+ }>;
115
+ export declare function removeCompanionStandaloneLink(planId: string, kind: CompanionStandaloneKind, entityId: string): Promise<{
116
+ success: boolean;
117
+ error?: undefined;
118
+ } | {
119
+ success: boolean;
120
+ error: string;
121
+ }>;
122
+ export declare function getCompanionTripInspiration(filters: Record<string, string>): Promise<{
123
+ success: boolean;
124
+ items: CompanionListingCard[];
125
+ error?: undefined;
126
+ } | {
127
+ success: boolean;
128
+ items: never[];
129
+ error: string;
130
+ }>;
76
131
  export declare function getTravelPlans(filters?: Record<string, string>): Promise<{
77
132
  success: boolean;
78
133
  error: any;
@@ -1 +1 @@
1
- {"version":3,"file":"companion.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/companion.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAsB,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAIlF,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM;;;;;;;;GAOvF;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;;;;;;;;GAOrG;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,MAAM;;;;;;;;;;GAQrF;AAID,wBAAsB,kBAAkB;;;;;;;;;;;;;;;GASvC;AAED,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,GAAG;;;;;;;;GAQzD;AAID,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,GAAG;;;;;;;;GAQnD;AAED,wBAAsB,6BAA6B,CACjD,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,GAAE,mBAAmB,GAAG,MAA4B;;;;;;;;;;GAY/D;AAED,wBAAsB,cAAc,CAAC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;;;;;;;;;;GASxE;AAED,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM;;;;;;;;GAQ7C;AAED,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG;;;;;;;;GAQ/D;AAED,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,MAAM;;;;;;;;GAQhD;AAED,wBAAsB,cAAc,CAAC,EAAE,EAAE,MAAM;;;;;;;;GAQ9C;AAED,wBAAsB,gBAAgB;;;;;;;;GAQrC;AAED,wBAAsB,iBAAiB;;;;;;;;GAQtC;AAID,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;;;;;;;;;;;;GAarE;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;YAIlB,WAAW;;GAInE;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM;;;;;;;;GAQnD;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU;;;;;;;;;;GAS7C;AAID,wBAAsB,aAAa,CAAC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;;;;;;;;GASvE;AAED,wBAAsB,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;;;;;;;;GAQ5E;AAED,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;;;;;;;;GAS3E;AAED,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GAAG,MAAM;;;;;;;;;;GAaxB;AAID,wBAAsB,YAAY;;;;;;;;GAQjC;AAID,wBAAsB,kBAAkB,CAAC,YAAY,EAAE,MAAM;;;;;;;;GAQ5D"}
1
+ {"version":3,"file":"companion.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/companion.ts"],"names":[],"mappings":"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"}
@@ -65,9 +65,20 @@ export async function createTravelPlan(planData) {
65
65
  return { success: false, error: "Failed to create travel plan" };
66
66
  }
67
67
  }
68
- export async function createTravelPlanFromItinerary(itineraryId, inviteCount, joinPolicy = "approval_required") {
68
+ export async function uploadCompanionTripCover(file) {
69
69
  try {
70
- const data = await post(`${BASE_PATH}/plans/from-itinerary/${encodeURIComponent(itineraryId)}`, { inviteCount, joinPolicy });
70
+ const body = new FormData();
71
+ body.append("images", file);
72
+ const data = await post(`${BASE_PATH}/uploads/trip-cover`, body);
73
+ return { success: true, url: data.data.url };
74
+ }
75
+ catch (error) {
76
+ return { success: false, error: error instanceof Error ? error.message : "Could not upload the trip cover." };
77
+ }
78
+ }
79
+ export async function createTravelPlanFromItinerary(itineraryId, inviteCount, joinPolicy = "approval_required", options = {}) {
80
+ try {
81
+ const data = await post(`${BASE_PATH}/plans/from-itinerary/${encodeURIComponent(itineraryId)}`, { inviteCount, joinPolicy, ...options });
71
82
  if (data.statusCode >= 400)
72
83
  return { success: false, error: data.message };
73
84
  return { success: true, plan: data.data, message: data.message };
@@ -76,6 +87,57 @@ export async function createTravelPlanFromItinerary(itineraryId, inviteCount, jo
76
87
  return { success: false, error: "We could not post this trip. Please try again." };
77
88
  }
78
89
  }
90
+ export async function attachItineraryToTravelPlan(planId, itineraryId) {
91
+ try {
92
+ const data = await put(`${BASE_PATH}/plans/${encodeURIComponent(planId)}/itinerary`, { itineraryId });
93
+ if (data.statusCode >= 400)
94
+ return { success: false, error: data.message };
95
+ return { success: true, plan: data.data };
96
+ }
97
+ catch (error) {
98
+ const message = typeof error === "object" && error !== null && "message" in error
99
+ ? String(error.message)
100
+ : "We could not link this itinerary. Please try again.";
101
+ return { success: false, error: message };
102
+ }
103
+ }
104
+ export async function getCompanionListingSuggestions(planId) {
105
+ try {
106
+ const data = await get(`${BASE_PATH}/plans/${encodeURIComponent(planId)}/listing-suggestions`);
107
+ return { success: true, suggestions: data.data };
108
+ }
109
+ catch (error) {
110
+ return { success: false, suggestions: null, error: error instanceof Error ? error.message : "Could not load trip suggestions." };
111
+ }
112
+ }
113
+ export async function addCompanionStandaloneLink(planId, kind, entityId) {
114
+ try {
115
+ const data = await post(`${BASE_PATH}/plans/${encodeURIComponent(planId)}/standalone-links`, { kind, entityId });
116
+ return { success: true, item: data.data };
117
+ }
118
+ catch (error) {
119
+ return { success: false, error: error instanceof Error ? error.message : "Could not add this listing to your trip." };
120
+ }
121
+ }
122
+ export async function removeCompanionStandaloneLink(planId, kind, entityId) {
123
+ try {
124
+ await del(`${BASE_PATH}/plans/${encodeURIComponent(planId)}/standalone-links/${encodeURIComponent(kind)}/${encodeURIComponent(entityId)}`);
125
+ return { success: true };
126
+ }
127
+ catch (error) {
128
+ return { success: false, error: error instanceof Error ? error.message : "Could not remove this listing from your trip." };
129
+ }
130
+ }
131
+ export async function getCompanionTripInspiration(filters) {
132
+ try {
133
+ const query = new URLSearchParams(filters).toString();
134
+ const data = await get(`${BASE_PATH}/trips/inspiration${query ? `?${query}` : ""}`);
135
+ return { success: true, items: data.data || [] };
136
+ }
137
+ catch (error) {
138
+ return { success: false, items: [], error: error instanceof Error ? error.message : "Could not load trip inspiration." };
139
+ }
140
+ }
79
141
  export async function getTravelPlans(filters = {}) {
80
142
  try {
81
143
  const query = new URLSearchParams(filters).toString();
@@ -4,9 +4,10 @@ interface FetchOptions {
4
4
  signal?: AbortSignal;
5
5
  headers?: Record<string, string>;
6
6
  keepalive?: boolean;
7
+ onUploadProgress?: (percent: number) => void;
7
8
  }
8
9
  export declare function get<T>(url: string, includeAuth?: boolean): Promise<T>;
9
- export declare function post<T>(url: string, body: any, includeAuth?: boolean, options?: Pick<FetchOptions, 'signal' | 'headers' | 'retry' | 'keepalive'>): Promise<T>;
10
+ export declare function post<T>(url: string, body: any, includeAuth?: boolean, options?: Pick<FetchOptions, 'signal' | 'headers' | 'retry' | 'keepalive' | 'onUploadProgress'>): Promise<T>;
10
11
  export declare function put<T>(url: string, body: any): Promise<T>;
11
12
  export declare function patch<T>(url: string, body: any): Promise<T>;
12
13
  export declare function del<T>(url: string, body?: any, includeAuth?: boolean, options?: Pick<FetchOptions, 'signal' | 'headers' | 'retry'>): Promise<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/fetcher.ts"],"names":[],"mappings":"AAyBA,UAAU,YAAY;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAmKD,wBAAsB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,GAAE,OAAc,cAEpE;AAED,wBAAsB,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,GAAE,OAAc,EAAE,OAAO,GAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,CAAM,cAEhK;AAED,wBAAsB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,cAElD;AAED,wBAAsB,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,cAEpD;AAED,wBAAsB,GAAG,CAAC,CAAC,EACvB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,GAAG,EACV,WAAW,GAAE,OAAc,EAC3B,OAAO,GAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAM,cAGnE"}
1
+ {"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/fetcher.ts"],"names":[],"mappings":"AAyBA,UAAU,YAAY;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AA0MD,wBAAsB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,GAAE,OAAc,cAEpE;AAED,wBAAsB,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,GAAE,OAAc,EAAE,OAAO,GAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,kBAAkB,CAAM,cAErL;AAED,wBAAsB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,cAElD;AAED,wBAAsB,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,cAEpD;AAED,wBAAsB,GAAG,CAAC,CAAC,EACvB,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,GAAG,EACV,WAAW,GAAE,OAAc,EAC3B,OAAO,GAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAM,cAGnE"}
@@ -10,6 +10,41 @@ class ApiError extends Error {
10
10
  }
11
11
  }
12
12
  const baseURL = process.env.NEXT_PUBLIC_API_URL;
13
+ // Browser upload events provide byte counts; response parsing and auth retry
14
+ // still run through customFetch. Ordinary and server requests retain fetch.
15
+ function uploadWithProgress(url, init, onProgress) {
16
+ return new Promise((resolve, reject) => {
17
+ if (init.signal?.aborted) {
18
+ reject(new DOMException('Upload cancelled', 'AbortError'));
19
+ return;
20
+ }
21
+ const request = new XMLHttpRequest();
22
+ request.open(init.method || 'POST', url);
23
+ request.withCredentials = true;
24
+ new Headers(init.headers).forEach((value, key) => request.setRequestHeader(key, value));
25
+ const abort = () => request.abort();
26
+ const cleanup = () => {
27
+ init.signal?.removeEventListener('abort', abort);
28
+ request.upload.onprogress = null;
29
+ };
30
+ request.upload.onprogress = (event) => {
31
+ if (event.lengthComputable && event.total > 0) {
32
+ onProgress(Math.round(event.loaded / event.total * 100));
33
+ }
34
+ };
35
+ request.onload = () => {
36
+ cleanup();
37
+ resolve(new Response(request.status === 204 ? null : request.responseText, {
38
+ status: request.status,
39
+ headers: { 'Content-Type': request.getResponseHeader('Content-Type') || 'application/json' },
40
+ }));
41
+ };
42
+ request.onerror = () => { cleanup(); reject(new TypeError('Failed to fetch')); };
43
+ request.onabort = () => { cleanup(); reject(new DOMException('Upload cancelled', 'AbortError')); };
44
+ init.signal?.addEventListener('abort', abort, { once: true });
45
+ request.send(init.body);
46
+ });
47
+ }
13
48
  /**
14
49
  * #2 — Stable device fingerprint stored in localStorage.
15
50
  * Survives browser sessions (unlike cookies which can expire/be cleared).
@@ -68,7 +103,9 @@ async function customFetch(input, method, body, options = {}) {
68
103
  keepalive,
69
104
  ...(body ? { body: isFormData ? body : JSON.stringify(body) } : {}),
70
105
  };
71
- const response = await fetch(url, init);
106
+ const response = options.onUploadProgress && isFormData && includeAuth && typeof window !== 'undefined'
107
+ ? await uploadWithProgress(url, init, options.onUploadProgress)
108
+ : await fetch(url, init);
72
109
  if (response.ok) {
73
110
  return response.status !== 204 ? (await response.json()) : {};
74
111
  }
@@ -141,6 +178,8 @@ async function refreshToken(input, method, body, options = {}) {
141
178
  return customFetch(input, method, body, { ...options, includeAuth: true, retry: false });
142
179
  }
143
180
  catch (error) {
181
+ if (error?.name === 'AbortError')
182
+ throw error;
144
183
  if (error && typeof error === 'object' && ('$$typeof' in error || error.digest === 'DYNAMIC_SERVER_USAGE')) {
145
184
  throw error; // Re-throw Next.js PPR bail-out
146
185
  }
@@ -1,11 +1,28 @@
1
- import type { ItinerarySummary } from "../models/itinerary";
1
+ import type { ContextualDestinationSuggestion, GenerateItineraryInput, ItineraryRouteInput, ItinerarySummary } from "../models/itinerary";
2
+ export type { ContextualDestinationSuggestion, GenerateItineraryInput, ItineraryReturnMode, ItineraryRouteInput, } from "../models/itinerary";
2
3
  export declare function getTrendingItineraries(limit?: number): Promise<{
3
4
  success: boolean;
4
5
  itineraries: ItinerarySummary[];
5
6
  error?: string;
6
7
  }>;
7
- export declare function generateItinerary<T = any>(input: unknown): Promise<T>;
8
+ export declare function generateItinerary<T = any>(input: GenerateItineraryInput): Promise<{
9
+ success: true;
10
+ itinerary: T;
11
+ } | {
12
+ success: false;
13
+ error: string;
14
+ }>;
15
+ export declare function getContextualDestinationSuggestions(route: ItineraryRouteInput): Promise<{
16
+ success: boolean;
17
+ suggestions: ContextualDestinationSuggestion[];
18
+ error?: string;
19
+ }>;
8
20
  export declare function getItineraryById<T = any>(id: string): Promise<T>;
21
+ export declare function getMyItineraries(): Promise<{
22
+ success: boolean;
23
+ itineraries: ItinerarySummary[];
24
+ error?: string;
25
+ }>;
9
26
  export declare function regenerateItinerary<T = any>(id: string): Promise<T>;
10
27
  export declare function customizeItinerary<T = any>(id: string, input: unknown): Promise<T>;
11
28
  export declare function getPublicItinerary<T = any>(slug: string): Promise<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"itinerary.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/itinerary.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAK5D,wBAAsB,sBAAsB,CAAC,KAAK,SAAI,GAAG,OAAO,CAAC;IAC/D,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAeD;AAED,wBAAsB,iBAAiB,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAG3E;AAED,wBAAsB,gBAAgB,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAGtE;AAED,wBAAsB,mBAAmB,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAOzE;AAED,wBAAsB,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAOxF;AAED,wBAAsB,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAM1E"}
1
+ {"version":3,"file":"itinerary.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/itinerary.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,+BAA+B,EAC/B,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,+BAA+B,EAC/B,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAK7B,wBAAsB,sBAAsB,CAAC,KAAK,SAAI,GAAG,OAAO,CAAC;IAC/D,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAeD;AAED,wBAAsB,iBAAiB,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,sBAAsB,GAAG,OAAO,CACpF;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,CAAC,CAAA;CAAE,GAC/B;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CACpC,CAcA;AAED,wBAAsB,mCAAmC,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC;IAC7F,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,+BAA+B,EAAE,CAAC;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAWD;AAED,wBAAsB,gBAAgB,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAGtE;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAOD;AAED,wBAAsB,mBAAmB,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAOzE;AAED,wBAAsB,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAOxF;AAED,wBAAsB,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAM1E"}
@@ -15,13 +15,51 @@ export async function getTrendingItineraries(limit = 6) {
15
15
  }
16
16
  }
17
17
  export async function generateItinerary(input) {
18
- const payload = await post("/itineraries/generate", input, true);
19
- return payload.data;
18
+ try {
19
+ const payload = await post("/itineraries/generate", input, true);
20
+ return { success: true, itinerary: payload.data };
21
+ }
22
+ catch (caught) {
23
+ const status = typeof caught === "object" && caught !== null && "statusCode" in caught
24
+ ? Number(caught.statusCode)
25
+ : 0;
26
+ if (status === 401 || status === 403)
27
+ return { success: false, error: "Your session has expired. Please sign in again, then create your itinerary." };
28
+ if (status === 429)
29
+ return { success: false, error: "Our trip planner is busy right now. Please try again in a little while." };
30
+ if (status === 503 || status === 502)
31
+ return { success: false, error: "The AI trip planner is temporarily unavailable. Your answers are safe here; please try again shortly." };
32
+ if (status === 400 || status === 422)
33
+ return { success: false, error: "Please check your route, dates and budget, then try again." };
34
+ return { success: false, error: "We couldn't create your itinerary right now. Please try again shortly." };
35
+ }
36
+ }
37
+ export async function getContextualDestinationSuggestions(route) {
38
+ try {
39
+ const payload = await post("/itineraries/destination-suggestions", { route }, true);
40
+ return { success: true, suggestions: (payload.data ?? []).slice(0, 3) };
41
+ }
42
+ catch (caught) {
43
+ const statusCode = typeof caught === "object" && caught !== null && "statusCode" in caught
44
+ ? Number(caught.statusCode)
45
+ : 0;
46
+ console.error("Itinerary destination suggestions unavailable", { statusCode });
47
+ return { success: false, suggestions: [] };
48
+ }
20
49
  }
21
50
  export async function getItineraryById(id) {
22
51
  const payload = await get(`/itineraries/${encodeURIComponent(id)}`, true);
23
52
  return payload.data;
24
53
  }
54
+ export async function getMyItineraries() {
55
+ try {
56
+ const payload = await get("/itineraries", true);
57
+ return { success: true, itineraries: payload.data ?? [] };
58
+ }
59
+ catch {
60
+ return { success: false, itineraries: [], error: "Your itineraries could not be loaded" };
61
+ }
62
+ }
25
63
  export async function regenerateItinerary(id) {
26
64
  const payload = await post(`/itineraries/${encodeURIComponent(id)}/regenerate`, {}, true);
27
65
  return payload.data;
@@ -1,7 +1,11 @@
1
- import type { AssistedFulfillmentItem, ItineraryCandidate, ItineraryOrder, ItineraryReplacementResult, ItineraryV3 } from "../models/itinerary";
1
+ import type { AssistedFulfillmentItem, ItineraryCandidate, ItineraryOrder, ItineraryReplacementResult, ItineraryRecommendation, ItineraryV3 } from "../models/itinerary";
2
2
  export type { AssistedFulfillmentItem } from "../models/itinerary";
3
3
  export declare const refineItinerary: (itineraryId: string, message: string) => Promise<ItineraryV3>;
4
4
  export declare const getItineraryAlternatives: (itineraryId: string, itemId: string) => Promise<ItineraryCandidate[]>;
5
+ export declare const getItineraryRecommendationAlternatives: (itineraryId: string, recommendationId: string) => Promise<ItineraryRecommendation[]>;
6
+ export declare const selectItineraryRecommendationAlternative: (itineraryId: string, recommendationId: string, alternativeId: string) => Promise<ItineraryV3>;
7
+ export declare const getItineraryDayCandidates: (itineraryId: string, day: number, category?: string) => Promise<ItineraryCandidate[]>;
8
+ export declare const addItineraryItem: (itineraryId: string, day: number, candidateId: string) => Promise<ItineraryV3>;
5
9
  export declare const selectItineraryAlternative: (itineraryId: string, itemId: string, candidateId: string, locked?: boolean) => Promise<ItineraryV3>;
6
10
  export declare const requoteItinerary: (itineraryId: string) => Promise<ItineraryV3>;
7
11
  export declare const createItineraryOrder: (itineraryId: string, contactDetails: {
@@ -46,7 +50,7 @@ export declare const useItineraryTemplate: (slug: string, input: {
46
50
  }) => Promise<ItineraryV3>;
47
51
  export declare const getAssistedItineraryQueue: () => Promise<AssistedFulfillmentItem[]>;
48
52
  export declare const updateAssistedItineraryItem: (itemId: string, input: {
49
- action: "assign" | "confirm" | "cannot_fulfill" | "confirm_cancellation";
53
+ action: "assign" | "release" | "confirm" | "cannot_fulfill" | "confirm_cancellation";
50
54
  supplierAmount?: number;
51
55
  taxes?: number;
52
56
  confirmation?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"itineraryOrder.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/itineraryOrder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,EACd,0BAA0B,EAC1B,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAKnE,eAAO,MAAM,eAAe,GAAU,aAAa,MAAM,EAAE,SAAS,MAAM,yBAAoG,CAAC;AAE/K,eAAO,MAAM,wBAAwB,GAAU,aAAa,MAAM,EAAE,QAAQ,MAAM,kCAAqH,CAAC;AAExM,eAAO,MAAM,0BAA0B,GAAU,aAAa,MAAM,EAAE,QAAQ,MAAM,EAAE,aAAa,MAAM,EAAE,gBAAa,yBAAoI,CAAC;AAE7P,eAAO,MAAM,gBAAgB,GAAU,aAAa,MAAM,yBAA4F,CAAC;AAEvJ,eAAO,MAAM,oBAAoB,GAAU,aAAa,MAAM,EAAE,gBAAgB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,gBAAgB,MAAM;WAA4C,cAAc;qBAAmB,MAAM;mBAAiB,MAAM;YAAU,MAAM;cAAY,KAAK;EAAuK,CAAC;AAEzc,eAAO,MAAM,2BAA2B,GAAU,SAAS,MAAM,EAAE,SAAS;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,4BAA4G,CAAC;AAE/Q,eAAO,MAAM,iBAAiB,GAAU,SAAS,MAAM,4BAAmF,CAAC;AAE3I,eAAO,MAAM,6BAA6B,GAAU,SAAS,MAAM;cAA+C,KAAK;qBAAmB,MAAM;WAAS,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;EAA4D,CAAC;AAElS,eAAO,MAAM,oBAAoB,GAAU,SAAS,MAAM,EAAE,QAAQ,MAAM,4BAAuG,CAAC;AAElL,eAAO,MAAM,yBAAyB,GACpC,SAAS,MAAM,EACf,aAAa,MAAM,EACnB,aAAa,MAAM,EACnB,sBAAsB;IAAE,iBAAiB,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,wCACwD,CAAC;AAEvK,eAAO,MAAM,oBAAoB,GAAU,MAAM,MAAM,EAAE,OAAO;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,yBAA+G,CAAC;AAE/Q,eAAO,MAAM,yBAAyB,0CAA+G,CAAC;AAEtJ,eAAO,MAAM,2BAA2B,GAAU,QAAQ,MAAM,EAAE,OAAO;IAAE,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,gBAAgB,GAAG,sBAAsB,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,qCAAsH,CAAC"}
1
+ {"version":3,"file":"itineraryOrder.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/itineraryOrder.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,10 @@ import { get, patch, post } from "./fetcher";
2
2
  const unwrap = (payload) => payload.data;
3
3
  export const refineItinerary = async (itineraryId, message) => unwrap(await post(`/itineraries/${itineraryId}/refine`, { message }));
4
4
  export const getItineraryAlternatives = async (itineraryId, itemId) => unwrap(await get(`/itineraries/${itineraryId}/items/${itemId}/alternatives`));
5
+ export const getItineraryRecommendationAlternatives = async (itineraryId, recommendationId) => unwrap(await get(`/itineraries/${encodeURIComponent(itineraryId)}/recommendations/${encodeURIComponent(recommendationId)}/alternatives`));
6
+ export const selectItineraryRecommendationAlternative = async (itineraryId, recommendationId, alternativeId) => unwrap(await patch(`/itineraries/${encodeURIComponent(itineraryId)}/recommendations/${encodeURIComponent(recommendationId)}`, { alternativeId }));
7
+ export const getItineraryDayCandidates = async (itineraryId, day, category) => unwrap(await get(`/itineraries/${encodeURIComponent(itineraryId)}/candidates?day=${day}${category ? `&category=${encodeURIComponent(category)}` : ""}`));
8
+ export const addItineraryItem = async (itineraryId, day, candidateId) => unwrap(await post(`/itineraries/${encodeURIComponent(itineraryId)}/items`, { day, candidateId }));
5
9
  export const selectItineraryAlternative = async (itineraryId, itemId, candidateId, locked = true) => unwrap(await patch(`/itineraries/${itineraryId}/items/${itemId}/selection`, { candidateId, locked }));
6
10
  export const requoteItinerary = async (itineraryId) => unwrap(await post(`/itineraries/${itineraryId}/requote`, {}));
7
11
  export const createItineraryOrder = async (itineraryId, contactDetails, idempotencyKey) => unwrap(await post(`/itineraries?itineraryId=${encodeURIComponent(itineraryId)}`, { contactDetails, termsAccepted: true }, true, { headers: { "Idempotency-Key": idempotencyKey } }));
@@ -0,0 +1,27 @@
1
+ export type CompanionDiscoveryPrefill = Partial<{
2
+ country: string;
3
+ state: string;
4
+ city: string;
5
+ style: string;
6
+ minBudget: string;
7
+ maxBudget: string;
8
+ minDays: string;
9
+ maxDays: string;
10
+ startDate: string;
11
+ endDate: string;
12
+ openSpots: string;
13
+ maxGroupSize: string;
14
+ interest: string;
15
+ }>;
16
+ export interface CompanionDiscoveryLocation {
17
+ name: string;
18
+ state: string;
19
+ country: string;
20
+ }
21
+ type SearchParamsReader = {
22
+ get(name: string): string | null;
23
+ };
24
+ export declare function parseCompanionDiscoveryPrefill(params: SearchParamsReader, locations?: readonly CompanionDiscoveryLocation[]): CompanionDiscoveryPrefill;
25
+ export declare function serializeCompanionDiscoveryPrefill(prefill: CompanionDiscoveryPrefill): URLSearchParams;
26
+ export {};
27
+ //# sourceMappingURL=discoveryPrefill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discoveryPrefill.d.ts","sourceRoot":"","sources":["../../../src/lib/companion/discoveryPrefill.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAAC;AAEH,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,kBAAkB,GAAG;IAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AA0B/D,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,kBAAkB,EAC1B,SAAS,GAAE,SAAS,0BAA0B,EAAO,GACpD,yBAAyB,CA2C3B;AAED,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,yBAAyB,mBAOpF"}
@@ -0,0 +1,80 @@
1
+ const KEYS = [
2
+ "country", "state", "city", "style", "minBudget", "maxBudget", "minDays",
3
+ "maxDays", "startDate", "endDate", "openSpots", "maxGroupSize", "interest",
4
+ ];
5
+ const STYLES = new Set(["budget", "backpacker", "flashpacker", "mid-range", "luxury"]);
6
+ const INTERESTS = new Set(["adventure", "culture", "food", "hiking", "nature", "nightlife", "photography", "wellness"]);
7
+ const SAFE_LABEL = /^[\p{L}\p{M} .'-]{1,80}$/u;
8
+ const exactDate = (value) => {
9
+ if (!value || !/^\d{4}-\d{2}-\d{2}$/.test(value))
10
+ return "";
11
+ const date = new Date(`${value}T00:00:00.000Z`);
12
+ return Number.isNaN(date.getTime()) || date.toISOString().slice(0, 10) !== value ? "" : value;
13
+ };
14
+ const boundedInteger = (value, min, max) => {
15
+ if (!value || !/^\d+$/.test(value))
16
+ return "";
17
+ const number = Number(value);
18
+ return Number.isSafeInteger(number) && number >= min && number <= max ? String(number) : "";
19
+ };
20
+ const findCaseInsensitive = (values, value) => (value ? values.find((candidate) => candidate.toLocaleLowerCase() === value.trim().toLocaleLowerCase()) || "" : "");
21
+ export function parseCompanionDiscoveryPrefill(params, locations = []) {
22
+ const result = {};
23
+ const cityInput = params.get("city")?.trim() || "";
24
+ const countryInput = params.get("country")?.trim() || "";
25
+ const stateInput = params.get("state")?.trim() || "";
26
+ const location = cityInput && SAFE_LABEL.test(cityInput)
27
+ ? locations.find((candidate) => candidate.name.toLocaleLowerCase() === cityInput.toLocaleLowerCase()
28
+ && (!countryInput || candidate.country.toLocaleLowerCase() === countryInput.toLocaleLowerCase())
29
+ && (!stateInput || candidate.state.toLocaleLowerCase() === stateInput.toLocaleLowerCase()))
30
+ : undefined;
31
+ if (location) {
32
+ result.country = location.country;
33
+ result.state = location.state;
34
+ result.city = location.name;
35
+ }
36
+ else {
37
+ const country = findCaseInsensitive([...new Set(locations.map((item) => item.country))], countryInput);
38
+ const states = locations.filter((item) => !country || item.country === country).map((item) => item.state);
39
+ const state = findCaseInsensitive([...new Set(states)], stateInput);
40
+ if (country)
41
+ result.country = country;
42
+ if (state)
43
+ result.state = state;
44
+ }
45
+ const style = params.get("style")?.trim().toLowerCase() || "";
46
+ if (STYLES.has(style))
47
+ result.style = style;
48
+ const interest = params.get("interest")?.trim().toLowerCase() || "";
49
+ if (INTERESTS.has(interest))
50
+ result.interest = interest;
51
+ const numericBounds = {
52
+ minBudget: [0, 10000000], maxBudget: [0, 10000000],
53
+ minDays: [1, 365], maxDays: [1, 365], openSpots: [1, 19], maxGroupSize: [2, 20],
54
+ };
55
+ for (const [key, [min, max]] of Object.entries(numericBounds)) {
56
+ const value = boundedInteger(params.get(key), min, max);
57
+ if (value)
58
+ result[key] = value;
59
+ }
60
+ const startDate = exactDate(params.get("startDate"));
61
+ const endDate = exactDate(params.get("endDate"));
62
+ if (startDate)
63
+ result.startDate = startDate;
64
+ if (endDate && (!startDate || endDate >= startDate))
65
+ result.endDate = endDate;
66
+ if (result.minBudget && result.maxBudget && Number(result.maxBudget) < Number(result.minBudget))
67
+ delete result.maxBudget;
68
+ if (result.minDays && result.maxDays && Number(result.maxDays) < Number(result.minDays))
69
+ delete result.maxDays;
70
+ return result;
71
+ }
72
+ export function serializeCompanionDiscoveryPrefill(prefill) {
73
+ const params = new URLSearchParams();
74
+ for (const key of KEYS) {
75
+ const value = prefill[key];
76
+ if (value)
77
+ params.set(key, value);
78
+ }
79
+ return params;
80
+ }
@@ -0,0 +1,9 @@
1
+ export declare const COMPANION_INSPIRATION_DECISION_INTERVAL = 4;
2
+ export declare function shouldShowTripInspiration({ mode, organicDecisionCount, hasCandidate, shown, }: {
3
+ mode: "trips" | "travelers";
4
+ organicDecisionCount: number;
5
+ hasCandidate: boolean;
6
+ shown: boolean;
7
+ }): boolean;
8
+ export declare function companionInspirationSessionKey(filters: Record<string, string>): string;
9
+ //# sourceMappingURL=inspiration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspiration.d.ts","sourceRoot":"","sources":["../../../src/lib/companion/inspiration.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uCAAuC,IAAI,CAAC;AAEzD,wBAAgB,yBAAyB,CAAC,EACxC,IAAI,EACJ,oBAAoB,EACpB,YAAY,EACZ,KAAK,GACN,EAAE;IACD,IAAI,EAAE,OAAO,GAAG,WAAW,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;CAChB,WAKA;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAO7E"}
@@ -0,0 +1,15 @@
1
+ export const COMPANION_INSPIRATION_DECISION_INTERVAL = 4;
2
+ export function shouldShowTripInspiration({ mode, organicDecisionCount, hasCandidate, shown, }) {
3
+ return mode === "trips"
4
+ && organicDecisionCount >= COMPANION_INSPIRATION_DECISION_INTERVAL
5
+ && hasCandidate
6
+ && !shown;
7
+ }
8
+ export function companionInspirationSessionKey(filters) {
9
+ const signature = Object.entries(filters)
10
+ .filter(([, value]) => Boolean(value))
11
+ .sort(([left], [right]) => left.localeCompare(right))
12
+ .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
13
+ .join("&");
14
+ return `trippeaze:companion-inspiration:v1:${signature || "all"}`;
15
+ }
@@ -25,6 +25,7 @@ interface ChatContextType {
25
25
  actorModel: ChatActorModel;
26
26
  }>;
27
27
  type?: "text" | "media" | "announcement";
28
+ onUploadProgress?: (percent: number) => void;
28
29
  }) => Promise<void>;
29
30
  createPoll: (conversationId: string, question: string, options: string[], allowMultiple: boolean) => void;
30
31
  votePoll: (pollId: string, optionIndex: number) => Promise<Poll | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"ChatContext.d.ts","sourceRoot":"","sources":["../../../src/lib/context/ChatContext.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChatContext.d.ts","sourceRoot":"","sources":["../../../src/lib/context/ChatContext.tsx"],"names":[],"mappings":"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"}
@@ -73,7 +73,7 @@ export function ChatProvider({ children }) {
73
73
  if (files?.length) {
74
74
  const formData = new FormData();
75
75
  files.forEach((file) => formData.append("files", file));
76
- const upload = await chatApi.uploadFiles(formData);
76
+ const upload = await chatApi.uploadFiles(formData, options?.onUploadProgress);
77
77
  media = upload?.data?.files || [];
78
78
  if (!media.length) {
79
79
  const errMsg = upload?.error?.message || "Unable to upload attachments";
@@ -0,0 +1,11 @@
1
+ export type ItineraryLocationKind = "city" | "state" | "country";
2
+ export interface ItineraryLocationOption {
3
+ name: string;
4
+ region: string;
5
+ kind: ItineraryLocationKind;
6
+ emoji: string;
7
+ }
8
+ export declare const ITINERARY_LOCATION_OPTIONS: ItineraryLocationOption[];
9
+ export declare function findItineraryLocations(query: string, excluded?: string[], limit?: number): ItineraryLocationOption[];
10
+ export declare function canonicalItineraryLocation(name: string): string | undefined;
11
+ //# sourceMappingURL=itineraryDestinations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"itineraryDestinations.d.ts","sourceRoot":"","sources":["../../../src/lib/data/itineraryDestinations.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjE,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,qBAAqB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAyBD,eAAO,MAAM,0BAA0B,2BACkG,CAAC;AAE1I,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,EAAO,EAAE,KAAK,SAAI,6BAQvF;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,sBAGtD"}
@@ -0,0 +1,32 @@
1
+ import { COUNTRIES } from "./countryStates";
2
+ const CURATED_CITIES = [
3
+ ["Delhi", "India", "🏛️"], ["Goa", "India", "🏖️"], ["Kochi", "India", "🌴"],
4
+ ["Munnar", "India", "🍃"], ["Bengaluru", "India", "🌇"], ["Mumbai", "India", "🌆"],
5
+ ["Jaipur", "India", "🏯"], ["Manali", "India", "🏔️"], ["Varanasi", "India", "🕌"],
6
+ ["Chennai", "India", "🌊"], ["Hyderabad", "India", "🍲"], ["Kolkata", "India", "🎭"],
7
+ ["Tokyo", "Japan", "🗼"], ["Kyoto", "Japan", "⛩️"], ["Bangkok", "Thailand", "🏯"],
8
+ ["Bali", "Indonesia", "🌺"], ["Singapore", "Singapore", "🦁"], ["Paris", "France", "🗼"],
9
+ ["London", "United Kingdom", "🎡"], ["Rome", "Italy", "🏛️"], ["Dubai", "United Arab Emirates", "🏙️"],
10
+ ["Sydney", "Australia", "🦘"], ["New York", "United States", "🗽"], ["Kathmandu", "Nepal", "⛰️"],
11
+ ];
12
+ const countryOptions = COUNTRIES.map((country) => ({
13
+ name: country.name, region: "Country", kind: "country", emoji: "🌍",
14
+ }));
15
+ const stateOptions = COUNTRIES.flatMap((country) => country.states.map((state) => ({ name: state, region: country.name, kind: "state", emoji: "📍" })));
16
+ const cityOptions = CURATED_CITIES.map(([name, region, emoji]) => ({
17
+ name, region, kind: "city", emoji,
18
+ }));
19
+ export const ITINERARY_LOCATION_OPTIONS = [...cityOptions, ...stateOptions, ...countryOptions]
20
+ .filter((item, index, all) => all.findIndex((candidate) => candidate.name === item.name && candidate.region === item.region) === index);
21
+ export function findItineraryLocations(query, excluded = [], limit = 8) {
22
+ const normalized = query.trim().toLocaleLowerCase();
23
+ if (!normalized)
24
+ return [];
25
+ const blocked = new Set(excluded.map((value) => value.toLocaleLowerCase()));
26
+ return ITINERARY_LOCATION_OPTIONS.filter((option) => !blocked.has(option.name.toLocaleLowerCase()) &&
27
+ (option.name.toLocaleLowerCase().includes(normalized) || option.region.toLocaleLowerCase().includes(normalized))).slice(0, limit);
28
+ }
29
+ export function canonicalItineraryLocation(name) {
30
+ const normalized = name.trim().toLocaleLowerCase();
31
+ return ITINERARY_LOCATION_OPTIONS.find((option) => option.name.toLocaleLowerCase() === normalized)?.name;
32
+ }
@@ -16,4 +16,28 @@ export interface CompanionSavedPage {
16
16
  items: CompanionSavedItem[];
17
17
  nextCursor: string | null;
18
18
  }
19
+ export type CompanionStandaloneKind = "stay" | "adventure" | "event" | "package";
20
+ export interface CompanionListingCard {
21
+ kind: CompanionStandaloneKind;
22
+ entityId: string;
23
+ title: string;
24
+ unavailable?: boolean;
25
+ slug?: string;
26
+ href?: string;
27
+ image?: string;
28
+ location?: string;
29
+ price?: number;
30
+ currency?: string;
31
+ priceBasis?: string;
32
+ sponsored?: boolean;
33
+ trendingScore?: number;
34
+ durationDays?: number;
35
+ category?: string;
36
+ }
37
+ export interface CompanionListingSuggestions {
38
+ stays: CompanionListingCard[];
39
+ adventures: CompanionListingCard[];
40
+ events: CompanionListingCard[];
41
+ packages: CompanionListingCard[];
42
+ }
19
43
  //# sourceMappingURL=companion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"companion.d.ts","sourceRoot":"","sources":["../../../src/lib/models/companion.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B"}
1
+ {"version":3,"file":"companion.d.ts","sourceRoot":"","sources":["../../../src/lib/models/companion.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjF,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,uBAAuB,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,QAAQ,EAAE,oBAAoB,EAAE,CAAC;CAClC"}
@@ -10,10 +10,64 @@ export interface ItinerarySummary {
10
10
  interests?: string[];
11
11
  totalEstimatedCost?: number;
12
12
  overview?: string;
13
+ route?: ItineraryRouteInput;
14
+ dateRecommendation?: ItineraryDateRecommendation;
13
15
  slug: string;
14
16
  viewCount?: number;
15
17
  companionPlanId?: string;
18
+ companionPlans?: Array<{
19
+ _id: string;
20
+ status: "open" | "full" | "completed" | "cancelled";
21
+ destination?: {
22
+ city?: string;
23
+ state?: string;
24
+ country?: string;
25
+ };
26
+ startDate?: string;
27
+ endDate?: string;
28
+ }>;
16
29
  createdAt?: string;
30
+ status?: "draft" | "saved" | "booking_in_progress" | "booked";
31
+ activeOrderId?: string;
32
+ }
33
+ export interface ItineraryDateRecommendation {
34
+ startDate: string;
35
+ endDate: string;
36
+ reasonType: "inventory_availability" | "budget_fit" | "route_feasibility" | "relevant_event" | "seasonal_access";
37
+ reason: string;
38
+ }
39
+ export type ItineraryReturnMode = "origin" | "none" | "different";
40
+ export interface ItineraryRouteInput {
41
+ origin: string;
42
+ destinations: string[];
43
+ return: {
44
+ mode: ItineraryReturnMode;
45
+ location?: string;
46
+ };
47
+ }
48
+ export interface GenerateItineraryInput {
49
+ route: ItineraryRouteInput;
50
+ destination: string;
51
+ origin: string;
52
+ startDate: string;
53
+ endDate: string;
54
+ numberOfPeople: number;
55
+ budget: number;
56
+ interests: string[];
57
+ pace: "relaxed" | "balanced" | "packed";
58
+ includeOriginTravel: boolean;
59
+ budgetFlexibility: "strict" | "little";
60
+ flexibleDates: {
61
+ enabled: boolean;
62
+ marginDays: number;
63
+ preserveDuration: true;
64
+ };
65
+ specialRequirements?: string;
66
+ }
67
+ export interface ContextualDestinationSuggestion {
68
+ name: string;
69
+ region: string;
70
+ reason: string;
17
71
  }
18
72
  export type ItineraryItemCategory = "flight" | "stay" | "transfer" | "restaurant" | "activity" | "event" | "guide" | "rental" | "package";
19
73
  export type ItineraryFulfillmentMode = "direct" | "assisted" | "advisory";
@@ -22,6 +76,9 @@ export interface ItineraryQuote {
22
76
  base: number;
23
77
  taxes: number;
24
78
  trippeazeFee: number;
79
+ bufferAmount?: number;
80
+ estimated?: boolean;
81
+ estimateSource?: string;
25
82
  total: number;
26
83
  quotedAt: string;
27
84
  expiresAt: string;
@@ -31,9 +88,12 @@ export interface ItineraryCandidate {
31
88
  category: ItineraryItemCategory;
32
89
  title: string;
33
90
  description?: string;
91
+ relatedPick?: string;
34
92
  imageUrl?: string;
35
93
  location?: string;
36
94
  publicPath?: string;
95
+ sourceUrl?: string;
96
+ sourceName?: string;
37
97
  source: "trippeaze" | "external";
38
98
  fulfillmentMode: ItineraryFulfillmentMode;
39
99
  score: number;
@@ -56,12 +116,64 @@ export interface ItineraryItem {
56
116
  userLocked: boolean;
57
117
  requiredForCheckout: boolean;
58
118
  }
119
+ /** Planning suggestions booked directly with the source, never checkout items. */
120
+ export interface ItineraryRecommendation {
121
+ recommendationId: string;
122
+ day: number;
123
+ category: ItineraryItemCategory;
124
+ title: string;
125
+ description?: string;
126
+ location?: string;
127
+ sourceUrl: string;
128
+ sourceName: string;
129
+ linkKind: "listing" | "search";
130
+ price?: {
131
+ amount: number;
132
+ currency: "INR";
133
+ basis: "per_person" | "per_night" | "total";
134
+ kind: "quoted" | "estimated";
135
+ source: string;
136
+ expiresAt?: string;
137
+ };
138
+ priceStatus: "quoted" | "estimated" | "unavailable";
139
+ alternatives?: ItineraryRecommendation[];
140
+ }
59
141
  export interface ItineraryV3 extends ItinerarySummary {
60
142
  schemaVersion: 3;
61
143
  revision: number;
62
144
  origin?: string;
145
+ route?: ItineraryRouteInput;
63
146
  status: "draft" | "saved" | "booking_in_progress" | "booked";
147
+ days?: Array<{
148
+ day: number;
149
+ date?: string;
150
+ title?: string;
151
+ location?: string;
152
+ activities?: Array<{
153
+ time?: string;
154
+ title?: string;
155
+ description?: string;
156
+ relatedPick?: string;
157
+ category?: string;
158
+ location?: string;
159
+ }>;
160
+ transport?: {
161
+ mode?: string;
162
+ from?: string;
163
+ to?: string;
164
+ notes?: string;
165
+ };
166
+ accommodation?: {
167
+ name?: string;
168
+ location?: string;
169
+ };
170
+ }>;
64
171
  items: ItineraryItem[];
172
+ recommendations?: ItineraryRecommendation[];
173
+ refinementHistory?: Array<{
174
+ message: string;
175
+ createdAt: string;
176
+ }>;
65
177
  activeOrderId?: string;
66
178
  }
67
179
  export type ItineraryOrderStatus = "awaiting_payment" | "fulfillment_in_progress" | "partially_confirmed" | "confirmed" | "needs_attention" | "cancellation_pending" | "cancelled" | "refund_pending" | "refunded";
@@ -78,6 +190,9 @@ export interface ItineraryOrderItem {
78
190
  supplierAmount: number;
79
191
  taxes: number;
80
192
  serviceFee: number;
193
+ bufferAmount?: number;
194
+ estimated?: boolean;
195
+ estimateSource?: string;
81
196
  capturedAllocation: number;
82
197
  finalAmount?: number;
83
198
  };
@@ -106,14 +221,20 @@ export interface ItineraryReplacementResult extends ItineraryOrder {
106
221
  export interface AssistedFulfillmentItem {
107
222
  _id: string;
108
223
  orderId: string;
224
+ itineraryId?: string;
109
225
  title: string;
110
226
  category: string;
111
227
  supplierSource?: string;
112
228
  supplierReference?: string;
229
+ pricingSource?: string;
230
+ pricingConfidence?: number;
231
+ confidence?: number;
113
232
  fulfillmentMode: "assisted" | "direct";
114
233
  status: string;
115
234
  fulfillmentDeadline?: string;
116
235
  assignedStaffId?: string;
236
+ scheduledFor?: string;
237
+ startTime?: string;
117
238
  travellerRequirements?: {
118
239
  numberOfPeople?: number;
119
240
  contactDetails?: {
@@ -126,6 +247,9 @@ export interface AssistedFulfillmentItem {
126
247
  supplierAmount: number;
127
248
  taxes: number;
128
249
  serviceFee: number;
250
+ bufferAmount?: number;
251
+ estimated?: boolean;
252
+ estimateSource?: string;
129
253
  capturedAllocation: number;
130
254
  finalAmount?: number;
131
255
  };
@@ -1 +1 @@
1
- {"version":3,"file":"itinerary.d.ts","sourceRoot":"","sources":["../../../src/lib/models/itinerary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"itinerary.d.ts","sourceRoot":"","sources":["../../../src/lib/models/itinerary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { ItineraryItem, ItineraryRecommendation, ItineraryV3 } from "../models/itinerary";
2
+ type ItineraryDay = NonNullable<ItineraryV3["days"]>[number];
3
+ export declare function placeDayBookings(day: ItineraryDay, items: readonly ItineraryItem[], city: string): {
4
+ activityItems: Map<number, ItineraryItem[]>;
5
+ accommodationItems: ItineraryItem[];
6
+ logisticsItems: ItineraryItem[];
7
+ fallbackGroups: {
8
+ items: ItineraryItem[];
9
+ key: string;
10
+ title: string;
11
+ }[];
12
+ };
13
+ export declare function placeDayRecommendations(day: ItineraryDay, recommendations: readonly ItineraryRecommendation[], city: string): {
14
+ activityItems: Map<number, ItineraryRecommendation[]>;
15
+ accommodationItems: ItineraryRecommendation[];
16
+ logisticsItems: ItineraryRecommendation[];
17
+ fallbackGroups: {
18
+ items: ItineraryRecommendation[];
19
+ key: string;
20
+ title: string;
21
+ }[];
22
+ };
23
+ export {};
24
+ //# sourceMappingURL=itineraryPlacement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"itineraryPlacement.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/itineraryPlacement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE/F,KAAK,YAAY,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAwH7D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM;;;;;;;;;EAEhG;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,uBAAuB,EAAE,EAAE,IAAI,EAAE,MAAM;;;;;;;;;EAE3H"}
@@ -0,0 +1,118 @@
1
+ const logisticsCategories = new Set(["flight", "transfer", "rental", "package"]);
2
+ function normalize(value) {
3
+ return (value || "").normalize("NFKD").replace(/[\u0300-\u036f]/g, "").toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
4
+ }
5
+ function startTime(value) {
6
+ const match = /^\s*([01]?\d|2[0-3]):([0-5]\d)\b/.exec(value || "");
7
+ return match?.[1] && match[2] ? `${match[1].padStart(2, "0")}:${match[2]}` : "";
8
+ }
9
+ function compatible(activity, category) {
10
+ if (!activity.category)
11
+ return true; // Older saved narratives have no category.
12
+ const categories = {
13
+ stay: ["logistics", "stay", "accommodation"],
14
+ restaurant: ["dining", "food", "restaurant"],
15
+ activity: ["adventure", "experience", "activity", "sightseeing", "attraction"],
16
+ event: ["experience", "activity", "event"],
17
+ guide: ["sightseeing", "attraction", "adventure", "experience", "activity", "guide"],
18
+ };
19
+ return categories[category]?.includes(activity.category) || false;
20
+ }
21
+ function matchesVenue(activity, item, city) {
22
+ const candidateName = normalize(item.title);
23
+ if (!candidateName || !compatible(activity, item.category))
24
+ return false;
25
+ const title = normalize(activity.title);
26
+ const withoutPrefix = item.category === "stay"
27
+ ? title.replace(/^(?:accommodation )?check in(?: at| into)?\s+/, "")
28
+ : item.category === "restaurant"
29
+ ? title.replace(/^(?:breakfast|brunch|lunch|dinner|dining)(?: at)?\s+/, "")
30
+ : title;
31
+ const unnamedStop = !title || title === normalize(city) || isGeneric(activity, item.category, city);
32
+ return candidateName === title || candidateName === withoutPrefix || (unnamedStop && candidateName === normalize(activity.location));
33
+ }
34
+ function isGeneric(activity, category, city) {
35
+ const title = normalize(activity.title);
36
+ const place = normalize(city);
37
+ const labels = category === "stay"
38
+ ? ["accommodation", "accommodation check in", "hotel check in", "check in", "settle in"]
39
+ : category === "restaurant"
40
+ ? ["breakfast", "brunch", "lunch", "dinner", "dining"]
41
+ : category === "event"
42
+ ? ["event", "local event", "evening event"]
43
+ : category === "guide"
44
+ ? ["guided walk", "guided tour", "sightseeing"]
45
+ : ["activity", "local activity", "adventure activity", "local experience"];
46
+ return labels.some((label) => title === label || (place && title === `${label} in ${place}`))
47
+ || (category === "stay" && ["check in at your hotel", "check in at your stay", "check in at accommodation"].includes(title));
48
+ }
49
+ /** Presentation only: every supplied booking stays intact and is placed once.
50
+ * A matching clock alone never links two different named venues.
51
+ */
52
+ function placeDayEntries(day, items, city) {
53
+ const activities = day.activities || [];
54
+ const activityItems = new Map();
55
+ const accommodationItems = [];
56
+ const logisticsItems = [];
57
+ const unmatched = [];
58
+ const hasCheckIn = activities.some((activity) => compatible(activity, "stay")
59
+ && /accommodation|check.?in|hotel|stay/i.test(activity.title || ""));
60
+ const stayCount = items.filter((item) => item.category === "stay").length;
61
+ for (const item of items) {
62
+ if (logisticsCategories.has(item.category)) {
63
+ logisticsItems.push(item);
64
+ continue;
65
+ }
66
+ const exact = activities.flatMap((activity, index) => matchesVenue(activity, item, city) ? [index] : []);
67
+ const timedExact = exact.filter((index) => startTime(activities[index]?.time) && startTime(activities[index]?.time) === startTime(item.startTime));
68
+ let target = exact.length === 1 ? exact[0] : timedExact.length === 1 ? timedExact[0] : undefined;
69
+ if (target === undefined && exact.length === 0) {
70
+ const generic = activities.flatMap((activity, index) => {
71
+ if (!activity.category || !compatible(activity, item.category) || !isGeneric(activity, item.category, city))
72
+ return [];
73
+ if (item.category === "stay")
74
+ return stayCount === 1 ? [index] : [];
75
+ if (!item.startTime)
76
+ return items.filter((other) => other.category === item.category).length === 1 ? [index] : [];
77
+ if (!startTime(item.startTime) || startTime(activity.time) !== startTime(item.startTime))
78
+ return [];
79
+ const competing = items.filter((other) => other.category === item.category && startTime(other.startTime) === startTime(item.startTime));
80
+ return competing.length === 1 ? [index] : [];
81
+ });
82
+ if (generic.length === 1)
83
+ target = generic[0];
84
+ }
85
+ if (target !== undefined) {
86
+ activityItems.set(target, [...(activityItems.get(target) || []), item]);
87
+ }
88
+ else if (item.category === "stay" && !hasCheckIn && day.accommodation?.name
89
+ && ((normalize(item.title) && normalize(day.accommodation.name) === normalize(item.title))
90
+ || (stayCount === 1 && isGeneric({ title: day.accommodation.name }, "stay", city)))) {
91
+ accommodationItems.push(item);
92
+ }
93
+ else {
94
+ unmatched.push(item);
95
+ }
96
+ }
97
+ const fallbackGroups = [
98
+ { key: "accommodation", title: city ? `Accommodation in ${city}` : "Accommodation", categories: ["stay"] },
99
+ { key: "dining", title: "Dining", categories: ["restaurant"] },
100
+ { key: "activities", title: "Activities and events", categories: ["activity", "event", "guide"] },
101
+ ].map(({ key, title, categories }) => ({ key, title, items: unmatched.filter((item) => categories.includes(item.category)) }))
102
+ .filter((group) => group.items.length);
103
+ return { activityItems, accommodationItems, logisticsItems, fallbackGroups };
104
+ }
105
+ function unwrapPlacement(placement) {
106
+ return {
107
+ activityItems: new Map(Array.from(placement.activityItems.entries()).map(([index, entries]) => [index, entries.map((entry) => entry.value)])),
108
+ accommodationItems: placement.accommodationItems.map((entry) => entry.value),
109
+ logisticsItems: placement.logisticsItems.map((entry) => entry.value),
110
+ fallbackGroups: placement.fallbackGroups.map((group) => ({ ...group, items: group.items.map((entry) => entry.value) })),
111
+ };
112
+ }
113
+ export function placeDayBookings(day, items, city) {
114
+ return unwrapPlacement(placeDayEntries(day, items.map((value) => ({ value, category: value.category, title: value.selectedCandidate?.title || "", startTime: value.startTime })), city));
115
+ }
116
+ export function placeDayRecommendations(day, recommendations, city) {
117
+ return unwrapPlacement(placeDayEntries(day, recommendations.map((value) => ({ value, category: value.category, title: value.title })), city));
118
+ }
@@ -0,0 +1,7 @@
1
+ import type { ItineraryRouteInput } from "../models/itinerary";
2
+ export declare function formatPlannerDate(date: Date | null): string;
3
+ export declare function getItineraryRouteSummary(route: ItineraryRouteInput): {
4
+ locations: string[];
5
+ timelineEnd: string;
6
+ };
7
+ //# sourceMappingURL=itineraryPlanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"itineraryPlanner.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/itineraryPlanner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAM3D;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,mBAAmB;;;EAUlE"}
@@ -0,0 +1,19 @@
1
+ export function formatPlannerDate(date) {
2
+ if (!date)
3
+ return "";
4
+ const year = date.getFullYear();
5
+ const month = String(date.getMonth() + 1).padStart(2, "0");
6
+ const day = String(date.getDate()).padStart(2, "0");
7
+ return `${year}-${month}-${day}`;
8
+ }
9
+ export function getItineraryRouteSummary(route) {
10
+ const stops = [route.origin, ...route.destinations].filter(Boolean);
11
+ const lastDestination = route.destinations.at(-1) || route.origin;
12
+ if (route.return.mode === "origin") {
13
+ return { locations: [...stops, route.origin], timelineEnd: `Returns to ${route.origin}` };
14
+ }
15
+ if (route.return.mode === "different" && route.return.location) {
16
+ return { locations: [...stops, route.return.location], timelineEnd: `Ends in ${route.return.location}` };
17
+ }
18
+ return { locations: stops, timelineEnd: `Ends here in ${lastDestination}` };
19
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@myrjfa/state",
3
- "version": "3.0.4",
3
+ "version": "3.0.6",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./dist/*": "./dist/*.js"