@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 +6 -0
- package/README.md +25 -22
- package/dist/index.cjs +37 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +142 -4
- package/dist/index.d.ts +142 -4
- package/dist/index.js +35 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
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.
|
|
8
|
-
idempotent project creation, safe post and calendar reads, idempotent draft
|
|
9
|
-
writes, and server-confirmed Instagram, TikTok, YouTube, and
|
|
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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
and
|
|
26
|
-
[
|
|
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.
|
|
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(
|
|
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(
|
|
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,
|
package/dist/index.cjs.map
CHANGED
|
@@ -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":"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","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":[]}
|