@rolino/contracts 0.2.0 → 0.3.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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @rolino/contracts
2
2
 
3
+ ## 0.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 5267911: Add LinkedIn member publishing as a gated provider across public contracts, SDK, CLI, and MCP workflows.
8
+
3
9
  ## 0.2.0
4
10
 
5
11
  ### Minor Changes
package/README.md CHANGED
@@ -4,26 +4,29 @@ Zod schemas and TypeScript types for Rolino's versioned public API. This package
4
4
  contains transport-safe DTOs only; it must not depend on Prisma, Next.js, auth
5
5
  providers, or server implementation details.
6
6
 
7
- Contract 0.13 covers discovery, identity, capabilities, project reads and
8
- idempotent project creation, safe post and calendar reads, idempotent draft
9
- writes, and server-confirmed Instagram, TikTok, YouTube, and Bluesky scheduling
10
- and immediate publishing. YouTube additions include explicit draft settings,
11
- provider readiness, early scheduled preparation, and typed pending schedule
12
- reconciliation. Bluesky additions include 300-grapheme caption overrides,
13
- text-only and image readiness, health, scheduling, and publishing. TikTok
14
- additions include separately reviewed draft choices, secret-safe account-level
15
- delivery options, server-stamped review time, and exact interaction enforcement.
16
- Draft updates are partial, and post reads expose reusable asset IDs plus
17
- provider-keyed sanitized settings so future provider variants remain additive.
18
- Project and post DTOs intentionally omit storage credentials, upload sessions,
19
- tokens, and other publishing-provider internals.
20
-
21
- Contract support does not imply that a deployment enabled YouTube or Bluesky,
22
- or completed Google/YouTube review. Servers remain authoritative for provider
23
- gates, readiness, confirmation, and reconciliation. Operators should follow the
24
- [YouTube operations guide](https://github.com/deifos/rolino/blob/main/docs/integrations/youtube.md)
25
- and
26
- [Bluesky operations guide](https://github.com/deifos/rolino/blob/main/docs/integrations/bluesky.md).
7
+ Contract 0.14 covers discovery, identity, capabilities, project reads and
8
+ idempotent project creation, safe post and calendar reads, idempotent draft
9
+ writes, and server-confirmed Instagram, TikTok, YouTube, Bluesky, and LinkedIn scheduling
10
+ and immediate publishing. YouTube additions include explicit draft settings,
11
+ provider readiness, early scheduled preparation, and typed pending schedule
12
+ reconciliation. Bluesky additions include 300-grapheme caption overrides,
13
+ text-only and image readiness, health, scheduling, and publishing. TikTok
14
+ additions include separately reviewed draft choices, secret-safe account-level
15
+ delivery options, server-stamped review time, and exact interaction enforcement.
16
+ LinkedIn additions include a 3,000-character destination override, text and
17
+ single/multi-image readiness, and a strict member-delivery-options variant.
18
+ Draft updates are partial, and post reads expose reusable asset IDs plus
19
+ provider-keyed sanitized settings so future provider variants remain additive.
20
+ Project and post DTOs intentionally omit storage credentials, upload sessions,
21
+ tokens, and other publishing-provider internals.
22
+
23
+ Contract support does not imply that a deployment enabled YouTube, Bluesky, or LinkedIn,
24
+ or completed Google/YouTube review. Servers remain authoritative for provider
25
+ gates, readiness, confirmation, and reconciliation. Operators should follow the
26
+ [YouTube operations guide](https://github.com/deifos/rolino/blob/main/docs/integrations/youtube.md)
27
+ and
28
+ [Bluesky operations guide](https://github.com/deifos/rolino/blob/main/docs/integrations/bluesky.md), and
29
+ [LinkedIn operations guide](https://github.com/deifos/rolino/blob/main/docs/integrations/linkedin.md).
27
30
 
28
31
  This is a supported transitive dependency of the public SDK, CLI, and MCP
29
32
  packages. Most users should install one of those entry points rather than
@@ -31,8 +34,8 @@ installing contracts directly.
31
34
 
32
35
  ## Support, security, and license
33
36
 
34
- Stable releases are published only after the maintainer approves the release
35
- gate. Report bugs through the
37
+ Stable releases are published only after the maintainer approves the release
38
+ gate. Report bugs through the
36
39
  [Rolino issue tracker](https://github.com/deifos/rolino/issues) and security
37
40
  issues through the repository's
38
41
  [security policy](https://github.com/deifos/rolino/security/policy).
package/dist/index.cjs CHANGED
@@ -48,6 +48,7 @@ __export(index_exports, {
48
48
  IntegrationHealthListDataSchema: () => IntegrationHealthListDataSchema,
49
49
  IntegrationHealthListResponseSchema: () => IntegrationHealthListResponseSchema,
50
50
  IntegrationHealthSchema: () => IntegrationHealthSchema,
51
+ LinkedInDeliveryOptionsSchema: () => LinkedInDeliveryOptionsSchema,
51
52
  MediaAssetListDataSchema: () => MediaAssetListDataSchema,
52
53
  MediaAssetListQuerySchema: () => MediaAssetListQuerySchema,
53
54
  MediaAssetListResponseSchema: () => MediaAssetListResponseSchema,
@@ -89,6 +90,7 @@ __export(index_exports, {
89
90
  ProjectResponseSchema: () => ProjectResponseSchema,
90
91
  ProjectSchema: () => ProjectSchema,
91
92
  ProjectTypeSchema: () => ProjectTypeSchema,
93
+ ProviderDeliveryOptionsProviderSchema: () => ProviderDeliveryOptionsProviderSchema,
92
94
  ProviderDeliveryOptionsResponseSchema: () => ProviderDeliveryOptionsResponseSchema,
93
95
  ProviderDeliveryOptionsSchema: () => ProviderDeliveryOptionsSchema,
94
96
  ProviderHealthStatusSchema: () => ProviderHealthStatusSchema,
@@ -106,7 +108,7 @@ __export(index_exports, {
106
108
  module.exports = __toCommonJS(index_exports);
107
109
  var import_zod = require("zod");
108
110
  var API_VERSION = "v1";
109
- var CONTRACT_VERSION = "0.13.0";
111
+ var CONTRACT_VERSION = "0.14.0";
110
112
  var RequestMetadataSchema = import_zod.z.object({
111
113
  requestId: import_zod.z.string().min(1)
112
114
  });
@@ -355,7 +357,8 @@ var PublishingProviderSchema = import_zod.z.enum([
355
357
  "INSTAGRAM",
356
358
  "TIKTOK",
357
359
  "YOUTUBE",
358
- "BLUESKY"
360
+ "BLUESKY",
361
+ "LINKEDIN"
359
362
  ]);
360
363
  var PUBLISHING_PROVIDER_COUNT = PublishingProviderSchema.options.length;
361
364
  var PostDestinationSchema = import_zod.z.object({
@@ -539,7 +542,8 @@ var DraftCaptionOverridesObjectSchema = import_zod.z.object({
539
542
  INSTAGRAM: import_zod.z.string().max(2200).nullable().optional(),
540
543
  TIKTOK: import_zod.z.string().max(2200).nullable().optional(),
541
544
  YOUTUBE: YouTubeDescriptionSchema.nullable().optional(),
542
- BLUESKY: BlueskyCaptionSchema.nullable().optional()
545
+ BLUESKY: BlueskyCaptionSchema.nullable().optional(),
546
+ LINKEDIN: import_zod.z.string().max(3e3).nullable().optional()
543
547
  }).strict();
544
548
  var DraftPlatformsSchema = import_zod.z.array(PublishingProviderSchema).max(PUBLISHING_PROVIDER_COUNT).refine(
545
549
  (providers) => new Set(providers).size === providers.length,
@@ -550,7 +554,7 @@ var DraftMediaAssetIdsSchema = import_zod.z.array(import_zod.z.string().trim().m
550
554
  "Media asset IDs must be unique."
551
555
  );
552
556
  var DraftPostInputSchema = import_zod.z.object({
553
- caption: import_zod.z.string().max(2200).transform((value) => value.trim()).default(""),
557
+ caption: import_zod.z.string().max(3e3).transform((value) => value.trim()).default(""),
554
558
  platforms: DraftPlatformsSchema.default([]),
555
559
  mediaAssetIds: DraftMediaAssetIdsSchema.default([]),
556
560
  captionOverrides: DraftCaptionOverridesObjectSchema.default({}),
@@ -601,7 +605,7 @@ var DraftPostInputSchema = import_zod.z.object({
601
605
  }
602
606
  });
603
607
  var DraftPostUpdateInputSchema = import_zod.z.object({
604
- caption: import_zod.z.string().max(2200).transform((value) => value.trim()).optional(),
608
+ caption: import_zod.z.string().max(3e3).transform((value) => value.trim()).optional(),
605
609
  platforms: DraftPlatformsSchema.optional(),
606
610
  mediaAssetIds: DraftMediaAssetIdsSchema.optional(),
607
611
  captionOverrides: DraftCaptionOverridesObjectSchema.optional(),
@@ -668,6 +672,10 @@ var IntegrationHealthListDataSchema = import_zod.z.object({
668
672
  var IntegrationHealthListResponseSchema = successEnvelopeSchema(
669
673
  IntegrationHealthListDataSchema
670
674
  );
675
+ var ProviderDeliveryOptionsProviderSchema = import_zod.z.enum([
676
+ "TIKTOK",
677
+ "LINKEDIN"
678
+ ]);
671
679
  var TikTokDeliveryOptionsSchema = import_zod.z.object({
672
680
  provider: import_zod.z.literal("TIKTOK"),
673
681
  account: import_zod.z.object({
@@ -696,8 +704,29 @@ var TikTokDeliveryOptionsSchema = import_zod.z.object({
696
704
  }),
697
705
  checkedAt: import_zod.z.string().datetime()
698
706
  });
707
+ var LinkedInDeliveryOptionsSchema = import_zod.z.object({
708
+ provider: import_zod.z.literal("LINKEDIN"),
709
+ account: import_zod.z.object({
710
+ displayName: import_zod.z.string().nullable(),
711
+ avatarUrl: import_zod.z.string().url().nullable()
712
+ }),
713
+ supportedPostTypes: import_zod.z.array(import_zod.z.enum(["TEXT", "SINGLE_IMAGE", "MULTI_IMAGE"])).length(3),
714
+ image: import_zod.z.object({
715
+ maxItems: import_zod.z.literal(10),
716
+ mimeTypes: import_zod.z.tuple([import_zod.z.literal("image/jpeg"), import_zod.z.literal("image/png")]),
717
+ maxPixelsExclusive: import_zod.z.literal(36152320),
718
+ maxBytes: import_zod.z.literal(26214400)
719
+ }),
720
+ health: import_zod.z.object({
721
+ status: ProviderHealthStatusSchema,
722
+ code: import_zod.z.string().min(1),
723
+ message: import_zod.z.string().min(1)
724
+ }),
725
+ checkedAt: import_zod.z.string().datetime()
726
+ });
699
727
  var ProviderDeliveryOptionsSchema = import_zod.z.discriminatedUnion("provider", [
700
- TikTokDeliveryOptionsSchema
728
+ TikTokDeliveryOptionsSchema,
729
+ LinkedInDeliveryOptionsSchema
701
730
  ]);
702
731
  var ProviderDeliveryOptionsResponseSchema = successEnvelopeSchema(
703
732
  ProviderDeliveryOptionsSchema
@@ -932,6 +961,7 @@ var CalendarListResponseSchema = successEnvelopeSchema(
932
961
  IntegrationHealthListDataSchema,
933
962
  IntegrationHealthListResponseSchema,
934
963
  IntegrationHealthSchema,
964
+ LinkedInDeliveryOptionsSchema,
935
965
  MediaAssetListDataSchema,
936
966
  MediaAssetListQuerySchema,
937
967
  MediaAssetListResponseSchema,
@@ -973,6 +1003,7 @@ var CalendarListResponseSchema = successEnvelopeSchema(
973
1003
  ProjectResponseSchema,
974
1004
  ProjectSchema,
975
1005
  ProjectTypeSchema,
1006
+ ProviderDeliveryOptionsProviderSchema,
976
1007
  ProviderDeliveryOptionsResponseSchema,
977
1008
  ProviderDeliveryOptionsSchema,
978
1009
  ProviderHealthStatusSchema,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const API_VERSION = \"v1\" as const;\nexport const CONTRACT_VERSION = \"0.13.0\" as const;\n\nexport const RequestMetadataSchema = z.object({\n requestId: z.string().min(1),\n});\n\nexport const ApiErrorCodeSchema = z.enum([\n \"AUTH_REQUIRED\",\n \"FORBIDDEN\",\n \"NOT_FOUND\",\n \"FEATURE_DISABLED\",\n \"BILLING_REQUIRED\",\n \"LIMIT_REACHED\",\n \"VALIDATION_ERROR\",\n \"CONFLICT\",\n \"RATE_LIMITED\",\n \"INTERNAL_ERROR\",\n]);\n\nexport type ApiErrorCode = z.infer<typeof ApiErrorCodeSchema>;\n\nexport const ApiProblemSchema = z.object({\n error: z.object({\n code: ApiErrorCodeSchema,\n message: z.string().min(1),\n details: z.record(z.string(), z.unknown()).optional(),\n }),\n meta: RequestMetadataSchema,\n});\n\nexport type ApiProblem = z.infer<typeof ApiProblemSchema>;\n\nexport function successEnvelopeSchema<TSchema extends z.ZodType>(data: TSchema) {\n return z.object({\n data,\n meta: RequestMetadataSchema,\n });\n}\n\nexport const CapabilityIdSchema = z.enum([\n \"identity:read\",\n \"projects:read\",\n \"projects:write\",\n \"posts:read\",\n \"posts:write\",\n \"posts:schedule\",\n \"posts:publish\",\n \"integrations:read\",\n \"calendar:read\",\n]);\n\nexport type CapabilityId = z.infer<typeof CapabilityIdSchema>;\n\nexport const CapabilitySchema = z.object({\n id: CapabilityIdSchema,\n available: z.boolean(),\n reason: z.enum([\n \"AVAILABLE\",\n \"AUTH_REQUIRED\",\n \"SCOPE_REQUIRED\",\n \"FEATURE_DISABLED\",\n ]),\n});\n\nexport type Capability = z.infer<typeof CapabilitySchema>;\n\nexport const ApiMetaSchema = z.object({\n name: z.literal(\"Rolino\"),\n serverVersion: z.string().min(1),\n apiVersion: z.literal(API_VERSION),\n contractVersion: z.literal(CONTRACT_VERSION),\n authentication: z.object({\n browserSession: z.boolean(),\n cliBrowserAuthorization: z.boolean(),\n apiKey: z.boolean(),\n remoteOAuth: z.boolean(),\n }),\n mcp: z.object({\n stdio: z.boolean(),\n streamableHttp: z.boolean(),\n remoteStatus: z.enum([\"AVAILABLE\", \"AUTH_GATE\"]),\n }),\n capabilities: z.array(CapabilitySchema),\n});\n\nexport type ApiMeta = z.infer<typeof ApiMetaSchema>;\nexport const ApiMetaResponseSchema = successEnvelopeSchema(ApiMetaSchema);\nexport type ApiMetaResponse = z.infer<typeof ApiMetaResponseSchema>;\n\nexport const AuthenticationKindSchema = z.enum([\"session\", \"api_key\"]);\nexport type AuthenticationKind = z.infer<typeof AuthenticationKindSchema>;\n\nexport const ActorSchema = z.object({\n user: z.object({\n id: z.string().min(1),\n name: z.string(),\n email: z.string().email(),\n }),\n organization: z.object({\n id: z.string().min(1),\n name: z.string().min(1),\n role: z.string().min(1),\n }),\n authentication: z.object({\n kind: AuthenticationKindSchema,\n credentialId: z.string().min(1).nullable(),\n }),\n capabilities: z.array(CapabilityIdSchema),\n});\n\nexport type Actor = z.infer<typeof ActorSchema>;\nexport const WhoAmIResponseSchema = successEnvelopeSchema(ActorSchema);\nexport type WhoAmIResponse = z.infer<typeof WhoAmIResponseSchema>;\n\nconst Base64UrlSecretSchema = z.string()\n .min(43)\n .max(128)\n .regex(/^[A-Za-z0-9_-]+$/);\n\nexport const CLI_BROWSER_AUTHORIZATION_TIMEOUT_MS = 5 * 60 * 1000;\n\nexport const CliAuthorizationExchangeRequestSchema = z.object({\n code: Base64UrlSecretSchema,\n codeVerifier: Base64UrlSecretSchema,\n});\nexport type CliAuthorizationExchangeRequest = z.infer<\n typeof CliAuthorizationExchangeRequestSchema\n>;\n\nexport const CliAuthorizationCredentialSchema = z.object({\n token: z.string().min(1),\n tokenType: z.literal(\"Bearer\"),\n expiresAt: z.string().datetime(),\n organization: z.object({\n id: z.string().min(1),\n name: z.string().min(1),\n }),\n capabilities: z.array(CapabilityIdSchema),\n});\nexport type CliAuthorizationCredential = z.infer<\n typeof CliAuthorizationCredentialSchema\n>;\nexport const CliAuthorizationExchangeResponseSchema = successEnvelopeSchema(\n CliAuthorizationCredentialSchema,\n);\nexport type CliAuthorizationExchangeResponse = z.infer<\n typeof CliAuthorizationExchangeResponseSchema\n>;\n\nexport const CliAuthorizationRevokeDataSchema = z.object({\n revoked: z.literal(true),\n});\nexport const CliAuthorizationRevokeResponseSchema = successEnvelopeSchema(\n CliAuthorizationRevokeDataSchema,\n);\nexport type CliAuthorizationRevokeResponse = z.infer<\n typeof CliAuthorizationRevokeResponseSchema\n>;\n\nexport const CapabilitiesDataSchema = z.object({\n capabilities: z.array(CapabilitySchema),\n});\nexport const CapabilitiesResponseSchema = successEnvelopeSchema(CapabilitiesDataSchema);\nexport type CapabilitiesResponse = z.infer<typeof CapabilitiesResponseSchema>;\n\nexport const ProjectTypeSchema = z.enum([\n \"PRODUCT\",\n \"LAUNCH\",\n \"EVENT\",\n \"CONTENT_SERIES\",\n \"CLIENT\",\n \"BRAND\",\n \"INTERNAL\",\n]);\nexport type ProjectType = z.infer<typeof ProjectTypeSchema>;\n\nconst ProjectWebsiteUrlSchema = z.string()\n .trim()\n .min(1)\n .max(2000)\n .url()\n .refine((value) => {\n try {\n const url = new URL(value);\n return (\n (url.protocol === \"http:\" || url.protocol === \"https:\")\n && !url.username\n && !url.password\n );\n } catch {\n return false;\n }\n }, \"websiteUrl must be an absolute http or https URL without credentials\");\n\nexport const ProjectCreateInputSchema = z.object({\n name: z.string().trim().min(1).max(100),\n type: ProjectTypeSchema.default(\"PRODUCT\"),\n websiteUrl: ProjectWebsiteUrlSchema.optional(),\n description: z.string().trim().min(1).max(2000).optional(),\n}).strict();\nexport type ProjectCreateInput = z.input<typeof ProjectCreateInputSchema>;\nexport type ProjectCreateData = z.infer<typeof ProjectCreateInputSchema>;\n\nexport const ProjectSchema = z.object({\n id: z.string().min(1),\n organizationId: z.string().min(1),\n name: z.string().min(1),\n slug: z.string().min(1),\n type: ProjectTypeSchema,\n status: z.enum([\"ACTIVE\", \"PAUSED\", \"ARCHIVED\"]),\n websiteUrl: z.string().url().nullable(),\n description: z.string().nullable(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\nexport type Project = z.infer<typeof ProjectSchema>;\n\nexport const ProjectListQuerySchema = z.object({\n limit: z.coerce.number().int().min(1).max(100).default(50),\n cursor: z.string().min(1).optional(),\n});\n\nexport type ProjectListQuery = z.input<typeof ProjectListQuerySchema>;\n\nexport const ProjectListDataSchema = z.object({\n items: z.array(ProjectSchema),\n page: z.object({\n limit: z.number().int().min(1).max(100),\n nextCursor: z.string().min(1).nullable(),\n }),\n});\n\nexport type ProjectListData = z.infer<typeof ProjectListDataSchema>;\nexport const ProjectListResponseSchema = successEnvelopeSchema(ProjectListDataSchema);\nexport type ProjectListResponse = z.infer<typeof ProjectListResponseSchema>;\n\nexport const ProjectResponseSchema = successEnvelopeSchema(ProjectSchema);\nexport type ProjectResponse = z.infer<typeof ProjectResponseSchema>;\n\nexport const PostStatusSchema = z.enum([\n \"DRAFT\",\n \"SCHEDULED\",\n \"ACTION_REQUIRED\",\n \"PUBLISHING\",\n \"PUBLISHED\",\n \"PARTIALLY_PUBLISHED\",\n \"FAILED\",\n]);\nexport type PostStatus = z.infer<typeof PostStatusSchema>;\n\nexport const PlatformPostStatusSchema = z.enum([\n \"DRAFT\",\n \"SCHEDULED\",\n \"PREPARING\",\n \"ACTION_REQUIRED\",\n \"PUBLISHING\",\n \"PUBLISHED\",\n \"FAILED\",\n]);\n\nexport const PostMediaSchema = z.object({\n id: z.string().min(1),\n assetId: z.string().min(1).nullable().optional(),\n type: z.enum([\"IMAGE\", \"VIDEO\"]),\n url: z.string().url(),\n mimeType: z.string().min(1),\n sizeBytes: z.number().int().positive().nullable().optional(),\n width: z.number().int().positive().nullable(),\n height: z.number().int().positive().nullable(),\n durationMs: z.number().int().nonnegative().nullable(),\n thumbnailUrl: z.string().url().nullable(),\n altText: z.string().nullable(),\n position: z.number().int().nonnegative(),\n});\nexport type PostMedia = z.infer<typeof PostMediaSchema>;\n\nexport const MediaAssetSchema = z.object({\n id: z.string().min(1),\n type: z.enum([\"IMAGE\", \"VIDEO\"]),\n url: z.string().url(),\n thumbnailUrl: z.string().url().nullable(),\n originalFileName: z.string().nullable(),\n mimeType: z.string().min(1),\n sizeBytes: z.number().int().positive().nullable(),\n width: z.number().int().positive().nullable(),\n height: z.number().int().positive().nullable(),\n durationMs: z.number().int().nonnegative().nullable(),\n createdAt: z.string().datetime(),\n});\nexport type MediaAsset = z.infer<typeof MediaAssetSchema>;\n\nexport const MediaAssetListQuerySchema = z.object({\n limit: z.coerce.number().int().min(1).max(100).default(50),\n cursor: z.string().min(1).optional(),\n type: z.enum([\"IMAGE\", \"VIDEO\"]).optional(),\n query: z.string().trim().min(1).max(100).optional(),\n});\nexport type MediaAssetListQuery = z.input<typeof MediaAssetListQuerySchema>;\n\nexport const MediaAssetListDataSchema = z.object({\n items: z.array(MediaAssetSchema),\n page: z.object({\n limit: z.number().int().min(1).max(100),\n nextCursor: z.string().min(1).nullable(),\n }),\n});\nexport type MediaAssetListData = z.infer<typeof MediaAssetListDataSchema>;\nexport const MediaAssetListResponseSchema = successEnvelopeSchema(MediaAssetListDataSchema);\n\nexport const MediaAssetUploadInputSchema = z.object({\n fileName: z.string().trim().min(1).max(255),\n contentType: z.string().trim().min(1).max(100),\n fileSize: z.number().int().positive(),\n}).strict();\nexport type MediaAssetUploadInput = z.infer<typeof MediaAssetUploadInputSchema>;\n\nexport const MediaAssetUploadPreparationSchema = z.object({\n uploadUrl: z.string().url(),\n storageKey: z.string().min(1),\n expiresAt: z.string().datetime(),\n headers: z.record(z.string(), z.string()),\n maxFileSize: z.number().int().positive(),\n});\nexport type MediaAssetUploadPreparation = z.infer<typeof MediaAssetUploadPreparationSchema>;\nexport const MediaAssetUploadPreparationResponseSchema = successEnvelopeSchema(MediaAssetUploadPreparationSchema);\n\nexport const MediaAssetUploadCompleteInputSchema = MediaAssetUploadInputSchema.extend({\n storageKey: z.string().min(1),\n width: z.number().int().positive().max(100_000).nullable().optional(),\n height: z.number().int().positive().max(100_000).nullable().optional(),\n durationMs: z.number().int().nonnegative().max(86_400_000).nullable().optional(),\n}).strict();\nexport type MediaAssetUploadCompleteInput = z.infer<typeof MediaAssetUploadCompleteInputSchema>;\nexport const MediaAssetResponseSchema = successEnvelopeSchema(MediaAssetSchema);\n\nexport const PublishingProviderSchema = z.enum([\n \"INSTAGRAM\",\n \"TIKTOK\",\n \"YOUTUBE\",\n \"BLUESKY\",\n]);\nexport type PublishingProvider = z.infer<typeof PublishingProviderSchema>;\nexport const PUBLISHING_PROVIDER_COUNT = PublishingProviderSchema.options.length;\n\nexport const PostDestinationSchema = z.object({\n provider: PublishingProviderSchema,\n status: PlatformPostStatusSchema,\n captionOverride: z.string().nullable(),\n scheduledAt: z.string().datetime().nullable(),\n publishedAt: z.string().datetime().nullable(),\n remoteUrl: z.string().url().nullable(),\n attemptCount: z.number().int().nonnegative(),\n});\nexport type PostDestination = z.infer<typeof PostDestinationSchema>;\n\nexport const TikTokPostSettingsSchema = z.object({\n postMode: z.enum([\"DIRECT_POST\", \"MEDIA_UPLOAD\"]).default(\"DIRECT_POST\"),\n privacyLevel: z.string().trim().min(1).max(100).nullable().default(null),\n allowComment: z.boolean().default(false),\n allowDuet: z.boolean().default(false),\n allowStitch: z.boolean().default(false),\n commercialContentEnabled: z.boolean().default(false),\n promotesOwnBrand: z.boolean().default(false),\n promotesThirdParty: z.boolean().default(false),\n isAiGenerated: z.boolean().default(false),\n videoCoverTimestampMs: z.number().int().nonnegative().nullable().default(null),\n consentedAt: z.union([z.string().datetime(), z.literal(\"\")]).default(\"\"),\n}).strict();\nexport type TikTokPostSettings = z.infer<typeof TikTokPostSettingsSchema>;\n\nexport const TikTokDraftSettingsSchema = z.object({\n postMode: z.enum([\"DIRECT_POST\", \"MEDIA_UPLOAD\"]).optional(),\n privacyLevel: z.string().trim().min(1).max(100).nullable().optional(),\n allowComment: z.boolean().optional(),\n allowDuet: z.boolean().optional(),\n allowStitch: z.boolean().optional(),\n commercialContentEnabled: z.boolean().optional(),\n promotesOwnBrand: z.boolean().optional(),\n promotesThirdParty: z.boolean().optional(),\n isAiGenerated: z.boolean().optional(),\n videoCoverTimestampMs: z.number().int().nonnegative().nullable().optional(),\n reviewed: z.boolean().optional(),\n consentedAt: z.union([z.string().datetime(), z.literal(\"\")]).optional(),\n}).strict().superRefine((input, context) => {\n const requestsReview = input.reviewed === true || Boolean(input.consentedAt);\n if (input.postMode === \"MEDIA_UPLOAD\") {\n if (\n input.privacyLevel != null\n || input.allowComment === true\n || input.allowDuet === true\n || input.allowStitch === true\n || input.commercialContentEnabled === true\n || input.promotesOwnBrand === true\n || input.promotesThirdParty === true\n || input.isAiGenerated === true\n || input.videoCoverTimestampMs != null\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"TikTok inbox drafts do not apply direct-post visibility, interaction, disclosure, AI, or cover settings.\",\n });\n }\n return;\n }\n if (!requestsReview) return;\n\n if (!input.postMode) {\n context.addIssue({\n code: \"custom\",\n path: [\"postMode\"],\n message: \"Choose TikTok direct publishing or inbox draft delivery explicitly.\",\n });\n return;\n }\n\n const requiredBooleanFields = [\n \"allowComment\",\n \"allowDuet\",\n \"allowStitch\",\n \"commercialContentEnabled\",\n \"promotesOwnBrand\",\n \"promotesThirdParty\",\n \"isAiGenerated\",\n ] as const;\n if (!input.privacyLevel) {\n context.addIssue({\n code: \"custom\",\n path: [\"privacyLevel\"],\n message: \"Choose TikTok visibility explicitly before reviewing the settings.\",\n });\n }\n for (const field of requiredBooleanFields) {\n if (input[field] === undefined) {\n context.addIssue({\n code: \"custom\",\n path: [field],\n message: \"Choose yes or no explicitly before reviewing TikTok settings.\",\n });\n }\n }\n if (\n input.commercialContentEnabled === true\n && input.promotesOwnBrand !== true\n && input.promotesThirdParty !== true\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"commercialContentEnabled\"],\n message: \"Commercial TikTok content must identify own-brand or third-party promotion.\",\n });\n }\n if (\n input.commercialContentEnabled === false\n && (input.promotesOwnBrand === true || input.promotesThirdParty === true)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"commercialContentEnabled\"],\n message: \"Promotion declarations require commercial content to be enabled.\",\n });\n }\n}).transform((input) => ({\n postMode: input.postMode ?? \"DIRECT_POST\" as const,\n privacyLevel: input.privacyLevel ?? null,\n allowComment: input.allowComment ?? false,\n allowDuet: input.allowDuet ?? false,\n allowStitch: input.allowStitch ?? false,\n commercialContentEnabled: input.commercialContentEnabled ?? false,\n promotesOwnBrand: input.promotesOwnBrand ?? false,\n promotesThirdParty: input.promotesThirdParty ?? false,\n isAiGenerated: input.isAiGenerated ?? false,\n videoCoverTimestampMs: input.videoCoverTimestampMs ?? null,\n reviewed: input.reviewed === true || Boolean(input.consentedAt),\n}));\nexport type TikTokDraftSettingsInput = z.input<typeof TikTokDraftSettingsSchema>;\nexport type TikTokDraftSettings = z.infer<typeof TikTokDraftSettingsSchema>;\n\nfunction youtubeTagLength(tags: readonly string[]) {\n return tags.reduce((total, tag, index) => (\n total + (index ? 1 : 0) + tag.length + (tag.includes(\" \") ? 2 : 0)\n ), 0);\n}\n\nexport const YouTubePostSettingsSchema = z.object({\n title: z.string().trim().min(1).max(100).refine(\n (value) => !/[<>]/.test(value),\n \"YouTube titles cannot contain angle brackets.\",\n ),\n categoryId: z.string().trim().regex(/^\\d+$/).max(20),\n privacyStatus: z.enum([\"PUBLIC\", \"UNLISTED\", \"PRIVATE\"]),\n madeForKids: z.boolean(),\n containsSyntheticMedia: z.boolean().default(false),\n notifySubscribers: z.boolean().default(true),\n tags: z.array(z.string().trim().min(1).max(500)).max(50).refine(\n (tags) => new Set(tags).size === tags.length,\n \"YouTube tags must be unique.\",\n ).refine(\n (tags) => youtubeTagLength(tags) <= 500,\n \"YouTube tags exceed the 500-character aggregate limit.\",\n ).default([]),\n}).strict();\nexport type YouTubePostSettings = z.infer<typeof YouTubePostSettingsSchema>;\n\nexport const PostProviderSettingsSchema = z.object({\n TIKTOK: TikTokPostSettingsSchema.nullable().optional(),\n YOUTUBE: YouTubePostSettingsSchema.nullable().optional(),\n}).strict().default({});\nexport type PostProviderSettings = z.infer<typeof PostProviderSettingsSchema>;\n\nexport const PostSchema = z.object({\n id: z.string().min(1),\n projectId: z.string().min(1),\n version: z.number().int().positive(),\n campaign: z.object({\n id: z.string().min(1),\n title: z.string().min(1),\n }).nullable(),\n caption: z.string(),\n status: PostStatusSchema,\n scheduledAt: z.string().datetime().nullable(),\n timezone: z.string().nullable(),\n publishedAt: z.string().datetime().nullable(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n media: z.array(PostMediaSchema),\n destinations: z.array(PostDestinationSchema),\n providerSettings: PostProviderSettingsSchema.optional(),\n});\nexport type Post = z.infer<typeof PostSchema>;\n\nexport const PostListQuerySchema = z.object({\n limit: z.coerce.number().int().min(1).max(100).default(50),\n cursor: z.string().min(1).optional(),\n status: PostStatusSchema.optional(),\n});\nexport type PostListQuery = z.input<typeof PostListQuerySchema>;\n\nexport const PostListDataSchema = z.object({\n items: z.array(PostSchema),\n page: z.object({\n limit: z.number().int().min(1).max(100),\n nextCursor: z.string().min(1).nullable(),\n }),\n});\nexport type PostListData = z.infer<typeof PostListDataSchema>;\nexport const PostListResponseSchema = successEnvelopeSchema(PostListDataSchema);\nexport type PostListResponse = z.infer<typeof PostListResponseSchema>;\n\nexport const PostResponseSchema = successEnvelopeSchema(PostSchema);\nexport type PostResponse = z.infer<typeof PostResponseSchema>;\n\nconst blueskyGraphemeSegmenter = new Intl.Segmenter(\"en\", {\n granularity: \"grapheme\",\n});\n\nconst BlueskyCaptionSchema = z.string().max(3000).refine(\n (value) => Array.from(blueskyGraphemeSegmenter.segment(value)).length <= 300,\n \"Bluesky captions cannot exceed 300 graphemes.\",\n);\n\nconst utf8Encoder = new TextEncoder();\nconst YouTubeDescriptionSchema = z.string().max(5000).refine(\n (value) => utf8Encoder.encode(value).length <= 5000,\n \"YouTube descriptions cannot exceed 5,000 UTF-8 bytes.\",\n);\n\nconst DraftCaptionOverridesObjectSchema = z.object({\n INSTAGRAM: z.string().max(2200).nullable().optional(),\n TIKTOK: z.string().max(2200).nullable().optional(),\n YOUTUBE: YouTubeDescriptionSchema.nullable().optional(),\n BLUESKY: BlueskyCaptionSchema.nullable().optional(),\n}).strict();\n\nconst DraftPlatformsSchema = z.array(PublishingProviderSchema).max(PUBLISHING_PROVIDER_COUNT).refine(\n (providers) => new Set(providers).size === providers.length,\n \"Publishing destinations must be unique.\",\n);\n\nconst DraftMediaAssetIdsSchema = z.array(z.string().trim().min(1).max(200)).max(10).refine(\n (ids) => new Set(ids).size === ids.length,\n \"Media asset IDs must be unique.\",\n);\n\nexport const DraftPostInputSchema = z.object({\n caption: z.string().max(2200).transform((value) => value.trim()).default(\"\"),\n platforms: DraftPlatformsSchema.default([]),\n mediaAssetIds: DraftMediaAssetIdsSchema.default([]),\n captionOverrides: DraftCaptionOverridesObjectSchema.default({}),\n tiktokSettings: TikTokDraftSettingsSchema.nullable().default(null),\n youtubeSettings: YouTubePostSettingsSchema.nullable().default(null),\n}).strict().superRefine((input, context) => {\n if (input.caption.length === 0 && input.mediaAssetIds.length === 0) {\n context.addIssue({\n code: \"custom\",\n path: [\"caption\"],\n message: \"A draft requires a caption or at least one media asset.\",\n });\n }\n if (input.tiktokSettings && !input.platforms.includes(\"TIKTOK\")) {\n context.addIssue({\n code: \"custom\",\n path: [\"tiktokSettings\"],\n message: \"TikTok settings require the TIKTOK destination.\",\n });\n }\n if (input.youtubeSettings && !input.platforms.includes(\"YOUTUBE\")) {\n context.addIssue({\n code: \"custom\",\n path: [\"youtubeSettings\"],\n message: \"YouTube settings require the YOUTUBE destination.\",\n });\n }\n if (input.platforms.includes(\"YOUTUBE\") && !input.youtubeSettings) {\n context.addIssue({\n code: \"custom\",\n path: [\"youtubeSettings\"],\n message: \"YouTube settings are required for the YOUTUBE destination.\",\n });\n }\n if (\n input.platforms.includes(\"YOUTUBE\")\n && input.captionOverrides.YOUTUBE == null\n && utf8Encoder.encode(input.caption).length > 5000\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"caption\"],\n message: \"YouTube descriptions cannot exceed 5,000 UTF-8 bytes.\",\n });\n }\n if (\n input.platforms.includes(\"BLUESKY\")\n && input.captionOverrides.BLUESKY == null\n && Array.from(blueskyGraphemeSegmenter.segment(input.caption)).length > 300\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"caption\"],\n message: \"Bluesky captions cannot exceed 300 graphemes.\",\n });\n }\n});\nexport type DraftPostInput = z.input<typeof DraftPostInputSchema>;\nexport type DraftPostData = z.infer<typeof DraftPostInputSchema>;\n\nexport const DraftPostUpdateInputSchema = z.object({\n caption: z.string().max(2200).transform((value) => value.trim()).optional(),\n platforms: DraftPlatformsSchema.optional(),\n mediaAssetIds: DraftMediaAssetIdsSchema.optional(),\n captionOverrides: DraftCaptionOverridesObjectSchema.optional(),\n tiktokSettings: TikTokDraftSettingsSchema.nullable().optional(),\n youtubeSettings: YouTubePostSettingsSchema.nullable().optional(),\n}).strict().superRefine((input, context) => {\n if (Object.values(input).every((value) => value === undefined)) {\n context.addIssue({ code: \"custom\", message: \"Provide at least one draft field to update.\" });\n }\n if (input.platforms && input.tiktokSettings && !input.platforms.includes(\"TIKTOK\")) {\n context.addIssue({\n code: \"custom\",\n path: [\"tiktokSettings\"],\n message: \"TikTok settings require the TIKTOK destination.\",\n });\n }\n if (input.platforms && input.youtubeSettings && !input.platforms.includes(\"YOUTUBE\")) {\n context.addIssue({\n code: \"custom\",\n path: [\"youtubeSettings\"],\n message: \"YouTube settings require the YOUTUBE destination.\",\n });\n }\n});\nexport type DraftPostUpdateInput = z.input<typeof DraftPostUpdateInputSchema>;\nexport type DraftPostUpdateData = z.infer<typeof DraftPostUpdateInputSchema>;\n\nexport const IntegrationConnectionStatusSchema = z.enum([\n \"PENDING\",\n \"CONNECTED\",\n \"ERROR\",\n \"EXPIRED\",\n \"DISCONNECTED\",\n]);\n\nexport const ProviderHealthStatusSchema = z.enum([\n \"pass\",\n \"blocking\",\n \"unknown\",\n]);\n\nexport const IntegrationHealthSchema = z.object({\n provider: PublishingProviderSchema,\n connectionStatus: IntegrationConnectionStatusSchema,\n connected: z.boolean(),\n account: z.object({\n username: z.string().nullable(),\n displayName: z.string().nullable(),\n avatarUrl: z.string().url().nullable(),\n }),\n grantedScopes: z.array(z.string()),\n expiresAt: z.string().datetime().nullable(),\n health: z.object({\n status: ProviderHealthStatusSchema,\n checkedAt: z.string().datetime().nullable(),\n code: z.string().min(1),\n message: z.string().min(1),\n isStale: z.boolean(),\n requiresAction: z.boolean(),\n refreshRecommended: z.boolean(),\n }),\n});\nexport type IntegrationHealth = z.infer<typeof IntegrationHealthSchema>;\n\nexport const IntegrationHealthListDataSchema = z.object({\n items: z.array(IntegrationHealthSchema)\n .max(PUBLISHING_PROVIDER_COUNT)\n .refine(\n (items) => new Set(items.map((item) => item.provider)).size === items.length,\n \"Provider health items must be unique.\",\n ),\n});\nexport type IntegrationHealthListData = z.infer<\n typeof IntegrationHealthListDataSchema\n>;\nexport const IntegrationHealthListResponseSchema = successEnvelopeSchema(\n IntegrationHealthListDataSchema,\n);\n\nexport const TikTokDeliveryOptionsSchema = z.object({\n provider: z.literal(\"TIKTOK\"),\n account: z.object({\n username: z.string().nullable(),\n displayName: z.string().nullable(),\n avatarUrl: z.string().url().nullable(),\n }),\n allowedPostModes: z.array(z.enum([\"DIRECT_POST\", \"MEDIA_UPLOAD\"]))\n .max(2)\n .refine(\n (items) => new Set(items).size === items.length,\n \"TikTok post modes must be unique.\",\n ),\n visibilityOptions: z.array(z.string().trim().min(1).max(100)).max(20)\n .refine(\n (items) => new Set(items).size === items.length,\n \"TikTok visibility options must be unique.\",\n ),\n interactions: z.object({\n comment: z.object({ available: z.boolean() }),\n duet: z.object({ available: z.boolean() }),\n stitch: z.object({ available: z.boolean() }),\n }),\n maxVideoDurationMs: z.number().int().positive().max(86_400_000).nullable(),\n health: z.object({\n status: ProviderHealthStatusSchema,\n code: z.string().min(1),\n message: z.string().min(1),\n }),\n checkedAt: z.string().datetime(),\n});\n\n// Add one strict provider variant here as each future social network gains\n// creator-specific delivery choices. Callers can always discriminate by provider.\nexport const ProviderDeliveryOptionsSchema = z.discriminatedUnion(\"provider\", [\n TikTokDeliveryOptionsSchema,\n]);\nexport type ProviderDeliveryOptions = z.infer<typeof ProviderDeliveryOptionsSchema>;\nexport const ProviderDeliveryOptionsResponseSchema = successEnvelopeSchema(\n ProviderDeliveryOptionsSchema,\n);\n\nexport const ReadinessStatusSchema = z.enum([\n \"checking\",\n \"pass\",\n \"warning\",\n \"blocking\",\n \"unknown\",\n]);\n\nexport const ReadinessActionSchema = z.object({\n kind: z.enum([\n \"reconnect\",\n \"replace_media\",\n \"review_settings\",\n \"edit_caption\",\n \"refresh_health\",\n ]),\n provider: PublishingProviderSchema.optional(),\n});\n\nexport const PostReadinessCheckSchema = z.object({\n key: z.string().min(1),\n id: z.enum([\n \"connection\",\n \"permissions\",\n \"media\",\n \"caption\",\n \"tiktok_settings\",\n \"youtube_settings\",\n \"storage\",\n \"schedule_lead\",\n \"token_health\",\n \"media_duration\",\n \"provider_health\",\n ]),\n provider: PublishingProviderSchema.nullable(),\n mediaId: z.string().min(1).optional(),\n status: ReadinessStatusSchema,\n source: z.enum([\"local\", \"live\"]),\n checkedAt: z.string().datetime().nullable(),\n message: z.string().min(1),\n code: z.string().min(1),\n action: ReadinessActionSchema.nullable(),\n});\n\nexport const PostReadinessSchema = z.object({\n checks: z.array(PostReadinessCheckSchema),\n accounts: z.array(z.object({\n provider: PublishingProviderSchema,\n connected: z.boolean(),\n username: z.string().nullable(),\n avatarUrl: z.string().url().nullable(),\n requiresAction: z.boolean(),\n })),\n hasBlockingChecks: z.boolean(),\n requiresLiveRefresh: z.array(PublishingProviderSchema),\n liveHealthCheckedAt: z.string().datetime().nullable(),\n});\nexport type PostReadiness = z.infer<typeof PostReadinessSchema>;\nexport const PostReadinessResponseSchema = successEnvelopeSchema(\n PostReadinessSchema,\n);\n\nexport const PostScheduleInputSchema = z.object({\n scheduledAt: z.string().datetime({ offset: true }),\n timezone: z.string().trim().min(1).max(100).refine((timezone) => {\n try {\n new Intl.DateTimeFormat(\"en\", { timeZone: timezone }).format();\n return true;\n } catch {\n return false;\n }\n }, \"timezone must be a valid IANA timezone\"),\n}).strict();\nexport type PostScheduleInput = z.infer<typeof PostScheduleInputSchema>;\n\nexport const PostScheduleExecuteInputSchema = PostScheduleInputSchema.extend({\n confirmationToken: z.string().trim().min(1).max(200),\n}).strict();\nexport type PostScheduleExecuteInput = z.infer<\n typeof PostScheduleExecuteInputSchema\n>;\n\nexport const PostSchedulePreviewSchema = z.object({\n operation: z.literal(\"posts.schedule.execute\"),\n post: z.object({\n id: z.string().min(1),\n projectId: z.string().min(1),\n version: z.number().int().positive(),\n status: PostStatusSchema,\n }),\n schedule: PostScheduleInputSchema,\n destinations: z.array(PublishingProviderSchema).min(1).max(PUBLISHING_PROVIDER_COUNT),\n providerReconciliation: z.object({\n provider: z.literal(\"YOUTUBE\"),\n required: z.boolean(),\n message: z.string().min(1),\n }).nullable().optional(),\n readiness: PostReadinessSchema,\n confirmation: z.object({\n token: z.string().min(1),\n expiresAt: z.string().datetime(),\n }),\n});\nexport type PostSchedulePreview = z.infer<typeof PostSchedulePreviewSchema>;\nexport const PostSchedulePreviewResponseSchema = successEnvelopeSchema(\n PostSchedulePreviewSchema,\n);\n\nexport const PostSchedulePendingSchema = z.object({\n status: z.literal(\"PENDING\"),\n postId: z.string().min(1),\n provider: z.literal(\"YOUTUBE\"),\n mutationId: z.string().min(1),\n operation: z.enum([\"SCHEDULE\", \"CANCEL\"]),\n message: z.string().min(1),\n});\nexport type PostSchedulePending = z.infer<typeof PostSchedulePendingSchema>;\nexport const PostScheduleExecuteResultSchema = z.union([\n PostSchema,\n PostSchedulePendingSchema,\n]);\nexport type PostScheduleExecuteResult = z.infer<\n typeof PostScheduleExecuteResultSchema\n>;\nexport const PostScheduleExecuteResponseSchema = successEnvelopeSchema(\n PostScheduleExecuteResultSchema,\n);\n\nexport const PostPublishInputSchema = z.object({\n destinations: z.array(PublishingProviderSchema).min(1).max(PUBLISHING_PROVIDER_COUNT)\n .refine(\n (destinations) => new Set(destinations).size === destinations.length,\n \"destinations must not contain duplicates\",\n ),\n}).strict();\nexport type PostPublishInput = z.infer<typeof PostPublishInputSchema>;\n\nexport const PostPublishExecuteInputSchema = PostPublishInputSchema.extend({\n confirmationToken: z.string().trim().min(1).max(200),\n}).strict();\nexport type PostPublishExecuteInput = z.infer<\n typeof PostPublishExecuteInputSchema\n>;\n\nexport const PostPublishPreviewSchema = z.object({\n operation: z.literal(\"posts.publish.execute\"),\n post: z.object({\n id: z.string().min(1),\n projectId: z.string().min(1),\n version: z.number().int().positive(),\n status: PostStatusSchema,\n }),\n destinations: PostPublishInputSchema.shape.destinations,\n readiness: PostReadinessSchema,\n confirmation: z.object({\n token: z.string().min(1),\n expiresAt: z.string().datetime(),\n }),\n});\nexport type PostPublishPreview = z.infer<typeof PostPublishPreviewSchema>;\nexport const PostPublishPreviewResponseSchema = successEnvelopeSchema(\n PostPublishPreviewSchema,\n);\n\nexport const CalendarEventSchema = z.object({\n postId: z.string().min(1),\n projectId: z.string().min(1),\n title: z.string().min(1),\n caption: z.string(),\n status: PostStatusSchema.exclude([\"DRAFT\"]),\n scheduledAt: z.string().datetime(),\n timezone: z.string().nullable(),\n campaign: z.object({\n id: z.string().min(1),\n title: z.string().min(1),\n }).nullable(),\n thumbnailUrl: z.string().url().nullable(),\n destinations: z.array(z.object({\n provider: PublishingProviderSchema,\n status: PlatformPostStatusSchema,\n })),\n});\nexport type CalendarEvent = z.infer<typeof CalendarEventSchema>;\n\nexport const CalendarListQuerySchema = z.object({\n limit: z.coerce.number().int().min(1).max(100).default(50),\n cursor: z.string().min(1).optional(),\n from: z.string().datetime().optional(),\n to: z.string().datetime().optional(),\n}).superRefine((value, context) => {\n if ((value.from === undefined) !== (value.to === undefined)) {\n context.addIssue({\n code: \"custom\",\n path: value.from === undefined ? [\"from\"] : [\"to\"],\n message: \"from and to must be provided together\",\n });\n }\n if (value.from && value.to) {\n const from = Date.parse(value.from);\n const to = Date.parse(value.to);\n if (from >= to) {\n context.addIssue({\n code: \"custom\",\n path: [\"to\"],\n message: \"to must be later than from\",\n });\n } else if (to - from > 366 * 24 * 60 * 60 * 1000) {\n context.addIssue({\n code: \"custom\",\n path: [\"to\"],\n message: \"calendar ranges cannot exceed 366 days\",\n });\n }\n }\n});\nexport type CalendarListQuery = z.input<typeof CalendarListQuerySchema>;\n\nexport const CalendarListDataSchema = z.object({\n items: z.array(CalendarEventSchema),\n page: z.object({\n limit: z.number().int().min(1).max(100),\n nextCursor: z.string().min(1).nullable(),\n }),\n window: z.object({\n from: z.string().datetime(),\n to: z.string().datetime(),\n }),\n});\nexport type CalendarListData = z.infer<typeof CalendarListDataSchema>;\nexport const CalendarListResponseSchema = successEnvelopeSchema(\n CalendarListDataSchema,\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAkB;AAEX,IAAM,cAAc;AACpB,IAAM,mBAAmB;AAEzB,IAAM,wBAAwB,aAAE,OAAO;AAAA,EAC5C,WAAW,aAAE,OAAO,EAAE,IAAI,CAAC;AAC7B,CAAC;AAEM,IAAM,qBAAqB,aAAE,KAAK;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAIM,IAAM,mBAAmB,aAAE,OAAO;AAAA,EACvC,OAAO,aAAE,OAAO;AAAA,IACd,MAAM;AAAA,IACN,SAAS,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACzB,SAAS,aAAE,OAAO,aAAE,OAAO,GAAG,aAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,EACtD,CAAC;AAAA,EACD,MAAM;AACR,CAAC;AAIM,SAAS,sBAAiD,MAAe;AAC9E,SAAO,aAAE,OAAO;AAAA,IACd;AAAA,IACA,MAAM;AAAA,EACR,CAAC;AACH;AAEO,IAAM,qBAAqB,aAAE,KAAK;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAIM,IAAM,mBAAmB,aAAE,OAAO;AAAA,EACvC,IAAI;AAAA,EACJ,WAAW,aAAE,QAAQ;AAAA,EACrB,QAAQ,aAAE,KAAK;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH,CAAC;AAIM,IAAM,gBAAgB,aAAE,OAAO;AAAA,EACpC,MAAM,aAAE,QAAQ,QAAQ;AAAA,EACxB,eAAe,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC/B,YAAY,aAAE,QAAQ,WAAW;AAAA,EACjC,iBAAiB,aAAE,QAAQ,gBAAgB;AAAA,EAC3C,gBAAgB,aAAE,OAAO;AAAA,IACvB,gBAAgB,aAAE,QAAQ;AAAA,IAC1B,yBAAyB,aAAE,QAAQ;AAAA,IACnC,QAAQ,aAAE,QAAQ;AAAA,IAClB,aAAa,aAAE,QAAQ;AAAA,EACzB,CAAC;AAAA,EACD,KAAK,aAAE,OAAO;AAAA,IACZ,OAAO,aAAE,QAAQ;AAAA,IACjB,gBAAgB,aAAE,QAAQ;AAAA,IAC1B,cAAc,aAAE,KAAK,CAAC,aAAa,WAAW,CAAC;AAAA,EACjD,CAAC;AAAA,EACD,cAAc,aAAE,MAAM,gBAAgB;AACxC,CAAC;AAGM,IAAM,wBAAwB,sBAAsB,aAAa;AAGjE,IAAM,2BAA2B,aAAE,KAAK,CAAC,WAAW,SAAS,CAAC;AAG9D,IAAM,cAAc,aAAE,OAAO;AAAA,EAClC,MAAM,aAAE,OAAO;AAAA,IACb,IAAI,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACpB,MAAM,aAAE,OAAO;AAAA,IACf,OAAO,aAAE,OAAO,EAAE,MAAM;AAAA,EAC1B,CAAC;AAAA,EACD,cAAc,aAAE,OAAO;AAAA,IACrB,IAAI,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACpB,MAAM,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACtB,MAAM,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACxB,CAAC;AAAA,EACD,gBAAgB,aAAE,OAAO;AAAA,IACvB,MAAM;AAAA,IACN,cAAc,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EAC3C,CAAC;AAAA,EACD,cAAc,aAAE,MAAM,kBAAkB;AAC1C,CAAC;AAGM,IAAM,uBAAuB,sBAAsB,WAAW;AAGrE,IAAM,wBAAwB,aAAE,OAAO,EACpC,IAAI,EAAE,EACN,IAAI,GAAG,EACP,MAAM,kBAAkB;AAEpB,IAAM,uCAAuC,IAAI,KAAK;AAEtD,IAAM,wCAAwC,aAAE,OAAO;AAAA,EAC5D,MAAM;AAAA,EACN,cAAc;AAChB,CAAC;AAKM,IAAM,mCAAmC,aAAE,OAAO;AAAA,EACvD,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,WAAW,aAAE,QAAQ,QAAQ;AAAA,EAC7B,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,cAAc,aAAE,OAAO;AAAA,IACrB,IAAI,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACpB,MAAM,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACxB,CAAC;AAAA,EACD,cAAc,aAAE,MAAM,kBAAkB;AAC1C,CAAC;AAIM,IAAM,yCAAyC;AAAA,EACpD;AACF;AAKO,IAAM,mCAAmC,aAAE,OAAO;AAAA,EACvD,SAAS,aAAE,QAAQ,IAAI;AACzB,CAAC;AACM,IAAM,uCAAuC;AAAA,EAClD;AACF;AAKO,IAAM,yBAAyB,aAAE,OAAO;AAAA,EAC7C,cAAc,aAAE,MAAM,gBAAgB;AACxC,CAAC;AACM,IAAM,6BAA6B,sBAAsB,sBAAsB;AAG/E,IAAM,oBAAoB,aAAE,KAAK;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGD,IAAM,0BAA0B,aAAE,OAAO,EACtC,KAAK,EACL,IAAI,CAAC,EACL,IAAI,GAAI,EACR,IAAI,EACJ,OAAO,CAAC,UAAU;AACjB,MAAI;AACF,UAAM,MAAM,IAAI,IAAI,KAAK;AACzB,YACG,IAAI,aAAa,WAAW,IAAI,aAAa,aAC3C,CAAC,IAAI,YACL,CAAC,IAAI;AAAA,EAEZ,QAAQ;AACN,WAAO;AAAA,EACT;AACF,GAAG,sEAAsE;AAEpE,IAAM,2BAA2B,aAAE,OAAO;AAAA,EAC/C,MAAM,aAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EACtC,MAAM,kBAAkB,QAAQ,SAAS;AAAA,EACzC,YAAY,wBAAwB,SAAS;AAAA,EAC7C,aAAa,aAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAI,EAAE,SAAS;AAC3D,CAAC,EAAE,OAAO;AAIH,IAAM,gBAAgB,aAAE,OAAO;AAAA,EACpC,IAAI,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACpB,gBAAgB,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAChC,MAAM,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACtB,MAAM,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACtB,MAAM;AAAA,EACN,QAAQ,aAAE,KAAK,CAAC,UAAU,UAAU,UAAU,CAAC;AAAA,EAC/C,YAAY,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACtC,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA,EACjC,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,WAAW,aAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAIM,IAAM,yBAAyB,aAAE,OAAO;AAAA,EAC7C,OAAO,aAAE,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE;AAAA,EACzD,QAAQ,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AACrC,CAAC;AAIM,IAAM,wBAAwB,aAAE,OAAO;AAAA,EAC5C,OAAO,aAAE,MAAM,aAAa;AAAA,EAC5B,MAAM,aAAE,OAAO;AAAA,IACb,OAAO,aAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,IACtC,YAAY,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACzC,CAAC;AACH,CAAC;AAGM,IAAM,4BAA4B,sBAAsB,qBAAqB;AAG7E,IAAM,wBAAwB,sBAAsB,aAAa;AAGjE,IAAM,mBAAmB,aAAE,KAAK;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGM,IAAM,2BAA2B,aAAE,KAAK;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,kBAAkB,aAAE,OAAO;AAAA,EACtC,IAAI,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACpB,SAAS,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EAC/C,MAAM,aAAE,KAAK,CAAC,SAAS,OAAO,CAAC;AAAA,EAC/B,KAAK,aAAE,OAAO,EAAE,IAAI;AAAA,EACpB,UAAU,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC1B,WAAW,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;AAAA,EAC3D,OAAO,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,EAC5C,QAAQ,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,EAC7C,YAAY,aAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,EACpD,cAAc,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACxC,SAAS,aAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,UAAU,aAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AACzC,CAAC;AAGM,IAAM,mBAAmB,aAAE,OAAO;AAAA,EACvC,IAAI,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACpB,MAAM,aAAE,KAAK,CAAC,SAAS,OAAO,CAAC;AAAA,EAC/B,KAAK,aAAE,OAAO,EAAE,IAAI;AAAA,EACpB,cAAc,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACxC,kBAAkB,aAAE,OAAO,EAAE,SAAS;AAAA,EACtC,UAAU,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC1B,WAAW,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,EAChD,OAAO,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,EAC5C,QAAQ,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,EAC7C,YAAY,aAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,EACpD,WAAW,aAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAGM,IAAM,4BAA4B,aAAE,OAAO;AAAA,EAChD,OAAO,aAAE,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE;AAAA,EACzD,QAAQ,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACnC,MAAM,aAAE,KAAK,CAAC,SAAS,OAAO,CAAC,EAAE,SAAS;AAAA,EAC1C,OAAO,aAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AACpD,CAAC;AAGM,IAAM,2BAA2B,aAAE,OAAO;AAAA,EAC/C,OAAO,aAAE,MAAM,gBAAgB;AAAA,EAC/B,MAAM,aAAE,OAAO;AAAA,IACb,OAAO,aAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,IACtC,YAAY,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACzC,CAAC;AACH,CAAC;AAEM,IAAM,+BAA+B,sBAAsB,wBAAwB;AAEnF,IAAM,8BAA8B,aAAE,OAAO;AAAA,EAClD,UAAU,aAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAC1C,aAAa,aAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAC7C,UAAU,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AACtC,CAAC,EAAE,OAAO;AAGH,IAAM,oCAAoC,aAAE,OAAO;AAAA,EACxD,WAAW,aAAE,OAAO,EAAE,IAAI;AAAA,EAC1B,YAAY,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC5B,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,SAAS,aAAE,OAAO,aAAE,OAAO,GAAG,aAAE,OAAO,CAAC;AAAA,EACxC,aAAa,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AACzC,CAAC;AAEM,IAAM,4CAA4C,sBAAsB,iCAAiC;AAEzG,IAAM,sCAAsC,4BAA4B,OAAO;AAAA,EACpF,YAAY,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC5B,OAAO,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACpE,QAAQ,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACrE,YAAY,aAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,KAAU,EAAE,SAAS,EAAE,SAAS;AACjF,CAAC,EAAE,OAAO;AAEH,IAAM,2BAA2B,sBAAsB,gBAAgB;AAEvE,IAAM,2BAA2B,aAAE,KAAK;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,4BAA4B,yBAAyB,QAAQ;AAEnE,IAAM,wBAAwB,aAAE,OAAO;AAAA,EAC5C,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,iBAAiB,aAAE,OAAO,EAAE,SAAS;AAAA,EACrC,aAAa,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC5C,aAAa,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC5C,WAAW,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACrC,cAAc,aAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAC7C,CAAC;AAGM,IAAM,2BAA2B,aAAE,OAAO;AAAA,EAC/C,UAAU,aAAE,KAAK,CAAC,eAAe,cAAc,CAAC,EAAE,QAAQ,aAAa;AAAA,EACvE,cAAc,aAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE,QAAQ,IAAI;AAAA,EACvE,cAAc,aAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACvC,WAAW,aAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACpC,aAAa,aAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACtC,0BAA0B,aAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACnD,kBAAkB,aAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EAC3C,oBAAoB,aAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EAC7C,eAAe,aAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACxC,uBAAuB,aAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,IAAI;AAAA,EAC7E,aAAa,aAAE,MAAM,CAAC,aAAE,OAAO,EAAE,SAAS,GAAG,aAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE;AACzE,CAAC,EAAE,OAAO;AAGH,IAAM,4BAA4B,aAAE,OAAO;AAAA,EAChD,UAAU,aAAE,KAAK,CAAC,eAAe,cAAc,CAAC,EAAE,SAAS;AAAA,EAC3D,cAAc,aAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS,EAAE,SAAS;AAAA,EACpE,cAAc,aAAE,QAAQ,EAAE,SAAS;AAAA,EACnC,WAAW,aAAE,QAAQ,EAAE,SAAS;AAAA,EAChC,aAAa,aAAE,QAAQ,EAAE,SAAS;AAAA,EAClC,0BAA0B,aAAE,QAAQ,EAAE,SAAS;AAAA,EAC/C,kBAAkB,aAAE,QAAQ,EAAE,SAAS;AAAA,EACvC,oBAAoB,aAAE,QAAQ,EAAE,SAAS;AAAA,EACzC,eAAe,aAAE,QAAQ,EAAE,SAAS;AAAA,EACpC,uBAAuB,aAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,EAC1E,UAAU,aAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,aAAa,aAAE,MAAM,CAAC,aAAE,OAAO,EAAE,SAAS,GAAG,aAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,SAAS;AACxE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,YAAY;AAC1C,QAAM,iBAAiB,MAAM,aAAa,QAAQ,QAAQ,MAAM,WAAW;AAC3E,MAAI,MAAM,aAAa,gBAAgB;AACrC,QACE,MAAM,gBAAgB,QACnB,MAAM,iBAAiB,QACvB,MAAM,cAAc,QACpB,MAAM,gBAAgB,QACtB,MAAM,6BAA6B,QACnC,MAAM,qBAAqB,QAC3B,MAAM,uBAAuB,QAC7B,MAAM,kBAAkB,QACxB,MAAM,yBAAyB,MAClC;AACA,cAAQ,SAAS;AAAA,QACf,MAAM;AAAA,QACN,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AACA;AAAA,EACF;AACA,MAAI,CAAC,eAAgB;AAErB,MAAI,CAAC,MAAM,UAAU;AACnB,YAAQ,SAAS;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,UAAU;AAAA,MACjB,SAAS;AAAA,IACX,CAAC;AACD;AAAA,EACF;AAEA,QAAM,wBAAwB;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,MAAI,CAAC,MAAM,cAAc;AACvB,YAAQ,SAAS;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,cAAc;AAAA,MACrB,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,aAAW,SAAS,uBAAuB;AACzC,QAAI,MAAM,KAAK,MAAM,QAAW;AAC9B,cAAQ,SAAS;AAAA,QACf,MAAM;AAAA,QACN,MAAM,CAAC,KAAK;AAAA,QACZ,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF;AACA,MACE,MAAM,6BAA6B,QAChC,MAAM,qBAAqB,QAC3B,MAAM,uBAAuB,MAChC;AACA,YAAQ,SAAS;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,0BAA0B;AAAA,MACjC,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,MACE,MAAM,6BAA6B,UAC/B,MAAM,qBAAqB,QAAQ,MAAM,uBAAuB,OACpE;AACA,YAAQ,SAAS;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,0BAA0B;AAAA,MACjC,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACF,CAAC,EAAE,UAAU,CAAC,WAAW;AAAA,EACvB,UAAU,MAAM,YAAY;AAAA,EAC5B,cAAc,MAAM,gBAAgB;AAAA,EACpC,cAAc,MAAM,gBAAgB;AAAA,EACpC,WAAW,MAAM,aAAa;AAAA,EAC9B,aAAa,MAAM,eAAe;AAAA,EAClC,0BAA0B,MAAM,4BAA4B;AAAA,EAC5D,kBAAkB,MAAM,oBAAoB;AAAA,EAC5C,oBAAoB,MAAM,sBAAsB;AAAA,EAChD,eAAe,MAAM,iBAAiB;AAAA,EACtC,uBAAuB,MAAM,yBAAyB;AAAA,EACtD,UAAU,MAAM,aAAa,QAAQ,QAAQ,MAAM,WAAW;AAChE,EAAE;AAIF,SAAS,iBAAiB,MAAyB;AACjD,SAAO,KAAK,OAAO,CAAC,OAAO,KAAK,UAC9B,SAAS,QAAQ,IAAI,KAAK,IAAI,UAAU,IAAI,SAAS,GAAG,IAAI,IAAI,IAC/D,CAAC;AACN;AAEO,IAAM,4BAA4B,aAAE,OAAO;AAAA,EAChD,OAAO,aAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE;AAAA,IACvC,CAAC,UAAU,CAAC,OAAO,KAAK,KAAK;AAAA,IAC7B;AAAA,EACF;AAAA,EACA,YAAY,aAAE,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,EAAE,IAAI,EAAE;AAAA,EACnD,eAAe,aAAE,KAAK,CAAC,UAAU,YAAY,SAAS,CAAC;AAAA,EACvD,aAAa,aAAE,QAAQ;AAAA,EACvB,wBAAwB,aAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACjD,mBAAmB,aAAE,QAAQ,EAAE,QAAQ,IAAI;AAAA,EAC3C,MAAM,aAAE,MAAM,aAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE;AAAA,IACvD,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,SAAS,KAAK;AAAA,IACtC;AAAA,EACF,EAAE;AAAA,IACA,CAAC,SAAS,iBAAiB,IAAI,KAAK;AAAA,IACpC;AAAA,EACF,EAAE,QAAQ,CAAC,CAAC;AACd,CAAC,EAAE,OAAO;AAGH,IAAM,6BAA6B,aAAE,OAAO;AAAA,EACjD,QAAQ,yBAAyB,SAAS,EAAE,SAAS;AAAA,EACrD,SAAS,0BAA0B,SAAS,EAAE,SAAS;AACzD,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAGf,IAAM,aAAa,aAAE,OAAO;AAAA,EACjC,IAAI,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACpB,WAAW,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC3B,SAAS,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACnC,UAAU,aAAE,OAAO;AAAA,IACjB,IAAI,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACpB,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACzB,CAAC,EAAE,SAAS;AAAA,EACZ,SAAS,aAAE,OAAO;AAAA,EAClB,QAAQ;AAAA,EACR,aAAa,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC5C,UAAU,aAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,aAAa,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC5C,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,OAAO,aAAE,MAAM,eAAe;AAAA,EAC9B,cAAc,aAAE,MAAM,qBAAqB;AAAA,EAC3C,kBAAkB,2BAA2B,SAAS;AACxD,CAAC;AAGM,IAAM,sBAAsB,aAAE,OAAO;AAAA,EAC1C,OAAO,aAAE,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE;AAAA,EACzD,QAAQ,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACnC,QAAQ,iBAAiB,SAAS;AACpC,CAAC;AAGM,IAAM,qBAAqB,aAAE,OAAO;AAAA,EACzC,OAAO,aAAE,MAAM,UAAU;AAAA,EACzB,MAAM,aAAE,OAAO;AAAA,IACb,OAAO,aAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,IACtC,YAAY,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACzC,CAAC;AACH,CAAC;AAEM,IAAM,yBAAyB,sBAAsB,kBAAkB;AAGvE,IAAM,qBAAqB,sBAAsB,UAAU;AAGlE,IAAM,2BAA2B,IAAI,KAAK,UAAU,MAAM;AAAA,EACxD,aAAa;AACf,CAAC;AAED,IAAM,uBAAuB,aAAE,OAAO,EAAE,IAAI,GAAI,EAAE;AAAA,EAChD,CAAC,UAAU,MAAM,KAAK,yBAAyB,QAAQ,KAAK,CAAC,EAAE,UAAU;AAAA,EACzE;AACF;AAEA,IAAM,cAAc,IAAI,YAAY;AACpC,IAAM,2BAA2B,aAAE,OAAO,EAAE,IAAI,GAAI,EAAE;AAAA,EACpD,CAAC,UAAU,YAAY,OAAO,KAAK,EAAE,UAAU;AAAA,EAC/C;AACF;AAEA,IAAM,oCAAoC,aAAE,OAAO;AAAA,EACjD,WAAW,aAAE,OAAO,EAAE,IAAI,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,EACpD,QAAQ,aAAE,OAAO,EAAE,IAAI,IAAI,EAAE,SAAS,EAAE,SAAS;AAAA,EACjD,SAAS,yBAAyB,SAAS,EAAE,SAAS;AAAA,EACtD,SAAS,qBAAqB,SAAS,EAAE,SAAS;AACpD,CAAC,EAAE,OAAO;AAEV,IAAM,uBAAuB,aAAE,MAAM,wBAAwB,EAAE,IAAI,yBAAyB,EAAE;AAAA,EAC5F,CAAC,cAAc,IAAI,IAAI,SAAS,EAAE,SAAS,UAAU;AAAA,EACrD;AACF;AAEA,IAAM,2BAA2B,aAAE,MAAM,aAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE;AAAA,EAClF,CAAC,QAAQ,IAAI,IAAI,GAAG,EAAE,SAAS,IAAI;AAAA,EACnC;AACF;AAEO,IAAM,uBAAuB,aAAE,OAAO;AAAA,EAC3C,SAAS,aAAE,OAAO,EAAE,IAAI,IAAI,EAAE,UAAU,CAAC,UAAU,MAAM,KAAK,CAAC,EAAE,QAAQ,EAAE;AAAA,EAC3E,WAAW,qBAAqB,QAAQ,CAAC,CAAC;AAAA,EAC1C,eAAe,yBAAyB,QAAQ,CAAC,CAAC;AAAA,EAClD,kBAAkB,kCAAkC,QAAQ,CAAC,CAAC;AAAA,EAC9D,gBAAgB,0BAA0B,SAAS,EAAE,QAAQ,IAAI;AAAA,EACjE,iBAAiB,0BAA0B,SAAS,EAAE,QAAQ,IAAI;AACpE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,YAAY;AAC1C,MAAI,MAAM,QAAQ,WAAW,KAAK,MAAM,cAAc,WAAW,GAAG;AAClE,YAAQ,SAAS;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,SAAS;AAAA,MAChB,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,MAAI,MAAM,kBAAkB,CAAC,MAAM,UAAU,SAAS,QAAQ,GAAG;AAC/D,YAAQ,SAAS;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,gBAAgB;AAAA,MACvB,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,MAAI,MAAM,mBAAmB,CAAC,MAAM,UAAU,SAAS,SAAS,GAAG;AACjE,YAAQ,SAAS;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,iBAAiB;AAAA,MACxB,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,MAAI,MAAM,UAAU,SAAS,SAAS,KAAK,CAAC,MAAM,iBAAiB;AACjE,YAAQ,SAAS;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,iBAAiB;AAAA,MACxB,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,MACE,MAAM,UAAU,SAAS,SAAS,KAC/B,MAAM,iBAAiB,WAAW,QAClC,YAAY,OAAO,MAAM,OAAO,EAAE,SAAS,KAC9C;AACA,YAAQ,SAAS;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,SAAS;AAAA,MAChB,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,MACE,MAAM,UAAU,SAAS,SAAS,KAC/B,MAAM,iBAAiB,WAAW,QAClC,MAAM,KAAK,yBAAyB,QAAQ,MAAM,OAAO,CAAC,EAAE,SAAS,KACxE;AACA,YAAQ,SAAS;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,SAAS;AAAA,MAChB,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACF,CAAC;AAIM,IAAM,6BAA6B,aAAE,OAAO;AAAA,EACjD,SAAS,aAAE,OAAO,EAAE,IAAI,IAAI,EAAE,UAAU,CAAC,UAAU,MAAM,KAAK,CAAC,EAAE,SAAS;AAAA,EAC1E,WAAW,qBAAqB,SAAS;AAAA,EACzC,eAAe,yBAAyB,SAAS;AAAA,EACjD,kBAAkB,kCAAkC,SAAS;AAAA,EAC7D,gBAAgB,0BAA0B,SAAS,EAAE,SAAS;AAAA,EAC9D,iBAAiB,0BAA0B,SAAS,EAAE,SAAS;AACjE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,YAAY;AAC1C,MAAI,OAAO,OAAO,KAAK,EAAE,MAAM,CAAC,UAAU,UAAU,MAAS,GAAG;AAC9D,YAAQ,SAAS,EAAE,MAAM,UAAU,SAAS,8CAA8C,CAAC;AAAA,EAC7F;AACA,MAAI,MAAM,aAAa,MAAM,kBAAkB,CAAC,MAAM,UAAU,SAAS,QAAQ,GAAG;AAClF,YAAQ,SAAS;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,gBAAgB;AAAA,MACvB,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,MAAI,MAAM,aAAa,MAAM,mBAAmB,CAAC,MAAM,UAAU,SAAS,SAAS,GAAG;AACpF,YAAQ,SAAS;AAAA,MACf,MAAM;AAAA,MACN,MAAM,CAAC,iBAAiB;AAAA,MACxB,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACF,CAAC;AAIM,IAAM,oCAAoC,aAAE,KAAK;AAAA,EACtD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,6BAA6B,aAAE,KAAK;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,0BAA0B,aAAE,OAAO;AAAA,EAC9C,UAAU;AAAA,EACV,kBAAkB;AAAA,EAClB,WAAW,aAAE,QAAQ;AAAA,EACrB,SAAS,aAAE,OAAO;AAAA,IAChB,UAAU,aAAE,OAAO,EAAE,SAAS;AAAA,IAC9B,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA,IACjC,WAAW,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACvC,CAAC;AAAA,EACD,eAAe,aAAE,MAAM,aAAE,OAAO,CAAC;AAAA,EACjC,WAAW,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC1C,QAAQ,aAAE,OAAO;AAAA,IACf,QAAQ;AAAA,IACR,WAAW,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,IAC1C,MAAM,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACtB,SAAS,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACzB,SAAS,aAAE,QAAQ;AAAA,IACnB,gBAAgB,aAAE,QAAQ;AAAA,IAC1B,oBAAoB,aAAE,QAAQ;AAAA,EAChC,CAAC;AACH,CAAC;AAGM,IAAM,kCAAkC,aAAE,OAAO;AAAA,EACtD,OAAO,aAAE,MAAM,uBAAuB,EACnC,IAAI,yBAAyB,EAC7B;AAAA,IACC,CAAC,UAAU,IAAI,IAAI,MAAM,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,EAAE,SAAS,MAAM;AAAA,IACtE;AAAA,EACF;AACJ,CAAC;AAIM,IAAM,sCAAsC;AAAA,EACjD;AACF;AAEO,IAAM,8BAA8B,aAAE,OAAO;AAAA,EAClD,UAAU,aAAE,QAAQ,QAAQ;AAAA,EAC5B,SAAS,aAAE,OAAO;AAAA,IAChB,UAAU,aAAE,OAAO,EAAE,SAAS;AAAA,IAC9B,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA,IACjC,WAAW,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACvC,CAAC;AAAA,EACD,kBAAkB,aAAE,MAAM,aAAE,KAAK,CAAC,eAAe,cAAc,CAAC,CAAC,EAC9D,IAAI,CAAC,EACL;AAAA,IACC,CAAC,UAAU,IAAI,IAAI,KAAK,EAAE,SAAS,MAAM;AAAA,IACzC;AAAA,EACF;AAAA,EACF,mBAAmB,aAAE,MAAM,aAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,EACjE;AAAA,IACC,CAAC,UAAU,IAAI,IAAI,KAAK,EAAE,SAAS,MAAM;AAAA,IACzC;AAAA,EACF;AAAA,EACF,cAAc,aAAE,OAAO;AAAA,IACrB,SAAS,aAAE,OAAO,EAAE,WAAW,aAAE,QAAQ,EAAE,CAAC;AAAA,IAC5C,MAAM,aAAE,OAAO,EAAE,WAAW,aAAE,QAAQ,EAAE,CAAC;AAAA,IACzC,QAAQ,aAAE,OAAO,EAAE,WAAW,aAAE,QAAQ,EAAE,CAAC;AAAA,EAC7C,CAAC;AAAA,EACD,oBAAoB,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,KAAU,EAAE,SAAS;AAAA,EACzE,QAAQ,aAAE,OAAO;AAAA,IACf,QAAQ;AAAA,IACR,MAAM,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACtB,SAAS,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC3B,CAAC;AAAA,EACD,WAAW,aAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAIM,IAAM,gCAAgC,aAAE,mBAAmB,YAAY;AAAA,EAC5E;AACF,CAAC;AAEM,IAAM,wCAAwC;AAAA,EACnD;AACF;AAEO,IAAM,wBAAwB,aAAE,KAAK;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,wBAAwB,aAAE,OAAO;AAAA,EAC5C,MAAM,aAAE,KAAK;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD,UAAU,yBAAyB,SAAS;AAC9C,CAAC;AAEM,IAAM,2BAA2B,aAAE,OAAO;AAAA,EAC/C,KAAK,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACrB,IAAI,aAAE,KAAK;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD,UAAU,yBAAyB,SAAS;AAAA,EAC5C,SAAS,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACpC,QAAQ;AAAA,EACR,QAAQ,aAAE,KAAK,CAAC,SAAS,MAAM,CAAC;AAAA,EAChC,WAAW,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC1C,SAAS,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACzB,MAAM,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACtB,QAAQ,sBAAsB,SAAS;AACzC,CAAC;AAEM,IAAM,sBAAsB,aAAE,OAAO;AAAA,EAC1C,QAAQ,aAAE,MAAM,wBAAwB;AAAA,EACxC,UAAU,aAAE,MAAM,aAAE,OAAO;AAAA,IACzB,UAAU;AAAA,IACV,WAAW,aAAE,QAAQ;AAAA,IACrB,UAAU,aAAE,OAAO,EAAE,SAAS;AAAA,IAC9B,WAAW,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,IACrC,gBAAgB,aAAE,QAAQ;AAAA,EAC5B,CAAC,CAAC;AAAA,EACF,mBAAmB,aAAE,QAAQ;AAAA,EAC7B,qBAAqB,aAAE,MAAM,wBAAwB;AAAA,EACrD,qBAAqB,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AACtD,CAAC;AAEM,IAAM,8BAA8B;AAAA,EACzC;AACF;AAEO,IAAM,0BAA0B,aAAE,OAAO;AAAA,EAC9C,aAAa,aAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,KAAK,CAAC;AAAA,EACjD,UAAU,aAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,OAAO,CAAC,aAAa;AAC/D,QAAI;AACF,UAAI,KAAK,eAAe,MAAM,EAAE,UAAU,SAAS,CAAC,EAAE,OAAO;AAC7D,aAAO;AAAA,IACT,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF,GAAG,wCAAwC;AAC7C,CAAC,EAAE,OAAO;AAGH,IAAM,iCAAiC,wBAAwB,OAAO;AAAA,EAC3E,mBAAmB,aAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AACrD,CAAC,EAAE,OAAO;AAKH,IAAM,4BAA4B,aAAE,OAAO;AAAA,EAChD,WAAW,aAAE,QAAQ,wBAAwB;AAAA,EAC7C,MAAM,aAAE,OAAO;AAAA,IACb,IAAI,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACpB,WAAW,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IAC3B,SAAS,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,IACnC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD,UAAU;AAAA,EACV,cAAc,aAAE,MAAM,wBAAwB,EAAE,IAAI,CAAC,EAAE,IAAI,yBAAyB;AAAA,EACpF,wBAAwB,aAAE,OAAO;AAAA,IAC/B,UAAU,aAAE,QAAQ,SAAS;AAAA,IAC7B,UAAU,aAAE,QAAQ;AAAA,IACpB,SAAS,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC3B,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EACvB,WAAW;AAAA,EACX,cAAc,aAAE,OAAO;AAAA,IACrB,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACvB,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA,EACjC,CAAC;AACH,CAAC;AAEM,IAAM,oCAAoC;AAAA,EAC/C;AACF;AAEO,IAAM,4BAA4B,aAAE,OAAO;AAAA,EAChD,QAAQ,aAAE,QAAQ,SAAS;AAAA,EAC3B,QAAQ,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACxB,UAAU,aAAE,QAAQ,SAAS;AAAA,EAC7B,YAAY,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC5B,WAAW,aAAE,KAAK,CAAC,YAAY,QAAQ,CAAC;AAAA,EACxC,SAAS,aAAE,OAAO,EAAE,IAAI,CAAC;AAC3B,CAAC;AAEM,IAAM,kCAAkC,aAAE,MAAM;AAAA,EACrD;AAAA,EACA;AACF,CAAC;AAIM,IAAM,oCAAoC;AAAA,EAC/C;AACF;AAEO,IAAM,yBAAyB,aAAE,OAAO;AAAA,EAC7C,cAAc,aAAE,MAAM,wBAAwB,EAAE,IAAI,CAAC,EAAE,IAAI,yBAAyB,EACjF;AAAA,IACC,CAAC,iBAAiB,IAAI,IAAI,YAAY,EAAE,SAAS,aAAa;AAAA,IAC9D;AAAA,EACF;AACJ,CAAC,EAAE,OAAO;AAGH,IAAM,gCAAgC,uBAAuB,OAAO;AAAA,EACzE,mBAAmB,aAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AACrD,CAAC,EAAE,OAAO;AAKH,IAAM,2BAA2B,aAAE,OAAO;AAAA,EAC/C,WAAW,aAAE,QAAQ,uBAAuB;AAAA,EAC5C,MAAM,aAAE,OAAO;AAAA,IACb,IAAI,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACpB,WAAW,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IAC3B,SAAS,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,IACnC,QAAQ;AAAA,EACV,CAAC;AAAA,EACD,cAAc,uBAAuB,MAAM;AAAA,EAC3C,WAAW;AAAA,EACX,cAAc,aAAE,OAAO;AAAA,IACrB,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACvB,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA,EACjC,CAAC;AACH,CAAC;AAEM,IAAM,mCAAmC;AAAA,EAC9C;AACF;AAEO,IAAM,sBAAsB,aAAE,OAAO;AAAA,EAC1C,QAAQ,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACxB,WAAW,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC3B,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,SAAS,aAAE,OAAO;AAAA,EAClB,QAAQ,iBAAiB,QAAQ,CAAC,OAAO,CAAC;AAAA,EAC1C,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA,EACjC,UAAU,aAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,UAAU,aAAE,OAAO;AAAA,IACjB,IAAI,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACpB,OAAO,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACzB,CAAC,EAAE,SAAS;AAAA,EACZ,cAAc,aAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACxC,cAAc,aAAE,MAAM,aAAE,OAAO;AAAA,IAC7B,UAAU;AAAA,IACV,QAAQ;AAAA,EACV,CAAC,CAAC;AACJ,CAAC;AAGM,IAAM,0BAA0B,aAAE,OAAO;AAAA,EAC9C,OAAO,aAAE,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,QAAQ,EAAE;AAAA,EACzD,QAAQ,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACnC,MAAM,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACrC,IAAI,aAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AACrC,CAAC,EAAE,YAAY,CAAC,OAAO,YAAY;AACjC,MAAK,MAAM,SAAS,YAAgB,MAAM,OAAO,SAAY;AAC3D,YAAQ,SAAS;AAAA,MACf,MAAM;AAAA,MACN,MAAM,MAAM,SAAS,SAAY,CAAC,MAAM,IAAI,CAAC,IAAI;AAAA,MACjD,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,MAAI,MAAM,QAAQ,MAAM,IAAI;AAC1B,UAAM,OAAO,KAAK,MAAM,MAAM,IAAI;AAClC,UAAM,KAAK,KAAK,MAAM,MAAM,EAAE;AAC9B,QAAI,QAAQ,IAAI;AACd,cAAQ,SAAS;AAAA,QACf,MAAM;AAAA,QACN,MAAM,CAAC,IAAI;AAAA,QACX,SAAS;AAAA,MACX,CAAC;AAAA,IACH,WAAW,KAAK,OAAO,MAAM,KAAK,KAAK,KAAK,KAAM;AAChD,cAAQ,SAAS;AAAA,QACf,MAAM;AAAA,QACN,MAAM,CAAC,IAAI;AAAA,QACX,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF;AACF,CAAC;AAGM,IAAM,yBAAyB,aAAE,OAAO;AAAA,EAC7C,OAAO,aAAE,MAAM,mBAAmB;AAAA,EAClC,MAAM,aAAE,OAAO;AAAA,IACb,OAAO,aAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,IACtC,YAAY,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACzC,CAAC;AAAA,EACD,QAAQ,aAAE,OAAO;AAAA,IACf,MAAM,aAAE,OAAO,EAAE,SAAS;AAAA,IAC1B,IAAI,aAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,CAAC;AACH,CAAC;AAEM,IAAM,6BAA6B;AAAA,EACxC;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { z } from \"zod\";\r\n\r\nexport const API_VERSION = \"v1\" as const;\r\nexport const CONTRACT_VERSION = \"0.14.0\" as const;\r\n\r\nexport const RequestMetadataSchema = z.object({\r\n requestId: z.string().min(1),\r\n});\r\n\r\nexport const ApiErrorCodeSchema = z.enum([\r\n \"AUTH_REQUIRED\",\r\n \"FORBIDDEN\",\r\n \"NOT_FOUND\",\r\n \"FEATURE_DISABLED\",\r\n \"BILLING_REQUIRED\",\r\n \"LIMIT_REACHED\",\r\n \"VALIDATION_ERROR\",\r\n \"CONFLICT\",\r\n \"RATE_LIMITED\",\r\n \"INTERNAL_ERROR\",\r\n]);\r\n\r\nexport type ApiErrorCode = z.infer<typeof ApiErrorCodeSchema>;\r\n\r\nexport const ApiProblemSchema = z.object({\r\n error: z.object({\r\n code: ApiErrorCodeSchema,\r\n message: z.string().min(1),\r\n details: z.record(z.string(), z.unknown()).optional(),\r\n }),\r\n meta: RequestMetadataSchema,\r\n});\r\n\r\nexport type ApiProblem = z.infer<typeof ApiProblemSchema>;\r\n\r\nexport function successEnvelopeSchema<TSchema extends z.ZodType>(data: TSchema) {\r\n return z.object({\r\n data,\r\n meta: RequestMetadataSchema,\r\n });\r\n}\r\n\r\nexport const CapabilityIdSchema = z.enum([\r\n \"identity:read\",\r\n \"projects:read\",\r\n \"projects:write\",\r\n \"posts:read\",\r\n \"posts:write\",\r\n \"posts:schedule\",\r\n \"posts:publish\",\r\n \"integrations:read\",\r\n \"calendar:read\",\r\n]);\r\n\r\nexport type CapabilityId = z.infer<typeof CapabilityIdSchema>;\r\n\r\nexport const CapabilitySchema = z.object({\r\n id: CapabilityIdSchema,\r\n available: z.boolean(),\r\n reason: z.enum([\r\n \"AVAILABLE\",\r\n \"AUTH_REQUIRED\",\r\n \"SCOPE_REQUIRED\",\r\n \"FEATURE_DISABLED\",\r\n ]),\r\n});\r\n\r\nexport type Capability = z.infer<typeof CapabilitySchema>;\r\n\r\nexport const ApiMetaSchema = z.object({\r\n name: z.literal(\"Rolino\"),\r\n serverVersion: z.string().min(1),\r\n apiVersion: z.literal(API_VERSION),\r\n contractVersion: z.literal(CONTRACT_VERSION),\r\n authentication: z.object({\r\n browserSession: z.boolean(),\r\n cliBrowserAuthorization: z.boolean(),\r\n apiKey: z.boolean(),\r\n remoteOAuth: z.boolean(),\r\n }),\r\n mcp: z.object({\r\n stdio: z.boolean(),\r\n streamableHttp: z.boolean(),\r\n remoteStatus: z.enum([\"AVAILABLE\", \"AUTH_GATE\"]),\r\n }),\r\n capabilities: z.array(CapabilitySchema),\r\n});\r\n\r\nexport type ApiMeta = z.infer<typeof ApiMetaSchema>;\r\nexport const ApiMetaResponseSchema = successEnvelopeSchema(ApiMetaSchema);\r\nexport type ApiMetaResponse = z.infer<typeof ApiMetaResponseSchema>;\r\n\r\nexport const AuthenticationKindSchema = z.enum([\"session\", \"api_key\"]);\r\nexport type AuthenticationKind = z.infer<typeof AuthenticationKindSchema>;\r\n\r\nexport const ActorSchema = z.object({\r\n user: z.object({\r\n id: z.string().min(1),\r\n name: z.string(),\r\n email: z.string().email(),\r\n }),\r\n organization: z.object({\r\n id: z.string().min(1),\r\n name: z.string().min(1),\r\n role: z.string().min(1),\r\n }),\r\n authentication: z.object({\r\n kind: AuthenticationKindSchema,\r\n credentialId: z.string().min(1).nullable(),\r\n }),\r\n capabilities: z.array(CapabilityIdSchema),\r\n});\r\n\r\nexport type Actor = z.infer<typeof ActorSchema>;\r\nexport const WhoAmIResponseSchema = successEnvelopeSchema(ActorSchema);\r\nexport type WhoAmIResponse = z.infer<typeof WhoAmIResponseSchema>;\r\n\r\nconst Base64UrlSecretSchema = z.string()\r\n .min(43)\r\n .max(128)\r\n .regex(/^[A-Za-z0-9_-]+$/);\r\n\r\nexport const CLI_BROWSER_AUTHORIZATION_TIMEOUT_MS = 5 * 60 * 1000;\r\n\r\nexport const CliAuthorizationExchangeRequestSchema = z.object({\r\n code: Base64UrlSecretSchema,\r\n codeVerifier: Base64UrlSecretSchema,\r\n});\r\nexport type CliAuthorizationExchangeRequest = z.infer<\r\n typeof CliAuthorizationExchangeRequestSchema\r\n>;\r\n\r\nexport const CliAuthorizationCredentialSchema = z.object({\r\n token: z.string().min(1),\r\n tokenType: z.literal(\"Bearer\"),\r\n expiresAt: z.string().datetime(),\r\n organization: z.object({\r\n id: z.string().min(1),\r\n name: z.string().min(1),\r\n }),\r\n capabilities: z.array(CapabilityIdSchema),\r\n});\r\nexport type CliAuthorizationCredential = z.infer<\r\n typeof CliAuthorizationCredentialSchema\r\n>;\r\nexport const CliAuthorizationExchangeResponseSchema = successEnvelopeSchema(\r\n CliAuthorizationCredentialSchema,\r\n);\r\nexport type CliAuthorizationExchangeResponse = z.infer<\r\n typeof CliAuthorizationExchangeResponseSchema\r\n>;\r\n\r\nexport const CliAuthorizationRevokeDataSchema = z.object({\r\n revoked: z.literal(true),\r\n});\r\nexport const CliAuthorizationRevokeResponseSchema = successEnvelopeSchema(\r\n CliAuthorizationRevokeDataSchema,\r\n);\r\nexport type CliAuthorizationRevokeResponse = z.infer<\r\n typeof CliAuthorizationRevokeResponseSchema\r\n>;\r\n\r\nexport const CapabilitiesDataSchema = z.object({\r\n capabilities: z.array(CapabilitySchema),\r\n});\r\nexport const CapabilitiesResponseSchema = successEnvelopeSchema(CapabilitiesDataSchema);\r\nexport type CapabilitiesResponse = z.infer<typeof CapabilitiesResponseSchema>;\r\n\r\nexport const ProjectTypeSchema = z.enum([\r\n \"PRODUCT\",\r\n \"LAUNCH\",\r\n \"EVENT\",\r\n \"CONTENT_SERIES\",\r\n \"CLIENT\",\r\n \"BRAND\",\r\n \"INTERNAL\",\r\n]);\r\nexport type ProjectType = z.infer<typeof ProjectTypeSchema>;\r\n\r\nconst ProjectWebsiteUrlSchema = z.string()\r\n .trim()\r\n .min(1)\r\n .max(2000)\r\n .url()\r\n .refine((value) => {\r\n try {\r\n const url = new URL(value);\r\n return (\r\n (url.protocol === \"http:\" || url.protocol === \"https:\")\r\n && !url.username\r\n && !url.password\r\n );\r\n } catch {\r\n return false;\r\n }\r\n }, \"websiteUrl must be an absolute http or https URL without credentials\");\r\n\r\nexport const ProjectCreateInputSchema = z.object({\r\n name: z.string().trim().min(1).max(100),\r\n type: ProjectTypeSchema.default(\"PRODUCT\"),\r\n websiteUrl: ProjectWebsiteUrlSchema.optional(),\r\n description: z.string().trim().min(1).max(2000).optional(),\r\n}).strict();\r\nexport type ProjectCreateInput = z.input<typeof ProjectCreateInputSchema>;\r\nexport type ProjectCreateData = z.infer<typeof ProjectCreateInputSchema>;\r\n\r\nexport const ProjectSchema = z.object({\r\n id: z.string().min(1),\r\n organizationId: z.string().min(1),\r\n name: z.string().min(1),\r\n slug: z.string().min(1),\r\n type: ProjectTypeSchema,\r\n status: z.enum([\"ACTIVE\", \"PAUSED\", \"ARCHIVED\"]),\r\n websiteUrl: z.string().url().nullable(),\r\n description: z.string().nullable(),\r\n createdAt: z.string().datetime(),\r\n updatedAt: z.string().datetime(),\r\n});\r\n\r\nexport type Project = z.infer<typeof ProjectSchema>;\r\n\r\nexport const ProjectListQuerySchema = z.object({\r\n limit: z.coerce.number().int().min(1).max(100).default(50),\r\n cursor: z.string().min(1).optional(),\r\n});\r\n\r\nexport type ProjectListQuery = z.input<typeof ProjectListQuerySchema>;\r\n\r\nexport const ProjectListDataSchema = z.object({\r\n items: z.array(ProjectSchema),\r\n page: z.object({\r\n limit: z.number().int().min(1).max(100),\r\n nextCursor: z.string().min(1).nullable(),\r\n }),\r\n});\r\n\r\nexport type ProjectListData = z.infer<typeof ProjectListDataSchema>;\r\nexport const ProjectListResponseSchema = successEnvelopeSchema(ProjectListDataSchema);\r\nexport type ProjectListResponse = z.infer<typeof ProjectListResponseSchema>;\r\n\r\nexport const ProjectResponseSchema = successEnvelopeSchema(ProjectSchema);\r\nexport type ProjectResponse = z.infer<typeof ProjectResponseSchema>;\r\n\r\nexport const PostStatusSchema = z.enum([\r\n \"DRAFT\",\r\n \"SCHEDULED\",\r\n \"ACTION_REQUIRED\",\r\n \"PUBLISHING\",\r\n \"PUBLISHED\",\r\n \"PARTIALLY_PUBLISHED\",\r\n \"FAILED\",\r\n]);\r\nexport type PostStatus = z.infer<typeof PostStatusSchema>;\r\n\r\nexport const PlatformPostStatusSchema = z.enum([\r\n \"DRAFT\",\r\n \"SCHEDULED\",\r\n \"PREPARING\",\r\n \"ACTION_REQUIRED\",\r\n \"PUBLISHING\",\r\n \"PUBLISHED\",\r\n \"FAILED\",\r\n]);\r\n\r\nexport const PostMediaSchema = z.object({\r\n id: z.string().min(1),\r\n assetId: z.string().min(1).nullable().optional(),\r\n type: z.enum([\"IMAGE\", \"VIDEO\"]),\r\n url: z.string().url(),\r\n mimeType: z.string().min(1),\r\n sizeBytes: z.number().int().positive().nullable().optional(),\r\n width: z.number().int().positive().nullable(),\r\n height: z.number().int().positive().nullable(),\r\n durationMs: z.number().int().nonnegative().nullable(),\r\n thumbnailUrl: z.string().url().nullable(),\r\n altText: z.string().nullable(),\r\n position: z.number().int().nonnegative(),\r\n});\r\nexport type PostMedia = z.infer<typeof PostMediaSchema>;\r\n\r\nexport const MediaAssetSchema = z.object({\r\n id: z.string().min(1),\r\n type: z.enum([\"IMAGE\", \"VIDEO\"]),\r\n url: z.string().url(),\r\n thumbnailUrl: z.string().url().nullable(),\r\n originalFileName: z.string().nullable(),\r\n mimeType: z.string().min(1),\r\n sizeBytes: z.number().int().positive().nullable(),\r\n width: z.number().int().positive().nullable(),\r\n height: z.number().int().positive().nullable(),\r\n durationMs: z.number().int().nonnegative().nullable(),\r\n createdAt: z.string().datetime(),\r\n});\r\nexport type MediaAsset = z.infer<typeof MediaAssetSchema>;\r\n\r\nexport const MediaAssetListQuerySchema = z.object({\r\n limit: z.coerce.number().int().min(1).max(100).default(50),\r\n cursor: z.string().min(1).optional(),\r\n type: z.enum([\"IMAGE\", \"VIDEO\"]).optional(),\r\n query: z.string().trim().min(1).max(100).optional(),\r\n});\r\nexport type MediaAssetListQuery = z.input<typeof MediaAssetListQuerySchema>;\r\n\r\nexport const MediaAssetListDataSchema = z.object({\r\n items: z.array(MediaAssetSchema),\r\n page: z.object({\r\n limit: z.number().int().min(1).max(100),\r\n nextCursor: z.string().min(1).nullable(),\r\n }),\r\n});\r\nexport type MediaAssetListData = z.infer<typeof MediaAssetListDataSchema>;\r\nexport const MediaAssetListResponseSchema = successEnvelopeSchema(MediaAssetListDataSchema);\r\n\r\nexport const MediaAssetUploadInputSchema = z.object({\r\n fileName: z.string().trim().min(1).max(255),\r\n contentType: z.string().trim().min(1).max(100),\r\n fileSize: z.number().int().positive(),\r\n}).strict();\r\nexport type MediaAssetUploadInput = z.infer<typeof MediaAssetUploadInputSchema>;\r\n\r\nexport const MediaAssetUploadPreparationSchema = z.object({\r\n uploadUrl: z.string().url(),\r\n storageKey: z.string().min(1),\r\n expiresAt: z.string().datetime(),\r\n headers: z.record(z.string(), z.string()),\r\n maxFileSize: z.number().int().positive(),\r\n});\r\nexport type MediaAssetUploadPreparation = z.infer<typeof MediaAssetUploadPreparationSchema>;\r\nexport const MediaAssetUploadPreparationResponseSchema = successEnvelopeSchema(MediaAssetUploadPreparationSchema);\r\n\r\nexport const MediaAssetUploadCompleteInputSchema = MediaAssetUploadInputSchema.extend({\r\n storageKey: z.string().min(1),\r\n width: z.number().int().positive().max(100_000).nullable().optional(),\r\n height: z.number().int().positive().max(100_000).nullable().optional(),\r\n durationMs: z.number().int().nonnegative().max(86_400_000).nullable().optional(),\r\n}).strict();\r\nexport type MediaAssetUploadCompleteInput = z.infer<typeof MediaAssetUploadCompleteInputSchema>;\r\nexport const MediaAssetResponseSchema = successEnvelopeSchema(MediaAssetSchema);\r\n\r\nexport const PublishingProviderSchema = z.enum([\r\n \"INSTAGRAM\",\r\n \"TIKTOK\",\r\n \"YOUTUBE\",\r\n \"BLUESKY\",\r\n \"LINKEDIN\",\r\n]);\r\nexport type PublishingProvider = z.infer<typeof PublishingProviderSchema>;\r\nexport const PUBLISHING_PROVIDER_COUNT = PublishingProviderSchema.options.length;\r\n\r\nexport const PostDestinationSchema = z.object({\r\n provider: PublishingProviderSchema,\r\n status: PlatformPostStatusSchema,\r\n captionOverride: z.string().nullable(),\r\n scheduledAt: z.string().datetime().nullable(),\r\n publishedAt: z.string().datetime().nullable(),\r\n remoteUrl: z.string().url().nullable(),\r\n attemptCount: z.number().int().nonnegative(),\r\n});\r\nexport type PostDestination = z.infer<typeof PostDestinationSchema>;\r\n\r\nexport const TikTokPostSettingsSchema = z.object({\r\n postMode: z.enum([\"DIRECT_POST\", \"MEDIA_UPLOAD\"]).default(\"DIRECT_POST\"),\r\n privacyLevel: z.string().trim().min(1).max(100).nullable().default(null),\r\n allowComment: z.boolean().default(false),\r\n allowDuet: z.boolean().default(false),\r\n allowStitch: z.boolean().default(false),\r\n commercialContentEnabled: z.boolean().default(false),\r\n promotesOwnBrand: z.boolean().default(false),\r\n promotesThirdParty: z.boolean().default(false),\r\n isAiGenerated: z.boolean().default(false),\r\n videoCoverTimestampMs: z.number().int().nonnegative().nullable().default(null),\r\n consentedAt: z.union([z.string().datetime(), z.literal(\"\")]).default(\"\"),\r\n}).strict();\r\nexport type TikTokPostSettings = z.infer<typeof TikTokPostSettingsSchema>;\r\n\r\nexport const TikTokDraftSettingsSchema = z.object({\r\n postMode: z.enum([\"DIRECT_POST\", \"MEDIA_UPLOAD\"]).optional(),\r\n privacyLevel: z.string().trim().min(1).max(100).nullable().optional(),\r\n allowComment: z.boolean().optional(),\r\n allowDuet: z.boolean().optional(),\r\n allowStitch: z.boolean().optional(),\r\n commercialContentEnabled: z.boolean().optional(),\r\n promotesOwnBrand: z.boolean().optional(),\r\n promotesThirdParty: z.boolean().optional(),\r\n isAiGenerated: z.boolean().optional(),\r\n videoCoverTimestampMs: z.number().int().nonnegative().nullable().optional(),\r\n reviewed: z.boolean().optional(),\r\n consentedAt: z.union([z.string().datetime(), z.literal(\"\")]).optional(),\r\n}).strict().superRefine((input, context) => {\r\n const requestsReview = input.reviewed === true || Boolean(input.consentedAt);\r\n if (input.postMode === \"MEDIA_UPLOAD\") {\r\n if (\r\n input.privacyLevel != null\r\n || input.allowComment === true\r\n || input.allowDuet === true\r\n || input.allowStitch === true\r\n || input.commercialContentEnabled === true\r\n || input.promotesOwnBrand === true\r\n || input.promotesThirdParty === true\r\n || input.isAiGenerated === true\r\n || input.videoCoverTimestampMs != null\r\n ) {\r\n context.addIssue({\r\n code: \"custom\",\r\n message: \"TikTok inbox drafts do not apply direct-post visibility, interaction, disclosure, AI, or cover settings.\",\r\n });\r\n }\r\n return;\r\n }\r\n if (!requestsReview) return;\r\n\r\n if (!input.postMode) {\r\n context.addIssue({\r\n code: \"custom\",\r\n path: [\"postMode\"],\r\n message: \"Choose TikTok direct publishing or inbox draft delivery explicitly.\",\r\n });\r\n return;\r\n }\r\n\r\n const requiredBooleanFields = [\r\n \"allowComment\",\r\n \"allowDuet\",\r\n \"allowStitch\",\r\n \"commercialContentEnabled\",\r\n \"promotesOwnBrand\",\r\n \"promotesThirdParty\",\r\n \"isAiGenerated\",\r\n ] as const;\r\n if (!input.privacyLevel) {\r\n context.addIssue({\r\n code: \"custom\",\r\n path: [\"privacyLevel\"],\r\n message: \"Choose TikTok visibility explicitly before reviewing the settings.\",\r\n });\r\n }\r\n for (const field of requiredBooleanFields) {\r\n if (input[field] === undefined) {\r\n context.addIssue({\r\n code: \"custom\",\r\n path: [field],\r\n message: \"Choose yes or no explicitly before reviewing TikTok settings.\",\r\n });\r\n }\r\n }\r\n if (\r\n input.commercialContentEnabled === true\r\n && input.promotesOwnBrand !== true\r\n && input.promotesThirdParty !== true\r\n ) {\r\n context.addIssue({\r\n code: \"custom\",\r\n path: [\"commercialContentEnabled\"],\r\n message: \"Commercial TikTok content must identify own-brand or third-party promotion.\",\r\n });\r\n }\r\n if (\r\n input.commercialContentEnabled === false\r\n && (input.promotesOwnBrand === true || input.promotesThirdParty === true)\r\n ) {\r\n context.addIssue({\r\n code: \"custom\",\r\n path: [\"commercialContentEnabled\"],\r\n message: \"Promotion declarations require commercial content to be enabled.\",\r\n });\r\n }\r\n}).transform((input) => ({\r\n postMode: input.postMode ?? \"DIRECT_POST\" as const,\r\n privacyLevel: input.privacyLevel ?? null,\r\n allowComment: input.allowComment ?? false,\r\n allowDuet: input.allowDuet ?? false,\r\n allowStitch: input.allowStitch ?? false,\r\n commercialContentEnabled: input.commercialContentEnabled ?? false,\r\n promotesOwnBrand: input.promotesOwnBrand ?? false,\r\n promotesThirdParty: input.promotesThirdParty ?? false,\r\n isAiGenerated: input.isAiGenerated ?? false,\r\n videoCoverTimestampMs: input.videoCoverTimestampMs ?? null,\r\n reviewed: input.reviewed === true || Boolean(input.consentedAt),\r\n}));\r\nexport type TikTokDraftSettingsInput = z.input<typeof TikTokDraftSettingsSchema>;\r\nexport type TikTokDraftSettings = z.infer<typeof TikTokDraftSettingsSchema>;\r\n\r\nfunction youtubeTagLength(tags: readonly string[]) {\r\n return tags.reduce((total, tag, index) => (\r\n total + (index ? 1 : 0) + tag.length + (tag.includes(\" \") ? 2 : 0)\r\n ), 0);\r\n}\r\n\r\nexport const YouTubePostSettingsSchema = z.object({\r\n title: z.string().trim().min(1).max(100).refine(\r\n (value) => !/[<>]/.test(value),\r\n \"YouTube titles cannot contain angle brackets.\",\r\n ),\r\n categoryId: z.string().trim().regex(/^\\d+$/).max(20),\r\n privacyStatus: z.enum([\"PUBLIC\", \"UNLISTED\", \"PRIVATE\"]),\r\n madeForKids: z.boolean(),\r\n containsSyntheticMedia: z.boolean().default(false),\r\n notifySubscribers: z.boolean().default(true),\r\n tags: z.array(z.string().trim().min(1).max(500)).max(50).refine(\r\n (tags) => new Set(tags).size === tags.length,\r\n \"YouTube tags must be unique.\",\r\n ).refine(\r\n (tags) => youtubeTagLength(tags) <= 500,\r\n \"YouTube tags exceed the 500-character aggregate limit.\",\r\n ).default([]),\r\n}).strict();\r\nexport type YouTubePostSettings = z.infer<typeof YouTubePostSettingsSchema>;\r\n\r\nexport const PostProviderSettingsSchema = z.object({\r\n TIKTOK: TikTokPostSettingsSchema.nullable().optional(),\r\n YOUTUBE: YouTubePostSettingsSchema.nullable().optional(),\r\n}).strict().default({});\r\nexport type PostProviderSettings = z.infer<typeof PostProviderSettingsSchema>;\r\n\r\nexport const PostSchema = z.object({\r\n id: z.string().min(1),\r\n projectId: z.string().min(1),\r\n version: z.number().int().positive(),\r\n campaign: z.object({\r\n id: z.string().min(1),\r\n title: z.string().min(1),\r\n }).nullable(),\r\n caption: z.string(),\r\n status: PostStatusSchema,\r\n scheduledAt: z.string().datetime().nullable(),\r\n timezone: z.string().nullable(),\r\n publishedAt: z.string().datetime().nullable(),\r\n createdAt: z.string().datetime(),\r\n updatedAt: z.string().datetime(),\r\n media: z.array(PostMediaSchema),\r\n destinations: z.array(PostDestinationSchema),\r\n providerSettings: PostProviderSettingsSchema.optional(),\r\n});\r\nexport type Post = z.infer<typeof PostSchema>;\r\n\r\nexport const PostListQuerySchema = z.object({\r\n limit: z.coerce.number().int().min(1).max(100).default(50),\r\n cursor: z.string().min(1).optional(),\r\n status: PostStatusSchema.optional(),\r\n});\r\nexport type PostListQuery = z.input<typeof PostListQuerySchema>;\r\n\r\nexport const PostListDataSchema = z.object({\r\n items: z.array(PostSchema),\r\n page: z.object({\r\n limit: z.number().int().min(1).max(100),\r\n nextCursor: z.string().min(1).nullable(),\r\n }),\r\n});\r\nexport type PostListData = z.infer<typeof PostListDataSchema>;\r\nexport const PostListResponseSchema = successEnvelopeSchema(PostListDataSchema);\r\nexport type PostListResponse = z.infer<typeof PostListResponseSchema>;\r\n\r\nexport const PostResponseSchema = successEnvelopeSchema(PostSchema);\r\nexport type PostResponse = z.infer<typeof PostResponseSchema>;\r\n\r\nconst blueskyGraphemeSegmenter = new Intl.Segmenter(\"en\", {\r\n granularity: \"grapheme\",\r\n});\r\n\r\nconst BlueskyCaptionSchema = z.string().max(3000).refine(\r\n (value) => Array.from(blueskyGraphemeSegmenter.segment(value)).length <= 300,\r\n \"Bluesky captions cannot exceed 300 graphemes.\",\r\n);\r\n\r\nconst utf8Encoder = new TextEncoder();\r\nconst YouTubeDescriptionSchema = z.string().max(5000).refine(\r\n (value) => utf8Encoder.encode(value).length <= 5000,\r\n \"YouTube descriptions cannot exceed 5,000 UTF-8 bytes.\",\r\n);\r\n\r\nconst DraftCaptionOverridesObjectSchema = z.object({\r\n INSTAGRAM: z.string().max(2200).nullable().optional(),\r\n TIKTOK: z.string().max(2200).nullable().optional(),\r\n YOUTUBE: YouTubeDescriptionSchema.nullable().optional(),\r\n BLUESKY: BlueskyCaptionSchema.nullable().optional(),\r\n LINKEDIN: z.string().max(3000).nullable().optional(),\r\n}).strict();\r\n\r\nconst DraftPlatformsSchema = z.array(PublishingProviderSchema).max(PUBLISHING_PROVIDER_COUNT).refine(\r\n (providers) => new Set(providers).size === providers.length,\r\n \"Publishing destinations must be unique.\",\r\n);\r\n\r\nconst DraftMediaAssetIdsSchema = z.array(z.string().trim().min(1).max(200)).max(10).refine(\r\n (ids) => new Set(ids).size === ids.length,\r\n \"Media asset IDs must be unique.\",\r\n);\r\n\r\nexport const DraftPostInputSchema = z.object({\r\n caption: z.string().max(3000).transform((value) => value.trim()).default(\"\"),\r\n platforms: DraftPlatformsSchema.default([]),\r\n mediaAssetIds: DraftMediaAssetIdsSchema.default([]),\r\n captionOverrides: DraftCaptionOverridesObjectSchema.default({}),\r\n tiktokSettings: TikTokDraftSettingsSchema.nullable().default(null),\r\n youtubeSettings: YouTubePostSettingsSchema.nullable().default(null),\r\n}).strict().superRefine((input, context) => {\r\n if (input.caption.length === 0 && input.mediaAssetIds.length === 0) {\r\n context.addIssue({\r\n code: \"custom\",\r\n path: [\"caption\"],\r\n message: \"A draft requires a caption or at least one media asset.\",\r\n });\r\n }\r\n if (input.tiktokSettings && !input.platforms.includes(\"TIKTOK\")) {\r\n context.addIssue({\r\n code: \"custom\",\r\n path: [\"tiktokSettings\"],\r\n message: \"TikTok settings require the TIKTOK destination.\",\r\n });\r\n }\r\n if (input.youtubeSettings && !input.platforms.includes(\"YOUTUBE\")) {\r\n context.addIssue({\r\n code: \"custom\",\r\n path: [\"youtubeSettings\"],\r\n message: \"YouTube settings require the YOUTUBE destination.\",\r\n });\r\n }\r\n if (input.platforms.includes(\"YOUTUBE\") && !input.youtubeSettings) {\r\n context.addIssue({\r\n code: \"custom\",\r\n path: [\"youtubeSettings\"],\r\n message: \"YouTube settings are required for the YOUTUBE destination.\",\r\n });\r\n }\r\n if (\r\n input.platforms.includes(\"YOUTUBE\")\r\n && input.captionOverrides.YOUTUBE == null\r\n && utf8Encoder.encode(input.caption).length > 5000\r\n ) {\r\n context.addIssue({\r\n code: \"custom\",\r\n path: [\"caption\"],\r\n message: \"YouTube descriptions cannot exceed 5,000 UTF-8 bytes.\",\r\n });\r\n }\r\n if (\r\n input.platforms.includes(\"BLUESKY\")\r\n && input.captionOverrides.BLUESKY == null\r\n && Array.from(blueskyGraphemeSegmenter.segment(input.caption)).length > 300\r\n ) {\r\n context.addIssue({\r\n code: \"custom\",\r\n path: [\"caption\"],\r\n message: \"Bluesky captions cannot exceed 300 graphemes.\",\r\n });\r\n }\r\n});\r\nexport type DraftPostInput = z.input<typeof DraftPostInputSchema>;\r\nexport type DraftPostData = z.infer<typeof DraftPostInputSchema>;\r\n\r\nexport const DraftPostUpdateInputSchema = z.object({\r\n caption: z.string().max(3000).transform((value) => value.trim()).optional(),\r\n platforms: DraftPlatformsSchema.optional(),\r\n mediaAssetIds: DraftMediaAssetIdsSchema.optional(),\r\n captionOverrides: DraftCaptionOverridesObjectSchema.optional(),\r\n tiktokSettings: TikTokDraftSettingsSchema.nullable().optional(),\r\n youtubeSettings: YouTubePostSettingsSchema.nullable().optional(),\r\n}).strict().superRefine((input, context) => {\r\n if (Object.values(input).every((value) => value === undefined)) {\r\n context.addIssue({ code: \"custom\", message: \"Provide at least one draft field to update.\" });\r\n }\r\n if (input.platforms && input.tiktokSettings && !input.platforms.includes(\"TIKTOK\")) {\r\n context.addIssue({\r\n code: \"custom\",\r\n path: [\"tiktokSettings\"],\r\n message: \"TikTok settings require the TIKTOK destination.\",\r\n });\r\n }\r\n if (input.platforms && input.youtubeSettings && !input.platforms.includes(\"YOUTUBE\")) {\r\n context.addIssue({\r\n code: \"custom\",\r\n path: [\"youtubeSettings\"],\r\n message: \"YouTube settings require the YOUTUBE destination.\",\r\n });\r\n }\r\n});\r\nexport type DraftPostUpdateInput = z.input<typeof DraftPostUpdateInputSchema>;\r\nexport type DraftPostUpdateData = z.infer<typeof DraftPostUpdateInputSchema>;\r\n\r\nexport const IntegrationConnectionStatusSchema = z.enum([\r\n \"PENDING\",\r\n \"CONNECTED\",\r\n \"ERROR\",\r\n \"EXPIRED\",\r\n \"DISCONNECTED\",\r\n]);\r\n\r\nexport const ProviderHealthStatusSchema = z.enum([\r\n \"pass\",\r\n \"blocking\",\r\n \"unknown\",\r\n]);\r\n\r\nexport const IntegrationHealthSchema = z.object({\r\n provider: PublishingProviderSchema,\r\n connectionStatus: IntegrationConnectionStatusSchema,\r\n connected: z.boolean(),\r\n account: z.object({\r\n username: z.string().nullable(),\r\n displayName: z.string().nullable(),\r\n avatarUrl: z.string().url().nullable(),\r\n }),\r\n grantedScopes: z.array(z.string()),\r\n expiresAt: z.string().datetime().nullable(),\r\n health: z.object({\r\n status: ProviderHealthStatusSchema,\r\n checkedAt: z.string().datetime().nullable(),\r\n code: z.string().min(1),\r\n message: z.string().min(1),\r\n isStale: z.boolean(),\r\n requiresAction: z.boolean(),\r\n refreshRecommended: z.boolean(),\r\n }),\r\n});\r\nexport type IntegrationHealth = z.infer<typeof IntegrationHealthSchema>;\r\n\r\nexport const IntegrationHealthListDataSchema = z.object({\r\n items: z.array(IntegrationHealthSchema)\r\n .max(PUBLISHING_PROVIDER_COUNT)\r\n .refine(\r\n (items) => new Set(items.map((item) => item.provider)).size === items.length,\r\n \"Provider health items must be unique.\",\r\n ),\r\n});\r\nexport type IntegrationHealthListData = z.infer<\r\n typeof IntegrationHealthListDataSchema\r\n>;\r\nexport const IntegrationHealthListResponseSchema = successEnvelopeSchema(\r\n IntegrationHealthListDataSchema,\r\n);\r\n\r\nexport const ProviderDeliveryOptionsProviderSchema = z.enum([\r\n \"TIKTOK\",\r\n \"LINKEDIN\",\r\n]);\r\nexport type ProviderDeliveryOptionsProvider = z.infer<\r\n typeof ProviderDeliveryOptionsProviderSchema\r\n>;\r\n\r\nexport const TikTokDeliveryOptionsSchema = z.object({\r\n provider: z.literal(\"TIKTOK\"),\r\n account: z.object({\r\n username: z.string().nullable(),\r\n displayName: z.string().nullable(),\r\n avatarUrl: z.string().url().nullable(),\r\n }),\r\n allowedPostModes: z.array(z.enum([\"DIRECT_POST\", \"MEDIA_UPLOAD\"]))\r\n .max(2)\r\n .refine(\r\n (items) => new Set(items).size === items.length,\r\n \"TikTok post modes must be unique.\",\r\n ),\r\n visibilityOptions: z.array(z.string().trim().min(1).max(100)).max(20)\r\n .refine(\r\n (items) => new Set(items).size === items.length,\r\n \"TikTok visibility options must be unique.\",\r\n ),\r\n interactions: z.object({\r\n comment: z.object({ available: z.boolean() }),\r\n duet: z.object({ available: z.boolean() }),\r\n stitch: z.object({ available: z.boolean() }),\r\n }),\r\n maxVideoDurationMs: z.number().int().positive().max(86_400_000).nullable(),\r\n health: z.object({\r\n status: ProviderHealthStatusSchema,\r\n code: z.string().min(1),\r\n message: z.string().min(1),\r\n }),\r\n checkedAt: z.string().datetime(),\r\n});\r\n\r\nexport const LinkedInDeliveryOptionsSchema = z.object({\r\n provider: z.literal(\"LINKEDIN\"),\r\n account: z.object({\r\n displayName: z.string().nullable(),\r\n avatarUrl: z.string().url().nullable(),\r\n }),\r\n supportedPostTypes: z.array(z.enum([\"TEXT\", \"SINGLE_IMAGE\", \"MULTI_IMAGE\"])).length(3),\r\n image: z.object({\r\n maxItems: z.literal(10),\r\n mimeTypes: z.tuple([z.literal(\"image/jpeg\"), z.literal(\"image/png\")]),\r\n maxPixelsExclusive: z.literal(36_152_320),\r\n maxBytes: z.literal(26_214_400),\r\n }),\r\n health: z.object({\r\n status: ProviderHealthStatusSchema,\r\n code: z.string().min(1),\r\n message: z.string().min(1),\r\n }),\r\n checkedAt: z.string().datetime(),\r\n});\r\n\r\n// Add one strict provider variant here as each future social network gains\r\n// creator-specific delivery choices. Callers can always discriminate by provider.\r\nexport const ProviderDeliveryOptionsSchema = z.discriminatedUnion(\"provider\", [\r\n TikTokDeliveryOptionsSchema,\r\n LinkedInDeliveryOptionsSchema,\r\n]);\r\nexport type ProviderDeliveryOptions = z.infer<typeof ProviderDeliveryOptionsSchema>;\r\nexport const ProviderDeliveryOptionsResponseSchema = successEnvelopeSchema(\r\n ProviderDeliveryOptionsSchema,\r\n);\r\n\r\nexport const ReadinessStatusSchema = z.enum([\r\n \"checking\",\r\n \"pass\",\r\n \"warning\",\r\n \"blocking\",\r\n \"unknown\",\r\n]);\r\n\r\nexport const ReadinessActionSchema = z.object({\r\n kind: z.enum([\r\n \"reconnect\",\r\n \"replace_media\",\r\n \"review_settings\",\r\n \"edit_caption\",\r\n \"refresh_health\",\r\n ]),\r\n provider: PublishingProviderSchema.optional(),\r\n});\r\n\r\nexport const PostReadinessCheckSchema = z.object({\r\n key: z.string().min(1),\r\n id: z.enum([\r\n \"connection\",\r\n \"permissions\",\r\n \"media\",\r\n \"caption\",\r\n \"tiktok_settings\",\r\n \"youtube_settings\",\r\n \"storage\",\r\n \"schedule_lead\",\r\n \"token_health\",\r\n \"media_duration\",\r\n \"provider_health\",\r\n ]),\r\n provider: PublishingProviderSchema.nullable(),\r\n mediaId: z.string().min(1).optional(),\r\n status: ReadinessStatusSchema,\r\n source: z.enum([\"local\", \"live\"]),\r\n checkedAt: z.string().datetime().nullable(),\r\n message: z.string().min(1),\r\n code: z.string().min(1),\r\n action: ReadinessActionSchema.nullable(),\r\n});\r\n\r\nexport const PostReadinessSchema = z.object({\r\n checks: z.array(PostReadinessCheckSchema),\r\n accounts: z.array(z.object({\r\n provider: PublishingProviderSchema,\r\n connected: z.boolean(),\r\n username: z.string().nullable(),\r\n avatarUrl: z.string().url().nullable(),\r\n requiresAction: z.boolean(),\r\n })),\r\n hasBlockingChecks: z.boolean(),\r\n requiresLiveRefresh: z.array(PublishingProviderSchema),\r\n liveHealthCheckedAt: z.string().datetime().nullable(),\r\n});\r\nexport type PostReadiness = z.infer<typeof PostReadinessSchema>;\r\nexport const PostReadinessResponseSchema = successEnvelopeSchema(\r\n PostReadinessSchema,\r\n);\r\n\r\nexport const PostScheduleInputSchema = z.object({\r\n scheduledAt: z.string().datetime({ offset: true }),\r\n timezone: z.string().trim().min(1).max(100).refine((timezone) => {\r\n try {\r\n new Intl.DateTimeFormat(\"en\", { timeZone: timezone }).format();\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n }, \"timezone must be a valid IANA timezone\"),\r\n}).strict();\r\nexport type PostScheduleInput = z.infer<typeof PostScheduleInputSchema>;\r\n\r\nexport const PostScheduleExecuteInputSchema = PostScheduleInputSchema.extend({\r\n confirmationToken: z.string().trim().min(1).max(200),\r\n}).strict();\r\nexport type PostScheduleExecuteInput = z.infer<\r\n typeof PostScheduleExecuteInputSchema\r\n>;\r\n\r\nexport const PostSchedulePreviewSchema = z.object({\r\n operation: z.literal(\"posts.schedule.execute\"),\r\n post: z.object({\r\n id: z.string().min(1),\r\n projectId: z.string().min(1),\r\n version: z.number().int().positive(),\r\n status: PostStatusSchema,\r\n }),\r\n schedule: PostScheduleInputSchema,\r\n destinations: z.array(PublishingProviderSchema).min(1).max(PUBLISHING_PROVIDER_COUNT),\r\n providerReconciliation: z.object({\r\n provider: z.literal(\"YOUTUBE\"),\r\n required: z.boolean(),\r\n message: z.string().min(1),\r\n }).nullable().optional(),\r\n readiness: PostReadinessSchema,\r\n confirmation: z.object({\r\n token: z.string().min(1),\r\n expiresAt: z.string().datetime(),\r\n }),\r\n});\r\nexport type PostSchedulePreview = z.infer<typeof PostSchedulePreviewSchema>;\r\nexport const PostSchedulePreviewResponseSchema = successEnvelopeSchema(\r\n PostSchedulePreviewSchema,\r\n);\r\n\r\nexport const PostSchedulePendingSchema = z.object({\r\n status: z.literal(\"PENDING\"),\r\n postId: z.string().min(1),\r\n provider: z.literal(\"YOUTUBE\"),\r\n mutationId: z.string().min(1),\r\n operation: z.enum([\"SCHEDULE\", \"CANCEL\"]),\r\n message: z.string().min(1),\r\n});\r\nexport type PostSchedulePending = z.infer<typeof PostSchedulePendingSchema>;\r\nexport const PostScheduleExecuteResultSchema = z.union([\r\n PostSchema,\r\n PostSchedulePendingSchema,\r\n]);\r\nexport type PostScheduleExecuteResult = z.infer<\r\n typeof PostScheduleExecuteResultSchema\r\n>;\r\nexport const PostScheduleExecuteResponseSchema = successEnvelopeSchema(\r\n PostScheduleExecuteResultSchema,\r\n);\r\n\r\nexport const PostPublishInputSchema = z.object({\r\n destinations: z.array(PublishingProviderSchema).min(1).max(PUBLISHING_PROVIDER_COUNT)\r\n .refine(\r\n (destinations) => new Set(destinations).size === destinations.length,\r\n \"destinations must not contain duplicates\",\r\n ),\r\n}).strict();\r\nexport type PostPublishInput = z.infer<typeof PostPublishInputSchema>;\r\n\r\nexport const PostPublishExecuteInputSchema = PostPublishInputSchema.extend({\r\n confirmationToken: z.string().trim().min(1).max(200),\r\n}).strict();\r\nexport type PostPublishExecuteInput = z.infer<\r\n typeof PostPublishExecuteInputSchema\r\n>;\r\n\r\nexport const PostPublishPreviewSchema = z.object({\r\n operation: z.literal(\"posts.publish.execute\"),\r\n post: z.object({\r\n id: z.string().min(1),\r\n projectId: z.string().min(1),\r\n version: z.number().int().positive(),\r\n status: PostStatusSchema,\r\n }),\r\n destinations: PostPublishInputSchema.shape.destinations,\r\n readiness: PostReadinessSchema,\r\n confirmation: z.object({\r\n token: z.string().min(1),\r\n expiresAt: z.string().datetime(),\r\n }),\r\n});\r\nexport type PostPublishPreview = z.infer<typeof PostPublishPreviewSchema>;\r\nexport const PostPublishPreviewResponseSchema = successEnvelopeSchema(\r\n PostPublishPreviewSchema,\r\n);\r\n\r\nexport const CalendarEventSchema = z.object({\r\n postId: z.string().min(1),\r\n projectId: z.string().min(1),\r\n title: z.string().min(1),\r\n caption: z.string(),\r\n status: PostStatusSchema.exclude([\"DRAFT\"]),\r\n scheduledAt: z.string().datetime(),\r\n timezone: z.string().nullable(),\r\n campaign: z.object({\r\n id: z.string().min(1),\r\n title: z.string().min(1),\r\n }).nullable(),\r\n thumbnailUrl: z.string().url().nullable(),\r\n destinations: z.array(z.object({\r\n provider: PublishingProviderSchema,\r\n status: PlatformPostStatusSchema,\r\n })),\r\n});\r\nexport type CalendarEvent = z.infer<typeof CalendarEventSchema>;\r\n\r\nexport const CalendarListQuerySchema = z.object({\r\n limit: z.coerce.number().int().min(1).max(100).default(50),\r\n cursor: z.string().min(1).optional(),\r\n from: z.string().datetime().optional(),\r\n to: z.string().datetime().optional(),\r\n}).superRefine((value, context) => {\r\n if ((value.from === undefined) !== (value.to === undefined)) {\r\n context.addIssue({\r\n code: \"custom\",\r\n path: value.from === undefined ? [\"from\"] : [\"to\"],\r\n message: \"from and to must be provided together\",\r\n });\r\n }\r\n if (value.from && value.to) {\r\n const from = Date.parse(value.from);\r\n const to = Date.parse(value.to);\r\n if (from >= to) {\r\n context.addIssue({\r\n code: \"custom\",\r\n path: [\"to\"],\r\n message: \"to must be later than from\",\r\n });\r\n } else if (to - from > 366 * 24 * 60 * 60 * 1000) {\r\n context.addIssue({\r\n code: \"custom\",\r\n path: [\"to\"],\r\n message: \"calendar ranges cannot exceed 366 days\",\r\n });\r\n }\r\n }\r\n});\r\nexport type CalendarListQuery = z.input<typeof CalendarListQuerySchema>;\r\n\r\nexport const CalendarListDataSchema = z.object({\r\n items: z.array(CalendarEventSchema),\r\n page: z.object({\r\n limit: z.number().int().min(1).max(100),\r\n nextCursor: z.string().min(1).nullable(),\r\n }),\r\n window: z.object({\r\n from: z.string().datetime(),\r\n to: z.string().datetime(),\r\n }),\r\n});\r\nexport type CalendarListData = z.infer<typeof CalendarListDataSchema>;\r\nexport const CalendarListResponseSchema = successEnvelopeSchema(\r\n CalendarListDataSchema,\r\n);\r\n"],"mappings":"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","names":[]}