@productmaker/mcp 12.3.1 → 12.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/http.js +607 -626
  2. package/dist/stdio.js +607 -626
  3. package/package.json +3 -3
package/dist/stdio.js CHANGED
@@ -156,7 +156,7 @@ var FrankensteinSourceProviderSchema = z2.enum([
156
156
  "meta",
157
157
  "upload"
158
158
  ]);
159
- var FrankensteinSourceUploadIdSchema = z2.string().uuid();
159
+ var FrankensteinSourceUploadIdSchema = z2.string().guid();
160
160
  var FrankensteinSourceUploadPresignRequestSchema = z2.object({
161
161
  fileName: z2.string().trim().min(1).max(255),
162
162
  contentType: z2.enum([
@@ -3957,8 +3957,8 @@ var AiEditJobSchema = z5.object({
3957
3957
  tier: AiEditTierSchema.default(DEFAULT_AI_EDIT_TIER),
3958
3958
  /** Explicit false suppresses generated music; absent keeps the legacy default. */
3959
3959
  music: z5.boolean().optional(),
3960
- editId: z5.string().uuid(),
3961
- taskId: z5.string().uuid(),
3960
+ editId: z5.string().guid(),
3961
+ taskId: z5.string().guid(),
3962
3962
  angleKey: z5.string().min(1),
3963
3963
  sourceVideoUrl: z5.string().url(),
3964
3964
  /** Medidas del video entregado (Grok 480p/720p también existen). */
@@ -4284,7 +4284,7 @@ var ProductReferencePreviewSchema = z9.object({
4284
4284
  isAuthoritative: z9.boolean()
4285
4285
  });
4286
4286
  var ApprovedProductReferencesSchema = z9.object({
4287
- scopeSnapshotId: z9.string().uuid(),
4287
+ scopeSnapshotId: z9.string().guid(),
4288
4288
  scopeHash: z9.string().min(1).max(128),
4289
4289
  previews: z9.array(ProductReferencePreviewSchema).min(1)
4290
4290
  });
@@ -4296,8 +4296,8 @@ var ProductReferencePendingActionSchema = z9.object({
4296
4296
  ]).default("final"),
4297
4297
  scope: ProductReferenceScopeSchema,
4298
4298
  scopeKey: z9.string().min(1).max(120),
4299
- referenceVersionId: z9.string().uuid(),
4300
- scopeSnapshotId: z9.string().uuid(),
4299
+ referenceVersionId: z9.string().guid(),
4300
+ scopeSnapshotId: z9.string().guid(),
4301
4301
  baseReferenceSetHash: z9.string().min(1).max(128),
4302
4302
  scopeHash: z9.string().min(1).max(128),
4303
4303
  approvedRefKeys: z9.array(z9.string().min(1).max(200)).min(1),
@@ -4338,7 +4338,7 @@ var ResolutionEnvelopeSchema = z9.object({
4338
4338
  expectedScopeHash: z9.string().min(1).max(128),
4339
4339
  scope: ProductReferenceScopeSchema,
4340
4340
  scopeKey: z9.string().min(1).max(120),
4341
- scopeSnapshotId: z9.string().uuid()
4341
+ scopeSnapshotId: z9.string().guid()
4342
4342
  });
4343
4343
  var ResolveProductReferenceSetRequestSchema = z9.discriminatedUnion("decision", [
4344
4344
  ResolutionEnvelopeSchema.extend({
@@ -4388,8 +4388,8 @@ var ResolveProductReferenceSetRequestSchema = z9.discriminatedUnion("decision",
4388
4388
  });
4389
4389
  var ResolveProductReferenceSetResponseSchema = z9.object({
4390
4390
  success: z9.literal(true),
4391
- taskId: z9.string().uuid(),
4392
- resolutionId: z9.string().uuid(),
4391
+ taskId: z9.string().guid(),
4392
+ resolutionId: z9.string().guid(),
4393
4393
  decision: ProductReferenceResolutionDecisionSchema
4394
4394
  });
4395
4395
  var ProductReferenceResolutionSchema = z9.object({
@@ -4427,7 +4427,7 @@ var ReferencePreparationPlanSchema = z9.object({
4427
4427
  reusableOutputs: z9.array(z9.object({
4428
4428
  outputKey: z9.string().min(1).max(200),
4429
4429
  refKey: z9.string().min(1).max(200),
4430
- sourceSnapshotId: z9.string().uuid()
4430
+ sourceSnapshotId: z9.string().guid()
4431
4431
  })),
4432
4432
  execution: z9.object({
4433
4433
  inputKeys: z9.array(z9.string().min(1)),
@@ -4963,7 +4963,7 @@ var ProductPhysicalDetails = z10.object({
4963
4963
  contentAppearance: z10.string().optional()
4964
4964
  });
4965
4965
  var Product = z10.object({
4966
- id: z10.string().uuid().optional(),
4966
+ id: z10.string().guid().optional(),
4967
4967
  title: z10.string(),
4968
4968
  url: z10.string().optional(),
4969
4969
  // Free-video tasks intentionally skip product extraction and may have no
@@ -5881,6 +5881,11 @@ var LANDING_STRATEGIES = [
5881
5881
  "lifestyle_identity"
5882
5882
  ];
5883
5883
  var LandingStrategySchema = z14.enum(LANDING_STRATEGIES);
5884
+ var SELECTABLE_LANDING_STRATEGIES = [
5885
+ "classic",
5886
+ "social_proof"
5887
+ ];
5888
+ var SelectableLandingStrategySchema = z14.enum(SELECTABLE_LANDING_STRATEGIES);
5884
5889
  var EffectiveLandingStrategySchema = LandingStrategySchema.exclude([
5885
5890
  "auto"
5886
5891
  ]);
@@ -6026,7 +6031,7 @@ var LandingImageReadable = z15.object({
6026
6031
  */
6027
6032
  index: z15.number().int().min(1).max(20),
6028
6033
  /** Child task that owns this image when variants are rendered alongside the root task. */
6029
- variantTaskId: z15.string().uuid().optional(),
6034
+ variantTaskId: z15.string().guid().optional(),
6030
6035
  /**
6031
6036
  * The image's own `indexNum` within its OWN task (root or variant) — set
6032
6037
  * once at render time and never recomputed. Unlike `index`, this is stable
@@ -6229,7 +6234,7 @@ var JsonValueSchema = z16.lazy(() => z16.union([
6229
6234
  z16.boolean(),
6230
6235
  z16.null(),
6231
6236
  z16.array(JsonValueSchema),
6232
- z16.custom(isPlainJsonRecord, "content objects must be plain JSON records").pipe(z16.record(JsonValueSchema))
6237
+ z16.custom(isPlainJsonRecord, "content objects must be plain JSON records").pipe(z16.record(z16.string(), JsonValueSchema))
6233
6238
  ]));
6234
6239
  var CodeLandingRecipeSelectionSchema = z16.object({
6235
6240
  blockId: z16.string().trim().min(1),
@@ -6688,7 +6693,7 @@ var PresignUploadResponse = z19.object({
6688
6693
  /** Present only for purpose=service. */
6689
6694
  assetToken: z19.string().min(1).optional(),
6690
6695
  /** Present only for purpose=meta_staging. */
6691
- stagingAssetId: z19.string().uuid().optional()
6696
+ stagingAssetId: z19.string().guid().optional()
6692
6697
  });
6693
6698
  var MetaUploadMediaKind = z19.enum([
6694
6699
  "image",
@@ -6698,7 +6703,7 @@ var MetaUploadMediaKind = z19.enum([
6698
6703
  var META_UPLOAD_MAX_FILES = CAMPAIGN_LIMITS.MAX_CREATIVES;
6699
6704
  var META_UPLOAD_IMAGE_MAX_FILES = 5;
6700
6705
  var MetaUploadAssetSummary = z19.object({
6701
- stagingAssetId: z19.string().uuid(),
6706
+ stagingAssetId: z19.string().guid(),
6702
6707
  mediaKind: MediaKind
6703
6708
  }).strict();
6704
6709
  var MetaCampaignType = z19.enum([
@@ -6706,7 +6711,7 @@ var MetaCampaignType = z19.enum([
6706
6711
  "traffic",
6707
6712
  "engagement"
6708
6713
  ]);
6709
- var MetaPublishAttemptId = z19.string().uuid();
6714
+ var MetaPublishAttemptId = z19.string().guid();
6710
6715
  var MetaOptimizationMode = z19.enum([
6711
6716
  "advantage_plus",
6712
6717
  "manual"
@@ -6779,14 +6784,14 @@ var ResolveMetaUploadSessionRequest = z19.object({
6779
6784
  /** Opaque signed token embedded in the one-click upload page URL. */
6780
6785
  token: z19.string().min(1).max(4096),
6781
6786
  /** Stable browser-generated id so failed PUT retries reuse the same slot. */
6782
- uploadId: z19.string().uuid().optional(),
6787
+ uploadId: z19.string().guid().optional(),
6783
6788
  /** Browser-selected metadata; the API checks it against the session kind/role. */
6784
6789
  contentType: z19.enum(META_STAGING_CONTENT_TYPES),
6785
6790
  fileName: z19.string().min(1).max(255),
6786
6791
  fileSize: z19.number().int().positive().max(CAMPAIGN_LIMITS.MAX_FILE_SIZE_BYTES)
6787
6792
  }).strict();
6788
6793
  var MetaUploadSessionResponse = z19.object({
6789
- sessionId: z19.string().uuid(),
6794
+ sessionId: z19.string().guid(),
6790
6795
  uploadPageUrl: HttpUrl,
6791
6796
  mediaKind: MetaUploadMediaKind,
6792
6797
  assetRole: z19.enum([
@@ -6798,18 +6803,18 @@ var MetaUploadSessionResponse = z19.object({
6798
6803
  }).strict();
6799
6804
  var ResolveMetaUploadSessionResponse = z19.object({
6800
6805
  uploadUrl: z19.string().url(),
6801
- stagingAssetId: z19.string().uuid(),
6806
+ stagingAssetId: z19.string().guid(),
6802
6807
  expiresAt: z19.string().datetime()
6803
6808
  }).strict();
6804
6809
  var MetaUploadSessionStatusResponse = z19.object({
6805
- sessionId: z19.string().uuid(),
6810
+ sessionId: z19.string().guid(),
6806
6811
  status: z19.enum([
6807
6812
  "pending",
6808
6813
  "uploaded"
6809
6814
  ]),
6810
6815
  assets: z19.array(MetaUploadAssetSummary).max(META_UPLOAD_MAX_FILES),
6811
6816
  /** Legacy single-file response field retained for older callers. */
6812
- stagingAssetId: z19.string().uuid().optional()
6817
+ stagingAssetId: z19.string().guid().optional()
6813
6818
  }).strict();
6814
6819
  var MetaAdAccountId = z19.string().trim().min(1, "Debes seleccionar una cuenta publicitaria").transform((value) => /^\d+$/.test(value) ? `act_${value}` : value).refine((value) => /^act_\d+$/.test(value), {
6815
6820
  message: 'adAccountId must look like "act_1234567890" (a bare numeric id is also accepted)'
@@ -6889,6 +6894,33 @@ var MetaCampaignDefaults = MetaCampaignConfigBase.omit({
6889
6894
  */
6890
6895
  currency: z19.string().length(3).regex(/^[A-Z]{3}$/).nullable().optional()
6891
6896
  });
6897
+ function refineMetaCreativeSources(value, ctx) {
6898
+ value.creatives.forEach((creative, index) => {
6899
+ if (Boolean(creative.mediaUrl) === Boolean(creative.mediaAssetId)) {
6900
+ ctx.addIssue({
6901
+ code: z19.ZodIssueCode.custom,
6902
+ path: [
6903
+ "creatives",
6904
+ index,
6905
+ "mediaUrl"
6906
+ ],
6907
+ message: "Provide exactly one of mediaUrl or mediaAssetId"
6908
+ });
6909
+ }
6910
+ if (creative.thumbnailUrl && creative.thumbnailAssetId) {
6911
+ ctx.addIssue({
6912
+ code: z19.ZodIssueCode.custom,
6913
+ path: [
6914
+ "creatives",
6915
+ index,
6916
+ "thumbnailUrl"
6917
+ ],
6918
+ message: "Provide at most one of thumbnailUrl or thumbnailAssetId"
6919
+ });
6920
+ }
6921
+ });
6922
+ }
6923
+ __name(refineMetaCreativeSources, "refineMetaCreativeSources");
6892
6924
  var UploadToMetaRequest = z19.object({
6893
6925
  /** Caller-owned retry fence. Required before any provider operation. */
6894
6926
  publishAttemptId: MetaPublishAttemptId,
@@ -6902,7 +6934,7 @@ var UploadToMetaRequest = z19.object({
6902
6934
  /** Legacy public URL; new Meta flows should use mediaAssetId. */
6903
6935
  mediaUrl: HttpUrl.optional(),
6904
6936
  /** Owner-scoped temporary asset created by the Meta staging upload flow. */
6905
- mediaAssetId: z19.string().uuid().optional(),
6937
+ mediaAssetId: z19.string().guid().optional(),
6906
6938
  /**
6907
6939
  * Public URL of an extracted thumbnail. Required for video ads — Meta
6908
6940
  * rejects video ad creatives without `image_hash`/`image_url` in
@@ -6911,7 +6943,7 @@ var UploadToMetaRequest = z19.object({
6911
6943
  */
6912
6944
  thumbnailUrl: HttpUrl.optional(),
6913
6945
  /** Owner-scoped temporary thumbnail created by the Meta staging upload flow. */
6914
- thumbnailAssetId: z19.string().uuid().optional()
6946
+ thumbnailAssetId: z19.string().guid().optional()
6915
6947
  })).min(1).max(CAMPAIGN_LIMITS.MAX_CREATIVES),
6916
6948
  /** Meta Ad Account ID */
6917
6949
  adAccountId: MetaAdAccountId,
@@ -6938,30 +6970,7 @@ var UploadToMetaRequest = z19.object({
6938
6970
  message: "landingUrl is required for landing destinations"
6939
6971
  });
6940
6972
  }
6941
- value.creatives.forEach((creative, index) => {
6942
- if (Boolean(creative.mediaUrl) === Boolean(creative.mediaAssetId)) {
6943
- ctx.addIssue({
6944
- code: z19.ZodIssueCode.custom,
6945
- path: [
6946
- "creatives",
6947
- index,
6948
- "mediaUrl"
6949
- ],
6950
- message: "Provide exactly one of mediaUrl or mediaAssetId"
6951
- });
6952
- }
6953
- if (creative.thumbnailUrl && creative.thumbnailAssetId) {
6954
- ctx.addIssue({
6955
- code: z19.ZodIssueCode.custom,
6956
- path: [
6957
- "creatives",
6958
- index,
6959
- "thumbnailUrl"
6960
- ],
6961
- message: "Provide at most one of thumbnailUrl or thumbnailAssetId"
6962
- });
6963
- }
6964
- });
6973
+ refineMetaCreativeSources(value, ctx);
6965
6974
  });
6966
6975
  var CampaignLifetimeMetricsSchema = z19.object({
6967
6976
  spend: z19.number().nonnegative(),
@@ -6999,13 +7008,13 @@ var Revision = z20.number().finite().int().nonnegative();
6999
7008
  var ClassicLandingBlockSchema = z20.discriminatedUnion("kind", [
7000
7009
  z20.object({
7001
7010
  kind: z20.literal("image"),
7002
- ownerTaskId: z20.string().uuid(),
7011
+ ownerTaskId: z20.string().guid(),
7003
7012
  sourceIndex: z20.number().int().positive()
7004
7013
  }).strict(),
7005
7014
  z20.object({
7006
7015
  kind: z20.literal("gif"),
7007
- ownerTaskId: z20.string().uuid(),
7008
- gifId: z20.string().uuid()
7016
+ ownerTaskId: z20.string().guid(),
7017
+ gifId: z20.string().guid()
7009
7018
  }).strict()
7010
7019
  ]);
7011
7020
  function classicLandingBlockId(block) {
@@ -7028,17 +7037,17 @@ var Blocks = z20.array(ClassicLandingBlockSchema).max(100).superRefine((blocks,
7028
7037
  });
7029
7038
  var ClassicLandingDocumentSchema = z20.object({
7030
7039
  version: z20.literal(1),
7031
- ownerTaskId: z20.string().uuid(),
7040
+ ownerTaskId: z20.string().guid(),
7032
7041
  revision: Revision,
7033
7042
  blocks: Blocks
7034
7043
  }).strict();
7035
7044
  var LandingGifBlockSelectionSchema = z20.object({
7036
- ownerTaskId: z20.string().uuid(),
7037
- gifId: z20.string().uuid(),
7045
+ ownerTaskId: z20.string().guid(),
7046
+ gifId: z20.string().guid(),
7038
7047
  gifRevision: Revision
7039
7048
  }).strict();
7040
7049
  var ClassicLandingImageSelectionSchema = z20.object({
7041
- ownerTaskId: z20.string().uuid(),
7050
+ ownerTaskId: z20.string().guid(),
7042
7051
  sourceIndex: z20.number().int().positive(),
7043
7052
  variantIndex: z20.number().int().nonnegative()
7044
7053
  }).strict();
@@ -7089,7 +7098,7 @@ var ClassicLandingBlockMutationSchema = z20.object({
7089
7098
  blocks: Blocks
7090
7099
  }).strict();
7091
7100
  var LandingGifVisibilityMutationSchema = z20.object({
7092
- gifId: z20.string().uuid(),
7101
+ gifId: z20.string().guid(),
7093
7102
  expectedGifRevision: Revision,
7094
7103
  expectedDocumentRevision: Revision,
7095
7104
  action: z20.enum([
@@ -7875,7 +7884,7 @@ var CodeLandingProvenanceSchema = z23.object({
7875
7884
  editorGifOwnership: z23.object({
7876
7885
  version: z23.literal(1),
7877
7886
  source: z23.object({
7878
- ownerTaskId: z23.string().uuid(),
7887
+ ownerTaskId: z23.string().guid(),
7879
7888
  gifRevision: z23.number().int().nonnegative(),
7880
7889
  contentHash: z23.string().regex(/^[a-f0-9]{64}$/),
7881
7890
  posterHash: z23.string().regex(/^[a-f0-9]{64}$/)
@@ -7883,7 +7892,7 @@ var CodeLandingProvenanceSchema = z23.object({
7883
7892
  }).strict().optional(),
7884
7893
  mode: LandingDocumentModeSchema,
7885
7894
  strategyVersion: z23.string().min(1).max(60),
7886
- sourceTaskId: z23.string().uuid().optional(),
7895
+ sourceTaskId: z23.string().guid().optional(),
7887
7896
  winnerSourceUrl: CodeLandingUrlSchema.optional(),
7888
7897
  notes: z23.array(z23.string().max(240)).max(16),
7889
7898
  /**
@@ -8315,8 +8324,8 @@ var QuotedLandingEditRequest = z23.object({
8315
8324
  "full"
8316
8325
  ]),
8317
8326
  attachmentIds: z23.array(CodeLandingIdSchema).max(4).default([]),
8318
- quoteId: z23.string().uuid(),
8319
- idempotencyKey: z23.string().uuid()
8327
+ quoteId: z23.string().guid(),
8328
+ idempotencyKey: z23.string().guid()
8320
8329
  });
8321
8330
  var CreateLandingEditRequest = z23.union([
8322
8331
  QuotedLandingEditRequest,
@@ -8396,7 +8405,7 @@ var LandingEditDto = z23.object({
8396
8405
  costCents: z23.number(),
8397
8406
  error: z23.string().nullable(),
8398
8407
  createdAt: z23.string(),
8399
- operationId: z23.string().uuid().nullable().optional(),
8408
+ operationId: z23.string().guid().nullable().optional(),
8400
8409
  expectedRevision: z23.number().int().nonnegative().optional(),
8401
8410
  appliedRevision: z23.number().int().positive().nullable().optional(),
8402
8411
  refundStatus: z23.enum([
@@ -8411,10 +8420,10 @@ var LandingEditDto = z23.object({
8411
8420
  commerceReconciliation: CommerceReconciliationSchema.nullable().optional(),
8412
8421
  delivery: z23.lazy(() => LandingEditDeliverySchema).optional(),
8413
8422
  /** Photos the seller attached to this message (see LandingEditAttachmentDto). */
8414
- attachmentIds: z23.array(z23.string().uuid()).max(4).optional()
8423
+ attachmentIds: z23.array(z23.string().guid()).max(4).optional()
8415
8424
  });
8416
8425
  var LandingEditAttachmentDto = z23.object({
8417
- id: z23.string().uuid(),
8426
+ id: z23.string().guid(),
8418
8427
  url: z23.string().url(),
8419
8428
  width: z23.number().int().positive().nullable(),
8420
8429
  height: z23.number().int().positive().nullable()
@@ -8440,12 +8449,12 @@ var LandingEditQuoteRequest = z23.object({
8440
8449
  attachmentIds: z23.array(CodeLandingIdSchema).max(4).default([])
8441
8450
  });
8442
8451
  var LandingEditSubmitRequest = LandingEditQuoteRequest.extend({
8443
- quoteId: z23.string().uuid(),
8444
- idempotencyKey: z23.string().uuid()
8452
+ quoteId: z23.string().guid(),
8453
+ idempotencyKey: z23.string().guid()
8445
8454
  });
8446
8455
  var LandingOperationQuoteDto = z23.object({
8447
8456
  editPlanSummary: z23.lazy(() => LandingEditPlanSummarySchema).optional(),
8448
- id: z23.string().uuid(),
8457
+ id: z23.string().guid(),
8449
8458
  kind: z23.enum([
8450
8459
  "edit_patch",
8451
8460
  "edit_full",
@@ -8467,7 +8476,7 @@ var LandingRevisionHistoryItemDto = z23.object({
8467
8476
  parentRevision: z23.number().int().positive().nullable(),
8468
8477
  source: z23.string().min(1),
8469
8478
  summary: z23.string().nullable(),
8470
- editId: z23.string().uuid().nullable(),
8479
+ editId: z23.string().guid().nullable(),
8471
8480
  createdAt: z23.string().datetime(),
8472
8481
  isActive: z23.boolean(),
8473
8482
  isRedoTarget: z23.boolean(),
@@ -8513,7 +8522,7 @@ var LandingGifSourceSchema = z24.discriminatedUnion("kind", [
8513
8522
  z24.object({
8514
8523
  kind: z24.literal("generated"),
8515
8524
  referenceSelectionRevision: Revision2,
8516
- referenceImageAssetId: z24.string().uuid().optional(),
8525
+ referenceImageAssetId: z24.string().guid().optional(),
8517
8526
  motionBrief: z24.string().trim().min(1).max(1500)
8518
8527
  }).strict()
8519
8528
  ]);
@@ -8538,7 +8547,7 @@ var ReuseIdentity = z24.object({
8538
8547
  byteSize: z24.number().finite().int().positive().max(50 * 1024 * 1024),
8539
8548
  contentHash: Hash,
8540
8549
  provenance: z24.object({
8541
- taskId: z24.string().uuid(),
8550
+ taskId: z24.string().guid(),
8542
8551
  scanId: z24.string().min(1).max(200).optional(),
8543
8552
  sourceUrl: z24.string().url().max(4096).optional(),
8544
8553
  externalAdId: z24.string().min(1).max(200).optional()
@@ -8568,7 +8577,7 @@ var LandingGifReuseCandidateSchema = z24.discriminatedUnion("kind", [
8568
8577
  var GeneratedResolvedSourceSchema = z24.object({
8569
8578
  kind: z24.literal("generated"),
8570
8579
  referenceSelectionRevision: Revision2,
8571
- referenceImageAssetId: z24.string().uuid().optional(),
8580
+ referenceImageAssetId: z24.string().guid().optional(),
8572
8581
  referenceKeys: z24.array(StorageKey).min(1).max(4),
8573
8582
  identityReferenceKeys: z24.array(StorageKey).min(1).max(4).optional(),
8574
8583
  identityReferenceFingerprint: Hash.optional(),
@@ -8590,7 +8599,7 @@ var AutomaticResolvedSourceSchema = GeneratedResolvedSourceSchema.omit({
8590
8599
  referenceImageAssetId: true
8591
8600
  }).extend({
8592
8601
  kind: z24.literal("automatic"),
8593
- ownerTaskId: z24.string().uuid(),
8602
+ ownerTaskId: z24.string().guid(),
8594
8603
  productName: z24.string().min(1).max(500),
8595
8604
  productTruth: JsonValueSchema.optional(),
8596
8605
  useSheet: JsonValueSchema.optional(),
@@ -8654,7 +8663,7 @@ var LandingGifPlacementSchema = z24.discriminatedUnion("kind", [
8654
8663
  }).strict(),
8655
8664
  z24.object({
8656
8665
  kind: z24.literal("classic"),
8657
- ownerTaskId: z24.string().uuid(),
8666
+ ownerTaskId: z24.string().guid(),
8658
8667
  afterSourceIndex: z24.number().finite().int().min(1)
8659
8668
  }).strict(),
8660
8669
  z24.object({
@@ -8669,7 +8678,7 @@ var LandingGifCreateRequestSchema = z24.object({
8669
8678
  placement: LandingGifPlacementSchema,
8670
8679
  expectedLandingRevision: Revision2,
8671
8680
  expectedGifRevision: Revision2,
8672
- gifId: z24.string().uuid().optional(),
8681
+ gifId: z24.string().guid().optional(),
8673
8682
  expectedDocumentRevision: Revision2.optional()
8674
8683
  }).strict().superRefine((request, ctx) => {
8675
8684
  if (request.gifId === void 0 !== (request.expectedDocumentRevision === void 0)) {
@@ -8709,7 +8718,7 @@ var LandingGifCreateRequestSchema = z24.object({
8709
8718
  });
8710
8719
  var LandingGifSubmitRequestSchema = z24.object({
8711
8720
  request: LandingGifCreateRequestSchema,
8712
- quoteId: z24.string().uuid(),
8721
+ quoteId: z24.string().guid(),
8713
8722
  idempotencyKey: z24.string().trim().min(1).max(200)
8714
8723
  }).strict();
8715
8724
  var LandingGifRemoveRequestSchema = z24.object({
@@ -8745,17 +8754,17 @@ var LandingGifStoredDescriptorSchema = GifTechnicalMetadataSchema.extend({
8745
8754
  quality: LandingGifQualitySchema
8746
8755
  }).strict();
8747
8756
  var LandingGifReadableSchema = LandingGifStoredDescriptorSchema.extend({
8748
- ownerTaskId: z24.string().uuid(),
8757
+ ownerTaskId: z24.string().guid(),
8749
8758
  gifRevision: Revision2,
8750
8759
  gifUrl: z24.string().url(),
8751
8760
  posterUrl: z24.string().url()
8752
8761
  }).strict();
8753
8762
  var LandingGifSelectionSchema = z24.object({
8754
- ownerTaskId: z24.string().uuid(),
8763
+ ownerTaskId: z24.string().guid(),
8755
8764
  gifRevision: Revision2
8756
8765
  }).strict();
8757
8766
  var LandingGifOperationStatusSchema = z24.object({
8758
- operationId: z24.string().uuid(),
8767
+ operationId: z24.string().guid(),
8759
8768
  status: z24.enum([
8760
8769
  "reserved",
8761
8770
  "queued",
@@ -8777,13 +8786,13 @@ var LandingGifOperationStatusSchema = z24.object({
8777
8786
  reservedUserCents: z24.number().finite().int().nonnegative()
8778
8787
  }).strict();
8779
8788
  var LandingGifUseProposalSchema = z24.object({
8780
- id: z24.string().uuid(),
8781
- gifId: z24.string().uuid(),
8789
+ id: z24.string().guid(),
8790
+ gifId: z24.string().guid(),
8782
8791
  idea: z24.string().trim().min(1).max(300),
8783
8792
  motionBrief: z24.string().trim().min(1).max(1500),
8784
8793
  productFingerprint: Hash,
8785
8794
  referenceFingerprint: Hash.nullable(),
8786
- referenceImageAssetId: z24.string().uuid().optional(),
8795
+ referenceImageAssetId: z24.string().guid().optional(),
8787
8796
  referenceImageAssetKey: StorageKey.optional(),
8788
8797
  referenceImageUrl: z24.string().url().optional(),
8789
8798
  identityReferenceKeys: z24.array(StorageKey).min(1).max(4).optional(),
@@ -8804,8 +8813,8 @@ var LandingGifStateSchema = z24.enum([
8804
8813
  "removed"
8805
8814
  ]);
8806
8815
  var LandingGifItemSchema = z24.object({
8807
- gifId: z24.string().uuid(),
8808
- ownerTaskId: z24.string().uuid(),
8816
+ gifId: z24.string().guid(),
8817
+ ownerTaskId: z24.string().guid(),
8809
8818
  gifRevision: Revision2,
8810
8819
  state: LandingGifStateSchema,
8811
8820
  /** Server-derived compatibility for an already delivered singular primary. */
@@ -8845,8 +8854,8 @@ function isDeliverableLandingGif(item) {
8845
8854
  }
8846
8855
  __name(isDeliverableLandingGif, "isDeliverableLandingGif");
8847
8856
  var InitialLandingGifStatusSchema = z24.object({
8848
- intentId: z24.string().uuid(),
8849
- gifId: z24.string().uuid(),
8857
+ intentId: z24.string().guid(),
8858
+ gifId: z24.string().guid(),
8850
8859
  status: z24.enum([
8851
8860
  "funded",
8852
8861
  "awaiting_usage",
@@ -8862,7 +8871,7 @@ var InitialLandingGifStatusSchema = z24.object({
8862
8871
  refundStatus: LandingGifOperationStatusSchema.shape.refundStatus
8863
8872
  }).strict();
8864
8873
  var LandingGifCollectionResponseSchema = z24.object({
8865
- ownerTaskId: z24.string().uuid(),
8874
+ ownerTaskId: z24.string().guid(),
8866
8875
  landingRevision: Revision2,
8867
8876
  document: ClassicLandingDocumentSchema,
8868
8877
  gifs: z24.array(LandingGifItemSchema).max(100),
@@ -8876,15 +8885,15 @@ var LandingGifCollectionResponseSchema = z24.object({
8876
8885
  }
8877
8886
  });
8878
8887
  var LandingGifTargetSchema = z24.object({
8879
- gifId: z24.string().uuid(),
8888
+ gifId: z24.string().guid(),
8880
8889
  expectedGifRevision: Revision2
8881
8890
  }).strict();
8882
8891
  var LandingGifProposalRequestSchema = z24.object({
8883
- gifId: z24.string().uuid().optional(),
8892
+ gifId: z24.string().guid().optional(),
8884
8893
  expectedDocumentRevision: Revision2,
8885
8894
  afterBlockId: z24.string().min(1).max(300).optional(),
8886
8895
  merchantIdea: z24.string().trim().min(8).max(300).optional(),
8887
- referenceImageAssetId: z24.string().uuid().nullable().optional()
8896
+ referenceImageAssetId: z24.string().guid().nullable().optional()
8888
8897
  }).strict();
8889
8898
  var LandingGifQuoteResponseSchema = z24.object({
8890
8899
  quote: LandingOperationQuoteDto.extend({
@@ -8895,7 +8904,7 @@ var LandingGifCreateResponseSchema = z24.object({
8895
8904
  operation: LandingGifOperationStatusSchema
8896
8905
  }).strict();
8897
8906
  var LandingGifStatusResponseSchema = z24.object({
8898
- ownerTaskId: z24.string().uuid(),
8907
+ ownerTaskId: z24.string().guid(),
8899
8908
  landingRevision: Revision2,
8900
8909
  gifRevision: Revision2,
8901
8910
  demoGif: LandingGifReadableSchema.nullable(),
@@ -8933,9 +8942,9 @@ var LandingGifPresentationResponseSchema = z24.object({
8933
8942
  }).strict();
8934
8943
  var LandingGifCompletionReceiptBase = z24.object({
8935
8944
  version: z24.literal(1),
8936
- operationId: z24.string().uuid(),
8937
- taskId: z24.string().uuid(),
8938
- stepId: z24.string().uuid(),
8945
+ operationId: z24.string().guid(),
8946
+ taskId: z24.string().guid(),
8947
+ stepId: z24.string().guid(),
8939
8948
  stepEpoch: Revision2,
8940
8949
  acceptedGifRevision: z24.number().finite().int().positive(),
8941
8950
  gifAssetKey: z24.string().min(1),
@@ -8947,7 +8956,7 @@ var LandingGifCompletionReceiptSchema = z24.discriminatedUnion("version", [
8947
8956
  LandingGifCompletionReceiptBase,
8948
8957
  LandingGifCompletionReceiptBase.extend({
8949
8958
  version: z24.literal(2),
8950
- gifId: z24.string().uuid(),
8959
+ gifId: z24.string().guid(),
8951
8960
  disposition: z24.enum([
8952
8961
  "activated",
8953
8962
  "retained"
@@ -9248,7 +9257,7 @@ var VideoCreativeContext = z27.object({
9248
9257
  productTitle: z27.string(),
9249
9258
  primaryAngle: z27.string(),
9250
9259
  buyerPersona: z27.string().optional(),
9251
- brandId: z27.string().uuid().optional(),
9260
+ brandId: z27.string().guid().optional(),
9252
9261
  features: z27.array(z27.string()).default([]),
9253
9262
  scriptNotes: z27.string().optional(),
9254
9263
  cta: z27.string().optional(),
@@ -9407,19 +9416,19 @@ var ImageCreativeJobStatusEnum = z27.enum([
9407
9416
  "error"
9408
9417
  ]);
9409
9418
  var ImageCreativeJobStatus = z27.object({
9410
- jobId: z27.string().uuid(),
9419
+ jobId: z27.string().guid(),
9411
9420
  status: ImageCreativeJobStatusEnum,
9412
9421
  error: z27.string().optional(),
9413
9422
  result: ImageCreativeResult.nullable().optional(),
9414
9423
  request: ImageCreativeEditableRequest.optional()
9415
9424
  });
9416
9425
  var ImageCreativeJobPayload = z27.object({
9417
- jobId: z27.string().uuid(),
9426
+ jobId: z27.string().guid(),
9418
9427
  status: ImageCreativeJobStatusEnum,
9419
9428
  replayed: z27.boolean().optional()
9420
9429
  });
9421
9430
  var ImageCreativeHistoryEntry = z27.object({
9422
- id: z27.string().uuid(),
9431
+ id: z27.string().guid(),
9423
9432
  createdAt: z27.string().datetime(),
9424
9433
  status: ImageCreativeJobStatusEnum,
9425
9434
  result: ImageCreativeResult.nullable(),
@@ -9439,27 +9448,27 @@ var LandingCreativeResult = z27.object({
9439
9448
  createdAt: z27.string().datetime().optional()
9440
9449
  });
9441
9450
  var LandingCreativeJobStatus = z27.object({
9442
- jobId: z27.string().uuid(),
9451
+ jobId: z27.string().guid(),
9443
9452
  status: LandingCreativeJobStatusEnum,
9444
9453
  error: z27.string().optional(),
9445
9454
  result: LandingCreativeResult.nullable().optional()
9446
9455
  });
9447
9456
  var LandingCreativeJobPayload = z27.object({
9448
- jobId: z27.string().uuid(),
9457
+ jobId: z27.string().guid(),
9449
9458
  status: LandingCreativeJobStatusEnum,
9450
9459
  replayed: z27.boolean().optional()
9451
9460
  });
9452
9461
  var LandingCreativeHistoryEntry = z27.object({
9453
- id: z27.string().uuid(),
9462
+ id: z27.string().guid(),
9454
9463
  createdAt: z27.string().datetime(),
9455
9464
  status: LandingCreativeJobStatusEnum,
9456
9465
  result: LandingCreativeResult.nullable(),
9457
9466
  error: z27.string().optional()
9458
9467
  });
9459
9468
  var CreativeGeneratorJob = z27.object({
9460
- taskId: z27.string().uuid(),
9469
+ taskId: z27.string().guid(),
9461
9470
  /** Immutable approved product-reference snapshot consumed by the worker. */
9462
- referenceVersionId: z27.string().uuid().optional(),
9471
+ referenceVersionId: z27.string().guid().optional(),
9463
9472
  cleanImagesWaitAttempt: z27.number().int().nonnegative().optional()
9464
9473
  });
9465
9474
  var ImageCreativeEditStatus = z27.enum([
@@ -9475,8 +9484,8 @@ var ImageCreativeRegenerateRequest = z27.object({
9475
9484
  });
9476
9485
  var ImageCreativeEditStatusResponse = z27.object({
9477
9486
  ok: z27.literal(true),
9478
- operationId: z27.string().uuid(),
9479
- taskId: z27.string().uuid(),
9487
+ operationId: z27.string().guid(),
9488
+ taskId: z27.string().guid(),
9480
9489
  variantIndex: z27.number().int().nonnegative(),
9481
9490
  status: ImageCreativeEditStatus,
9482
9491
  assetKey: z27.string().optional(),
@@ -9617,20 +9626,20 @@ var CreativeGenderPin = z33.enum([
9617
9626
  var CreativeDirectionSchema = z33.string().transform((value) => value.trim()).pipe(z33.string().max(CREATIVE_DIRECTION_MAX_CHARS));
9618
9627
  var IngestOptions = z33.object({
9619
9628
  /** Optional owner-scoped guided journey context. Never bypasses ingest gates. */
9620
- dropshippingProjectId: z33.string().uuid().optional(),
9621
- languageCode: LanguageCodeSchema.default("es-CO"),
9622
- ugcFormat: VideoFormat.default("single_15s"),
9629
+ dropshippingProjectId: z33.string().guid().optional(),
9630
+ languageCode: LanguageCodeSchema.default("es-CO").nonoptional(),
9631
+ ugcFormat: VideoFormat.default("single_15s").nonoptional(),
9623
9632
  country: CountrySchema,
9624
9633
  price: PriceSchema,
9625
9634
  offer: OfferSchema,
9626
9635
  compareAtPrice: CompareAtPriceSchema,
9627
9636
  pricingInput: SellerPricingInputSchema.optional(),
9628
9637
  paymentMethods: PaymentMethodsSchema,
9629
- videoStyle: VideoStyle.default("ugc"),
9638
+ videoStyle: VideoStyle.default("ugc").nonoptional(),
9630
9639
  /** Canonical public route axes; legacy provider fields remain compatibility aliases. */
9631
9640
  videoStructure: VideoStructure.optional(),
9632
9641
  videoQuality: VideoQuality.optional(),
9633
- videoModel: VideoModel.default("veo"),
9642
+ videoModel: VideoModel.default("veo").nonoptional(),
9634
9643
  /**
9635
9644
  * An explicit registry model id for Free mode (Defect 1, follow-up to the
9636
9645
  * model-agnostic video plan). Validated against `activeVideoModels()` in
@@ -9645,15 +9654,15 @@ var IngestOptions = z33.object({
9645
9654
  ]).optional(),
9646
9655
  rawPrompt: FreeVideoOptionsSchema.shape.rawPrompt.optional(),
9647
9656
  durationSeconds: FreeVideoOptionsSchema.shape.durationSeconds.optional(),
9648
- addSubtitles: FreeVideoOptionsSchema.shape.addSubtitles.optional(),
9657
+ addSubtitles: FreeVideoOptionsSchema.shape.addSubtitles.nonoptional().optional(),
9649
9658
  subtitleText: z33.string().transform((value) => value.trim()).pipe(z33.string().max(FREE_VIDEO_SUBTITLE_MAX_CHARS)).optional(),
9650
- videoTier: WritableVideoTier.default(DEFAULT_VIDEO_TIER),
9651
- narrativeStyle: NarrativeStyle.default("review"),
9659
+ videoTier: WritableVideoTier.default(WritableVideoTier.parse(DEFAULT_VIDEO_TIER)).nonoptional(),
9660
+ narrativeStyle: NarrativeStyle.default("review").nonoptional(),
9652
9661
  videoPreset: VideoPreset.optional(),
9653
9662
  /** Orthogonal visual style for animated narratives only. The API rejects it
9654
9663
  * on non-animated presets; absent → the pipeline resolves 'pixar_3d'. */
9655
9664
  animationStyle: AnimationStyleSchema.optional(),
9656
- multiAngleVideos: z33.boolean().default(false),
9665
+ multiAngleVideos: z33.boolean().default(false).nonoptional(),
9657
9666
  videoAngleCount: z33.number().int().min(1).max(3).optional(),
9658
9667
  /** Per-angle narrative override (positional). angleNarratives[i] forces the
9659
9668
  * narrative of angle position i, overriding the batch auto-selector; a list
@@ -9665,7 +9674,7 @@ var IngestOptions = z33.object({
9665
9674
  // quality levels; an explicit 720p pick wins. Callers that omit the field
9666
9675
  // use the same 480p compatibility fallback in resolveSingleCallAwareResolution.
9667
9676
  videoResolution: VideoResolution.optional(),
9668
- generateAdCopy: z33.boolean().default(true),
9677
+ generateAdCopy: z33.boolean().default(true).nonoptional(),
9669
9678
  generateAiMusic: z33.boolean().optional(),
9670
9679
  /** «Edición con IA» opt-in; a music request aliases to it. */
9671
9680
  generateAiEdit: AiEditRequestSchema.optional(),
@@ -9676,7 +9685,7 @@ var IngestOptions = z33.object({
9676
9685
  * the multipart path on 2026-09-01, so an unbounded opaque string was newly persistable
9677
9686
  * per task. Length only, never `.uuid()` — Actor.id is a CUID. */
9678
9687
  actorId: z33.string().min(1).max(120).optional(),
9679
- isCombo: z33.boolean().default(false),
9688
+ isCombo: z33.boolean().default(false).nonoptional(),
9680
9689
  productContext: z33.string().transform(canonicalizeProductContext).pipe(z33.string().max(PRODUCT_CONTEXT_MAX_CHARS)).optional(),
9681
9690
  creativeDirection: CreativeDirectionSchema.optional(),
9682
9691
  /** Exact copy the user pinned. Rendered VERBATIM on the image creatives this task
@@ -9749,8 +9758,8 @@ var IngestOptions = z33.object({
9749
9758
  * chosen videoPreset. Default true preserves the 2026-08-04 decision;
9750
9759
  * only a deliberate `false` suspends replication. See
9751
9760
  * `shouldAskReplicationConsent` for when this is even asked. */
9752
- replicateWinnerWhenFound: z33.boolean().default(true),
9753
- brandId: z33.string().uuid().optional()
9761
+ replicateWinnerWhenFound: z33.boolean().default(true).nonoptional(),
9762
+ brandId: z33.string().guid().optional()
9754
9763
  }).partial().transform(normalizeSellerPricingFields).superRefine((data, ctx) => {
9755
9764
  const message = validatePriceInversion(data.price, data.compareAtPrice);
9756
9765
  if (message) {
@@ -10497,7 +10506,7 @@ var CreativeEngineWinnerContextSchema = z38.object({
10497
10506
  version: z38.literal(1),
10498
10507
  winnerAdId: z38.string().min(1).max(200),
10499
10508
  /** Owned parsed gap blueprint of the selected winner (opaque evidence). */
10500
- gapBlueprint: z38.unknown(),
10509
+ gapBlueprint: z38.unknown().optional(),
10501
10510
  observed: z38.object({
10502
10511
  scenes: z38.array(CreativeEngineWinnerObservedSceneSchema).max(40),
10503
10512
  /**
@@ -11668,7 +11677,7 @@ var VideoGenerator = z39.object({
11668
11677
  ctx.addIssue({
11669
11678
  code: z39.ZodIssueCode.too_small,
11670
11679
  minimum: 1,
11671
- type: "string",
11680
+ origin: "string",
11672
11681
  inclusive: true,
11673
11682
  path: [
11674
11683
  "prompt"
@@ -11776,7 +11785,7 @@ var RegenerateVideoScriptNarrativeResponse = z39.object({
11776
11785
  var RegenerateVideoRequest = z39.object({
11777
11786
  angleKey: z39.string().min(1),
11778
11787
  /** Stable new-intent identity for regeneration of an already delivered engine video. */
11779
- clientRequestId: z39.string().uuid().optional()
11788
+ clientRequestId: z39.string().guid().optional()
11780
11789
  }).strict();
11781
11790
  var RegenerateVideoResponse = z39.object({
11782
11791
  ok: z39.literal(true),
@@ -11787,7 +11796,7 @@ var RegenerateVideoResponse = z39.object({
11787
11796
  "single_call"
11788
11797
  ]),
11789
11798
  /** New immutable child, when this command bought a new delivered-video intent. */
11790
- taskId: z39.string().uuid().optional()
11799
+ taskId: z39.string().guid().optional()
11791
11800
  });
11792
11801
 
11793
11802
  // ../../packages/types/src/billing.ts
@@ -11829,16 +11838,16 @@ var BillingProvider = z40.enum([
11829
11838
  ]);
11830
11839
  var BillingRecordInput = z40.object({
11831
11840
  userId: z40.string().min(1),
11832
- taskId: z40.string().uuid().optional(),
11833
- mixTaskId: z40.string().uuid().optional(),
11834
- productResearchRunId: z40.string().uuid().optional(),
11835
- servicePageId: z40.string().uuid().optional(),
11841
+ taskId: z40.string().guid().optional(),
11842
+ mixTaskId: z40.string().guid().optional(),
11843
+ productResearchRunId: z40.string().guid().optional(),
11844
+ servicePageId: z40.string().guid().optional(),
11836
11845
  provider: BillingProvider,
11837
11846
  label: z40.string().optional(),
11838
11847
  units: z40.number().int().nonnegative().optional(),
11839
11848
  ourCostCents: BillingNonNegativeAmount,
11840
11849
  userPriceCents: BillingNonNegativeAmount,
11841
- metadata: z40.record(z40.unknown()).optional()
11850
+ metadata: z40.record(z40.string(), z40.unknown()).optional()
11842
11851
  }).superRefine((value, ctx) => {
11843
11852
  const scopedIds = [
11844
11853
  value.taskId,
@@ -11860,7 +11869,7 @@ var BillingSummary = z40.object({
11860
11869
  // ../../packages/types/src/shopify.ts
11861
11870
  import { z as z41 } from "zod";
11862
11871
  var ShopifyShopSummary = z41.object({
11863
- id: z41.string().uuid(),
11872
+ id: z41.string().guid(),
11864
11873
  shopDomain: z41.string(),
11865
11874
  primaryDomain: z41.string().nullable(),
11866
11875
  scopes: z41.array(z41.string()),
@@ -11907,7 +11916,7 @@ var ShopifyPublicationMode = z41.enum([
11907
11916
  var SHOPIFY_ANNOUNCEMENT_BAR_MAX_LENGTH = 160;
11908
11917
  var ShopifyPublishRequest = z41.object({
11909
11918
  /** Correlates a mutation with read-only recovery after a lost response. */
11910
- publishAttemptId: z41.string().uuid().optional(),
11919
+ publishAttemptId: z41.string().guid().optional(),
11911
11920
  /** Omitted keeps legacy publication behavior; null explicitly excludes the GIF. */
11912
11921
  selectedLandingGif: LandingGifSelectionSchema.nullable().optional(),
11913
11922
  classicSelection: ClassicLandingSelectionSnapshotSchema.optional(),
@@ -11966,7 +11975,7 @@ var ShopifyPublishRequest = z41.object({
11966
11975
  });
11967
11976
  }
11968
11977
  });
11969
- var CodeLandingThemeSetupRequest = ShopifyPublishRequest.innerType().omit({
11978
+ var CodeLandingThemeSetupRequest = z41.object(ShopifyPublishRequest.shape).omit({
11970
11979
  publishAttemptId: true,
11971
11980
  commerceCorrection: true
11972
11981
  });
@@ -12036,8 +12045,8 @@ var ShopifyBundleMappingResult = z41.discriminatedUnion("status", [
12036
12045
  ]);
12037
12046
  var ShopifyPublishResponse = z41.object({
12038
12047
  pricingNotices: z41.array(SellerPricingNoticeSchema).max(32).optional(),
12039
- publicationId: z41.string().uuid(),
12040
- taskId: z41.string().uuid(),
12048
+ publicationId: z41.string().guid(),
12049
+ taskId: z41.string().guid(),
12041
12050
  status: ShopifyPublicationStatus,
12042
12051
  shopDomain: z41.string(),
12043
12052
  productId: z41.string().optional(),
@@ -12108,8 +12117,8 @@ var ShopifyImportOutcomeResponse = z41.discriminatedUnion("status", [
12108
12117
  ]);
12109
12118
  var ShopifyPublishAttemptStatus = z41.discriminatedUnion("status", [
12110
12119
  z41.object({
12111
- publicationId: z41.string().uuid(),
12112
- taskId: z41.string().uuid(),
12120
+ publicationId: z41.string().guid(),
12121
+ taskId: z41.string().guid(),
12113
12122
  status: z41.enum([
12114
12123
  "pending",
12115
12124
  "processing"
@@ -12117,8 +12126,8 @@ var ShopifyPublishAttemptStatus = z41.discriminatedUnion("status", [
12117
12126
  productId: z41.string().optional()
12118
12127
  }),
12119
12128
  z41.object({
12120
- publicationId: z41.string().uuid(),
12121
- taskId: z41.string().uuid(),
12129
+ publicationId: z41.string().guid(),
12130
+ taskId: z41.string().guid(),
12122
12131
  status: z41.literal("error"),
12123
12132
  productId: z41.string().optional(),
12124
12133
  failure: z41.discriminatedUnion("kind", [
@@ -12272,7 +12281,7 @@ var CreateShopifyBillingChargeRequest = z41.object({
12272
12281
  });
12273
12282
  var ShopifyBillingCallbackQuery = z41.object({
12274
12283
  charge_id: z41.string().regex(/^\d+$/),
12275
- transactionId: z41.string().uuid()
12284
+ transactionId: z41.string().guid()
12276
12285
  });
12277
12286
  var CancelShopifySubscriptionRequest = z41.object({
12278
12287
  subscriptionId: z41.string().min(1)
@@ -12338,12 +12347,12 @@ var ApproveAnglesRefusalReason = z42.enum([
12338
12347
  ]);
12339
12348
  var ApproveAnglesResponse = z42.object({
12340
12349
  success: z42.boolean(),
12341
- taskId: z42.string().uuid(),
12350
+ taskId: z42.string().guid(),
12342
12351
  reason: ApproveAnglesRefusalReason.optional()
12343
12352
  });
12344
12353
  var IngestResumeRefusalResponse = z42.object({
12345
12354
  success: z42.literal(false),
12346
- taskId: z42.string().uuid(),
12355
+ taskId: z42.string().guid(),
12347
12356
  reason: ApproveAnglesRefusalReason.optional()
12348
12357
  });
12349
12358
  var GenerateSuggestionsResponse = z42.object({
@@ -12358,7 +12367,7 @@ var SaveDraftRequest = z42.object({
12358
12367
  });
12359
12368
  var SaveDraftResponse = z42.object({
12360
12369
  success: z42.boolean(),
12361
- taskId: z42.string().uuid()
12370
+ taskId: z42.string().guid()
12362
12371
  });
12363
12372
  var ProductReferenceRecoveryImageMimeType = z42.enum([
12364
12373
  "image/jpeg",
@@ -12403,7 +12412,7 @@ var ConfirmProductReferencesRequest = z42.object({
12403
12412
  "keep_selection"
12404
12413
  ]),
12405
12414
  affectedRefKeys: z42.array(z42.string().min(1).max(200)).min(1).max(5).optional(),
12406
- expectedReferenceVersionId: z42.string().uuid().optional(),
12415
+ expectedReferenceVersionId: z42.string().guid().optional(),
12407
12416
  expectedEvidenceHash: z42.string().min(1).max(128).optional(),
12408
12417
  uploadedImages: z42.array(ProductReferenceRecoveryUpload).max(INGEST_MAX_REFERENCE_IMAGES).optional()
12409
12418
  }).optional()
@@ -12440,7 +12449,7 @@ var ConfirmProductReferencesRequest = z42.object({
12440
12449
  });
12441
12450
  var ConfirmProductReferencesResponse = z42.object({
12442
12451
  success: z42.boolean(),
12443
- taskId: z42.string().uuid(),
12452
+ taskId: z42.string().guid(),
12444
12453
  anglesQueued: z42.boolean()
12445
12454
  });
12446
12455
  var UpdateProductFeaturesRequest = z42.object({
@@ -12507,7 +12516,7 @@ var ApproveVideoAnglesRequest = z42.object({
12507
12516
  "meta",
12508
12517
  "upload"
12509
12518
  ]).optional(),
12510
- sourceUploadIds: z42.array(z42.string().uuid()).min(2).max(5).optional(),
12519
+ sourceUploadIds: z42.array(z42.string().guid()).min(2).max(5).optional(),
12511
12520
  /** Whether to pause for video script review before final generation */
12512
12521
  pauseForVideoScriptReview: z42.boolean().optional(),
12513
12522
  /** Whether to produce an additional AI-music video variant */
@@ -12521,7 +12530,7 @@ var ApproveVideoAnglesRequest = z42.object({
12521
12530
  }).superRefine((value, ctx) => validateFrankensteinDraftSources(value, ctx, true));
12522
12531
  var ApproveVideoAnglesResponse = z42.object({
12523
12532
  success: z42.boolean(),
12524
- taskId: z42.string().uuid(),
12533
+ taskId: z42.string().guid(),
12525
12534
  /** Persisted keys scheduled by this approval; visible candidate indices are not worker keys. */
12526
12535
  approvedAngleKeys: z42.array(z42.string().regex(/^angle_\d+$/)).min(1).max(3).optional(),
12527
12536
  reason: ApproveAnglesRefusalReason.optional()
@@ -12541,11 +12550,11 @@ var SaveVideoDraftRequest = z42.object({
12541
12550
  "meta",
12542
12551
  "upload"
12543
12552
  ]).optional(),
12544
- sourceUploadIds: z42.array(z42.string().uuid()).min(2).max(5).optional()
12553
+ sourceUploadIds: z42.array(z42.string().guid()).min(2).max(5).optional()
12545
12554
  }).superRefine((value, ctx) => validateFrankensteinDraftSources(value, ctx, false));
12546
12555
  var SaveVideoDraftResponse = z42.object({
12547
12556
  success: z42.boolean(),
12548
- taskId: z42.string().uuid()
12557
+ taskId: z42.string().guid()
12549
12558
  });
12550
12559
  var ApproveImageAnglesRequest = z42.object({
12551
12560
  /** Zero-based index of the generated angle explicitly selected for production. */
@@ -12569,7 +12578,7 @@ var ApproveImageAnglesRequest = z42.object({
12569
12578
  });
12570
12579
  var ApproveImageAnglesResponse = z42.object({
12571
12580
  success: z42.boolean(),
12572
- taskId: z42.string().uuid(),
12581
+ taskId: z42.string().guid(),
12573
12582
  reason: ApproveAnglesRefusalReason.optional()
12574
12583
  });
12575
12584
  var SaveImageDraftRequest = z42.object({
@@ -12580,7 +12589,7 @@ var SaveImageDraftRequest = z42.object({
12580
12589
  });
12581
12590
  var SaveImageDraftResponse = z42.object({
12582
12591
  success: z42.boolean(),
12583
- taskId: z42.string().uuid()
12592
+ taskId: z42.string().guid()
12584
12593
  });
12585
12594
  var ImageSuggestionsResponse = z42.object({
12586
12595
  painPoints: z42.array(z42.string()),
@@ -12626,8 +12635,8 @@ var QualityReportReason = z43.enum([
12626
12635
  "other"
12627
12636
  ]);
12628
12637
  var QualityReportRequest = z43.object({
12629
- taskId: z43.string().uuid().optional(),
12630
- mixTaskId: z43.string().uuid().optional(),
12638
+ taskId: z43.string().guid().optional(),
12639
+ mixTaskId: z43.string().guid().optional(),
12631
12640
  kind: QualityReportKind,
12632
12641
  /**
12633
12642
  * URL or internal proxy path (e.g. `/api/assets/...`).
@@ -12653,9 +12662,9 @@ var QualityReportRequest = z43.object({
12653
12662
  ]
12654
12663
  });
12655
12664
  var QualityReportResponse = z43.object({
12656
- reportId: z43.string().uuid(),
12657
- taskId: z43.string().uuid().optional(),
12658
- mixTaskId: z43.string().uuid().optional(),
12665
+ reportId: z43.string().guid(),
12666
+ taskId: z43.string().guid().optional(),
12667
+ mixTaskId: z43.string().guid().optional(),
12659
12668
  kind: QualityReportKind,
12660
12669
  resourceUrl: z43.string().min(1),
12661
12670
  reason: QualityReportReason,
@@ -13084,7 +13093,7 @@ var TaskCreativeVariantVideoPreset = VideoPreset.exclude([
13084
13093
  ...BLOCKED_VIDEO_PRESETS
13085
13094
  ]);
13086
13095
  var CreateTaskCreativeVariantBase = z47.object({
13087
- clientRequestId: z47.string().uuid(),
13096
+ clientRequestId: z47.string().guid(),
13088
13097
  angle: z47.string().trim().min(1).max(TASK_CREATIVE_VARIANT_TEXT_LIMITS.angle),
13089
13098
  buyerPersona: z47.string().trim().min(1).max(TASK_CREATIVE_VARIANT_TEXT_LIMITS.buyerPersona).optional()
13090
13099
  });
@@ -13107,7 +13116,7 @@ var CreateTaskImageVariantRequest = CreateTaskCreativeVariantBase.extend({
13107
13116
  styleMix: z47.boolean().optional()
13108
13117
  }).strict();
13109
13118
  var CreateTaskLandingSectionVariantRequest = z47.object({
13110
- clientRequestId: z47.string().uuid(),
13119
+ clientRequestId: z47.string().guid(),
13111
13120
  kind: z47.literal("landing"),
13112
13121
  sectionKey: LandingSectionKeySchema,
13113
13122
  instructions: z47.string().trim().min(1).max(TASK_CREATIVE_VARIANT_TEXT_LIMITS.landingInstructions).optional()
@@ -13135,8 +13144,8 @@ var EstimateTaskCreativeVariantRequest = z47.discriminatedUnion("kind", [
13135
13144
  ]);
13136
13145
  var CreateTaskCreativeVariantResponse = z47.object({
13137
13146
  ok: z47.literal(true),
13138
- sourceTaskId: z47.string().uuid(),
13139
- variantTaskId: z47.string().uuid(),
13147
+ sourceTaskId: z47.string().guid(),
13148
+ variantTaskId: z47.string().guid(),
13140
13149
  kind: TaskCreativeVariantKind,
13141
13150
  status: TaskCreativeVariantStatus
13142
13151
  }).strict();
@@ -13159,15 +13168,15 @@ var TaskCreativeVariantRecommendationRequest = z47.object({
13159
13168
  }).strict();
13160
13169
  var TaskCreativeVariantRecommendationResponse = z47.object({
13161
13170
  ok: z47.literal(true),
13162
- sourceTaskId: z47.string().uuid(),
13171
+ sourceTaskId: z47.string().guid(),
13163
13172
  kind: TaskCreativeVariantKind,
13164
13173
  field: TaskCreativeVariantRecommendationField,
13165
13174
  value: z47.string().trim().min(1).max(TASK_CREATIVE_VARIANT_TEXT_LIMITS.scriptNotes),
13166
13175
  rationale: z47.string().trim().min(1).max(TASK_CREATIVE_VARIANT_TEXT_LIMITS.recommendationRationale).optional()
13167
13176
  }).strict();
13168
13177
  var TaskCreativeVariantBaseResult = z47.object({
13169
- variantTaskId: z47.string().uuid(),
13170
- sourceTaskId: z47.string().uuid(),
13178
+ variantTaskId: z47.string().guid(),
13179
+ sourceTaskId: z47.string().guid(),
13171
13180
  kind: TaskCreativeVariantKind,
13172
13181
  status: TaskCreativeVariantStatus,
13173
13182
  angle: z47.string().min(1),
@@ -13341,7 +13350,7 @@ var ResultAngle = Angle.extend({
13341
13350
  aiEdit: AiEditTierSchema.nullable().optional()
13342
13351
  });
13343
13352
  var MVPResult = z49.object({
13344
- taskId: z49.string().uuid(),
13353
+ taskId: z49.string().guid(),
13345
13354
  /** Read-only identity derived from validated persisted request context.
13346
13355
  * Optional for older APIs and content-only tasks; absence never implies a service. */
13347
13356
  subjectKind: z49.enum([
@@ -13519,7 +13528,7 @@ var PendingUserActionSchema = z49.discriminatedUnion("kind", [
13519
13528
  z49.object({
13520
13529
  kind: z49.literal("service_angle_approval"),
13521
13530
  angles: z49.array(z49.object({
13522
- id: z49.string().uuid(),
13531
+ id: z49.string().guid(),
13523
13532
  content: z49.string(),
13524
13533
  creativeDirection: z49.string(),
13525
13534
  actor: z49.string(),
@@ -13598,7 +13607,7 @@ var CommercialStudySummarySchema = z49.union([
13598
13607
  })
13599
13608
  ]);
13600
13609
  var StatusResponse = z49.object({
13601
- taskId: z49.string().uuid(),
13610
+ taskId: z49.string().guid(),
13602
13611
  status: TaskStatusSchema,
13603
13612
  /** ENGINEERING string (`Task.error`). Never render this to a seller. */
13604
13613
  error: z49.string().optional(),
@@ -13806,7 +13815,7 @@ var StatusResponse = z49.object({
13806
13815
  frankensteinRun: FrankensteinRunProgressSchema.optional()
13807
13816
  });
13808
13817
  var TaskSummary = z49.object({
13809
- taskId: z49.string().uuid(),
13818
+ taskId: z49.string().guid(),
13810
13819
  /** A projected ServicePage, opened through its own editor and lifecycle. */
13811
13820
  resourceType: z49.literal("service_page").optional(),
13812
13821
  status: TaskStatusSchema,
@@ -14235,7 +14244,7 @@ var RegenerateLandingRoleBody = z50.object({
14235
14244
  comment: z50.string().max(2e3).optional(),
14236
14245
  sourceKey: z50.string().max(200).optional(),
14237
14246
  /** Client-generated key makes a lost response safe to retry without another charge. */
14238
- clientRequestId: z50.string().uuid().optional()
14247
+ clientRequestId: z50.string().guid().optional()
14239
14248
  }).strict();
14240
14249
  var LandingRegenerateEstimationOptions = z50.object({
14241
14250
  /** KIE image endpoint has non-linear pricing by nVariants; for landing we default to 2. */
@@ -15222,7 +15231,7 @@ var UpdateUserCreditsRequest = z53.object({
15222
15231
  /** Free-text detail. Required when the enum alone does not explain the grant. */
15223
15232
  notes: z53.string().trim().min(1).max(500).optional(),
15224
15233
  /** The task the grant compensates, when there is one. */
15225
- taskId: z53.string().uuid().optional()
15234
+ taskId: z53.string().guid().optional()
15226
15235
  });
15227
15236
  var QualityReportStatus = z53.enum([
15228
15237
  "open",
@@ -15282,7 +15291,7 @@ var AdminSupportDeliveryStatus = z53.enum([
15282
15291
  "blocked"
15283
15292
  ]);
15284
15293
  var AdminSupportMessage = z53.object({
15285
- id: z53.string().uuid(),
15294
+ id: z53.string().guid(),
15286
15295
  direction: z53.enum([
15287
15296
  "inbound",
15288
15297
  "outbound"
@@ -15306,7 +15315,7 @@ var AdminSupportMessage = z53.object({
15306
15315
  createdAt: z53.string().datetime()
15307
15316
  });
15308
15317
  var AdminSupportTicket = z53.object({
15309
- id: z53.string().uuid(),
15318
+ id: z53.string().guid(),
15310
15319
  category: z53.enum([
15311
15320
  "how_to",
15312
15321
  "credits",
@@ -15335,7 +15344,7 @@ var AdminSupportTicket = z53.object({
15335
15344
  updatedAt: z53.string().datetime()
15336
15345
  });
15337
15346
  var AdminSupportConversation = z53.object({
15338
- id: z53.string().uuid(),
15347
+ id: z53.string().guid(),
15339
15348
  status: AdminSupportConversationStatus,
15340
15349
  priority: z53.enum([
15341
15350
  "low",
@@ -15350,7 +15359,7 @@ var AdminSupportConversation = z53.object({
15350
15359
  createdAt: z53.string().datetime(),
15351
15360
  updatedAt: z53.string().datetime(),
15352
15361
  contact: z53.object({
15353
- id: z53.string().uuid(),
15362
+ id: z53.string().guid(),
15354
15363
  userId: z53.string().nullable(),
15355
15364
  verifiedAt: z53.string().datetime().nullable(),
15356
15365
  botMode: z53.enum([
@@ -15366,11 +15375,11 @@ var AdminSupportConversation = z53.object({
15366
15375
  var AdminSupportListQuery = z53.object({
15367
15376
  status: AdminSupportConversationStatus.optional(),
15368
15377
  take: z53.coerce.number().int().min(1).max(100).default(50),
15369
- cursorId: z53.string().uuid().optional()
15378
+ cursorId: z53.string().guid().optional()
15370
15379
  }).strict();
15371
15380
  var AdminSupportListResponse = z53.object({
15372
15381
  conversations: z53.array(AdminSupportConversation),
15373
- nextCursor: z53.string().uuid().nullable()
15382
+ nextCursor: z53.string().guid().nullable()
15374
15383
  });
15375
15384
  var AdminSupportReplyRequest = z53.object({
15376
15385
  body: z53.string().trim().min(1).max(4096),
@@ -15381,7 +15390,7 @@ var AdminSupportActionResponse = z53.object({
15381
15390
  conversation: AdminSupportConversation
15382
15391
  });
15383
15392
  var AdminSupportReplyResponse = z53.object({
15384
- messageId: z53.string().uuid(),
15393
+ messageId: z53.string().guid(),
15385
15394
  deliveryStatus: AdminSupportDeliveryStatus,
15386
15395
  duplicate: z53.boolean()
15387
15396
  });
@@ -15511,7 +15520,7 @@ var VideoVoiceJobSchema = z57.object({
15511
15520
  wakeRevision: z57.number().int().nonnegative()
15512
15521
  }).strict();
15513
15522
  var ExtractJobSchema = z57.object({
15514
- taskId: z57.string().uuid(),
15523
+ taskId: z57.string().guid(),
15515
15524
  imageKey: z57.string().min(1).optional(),
15516
15525
  imageKeys: z57.array(z57.string().min(1)).min(1).max(INGEST_MAX_REFERENCE_IMAGES).optional(),
15517
15526
  /** Existing clean references carried through a recovery extract. They are
@@ -15630,20 +15639,20 @@ var BrandExtractDocumentSchema = z57.object({
15630
15639
  ])
15631
15640
  });
15632
15641
  var VideoMixSubmitJobSchema = z57.object({
15633
- mixTaskId: z57.string().uuid()
15642
+ mixTaskId: z57.string().guid()
15634
15643
  });
15635
15644
  var VideoMixAssembleJobSchema = z57.object({
15636
- mixTaskId: z57.string().uuid()
15645
+ mixTaskId: z57.string().guid()
15637
15646
  });
15638
15647
  var VideoMixQaJobSchema = z57.object({
15639
- mixSceneTaskId: z57.string().uuid(),
15648
+ mixSceneTaskId: z57.string().guid(),
15640
15649
  // externalId is included in the BullMQ payload by the producer (used in the
15641
15650
  // jobId for retry uniqueness) but the worker only reads mixSceneTaskId.
15642
15651
  externalId: z57.string().min(1).optional()
15643
15652
  });
15644
15653
  var BrandExtractLocaleSchema = z57.string().regex(/^[A-Za-z]{2,3}(?:[-_][A-Za-z0-9]{2,8})?$/, "invalid locale");
15645
15654
  var BrandExtractJobSchema = z57.object({
15646
- brandId: z57.string().uuid(),
15655
+ brandId: z57.string().guid(),
15647
15656
  // Generation is part of the durable paid-spend identity. Default 1 keeps
15648
15657
  // pre-migration BullMQ payloads parseable; their DB state fails safe.
15649
15658
  generation: z57.number().int().positive().default(1),
@@ -15675,23 +15684,23 @@ import { z as z58 } from "zod";
15675
15684
  var WhatsAppDeliveryConsumerSchema = z58.discriminatedUnion("kind", [
15676
15685
  z58.object({
15677
15686
  kind: z58.literal("presentation"),
15678
- presentationId: z58.string().uuid(),
15687
+ presentationId: z58.string().guid(),
15679
15688
  pollAt: z58.number().int().nonnegative()
15680
15689
  }).strict(),
15681
15690
  z58.object({
15682
15691
  kind: z58.literal("message"),
15683
- messageId: z58.string().uuid(),
15692
+ messageId: z58.string().guid(),
15684
15693
  providerMessageId: z58.string().min(1).max(256)
15685
15694
  }).strict(),
15686
15695
  z58.object({
15687
15696
  kind: z58.literal("task_watch"),
15688
- commandId: z58.string().uuid(),
15697
+ commandId: z58.string().guid(),
15689
15698
  pollAt: z58.number().int().nonnegative()
15690
15699
  }).strict(),
15691
15700
  z58.object({
15692
15701
  kind: z58.literal("research_watch"),
15693
- commandId: z58.string().uuid(),
15694
- runId: z58.string().uuid(),
15702
+ commandId: z58.string().guid(),
15703
+ runId: z58.string().guid(),
15695
15704
  pollAt: z58.number().int().nonnegative()
15696
15705
  }).strict()
15697
15706
  ]);
@@ -15740,9 +15749,9 @@ var ComboItemSchema = z60.object({
15740
15749
  /** Physical details for this specific product */
15741
15750
  details: z60.object({
15742
15751
  packagingType: z60.string().optional(),
15743
- geometry: z60.record(z60.unknown()).optional(),
15744
- morphology: z60.record(z60.unknown()).optional(),
15745
- estimatedDimensions: z60.record(z60.unknown()).optional()
15752
+ geometry: z60.record(z60.string(), z60.unknown()).optional(),
15753
+ morphology: z60.record(z60.string(), z60.unknown()).optional(),
15754
+ estimatedDimensions: z60.record(z60.string(), z60.unknown()).optional()
15746
15755
  }).optional(),
15747
15756
  /** Per-item usage spec extracted individually (fallback: global combo usageSpec) */
15748
15757
  usageSpec: ProductUsageSpec.optional()
@@ -15781,7 +15790,7 @@ var FacebookConnectionStatusSchema = z61.object({
15781
15790
  message: z61.string().optional()
15782
15791
  });
15783
15792
  var FacebookCreateCampaignRequestSchema = z61.object({
15784
- taskId: z61.string().uuid(),
15793
+ taskId: z61.string().guid(),
15785
15794
  pixelId: z61.string().optional(),
15786
15795
  landingUrl: HttpUrl2.optional()
15787
15796
  });
@@ -15906,29 +15915,14 @@ var FacebookCreateCampaignResponseSchema = z61.object({
15906
15915
  appliedBudget: z61.number().int().positive()
15907
15916
  });
15908
15917
  var FacebookCreateCampaignFromCreativesBodySchema = z61.object({
15909
- /** Caller-owned retry fence. Required before any provider operation. */
15910
- publishAttemptId: MetaPublishAttemptId,
15911
- creatives: z61.array(z61.object({
15912
- type: MediaKind,
15913
- title: z61.string().max(120),
15914
- description: z61.string().max(500),
15915
- cta: MetaCtaType,
15918
+ ...UploadToMetaRequest.shape,
15919
+ creatives: z61.array(UploadToMetaRequest.shape.creatives.element.extend({
15920
+ // Retain this endpoint's HTTP URL policy; the upload owner additionally
15921
+ // forbids credentials. Sharing its field shape must not tighten ours.
15916
15922
  mediaUrl: HttpUrl2.optional(),
15917
- mediaAssetId: z61.string().uuid().optional(),
15918
- thumbnailUrl: HttpUrl2.optional(),
15919
- thumbnailAssetId: z61.string().uuid().optional(),
15920
- creativeId: z61.string().min(1).optional()
15923
+ thumbnailUrl: HttpUrl2.optional()
15921
15924
  })).min(1).max(CAMPAIGN_LIMITS.MAX_CREATIVES),
15922
- adAccountId: MetaAdAccountId,
15923
- portfolioId: z61.string().min(1).optional(),
15924
- pageId: z61.string().min(1).optional(),
15925
- pixelId: z61.string().optional(),
15926
- /** Required unless campaignConfig.destination is 'whatsapp' (see superRefine below). */
15927
15925
  landingUrl: HttpUrl2.optional(),
15928
- /** Target country for ad targeting (ISO 3166-1 alpha-2 code or resolvable name) */
15929
- targetCountry: CountryIso2Schema.default("US"),
15930
- /** Custom campaign name */
15931
- campaignName: z61.string().min(1).max(100).optional(),
15932
15926
  campaignConfig: MetaCampaignConfig.optional()
15933
15927
  }).superRefine((value, ctx) => {
15934
15928
  const isWhatsapp = value.campaignConfig?.destination?.type === "whatsapp";
@@ -15941,30 +15935,7 @@ var FacebookCreateCampaignFromCreativesBodySchema = z61.object({
15941
15935
  message: "landingUrl is required unless destination is whatsapp"
15942
15936
  });
15943
15937
  }
15944
- value.creatives.forEach((creative, index) => {
15945
- if (Boolean(creative.mediaUrl) === Boolean(creative.mediaAssetId)) {
15946
- ctx.addIssue({
15947
- code: z61.ZodIssueCode.custom,
15948
- path: [
15949
- "creatives",
15950
- index,
15951
- "mediaUrl"
15952
- ],
15953
- message: "Provide exactly one of mediaUrl or mediaAssetId"
15954
- });
15955
- }
15956
- if (creative.thumbnailUrl && creative.thumbnailAssetId) {
15957
- ctx.addIssue({
15958
- code: z61.ZodIssueCode.custom,
15959
- path: [
15960
- "creatives",
15961
- index,
15962
- "thumbnailUrl"
15963
- ],
15964
- message: "Provide at most one of thumbnailUrl or thumbnailAssetId"
15965
- });
15966
- }
15967
- });
15938
+ refineMetaCreativeSources(value, ctx);
15968
15939
  if (value.campaignConfig?.destination?.type === "landing" && value.landingUrl && value.campaignConfig.destination.landingUrl !== value.landingUrl) {
15969
15940
  ctx.addIssue({
15970
15941
  code: z61.ZodIssueCode.custom,
@@ -16043,9 +16014,9 @@ var FacebookTaskCreativeSourceSchema = z61.object({
16043
16014
  var FacebookMediaCreativeSourceSchema = z61.object({
16044
16015
  type: z61.literal("media"),
16045
16016
  mediaUrl: HttpUrl2.optional(),
16046
- mediaAssetId: z61.string().uuid().optional(),
16017
+ mediaAssetId: z61.string().guid().optional(),
16047
16018
  thumbnailUrl: HttpUrl2.optional(),
16048
- thumbnailAssetId: z61.string().uuid().optional()
16019
+ thumbnailAssetId: z61.string().guid().optional()
16049
16020
  });
16050
16021
  var FacebookCreativeSourceSchema = z61.discriminatedUnion("type", [
16051
16022
  FacebookTaskCreativeSourceSchema,
@@ -16068,15 +16039,15 @@ var FacebookCreateCampaignFromTasksBodySchema = z61.object({
16068
16039
  pageId: z61.string().min(1),
16069
16040
  pixelId: z61.string().optional(),
16070
16041
  /**
16071
- * Omitted: a campaign with task creatives lands on the published service
16072
- * landing of its service tasks (resolved server side, META_NO_LANDING_URL
16073
- * when there is none); a media-only campaign must name it.
16074
- */
16042
+ * Omitted: a campaign with task creatives lands on the published service
16043
+ * landing of its service tasks (resolved server side, META_NO_LANDING_URL
16044
+ * when there is none); a media-only campaign must name it.
16045
+ */
16075
16046
  landingUrl: HttpUrl2.optional(),
16076
16047
  /**
16077
- * Omitted: the brand country of its service tasks; a product-only campaign
16078
- * keeps "US". Never a hardcoded country for a service (META_NO_TARGET_COUNTRY).
16079
- */
16048
+ * Omitted: the brand country of its service tasks; a product-only campaign
16049
+ * keeps "US". Never a hardcoded country for a service (META_NO_TARGET_COUNTRY).
16050
+ */
16080
16051
  targetCountry: CountryIso2Schema.optional(),
16081
16052
  campaignName: z61.string().min(1).max(100),
16082
16053
  campaignConfig: MetaCampaignConfig.optional()
@@ -16637,7 +16608,7 @@ var VideoSpeechAssetSchema = z64.object({
16637
16608
  var VoiceProgressSchema = z64.discriminatedUnion("status", [
16638
16609
  z64.object({
16639
16610
  status: z64.literal("ready"),
16640
- value: z64.unknown()
16611
+ value: z64.unknown().optional()
16641
16612
  }).strict(),
16642
16613
  z64.object({
16643
16614
  status: z64.literal("waiting"),
@@ -17187,7 +17158,7 @@ var MixSceneResult = z67.object({
17187
17158
  degradedReason: MixDegradationReasonSchema.optional()
17188
17159
  });
17189
17160
  var MixResult = z67.object({
17190
- mixTaskId: z67.string().uuid(),
17161
+ mixTaskId: z67.string().guid(),
17191
17162
  status: z67.enum([
17192
17163
  "queued",
17193
17164
  "processing",
@@ -17230,7 +17201,7 @@ var PreparedImagePreviewUrlSchema = z68.string().url().max(2048).refine((value)
17230
17201
  return protocol === "https:" || protocol === "http:";
17231
17202
  }, "Prepared image preview URLs must use HTTP(S)");
17232
17203
  var WinningProductPreparedImageSchema = z68.object({
17233
- assetId: z68.string().uuid(),
17204
+ assetId: z68.string().guid(),
17234
17205
  previewUrl: PreparedImagePreviewUrlSchema,
17235
17206
  productName: z68.string().trim().min(1).max(240),
17236
17207
  presentation: MediaPresentationImageSchema
@@ -17529,14 +17500,16 @@ var LandingOperationStepSelectionSchema = CodeLandingStepSelectionSchema.extend(
17529
17500
  var LandingOperationReceiptStepSchema = LandingOperationStepSelectionSchema.extend({
17530
17501
  receipt: CodeLandingEffectiveReceiptSchema.optional()
17531
17502
  });
17532
- var LandingOperationEnvelopeNodeSchema = CodeLandingEnvelopeNodeSchema.innerType().extend({
17503
+ var LandingOperationEnvelopeNodeSchema = z73.object(CodeLandingEnvelopeNodeSchema.shape).strict().extend({
17533
17504
  phase: LandingOperationStepPhaseSchema
17534
17505
  }).superRefine((node, ctx) => {
17535
17506
  const legacy = CodeLandingEnvelopeNodeSchema.safeParse({
17536
17507
  ...node,
17537
17508
  phase: "asset"
17538
17509
  });
17539
- if (!legacy.success) for (const issue of legacy.error.issues) ctx.addIssue(issue);
17510
+ if (!legacy.success) for (const issue of legacy.error.issues) ctx.addIssue({
17511
+ ...issue
17512
+ });
17540
17513
  });
17541
17514
  var LandingGifGenerationPolicySchema = z73.discriminatedUnion("model", [
17542
17515
  z73.object({
@@ -17923,7 +17896,7 @@ var LandingRegenerationStatusResponse = z75.object({
17923
17896
  });
17924
17897
 
17925
17898
  // ../../packages/types/src/shopify-meta-tracking.ts
17926
- import { z as z76 } from "zod";
17899
+ import * as z76 from "zod";
17927
17900
  var MetaTrackingOwnerSchema = z76.enum([
17928
17901
  "auto",
17929
17902
  "external",
@@ -18131,7 +18104,7 @@ var UploadedAssetRole = z78.enum([
18131
18104
  ]);
18132
18105
  var UPLOADED_ASSET_MAX_FILES = 10;
18133
18106
  var UPLOADED_ASSET_IMAGE_MAX_FILES = 5;
18134
- var UploadedAssetId = z78.string().uuid();
18107
+ var UploadedAssetId = z78.string().guid();
18135
18108
  var HttpsUrl = z78.string().url().refine((value) => {
18136
18109
  try {
18137
18110
  const url2 = new URL(value);
@@ -18272,7 +18245,7 @@ var DropshippingProjectRewardMilestoneStateSchema = z79.object({
18272
18245
  credits: z79.number().int().positive(),
18273
18246
  available: z79.boolean().optional(),
18274
18247
  earned: z79.boolean(),
18275
- grantId: z79.string().uuid().nullable(),
18248
+ grantId: z79.string().guid().nullable(),
18276
18249
  grantedAt: z79.string().datetime().nullable()
18277
18250
  });
18278
18251
  var DropshippingProjectRewardProgressSchema = z79.object({
@@ -18338,16 +18311,16 @@ var HttpUrlSchema = z79.string().url().max(2e3).refine((value) => {
18338
18311
  }, "Product URL must use HTTP(S)");
18339
18312
  var ResearchCandidateOriginSchema = z79.object({
18340
18313
  type: z79.literal("research_candidate"),
18341
- runId: z79.string().uuid(),
18314
+ runId: z79.string().guid(),
18342
18315
  candidateSourceId: z79.string().min(1).max(160)
18343
18316
  });
18344
18317
  var TaskOriginSchema = z79.object({
18345
18318
  type: z79.literal("task"),
18346
- taskId: z79.string().uuid()
18319
+ taskId: z79.string().guid()
18347
18320
  });
18348
18321
  var ManualOriginSchema = z79.object({
18349
18322
  type: z79.literal("manual"),
18350
- clientRequestId: z79.string().uuid(),
18323
+ clientRequestId: z79.string().guid(),
18351
18324
  country: z79.string().min(2).max(3).optional()
18352
18325
  });
18353
18326
  var CreateDropshippingProjectRequestSchema = z79.object({
@@ -18420,11 +18393,11 @@ var DropshippingProjectNextActionSchema = z79.discriminatedUnion("kind", [
18420
18393
  })
18421
18394
  ]);
18422
18395
  var DropshippingProjectResponseSchema = z79.object({
18423
- id: z79.string().uuid(),
18424
- taskId: z79.string().uuid().nullable(),
18396
+ id: z79.string().guid(),
18397
+ taskId: z79.string().guid().nullable(),
18425
18398
  status: DropshippingProjectStatusSchema,
18426
18399
  originKey: z79.string().min(1),
18427
- researchRunId: z79.string().uuid().nullable(),
18400
+ researchRunId: z79.string().guid().nullable(),
18428
18401
  candidateSourceId: z79.string().nullable(),
18429
18402
  productName: z79.string().nullable(),
18430
18403
  productUrl: HttpUrlSchema.nullable(),
@@ -18779,7 +18752,7 @@ var mediaVideoFields = {
18779
18752
  var mediaImageFields = {
18780
18753
  kind: z81.literal("image"),
18781
18754
  durationSec: z81.never({
18782
- invalid_type_error: "a photo has no duration"
18755
+ error: "a photo has no duration"
18783
18756
  }).optional()
18784
18757
  };
18785
18758
  var mediaOriginFields = {
@@ -19024,7 +18997,7 @@ var LegacyMotionGraphicsClipSpecSchema = z84.discriminatedUnion("kind", [
19024
18997
  ...clipSpecFields,
19025
18998
  kind: z84.literal("broll"),
19026
18999
  speech: z84.never({
19027
- invalid_type_error: "only a speaking clip carries speech"
19000
+ error: "only a speaking clip carries speech"
19028
19001
  }).optional()
19029
19002
  }).strict(),
19030
19003
  z84.object({
@@ -19597,8 +19570,8 @@ var MotionGraphicsCreativeBatchSchema = z89.object({
19597
19570
  version: z89.literal("v1"),
19598
19571
  count: MotionGraphicsHookVariantsSchema,
19599
19572
  index: MotionGraphicsHookVariantsSchema,
19600
- rootTaskId: z89.string().uuid().optional(),
19601
- taskIds: z89.array(z89.string().uuid()).min(1).max(3).optional(),
19573
+ rootTaskId: z89.string().guid().optional(),
19574
+ taskIds: z89.array(z89.string().guid()).min(1).max(3).optional(),
19602
19575
  plans: MotionGraphicsCreativePlansSchema.optional()
19603
19576
  }).strict().superRefine((batch, ctx) => {
19604
19577
  if (batch.index > batch.count) ctx.addIssue({
@@ -19694,7 +19667,7 @@ var MotionGraphicsMusicStatusResponseSchema = z90.discriminatedUnion("status", [
19694
19667
  // ../../packages/types/src/website-capture-artifact.ts
19695
19668
  import { z as z91 } from "zod";
19696
19669
  var WebsiteCaptureBindingSchema = z91.object({
19697
- captureId: z91.string().uuid(),
19670
+ captureId: z91.string().guid(),
19698
19671
  bundleKey: z91.string().min(1),
19699
19672
  sha256: z91.string().regex(/^[a-f0-9]{64}$/)
19700
19673
  });
@@ -19838,7 +19811,7 @@ var motionGraphicsStateSchema = z93.object({
19838
19811
  /** Durable, unpaid Generate intent. Removed only after capture admission and payment. */
19839
19812
  captureAdmission: z93.object({
19840
19813
  version: z93.literal("v1"),
19841
- captureId: z93.string().uuid().optional(),
19814
+ captureId: z93.string().guid().optional(),
19842
19815
  maxSocialAcquisitionPriceCents: z93.number().finite().nonnegative(),
19843
19816
  maxTotalPriceCents: z93.number().finite().nonnegative(),
19844
19817
  deadlineAt: z93.string().datetime(),
@@ -21802,7 +21775,7 @@ var DailyControlProductFactsSchema = z96.object({
21802
21775
  currency: z96.string()
21803
21776
  });
21804
21777
  var DailyControlProductSchema = z96.object({
21805
- projectId: z96.string().uuid(),
21778
+ projectId: z96.string().guid(),
21806
21779
  productName: z96.string().nullable(),
21807
21780
  status: DailyControlStatusSchema,
21808
21781
  /** Motivo legible cuando status !== 'ok'. Nunca se rellenan métricas en ese caso. */
@@ -21847,7 +21820,7 @@ var DailyControlQuerySchema = z96.object({
21847
21820
  * necesita ese producto; sin este filtro cada carga de página lee el gasto
21848
21821
  * de TODOS los proyectos activos del usuario contra Meta/TikTok/Shopify.
21849
21822
  */
21850
- projectId: z96.string().uuid().optional()
21823
+ projectId: z96.string().guid().optional()
21851
21824
  });
21852
21825
  var LinkableCampaignSchema = z96.object({
21853
21826
  provider: z96.enum([
@@ -22056,7 +22029,7 @@ var CreateFinanceOperationSchema = z97.object({
22056
22029
  label: z97.string().trim().min(1).max(60).optional()
22057
22030
  }).strict();
22058
22031
  var FinanceOperationSchema = z97.object({
22059
- id: z97.string().uuid(),
22032
+ id: z97.string().guid(),
22060
22033
  countryCode: z97.string().length(2),
22061
22034
  currency: z97.string().min(3).max(3),
22062
22035
  label: z97.string().min(1)
@@ -22065,7 +22038,7 @@ var MonthlyPLQuerySchema = z97.object({
22065
22038
  /** Opcional a propósito: con UNA sola operación —el caso de casi todo el
22066
22039
  * mundo— el servidor la resuelve solo. Con varias devuelve cuáles son,
22067
22040
  * para poder preguntar por país en vez de fallar. */
22068
- operationId: z97.string().uuid().optional(),
22041
+ operationId: z97.string().guid().optional(),
22069
22042
  /** YYYY-MM. Solo mes calendario: es el periodo con el que se piensa un
22070
22043
  * negocio, y prorratear gastos fijos sobre un rango libre confunde más de
22071
22044
  * lo que ayuda. */
@@ -22074,7 +22047,7 @@ var MonthlyPLQuerySchema = z97.object({
22074
22047
  var RESERVED_EXPENSE_LABEL_PREFIX = "__ad_spend__";
22075
22048
  var isReservedExpenseLabel = /* @__PURE__ */ __name((label) => label.trim().startsWith(RESERVED_EXPENSE_LABEL_PREFIX), "isReservedExpenseLabel");
22076
22049
  var SaveMonthlyExpenseSchema = z97.object({
22077
- operationId: z97.string().uuid().optional(),
22050
+ operationId: z97.string().guid().optional(),
22078
22051
  month: z97.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/).optional(),
22079
22052
  label: z97.string().trim().min(1).max(80).refine((label) => !isReservedExpenseLabel(label), {
22080
22053
  message: "reserved_expense_label"
@@ -22082,7 +22055,7 @@ var SaveMonthlyExpenseSchema = z97.object({
22082
22055
  /** Unidades mayores de la moneda; conserva decimales donde aplique. */
22083
22056
  amount: z97.number().finite().min(0),
22084
22057
  allocations: z97.array(z97.object({
22085
- operationId: z97.string().uuid(),
22058
+ operationId: z97.string().guid(),
22086
22059
  sharePct: z97.number().int().min(1).max(100)
22087
22060
  })).min(1).refine((allocations) => allocations.reduce((sum, one) => sum + one.sharePct, 0) <= 100, {
22088
22061
  message: "allocations_must_sum_to_100"
@@ -22091,7 +22064,7 @@ var SaveMonthlyExpenseSchema = z97.object({
22091
22064
  }).optional()
22092
22065
  }).strict();
22093
22066
  var DeleteMonthlyExpenseSchema = z97.object({
22094
- operationId: z97.string().uuid().optional(),
22067
+ operationId: z97.string().guid().optional(),
22095
22068
  month: z97.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/),
22096
22069
  label: z97.string().trim().min(1).max(80).refine((label) => !isReservedExpenseLabel(label), {
22097
22070
  message: "reserved_expense_label"
@@ -22099,11 +22072,11 @@ var DeleteMonthlyExpenseSchema = z97.object({
22099
22072
  }).strict();
22100
22073
  var SetAdSpendSchema = z97.object({
22101
22074
  month: z97.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/).optional(),
22102
- operationId: z97.string().uuid().optional(),
22075
+ operationId: z97.string().guid().optional(),
22103
22076
  amount: z97.number().finite().min(0).nullable()
22104
22077
  }).strict();
22105
22078
  var MonthlyExpensesQuerySchema = z97.object({
22106
- operationId: z97.string().uuid().optional(),
22079
+ operationId: z97.string().guid().optional(),
22107
22080
  month: z97.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/).optional()
22108
22081
  }).strict();
22109
22082
 
@@ -22132,13 +22105,13 @@ var ResolveUnmatchedProductSchema = z98.object({
22132
22105
  provider: z98.enum(PRODUCT_ALIAS_PROVIDERS),
22133
22106
  externalId: z98.string().trim().min(1).max(64),
22134
22107
  label: z98.string().trim().min(1).max(PRODUCT_ALIAS_LABEL_MAX_LENGTH),
22135
- operationId: z98.string().uuid(),
22108
+ operationId: z98.string().guid(),
22136
22109
  /** Presente ⇒ es el producto al que pertenece. Ausente ⇒ es uno nuevo. */
22137
- productControlId: z98.string().uuid().optional()
22110
+ productControlId: z98.string().guid().optional()
22138
22111
  }).strict();
22139
22112
  var MergeProductsSchema = z98.object({
22140
- sourceId: z98.string().uuid(),
22141
- targetId: z98.string().uuid()
22113
+ sourceId: z98.string().guid(),
22114
+ targetId: z98.string().guid()
22142
22115
  }).strict().refine((value) => value.sourceId !== value.targetId, {
22143
22116
  message: "merge_same_product",
22144
22117
  path: [
@@ -22146,8 +22119,8 @@ var MergeProductsSchema = z98.object({
22146
22119
  ]
22147
22120
  });
22148
22121
  var CreateProductControlFromTaskSchema = z98.object({
22149
- taskId: z98.string().uuid(),
22150
- operationId: z98.string().uuid().optional()
22122
+ taskId: z98.string().guid(),
22123
+ operationId: z98.string().guid().optional()
22151
22124
  }).strict();
22152
22125
 
22153
22126
  // ../../packages/types/src/product-order-line.ts
@@ -22195,7 +22168,7 @@ var ProductOrderLineSchema = z99.object({
22195
22168
  }).strict();
22196
22169
  var ORDER_LINES_BATCH_MAX = 5e3;
22197
22170
  var ImportOrderLinesSchema = z99.object({
22198
- operationId: z99.string().uuid(),
22171
+ operationId: z99.string().guid(),
22199
22172
  provider: z99.string().min(1).max(32),
22200
22173
  source: z99.string().min(1).max(32),
22201
22174
  reportedAt: z99.string().datetime(),
@@ -22221,7 +22194,7 @@ var ImportOrderLinesFileSchema = z99.object({
22221
22194
  /** El archivo en base64. `.xlsx` del proveedor. */
22222
22195
  fileBase64: z99.string().min(1).max(Math.ceil(8 * 1024 * 1024 / 3) * 4),
22223
22196
  filename: z99.string().min(1).max(200),
22224
- operationId: z99.string().uuid().optional(),
22197
+ operationId: z99.string().guid().optional(),
22225
22198
  provider: z99.string().min(1).max(32).default("dropi"),
22226
22199
  /**
22227
22200
  * Solo mirar: devuelve el resumen y NO escribe nada.
@@ -22255,7 +22228,7 @@ var OrderLinesFileSummarySchema = z99.object({
22255
22228
  });
22256
22229
  var SyncShopifyOrdersSchema = z99.object({
22257
22230
  shopDomain: z99.string().min(3).max(120).optional(),
22258
- operationId: z99.string().uuid().optional(),
22231
+ operationId: z99.string().guid().optional(),
22259
22232
  /** YYYY-MM-DD. Sin rango, el mes en curso. */
22260
22233
  since: z99.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional(),
22261
22234
  until: z99.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional()
@@ -22456,7 +22429,7 @@ var SaveProductControlCostingSchema = z100.object({
22456
22429
  /** El de Shopify, cuando el producto vive en la tienda. */
22457
22430
  shopifyProductId: z100.string().min(1).optional(),
22458
22431
  /** El NUESTRO, para el producto que nació del archivo del proveedor. */
22459
- productControlId: z100.string().uuid().optional(),
22432
+ productControlId: z100.string().guid().optional(),
22460
22433
  /** Su precio de venta, solo si el producto no vive en Shopify. */
22461
22434
  manualSellingPrice: z100.number().positive().nullable().optional(),
22462
22435
  targetCountry: z100.string().min(2).max(2),
@@ -22496,7 +22469,7 @@ var SaveProductControlCostingSchema = z100.object({
22496
22469
  });
22497
22470
  var SaveProductCatalogSchema = z100.object({
22498
22471
  shopDomain: z100.string().min(1).optional(),
22499
- productControlId: z100.string().uuid(),
22472
+ productControlId: z100.string().guid(),
22500
22473
  /** Nulo BORRA la meta. Cero sería una meta de no ganar nada. */
22501
22474
  targetMonthlyProfit: z100.number().finite().positive().nullable().optional(),
22502
22475
  lifecycleStatus: z100.enum([
@@ -22519,7 +22492,7 @@ var ProductControlCampaignFieldsSchema = z100.object({
22519
22492
  }).strict();
22520
22493
  var LinkProductControlCampaignSchema = z100.union([
22521
22494
  ProductControlCampaignFieldsSchema.extend({
22522
- productControlId: z100.string().uuid()
22495
+ productControlId: z100.string().guid()
22523
22496
  }).strict(),
22524
22497
  ProductControlCampaignFieldsSchema.extend({
22525
22498
  shopDomain: z100.string().min(1),
@@ -22666,7 +22639,7 @@ var ImportFulfillmentCountsResponseSchema = z100.object({
22666
22639
  });
22667
22640
  var CreateManualProductControlSchema = z100.object({
22668
22641
  /** UUID que el diálogo fija por apertura; es además el id del producto. */
22669
- requestId: z100.string().uuid(),
22642
+ requestId: z100.string().guid(),
22670
22643
  title: z100.string().trim().min(1).max(200),
22671
22644
  /** País donde vende este producto; la moneda sale de él en el servidor. */
22672
22645
  targetCountry: z100.string().regex(/^[A-Z]{2}$/).refine((code) => {
@@ -22678,7 +22651,7 @@ var CreateManualProductControlSchema = z100.object({
22678
22651
  }
22679
22652
  }, "unsupported_finance_country"),
22680
22653
  /** Solo cuando coincide con el país elegido; si no, se omite. */
22681
- operationId: z100.string().uuid().optional(),
22654
+ operationId: z100.string().guid().optional(),
22682
22655
  manualSellingPrice: z100.number().finite().positive().max(Number.MAX_SAFE_INTEGER),
22683
22656
  supplierCost: z100.number().finite().positive().max(Number.MAX_SAFE_INTEGER),
22684
22657
  shippingCost: z100.number().finite().nonnegative().max(Number.MAX_SAFE_INTEGER),
@@ -22696,7 +22669,7 @@ var CreateManualProductControlSchema = z100.object({
22696
22669
  }
22697
22670
  });
22698
22671
  var CreateManualProductControlResponseSchema = z100.object({
22699
- productControlId: z100.string().uuid(),
22672
+ productControlId: z100.string().guid(),
22700
22673
  created: z100.boolean()
22701
22674
  });
22702
22675
 
@@ -22787,7 +22760,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
22787
22760
  "approve_video_script",
22788
22761
  // 2026-10-14: optional exact plan binding shared by legacy/unified review.
22789
22762
  // Hash captured from the real registered schema in apps/mcp/src/server.test.ts.
22790
- "242c9ce8db5e19c065d67d2e3f3cf9fca20e119b9485bcf854a2233832523b0b",
22763
+ "5f7722993798d952d4a920a9bc7929a8c6a54f8ca13bff1b824d555dd680a6d2",
22791
22764
  "credit_consuming",
22792
22765
  "creative",
22793
22766
  [
@@ -22829,7 +22802,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
22829
22802
  ], [
22830
22803
  "staging_asset"
22831
22804
  ], WHATSAPP_ONLY_CHANNEL_EXPOSURE),
22832
- defineCapability("check_media_upload", "daf202e0ff3a7a14425d164a7be6a81922b12233e85dbb898894e7c3ba6c5876", "none", "read_only", [
22805
+ defineCapability("check_media_upload", "58acbc7574d140389efbddfd45e660a353429681891b3d85a08b74351bb5acab", "none", "read_only", [
22833
22806
  "read"
22834
22807
  ], [
22835
22808
  slot("upload_session", true, [
@@ -22840,7 +22813,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
22840
22813
  ], [
22841
22814
  "uploaded_asset"
22842
22815
  ], MCP_ONLY_CHANNEL_EXPOSURE),
22843
- defineCapability("cost_dropshipping_project", "411c0e362f132e564d5f948f8d87e3ae55f03dad7d02d8224b949b899a187359", "state_change", "business", [
22816
+ defineCapability("cost_dropshipping_project", "fead3bca76b7531c52020cd64135072593783fe12c0c605865a08f1d7d028001", "state_change", "business", [
22844
22817
  "state_change"
22845
22818
  ], [
22846
22819
  slot("project_revision", true, [
@@ -22877,7 +22850,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
22877
22850
  ], [
22878
22851
  "project_costing"
22879
22852
  ]),
22880
- defineCapability("cost_product", "6d1f85a999dbdabae4eda406ff4689cdff2016df375b5b6741b91f4308d819af", "none", "read_only", [
22853
+ defineCapability("cost_product", "2272a6a3375401ced9deba82e41796b037aef20d712bc7996221e7fee0d7a4d7", "none", "read_only", [
22881
22854
  "read"
22882
22855
  ], [
22883
22856
  slot("product_reference", false, [], [
@@ -22921,7 +22894,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
22921
22894
  // MCP 8.6.0: + storyteller narrative family and animationStyle axis.
22922
22895
  // MCP 8.10.0: storyteller family blocked (BLOCKED_NARRATIVE_STYLES).
22923
22896
  // MCP 9.1.0: combine current animated-video controls and initial GIF choice.
22924
- "3e02399a7785df328f1c4d63cfbb6d7481abaac9f91d4a5cf51d410e657d63aa",
22897
+ "5991b2e897aad7b10c4e38a93e8c58234741498393439cf0228ed9ffd966efef",
22925
22898
  "credit_consuming",
22926
22899
  "creative",
22927
22900
  [
@@ -22978,7 +22951,8 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
22978
22951
  // MCP 8.6.0: + storyteller narrative family and animationStyle axis.
22979
22952
  // MCP 8.10.0: storyteller family blocked (BLOCKED_NARRATIVE_STYLES).
22980
22953
  // MCP 9.1.0: combine current animated-video controls and initial GIF choice.
22981
- "b44e4945c1d3d63d06ecf46295a6ac273df20e059edcf72bfb8f88149f28e12a",
22954
+ // MCP 12.4.0: landingStrategy narrowed to classic + social_proof.
22955
+ "5a6dd48977702dbb92a315fb668054f13918fd1cfae5056de82e94144e6f5804",
22982
22956
  "credit_consuming",
22983
22957
  "creative",
22984
22958
  [
@@ -23138,7 +23112,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23138
23112
  // SHARED_CHANNEL_EXPOSURE to restore it.
23139
23113
  WHATSAPP_ONLY_CHANNEL_EXPOSURE
23140
23114
  ),
23141
- defineCapability("edit_image_creative", "50eca473829328dfb63b9cbae03a9835b79c510e29528563e09b7eb3e5e9bca4", "credit_consuming", "creative", [
23115
+ defineCapability("edit_image_creative", "eb487773c4a9ffd5d4472c5a1d77e0fef7b625dbf9ca15b5da700a903ba30945", "credit_consuming", "creative", [
23142
23116
  "credit_consuming",
23143
23117
  "state_change"
23144
23118
  ], [
@@ -23157,7 +23131,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23157
23131
  ], [
23158
23132
  "creative"
23159
23133
  ]),
23160
- defineCapability("get_image_edit_status", "fe59aefd433afe7e5a2d8b4a81084583750c1447c877b6bce698340326665141", "none", "read_only", [
23134
+ defineCapability("get_image_edit_status", "3feb680140ab8459c10c22fb3aba3a7d41e147fddfcdd7e4cdac050c0f7ea34e", "none", "read_only", [
23161
23135
  "read"
23162
23136
  ], [
23163
23137
  slot("creative_operation", true, [
@@ -23169,7 +23143,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23169
23143
  ], [
23170
23144
  "creative_edit_status"
23171
23145
  ], MCP_ONLY_CHANNEL_EXPOSURE),
23172
- defineCapability("edit_task_draft", "1c9343bdce51aac36ec6254557c8a904037746523168527f012b4c5b6361e98e", "state_change", "creative", [
23146
+ defineCapability("edit_task_draft", "6df71b63f0c00ba9eac12f31fb0b71610225ece74df85032025bb77197bb7c22", "state_change", "creative", [
23173
23147
  "state_change"
23174
23148
  ], [
23175
23149
  slot("task_angle", true, [
@@ -23184,7 +23158,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23184
23158
  ], [
23185
23159
  "task_draft"
23186
23160
  ]),
23187
- defineCapability("estimate_creative_variant", "d4453364c0706bf88f480cebc977916f06d222d7eebebc9cfa91165929a1a998", "none", "read_only", [
23161
+ defineCapability("estimate_creative_variant", "468079ba24e5e0d3c5c707cd54fec64571be429e66cadc12019af4d6e9d10c4e", "none", "read_only", [
23188
23162
  "read"
23189
23163
  ], [
23190
23164
  slot("source_task", true, [
@@ -23206,7 +23180,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23206
23180
  ], [
23207
23181
  "cost_estimate"
23208
23182
  ]),
23209
- defineCapability("estimate_market_study_cost", "d89b2ddfd5020446d7d2b58001b75eedb8f737bc17d908bdbdde1a1c9120f387", "none", "read_only", [
23183
+ defineCapability("estimate_market_study_cost", "d1fbe8ead642d481258c419a1eed059f9c8188d1cd9f2d4eed12e202fc8800a4", "none", "read_only", [
23210
23184
  "read"
23211
23185
  ], [
23212
23186
  slot("creative_kind", true, [
@@ -23231,7 +23205,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23231
23205
  ], [
23232
23206
  "cost_estimate"
23233
23207
  ], MCP_ONLY_CHANNEL_EXPOSURE),
23234
- defineCapability("find_winning_products", "7c4c4fd675f8c1ae9795bd6c7a379207a08cbf9ac5794593b76122294c31e818", "credit_consuming", "business", [
23208
+ defineCapability("find_winning_products", "b73a18bb9618b96067b17791bf2f8e7450e17e34881c4f997e117be89abe058d", "credit_consuming", "business", [
23235
23209
  "credit_consuming",
23236
23210
  "state_change"
23237
23211
  ], [
@@ -23259,7 +23233,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23259
23233
  // from `pnpm --filter @productmaker/mcp test` printing the real digest.
23260
23234
  // Re-baselined 2026-09-26: `idempotencyKey` field description corrected —
23261
23235
  // paid tools ignore caller-provided keys and derive their own semantic key.
23262
- "0e21a9ae925347de20cad321161cb3af0f6a4f9e342c5c7139baf8de70056734",
23236
+ "e9ae8370da117bae121714da12b78f234e07a0805093bce354d7fb9fcec2291e",
23263
23237
  "credit_consuming",
23264
23238
  "creative",
23265
23239
  [
@@ -23318,7 +23292,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23318
23292
  "video"
23319
23293
  ]
23320
23294
  ),
23321
- defineCapability("generate_image_creatives", "2f1698b623d98645b7c618a17988f3aac30f403a9c3f3dc26eb5bdbd9c6ef23e", "credit_consuming", "creative", [
23295
+ defineCapability("generate_image_creatives", "f0d1f771d83c50070ebdef6554072e984997336cb9b7f7f06acd818b021a0187", "credit_consuming", "creative", [
23322
23296
  "credit_consuming",
23323
23297
  "state_change"
23324
23298
  ], [
@@ -23421,111 +23395,123 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23421
23395
  ]
23422
23396
  }
23423
23397
  ]),
23424
- defineCapability("generate_landing", "14c537cf4ccaf25277f896aa58c64aef06ef4e6cba2ae8029437a732f8df71db", "credit_consuming", "creative", [
23398
+ defineCapability(
23399
+ "generate_landing",
23400
+ // MCP 12.4.0: guided landingStrategy narrowed to classic + social_proof.
23401
+ "6db8df9db5410d0abe0f44da7027af4cc40aff37ef6e66e82164edbd889eeb63",
23425
23402
  "credit_consuming",
23426
- "state_change"
23427
- ], [
23428
- slot("product_reference", true, [
23429
- "images",
23430
- "winnerReference"
23431
- ], [
23432
- "imageMessageIds",
23433
- "imageAssetIds",
23434
- "projectId",
23435
- "productUrl"
23436
- ]),
23437
- slot("locale", true, [
23438
- "language",
23439
- "country"
23440
- ]),
23441
- slot("initial_landing_gif", false, [
23442
- "includeInitialLandingGif"
23443
- ], []),
23444
- slot("sales_context", false, [
23445
- "salesAngle",
23446
- "buyerPersona"
23447
- ]),
23448
- slot("commercial_offer", false, [
23449
- "price",
23450
- "compareAtPrice",
23451
- "offer"
23452
- ], [
23453
- "price",
23454
- "offer",
23455
- "compareAtPrice",
23456
- "paymentMethods"
23457
- ]),
23458
- slot("product_context", false, [
23459
- "productLabel",
23460
- "isCombo"
23461
- ], [
23462
- "productContext",
23463
- "productLabel",
23464
- "isCombo"
23465
- ]),
23466
- slot("brand_direction", false, [
23467
- "brandId"
23468
- ], [
23469
- "brandId",
23470
- "creativeDirection",
23471
- "headline",
23472
- "subheadline"
23473
- ]),
23474
- slot(
23475
- "landing_options",
23476
- // Required by the direct MCP schema, optional for the WhatsApp adapter.
23477
- false,
23478
- [
23479
- "creativeSetup"
23480
- ],
23481
- [
23482
- "competitorScanEnabled",
23483
- "landingStrategy",
23484
- "landingImageFormat",
23485
- "pauseForAngleReview"
23486
- ]
23487
- )
23488
- ], [
23489
- "product_reference"
23490
- ], [
23491
- "task",
23492
- "product",
23493
- "landing"
23494
- ], SHARED_CHANNEL_EXPOSURE, [
23495
- {
23496
- slot: "product_reference",
23497
- askBeforePaidExecution: true,
23498
- explicitOmissionAllowed: false,
23499
- fieldCompletion: "any"
23500
- },
23501
- {
23502
- slot: "locale",
23503
- askBeforePaidExecution: true,
23504
- explicitOmissionAllowed: false,
23505
- fieldCompletion: "all"
23506
- },
23507
- {
23508
- slot: "sales_context",
23509
- askBeforePaidExecution: true,
23510
- explicitOmissionAllowed: true,
23511
- fieldCompletion: "any",
23512
- completionFields: [
23513
- "salesAngle"
23514
- ]
23515
- },
23516
- {
23517
- slot: "commercial_offer",
23518
- askBeforePaidExecution: true,
23519
- explicitOmissionAllowed: true,
23520
- fieldCompletion: "all"
23521
- }
23522
- ]),
23403
+ "creative",
23404
+ [
23405
+ "credit_consuming",
23406
+ "state_change"
23407
+ ],
23408
+ [
23409
+ slot("product_reference", true, [
23410
+ "images",
23411
+ "winnerReference"
23412
+ ], [
23413
+ "imageMessageIds",
23414
+ "imageAssetIds",
23415
+ "projectId",
23416
+ "productUrl"
23417
+ ]),
23418
+ slot("locale", true, [
23419
+ "language",
23420
+ "country"
23421
+ ]),
23422
+ slot("initial_landing_gif", false, [
23423
+ "includeInitialLandingGif"
23424
+ ], []),
23425
+ slot("sales_context", false, [
23426
+ "salesAngle",
23427
+ "buyerPersona"
23428
+ ]),
23429
+ slot("commercial_offer", false, [
23430
+ "price",
23431
+ "compareAtPrice",
23432
+ "offer"
23433
+ ], [
23434
+ "price",
23435
+ "offer",
23436
+ "compareAtPrice",
23437
+ "paymentMethods"
23438
+ ]),
23439
+ slot("product_context", false, [
23440
+ "productLabel",
23441
+ "isCombo"
23442
+ ], [
23443
+ "productContext",
23444
+ "productLabel",
23445
+ "isCombo"
23446
+ ]),
23447
+ slot("brand_direction", false, [
23448
+ "brandId"
23449
+ ], [
23450
+ "brandId",
23451
+ "creativeDirection",
23452
+ "headline",
23453
+ "subheadline"
23454
+ ]),
23455
+ slot(
23456
+ "landing_options",
23457
+ // Required by the direct MCP schema, optional for the WhatsApp adapter.
23458
+ false,
23459
+ [
23460
+ "creativeSetup"
23461
+ ],
23462
+ [
23463
+ "competitorScanEnabled",
23464
+ "landingStrategy",
23465
+ "landingImageFormat",
23466
+ "pauseForAngleReview"
23467
+ ]
23468
+ )
23469
+ ],
23470
+ [
23471
+ "product_reference"
23472
+ ],
23473
+ [
23474
+ "task",
23475
+ "product",
23476
+ "landing"
23477
+ ],
23478
+ SHARED_CHANNEL_EXPOSURE,
23479
+ [
23480
+ {
23481
+ slot: "product_reference",
23482
+ askBeforePaidExecution: true,
23483
+ explicitOmissionAllowed: false,
23484
+ fieldCompletion: "any"
23485
+ },
23486
+ {
23487
+ slot: "locale",
23488
+ askBeforePaidExecution: true,
23489
+ explicitOmissionAllowed: false,
23490
+ fieldCompletion: "all"
23491
+ },
23492
+ {
23493
+ slot: "sales_context",
23494
+ askBeforePaidExecution: true,
23495
+ explicitOmissionAllowed: true,
23496
+ fieldCompletion: "any",
23497
+ completionFields: [
23498
+ "salesAngle"
23499
+ ]
23500
+ },
23501
+ {
23502
+ slot: "commercial_offer",
23503
+ askBeforePaidExecution: true,
23504
+ explicitOmissionAllowed: true,
23505
+ fieldCompletion: "all"
23506
+ }
23507
+ ]
23508
+ ),
23523
23509
  defineCapability(
23524
23510
  "generate_video_creative",
23525
23511
  // MCP 8.6.0: + storyteller narrative family and animationStyle axis.
23526
23512
  // MCP 8.10.0: storyteller family blocked (BLOCKED_NARRATIVE_STYLES).
23527
23513
  // MCP 9.1.0: combine current animated-video controls and initial GIF choice.
23528
- "f6cb1097e049216da08e1fb130e53e53761c13198cbb76d56e78fbf2e35441c1",
23514
+ "66dee35d59da0e88e72e24c503f3f1dc46c17c1162d98d48705e2bfe552f3f02",
23529
23515
  "credit_consuming",
23530
23516
  "creative",
23531
23517
  [
@@ -23646,7 +23632,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23646
23632
  }
23647
23633
  ]
23648
23634
  ),
23649
- defineCapability("get_meta_campaign_status", "92077241cf4e9d14edefca410e85715cc383b1433081c3461c925f8fc3d6e8ab", "none", "read_only", [
23635
+ defineCapability("get_meta_campaign_status", "a89fa144b69309bffd3d402c63ab6697757c447022d4af2a20d321f084efb274", "none", "read_only", [
23650
23636
  "read"
23651
23637
  ], [
23652
23638
  slot("campaign", true, [
@@ -23657,7 +23643,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23657
23643
  ], [
23658
23644
  "campaign_status"
23659
23645
  ]),
23660
- defineCapability("get_product_research_run", "3d0bfa4409daa4a8126d18787c3dc619dbdf2fbb679a2cffe9ffcd1c0d96402f", "none", "read_only", [
23646
+ defineCapability("get_product_research_run", "fd6d6260b4c9cf9cac5c0d210ceec54f99825d6214f7e3625622e82305e69550", "none", "read_only", [
23661
23647
  "read"
23662
23648
  ], [
23663
23649
  slot("research_run", true, [
@@ -23668,7 +23654,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23668
23654
  ], [
23669
23655
  "product_research_run"
23670
23656
  ]),
23671
- defineCapability("get_task_status", "6876d865685dd371ae6c2da2d5a69b657731e5a032aff46ac95b6077e9a6d93e", "none", "read_only", [
23657
+ defineCapability("get_task_status", "308241071b3ec785b1f0eba0fc17383e9fe8f2452c6a5a5ef27fd792a99b9d4c", "none", "read_only", [
23672
23658
  "read"
23673
23659
  ], [
23674
23660
  slot("task", true, [
@@ -23682,7 +23668,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23682
23668
  ], [
23683
23669
  "task_status"
23684
23670
  ]),
23685
- defineCapability("get_tiktok_campaign_status", "7a2f90a9a9ba91506fbb57a0a881d5a7b9ca1bb1074b0a754520f02fd81b2801", "none", "read_only", [
23671
+ defineCapability("get_tiktok_campaign_status", "e19b1536d8e317185fb9662a244cc1e94986004b5a4bf84beaf473b5de28562f", "none", "read_only", [
23686
23672
  "read"
23687
23673
  ], [
23688
23674
  slot("campaign", true, [
@@ -23696,7 +23682,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23696
23682
  ], [
23697
23683
  "campaign_status"
23698
23684
  ]),
23699
- defineCapability("get_video_script", "e987ff48555dfdab439f9910fb1fa25af373c78c8a9a5ef26458c82add90f2a2", "none", "read_only", [
23685
+ defineCapability("get_video_script", "1de9980596c34b71ce8843c090549cf310ed52933f53c2b9c3fca13204441d64", "none", "read_only", [
23700
23686
  "read"
23701
23687
  ], [
23702
23688
  slot("task", true, [
@@ -23710,7 +23696,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23710
23696
  ], [
23711
23697
  "video_script"
23712
23698
  ]),
23713
- defineCapability("guide_dropshipping_launch", "0e7a1cb5ad5c6681473df5689336edcd7a63b8d68853359982e44bfd98a65db8", "none", "business", [
23699
+ defineCapability("guide_dropshipping_launch", "1ab3654ed7ef02fbc7b690826a475f27839a3402ca301b8cf26992c11e8f7cf8", "none", "business", [
23714
23700
  "read"
23715
23701
  ], [
23716
23702
  slot("project", false, [
@@ -23732,7 +23718,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23732
23718
  "get_actor_voice_capabilities",
23733
23719
  // Filled by the MCP schema fingerprint test (sha256 of the canonicalized
23734
23720
  // inputSchema) — run apps/mcp server.test.ts to compute.
23735
- "4c31630c2796cbcf250b58f2205c7f5882ac53ad0c9ac7fe929f1b6de78952a5",
23721
+ "862c210dd3c6bf0584ac61deb84617ecb41bf0219098995a1c5b84133af33239",
23736
23722
  "none",
23737
23723
  "read_only",
23738
23724
  [
@@ -23751,7 +23737,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23751
23737
  ],
23752
23738
  MCP_ONLY_CHANNEL_EXPOSURE
23753
23739
  ),
23754
- defineCapability("quote_actor_voice", "5b1deafe387305bc268cd8d58761860b4c02bf10f0c5cd455925f96b40e7b24d", "none", "read_only", [
23740
+ defineCapability("quote_actor_voice", "4d2e9a643abf4cfe5e02789fed36cdfebc9ede6ab4557d0e5be1e4edb46fb836", "none", "read_only", [
23755
23741
  "read"
23756
23742
  ], [
23757
23743
  slot("actor", true, [
@@ -23765,7 +23751,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23765
23751
  ], [
23766
23752
  "actor_voice_quote"
23767
23753
  ], MCP_ONLY_CHANNEL_EXPOSURE),
23768
- defineCapability("generate_actor_voice_preview", "e0c856beacda2344fb0830b5822848c01e82f1b6a7749176e8973c07d5a7c769", "credit_consuming", "creative", [
23754
+ defineCapability("generate_actor_voice_preview", "cb5a0033621df9bc88f4dcea658885eb35a4ebdc6ef88865c3d8afbe3b229548", "credit_consuming", "creative", [
23769
23755
  "credit_consuming",
23770
23756
  "state_change"
23771
23757
  ], [
@@ -23789,7 +23775,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23789
23775
  ], MCP_ONLY_CHANNEL_EXPOSURE),
23790
23776
  defineCapability(
23791
23777
  "get_actor_voice_preview",
23792
- "58cc8667847be5e521534d6a19853782b9d4c65539ede8eaa5dbe7815e10ae3f",
23778
+ "b28f1c7d7e7981ed672509398242b7b7256e2ab44185699e6a0ecd8f39882761",
23793
23779
  "none",
23794
23780
  "creative",
23795
23781
  // Recovery uses the original accepted quote; it must not ask to pay again.
@@ -23814,7 +23800,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23814
23800
  ],
23815
23801
  MCP_ONLY_CHANNEL_EXPOSURE
23816
23802
  ),
23817
- defineCapability("approve_actor_voice", "ae77a93a483b24e9ec79322ac5a7ed39372517c196488b04b3cdfd2ef5205784", "state_change", "creative", [
23803
+ defineCapability("approve_actor_voice", "5b1c61b992dce69b35f9fb1a388bbd73d41c99575fa86b72121b043045254944", "state_change", "creative", [
23818
23804
  "state_change"
23819
23805
  ], [
23820
23806
  slot("actor", true, [
@@ -23848,7 +23834,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23848
23834
  ], [
23849
23835
  "meta_destination"
23850
23836
  ]),
23851
- defineCapability("list_product_research_runs", "3b8fac903cd9e30c5b6a6c584cc70a819af5392bbdbb32b69eab4c65dc52b556", "none", "read_only", [
23837
+ defineCapability("list_product_research_runs", "ee2d750bfd65a34a9c16bb39dac584fe0784956eaf7b0428a88b1e886846f2af", "none", "read_only", [
23852
23838
  "read"
23853
23839
  ], [
23854
23840
  slot("pagination", false, [
@@ -23859,7 +23845,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23859
23845
  ], [
23860
23846
  "product_research_run"
23861
23847
  ]),
23862
- defineCapability("list_shopify_products", "152b137e01066f3b443987ad75f5be00de8696ce984144bd775416192be20667", "none", "read_only", [
23848
+ defineCapability("list_shopify_products", "c3daf527e345f737c8b23eb347b77fbf2290433257753122a8d55fdc65d58e78", "none", "read_only", [
23863
23849
  "read"
23864
23850
  ], [
23865
23851
  slot("shop", true, [
@@ -23883,7 +23869,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23883
23869
  ], [
23884
23870
  "shop"
23885
23871
  ]),
23886
- defineCapability("list_tasks", "cac5e9dda34b90550024cc546976fab1d6de4fc8fca85a3ec6abde65223cb56c", "none", "read_only", [
23872
+ defineCapability("list_tasks", "4a553c287e590c2dcb905c63eb92c8612093a82476093b9f55c0821cad486598", "none", "read_only", [
23887
23873
  "read"
23888
23874
  ], [
23889
23875
  slot("pagination", false, [
@@ -23905,7 +23891,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23905
23891
  ], [
23906
23892
  "tiktok_advertiser"
23907
23893
  ]),
23908
- defineCapability("publish_creatives_to_meta", "dff962c84ed7d0393444dcbe86cb6f4016b5928c1d0005f78ce9a365f1923ac3", "external_mutation", "publishing", [
23894
+ defineCapability("publish_creatives_to_meta", "d9b8961cb26c2357f45b0ed95eae479affc840742b5b09620a67ce325568cbee", "external_mutation", "publishing", [
23909
23895
  "external_mutation",
23910
23896
  "state_change"
23911
23897
  ], [
@@ -23940,7 +23926,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23940
23926
  ], [
23941
23927
  "meta_campaign"
23942
23928
  ]),
23943
- defineCapability("publish_to_meta", "2d2946fbb796cc8198acfed5e15935c690516259a9bfa9e9a75d1fb33548eef2", "external_mutation", "publishing", [
23929
+ defineCapability("publish_to_meta", "663d574b4aa005a5df41f6b8ff458e3f983f874fe6caef94ab0ae8a1477f70bb", "external_mutation", "publishing", [
23944
23930
  "external_mutation",
23945
23931
  "state_change"
23946
23932
  ], [
@@ -23978,7 +23964,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23978
23964
  ], [
23979
23965
  "meta_publication"
23980
23966
  ]),
23981
- defineCapability("publish_to_shopify", "e041e404ad9f6cf49231c9bc38df22e6bd0aa6e4082b4ab8dc655a132b79873f", "external_mutation", "publishing", [
23967
+ defineCapability("publish_to_shopify", "00c4c7af09bb45a72896118ca154a2dc9518f05d74bb9386c825be541fa10fdb", "external_mutation", "publishing", [
23982
23968
  "external_mutation",
23983
23969
  "state_change"
23984
23970
  ], [
@@ -24021,7 +24007,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24021
24007
  // capability set unchanged, so the live agent's parity gate (which forces
24022
24008
  // shadow mode on any canonical gap) is not tripped. Gated server-side by
24023
24009
  // SERVICE_MOTION_GRAPHICS_ENABLED + the `service-motion-graphics` feature.
24024
- defineCapability("create_animated_video", "1d375b3ad4f60d9337009cb86209d66f05da127fdf2748c1cf9d36503e4dce5c", "credit_consuming", "creative", [
24010
+ defineCapability("create_animated_video", "2177ed726e767978eb61fa007f621b389f3b1eb3a2da967fdb44c279bf20fecd", "credit_consuming", "creative", [
24025
24011
  "credit_consuming",
24026
24012
  "state_change"
24027
24013
  ], [
@@ -24072,7 +24058,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24072
24058
  // MCP-only service journey (2026-10-11): brand analysis → service landing →
24073
24059
  // create_animated_video. WhatsApp has no adapter for either, so both are
24074
24060
  // declared unavailable there and its parity gate is unchanged.
24075
- defineCapability("create_brand", "7f5680574f38f1005d162c2a2a3805be82896508793ebcdd5491b8459c803158", "credit_consuming", "creative", [
24061
+ defineCapability("create_brand", "0dba1e46eaaf3ae6ffda459de7eebbdfb2f04da1180b21f84ae4caae434dbbcf", "credit_consuming", "creative", [
24076
24062
  "credit_consuming",
24077
24063
  "state_change"
24078
24064
  ], [
@@ -24095,7 +24081,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24095
24081
  ], [
24096
24082
  "brand"
24097
24083
  ], MCP_ONLY_CHANNEL_EXPOSURE),
24098
- defineCapability("create_service_landing", "ce99d75f4b00bea23b6bf4f56ef3331b266176cb0a9dead55611ee78d21c41b3", "credit_consuming", "creative", [
24084
+ defineCapability("create_service_landing", "9e0f68278d2daa3bcf0326dd8e796d4dc82423f850c765efd48881c99f04a14f", "credit_consuming", "creative", [
24099
24085
  "credit_consuming",
24100
24086
  "state_change"
24101
24087
  ], [
@@ -24120,7 +24106,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24120
24106
  ], [
24121
24107
  "service_landing"
24122
24108
  ], MCP_ONLY_CHANNEL_EXPOSURE),
24123
- defineCapability("create_service_images", "ce729a35f8781dd301514075e2e4408b6660db7523e3705ff2c8cbde571cddf6", "credit_consuming", "creative", [
24109
+ defineCapability("create_service_images", "937e86a1b0e3e0678a029062cddb0a9b632c8bcbb9864225f66488e3e2abdbed", "credit_consuming", "creative", [
24124
24110
  "credit_consuming",
24125
24111
  "state_change"
24126
24112
  ], [
@@ -24157,7 +24143,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24157
24143
  ], MCP_ONLY_CHANNEL_EXPOSURE),
24158
24144
  // MCP-only recovery of an existing code edit. WhatsApp has no code-landing
24159
24145
  // editor or edit receipt input; it hands this recovery to ProductMaker Web.
24160
- defineCapability("verify_landing_commerce", "4b98ea73f291428fa19ec91ec37deb44a776b76cb19b0d47aef20ee905da7d10", "external_mutation", "publishing", [
24146
+ defineCapability("verify_landing_commerce", "f6dcbfbf8e90c39246f0b377745cd2c6c0f76f314c9736a257087c6d00a90f29", "external_mutation", "publishing", [
24161
24147
  "read",
24162
24148
  "state_change",
24163
24149
  "external_mutation"
@@ -24176,7 +24162,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24176
24162
  defineCapability(
24177
24163
  "publish_to_tiktok",
24178
24164
  // MCP 11.7.0: native WhatsApp destination and major-currency budget inputs.
24179
- "50b932193b62929498ae342417427ef84b1982eb7620c6baffb62c8fb986e66e",
24165
+ "ce6e6572583a615203835f6e191a50883ba00f95b8813b3c2bc3d5d92746b24f",
24180
24166
  "external_mutation",
24181
24167
  "publishing",
24182
24168
  [
@@ -24214,7 +24200,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24214
24200
  "tiktok_publication"
24215
24201
  ]
24216
24202
  ),
24217
- defineCapability("prepare_winning_product_image", "6915790d22256a648374412ac4d11126fe3fabc9404f4552205057f9da3ce0db", "none", "business", [
24203
+ defineCapability("prepare_winning_product_image", "51c4795176c13b67901e2aad161124598675c7e5ae476b35a63be5b06906ccca", "none", "business", [
24218
24204
  "state_change"
24219
24205
  ], [
24220
24206
  slot("winner_reference", true, [
@@ -24226,7 +24212,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24226
24212
  ], [
24227
24213
  "product_media"
24228
24214
  ], MCP_ONLY_CHANNEL_EXPOSURE),
24229
- defineCapability("regenerate_video_script", "eb9546e5cda3864de78ff119ae81dd17c893ea9ea5be1bf0fbfeb8b45302e639", "credit_consuming", "creative", [
24215
+ defineCapability("regenerate_video_script", "e68fa5f4f6adb37c4275c60dcb6983d14655a030450c0ed75012044cff0aa29c", "credit_consuming", "creative", [
24230
24216
  "credit_consuming",
24231
24217
  "state_change"
24232
24218
  ], [
@@ -24266,7 +24252,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24266
24252
  ], [
24267
24253
  "meta_upload_session"
24268
24254
  ], WHATSAPP_ONLY_CHANNEL_EXPOSURE),
24269
- defineCapability("request_media_upload", "9a50a4647c61f97fb12bbb9b25f7660f392e3cd9825151735cd66292058882ea", "none", "creative", [
24255
+ defineCapability("request_media_upload", "ab70248efd499351ff119e5563e31185040b57e42ccc0e09efe6b6fbeea794a5", "none", "creative", [
24270
24256
  "state_change"
24271
24257
  ], [
24272
24258
  slot("media_kind", true, [
@@ -24289,7 +24275,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24289
24275
  ], [
24290
24276
  "media_upload_session"
24291
24277
  ], MCP_ONLY_CHANNEL_EXPOSURE),
24292
- defineCapability("resolve_pending_action", "9377ff126ec842cfb8278877846c5f8f6f1b9ba0c263e7200f080db9bbe9ae12", "credit_consuming", "creative", [
24278
+ defineCapability("resolve_pending_action", "a7fef1e3299c2bfb387a16b3e1e243fba8df1db961ebc1f27d2119209124c293", "credit_consuming", "creative", [
24293
24279
  "credit_consuming",
24294
24280
  "state_change"
24295
24281
  ], [
@@ -24325,7 +24311,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24325
24311
  ], [
24326
24312
  "task"
24327
24313
  ]),
24328
- defineCapability("start_dropshipping_project", "2b621702e8da8bb894d392060e5e4f677a8dc26f454e991dbb929053715a4f8b", "state_change", "business", [
24314
+ defineCapability("start_dropshipping_project", "996385df905ed85a933c5726fbebf5a29a98f29364badd8256ff306aff38797c", "state_change", "business", [
24329
24315
  "state_change"
24330
24316
  ], [
24331
24317
  slot("origin", true, [
@@ -24346,7 +24332,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24346
24332
  ], [
24347
24333
  "dropshipping_project"
24348
24334
  ]),
24349
- defineCapability("get_daily_control", "d2ee70df5be00618ad23ef558f91e0066e03a69547a4f2d9310bf9ae51ae9a03", "none", "read_only", [
24335
+ defineCapability("get_daily_control", "f68e63aeda284d8f07040f6ec55c84ba5e55a515667a20bfe3a60268a6827130", "none", "read_only", [
24350
24336
  "read"
24351
24337
  ], [
24352
24338
  slot("window_end", false, [
@@ -24364,7 +24350,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24364
24350
  ], [
24365
24351
  "daily_control_report"
24366
24352
  ]),
24367
- defineCapability("link_campaign_to_project", "42785a9781412e0ad7cf7095b7188f315dea4003002777d5a4b1b9cc79ea05e0", "state_change", "business", [
24353
+ defineCapability("link_campaign_to_project", "1a6d51234a38259e9fa00475c76919742818efb32491a75ffa768ff9fede4013", "state_change", "business", [
24368
24354
  "state_change"
24369
24355
  ], [
24370
24356
  slot("project", true, [
@@ -24384,7 +24370,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24384
24370
  ], [
24385
24371
  "campaign_link"
24386
24372
  ]),
24387
- defineCapability("list_importable_products", "8f3e48f6494c85a3fab82163e11536d9d48aa77b058153efaabf4263548a8f02", "none", "read_only", [
24373
+ defineCapability("list_importable_products", "30404855a9d9c61bd437703f0287041ac77bf997fb7c6e5c7dafdf68712020a9", "none", "read_only", [
24388
24374
  "read"
24389
24375
  ], [
24390
24376
  slot("search", false, [
@@ -24401,7 +24387,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24401
24387
  ], [
24402
24388
  "importable_product_page"
24403
24389
  ]),
24404
- defineCapability("import_product_controls", "b9dae191963ae88ad33060db64eedd1cb63856108f18dbec0e8a039b05117d99", "state_change", "business", [
24390
+ defineCapability("import_product_controls", "f0e1de3062389541317f1351977e77fdcb50ee5d0d5251bbc1f1e7e2ab034515", "state_change", "business", [
24405
24391
  "state_change"
24406
24392
  ], [
24407
24393
  slot("products", true, [
@@ -24418,7 +24404,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24418
24404
  ], [
24419
24405
  "product_control"
24420
24406
  ]),
24421
- defineCapability("set_product_costing", "cce7a31e434c7a1f0af2e3ecaf591eb63c6e3570c466c29e2cab00432ab26bc9", "state_change", "business", [
24407
+ defineCapability("set_product_costing", "de1353c7061d00bf793ecc789c0300c6dd54f758dbff86b10915a51592a99df9", "state_change", "business", [
24422
24408
  "state_change"
24423
24409
  ], [
24424
24410
  /* La identidad sin tienda solo existe en el contrato MCP: el
@@ -24456,7 +24442,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24456
24442
  ], [
24457
24443
  "product_control_costing"
24458
24444
  ]),
24459
- defineCapability("get_product_control", "9d448f8cb2d40fa6547f7265bf908925375c33d891993c1f6e8cae5409729f32", "none", "read_only", [
24445
+ defineCapability("get_product_control", "cc67eec02bc5fba649e705078ecebf4703a3e3e25b9d3189921a7e2bae7f6c0c", "none", "read_only", [
24460
24446
  "read"
24461
24447
  ], [
24462
24448
  slot("day", false, [
@@ -24474,7 +24460,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24474
24460
  ], [
24475
24461
  "product_control_report"
24476
24462
  ]),
24477
- defineCapability("report_product_counts", "0d2eb30d9be73cd818a149af365b165ad5739a36ffb591149f9735bfd9636773", "state_change", "business", [
24463
+ defineCapability("report_product_counts", "8fa2561901b7743506a3639038d7806186c0512470bc6988a54c6bee5dbbb0b0", "state_change", "business", [
24478
24464
  "state_change"
24479
24465
  ], [
24480
24466
  slot("product_control", true, [
@@ -24503,7 +24489,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24503
24489
  ], [
24504
24490
  "product_control_daily_counts"
24505
24491
  ]),
24506
- defineCapability("get_finances", "da5fdd11b49980f85dcee63386e5b443786f65581612ce9333770a631e1ccf45", "none", "read_only", [
24492
+ defineCapability("get_finances", "bb57d3594b204597e9abd2d9beb7df644d07f5683a159d4de1860fa9d03aa5b4", "none", "read_only", [
24507
24493
  "read"
24508
24494
  ], [
24509
24495
  slot("month", false, [
@@ -24517,7 +24503,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24517
24503
  ], [
24518
24504
  "monthly_pl"
24519
24505
  ]),
24520
- defineCapability("sync_shopify_orders", "6a43ef95dc4d4943292416d0f3ef71da9ae19a16593bf76a294ef4b3f8f0eaac", "state_change", "business", [
24506
+ defineCapability("sync_shopify_orders", "0f821de23aa171e89e7e03c1910be57d8dbd878491cbad45a43c4540b4872910", "state_change", "business", [
24521
24507
  "state_change"
24522
24508
  ], [
24523
24509
  slot("shop", false, [
@@ -24537,7 +24523,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24537
24523
  ], [
24538
24524
  "product_order_line"
24539
24525
  ]),
24540
- defineCapability("import_orders_file", "d4691f530dee83c40613d70b2830dc91fb21f5822449601caeaaab409622911c", "state_change", "business", [
24526
+ defineCapability("import_orders_file", "449352851f20e229d488fd10dcfde682774d5c6ef0c66294bedfd6da8d1d93e9", "state_change", "business", [
24541
24527
  "state_change"
24542
24528
  ], [
24543
24529
  slot("orders_file", true, [
@@ -24559,7 +24545,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24559
24545
  ], [
24560
24546
  "product_order_line"
24561
24547
  ]),
24562
- defineCapability("create_operation", "0e610436a98cec2815216d526294da3cfc835830bb960e5dc0381d65b6edf9e5", "state_change", "business", [
24548
+ defineCapability("create_operation", "569501e4e03e6f1782fcf7458e752864804b1ffaa9eb7bd9522e05260939c938", "state_change", "business", [
24563
24549
  "state_change"
24564
24550
  ], [
24565
24551
  slot("country", true, [
@@ -24573,7 +24559,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24573
24559
  ], [
24574
24560
  "finance_operation"
24575
24561
  ]),
24576
- defineCapability("merge_products", "062d0afbedc3309c61cb7eaaf1902a05e2725897f04f5e79ad7e354ac8f05f21", "state_change", "business", [
24562
+ defineCapability("merge_products", "8519963a68603ed7f4a2a82d24e43f317f0a9840e7fd7ba5a90832c4f4a6bcaf", "state_change", "business", [
24577
24563
  "state_change"
24578
24564
  ], [
24579
24565
  slot("source_product", true, [
@@ -24587,7 +24573,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24587
24573
  ], [
24588
24574
  "product_control"
24589
24575
  ]),
24590
- defineCapability("set_monthly_expense", "2ad9958b36fbfc6d665ff1fb33e8fbd446b01d71fc60dcc0b2074fcf8770f2c1", "state_change", "business", [
24576
+ defineCapability("set_monthly_expense", "5ff786a29b44e1961c31fa30decd779d0a18fdf4d7a0bdff7fe130eda59640a4", "state_change", "business", [
24591
24577
  "state_change"
24592
24578
  ], [
24593
24579
  slot("expense_label", true, [
@@ -24607,7 +24593,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24607
24593
  ], [
24608
24594
  "monthly_expense"
24609
24595
  ]),
24610
- defineCapability("set_ad_spend", "edbf19766900aafde76ad5b203fd5c9ecbd3e976705b67ab82867a303a6fa6c9", "state_change", "business", [
24596
+ defineCapability("set_ad_spend", "45f5515a91679304c27f2753ec568bcfe0343644363ec3d185eea3a3f220bbc0", "state_change", "business", [
24611
24597
  "state_change"
24612
24598
  ], [
24613
24599
  slot("amount", true, [
@@ -24628,7 +24614,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24628
24614
  "get_dropi_status",
24629
24615
  // Filled by the MCP schema fingerprint test (sha256 of the canonicalized
24630
24616
  // inputSchema) — run apps/mcp server.test.ts to compute.
24631
- "3465e644ebdcaa404d8bcc1af629012c858bb4aed5bb1b56cfaa2af0d53cfc6e",
24617
+ "dbbf0cae464909761b30d649f08ebf588bc34ab66a0b67abcf9ff3442e1ec457",
24632
24618
  "none",
24633
24619
  "read_only",
24634
24620
  [
@@ -24653,7 +24639,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24653
24639
  defineCapability(
24654
24640
  "sync_dropi_orders",
24655
24641
  // Filled by the MCP schema fingerprint test.
24656
- "46f1172e7afe42991957a2dc262cce235dbf31ededdf37ccf866a583bb19123b",
24642
+ "a2b107f6f36ed6e9ed698e89ff54decf180bfce372adabd3bc0d00739ebd6a02",
24657
24643
  "state_change",
24658
24644
  "business",
24659
24645
  [
@@ -24687,7 +24673,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24687
24673
  defineCapability(
24688
24674
  "create_manual_product",
24689
24675
  // Filled by the MCP schema fingerprint test.
24690
- "4da701236ab1fd460e66f6def729f61a392bad62e8fecdaf8b3b3098fdec53cb",
24676
+ "00b0366e3c23989c10243e8c34ea74d2786c7f521093a006e53cc6e68750e5ad",
24691
24677
  "state_change",
24692
24678
  "business",
24693
24679
  [
@@ -24730,7 +24716,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24730
24716
  defineCapability(
24731
24717
  "list_unmatched_products",
24732
24718
  // Filled by the MCP schema fingerprint test.
24733
- "2c89690b4282a881f29f3bae11268786abf385c2bec0e3d7a1643098f4986e1b",
24719
+ "d72bf2d563daabe2ce719aeee4d3f1899154daba063ebca1ef69499e0ff09034",
24734
24720
  "none",
24735
24721
  "read_only",
24736
24722
  [
@@ -24752,7 +24738,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24752
24738
  defineCapability(
24753
24739
  "resolve_unmatched_product",
24754
24740
  // Filled by the MCP schema fingerprint test.
24755
- "39ccb99a5d138f7f99e25c00b68eec8972e34dbcbd966d2081cdaa7c76ac63ba",
24741
+ "05fb2d978e2e878cbbfeca78b87b0f7e25decedfcfa8490b7cfc055139953574",
24756
24742
  "state_change",
24757
24743
  "business",
24758
24744
  [
@@ -24804,7 +24790,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24804
24790
  defineCapability(
24805
24791
  "link_product_campaign",
24806
24792
  // Filled by the MCP schema fingerprint test.
24807
- "a9976318693f137dd37f4608d382fe1deb13b44c2f5257580c8b52b015899dde",
24793
+ "a4ea2424df8482eb5f004676aa6d43a24f8ad8790644a41f521cdeb879a306a9",
24808
24794
  "state_change",
24809
24795
  "business",
24810
24796
  [
@@ -24842,7 +24828,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24842
24828
  defineCapability(
24843
24829
  "delete_monthly_expense",
24844
24830
  // Filled by the MCP schema fingerprint test.
24845
- "fe9c5d5896165b9c65fbfed779db7918dabf87c69e1601430a1509ad2d452de9",
24831
+ "e762a6d49f2ab0ce1f51315d0d0ec11e1456c8b8b8200c66b899808f89f706d5",
24846
24832
  "state_change",
24847
24833
  "business",
24848
24834
  [
@@ -24870,7 +24856,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24870
24856
  defineCapability(
24871
24857
  "remove_product_control",
24872
24858
  // Filled by the MCP schema fingerprint test.
24873
- "ff0b7411497a0b28eda7294c35b09c45f8beff842bbc6a9a4cc993ba3d766cae",
24859
+ "e29785ec81add0115499e3ae616f47224c2c01dc61c5d7f65d306bc1ac28929f",
24874
24860
  "state_change",
24875
24861
  "business",
24876
24862
  [
@@ -24889,7 +24875,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24889
24875
  ],
24890
24876
  MCP_ONLY_CHANNEL_EXPOSURE
24891
24877
  ),
24892
- defineCapability("report_daily_returns", "7130d216656cc29a47fc972b4edad5003a6653fca48d95052fbf2b561636e91a", "state_change", "business", [
24878
+ defineCapability("report_daily_returns", "c64af9e1750adf5892caa76c0c170feec91e617ba1769ee5c0af17cbbb4fc6d2", "state_change", "business", [
24893
24879
  "state_change"
24894
24880
  ], [
24895
24881
  slot("project", true, [
@@ -25187,7 +25173,7 @@ var WhatsAppQuoteRecoveryReceiptSchema = z103.discriminatedUnion("state", [
25187
25173
  z103.object({
25188
25174
  ...recoveryBase,
25189
25175
  state: z103.literal("consumed"),
25190
- successorCommandId: z103.string().uuid(),
25176
+ successorCommandId: z103.string().guid(),
25191
25177
  choice: z103.enum([
25192
25178
  "without_winner",
25193
25179
  "retry"
@@ -25197,7 +25183,7 @@ var WhatsAppQuoteRecoveryReceiptSchema = z103.discriminatedUnion("state", [
25197
25183
  ...recoveryBase,
25198
25184
  state: z103.literal("awaiting_media"),
25199
25185
  successorCommandId: z103.null(),
25200
- successorCollectionId: z103.string().uuid(),
25186
+ successorCollectionId: z103.string().guid(),
25201
25187
  choice: z103.enum([
25202
25188
  "without_winner",
25203
25189
  "retry"
@@ -25225,10 +25211,10 @@ var json = z103.lazy(() => z103.union([
25225
25211
  z103.number().finite(),
25226
25212
  z103.string(),
25227
25213
  z103.array(json),
25228
- z103.record(json)
25214
+ z103.record(z103.string(), json)
25229
25215
  ]));
25230
25216
  var commandBase = {
25231
- commandId: z103.string().uuid(),
25217
+ commandId: z103.string().guid(),
25232
25218
  requestHash: z103.string().min(1).max(256),
25233
25219
  expectedUpdatedAt: z103.string().datetime(),
25234
25220
  result: json,
@@ -25236,7 +25222,7 @@ var commandBase = {
25236
25222
  };
25237
25223
  var proposedSnapshot = {
25238
25224
  ...commandBase,
25239
- sourceMessageId: z103.string().uuid(),
25225
+ sourceMessageId: z103.string().guid(),
25240
25226
  expectedStatus: z103.literal("proposed"),
25241
25227
  expectedResult: json
25242
25228
  };
@@ -25297,19 +25283,19 @@ var WhatsAppPresentationFinalizerSchema = z103.object({
25297
25283
  ]).optional(),
25298
25284
  plan: z103.object({
25299
25285
  guardOnly: z103.boolean().optional(),
25300
- planId: z103.string().uuid(),
25286
+ planId: z103.string().guid(),
25301
25287
  expectedPlanRevision: z103.number().int().nonnegative(),
25302
- stepId: z103.string().uuid(),
25288
+ stepId: z103.string().guid(),
25303
25289
  expectedStepRevision: z103.number().int().nonnegative(),
25304
- expectedCommandId: z103.string().uuid().nullable(),
25290
+ expectedCommandId: z103.string().guid().nullable(),
25305
25291
  next: z103.object({
25306
- stepId: z103.string().uuid(),
25292
+ stepId: z103.string().guid(),
25307
25293
  expectedRevision: z103.number().int().nonnegative()
25308
25294
  }).strict().nullable(),
25309
25295
  outputArtifacts: json
25310
25296
  }).strict().optional(),
25311
25297
  collection: z103.object({
25312
- collectionId: z103.string().uuid(),
25298
+ collectionId: z103.string().guid(),
25313
25299
  expectedRevision: z103.number().int().nonnegative(),
25314
25300
  expiresAt: z103.string().datetime()
25315
25301
  }).strict().optional()
@@ -25394,9 +25380,9 @@ var WhatsAppPresentationStepSchema = z104.discriminatedUnion("kind", [
25394
25380
  "research_ready",
25395
25381
  "research_failed"
25396
25382
  ]).optional(),
25397
- commandId: z104.string().uuid().optional(),
25398
- taskId: z104.string().uuid().optional(),
25399
- researchRunId: z104.string().uuid().optional()
25383
+ commandId: z104.string().guid().optional(),
25384
+ taskId: z104.string().guid().optional(),
25385
+ researchRunId: z104.string().guid().optional()
25400
25386
  }).strict().refine((value) => value.resetSourceSequence === void 0 || value.conversationReset === "completed", "Reset source sequence requires a completed reset").optional(),
25401
25387
  intentKey
25402
25388
  }).strict(),
@@ -25428,16 +25414,16 @@ var WhatsAppPresentationStepSchema = z104.discriminatedUnion("kind", [
25428
25414
  "tiktok"
25429
25415
  ])).max(3),
25430
25416
  fullResultUrl: z104.string().url().max(8192),
25431
- commandId: z104.string().uuid(),
25432
- taskId: z104.string().uuid(),
25417
+ commandId: z104.string().guid(),
25418
+ taskId: z104.string().guid(),
25433
25419
  intentKey
25434
25420
  }).strict(),
25435
25421
  z104.object({
25436
25422
  kind: z104.literal("reference_review"),
25437
- commandId: z104.string().uuid(),
25438
- taskId: z104.string().uuid(),
25423
+ commandId: z104.string().guid(),
25424
+ taskId: z104.string().guid(),
25439
25425
  snapshotHash: z104.string().length(64).regex(/^[a-f0-9]+$/),
25440
- pendingAction: z104.record(z104.unknown()),
25426
+ pendingAction: z104.record(z104.string(), z104.unknown()),
25441
25427
  previews: z104.array(preview).max(20),
25442
25428
  expectedPreviewCount: z104.number().int().min(0).max(50),
25443
25429
  intentKey
@@ -25863,7 +25849,7 @@ var ProductTruthBody = z107.object({
25863
25849
  out[key2] = rawIndexes.filter((i) => typeof i === "number" && Number.isInteger(i) && i >= 0 && i < 20);
25864
25850
  }
25865
25851
  return out;
25866
- }, z107.record(z107.array(z107.number().int().min(0).max(19))))
25852
+ }, z107.record(z107.string(), z107.array(z107.number().int().min(0).max(19))))
25867
25853
  })),
25868
25854
  confidence: z107.preprocess((v) => typeof v === "number" && Number.isFinite(v) ? Math.min(1, Math.max(0, v)) : 0, z107.number().min(0).max(1))
25869
25855
  });
@@ -26206,15 +26192,16 @@ var CreativeCompositionExecutorRoleSchema = z109.enum(CREATIVE_COMPOSITION_EXECU
26206
26192
  var CreativeCompositionJobSchema = z109.object({
26207
26193
  kind: z109.literal("creative_composition"),
26208
26194
  protocolVersion: CreativeCompositionProtocolVersionSchema,
26209
- jobId: z109.string().uuid(),
26195
+ jobId: z109.string().guid(),
26210
26196
  owner: CreativeEngineOwnerSchema,
26211
26197
  attempt,
26212
26198
  leaseUntil: z109.string().datetime(),
26213
26199
  deadlineAtMs: z109.number().int().nonnegative(),
26214
26200
  /**
26215
26201
  * Contract digest of the API that wrote the job. The renderer refuses a
26216
- * job whose digest is not its own (`renderer_schema_stale`). Absent only
26217
- * on rows written before digests existed.
26202
+ * job whose digest is neither current nor explicitly verified compatible
26203
+ * (`renderer_schema_stale`). Accepted jobs still meet the current schema.
26204
+ * Absent only on rows written before digests existed.
26218
26205
  */
26219
26206
  contractDigest: hash2.optional(),
26220
26207
  width: z109.number().int().positive().max(4096),
@@ -26292,10 +26279,10 @@ var CreativeCompositionClaimResponseSchema = z109.object({
26292
26279
  job: CreativeCompositionJobSchema.nullable()
26293
26280
  }).strict();
26294
26281
  var CreativeCompositionHeartbeatSchema = MotionGraphicsStageReportSchema.extend({
26295
- jobId: z109.string().uuid()
26282
+ jobId: z109.string().guid()
26296
26283
  });
26297
26284
  var CreativeCompositionUploadRequestSchema = z109.object({
26298
- jobId: z109.string().uuid(),
26285
+ jobId: z109.string().guid(),
26299
26286
  attempt,
26300
26287
  files: z109.array(z109.object({
26301
26288
  kind: z109.enum([
@@ -26319,7 +26306,7 @@ var CreativeCompositionUploadResponseSchema = z109.object({
26319
26306
  }).strict()).min(1).max(3)
26320
26307
  }).strict();
26321
26308
  var CreativeCompositionDoneRequestSchema = z109.object({
26322
- jobId: z109.string().uuid(),
26309
+ jobId: z109.string().guid(),
26323
26310
  attempt,
26324
26311
  width: z109.number().int().positive(),
26325
26312
  height: z109.number().int().positive(),
@@ -26327,14 +26314,14 @@ var CreativeCompositionDoneRequestSchema = z109.object({
26327
26314
  durationSec: z109.number().positive()
26328
26315
  }).strict();
26329
26316
  var CreativeCompositionFailedRequestSchema = z109.object({
26330
- jobId: z109.string().uuid(),
26317
+ jobId: z109.string().guid(),
26331
26318
  attempt,
26332
26319
  reason: z109.string().min(1).max(1e3),
26333
26320
  retryable: z109.literal(false)
26334
26321
  }).strict();
26335
26322
  var CreativeCompositionLocalManifestSchema = z109.object({
26336
26323
  kind: z109.literal("creative_composition"),
26337
- jobId: z109.string().uuid(),
26324
+ jobId: z109.string().guid(),
26338
26325
  owner: CreativeEngineOwnerSchema,
26339
26326
  plan: z109.object({
26340
26327
  revision: z109.number().int().positive(),
@@ -26420,8 +26407,8 @@ var CreativeEngineEditContextSnapshotSchema = z111.object({
26420
26407
  hash: hash3,
26421
26408
  binding: CreativeEngineContextBindingSchema,
26422
26409
  data: z111.object({
26423
- physical: z111.record(z111.unknown()),
26424
- commercial: z111.record(z111.unknown())
26410
+ physical: z111.record(z111.string(), z111.unknown()),
26411
+ commercial: z111.record(z111.string(), z111.unknown())
26425
26412
  }).strict(),
26426
26413
  references: z111.array(z111.object({
26427
26414
  sourceId: id4,
@@ -26491,7 +26478,7 @@ var CreativeEngineEditExecutionSchema = z111.object({
26491
26478
  version: z111.literal(1),
26492
26479
  source: CreativeEngineEditSourceSchema,
26493
26480
  intent: z111.object({
26494
- clientRequestId: z111.string().uuid(),
26481
+ clientRequestId: z111.string().guid(),
26495
26482
  sectionsHash: hash3,
26496
26483
  sourceBindingHash: hash3,
26497
26484
  derivedPlanHash: hash3,
@@ -26603,7 +26590,7 @@ var CreativeEngineEditProposalSchema = z111.object({
26603
26590
  userId: id4,
26604
26591
  taskId: id4,
26605
26592
  angleKey: id4,
26606
- clientRequestId: z111.string().uuid(),
26593
+ clientRequestId: z111.string().guid(),
26607
26594
  createdAtMs: z111.number().int().nonnegative(),
26608
26595
  expiresAtMs: z111.number().int().positive(),
26609
26596
  source: CreativeEngineEditSourceSchema,
@@ -26612,7 +26599,7 @@ var CreativeEngineEditProposalSchema = z111.object({
26612
26599
  context: CreativeEngineEditContextSnapshotSchema,
26613
26600
  recipe: CreativeEngineRecipeSchema,
26614
26601
  // The API validates these with its canonical section schema before persistence/use.
26615
- sections: z111.array(z111.record(z111.unknown())).min(1).max(32)
26602
+ sections: z111.array(z111.record(z111.string(), z111.unknown())).min(1).max(32)
26616
26603
  }).strict();
26617
26604
 
26618
26605
  // ../../packages/types/src/creative-engine-retry.ts
@@ -26674,7 +26661,7 @@ var CreativeEngineFreshRetryProvenanceSchema = z112.object({
26674
26661
  import { z as z113 } from "zod";
26675
26662
  var CreativeEngineEntryRequestSchema = z113.object({
26676
26663
  creativeEngine: z113.literal("unified_v1"),
26677
- taskId: z113.string().uuid(),
26664
+ taskId: z113.string().guid(),
26678
26665
  angleKey: z113.string().min(1).max(200),
26679
26666
  requestId: z113.string().min(1).max(200),
26680
26667
  guide: z113.enum([
@@ -26886,7 +26873,7 @@ import { z as z116 } from "zod";
26886
26873
  // ../../packages/types/src/service-landing-primitives.ts
26887
26874
  import { z as z115 } from "zod";
26888
26875
  var OptionalTextSchema = z115.string().trim().min(1).max(500).optional();
26889
- var AssetIdSchema = z115.string().uuid().transform((value) => value.toLowerCase());
26876
+ var AssetIdSchema = z115.string().guid().transform((value) => value.toLowerCase());
26890
26877
  var ServiceLandingPrimaryCtaSchema = z115.object({
26891
26878
  channelIndex: z115.number().int().nonnegative(),
26892
26879
  label: z115.string().trim().min(1).max(80)
@@ -27022,7 +27009,7 @@ var ServiceLandingContactChannelSchema = z116.discriminatedUnion("kind", [
27022
27009
  BookingUrlChannelSchema
27023
27010
  ]);
27024
27011
  var ServiceLandingServiceSchema = z116.object({
27025
- id: z116.string().uuid(),
27012
+ id: z116.string().guid(),
27026
27013
  name: z116.string().trim().min(1).max(120),
27027
27014
  description: OptionalTextSchema,
27028
27015
  inclusions: z116.array(z116.string().trim().min(1).max(160)).max(12),
@@ -27250,7 +27237,7 @@ var ServiceLandingArtifactSchema = z116.preprocess(applyCodeArtifactDefaults, z1
27250
27237
  // ../../packages/types/src/service-landing-facts-brand.ts
27251
27238
  import { z as z117 } from "zod";
27252
27239
  var ServiceLandingServiceFactsSchema = z117.object({
27253
- id: z117.string().uuid(),
27240
+ id: z117.string().guid(),
27254
27241
  name: z117.string().trim().min(1).max(120).optional(),
27255
27242
  description: OptionalTextSchema,
27256
27243
  inclusions: z117.array(z117.string().trim().min(1).max(160)).max(12).default([]),
@@ -27402,7 +27389,7 @@ var ServicePageParserMetadataSchema = z117.object({
27402
27389
  }).strict()).max(100).optional()
27403
27390
  }).strict();
27404
27391
  var ServicePageSourceSchema = z117.object({
27405
- id: z117.string().uuid(),
27392
+ id: z117.string().guid(),
27406
27393
  kind: ServicePageSourceKindSchema,
27407
27394
  status: ServicePageSourceStatusSchema,
27408
27395
  displayName: z117.string().trim().min(1).max(180).optional(),
@@ -27413,14 +27400,14 @@ var ServicePageSourceSchema = z117.object({
27413
27400
  var ServicePageFactConflictSchema = z117.object({
27414
27401
  fieldPath: z117.string().trim().min(1).max(180),
27415
27402
  candidates: z117.array(z117.object({
27416
- id: z117.string().uuid(),
27403
+ id: z117.string().guid(),
27417
27404
  value: z117.string().trim().min(1).max(500),
27418
- sourceIds: z117.array(z117.string().uuid()).min(1).max(10)
27405
+ sourceIds: z117.array(z117.string().guid()).min(1).max(10)
27419
27406
  }).strict()).min(2).max(8)
27420
27407
  }).strict();
27421
27408
  var ServicePageFactProvenanceSchema = z117.object({
27422
27409
  fieldPath: z117.string().trim().min(1).max(180),
27423
- sourceIds: z117.array(z117.string().uuid()).min(1).max(10),
27410
+ sourceIds: z117.array(z117.string().guid()).min(1).max(10),
27424
27411
  evidence: z117.string().trim().max(1e3).optional()
27425
27412
  }).strict();
27426
27413
  var ServicePageFactsReviewSchema = z117.object({
@@ -27436,26 +27423,26 @@ var ServicePageFactsReviewSchema = z117.object({
27436
27423
  // ../../packages/types/src/service-landing-api.ts
27437
27424
  import { z as z118 } from "zod";
27438
27425
  var ServicePageCreateRequestSchema = z118.object({
27439
- brandId: z118.string().uuid(),
27426
+ brandId: z118.string().guid(),
27440
27427
  includeBrandLogo: z118.boolean().optional(),
27441
- idempotencyKey: z118.string().uuid().optional()
27428
+ idempotencyKey: z118.string().guid().optional()
27442
27429
  }).strict();
27443
27430
  var ServicePageFactsUpdateRequestSchema = z118.object({
27444
27431
  expectedRevision: z118.number().int().nonnegative(),
27445
- idempotencyKey: z118.string().uuid(),
27432
+ idempotencyKey: z118.string().guid(),
27446
27433
  facts: ServicePageFactsSchema
27447
27434
  }).strict();
27448
27435
  var ServicePageFactsConfirmRequestSchema = z118.object({
27449
27436
  expectedRevision: z118.number().int().nonnegative(),
27450
- idempotencyKey: z118.string().uuid(),
27437
+ idempotencyKey: z118.string().guid(),
27451
27438
  resolutions: z118.array(z118.object({
27452
27439
  fieldPath: z118.string().trim().min(1).max(180),
27453
- candidateId: z118.string().uuid()
27440
+ candidateId: z118.string().guid()
27454
27441
  }).strict()).max(30)
27455
27442
  }).strict();
27456
27443
  var ServicePageIntakeRequestSchema = z118.object({
27457
27444
  expectedRevision: z118.number().int().nonnegative(),
27458
- idempotencyKey: z118.string().uuid(),
27445
+ idempotencyKey: z118.string().guid(),
27459
27446
  text: z118.string().trim().max(3e4).optional(),
27460
27447
  profileUrl: z118.string().trim().url().max(2048).refine((value) => {
27461
27448
  try {
@@ -27486,7 +27473,7 @@ var ServicePageAttachmentRefSchema = z118.object({
27486
27473
  "source",
27487
27474
  "asset"
27488
27475
  ]),
27489
- id: z118.string().uuid().transform((id6) => id6.toLowerCase())
27476
+ id: z118.string().guid().transform((id6) => id6.toLowerCase())
27490
27477
  }).strict();
27491
27478
  var ServicePageAttachmentRefsSchema = z118.array(ServicePageAttachmentRefSchema).max(SERVICE_PAGE_CHAT_ATTACHMENT_MAX_SELECTION).superRefine((refs, ctx) => {
27492
27479
  const seen = /* @__PURE__ */ new Set();
@@ -27519,13 +27506,13 @@ var ServicePageChatAttachmentUploadResponseSchema = z118.object({
27519
27506
  }).strict();
27520
27507
  var ServicePageChatAttachmentUploadRequestSchema = z118.object({
27521
27508
  expectedRevision: z118.number().int().nonnegative(),
27522
- idempotencyKey: z118.string().uuid(),
27509
+ idempotencyKey: z118.string().guid(),
27523
27510
  profileUrl: z118.string().url().max(2048).optional()
27524
27511
  }).strict();
27525
27512
  var ServicePageEditInstructionSchema = z118.string().trim().min(3).max(SERVICE_PAGE_EDIT_INSTRUCTION_MAX_CHARS);
27526
27513
  var ServicePageEditEstimateRequestSchema = z118.object({
27527
27514
  expectedRevision: z118.number().int().nonnegative(),
27528
- baseCandidateOperationId: z118.string().uuid().transform((id6) => id6.toLowerCase()).optional(),
27515
+ baseCandidateOperationId: z118.string().guid().transform((id6) => id6.toLowerCase()).optional(),
27529
27516
  instruction: ServicePageEditInstructionSchema.optional(),
27530
27517
  attachmentRefs: ServicePageAttachmentRefsSchema.optional()
27531
27518
  }).strict();
@@ -27537,12 +27524,12 @@ var ServicePageEditEstimateResponseSchema = z118.object({
27537
27524
  }).strict();
27538
27525
  var ServicePageGenerationQuoteRequestSchema = z118.object({
27539
27526
  expectedRevision: z118.number().int().nonnegative(),
27540
- baseCandidateOperationId: z118.string().uuid().transform((id6) => id6.toLowerCase()).optional(),
27527
+ baseCandidateOperationId: z118.string().guid().transform((id6) => id6.toLowerCase()).optional(),
27541
27528
  instruction: ServicePageEditInstructionSchema.optional(),
27542
27529
  attachmentRefs: ServicePageAttachmentRefsSchema.optional()
27543
27530
  }).strict();
27544
27531
  var ServicePageQuoteResponseSchema = z118.object({
27545
- quoteId: z118.string().uuid(),
27532
+ quoteId: z118.string().guid(),
27546
27533
  purpose: ServicePageQuotePurposeSchema,
27547
27534
  expectedRevision: z118.number().int().nonnegative(),
27548
27535
  requestHash: z118.string().regex(/^[a-f0-9]{64}$/),
@@ -27556,16 +27543,16 @@ var ServicePageQuoteResponseSchema = z118.object({
27556
27543
  requiresConfirmation: z118.literal(true)
27557
27544
  }).strict();
27558
27545
  var ServicePageGenerateRequestSchema = z118.object({
27559
- quoteId: z118.string().uuid(),
27560
- idempotencyKey: z118.string().uuid(),
27546
+ quoteId: z118.string().guid(),
27547
+ idempotencyKey: z118.string().guid(),
27561
27548
  expectedRevision: z118.number().int().nonnegative(),
27562
- baseCandidateOperationId: z118.string().uuid().transform((id6) => id6.toLowerCase()).optional(),
27549
+ baseCandidateOperationId: z118.string().guid().transform((id6) => id6.toLowerCase()).optional(),
27563
27550
  instruction: ServicePageEditInstructionSchema.optional(),
27564
27551
  attachmentRefs: ServicePageAttachmentRefsSchema.optional()
27565
27552
  }).strict();
27566
27553
  var SERVICE_PAGE_CREATION_MAX_ATTEMPTS = 3;
27567
27554
  var ServicePageCreationMarkerSchema = z118.object({
27568
- rootOperationId: z118.string().uuid().optional(),
27555
+ rootOperationId: z118.string().guid().optional(),
27569
27556
  attempt: z118.number().int().min(1).max(SERVICE_PAGE_CREATION_MAX_ATTEMPTS)
27570
27557
  }).strict();
27571
27558
  var ServicePageCreationEstimateRequestSchema = z118.object({
@@ -27600,8 +27587,8 @@ var ServicePageOperationStatusSchema = z118.enum([
27600
27587
  "requires_reconciliation"
27601
27588
  ]);
27602
27589
  var ServicePageOperationResponseSchema = z118.object({
27603
- opId: z118.string().uuid(),
27604
- servicePageId: z118.string().uuid(),
27590
+ opId: z118.string().guid(),
27591
+ servicePageId: z118.string().guid(),
27605
27592
  kind: z118.enum([
27606
27593
  "fact_extraction",
27607
27594
  "generation"
@@ -27616,7 +27603,7 @@ var ServicePageOperationResponseSchema = z118.object({
27616
27603
  recoverable: z118.boolean()
27617
27604
  }).strict();
27618
27605
  var ServicePageEditHistoryItemSchema = z118.object({
27619
- opId: z118.string().uuid(),
27606
+ opId: z118.string().guid(),
27620
27607
  instruction: ServicePageEditInstructionSchema,
27621
27608
  status: ServicePageOperationStatusSchema,
27622
27609
  expectedRevision: z118.number().int().nonnegative(),
@@ -27631,8 +27618,8 @@ var ServicePageEditHistoryItemSchema = z118.object({
27631
27618
  }).strict();
27632
27619
  var ServicePageEditHistorySchema = z118.array(ServicePageEditHistoryItemSchema).max(50).default([]);
27633
27620
  var ServicePageOperationJobSchema = z118.object({
27634
- operationId: z118.string().uuid(),
27635
- servicePageId: z118.string().uuid(),
27621
+ operationId: z118.string().guid(),
27622
+ servicePageId: z118.string().guid(),
27636
27623
  userId: z118.string().min(1).max(256),
27637
27624
  kind: z118.enum([
27638
27625
  "fact_extraction",
@@ -27641,22 +27628,22 @@ var ServicePageOperationJobSchema = z118.object({
27641
27628
  }).strict();
27642
27629
  var ServicePageDraftUpdateRequestSchema = z118.object({
27643
27630
  expectedRevision: z118.number().int().nonnegative(),
27644
- idempotencyKey: z118.string().uuid(),
27645
- candidateOperationId: z118.string().uuid().transform((id6) => id6.toLowerCase()).optional(),
27631
+ idempotencyKey: z118.string().guid(),
27632
+ candidateOperationId: z118.string().guid().transform((id6) => id6.toLowerCase()).optional(),
27646
27633
  artifact: ServiceLandingArtifactSchema
27647
27634
  }).strict();
27648
27635
  var ServicePagePublishRequestSchema = z118.object({
27649
27636
  expectedRevision: z118.number().int().nonnegative(),
27650
27637
  slug: z118.string().trim().toLowerCase().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/).max(64),
27651
- idempotencyKey: z118.string().uuid()
27638
+ idempotencyKey: z118.string().guid()
27652
27639
  }).strict();
27653
27640
  var ServicePageUnpublishRequestSchema = z118.object({
27654
27641
  publishedRevision: z118.number().int().positive(),
27655
- idempotencyKey: z118.string().uuid()
27642
+ idempotencyKey: z118.string().guid()
27656
27643
  }).strict();
27657
27644
  var ServicePageSummarySchema = z118.object({
27658
- id: z118.string().uuid(),
27659
- brandId: z118.string().uuid().nullable(),
27645
+ id: z118.string().guid(),
27646
+ brandId: z118.string().guid().nullable(),
27660
27647
  businessName: z118.string().trim().min(1).max(120).nullable(),
27661
27648
  status: ServicePageStatusSchema,
27662
27649
  draftRevision: z118.number().int().nonnegative(),
@@ -27700,7 +27687,7 @@ var ServicePageListResponseSchema = z118.object({
27700
27687
  pages: z118.array(ServicePageSummarySchema)
27701
27688
  }).strict();
27702
27689
  var ServicePageIntakeResponseSchema = z118.object({
27703
- servicePageId: z118.string().uuid(),
27690
+ servicePageId: z118.string().guid(),
27704
27691
  draftRevision: z118.number().int().nonnegative(),
27705
27692
  sources: z118.array(ServicePageSourceSchema).max(50),
27706
27693
  facts: ServicePageFactsSchema,
@@ -27709,13 +27696,13 @@ var ServicePageIntakeResponseSchema = z118.object({
27709
27696
  assetsById: z118.record(AssetIdSchema, ServicePagePublicAssetSchema)
27710
27697
  }).strict();
27711
27698
  var ServicePagePreviewResponseSchema = z118.object({
27712
- servicePageId: z118.string().uuid(),
27699
+ servicePageId: z118.string().guid(),
27713
27700
  revision: z118.number().int().nonnegative(),
27714
27701
  artifact: ServiceLandingArtifactSchema,
27715
27702
  assetsById: z118.record(AssetIdSchema, ServicePagePublicAssetSchema)
27716
27703
  }).strict();
27717
27704
  var ServicePageAdminViewSchema = z118.object({
27718
- id: z118.string().uuid(),
27705
+ id: z118.string().guid(),
27719
27706
  businessName: z118.string().trim().min(1).max(120).nullable(),
27720
27707
  state: z118.enum([
27721
27708
  "created",
@@ -27728,7 +27715,7 @@ var ServicePageAdminViewSchema = z118.object({
27728
27715
  }).strict();
27729
27716
  var ServicePagePreviewRequestSchema = z118.object({
27730
27717
  expectedRevision: z118.number().int().nonnegative(),
27731
- candidateOperationId: z118.string().uuid().optional(),
27718
+ candidateOperationId: z118.string().guid().optional(),
27732
27719
  artifact: ServiceLandingArtifactSchema.optional()
27733
27720
  }).strict().superRefine((request, context) => {
27734
27721
  if (!request.artifact && !request.candidateOperationId) {
@@ -27886,7 +27873,7 @@ var FlightRecorderEntrySchema = z120.object({
27886
27873
  elements: z120.array(FlightRecorderElementSchema).optional(),
27887
27874
  distillation: FlightRecorderDistillationSchema.optional(),
27888
27875
  // Raw payload (sanitized of secrets)
27889
- rawPayload: z120.record(z120.unknown())
27876
+ rawPayload: z120.record(z120.string(), z120.unknown())
27890
27877
  });
27891
27878
  var FlightRecorderQuerySchema = z120.object({
27892
27879
  taskId: z120.string().min(1),
@@ -27941,7 +27928,7 @@ var Url = z122.string().url().refine((value) => {
27941
27928
  var ClassicLandingAssetBlockSchema = z122.discriminatedUnion("kind", [
27942
27929
  z122.object({
27943
27930
  kind: z122.literal("image"),
27944
- ownerTaskId: z122.string().uuid(),
27931
+ ownerTaskId: z122.string().guid(),
27945
27932
  sourceIndex: z122.number().int().positive(),
27946
27933
  variantIndex: z122.number().int().nonnegative(),
27947
27934
  url: Url,
@@ -27951,8 +27938,8 @@ var ClassicLandingAssetBlockSchema = z122.discriminatedUnion("kind", [
27951
27938
  }).strict(),
27952
27939
  z122.object({
27953
27940
  kind: z122.literal("gif"),
27954
- ownerTaskId: z122.string().uuid(),
27955
- gifId: z122.string().uuid(),
27941
+ ownerTaskId: z122.string().guid(),
27942
+ gifId: z122.string().guid(),
27956
27943
  gifRevision: z122.number().int().nonnegative(),
27957
27944
  demo: LandingGifReadableSchema,
27958
27945
  historicalDelivery: z122.literal(true).optional()
@@ -27960,10 +27947,10 @@ var ClassicLandingAssetBlockSchema = z122.discriminatedUnion("kind", [
27960
27947
  ]);
27961
27948
  var PublishedClassicLandingSchema = z122.object({
27962
27949
  version: z122.literal(1),
27963
- ownerTaskId: z122.string().uuid(),
27950
+ ownerTaskId: z122.string().guid(),
27964
27951
  documentRevision: z122.number().int().nonnegative(),
27965
27952
  ownerRevisions: z122.array(z122.object({
27966
- ownerTaskId: z122.string().uuid(),
27953
+ ownerTaskId: z122.string().guid(),
27967
27954
  landingRevision: z122.number().int().nonnegative()
27968
27955
  }).strict()).max(100),
27969
27956
  blocks: z122.array(ClassicLandingAssetBlockSchema).max(100)
@@ -28010,18 +27997,18 @@ import { z as z123 } from "zod";
28010
27997
  var DropiCountrySchema = z123.enum(DROPI_COUNTRY_CODES);
28011
27998
  var DropiCountryQuerySchema = z123.object({
28012
27999
  countryCode: DropiCountrySchema.default("CO"),
28013
- connectionId: z123.string().uuid().optional()
28000
+ connectionId: z123.string().guid().optional()
28014
28001
  }).strict();
28015
28002
  var ConnectDropiFinancialSchema = z123.object({
28016
28003
  countryCode: DropiCountrySchema.default("CO"),
28017
- connectionId: z123.string().uuid().optional(),
28004
+ connectionId: z123.string().guid().optional(),
28018
28005
  label: z123.string().trim().min(1).max(80).optional(),
28019
28006
  integrationKey: z123.string().trim().min(1).max(4096).regex(/^[\x21-\x7e]+$/)
28020
28007
  }).strict();
28021
28008
  var SyncDropiFinancialSchema = z123.object({
28022
28009
  countryCode: DropiCountrySchema.optional(),
28023
- operationId: z123.string().uuid().optional(),
28024
- connectionId: z123.string().uuid().optional(),
28010
+ operationId: z123.string().guid().optional(),
28011
+ connectionId: z123.string().guid().optional(),
28025
28012
  since: z123.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional(),
28026
28013
  until: z123.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional()
28027
28014
  }).strict();
@@ -28029,7 +28016,7 @@ var connectionCountries = z123.array(DropiCountrySchema).max(DROPI_COUNTRY_CODES
28029
28016
  var DropiFinancialConnectionsSchema = z123.object({
28030
28017
  connectedCountries: connectionCountries,
28031
28018
  connections: z123.array(z123.object({
28032
- connectionId: z123.string().uuid(),
28019
+ connectionId: z123.string().guid(),
28033
28020
  countryCode: DropiCountrySchema,
28034
28021
  label: z123.string().min(1).max(80)
28035
28022
  }).strict()).max(21).optional(),
@@ -28039,7 +28026,7 @@ var DropiFinancialConnectionsSchema = z123.object({
28039
28026
  var DropiFinancialStatusSchema = z123.object({
28040
28027
  enabled: z123.boolean(),
28041
28028
  connected: z123.boolean(),
28042
- connectionId: z123.string().uuid().optional(),
28029
+ connectionId: z123.string().guid().optional(),
28043
28030
  connectionCount: z123.number().int().nonnegative().optional(),
28044
28031
  label: z123.string().min(1).max(80).optional(),
28045
28032
  countryCode: DropiCountrySchema,
@@ -28166,7 +28153,7 @@ var ServiceImageContextSchema = z124.object({
28166
28153
  // ../../packages/types/src/brand-creation.ts
28167
28154
  import { z as z125 } from "zod";
28168
28155
  var BrandCreationReceiptSchema = z125.object({
28169
- brandId: z125.string().uuid(),
28156
+ brandId: z125.string().guid(),
28170
28157
  status: z125.enum([
28171
28158
  "extracting",
28172
28159
  "ready",
@@ -28309,7 +28296,7 @@ var WebsiteCaptureRequestSchema = z127.object({
28309
28296
  language: MotionGraphicsLanguageSchema
28310
28297
  }).strict();
28311
28298
  var WebsiteCaptureResponseSchema = z127.object({
28312
- captureId: z127.string().uuid(),
28299
+ captureId: z127.string().guid(),
28313
28300
  status: WebsiteCaptureStatusSchema,
28314
28301
  expiresAt: z127.string().datetime(),
28315
28302
  previewUrl: z127.string().url().optional(),
@@ -28318,7 +28305,7 @@ var WebsiteCaptureResponseSchema = z127.object({
28318
28305
  cause: WebsiteCaptureCauseSchema.optional()
28319
28306
  });
28320
28307
  var WebsiteCaptureJobSchema = WebsiteCaptureRequestSchema.extend({
28321
- captureId: z127.string().uuid(),
28308
+ captureId: z127.string().guid(),
28322
28309
  attempt: z127.number().int().positive(),
28323
28310
  leaseUntil: z127.string().datetime(),
28324
28311
  /** Public profile document prepared by the API; never contains a provider credential. */
@@ -28481,7 +28468,7 @@ var image = z128.object({
28481
28468
  width: z128.number().int().positive(),
28482
28469
  height: z128.number().int().positive(),
28483
28470
  adCopy: nullableText,
28484
- rawResponse: z128.unknown()
28471
+ rawResponse: z128.unknown().optional()
28485
28472
  });
28486
28473
  var ProductDemoSnapshotSchema = z128.object({
28487
28474
  /** Optional only for packs frozen before seller review drafts were captured. */
@@ -28494,12 +28481,12 @@ var ProductDemoSnapshotSchema = z128.object({
28494
28481
  country: nullableText,
28495
28482
  features: z128.array(text3).max(100),
28496
28483
  form: nullableText,
28497
- details: z128.unknown(),
28484
+ details: z128.unknown().optional(),
28498
28485
  isCombo: z128.boolean(),
28499
- comboItems: z128.unknown(),
28486
+ comboItems: z128.unknown().optional(),
28500
28487
  images: z128.array(text3).min(1).max(50),
28501
28488
  cleanImages: z128.array(text3).max(50),
28502
- cleanImagesMeta: z128.unknown()
28489
+ cleanImagesMeta: z128.unknown().optional()
28503
28490
  }),
28504
28491
  angles: z128.array(z128.object({
28505
28492
  content: text3,
@@ -28518,7 +28505,7 @@ var ProductDemoSnapshotSchema = z128.object({
28518
28505
  durationSeconds: z128.number().int().positive().nullable(),
28519
28506
  format: VideoFormat,
28520
28507
  resultUrls: z128.array(text3).min(1).max(10),
28521
- rawResponse: z128.unknown(),
28508
+ rawResponse: z128.unknown().optional(),
28522
28509
  adCopy: nullableText
28523
28510
  })).min(1).max(10),
28524
28511
  landingImages: z128.array(z128.object({
@@ -28529,17 +28516,17 @@ var ProductDemoSnapshotSchema = z128.object({
28529
28516
  height: z128.number().int().positive(),
28530
28517
  notes: nullableText
28531
28518
  })).max(20),
28532
- landingConfig: z128.unknown(),
28519
+ landingConfig: z128.unknown().optional(),
28533
28520
  image,
28534
- productUseSheet: z128.unknown(),
28535
- productTruth: z128.unknown(),
28521
+ productUseSheet: z128.unknown().optional(),
28522
+ productTruth: z128.unknown().optional(),
28536
28523
  productReference: z128.object({
28537
28524
  referenceEvidenceVersion: z128.number().int().nonnegative(),
28538
28525
  planVersion: z128.number().int().positive(),
28539
28526
  baseReferenceSetHash: text3,
28540
- referenceSet: z128.unknown(),
28541
- preparationPlan: z128.unknown(),
28542
- canonicalIdentityAnchors: z128.unknown()
28527
+ referenceSet: z128.unknown().optional(),
28528
+ preparationPlan: z128.unknown().optional(),
28529
+ canonicalIdentityAnchors: z128.unknown().optional()
28543
28530
  })
28544
28531
  });
28545
28532
  var ProductDemoPhaseSchema = z128.enum([
@@ -28568,10 +28555,10 @@ var ProductDemoTaskStateSchema = z128.object({
28568
28555
  // ../../packages/types/src/demo-mode-service-page-assets.ts
28569
28556
  import { z as z129 } from "zod";
28570
28557
  var DemoServicePageAssetSourceSchema = z129.object({
28571
- pageId: z129.string().uuid(),
28558
+ pageId: z129.string().guid(),
28572
28559
  ownerId: z129.string().min(1),
28573
28560
  assets: z129.array(z129.object({
28574
- id: z129.string().uuid(),
28561
+ id: z129.string().guid(),
28575
28562
  storageKey: z129.string().min(1).max(1024),
28576
28563
  mediaType: z129.enum([
28577
28564
  "image/webp",
@@ -28647,14 +28634,14 @@ var DEMO_MODE_OPTIONAL_TEMPLATE_KEYS = [
28647
28634
  ...DEMO_MODE_OPTIONAL_MOTION_TEMPLATE_KEYS,
28648
28635
  ...DEMO_MODE_PRODUCT_ALL_TEMPLATE_KEYS
28649
28636
  ];
28650
- var optionalTemplateId = z130.preprocess((value) => value === "" ? void 0 : value, z130.string().uuid().optional());
28637
+ var optionalTemplateId = z130.preprocess((value) => value === "" ? void 0 : value, z130.string().guid().optional());
28651
28638
  var DemoModeTemplatesSchema = z130.object({
28652
- brandId: z130.string().uuid(),
28653
- servicePageId: z130.string().uuid(),
28654
- motionTaskId: z130.string().uuid(),
28639
+ brandId: z130.string().guid(),
28640
+ servicePageId: z130.string().guid(),
28641
+ motionTaskId: z130.string().guid(),
28655
28642
  motionVariantTaskId: optionalTemplateId,
28656
28643
  motionThirdTaskId: optionalTemplateId,
28657
- imageTaskId: z130.string().uuid(),
28644
+ imageTaskId: z130.string().guid(),
28658
28645
  productLandingTaskId: optionalTemplateId,
28659
28646
  productVideoTaskId: optionalTemplateId,
28660
28647
  productVideoVariantTaskId: optionalTemplateId,
@@ -28695,7 +28682,7 @@ var DemoModeSnapshotSchema = z130.object({
28695
28682
  product: ProductDemoSnapshotSchema.optional(),
28696
28683
  brand: z130.object({
28697
28684
  /** Columnas de identidad de `Brand` listas para un `update` (sin id/userId/slug/estado/fechas). */
28698
- identity: z130.record(z130.unknown()),
28685
+ identity: z130.record(z130.string(), z130.unknown()),
28699
28686
  productSamples: z130.array(z130.object({
28700
28687
  name: z130.string(),
28701
28688
  priceCents: z130.number().int().nullable(),
@@ -28715,9 +28702,9 @@ var DemoModeSnapshotSchema = z130.object({
28715
28702
  }))
28716
28703
  }),
28717
28704
  servicePage: z130.object({
28718
- facts: z130.unknown(),
28719
- review: z130.unknown(),
28720
- artifact: z130.unknown(),
28705
+ facts: z130.unknown().optional(),
28706
+ review: z130.unknown().optional(),
28707
+ artifact: z130.unknown().optional(),
28721
28708
  /** Optional only for snapshots saved before page-owned demo media. */
28722
28709
  assetSource: DemoServicePageAssetSourceSchema.optional()
28723
28710
  }),
@@ -28743,7 +28730,7 @@ var DemoModeSnapshotSchema = z130.object({
28743
28730
  width: z130.number().int(),
28744
28731
  height: z130.number().int(),
28745
28732
  adCopy: nullableString,
28746
- rawResponse: z130.unknown()
28733
+ rawResponse: z130.unknown().optional()
28747
28734
  })
28748
28735
  });
28749
28736
  var DemoModeConfigSchema = DemoModeEditableObjectSchema.extend({
@@ -28808,7 +28795,7 @@ var DemoModeJobSchema = z130.object({
28808
28795
  productPhase: ProductDemoJobPhaseSchema.optional(),
28809
28796
  step: DemoModeStepSchema,
28810
28797
  /** brandId | servicePageOperationId | taskId según el flujo. */
28811
- targetId: z130.string().uuid(),
28798
+ targetId: z130.string().guid(),
28812
28799
  userId: z130.string().min(1),
28813
28800
  /** Solo marca: la generación de extracción que el guion completa. */
28814
28801
  generation: z130.number().int().positive().optional(),
@@ -29289,7 +29276,7 @@ var ApiClient = class {
29289
29276
  };
29290
29277
 
29291
29278
  // src/index.ts
29292
- var MCP_VERSION = "12.3.1";
29279
+ var MCP_VERSION = "12.4.1";
29293
29280
 
29294
29281
  // src/meta-upload-app.ts
29295
29282
  import { readFileSync } from "fs";
@@ -30287,7 +30274,7 @@ __name(resolveMediaRef, "resolveMediaRef");
30287
30274
  import { z as z132 } from "zod";
30288
30275
  var Lang = z132.string().regex(/^[a-z]{2}(?:[-_][a-zA-Z]{2})?$/, "Usa un c\xF3digo de idioma BCP-47, por ejemplo es, en-US o pt-BR").max(10);
30289
30276
  var Country = z132.string().min(2).max(3);
30290
- var LandingStrategyEnum = LandingStrategySchema;
30277
+ var LandingStrategyEnum = SelectableLandingStrategySchema;
30291
30278
  var LandingImageFormatEnum = LandingImageFormatSchema;
30292
30279
  var VideoPresetEnum = VideoPreset.extract([
30293
30280
  "auto",
@@ -30451,7 +30438,7 @@ var ImageCreativeAspectRatioEnum = ImageCreativeAspectRatio;
30451
30438
  var ImageRefSchema = z132.object({
30452
30439
  url: z132.string().url().optional().describe('URL p\xFAblica HTTPS de la foto. Ej: una URL de Shopify CDN, Cloudinary, Imgur. \xDAsala cuando el usuario te diga "est\xE1 en X.com/foto.jpg" o cuando la foto ya est\xE9 hospedada.'),
30453
30440
  path: z132.string().min(1).optional().describe('Ruta del archivo en el computador del usuario. Ej: "/Users/maria/Desktop/foto.jpg", "~/Pictures/camiseta.png", "C:\\Users\\Maria\\Desktop\\foto.jpg". El MCP local la lee del disco y la sube. SOLO funciona cuando el MCP corre local (stdio). NO funciona en mcp.productmaker.app (HTTP) \u2014 ah\xED usa `url`.'),
30454
- assetId: z132.string().uuid().optional().describe("ID opaco devuelto por check_media_upload. \xDAsalo para una imagen subida desde el MCP App; ProductMaker adopta el archivo directamente y el MCP nunca descarga sus bytes.")
30441
+ assetId: z132.string().guid().optional().describe("ID opaco devuelto por check_media_upload. \xDAsalo para una imagen subida desde el MCP App; ProductMaker adopta el archivo directamente y el MCP nunca descarga sus bytes.")
30455
30442
  }).refine((v) => [
30456
30443
  v.url,
30457
30444
  v.path,
@@ -31536,8 +31523,8 @@ function serviceVideoResultMedia(result) {
31536
31523
  }
31537
31524
  __name(serviceVideoResultMedia, "serviceVideoResultMedia");
31538
31525
  var CreativeVariantIdentity = z133.object({
31539
- variantTaskId: z133.string().uuid(),
31540
- sourceTaskId: z133.string().uuid(),
31526
+ variantTaskId: z133.string().guid(),
31527
+ sourceTaskId: z133.string().guid(),
31541
31528
  kind: TaskCreativeVariantKind,
31542
31529
  status: TaskStatusSchema,
31543
31530
  error: z133.string().optional()
@@ -32781,9 +32768,9 @@ var CreateAnimatedVideoInput = z135.object({
32781
32768
  "cancel",
32782
32769
  "generate"
32783
32770
  ]).default("prepare").describe("prepare inicia una captura gratuita; status consulta websiteCaptureId; cancel la cancela; generate requiere captura ready y confirmaci\xF3n expl\xEDcita del usuario despu\xE9s de mostrar vista previa y precio."),
32784
- brandId: z135.string().uuid().optional().describe("ID de un servicio propio y listo (de create_brand). Obligatorio al preparar y crear videos nuevos. Conserva el mismo brandId en reintentos; si recuperas una generaci\xF3n hist\xF3rica aceptada sin este campo, om\xEDtelo como en la petici\xF3n original. status/cancel no lo necesitan."),
32785
- websiteCaptureId: z135.string().uuid().optional().describe("ID de la captura preparada. Obligatorio para status/cancel/generate; no inventarlo."),
32786
- generationRequestId: z135.string().uuid().optional().describe("Identidad opcional de una generaci\xF3n confirmada. Repite el mismo UUID al recuperar una respuesta perdida; usa otro \xFAnicamente cuando el usuario pida y confirme otro video, nunca por un error de transporte."),
32771
+ brandId: z135.string().guid().optional().describe("ID de un servicio propio y listo (de create_brand). Obligatorio al preparar y crear videos nuevos. Conserva el mismo brandId en reintentos; si recuperas una generaci\xF3n hist\xF3rica aceptada sin este campo, om\xEDtelo como en la petici\xF3n original. status/cancel no lo necesitan."),
32772
+ websiteCaptureId: z135.string().guid().optional().describe("ID de la captura preparada. Obligatorio para status/cancel/generate; no inventarlo."),
32773
+ generationRequestId: z135.string().guid().optional().describe("Identidad opcional de una generaci\xF3n confirmada. Repite el mismo UUID al recuperar una respuesta perdida; usa otro \xFAnicamente cuando el usuario pida y confirme otro video, nunca por un error de transporte."),
32787
32774
  confirmed: z135.boolean().optional().describe("Solo true despu\xE9s de que el usuario confirme esta captura, formato, duraci\xF3n, idioma y precio. Obligatorio para generate; preparar no genera ni cobra."),
32788
32775
  // Plain text, not `.url()`: users type «cal.com», and the web accepts it.
32789
32776
  // normalizeWebAddress (shared with the web) adds https:// and refuses
@@ -32873,7 +32860,7 @@ var AnimatedVideoResultSchema = z135.object({
32873
32860
  index: MotionGraphicsHookVariantsSchema,
32874
32861
  count: MotionGraphicsHookVariantsSchema,
32875
32862
  tasks: z135.array(z135.object({
32876
- taskId: z135.string().uuid(),
32863
+ taskId: z135.string().guid(),
32877
32864
  index: MotionGraphicsHookVariantsSchema,
32878
32865
  status: z135.enum([
32879
32866
  "queued",
@@ -33184,7 +33171,7 @@ function registerAnimatedVideoTools(server, api) {
33184
33171
  nowMs: 0
33185
33172
  })
33186
33173
  });
33187
- const parsedTaskIds = z135.array(z135.string().uuid()).min(1).max(MOTION_GRAPHICS_HOOK_VARIANTS_MAX).safeParse(created.taskIds);
33174
+ const parsedTaskIds = z135.array(z135.string().guid()).min(1).max(MOTION_GRAPHICS_HOOK_VARIANTS_MAX).safeParse(created.taskIds);
33188
33175
  const taskIds = parsedTaskIds.success && parsedTaskIds.data[0] === created.taskId ? parsedTaskIds.data : void 0;
33189
33176
  const receipt = {
33190
33177
  taskId: created.taskId,
@@ -33228,7 +33215,7 @@ __name(registerAnimatedVideoTools, "registerAnimatedVideoTools");
33228
33215
  // src/tools/winning-product-image.ts
33229
33216
  import { z as z136 } from "zod";
33230
33217
  var WinnerReferenceInput = z136.object({
33231
- runId: z136.string().uuid(),
33218
+ runId: z136.string().guid(),
33232
33219
  candidateSourceId: z136.string().trim().min(1).max(160)
33233
33220
  }).strict().describe("Referencia opaca de un producto devuelto por find_winning_products/get_product_research_run.");
33234
33221
  async function resolveWinnerImages(api, winnerReference, images) {
@@ -33269,7 +33256,7 @@ var editTaskDraftGuidance = getProductMakerCapabilityModelGuidance("edit_task_dr
33269
33256
  var CreateProductTaskInput = z137.object({
33270
33257
  images: ImagesInput.optional().describe("1\u20135 fotos del mismo producto. Omitir \xFAnicamente cuando projectId apunta a un proyecto propio con imagen guardada."),
33271
33258
  winnerReference: WinnerReferenceInput.optional().describe(WINNER_IMAGE_CHOICE_GUIDANCE),
33272
- projectId: z137.string().uuid().optional().describe("Opcional. Proyecto guiado propio. Permite continuar sin volver a subir la imagen guardada; nunca evita cr\xE9ditos, cuotas ni confirmaciones."),
33259
+ projectId: z137.string().guid().optional().describe("Opcional. Proyecto guiado propio. Permite continuar sin volver a subir la imagen guardada; nunca evita cr\xE9ditos, cuotas ni confirmaciones."),
33273
33260
  productUrl: z137.string().url().optional().describe("Opcional. URL de la p\xE1gina del producto (Shopify, AliExpress, Amazon, etc.) para enriquecer el contexto. Si se omite, la IA infiere todo desde la imagen."),
33274
33261
  language: Lang.describe('C\xF3digo de idioma para el contenido generado. Ejemplos: "es", "en", "pt". REQUERIDO \u2014 si el usuario no lo especific\xF3, PREG\xDANTALE antes de invocar. NUNCA infieras desde el contexto del chat ni asumas "es" por default.'),
33275
33262
  country: Country.describe('C\xF3digo ISO del pa\xEDs objetivo. Ejemplos: "CO", "MX", "US", "AR". Define moneda, m\xE9todos de pago locales y tono. REQUERIDO \u2014 si el usuario no lo especific\xF3, PREG\xDANTALE antes de invocar. NUNCA infieras desde el contexto del chat.'),
@@ -33302,13 +33289,13 @@ var CreateProductTaskInput = z137.object({
33302
33289
  competitorScanEnabled: z137.boolean().optional().describe("Opcional. Default false: omitirlo significa SIN estudio de mercado. Antes de crear, llama estimate_market_study_cost con kind=product_task, muestra al usuario el costo con y sin estudio y preg\xFAntale si lo quiere; env\xEDa true solo si lo acepta (o si solicita la narrativa an\xE1lisis de mercado). Si la tarea incluye video, true analiza anuncios de la competencia y desbloquea la narrativa an\xE1lisis de mercado; si el estudio no encuentra datos suficientes, degrada al planner cl\xE1sico."),
33303
33290
  generateAiEdit: AiEditRequestSchema.optional().describe('Opcional. Pide la Edici\xF3n con IA: una pasada que a\xF1ade texto, efectos y m\xFAsica sobre cada video entregado (variante with_ai_edit; se cobra al entregar, por video). Nivel: "economy" (Econ\xF3mica, Sonnet 5.5, m\xE1s barata) o "pro" (Opus 5.5, mejor calidad, ~10 min). true equivale a "pro"; false/omitido = sin edici\xF3n.'),
33304
33291
  replicateWinnerWhenFound: z137.boolean().optional().describe("Conserva la preferencia de copiar un ganador si existe. false estudia el mercado sin reemplazar un \xE1ngulo por el anuncio ganador. No a\xF1ade una pregunta obligatoria."),
33305
- brandId: z137.string().uuid().optional().describe("Opcional. ID de una marca del usuario; si se env\xEDa, el sistema usa su voz, colores y persona para enriquecer los outputs generados."),
33292
+ brandId: z137.string().guid().optional().describe("Opcional. ID de una marca del usuario; si se env\xEDa, el sistema usa su voz, colores y persona para enriquecer los outputs generados."),
33306
33293
  actorId: z137.string().trim().min(1).max(120).optional().describe("Opcional. ID de un personaje guardado (usa list_actors para verlos). Si lo env\xEDas, su foto y su voz mandan sobre la descripci\xF3n de texto."),
33307
33294
  creativeGender: CreativeGenderEnum.optional().describe('Opcional. QUI\xC9N APARECE EN PANTALLA en todos los creativos de la task: el presentador del video, las personas fotografiadas en la landing y la persona del anuncio. NO es la voz. M\xE1ndalo en cuanto el usuario lo diga en cualquier momento de la conversaci\xF3n y con cualquier redacci\xF3n ("quiero una mujer", "que salga un hombre", "esto es para hombres"): si no lo mandas, el g\xE9nero lo inventa la IA y el usuario recibe lo contrario de lo que pidi\xF3 sin ning\xFAn aviso. "mixed" solo cuando pida expl\xEDcitamente ambos. Si adem\xE1s mandas actorId, el personaje guardado manda sobre este campo.'),
33308
33295
  creativeDirection: z137.string().max(500).optional().describe('Opcional. Direcci\xF3n creativa en texto libre (colores, mood, estilo) que aplica a los outputs de IMAGEN y LANDING (no al video \u2014 el estilo/ambiente del video se dirige con scriptNotes). M\xC1XIMA PRIORIDAD: anula marca, colores y estilo por defecto. Ej. "amarillo y azul, minimalista". M\xE1x 500 caracteres.'),
33309
33296
  headline: z137.string().max(120).optional().describe("Opcional. Titular EXACTO a renderizar. Se imprime tal cual: la IA no lo reescribe, no lo acorta y no lo traduce. Se aplica a las IM\xC1GENES y a la portada de la landing de esta task (el video no lo usa; para el video usa scriptNotes). \xDAsalo cuando el copy es de marca y no es negociable. M\xE1x 120 caracteres. Si lo omites, la IA escribe el titular."),
33310
33297
  subheadline: z137.string().max(160).optional().describe("Opcional. Subt\xEDtulo EXACTO a renderizar, misma regla que headline. Independiente: puedes fijar solo el subt\xEDtulo. M\xE1x 160 caracteres."),
33311
- landingStrategy: LandingStrategyEnum.optional().describe('Opcional. Estructura de la landing cl\xE1sica cuando landing est\xE1 entre outputs: "classic" (estructura original probada y recomendada; default del primer rollout), "auto" (la IA decide; experimental), "pain_solution", "social_proof" (Landing Viral: UGC, WhatsApp, Instagram y evidencia social), "benefits_clarity", "offer_value" o "lifestyle_identity". Default "classic".'),
33298
+ landingStrategy: LandingStrategyEnum.optional().describe('Opcional. Estructura de la landing cl\xE1sica cuando landing est\xE1 entre outputs: "classic" (Landing cl\xE1sica de ProductMaker: estructura original probada y recomendada) o "social_proof" (Landing Viral: UGC, WhatsApp, Instagram y evidencia social). Default "classic".'),
33312
33299
  landingImageFormat: LandingImageFormatEnum.default("9:16").describe('Opcional. Formato/relaci\xF3n de aspecto de las im\xE1genes de la landing cl\xE1sica cuando landing est\xE1 entre outputs: "9:16" (vertical, por defecto), "4:5" (vertical compacto para feed) o "1:1" (cuadrado). Default "9:16".')
33313
33300
  }).strict();
33314
33301
  var CreateServiceVideoInput = z137.object({
@@ -33316,7 +33303,7 @@ var CreateServiceVideoInput = z137.object({
33316
33303
  additionalContext: z137.string().max(3e3).optional().describe('Instrucci\xF3n natural prioritaria. Ej.: "adapta el ritmo de estos competidores", "enfatiza reservas de demos" o restricciones de claims.'),
33317
33304
  language: Lang.describe("Idioma del video: es, en o pt."),
33318
33305
  voiceId: z137.string().trim().min(1).pipe(VoiceId).optional().describe('Opcional. Voz para toda la narraci\xF3n. Usa "auto" para que la IA la alinee con el presentador. Las voces del banco compartido fueron retiradas.'),
33319
- brandId: z137.string().uuid().optional().describe("Marca guardada del usuario. Aplica voz, mensajes, paleta y persona predeterminada."),
33306
+ brandId: z137.string().guid().optional().describe("Marca guardada del usuario. Aplica voz, mensajes, paleta y persona predeterminada."),
33320
33307
  reviewMode: z137.enum([
33321
33308
  "automatic",
33322
33309
  "guided"
@@ -33362,7 +33349,7 @@ var PendingActionPayload = z137.discriminatedUnion("kind", [
33362
33349
  kind: z137.literal("product_reference_set_approval"),
33363
33350
  scope: ProductReferenceScopeEnum.optional(),
33364
33351
  scopeKey: z137.string().min(1).max(120).optional(),
33365
- scopeSnapshotId: z137.string().uuid().optional(),
33352
+ scopeSnapshotId: z137.string().guid().optional(),
33366
33353
  expectedScopeHash: z137.string().min(1).max(128).optional(),
33367
33354
  decision: ProductReferenceResolutionDecisionEnum,
33368
33355
  reason: ProductReferenceRejectionReasonEnum.optional(),
@@ -33427,7 +33414,7 @@ var PendingActionPayload = z137.discriminatedUnion("kind", [
33427
33414
  }),
33428
33415
  z137.object({
33429
33416
  kind: z137.literal("service_angle_approval"),
33430
- angleId: z137.string().uuid().optional(),
33417
+ angleId: z137.string().guid().optional(),
33431
33418
  angleNumber: z137.number().int().positive().optional(),
33432
33419
  content: z137.string().min(1).max(480).optional(),
33433
33420
  creativeDirection: z137.string().min(1).max(1500).optional(),
@@ -33530,7 +33517,7 @@ var StatusForResolveSchema = z137.object({
33530
33517
  }).optional(),
33531
33518
  scope: ProductReferenceScopeEnum.optional(),
33532
33519
  scopeKey: z137.string().optional(),
33533
- scopeSnapshotId: z137.string().uuid().optional(),
33520
+ scopeSnapshotId: z137.string().guid().optional(),
33534
33521
  scopeHash: z137.string().optional(),
33535
33522
  baseReferenceSetHash: z137.string().optional(),
33536
33523
  phase: z137.enum([
@@ -33559,7 +33546,7 @@ var StatusForResolveSchema = z137.object({
33559
33546
  // dropped here, so the approval handler below could not echo it back on the
33560
33547
  // PATCH — the selection looked accepted and reached no render.
33561
33548
  angles: z137.array(z137.object({
33562
- id: z137.string().uuid(),
33549
+ id: z137.string().guid(),
33563
33550
  content: z137.string(),
33564
33551
  creativeDirection: z137.string(),
33565
33552
  actor: z137.string(),
@@ -33921,8 +33908,8 @@ ANTES de invocar, resume outputs, cantidad de videos y datos comerciales, explic
33921
33908
  server.registerTool("verify_landing_commerce", {
33922
33909
  description: getProductMakerCapabilityModelGuidance("verify_landing_commerce").summary + " Verifica una correcci\xF3n manual de precios, tachados o packs de una landing editable existente. Solo relee Shopify y los recibos externos; no cambia precios, inventario, SKU ni compra una edici\xF3n. Pasa taskId y editId de la edici\xF3n ya conocida; nunca inventes IDs ni pidas repetir el cambio. Devuelve el estado can\xF3nico por proveedor: conserva el aviso pendiente hasta confirmar los valores reales. Solo despu\xE9s de confirmar todos los valores, el servidor puede volver a habilitar la compra. Web guardada no demuestra publicaci\xF3n p\xFAblica ni checkout; muestra las correcciones y enlaces pendientes sin c\xF3digos t\xE9cnicos. La disponibilidad del editor conserva sus permisos actuales.",
33923
33910
  inputSchema: {
33924
- taskId: z137.string().uuid(),
33925
- editId: z137.string().uuid()
33911
+ taskId: z137.string().guid(),
33912
+ editId: z137.string().guid()
33926
33913
  },
33927
33914
  annotations: OVERWRITES_EXTERNAL
33928
33915
  }, async (input) => {
@@ -34201,7 +34188,7 @@ ANTES de invocar, resume outputs, cantidad de videos y datos comerciales, explic
34201
34188
  ...page.data,
34202
34189
  items: page.data.items.map((item) => {
34203
34190
  const servicePage = z137.object({
34204
- taskId: z137.string().uuid(),
34191
+ taskId: z137.string().guid(),
34205
34192
  resourceType: z137.literal("service_page")
34206
34193
  }).passthrough().safeParse(item);
34207
34194
  if (!servicePage.success) return item;
@@ -34713,7 +34700,7 @@ var CreateBrandInput = z138.object({
34713
34700
  "pt"
34714
34701
  ]).optional().describe("Idioma de la conversaci\xF3n. Solo se usa si la p\xE1gina del negocio no deja claro su idioma."),
34715
34702
  confirmed: z138.boolean().optional().describe("Solo true despu\xE9s de mostrar el precio y que el usuario acepte. Sin confirmed, start solo cotiza y no cobra."),
34716
- brandId: z138.string().uuid().optional().describe("ID de la marca. Obligatorio para status; no lo inventes.")
34703
+ brandId: z138.string().guid().optional().describe("ID de la marca. Obligatorio para status; no lo inventes.")
34717
34704
  }).strict();
34718
34705
  function normalizeBrandSourceUrl(raw) {
34719
34706
  const value = raw.trim();
@@ -35008,12 +34995,12 @@ var CreateServiceLandingInput = z139.object({
35008
34995
  "status",
35009
34996
  "publish"
35010
34997
  ]).default("prepare").describe("prepare (gratis) crea o retoma la landing de la marca y da el precio; build (pagado, confirmed=true) genera la p\xE1gina directamente con la marca y los datos guardados; status sigue el avance; publish la publica y devuelve su enlace."),
35011
- brandId: z139.string().uuid().optional().describe("ID de la marca (de create_brand). Obligatorio para prepare. Nunca un taskId de producto."),
35012
- servicePageId: z139.string().uuid().optional().describe("ID de la landing que devolvi\xF3 prepare. Obligatorio para build, status y publish."),
34998
+ brandId: z139.string().guid().optional().describe("ID de la marca (de create_brand). Obligatorio para prepare. Nunca un taskId de producto."),
34999
+ servicePageId: z139.string().guid().optional().describe("ID de la landing que devolvi\xF3 prepare. Obligatorio para build, status y publish."),
35013
35000
  businessInfo: z139.string().trim().max(SERVICE_LANDING_INFO_MAX_CHARS).optional().describe("Opcional. Lo que el usuario cont\xF3 del negocio y no estaba en su marca: servicios y precios, WhatsApp o tel\xE9fono, ciudad o zona, horarios. Copia sus palabras; no inventes datos."),
35014
35001
  confirmed: z139.boolean().optional().describe("Solo true despu\xE9s de mostrar el precio total y que el usuario acepte. Obligatorio para build."),
35015
35002
  maxCredits: z139.number().int().positive().optional().describe("El total en cr\xE9ditos que el usuario acept\xF3 (el que devolvi\xF3 prepare). Obligatorio para build: ninguna etapa se inicia si su precio supera este total."),
35016
- operationId: z139.string().uuid().optional().describe("Opcional en status: la operaci\xF3n que devolvi\xF3 build."),
35003
+ operationId: z139.string().guid().optional().describe("Opcional en status: la operaci\xF3n que devolvi\xF3 build."),
35017
35004
  slug: z139.string().trim().toLowerCase().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/).max(64).optional().describe("Opcional en publish: la direcci\xF3n corta de la p\xE1gina (ej. sanlucas-barberia). Si falta se usa la sugerida desde el nombre del negocio.")
35018
35005
  }).strict();
35019
35006
  function serviceKey(...parts) {
@@ -35407,7 +35394,7 @@ var LANGUAGE_TAGS = {
35407
35394
  pt: "pt-BR"
35408
35395
  };
35409
35396
  var CreateServiceImagesInput = z140.object({
35410
- brandId: z140.string().uuid().optional().describe("ID de un servicio propio y listo (de create_brand), obligatorio para cotizar y crear im\xE1genes nuevas. En un retry hist\xF3rico ya confirmado que originalmente no ten\xEDa este campo, conserva la petici\xF3n original. Nunca un taskId de producto."),
35397
+ brandId: z140.string().guid().optional().describe("ID de un servicio propio y listo (de create_brand), obligatorio para cotizar y crear im\xE1genes nuevas. En un retry hist\xF3rico ya confirmado que originalmente no ten\xEDa este campo, conserva la petici\xF3n original. Nunca un taskId de producto."),
35411
35398
  instruction: z140.string().trim().max(4e3).optional().describe("Opcional. Qu\xE9 servicio o promoci\xF3n mostrar, con las palabras del usuario (ej. \xABcorte + barba a $35.000 los martes\xBB). Si se omite, la IA propone la imagen usando la informaci\xF3n del servicio."),
35412
35399
  delegateToAi: z140.boolean().optional().describe("true si el usuario prefiere que la IA elija qu\xE9 mostrar a partir de su servicio. Tambi\xE9n se delega cuando instruction est\xE1 vac\xEDo."),
35413
35400
  format: z140.enum(SERVICE_IMAGE_FORMATS).optional().describe('Formato: "4:5" (feed, por defecto), "9:16" (historias/reels) o "1:1" (cuadrado).'),
@@ -35566,7 +35553,7 @@ var CreativeRefs = {
35566
35553
  buyerPersona: z141.string().optional().describe('Opcional. Descripci\xF3n del comprador objetivo. Ej. "Mujeres 35-50, profesionales urbanas". Si se omite, la IA infiere desde el \xE1ngulo y producto.'),
35567
35554
  isCombo: z141.boolean().optional().describe("Opcional. Si true, el creativo presenta el producto como combo/pack. Default false."),
35568
35555
  competitorScanEnabled: z141.boolean().optional().describe("Opcional. Default false: omitirlo significa SIN estudio de mercado. Antes de crear, llama estimate_market_study_cost, muestra al usuario el costo con y sin estudio y preg\xFAntale si lo quiere; env\xEDa true solo si lo acepta (o si solicita la narrativa an\xE1lisis de mercado). En video, true analiza anuncios de la competencia y desbloquea la narrativa an\xE1lisis de mercado; si el estudio no encuentra datos suficientes, degrada al planner cl\xE1sico."),
35569
- brandId: z141.string().uuid().optional().describe("Opcional. ID de una marca del usuario; si se env\xEDa, el sistema usa su voz, colores y persona para enriquecer el creativo.")
35556
+ brandId: z141.string().guid().optional().describe("Opcional. ID de una marca del usuario; si se env\xEDa, el sistema usa su voz, colores y persona para enriquecer el creativo.")
35570
35557
  };
35571
35558
  var VideoPresenter = z141.discriminatedUnion("mode", [
35572
35559
  z141.object({
@@ -35671,7 +35658,7 @@ var FreeVideoInput = z141.object({
35671
35658
  generateAiMusic: z141.boolean().default(false).describe('Opcional. Agrega m\xFAsica instrumental IA debajo del audio nativo. Default false. Equivale a generateAiEdit (nivel "pro"): la Edici\xF3n con IA trae su propia m\xFAsica.'),
35672
35659
  generateAiEdit: AiEditRequestSchema.optional().describe('Opcional. Pide la Edici\xF3n con IA: una pasada que a\xF1ade texto, gr\xE1ficos y m\xFAsica sobre el video ya entregado (variante with_ai_edit; se cobra al entregar). Nivel: "economy" (Econ\xF3mica, Sonnet 5.5, m\xE1s barata) o "pro" (Opus 5.5, mejor calidad, ~10 min). true equivale a "pro". Default sin edici\xF3n.'),
35673
35660
  addSubtitles: z141.boolean().default(false).describe("Opcional. Quema subt\xEDtulos usando el rawPrompt exacto. Default false."),
35674
- idempotencyKey: z141.string().uuid().optional().describe("Opcional. Se acepta por compatibilidad pero se ignora: la identidad del reintento se deriva autom\xE1ticamente de los argumentos sem\xE1nticos, as\xED que un retry con los mismos argumentos ya es idempotente sin este campo.")
35661
+ idempotencyKey: z141.string().guid().optional().describe("Opcional. Se acepta por compatibilidad pero se ignora: la identidad del reintento se deriva autom\xE1ticamente de los argumentos sem\xE1nticos, as\xED que un retry con los mismos argumentos ya es idempotente sin este campo.")
35675
35662
  }).strict();
35676
35663
  var imageStyleList = ImageCreativeStyleEnum.options.join(" | ");
35677
35664
  var ImageCreativeSetup = z141.discriminatedUnion("mode", [
@@ -35773,7 +35760,7 @@ var ImageInput = z141.object({
35773
35760
  brandId: CreativeRefs.brandId
35774
35761
  });
35775
35762
  var EditImageCreativeInput = z141.object({
35776
- taskId: z141.string().uuid().describe("ID de la tarea de imagen ya finalizada."),
35763
+ taskId: z141.string().guid().describe("ID de la tarea de imagen ya finalizada."),
35777
35764
  variantIndex: z141.number().int().min(0).max(10).describe("\xCDndice de la variante a corregir (0 = primera imagen)."),
35778
35765
  clientRequestId: z141.string().min(1).max(160).optional().describe("Identidad estable de esta correcci\xF3n; reutil\xEDzala al reconciliar una respuesta perdida, no para otra instrucci\xF3n."),
35779
35766
  instruction: z141.string().min(1).max(1e3).describe('Qu\xE9 cambiar en esa imagen. Ej. "quita el badge de env\xEDo gratis", "cambia el fondo a blanco".')
@@ -36068,8 +36055,8 @@ function registerCreativeTools(server, api, { transport = "http", proxyBaseUrl =
36068
36055
  server.registerTool("get_image_edit_status", {
36069
36056
  description: imageEditStatusGuidance.summary,
36070
36057
  inputSchema: {
36071
- taskId: z141.string().uuid(),
36072
- operationId: z141.string().uuid()
36058
+ taskId: z141.string().guid(),
36059
+ operationId: z141.string().guid()
36073
36060
  },
36074
36061
  annotations: READS_INTERNAL,
36075
36062
  _meta: taskResultsToolMeta()
@@ -36208,7 +36195,7 @@ var CreativeVariantKindEnum = z142.enum([
36208
36195
  "landing"
36209
36196
  ]);
36210
36197
  var EstimateCreativeVariantInputBase = z142.object({
36211
- sourceTaskId: z142.string().uuid().describe("ID de la tarea original completada."),
36198
+ sourceTaskId: z142.string().guid().describe("ID de la tarea original completada."),
36212
36199
  kind: CreativeVariantKindEnum,
36213
36200
  videoPreset: TaskCreativeVariantVideoPresetEnum.optional().describe("Opcional para video. Solo cambia el preset p\xFAblico; el servidor conserva el modelo/tier del task origen."),
36214
36201
  videoResolution: VideoResolutionEnum.optional().describe("Opcional para video. Resoluci\xF3n del nuevo render."),
@@ -36277,10 +36264,10 @@ var EstimateCreativeVariantInput = EstimateCreativeVariantInputBase.superRefine(
36277
36264
  }
36278
36265
  });
36279
36266
  var CreateCreativeVariantInputBase = z142.object({
36280
- sourceTaskId: z142.string().uuid().describe("ID de la tarea original completada."),
36267
+ sourceTaskId: z142.string().guid().describe("ID de la tarea original completada."),
36281
36268
  kind: CreativeVariantKindEnum,
36282
36269
  confirm: z142.literal(true).describe("Confirmaci\xF3n expl\xEDcita del usuario despu\xE9s de mostrarle el estimado de cr\xE9ditos."),
36283
- clientRequestId: z142.string().uuid().describe("UUID estable para esta intenci\xF3n (obligatorio por compatibilidad de contrato; el servidor deriva la identidad real del request desde los argumentos sem\xE1nticos, as\xED que un UUID nuevo en un retry NO crea una variante duplicada). Si la API devuelve status=error, una nueva generaci\xF3n exige otra confirmaci\xF3n."),
36270
+ clientRequestId: z142.string().guid().describe("UUID estable para esta intenci\xF3n (obligatorio por compatibilidad de contrato; el servidor deriva la identidad real del request desde los argumentos sem\xE1nticos, as\xED que un UUID nuevo en un retry NO crea una variante duplicada). Si la API devuelve status=error, una nueva generaci\xF3n exige otra confirmaci\xF3n."),
36284
36271
  angle: z142.string().trim().min(1).max(500).optional().describe("\xC1ngulo nuevo para video o imagen."),
36285
36272
  buyerPersona: z142.string().trim().min(1).max(360).optional().describe("Buyer persona coherente con el \xE1ngulo."),
36286
36273
  scriptNotes: z142.string().trim().min(1).max(2e3).optional().describe("Direcci\xF3n breve del guion para una variante de video."),
@@ -36649,7 +36636,7 @@ function registerConnectionTools(server, api) {
36649
36636
  inputSchema: z144.object({
36650
36637
  shopDomain: z144.string().min(3).max(120),
36651
36638
  query: z144.string().trim().max(120).optional(),
36652
- taskId: z144.string().uuid().optional()
36639
+ taskId: z144.string().guid().optional()
36653
36640
  }).shape,
36654
36641
  annotations: READS_EXTERNAL
36655
36642
  }, async ({ shopDomain, query, taskId }) => {
@@ -37001,8 +36988,8 @@ var GroupedMediaSource = z146.object({
37001
36988
  var GroupedUploadedAssetSource = z146.object({
37002
36989
  type: z146.literal("asset"),
37003
36990
  /** Returned by check_media_upload. ProductMaker resolves ownership server-side. */
37004
- assetId: z146.string().uuid(),
37005
- thumbnailAssetId: z146.string().uuid().optional()
36991
+ assetId: z146.string().guid(),
36992
+ thumbnailAssetId: z146.string().guid().optional()
37006
36993
  });
37007
36994
  var GroupedCreative = z146.object({
37008
36995
  type: z146.enum([
@@ -37149,7 +37136,7 @@ var PresignUploadResponseSchema = z146.object({
37149
37136
  const url2 = new URL(value);
37150
37137
  return !url2.username && !url2.password;
37151
37138
  }, "public media URL must not contain embedded credentials"),
37152
- stagingAssetId: z146.string().uuid()
37139
+ stagingAssetId: z146.string().guid()
37153
37140
  });
37154
37141
  async function uploadResolvedMedia(api, media, assetRole) {
37155
37142
  if (!media.buffer) throw new ResolveMediaError("INVALID_INPUT", "resolved media has no bytes");
@@ -37638,7 +37625,7 @@ var UploadSessionToolInput = z147.object(UploadSessionToolInputShape).superRefin
37638
37625
  }
37639
37626
  });
37640
37627
  var UploadSessionResponse = z147.object({
37641
- sessionId: z147.string().uuid(),
37628
+ sessionId: z147.string().guid(),
37642
37629
  uploadPageUrl: z147.string().url(),
37643
37630
  mediaKind: z147.enum([
37644
37631
  "image",
@@ -37653,7 +37640,7 @@ var UploadSessionResponse = z147.object({
37653
37640
  expiresAt: z147.string().datetime()
37654
37641
  });
37655
37642
  var UploadStatusInput = z147.object({
37656
- sessionId: z147.string().uuid().describe("The sessionId returned by request_media_upload.")
37643
+ sessionId: z147.string().guid().describe("The sessionId returned by request_media_upload.")
37657
37644
  });
37658
37645
  var UniversalUploadStatusResponse = z147.discriminatedUnion("status", [
37659
37646
  z147.object({
@@ -37663,7 +37650,7 @@ var UniversalUploadStatusResponse = z147.discriminatedUnion("status", [
37663
37650
  z147.object({
37664
37651
  status: z147.literal("uploaded"),
37665
37652
  assets: z147.array(z147.object({
37666
- assetId: z147.string().uuid(),
37653
+ assetId: z147.string().guid(),
37667
37654
  mediaKind: z147.enum([
37668
37655
  "image",
37669
37656
  "video"
@@ -37975,7 +37962,7 @@ var ShippingReferenceSchema = z149.object({
37975
37962
  });
37976
37963
  }
37977
37964
  });
37978
- var SHIPPING_REFERENCES = z149.record(ShippingReferenceSchema).parse(product_costing_shipping_references_default);
37965
+ var SHIPPING_REFERENCES = z149.record(z149.string(), ShippingReferenceSchema).parse(product_costing_shipping_references_default);
37979
37966
  var PRODUCT_COSTING_COUNTRY_CODES = Object.freeze(Object.keys(SHIPPING_REFERENCES));
37980
37967
  var SPANISH_LOCALE_COUNTRIES = /* @__PURE__ */ new Set([
37981
37968
  "MX",
@@ -38814,7 +38801,7 @@ var FindInput = z152.object({
38814
38801
  waitSeconds: z152.number().int().min(0).max(MAX_WAIT_SECONDS).optional().describe("Segundos a esperar el reporte antes de devolver el runId. M\xE1ximo 120.")
38815
38802
  });
38816
38803
  var GetInput = z152.object({
38817
- runId: z152.string().uuid().describe("ID del run devuelto por find_winning_products.")
38804
+ runId: z152.string().guid().describe("ID del run devuelto por find_winning_products.")
38818
38805
  });
38819
38806
  var ListInput = z152.object({
38820
38807
  limit: z152.number().int().min(1).max(20).default(10)
@@ -38960,7 +38947,7 @@ import { z as z153 } from "zod";
38960
38947
  var startDropshippingProjectGuidance = getProductMakerCapabilityModelGuidance("start_dropshipping_project");
38961
38948
  var costDropshippingProjectGuidance = getProductMakerCapabilityModelGuidance("cost_dropshipping_project");
38962
38949
  var guideDropshippingLaunchGuidance = getProductMakerCapabilityModelGuidance("guide_dropshipping_launch");
38963
- var ProjectId = z153.string().uuid();
38950
+ var ProjectId = z153.string().guid();
38964
38951
  var DropshippingProjectStatus = z153.enum([
38965
38952
  "active",
38966
38953
  "completed",
@@ -39074,15 +39061,7 @@ var DropshippingProjectNextAction = z153.discriminatedUnion("kind", NEXT_ACTION_
39074
39061
  kind: z153.literal(kind2),
39075
39062
  href: z153.string().min(1)
39076
39063
  })));
39077
- var CostingInputSchema = z153.object({
39078
- country: z153.string().min(2).max(3),
39079
- supplierCost: z153.number().finite().positive(),
39080
- shippingCost: z153.number().finite().nonnegative(),
39081
- returnRate: z153.number().finite().min(0).lt(1),
39082
- cancellationRate: z153.number().finite().min(0).lt(1),
39083
- adsManagerCpa: z153.number().finite().nonnegative(),
39084
- desiredMargin: z153.number().finite().min(0).lt(1)
39085
- }).superRefine(({ returnRate, cancellationRate }, context) => {
39064
+ var CostingInputSchema = z153.object(DropshippingProjectCostingInputSchema.shape).superRefine(({ returnRate, cancellationRate }, context) => {
39086
39065
  if (returnRate + cancellationRate >= 1) context.addIssue({
39087
39066
  code: z153.ZodIssueCode.custom,
39088
39067
  path: [
@@ -39272,10 +39251,10 @@ var DateOnly = z154.string().regex(/^\d{4}-\d{2}-\d{2}$/);
39272
39251
  var DailyControlInput = z154.object({
39273
39252
  date: DateOnly.optional().describe("D\xEDa final de la ventana (YYYY-MM-DD). Si se omite, la ventana termina AYER en UTC \u2014 nunca hoy, porque el d\xEDa en curso est\xE1 incompleto \u2014 y el servidor puede correrla un d\xEDa m\xE1s atr\xE1s si en la zona horaria de la tienda ese d\xEDa todav\xEDa no ha cerrado."),
39274
39253
  days: z154.number().int().min(1).max(14).default(3).describe("Tama\xF1o de la ventana, 1 a 14 d\xEDas."),
39275
- projectId: z154.string().uuid().optional().describe("Opcional: limita el reporte a un solo proyecto en vez de todos los productos activos.")
39254
+ projectId: z154.string().guid().optional().describe("Opcional: limita el reporte a un solo proyecto en vez de todos los productos activos.")
39276
39255
  }).strict();
39277
39256
  var LinkCampaignInput = z154.object({
39278
- projectId: z154.string().uuid(),
39257
+ projectId: z154.string().guid(),
39279
39258
  provider: z154.enum([
39280
39259
  "meta",
39281
39260
  "tiktok"
@@ -39284,7 +39263,7 @@ var LinkCampaignInput = z154.object({
39284
39263
  campaignId: ProviderCampaignIdentifier
39285
39264
  }).strict();
39286
39265
  var ReportReturnsInput = z154.object({
39287
- projectId: z154.string().uuid(),
39266
+ projectId: z154.string().guid(),
39288
39267
  date: DateOnly,
39289
39268
  returnedOrders: z154.number().int().min(0).max(1e5),
39290
39269
  note: z154.string().trim().max(280).optional()
@@ -39302,7 +39281,7 @@ var DailyControlDayMirror = z154.object({
39302
39281
  light: DailyControlLightMirror
39303
39282
  }).passthrough();
39304
39283
  var DailyControlProductMirror = z154.object({
39305
- projectId: z154.string().uuid(),
39284
+ projectId: z154.string().guid(),
39306
39285
  productName: z154.string().nullable(),
39307
39286
  status: DailyControlStatusMirror,
39308
39287
  statusMessage: z154.string().nullable(),
@@ -39435,7 +39414,7 @@ var SetProductCostingInput = z155.object({
39435
39414
  tienda + id de Shopify. El esquema canónico también las admite juntas,
39436
39415
  pero pedirlas por separado evita que el modelo emita una mezcla que
39437
39416
  diga dos productos a la vez. */
39438
- productControlId: z155.string().uuid().optional().describe("El id nuestro (lo devuelven get_product_control y create_manual_product). Obligatorio para productos manuales o importados sin tienda."),
39417
+ productControlId: z155.string().guid().optional().describe("El id nuestro (lo devuelven get_product_control y create_manual_product). Obligatorio para productos manuales o importados sin tienda."),
39439
39418
  manualSellingPrice: z155.number().positive().nullable().optional().describe("Precio de venta \u2014 SOLO con productControlId: para el producto sin tienda no hay otra verdad. En un producto de Shopify NO se manda: el precio lo manda la tienda."),
39440
39419
  shopDomain: z155.string().min(1).optional(),
39441
39420
  shopifyProductId: z155.string().min(1).max(64).optional(),
@@ -39447,7 +39426,7 @@ var SetProductCostingInput = z155.object({
39447
39426
  }).strict();
39448
39427
  var Count = z155.number().int().min(0).max(1e5).nullable().optional();
39449
39428
  var ReportProductCountsInput = z155.object({
39450
- productControlId: z155.string().uuid().describe("El identificador que devuelve get_product_control."),
39429
+ productControlId: z155.string().guid().describe("El identificador que devuelve get_product_control."),
39451
39430
  date: DateOnly2,
39452
39431
  orders: Count.describe("Pedidos que entraron ese d\xEDa."),
39453
39432
  cancelledOrders: Count,
@@ -39460,7 +39439,7 @@ var SyncShopifyOrdersInput = SyncShopifyOrdersSchema;
39460
39439
  var ImportOrdersFileInput = z155.object({
39461
39440
  /** Ruta ABSOLUTA en la máquina de quien usa el MCP. */
39462
39441
  path: z155.string().min(1),
39463
- operationId: z155.string().uuid().optional(),
39442
+ operationId: z155.string().guid().optional(),
39464
39443
  /** Solo mirar: devuelve el resumen y no escribe nada. */
39465
39444
  dryRun: z155.boolean().optional()
39466
39445
  }).strict();
@@ -39469,35 +39448,35 @@ var CreateOperationInput = z155.object({
39469
39448
  label: z155.string().trim().min(1).max(60).optional()
39470
39449
  }).strict();
39471
39450
  var MergeProductsInput = z155.object({
39472
- sourceId: z155.string().uuid(),
39473
- targetId: z155.string().uuid()
39451
+ sourceId: z155.string().guid(),
39452
+ targetId: z155.string().guid()
39474
39453
  }).strict();
39475
39454
  var SetMonthlyExpenseInput = z155.object({
39476
39455
  month: z155.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/).optional(),
39477
39456
  label: SaveMonthlyExpenseSchema.shape.label,
39478
39457
  amount: z155.number().finite().min(0),
39479
- operationId: z155.string().uuid().optional()
39458
+ operationId: z155.string().guid().optional()
39480
39459
  }).strict();
39481
39460
  var SetAdSpendInput = z155.object({
39482
39461
  month: z155.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/).optional(),
39483
- operationId: z155.string().uuid().optional(),
39462
+ operationId: z155.string().guid().optional(),
39484
39463
  /** null RETIRA la corrección; cero afirma que no pautó. */
39485
39464
  amount: z155.number().finite().min(0).nullable()
39486
39465
  }).strict();
39487
39466
  var GetFinancesInput = z155.object({
39488
39467
  month: z155.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/).optional().describe("Mes en YYYY-MM. Si se omite, el mes en curso. Solo mes calendario."),
39489
- operationId: z155.string().uuid().optional().describe("El negocio, si tiene mas de uno. Con uno solo no hace falta decirlo.")
39468
+ operationId: z155.string().guid().optional().describe("El negocio, si tiene mas de uno. Con uno solo no hace falta decirlo.")
39490
39469
  }).strict();
39491
39470
  var GetDropiStatusInput = DropiCountryQuerySchema.extend({
39492
39471
  countryCode: DropiCountrySchema.optional().describe("Pa\xEDs de la cuenta (ISO-2). Si se omite, el servidor responde por Colombia (CO)."),
39493
- connectionId: z155.string().uuid().optional().describe("Una cuenta concreta cuando el pa\xEDs tiene varias. Sale de la lista de conexiones; nunca se inventa.")
39472
+ connectionId: z155.string().guid().optional().describe("Una cuenta concreta cuando el pa\xEDs tiene varias. Sale de la lista de conexiones; nunca se inventa.")
39494
39473
  });
39495
39474
  var SyncDropiOrdersInput = SyncDropiFinancialSchema;
39496
- var CreateManualProductInput = CreateManualProductControlSchema.innerType().omit({
39475
+ var CreateManualProductInput = z155.strictObject(CreateManualProductControlSchema.shape).omit({
39497
39476
  requestId: true
39498
39477
  });
39499
39478
  var ListUnmatchedProductsInput = z155.object({
39500
- operationId: z155.string().uuid().optional().describe("El negocio, si tiene mas de uno. Con uno solo no hace falta decirlo.")
39479
+ operationId: z155.string().guid().optional().describe("El negocio, si tiene mas de uno. Con uno solo no hace falta decirlo.")
39501
39480
  }).strict();
39502
39481
  var ResolveUnmatchedProductInput = ResolveUnmatchedProductSchema;
39503
39482
  var ListLinkableCampaignsInput = z155.object({}).strict();
@@ -39508,13 +39487,13 @@ var LinkProductCampaignInput = z155.object({
39508
39487
  ]).describe("La red publicitaria de la campa\xF1a."),
39509
39488
  accountId: z155.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/).describe("La cuenta publicitaria. Sale de list_linkable_campaigns; nunca se inventa."),
39510
39489
  campaignId: z155.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/).describe("La campa\xF1a. Sale de list_linkable_campaigns; nunca se inventa."),
39511
- productControlId: z155.string().uuid().optional().describe("El id del producto en su control financiero."),
39490
+ productControlId: z155.string().guid().optional().describe("El id del producto en su control financiero."),
39512
39491
  shopDomain: z155.string().min(1).optional().describe("La tienda del producto; con shopifyProductId es la otra forma de decir cu\xE1l es."),
39513
39492
  shopifyProductId: z155.string().min(1).optional().describe("El id del producto en su tienda. Va junto a shopDomain.")
39514
39493
  }).strict();
39515
39494
  var DeleteMonthlyExpenseInput = DeleteMonthlyExpenseSchema;
39516
39495
  var RemoveProductControlInput = z155.object({
39517
- productControlId: z155.string().uuid().describe("El id del producto en su control. Sale del listado; nunca se inventa.")
39496
+ productControlId: z155.string().guid().describe("El id del producto en su control. Sale del listado; nunca se inventa.")
39518
39497
  }).strict();
39519
39498
  function manualProductRequestId(input) {
39520
39499
  const digest3 = createHash4("sha256").update(JSON.stringify(input, [
@@ -40068,6 +40047,8 @@ function createServer(opts) {
40068
40047
  },
40069
40048
  logging: {}
40070
40049
  },
40050
+ // Bound structural work before parsing hosted tool arguments; stdio remains local.
40051
+ maxToolInputElements: transport === "http" ? 1e4 : void 0,
40071
40052
  instructions
40072
40053
  });
40073
40054
  const api = new ApiClient(apiBaseUrl, opts.credential, {