@hexclave/shared 1.0.10 → 1.0.12

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 (77) hide show
  1. package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.d.ts.map +1 -1
  2. package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js +11 -4
  3. package/dist/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js.map +1 -1
  4. package/dist/config/schema.d.ts +172 -172
  5. package/dist/config-rendering.d.ts.map +1 -1
  6. package/dist/config-rendering.js +7 -2
  7. package/dist/config-rendering.js.map +1 -1
  8. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.d.ts.map +1 -1
  9. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js +11 -4
  10. package/dist/esm/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.js.map +1 -1
  11. package/dist/esm/config/schema.d.ts +172 -172
  12. package/dist/esm/config-rendering.d.ts.map +1 -1
  13. package/dist/esm/config-rendering.js +7 -2
  14. package/dist/esm/config-rendering.js.map +1 -1
  15. package/dist/esm/hexclave-config-file.d.ts.map +1 -1
  16. package/dist/esm/hexclave-config-file.js +2 -1
  17. package/dist/esm/hexclave-config-file.js.map +1 -1
  18. package/dist/esm/interface/admin-interface.d.ts +9 -1
  19. package/dist/esm/interface/admin-interface.d.ts.map +1 -1
  20. package/dist/esm/interface/admin-interface.js +32 -2
  21. package/dist/esm/interface/admin-interface.js.map +1 -1
  22. package/dist/esm/interface/admin-metrics.d.ts +123 -7
  23. package/dist/esm/interface/admin-metrics.d.ts.map +1 -1
  24. package/dist/esm/interface/admin-metrics.js +21 -2
  25. package/dist/esm/interface/admin-metrics.js.map +1 -1
  26. package/dist/esm/interface/conversations.d.ts +3 -3
  27. package/dist/esm/interface/crud/current-user.d.ts +5 -5
  28. package/dist/esm/interface/crud/email-outbox.d.ts +64 -64
  29. package/dist/esm/interface/crud/project-api-keys.d.ts +1 -1
  30. package/dist/esm/interface/crud/team-member-profiles.d.ts +8 -8
  31. package/dist/esm/interface/crud/users.d.ts +2 -2
  32. package/dist/esm/schema-fields.d.ts.map +1 -1
  33. package/dist/esm/schema-fields.js +1 -1
  34. package/dist/esm/schema-fields.js.map +1 -1
  35. package/dist/esm/sessions.d.ts +17 -7
  36. package/dist/esm/sessions.d.ts.map +1 -1
  37. package/dist/esm/sessions.js +20 -2
  38. package/dist/esm/sessions.js.map +1 -1
  39. package/dist/esm/sessions.test.d.ts +1 -0
  40. package/dist/esm/sessions.test.js +178 -0
  41. package/dist/esm/sessions.test.js.map +1 -0
  42. package/dist/hexclave-config-file.d.ts.map +1 -1
  43. package/dist/hexclave-config-file.js +2 -1
  44. package/dist/hexclave-config-file.js.map +1 -1
  45. package/dist/interface/admin-interface.d.ts +9 -1
  46. package/dist/interface/admin-interface.d.ts.map +1 -1
  47. package/dist/interface/admin-interface.js +32 -2
  48. package/dist/interface/admin-interface.js.map +1 -1
  49. package/dist/interface/admin-metrics.d.ts +123 -7
  50. package/dist/interface/admin-metrics.d.ts.map +1 -1
  51. package/dist/interface/admin-metrics.js +22 -1
  52. package/dist/interface/admin-metrics.js.map +1 -1
  53. package/dist/interface/conversations.d.ts +3 -3
  54. package/dist/interface/crud/current-user.d.ts +5 -5
  55. package/dist/interface/crud/email-outbox.d.ts +64 -64
  56. package/dist/interface/crud/project-api-keys.d.ts +1 -1
  57. package/dist/interface/crud/team-member-profiles.d.ts +8 -8
  58. package/dist/interface/crud/users.d.ts +2 -2
  59. package/dist/schema-fields.d.ts.map +1 -1
  60. package/dist/schema-fields.js +1 -1
  61. package/dist/schema-fields.js.map +1 -1
  62. package/dist/sessions.d.ts +17 -7
  63. package/dist/sessions.d.ts.map +1 -1
  64. package/dist/sessions.js +20 -2
  65. package/dist/sessions.js.map +1 -1
  66. package/dist/sessions.test.d.ts +1 -0
  67. package/dist/sessions.test.js +178 -0
  68. package/dist/sessions.test.js.map +1 -0
  69. package/package.json +1 -1
  70. package/src/ai/unified-prompts/skill-site-prompt-parts/ai-setup-prompt.ts +11 -4
  71. package/src/config-rendering.ts +11 -2
  72. package/src/hexclave-config-file.ts +7 -1
  73. package/src/interface/admin-interface.ts +49 -2
  74. package/src/interface/admin-metrics.ts +33 -2
  75. package/src/schema-fields.ts +4 -1
  76. package/src/sessions.test.ts +147 -0
  77. package/src/sessions.ts +26 -0
