@sunsteel/contracts 0.50.0 → 0.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -22,6 +22,7 @@ var index_exports = {};
22
22
  __export(index_exports, {
23
23
  ACHIEVEMENT_CATEGORIES: () => ACHIEVEMENT_CATEGORIES,
24
24
  ACHIEVEMENT_DEFINITIONS: () => ACHIEVEMENT_DEFINITIONS,
25
+ BLOCKED_MEMBERS_MAX: () => BLOCKED_MEMBERS_MAX,
25
26
  CLONE_ROUTINE_REFUSALS: () => CLONE_ROUTINE_REFUSALS,
26
27
  COMEBACK_MIN_INACTIVE_DAYS: () => COMEBACK_MIN_INACTIVE_DAYS,
27
28
  COMEBACK_RECOGNITION_LIMIT: () => COMEBACK_RECOGNITION_LIMIT,
@@ -68,6 +69,10 @@ __export(index_exports, {
68
69
  RELATIONSHIP_LIST_KINDS: () => RELATIONSHIP_LIST_KINDS,
69
70
  RELATIONSHIP_LIST_MAX_LIMIT: () => RELATIONSHIP_LIST_MAX_LIMIT,
70
71
  RENAISSANCE_RANK_DEFINITIONS: () => RENAISSANCE_RANK_DEFINITIONS,
72
+ REPORTS_PER_DAY_MAX: () => REPORTS_PER_DAY_MAX,
73
+ REPORT_DETAILS_MAX_LENGTH: () => REPORT_DETAILS_MAX_LENGTH,
74
+ REPORT_REASONS: () => REPORT_REASONS,
75
+ REPORT_SUBJECT_KINDS: () => REPORT_SUBJECT_KINDS,
71
76
  REP_TYPES: () => REP_TYPES,
72
77
  RESERVED_USERNAMES: () => RESERVED_USERNAMES,
73
78
  REST_ALERT_MAX_LEAD_SECONDS: () => REST_ALERT_MAX_LEAD_SECONDS,
@@ -75,6 +80,11 @@ __export(index_exports, {
75
80
  REST_ALERT_REFUSALS: () => REST_ALERT_REFUSALS,
76
81
  ROUTINE_DAYS_MAX: () => ROUTINE_DAYS_MAX,
77
82
  ROUTINE_DAY_NAME_MAX: () => ROUTINE_DAY_NAME_MAX,
83
+ ROUTINE_DISCOVERY_DEFAULT_LIMIT: () => ROUTINE_DISCOVERY_DEFAULT_LIMIT,
84
+ ROUTINE_DISCOVERY_MAX_LIMIT: () => ROUTINE_DISCOVERY_MAX_LIMIT,
85
+ ROUTINE_DISCOVERY_SCAN_LIMIT: () => ROUTINE_DISCOVERY_SCAN_LIMIT,
86
+ ROUTINE_DURATION_BANDS: () => ROUTINE_DURATION_BANDS,
87
+ ROUTINE_DURATION_BAND_MAX_MINUTES: () => ROUTINE_DURATION_BAND_MAX_MINUTES,
78
88
  ROUTINE_SCHEDULE_MODES: () => ROUTINE_SCHEDULE_MODES,
79
89
  ROUTINE_SHARE_MAX_ACTIVE_LINKS: () => ROUTINE_SHARE_MAX_ACTIVE_LINKS,
80
90
  ROUTINE_VERSIONS_MAX: () => ROUTINE_VERSIONS_MAX,
@@ -238,6 +248,20 @@ var FOLLOW_SUGGESTION_REASONS = [
238
248
  "FOLLOWED_BY_PEOPLE_YOU_FOLLOW"
239
249
  ];
240
250
 
251
+ // src/moderation.ts
252
+ var BLOCKED_MEMBERS_MAX = 500;
253
+ var REPORT_SUBJECT_KINDS = ["MEMBER", "ROUTINE", "SESSION"];
254
+ var REPORT_REASONS = [
255
+ "SPAM",
256
+ "HARASSMENT",
257
+ "IMPERSONATION",
258
+ "UNSAFE_ADVICE",
259
+ "SEXUAL_CONTENT",
260
+ "OTHER"
261
+ ];
262
+ var REPORT_DETAILS_MAX_LENGTH = 500;
263
+ var REPORTS_PER_DAY_MAX = 20;
264
+
241
265
  // src/exercise.ts
242
266
  var MOVEMENT_PATTERNS = [
243
267
  "HORIZONTAL_PUSH",
@@ -440,6 +464,13 @@ var CLONE_ROUTINE_REFUSALS = {
440
464
  UNKNOWN_EXERCISE: "UNKNOWN_EXERCISE"
441
465
  };
442
466
 
467
+ // src/routine-discovery.ts
468
+ var ROUTINE_DURATION_BANDS = ["SHORT", "MEDIUM", "LONG"];
469
+ var ROUTINE_DURATION_BAND_MAX_MINUTES = { SHORT: 45, MEDIUM: 75 };
470
+ var ROUTINE_DISCOVERY_DEFAULT_LIMIT = 20;
471
+ var ROUTINE_DISCOVERY_MAX_LIMIT = 50;
472
+ var ROUTINE_DISCOVERY_SCAN_LIMIT = 500;
473
+
443
474
  // src/schedule.ts
444
475
  var SCHEDULE_OVERRIDE_KINDS = ["MOVE", "SKIP"];
445
476
  var SCHEDULE_MOVE_MAX_DAYS = 6;
@@ -532,6 +563,7 @@ var STREAK_MAX_GAP_DAYS = 3;
532
563
  0 && (module.exports = {
533
564
  ACHIEVEMENT_CATEGORIES,
534
565
  ACHIEVEMENT_DEFINITIONS,
566
+ BLOCKED_MEMBERS_MAX,
535
567
  CLONE_ROUTINE_REFUSALS,
536
568
  COMEBACK_MIN_INACTIVE_DAYS,
537
569
  COMEBACK_RECOGNITION_LIMIT,
@@ -578,6 +610,10 @@ var STREAK_MAX_GAP_DAYS = 3;
578
610
  RELATIONSHIP_LIST_KINDS,
579
611
  RELATIONSHIP_LIST_MAX_LIMIT,
580
612
  RENAISSANCE_RANK_DEFINITIONS,
613
+ REPORTS_PER_DAY_MAX,
614
+ REPORT_DETAILS_MAX_LENGTH,
615
+ REPORT_REASONS,
616
+ REPORT_SUBJECT_KINDS,
581
617
  REP_TYPES,
582
618
  RESERVED_USERNAMES,
583
619
  REST_ALERT_MAX_LEAD_SECONDS,
@@ -585,6 +621,11 @@ var STREAK_MAX_GAP_DAYS = 3;
585
621
  REST_ALERT_REFUSALS,
586
622
  ROUTINE_DAYS_MAX,
587
623
  ROUTINE_DAY_NAME_MAX,
624
+ ROUTINE_DISCOVERY_DEFAULT_LIMIT,
625
+ ROUTINE_DISCOVERY_MAX_LIMIT,
626
+ ROUTINE_DISCOVERY_SCAN_LIMIT,
627
+ ROUTINE_DURATION_BANDS,
628
+ ROUTINE_DURATION_BAND_MAX_MINUTES,
588
629
  ROUTINE_SCHEDULE_MODES,
589
630
  ROUTINE_SHARE_MAX_ACTIVE_LINKS,
590
631
  ROUTINE_VERSIONS_MAX,
package/dist/index.d.cts CHANGED
@@ -812,6 +812,62 @@ interface AchievementsResponse {
812
812
  comeback: ComebackRecognitionSummary | null;
813
813
  }
814
814
 
815
+ /**
816
+ * A block is **symmetric**. It removes any follow in both directions and
817
+ * prevents a new one either way; neither account appears in the other's
818
+ * search, suggestions, relationship lists or profile reads. Hiding only the
819
+ * blocked account from the blocker would leave the blocker visible to them,
820
+ * which is the half nobody asks for.
821
+ *
822
+ * It is **not retroactive over what was already handed out**: a `SOC-07`
823
+ * session link and a `ROUT-04` routine link carry no viewer identity, so a
824
+ * block cannot withdraw one. Revoking the link is that control.
825
+ */
826
+ interface BlockedMember {
827
+ /** The blocked account's identity, as a search result carries it. */
828
+ member: UserSearchResponse;
829
+ blockedAt: IsoDateString;
830
+ }
831
+ /** Stable successful response of GET /users/me/blocks. */
832
+ interface BlockedMembersResponse {
833
+ blocks: BlockedMember[];
834
+ }
835
+ /** One account blocks at most this many others. */
836
+ declare const BLOCKED_MEMBERS_MAX = 500;
837
+ /** What a viewer may do about one profile, so the UI never offers a no-op. */
838
+ interface MemberModerationState {
839
+ /** The viewer has blocked this member. */
840
+ isBlocked: boolean;
841
+ }
842
+ declare const REPORT_SUBJECT_KINDS: readonly ["MEMBER", "ROUTINE", "SESSION"];
843
+ type ReportSubjectKind = (typeof REPORT_SUBJECT_KINDS)[number];
844
+ /**
845
+ * Why something was reported. The list is short and fixed on purpose: a free
846
+ * text field would collect personal data `TRUST-04` has nowhere to put yet.
847
+ */
848
+ declare const REPORT_REASONS: readonly ["SPAM", "HARASSMENT", "IMPERSONATION", "UNSAFE_ADVICE", "SEXUAL_CONTENT", "OTHER"];
849
+ type ReportReason = (typeof REPORT_REASONS)[number];
850
+ declare const REPORT_DETAILS_MAX_LENGTH = 500;
851
+ /** One account files at most this many reports a day. */
852
+ declare const REPORTS_PER_DAY_MAX = 20;
853
+ /** POST /reports */
854
+ interface CreateReportRequest {
855
+ subjectKind: ReportSubjectKind;
856
+ /** A member id or username, a routine id, or a session share token. */
857
+ subjectId: string;
858
+ reason: ReportReason;
859
+ /** Optional context from the reporter, never required. */
860
+ details?: string | null;
861
+ }
862
+ /**
863
+ * Stable successful response of POST /reports. It confirms the report was
864
+ * recorded and says nothing about review, because nothing reviews it yet.
865
+ */
866
+ interface CreateReportResponse {
867
+ id: string;
868
+ createdAt: IsoDateString;
869
+ }
870
+
815
871
  /**
816
872
  * ROUT-11: a WEEKLY routine ties each day to a weekday; a ROTATION routine
817
873
  * runs its days in `order`, each after the last completed one, whatever the
@@ -913,6 +969,18 @@ interface Routine {
913
969
  * read, where visibility is the reason the reader is there.
914
970
  */
915
971
  visibility: RoutineVisibility;
972
+ /**
973
+ * ROUT-06: present only on a routine that was cloned, and only with what
974
+ * this viewer is allowed to know about its source.
975
+ */
976
+ lineage?: RoutineLineage | null;
977
+ /**
978
+ * ROUT-07: owner-declared, both optional. They are claims about the
979
+ * programme that only its author can make, which is why they are stored
980
+ * here rather than derived from the author's `PROF-05` training identity.
981
+ */
982
+ goal?: TrainingGoal | null;
983
+ experienceLevel?: TrainingExperienceLevel | null;
916
984
  days: RoutineDay[];
917
985
  createdAt: IsoDateString;
918
986
  updatedAt: IsoDateString;
@@ -920,6 +988,9 @@ interface Routine {
920
988
  interface CreateRoutineRequest {
921
989
  name: string;
922
990
  description?: string;
991
+ /** ROUT-07; omitted means undeclared, which is not the same as a default. */
992
+ goal?: TrainingGoal | null;
993
+ experienceLevel?: TrainingExperienceLevel | null;
923
994
  isPeriodized: boolean;
924
995
  /** Defaults to WEEKLY. Changing it on update requires `days`. */
925
996
  scheduleMode?: RoutineScheduleMode;
@@ -1054,6 +1125,24 @@ interface SharedRoutine {
1054
1125
  /** When the routine was last changed, not when it was shared. */
1055
1126
  updatedAt: IsoDateString;
1056
1127
  }
1128
+ /**
1129
+ * ROUT-06. Where a cloned routine came from. It is recorded on the clone and
1130
+ * never on the source, so a routine cannot learn who copied it. It is served
1131
+ * only to a viewer who could read the source anyway: lineage must not become
1132
+ * a way to discover that a private routine exists.
1133
+ */
1134
+ interface RoutineLineage {
1135
+ /** The routine this one was cloned from, when the viewer may read it. */
1136
+ sourceRoutineId: string | null;
1137
+ /** The original author's public identity, when they still have one. */
1138
+ author: SharedRoutineOwner | null;
1139
+ /**
1140
+ * True when the source exists but this viewer may not read it, or its author
1141
+ * is gone. The clone still says it was cloned; it just cannot say from what.
1142
+ */
1143
+ isSourceHidden: boolean;
1144
+ clonedAt: IsoDateString;
1145
+ }
1057
1146
  /** A routine in a member's visible list, without loading its whole setup. */
1058
1147
  interface SharedRoutineSummary {
1059
1148
  routineId: string;
@@ -1247,6 +1336,12 @@ interface PublicUserProfile {
1247
1336
  followerCount: number;
1248
1337
  followingCount: number;
1249
1338
  isFollowedByMe: boolean;
1339
+ /**
1340
+ * PROF-10: only on the authenticated read, and only about the viewer's own
1341
+ * action. A profile never says it has blocked the viewer — a blocked viewer
1342
+ * gets a 404, as a denied routine does.
1343
+ */
1344
+ moderation?: MemberModerationState;
1250
1345
  viewerAccess: ProfileViewerAccess;
1251
1346
  trainingSummary?: PublicTrainingSummary;
1252
1347
  personalRecords?: PersonalRecordEntry[];
@@ -1470,6 +1565,79 @@ interface PersonalGoalsResponse {
1470
1565
  goals: PersonalGoalProgress[];
1471
1566
  }
1472
1567
 
1568
+ /** Owner-declared, both optional. Undeclared is not a default, it is unknown. */
1569
+ interface RoutineClassification {
1570
+ goal?: TrainingGoal | null;
1571
+ experienceLevel?: TrainingExperienceLevel | null;
1572
+ }
1573
+ /**
1574
+ * Derived from the routine's own exercises and the `EXER-09` catalog, never
1575
+ * stored: a stored facet drifts from the routine the moment an edit misses
1576
+ * its recompute.
1577
+ */
1578
+ interface RoutineFacets {
1579
+ dayCount: number;
1580
+ exerciseCount: number;
1581
+ /** Muscles any day trains, primary or secondary, deduplicated. */
1582
+ muscles: MuscleGroup[];
1583
+ /** Everything the routine needs, from the catalog's closed vocabulary. */
1584
+ equipment: ExerciseEquipment[];
1585
+ /**
1586
+ * The longest day's estimate in minutes, by `ROUT-10`'s rule. It is an
1587
+ * estimate from set counts, reps and rest, and every surface that shows it
1588
+ * says so rather than presenting it as a measured time.
1589
+ */
1590
+ longestDayMinutes: number;
1591
+ }
1592
+ /** One routine in a discovery result. It carries no training, as `ROUT-04`. */
1593
+ interface DiscoverableRoutine extends RoutineClassification, RoutineFacets {
1594
+ routineId: string;
1595
+ name: string;
1596
+ description: string | null;
1597
+ scheduleMode: RoutineScheduleMode;
1598
+ author: SharedRoutineOwner;
1599
+ updatedAt: IsoDateString;
1600
+ }
1601
+ /** Duration buckets, so a filter is a choice rather than a number entry. */
1602
+ declare const ROUTINE_DURATION_BANDS: readonly ["SHORT", "MEDIUM", "LONG"];
1603
+ type RoutineDurationBand = (typeof ROUTINE_DURATION_BANDS)[number];
1604
+ /** Upper bound of each band in minutes; `LONG` is anything above `MEDIUM`. */
1605
+ declare const ROUTINE_DURATION_BAND_MAX_MINUTES: Record<Exclude<RoutineDurationBand, 'LONG'>, number>;
1606
+ /** GET /routines/discover */
1607
+ interface RoutineDiscoveryQuery {
1608
+ /** Matches the routine name or description, case-insensitively. */
1609
+ q?: string;
1610
+ goal?: TrainingGoal;
1611
+ experienceLevel?: TrainingExperienceLevel;
1612
+ /** Exact number of training days a week. */
1613
+ days?: number;
1614
+ /** The routine must train this muscle, primary or secondary. */
1615
+ muscle?: MuscleGroup;
1616
+ /** The routine must need nothing outside what the viewer selects. */
1617
+ equipment?: ExerciseEquipment[];
1618
+ duration?: RoutineDurationBand;
1619
+ limit?: number;
1620
+ /** Opaque; from the previous page's `nextCursor`. */
1621
+ cursor?: string;
1622
+ }
1623
+ declare const ROUTINE_DISCOVERY_DEFAULT_LIMIT = 20;
1624
+ declare const ROUTINE_DISCOVERY_MAX_LIMIT = 50;
1625
+ /**
1626
+ * How many readable routines one request will consider before filtering.
1627
+ * The scan is bounded on purpose, and the response says when it ran out
1628
+ * rather than quietly returning a partial answer as a complete one.
1629
+ */
1630
+ declare const ROUTINE_DISCOVERY_SCAN_LIMIT = 500;
1631
+ interface RoutineDiscoveryResponse {
1632
+ routines: DiscoverableRoutine[];
1633
+ nextCursor?: string;
1634
+ /**
1635
+ * True when the scan limit was reached, so results may be incomplete. The
1636
+ * UI says so; it never presents a truncated page as everything there is.
1637
+ */
1638
+ scanTruncated: boolean;
1639
+ }
1640
+
1473
1641
  /** A local calendar date, YYYY-MM-DD. */
1474
1642
  type CalendarDate = string;
1475
1643
  /**
@@ -1794,4 +1962,4 @@ interface PlannedReminder {
1794
1962
  routineNames: string[];
1795
1963
  }
1796
1964
 
1797
- export { ACHIEVEMENT_CATEGORIES, ACHIEVEMENT_DEFINITIONS, type AchievementCategory, type AchievementCategoryProgress, type AchievementDefinition, type AchievementNotification, type AchievementUnlockedEventPayload, type AchievementsResponse, type AppNotification, type Brand, CLONE_ROUTINE_REFUSALS, COMEBACK_MIN_INACTIVE_DAYS, COMEBACK_RECOGNITION_LIMIT, COMEBACK_REQUIRED_ACTIVE_DAYS, COMEBACK_SESSION_LOOKBACK, COMEBACK_WINDOW_DAYS, type CalendarDate, type CloneRoutineRefusal, type CloneRoutineRequest, type ComebackRecognition, type ComebackRecognitionSummary, type CreateRoutineDayInput, type CreateRoutineExerciseInput, type CreateRoutineRequest, type CreateRoutineVersionRequest, type CreateSessionShareRequest, type DeletePushSubscriptionRequest, EXERCISE_EQUIPMENT, EXERCISE_MECHANICS, type EarnedAchievement, type EarnedPersonalRecord, type Exercise, type ExerciseEquipment, type ExerciseId, type ExerciseMechanic, type ExercisePerformanceHistoryQuery, type ExercisePerformanceHistoryResponse, type ExercisePerformancePrescription, type ExercisePerformancePrescriptionSet, type ExercisePerformanceSession, type ExercisePerformanceSet, type ExercisePerformanceSummary, type ExercisePlateau, type ExerciseStrengthSummary, type ExerciseStrengthTrendPoint, type ExerciseStrengthTrendQuery, type ExerciseStrengthTrendResponse, FEATURED_PROFILE_ITEMS_MAX, FEATURED_PROFILE_ITEM_KINDS, FEATURED_PROFILE_REFERENCE_MAX_LENGTH, FOLLOW_SUGGESTIONS_DEFAULT_LIMIT, FOLLOW_SUGGESTIONS_MAX_LIMIT, FOLLOW_SUGGESTION_REASONS, type FeaturedProfileAchievementItem, type FeaturedProfileItem, type FeaturedProfileItemKind, type FeaturedProfileRankItem, type FeaturedProfileRecordItem, type FeaturedProfileRoutineItem, type FeaturedProfileSelection, type FeaturedProfileSelectionInput, type FeaturedProfileSelectionsResponse, type FinishStatus, type FinishWorkoutRequest, type FinishWorkoutResponse, type FollowSuggestion, type FollowSuggestionReason, type FollowSuggestionsResponse, type IsoDateString, type ListSessionsParams, MEASURABLE_GOALS_MAX, MEASURABLE_GOAL_DIRECTIONS, MEASURABLE_GOAL_TYPES, MINUTES_IN_DAY, MOVEMENT_PATTERNS, MUSCLE_GROUPS, type MarkNotificationsReadRequest, type MarkNotificationsReadResponse, type MeasurableGoal, type MeasurableGoalDirection, type MeasurableGoalExercise, type MeasurableGoalInput, type MeasurableGoalType, type MemberRoutinesResponse, type MoveOccurrenceRequest, type MovementPattern, type MuscleGroup, type MuscleGroupHeatmapQuery, type MuscleGroupHeatmapResponse, type MuscleGroupHeatmapValue, type MuscleGroupHeatmapWeek, type MuscleVolumeTrendSeries, NOTIFICATIONS_LIST_LIMIT, NOTIFICATIONS_LOOKBACK_DAYS, NOTIFICATIONS_RETENTION_DAYS, NOTIFICATION_CATEGORIES, NOTIFICATION_KINDS, type NewFollowerNotification, type NotificationCategory, type NotificationKind, type NotificationPreferences, type NotificationPreferencesResponse, type NotificationsResponse, PLATEAU_MIN_DAYS_SINCE_BEST, PLATEAU_MIN_SESSIONS, PLATEAU_MIN_SESSIONS_MAX, PLATEAU_MIN_SESSIONS_MIN, PLATEAU_RECENT_DAYS, PLATEAU_WINDOW_DAYS, PREFERRED_TRAINING_STYLE_VALUES, PROFILE_BIO_MAX_LENGTH, PROFILE_FAVORITE_EXERCISES_MAX, PROFILE_LOCATION_MAX_LENGTH, PROFILE_TRAINING_DISCIPLINES_MAX, PROFILE_TRAINING_GOALS_MAX, PROFILE_VISIBILITY_VALUES, PROGRESSION_SCHEMES, PROGRESS_TIMELINE_EVENT_TYPES, PUSH_PAYLOAD_KINDS, PUSH_SUBSCRIPTIONS_MAX, type PaginatedResponse, type PersonalGoalProgress, type PersonalGoalsResponse, type PersonalRecordEntry, type PersonalRecordKind, type PlannedReminder, type PlatePairInventory, type PlateauPreferences, type PlateauSet, type PlateausResponse, type PreferredTrainingStyle, type PreviousPerformanceResponse, type PreviousSessionRecap, type PreviousSetPerformance, type ProfileDiscoverySettings, type ProfileFavoriteExercise, type ProfilePrivacySettings, type ProfileViewerAccess, type ProfileVisibility, type ProgressTimelineEventType, type ProgressTimelineItem, type ProgressTimelinePersonalRecordItem, type ProgressTimelineProgressionItem, type ProgressTimelineQuery, type ProgressTimelineRecordPerformance, type ProgressTimelineRecordReason, type ProgressTimelineResponse, type ProgressTimelineSessionContext, type ProgressionChange, type ProgressionRule, type ProgressionScheme, type ProgressionSetChange, type PublicBodyMetrics, type PublicProfileAchievements, type PublicTrainingSummary, type PublicUserProfile, type PushPayload, type PushPayloadKind, type PushSubscriptionKeys, type PushSubscriptionSummary, type PushSubscriptionsResponse, type QuietHours, RELATIONSHIP_LIST_DEFAULT_LIMIT, RELATIONSHIP_LIST_KINDS, RELATIONSHIP_LIST_MAX_LIMIT, RENAISSANCE_RANK_DEFINITIONS, REP_TYPES, RESERVED_USERNAMES, REST_ALERT_MAX_LEAD_SECONDS, REST_ALERT_MIN_LEAD_SECONDS, REST_ALERT_REFUSALS, ROUTINE_DAYS_MAX, ROUTINE_DAY_NAME_MAX, ROUTINE_SCHEDULE_MODES, ROUTINE_SHARE_MAX_ACTIVE_LINKS, ROUTINE_VERSIONS_MAX, ROUTINE_VERSION_KINDS, ROUTINE_VERSION_NAME_MAX, ROUTINE_VISIBILITY_VALUES, type RecentActivityEntry, type RegisterPushSubscriptionRequest, type RelationshipListKind, type RelationshipListQuery, type RelationshipListResponse, type RelationshipMember, type RenaissanceRankDefinition, type RenaissanceRankProgress, type RepType, type ReplaceFeaturedProfileItemsRequest, type ReplaceMeasurableGoalsRequest, type ReplaceTrainingLocationsRequest, type RestAlertPushPayload, type RestAlertRefusal, type RestoreRoutineVersionResponse, type Routine, type RoutineDay, type RoutineDayId, type RoutineExercise, type RoutineId, type RoutineScheduleMode, type RoutineSet, type RoutineShare, type RoutineShareListResponse, type RoutineVersion, type RoutineVersionDay, type RoutineVersionExercise, type RoutineVersionKind, type RoutineVersionSetup, type RoutineVersionsResponse, type RoutineVisibility, SCHEDULE_MOVE_MAX_DAYS, SCHEDULE_OVERRIDES_MAX_RANGE_DAYS, SCHEDULE_OVERRIDE_KINDS, SCHEDULE_SKIP_PAST_DAYS, SESSION_SHARE_DEFAULT_FIELDS, SESSION_SHARE_FIELDS, SESSION_SHARE_MAX_ACTIVE_LINKS, SEXES, SHARED_ROUTINE_SOURCES, STARRED_EXERCISES_MAX, STREAK_MAX_GAP_DAYS, type ScheduleOverride, type ScheduleOverrideKind, type ScheduleOverridesQuery, type ScheduleOverridesResponse, type ScheduleRestAlertRequest, type ScheduleRestAlertResponse, type SessionComparisonExercise, type SessionComparisonQuery, type SessionComparisonResponse, type SessionComparisonRoutineDay, type SessionComparisonSession, type SessionComparisonSet, type SessionExerciseSubstitution, type SessionProgressNotification, type SessionRecapRecord, type SessionShare, type SessionShareField, type SessionShareListResponse, type SetAccountTimeZoneRequest, type SetLog, type Sex, type SharedRoutine, type SharedRoutineOwner, type SharedRoutineSource, type SharedRoutineSummary, type SharedSessionOwner, type SharedSessionRecap, type SkipOccurrenceRequest, type StarredExercise, type StarredExercisesResponse, type StartWorkoutRequest, type StartWorkoutResponse, type StreakAtRiskPushPayload, type StreakMilestoneEventPayload, type SubstituteSessionExerciseRequest, type SubstituteSessionExerciseResponse, type SupabaseAuthResponse, type SupabaseAuthUser, type SupabaseMigrationResponse, TRAINING_DISCIPLINE_VALUES, TRAINING_EVENT_TYPES, TRAINING_EXPERIENCE_LEVEL_VALUES, TRAINING_GOAL_VALUES, type TrainingDiscipline, type TrainingEventType, type TrainingExperienceLevel, type TrainingGoal, type TrainingIdentity, type TrainingLocationPreference, type TrainingLocationPreferenceInput, type TrainingReminderPreference, type TrainingReminderPushPayload, USERNAME_MAX_LENGTH, USERNAME_MIN_LENGTH, USERNAME_PATTERN_SOURCE, type UpdateNotificationPreferencesRequest, type UpdateProfileDiscoveryRequest, type UpdateProfilePrivacyRequest, type UpdateProfileRequest, type UpdateRoutineRequest, type UpdateRoutineVisibilityRequest, type UpsertSetLogRequest, type UpsertSetLogResponse, type UserId, type UserProfile, type UserSearchResponse, type VolumeTrendPoint, type VolumeTrendQuery, type VolumeTrendResponse, type VolumeTrendSeries, WEIGHT_UNITS, WORKOUT_SESSION_STATUSES, type WeightUnit, type WorkoutAnalyticsStatus, type WorkoutProgressQuery, type WorkoutProgressResponse, type WorkoutSession, type WorkoutSessionId, type WorkoutSessionListResponse, type WorkoutSessionRecap, type WorkoutSessionSnapshotV1, type WorkoutSessionStatus, type WorkoutSessionSummary, type WorkoutStatsQuery, type WorkoutStatsResponse, isWithinQuietHours, routineDayLabel };
1965
+ export { ACHIEVEMENT_CATEGORIES, ACHIEVEMENT_DEFINITIONS, type AchievementCategory, type AchievementCategoryProgress, type AchievementDefinition, type AchievementNotification, type AchievementUnlockedEventPayload, type AchievementsResponse, type AppNotification, BLOCKED_MEMBERS_MAX, type BlockedMember, type BlockedMembersResponse, type Brand, CLONE_ROUTINE_REFUSALS, COMEBACK_MIN_INACTIVE_DAYS, COMEBACK_RECOGNITION_LIMIT, COMEBACK_REQUIRED_ACTIVE_DAYS, COMEBACK_SESSION_LOOKBACK, COMEBACK_WINDOW_DAYS, type CalendarDate, type CloneRoutineRefusal, type CloneRoutineRequest, type ComebackRecognition, type ComebackRecognitionSummary, type CreateReportRequest, type CreateReportResponse, type CreateRoutineDayInput, type CreateRoutineExerciseInput, type CreateRoutineRequest, type CreateRoutineVersionRequest, type CreateSessionShareRequest, type DeletePushSubscriptionRequest, type DiscoverableRoutine, EXERCISE_EQUIPMENT, EXERCISE_MECHANICS, type EarnedAchievement, type EarnedPersonalRecord, type Exercise, type ExerciseEquipment, type ExerciseId, type ExerciseMechanic, type ExercisePerformanceHistoryQuery, type ExercisePerformanceHistoryResponse, type ExercisePerformancePrescription, type ExercisePerformancePrescriptionSet, type ExercisePerformanceSession, type ExercisePerformanceSet, type ExercisePerformanceSummary, type ExercisePlateau, type ExerciseStrengthSummary, type ExerciseStrengthTrendPoint, type ExerciseStrengthTrendQuery, type ExerciseStrengthTrendResponse, FEATURED_PROFILE_ITEMS_MAX, FEATURED_PROFILE_ITEM_KINDS, FEATURED_PROFILE_REFERENCE_MAX_LENGTH, FOLLOW_SUGGESTIONS_DEFAULT_LIMIT, FOLLOW_SUGGESTIONS_MAX_LIMIT, FOLLOW_SUGGESTION_REASONS, type FeaturedProfileAchievementItem, type FeaturedProfileItem, type FeaturedProfileItemKind, type FeaturedProfileRankItem, type FeaturedProfileRecordItem, type FeaturedProfileRoutineItem, type FeaturedProfileSelection, type FeaturedProfileSelectionInput, type FeaturedProfileSelectionsResponse, type FinishStatus, type FinishWorkoutRequest, type FinishWorkoutResponse, type FollowSuggestion, type FollowSuggestionReason, type FollowSuggestionsResponse, type IsoDateString, type ListSessionsParams, MEASURABLE_GOALS_MAX, MEASURABLE_GOAL_DIRECTIONS, MEASURABLE_GOAL_TYPES, MINUTES_IN_DAY, MOVEMENT_PATTERNS, MUSCLE_GROUPS, type MarkNotificationsReadRequest, type MarkNotificationsReadResponse, type MeasurableGoal, type MeasurableGoalDirection, type MeasurableGoalExercise, type MeasurableGoalInput, type MeasurableGoalType, type MemberModerationState, type MemberRoutinesResponse, type MoveOccurrenceRequest, type MovementPattern, type MuscleGroup, type MuscleGroupHeatmapQuery, type MuscleGroupHeatmapResponse, type MuscleGroupHeatmapValue, type MuscleGroupHeatmapWeek, type MuscleVolumeTrendSeries, NOTIFICATIONS_LIST_LIMIT, NOTIFICATIONS_LOOKBACK_DAYS, NOTIFICATIONS_RETENTION_DAYS, NOTIFICATION_CATEGORIES, NOTIFICATION_KINDS, type NewFollowerNotification, type NotificationCategory, type NotificationKind, type NotificationPreferences, type NotificationPreferencesResponse, type NotificationsResponse, PLATEAU_MIN_DAYS_SINCE_BEST, PLATEAU_MIN_SESSIONS, PLATEAU_MIN_SESSIONS_MAX, PLATEAU_MIN_SESSIONS_MIN, PLATEAU_RECENT_DAYS, PLATEAU_WINDOW_DAYS, PREFERRED_TRAINING_STYLE_VALUES, PROFILE_BIO_MAX_LENGTH, PROFILE_FAVORITE_EXERCISES_MAX, PROFILE_LOCATION_MAX_LENGTH, PROFILE_TRAINING_DISCIPLINES_MAX, PROFILE_TRAINING_GOALS_MAX, PROFILE_VISIBILITY_VALUES, PROGRESSION_SCHEMES, PROGRESS_TIMELINE_EVENT_TYPES, PUSH_PAYLOAD_KINDS, PUSH_SUBSCRIPTIONS_MAX, type PaginatedResponse, type PersonalGoalProgress, type PersonalGoalsResponse, type PersonalRecordEntry, type PersonalRecordKind, type PlannedReminder, type PlatePairInventory, type PlateauPreferences, type PlateauSet, type PlateausResponse, type PreferredTrainingStyle, type PreviousPerformanceResponse, type PreviousSessionRecap, type PreviousSetPerformance, type ProfileDiscoverySettings, type ProfileFavoriteExercise, type ProfilePrivacySettings, type ProfileViewerAccess, type ProfileVisibility, type ProgressTimelineEventType, type ProgressTimelineItem, type ProgressTimelinePersonalRecordItem, type ProgressTimelineProgressionItem, type ProgressTimelineQuery, type ProgressTimelineRecordPerformance, type ProgressTimelineRecordReason, type ProgressTimelineResponse, type ProgressTimelineSessionContext, type ProgressionChange, type ProgressionRule, type ProgressionScheme, type ProgressionSetChange, type PublicBodyMetrics, type PublicProfileAchievements, type PublicTrainingSummary, type PublicUserProfile, type PushPayload, type PushPayloadKind, type PushSubscriptionKeys, type PushSubscriptionSummary, type PushSubscriptionsResponse, type QuietHours, RELATIONSHIP_LIST_DEFAULT_LIMIT, RELATIONSHIP_LIST_KINDS, RELATIONSHIP_LIST_MAX_LIMIT, RENAISSANCE_RANK_DEFINITIONS, REPORTS_PER_DAY_MAX, REPORT_DETAILS_MAX_LENGTH, REPORT_REASONS, REPORT_SUBJECT_KINDS, REP_TYPES, RESERVED_USERNAMES, REST_ALERT_MAX_LEAD_SECONDS, REST_ALERT_MIN_LEAD_SECONDS, REST_ALERT_REFUSALS, ROUTINE_DAYS_MAX, ROUTINE_DAY_NAME_MAX, ROUTINE_DISCOVERY_DEFAULT_LIMIT, ROUTINE_DISCOVERY_MAX_LIMIT, ROUTINE_DISCOVERY_SCAN_LIMIT, ROUTINE_DURATION_BANDS, ROUTINE_DURATION_BAND_MAX_MINUTES, ROUTINE_SCHEDULE_MODES, ROUTINE_SHARE_MAX_ACTIVE_LINKS, ROUTINE_VERSIONS_MAX, ROUTINE_VERSION_KINDS, ROUTINE_VERSION_NAME_MAX, ROUTINE_VISIBILITY_VALUES, type RecentActivityEntry, type RegisterPushSubscriptionRequest, type RelationshipListKind, type RelationshipListQuery, type RelationshipListResponse, type RelationshipMember, type RenaissanceRankDefinition, type RenaissanceRankProgress, type RepType, type ReplaceFeaturedProfileItemsRequest, type ReplaceMeasurableGoalsRequest, type ReplaceTrainingLocationsRequest, type ReportReason, type ReportSubjectKind, type RestAlertPushPayload, type RestAlertRefusal, type RestoreRoutineVersionResponse, type Routine, type RoutineClassification, type RoutineDay, type RoutineDayId, type RoutineDiscoveryQuery, type RoutineDiscoveryResponse, type RoutineDurationBand, type RoutineExercise, type RoutineFacets, type RoutineId, type RoutineLineage, type RoutineScheduleMode, type RoutineSet, type RoutineShare, type RoutineShareListResponse, type RoutineVersion, type RoutineVersionDay, type RoutineVersionExercise, type RoutineVersionKind, type RoutineVersionSetup, type RoutineVersionsResponse, type RoutineVisibility, SCHEDULE_MOVE_MAX_DAYS, SCHEDULE_OVERRIDES_MAX_RANGE_DAYS, SCHEDULE_OVERRIDE_KINDS, SCHEDULE_SKIP_PAST_DAYS, SESSION_SHARE_DEFAULT_FIELDS, SESSION_SHARE_FIELDS, SESSION_SHARE_MAX_ACTIVE_LINKS, SEXES, SHARED_ROUTINE_SOURCES, STARRED_EXERCISES_MAX, STREAK_MAX_GAP_DAYS, type ScheduleOverride, type ScheduleOverrideKind, type ScheduleOverridesQuery, type ScheduleOverridesResponse, type ScheduleRestAlertRequest, type ScheduleRestAlertResponse, type SessionComparisonExercise, type SessionComparisonQuery, type SessionComparisonResponse, type SessionComparisonRoutineDay, type SessionComparisonSession, type SessionComparisonSet, type SessionExerciseSubstitution, type SessionProgressNotification, type SessionRecapRecord, type SessionShare, type SessionShareField, type SessionShareListResponse, type SetAccountTimeZoneRequest, type SetLog, type Sex, type SharedRoutine, type SharedRoutineOwner, type SharedRoutineSource, type SharedRoutineSummary, type SharedSessionOwner, type SharedSessionRecap, type SkipOccurrenceRequest, type StarredExercise, type StarredExercisesResponse, type StartWorkoutRequest, type StartWorkoutResponse, type StreakAtRiskPushPayload, type StreakMilestoneEventPayload, type SubstituteSessionExerciseRequest, type SubstituteSessionExerciseResponse, type SupabaseAuthResponse, type SupabaseAuthUser, type SupabaseMigrationResponse, TRAINING_DISCIPLINE_VALUES, TRAINING_EVENT_TYPES, TRAINING_EXPERIENCE_LEVEL_VALUES, TRAINING_GOAL_VALUES, type TrainingDiscipline, type TrainingEventType, type TrainingExperienceLevel, type TrainingGoal, type TrainingIdentity, type TrainingLocationPreference, type TrainingLocationPreferenceInput, type TrainingReminderPreference, type TrainingReminderPushPayload, USERNAME_MAX_LENGTH, USERNAME_MIN_LENGTH, USERNAME_PATTERN_SOURCE, type UpdateNotificationPreferencesRequest, type UpdateProfileDiscoveryRequest, type UpdateProfilePrivacyRequest, type UpdateProfileRequest, type UpdateRoutineRequest, type UpdateRoutineVisibilityRequest, type UpsertSetLogRequest, type UpsertSetLogResponse, type UserId, type UserProfile, type UserSearchResponse, type VolumeTrendPoint, type VolumeTrendQuery, type VolumeTrendResponse, type VolumeTrendSeries, WEIGHT_UNITS, WORKOUT_SESSION_STATUSES, type WeightUnit, type WorkoutAnalyticsStatus, type WorkoutProgressQuery, type WorkoutProgressResponse, type WorkoutSession, type WorkoutSessionId, type WorkoutSessionListResponse, type WorkoutSessionRecap, type WorkoutSessionSnapshotV1, type WorkoutSessionStatus, type WorkoutSessionSummary, type WorkoutStatsQuery, type WorkoutStatsResponse, isWithinQuietHours, routineDayLabel };
package/dist/index.d.ts CHANGED
@@ -812,6 +812,62 @@ interface AchievementsResponse {
812
812
  comeback: ComebackRecognitionSummary | null;
813
813
  }
814
814
 
815
+ /**
816
+ * A block is **symmetric**. It removes any follow in both directions and
817
+ * prevents a new one either way; neither account appears in the other's
818
+ * search, suggestions, relationship lists or profile reads. Hiding only the
819
+ * blocked account from the blocker would leave the blocker visible to them,
820
+ * which is the half nobody asks for.
821
+ *
822
+ * It is **not retroactive over what was already handed out**: a `SOC-07`
823
+ * session link and a `ROUT-04` routine link carry no viewer identity, so a
824
+ * block cannot withdraw one. Revoking the link is that control.
825
+ */
826
+ interface BlockedMember {
827
+ /** The blocked account's identity, as a search result carries it. */
828
+ member: UserSearchResponse;
829
+ blockedAt: IsoDateString;
830
+ }
831
+ /** Stable successful response of GET /users/me/blocks. */
832
+ interface BlockedMembersResponse {
833
+ blocks: BlockedMember[];
834
+ }
835
+ /** One account blocks at most this many others. */
836
+ declare const BLOCKED_MEMBERS_MAX = 500;
837
+ /** What a viewer may do about one profile, so the UI never offers a no-op. */
838
+ interface MemberModerationState {
839
+ /** The viewer has blocked this member. */
840
+ isBlocked: boolean;
841
+ }
842
+ declare const REPORT_SUBJECT_KINDS: readonly ["MEMBER", "ROUTINE", "SESSION"];
843
+ type ReportSubjectKind = (typeof REPORT_SUBJECT_KINDS)[number];
844
+ /**
845
+ * Why something was reported. The list is short and fixed on purpose: a free
846
+ * text field would collect personal data `TRUST-04` has nowhere to put yet.
847
+ */
848
+ declare const REPORT_REASONS: readonly ["SPAM", "HARASSMENT", "IMPERSONATION", "UNSAFE_ADVICE", "SEXUAL_CONTENT", "OTHER"];
849
+ type ReportReason = (typeof REPORT_REASONS)[number];
850
+ declare const REPORT_DETAILS_MAX_LENGTH = 500;
851
+ /** One account files at most this many reports a day. */
852
+ declare const REPORTS_PER_DAY_MAX = 20;
853
+ /** POST /reports */
854
+ interface CreateReportRequest {
855
+ subjectKind: ReportSubjectKind;
856
+ /** A member id or username, a routine id, or a session share token. */
857
+ subjectId: string;
858
+ reason: ReportReason;
859
+ /** Optional context from the reporter, never required. */
860
+ details?: string | null;
861
+ }
862
+ /**
863
+ * Stable successful response of POST /reports. It confirms the report was
864
+ * recorded and says nothing about review, because nothing reviews it yet.
865
+ */
866
+ interface CreateReportResponse {
867
+ id: string;
868
+ createdAt: IsoDateString;
869
+ }
870
+
815
871
  /**
816
872
  * ROUT-11: a WEEKLY routine ties each day to a weekday; a ROTATION routine
817
873
  * runs its days in `order`, each after the last completed one, whatever the
@@ -913,6 +969,18 @@ interface Routine {
913
969
  * read, where visibility is the reason the reader is there.
914
970
  */
915
971
  visibility: RoutineVisibility;
972
+ /**
973
+ * ROUT-06: present only on a routine that was cloned, and only with what
974
+ * this viewer is allowed to know about its source.
975
+ */
976
+ lineage?: RoutineLineage | null;
977
+ /**
978
+ * ROUT-07: owner-declared, both optional. They are claims about the
979
+ * programme that only its author can make, which is why they are stored
980
+ * here rather than derived from the author's `PROF-05` training identity.
981
+ */
982
+ goal?: TrainingGoal | null;
983
+ experienceLevel?: TrainingExperienceLevel | null;
916
984
  days: RoutineDay[];
917
985
  createdAt: IsoDateString;
918
986
  updatedAt: IsoDateString;
@@ -920,6 +988,9 @@ interface Routine {
920
988
  interface CreateRoutineRequest {
921
989
  name: string;
922
990
  description?: string;
991
+ /** ROUT-07; omitted means undeclared, which is not the same as a default. */
992
+ goal?: TrainingGoal | null;
993
+ experienceLevel?: TrainingExperienceLevel | null;
923
994
  isPeriodized: boolean;
924
995
  /** Defaults to WEEKLY. Changing it on update requires `days`. */
925
996
  scheduleMode?: RoutineScheduleMode;
@@ -1054,6 +1125,24 @@ interface SharedRoutine {
1054
1125
  /** When the routine was last changed, not when it was shared. */
1055
1126
  updatedAt: IsoDateString;
1056
1127
  }
1128
+ /**
1129
+ * ROUT-06. Where a cloned routine came from. It is recorded on the clone and
1130
+ * never on the source, so a routine cannot learn who copied it. It is served
1131
+ * only to a viewer who could read the source anyway: lineage must not become
1132
+ * a way to discover that a private routine exists.
1133
+ */
1134
+ interface RoutineLineage {
1135
+ /** The routine this one was cloned from, when the viewer may read it. */
1136
+ sourceRoutineId: string | null;
1137
+ /** The original author's public identity, when they still have one. */
1138
+ author: SharedRoutineOwner | null;
1139
+ /**
1140
+ * True when the source exists but this viewer may not read it, or its author
1141
+ * is gone. The clone still says it was cloned; it just cannot say from what.
1142
+ */
1143
+ isSourceHidden: boolean;
1144
+ clonedAt: IsoDateString;
1145
+ }
1057
1146
  /** A routine in a member's visible list, without loading its whole setup. */
1058
1147
  interface SharedRoutineSummary {
1059
1148
  routineId: string;
@@ -1247,6 +1336,12 @@ interface PublicUserProfile {
1247
1336
  followerCount: number;
1248
1337
  followingCount: number;
1249
1338
  isFollowedByMe: boolean;
1339
+ /**
1340
+ * PROF-10: only on the authenticated read, and only about the viewer's own
1341
+ * action. A profile never says it has blocked the viewer — a blocked viewer
1342
+ * gets a 404, as a denied routine does.
1343
+ */
1344
+ moderation?: MemberModerationState;
1250
1345
  viewerAccess: ProfileViewerAccess;
1251
1346
  trainingSummary?: PublicTrainingSummary;
1252
1347
  personalRecords?: PersonalRecordEntry[];
@@ -1470,6 +1565,79 @@ interface PersonalGoalsResponse {
1470
1565
  goals: PersonalGoalProgress[];
1471
1566
  }
1472
1567
 
1568
+ /** Owner-declared, both optional. Undeclared is not a default, it is unknown. */
1569
+ interface RoutineClassification {
1570
+ goal?: TrainingGoal | null;
1571
+ experienceLevel?: TrainingExperienceLevel | null;
1572
+ }
1573
+ /**
1574
+ * Derived from the routine's own exercises and the `EXER-09` catalog, never
1575
+ * stored: a stored facet drifts from the routine the moment an edit misses
1576
+ * its recompute.
1577
+ */
1578
+ interface RoutineFacets {
1579
+ dayCount: number;
1580
+ exerciseCount: number;
1581
+ /** Muscles any day trains, primary or secondary, deduplicated. */
1582
+ muscles: MuscleGroup[];
1583
+ /** Everything the routine needs, from the catalog's closed vocabulary. */
1584
+ equipment: ExerciseEquipment[];
1585
+ /**
1586
+ * The longest day's estimate in minutes, by `ROUT-10`'s rule. It is an
1587
+ * estimate from set counts, reps and rest, and every surface that shows it
1588
+ * says so rather than presenting it as a measured time.
1589
+ */
1590
+ longestDayMinutes: number;
1591
+ }
1592
+ /** One routine in a discovery result. It carries no training, as `ROUT-04`. */
1593
+ interface DiscoverableRoutine extends RoutineClassification, RoutineFacets {
1594
+ routineId: string;
1595
+ name: string;
1596
+ description: string | null;
1597
+ scheduleMode: RoutineScheduleMode;
1598
+ author: SharedRoutineOwner;
1599
+ updatedAt: IsoDateString;
1600
+ }
1601
+ /** Duration buckets, so a filter is a choice rather than a number entry. */
1602
+ declare const ROUTINE_DURATION_BANDS: readonly ["SHORT", "MEDIUM", "LONG"];
1603
+ type RoutineDurationBand = (typeof ROUTINE_DURATION_BANDS)[number];
1604
+ /** Upper bound of each band in minutes; `LONG` is anything above `MEDIUM`. */
1605
+ declare const ROUTINE_DURATION_BAND_MAX_MINUTES: Record<Exclude<RoutineDurationBand, 'LONG'>, number>;
1606
+ /** GET /routines/discover */
1607
+ interface RoutineDiscoveryQuery {
1608
+ /** Matches the routine name or description, case-insensitively. */
1609
+ q?: string;
1610
+ goal?: TrainingGoal;
1611
+ experienceLevel?: TrainingExperienceLevel;
1612
+ /** Exact number of training days a week. */
1613
+ days?: number;
1614
+ /** The routine must train this muscle, primary or secondary. */
1615
+ muscle?: MuscleGroup;
1616
+ /** The routine must need nothing outside what the viewer selects. */
1617
+ equipment?: ExerciseEquipment[];
1618
+ duration?: RoutineDurationBand;
1619
+ limit?: number;
1620
+ /** Opaque; from the previous page's `nextCursor`. */
1621
+ cursor?: string;
1622
+ }
1623
+ declare const ROUTINE_DISCOVERY_DEFAULT_LIMIT = 20;
1624
+ declare const ROUTINE_DISCOVERY_MAX_LIMIT = 50;
1625
+ /**
1626
+ * How many readable routines one request will consider before filtering.
1627
+ * The scan is bounded on purpose, and the response says when it ran out
1628
+ * rather than quietly returning a partial answer as a complete one.
1629
+ */
1630
+ declare const ROUTINE_DISCOVERY_SCAN_LIMIT = 500;
1631
+ interface RoutineDiscoveryResponse {
1632
+ routines: DiscoverableRoutine[];
1633
+ nextCursor?: string;
1634
+ /**
1635
+ * True when the scan limit was reached, so results may be incomplete. The
1636
+ * UI says so; it never presents a truncated page as everything there is.
1637
+ */
1638
+ scanTruncated: boolean;
1639
+ }
1640
+
1473
1641
  /** A local calendar date, YYYY-MM-DD. */
1474
1642
  type CalendarDate = string;
1475
1643
  /**
@@ -1794,4 +1962,4 @@ interface PlannedReminder {
1794
1962
  routineNames: string[];
1795
1963
  }
1796
1964
 
1797
- export { ACHIEVEMENT_CATEGORIES, ACHIEVEMENT_DEFINITIONS, type AchievementCategory, type AchievementCategoryProgress, type AchievementDefinition, type AchievementNotification, type AchievementUnlockedEventPayload, type AchievementsResponse, type AppNotification, type Brand, CLONE_ROUTINE_REFUSALS, COMEBACK_MIN_INACTIVE_DAYS, COMEBACK_RECOGNITION_LIMIT, COMEBACK_REQUIRED_ACTIVE_DAYS, COMEBACK_SESSION_LOOKBACK, COMEBACK_WINDOW_DAYS, type CalendarDate, type CloneRoutineRefusal, type CloneRoutineRequest, type ComebackRecognition, type ComebackRecognitionSummary, type CreateRoutineDayInput, type CreateRoutineExerciseInput, type CreateRoutineRequest, type CreateRoutineVersionRequest, type CreateSessionShareRequest, type DeletePushSubscriptionRequest, EXERCISE_EQUIPMENT, EXERCISE_MECHANICS, type EarnedAchievement, type EarnedPersonalRecord, type Exercise, type ExerciseEquipment, type ExerciseId, type ExerciseMechanic, type ExercisePerformanceHistoryQuery, type ExercisePerformanceHistoryResponse, type ExercisePerformancePrescription, type ExercisePerformancePrescriptionSet, type ExercisePerformanceSession, type ExercisePerformanceSet, type ExercisePerformanceSummary, type ExercisePlateau, type ExerciseStrengthSummary, type ExerciseStrengthTrendPoint, type ExerciseStrengthTrendQuery, type ExerciseStrengthTrendResponse, FEATURED_PROFILE_ITEMS_MAX, FEATURED_PROFILE_ITEM_KINDS, FEATURED_PROFILE_REFERENCE_MAX_LENGTH, FOLLOW_SUGGESTIONS_DEFAULT_LIMIT, FOLLOW_SUGGESTIONS_MAX_LIMIT, FOLLOW_SUGGESTION_REASONS, type FeaturedProfileAchievementItem, type FeaturedProfileItem, type FeaturedProfileItemKind, type FeaturedProfileRankItem, type FeaturedProfileRecordItem, type FeaturedProfileRoutineItem, type FeaturedProfileSelection, type FeaturedProfileSelectionInput, type FeaturedProfileSelectionsResponse, type FinishStatus, type FinishWorkoutRequest, type FinishWorkoutResponse, type FollowSuggestion, type FollowSuggestionReason, type FollowSuggestionsResponse, type IsoDateString, type ListSessionsParams, MEASURABLE_GOALS_MAX, MEASURABLE_GOAL_DIRECTIONS, MEASURABLE_GOAL_TYPES, MINUTES_IN_DAY, MOVEMENT_PATTERNS, MUSCLE_GROUPS, type MarkNotificationsReadRequest, type MarkNotificationsReadResponse, type MeasurableGoal, type MeasurableGoalDirection, type MeasurableGoalExercise, type MeasurableGoalInput, type MeasurableGoalType, type MemberRoutinesResponse, type MoveOccurrenceRequest, type MovementPattern, type MuscleGroup, type MuscleGroupHeatmapQuery, type MuscleGroupHeatmapResponse, type MuscleGroupHeatmapValue, type MuscleGroupHeatmapWeek, type MuscleVolumeTrendSeries, NOTIFICATIONS_LIST_LIMIT, NOTIFICATIONS_LOOKBACK_DAYS, NOTIFICATIONS_RETENTION_DAYS, NOTIFICATION_CATEGORIES, NOTIFICATION_KINDS, type NewFollowerNotification, type NotificationCategory, type NotificationKind, type NotificationPreferences, type NotificationPreferencesResponse, type NotificationsResponse, PLATEAU_MIN_DAYS_SINCE_BEST, PLATEAU_MIN_SESSIONS, PLATEAU_MIN_SESSIONS_MAX, PLATEAU_MIN_SESSIONS_MIN, PLATEAU_RECENT_DAYS, PLATEAU_WINDOW_DAYS, PREFERRED_TRAINING_STYLE_VALUES, PROFILE_BIO_MAX_LENGTH, PROFILE_FAVORITE_EXERCISES_MAX, PROFILE_LOCATION_MAX_LENGTH, PROFILE_TRAINING_DISCIPLINES_MAX, PROFILE_TRAINING_GOALS_MAX, PROFILE_VISIBILITY_VALUES, PROGRESSION_SCHEMES, PROGRESS_TIMELINE_EVENT_TYPES, PUSH_PAYLOAD_KINDS, PUSH_SUBSCRIPTIONS_MAX, type PaginatedResponse, type PersonalGoalProgress, type PersonalGoalsResponse, type PersonalRecordEntry, type PersonalRecordKind, type PlannedReminder, type PlatePairInventory, type PlateauPreferences, type PlateauSet, type PlateausResponse, type PreferredTrainingStyle, type PreviousPerformanceResponse, type PreviousSessionRecap, type PreviousSetPerformance, type ProfileDiscoverySettings, type ProfileFavoriteExercise, type ProfilePrivacySettings, type ProfileViewerAccess, type ProfileVisibility, type ProgressTimelineEventType, type ProgressTimelineItem, type ProgressTimelinePersonalRecordItem, type ProgressTimelineProgressionItem, type ProgressTimelineQuery, type ProgressTimelineRecordPerformance, type ProgressTimelineRecordReason, type ProgressTimelineResponse, type ProgressTimelineSessionContext, type ProgressionChange, type ProgressionRule, type ProgressionScheme, type ProgressionSetChange, type PublicBodyMetrics, type PublicProfileAchievements, type PublicTrainingSummary, type PublicUserProfile, type PushPayload, type PushPayloadKind, type PushSubscriptionKeys, type PushSubscriptionSummary, type PushSubscriptionsResponse, type QuietHours, RELATIONSHIP_LIST_DEFAULT_LIMIT, RELATIONSHIP_LIST_KINDS, RELATIONSHIP_LIST_MAX_LIMIT, RENAISSANCE_RANK_DEFINITIONS, REP_TYPES, RESERVED_USERNAMES, REST_ALERT_MAX_LEAD_SECONDS, REST_ALERT_MIN_LEAD_SECONDS, REST_ALERT_REFUSALS, ROUTINE_DAYS_MAX, ROUTINE_DAY_NAME_MAX, ROUTINE_SCHEDULE_MODES, ROUTINE_SHARE_MAX_ACTIVE_LINKS, ROUTINE_VERSIONS_MAX, ROUTINE_VERSION_KINDS, ROUTINE_VERSION_NAME_MAX, ROUTINE_VISIBILITY_VALUES, type RecentActivityEntry, type RegisterPushSubscriptionRequest, type RelationshipListKind, type RelationshipListQuery, type RelationshipListResponse, type RelationshipMember, type RenaissanceRankDefinition, type RenaissanceRankProgress, type RepType, type ReplaceFeaturedProfileItemsRequest, type ReplaceMeasurableGoalsRequest, type ReplaceTrainingLocationsRequest, type RestAlertPushPayload, type RestAlertRefusal, type RestoreRoutineVersionResponse, type Routine, type RoutineDay, type RoutineDayId, type RoutineExercise, type RoutineId, type RoutineScheduleMode, type RoutineSet, type RoutineShare, type RoutineShareListResponse, type RoutineVersion, type RoutineVersionDay, type RoutineVersionExercise, type RoutineVersionKind, type RoutineVersionSetup, type RoutineVersionsResponse, type RoutineVisibility, SCHEDULE_MOVE_MAX_DAYS, SCHEDULE_OVERRIDES_MAX_RANGE_DAYS, SCHEDULE_OVERRIDE_KINDS, SCHEDULE_SKIP_PAST_DAYS, SESSION_SHARE_DEFAULT_FIELDS, SESSION_SHARE_FIELDS, SESSION_SHARE_MAX_ACTIVE_LINKS, SEXES, SHARED_ROUTINE_SOURCES, STARRED_EXERCISES_MAX, STREAK_MAX_GAP_DAYS, type ScheduleOverride, type ScheduleOverrideKind, type ScheduleOverridesQuery, type ScheduleOverridesResponse, type ScheduleRestAlertRequest, type ScheduleRestAlertResponse, type SessionComparisonExercise, type SessionComparisonQuery, type SessionComparisonResponse, type SessionComparisonRoutineDay, type SessionComparisonSession, type SessionComparisonSet, type SessionExerciseSubstitution, type SessionProgressNotification, type SessionRecapRecord, type SessionShare, type SessionShareField, type SessionShareListResponse, type SetAccountTimeZoneRequest, type SetLog, type Sex, type SharedRoutine, type SharedRoutineOwner, type SharedRoutineSource, type SharedRoutineSummary, type SharedSessionOwner, type SharedSessionRecap, type SkipOccurrenceRequest, type StarredExercise, type StarredExercisesResponse, type StartWorkoutRequest, type StartWorkoutResponse, type StreakAtRiskPushPayload, type StreakMilestoneEventPayload, type SubstituteSessionExerciseRequest, type SubstituteSessionExerciseResponse, type SupabaseAuthResponse, type SupabaseAuthUser, type SupabaseMigrationResponse, TRAINING_DISCIPLINE_VALUES, TRAINING_EVENT_TYPES, TRAINING_EXPERIENCE_LEVEL_VALUES, TRAINING_GOAL_VALUES, type TrainingDiscipline, type TrainingEventType, type TrainingExperienceLevel, type TrainingGoal, type TrainingIdentity, type TrainingLocationPreference, type TrainingLocationPreferenceInput, type TrainingReminderPreference, type TrainingReminderPushPayload, USERNAME_MAX_LENGTH, USERNAME_MIN_LENGTH, USERNAME_PATTERN_SOURCE, type UpdateNotificationPreferencesRequest, type UpdateProfileDiscoveryRequest, type UpdateProfilePrivacyRequest, type UpdateProfileRequest, type UpdateRoutineRequest, type UpdateRoutineVisibilityRequest, type UpsertSetLogRequest, type UpsertSetLogResponse, type UserId, type UserProfile, type UserSearchResponse, type VolumeTrendPoint, type VolumeTrendQuery, type VolumeTrendResponse, type VolumeTrendSeries, WEIGHT_UNITS, WORKOUT_SESSION_STATUSES, type WeightUnit, type WorkoutAnalyticsStatus, type WorkoutProgressQuery, type WorkoutProgressResponse, type WorkoutSession, type WorkoutSessionId, type WorkoutSessionListResponse, type WorkoutSessionRecap, type WorkoutSessionSnapshotV1, type WorkoutSessionStatus, type WorkoutSessionSummary, type WorkoutStatsQuery, type WorkoutStatsResponse, isWithinQuietHours, routineDayLabel };
1965
+ export { ACHIEVEMENT_CATEGORIES, ACHIEVEMENT_DEFINITIONS, type AchievementCategory, type AchievementCategoryProgress, type AchievementDefinition, type AchievementNotification, type AchievementUnlockedEventPayload, type AchievementsResponse, type AppNotification, BLOCKED_MEMBERS_MAX, type BlockedMember, type BlockedMembersResponse, type Brand, CLONE_ROUTINE_REFUSALS, COMEBACK_MIN_INACTIVE_DAYS, COMEBACK_RECOGNITION_LIMIT, COMEBACK_REQUIRED_ACTIVE_DAYS, COMEBACK_SESSION_LOOKBACK, COMEBACK_WINDOW_DAYS, type CalendarDate, type CloneRoutineRefusal, type CloneRoutineRequest, type ComebackRecognition, type ComebackRecognitionSummary, type CreateReportRequest, type CreateReportResponse, type CreateRoutineDayInput, type CreateRoutineExerciseInput, type CreateRoutineRequest, type CreateRoutineVersionRequest, type CreateSessionShareRequest, type DeletePushSubscriptionRequest, type DiscoverableRoutine, EXERCISE_EQUIPMENT, EXERCISE_MECHANICS, type EarnedAchievement, type EarnedPersonalRecord, type Exercise, type ExerciseEquipment, type ExerciseId, type ExerciseMechanic, type ExercisePerformanceHistoryQuery, type ExercisePerformanceHistoryResponse, type ExercisePerformancePrescription, type ExercisePerformancePrescriptionSet, type ExercisePerformanceSession, type ExercisePerformanceSet, type ExercisePerformanceSummary, type ExercisePlateau, type ExerciseStrengthSummary, type ExerciseStrengthTrendPoint, type ExerciseStrengthTrendQuery, type ExerciseStrengthTrendResponse, FEATURED_PROFILE_ITEMS_MAX, FEATURED_PROFILE_ITEM_KINDS, FEATURED_PROFILE_REFERENCE_MAX_LENGTH, FOLLOW_SUGGESTIONS_DEFAULT_LIMIT, FOLLOW_SUGGESTIONS_MAX_LIMIT, FOLLOW_SUGGESTION_REASONS, type FeaturedProfileAchievementItem, type FeaturedProfileItem, type FeaturedProfileItemKind, type FeaturedProfileRankItem, type FeaturedProfileRecordItem, type FeaturedProfileRoutineItem, type FeaturedProfileSelection, type FeaturedProfileSelectionInput, type FeaturedProfileSelectionsResponse, type FinishStatus, type FinishWorkoutRequest, type FinishWorkoutResponse, type FollowSuggestion, type FollowSuggestionReason, type FollowSuggestionsResponse, type IsoDateString, type ListSessionsParams, MEASURABLE_GOALS_MAX, MEASURABLE_GOAL_DIRECTIONS, MEASURABLE_GOAL_TYPES, MINUTES_IN_DAY, MOVEMENT_PATTERNS, MUSCLE_GROUPS, type MarkNotificationsReadRequest, type MarkNotificationsReadResponse, type MeasurableGoal, type MeasurableGoalDirection, type MeasurableGoalExercise, type MeasurableGoalInput, type MeasurableGoalType, type MemberModerationState, type MemberRoutinesResponse, type MoveOccurrenceRequest, type MovementPattern, type MuscleGroup, type MuscleGroupHeatmapQuery, type MuscleGroupHeatmapResponse, type MuscleGroupHeatmapValue, type MuscleGroupHeatmapWeek, type MuscleVolumeTrendSeries, NOTIFICATIONS_LIST_LIMIT, NOTIFICATIONS_LOOKBACK_DAYS, NOTIFICATIONS_RETENTION_DAYS, NOTIFICATION_CATEGORIES, NOTIFICATION_KINDS, type NewFollowerNotification, type NotificationCategory, type NotificationKind, type NotificationPreferences, type NotificationPreferencesResponse, type NotificationsResponse, PLATEAU_MIN_DAYS_SINCE_BEST, PLATEAU_MIN_SESSIONS, PLATEAU_MIN_SESSIONS_MAX, PLATEAU_MIN_SESSIONS_MIN, PLATEAU_RECENT_DAYS, PLATEAU_WINDOW_DAYS, PREFERRED_TRAINING_STYLE_VALUES, PROFILE_BIO_MAX_LENGTH, PROFILE_FAVORITE_EXERCISES_MAX, PROFILE_LOCATION_MAX_LENGTH, PROFILE_TRAINING_DISCIPLINES_MAX, PROFILE_TRAINING_GOALS_MAX, PROFILE_VISIBILITY_VALUES, PROGRESSION_SCHEMES, PROGRESS_TIMELINE_EVENT_TYPES, PUSH_PAYLOAD_KINDS, PUSH_SUBSCRIPTIONS_MAX, type PaginatedResponse, type PersonalGoalProgress, type PersonalGoalsResponse, type PersonalRecordEntry, type PersonalRecordKind, type PlannedReminder, type PlatePairInventory, type PlateauPreferences, type PlateauSet, type PlateausResponse, type PreferredTrainingStyle, type PreviousPerformanceResponse, type PreviousSessionRecap, type PreviousSetPerformance, type ProfileDiscoverySettings, type ProfileFavoriteExercise, type ProfilePrivacySettings, type ProfileViewerAccess, type ProfileVisibility, type ProgressTimelineEventType, type ProgressTimelineItem, type ProgressTimelinePersonalRecordItem, type ProgressTimelineProgressionItem, type ProgressTimelineQuery, type ProgressTimelineRecordPerformance, type ProgressTimelineRecordReason, type ProgressTimelineResponse, type ProgressTimelineSessionContext, type ProgressionChange, type ProgressionRule, type ProgressionScheme, type ProgressionSetChange, type PublicBodyMetrics, type PublicProfileAchievements, type PublicTrainingSummary, type PublicUserProfile, type PushPayload, type PushPayloadKind, type PushSubscriptionKeys, type PushSubscriptionSummary, type PushSubscriptionsResponse, type QuietHours, RELATIONSHIP_LIST_DEFAULT_LIMIT, RELATIONSHIP_LIST_KINDS, RELATIONSHIP_LIST_MAX_LIMIT, RENAISSANCE_RANK_DEFINITIONS, REPORTS_PER_DAY_MAX, REPORT_DETAILS_MAX_LENGTH, REPORT_REASONS, REPORT_SUBJECT_KINDS, REP_TYPES, RESERVED_USERNAMES, REST_ALERT_MAX_LEAD_SECONDS, REST_ALERT_MIN_LEAD_SECONDS, REST_ALERT_REFUSALS, ROUTINE_DAYS_MAX, ROUTINE_DAY_NAME_MAX, ROUTINE_DISCOVERY_DEFAULT_LIMIT, ROUTINE_DISCOVERY_MAX_LIMIT, ROUTINE_DISCOVERY_SCAN_LIMIT, ROUTINE_DURATION_BANDS, ROUTINE_DURATION_BAND_MAX_MINUTES, ROUTINE_SCHEDULE_MODES, ROUTINE_SHARE_MAX_ACTIVE_LINKS, ROUTINE_VERSIONS_MAX, ROUTINE_VERSION_KINDS, ROUTINE_VERSION_NAME_MAX, ROUTINE_VISIBILITY_VALUES, type RecentActivityEntry, type RegisterPushSubscriptionRequest, type RelationshipListKind, type RelationshipListQuery, type RelationshipListResponse, type RelationshipMember, type RenaissanceRankDefinition, type RenaissanceRankProgress, type RepType, type ReplaceFeaturedProfileItemsRequest, type ReplaceMeasurableGoalsRequest, type ReplaceTrainingLocationsRequest, type ReportReason, type ReportSubjectKind, type RestAlertPushPayload, type RestAlertRefusal, type RestoreRoutineVersionResponse, type Routine, type RoutineClassification, type RoutineDay, type RoutineDayId, type RoutineDiscoveryQuery, type RoutineDiscoveryResponse, type RoutineDurationBand, type RoutineExercise, type RoutineFacets, type RoutineId, type RoutineLineage, type RoutineScheduleMode, type RoutineSet, type RoutineShare, type RoutineShareListResponse, type RoutineVersion, type RoutineVersionDay, type RoutineVersionExercise, type RoutineVersionKind, type RoutineVersionSetup, type RoutineVersionsResponse, type RoutineVisibility, SCHEDULE_MOVE_MAX_DAYS, SCHEDULE_OVERRIDES_MAX_RANGE_DAYS, SCHEDULE_OVERRIDE_KINDS, SCHEDULE_SKIP_PAST_DAYS, SESSION_SHARE_DEFAULT_FIELDS, SESSION_SHARE_FIELDS, SESSION_SHARE_MAX_ACTIVE_LINKS, SEXES, SHARED_ROUTINE_SOURCES, STARRED_EXERCISES_MAX, STREAK_MAX_GAP_DAYS, type ScheduleOverride, type ScheduleOverrideKind, type ScheduleOverridesQuery, type ScheduleOverridesResponse, type ScheduleRestAlertRequest, type ScheduleRestAlertResponse, type SessionComparisonExercise, type SessionComparisonQuery, type SessionComparisonResponse, type SessionComparisonRoutineDay, type SessionComparisonSession, type SessionComparisonSet, type SessionExerciseSubstitution, type SessionProgressNotification, type SessionRecapRecord, type SessionShare, type SessionShareField, type SessionShareListResponse, type SetAccountTimeZoneRequest, type SetLog, type Sex, type SharedRoutine, type SharedRoutineOwner, type SharedRoutineSource, type SharedRoutineSummary, type SharedSessionOwner, type SharedSessionRecap, type SkipOccurrenceRequest, type StarredExercise, type StarredExercisesResponse, type StartWorkoutRequest, type StartWorkoutResponse, type StreakAtRiskPushPayload, type StreakMilestoneEventPayload, type SubstituteSessionExerciseRequest, type SubstituteSessionExerciseResponse, type SupabaseAuthResponse, type SupabaseAuthUser, type SupabaseMigrationResponse, TRAINING_DISCIPLINE_VALUES, TRAINING_EVENT_TYPES, TRAINING_EXPERIENCE_LEVEL_VALUES, TRAINING_GOAL_VALUES, type TrainingDiscipline, type TrainingEventType, type TrainingExperienceLevel, type TrainingGoal, type TrainingIdentity, type TrainingLocationPreference, type TrainingLocationPreferenceInput, type TrainingReminderPreference, type TrainingReminderPushPayload, USERNAME_MAX_LENGTH, USERNAME_MIN_LENGTH, USERNAME_PATTERN_SOURCE, type UpdateNotificationPreferencesRequest, type UpdateProfileDiscoveryRequest, type UpdateProfilePrivacyRequest, type UpdateProfileRequest, type UpdateRoutineRequest, type UpdateRoutineVisibilityRequest, type UpsertSetLogRequest, type UpsertSetLogResponse, type UserId, type UserProfile, type UserSearchResponse, type VolumeTrendPoint, type VolumeTrendQuery, type VolumeTrendResponse, type VolumeTrendSeries, WEIGHT_UNITS, WORKOUT_SESSION_STATUSES, type WeightUnit, type WorkoutAnalyticsStatus, type WorkoutProgressQuery, type WorkoutProgressResponse, type WorkoutSession, type WorkoutSessionId, type WorkoutSessionListResponse, type WorkoutSessionRecap, type WorkoutSessionSnapshotV1, type WorkoutSessionStatus, type WorkoutSessionSummary, type WorkoutStatsQuery, type WorkoutStatsResponse, isWithinQuietHours, routineDayLabel };
package/dist/index.js CHANGED
@@ -130,6 +130,20 @@ var FOLLOW_SUGGESTION_REASONS = [
130
130
  "FOLLOWED_BY_PEOPLE_YOU_FOLLOW"
131
131
  ];
132
132
 
133
+ // src/moderation.ts
134
+ var BLOCKED_MEMBERS_MAX = 500;
135
+ var REPORT_SUBJECT_KINDS = ["MEMBER", "ROUTINE", "SESSION"];
136
+ var REPORT_REASONS = [
137
+ "SPAM",
138
+ "HARASSMENT",
139
+ "IMPERSONATION",
140
+ "UNSAFE_ADVICE",
141
+ "SEXUAL_CONTENT",
142
+ "OTHER"
143
+ ];
144
+ var REPORT_DETAILS_MAX_LENGTH = 500;
145
+ var REPORTS_PER_DAY_MAX = 20;
146
+
133
147
  // src/exercise.ts
134
148
  var MOVEMENT_PATTERNS = [
135
149
  "HORIZONTAL_PUSH",
@@ -332,6 +346,13 @@ var CLONE_ROUTINE_REFUSALS = {
332
346
  UNKNOWN_EXERCISE: "UNKNOWN_EXERCISE"
333
347
  };
334
348
 
349
+ // src/routine-discovery.ts
350
+ var ROUTINE_DURATION_BANDS = ["SHORT", "MEDIUM", "LONG"];
351
+ var ROUTINE_DURATION_BAND_MAX_MINUTES = { SHORT: 45, MEDIUM: 75 };
352
+ var ROUTINE_DISCOVERY_DEFAULT_LIMIT = 20;
353
+ var ROUTINE_DISCOVERY_MAX_LIMIT = 50;
354
+ var ROUTINE_DISCOVERY_SCAN_LIMIT = 500;
355
+
335
356
  // src/schedule.ts
336
357
  var SCHEDULE_OVERRIDE_KINDS = ["MOVE", "SKIP"];
337
358
  var SCHEDULE_MOVE_MAX_DAYS = 6;
@@ -423,6 +444,7 @@ var STREAK_MAX_GAP_DAYS = 3;
423
444
  export {
424
445
  ACHIEVEMENT_CATEGORIES,
425
446
  ACHIEVEMENT_DEFINITIONS,
447
+ BLOCKED_MEMBERS_MAX,
426
448
  CLONE_ROUTINE_REFUSALS,
427
449
  COMEBACK_MIN_INACTIVE_DAYS,
428
450
  COMEBACK_RECOGNITION_LIMIT,
@@ -469,6 +491,10 @@ export {
469
491
  RELATIONSHIP_LIST_KINDS,
470
492
  RELATIONSHIP_LIST_MAX_LIMIT,
471
493
  RENAISSANCE_RANK_DEFINITIONS,
494
+ REPORTS_PER_DAY_MAX,
495
+ REPORT_DETAILS_MAX_LENGTH,
496
+ REPORT_REASONS,
497
+ REPORT_SUBJECT_KINDS,
472
498
  REP_TYPES,
473
499
  RESERVED_USERNAMES,
474
500
  REST_ALERT_MAX_LEAD_SECONDS,
@@ -476,6 +502,11 @@ export {
476
502
  REST_ALERT_REFUSALS,
477
503
  ROUTINE_DAYS_MAX,
478
504
  ROUTINE_DAY_NAME_MAX,
505
+ ROUTINE_DISCOVERY_DEFAULT_LIMIT,
506
+ ROUTINE_DISCOVERY_MAX_LIMIT,
507
+ ROUTINE_DISCOVERY_SCAN_LIMIT,
508
+ ROUTINE_DURATION_BANDS,
509
+ ROUTINE_DURATION_BAND_MAX_MINUTES,
479
510
  ROUTINE_SCHEDULE_MODES,
480
511
  ROUTINE_SHARE_MAX_ACTIVE_LINKS,
481
512
  ROUTINE_VERSIONS_MAX,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sunsteel/contracts",
3
- "version": "0.50.0",
3
+ "version": "0.52.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/ezee969/sunsteel-contracts.git"