@kimdaegyu/babmukdang-shared 1.1.11 → 2.0.3

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 (100) hide show
  1. package/dist/chunk-3TY6OPD3.js +91 -0
  2. package/dist/{chunk-W4C7XHTX.js → chunk-6O2YTBVC.js} +3 -3
  3. package/dist/{chunk-GTVEQYJW.js → chunk-7JYVBXKQ.js} +1 -1
  4. package/dist/chunk-7UZD4LBQ.js +459 -0
  5. package/dist/chunk-BSJC7OVV.js +10 -0
  6. package/dist/chunk-C63TN7L3.js +148 -0
  7. package/dist/chunk-CGFW5LYV.js +143 -0
  8. package/dist/chunk-GOOH2LGN.js +829 -0
  9. package/dist/chunk-LEH6UFL7.js +314 -0
  10. package/dist/{chunk-K3CZKI2F.js → chunk-NENVUHL5.js} +11 -8
  11. package/dist/chunk-OPMBGBYS.js +632 -0
  12. package/dist/{chunk-OJVXYCSH.js → chunk-QFPVAJ2U.js} +1 -1
  13. package/dist/{chunk-AI2YMBJX.js → chunk-RZPNVRRS.js} +5 -5
  14. package/dist/{chunk-4E5E3PFW.js → chunk-VD3VGLBQ.js} +13 -5
  15. package/dist/chunk-WYBFBLQC.js +111 -0
  16. package/dist/{chunk-H77ISYYC.js → chunk-XMRYAG3V.js} +20 -8
  17. package/dist/domain/article/index.cjs +71 -7
  18. package/dist/domain/article/index.d.cts +79 -796
  19. package/dist/domain/article/index.d.ts +79 -796
  20. package/dist/domain/article/index.js +4 -4
  21. package/dist/domain/auth/index.cjs +68 -6
  22. package/dist/domain/auth/index.d.cts +6 -46
  23. package/dist/domain/auth/index.d.ts +6 -46
  24. package/dist/domain/auth/index.js +3 -3
  25. package/dist/domain/common/index.cjs +1438 -330
  26. package/dist/domain/common/index.d.cts +212 -3037
  27. package/dist/domain/common/index.d.ts +212 -3037
  28. package/dist/domain/common/index.js +65 -30
  29. package/dist/domain/food/index.cjs +225 -0
  30. package/dist/domain/food/index.d.cts +321 -0
  31. package/dist/domain/food/index.d.ts +321 -0
  32. package/dist/domain/food/index.js +46 -0
  33. package/dist/domain/friend/index.cjs +78 -7
  34. package/dist/domain/friend/index.d.cts +39 -98
  35. package/dist/domain/friend/index.d.ts +39 -98
  36. package/dist/domain/friend/index.js +5 -3
  37. package/dist/domain/index.cjs +1930 -456
  38. package/dist/domain/index.d.cts +382 -123
  39. package/dist/domain/index.d.ts +382 -123
  40. package/dist/domain/index.js +429 -140
  41. package/dist/domain/live-activity/index.cjs +1112 -0
  42. package/dist/domain/live-activity/index.d.cts +177 -0
  43. package/dist/domain/live-activity/index.d.ts +177 -0
  44. package/dist/domain/live-activity/index.js +28 -0
  45. package/dist/domain/meal/index.cjs +68 -6
  46. package/dist/domain/meal/index.d.cts +21 -40
  47. package/dist/domain/meal/index.d.ts +21 -40
  48. package/dist/domain/meal/index.js +4 -4
  49. package/dist/domain/meal-plan/index.cjs +1540 -0
  50. package/dist/domain/meal-plan/index.d.cts +4523 -0
  51. package/dist/domain/meal-plan/index.d.ts +4523 -0
  52. package/dist/domain/meal-plan/index.js +255 -0
  53. package/dist/domain/member/index.cjs +94 -6
  54. package/dist/domain/member/index.d.cts +263 -273
  55. package/dist/domain/member/index.d.ts +263 -273
  56. package/dist/domain/member/index.js +26 -2
  57. package/dist/domain/promotion/index.cjs +10 -4
  58. package/dist/domain/promotion/index.d.cts +35 -112
  59. package/dist/domain/promotion/index.d.ts +35 -112
  60. package/dist/domain/promotion/index.js +2 -2
  61. package/dist/domain/push/index.cjs +1055 -0
  62. package/dist/domain/push/index.d.cts +169 -0
  63. package/dist/domain/push/index.d.ts +169 -0
  64. package/dist/domain/push/index.js +36 -0
  65. package/dist/domain/restaurant/index.cjs +10 -4
  66. package/dist/domain/restaurant/index.d.cts +27 -1
  67. package/dist/domain/restaurant/index.d.ts +27 -1
  68. package/dist/domain/restaurant/index.js +2 -2
  69. package/dist/index.cjs +1731 -399
  70. package/dist/index.d.cts +5 -7
  71. package/dist/index.d.ts +5 -7
  72. package/dist/index.js +17 -15
  73. package/package.json +52 -55
  74. package/dist/chunk-PFSZSKD5.js +0 -0
  75. package/dist/chunk-PQMEXOPZ.js +0 -232
  76. package/dist/chunk-W4TUW2GY.js +0 -40
  77. package/dist/chunk-WNYCCQM4.js +0 -342
  78. package/dist/chunk-YGFAVC5N.js +0 -34
  79. package/dist/chunk-YM7YU7IR.js +0 -319
  80. package/dist/chunk-ZH7D7B2Y.js +0 -78
  81. package/dist/domain/invitation/index.cjs +0 -82
  82. package/dist/domain/invitation/index.d.cts +0 -64
  83. package/dist/domain/invitation/index.d.ts +0 -64
  84. package/dist/domain/invitation/index.js +0 -13
  85. package/dist/domain/plan/index.cjs +0 -327
  86. package/dist/domain/plan/index.d.cts +0 -178
  87. package/dist/domain/plan/index.d.ts +0 -178
  88. package/dist/domain/plan/index.js +0 -18
  89. package/dist/domain/recruit/index.cjs +0 -189
  90. package/dist/domain/recruit/index.d.cts +0 -214
  91. package/dist/domain/recruit/index.d.ts +0 -214
  92. package/dist/domain/recruit/index.js +0 -30
  93. package/dist/domain/room/index.cjs +0 -401
  94. package/dist/domain/room/index.d.cts +0 -2643
  95. package/dist/domain/room/index.d.ts +0 -2643
  96. package/dist/domain/room/index.js +0 -82
  97. package/dist/id-dAYxfjZn.d.cts +0 -64
  98. package/dist/id-dAYxfjZn.d.ts +0 -64
  99. package/dist/restaurant.schema-CuEcX3S3.d.cts +0 -78
  100. package/dist/restaurant.schema-CuEcX3S3.d.ts +0 -78