@@ -1 +1 @@
1
- {"version":3,"file":"admin-metrics.js","names":[],"sources":["../../src/interface/admin-metrics.ts"],"sourcesContent":["import yup from \"yup\";\nimport { yupArray, yupMixed, yupNumber, yupObject, yupRecord, yupString } from \"../schema-fields\";\n\n// Single source of truth for the `/internal/metrics` endpoint shape.\n//\n// Both the backend route handler (`apps/backend/src/app/api/latest/internal/metrics/route.tsx`)\n// and the dashboard hook (`apps/dashboard/src/lib/hexclave-app-internals.ts`) import\n// these schemas. The runtime validation lives in the schemas; the static types\n// are derived via `yup.InferType` so we never have to keep parallel copies in\n// sync.\n\nexport const MetricsDataPointSchema = yupObject({\n date: yupString().defined(),\n activity: yupNumber().defined(),\n}).defined();\n\nexport const MetricsDataPointsSchema = yupArray(MetricsDataPointSchema).defined();\n\nexport const MetricsActivitySplitSchema = yupObject({\n total: MetricsDataPointsSchema,\n new: MetricsDataPointsSchema,\n retained: MetricsDataPointsSchema,\n reactivated: MetricsDataPointsSchema,\n}).defined();\n\nexport const MetricsAuthOverviewSchema = yupObject({\n verified_users: yupNumber().integer().defined(),\n unverified_users: yupNumber().integer().defined(),\n anonymous_users: yupNumber().integer().defined(),\n total_teams: yupNumber().integer().defined(),\n mau: yupNumber().integer().defined(),\n daily_active_users_split: MetricsActivitySplitSchema,\n daily_active_teams_split: MetricsActivitySplitSchema,\n total_users_filtered: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsPaymentsOverviewSchema = yupObject({\n subscriptions_by_status: yupRecord(yupString().defined(), yupNumber().defined()).defined(),\n active_subscription_count: yupNumber().integer().defined(),\n total_one_time_purchases: yupNumber().integer().defined(),\n daily_subscriptions: MetricsDataPointsSchema,\n revenue_cents: yupNumber().integer().defined(),\n mrr_cents: yupNumber().integer().defined(),\n total_orders: yupNumber().integer().defined(),\n checkout_conversion_rate: yupNumber().defined(),\n}).defined();\n\nexport const MetricsRecentEmailSchema = yupObject({\n id: yupString().defined(),\n status: yupString().defined(),\n subject: yupString().defined(),\n created_at_millis: yupNumber().defined(),\n}).defined();\n\nexport const MetricsDailyEmailStatusBreakdownSchema = yupObject({\n date: yupString().defined(),\n ok: yupNumber().integer().defined(),\n error: yupNumber().integer().defined(),\n in_progress: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsEmailOverviewSchema = yupObject({\n emails_by_status: yupRecord(yupString().defined(), yupNumber().defined()).defined(),\n total_emails: yupNumber().integer().defined(),\n daily_emails: MetricsDataPointsSchema,\n daily_emails_by_status: yupArray(MetricsDailyEmailStatusBreakdownSchema).defined(),\n emails_sent: yupNumber().integer().defined(),\n recent_emails: yupArray(MetricsRecentEmailSchema).defined(),\n deliverability_status: yupObject({\n delivered: yupNumber().integer().defined(),\n bounced: yupNumber().integer().defined(),\n error: yupNumber().integer().defined(),\n in_progress: yupNumber().integer().defined(),\n }).defined(),\n deliverability_rate: yupNumber().defined(),\n bounce_rate: yupNumber().defined(),\n click_rate: yupNumber().defined(),\n}).defined();\n\nexport const MetricsDailyRevenuePointSchema = yupObject({\n date: yupString().defined(),\n new_cents: yupNumber().integer().defined(),\n refund_cents: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsTopReferrerSchema = yupObject({\n referrer: yupString().defined(),\n visitors: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsTopRegionSchema = yupObject({\n country_code: yupString().nullable().defined(),\n region_code: yupString().nullable().defined(),\n count: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsAnalyticsOverviewSchema = yupObject({\n daily_page_views: MetricsDataPointsSchema,\n daily_clicks: MetricsDataPointsSchema,\n daily_visitors: MetricsDataPointsSchema,\n // Token-refresh-derived anonymous-visitor fallback. Populated only when the\n // analytics app isn't installed (no `$page-view` events) — counts DISTINCT\n // anonymous users per day from the events table. See\n // `loadAnonymousVisitorsFromTokenRefresh` in the backend metrics route.\n //\n // Optional for one release cycle so older clients/servers don't hard-fail\n // validation during a staged rollout. Tighten to `.defined()` after.\n daily_anonymous_visitors_fallback: yupArray(MetricsDataPointSchema).optional().default([]),\n daily_revenue: yupArray(MetricsDailyRevenuePointSchema).defined(),\n total_revenue_cents: yupNumber().integer().defined(),\n total_replays: yupNumber().integer().defined(),\n recent_replays: yupNumber().integer().defined(),\n visitors: yupNumber().integer().defined(),\n anonymous_visitors_fallback: yupNumber().integer().optional().default(0),\n avg_session_seconds: yupNumber().defined(),\n online_live: yupNumber().integer().defined(),\n revenue_per_visitor: yupNumber().defined(),\n top_referrers: yupArray(MetricsTopReferrerSchema).defined(),\n top_region: MetricsTopRegionSchema.nullable().defined(),\n // dev-fallback fields (only present in non-production environments)\n bounce_rate: yupNumber().optional(),\n conversion_rate: yupNumber().optional(),\n deltas: yupMixed().optional(),\n}).defined();\n\nexport const MetricsLoginMethodEntrySchema = yupObject({\n method: yupString().defined(),\n count: yupNumber().integer().defined(),\n}).defined();\n\n// Recent user summary — a slim projection of UsersCrud[\"Admin\"][\"Read\"] with\n// just the fields the overview list views actually read. Defined here so the\n// metrics response stays self-contained and doesn't pull in users-crud.\n//\n// `.noUnknown(false)` tells our strict object validator to allow the extra\n// fields that the backend returns as part of the full users-crud payload —\n// `is_anonymous`, `has_password`, `oauth_providers`, etc. — without rejecting\n// them. Only the keys explicitly listed here are validated; extras pass through.\nexport const MetricsRecentUserSchema = yupObject({\n id: yupString().defined(),\n display_name: yupString().nullable().defined(),\n primary_email: yupString().nullable().defined(),\n profile_image_url: yupString().nullable().defined(),\n signed_up_at_millis: yupNumber().defined(),\n last_active_at_millis: yupNumber().nullable().defined(),\n}).noUnknown(false).defined();\n\n// Per-user activity heatmap — a simple list of daily event counts for a single\n// user. Backed by ClickHouse `analytics_internal.events` filtered by user_id,\n// project_id, and branch_id. See `/internal/user-activity` on the backend.\nexport const UserActivityResponseBodySchema = yupObject({\n data_points: MetricsDataPointsSchema,\n}).defined();\n\n// Recent \"currently live\" users keyed by ISO country code. Populated by\n// joining a bounded ClickHouse selection from the live `$token-refresh` window\n// with the corresponding Prisma profile rows, so the overview globe can render\n// real avatars of real users from each country. Optional for one release cycle\n// so clients talking to older servers don't fail validation on the returned\n// body.\nexport const MetricsActiveUsersByCountrySchema = yupRecord(\n yupString().defined(),\n yupArray(MetricsRecentUserSchema).defined(),\n).optional().default({});\n\nexport const MetricsResponseBodySchema = yupObject({\n total_users: yupNumber().integer().defined(),\n // Count of distinct users seen refreshing a token in the last ~2 minutes —\n // the \"who's online right now\" number rendered on the overview globe. Derived\n // from the same `$token-refresh` window that powers `active_users_by_country`,\n // so it works for every project regardless of whether the analytics app\n // (page-view-based `analytics_overview.online_live`) is installed.\n //\n // Optional for one release cycle so older servers don't fail schema\n // validation on the returned body. Tighten to `.defined()` after.\n live_users: yupNumber().integer().optional().default(0),\n daily_users: MetricsDataPointsSchema,\n daily_active_users: MetricsDataPointsSchema,\n users_by_country: yupRecord(yupString().defined(), yupNumber().defined()).defined(),\n active_users_by_country: MetricsActiveUsersByCountrySchema,\n // recently_registered/active are CRUD User objects passed through from the\n // backend. The schema only validates the fields the dashboard actually\n // reads — extra fields from UsersCrud[\"Admin\"][\"Read\"] are allowed through.\n recently_registered: yupArray(MetricsRecentUserSchema).defined(),\n recently_active: yupArray(MetricsRecentUserSchema).defined(),\n login_methods: yupArray(MetricsLoginMethodEntrySchema).defined(),\n auth_overview: MetricsAuthOverviewSchema,\n payments_overview: MetricsPaymentsOverviewSchema,\n email_overview: MetricsEmailOverviewSchema,\n analytics_overview: MetricsAnalyticsOverviewSchema,\n}).defined();\n\nexport const MetricsUserCountsSchema = yupObject({\n total_users: yupNumber().integer().defined(),\n anonymous_users: yupNumber().integer().defined(),\n}).defined();\n\n// Derived static types — single source of truth lives in the schemas above.\nexport type MetricsDataPoint = yup.InferType<typeof MetricsDataPointSchema>;\nexport type MetricsActivitySplit = yup.InferType<typeof MetricsActivitySplitSchema>;\nexport type MetricsAuthOverview = yup.InferType<typeof MetricsAuthOverviewSchema>;\nexport type MetricsPaymentsOverview = yup.InferType<typeof MetricsPaymentsOverviewSchema>;\nexport type MetricsRecentEmail = yup.InferType<typeof MetricsRecentEmailSchema>;\nexport type MetricsDailyEmailStatusBreakdown = yup.InferType<typeof MetricsDailyEmailStatusBreakdownSchema>;\nexport type MetricsEmailOverview = yup.InferType<typeof MetricsEmailOverviewSchema>;\nexport type MetricsDailyRevenuePoint = yup.InferType<typeof MetricsDailyRevenuePointSchema>;\nexport type MetricsTopReferrer = yup.InferType<typeof MetricsTopReferrerSchema>;\nexport type MetricsTopRegion = yup.InferType<typeof MetricsTopRegionSchema>;\nexport type MetricsAnalyticsOverview = yup.InferType<typeof MetricsAnalyticsOverviewSchema>;\nexport type MetricsLoginMethodEntry = yup.InferType<typeof MetricsLoginMethodEntrySchema>;\nexport type MetricsRecentUser = yup.InferType<typeof MetricsRecentUserSchema>;\nexport type MetricsResponse = yup.InferType<typeof MetricsResponseBodySchema>;\nexport type MetricsUserCounts = yup.InferType<typeof MetricsUserCountsSchema>;\nexport type UserActivityResponse = yup.InferType<typeof UserActivityResponseBodySchema>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"admin-metrics.js","names":[],"sources":["../../src/interface/admin-metrics.ts"],"sourcesContent":["import yup from \"yup\";\nimport { yupArray, yupMixed, yupNumber, yupObject, yupRecord, yupString } from \"../schema-fields\";\n\n// Single source of truth for the `/internal/metrics` endpoint shape.\n//\n// Both the backend route handler (`apps/backend/src/app/api/latest/internal/metrics/route.tsx`)\n// and the dashboard hook (`apps/dashboard/src/lib/hexclave-app-internals.ts`) import\n// these schemas. The runtime validation lives in the schemas; the static types\n// are derived via `yup.InferType` so we never have to keep parallel copies in\n// sync.\n\nexport const MetricsDataPointSchema = yupObject({\n date: yupString().defined(),\n activity: yupNumber().defined(),\n}).defined();\n\nexport const MetricsDataPointsSchema = yupArray(MetricsDataPointSchema).defined();\n\nexport const MetricsActivitySplitSchema = yupObject({\n total: MetricsDataPointsSchema,\n new: MetricsDataPointsSchema,\n retained: MetricsDataPointsSchema,\n reactivated: MetricsDataPointsSchema,\n}).defined();\n\nexport const MetricsAuthOverviewSchema = yupObject({\n verified_users: yupNumber().integer().defined(),\n unverified_users: yupNumber().integer().defined(),\n anonymous_users: yupNumber().integer().defined(),\n total_teams: yupNumber().integer().defined(),\n mau: yupNumber().integer().defined(),\n daily_active_users_split: MetricsActivitySplitSchema,\n daily_active_teams_split: MetricsActivitySplitSchema,\n total_users_filtered: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsPaymentsOverviewSchema = yupObject({\n subscriptions_by_status: yupRecord(yupString().defined(), yupNumber().defined()).defined(),\n active_subscription_count: yupNumber().integer().defined(),\n total_one_time_purchases: yupNumber().integer().defined(),\n daily_subscriptions: MetricsDataPointsSchema,\n revenue_cents: yupNumber().integer().defined(),\n mrr_cents: yupNumber().integer().defined(),\n total_orders: yupNumber().integer().defined(),\n checkout_conversion_rate: yupNumber().defined(),\n}).defined();\n\nexport const MetricsRecentEmailSchema = yupObject({\n id: yupString().defined(),\n status: yupString().defined(),\n subject: yupString().defined(),\n created_at_millis: yupNumber().defined(),\n}).defined();\n\nexport const MetricsDailyEmailStatusBreakdownSchema = yupObject({\n date: yupString().defined(),\n ok: yupNumber().integer().defined(),\n error: yupNumber().integer().defined(),\n in_progress: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsEmailOverviewSchema = yupObject({\n emails_by_status: yupRecord(yupString().defined(), yupNumber().defined()).defined(),\n total_emails: yupNumber().integer().defined(),\n daily_emails: MetricsDataPointsSchema,\n daily_emails_by_status: yupArray(MetricsDailyEmailStatusBreakdownSchema).defined(),\n emails_sent: yupNumber().integer().defined(),\n recent_emails: yupArray(MetricsRecentEmailSchema).defined(),\n deliverability_status: yupObject({\n delivered: yupNumber().integer().defined(),\n bounced: yupNumber().integer().defined(),\n error: yupNumber().integer().defined(),\n in_progress: yupNumber().integer().defined(),\n }).defined(),\n deliverability_rate: yupNumber().defined(),\n bounce_rate: yupNumber().defined(),\n click_rate: yupNumber().defined(),\n}).defined();\n\nexport const MetricsDailyRevenuePointSchema = yupObject({\n date: yupString().defined(),\n new_cents: yupNumber().integer().defined(),\n refund_cents: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsTopReferrerSchema = yupObject({\n referrer: yupString().defined(),\n visitors: yupNumber().integer().defined(),\n}).defined();\n\n// Named-count breakdowns used by the analytics overview for top browsers,\n// operating systems, and device classes (Desktop / Mobile / Tablet).\nexport const MetricsNamedCountSchema = yupObject({\n name: yupString().defined(),\n visitors: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsTopRegionSchema = yupObject({\n country_code: yupString().nullable().defined(),\n region_code: yupString().nullable().defined(),\n count: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsTopCountrySchema = yupObject({\n country_code: yupString().defined(),\n count: yupNumber().integer().defined(),\n}).defined();\n\nexport const MetricsAnalyticsOverviewSchema = yupObject({\n daily_page_views: MetricsDataPointsSchema,\n daily_clicks: MetricsDataPointsSchema,\n daily_visitors: MetricsDataPointsSchema,\n hourly_page_views: yupArray(MetricsDataPointSchema).optional().default([]),\n hourly_active_users: yupArray(MetricsDataPointSchema).optional().default([]),\n hourly_visitors: yupArray(MetricsDataPointSchema).optional().default([]),\n // Token-refresh-derived anonymous-visitor fallback. Populated only when the\n // analytics app isn't installed (no `$page-view` events) — counts DISTINCT\n // anonymous users per day from the events table. See\n // `loadAnonymousVisitorsFromTokenRefresh` in the backend metrics route.\n //\n // Optional for one release cycle so older clients/servers don't hard-fail\n // validation during a staged rollout. Tighten to `.defined()` after.\n daily_anonymous_visitors_fallback: yupArray(MetricsDataPointSchema).optional().default([]),\n daily_revenue: yupArray(MetricsDailyRevenuePointSchema).defined(),\n total_revenue_cents: yupNumber().integer().defined(),\n total_replays: yupNumber().integer().defined(),\n recent_replays: yupNumber().integer().defined(),\n visitors: yupNumber().integer().defined(),\n anonymous_visitors_fallback: yupNumber().integer().optional().default(0),\n avg_session_seconds: yupNumber().defined(),\n online_live: yupNumber().integer().defined(),\n revenue_per_visitor: yupNumber().defined(),\n top_referrers: yupArray(MetricsTopReferrerSchema).defined(),\n top_region: MetricsTopRegionSchema.nullable().defined(),\n top_regions: yupArray(MetricsTopCountrySchema).optional().default([]),\n // Weighted across the window: sum(bounced)/sum(sessions) * 100. .optional()\n // for one release cycle so older servers (that don't return it yet) don't\n // hard-fail validation; default to 0 so consumers can read unconditionally.\n bounce_rate: yupNumber().optional().default(0),\n daily_bounce_rate: yupArray(MetricsDataPointSchema).optional().default([]),\n daily_avg_session_seconds: yupArray(MetricsDataPointSchema).optional().default([]),\n // User-Agent-derived breakdowns for the analytics overview. Computed from the\n // `data.user_agent` blob on `$page-view` events (captured client-side only,\n // no server-side fallback). Optional + default-[] for one release cycle\n // so older clients / servers without UA capture don't fail validation.\n top_browsers: yupArray(MetricsNamedCountSchema).optional().default([]),\n top_operating_systems: yupArray(MetricsNamedCountSchema).optional().default([]),\n top_devices: yupArray(MetricsNamedCountSchema).optional().default([]),\n conversion_rate: yupNumber().optional(),\n deltas: yupMixed().optional(),\n}).defined();\n\nexport const MetricsLoginMethodEntrySchema = yupObject({\n method: yupString().defined(),\n count: yupNumber().integer().defined(),\n}).defined();\n\n// Recent user summary — a slim projection of UsersCrud[\"Admin\"][\"Read\"] with\n// just the fields the overview list views actually read. Defined here so the\n// metrics response stays self-contained and doesn't pull in users-crud.\n//\n// `.noUnknown(false)` tells our strict object validator to allow the extra\n// fields that the backend returns as part of the full users-crud payload —\n// `is_anonymous`, `has_password`, `oauth_providers`, etc. — without rejecting\n// them. Only the keys explicitly listed here are validated; extras pass through.\nexport const MetricsRecentUserSchema = yupObject({\n id: yupString().defined(),\n display_name: yupString().nullable().defined(),\n primary_email: yupString().nullable().defined(),\n profile_image_url: yupString().nullable().defined(),\n signed_up_at_millis: yupNumber().defined(),\n last_active_at_millis: yupNumber().nullable().defined(),\n}).noUnknown(false).defined();\n\n// Per-user activity heatmap — a simple list of daily event counts for a single\n// user. Backed by ClickHouse `analytics_internal.events` filtered by user_id,\n// project_id, and branch_id. See `/internal/user-activity` on the backend.\nexport const UserActivityResponseBodySchema = yupObject({\n data_points: MetricsDataPointsSchema,\n}).defined();\n\n// Recent \"currently live\" users keyed by ISO country code. Populated by\n// joining a bounded ClickHouse selection from the live `$token-refresh` window\n// with the corresponding Prisma profile rows, so the overview globe can render\n// real avatars of real users from each country. Optional for one release cycle\n// so clients talking to older servers don't fail validation on the returned\n// body.\nexport const MetricsActiveUsersByCountrySchema = yupRecord(\n yupString().defined(),\n yupArray(MetricsRecentUserSchema).defined(),\n).optional().default({});\n\nexport const MetricsResponseBodySchema = yupObject({\n total_users: yupNumber().integer().defined(),\n // Count of distinct users seen refreshing a token in the last ~2 minutes —\n // the \"who's online right now\" number rendered on the overview globe. Derived\n // from the same `$token-refresh` window that powers `active_users_by_country`,\n // so it works for every project regardless of whether the analytics app\n // (page-view-based `analytics_overview.online_live`) is installed.\n //\n // Optional for one release cycle so older servers don't fail schema\n // validation on the returned body. Tighten to `.defined()` after.\n live_users: yupNumber().integer().optional().default(0),\n daily_users: MetricsDataPointsSchema,\n daily_active_users: MetricsDataPointsSchema,\n hourly_users: yupArray(MetricsDataPointSchema).optional().default([]),\n hourly_active_users: yupArray(MetricsDataPointSchema).optional().default([]),\n users_by_country: yupRecord(yupString().defined(), yupNumber().defined()).defined(),\n active_users_by_country: MetricsActiveUsersByCountrySchema,\n // recently_registered/active are CRUD User objects passed through from the\n // backend. The schema only validates the fields the dashboard actually\n // reads — extra fields from UsersCrud[\"Admin\"][\"Read\"] are allowed through.\n recently_registered: yupArray(MetricsRecentUserSchema).defined(),\n recently_active: yupArray(MetricsRecentUserSchema).defined(),\n login_methods: yupArray(MetricsLoginMethodEntrySchema).defined(),\n auth_overview: MetricsAuthOverviewSchema,\n payments_overview: MetricsPaymentsOverviewSchema,\n email_overview: MetricsEmailOverviewSchema,\n analytics_overview: MetricsAnalyticsOverviewSchema,\n}).defined();\n\nexport const MetricsUserCountsSchema = yupObject({\n total_users: yupNumber().integer().defined(),\n anonymous_users: yupNumber().integer().defined(),\n}).defined();\n\n// Derived static types — single source of truth lives in the schemas above.\nexport type MetricsDataPoint = yup.InferType<typeof MetricsDataPointSchema>;\nexport type MetricsActivitySplit = yup.InferType<typeof MetricsActivitySplitSchema>;\nexport type MetricsAuthOverview = yup.InferType<typeof MetricsAuthOverviewSchema>;\nexport type MetricsPaymentsOverview = yup.InferType<typeof MetricsPaymentsOverviewSchema>;\nexport type MetricsRecentEmail = yup.InferType<typeof MetricsRecentEmailSchema>;\nexport type MetricsDailyEmailStatusBreakdown = yup.InferType<typeof MetricsDailyEmailStatusBreakdownSchema>;\nexport type MetricsEmailOverview = yup.InferType<typeof MetricsEmailOverviewSchema>;\nexport type MetricsDailyRevenuePoint = yup.InferType<typeof MetricsDailyRevenuePointSchema>;\nexport type MetricsTopReferrer = yup.InferType<typeof MetricsTopReferrerSchema>;\nexport type MetricsTopRegion = yup.InferType<typeof MetricsTopRegionSchema>;\nexport type MetricsTopCountry = yup.InferType<typeof MetricsTopCountrySchema>;\nexport type MetricsNamedCount = yup.InferType<typeof MetricsNamedCountSchema>;\nexport type MetricsAnalyticsOverview = yup.InferType<typeof MetricsAnalyticsOverviewSchema>;\nexport type MetricsLoginMethodEntry = yup.InferType<typeof MetricsLoginMethodEntrySchema>;\nexport type MetricsRecentUser = yup.InferType<typeof MetricsRecentUserSchema>;\nexport type MetricsResponse = yup.InferType<typeof MetricsResponseBodySchema>;\nexport type MetricsUserCounts = yup.InferType<typeof MetricsUserCountsSchema>;\nexport type UserActivityResponse = yup.InferType<typeof UserActivityResponseBodySchema>;\n"],"mappings":"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"}
@@ -56,9 +56,9 @@ declare const conversationSummarySchema: yup$1.ObjectSchema<{
56
56
  preview: string | null;
57
57
  lastActivityAt: string;
58
58
  metadata: {
59
+ tags: string[];
59
60
  assignedToUserId: string | null;
60
61
  assignedToDisplayName: string | null;
61
- tags: string[];
62
62
  firstResponseDueAt: string | null;
63
63
  firstResponseAt: string | null;
64
64
  nextResponseDueAt: string | null;
@@ -187,9 +187,9 @@ declare const conversationListResponseSchema: yup$1.ObjectSchema<{
187
187
  preview: string | null;
188
188
  lastActivityAt: string;
189
189
  metadata: {
190
+ tags: string[];
190
191
  assignedToUserId: string | null;
191
192
  assignedToDisplayName: string | null;
192
- tags: string[];
193
193
  firstResponseDueAt: string | null;
194
194
  firstResponseAt: string | null;
195
195
  nextResponseDueAt: string | null;
@@ -225,9 +225,9 @@ declare const conversationDetailResponseSchema: yup$1.ObjectSchema<{
225
225
  preview: string | null;
226
226
  lastActivityAt: string;
227
227
  metadata: {
228
+ tags: string[];
228
229
  assignedToUserId: string | null;
229
230
  assignedToDisplayName: string | null;
230
- tags: string[];
231
231
  firstResponseDueAt: string | null;
232
232
  firstResponseAt: string | null;
233
233
  nextResponseDueAt: string | null;
@@ -4,18 +4,18 @@ import * as yup$1 from "yup";
4
4
  //#region src/interface/crud/current-user.d.ts
5
5
  declare const currentUserCrud: CrudSchemaFromOptions<{
6
6
  clientReadSchema: yup$1.ObjectSchema<{
7
+ selected_team_id: string | null;
8
+ is_anonymous: boolean;
9
+ is_restricted: boolean;
7
10
  restricted_reason: {
8
11
  type: "anonymous" | "email_not_verified" | "restricted_by_administrator";
9
12
  } | null;
13
+ requires_totp_mfa: boolean;
10
14
  primary_email: string | null;
11
15
  display_name: string | null;
12
16
  client_metadata: {} | null;
13
17
  client_read_only_metadata: {} | null;
14
18
  id: string;
15
- selected_team_id: string | null;
16
- is_anonymous: boolean;
17
- is_restricted: boolean;
18
- requires_totp_mfa: boolean;
19
19
  profile_image_url: string | null;
20
20
  signed_up_at_millis: number;
21
21
  primary_email_verified: boolean;
@@ -172,10 +172,10 @@ declare const currentUserCrud: CrudSchemaFromOptions<{
172
172
  requires_totp_mfa: undefined;
173
173
  }, "">;
174
174
  clientUpdateSchema: yup$1.ObjectSchema<{
175
+ selected_team_id: string | null | undefined;
175
176
  primary_email: string | null | undefined;
176
177
  display_name: string | null | undefined;
177
178
  client_metadata: {} | null | undefined;
178
- selected_team_id: string | null | undefined;
179
179
  profile_image_url: string | null | undefined;
180
180
  otp_auth_enabled: boolean | undefined;
181
181
  passkey_auth_enabled: boolean | undefined;
@@ -10,11 +10,11 @@ declare const emailOutboxReadSchema: yup$1.MixedSchema<{
10
10
  tsx_source: string;
11
11
  theme_id: string | null;
12
12
  to: {
13
- user_id: string;
14
13
  type: "user-primary-email";
15
- } | {
16
14
  user_id: string;
15
+ } | {
17
16
  type: "user-custom-emails";
17
+ user_id: string;
18
18
  emails: string[];
19
19
  } | {
20
20
  type: "custom-emails";
@@ -48,11 +48,11 @@ declare const emailOutboxReadSchema: yup$1.MixedSchema<{
48
48
  tsx_source: string;
49
49
  theme_id: string | null;
50
50
  to: {
51
- user_id: string;
52
51
  type: "user-primary-email";
53
- } | {
54
52
  user_id: string;
53
+ } | {
55
54
  type: "user-custom-emails";
55
+ user_id: string;
56
56
  emails: string[];
57
57
  } | {
58
58
  type: "custom-emails";
@@ -86,11 +86,11 @@ declare const emailOutboxReadSchema: yup$1.MixedSchema<{
86
86
  tsx_source: string;
87
87
  theme_id: string | null;
88
88
  to: {
89
- user_id: string;
90
89
  type: "user-primary-email";
91
- } | {
92
90
  user_id: string;
91
+ } | {
93
92
  type: "user-custom-emails";
93
+ user_id: string;
94
94
  emails: string[];
95
95
  } | {
96
96
  type: "custom-emails";
@@ -125,11 +125,11 @@ declare const emailOutboxReadSchema: yup$1.MixedSchema<{
125
125
  tsx_source: string;
126
126
  theme_id: string | null;
127
127
  to: {
128
- user_id: string;
129
128
  type: "user-primary-email";
130
- } | {
131
129
  user_id: string;
130
+ } | {
132
131
  type: "user-custom-emails";
132
+ user_id: string;
133
133
  emails: string[];
134
134
  } | {
135
135
  type: "custom-emails";
@@ -169,11 +169,11 @@ declare const emailOutboxReadSchema: yup$1.MixedSchema<{
169
169
  tsx_source: string;
170
170
  theme_id: string | null;
171
171
  to: {
172
- user_id: string;
173
172
  type: "user-primary-email";
174
- } | {
175
173
  user_id: string;
174
+ } | {
176
175
  type: "user-custom-emails";
176
+ user_id: string;
177
177
  emails: string[];
178
178
  } | {
179
179
  type: "custom-emails";
@@ -215,11 +215,11 @@ declare const emailOutboxReadSchema: yup$1.MixedSchema<{
215
215
  tsx_source: string;
216
216
  theme_id: string | null;
217
217
  to: {
218
- user_id: string;
219
218
  type: "user-primary-email";
220
- } | {
221
219
  user_id: string;
220
+ } | {
222
221
  type: "user-custom-emails";
222
+ user_id: string;
223
223
  emails: string[];
224
224
  } | {
225
225
  type: "custom-emails";
@@ -261,11 +261,11 @@ declare const emailOutboxReadSchema: yup$1.MixedSchema<{
261
261
  tsx_source: string;
262
262
  theme_id: string | null;
263
263
  to: {
264
- user_id: string;
265
264
  type: "user-primary-email";
266
- } | {
267
265
  user_id: string;
266
+ } | {
268
267
  type: "user-custom-emails";
268
+ user_id: string;
269
269
  emails: string[];
270
270
  } | {
271
271
  type: "custom-emails";
@@ -308,11 +308,11 @@ declare const emailOutboxReadSchema: yup$1.MixedSchema<{
308
308
  tsx_source: string;
309
309
  theme_id: string | null;
310
310
  to: {
311
- user_id: string;
312
311
  type: "user-primary-email";
313
- } | {
314
312
  user_id: string;
313
+ } | {
315
314
  type: "user-custom-emails";
315
+ user_id: string;
316
316
  emails: string[];
317
317
  } | {
318
318
  type: "custom-emails";
@@ -363,11 +363,11 @@ declare const emailOutboxReadSchema: yup$1.MixedSchema<{
363
363
  tsx_source: string;
364
364
  theme_id: string | null;
365
365
  to: {
366
- user_id: string;
367
366
  type: "user-primary-email";
368
- } | {
369
367
  user_id: string;
368
+ } | {
370
369
  type: "user-custom-emails";
370
+ user_id: string;
371
371
  emails: string[];
372
372
  } | {
373
373
  type: "custom-emails";
@@ -407,11 +407,11 @@ declare const emailOutboxReadSchema: yup$1.MixedSchema<{
407
407
  tsx_source: string;
408
408
  theme_id: string | null;
409
409
  to: {
410
- user_id: string;
411
410
  type: "user-primary-email";
412
- } | {
413
411
  user_id: string;
412
+ } | {
414
413
  type: "user-custom-emails";
414
+ user_id: string;
415
415
  emails: string[];
416
416
  } | {
417
417
  type: "custom-emails";
@@ -455,11 +455,11 @@ declare const emailOutboxReadSchema: yup$1.MixedSchema<{
455
455
  tsx_source: string;
456
456
  theme_id: string | null;
457
457
  to: {
458
- user_id: string;
459
458
  type: "user-primary-email";
460
- } | {
461
459
  user_id: string;
460
+ } | {
462
461
  type: "user-custom-emails";
462
+ user_id: string;
463
463
  emails: string[];
464
464
  } | {
465
465
  type: "custom-emails";
@@ -503,11 +503,11 @@ declare const emailOutboxReadSchema: yup$1.MixedSchema<{
503
503
  tsx_source: string;
504
504
  theme_id: string | null;
505
505
  to: {
506
- user_id: string;
507
506
  type: "user-primary-email";
508
- } | {
509
507
  user_id: string;
508
+ } | {
510
509
  type: "user-custom-emails";
510
+ user_id: string;
511
511
  emails: string[];
512
512
  } | {
513
513
  type: "custom-emails";
@@ -552,11 +552,11 @@ declare const emailOutboxReadSchema: yup$1.MixedSchema<{
552
552
  tsx_source: string;
553
553
  theme_id: string | null;
554
554
  to: {
555
- user_id: string;
556
555
  type: "user-primary-email";
557
- } | {
558
556
  user_id: string;
557
+ } | {
559
558
  type: "user-custom-emails";
559
+ user_id: string;
560
560
  emails: string[];
561
561
  } | {
562
562
  type: "custom-emails";
@@ -602,11 +602,11 @@ declare const emailOutboxReadSchema: yup$1.MixedSchema<{
602
602
  tsx_source: string;
603
603
  theme_id: string | null;
604
604
  to: {
605
- user_id: string;
606
605
  type: "user-primary-email";
607
- } | {
608
606
  user_id: string;
607
+ } | {
609
608
  type: "user-custom-emails";
609
+ user_id: string;
610
610
  emails: string[];
611
611
  } | {
612
612
  type: "custom-emails";
@@ -652,11 +652,11 @@ declare const emailOutboxReadSchema: yup$1.MixedSchema<{
652
652
  tsx_source: string;
653
653
  theme_id: string | null;
654
654
  to: {
655
- user_id: string;
656
655
  type: "user-primary-email";
657
- } | {
658
656
  user_id: string;
657
+ } | {
659
658
  type: "user-custom-emails";
659
+ user_id: string;
660
660
  emails: string[];
661
661
  } | {
662
662
  type: "custom-emails";
@@ -696,11 +696,11 @@ declare const emailOutboxUpdateSchema: yup$1.ObjectSchema<{
696
696
  tsx_source: string | undefined;
697
697
  theme_id: string | null | undefined;
698
698
  to: {
699
- user_id: string;
700
699
  type: "user-primary-email";
701
- } | {
702
700
  user_id: string;
701
+ } | {
703
702
  type: "user-custom-emails";
703
+ user_id: string;
704
704
  emails: string[];
705
705
  } | {
706
706
  type: "custom-emails";
@@ -730,11 +730,11 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
730
730
  tsx_source: string;
731
731
  theme_id: string | null;
732
732
  to: {
733
- user_id: string;
734
733
  type: "user-primary-email";
735
- } | {
736
734
  user_id: string;
735
+ } | {
737
736
  type: "user-custom-emails";
737
+ user_id: string;
738
738
  emails: string[];
739
739
  } | {
740
740
  type: "custom-emails";
@@ -768,11 +768,11 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
768
768
  tsx_source: string;
769
769
  theme_id: string | null;
770
770
  to: {
771
- user_id: string;
772
771
  type: "user-primary-email";
773
- } | {
774
772
  user_id: string;
773
+ } | {
775
774
  type: "user-custom-emails";
775
+ user_id: string;
776
776
  emails: string[];
777
777
  } | {
778
778
  type: "custom-emails";
@@ -806,11 +806,11 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
806
806
  tsx_source: string;
807
807
  theme_id: string | null;
808
808
  to: {
809
- user_id: string;
810
809
  type: "user-primary-email";
811
- } | {
812
810
  user_id: string;
811
+ } | {
813
812
  type: "user-custom-emails";
813
+ user_id: string;
814
814
  emails: string[];
815
815
  } | {
816
816
  type: "custom-emails";
@@ -845,11 +845,11 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
845
845
  tsx_source: string;
846
846
  theme_id: string | null;
847
847
  to: {
848
- user_id: string;
849
848
  type: "user-primary-email";
850
- } | {
851
849
  user_id: string;
850
+ } | {
852
851
  type: "user-custom-emails";
852
+ user_id: string;
853
853
  emails: string[];
854
854
  } | {
855
855
  type: "custom-emails";
@@ -889,11 +889,11 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
889
889
  tsx_source: string;
890
890
  theme_id: string | null;
891
891
  to: {
892
- user_id: string;
893
892
  type: "user-primary-email";
894
- } | {
895
893
  user_id: string;
894
+ } | {
896
895
  type: "user-custom-emails";
896
+ user_id: string;
897
897
  emails: string[];
898
898
  } | {
899
899
  type: "custom-emails";
@@ -935,11 +935,11 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
935
935
  tsx_source: string;
936
936
  theme_id: string | null;
937
937
  to: {
938
- user_id: string;
939
938
  type: "user-primary-email";
940
- } | {
941
939
  user_id: string;
940
+ } | {
942
941
  type: "user-custom-emails";
942
+ user_id: string;
943
943
  emails: string[];
944
944
  } | {
945
945
  type: "custom-emails";
@@ -981,11 +981,11 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
981
981
  tsx_source: string;
982
982
  theme_id: string | null;
983
983
  to: {
984
- user_id: string;
985
984
  type: "user-primary-email";
986
- } | {
987
985
  user_id: string;
986
+ } | {
988
987
  type: "user-custom-emails";
988
+ user_id: string;
989
989
  emails: string[];
990
990
  } | {
991
991
  type: "custom-emails";
@@ -1028,11 +1028,11 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
1028
1028
  tsx_source: string;
1029
1029
  theme_id: string | null;
1030
1030
  to: {
1031
- user_id: string;
1032
1031
  type: "user-primary-email";
1033
- } | {
1034
1032
  user_id: string;
1033
+ } | {
1035
1034
  type: "user-custom-emails";
1035
+ user_id: string;
1036
1036
  emails: string[];
1037
1037
  } | {
1038
1038
  type: "custom-emails";
@@ -1083,11 +1083,11 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
1083
1083
  tsx_source: string;
1084
1084
  theme_id: string | null;
1085
1085
  to: {
1086
- user_id: string;
1087
1086
  type: "user-primary-email";
1088
- } | {
1089
1087
  user_id: string;
1088
+ } | {
1090
1089
  type: "user-custom-emails";
1090
+ user_id: string;
1091
1091
  emails: string[];
1092
1092
  } | {
1093
1093
  type: "custom-emails";
@@ -1127,11 +1127,11 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
1127
1127
  tsx_source: string;
1128
1128
  theme_id: string | null;
1129
1129
  to: {
1130
- user_id: string;
1131
1130
  type: "user-primary-email";
1132
- } | {
1133
1131
  user_id: string;
1132
+ } | {
1134
1133
  type: "user-custom-emails";
1134
+ user_id: string;
1135
1135
  emails: string[];
1136
1136
  } | {
1137
1137
  type: "custom-emails";
@@ -1175,11 +1175,11 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
1175
1175
  tsx_source: string;
1176
1176
  theme_id: string | null;
1177
1177
  to: {
1178
- user_id: string;
1179
1178
  type: "user-primary-email";
1180
- } | {
1181
1179
  user_id: string;
1180
+ } | {
1182
1181
  type: "user-custom-emails";
1182
+ user_id: string;
1183
1183
  emails: string[];
1184
1184
  } | {
1185
1185
  type: "custom-emails";
@@ -1223,11 +1223,11 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
1223
1223
  tsx_source: string;
1224
1224
  theme_id: string | null;
1225
1225
  to: {
1226
- user_id: string;
1227
1226
  type: "user-primary-email";
1228
- } | {
1229
1227
  user_id: string;
1228
+ } | {
1230
1229
  type: "user-custom-emails";
1230
+ user_id: string;
1231
1231
  emails: string[];
1232
1232
  } | {
1233
1233
  type: "custom-emails";
@@ -1272,11 +1272,11 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
1272
1272
  tsx_source: string;
1273
1273
  theme_id: string | null;
1274
1274
  to: {
1275
- user_id: string;
1276
1275
  type: "user-primary-email";
1277
- } | {
1278
1276
  user_id: string;
1277
+ } | {
1279
1278
  type: "user-custom-emails";
1279
+ user_id: string;
1280
1280
  emails: string[];
1281
1281
  } | {
1282
1282
  type: "custom-emails";
@@ -1322,11 +1322,11 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
1322
1322
  tsx_source: string;
1323
1323
  theme_id: string | null;
1324
1324
  to: {
1325
- user_id: string;
1326
1325
  type: "user-primary-email";
1327
- } | {
1328
1326
  user_id: string;
1327
+ } | {
1329
1328
  type: "user-custom-emails";
1329
+ user_id: string;
1330
1330
  emails: string[];
1331
1331
  } | {
1332
1332
  type: "custom-emails";
@@ -1372,11 +1372,11 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
1372
1372
  tsx_source: string;
1373
1373
  theme_id: string | null;
1374
1374
  to: {
1375
- user_id: string;
1376
1375
  type: "user-primary-email";
1377
- } | {
1378
1376
  user_id: string;
1377
+ } | {
1379
1378
  type: "user-custom-emails";
1379
+ user_id: string;
1380
1380
  emails: string[];
1381
1381
  } | {
1382
1382
  type: "custom-emails";
@@ -1416,11 +1416,11 @@ declare const emailOutboxCrud: CrudSchemaFromOptions<{
1416
1416
  tsx_source: string | undefined;
1417
1417
  theme_id: string | null | undefined;
1418
1418
  to: {
1419
- user_id: string;
1420
1419
  type: "user-primary-email";
1421
- } | {
1422
1420
  user_id: string;
1421
+ } | {
1423
1422
  type: "user-custom-emails";
1423
+ user_id: string;
1424
1424
  emails: string[];
1425
1425
  } | {
1426
1426
  type: "custom-emails";
@@ -78,8 +78,8 @@ declare const userApiKeysCrud: CrudSchemaFromOptions<{
78
78
  is_public: undefined;
79
79
  user_id: undefined;
80
80
  }, "">, userApiKeysCreateOutputSchema: yup$1.ObjectSchema<{
81
- user_id: string;
82
81
  type: "user";
82
+ user_id: string;
83
83
  description: string;
84
84
  id: string;
85
85
  created_at_millis: number;
@@ -20,19 +20,19 @@ declare const teamMemberProfilesCrudServerReadSchema: yup$1.ObjectSchema<{
20
20
  profile_image_url: string | null;
21
21
  } & {
22
22
  user: {
23
+ selected_team_id: string | null;
24
+ is_anonymous: boolean;
25
+ is_restricted: boolean;
23
26
  restricted_reason: {
24
27
  type: "anonymous" | "email_not_verified" | "restricted_by_administrator";
25
28
  } | null;
29
+ requires_totp_mfa: boolean;
26
30
  primary_email: string | null;
27
31
  display_name: string | null;
28
32
  client_metadata: {} | null;
29
33
  client_read_only_metadata: {} | null;
30
34
  server_metadata: {} | null;
31
35
  id: string;
32
- selected_team_id: string | null;
33
- is_anonymous: boolean;
34
- is_restricted: boolean;
35
- requires_totp_mfa: boolean;
36
36
  country_code: string | null;
37
37
  profile_image_url: string | null;
38
38
  signed_up_at_millis: number;
@@ -143,19 +143,19 @@ declare const teamMemberProfilesCrud: CrudSchemaFromOptions<{
143
143
  profile_image_url: string | null;
144
144
  } & {
145
145
  user: {
146
+ selected_team_id: string | null;
147
+ is_anonymous: boolean;
148
+ is_restricted: boolean;
146
149
  restricted_reason: {
147
150
  type: "anonymous" | "email_not_verified" | "restricted_by_administrator";
148
151
  } | null;
152
+ requires_totp_mfa: boolean;
149
153
  primary_email: string | null;
150
154
  display_name: string | null;
151
155
  client_metadata: {} | null;
152
156
  client_read_only_metadata: {} | null;
153
157
  server_metadata: {} | null;
154
158
  id: string;
155
- selected_team_id: string | null;
156
- is_anonymous: boolean;
157
- is_restricted: boolean;
158
- requires_totp_mfa: boolean;
159
159
  country_code: string | null;
160
160
  profile_image_url: string | null;
161
161
  signed_up_at_millis: number;
@@ -162,12 +162,12 @@ declare const usersCrudServerReadSchema: yup$1.ObjectSchema<{
162
162
  requires_totp_mfa: undefined;
163
163
  }, "">;
164
164
  declare const usersCrudServerCreateSchema: yup$1.ObjectSchema<{
165
+ is_anonymous: boolean | undefined;
165
166
  primary_email: string | null | undefined;
166
167
  display_name: string | null | undefined;
167
168
  client_metadata: {} | null | undefined;
168
169
  client_read_only_metadata: {} | null | undefined;
169
170
  server_metadata: {} | null | undefined;
170
- is_anonymous: boolean | undefined;
171
171
  password: string | null | undefined;
172
172
  country_code: string | null | undefined;
173
173
  profile_image_url: string | null | undefined;
@@ -368,12 +368,12 @@ declare const usersCrud: CrudSchemaFromOptions<{
368
368
  };
369
369
  }, "">;
370
370
  serverCreateSchema: yup$1.ObjectSchema<{
371
+ is_anonymous: boolean | undefined;
371
372
  primary_email: string | null | undefined;
372
373
  display_name: string | null | undefined;
373
374
  client_metadata: {} | null | undefined;
374
375
  client_read_only_metadata: {} | null | undefined;
375
376
  server_metadata: {} | null | undefined;
376
- is_anonymous: boolean | undefined;
377
377
  password: string | null | undefined;
378
378
  country_code: string | null | undefined;
379
379
  profile_image_url: string | null | undefined;