@@ -34,6 +34,11 @@ __export(common_exports, {
34
34
  ApiResponseSchema: () => ApiResponseSchema,
35
35
  ApiSuccessSchema: () => ApiSuccessSchema,
36
36
  ArticleIdSchema: () => ArticleIdSchema,
37
+ CACHE_INVALIDATION_SSE_EVENT: () => CACHE_INVALIDATION_SSE_EVENT,
38
+ CacheInvalidationActionSchema: () => CacheInvalidationActionSchema,
39
+ CacheInvalidationEntitySchema: () => CacheInvalidationEntitySchema,
40
+ CacheInvalidationEventSchema: () => CacheInvalidationEventSchema,
41
+ CacheInvalidationKeySchema: () => CacheInvalidationKeySchema,
37
42
  CommentIdSchema: () => CommentIdSchema,
38
43
  CouponIdSchema: () => CouponIdSchema,
39
44
  CreatedEntityIdResponseSchema: () => CreatedEntityIdResponseSchema,
@@ -43,7 +48,16 @@ __export(common_exports, {
43
48
  FriendRequestIdSchema: () => FriendRequestIdSchema,
44
49
  ISODateStringSchema: () => ISODateStringSchema,
45
50
  ISODateTimeStringSchema: () => ISODateTimeStringSchema,
46
- InvitationIdSchema: () => InvitationIdSchema,
51
+ MealGroupIdSchema: () => MealGroupIdSchema,
52
+ MealPlanChangeRequestIdSchema: () => MealPlanChangeRequestIdSchema,
53
+ MealPlanChatMessageIdSchema: () => MealPlanChatMessageIdSchema,
54
+ MealPlanChatRoomIdSchema: () => MealPlanChatRoomIdSchema,
55
+ MealPlanIdSchema: () => MealPlanIdSchema,
56
+ MealPlanInviteIdSchema: () => MealPlanInviteIdSchema,
57
+ MealPlanJoinRequestIdSchema: () => MealPlanJoinRequestIdSchema,
58
+ MealPlanNearbyFriendExposureBatchIdSchema: () => MealPlanNearbyFriendExposureBatchIdSchema,
59
+ MealPlanShareLinkIdSchema: () => MealPlanShareLinkIdSchema,
60
+ MealPlanShareLinkTokenSchema: () => MealPlanShareLinkTokenSchema,
47
61
  MemberIdSchema: () => MemberIdSchema,
48
62
  NoBodySchema: () => NoBodySchema,
49
63
  NoContentSchema: () => NoContentSchema,
@@ -53,12 +67,9 @@ __export(common_exports, {
53
67
  PageMetaSchema: () => PageMetaSchema,
54
68
  PageQuerySchema: () => PageQuerySchema,
55
69
  PageResponseSchema: () => PageResponseSchema,
56
- PlanIdSchema: () => PlanIdSchema,
57
70
  PositiveIntIdSchema: () => PositiveIntIdSchema,
58
- RecruitIdSchema: () => RecruitIdSchema,
59
71
  ReferralCodeSchema: () => ReferralCodeSchema,
60
72
  RestaurantIdSchema: () => RestaurantIdSchema,
61
- RoomIdSchema: () => RoomIdSchema,
62
73
  SortDirectionSchema: () => SortDirectionSchema,
63
74
  SubscriptionIdSchema: () => SubscriptionIdSchema,
64
75
  TimeHHmmStringSchema: () => TimeHHmmStringSchema,
@@ -71,19 +82,25 @@ __export(common_exports, {
71
82
  toCommentId: () => toCommentId,
72
83
  toCouponId: () => toCouponId,
73
84
  toFriendRequestId: () => toFriendRequestId,
74
- toInvitationId: () => toInvitationId,
85
+ toMealGroupId: () => toMealGroupId,
86
+ toMealPlanChangeRequestId: () => toMealPlanChangeRequestId,
87
+ toMealPlanChatMessageId: () => toMealPlanChatMessageId,
88
+ toMealPlanChatRoomId: () => toMealPlanChatRoomId,
89
+ toMealPlanId: () => toMealPlanId,
90
+ toMealPlanInviteId: () => toMealPlanInviteId,
91
+ toMealPlanJoinRequestId: () => toMealPlanJoinRequestId,
92
+ toMealPlanNearbyFriendExposureBatchId: () => toMealPlanNearbyFriendExposureBatchId,
93
+ toMealPlanShareLinkId: () => toMealPlanShareLinkId,
94
+ toMealPlanShareLinkToken: () => toMealPlanShareLinkToken,
75
95
  toMemberId: () => toMemberId,
76
- toPlanId: () => toPlanId,
77
- toRecruitId: () => toRecruitId,
78
96
  toReferralCode: () => toReferralCode,
79
97
  toRestaurantId: () => toRestaurantId,
80
- toRoomId: () => toRoomId,
81
98
  toSubscriptionId: () => toSubscriptionId
82
99
  });
83
100
  module.exports = __toCommonJS(common_exports);
84
101
 
85
102
  // src/domain/common/contracts/api.ts
86
- var import_zod20 = require("zod");
103
+ var import_zod29 = require("zod");
87
104
 
88
105
  // src/domain/article/article.schema.ts
89
106
  var import_zod7 = require("zod");
@@ -103,10 +120,16 @@ var MemberIdSchema = PositiveIntIdSchema.brand();
103
120
  var UserIdSchema = MemberIdSchema;
104
121
  var ArticleIdSchema = PositiveIntIdSchema.brand();
105
122
  var CommentIdSchema = PositiveIntIdSchema.brand();
106
- var RecruitIdSchema = PositiveIntIdSchema.brand();
107
- var PlanIdSchema = PositiveIntIdSchema.brand();
108
- var InvitationIdSchema = PositiveIntIdSchema.brand();
109
- var RoomIdSchema = NonEmptyStringIdSchema.brand();
123
+ var MealPlanIdSchema = import_zod2.z.string().uuid().brand();
124
+ var MealPlanInviteIdSchema = import_zod2.z.string().uuid().brand();
125
+ var MealPlanJoinRequestIdSchema = import_zod2.z.string().uuid().brand();
126
+ var MealPlanNearbyFriendExposureBatchIdSchema = import_zod2.z.string().uuid().brand();
127
+ var MealPlanChangeRequestIdSchema = import_zod2.z.string().uuid().brand();
128
+ var MealPlanShareLinkIdSchema = import_zod2.z.string().uuid().brand();
129
+ var MealPlanShareLinkTokenSchema = import_zod2.z.string().min(8).max(128).brand();
130
+ var MealPlanChatRoomIdSchema = import_zod2.z.string().uuid().brand();
131
+ var MealPlanChatMessageIdSchema = import_zod2.z.string().uuid().brand();
132
+ var MealGroupIdSchema = import_zod2.z.string().uuid().brand();
110
133
  var RestaurantIdSchema = NonEmptyStringIdSchema.brand();
111
134
  var CouponIdSchema = PositiveIntIdSchema.brand();
112
135
  var SubscriptionIdSchema = PositiveIntIdSchema.brand();
@@ -155,6 +178,46 @@ var UploadPresignImageRequestSchema = import_zod4.default.object({
155
178
 
156
179
  // src/domain/member/member.schema.ts
157
180
  var MemberRoleSchema = import_zod5.z.enum(["USER", "ADMIN"]);
181
+ var LocationConsentStatusSchema = import_zod5.z.enum(["UNKNOWN", "GRANTED", "DENIED"]);
182
+ var OnboardingStatusSchema = import_zod5.z.enum(["REQUIRED", "COMPLETED"]);
183
+ var PermissionKindSchema = import_zod5.z.enum(["LOCATION", "NOTIFICATION", "CAMERA"]);
184
+ var PermissionStatusSchema = import_zod5.z.enum([
185
+ "UNKNOWN",
186
+ "PROMPT",
187
+ "GRANTED",
188
+ "DENIED",
189
+ "LIMITED",
190
+ "UNSUPPORTED"
191
+ ]);
192
+ var PermissionPlatformSchema = import_zod5.z.enum(["WEB", "IOS", "ANDROID", "UNKNOWN"]);
193
+ var DevicePermissionSnapshotSchema = import_zod5.z.object({
194
+ kind: PermissionKindSchema,
195
+ status: PermissionStatusSchema,
196
+ platform: PermissionPlatformSchema.default("UNKNOWN"),
197
+ canAskAgain: import_zod5.z.boolean().optional(),
198
+ checkedAt: import_zod5.z.string().datetime()
199
+ });
200
+ var MemberLocationSchema = import_zod5.z.object({
201
+ latitude: import_zod5.z.number().min(-90).max(90),
202
+ longitude: import_zod5.z.number().min(-180).max(180),
203
+ accuracyMeters: import_zod5.z.number().min(0).nullable().optional(),
204
+ capturedAt: import_zod5.z.string().datetime()
205
+ });
206
+ var UpdateMemberLocationRequestSchema = MemberLocationSchema;
207
+ var UpdateMemberLocationConsentRequestSchema = import_zod5.z.object({
208
+ locationConsentStatus: LocationConsentStatusSchema,
209
+ nearbyMealPlanExposureAllowed: import_zod5.z.boolean().default(false),
210
+ mealSuggestionAllowed: import_zod5.z.boolean().optional(),
211
+ permissionSnapshot: DevicePermissionSnapshotSchema.optional()
212
+ });
213
+ var MemberLocationSettingsResponseSchema = import_zod5.z.object({
214
+ locationConsentStatus: LocationConsentStatusSchema,
215
+ nearbyMealPlanExposureAllowed: import_zod5.z.boolean(),
216
+ mealSuggestionAllowed: import_zod5.z.boolean(),
217
+ lastKnownLocation: MemberLocationSchema.nullable(),
218
+ permissionSnapshot: DevicePermissionSnapshotSchema.nullable().optional(),
219
+ updatedAt: import_zod5.z.string().datetime().nullable()
220
+ });
158
221
  var MemberCoreSchema = import_zod5.z.object({
159
222
  memberId: MemberIdSchema,
160
223
  username: import_zod5.z.string().min(1).max(50),
@@ -166,6 +229,11 @@ var MemberResponseSchema = MemberCoreSchema.pick({
166
229
  memberId: true,
167
230
  username: true,
168
231
  profileImageUrl: true
232
+ }).extend({
233
+ onboardingStatus: OnboardingStatusSchema.default("REQUIRED"),
234
+ onboardingCompletedAt: import_zod5.z.string().datetime().nullable().default(null),
235
+ locationConsentStatus: LocationConsentStatusSchema.optional(),
236
+ nearbyMealPlanExposureAllowed: import_zod5.z.boolean().optional()
169
237
  });
170
238
  var MemberSearchQuerySchema = import_zod5.z.object({
171
239
  email: import_zod5.z.string().email().optional(),
@@ -176,7 +244,11 @@ var MemberDetailSchema = MemberCoreSchema.extend({
176
244
  bio: import_zod5.z.string().nullable(),
177
245
  friendConunt: import_zod5.z.number().int().min(0).default(0),
178
246
  completedPlans: import_zod5.z.number().int().min(0).default(0),
179
- uncompletedPlans: import_zod5.z.number().int().min(0).default(0)
247
+ uncompletedPlans: import_zod5.z.number().int().min(0).default(0),
248
+ onboardingStatus: OnboardingStatusSchema.default("REQUIRED"),
249
+ onboardingCompletedAt: import_zod5.z.string().datetime().nullable().default(null),
250
+ locationConsentStatus: LocationConsentStatusSchema.default("UNKNOWN"),
251
+ nearbyMealPlanExposureAllowed: import_zod5.z.boolean().default(false)
180
252
  });
181
253
  var FoodPreferenceItemSchema = FoodSchema.extend({});
182
254
  var MemberFoodPreferenceSchema = import_zod5.z.object({
@@ -191,9 +263,18 @@ var UpdateProfileRequestSchema = import_zod5.z.object({
191
263
  bio: import_zod5.z.string().max(500).nullable()
192
264
  });
193
265
  var UpdatePreferenceRequestSchema = MemberFoodPreferenceSchema;
194
- var CreateProfileRequestSchema = UpdateProfileRequestSchema.merge(
266
+ var CompleteOnboardingRequestSchema = UpdateProfileRequestSchema.merge(
195
267
  UpdatePreferenceRequestSchema
196
268
  );
269
+ var OnboardingDraftSchema = import_zod5.z.object({
270
+ username: import_zod5.z.string().min(1).max(50).optional(),
271
+ profileImageUrl: import_zod5.z.string().url().nullable().optional(),
272
+ bio: import_zod5.z.string().max(500).nullable().optional(),
273
+ liked: import_zod5.z.array(FoodPreferenceItemSchema).optional(),
274
+ disliked: import_zod5.z.array(FoodPreferenceItemSchema).optional(),
275
+ allergy: import_zod5.z.array(FoodPreferenceItemSchema).optional()
276
+ });
277
+ var CreateProfileRequestSchema = CompleteOnboardingRequestSchema;
197
278
 
198
279
  // src/domain/restaurant/restaurant.schema.ts
199
280
  var import_zod6 = require("zod");
@@ -241,7 +322,8 @@ var CreateArticleRequestSchema = import_zod7.z.object({
241
322
  mealDate: ISODateStringSchema,
242
323
  restaurant: RestaurantSchema,
243
324
  taggedMemberIds: import_zod7.z.array(MemberIdSchema).default([]),
244
- foodAnalysis: FoodAnalysisResultSchema.optional()
325
+ foodAnalysis: FoodAnalysisResultSchema.optional(),
326
+ mealPlanId: MealPlanIdSchema.optional()
245
327
  });
246
328
  var CreateCommentRequestSchema = import_zod7.z.object({
247
329
  content: import_zod7.z.string().min(1).max(500),
@@ -261,6 +343,7 @@ var ArticleCoreSchema = import_zod7.z.object({
261
343
  imageUrl: import_zod7.z.string().url(),
262
344
  mealDate: ISODateStringSchema,
263
345
  restaurant: RestaurantSchema,
346
+ mealPlanId: MealPlanIdSchema.nullable(),
264
347
  createdAt: ISODateTimeStringSchema,
265
348
  updatedAt: ISODateTimeStringSchema,
266
349
  expiresAt: ISODateTimeStringSchema,
@@ -299,30 +382,55 @@ var SignupResponseSchema = import_zod8.z.object({
299
382
  member: MemberCoreSchema
300
383
  });
301
384
 
302
- // src/domain/promotion/challenge.schema.ts
385
+ // src/domain/common/schema/cache-invalidation.schema.ts
303
386
  var import_zod9 = require("zod");
304
- var RewardTypeSchema = import_zod9.z.enum(["WEEK", "MONTH"]);
305
- var WeekProgressSchema = import_zod9.z.object({
306
- days: import_zod9.z.array(import_zod9.z.boolean()),
307
- completed: import_zod9.z.number().int().min(0),
308
- goal: import_zod9.z.number().int().positive()
309
- });
310
- var MonthProgressSchema = import_zod9.z.object({
311
- count: import_zod9.z.number().int().min(0),
312
- goal: import_zod9.z.number().int().positive()
313
- });
314
- var ChallengeStatusResponseSchema = import_zod9.z.object({
315
- week: WeekProgressSchema,
316
- month: MonthProgressSchema,
317
- weekRewardAvailable: import_zod9.z.boolean(),
318
- monthRewardAvailable: import_zod9.z.boolean()
319
- });
320
- var ClaimChallengeRewardRequestSchema = import_zod9.z.object({
321
- type: RewardTypeSchema
322
- });
323
- var ClaimChallengeRewardResponseSchema = import_zod9.z.object({
324
- rewardType: RewardTypeSchema,
325
- claimed: import_zod9.z.boolean()
387
+ var CacheInvalidationEntitySchema = import_zod9.z.enum([
388
+ "article",
389
+ "mealPlan",
390
+ "mealPlanInvite",
391
+ "mealPlanParticipant",
392
+ "mealPlanDecision",
393
+ "mealPlanChat",
394
+ "mealGroup",
395
+ "notification",
396
+ "friend"
397
+ ]);
398
+ var CacheInvalidationActionSchema = import_zod9.z.enum([
399
+ "created",
400
+ "updated",
401
+ "deleted",
402
+ "accepted",
403
+ "rejected",
404
+ "cancelled",
405
+ "closed",
406
+ "joined",
407
+ "ready",
408
+ "confirmed",
409
+ "locked",
410
+ "completed",
411
+ "recorded",
412
+ "read"
413
+ ]);
414
+ var CacheInvalidationKeySchema = import_zod9.z.enum([
415
+ "articles",
416
+ "mealPlans",
417
+ "mealPlanDetail",
418
+ "mealPlanInvites",
419
+ "mealPlanJoinRequests",
420
+ "mealPlanNearbyFriends",
421
+ "mealPlanMessages",
422
+ "mealGroups",
423
+ "notifications",
424
+ "friends",
425
+ "friendMeals"
426
+ ]);
427
+ var CacheInvalidationEventSchema = import_zod9.z.object({
428
+ type: import_zod9.z.literal("cache.invalidate"),
429
+ entity: CacheInvalidationEntitySchema,
430
+ action: CacheInvalidationActionSchema,
431
+ id: import_zod9.z.union([import_zod9.z.string(), import_zod9.z.number()]).optional(),
432
+ keys: import_zod9.z.array(CacheInvalidationKeySchema).min(1),
433
+ occurredAt: import_zod9.z.string().datetime()
326
434
  });
327
435
 
328
436
  // src/domain/common/schema/envelope.schema.ts
@@ -344,18 +452,29 @@ var ApiResponseSchema = (data) => import_zod10.z.union([ApiSuccessSchema(data),
344
452
  var CreatedEntityIdResponseSchema = import_zod10.z.discriminatedUnion("entity", [
345
453
  import_zod10.z.object({ entity: import_zod10.z.literal("article"), id: ArticleIdSchema }),
346
454
  import_zod10.z.object({ entity: import_zod10.z.literal("comment"), id: CommentIdSchema }),
347
- import_zod10.z.object({ entity: import_zod10.z.literal("recruit"), id: RecruitIdSchema }),
348
- import_zod10.z.object({ entity: import_zod10.z.literal("invitation"), id: InvitationIdSchema }),
349
455
  import_zod10.z.object({ entity: import_zod10.z.literal("subscription"), id: SubscriptionIdSchema }),
350
456
  import_zod10.z.object({ entity: import_zod10.z.literal("coupon"), id: CouponIdSchema }),
351
- import_zod10.z.object({ entity: import_zod10.z.literal("plan"), id: PlanIdSchema })
457
+ import_zod10.z.object({ entity: import_zod10.z.literal("mealPlan"), id: MealPlanIdSchema }),
458
+ import_zod10.z.object({ entity: import_zod10.z.literal("mealPlanInvite"), id: MealPlanInviteIdSchema }),
459
+ import_zod10.z.object({ entity: import_zod10.z.literal("mealPlanJoinRequest"), id: MealPlanJoinRequestIdSchema }),
460
+ import_zod10.z.object({ entity: import_zod10.z.literal("mealPlanChangeRequest"), id: MealPlanChangeRequestIdSchema }),
461
+ import_zod10.z.object({ entity: import_zod10.z.literal("mealPlanShareLink"), id: MealPlanShareLinkIdSchema }),
462
+ import_zod10.z.object({ entity: import_zod10.z.literal("mealPlanChatMessage"), id: MealPlanChatMessageIdSchema }),
463
+ import_zod10.z.object({ entity: import_zod10.z.literal("mealGroup"), id: MealGroupIdSchema })
352
464
  ]);
353
465
 
354
466
  // src/domain/friend/friend.schema.ts
355
467
  var import_zod11 = require("zod");
356
468
  var FriendRequestStatusSchema = import_zod11.z.enum(["PENDING", "ACCEPTED", "REJECTED", "CANCELED"]);
469
+ var FriendMealAvailabilitySchema = import_zod11.z.object({
470
+ isHungry: import_zod11.z.boolean(),
471
+ mealProposalAllowed: import_zod11.z.boolean(),
472
+ mealStatusExpiresAt: ISODateTimeStringSchema.nullable(),
473
+ nearbyMealPlanExposureAllowed: import_zod11.z.boolean()
474
+ });
357
475
  var FriendListItemResponseSchema = MemberCoreSchema.extend({
358
- friendSince: ISODateTimeStringSchema
476
+ friendSince: ISODateTimeStringSchema,
477
+ mealAvailability: FriendMealAvailabilitySchema.optional()
359
478
  });
360
479
  var FriendBlockItemResponseSchema = MemberCoreSchema.extend({
361
480
  blockedAt: ISODateTimeStringSchema
@@ -371,290 +490,1190 @@ var FriendRequestItemResponseSchema = import_zod11.z.object({
371
490
  var FriendSearchQuerySchema = import_zod11.z.string().min(1).max(50);
372
491
  var FriendSearchResponseSchema = import_zod11.z.array(MemberCoreSchema);
373
492
 
374
- // src/domain/invitation/invitation.schema.ts
375
- var import_zod12 = require("zod");
376
- var CreateInvitationRequestSchema = import_zod12.z.object({
377
- inviteeId: MemberIdSchema,
378
- message: import_zod12.z.string().min(1).max(500)
379
- });
380
- var InvitationListItemResponseSchema = import_zod12.z.object({
381
- invitationId: InvitationIdSchema,
382
- inviterName: import_zod12.z.string(),
383
- inviterProfileImageUrl: import_zod12.z.string().url().nullable().optional()
384
- });
385
- var SendInvitationResponseSchema = import_zod12.z.object({
386
- invitationId: InvitationIdSchema
387
- });
388
- var AcceptInvitationResponseSchema = import_zod12.z.object({
389
- invitationId: InvitationIdSchema,
390
- room: import_zod12.z.object({
391
- type: import_zod12.z.literal("invitation"),
392
- roomId: RoomIdSchema
393
- })
394
- });
395
-
396
493
  // src/domain/meal/meal.schema.ts
397
- var import_zod13 = require("zod");
398
- var MealStatusResponseSchema = import_zod13.z.object({
399
- hungry: import_zod13.z.boolean(),
400
- label: import_zod13.z.string(),
494
+ var import_zod12 = require("zod");
495
+ var MealStatusResponseSchema = import_zod12.z.object({
496
+ hungry: import_zod12.z.boolean(),
497
+ label: import_zod12.z.string(),
401
498
  updatedAt: ISODateStringSchema,
402
- secondsToAutoOff: import_zod13.z.number().int().min(0)
499
+ secondsToAutoOff: import_zod12.z.number().int().min(0)
403
500
  });
404
- var MealStatusActionSchema = import_zod13.z.enum(["ARTICLE_UPLOAD", "SET_MANNUALY"]);
405
- var UpdateMealStatusRequestSchema = import_zod13.z.object({
501
+ var MealStatusActionSchema = import_zod12.z.enum(["ARTICLE_UPLOAD", "SET_MANNUALY"]);
502
+ var UpdateMealStatusRequestSchema = import_zod12.z.object({
406
503
  action: MealStatusActionSchema.optional().default("SET_MANNUALY")
407
504
  });
408
- var MealStatusSchema = import_zod13.z.enum(["ALL", "HUNGRY", "NOT_HUNGRY"]);
409
- var FriendMealQuerySchema = import_zod13.z.object({
505
+ var MealStatusSchema = import_zod12.z.enum(["ALL", "HUNGRY", "NOT_HUNGRY"]);
506
+ var FriendMealQuerySchema = import_zod12.z.object({
410
507
  status: MealStatusSchema.optional().default("ALL")
411
508
  });
412
509
  var FriendMealItemResponseSchema = MemberCoreSchema.extend({
413
- hungry: import_zod13.z.boolean(),
414
- label: import_zod13.z.string(),
510
+ hungry: import_zod12.z.boolean(),
511
+ label: import_zod12.z.string(),
415
512
  updatedAt: ISODateStringSchema
416
513
  });
417
514
 
418
- // src/domain/plan/plan.schema.ts
419
- var import_zod15 = require("zod");
515
+ // src/domain/meal-plan/meal-plan.schema.ts
516
+ var import_zod19 = require("zod");
420
517
 
421
- // src/domain/room/schema/room.schema.ts
518
+ // src/domain/meal-plan/meal-plan-decision.schema.ts
422
519
  var import_zod14 = require("zod");
423
- var MenuCodeSchema = FoodCodeSchema;
424
- var LocationIdSchema = import_zod14.z.string().min(1).brand();
425
- var MenuSchema = FoodSchema.extend({});
426
- var LocationCandidateSchema = import_zod14.z.object({
427
- locationId: LocationIdSchema,
428
- placeName: import_zod14.z.string(),
429
- lat: import_zod14.z.number(),
430
- lng: import_zod14.z.number(),
431
- address: import_zod14.z.string()
432
- });
433
- var ParticipantSchema = MemberCoreSchema.extend({
434
- ready: import_zod14.z.boolean()
435
- });
436
- var RecruitRoomStageSchema = import_zod14.z.enum([
437
- "waiting",
438
- "location",
439
- "location-vote",
440
- "exclude-menu",
441
- "menu",
442
- "restaurant",
443
- "finish"
520
+
521
+ // src/domain/food/food.schema.ts
522
+ var import_zod13 = require("zod");
523
+ var FoodGranularitySchema = import_zod13.z.enum(["main_dish", "side_dish", "beverage", "sauce"]);
524
+ var CuisineTagSchema = import_zod13.z.enum([
525
+ "korean",
526
+ "western",
527
+ "chinese",
528
+ "japanese",
529
+ "mexican",
530
+ "indian",
531
+ "asian",
532
+ "snack",
533
+ "dessert",
534
+ "beverage",
535
+ "unknown"
536
+ ]);
537
+ var FoodResolvedMatchSourceSchema = import_zod13.z.enum(["category", "alias", "lexical", "semantic"]);
538
+ var FoodCodeManifestImageSchema = import_zod13.z.object({
539
+ src: import_zod13.z.string().min(1),
540
+ avifSrcset: import_zod13.z.string().min(1).optional(),
541
+ thumbhashDataURL: import_zod13.z.string().min(1).optional(),
542
+ aspectRatio: import_zod13.z.number().positive().optional()
543
+ });
544
+ var FoodCodeManifestItemSchema = import_zod13.z.object({
545
+ code: FoodCodeSchema,
546
+ label: FoodLabelSchema,
547
+ aliases: import_zod13.z.array(import_zod13.z.string().min(1)).default([]),
548
+ parentCategory: import_zod13.z.string().min(1),
549
+ cuisineTags: import_zod13.z.array(CuisineTagSchema).default([]),
550
+ categoryTags: import_zod13.z.array(import_zod13.z.string().min(1)).default([]),
551
+ semanticTags: import_zod13.z.array(import_zod13.z.string().min(1)).default([]),
552
+ granularity: FoodGranularitySchema,
553
+ searchable: import_zod13.z.boolean(),
554
+ recommendable: import_zod13.z.boolean(),
555
+ previewEnabled: import_zod13.z.boolean(),
556
+ imageUrl: import_zod13.z.string().min(1).nullable().optional(),
557
+ image: FoodCodeManifestImageSchema.nullable().optional(),
558
+ popularity: import_zod13.z.number().nonnegative().optional(),
559
+ source: import_zod13.z.enum(["foodname", "manual", "foodai", "legacy"]).optional()
560
+ });
561
+ var FoodCodeManifestSchema = import_zod13.z.object({
562
+ version: import_zod13.z.string().min(1),
563
+ updatedAt: ISODateTimeStringSchema,
564
+ taxonomyVersion: import_zod13.z.string().min(1),
565
+ etag: import_zod13.z.string().min(1).optional(),
566
+ items: import_zod13.z.array(FoodCodeManifestItemSchema),
567
+ categoryIndex: import_zod13.z.record(import_zod13.z.string(), import_zod13.z.array(FoodCodeSchema)),
568
+ aliasIndex: import_zod13.z.record(import_zod13.z.string(), import_zod13.z.array(FoodCodeSchema)).optional()
569
+ });
570
+ var FoodImageIndexItemSchema = import_zod13.z.object({
571
+ code: FoodCodeSchema,
572
+ label: FoodLabelSchema,
573
+ imageUrl: import_zod13.z.string().min(1).nullable(),
574
+ image: FoodCodeManifestImageSchema.nullable(),
575
+ source: import_zod13.z.enum(["foodname", "manual", "foodai", "legacy"]).optional()
576
+ });
577
+ var FoodImageIndexManifestSchema = import_zod13.z.object({
578
+ version: import_zod13.z.string().min(1),
579
+ updatedAt: ISODateTimeStringSchema,
580
+ taxonomyVersion: import_zod13.z.string().min(1),
581
+ items: import_zod13.z.array(FoodImageIndexItemSchema)
582
+ });
583
+ var ResolvedFoodCodeSchema = import_zod13.z.object({
584
+ code: FoodCodeSchema,
585
+ label: FoodLabelSchema,
586
+ matchedBy: FoodResolvedMatchSourceSchema,
587
+ score: import_zod13.z.number(),
588
+ granularity: FoodGranularitySchema,
589
+ imageUrl: import_zod13.z.string().min(1).nullable().optional()
590
+ });
591
+ var BooleanQuerySchema = import_zod13.z.preprocess((value) => {
592
+ if (value === "true") return true;
593
+ if (value === "false") return false;
594
+ return value;
595
+ }, import_zod13.z.boolean());
596
+ var FoodResolveQuerySchema = import_zod13.z.object({
597
+ q: import_zod13.z.string().default(""),
598
+ limit: import_zod13.z.coerce.number().int().min(1).max(100).optional().default(30),
599
+ recommendableOnly: BooleanQuerySchema.optional().default(true)
600
+ });
601
+ var FoodSearchQuerySchema = import_zod13.z.object({
602
+ q: import_zod13.z.string().default(""),
603
+ limit: import_zod13.z.coerce.number().int().min(1).max(100).optional().default(20)
604
+ });
605
+ var FoodResolveResponseSchema = import_zod13.z.object({
606
+ query: import_zod13.z.string(),
607
+ items: import_zod13.z.array(ResolvedFoodCodeSchema)
608
+ });
609
+ var FoodAiClassMappingStatusSchema = import_zod13.z.enum([
610
+ "exact",
611
+ "broad",
612
+ "narrow",
613
+ "merged",
614
+ "ignored",
615
+ "review_required"
616
+ ]);
617
+ var AiClassFoodCodeMappingSchema = import_zod13.z.object({
618
+ classId: import_zod13.z.number().int().nonnegative(),
619
+ aiLabel: import_zod13.z.string().min(1),
620
+ aiAliases: import_zod13.z.array(import_zod13.z.string().min(1)).default([]),
621
+ representativeCode: FoodCodeSchema.nullable(),
622
+ candidateCodes: import_zod13.z.array(FoodCodeSchema).default([]),
623
+ mappingStatus: FoodAiClassMappingStatusSchema,
624
+ granularity: FoodGranularitySchema,
625
+ searchable: import_zod13.z.boolean(),
626
+ recommendable: import_zod13.z.boolean(),
627
+ reason: import_zod13.z.string().min(1).optional()
628
+ });
629
+ var AiClassToFoodCodeMapManifestSchema = import_zod13.z.object({
630
+ version: import_zod13.z.string().min(1),
631
+ updatedAt: ISODateTimeStringSchema,
632
+ modelTaxonomyVersion: import_zod13.z.string().min(1),
633
+ serviceTaxonomyVersion: import_zod13.z.string().min(1),
634
+ classes: import_zod13.z.array(AiClassFoodCodeMappingSchema)
635
+ });
636
+
637
+ // src/domain/meal-plan/meal-plan-decision.schema.ts
638
+ var MealPlanLatitudeSchema = import_zod14.z.number().brand();
639
+ var MealPlanLongitudeSchema = import_zod14.z.number().brand();
640
+ var MealPlanLocationCandidateIdSchema = import_zod14.z.string().min(1).brand();
641
+ var MealPlanMenuCandidateIdSchema = import_zod14.z.string().min(1).brand();
642
+ var MealPlanDecisionStageIdSchema = import_zod14.z.string().uuid().brand();
643
+ var MealPlanVoteIdSchema = import_zod14.z.string().uuid().brand();
644
+ var MealPlanLocationCandidateSourceSchema = import_zod14.z.enum([
645
+ "manual",
646
+ "map-marker",
647
+ "midpoint",
648
+ "user-location",
649
+ "search",
650
+ "recent-place",
651
+ "fallback"
652
+ ]);
653
+ var MealPlanLocationCandidateSchema = import_zod14.z.object({
654
+ locationId: MealPlanLocationCandidateIdSchema,
655
+ placeName: import_zod14.z.string().min(1),
656
+ lat: MealPlanLatitudeSchema,
657
+ lng: MealPlanLongitudeSchema,
658
+ address: import_zod14.z.string().default(""),
659
+ source: MealPlanLocationCandidateSourceSchema.default("manual"),
660
+ createdBy: MemberIdSchema.optional(),
661
+ createdAt: ISODateTimeStringSchema.optional()
662
+ });
663
+ var MealPlanMenuCandidateSourceSchema = import_zod14.z.enum([
664
+ "external-recommendation",
665
+ "prefer-menu",
666
+ "recent-menu",
667
+ "fallback",
668
+ "manual-search"
669
+ ]);
670
+ var MealPlanMenuCandidateSchema = import_zod14.z.object({
671
+ menuCandidateId: MealPlanMenuCandidateIdSchema,
672
+ menu: FoodSchema,
673
+ source: MealPlanMenuCandidateSourceSchema,
674
+ score: import_zod14.z.number().default(0),
675
+ imageUrl: import_zod14.z.string().min(1).nullable().default(null),
676
+ image: FoodCodeManifestImageSchema.nullable().default(null),
677
+ createdAt: ISODateTimeStringSchema
678
+ });
679
+ var MealPlanRestaurantCandidateSchema = RestaurantSchema.extend({
680
+ candidateId: RestaurantIdSchema.optional(),
681
+ source: import_zod14.z.enum(["search", "fallback", "manual"]).optional(),
682
+ createdAt: ISODateTimeStringSchema.optional()
683
+ });
684
+ var MealPlanDecisionStageTypeSchema = import_zod14.z.enum([
685
+ "DATE",
686
+ "TIME",
687
+ "AREA",
688
+ "MENU",
689
+ "RESTAURANT",
690
+ "FINAL_CONFIRMATION"
444
691
  ]);
445
- var RoomTypeSchema = import_zod14.z.enum(["recruit", "invitation"]);
446
- var InvitationRoomStageSchema = import_zod14.z.enum([
447
- "waiting",
692
+ var MealPlanDecisionStageStatusSchema = import_zod14.z.enum([
693
+ "OPEN",
694
+ "COMPLETED",
695
+ "REOPENED"
696
+ ]);
697
+ var MealPlanRestaurantSearchStatusSchema = import_zod14.z.enum([
698
+ "IDLE",
699
+ "PENDING",
700
+ "READY",
701
+ "FAILED",
702
+ "STALE"
703
+ ]);
704
+ var MealPlanRestaurantSearchStateSchema = import_zod14.z.object({
705
+ searchKey: import_zod14.z.string().min(1).nullable(),
706
+ status: MealPlanRestaurantSearchStatusSchema,
707
+ startedAt: ISODateTimeStringSchema.nullable(),
708
+ completedAt: ISODateTimeStringSchema.nullable(),
709
+ version: import_zod14.z.number().int().min(0),
710
+ candidateCount: import_zod14.z.number().int().min(0),
711
+ errorMessage: import_zod14.z.string().nullable().default(null)
712
+ });
713
+ var MealPlanDecisionStageMetadataSchema = import_zod14.z.object({
714
+ restaurantSearch: MealPlanRestaurantSearchStateSchema.optional()
715
+ }).catchall(import_zod14.z.unknown());
716
+ var MealPlanVoteTypeSchema = import_zod14.z.enum([
717
+ "PICK",
718
+ "EXCLUDE",
719
+ "PREFER",
720
+ "READY"
721
+ ]);
722
+ var MealPlanDecisionCandidateSchema = import_zod14.z.discriminatedUnion("stageType", [
723
+ import_zod14.z.object({ stageType: import_zod14.z.literal("DATE"), value: ISODateStringSchema }),
724
+ import_zod14.z.object({ stageType: import_zod14.z.literal("TIME"), value: TimeHHmmStringSchema }),
725
+ import_zod14.z.object({ stageType: import_zod14.z.literal("AREA"), value: MealPlanLocationCandidateSchema }),
726
+ import_zod14.z.object({ stageType: import_zod14.z.literal("MENU"), value: MealPlanMenuCandidateSchema }),
727
+ import_zod14.z.object({ stageType: import_zod14.z.literal("RESTAURANT"), value: MealPlanRestaurantCandidateSchema }),
728
+ import_zod14.z.object({ stageType: import_zod14.z.literal("FINAL_CONFIRMATION"), value: import_zod14.z.literal("READY") })
729
+ ]);
730
+ var MealPlanVoteSchema = import_zod14.z.object({
731
+ voteId: MealPlanVoteIdSchema,
732
+ voterId: MemberIdSchema.nullable(),
733
+ guestId: import_zod14.z.string().min(1).nullable(),
734
+ voteType: MealPlanVoteTypeSchema,
735
+ candidate: MealPlanDecisionCandidateSchema,
736
+ createdAt: ISODateTimeStringSchema
737
+ });
738
+ var MealPlanDecisionStageResponseSchema = import_zod14.z.object({
739
+ stageId: MealPlanDecisionStageIdSchema,
740
+ stageType: MealPlanDecisionStageTypeSchema,
741
+ status: MealPlanDecisionStageStatusSchema,
742
+ candidates: import_zod14.z.array(MealPlanDecisionCandidateSchema),
743
+ votes: import_zod14.z.array(MealPlanVoteSchema),
744
+ selectedCandidate: MealPlanDecisionCandidateSchema.nullable(),
745
+ metadata: MealPlanDecisionStageMetadataSchema.nullable().default(null),
746
+ openedAt: ISODateTimeStringSchema,
747
+ completedAt: ISODateTimeStringSchema.nullable(),
748
+ reopenedAt: ISODateTimeStringSchema.nullable()
749
+ });
750
+ var CreateMealPlanVoteRequestSchema = import_zod14.z.object({
751
+ voteType: MealPlanVoteTypeSchema,
752
+ candidate: MealPlanDecisionCandidateSchema
753
+ });
754
+ var CompleteMealPlanDecisionStageRequestSchema = import_zod14.z.object({
755
+ selectedCandidate: MealPlanDecisionCandidateSchema
756
+ });
757
+ var MealPlanChangeRequestStatusSchema = import_zod14.z.enum([
758
+ "PENDING",
759
+ "ACCEPTED",
760
+ "REJECTED",
761
+ "CANCELLED"
762
+ ]);
763
+ var CreateMealPlanChangeRequestSchema = import_zod14.z.object({
764
+ stageType: MealPlanDecisionStageTypeSchema,
765
+ reason: import_zod14.z.string().min(1).max(500),
766
+ proposedCandidate: MealPlanDecisionCandidateSchema.optional()
767
+ });
768
+ var MealPlanChangeRequestSummarySchema = import_zod14.z.object({
769
+ changeRequestId: MealPlanChangeRequestIdSchema,
770
+ stageType: MealPlanDecisionStageTypeSchema,
771
+ status: MealPlanChangeRequestStatusSchema,
772
+ reason: import_zod14.z.string(),
773
+ requestedAt: ISODateTimeStringSchema
774
+ });
775
+ var MealPlanDecisionTaskKeySchema = import_zod14.z.enum([
776
+ "SCHEDULE_DATE",
777
+ "SCHEDULE_TIME",
778
+ "LOCATION_CANDIDATE",
779
+ "LOCATION_VOTE",
780
+ "EXCLUDE_MENU",
781
+ "PREFER_MENU",
782
+ "MENU_PICK",
783
+ "RESTAURANT_SEARCH",
784
+ "RESTAURANT_PICK",
785
+ "FINAL_CONFIRMATION"
786
+ ]);
787
+ var MealPlanDecisionTaskStatusSchema = import_zod14.z.enum([
788
+ "LOCKED",
789
+ "OPEN",
790
+ "RESOLVED",
791
+ "STALE"
792
+ ]);
793
+ var MealPlanDecisionFinalFieldSchema = import_zod14.z.enum([
448
794
  "date",
449
795
  "time",
450
- "location",
451
- "location-vote",
452
- "exclude-menu",
796
+ "meetingAt",
797
+ "area",
453
798
  "menu",
454
- "restaurant",
455
- "finish"
456
- ]);
457
- var ReadyStateRequestSchema = import_zod14.z.object({
458
- isReady: import_zod14.z.boolean()
459
- });
460
- var ChatMessageRequestSchema = import_zod14.z.object({
461
- message: import_zod14.z.string().min(1).max(500)
462
- });
463
- var VoteLocationRequestSchema = import_zod14.z.object({ locationId: LocationIdSchema });
464
- var ExcludeMenuRequestSchema = import_zod14.z.object({ menu: MenuSchema });
465
- var PickMenuRequestSchema = import_zod14.z.object({ menuCode: MenuCodeSchema });
466
- var PickRestaurantRequestSchema = import_zod14.z.object({ restaurantId: RestaurantIdSchema });
467
- var PickTimesRequestSchema = import_zod14.z.object({ times: import_zod14.z.array(import_zod14.z.string().min(1)).min(1) });
468
- var PickDateRequestSchema = import_zod14.z.object({ dates: import_zod14.z.array(ISODateStringSchema).min(1) });
469
- var RoomAssignedResponseSchema = import_zod14.z.object({
470
- roomId: RoomIdSchema
471
- });
472
- var RoomAccessResponseSchema = import_zod14.z.object({
473
- roomId: RoomIdSchema,
474
- roomType: RoomTypeSchema,
475
- stage: import_zod14.z.union([RecruitRoomStageSchema, InvitationRoomStageSchema]),
476
- canJoin: import_zod14.z.boolean()
477
- });
478
- var MatchingNotificationKindSchema = import_zod14.z.enum(["recruit", "invitation"]);
479
- var MatchingNotificationSchema = import_zod14.z.object({
480
- notificationId: import_zod14.z.string().min(1),
481
- kind: MatchingNotificationKindSchema,
482
- roomId: RoomIdSchema,
483
- roomType: RoomTypeSchema,
484
- title: import_zod14.z.string().min(1),
485
- message: import_zod14.z.string().min(1),
799
+ "restaurant"
800
+ ]);
801
+ var MealPlanDecisionSnapshotStatusSchema = import_zod14.z.enum([
802
+ "CANDIDATE",
803
+ "PROVISIONAL",
804
+ "FINAL",
805
+ "STALE"
806
+ ]);
807
+ var MealPlanDecisionReasonSchema = import_zod14.z.enum([
808
+ "COMMON_SCHEDULE",
809
+ "TOP_VOTED_LOCATION",
810
+ "TOP_PICKED_MENU",
811
+ "TOP_PICKED_RESTAURANT",
812
+ "OWNER_CONFIRMED",
813
+ "MANUAL_SELECTION"
814
+ ]);
815
+ var MealPlanDecisionActorTypeSchema = import_zod14.z.enum(["MEMBER", "GUEST", "SYSTEM"]);
816
+ var MealPlanDecisionSnapshotSchema = import_zod14.z.object({
817
+ snapshotId: import_zod14.z.string().uuid(),
818
+ mealPlanId: import_zod14.z.string().uuid(),
819
+ field: MealPlanDecisionFinalFieldSchema,
820
+ value: import_zod14.z.unknown(),
821
+ status: MealPlanDecisionSnapshotStatusSchema,
822
+ reason: MealPlanDecisionReasonSchema,
823
+ score: import_zod14.z.number().nullable().default(null),
824
+ sourceEvent: import_zod14.z.string().min(1),
825
+ sourceActorType: MealPlanDecisionActorTypeSchema,
826
+ sourceMemberId: MemberIdSchema.nullable(),
827
+ sourceGuestId: import_zod14.z.string().min(1).nullable(),
828
+ sourceParticipantId: import_zod14.z.string().uuid().nullable(),
829
+ sourceVersion: import_zod14.z.number().int().min(0),
830
+ dependencyHash: import_zod14.z.string().min(1),
831
+ dependencyFields: import_zod14.z.array(MealPlanDecisionFinalFieldSchema),
486
832
  createdAt: ISODateTimeStringSchema,
487
- readAt: ISODateTimeStringSchema.nullable()
833
+ staleAt: ISODateTimeStringSchema.nullable()
488
834
  });
489
- var RoomSocketErrorSchema = import_zod14.z.object({
490
- code: import_zod14.z.string(),
491
- message: import_zod14.z.string()
835
+ var MealPlanDecisionTaskProgressSchema = import_zod14.z.object({
836
+ taskKey: MealPlanDecisionTaskKeySchema,
837
+ status: MealPlanDecisionTaskStatusSchema,
838
+ blockers: import_zod14.z.array(import_zod14.z.string()).default([]),
839
+ updatedAt: ISODateTimeStringSchema
492
840
  });
493
- var ChatMessageResponseSchema = import_zod14.z.object({
494
- messageId: import_zod14.z.string(),
495
- user: MemberCoreSchema,
496
- message: import_zod14.z.string(),
497
- createdAt: ISODateTimeStringSchema
841
+ var MealPlanDecisionProgressSchema = import_zod14.z.object({
842
+ mealPlanId: import_zod14.z.string().uuid(),
843
+ status: import_zod14.z.string().min(1),
844
+ tasks: import_zod14.z.array(MealPlanDecisionTaskProgressSchema),
845
+ final: import_zod14.z.record(import_zod14.z.string(), import_zod14.z.unknown()),
846
+ provisional: import_zod14.z.record(import_zod14.z.string(), import_zod14.z.unknown()),
847
+ snapshots: import_zod14.z.array(MealPlanDecisionSnapshotSchema),
848
+ version: import_zod14.z.number().int().min(0),
849
+ updatedAt: ISODateTimeStringSchema
498
850
  });
499
- var ReadyStateChangedSchema = import_zod14.z.object({
500
- readyCount: import_zod14.z.number().int().min(0),
501
- participantCount: import_zod14.z.number().int().min(0)
502
- });
503
- var FinalStateSchema = import_zod14.z.object({
504
- location: LocationCandidateSchema.optional(),
505
- excludeMenu: import_zod14.z.array(MenuSchema).optional(),
506
- menu: MenuSchema.optional(),
507
- restaurant: RestaurantSchema.optional(),
508
- time: import_zod14.z.string().optional(),
509
- date: ISODateStringSchema.optional()
510
- });
511
- var RoomInitialStateSchema = import_zod14.z.object({
512
- participants: import_zod14.z.array(ParticipantSchema),
513
- chat: import_zod14.z.array(ChatMessageResponseSchema),
514
- final: FinalStateSchema
515
- });
516
- var TimePicksUpdateResponseSchema = import_zod14.z.array(
517
- import_zod14.z.object({ memberId: MemberIdSchema, times: import_zod14.z.array(import_zod14.z.string()) })
518
- );
519
- var DatePicksUpdateResponseSchema = import_zod14.z.array(
520
- import_zod14.z.object({ memberId: MemberIdSchema, dates: import_zod14.z.array(ISODateStringSchema) })
521
- );
522
- var LocationCandidateAddUpdateResponseSchema = import_zod14.z.array(
523
- LocationCandidateSchema.extend({ authorMemberId: MemberIdSchema })
524
- );
525
- var LocationCandidateVoteUpdateResponseSchema = import_zod14.z.array(
526
- import_zod14.z.object({ locationId: LocationIdSchema, votes: import_zod14.z.array(MemberIdSchema) })
527
- );
528
- var ExcludeMenuUpdateResponseSchema = import_zod14.z.array(
529
- import_zod14.z.object({ memberId: MemberIdSchema, exclusions: import_zod14.z.array(MenuSchema) })
530
- );
531
- var MenuPickUpdateResponseSchema = import_zod14.z.array(
532
- import_zod14.z.object({ menuCode: MenuCodeSchema, selectedMembers: import_zod14.z.array(MemberIdSchema) })
533
- );
534
- var RestaurantPickUpdateResponseSchema = import_zod14.z.array(
535
- import_zod14.z.object({ restaurantId: RestaurantIdSchema, selectedMembers: import_zod14.z.array(MemberIdSchema) })
851
+ var ReopenMealPlanDecisionTaskRequestSchema = import_zod14.z.object({
852
+ reason: import_zod14.z.string().max(500).optional()
853
+ });
854
+ var ConfirmMealPlanDecisionSnapshotRequestSchema = import_zod14.z.object({
855
+ snapshotId: import_zod14.z.string().uuid()
856
+ });
857
+
858
+ // src/domain/meal-plan/meal-plan-participant.schema.ts
859
+ var import_zod15 = require("zod");
860
+ var MealPlanParticipantIdSchema = import_zod15.z.string().uuid().brand();
861
+ var MealPlanParticipantRoleSchema = import_zod15.z.enum([
862
+ "OWNER",
863
+ "FRIEND",
864
+ "GUEST"
865
+ ]);
866
+ var MealPlanParticipantStatusSchema = import_zod15.z.enum([
867
+ "INVITED",
868
+ "REQUESTED",
869
+ "JOINED",
870
+ "READY",
871
+ "DECLINED",
872
+ "LEFT",
873
+ "REMOVED"
874
+ ]);
875
+ var MealPlanJoinSourceSchema = import_zod15.z.enum([
876
+ "OWNER",
877
+ "FRIEND_INVITE",
878
+ "LINK_GUEST",
879
+ "NEARBY_FRIENDS"
880
+ ]);
881
+ var MealPlanGuestParticipantSchema = import_zod15.z.object({
882
+ guestId: import_zod15.z.string().min(1),
883
+ nickname: import_zod15.z.string().min(1).max(50)
884
+ });
885
+ var MealPlanParticipantResponseSchema = import_zod15.z.object({
886
+ participantId: MealPlanParticipantIdSchema,
887
+ mealPlanId: MealPlanIdSchema,
888
+ member: MemberCoreSchema.nullable(),
889
+ guest: MealPlanGuestParticipantSchema.nullable(),
890
+ role: MealPlanParticipantRoleSchema,
891
+ status: MealPlanParticipantStatusSchema,
892
+ source: MealPlanJoinSourceSchema,
893
+ joinedAt: ISODateTimeStringSchema.nullable(),
894
+ readyAt: ISODateTimeStringSchema.nullable()
895
+ });
896
+ var CreateMealPlanParticipantRequestSchema = import_zod15.z.object({
897
+ memberId: MemberIdSchema.optional(),
898
+ guestNickname: import_zod15.z.string().min(1).max(50).optional(),
899
+ source: MealPlanJoinSourceSchema
900
+ });
901
+
902
+ // src/domain/meal-plan/meal-plan-invite.schema.ts
903
+ var import_zod16 = require("zod");
904
+ var MealPlanInviteStatusSchema = import_zod16.z.enum([
905
+ "PENDING",
906
+ "ACCEPTED",
907
+ "DECLINED",
908
+ "CANCELLED",
909
+ "EXPIRED"
910
+ ]);
911
+ var CreateMealPlanInviteRequestSchema = import_zod16.z.object({
912
+ inviteeId: MemberIdSchema,
913
+ message: import_zod16.z.string().max(500).default("")
914
+ });
915
+ var MealPlanInviteSummarySchema = import_zod16.z.object({
916
+ inviteId: MealPlanInviteIdSchema,
917
+ mealPlanId: MealPlanIdSchema,
918
+ inviter: MemberCoreSchema,
919
+ invitee: MemberCoreSchema,
920
+ status: MealPlanInviteStatusSchema,
921
+ message: import_zod16.z.string().max(500),
922
+ createdAt: ISODateTimeStringSchema,
923
+ respondedAt: ISODateTimeStringSchema.nullable()
924
+ });
925
+ var MealPlanInviteListResponseSchema = import_zod16.z.array(MealPlanInviteSummarySchema);
926
+ var SendMealPlanInviteResponseSchema = import_zod16.z.object({
927
+ inviteId: MealPlanInviteIdSchema
928
+ });
929
+
930
+ // src/domain/meal-plan/meal-plan-nearby-friend.schema.ts
931
+ var import_zod17 = require("zod");
932
+ var MealPlanNearbyFriendExposureIdSchema = import_zod17.z.string().uuid().brand();
933
+ var MealPlanNearbyFriendExposureStatusSchema = import_zod17.z.enum([
934
+ "OPEN",
935
+ "CLOSED",
936
+ "EXPIRED"
937
+ ]);
938
+ var MealPlanNearbyFriendExposureNotificationStatusSchema = import_zod17.z.enum([
939
+ "PENDING",
940
+ "SENT",
941
+ "PARTIAL",
942
+ "FAILED",
943
+ "SKIPPED"
944
+ ]);
945
+ var ExposeMealPlanToNearbyFriendsRequestSchema = import_zod17.z.object({
946
+ radiusMeters: import_zod17.z.number().int().min(100).max(5e3).default(1e3),
947
+ expiresAt: ISODateTimeStringSchema.optional()
948
+ });
949
+ var NearbyFriendExposureEligibilitySchema = import_zod17.z.object({
950
+ canExpose: import_zod17.z.boolean(),
951
+ locationConsentStatus: LocationConsentStatusSchema,
952
+ nearbyMealPlanExposureAllowed: import_zod17.z.boolean(),
953
+ mealSuggestionAllowed: import_zod17.z.boolean(),
954
+ hasLastKnownLocation: import_zod17.z.boolean(),
955
+ missingRequirements: import_zod17.z.array(import_zod17.z.enum([
956
+ "LOCATION_PERMISSION",
957
+ "SERVICE_LOCATION_CONSENT",
958
+ "NEARBY_EXPOSURE_TOGGLE",
959
+ "MEAL_SUGGESTION_TOGGLE",
960
+ "LAST_KNOWN_LOCATION"
961
+ ]))
962
+ });
963
+ var MealPlanNearbyFriendRejectionReasonSchema = import_zod17.z.enum([
964
+ "NOT_FRIEND",
965
+ "BLOCKED",
966
+ "LOCATION_CONSENT_REQUIRED",
967
+ "LOCATION_UNAVAILABLE",
968
+ "OUT_OF_RADIUS",
969
+ "MEAL_SUGGESTION_DISABLED",
970
+ "NOT_HUNGRY"
971
+ ]);
972
+ var MealPlanNearbyFriendRejectionSummarySchema = import_zod17.z.object({
973
+ reason: MealPlanNearbyFriendRejectionReasonSchema,
974
+ count: import_zod17.z.number().int().min(0)
975
+ });
976
+ var ExposeMealPlanToNearbyFriendsResponseSchema = import_zod17.z.object({
977
+ mealPlanId: MealPlanIdSchema,
978
+ exposureBatchId: MealPlanNearbyFriendExposureBatchIdSchema,
979
+ exposedFriendCount: import_zod17.z.number().int().min(0),
980
+ rejectedFriendCount: import_zod17.z.number().int().min(0),
981
+ notificationStatus: MealPlanNearbyFriendExposureNotificationStatusSchema,
982
+ rejectionSummary: import_zod17.z.array(MealPlanNearbyFriendRejectionSummarySchema)
983
+ });
984
+ var MealPlanNearbyFriendExposureSummarySchema = import_zod17.z.object({
985
+ exposureId: MealPlanNearbyFriendExposureIdSchema,
986
+ exposureBatchId: MealPlanNearbyFriendExposureBatchIdSchema.nullable(),
987
+ mealPlanId: MealPlanIdSchema,
988
+ status: MealPlanNearbyFriendExposureStatusSchema,
989
+ radiusMeters: import_zod17.z.number().int().min(100),
990
+ exposedFriendCount: import_zod17.z.number().int().min(0),
991
+ openedAt: ISODateTimeStringSchema,
992
+ expiresAt: ISODateTimeStringSchema.nullable(),
993
+ closedAt: ISODateTimeStringSchema.nullable()
994
+ });
995
+ var MealPlanNearbyFriendExposureBatchSummarySchema = import_zod17.z.object({
996
+ exposureBatchId: MealPlanNearbyFriendExposureBatchIdSchema,
997
+ mealPlanId: MealPlanIdSchema,
998
+ status: MealPlanNearbyFriendExposureStatusSchema,
999
+ radiusMeters: import_zod17.z.number().int().min(100),
1000
+ exposedFriendCount: import_zod17.z.number().int().min(0),
1001
+ rejectedFriendCount: import_zod17.z.number().int().min(0),
1002
+ rejectionSummary: import_zod17.z.array(MealPlanNearbyFriendRejectionSummarySchema),
1003
+ notificationStatus: MealPlanNearbyFriendExposureNotificationStatusSchema,
1004
+ notificationSentAt: ISODateTimeStringSchema.nullable(),
1005
+ openedAt: ISODateTimeStringSchema,
1006
+ expiresAt: ISODateTimeStringSchema.nullable(),
1007
+ closedAt: ISODateTimeStringSchema.nullable()
1008
+ });
1009
+ var MealPlanJoinRequestStatusSchema = import_zod17.z.enum([
1010
+ "PENDING",
1011
+ "ACCEPTED",
1012
+ "REJECTED",
1013
+ "CANCELLED"
1014
+ ]);
1015
+ var CreateMealPlanJoinRequestSchema = import_zod17.z.object({
1016
+ message: import_zod17.z.string().max(500).default("")
1017
+ });
1018
+ var MealPlanJoinRequestSummarySchema = import_zod17.z.object({
1019
+ joinRequestId: MealPlanJoinRequestIdSchema,
1020
+ mealPlanId: MealPlanIdSchema,
1021
+ requester: MemberCoreSchema,
1022
+ status: MealPlanJoinRequestStatusSchema,
1023
+ message: import_zod17.z.string().max(500),
1024
+ requestedAt: ISODateTimeStringSchema,
1025
+ respondedAt: ISODateTimeStringSchema.nullable()
1026
+ });
1027
+ var NearbyFriendMealPlanSummarySchema = import_zod17.z.object({
1028
+ mealPlanId: MealPlanIdSchema,
1029
+ owner: MemberCoreSchema,
1030
+ title: import_zod17.z.string(),
1031
+ participantCount: import_zod17.z.number().int().min(1),
1032
+ distanceMeters: import_zod17.z.number().int().min(0),
1033
+ exposedAt: ISODateTimeStringSchema,
1034
+ expiresAt: ISODateTimeStringSchema.nullable(),
1035
+ joinRequestStatus: MealPlanJoinRequestStatusSchema.nullable().default(null)
1036
+ });
1037
+
1038
+ // src/domain/meal-plan/meal-plan-chat.schema.ts
1039
+ var import_zod18 = require("zod");
1040
+ var MealPlanChatMessageKindSchema = import_zod18.z.enum([
1041
+ "USER",
1042
+ "SYSTEM"
1043
+ ]);
1044
+ var MealPlanSystemMessageKindSchema = import_zod18.z.enum([
1045
+ "PARTICIPANT_JOINED",
1046
+ "PARTICIPANT_READY",
1047
+ "PARTICIPANT_REMOVED",
1048
+ "STATUS_CHANGED",
1049
+ "DECISION_UPDATED",
1050
+ "CONFIRMED",
1051
+ "RECORD_NEEDED"
1052
+ ]);
1053
+ var MealPlanChatSystemPayloadSchema = import_zod18.z.object({
1054
+ kind: MealPlanSystemMessageKindSchema
1055
+ }).catchall(import_zod18.z.unknown());
1056
+ var MealPlanChatMessageListResponseSchema = import_zod18.z.array(
1057
+ import_zod18.z.lazy(() => MealPlanChatMessageResponseSchema)
536
1058
  );
537
- var WaitingPhaseDataSchema = import_zod14.z.object({
538
- locationInitial: import_zod14.z.string().optional(),
539
- meetingAt: ISODateTimeStringSchema.optional()
540
- });
541
- var LocationVotePhaseDataSchema = import_zod14.z.object({
542
- locations: LocationCandidateAddUpdateResponseSchema,
543
- votes: LocationCandidateVoteUpdateResponseSchema
544
- });
545
- var ExcludeMenuPhaseDataSchema = import_zod14.z.object({
546
- recentMenus: import_zod14.z.array(import_zod14.z.object({ userId: import_zod14.z.string(), menuList: import_zod14.z.array(MenuSchema) })),
547
- excludedMenuList: ExcludeMenuUpdateResponseSchema
548
- });
549
- var MenuPhaseDataSchema = import_zod14.z.object({
550
- initialMenus: import_zod14.z.array(MenuSchema),
551
- menuPick: MenuPickUpdateResponseSchema
552
- });
553
- var RestaurantPhaseDataSchema = import_zod14.z.object({
554
- initialRestaurants: import_zod14.z.array(RestaurantSchema),
555
- restaurantUserList: RestaurantPickUpdateResponseSchema
556
- });
557
- var PhaseDataBroadcastSchema = import_zod14.z.discriminatedUnion("phase", [
558
- import_zod14.z.object({ phase: import_zod14.z.literal("waiting"), data: WaitingPhaseDataSchema }),
559
- import_zod14.z.object({ phase: import_zod14.z.literal("date"), data: DatePicksUpdateResponseSchema }),
560
- import_zod14.z.object({ phase: import_zod14.z.literal("time"), data: TimePicksUpdateResponseSchema }),
561
- import_zod14.z.object({ phase: import_zod14.z.literal("location"), data: WaitingPhaseDataSchema }),
562
- import_zod14.z.object({ phase: import_zod14.z.literal("location-vote"), data: LocationVotePhaseDataSchema }),
563
- import_zod14.z.object({ phase: import_zod14.z.literal("exclude-menu"), data: ExcludeMenuPhaseDataSchema }),
564
- import_zod14.z.object({ phase: import_zod14.z.literal("menu"), data: MenuPhaseDataSchema }),
565
- import_zod14.z.object({ phase: import_zod14.z.literal("restaurant"), data: RestaurantPhaseDataSchema }),
566
- import_zod14.z.object({ phase: import_zod14.z.literal("finish"), data: WaitingPhaseDataSchema })
567
- ]);
568
-
569
- // src/domain/plan/plan.schema.ts
570
- var PlanStatusSchema = import_zod15.z.enum(["PLANNING", "COMPLETED"]);
571
- var PlanTypeSchema = import_zod15.z.enum(["RECRUIT", "INVITATION"]);
572
- var PlanResponseSchema = import_zod15.z.object({
573
- planId: PlanIdSchema,
574
- meetingAt: ISODateTimeStringSchema,
575
- location: LocationCandidateSchema.nullable(),
576
- restaurant: RestaurantSchema.nullable(),
577
- author: MemberCoreSchema,
578
- participants: import_zod15.z.array(MemberCoreSchema),
579
- status: PlanStatusSchema,
580
- type: PlanTypeSchema,
1059
+ var MealPlanChatRoomSummarySchema = import_zod18.z.object({
1060
+ chatRoomId: MealPlanChatRoomIdSchema,
1061
+ mealPlanId: MealPlanIdSchema,
1062
+ messageCount: import_zod18.z.number().int().min(0),
1063
+ lastMessageAt: ISODateTimeStringSchema.nullable(),
1064
+ createdAt: ISODateTimeStringSchema
1065
+ });
1066
+ var SendMealPlanChatMessageRequestSchema = import_zod18.z.object({
1067
+ message: import_zod18.z.string().min(1).max(500)
1068
+ });
1069
+ var MealPlanChatMessageResponseSchema = import_zod18.z.object({
1070
+ messageId: MealPlanChatMessageIdSchema,
1071
+ chatRoomId: MealPlanChatRoomIdSchema,
1072
+ sender: MemberCoreSchema.nullable(),
1073
+ guestId: import_zod18.z.string().min(1).nullable(),
1074
+ guestNickname: import_zod18.z.string().min(1).nullable(),
1075
+ kind: MealPlanChatMessageKindSchema,
1076
+ message: import_zod18.z.string().min(1).max(1e3),
1077
+ systemPayload: MealPlanChatSystemPayloadSchema.nullable(),
1078
+ createdAt: ISODateTimeStringSchema
1079
+ });
1080
+ var MealPlanSystemMessageSchema = import_zod18.z.object({
1081
+ kind: MealPlanSystemMessageKindSchema,
1082
+ message: import_zod18.z.string().min(1),
1083
+ createdAt: ISODateTimeStringSchema
1084
+ });
1085
+
1086
+ // src/domain/meal-plan/meal-plan.schema.ts
1087
+ var MealPlanStatusSchema = import_zod19.z.enum([
1088
+ "DRAFT",
1089
+ "RECOMMENDING",
1090
+ "GATHERING",
1091
+ "DECIDING",
1092
+ "READY",
1093
+ "CONFIRMED",
1094
+ "LOCKED",
1095
+ "COMPLETED",
1096
+ "RECORDED",
1097
+ "CANCELLED"
1098
+ ]);
1099
+ var MealPlanChannelSchema = import_zod19.z.enum([
1100
+ "OWNER_ONLY",
1101
+ "FRIEND_INVITE",
1102
+ "LINK_GUEST",
1103
+ "NEARBY_FRIENDS"
1104
+ ]);
1105
+ var MealPlanRecommendationContextSchema = import_zod19.z.object({
1106
+ mealDate: ISODateStringSchema.optional(),
1107
+ mealTime: TimeHHmmStringSchema.optional(),
1108
+ area: MealPlanLocationCandidateSchema.optional(),
1109
+ preferredMenuCategories: import_zod19.z.array(import_zod19.z.string().min(1)).default([]),
1110
+ excludedMenuCategories: import_zod19.z.array(import_zod19.z.string().min(1)).default([]),
1111
+ candidateMenuCategories: import_zod19.z.array(import_zod19.z.string().min(1)).default([]),
1112
+ budgetMin: import_zod19.z.number().int().min(0).optional(),
1113
+ budgetMax: import_zod19.z.number().int().min(0).optional(),
1114
+ memo: import_zod19.z.string().max(500).optional()
1115
+ });
1116
+ var CreateMealPlanRequestSchema = import_zod19.z.object({
1117
+ title: import_zod19.z.string().min(1).max(100).optional(),
1118
+ channels: import_zod19.z.array(MealPlanChannelSchema).default(["OWNER_ONLY"]),
1119
+ recommendationContext: MealPlanRecommendationContextSchema.optional()
1120
+ });
1121
+ var CreateMealPlanResponseSchema = import_zod19.z.object({
1122
+ mealPlanId: MealPlanIdSchema
1123
+ });
1124
+ var UpdateMealPlanContextRequestSchema = MealPlanRecommendationContextSchema.partial();
1125
+ var MealPlanViewerRoleSchema = import_zod19.z.enum([
1126
+ "OWNER",
1127
+ "FRIEND",
1128
+ "GUEST",
1129
+ "NONE"
1130
+ ]);
1131
+ var MealPlanViewerPermissionsSchema = import_zod19.z.object({
1132
+ canView: import_zod19.z.boolean(),
1133
+ canInviteFriends: import_zod19.z.boolean(),
1134
+ canManageParticipants: import_zod19.z.boolean(),
1135
+ canCreateShareLink: import_zod19.z.boolean(),
1136
+ canExposeNearbyFriends: import_zod19.z.boolean(),
1137
+ canVote: import_zod19.z.boolean(),
1138
+ canChat: import_zod19.z.boolean(),
1139
+ canReadyMealPlan: import_zod19.z.boolean(),
1140
+ canRequestChange: import_zod19.z.boolean(),
1141
+ canReopenDecisionTask: import_zod19.z.boolean(),
1142
+ canConfirmDecisionSnapshot: import_zod19.z.boolean(),
1143
+ canConfirmMealPlan: import_zod19.z.boolean(),
1144
+ canCompleteMealPlan: import_zod19.z.boolean(),
1145
+ canRecordMealPlan: import_zod19.z.boolean(),
1146
+ canCancelMealPlan: import_zod19.z.boolean()
1147
+ });
1148
+ var MealPlanResponseSchema = import_zod19.z.object({
1149
+ mealPlanId: MealPlanIdSchema,
1150
+ owner: MemberCoreSchema,
1151
+ title: import_zod19.z.string().nullable(),
1152
+ status: MealPlanStatusSchema,
1153
+ channels: import_zod19.z.array(MealPlanChannelSchema),
1154
+ participants: import_zod19.z.array(MealPlanParticipantResponseSchema),
1155
+ pendingInvites: import_zod19.z.array(MealPlanInviteSummarySchema),
1156
+ pendingJoinRequests: import_zod19.z.array(MealPlanJoinRequestSummarySchema),
1157
+ decisionStages: import_zod19.z.array(MealPlanDecisionStageResponseSchema),
1158
+ decisionProgress: MealPlanDecisionProgressSchema.nullable(),
1159
+ viewerRole: MealPlanViewerRoleSchema,
1160
+ viewerParticipantStatus: MealPlanParticipantStatusSchema.nullable(),
1161
+ viewerPermissions: MealPlanViewerPermissionsSchema,
1162
+ selectedDate: ISODateStringSchema.nullable(),
1163
+ selectedTime: TimeHHmmStringSchema.nullable(),
1164
+ selectedArea: MealPlanLocationCandidateSchema.nullable(),
1165
+ selectedRestaurant: RestaurantSchema.nullable(),
1166
+ selectedMenuCategory: import_zod19.z.string().nullable(),
1167
+ chatRoom: MealPlanChatRoomSummarySchema.nullable(),
1168
+ confirmedAt: ISODateTimeStringSchema.nullable(),
1169
+ lockedAt: ISODateTimeStringSchema.nullable(),
1170
+ completedAt: ISODateTimeStringSchema.nullable(),
1171
+ recordedAt: ISODateTimeStringSchema.nullable(),
581
1172
  createdAt: ISODateTimeStringSchema,
582
1173
  updatedAt: ISODateTimeStringSchema
583
1174
  });
584
- var PlanListQuerySchema = import_zod15.z.object({});
1175
+ var MyMealPlanGroupSchema = import_zod19.z.enum(["DECIDING", "UPCOMING", "RECORD_NEEDED", "PAST"]);
1176
+ var MyMealPlanListItemSchema = import_zod19.z.object({
1177
+ mealPlanId: MealPlanIdSchema,
1178
+ group: MyMealPlanGroupSchema,
1179
+ title: import_zod19.z.string(),
1180
+ status: MealPlanStatusSchema,
1181
+ channels: import_zod19.z.array(MealPlanChannelSchema),
1182
+ participantCount: import_zod19.z.number().int().min(1),
1183
+ selectedDate: ISODateStringSchema.nullable(),
1184
+ selectedTime: TimeHHmmStringSchema.nullable(),
1185
+ selectedAreaName: import_zod19.z.string().nullable(),
1186
+ selectedRestaurantName: import_zod19.z.string().nullable(),
1187
+ primaryAction: import_zod19.z.object({
1188
+ label: import_zod19.z.string(),
1189
+ href: import_zod19.z.string()
1190
+ }),
1191
+ updatedAt: ISODateTimeStringSchema
1192
+ });
1193
+ var MyMealPlanListResponseSchema = import_zod19.z.object({
1194
+ deciding: import_zod19.z.array(MyMealPlanListItemSchema),
1195
+ upcoming: import_zod19.z.array(MyMealPlanListItemSchema),
1196
+ recordNeeded: import_zod19.z.array(MyMealPlanListItemSchema),
1197
+ past: import_zod19.z.array(MyMealPlanListItemSchema)
1198
+ });
1199
+ var MealPlanNotificationKindSchema = import_zod19.z.enum([
1200
+ "MEAL_PLAN_INVITE_RECEIVED",
1201
+ "MEAL_PLAN_INVITE_ACCEPTED",
1202
+ "MEAL_PLAN_JOIN_REQUESTED",
1203
+ "MEAL_PLAN_JOIN_REQUEST_ACCEPTED",
1204
+ "MEAL_PLAN_NEARBY_FRIEND_EXPOSED",
1205
+ "MEAL_PLAN_PARTICIPANT_JOINED",
1206
+ "MEAL_PLAN_READY_COMPLETED",
1207
+ "MEAL_PLAN_CONFIRMED",
1208
+ "MEAL_PLAN_LOCKED",
1209
+ "MEAL_PLAN_RECORD_NEEDED"
1210
+ ]);
1211
+ var MealPlanNotificationPriorityChannelSchema = import_zod19.z.enum([
1212
+ "HOME",
1213
+ "NOTIFICATION_INBOX",
1214
+ "FCM_PUSH",
1215
+ "LIVE_ACTIVITY"
1216
+ ]);
1217
+ var MealPlanLiveActivityBehaviorSchema = import_zod19.z.enum([
1218
+ "NONE",
1219
+ "START_OR_UPDATE",
1220
+ "UPDATE",
1221
+ "END"
1222
+ ]);
1223
+ var MealPlanNotificationPriorityPolicyItemSchema = import_zod19.z.object({
1224
+ kind: MealPlanNotificationKindSchema,
1225
+ priority: import_zod19.z.number().int().min(0),
1226
+ homePriority: import_zod19.z.number().int().min(0),
1227
+ inboxPriority: import_zod19.z.number().int().min(0),
1228
+ fcmPriority: import_zod19.z.number().int().min(0),
1229
+ liveActivityPriority: import_zod19.z.number().int().min(0),
1230
+ liveActivityBehavior: MealPlanLiveActivityBehaviorSchema,
1231
+ foregroundToast: import_zod19.z.boolean()
1232
+ });
1233
+ var MealPlanNotificationSchema = import_zod19.z.object({
1234
+ notificationId: import_zod19.z.string().min(1),
1235
+ kind: MealPlanNotificationKindSchema,
1236
+ mealPlanId: MealPlanIdSchema,
1237
+ deepLink: import_zod19.z.string().min(1),
1238
+ title: import_zod19.z.string().min(1),
1239
+ message: import_zod19.z.string().min(1),
1240
+ createdAt: ISODateTimeStringSchema,
1241
+ readAt: ISODateTimeStringSchema.nullable()
1242
+ });
585
1243
 
586
- // src/domain/recruit/recruit.schema.ts
587
- var import_zod16 = require("zod");
588
- var RecruitStatusSchema = import_zod16.z.enum(["OPEN", "CLOSED", "EXPIRED"]);
589
- var RecruitParticipantSchema = MemberCoreSchema.extend({});
590
- var RecruitSortBySchema = import_zod16.z.enum(["createdAt", "deadline", "participantCount"]);
591
- var RecruitListQuerySchema = PageQuerySchema.extend({
592
- sortBy: RecruitSortBySchema.default("createdAt"),
593
- direction: SortDirectionSchema.default("desc")
594
- });
595
- var RecruitResponseSchema = import_zod16.z.object({
596
- targetCount: import_zod16.z.number().int().min(2),
597
- meetingAt: ISODateTimeStringSchema,
598
- location: import_zod16.z.string().min(1),
599
- message: import_zod16.z.string().max(500),
600
- recruitId: RecruitIdSchema,
601
- status: RecruitStatusSchema,
1244
+ // src/domain/meal-plan/meal-plan-share-link.schema.ts
1245
+ var import_zod20 = require("zod");
1246
+ var CreateMealPlanShareLinkRequestSchema = import_zod20.z.object({
1247
+ expiresAt: ISODateTimeStringSchema.optional(),
1248
+ guestJoinEnabled: import_zod20.z.boolean().default(true)
1249
+ });
1250
+ var MealPlanShareLinkSummarySchema = import_zod20.z.object({
1251
+ shareLinkId: MealPlanShareLinkIdSchema,
1252
+ mealPlanId: MealPlanIdSchema,
1253
+ token: MealPlanShareLinkTokenSchema,
1254
+ url: import_zod20.z.string().url(),
1255
+ expiresAt: ISODateTimeStringSchema,
1256
+ guestJoinEnabled: import_zod20.z.boolean(),
1257
+ createdAt: ISODateTimeStringSchema
1258
+ });
1259
+ var MealPlanSharePreviewResponseSchema = import_zod20.z.object({
1260
+ mealPlanId: MealPlanIdSchema,
1261
+ token: MealPlanShareLinkTokenSchema,
1262
+ title: import_zod20.z.string(),
1263
+ ownerName: import_zod20.z.string(),
1264
+ participantCount: import_zod20.z.number().int().min(1),
1265
+ expiresAt: ISODateTimeStringSchema,
1266
+ guestJoinEnabled: import_zod20.z.boolean()
1267
+ });
1268
+ var JoinMealPlanGuestRequestSchema = import_zod20.z.object({
1269
+ nickname: import_zod20.z.string().min(1).max(50),
1270
+ password: import_zod20.z.string().min(1).max(100).optional()
1271
+ });
1272
+ var JoinMealPlanGuestResponseSchema = import_zod20.z.object({
1273
+ mealPlanId: MealPlanIdSchema,
1274
+ guestId: import_zod20.z.string().min(1),
1275
+ sessionToken: import_zod20.z.string().min(1)
1276
+ });
1277
+ var MealPlanGuestSessionQuerySchema = import_zod20.z.object({
1278
+ sessionToken: import_zod20.z.string().min(1)
1279
+ });
1280
+ var MealPlanGuestSessionResponseSchema = import_zod20.z.object({
1281
+ mealPlan: MealPlanResponseSchema,
1282
+ token: MealPlanShareLinkTokenSchema,
1283
+ guestId: import_zod20.z.string().min(1),
1284
+ nickname: import_zod20.z.string().min(1).max(50),
1285
+ sessionToken: import_zod20.z.string().min(1)
1286
+ });
1287
+
1288
+ // src/domain/meal-plan/meal-group.schema.ts
1289
+ var import_zod21 = require("zod");
1290
+ var MealGroupMemberRoleSchema = import_zod21.z.enum([
1291
+ "OWNER",
1292
+ "MEMBER"
1293
+ ]);
1294
+ var MealGroupMemberSchema = import_zod21.z.object({
1295
+ member: MemberCoreSchema,
1296
+ role: MealGroupMemberRoleSchema,
1297
+ joinedAt: ISODateTimeStringSchema
1298
+ });
1299
+ var MealGroupResponseSchema = import_zod21.z.object({
1300
+ mealGroupId: MealGroupIdSchema,
1301
+ name: import_zod21.z.string().min(1).max(50),
1302
+ owner: MemberCoreSchema,
1303
+ profileImageUrl: import_zod21.z.string().url().nullable(),
1304
+ members: import_zod21.z.array(MealGroupMemberSchema),
1305
+ recentMealPlanIds: import_zod21.z.array(MealPlanIdSchema),
602
1306
  createdAt: ISODateTimeStringSchema,
603
- expiredAt: ISODateTimeStringSchema,
604
- updatedAt: ISODateTimeStringSchema,
605
- author: MemberCoreSchema,
606
- participants: import_zod16.z.array(RecruitParticipantSchema)
1307
+ updatedAt: ISODateTimeStringSchema
607
1308
  });
608
- var RecruitListResponseSchema = PageResponseSchema(RecruitResponseSchema);
609
- var CreateRecruitRequestSchema = import_zod16.z.object({
610
- targetCount: import_zod16.z.number().int().min(2),
611
- meetingAt: ISODateTimeStringSchema,
612
- location: import_zod16.z.string().min(1),
613
- message: import_zod16.z.string().max(500)
1309
+ var CreateMealGroupRequestSchema = import_zod21.z.object({
1310
+ name: import_zod21.z.string().min(1).max(50),
1311
+ memberIds: import_zod21.z.array(import_zod21.z.number().int().positive()).min(1),
1312
+ profileImageUrl: import_zod21.z.string().url().nullable().optional(),
1313
+ sourceMealPlanId: MealPlanIdSchema.optional()
1314
+ });
1315
+ var StartMealPlanFromGroupRequestSchema = import_zod21.z.object({
1316
+ title: import_zod21.z.string().min(1).max(100).optional()
1317
+ });
1318
+ var AddMealGroupMemberRequestSchema = import_zod21.z.object({
1319
+ memberId: import_zod21.z.number().int().positive(),
1320
+ role: MealGroupMemberRoleSchema.default("MEMBER")
1321
+ });
1322
+ var UpdateMealGroupMemberRoleRequestSchema = import_zod21.z.object({
1323
+ role: MealGroupMemberRoleSchema
1324
+ });
1325
+ var MealGroupHistoryItemSchema = MyMealPlanListItemSchema.extend({});
1326
+ var MealGroupPreferenceSummarySchema = import_zod21.z.object({
1327
+ mealGroupId: MealGroupIdSchema,
1328
+ frequentMenuCategories: import_zod21.z.array(import_zod21.z.object({ label: import_zod21.z.string(), count: import_zod21.z.number().int().min(0) })),
1329
+ frequentRestaurants: import_zod21.z.array(import_zod21.z.object({ restaurantName: import_zod21.z.string(), count: import_zod21.z.number().int().min(0) })),
1330
+ recentMenuCategories: import_zod21.z.array(import_zod21.z.string()),
1331
+ recommendationContext: import_zod21.z.object({
1332
+ preferredMenuCategories: import_zod21.z.array(import_zod21.z.string()),
1333
+ excludedMenuCategories: import_zod21.z.array(import_zod21.z.string()),
1334
+ candidateMenuCategories: import_zod21.z.array(import_zod21.z.string())
1335
+ })
614
1336
  });
615
- var CreateRecruitResponseSchema = import_zod16.z.object({
616
- recruitId: RecruitIdSchema
1337
+ var MealGroupHistoryResponseSchema = import_zod21.z.array(MealGroupHistoryItemSchema);
1338
+
1339
+ // src/domain/meal-plan/meal-plan-home-map.schema.ts
1340
+ var import_zod22 = require("zod");
1341
+ var HomeMealPlanActionKindSchema = import_zod22.z.enum([
1342
+ "CONTINUE_DECISION",
1343
+ "TODAY_UPCOMING",
1344
+ "RECORD_NEEDED",
1345
+ "RESPOND_JOIN_REQUEST",
1346
+ "NOTIFICATION_FOLLOW_UP"
1347
+ ]);
1348
+ var HomeMealPlanActionCardSchema = import_zod22.z.object({
1349
+ actionId: import_zod22.z.string().min(1),
1350
+ kind: HomeMealPlanActionKindSchema,
1351
+ priority: import_zod22.z.number().int().min(0),
1352
+ title: import_zod22.z.string().min(1),
1353
+ description: import_zod22.z.string().min(1),
1354
+ primaryAction: import_zod22.z.object({
1355
+ label: import_zod22.z.string().min(1),
1356
+ href: import_zod22.z.string().min(1)
1357
+ }),
1358
+ mealPlan: MyMealPlanListItemSchema.nullable(),
1359
+ joinRequest: MealPlanJoinRequestSummarySchema.nullable(),
1360
+ notification: MealPlanNotificationSchema.nullable().default(null)
1361
+ });
1362
+ var HomeMealPlanDashboardResponseSchema = import_zod22.z.object({
1363
+ generatedAt: ISODateTimeStringSchema,
1364
+ inProgress: import_zod22.z.array(MyMealPlanListItemSchema),
1365
+ today: import_zod22.z.array(MyMealPlanListItemSchema),
1366
+ recordNeeded: import_zod22.z.array(MyMealPlanListItemSchema),
1367
+ pendingJoinRequests: import_zod22.z.array(MealPlanJoinRequestSummarySchema),
1368
+ unreadNotifications: import_zod22.z.array(MealPlanNotificationSchema).default([]),
1369
+ nextActions: import_zod22.z.array(HomeMealPlanActionCardSchema)
1370
+ });
1371
+ var MealMapLayerSchema = import_zod22.z.enum([
1372
+ "MY_MEAL_PLAN_PLACE",
1373
+ "NEARBY_FRIEND_MEAL_PLAN",
1374
+ "FRIEND_RECORD_LOCATION",
1375
+ "RESTAURANT_CANDIDATE"
1376
+ ]);
1377
+ var MealMapMarkerBaseSchema = import_zod22.z.object({
1378
+ markerId: import_zod22.z.string().min(1),
1379
+ lat: import_zod22.z.number().min(-90).max(90),
1380
+ lng: import_zod22.z.number().min(-180).max(180),
1381
+ title: import_zod22.z.string().min(1),
1382
+ subtitle: import_zod22.z.string().nullable(),
1383
+ href: import_zod22.z.string().min(1).nullable(),
1384
+ mealPlanId: MealPlanIdSchema.nullable(),
1385
+ articleId: ArticleIdSchema.nullable(),
1386
+ restaurant: RestaurantSchema.nullable(),
1387
+ distanceMeters: import_zod22.z.number().int().min(0).nullable(),
1388
+ updatedAt: ISODateTimeStringSchema
1389
+ });
1390
+ var MealMapMyMealPlanPlaceMetadataSchema = import_zod22.z.object({
1391
+ ownerId: MemberIdSchema.nullable().default(null),
1392
+ status: import_zod22.z.string().min(1),
1393
+ participantCount: import_zod22.z.number().int().min(1),
1394
+ source: import_zod22.z.string().min(1)
1395
+ });
1396
+ var MealMapNearbyFriendMealPlanMetadataSchema = import_zod22.z.object({
1397
+ ownerId: MemberIdSchema.nullable().default(null),
1398
+ ownerName: import_zod22.z.string().min(1),
1399
+ participantCount: import_zod22.z.number().int().min(1),
1400
+ expiresAt: ISODateTimeStringSchema.nullable(),
1401
+ source: import_zod22.z.string().min(1)
1402
+ });
1403
+ var MealMapFriendRecordLocationMetadataSchema = import_zod22.z.object({
1404
+ authorId: MemberIdSchema.nullable().default(null),
1405
+ authorName: import_zod22.z.string().min(1),
1406
+ imageUrl: import_zod22.z.string().nullable().default(null),
1407
+ mealDate: import_zod22.z.string().min(1)
1408
+ });
1409
+ var MealMapRestaurantCandidateCompletionBlockedReasonSchema = import_zod22.z.enum([
1410
+ "OWNER_ONLY",
1411
+ "STAGE_ALREADY_COMPLETED",
1412
+ "MEAL_PLAN_NOT_MUTABLE"
1413
+ ]);
1414
+ var MealMapRestaurantCandidateMetadataSchema = import_zod22.z.object({
1415
+ stageId: MealPlanDecisionStageIdSchema,
1416
+ ownerId: MemberIdSchema.nullable().default(null),
1417
+ status: import_zod22.z.string().min(1),
1418
+ source: import_zod22.z.enum(["search", "fallback", "manual"]).default("search"),
1419
+ stageStatus: import_zod22.z.enum(["OPEN", "COMPLETED", "REOPENED"]).default("OPEN"),
1420
+ canVote: import_zod22.z.boolean().default(false),
1421
+ canCompleteStage: import_zod22.z.boolean().default(false),
1422
+ completionBlockedReason: MealMapRestaurantCandidateCompletionBlockedReasonSchema.nullable().default(null)
1423
+ });
1424
+ var MealMapMarkerSchema = import_zod22.z.discriminatedUnion("layer", [
1425
+ MealMapMarkerBaseSchema.extend({
1426
+ layer: import_zod22.z.literal("MY_MEAL_PLAN_PLACE"),
1427
+ metadata: MealMapMyMealPlanPlaceMetadataSchema
1428
+ }),
1429
+ MealMapMarkerBaseSchema.extend({
1430
+ layer: import_zod22.z.literal("NEARBY_FRIEND_MEAL_PLAN"),
1431
+ metadata: MealMapNearbyFriendMealPlanMetadataSchema
1432
+ }),
1433
+ MealMapMarkerBaseSchema.extend({
1434
+ layer: import_zod22.z.literal("FRIEND_RECORD_LOCATION"),
1435
+ metadata: MealMapFriendRecordLocationMetadataSchema
1436
+ }),
1437
+ MealMapMarkerBaseSchema.extend({
1438
+ layer: import_zod22.z.literal("RESTAURANT_CANDIDATE"),
1439
+ metadata: MealMapRestaurantCandidateMetadataSchema
1440
+ })
1441
+ ]);
1442
+ var MealMapQuerySchema = import_zod22.z.object({
1443
+ friendRecordDays: import_zod22.z.coerce.number().int().min(1).max(90).optional().default(7)
1444
+ });
1445
+ var MealMapResponseSchema = import_zod22.z.object({
1446
+ generatedAt: ISODateTimeStringSchema,
1447
+ center: import_zod22.z.object({
1448
+ lat: import_zod22.z.number().min(-90).max(90),
1449
+ lng: import_zod22.z.number().min(-180).max(180),
1450
+ source: import_zod22.z.enum(["LAST_KNOWN_LOCATION", "MY_MEAL_PLAN", "DEFAULT"])
1451
+ }),
1452
+ layers: import_zod22.z.object({
1453
+ myMealPlanPlaces: import_zod22.z.array(MealMapMarkerSchema),
1454
+ nearbyFriendMealPlans: import_zod22.z.array(MealMapMarkerSchema),
1455
+ friendRecordLocations: import_zod22.z.array(MealMapMarkerSchema),
1456
+ restaurantCandidates: import_zod22.z.array(MealMapMarkerSchema)
1457
+ })
617
1458
  });
618
1459
 
619
1460
  // src/domain/promotion/referral.schema.ts
620
- var import_zod17 = require("zod");
621
- var ReferralCreateResponseSchema = import_zod17.z.object({
1461
+ var import_zod23 = require("zod");
1462
+ var ReferralCreateResponseSchema = import_zod23.z.object({
622
1463
  code: ReferralCodeSchema,
623
- link: import_zod17.z.string().url(),
1464
+ link: import_zod23.z.string().url(),
624
1465
  expiresAt: ISODateTimeStringSchema
625
1466
  });
626
- var ReferralItemResponseSchema = import_zod17.z.object({
1467
+ var ReferralItemResponseSchema = import_zod23.z.object({
627
1468
  code: ReferralCodeSchema,
628
1469
  createdAt: ISODateTimeStringSchema,
629
1470
  expiresAt: ISODateTimeStringSchema,
630
- used: import_zod17.z.boolean(),
1471
+ used: import_zod23.z.boolean(),
631
1472
  usedByMemberId: MemberIdSchema.nullable(),
632
- usedByUsername: import_zod17.z.string().nullable()
1473
+ usedByUsername: import_zod23.z.string().nullable()
633
1474
  });
634
- var RedeemReferralRequestSchema = import_zod17.z.object({
1475
+ var RedeemReferralRequestSchema = import_zod23.z.object({
635
1476
  code: ReferralCodeSchema
636
1477
  });
637
1478
 
638
1479
  // src/domain/promotion/coupon.schema.ts
639
- var import_zod18 = require("zod");
640
- var CouponTypeSchema = import_zod18.z.enum(["DISCOUNT", "SERVICE"]);
641
- var CouponStatusSchema = import_zod18.z.enum(["UNUSED", "USED"]);
642
- var CouponResponseSchema = import_zod18.z.object({
1480
+ var import_zod24 = require("zod");
1481
+ var CouponTypeSchema = import_zod24.z.enum(["DISCOUNT", "SERVICE"]);
1482
+ var CouponStatusSchema = import_zod24.z.enum(["UNUSED", "USED"]);
1483
+ var CouponResponseSchema = import_zod24.z.object({
643
1484
  couponId: CouponIdSchema,
644
- title: import_zod18.z.string(),
645
- shopName: import_zod18.z.string(),
1485
+ title: import_zod24.z.string(),
1486
+ shopName: import_zod24.z.string(),
646
1487
  type: CouponTypeSchema,
647
- condition: import_zod18.z.string(),
1488
+ condition: import_zod24.z.string(),
648
1489
  expiresAt: ISODateStringSchema,
649
- used: import_zod18.z.boolean(),
650
- thumbnailUrl: import_zod18.z.string().url()
1490
+ used: import_zod24.z.boolean(),
1491
+ thumbnailUrl: import_zod24.z.string().url()
1492
+ });
1493
+
1494
+ // src/domain/promotion/challenge.schema.ts
1495
+ var import_zod25 = require("zod");
1496
+ var RewardTypeSchema = import_zod25.z.enum(["WEEK", "MONTH"]);
1497
+ var WeekProgressSchema = import_zod25.z.object({
1498
+ days: import_zod25.z.array(import_zod25.z.boolean()),
1499
+ completed: import_zod25.z.number().int().min(0),
1500
+ goal: import_zod25.z.number().int().positive()
1501
+ });
1502
+ var MonthProgressSchema = import_zod25.z.object({
1503
+ count: import_zod25.z.number().int().min(0),
1504
+ goal: import_zod25.z.number().int().positive()
1505
+ });
1506
+ var ChallengeStatusResponseSchema = import_zod25.z.object({
1507
+ week: WeekProgressSchema,
1508
+ month: MonthProgressSchema,
1509
+ weekRewardAvailable: import_zod25.z.boolean(),
1510
+ monthRewardAvailable: import_zod25.z.boolean()
1511
+ });
1512
+ var ClaimChallengeRewardRequestSchema = import_zod25.z.object({
1513
+ type: RewardTypeSchema
1514
+ });
1515
+ var ClaimChallengeRewardResponseSchema = import_zod25.z.object({
1516
+ rewardType: RewardTypeSchema,
1517
+ claimed: import_zod25.z.boolean()
1518
+ });
1519
+
1520
+ // src/domain/push/push.schema.ts
1521
+ var import_zod26 = require("zod");
1522
+ var PushProviderSchema = import_zod26.z.enum(["FCM", "APNS_LIVE_ACTIVITY"]);
1523
+ var PushPlatformSchema = import_zod26.z.enum(["WEB", "ANDROID", "IOS"]);
1524
+ var PushPermissionStatusSchema = import_zod26.z.enum([
1525
+ "UNKNOWN",
1526
+ "PROMPT",
1527
+ "GRANTED",
1528
+ "DENIED"
1529
+ ]);
1530
+ var PushTokenStatusSchema = import_zod26.z.enum(["ACTIVE", "REVOKED", "DISABLED"]);
1531
+ var RegisterPushTokenRequestSchema = import_zod26.z.object({
1532
+ provider: PushProviderSchema.default("FCM"),
1533
+ platform: PushPlatformSchema,
1534
+ token: import_zod26.z.string().min(10),
1535
+ deviceId: import_zod26.z.string().min(1).max(128),
1536
+ appVersion: import_zod26.z.string().min(1).max(64).optional(),
1537
+ buildNumber: import_zod26.z.string().min(1).max(64).optional(),
1538
+ permissionStatus: PushPermissionStatusSchema
1539
+ });
1540
+ var RevokePushTokenRequestSchema = import_zod26.z.object({
1541
+ provider: PushProviderSchema.default("FCM"),
1542
+ token: import_zod26.z.string().min(10).optional(),
1543
+ deviceId: import_zod26.z.string().min(1).max(128).optional()
1544
+ });
1545
+ var PushTokenResponseSchema = import_zod26.z.object({
1546
+ pushTokenId: import_zod26.z.string().uuid(),
1547
+ provider: PushProviderSchema,
1548
+ platform: PushPlatformSchema,
1549
+ deviceId: import_zod26.z.string(),
1550
+ status: PushTokenStatusSchema,
1551
+ permissionStatus: PushPermissionStatusSchema,
1552
+ appVersion: import_zod26.z.string().nullable(),
1553
+ buildNumber: import_zod26.z.string().nullable(),
1554
+ lastSeenAt: ISODateTimeStringSchema,
1555
+ revokedAt: ISODateTimeStringSchema.nullable()
1556
+ });
1557
+ var PushPayloadSchemaVersionSchema = import_zod26.z.literal("2026-06-17");
1558
+ var MealPlanPushPayloadDataSchema = import_zod26.z.object({
1559
+ schemaVersion: PushPayloadSchemaVersionSchema,
1560
+ notificationId: import_zod26.z.string().min(1),
1561
+ kind: MealPlanNotificationKindSchema,
1562
+ mealPlanId: MealPlanIdSchema,
1563
+ deepLink: import_zod26.z.string().min(1),
1564
+ title: import_zod26.z.string().min(1),
1565
+ body: import_zod26.z.string().min(1),
1566
+ fcmPriority: import_zod26.z.coerce.number().int().min(0),
1567
+ liveActivityPriority: import_zod26.z.coerce.number().int().min(0),
1568
+ liveActivityBehavior: MealPlanLiveActivityBehaviorSchema
1569
+ });
1570
+ var PushDeliveryStatusSchema = import_zod26.z.enum([
1571
+ "PENDING",
1572
+ "SENT",
1573
+ "FAILED",
1574
+ "SKIPPED"
1575
+ ]);
1576
+ var PushDeliveryAttemptResultSchema = import_zod26.z.enum([
1577
+ "SENT",
1578
+ "FAILED",
1579
+ "SKIPPED"
1580
+ ]);
1581
+ var PushDeliveryAttemptSummarySchema = import_zod26.z.object({
1582
+ attemptId: import_zod26.z.string().uuid(),
1583
+ outboxId: import_zod26.z.string().uuid(),
1584
+ pushTokenId: import_zod26.z.string().uuid().nullable(),
1585
+ provider: PushProviderSchema,
1586
+ result: PushDeliveryAttemptResultSchema,
1587
+ providerMessageId: import_zod26.z.string().nullable(),
1588
+ errorCode: import_zod26.z.string().nullable(),
1589
+ errorMessage: import_zod26.z.string().nullable(),
1590
+ invalidToken: import_zod26.z.boolean(),
1591
+ createdAt: ISODateTimeStringSchema
1592
+ });
1593
+ var PushDeliveryOutboxSummarySchema = import_zod26.z.object({
1594
+ outboxId: import_zod26.z.string().uuid(),
1595
+ notificationId: import_zod26.z.string().min(1),
1596
+ memberId: import_zod26.z.number().int().positive(),
1597
+ status: PushDeliveryStatusSchema,
1598
+ attemptCount: import_zod26.z.number().int().min(0),
1599
+ lastError: import_zod26.z.string().nullable(),
1600
+ nextAttemptAt: ISODateTimeStringSchema.nullable(),
1601
+ sentAt: ISODateTimeStringSchema.nullable(),
1602
+ createdAt: ISODateTimeStringSchema
1603
+ });
1604
+
1605
+ // src/domain/live-activity/live-activity.schema.ts
1606
+ var import_zod27 = require("zod");
1607
+ var MealPlanLiveActivityPlatformSchema = import_zod27.z.enum([
1608
+ "IOS_LIVE_ACTIVITY",
1609
+ "ANDROID_LIVE_UPDATE"
1610
+ ]);
1611
+ var MealPlanLiveActivitySessionStatusSchema = import_zod27.z.enum([
1612
+ "ACTIVE",
1613
+ "ENDED",
1614
+ "EXPIRED",
1615
+ "DISABLED"
1616
+ ]);
1617
+ var MealPlanLiveActivityUpdateStatusSchema = import_zod27.z.enum([
1618
+ "PENDING",
1619
+ "SENT",
1620
+ "FAILED",
1621
+ "SKIPPED"
1622
+ ]);
1623
+ var RegisterMealPlanLiveActivitySessionRequestSchema = import_zod27.z.object({
1624
+ platform: MealPlanLiveActivityPlatformSchema,
1625
+ deviceId: import_zod27.z.string().min(1).max(128),
1626
+ activityId: import_zod27.z.string().min(1).max(128),
1627
+ pushToken: import_zod27.z.string().min(10).optional(),
1628
+ appVersion: import_zod27.z.string().min(1).max(64).optional(),
1629
+ buildNumber: import_zod27.z.string().min(1).max(64).optional()
1630
+ });
1631
+ var EndMealPlanLiveActivitySessionRequestSchema = import_zod27.z.object({
1632
+ platform: MealPlanLiveActivityPlatformSchema.optional(),
1633
+ deviceId: import_zod27.z.string().min(1).max(128).optional(),
1634
+ activityId: import_zod27.z.string().min(1).max(128).optional()
1635
+ });
1636
+ var MealPlanLiveActivityStateSchema = import_zod27.z.object({
1637
+ mealPlanId: MealPlanIdSchema,
1638
+ title: import_zod27.z.string().min(1),
1639
+ status: import_zod27.z.string().min(1),
1640
+ scheduledAt: ISODateTimeStringSchema.nullable(),
1641
+ restaurantName: import_zod27.z.string().nullable(),
1642
+ placeName: import_zod27.z.string().nullable(),
1643
+ deepLink: import_zod27.z.string().min(1),
1644
+ progressLabel: import_zod27.z.string().min(1),
1645
+ updatedAt: ISODateTimeStringSchema
1646
+ });
1647
+ var MealPlanLiveActivitySessionResponseSchema = import_zod27.z.object({
1648
+ sessionId: import_zod27.z.string().uuid(),
1649
+ mealPlanId: MealPlanIdSchema,
1650
+ memberId: import_zod27.z.number().int().positive(),
1651
+ platform: MealPlanLiveActivityPlatformSchema,
1652
+ devicePlatform: PushPlatformSchema,
1653
+ deviceId: import_zod27.z.string(),
1654
+ activityId: import_zod27.z.string(),
1655
+ status: MealPlanLiveActivitySessionStatusSchema,
1656
+ appVersion: import_zod27.z.string().nullable(),
1657
+ buildNumber: import_zod27.z.string().nullable(),
1658
+ lastEventKind: MealPlanNotificationKindSchema.nullable(),
1659
+ lastBehavior: MealPlanLiveActivityBehaviorSchema.nullable(),
1660
+ lastUpdateStatus: MealPlanLiveActivityUpdateStatusSchema.nullable(),
1661
+ lastError: import_zod27.z.string().nullable(),
1662
+ startedAt: ISODateTimeStringSchema,
1663
+ endedAt: ISODateTimeStringSchema.nullable(),
1664
+ updatedAt: ISODateTimeStringSchema
1665
+ });
1666
+ var MealPlanLiveActivitySessionListResponseSchema = import_zod27.z.object({
1667
+ mealPlanId: MealPlanIdSchema,
1668
+ state: MealPlanLiveActivityStateSchema,
1669
+ sessions: import_zod27.z.array(MealPlanLiveActivitySessionResponseSchema)
651
1670
  });
652
1671
 
653
1672
  // src/domain/common/contracts/endpoint.ts
654
- var import_zod19 = require("zod");
655
- var NoBodySchema = import_zod19.z.undefined();
656
- var NoQuerySchema = import_zod19.z.undefined();
657
- var NoParamsSchema = import_zod19.z.undefined();
1673
+ var import_zod28 = require("zod");
1674
+ var NoBodySchema = import_zod28.z.undefined();
1675
+ var NoQuerySchema = import_zod28.z.undefined();
1676
+ var NoParamsSchema = import_zod28.z.undefined();
658
1677
  var endpoint = (contract) => ({
659
1678
  method: contract.method,
660
1679
  path: contract.path,
@@ -665,23 +1684,40 @@ var endpoint = (contract) => ({
665
1684
  });
666
1685
 
667
1686
  // src/domain/common/contracts/api.ts
668
- var memberIdParam = import_zod20.z.object({ memberId: MemberIdSchema });
669
- var articleIdParam = import_zod20.z.object({ articleId: ArticleIdSchema });
670
- var commentIdParam = import_zod20.z.object({ commentId: CommentIdSchema });
671
- var recruitIdParam = import_zod20.z.object({ recruitId: RecruitIdSchema });
672
- var roomIdParam = import_zod20.z.object({ roomId: RoomIdSchema });
673
- var invitationIdParam = import_zod20.z.object({ invitationId: InvitationIdSchema });
674
- var notificationIdParam = import_zod20.z.object({ notificationId: import_zod20.z.string().min(1) });
675
- var planIdParam = import_zod20.z.object({ planId: PlanIdSchema });
676
- var couponIdParam = import_zod20.z.object({ couponId: CouponIdSchema });
677
- var friendRequestIdParam = import_zod20.z.object({ requestId: FriendRequestIdSchema });
1687
+ var memberIdParam = import_zod29.z.object({ memberId: MemberIdSchema });
1688
+ var articleIdParam = import_zod29.z.object({ articleId: ArticleIdSchema });
1689
+ var commentIdParam = import_zod29.z.object({ commentId: CommentIdSchema });
1690
+ var mealPlanIdParam = import_zod29.z.object({ mealPlanId: MealPlanIdSchema });
1691
+ var mealPlanInviteIdParam = import_zod29.z.object({ inviteId: MealPlanInviteIdSchema });
1692
+ var mealPlanJoinRequestIdParam = import_zod29.z.object({ requestId: MealPlanJoinRequestIdSchema });
1693
+ var mealPlanDecisionStageIdParam = mealPlanIdParam.extend({
1694
+ stageId: MealPlanDecisionStageIdSchema
1695
+ });
1696
+ var mealPlanChangeRequestIdParam = mealPlanIdParam.extend({
1697
+ requestId: MealPlanChangeRequestIdSchema
1698
+ });
1699
+ var mealPlanDecisionTaskKeyParam = mealPlanIdParam.extend({
1700
+ taskKey: MealPlanDecisionTaskKeySchema
1701
+ });
1702
+ var mealPlanDecisionSnapshotIdParam = mealPlanIdParam.extend({
1703
+ snapshotId: import_zod29.z.string().uuid()
1704
+ });
1705
+ var mealPlanParticipantIdParam = mealPlanIdParam.extend({
1706
+ participantId: import_zod29.z.string().uuid()
1707
+ });
1708
+ var mealPlanShareTokenParam = import_zod29.z.object({ token: MealPlanShareLinkTokenSchema });
1709
+ var notificationIdParam = import_zod29.z.object({ notificationId: import_zod29.z.string().min(1) });
1710
+ var couponIdParam = import_zod29.z.object({ couponId: CouponIdSchema });
1711
+ var mealGroupIdParam = import_zod29.z.object({ mealGroupId: MealGroupIdSchema });
1712
+ var mealGroupMemberIdParam = mealGroupIdParam.extend({ memberId: MemberIdSchema });
1713
+ var friendRequestIdParam = import_zod29.z.object({ requestId: FriendRequestIdSchema });
1714
+ var sseTokenQuery = import_zod29.z.object({ token: import_zod29.z.string().min(1) });
678
1715
  var apiContract = {
679
1716
  auth: {
680
1717
  signup: endpoint({ method: "POST", path: "/auth/signup", body: SignupRequestSchema, response: SignupResponseSchema }),
681
1718
  login: endpoint({ method: "POST", path: "/auth/login", body: LoginRequestSchema, response: TokenResponseSchema }),
682
1719
  refresh: endpoint({ method: "POST", path: "/auth/refresh", response: TokenResponseSchema }),
683
1720
  logout: endpoint({ method: "POST", path: "/auth/logout", response: NoContentSchema })
684
- // test: endpoint({method: "GET", path: "/auth/test", response: TokenResponseSchema}) TODO: Dev에서만 작동하도록 백엔드에서 수정해야함
685
1721
  },
686
1722
  members: {
687
1723
  me: endpoint({ method: "GET", path: "/members/me", response: MemberResponseSchema }),
@@ -690,7 +1726,11 @@ var apiContract = {
690
1726
  memberProfile: endpoint({ method: "GET", path: "/members/:memberId/profile", pathParams: memberIdParam, response: ProfileDetailResponseSchema }),
691
1727
  presignProfileImage: endpoint({ method: "POST", path: "/uploads/presign-profile", body: UploadProfileImageRequestSchema, response: UploadProfileImageResponseSchema }),
692
1728
  createProfile: endpoint({ method: "POST", path: "/members/onboarding", body: CreateProfileRequestSchema, response: NoContentSchema }),
693
- updateProfile: endpoint({ method: "PATCH", path: "/members/me/profile", body: UpdateProfileRequestSchema, response: NoContentSchema })
1729
+ createProfileAlias: endpoint({ method: "POST", path: "/onboarding", body: CreateProfileRequestSchema, response: NoContentSchema }),
1730
+ updateProfile: endpoint({ method: "PATCH", path: "/members/me/profile", body: UpdateProfileRequestSchema, response: NoContentSchema }),
1731
+ locationSettings: endpoint({ method: "GET", path: "/members/me/location-settings", response: MemberLocationSettingsResponseSchema }),
1732
+ updateLocationConsent: endpoint({ method: "PATCH", path: "/members/me/location-consent", body: UpdateMemberLocationConsentRequestSchema, response: MemberLocationSettingsResponseSchema }),
1733
+ updateLocation: endpoint({ method: "PATCH", path: "/members/me/location", body: UpdateMemberLocationRequestSchema, response: MemberLocationSettingsResponseSchema })
694
1734
  },
695
1735
  preferences: {
696
1736
  my: endpoint({ method: "GET", path: "/preferences/me", response: MemberFoodPreferenceSchema }),
@@ -699,7 +1739,7 @@ var apiContract = {
699
1739
  mealStatus: {
700
1740
  my: endpoint({ method: "GET", path: "/members/me/meal-status", response: MealStatusResponseSchema }),
701
1741
  updateMealStatus: endpoint({ method: "PATCH", path: "/members/me/meal-status", body: UpdateMealStatusRequestSchema, response: NoContentSchema }),
702
- friendMealStatus: endpoint({ method: "GET", path: "/friends/me/meals", query: FriendMealQuerySchema, response: import_zod20.z.array(FriendMealItemResponseSchema) })
1742
+ friendMealStatus: endpoint({ method: "GET", path: "/friends/me/meals", query: FriendMealQuerySchema, response: import_zod29.z.array(FriendMealItemResponseSchema) })
703
1743
  },
704
1744
  articles: {
705
1745
  list: endpoint({ method: "GET", path: "/articles/home", query: ArticleListQuerySchema, response: PageArticleSummaryResponseSchema }),
@@ -712,32 +1752,64 @@ var apiContract = {
712
1752
  presignArticleImage: endpoint({ method: "POST", path: "/uploads/presign-article", body: UploadArticleImageRequestSchema, response: UploadArticleImageResponseSchema }),
713
1753
  delete: endpoint({ method: "DELETE", path: "/articles/:articleId", pathParams: articleIdParam, response: NoContentSchema }),
714
1754
  deleteComment: endpoint({ method: "DELETE", path: "/articles/comments/:commentId", pathParams: commentIdParam, response: NoContentSchema })
715
- // TODO: 게시물 수정 기능
716
- },
717
- recruits: {
718
- list: endpoint({ method: "GET", path: "/recruits", query: RecruitListQuerySchema, response: RecruitListResponseSchema }),
719
- create: endpoint({ method: "POST", path: "/recruits", body: CreateRecruitRequestSchema, response: CreateRecruitResponseSchema }),
720
- join: endpoint({ method: "POST", path: "/recruits/:recruitId/join", pathParams: recruitIdParam, response: NoContentSchema }),
721
- close: endpoint({ method: "POST", path: "/recruits/:recruitId/close", pathParams: recruitIdParam, response: NoContentSchema })
722
1755
  },
723
- invitations: {
724
- list: endpoint({ method: "GET", path: "/invitations", response: import_zod20.z.array(InvitationListItemResponseSchema) }),
725
- // TODO: Invitation Response 정하기 detail: endpoint({ method: "GET", path: "/invitations/:invitationId", pathParams: invitationIdParam, response: InvitationItemDetailResponseSchema }),
726
- send: endpoint({ method: "POST", path: "/invitations/send", body: CreateInvitationRequestSchema, response: SendInvitationResponseSchema }),
727
- accept: endpoint({ method: "POST", path: "/invitations/:invitationId/accept", pathParams: invitationIdParam, response: AcceptInvitationResponseSchema }),
728
- reject: endpoint({ method: "POST", path: "/invitations/:invitationId/reject", pathParams: invitationIdParam, response: NoContentSchema })
1756
+ mealPlans: {
1757
+ create: endpoint({ method: "POST", path: "/meal-plans", body: CreateMealPlanRequestSchema, response: CreateMealPlanResponseSchema }),
1758
+ my: endpoint({ method: "GET", path: "/meal-plans/me", response: MyMealPlanListResponseSchema }),
1759
+ homeDashboard: endpoint({ method: "GET", path: "/meal-plans/home-dashboard", response: HomeMealPlanDashboardResponseSchema }),
1760
+ map: endpoint({ method: "GET", path: "/meal-plans/map", query: MealMapQuerySchema, response: MealMapResponseSchema }),
1761
+ detail: endpoint({ method: "GET", path: "/meal-plans/:mealPlanId", pathParams: mealPlanIdParam, response: MealPlanResponseSchema }),
1762
+ chatMessages: endpoint({ method: "GET", path: "/meal-plans/:mealPlanId/chat/messages", pathParams: mealPlanIdParam, response: MealPlanChatMessageListResponseSchema }),
1763
+ updateContext: endpoint({ method: "PATCH", path: "/meal-plans/:mealPlanId/context", pathParams: mealPlanIdParam, body: UpdateMealPlanContextRequestSchema, response: MealPlanResponseSchema }),
1764
+ complete: endpoint({ method: "POST", path: "/meal-plans/:mealPlanId/complete", pathParams: mealPlanIdParam, response: MealPlanResponseSchema }),
1765
+ cancel: endpoint({ method: "POST", path: "/meal-plans/:mealPlanId/cancel", pathParams: mealPlanIdParam, response: MealPlanResponseSchema }),
1766
+ removeParticipant: endpoint({ method: "POST", path: "/meal-plans/:mealPlanId/participants/:participantId/remove", pathParams: mealPlanParticipantIdParam, response: MealPlanResponseSchema }),
1767
+ recorded: endpoint({ method: "POST", path: "/meal-plans/:mealPlanId/recorded", pathParams: mealPlanIdParam, response: MealPlanResponseSchema }),
1768
+ invite: endpoint({ method: "POST", path: "/meal-plans/:mealPlanId/invites", pathParams: mealPlanIdParam, body: CreateMealPlanInviteRequestSchema, response: SendMealPlanInviteResponseSchema }),
1769
+ receivedInvites: endpoint({ method: "GET", path: "/meal-plans/invites/received", response: MealPlanInviteListResponseSchema }),
1770
+ sentInvites: endpoint({ method: "GET", path: "/meal-plans/invites/sent", response: MealPlanInviteListResponseSchema }),
1771
+ acceptInvite: endpoint({ method: "POST", path: "/meal-plans/invites/:inviteId/accept", pathParams: mealPlanInviteIdParam, response: MealPlanResponseSchema }),
1772
+ declineInvite: endpoint({ method: "POST", path: "/meal-plans/invites/:inviteId/decline", pathParams: mealPlanInviteIdParam, response: NoContentSchema }),
1773
+ createShareLink: endpoint({ method: "POST", path: "/meal-plans/:mealPlanId/share-links", pathParams: mealPlanIdParam, body: CreateMealPlanShareLinkRequestSchema, response: MealPlanShareLinkSummarySchema }),
1774
+ sharePreview: endpoint({ method: "GET", path: "/meal-plan-links/:token", pathParams: mealPlanShareTokenParam, response: MealPlanSharePreviewResponseSchema }),
1775
+ joinGuest: endpoint({ method: "POST", path: "/meal-plan-links/:token/join", pathParams: mealPlanShareTokenParam, body: JoinMealPlanGuestRequestSchema, response: JoinMealPlanGuestResponseSchema }),
1776
+ guestSession: endpoint({ method: "GET", path: "/meal-plan-links/:token/session", pathParams: mealPlanShareTokenParam, query: MealPlanGuestSessionQuerySchema, response: MealPlanGuestSessionResponseSchema }),
1777
+ guestChatMessages: endpoint({ method: "GET", path: "/meal-plan-links/:token/chat/messages", pathParams: mealPlanShareTokenParam, query: MealPlanGuestSessionQuerySchema, response: MealPlanChatMessageListResponseSchema }),
1778
+ exposeNearbyFriends: endpoint({ method: "POST", path: "/meal-plans/:mealPlanId/nearby-friends/expose", pathParams: mealPlanIdParam, body: ExposeMealPlanToNearbyFriendsRequestSchema, response: ExposeMealPlanToNearbyFriendsResponseSchema }),
1779
+ closeNearbyFriends: endpoint({ method: "DELETE", path: "/meal-plans/:mealPlanId/nearby-friends/expose", pathParams: mealPlanIdParam, response: NoContentSchema }),
1780
+ nearbyFriendExposureEligibility: endpoint({ method: "GET", path: "/meal-plans/nearby-friends/eligibility", response: NearbyFriendExposureEligibilitySchema }),
1781
+ nearbyFriends: endpoint({ method: "GET", path: "/meal-plans/nearby-friends", response: import_zod29.z.array(NearbyFriendMealPlanSummarySchema) }),
1782
+ requestJoin: endpoint({ method: "POST", path: "/meal-plans/:mealPlanId/join-requests", pathParams: mealPlanIdParam, body: CreateMealPlanJoinRequestSchema, response: CreatedEntityIdResponseSchema }),
1783
+ acceptJoinRequest: endpoint({ method: "POST", path: "/meal-plans/join-requests/:requestId/accept", pathParams: mealPlanJoinRequestIdParam, response: MealPlanResponseSchema }),
1784
+ rejectJoinRequest: endpoint({ method: "POST", path: "/meal-plans/join-requests/:requestId/reject", pathParams: mealPlanJoinRequestIdParam, response: NoContentSchema }),
1785
+ vote: endpoint({ method: "POST", path: "/meal-plans/:mealPlanId/stages/:stageId/votes", pathParams: mealPlanDecisionStageIdParam, body: CreateMealPlanVoteRequestSchema, response: MealPlanResponseSchema }),
1786
+ completeStage: endpoint({ method: "POST", path: "/meal-plans/:mealPlanId/stages/:stageId/complete", pathParams: mealPlanDecisionStageIdParam, body: CompleteMealPlanDecisionStageRequestSchema, response: MealPlanResponseSchema }),
1787
+ decisionProgress: endpoint({ method: "GET", path: "/meal-plans/:mealPlanId/decision-progress", pathParams: mealPlanIdParam, response: MealPlanDecisionProgressSchema }),
1788
+ reopenDecisionTask: endpoint({ method: "POST", path: "/meal-plans/:mealPlanId/decision-tasks/:taskKey/reopen", pathParams: mealPlanDecisionTaskKeyParam, body: ReopenMealPlanDecisionTaskRequestSchema, response: MealPlanResponseSchema }),
1789
+ confirmDecisionSnapshot: endpoint({ method: "POST", path: "/meal-plans/:mealPlanId/decision-snapshots/:snapshotId/confirm", pathParams: mealPlanDecisionSnapshotIdParam, body: ConfirmMealPlanDecisionSnapshotRequestSchema, response: MealPlanResponseSchema }),
1790
+ ready: endpoint({ method: "POST", path: "/meal-plans/:mealPlanId/ready", pathParams: mealPlanIdParam, response: MealPlanResponseSchema }),
1791
+ unready: endpoint({ method: "POST", path: "/meal-plans/:mealPlanId/unready", pathParams: mealPlanIdParam, response: MealPlanResponseSchema }),
1792
+ createChangeRequest: endpoint({ method: "POST", path: "/meal-plans/:mealPlanId/change-requests", pathParams: mealPlanIdParam, body: CreateMealPlanChangeRequestSchema, response: CreatedEntityIdResponseSchema }),
1793
+ acceptChangeRequest: endpoint({ method: "POST", path: "/meal-plans/:mealPlanId/change-requests/:requestId/accept", pathParams: mealPlanChangeRequestIdParam, response: MealPlanResponseSchema }),
1794
+ confirm: endpoint({ method: "POST", path: "/meal-plans/:mealPlanId/confirm", pathParams: mealPlanIdParam, response: MealPlanResponseSchema })
729
1795
  },
730
- plans: {
731
- list: endpoint({ method: "GET", path: "/plans", query: PlanListQuerySchema, response: import_zod20.z.array(PlanResponseSchema) }),
732
- detail: endpoint({ method: "GET", path: "/plans/:planId", pathParams: planIdParam, response: PlanResponseSchema }),
733
- cancel: endpoint({ method: "PATCH", path: "/plans/:planId/cancel", pathParams: planIdParam, response: NoContentSchema })
1796
+ mealGroups: {
1797
+ create: endpoint({ method: "POST", path: "/meal-groups", body: CreateMealGroupRequestSchema, response: MealGroupResponseSchema }),
1798
+ list: endpoint({ method: "GET", path: "/meal-groups", response: import_zod29.z.array(MealGroupResponseSchema) }),
1799
+ detail: endpoint({ method: "GET", path: "/meal-groups/:mealGroupId", pathParams: mealGroupIdParam, response: MealGroupResponseSchema }),
1800
+ startMealPlan: endpoint({ method: "POST", path: "/meal-groups/:mealGroupId/meal-plans", pathParams: mealGroupIdParam, body: StartMealPlanFromGroupRequestSchema, response: CreateMealPlanResponseSchema }),
1801
+ history: endpoint({ method: "GET", path: "/meal-groups/:mealGroupId/history", pathParams: mealGroupIdParam, response: MealGroupHistoryResponseSchema }),
1802
+ preferences: endpoint({ method: "GET", path: "/meal-groups/:mealGroupId/preferences", pathParams: mealGroupIdParam, response: MealGroupPreferenceSummarySchema }),
1803
+ addMember: endpoint({ method: "POST", path: "/meal-groups/:mealGroupId/members", pathParams: mealGroupIdParam, body: AddMealGroupMemberRequestSchema, response: MealGroupResponseSchema }),
1804
+ updateMemberRole: endpoint({ method: "PATCH", path: "/meal-groups/:mealGroupId/members/:memberId/role", pathParams: mealGroupMemberIdParam, body: UpdateMealGroupMemberRoleRequestSchema, response: MealGroupResponseSchema }),
1805
+ removeMember: endpoint({ method: "DELETE", path: "/meal-groups/:mealGroupId/members/:memberId", pathParams: mealGroupMemberIdParam, response: MealGroupResponseSchema })
734
1806
  },
735
1807
  friends: {
736
- list: endpoint({ method: "GET", path: "/friends", response: import_zod20.z.array(FriendListItemResponseSchema) }),
737
- blockList: endpoint({ method: "GET", path: "/friends/blocks", response: import_zod20.z.array(FriendBlockItemResponseSchema) }),
1808
+ list: endpoint({ method: "GET", path: "/friends", response: import_zod29.z.array(FriendListItemResponseSchema) }),
1809
+ blockList: endpoint({ method: "GET", path: "/friends/blocks", response: import_zod29.z.array(FriendBlockItemResponseSchema) }),
738
1810
  search: endpoint({ method: "GET", path: "/friends/search", query: MemberSearchQuerySchema, response: MemberSerachResponseSchema }),
739
- incomingRequest: endpoint({ method: "GET", path: "/friends/requests/incoming", response: import_zod20.z.array(FriendRequestItemResponseSchema) }),
740
- outgoingRequest: endpoint({ method: "GET", path: "/friends/requests/outgoing", response: import_zod20.z.array(FriendRequestItemResponseSchema) }),
1811
+ incomingRequest: endpoint({ method: "GET", path: "/friends/requests/incoming", response: import_zod29.z.array(FriendRequestItemResponseSchema) }),
1812
+ outgoingRequest: endpoint({ method: "GET", path: "/friends/requests/outgoing", response: import_zod29.z.array(FriendRequestItemResponseSchema) }),
741
1813
  sendRequest: endpoint({ method: "POST", path: "/friends/requests/:memberId", pathParams: memberIdParam, response: NoContentSchema }),
742
1814
  acceptRequest: endpoint({ method: "POST", path: "/friends/requests/:requestId/accept", pathParams: friendRequestIdParam, response: NoContentSchema }),
743
1815
  rejectRequest: endpoint({ method: "POST", path: "/friends/requests/:requestId/reject", pathParams: friendRequestIdParam, response: NoContentSchema }),
@@ -747,7 +1819,7 @@ var apiContract = {
747
1819
  unfriend: endpoint({ method: "DELETE", path: "/friends/:memberId", pathParams: memberIdParam, response: NoContentSchema })
748
1820
  },
749
1821
  coupons: {
750
- list: endpoint({ method: "GET", path: "/coupons", response: import_zod20.z.array(CouponResponseSchema) }),
1822
+ list: endpoint({ method: "GET", path: "/coupons", response: import_zod29.z.array(CouponResponseSchema) }),
751
1823
  use: endpoint({ method: "POST", path: "/coupons/:couponId/use", pathParams: couponIdParam, response: NoContentSchema })
752
1824
  },
753
1825
  challenges: {
@@ -755,23 +1827,36 @@ var apiContract = {
755
1827
  claimReward: endpoint({ method: "POST", path: "/challenges/rewards", body: ClaimChallengeRewardRequestSchema, response: NoContentSchema })
756
1828
  },
757
1829
  referrals: {
758
- list: endpoint({ method: "GET", path: "/referrals", response: import_zod20.z.array(ReferralItemResponseSchema) }),
1830
+ list: endpoint({ method: "GET", path: "/referrals", response: import_zod29.z.array(ReferralItemResponseSchema) }),
759
1831
  create: endpoint({ method: "POST", path: "/referrals", response: ReferralCreateResponseSchema }),
760
1832
  redeem: endpoint({ method: "POST", path: "/referrals/redeem", body: RedeemReferralRequestSchema, response: NoContentSchema })
761
1833
  },
762
1834
  notifications: {
763
- list: endpoint({ method: "GET", path: "/notifications", response: import_zod20.z.array(MatchingNotificationSchema) }),
764
- markRead: endpoint({ method: "PATCH", path: "/notifications/:notificationId/read", pathParams: notificationIdParam, response: MatchingNotificationSchema }),
1835
+ list: endpoint({ method: "GET", path: "/notifications", response: import_zod29.z.array(MealPlanNotificationSchema) }),
1836
+ markRead: endpoint({ method: "PATCH", path: "/notifications/:notificationId/read", pathParams: notificationIdParam, response: MealPlanNotificationSchema }),
765
1837
  delete: endpoint({ method: "DELETE", path: "/notifications/:notificationId", pathParams: notificationIdParam, response: NoContentSchema })
766
1838
  },
767
- room: {
768
- access: endpoint({ method: "GET", path: "/rooms/:roomId/access", pathParams: roomIdParam, response: RoomAccessResponseSchema })
1839
+ pushTokens: {
1840
+ list: endpoint({ method: "GET", path: "/push-tokens", response: import_zod29.z.array(PushTokenResponseSchema) }),
1841
+ register: endpoint({ method: "POST", path: "/push-tokens", body: RegisterPushTokenRequestSchema, response: PushTokenResponseSchema }),
1842
+ revoke: endpoint({ method: "POST", path: "/push-tokens/revoke", body: RevokePushTokenRequestSchema, response: NoContentSchema })
1843
+ },
1844
+ liveActivities: {
1845
+ listMealPlanSessions: endpoint({ method: "GET", path: "/meal-plans/:mealPlanId/live-activity", pathParams: mealPlanIdParam, response: MealPlanLiveActivitySessionListResponseSchema }),
1846
+ registerMealPlanSession: endpoint({ method: "POST", path: "/meal-plans/:mealPlanId/live-activity/sessions", pathParams: mealPlanIdParam, body: RegisterMealPlanLiveActivitySessionRequestSchema, response: MealPlanLiveActivitySessionResponseSchema }),
1847
+ endMealPlanSessions: endpoint({ method: "POST", path: "/meal-plans/:mealPlanId/live-activity/end", pathParams: mealPlanIdParam, body: EndMealPlanLiveActivitySessionRequestSchema, response: NoContentSchema })
1848
+ },
1849
+ sse: {
1850
+ notifications: endpoint({ method: "GET", path: "/sse/notifications", query: sseTokenQuery, response: import_zod29.z.any() })
769
1851
  },
770
1852
  health: {
771
- healthCheck: endpoint({ method: "GET", path: "/", response: import_zod20.z.string() })
1853
+ healthCheck: endpoint({ method: "GET", path: "/", response: import_zod29.z.string() })
772
1854
  }
773
1855
  };
774
1856
 
1857
+ // src/domain/common/contracts/cache-invalidation.ts
1858
+ var CACHE_INVALIDATION_SSE_EVENT = "cache-invalidate";
1859
+
775
1860
  // src/domain/common/contracts/envelope.ts
776
1861
  var makeApiResponseSchema = ApiResponseSchema;
777
1862
  var makeApiSuccessSchema = ApiSuccessSchema;
@@ -779,12 +1864,18 @@ var makeApiSuccessSchema = ApiSuccessSchema;
779
1864
  // src/domain/common/contracts/id.ts
780
1865
  var toMemberId = (value) => MemberIdSchema.parse(value);
781
1866
  var toArticleId = (value) => ArticleIdSchema.parse(value);
782
- var toRecruitId = (value) => RecruitIdSchema.parse(value);
783
- var toInvitationId = (value) => InvitationIdSchema.parse(value);
784
- var toRoomId = (value) => RoomIdSchema.parse(value);
1867
+ var toMealPlanId = (value) => MealPlanIdSchema.parse(value);
1868
+ var toMealPlanInviteId = (value) => MealPlanInviteIdSchema.parse(value);
1869
+ var toMealPlanJoinRequestId = (value) => MealPlanJoinRequestIdSchema.parse(value);
1870
+ var toMealPlanNearbyFriendExposureBatchId = (value) => MealPlanNearbyFriendExposureBatchIdSchema.parse(value);
1871
+ var toMealPlanChangeRequestId = (value) => MealPlanChangeRequestIdSchema.parse(value);
1872
+ var toMealPlanShareLinkId = (value) => MealPlanShareLinkIdSchema.parse(value);
1873
+ var toMealPlanShareLinkToken = (value) => MealPlanShareLinkTokenSchema.parse(value);
1874
+ var toMealPlanChatRoomId = (value) => MealPlanChatRoomIdSchema.parse(value);
1875
+ var toMealPlanChatMessageId = (value) => MealPlanChatMessageIdSchema.parse(value);
1876
+ var toMealGroupId = (value) => MealGroupIdSchema.parse(value);
785
1877
  var toRestaurantId = (value) => RestaurantIdSchema.parse(value);
786
1878
  var toCommentId = (value) => CommentIdSchema.parse(value);
787
- var toPlanId = (value) => PlanIdSchema.parse(value);
788
1879
  var toCouponId = (value) => CouponIdSchema.parse(value);
789
1880
  var toSubscriptionId = (value) => SubscriptionIdSchema.parse(value);
790
1881
  var toFriendRequestId = (value) => FriendRequestIdSchema.parse(value);
@@ -795,6 +1886,11 @@ var toReferralCode = (value) => ReferralCodeSchema.parse(value);
795
1886
  ApiResponseSchema,
796
1887
  ApiSuccessSchema,
797
1888
  ArticleIdSchema,
1889
+ CACHE_INVALIDATION_SSE_EVENT,
1890
+ CacheInvalidationActionSchema,
1891
+ CacheInvalidationEntitySchema,
1892
+ CacheInvalidationEventSchema,
1893
+ CacheInvalidationKeySchema,
798
1894
  CommentIdSchema,
799
1895
  CouponIdSchema,
800
1896
  CreatedEntityIdResponseSchema,
@@ -804,7 +1900,16 @@ var toReferralCode = (value) => ReferralCodeSchema.parse(value);
804
1900
  FriendRequestIdSchema,
805
1901
  ISODateStringSchema,
806
1902
  ISODateTimeStringSchema,
807
- InvitationIdSchema,
1903
+ MealGroupIdSchema,
1904
+ MealPlanChangeRequestIdSchema,
1905
+ MealPlanChatMessageIdSchema,
1906
+ MealPlanChatRoomIdSchema,
1907
+ MealPlanIdSchema,
1908
+ MealPlanInviteIdSchema,
1909
+ MealPlanJoinRequestIdSchema,
1910
+ MealPlanNearbyFriendExposureBatchIdSchema,
1911
+ MealPlanShareLinkIdSchema,
1912
+ MealPlanShareLinkTokenSchema,
808
1913
  MemberIdSchema,
809
1914
  NoBodySchema,
810
1915
  NoContentSchema,
@@ -814,12 +1919,9 @@ var toReferralCode = (value) => ReferralCodeSchema.parse(value);
814
1919
  PageMetaSchema,
815
1920
  PageQuerySchema,
816
1921
  PageResponseSchema,
817
- PlanIdSchema,
818
1922
  PositiveIntIdSchema,
819
- RecruitIdSchema,
820
1923
  ReferralCodeSchema,
821
1924
  RestaurantIdSchema,
822
- RoomIdSchema,
823
1925
  SortDirectionSchema,
824
1926
  SubscriptionIdSchema,
825
1927
  TimeHHmmStringSchema,
@@ -832,12 +1934,18 @@ var toReferralCode = (value) => ReferralCodeSchema.parse(value);
832
1934
  toCommentId,
833
1935
  toCouponId,
834
1936
  toFriendRequestId,
835
- toInvitationId,
1937
+ toMealGroupId,
1938
+ toMealPlanChangeRequestId,
1939
+ toMealPlanChatMessageId,
1940
+ toMealPlanChatRoomId,
1941
+ toMealPlanId,
1942
+ toMealPlanInviteId,
1943
+ toMealPlanJoinRequestId,
1944
+ toMealPlanNearbyFriendExposureBatchId,
1945
+ toMealPlanShareLinkId,
1946
+ toMealPlanShareLinkToken,
836
1947
  toMemberId,
837
- toPlanId,
838
- toRecruitId,
839
1948
  toReferralCode,
840
1949
  toRestaurantId,
841
- toRoomId,
842
1950
  toSubscriptionId
843
1951
  });