@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/http.js CHANGED
@@ -134,7 +134,7 @@ var FrankensteinSourceProviderSchema = z2.enum([
134
134
  "meta",
135
135
  "upload"
136
136
  ]);
137
- var FrankensteinSourceUploadIdSchema = z2.string().uuid();
137
+ var FrankensteinSourceUploadIdSchema = z2.string().guid();
138
138
  var FrankensteinSourceUploadPresignRequestSchema = z2.object({
139
139
  fileName: z2.string().trim().min(1).max(255),
140
140
  contentType: z2.enum([
@@ -4182,8 +4182,8 @@ var AiEditJobSchema = z5.object({
4182
4182
  tier: AiEditTierSchema.default(DEFAULT_AI_EDIT_TIER),
4183
4183
  /** Explicit false suppresses generated music; absent keeps the legacy default. */
4184
4184
  music: z5.boolean().optional(),
4185
- editId: z5.string().uuid(),
4186
- taskId: z5.string().uuid(),
4185
+ editId: z5.string().guid(),
4186
+ taskId: z5.string().guid(),
4187
4187
  angleKey: z5.string().min(1),
4188
4188
  sourceVideoUrl: z5.string().url(),
4189
4189
  /** Medidas del video entregado (Grok 480p/720p también existen). */
@@ -4509,7 +4509,7 @@ var ProductReferencePreviewSchema = z9.object({
4509
4509
  isAuthoritative: z9.boolean()
4510
4510
  });
4511
4511
  var ApprovedProductReferencesSchema = z9.object({
4512
- scopeSnapshotId: z9.string().uuid(),
4512
+ scopeSnapshotId: z9.string().guid(),
4513
4513
  scopeHash: z9.string().min(1).max(128),
4514
4514
  previews: z9.array(ProductReferencePreviewSchema).min(1)
4515
4515
  });
@@ -4521,8 +4521,8 @@ var ProductReferencePendingActionSchema = z9.object({
4521
4521
  ]).default("final"),
4522
4522
  scope: ProductReferenceScopeSchema,
4523
4523
  scopeKey: z9.string().min(1).max(120),
4524
- referenceVersionId: z9.string().uuid(),
4525
- scopeSnapshotId: z9.string().uuid(),
4524
+ referenceVersionId: z9.string().guid(),
4525
+ scopeSnapshotId: z9.string().guid(),
4526
4526
  baseReferenceSetHash: z9.string().min(1).max(128),
4527
4527
  scopeHash: z9.string().min(1).max(128),
4528
4528
  approvedRefKeys: z9.array(z9.string().min(1).max(200)).min(1),
@@ -4563,7 +4563,7 @@ var ResolutionEnvelopeSchema = z9.object({
4563
4563
  expectedScopeHash: z9.string().min(1).max(128),
4564
4564
  scope: ProductReferenceScopeSchema,
4565
4565
  scopeKey: z9.string().min(1).max(120),
4566
- scopeSnapshotId: z9.string().uuid()
4566
+ scopeSnapshotId: z9.string().guid()
4567
4567
  });
4568
4568
  var ResolveProductReferenceSetRequestSchema = z9.discriminatedUnion("decision", [
4569
4569
  ResolutionEnvelopeSchema.extend({
@@ -4613,8 +4613,8 @@ var ResolveProductReferenceSetRequestSchema = z9.discriminatedUnion("decision",
4613
4613
  });
4614
4614
  var ResolveProductReferenceSetResponseSchema = z9.object({
4615
4615
  success: z9.literal(true),
4616
- taskId: z9.string().uuid(),
4617
- resolutionId: z9.string().uuid(),
4616
+ taskId: z9.string().guid(),
4617
+ resolutionId: z9.string().guid(),
4618
4618
  decision: ProductReferenceResolutionDecisionSchema
4619
4619
  });
4620
4620
  var ProductReferenceResolutionSchema = z9.object({
@@ -4652,7 +4652,7 @@ var ReferencePreparationPlanSchema = z9.object({
4652
4652
  reusableOutputs: z9.array(z9.object({
4653
4653
  outputKey: z9.string().min(1).max(200),
4654
4654
  refKey: z9.string().min(1).max(200),
4655
- sourceSnapshotId: z9.string().uuid()
4655
+ sourceSnapshotId: z9.string().guid()
4656
4656
  })),
4657
4657
  execution: z9.object({
4658
4658
  inputKeys: z9.array(z9.string().min(1)),
@@ -5188,7 +5188,7 @@ var ProductPhysicalDetails = z10.object({
5188
5188
  contentAppearance: z10.string().optional()
5189
5189
  });
5190
5190
  var Product = z10.object({
5191
- id: z10.string().uuid().optional(),
5191
+ id: z10.string().guid().optional(),
5192
5192
  title: z10.string(),
5193
5193
  url: z10.string().optional(),
5194
5194
  // Free-video tasks intentionally skip product extraction and may have no
@@ -6106,6 +6106,11 @@ var LANDING_STRATEGIES = [
6106
6106
  "lifestyle_identity"
6107
6107
  ];
6108
6108
  var LandingStrategySchema = z14.enum(LANDING_STRATEGIES);
6109
+ var SELECTABLE_LANDING_STRATEGIES = [
6110
+ "classic",
6111
+ "social_proof"
6112
+ ];
6113
+ var SelectableLandingStrategySchema = z14.enum(SELECTABLE_LANDING_STRATEGIES);
6109
6114
  var EffectiveLandingStrategySchema = LandingStrategySchema.exclude([
6110
6115
  "auto"
6111
6116
  ]);
@@ -6251,7 +6256,7 @@ var LandingImageReadable = z15.object({
6251
6256
  */
6252
6257
  index: z15.number().int().min(1).max(20),
6253
6258
  /** Child task that owns this image when variants are rendered alongside the root task. */
6254
- variantTaskId: z15.string().uuid().optional(),
6259
+ variantTaskId: z15.string().guid().optional(),
6255
6260
  /**
6256
6261
  * The image's own `indexNum` within its OWN task (root or variant) — set
6257
6262
  * once at render time and never recomputed. Unlike `index`, this is stable
@@ -6454,7 +6459,7 @@ var JsonValueSchema = z16.lazy(() => z16.union([
6454
6459
  z16.boolean(),
6455
6460
  z16.null(),
6456
6461
  z16.array(JsonValueSchema),
6457
- z16.custom(isPlainJsonRecord, "content objects must be plain JSON records").pipe(z16.record(JsonValueSchema))
6462
+ z16.custom(isPlainJsonRecord, "content objects must be plain JSON records").pipe(z16.record(z16.string(), JsonValueSchema))
6458
6463
  ]));
6459
6464
  var CodeLandingRecipeSelectionSchema = z16.object({
6460
6465
  blockId: z16.string().trim().min(1),
@@ -6913,7 +6918,7 @@ var PresignUploadResponse = z19.object({
6913
6918
  /** Present only for purpose=service. */
6914
6919
  assetToken: z19.string().min(1).optional(),
6915
6920
  /** Present only for purpose=meta_staging. */
6916
- stagingAssetId: z19.string().uuid().optional()
6921
+ stagingAssetId: z19.string().guid().optional()
6917
6922
  });
6918
6923
  var MetaUploadMediaKind = z19.enum([
6919
6924
  "image",
@@ -6923,7 +6928,7 @@ var MetaUploadMediaKind = z19.enum([
6923
6928
  var META_UPLOAD_MAX_FILES = CAMPAIGN_LIMITS.MAX_CREATIVES;
6924
6929
  var META_UPLOAD_IMAGE_MAX_FILES = 5;
6925
6930
  var MetaUploadAssetSummary = z19.object({
6926
- stagingAssetId: z19.string().uuid(),
6931
+ stagingAssetId: z19.string().guid(),
6927
6932
  mediaKind: MediaKind
6928
6933
  }).strict();
6929
6934
  var MetaCampaignType = z19.enum([
@@ -6931,7 +6936,7 @@ var MetaCampaignType = z19.enum([
6931
6936
  "traffic",
6932
6937
  "engagement"
6933
6938
  ]);
6934
- var MetaPublishAttemptId = z19.string().uuid();
6939
+ var MetaPublishAttemptId = z19.string().guid();
6935
6940
  var MetaOptimizationMode = z19.enum([
6936
6941
  "advantage_plus",
6937
6942
  "manual"
@@ -7004,14 +7009,14 @@ var ResolveMetaUploadSessionRequest = z19.object({
7004
7009
  /** Opaque signed token embedded in the one-click upload page URL. */
7005
7010
  token: z19.string().min(1).max(4096),
7006
7011
  /** Stable browser-generated id so failed PUT retries reuse the same slot. */
7007
- uploadId: z19.string().uuid().optional(),
7012
+ uploadId: z19.string().guid().optional(),
7008
7013
  /** Browser-selected metadata; the API checks it against the session kind/role. */
7009
7014
  contentType: z19.enum(META_STAGING_CONTENT_TYPES),
7010
7015
  fileName: z19.string().min(1).max(255),
7011
7016
  fileSize: z19.number().int().positive().max(CAMPAIGN_LIMITS.MAX_FILE_SIZE_BYTES)
7012
7017
  }).strict();
7013
7018
  var MetaUploadSessionResponse = z19.object({
7014
- sessionId: z19.string().uuid(),
7019
+ sessionId: z19.string().guid(),
7015
7020
  uploadPageUrl: HttpUrl,
7016
7021
  mediaKind: MetaUploadMediaKind,
7017
7022
  assetRole: z19.enum([
@@ -7023,18 +7028,18 @@ var MetaUploadSessionResponse = z19.object({
7023
7028
  }).strict();
7024
7029
  var ResolveMetaUploadSessionResponse = z19.object({
7025
7030
  uploadUrl: z19.string().url(),
7026
- stagingAssetId: z19.string().uuid(),
7031
+ stagingAssetId: z19.string().guid(),
7027
7032
  expiresAt: z19.string().datetime()
7028
7033
  }).strict();
7029
7034
  var MetaUploadSessionStatusResponse = z19.object({
7030
- sessionId: z19.string().uuid(),
7035
+ sessionId: z19.string().guid(),
7031
7036
  status: z19.enum([
7032
7037
  "pending",
7033
7038
  "uploaded"
7034
7039
  ]),
7035
7040
  assets: z19.array(MetaUploadAssetSummary).max(META_UPLOAD_MAX_FILES),
7036
7041
  /** Legacy single-file response field retained for older callers. */
7037
- stagingAssetId: z19.string().uuid().optional()
7042
+ stagingAssetId: z19.string().guid().optional()
7038
7043
  }).strict();
7039
7044
  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), {
7040
7045
  message: 'adAccountId must look like "act_1234567890" (a bare numeric id is also accepted)'
@@ -7114,6 +7119,33 @@ var MetaCampaignDefaults = MetaCampaignConfigBase.omit({
7114
7119
  */
7115
7120
  currency: z19.string().length(3).regex(/^[A-Z]{3}$/).nullable().optional()
7116
7121
  });
7122
+ function refineMetaCreativeSources(value, ctx) {
7123
+ value.creatives.forEach((creative, index) => {
7124
+ if (Boolean(creative.mediaUrl) === Boolean(creative.mediaAssetId)) {
7125
+ ctx.addIssue({
7126
+ code: z19.ZodIssueCode.custom,
7127
+ path: [
7128
+ "creatives",
7129
+ index,
7130
+ "mediaUrl"
7131
+ ],
7132
+ message: "Provide exactly one of mediaUrl or mediaAssetId"
7133
+ });
7134
+ }
7135
+ if (creative.thumbnailUrl && creative.thumbnailAssetId) {
7136
+ ctx.addIssue({
7137
+ code: z19.ZodIssueCode.custom,
7138
+ path: [
7139
+ "creatives",
7140
+ index,
7141
+ "thumbnailUrl"
7142
+ ],
7143
+ message: "Provide at most one of thumbnailUrl or thumbnailAssetId"
7144
+ });
7145
+ }
7146
+ });
7147
+ }
7148
+ __name(refineMetaCreativeSources, "refineMetaCreativeSources");
7117
7149
  var UploadToMetaRequest = z19.object({
7118
7150
  /** Caller-owned retry fence. Required before any provider operation. */
7119
7151
  publishAttemptId: MetaPublishAttemptId,
@@ -7127,7 +7159,7 @@ var UploadToMetaRequest = z19.object({
7127
7159
  /** Legacy public URL; new Meta flows should use mediaAssetId. */
7128
7160
  mediaUrl: HttpUrl.optional(),
7129
7161
  /** Owner-scoped temporary asset created by the Meta staging upload flow. */
7130
- mediaAssetId: z19.string().uuid().optional(),
7162
+ mediaAssetId: z19.string().guid().optional(),
7131
7163
  /**
7132
7164
  * Public URL of an extracted thumbnail. Required for video ads — Meta
7133
7165
  * rejects video ad creatives without `image_hash`/`image_url` in
@@ -7136,7 +7168,7 @@ var UploadToMetaRequest = z19.object({
7136
7168
  */
7137
7169
  thumbnailUrl: HttpUrl.optional(),
7138
7170
  /** Owner-scoped temporary thumbnail created by the Meta staging upload flow. */
7139
- thumbnailAssetId: z19.string().uuid().optional()
7171
+ thumbnailAssetId: z19.string().guid().optional()
7140
7172
  })).min(1).max(CAMPAIGN_LIMITS.MAX_CREATIVES),
7141
7173
  /** Meta Ad Account ID */
7142
7174
  adAccountId: MetaAdAccountId,
@@ -7163,30 +7195,7 @@ var UploadToMetaRequest = z19.object({
7163
7195
  message: "landingUrl is required for landing destinations"
7164
7196
  });
7165
7197
  }
7166
- value.creatives.forEach((creative, index) => {
7167
- if (Boolean(creative.mediaUrl) === Boolean(creative.mediaAssetId)) {
7168
- ctx.addIssue({
7169
- code: z19.ZodIssueCode.custom,
7170
- path: [
7171
- "creatives",
7172
- index,
7173
- "mediaUrl"
7174
- ],
7175
- message: "Provide exactly one of mediaUrl or mediaAssetId"
7176
- });
7177
- }
7178
- if (creative.thumbnailUrl && creative.thumbnailAssetId) {
7179
- ctx.addIssue({
7180
- code: z19.ZodIssueCode.custom,
7181
- path: [
7182
- "creatives",
7183
- index,
7184
- "thumbnailUrl"
7185
- ],
7186
- message: "Provide at most one of thumbnailUrl or thumbnailAssetId"
7187
- });
7188
- }
7189
- });
7198
+ refineMetaCreativeSources(value, ctx);
7190
7199
  });
7191
7200
  var CampaignLifetimeMetricsSchema = z19.object({
7192
7201
  spend: z19.number().nonnegative(),
@@ -7224,13 +7233,13 @@ var Revision = z20.number().finite().int().nonnegative();
7224
7233
  var ClassicLandingBlockSchema = z20.discriminatedUnion("kind", [
7225
7234
  z20.object({
7226
7235
  kind: z20.literal("image"),
7227
- ownerTaskId: z20.string().uuid(),
7236
+ ownerTaskId: z20.string().guid(),
7228
7237
  sourceIndex: z20.number().int().positive()
7229
7238
  }).strict(),
7230
7239
  z20.object({
7231
7240
  kind: z20.literal("gif"),
7232
- ownerTaskId: z20.string().uuid(),
7233
- gifId: z20.string().uuid()
7241
+ ownerTaskId: z20.string().guid(),
7242
+ gifId: z20.string().guid()
7234
7243
  }).strict()
7235
7244
  ]);
7236
7245
  function classicLandingBlockId(block) {
@@ -7253,17 +7262,17 @@ var Blocks = z20.array(ClassicLandingBlockSchema).max(100).superRefine((blocks,
7253
7262
  });
7254
7263
  var ClassicLandingDocumentSchema = z20.object({
7255
7264
  version: z20.literal(1),
7256
- ownerTaskId: z20.string().uuid(),
7265
+ ownerTaskId: z20.string().guid(),
7257
7266
  revision: Revision,
7258
7267
  blocks: Blocks
7259
7268
  }).strict();
7260
7269
  var LandingGifBlockSelectionSchema = z20.object({
7261
- ownerTaskId: z20.string().uuid(),
7262
- gifId: z20.string().uuid(),
7270
+ ownerTaskId: z20.string().guid(),
7271
+ gifId: z20.string().guid(),
7263
7272
  gifRevision: Revision
7264
7273
  }).strict();
7265
7274
  var ClassicLandingImageSelectionSchema = z20.object({
7266
- ownerTaskId: z20.string().uuid(),
7275
+ ownerTaskId: z20.string().guid(),
7267
7276
  sourceIndex: z20.number().int().positive(),
7268
7277
  variantIndex: z20.number().int().nonnegative()
7269
7278
  }).strict();
@@ -7314,7 +7323,7 @@ var ClassicLandingBlockMutationSchema = z20.object({
7314
7323
  blocks: Blocks
7315
7324
  }).strict();
7316
7325
  var LandingGifVisibilityMutationSchema = z20.object({
7317
- gifId: z20.string().uuid(),
7326
+ gifId: z20.string().guid(),
7318
7327
  expectedGifRevision: Revision,
7319
7328
  expectedDocumentRevision: Revision,
7320
7329
  action: z20.enum([
@@ -8100,7 +8109,7 @@ var CodeLandingProvenanceSchema = z23.object({
8100
8109
  editorGifOwnership: z23.object({
8101
8110
  version: z23.literal(1),
8102
8111
  source: z23.object({
8103
- ownerTaskId: z23.string().uuid(),
8112
+ ownerTaskId: z23.string().guid(),
8104
8113
  gifRevision: z23.number().int().nonnegative(),
8105
8114
  contentHash: z23.string().regex(/^[a-f0-9]{64}$/),
8106
8115
  posterHash: z23.string().regex(/^[a-f0-9]{64}$/)
@@ -8108,7 +8117,7 @@ var CodeLandingProvenanceSchema = z23.object({
8108
8117
  }).strict().optional(),
8109
8118
  mode: LandingDocumentModeSchema,
8110
8119
  strategyVersion: z23.string().min(1).max(60),
8111
- sourceTaskId: z23.string().uuid().optional(),
8120
+ sourceTaskId: z23.string().guid().optional(),
8112
8121
  winnerSourceUrl: CodeLandingUrlSchema.optional(),
8113
8122
  notes: z23.array(z23.string().max(240)).max(16),
8114
8123
  /**
@@ -8540,8 +8549,8 @@ var QuotedLandingEditRequest = z23.object({
8540
8549
  "full"
8541
8550
  ]),
8542
8551
  attachmentIds: z23.array(CodeLandingIdSchema).max(4).default([]),
8543
- quoteId: z23.string().uuid(),
8544
- idempotencyKey: z23.string().uuid()
8552
+ quoteId: z23.string().guid(),
8553
+ idempotencyKey: z23.string().guid()
8545
8554
  });
8546
8555
  var CreateLandingEditRequest = z23.union([
8547
8556
  QuotedLandingEditRequest,
@@ -8621,7 +8630,7 @@ var LandingEditDto = z23.object({
8621
8630
  costCents: z23.number(),
8622
8631
  error: z23.string().nullable(),
8623
8632
  createdAt: z23.string(),
8624
- operationId: z23.string().uuid().nullable().optional(),
8633
+ operationId: z23.string().guid().nullable().optional(),
8625
8634
  expectedRevision: z23.number().int().nonnegative().optional(),
8626
8635
  appliedRevision: z23.number().int().positive().nullable().optional(),
8627
8636
  refundStatus: z23.enum([
@@ -8636,10 +8645,10 @@ var LandingEditDto = z23.object({
8636
8645
  commerceReconciliation: CommerceReconciliationSchema.nullable().optional(),
8637
8646
  delivery: z23.lazy(() => LandingEditDeliverySchema).optional(),
8638
8647
  /** Photos the seller attached to this message (see LandingEditAttachmentDto). */
8639
- attachmentIds: z23.array(z23.string().uuid()).max(4).optional()
8648
+ attachmentIds: z23.array(z23.string().guid()).max(4).optional()
8640
8649
  });
8641
8650
  var LandingEditAttachmentDto = z23.object({
8642
- id: z23.string().uuid(),
8651
+ id: z23.string().guid(),
8643
8652
  url: z23.string().url(),
8644
8653
  width: z23.number().int().positive().nullable(),
8645
8654
  height: z23.number().int().positive().nullable()
@@ -8665,12 +8674,12 @@ var LandingEditQuoteRequest = z23.object({
8665
8674
  attachmentIds: z23.array(CodeLandingIdSchema).max(4).default([])
8666
8675
  });
8667
8676
  var LandingEditSubmitRequest = LandingEditQuoteRequest.extend({
8668
- quoteId: z23.string().uuid(),
8669
- idempotencyKey: z23.string().uuid()
8677
+ quoteId: z23.string().guid(),
8678
+ idempotencyKey: z23.string().guid()
8670
8679
  });
8671
8680
  var LandingOperationQuoteDto = z23.object({
8672
8681
  editPlanSummary: z23.lazy(() => LandingEditPlanSummarySchema).optional(),
8673
- id: z23.string().uuid(),
8682
+ id: z23.string().guid(),
8674
8683
  kind: z23.enum([
8675
8684
  "edit_patch",
8676
8685
  "edit_full",
@@ -8692,7 +8701,7 @@ var LandingRevisionHistoryItemDto = z23.object({
8692
8701
  parentRevision: z23.number().int().positive().nullable(),
8693
8702
  source: z23.string().min(1),
8694
8703
  summary: z23.string().nullable(),
8695
- editId: z23.string().uuid().nullable(),
8704
+ editId: z23.string().guid().nullable(),
8696
8705
  createdAt: z23.string().datetime(),
8697
8706
  isActive: z23.boolean(),
8698
8707
  isRedoTarget: z23.boolean(),
@@ -8738,7 +8747,7 @@ var LandingGifSourceSchema = z24.discriminatedUnion("kind", [
8738
8747
  z24.object({
8739
8748
  kind: z24.literal("generated"),
8740
8749
  referenceSelectionRevision: Revision2,
8741
- referenceImageAssetId: z24.string().uuid().optional(),
8750
+ referenceImageAssetId: z24.string().guid().optional(),
8742
8751
  motionBrief: z24.string().trim().min(1).max(1500)
8743
8752
  }).strict()
8744
8753
  ]);
@@ -8763,7 +8772,7 @@ var ReuseIdentity = z24.object({
8763
8772
  byteSize: z24.number().finite().int().positive().max(50 * 1024 * 1024),
8764
8773
  contentHash: Hash,
8765
8774
  provenance: z24.object({
8766
- taskId: z24.string().uuid(),
8775
+ taskId: z24.string().guid(),
8767
8776
  scanId: z24.string().min(1).max(200).optional(),
8768
8777
  sourceUrl: z24.string().url().max(4096).optional(),
8769
8778
  externalAdId: z24.string().min(1).max(200).optional()
@@ -8793,7 +8802,7 @@ var LandingGifReuseCandidateSchema = z24.discriminatedUnion("kind", [
8793
8802
  var GeneratedResolvedSourceSchema = z24.object({
8794
8803
  kind: z24.literal("generated"),
8795
8804
  referenceSelectionRevision: Revision2,
8796
- referenceImageAssetId: z24.string().uuid().optional(),
8805
+ referenceImageAssetId: z24.string().guid().optional(),
8797
8806
  referenceKeys: z24.array(StorageKey).min(1).max(4),
8798
8807
  identityReferenceKeys: z24.array(StorageKey).min(1).max(4).optional(),
8799
8808
  identityReferenceFingerprint: Hash.optional(),
@@ -8815,7 +8824,7 @@ var AutomaticResolvedSourceSchema = GeneratedResolvedSourceSchema.omit({
8815
8824
  referenceImageAssetId: true
8816
8825
  }).extend({
8817
8826
  kind: z24.literal("automatic"),
8818
- ownerTaskId: z24.string().uuid(),
8827
+ ownerTaskId: z24.string().guid(),
8819
8828
  productName: z24.string().min(1).max(500),
8820
8829
  productTruth: JsonValueSchema.optional(),
8821
8830
  useSheet: JsonValueSchema.optional(),
@@ -8879,7 +8888,7 @@ var LandingGifPlacementSchema = z24.discriminatedUnion("kind", [
8879
8888
  }).strict(),
8880
8889
  z24.object({
8881
8890
  kind: z24.literal("classic"),
8882
- ownerTaskId: z24.string().uuid(),
8891
+ ownerTaskId: z24.string().guid(),
8883
8892
  afterSourceIndex: z24.number().finite().int().min(1)
8884
8893
  }).strict(),
8885
8894
  z24.object({
@@ -8894,7 +8903,7 @@ var LandingGifCreateRequestSchema = z24.object({
8894
8903
  placement: LandingGifPlacementSchema,
8895
8904
  expectedLandingRevision: Revision2,
8896
8905
  expectedGifRevision: Revision2,
8897
- gifId: z24.string().uuid().optional(),
8906
+ gifId: z24.string().guid().optional(),
8898
8907
  expectedDocumentRevision: Revision2.optional()
8899
8908
  }).strict().superRefine((request, ctx) => {
8900
8909
  if (request.gifId === void 0 !== (request.expectedDocumentRevision === void 0)) {
@@ -8934,7 +8943,7 @@ var LandingGifCreateRequestSchema = z24.object({
8934
8943
  });
8935
8944
  var LandingGifSubmitRequestSchema = z24.object({
8936
8945
  request: LandingGifCreateRequestSchema,
8937
- quoteId: z24.string().uuid(),
8946
+ quoteId: z24.string().guid(),
8938
8947
  idempotencyKey: z24.string().trim().min(1).max(200)
8939
8948
  }).strict();
8940
8949
  var LandingGifRemoveRequestSchema = z24.object({
@@ -8970,17 +8979,17 @@ var LandingGifStoredDescriptorSchema = GifTechnicalMetadataSchema.extend({
8970
8979
  quality: LandingGifQualitySchema
8971
8980
  }).strict();
8972
8981
  var LandingGifReadableSchema = LandingGifStoredDescriptorSchema.extend({
8973
- ownerTaskId: z24.string().uuid(),
8982
+ ownerTaskId: z24.string().guid(),
8974
8983
  gifRevision: Revision2,
8975
8984
  gifUrl: z24.string().url(),
8976
8985
  posterUrl: z24.string().url()
8977
8986
  }).strict();
8978
8987
  var LandingGifSelectionSchema = z24.object({
8979
- ownerTaskId: z24.string().uuid(),
8988
+ ownerTaskId: z24.string().guid(),
8980
8989
  gifRevision: Revision2
8981
8990
  }).strict();
8982
8991
  var LandingGifOperationStatusSchema = z24.object({
8983
- operationId: z24.string().uuid(),
8992
+ operationId: z24.string().guid(),
8984
8993
  status: z24.enum([
8985
8994
  "reserved",
8986
8995
  "queued",
@@ -9002,13 +9011,13 @@ var LandingGifOperationStatusSchema = z24.object({
9002
9011
  reservedUserCents: z24.number().finite().int().nonnegative()
9003
9012
  }).strict();
9004
9013
  var LandingGifUseProposalSchema = z24.object({
9005
- id: z24.string().uuid(),
9006
- gifId: z24.string().uuid(),
9014
+ id: z24.string().guid(),
9015
+ gifId: z24.string().guid(),
9007
9016
  idea: z24.string().trim().min(1).max(300),
9008
9017
  motionBrief: z24.string().trim().min(1).max(1500),
9009
9018
  productFingerprint: Hash,
9010
9019
  referenceFingerprint: Hash.nullable(),
9011
- referenceImageAssetId: z24.string().uuid().optional(),
9020
+ referenceImageAssetId: z24.string().guid().optional(),
9012
9021
  referenceImageAssetKey: StorageKey.optional(),
9013
9022
  referenceImageUrl: z24.string().url().optional(),
9014
9023
  identityReferenceKeys: z24.array(StorageKey).min(1).max(4).optional(),
@@ -9029,8 +9038,8 @@ var LandingGifStateSchema = z24.enum([
9029
9038
  "removed"
9030
9039
  ]);
9031
9040
  var LandingGifItemSchema = z24.object({
9032
- gifId: z24.string().uuid(),
9033
- ownerTaskId: z24.string().uuid(),
9041
+ gifId: z24.string().guid(),
9042
+ ownerTaskId: z24.string().guid(),
9034
9043
  gifRevision: Revision2,
9035
9044
  state: LandingGifStateSchema,
9036
9045
  /** Server-derived compatibility for an already delivered singular primary. */
@@ -9070,8 +9079,8 @@ function isDeliverableLandingGif(item) {
9070
9079
  }
9071
9080
  __name(isDeliverableLandingGif, "isDeliverableLandingGif");
9072
9081
  var InitialLandingGifStatusSchema = z24.object({
9073
- intentId: z24.string().uuid(),
9074
- gifId: z24.string().uuid(),
9082
+ intentId: z24.string().guid(),
9083
+ gifId: z24.string().guid(),
9075
9084
  status: z24.enum([
9076
9085
  "funded",
9077
9086
  "awaiting_usage",
@@ -9087,7 +9096,7 @@ var InitialLandingGifStatusSchema = z24.object({
9087
9096
  refundStatus: LandingGifOperationStatusSchema.shape.refundStatus
9088
9097
  }).strict();
9089
9098
  var LandingGifCollectionResponseSchema = z24.object({
9090
- ownerTaskId: z24.string().uuid(),
9099
+ ownerTaskId: z24.string().guid(),
9091
9100
  landingRevision: Revision2,
9092
9101
  document: ClassicLandingDocumentSchema,
9093
9102
  gifs: z24.array(LandingGifItemSchema).max(100),
@@ -9101,15 +9110,15 @@ var LandingGifCollectionResponseSchema = z24.object({
9101
9110
  }
9102
9111
  });
9103
9112
  var LandingGifTargetSchema = z24.object({
9104
- gifId: z24.string().uuid(),
9113
+ gifId: z24.string().guid(),
9105
9114
  expectedGifRevision: Revision2
9106
9115
  }).strict();
9107
9116
  var LandingGifProposalRequestSchema = z24.object({
9108
- gifId: z24.string().uuid().optional(),
9117
+ gifId: z24.string().guid().optional(),
9109
9118
  expectedDocumentRevision: Revision2,
9110
9119
  afterBlockId: z24.string().min(1).max(300).optional(),
9111
9120
  merchantIdea: z24.string().trim().min(8).max(300).optional(),
9112
- referenceImageAssetId: z24.string().uuid().nullable().optional()
9121
+ referenceImageAssetId: z24.string().guid().nullable().optional()
9113
9122
  }).strict();
9114
9123
  var LandingGifQuoteResponseSchema = z24.object({
9115
9124
  quote: LandingOperationQuoteDto.extend({
@@ -9120,7 +9129,7 @@ var LandingGifCreateResponseSchema = z24.object({
9120
9129
  operation: LandingGifOperationStatusSchema
9121
9130
  }).strict();
9122
9131
  var LandingGifStatusResponseSchema = z24.object({
9123
- ownerTaskId: z24.string().uuid(),
9132
+ ownerTaskId: z24.string().guid(),
9124
9133
  landingRevision: Revision2,
9125
9134
  gifRevision: Revision2,
9126
9135
  demoGif: LandingGifReadableSchema.nullable(),
@@ -9158,9 +9167,9 @@ var LandingGifPresentationResponseSchema = z24.object({
9158
9167
  }).strict();
9159
9168
  var LandingGifCompletionReceiptBase = z24.object({
9160
9169
  version: z24.literal(1),
9161
- operationId: z24.string().uuid(),
9162
- taskId: z24.string().uuid(),
9163
- stepId: z24.string().uuid(),
9170
+ operationId: z24.string().guid(),
9171
+ taskId: z24.string().guid(),
9172
+ stepId: z24.string().guid(),
9164
9173
  stepEpoch: Revision2,
9165
9174
  acceptedGifRevision: z24.number().finite().int().positive(),
9166
9175
  gifAssetKey: z24.string().min(1),
@@ -9172,7 +9181,7 @@ var LandingGifCompletionReceiptSchema = z24.discriminatedUnion("version", [
9172
9181
  LandingGifCompletionReceiptBase,
9173
9182
  LandingGifCompletionReceiptBase.extend({
9174
9183
  version: z24.literal(2),
9175
- gifId: z24.string().uuid(),
9184
+ gifId: z24.string().guid(),
9176
9185
  disposition: z24.enum([
9177
9186
  "activated",
9178
9187
  "retained"
@@ -9473,7 +9482,7 @@ var VideoCreativeContext = z27.object({
9473
9482
  productTitle: z27.string(),
9474
9483
  primaryAngle: z27.string(),
9475
9484
  buyerPersona: z27.string().optional(),
9476
- brandId: z27.string().uuid().optional(),
9485
+ brandId: z27.string().guid().optional(),
9477
9486
  features: z27.array(z27.string()).default([]),
9478
9487
  scriptNotes: z27.string().optional(),
9479
9488
  cta: z27.string().optional(),
@@ -9632,19 +9641,19 @@ var ImageCreativeJobStatusEnum = z27.enum([
9632
9641
  "error"
9633
9642
  ]);
9634
9643
  var ImageCreativeJobStatus = z27.object({
9635
- jobId: z27.string().uuid(),
9644
+ jobId: z27.string().guid(),
9636
9645
  status: ImageCreativeJobStatusEnum,
9637
9646
  error: z27.string().optional(),
9638
9647
  result: ImageCreativeResult.nullable().optional(),
9639
9648
  request: ImageCreativeEditableRequest.optional()
9640
9649
  });
9641
9650
  var ImageCreativeJobPayload = z27.object({
9642
- jobId: z27.string().uuid(),
9651
+ jobId: z27.string().guid(),
9643
9652
  status: ImageCreativeJobStatusEnum,
9644
9653
  replayed: z27.boolean().optional()
9645
9654
  });
9646
9655
  var ImageCreativeHistoryEntry = z27.object({
9647
- id: z27.string().uuid(),
9656
+ id: z27.string().guid(),
9648
9657
  createdAt: z27.string().datetime(),
9649
9658
  status: ImageCreativeJobStatusEnum,
9650
9659
  result: ImageCreativeResult.nullable(),
@@ -9664,27 +9673,27 @@ var LandingCreativeResult = z27.object({
9664
9673
  createdAt: z27.string().datetime().optional()
9665
9674
  });
9666
9675
  var LandingCreativeJobStatus = z27.object({
9667
- jobId: z27.string().uuid(),
9676
+ jobId: z27.string().guid(),
9668
9677
  status: LandingCreativeJobStatusEnum,
9669
9678
  error: z27.string().optional(),
9670
9679
  result: LandingCreativeResult.nullable().optional()
9671
9680
  });
9672
9681
  var LandingCreativeJobPayload = z27.object({
9673
- jobId: z27.string().uuid(),
9682
+ jobId: z27.string().guid(),
9674
9683
  status: LandingCreativeJobStatusEnum,
9675
9684
  replayed: z27.boolean().optional()
9676
9685
  });
9677
9686
  var LandingCreativeHistoryEntry = z27.object({
9678
- id: z27.string().uuid(),
9687
+ id: z27.string().guid(),
9679
9688
  createdAt: z27.string().datetime(),
9680
9689
  status: LandingCreativeJobStatusEnum,
9681
9690
  result: LandingCreativeResult.nullable(),
9682
9691
  error: z27.string().optional()
9683
9692
  });
9684
9693
  var CreativeGeneratorJob = z27.object({
9685
- taskId: z27.string().uuid(),
9694
+ taskId: z27.string().guid(),
9686
9695
  /** Immutable approved product-reference snapshot consumed by the worker. */
9687
- referenceVersionId: z27.string().uuid().optional(),
9696
+ referenceVersionId: z27.string().guid().optional(),
9688
9697
  cleanImagesWaitAttempt: z27.number().int().nonnegative().optional()
9689
9698
  });
9690
9699
  var ImageCreativeEditStatus = z27.enum([
@@ -9700,8 +9709,8 @@ var ImageCreativeRegenerateRequest = z27.object({
9700
9709
  });
9701
9710
  var ImageCreativeEditStatusResponse = z27.object({
9702
9711
  ok: z27.literal(true),
9703
- operationId: z27.string().uuid(),
9704
- taskId: z27.string().uuid(),
9712
+ operationId: z27.string().guid(),
9713
+ taskId: z27.string().guid(),
9705
9714
  variantIndex: z27.number().int().nonnegative(),
9706
9715
  status: ImageCreativeEditStatus,
9707
9716
  assetKey: z27.string().optional(),
@@ -9842,20 +9851,20 @@ var CreativeGenderPin = z33.enum([
9842
9851
  var CreativeDirectionSchema = z33.string().transform((value) => value.trim()).pipe(z33.string().max(CREATIVE_DIRECTION_MAX_CHARS));
9843
9852
  var IngestOptions = z33.object({
9844
9853
  /** Optional owner-scoped guided journey context. Never bypasses ingest gates. */
9845
- dropshippingProjectId: z33.string().uuid().optional(),
9846
- languageCode: LanguageCodeSchema.default("es-CO"),
9847
- ugcFormat: VideoFormat.default("single_15s"),
9854
+ dropshippingProjectId: z33.string().guid().optional(),
9855
+ languageCode: LanguageCodeSchema.default("es-CO").nonoptional(),
9856
+ ugcFormat: VideoFormat.default("single_15s").nonoptional(),
9848
9857
  country: CountrySchema,
9849
9858
  price: PriceSchema,
9850
9859
  offer: OfferSchema,
9851
9860
  compareAtPrice: CompareAtPriceSchema,
9852
9861
  pricingInput: SellerPricingInputSchema.optional(),
9853
9862
  paymentMethods: PaymentMethodsSchema,
9854
- videoStyle: VideoStyle.default("ugc"),
9863
+ videoStyle: VideoStyle.default("ugc").nonoptional(),
9855
9864
  /** Canonical public route axes; legacy provider fields remain compatibility aliases. */
9856
9865
  videoStructure: VideoStructure.optional(),
9857
9866
  videoQuality: VideoQuality.optional(),
9858
- videoModel: VideoModel.default("veo"),
9867
+ videoModel: VideoModel.default("veo").nonoptional(),
9859
9868
  /**
9860
9869
  * An explicit registry model id for Free mode (Defect 1, follow-up to the
9861
9870
  * model-agnostic video plan). Validated against `activeVideoModels()` in
@@ -9870,15 +9879,15 @@ var IngestOptions = z33.object({
9870
9879
  ]).optional(),
9871
9880
  rawPrompt: FreeVideoOptionsSchema.shape.rawPrompt.optional(),
9872
9881
  durationSeconds: FreeVideoOptionsSchema.shape.durationSeconds.optional(),
9873
- addSubtitles: FreeVideoOptionsSchema.shape.addSubtitles.optional(),
9882
+ addSubtitles: FreeVideoOptionsSchema.shape.addSubtitles.nonoptional().optional(),
9874
9883
  subtitleText: z33.string().transform((value) => value.trim()).pipe(z33.string().max(FREE_VIDEO_SUBTITLE_MAX_CHARS)).optional(),
9875
- videoTier: WritableVideoTier.default(DEFAULT_VIDEO_TIER),
9876
- narrativeStyle: NarrativeStyle.default("review"),
9884
+ videoTier: WritableVideoTier.default(WritableVideoTier.parse(DEFAULT_VIDEO_TIER)).nonoptional(),
9885
+ narrativeStyle: NarrativeStyle.default("review").nonoptional(),
9877
9886
  videoPreset: VideoPreset.optional(),
9878
9887
  /** Orthogonal visual style for animated narratives only. The API rejects it
9879
9888
  * on non-animated presets; absent → the pipeline resolves 'pixar_3d'. */
9880
9889
  animationStyle: AnimationStyleSchema.optional(),
9881
- multiAngleVideos: z33.boolean().default(false),
9890
+ multiAngleVideos: z33.boolean().default(false).nonoptional(),
9882
9891
  videoAngleCount: z33.number().int().min(1).max(3).optional(),
9883
9892
  /** Per-angle narrative override (positional). angleNarratives[i] forces the
9884
9893
  * narrative of angle position i, overriding the batch auto-selector; a list
@@ -9890,7 +9899,7 @@ var IngestOptions = z33.object({
9890
9899
  // quality levels; an explicit 720p pick wins. Callers that omit the field
9891
9900
  // use the same 480p compatibility fallback in resolveSingleCallAwareResolution.
9892
9901
  videoResolution: VideoResolution.optional(),
9893
- generateAdCopy: z33.boolean().default(true),
9902
+ generateAdCopy: z33.boolean().default(true).nonoptional(),
9894
9903
  generateAiMusic: z33.boolean().optional(),
9895
9904
  /** «Edición con IA» opt-in; a music request aliases to it. */
9896
9905
  generateAiEdit: AiEditRequestSchema.optional(),
@@ -9901,7 +9910,7 @@ var IngestOptions = z33.object({
9901
9910
  * the multipart path on 2026-09-01, so an unbounded opaque string was newly persistable
9902
9911
  * per task. Length only, never `.uuid()` — Actor.id is a CUID. */
9903
9912
  actorId: z33.string().min(1).max(120).optional(),
9904
- isCombo: z33.boolean().default(false),
9913
+ isCombo: z33.boolean().default(false).nonoptional(),
9905
9914
  productContext: z33.string().transform(canonicalizeProductContext).pipe(z33.string().max(PRODUCT_CONTEXT_MAX_CHARS)).optional(),
9906
9915
  creativeDirection: CreativeDirectionSchema.optional(),
9907
9916
  /** Exact copy the user pinned. Rendered VERBATIM on the image creatives this task
@@ -9974,8 +9983,8 @@ var IngestOptions = z33.object({
9974
9983
  * chosen videoPreset. Default true preserves the 2026-08-04 decision;
9975
9984
  * only a deliberate `false` suspends replication. See
9976
9985
  * `shouldAskReplicationConsent` for when this is even asked. */
9977
- replicateWinnerWhenFound: z33.boolean().default(true),
9978
- brandId: z33.string().uuid().optional()
9986
+ replicateWinnerWhenFound: z33.boolean().default(true).nonoptional(),
9987
+ brandId: z33.string().guid().optional()
9979
9988
  }).partial().transform(normalizeSellerPricingFields).superRefine((data, ctx) => {
9980
9989
  const message = validatePriceInversion(data.price, data.compareAtPrice);
9981
9990
  if (message) {
@@ -10722,7 +10731,7 @@ var CreativeEngineWinnerContextSchema = z38.object({
10722
10731
  version: z38.literal(1),
10723
10732
  winnerAdId: z38.string().min(1).max(200),
10724
10733
  /** Owned parsed gap blueprint of the selected winner (opaque evidence). */
10725
- gapBlueprint: z38.unknown(),
10734
+ gapBlueprint: z38.unknown().optional(),
10726
10735
  observed: z38.object({
10727
10736
  scenes: z38.array(CreativeEngineWinnerObservedSceneSchema).max(40),
10728
10737
  /**
@@ -11893,7 +11902,7 @@ var VideoGenerator = z39.object({
11893
11902
  ctx.addIssue({
11894
11903
  code: z39.ZodIssueCode.too_small,
11895
11904
  minimum: 1,
11896
- type: "string",
11905
+ origin: "string",
11897
11906
  inclusive: true,
11898
11907
  path: [
11899
11908
  "prompt"
@@ -12001,7 +12010,7 @@ var RegenerateVideoScriptNarrativeResponse = z39.object({
12001
12010
  var RegenerateVideoRequest = z39.object({
12002
12011
  angleKey: z39.string().min(1),
12003
12012
  /** Stable new-intent identity for regeneration of an already delivered engine video. */
12004
- clientRequestId: z39.string().uuid().optional()
12013
+ clientRequestId: z39.string().guid().optional()
12005
12014
  }).strict();
12006
12015
  var RegenerateVideoResponse = z39.object({
12007
12016
  ok: z39.literal(true),
@@ -12012,7 +12021,7 @@ var RegenerateVideoResponse = z39.object({
12012
12021
  "single_call"
12013
12022
  ]),
12014
12023
  /** New immutable child, when this command bought a new delivered-video intent. */
12015
- taskId: z39.string().uuid().optional()
12024
+ taskId: z39.string().guid().optional()
12016
12025
  });
12017
12026
 
12018
12027
  // ../../packages/types/src/billing.ts
@@ -12054,16 +12063,16 @@ var BillingProvider = z40.enum([
12054
12063
  ]);
12055
12064
  var BillingRecordInput = z40.object({
12056
12065
  userId: z40.string().min(1),
12057
- taskId: z40.string().uuid().optional(),
12058
- mixTaskId: z40.string().uuid().optional(),
12059
- productResearchRunId: z40.string().uuid().optional(),
12060
- servicePageId: z40.string().uuid().optional(),
12066
+ taskId: z40.string().guid().optional(),
12067
+ mixTaskId: z40.string().guid().optional(),
12068
+ productResearchRunId: z40.string().guid().optional(),
12069
+ servicePageId: z40.string().guid().optional(),
12061
12070
  provider: BillingProvider,
12062
12071
  label: z40.string().optional(),
12063
12072
  units: z40.number().int().nonnegative().optional(),
12064
12073
  ourCostCents: BillingNonNegativeAmount,
12065
12074
  userPriceCents: BillingNonNegativeAmount,
12066
- metadata: z40.record(z40.unknown()).optional()
12075
+ metadata: z40.record(z40.string(), z40.unknown()).optional()
12067
12076
  }).superRefine((value, ctx) => {
12068
12077
  const scopedIds = [
12069
12078
  value.taskId,
@@ -12085,7 +12094,7 @@ var BillingSummary = z40.object({
12085
12094
  // ../../packages/types/src/shopify.ts
12086
12095
  import { z as z41 } from "zod";
12087
12096
  var ShopifyShopSummary = z41.object({
12088
- id: z41.string().uuid(),
12097
+ id: z41.string().guid(),
12089
12098
  shopDomain: z41.string(),
12090
12099
  primaryDomain: z41.string().nullable(),
12091
12100
  scopes: z41.array(z41.string()),
@@ -12132,7 +12141,7 @@ var ShopifyPublicationMode = z41.enum([
12132
12141
  var SHOPIFY_ANNOUNCEMENT_BAR_MAX_LENGTH = 160;
12133
12142
  var ShopifyPublishRequest = z41.object({
12134
12143
  /** Correlates a mutation with read-only recovery after a lost response. */
12135
- publishAttemptId: z41.string().uuid().optional(),
12144
+ publishAttemptId: z41.string().guid().optional(),
12136
12145
  /** Omitted keeps legacy publication behavior; null explicitly excludes the GIF. */
12137
12146
  selectedLandingGif: LandingGifSelectionSchema.nullable().optional(),
12138
12147
  classicSelection: ClassicLandingSelectionSnapshotSchema.optional(),
@@ -12191,7 +12200,7 @@ var ShopifyPublishRequest = z41.object({
12191
12200
  });
12192
12201
  }
12193
12202
  });
12194
- var CodeLandingThemeSetupRequest = ShopifyPublishRequest.innerType().omit({
12203
+ var CodeLandingThemeSetupRequest = z41.object(ShopifyPublishRequest.shape).omit({
12195
12204
  publishAttemptId: true,
12196
12205
  commerceCorrection: true
12197
12206
  });
@@ -12261,8 +12270,8 @@ var ShopifyBundleMappingResult = z41.discriminatedUnion("status", [
12261
12270
  ]);
12262
12271
  var ShopifyPublishResponse = z41.object({
12263
12272
  pricingNotices: z41.array(SellerPricingNoticeSchema).max(32).optional(),
12264
- publicationId: z41.string().uuid(),
12265
- taskId: z41.string().uuid(),
12273
+ publicationId: z41.string().guid(),
12274
+ taskId: z41.string().guid(),
12266
12275
  status: ShopifyPublicationStatus,
12267
12276
  shopDomain: z41.string(),
12268
12277
  productId: z41.string().optional(),
@@ -12333,8 +12342,8 @@ var ShopifyImportOutcomeResponse = z41.discriminatedUnion("status", [
12333
12342
  ]);
12334
12343
  var ShopifyPublishAttemptStatus = z41.discriminatedUnion("status", [
12335
12344
  z41.object({
12336
- publicationId: z41.string().uuid(),
12337
- taskId: z41.string().uuid(),
12345
+ publicationId: z41.string().guid(),
12346
+ taskId: z41.string().guid(),
12338
12347
  status: z41.enum([
12339
12348
  "pending",
12340
12349
  "processing"
@@ -12342,8 +12351,8 @@ var ShopifyPublishAttemptStatus = z41.discriminatedUnion("status", [
12342
12351
  productId: z41.string().optional()
12343
12352
  }),
12344
12353
  z41.object({
12345
- publicationId: z41.string().uuid(),
12346
- taskId: z41.string().uuid(),
12354
+ publicationId: z41.string().guid(),
12355
+ taskId: z41.string().guid(),
12347
12356
  status: z41.literal("error"),
12348
12357
  productId: z41.string().optional(),
12349
12358
  failure: z41.discriminatedUnion("kind", [
@@ -12497,7 +12506,7 @@ var CreateShopifyBillingChargeRequest = z41.object({
12497
12506
  });
12498
12507
  var ShopifyBillingCallbackQuery = z41.object({
12499
12508
  charge_id: z41.string().regex(/^\d+$/),
12500
- transactionId: z41.string().uuid()
12509
+ transactionId: z41.string().guid()
12501
12510
  });
12502
12511
  var CancelShopifySubscriptionRequest = z41.object({
12503
12512
  subscriptionId: z41.string().min(1)
@@ -12563,12 +12572,12 @@ var ApproveAnglesRefusalReason = z42.enum([
12563
12572
  ]);
12564
12573
  var ApproveAnglesResponse = z42.object({
12565
12574
  success: z42.boolean(),
12566
- taskId: z42.string().uuid(),
12575
+ taskId: z42.string().guid(),
12567
12576
  reason: ApproveAnglesRefusalReason.optional()
12568
12577
  });
12569
12578
  var IngestResumeRefusalResponse = z42.object({
12570
12579
  success: z42.literal(false),
12571
- taskId: z42.string().uuid(),
12580
+ taskId: z42.string().guid(),
12572
12581
  reason: ApproveAnglesRefusalReason.optional()
12573
12582
  });
12574
12583
  var GenerateSuggestionsResponse = z42.object({
@@ -12583,7 +12592,7 @@ var SaveDraftRequest = z42.object({
12583
12592
  });
12584
12593
  var SaveDraftResponse = z42.object({
12585
12594
  success: z42.boolean(),
12586
- taskId: z42.string().uuid()
12595
+ taskId: z42.string().guid()
12587
12596
  });
12588
12597
  var ProductReferenceRecoveryImageMimeType = z42.enum([
12589
12598
  "image/jpeg",
@@ -12628,7 +12637,7 @@ var ConfirmProductReferencesRequest = z42.object({
12628
12637
  "keep_selection"
12629
12638
  ]),
12630
12639
  affectedRefKeys: z42.array(z42.string().min(1).max(200)).min(1).max(5).optional(),
12631
- expectedReferenceVersionId: z42.string().uuid().optional(),
12640
+ expectedReferenceVersionId: z42.string().guid().optional(),
12632
12641
  expectedEvidenceHash: z42.string().min(1).max(128).optional(),
12633
12642
  uploadedImages: z42.array(ProductReferenceRecoveryUpload).max(INGEST_MAX_REFERENCE_IMAGES).optional()
12634
12643
  }).optional()
@@ -12665,7 +12674,7 @@ var ConfirmProductReferencesRequest = z42.object({
12665
12674
  });
12666
12675
  var ConfirmProductReferencesResponse = z42.object({
12667
12676
  success: z42.boolean(),
12668
- taskId: z42.string().uuid(),
12677
+ taskId: z42.string().guid(),
12669
12678
  anglesQueued: z42.boolean()
12670
12679
  });
12671
12680
  var UpdateProductFeaturesRequest = z42.object({
@@ -12732,7 +12741,7 @@ var ApproveVideoAnglesRequest = z42.object({
12732
12741
  "meta",
12733
12742
  "upload"
12734
12743
  ]).optional(),
12735
- sourceUploadIds: z42.array(z42.string().uuid()).min(2).max(5).optional(),
12744
+ sourceUploadIds: z42.array(z42.string().guid()).min(2).max(5).optional(),
12736
12745
  /** Whether to pause for video script review before final generation */
12737
12746
  pauseForVideoScriptReview: z42.boolean().optional(),
12738
12747
  /** Whether to produce an additional AI-music video variant */
@@ -12746,7 +12755,7 @@ var ApproveVideoAnglesRequest = z42.object({
12746
12755
  }).superRefine((value, ctx) => validateFrankensteinDraftSources(value, ctx, true));
12747
12756
  var ApproveVideoAnglesResponse = z42.object({
12748
12757
  success: z42.boolean(),
12749
- taskId: z42.string().uuid(),
12758
+ taskId: z42.string().guid(),
12750
12759
  /** Persisted keys scheduled by this approval; visible candidate indices are not worker keys. */
12751
12760
  approvedAngleKeys: z42.array(z42.string().regex(/^angle_\d+$/)).min(1).max(3).optional(),
12752
12761
  reason: ApproveAnglesRefusalReason.optional()
@@ -12766,11 +12775,11 @@ var SaveVideoDraftRequest = z42.object({
12766
12775
  "meta",
12767
12776
  "upload"
12768
12777
  ]).optional(),
12769
- sourceUploadIds: z42.array(z42.string().uuid()).min(2).max(5).optional()
12778
+ sourceUploadIds: z42.array(z42.string().guid()).min(2).max(5).optional()
12770
12779
  }).superRefine((value, ctx) => validateFrankensteinDraftSources(value, ctx, false));
12771
12780
  var SaveVideoDraftResponse = z42.object({
12772
12781
  success: z42.boolean(),
12773
- taskId: z42.string().uuid()
12782
+ taskId: z42.string().guid()
12774
12783
  });
12775
12784
  var ApproveImageAnglesRequest = z42.object({
12776
12785
  /** Zero-based index of the generated angle explicitly selected for production. */
@@ -12794,7 +12803,7 @@ var ApproveImageAnglesRequest = z42.object({
12794
12803
  });
12795
12804
  var ApproveImageAnglesResponse = z42.object({
12796
12805
  success: z42.boolean(),
12797
- taskId: z42.string().uuid(),
12806
+ taskId: z42.string().guid(),
12798
12807
  reason: ApproveAnglesRefusalReason.optional()
12799
12808
  });
12800
12809
  var SaveImageDraftRequest = z42.object({
@@ -12805,7 +12814,7 @@ var SaveImageDraftRequest = z42.object({
12805
12814
  });
12806
12815
  var SaveImageDraftResponse = z42.object({
12807
12816
  success: z42.boolean(),
12808
- taskId: z42.string().uuid()
12817
+ taskId: z42.string().guid()
12809
12818
  });
12810
12819
  var ImageSuggestionsResponse = z42.object({
12811
12820
  painPoints: z42.array(z42.string()),
@@ -12851,8 +12860,8 @@ var QualityReportReason = z43.enum([
12851
12860
  "other"
12852
12861
  ]);
12853
12862
  var QualityReportRequest = z43.object({
12854
- taskId: z43.string().uuid().optional(),
12855
- mixTaskId: z43.string().uuid().optional(),
12863
+ taskId: z43.string().guid().optional(),
12864
+ mixTaskId: z43.string().guid().optional(),
12856
12865
  kind: QualityReportKind,
12857
12866
  /**
12858
12867
  * URL or internal proxy path (e.g. `/api/assets/...`).
@@ -12878,9 +12887,9 @@ var QualityReportRequest = z43.object({
12878
12887
  ]
12879
12888
  });
12880
12889
  var QualityReportResponse = z43.object({
12881
- reportId: z43.string().uuid(),
12882
- taskId: z43.string().uuid().optional(),
12883
- mixTaskId: z43.string().uuid().optional(),
12890
+ reportId: z43.string().guid(),
12891
+ taskId: z43.string().guid().optional(),
12892
+ mixTaskId: z43.string().guid().optional(),
12884
12893
  kind: QualityReportKind,
12885
12894
  resourceUrl: z43.string().min(1),
12886
12895
  reason: QualityReportReason,
@@ -13309,7 +13318,7 @@ var TaskCreativeVariantVideoPreset = VideoPreset.exclude([
13309
13318
  ...BLOCKED_VIDEO_PRESETS
13310
13319
  ]);
13311
13320
  var CreateTaskCreativeVariantBase = z47.object({
13312
- clientRequestId: z47.string().uuid(),
13321
+ clientRequestId: z47.string().guid(),
13313
13322
  angle: z47.string().trim().min(1).max(TASK_CREATIVE_VARIANT_TEXT_LIMITS.angle),
13314
13323
  buyerPersona: z47.string().trim().min(1).max(TASK_CREATIVE_VARIANT_TEXT_LIMITS.buyerPersona).optional()
13315
13324
  });
@@ -13332,7 +13341,7 @@ var CreateTaskImageVariantRequest = CreateTaskCreativeVariantBase.extend({
13332
13341
  styleMix: z47.boolean().optional()
13333
13342
  }).strict();
13334
13343
  var CreateTaskLandingSectionVariantRequest = z47.object({
13335
- clientRequestId: z47.string().uuid(),
13344
+ clientRequestId: z47.string().guid(),
13336
13345
  kind: z47.literal("landing"),
13337
13346
  sectionKey: LandingSectionKeySchema,
13338
13347
  instructions: z47.string().trim().min(1).max(TASK_CREATIVE_VARIANT_TEXT_LIMITS.landingInstructions).optional()
@@ -13360,8 +13369,8 @@ var EstimateTaskCreativeVariantRequest = z47.discriminatedUnion("kind", [
13360
13369
  ]);
13361
13370
  var CreateTaskCreativeVariantResponse = z47.object({
13362
13371
  ok: z47.literal(true),
13363
- sourceTaskId: z47.string().uuid(),
13364
- variantTaskId: z47.string().uuid(),
13372
+ sourceTaskId: z47.string().guid(),
13373
+ variantTaskId: z47.string().guid(),
13365
13374
  kind: TaskCreativeVariantKind,
13366
13375
  status: TaskCreativeVariantStatus
13367
13376
  }).strict();
@@ -13384,15 +13393,15 @@ var TaskCreativeVariantRecommendationRequest = z47.object({
13384
13393
  }).strict();
13385
13394
  var TaskCreativeVariantRecommendationResponse = z47.object({
13386
13395
  ok: z47.literal(true),
13387
- sourceTaskId: z47.string().uuid(),
13396
+ sourceTaskId: z47.string().guid(),
13388
13397
  kind: TaskCreativeVariantKind,
13389
13398
  field: TaskCreativeVariantRecommendationField,
13390
13399
  value: z47.string().trim().min(1).max(TASK_CREATIVE_VARIANT_TEXT_LIMITS.scriptNotes),
13391
13400
  rationale: z47.string().trim().min(1).max(TASK_CREATIVE_VARIANT_TEXT_LIMITS.recommendationRationale).optional()
13392
13401
  }).strict();
13393
13402
  var TaskCreativeVariantBaseResult = z47.object({
13394
- variantTaskId: z47.string().uuid(),
13395
- sourceTaskId: z47.string().uuid(),
13403
+ variantTaskId: z47.string().guid(),
13404
+ sourceTaskId: z47.string().guid(),
13396
13405
  kind: TaskCreativeVariantKind,
13397
13406
  status: TaskCreativeVariantStatus,
13398
13407
  angle: z47.string().min(1),
@@ -13566,7 +13575,7 @@ var ResultAngle = Angle.extend({
13566
13575
  aiEdit: AiEditTierSchema.nullable().optional()
13567
13576
  });
13568
13577
  var MVPResult = z49.object({
13569
- taskId: z49.string().uuid(),
13578
+ taskId: z49.string().guid(),
13570
13579
  /** Read-only identity derived from validated persisted request context.
13571
13580
  * Optional for older APIs and content-only tasks; absence never implies a service. */
13572
13581
  subjectKind: z49.enum([
@@ -13744,7 +13753,7 @@ var PendingUserActionSchema = z49.discriminatedUnion("kind", [
13744
13753
  z49.object({
13745
13754
  kind: z49.literal("service_angle_approval"),
13746
13755
  angles: z49.array(z49.object({
13747
- id: z49.string().uuid(),
13756
+ id: z49.string().guid(),
13748
13757
  content: z49.string(),
13749
13758
  creativeDirection: z49.string(),
13750
13759
  actor: z49.string(),
@@ -13823,7 +13832,7 @@ var CommercialStudySummarySchema = z49.union([
13823
13832
  })
13824
13833
  ]);
13825
13834
  var StatusResponse = z49.object({
13826
- taskId: z49.string().uuid(),
13835
+ taskId: z49.string().guid(),
13827
13836
  status: TaskStatusSchema,
13828
13837
  /** ENGINEERING string (`Task.error`). Never render this to a seller. */
13829
13838
  error: z49.string().optional(),
@@ -14031,7 +14040,7 @@ var StatusResponse = z49.object({
14031
14040
  frankensteinRun: FrankensteinRunProgressSchema.optional()
14032
14041
  });
14033
14042
  var TaskSummary = z49.object({
14034
- taskId: z49.string().uuid(),
14043
+ taskId: z49.string().guid(),
14035
14044
  /** A projected ServicePage, opened through its own editor and lifecycle. */
14036
14045
  resourceType: z49.literal("service_page").optional(),
14037
14046
  status: TaskStatusSchema,
@@ -14460,7 +14469,7 @@ var RegenerateLandingRoleBody = z50.object({
14460
14469
  comment: z50.string().max(2e3).optional(),
14461
14470
  sourceKey: z50.string().max(200).optional(),
14462
14471
  /** Client-generated key makes a lost response safe to retry without another charge. */
14463
- clientRequestId: z50.string().uuid().optional()
14472
+ clientRequestId: z50.string().guid().optional()
14464
14473
  }).strict();
14465
14474
  var LandingRegenerateEstimationOptions = z50.object({
14466
14475
  /** KIE image endpoint has non-linear pricing by nVariants; for landing we default to 2. */
@@ -15447,7 +15456,7 @@ var UpdateUserCreditsRequest = z53.object({
15447
15456
  /** Free-text detail. Required when the enum alone does not explain the grant. */
15448
15457
  notes: z53.string().trim().min(1).max(500).optional(),
15449
15458
  /** The task the grant compensates, when there is one. */
15450
- taskId: z53.string().uuid().optional()
15459
+ taskId: z53.string().guid().optional()
15451
15460
  });
15452
15461
  var QualityReportStatus = z53.enum([
15453
15462
  "open",
@@ -15507,7 +15516,7 @@ var AdminSupportDeliveryStatus = z53.enum([
15507
15516
  "blocked"
15508
15517
  ]);
15509
15518
  var AdminSupportMessage = z53.object({
15510
- id: z53.string().uuid(),
15519
+ id: z53.string().guid(),
15511
15520
  direction: z53.enum([
15512
15521
  "inbound",
15513
15522
  "outbound"
@@ -15531,7 +15540,7 @@ var AdminSupportMessage = z53.object({
15531
15540
  createdAt: z53.string().datetime()
15532
15541
  });
15533
15542
  var AdminSupportTicket = z53.object({
15534
- id: z53.string().uuid(),
15543
+ id: z53.string().guid(),
15535
15544
  category: z53.enum([
15536
15545
  "how_to",
15537
15546
  "credits",
@@ -15560,7 +15569,7 @@ var AdminSupportTicket = z53.object({
15560
15569
  updatedAt: z53.string().datetime()
15561
15570
  });
15562
15571
  var AdminSupportConversation = z53.object({
15563
- id: z53.string().uuid(),
15572
+ id: z53.string().guid(),
15564
15573
  status: AdminSupportConversationStatus,
15565
15574
  priority: z53.enum([
15566
15575
  "low",
@@ -15575,7 +15584,7 @@ var AdminSupportConversation = z53.object({
15575
15584
  createdAt: z53.string().datetime(),
15576
15585
  updatedAt: z53.string().datetime(),
15577
15586
  contact: z53.object({
15578
- id: z53.string().uuid(),
15587
+ id: z53.string().guid(),
15579
15588
  userId: z53.string().nullable(),
15580
15589
  verifiedAt: z53.string().datetime().nullable(),
15581
15590
  botMode: z53.enum([
@@ -15591,11 +15600,11 @@ var AdminSupportConversation = z53.object({
15591
15600
  var AdminSupportListQuery = z53.object({
15592
15601
  status: AdminSupportConversationStatus.optional(),
15593
15602
  take: z53.coerce.number().int().min(1).max(100).default(50),
15594
- cursorId: z53.string().uuid().optional()
15603
+ cursorId: z53.string().guid().optional()
15595
15604
  }).strict();
15596
15605
  var AdminSupportListResponse = z53.object({
15597
15606
  conversations: z53.array(AdminSupportConversation),
15598
- nextCursor: z53.string().uuid().nullable()
15607
+ nextCursor: z53.string().guid().nullable()
15599
15608
  });
15600
15609
  var AdminSupportReplyRequest = z53.object({
15601
15610
  body: z53.string().trim().min(1).max(4096),
@@ -15606,7 +15615,7 @@ var AdminSupportActionResponse = z53.object({
15606
15615
  conversation: AdminSupportConversation
15607
15616
  });
15608
15617
  var AdminSupportReplyResponse = z53.object({
15609
- messageId: z53.string().uuid(),
15618
+ messageId: z53.string().guid(),
15610
15619
  deliveryStatus: AdminSupportDeliveryStatus,
15611
15620
  duplicate: z53.boolean()
15612
15621
  });
@@ -15736,7 +15745,7 @@ var VideoVoiceJobSchema = z57.object({
15736
15745
  wakeRevision: z57.number().int().nonnegative()
15737
15746
  }).strict();
15738
15747
  var ExtractJobSchema = z57.object({
15739
- taskId: z57.string().uuid(),
15748
+ taskId: z57.string().guid(),
15740
15749
  imageKey: z57.string().min(1).optional(),
15741
15750
  imageKeys: z57.array(z57.string().min(1)).min(1).max(INGEST_MAX_REFERENCE_IMAGES).optional(),
15742
15751
  /** Existing clean references carried through a recovery extract. They are
@@ -15855,20 +15864,20 @@ var BrandExtractDocumentSchema = z57.object({
15855
15864
  ])
15856
15865
  });
15857
15866
  var VideoMixSubmitJobSchema = z57.object({
15858
- mixTaskId: z57.string().uuid()
15867
+ mixTaskId: z57.string().guid()
15859
15868
  });
15860
15869
  var VideoMixAssembleJobSchema = z57.object({
15861
- mixTaskId: z57.string().uuid()
15870
+ mixTaskId: z57.string().guid()
15862
15871
  });
15863
15872
  var VideoMixQaJobSchema = z57.object({
15864
- mixSceneTaskId: z57.string().uuid(),
15873
+ mixSceneTaskId: z57.string().guid(),
15865
15874
  // externalId is included in the BullMQ payload by the producer (used in the
15866
15875
  // jobId for retry uniqueness) but the worker only reads mixSceneTaskId.
15867
15876
  externalId: z57.string().min(1).optional()
15868
15877
  });
15869
15878
  var BrandExtractLocaleSchema = z57.string().regex(/^[A-Za-z]{2,3}(?:[-_][A-Za-z0-9]{2,8})?$/, "invalid locale");
15870
15879
  var BrandExtractJobSchema = z57.object({
15871
- brandId: z57.string().uuid(),
15880
+ brandId: z57.string().guid(),
15872
15881
  // Generation is part of the durable paid-spend identity. Default 1 keeps
15873
15882
  // pre-migration BullMQ payloads parseable; their DB state fails safe.
15874
15883
  generation: z57.number().int().positive().default(1),
@@ -15900,23 +15909,23 @@ import { z as z58 } from "zod";
15900
15909
  var WhatsAppDeliveryConsumerSchema = z58.discriminatedUnion("kind", [
15901
15910
  z58.object({
15902
15911
  kind: z58.literal("presentation"),
15903
- presentationId: z58.string().uuid(),
15912
+ presentationId: z58.string().guid(),
15904
15913
  pollAt: z58.number().int().nonnegative()
15905
15914
  }).strict(),
15906
15915
  z58.object({
15907
15916
  kind: z58.literal("message"),
15908
- messageId: z58.string().uuid(),
15917
+ messageId: z58.string().guid(),
15909
15918
  providerMessageId: z58.string().min(1).max(256)
15910
15919
  }).strict(),
15911
15920
  z58.object({
15912
15921
  kind: z58.literal("task_watch"),
15913
- commandId: z58.string().uuid(),
15922
+ commandId: z58.string().guid(),
15914
15923
  pollAt: z58.number().int().nonnegative()
15915
15924
  }).strict(),
15916
15925
  z58.object({
15917
15926
  kind: z58.literal("research_watch"),
15918
- commandId: z58.string().uuid(),
15919
- runId: z58.string().uuid(),
15927
+ commandId: z58.string().guid(),
15928
+ runId: z58.string().guid(),
15920
15929
  pollAt: z58.number().int().nonnegative()
15921
15930
  }).strict()
15922
15931
  ]);
@@ -15965,9 +15974,9 @@ var ComboItemSchema = z60.object({
15965
15974
  /** Physical details for this specific product */
15966
15975
  details: z60.object({
15967
15976
  packagingType: z60.string().optional(),
15968
- geometry: z60.record(z60.unknown()).optional(),
15969
- morphology: z60.record(z60.unknown()).optional(),
15970
- estimatedDimensions: z60.record(z60.unknown()).optional()
15977
+ geometry: z60.record(z60.string(), z60.unknown()).optional(),
15978
+ morphology: z60.record(z60.string(), z60.unknown()).optional(),
15979
+ estimatedDimensions: z60.record(z60.string(), z60.unknown()).optional()
15971
15980
  }).optional(),
15972
15981
  /** Per-item usage spec extracted individually (fallback: global combo usageSpec) */
15973
15982
  usageSpec: ProductUsageSpec.optional()
@@ -16006,7 +16015,7 @@ var FacebookConnectionStatusSchema = z61.object({
16006
16015
  message: z61.string().optional()
16007
16016
  });
16008
16017
  var FacebookCreateCampaignRequestSchema = z61.object({
16009
- taskId: z61.string().uuid(),
16018
+ taskId: z61.string().guid(),
16010
16019
  pixelId: z61.string().optional(),
16011
16020
  landingUrl: HttpUrl2.optional()
16012
16021
  });
@@ -16131,29 +16140,14 @@ var FacebookCreateCampaignResponseSchema = z61.object({
16131
16140
  appliedBudget: z61.number().int().positive()
16132
16141
  });
16133
16142
  var FacebookCreateCampaignFromCreativesBodySchema = z61.object({
16134
- /** Caller-owned retry fence. Required before any provider operation. */
16135
- publishAttemptId: MetaPublishAttemptId,
16136
- creatives: z61.array(z61.object({
16137
- type: MediaKind,
16138
- title: z61.string().max(120),
16139
- description: z61.string().max(500),
16140
- cta: MetaCtaType,
16143
+ ...UploadToMetaRequest.shape,
16144
+ creatives: z61.array(UploadToMetaRequest.shape.creatives.element.extend({
16145
+ // Retain this endpoint's HTTP URL policy; the upload owner additionally
16146
+ // forbids credentials. Sharing its field shape must not tighten ours.
16141
16147
  mediaUrl: HttpUrl2.optional(),
16142
- mediaAssetId: z61.string().uuid().optional(),
16143
- thumbnailUrl: HttpUrl2.optional(),
16144
- thumbnailAssetId: z61.string().uuid().optional(),
16145
- creativeId: z61.string().min(1).optional()
16148
+ thumbnailUrl: HttpUrl2.optional()
16146
16149
  })).min(1).max(CAMPAIGN_LIMITS.MAX_CREATIVES),
16147
- adAccountId: MetaAdAccountId,
16148
- portfolioId: z61.string().min(1).optional(),
16149
- pageId: z61.string().min(1).optional(),
16150
- pixelId: z61.string().optional(),
16151
- /** Required unless campaignConfig.destination is 'whatsapp' (see superRefine below). */
16152
16150
  landingUrl: HttpUrl2.optional(),
16153
- /** Target country for ad targeting (ISO 3166-1 alpha-2 code or resolvable name) */
16154
- targetCountry: CountryIso2Schema.default("US"),
16155
- /** Custom campaign name */
16156
- campaignName: z61.string().min(1).max(100).optional(),
16157
16151
  campaignConfig: MetaCampaignConfig.optional()
16158
16152
  }).superRefine((value, ctx) => {
16159
16153
  const isWhatsapp = value.campaignConfig?.destination?.type === "whatsapp";
@@ -16166,30 +16160,7 @@ var FacebookCreateCampaignFromCreativesBodySchema = z61.object({
16166
16160
  message: "landingUrl is required unless destination is whatsapp"
16167
16161
  });
16168
16162
  }
16169
- value.creatives.forEach((creative, index) => {
16170
- if (Boolean(creative.mediaUrl) === Boolean(creative.mediaAssetId)) {
16171
- ctx.addIssue({
16172
- code: z61.ZodIssueCode.custom,
16173
- path: [
16174
- "creatives",
16175
- index,
16176
- "mediaUrl"
16177
- ],
16178
- message: "Provide exactly one of mediaUrl or mediaAssetId"
16179
- });
16180
- }
16181
- if (creative.thumbnailUrl && creative.thumbnailAssetId) {
16182
- ctx.addIssue({
16183
- code: z61.ZodIssueCode.custom,
16184
- path: [
16185
- "creatives",
16186
- index,
16187
- "thumbnailUrl"
16188
- ],
16189
- message: "Provide at most one of thumbnailUrl or thumbnailAssetId"
16190
- });
16191
- }
16192
- });
16163
+ refineMetaCreativeSources(value, ctx);
16193
16164
  if (value.campaignConfig?.destination?.type === "landing" && value.landingUrl && value.campaignConfig.destination.landingUrl !== value.landingUrl) {
16194
16165
  ctx.addIssue({
16195
16166
  code: z61.ZodIssueCode.custom,
@@ -16268,9 +16239,9 @@ var FacebookTaskCreativeSourceSchema = z61.object({
16268
16239
  var FacebookMediaCreativeSourceSchema = z61.object({
16269
16240
  type: z61.literal("media"),
16270
16241
  mediaUrl: HttpUrl2.optional(),
16271
- mediaAssetId: z61.string().uuid().optional(),
16242
+ mediaAssetId: z61.string().guid().optional(),
16272
16243
  thumbnailUrl: HttpUrl2.optional(),
16273
- thumbnailAssetId: z61.string().uuid().optional()
16244
+ thumbnailAssetId: z61.string().guid().optional()
16274
16245
  });
16275
16246
  var FacebookCreativeSourceSchema = z61.discriminatedUnion("type", [
16276
16247
  FacebookTaskCreativeSourceSchema,
@@ -16293,15 +16264,15 @@ var FacebookCreateCampaignFromTasksBodySchema = z61.object({
16293
16264
  pageId: z61.string().min(1),
16294
16265
  pixelId: z61.string().optional(),
16295
16266
  /**
16296
- * Omitted: a campaign with task creatives lands on the published service
16297
- * landing of its service tasks (resolved server side, META_NO_LANDING_URL
16298
- * when there is none); a media-only campaign must name it.
16299
- */
16267
+ * Omitted: a campaign with task creatives lands on the published service
16268
+ * landing of its service tasks (resolved server side, META_NO_LANDING_URL
16269
+ * when there is none); a media-only campaign must name it.
16270
+ */
16300
16271
  landingUrl: HttpUrl2.optional(),
16301
16272
  /**
16302
- * Omitted: the brand country of its service tasks; a product-only campaign
16303
- * keeps "US". Never a hardcoded country for a service (META_NO_TARGET_COUNTRY).
16304
- */
16273
+ * Omitted: the brand country of its service tasks; a product-only campaign
16274
+ * keeps "US". Never a hardcoded country for a service (META_NO_TARGET_COUNTRY).
16275
+ */
16305
16276
  targetCountry: CountryIso2Schema.optional(),
16306
16277
  campaignName: z61.string().min(1).max(100),
16307
16278
  campaignConfig: MetaCampaignConfig.optional()
@@ -16862,7 +16833,7 @@ var VideoSpeechAssetSchema = z64.object({
16862
16833
  var VoiceProgressSchema = z64.discriminatedUnion("status", [
16863
16834
  z64.object({
16864
16835
  status: z64.literal("ready"),
16865
- value: z64.unknown()
16836
+ value: z64.unknown().optional()
16866
16837
  }).strict(),
16867
16838
  z64.object({
16868
16839
  status: z64.literal("waiting"),
@@ -17412,7 +17383,7 @@ var MixSceneResult = z67.object({
17412
17383
  degradedReason: MixDegradationReasonSchema.optional()
17413
17384
  });
17414
17385
  var MixResult = z67.object({
17415
- mixTaskId: z67.string().uuid(),
17386
+ mixTaskId: z67.string().guid(),
17416
17387
  status: z67.enum([
17417
17388
  "queued",
17418
17389
  "processing",
@@ -17455,7 +17426,7 @@ var PreparedImagePreviewUrlSchema = z68.string().url().max(2048).refine((value)
17455
17426
  return protocol === "https:" || protocol === "http:";
17456
17427
  }, "Prepared image preview URLs must use HTTP(S)");
17457
17428
  var WinningProductPreparedImageSchema = z68.object({
17458
- assetId: z68.string().uuid(),
17429
+ assetId: z68.string().guid(),
17459
17430
  previewUrl: PreparedImagePreviewUrlSchema,
17460
17431
  productName: z68.string().trim().min(1).max(240),
17461
17432
  presentation: MediaPresentationImageSchema
@@ -17754,14 +17725,16 @@ var LandingOperationStepSelectionSchema = CodeLandingStepSelectionSchema.extend(
17754
17725
  var LandingOperationReceiptStepSchema = LandingOperationStepSelectionSchema.extend({
17755
17726
  receipt: CodeLandingEffectiveReceiptSchema.optional()
17756
17727
  });
17757
- var LandingOperationEnvelopeNodeSchema = CodeLandingEnvelopeNodeSchema.innerType().extend({
17728
+ var LandingOperationEnvelopeNodeSchema = z73.object(CodeLandingEnvelopeNodeSchema.shape).strict().extend({
17758
17729
  phase: LandingOperationStepPhaseSchema
17759
17730
  }).superRefine((node, ctx) => {
17760
17731
  const legacy = CodeLandingEnvelopeNodeSchema.safeParse({
17761
17732
  ...node,
17762
17733
  phase: "asset"
17763
17734
  });
17764
- if (!legacy.success) for (const issue of legacy.error.issues) ctx.addIssue(issue);
17735
+ if (!legacy.success) for (const issue of legacy.error.issues) ctx.addIssue({
17736
+ ...issue
17737
+ });
17765
17738
  });
17766
17739
  var LandingGifGenerationPolicySchema = z73.discriminatedUnion("model", [
17767
17740
  z73.object({
@@ -18148,7 +18121,7 @@ var LandingRegenerationStatusResponse = z75.object({
18148
18121
  });
18149
18122
 
18150
18123
  // ../../packages/types/src/shopify-meta-tracking.ts
18151
- import { z as z76 } from "zod";
18124
+ import * as z76 from "zod";
18152
18125
  var MetaTrackingOwnerSchema = z76.enum([
18153
18126
  "auto",
18154
18127
  "external",
@@ -18356,7 +18329,7 @@ var UploadedAssetRole = z78.enum([
18356
18329
  ]);
18357
18330
  var UPLOADED_ASSET_MAX_FILES = 10;
18358
18331
  var UPLOADED_ASSET_IMAGE_MAX_FILES = 5;
18359
- var UploadedAssetId = z78.string().uuid();
18332
+ var UploadedAssetId = z78.string().guid();
18360
18333
  var HttpsUrl = z78.string().url().refine((value) => {
18361
18334
  try {
18362
18335
  const url2 = new URL(value);
@@ -18497,7 +18470,7 @@ var DropshippingProjectRewardMilestoneStateSchema = z79.object({
18497
18470
  credits: z79.number().int().positive(),
18498
18471
  available: z79.boolean().optional(),
18499
18472
  earned: z79.boolean(),
18500
- grantId: z79.string().uuid().nullable(),
18473
+ grantId: z79.string().guid().nullable(),
18501
18474
  grantedAt: z79.string().datetime().nullable()
18502
18475
  });
18503
18476
  var DropshippingProjectRewardProgressSchema = z79.object({
@@ -18563,16 +18536,16 @@ var HttpUrlSchema = z79.string().url().max(2e3).refine((value) => {
18563
18536
  }, "Product URL must use HTTP(S)");
18564
18537
  var ResearchCandidateOriginSchema = z79.object({
18565
18538
  type: z79.literal("research_candidate"),
18566
- runId: z79.string().uuid(),
18539
+ runId: z79.string().guid(),
18567
18540
  candidateSourceId: z79.string().min(1).max(160)
18568
18541
  });
18569
18542
  var TaskOriginSchema = z79.object({
18570
18543
  type: z79.literal("task"),
18571
- taskId: z79.string().uuid()
18544
+ taskId: z79.string().guid()
18572
18545
  });
18573
18546
  var ManualOriginSchema = z79.object({
18574
18547
  type: z79.literal("manual"),
18575
- clientRequestId: z79.string().uuid(),
18548
+ clientRequestId: z79.string().guid(),
18576
18549
  country: z79.string().min(2).max(3).optional()
18577
18550
  });
18578
18551
  var CreateDropshippingProjectRequestSchema = z79.object({
@@ -18645,11 +18618,11 @@ var DropshippingProjectNextActionSchema = z79.discriminatedUnion("kind", [
18645
18618
  })
18646
18619
  ]);
18647
18620
  var DropshippingProjectResponseSchema = z79.object({
18648
- id: z79.string().uuid(),
18649
- taskId: z79.string().uuid().nullable(),
18621
+ id: z79.string().guid(),
18622
+ taskId: z79.string().guid().nullable(),
18650
18623
  status: DropshippingProjectStatusSchema,
18651
18624
  originKey: z79.string().min(1),
18652
- researchRunId: z79.string().uuid().nullable(),
18625
+ researchRunId: z79.string().guid().nullable(),
18653
18626
  candidateSourceId: z79.string().nullable(),
18654
18627
  productName: z79.string().nullable(),
18655
18628
  productUrl: HttpUrlSchema.nullable(),
@@ -19004,7 +18977,7 @@ var mediaVideoFields = {
19004
18977
  var mediaImageFields = {
19005
18978
  kind: z81.literal("image"),
19006
18979
  durationSec: z81.never({
19007
- invalid_type_error: "a photo has no duration"
18980
+ error: "a photo has no duration"
19008
18981
  }).optional()
19009
18982
  };
19010
18983
  var mediaOriginFields = {
@@ -19249,7 +19222,7 @@ var LegacyMotionGraphicsClipSpecSchema = z84.discriminatedUnion("kind", [
19249
19222
  ...clipSpecFields,
19250
19223
  kind: z84.literal("broll"),
19251
19224
  speech: z84.never({
19252
- invalid_type_error: "only a speaking clip carries speech"
19225
+ error: "only a speaking clip carries speech"
19253
19226
  }).optional()
19254
19227
  }).strict(),
19255
19228
  z84.object({
@@ -19822,8 +19795,8 @@ var MotionGraphicsCreativeBatchSchema = z89.object({
19822
19795
  version: z89.literal("v1"),
19823
19796
  count: MotionGraphicsHookVariantsSchema,
19824
19797
  index: MotionGraphicsHookVariantsSchema,
19825
- rootTaskId: z89.string().uuid().optional(),
19826
- taskIds: z89.array(z89.string().uuid()).min(1).max(3).optional(),
19798
+ rootTaskId: z89.string().guid().optional(),
19799
+ taskIds: z89.array(z89.string().guid()).min(1).max(3).optional(),
19827
19800
  plans: MotionGraphicsCreativePlansSchema.optional()
19828
19801
  }).strict().superRefine((batch, ctx) => {
19829
19802
  if (batch.index > batch.count) ctx.addIssue({
@@ -19919,7 +19892,7 @@ var MotionGraphicsMusicStatusResponseSchema = z90.discriminatedUnion("status", [
19919
19892
  // ../../packages/types/src/website-capture-artifact.ts
19920
19893
  import { z as z91 } from "zod";
19921
19894
  var WebsiteCaptureBindingSchema = z91.object({
19922
- captureId: z91.string().uuid(),
19895
+ captureId: z91.string().guid(),
19923
19896
  bundleKey: z91.string().min(1),
19924
19897
  sha256: z91.string().regex(/^[a-f0-9]{64}$/)
19925
19898
  });
@@ -20063,7 +20036,7 @@ var motionGraphicsStateSchema = z93.object({
20063
20036
  /** Durable, unpaid Generate intent. Removed only after capture admission and payment. */
20064
20037
  captureAdmission: z93.object({
20065
20038
  version: z93.literal("v1"),
20066
- captureId: z93.string().uuid().optional(),
20039
+ captureId: z93.string().guid().optional(),
20067
20040
  maxSocialAcquisitionPriceCents: z93.number().finite().nonnegative(),
20068
20041
  maxTotalPriceCents: z93.number().finite().nonnegative(),
20069
20042
  deadlineAt: z93.string().datetime(),
@@ -22027,7 +22000,7 @@ var DailyControlProductFactsSchema = z96.object({
22027
22000
  currency: z96.string()
22028
22001
  });
22029
22002
  var DailyControlProductSchema = z96.object({
22030
- projectId: z96.string().uuid(),
22003
+ projectId: z96.string().guid(),
22031
22004
  productName: z96.string().nullable(),
22032
22005
  status: DailyControlStatusSchema,
22033
22006
  /** Motivo legible cuando status !== 'ok'. Nunca se rellenan métricas en ese caso. */
@@ -22072,7 +22045,7 @@ var DailyControlQuerySchema = z96.object({
22072
22045
  * necesita ese producto; sin este filtro cada carga de página lee el gasto
22073
22046
  * de TODOS los proyectos activos del usuario contra Meta/TikTok/Shopify.
22074
22047
  */
22075
- projectId: z96.string().uuid().optional()
22048
+ projectId: z96.string().guid().optional()
22076
22049
  });
22077
22050
  var LinkableCampaignSchema = z96.object({
22078
22051
  provider: z96.enum([
@@ -22281,7 +22254,7 @@ var CreateFinanceOperationSchema = z97.object({
22281
22254
  label: z97.string().trim().min(1).max(60).optional()
22282
22255
  }).strict();
22283
22256
  var FinanceOperationSchema = z97.object({
22284
- id: z97.string().uuid(),
22257
+ id: z97.string().guid(),
22285
22258
  countryCode: z97.string().length(2),
22286
22259
  currency: z97.string().min(3).max(3),
22287
22260
  label: z97.string().min(1)
@@ -22290,7 +22263,7 @@ var MonthlyPLQuerySchema = z97.object({
22290
22263
  /** Opcional a propósito: con UNA sola operación —el caso de casi todo el
22291
22264
  * mundo— el servidor la resuelve solo. Con varias devuelve cuáles son,
22292
22265
  * para poder preguntar por país en vez de fallar. */
22293
- operationId: z97.string().uuid().optional(),
22266
+ operationId: z97.string().guid().optional(),
22294
22267
  /** YYYY-MM. Solo mes calendario: es el periodo con el que se piensa un
22295
22268
  * negocio, y prorratear gastos fijos sobre un rango libre confunde más de
22296
22269
  * lo que ayuda. */
@@ -22299,7 +22272,7 @@ var MonthlyPLQuerySchema = z97.object({
22299
22272
  var RESERVED_EXPENSE_LABEL_PREFIX = "__ad_spend__";
22300
22273
  var isReservedExpenseLabel = /* @__PURE__ */ __name((label) => label.trim().startsWith(RESERVED_EXPENSE_LABEL_PREFIX), "isReservedExpenseLabel");
22301
22274
  var SaveMonthlyExpenseSchema = z97.object({
22302
- operationId: z97.string().uuid().optional(),
22275
+ operationId: z97.string().guid().optional(),
22303
22276
  month: z97.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/).optional(),
22304
22277
  label: z97.string().trim().min(1).max(80).refine((label) => !isReservedExpenseLabel(label), {
22305
22278
  message: "reserved_expense_label"
@@ -22307,7 +22280,7 @@ var SaveMonthlyExpenseSchema = z97.object({
22307
22280
  /** Unidades mayores de la moneda; conserva decimales donde aplique. */
22308
22281
  amount: z97.number().finite().min(0),
22309
22282
  allocations: z97.array(z97.object({
22310
- operationId: z97.string().uuid(),
22283
+ operationId: z97.string().guid(),
22311
22284
  sharePct: z97.number().int().min(1).max(100)
22312
22285
  })).min(1).refine((allocations) => allocations.reduce((sum, one) => sum + one.sharePct, 0) <= 100, {
22313
22286
  message: "allocations_must_sum_to_100"
@@ -22316,7 +22289,7 @@ var SaveMonthlyExpenseSchema = z97.object({
22316
22289
  }).optional()
22317
22290
  }).strict();
22318
22291
  var DeleteMonthlyExpenseSchema = z97.object({
22319
- operationId: z97.string().uuid().optional(),
22292
+ operationId: z97.string().guid().optional(),
22320
22293
  month: z97.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/),
22321
22294
  label: z97.string().trim().min(1).max(80).refine((label) => !isReservedExpenseLabel(label), {
22322
22295
  message: "reserved_expense_label"
@@ -22324,11 +22297,11 @@ var DeleteMonthlyExpenseSchema = z97.object({
22324
22297
  }).strict();
22325
22298
  var SetAdSpendSchema = z97.object({
22326
22299
  month: z97.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/).optional(),
22327
- operationId: z97.string().uuid().optional(),
22300
+ operationId: z97.string().guid().optional(),
22328
22301
  amount: z97.number().finite().min(0).nullable()
22329
22302
  }).strict();
22330
22303
  var MonthlyExpensesQuerySchema = z97.object({
22331
- operationId: z97.string().uuid().optional(),
22304
+ operationId: z97.string().guid().optional(),
22332
22305
  month: z97.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/).optional()
22333
22306
  }).strict();
22334
22307
 
@@ -22357,13 +22330,13 @@ var ResolveUnmatchedProductSchema = z98.object({
22357
22330
  provider: z98.enum(PRODUCT_ALIAS_PROVIDERS),
22358
22331
  externalId: z98.string().trim().min(1).max(64),
22359
22332
  label: z98.string().trim().min(1).max(PRODUCT_ALIAS_LABEL_MAX_LENGTH),
22360
- operationId: z98.string().uuid(),
22333
+ operationId: z98.string().guid(),
22361
22334
  /** Presente ⇒ es el producto al que pertenece. Ausente ⇒ es uno nuevo. */
22362
- productControlId: z98.string().uuid().optional()
22335
+ productControlId: z98.string().guid().optional()
22363
22336
  }).strict();
22364
22337
  var MergeProductsSchema = z98.object({
22365
- sourceId: z98.string().uuid(),
22366
- targetId: z98.string().uuid()
22338
+ sourceId: z98.string().guid(),
22339
+ targetId: z98.string().guid()
22367
22340
  }).strict().refine((value) => value.sourceId !== value.targetId, {
22368
22341
  message: "merge_same_product",
22369
22342
  path: [
@@ -22371,8 +22344,8 @@ var MergeProductsSchema = z98.object({
22371
22344
  ]
22372
22345
  });
22373
22346
  var CreateProductControlFromTaskSchema = z98.object({
22374
- taskId: z98.string().uuid(),
22375
- operationId: z98.string().uuid().optional()
22347
+ taskId: z98.string().guid(),
22348
+ operationId: z98.string().guid().optional()
22376
22349
  }).strict();
22377
22350
 
22378
22351
  // ../../packages/types/src/product-order-line.ts
@@ -22420,7 +22393,7 @@ var ProductOrderLineSchema = z99.object({
22420
22393
  }).strict();
22421
22394
  var ORDER_LINES_BATCH_MAX = 5e3;
22422
22395
  var ImportOrderLinesSchema = z99.object({
22423
- operationId: z99.string().uuid(),
22396
+ operationId: z99.string().guid(),
22424
22397
  provider: z99.string().min(1).max(32),
22425
22398
  source: z99.string().min(1).max(32),
22426
22399
  reportedAt: z99.string().datetime(),
@@ -22446,7 +22419,7 @@ var ImportOrderLinesFileSchema = z99.object({
22446
22419
  /** El archivo en base64. `.xlsx` del proveedor. */
22447
22420
  fileBase64: z99.string().min(1).max(Math.ceil(8 * 1024 * 1024 / 3) * 4),
22448
22421
  filename: z99.string().min(1).max(200),
22449
- operationId: z99.string().uuid().optional(),
22422
+ operationId: z99.string().guid().optional(),
22450
22423
  provider: z99.string().min(1).max(32).default("dropi"),
22451
22424
  /**
22452
22425
  * Solo mirar: devuelve el resumen y NO escribe nada.
@@ -22480,7 +22453,7 @@ var OrderLinesFileSummarySchema = z99.object({
22480
22453
  });
22481
22454
  var SyncShopifyOrdersSchema = z99.object({
22482
22455
  shopDomain: z99.string().min(3).max(120).optional(),
22483
- operationId: z99.string().uuid().optional(),
22456
+ operationId: z99.string().guid().optional(),
22484
22457
  /** YYYY-MM-DD. Sin rango, el mes en curso. */
22485
22458
  since: z99.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional(),
22486
22459
  until: z99.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional()
@@ -22681,7 +22654,7 @@ var SaveProductControlCostingSchema = z100.object({
22681
22654
  /** El de Shopify, cuando el producto vive en la tienda. */
22682
22655
  shopifyProductId: z100.string().min(1).optional(),
22683
22656
  /** El NUESTRO, para el producto que nació del archivo del proveedor. */
22684
- productControlId: z100.string().uuid().optional(),
22657
+ productControlId: z100.string().guid().optional(),
22685
22658
  /** Su precio de venta, solo si el producto no vive en Shopify. */
22686
22659
  manualSellingPrice: z100.number().positive().nullable().optional(),
22687
22660
  targetCountry: z100.string().min(2).max(2),
@@ -22721,7 +22694,7 @@ var SaveProductControlCostingSchema = z100.object({
22721
22694
  });
22722
22695
  var SaveProductCatalogSchema = z100.object({
22723
22696
  shopDomain: z100.string().min(1).optional(),
22724
- productControlId: z100.string().uuid(),
22697
+ productControlId: z100.string().guid(),
22725
22698
  /** Nulo BORRA la meta. Cero sería una meta de no ganar nada. */
22726
22699
  targetMonthlyProfit: z100.number().finite().positive().nullable().optional(),
22727
22700
  lifecycleStatus: z100.enum([
@@ -22744,7 +22717,7 @@ var ProductControlCampaignFieldsSchema = z100.object({
22744
22717
  }).strict();
22745
22718
  var LinkProductControlCampaignSchema = z100.union([
22746
22719
  ProductControlCampaignFieldsSchema.extend({
22747
- productControlId: z100.string().uuid()
22720
+ productControlId: z100.string().guid()
22748
22721
  }).strict(),
22749
22722
  ProductControlCampaignFieldsSchema.extend({
22750
22723
  shopDomain: z100.string().min(1),
@@ -22891,7 +22864,7 @@ var ImportFulfillmentCountsResponseSchema = z100.object({
22891
22864
  });
22892
22865
  var CreateManualProductControlSchema = z100.object({
22893
22866
  /** UUID que el diálogo fija por apertura; es además el id del producto. */
22894
- requestId: z100.string().uuid(),
22867
+ requestId: z100.string().guid(),
22895
22868
  title: z100.string().trim().min(1).max(200),
22896
22869
  /** País donde vende este producto; la moneda sale de él en el servidor. */
22897
22870
  targetCountry: z100.string().regex(/^[A-Z]{2}$/).refine((code) => {
@@ -22903,7 +22876,7 @@ var CreateManualProductControlSchema = z100.object({
22903
22876
  }
22904
22877
  }, "unsupported_finance_country"),
22905
22878
  /** Solo cuando coincide con el país elegido; si no, se omite. */
22906
- operationId: z100.string().uuid().optional(),
22879
+ operationId: z100.string().guid().optional(),
22907
22880
  manualSellingPrice: z100.number().finite().positive().max(Number.MAX_SAFE_INTEGER),
22908
22881
  supplierCost: z100.number().finite().positive().max(Number.MAX_SAFE_INTEGER),
22909
22882
  shippingCost: z100.number().finite().nonnegative().max(Number.MAX_SAFE_INTEGER),
@@ -22921,7 +22894,7 @@ var CreateManualProductControlSchema = z100.object({
22921
22894
  }
22922
22895
  });
22923
22896
  var CreateManualProductControlResponseSchema = z100.object({
22924
- productControlId: z100.string().uuid(),
22897
+ productControlId: z100.string().guid(),
22925
22898
  created: z100.boolean()
22926
22899
  });
22927
22900
 
@@ -23012,7 +22985,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23012
22985
  "approve_video_script",
23013
22986
  // 2026-10-14: optional exact plan binding shared by legacy/unified review.
23014
22987
  // Hash captured from the real registered schema in apps/mcp/src/server.test.ts.
23015
- "242c9ce8db5e19c065d67d2e3f3cf9fca20e119b9485bcf854a2233832523b0b",
22988
+ "5f7722993798d952d4a920a9bc7929a8c6a54f8ca13bff1b824d555dd680a6d2",
23016
22989
  "credit_consuming",
23017
22990
  "creative",
23018
22991
  [
@@ -23054,7 +23027,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23054
23027
  ], [
23055
23028
  "staging_asset"
23056
23029
  ], WHATSAPP_ONLY_CHANNEL_EXPOSURE),
23057
- defineCapability("check_media_upload", "daf202e0ff3a7a14425d164a7be6a81922b12233e85dbb898894e7c3ba6c5876", "none", "read_only", [
23030
+ defineCapability("check_media_upload", "58acbc7574d140389efbddfd45e660a353429681891b3d85a08b74351bb5acab", "none", "read_only", [
23058
23031
  "read"
23059
23032
  ], [
23060
23033
  slot("upload_session", true, [
@@ -23065,7 +23038,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23065
23038
  ], [
23066
23039
  "uploaded_asset"
23067
23040
  ], MCP_ONLY_CHANNEL_EXPOSURE),
23068
- defineCapability("cost_dropshipping_project", "411c0e362f132e564d5f948f8d87e3ae55f03dad7d02d8224b949b899a187359", "state_change", "business", [
23041
+ defineCapability("cost_dropshipping_project", "fead3bca76b7531c52020cd64135072593783fe12c0c605865a08f1d7d028001", "state_change", "business", [
23069
23042
  "state_change"
23070
23043
  ], [
23071
23044
  slot("project_revision", true, [
@@ -23102,7 +23075,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23102
23075
  ], [
23103
23076
  "project_costing"
23104
23077
  ]),
23105
- defineCapability("cost_product", "6d1f85a999dbdabae4eda406ff4689cdff2016df375b5b6741b91f4308d819af", "none", "read_only", [
23078
+ defineCapability("cost_product", "2272a6a3375401ced9deba82e41796b037aef20d712bc7996221e7fee0d7a4d7", "none", "read_only", [
23106
23079
  "read"
23107
23080
  ], [
23108
23081
  slot("product_reference", false, [], [
@@ -23146,7 +23119,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23146
23119
  // MCP 8.6.0: + storyteller narrative family and animationStyle axis.
23147
23120
  // MCP 8.10.0: storyteller family blocked (BLOCKED_NARRATIVE_STYLES).
23148
23121
  // MCP 9.1.0: combine current animated-video controls and initial GIF choice.
23149
- "3e02399a7785df328f1c4d63cfbb6d7481abaac9f91d4a5cf51d410e657d63aa",
23122
+ "5991b2e897aad7b10c4e38a93e8c58234741498393439cf0228ed9ffd966efef",
23150
23123
  "credit_consuming",
23151
23124
  "creative",
23152
23125
  [
@@ -23203,7 +23176,8 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23203
23176
  // MCP 8.6.0: + storyteller narrative family and animationStyle axis.
23204
23177
  // MCP 8.10.0: storyteller family blocked (BLOCKED_NARRATIVE_STYLES).
23205
23178
  // MCP 9.1.0: combine current animated-video controls and initial GIF choice.
23206
- "b44e4945c1d3d63d06ecf46295a6ac273df20e059edcf72bfb8f88149f28e12a",
23179
+ // MCP 12.4.0: landingStrategy narrowed to classic + social_proof.
23180
+ "5a6dd48977702dbb92a315fb668054f13918fd1cfae5056de82e94144e6f5804",
23207
23181
  "credit_consuming",
23208
23182
  "creative",
23209
23183
  [
@@ -23363,7 +23337,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23363
23337
  // SHARED_CHANNEL_EXPOSURE to restore it.
23364
23338
  WHATSAPP_ONLY_CHANNEL_EXPOSURE
23365
23339
  ),
23366
- defineCapability("edit_image_creative", "50eca473829328dfb63b9cbae03a9835b79c510e29528563e09b7eb3e5e9bca4", "credit_consuming", "creative", [
23340
+ defineCapability("edit_image_creative", "eb487773c4a9ffd5d4472c5a1d77e0fef7b625dbf9ca15b5da700a903ba30945", "credit_consuming", "creative", [
23367
23341
  "credit_consuming",
23368
23342
  "state_change"
23369
23343
  ], [
@@ -23382,7 +23356,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23382
23356
  ], [
23383
23357
  "creative"
23384
23358
  ]),
23385
- defineCapability("get_image_edit_status", "fe59aefd433afe7e5a2d8b4a81084583750c1447c877b6bce698340326665141", "none", "read_only", [
23359
+ defineCapability("get_image_edit_status", "3feb680140ab8459c10c22fb3aba3a7d41e147fddfcdd7e4cdac050c0f7ea34e", "none", "read_only", [
23386
23360
  "read"
23387
23361
  ], [
23388
23362
  slot("creative_operation", true, [
@@ -23394,7 +23368,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23394
23368
  ], [
23395
23369
  "creative_edit_status"
23396
23370
  ], MCP_ONLY_CHANNEL_EXPOSURE),
23397
- defineCapability("edit_task_draft", "1c9343bdce51aac36ec6254557c8a904037746523168527f012b4c5b6361e98e", "state_change", "creative", [
23371
+ defineCapability("edit_task_draft", "6df71b63f0c00ba9eac12f31fb0b71610225ece74df85032025bb77197bb7c22", "state_change", "creative", [
23398
23372
  "state_change"
23399
23373
  ], [
23400
23374
  slot("task_angle", true, [
@@ -23409,7 +23383,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23409
23383
  ], [
23410
23384
  "task_draft"
23411
23385
  ]),
23412
- defineCapability("estimate_creative_variant", "d4453364c0706bf88f480cebc977916f06d222d7eebebc9cfa91165929a1a998", "none", "read_only", [
23386
+ defineCapability("estimate_creative_variant", "468079ba24e5e0d3c5c707cd54fec64571be429e66cadc12019af4d6e9d10c4e", "none", "read_only", [
23413
23387
  "read"
23414
23388
  ], [
23415
23389
  slot("source_task", true, [
@@ -23431,7 +23405,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23431
23405
  ], [
23432
23406
  "cost_estimate"
23433
23407
  ]),
23434
- defineCapability("estimate_market_study_cost", "d89b2ddfd5020446d7d2b58001b75eedb8f737bc17d908bdbdde1a1c9120f387", "none", "read_only", [
23408
+ defineCapability("estimate_market_study_cost", "d1fbe8ead642d481258c419a1eed059f9c8188d1cd9f2d4eed12e202fc8800a4", "none", "read_only", [
23435
23409
  "read"
23436
23410
  ], [
23437
23411
  slot("creative_kind", true, [
@@ -23456,7 +23430,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23456
23430
  ], [
23457
23431
  "cost_estimate"
23458
23432
  ], MCP_ONLY_CHANNEL_EXPOSURE),
23459
- defineCapability("find_winning_products", "7c4c4fd675f8c1ae9795bd6c7a379207a08cbf9ac5794593b76122294c31e818", "credit_consuming", "business", [
23433
+ defineCapability("find_winning_products", "b73a18bb9618b96067b17791bf2f8e7450e17e34881c4f997e117be89abe058d", "credit_consuming", "business", [
23460
23434
  "credit_consuming",
23461
23435
  "state_change"
23462
23436
  ], [
@@ -23484,7 +23458,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23484
23458
  // from `pnpm --filter @productmaker/mcp test` printing the real digest.
23485
23459
  // Re-baselined 2026-09-26: `idempotencyKey` field description corrected —
23486
23460
  // paid tools ignore caller-provided keys and derive their own semantic key.
23487
- "0e21a9ae925347de20cad321161cb3af0f6a4f9e342c5c7139baf8de70056734",
23461
+ "e9ae8370da117bae121714da12b78f234e07a0805093bce354d7fb9fcec2291e",
23488
23462
  "credit_consuming",
23489
23463
  "creative",
23490
23464
  [
@@ -23543,7 +23517,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23543
23517
  "video"
23544
23518
  ]
23545
23519
  ),
23546
- defineCapability("generate_image_creatives", "2f1698b623d98645b7c618a17988f3aac30f403a9c3f3dc26eb5bdbd9c6ef23e", "credit_consuming", "creative", [
23520
+ defineCapability("generate_image_creatives", "f0d1f771d83c50070ebdef6554072e984997336cb9b7f7f06acd818b021a0187", "credit_consuming", "creative", [
23547
23521
  "credit_consuming",
23548
23522
  "state_change"
23549
23523
  ], [
@@ -23646,111 +23620,123 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23646
23620
  ]
23647
23621
  }
23648
23622
  ]),
23649
- defineCapability("generate_landing", "14c537cf4ccaf25277f896aa58c64aef06ef4e6cba2ae8029437a732f8df71db", "credit_consuming", "creative", [
23623
+ defineCapability(
23624
+ "generate_landing",
23625
+ // MCP 12.4.0: guided landingStrategy narrowed to classic + social_proof.
23626
+ "6db8df9db5410d0abe0f44da7027af4cc40aff37ef6e66e82164edbd889eeb63",
23650
23627
  "credit_consuming",
23651
- "state_change"
23652
- ], [
23653
- slot("product_reference", true, [
23654
- "images",
23655
- "winnerReference"
23656
- ], [
23657
- "imageMessageIds",
23658
- "imageAssetIds",
23659
- "projectId",
23660
- "productUrl"
23661
- ]),
23662
- slot("locale", true, [
23663
- "language",
23664
- "country"
23665
- ]),
23666
- slot("initial_landing_gif", false, [
23667
- "includeInitialLandingGif"
23668
- ], []),
23669
- slot("sales_context", false, [
23670
- "salesAngle",
23671
- "buyerPersona"
23672
- ]),
23673
- slot("commercial_offer", false, [
23674
- "price",
23675
- "compareAtPrice",
23676
- "offer"
23677
- ], [
23678
- "price",
23679
- "offer",
23680
- "compareAtPrice",
23681
- "paymentMethods"
23682
- ]),
23683
- slot("product_context", false, [
23684
- "productLabel",
23685
- "isCombo"
23686
- ], [
23687
- "productContext",
23688
- "productLabel",
23689
- "isCombo"
23690
- ]),
23691
- slot("brand_direction", false, [
23692
- "brandId"
23693
- ], [
23694
- "brandId",
23695
- "creativeDirection",
23696
- "headline",
23697
- "subheadline"
23698
- ]),
23699
- slot(
23700
- "landing_options",
23701
- // Required by the direct MCP schema, optional for the WhatsApp adapter.
23702
- false,
23703
- [
23704
- "creativeSetup"
23705
- ],
23706
- [
23707
- "competitorScanEnabled",
23708
- "landingStrategy",
23709
- "landingImageFormat",
23710
- "pauseForAngleReview"
23711
- ]
23712
- )
23713
- ], [
23714
- "product_reference"
23715
- ], [
23716
- "task",
23717
- "product",
23718
- "landing"
23719
- ], SHARED_CHANNEL_EXPOSURE, [
23720
- {
23721
- slot: "product_reference",
23722
- askBeforePaidExecution: true,
23723
- explicitOmissionAllowed: false,
23724
- fieldCompletion: "any"
23725
- },
23726
- {
23727
- slot: "locale",
23728
- askBeforePaidExecution: true,
23729
- explicitOmissionAllowed: false,
23730
- fieldCompletion: "all"
23731
- },
23732
- {
23733
- slot: "sales_context",
23734
- askBeforePaidExecution: true,
23735
- explicitOmissionAllowed: true,
23736
- fieldCompletion: "any",
23737
- completionFields: [
23738
- "salesAngle"
23739
- ]
23740
- },
23741
- {
23742
- slot: "commercial_offer",
23743
- askBeforePaidExecution: true,
23744
- explicitOmissionAllowed: true,
23745
- fieldCompletion: "all"
23746
- }
23747
- ]),
23628
+ "creative",
23629
+ [
23630
+ "credit_consuming",
23631
+ "state_change"
23632
+ ],
23633
+ [
23634
+ slot("product_reference", true, [
23635
+ "images",
23636
+ "winnerReference"
23637
+ ], [
23638
+ "imageMessageIds",
23639
+ "imageAssetIds",
23640
+ "projectId",
23641
+ "productUrl"
23642
+ ]),
23643
+ slot("locale", true, [
23644
+ "language",
23645
+ "country"
23646
+ ]),
23647
+ slot("initial_landing_gif", false, [
23648
+ "includeInitialLandingGif"
23649
+ ], []),
23650
+ slot("sales_context", false, [
23651
+ "salesAngle",
23652
+ "buyerPersona"
23653
+ ]),
23654
+ slot("commercial_offer", false, [
23655
+ "price",
23656
+ "compareAtPrice",
23657
+ "offer"
23658
+ ], [
23659
+ "price",
23660
+ "offer",
23661
+ "compareAtPrice",
23662
+ "paymentMethods"
23663
+ ]),
23664
+ slot("product_context", false, [
23665
+ "productLabel",
23666
+ "isCombo"
23667
+ ], [
23668
+ "productContext",
23669
+ "productLabel",
23670
+ "isCombo"
23671
+ ]),
23672
+ slot("brand_direction", false, [
23673
+ "brandId"
23674
+ ], [
23675
+ "brandId",
23676
+ "creativeDirection",
23677
+ "headline",
23678
+ "subheadline"
23679
+ ]),
23680
+ slot(
23681
+ "landing_options",
23682
+ // Required by the direct MCP schema, optional for the WhatsApp adapter.
23683
+ false,
23684
+ [
23685
+ "creativeSetup"
23686
+ ],
23687
+ [
23688
+ "competitorScanEnabled",
23689
+ "landingStrategy",
23690
+ "landingImageFormat",
23691
+ "pauseForAngleReview"
23692
+ ]
23693
+ )
23694
+ ],
23695
+ [
23696
+ "product_reference"
23697
+ ],
23698
+ [
23699
+ "task",
23700
+ "product",
23701
+ "landing"
23702
+ ],
23703
+ SHARED_CHANNEL_EXPOSURE,
23704
+ [
23705
+ {
23706
+ slot: "product_reference",
23707
+ askBeforePaidExecution: true,
23708
+ explicitOmissionAllowed: false,
23709
+ fieldCompletion: "any"
23710
+ },
23711
+ {
23712
+ slot: "locale",
23713
+ askBeforePaidExecution: true,
23714
+ explicitOmissionAllowed: false,
23715
+ fieldCompletion: "all"
23716
+ },
23717
+ {
23718
+ slot: "sales_context",
23719
+ askBeforePaidExecution: true,
23720
+ explicitOmissionAllowed: true,
23721
+ fieldCompletion: "any",
23722
+ completionFields: [
23723
+ "salesAngle"
23724
+ ]
23725
+ },
23726
+ {
23727
+ slot: "commercial_offer",
23728
+ askBeforePaidExecution: true,
23729
+ explicitOmissionAllowed: true,
23730
+ fieldCompletion: "all"
23731
+ }
23732
+ ]
23733
+ ),
23748
23734
  defineCapability(
23749
23735
  "generate_video_creative",
23750
23736
  // MCP 8.6.0: + storyteller narrative family and animationStyle axis.
23751
23737
  // MCP 8.10.0: storyteller family blocked (BLOCKED_NARRATIVE_STYLES).
23752
23738
  // MCP 9.1.0: combine current animated-video controls and initial GIF choice.
23753
- "f6cb1097e049216da08e1fb130e53e53761c13198cbb76d56e78fbf2e35441c1",
23739
+ "66dee35d59da0e88e72e24c503f3f1dc46c17c1162d98d48705e2bfe552f3f02",
23754
23740
  "credit_consuming",
23755
23741
  "creative",
23756
23742
  [
@@ -23871,7 +23857,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23871
23857
  }
23872
23858
  ]
23873
23859
  ),
23874
- defineCapability("get_meta_campaign_status", "92077241cf4e9d14edefca410e85715cc383b1433081c3461c925f8fc3d6e8ab", "none", "read_only", [
23860
+ defineCapability("get_meta_campaign_status", "a89fa144b69309bffd3d402c63ab6697757c447022d4af2a20d321f084efb274", "none", "read_only", [
23875
23861
  "read"
23876
23862
  ], [
23877
23863
  slot("campaign", true, [
@@ -23882,7 +23868,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23882
23868
  ], [
23883
23869
  "campaign_status"
23884
23870
  ]),
23885
- defineCapability("get_product_research_run", "3d0bfa4409daa4a8126d18787c3dc619dbdf2fbb679a2cffe9ffcd1c0d96402f", "none", "read_only", [
23871
+ defineCapability("get_product_research_run", "fd6d6260b4c9cf9cac5c0d210ceec54f99825d6214f7e3625622e82305e69550", "none", "read_only", [
23886
23872
  "read"
23887
23873
  ], [
23888
23874
  slot("research_run", true, [
@@ -23893,7 +23879,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23893
23879
  ], [
23894
23880
  "product_research_run"
23895
23881
  ]),
23896
- defineCapability("get_task_status", "6876d865685dd371ae6c2da2d5a69b657731e5a032aff46ac95b6077e9a6d93e", "none", "read_only", [
23882
+ defineCapability("get_task_status", "308241071b3ec785b1f0eba0fc17383e9fe8f2452c6a5a5ef27fd792a99b9d4c", "none", "read_only", [
23897
23883
  "read"
23898
23884
  ], [
23899
23885
  slot("task", true, [
@@ -23907,7 +23893,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23907
23893
  ], [
23908
23894
  "task_status"
23909
23895
  ]),
23910
- defineCapability("get_tiktok_campaign_status", "7a2f90a9a9ba91506fbb57a0a881d5a7b9ca1bb1074b0a754520f02fd81b2801", "none", "read_only", [
23896
+ defineCapability("get_tiktok_campaign_status", "e19b1536d8e317185fb9662a244cc1e94986004b5a4bf84beaf473b5de28562f", "none", "read_only", [
23911
23897
  "read"
23912
23898
  ], [
23913
23899
  slot("campaign", true, [
@@ -23921,7 +23907,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23921
23907
  ], [
23922
23908
  "campaign_status"
23923
23909
  ]),
23924
- defineCapability("get_video_script", "e987ff48555dfdab439f9910fb1fa25af373c78c8a9a5ef26458c82add90f2a2", "none", "read_only", [
23910
+ defineCapability("get_video_script", "1de9980596c34b71ce8843c090549cf310ed52933f53c2b9c3fca13204441d64", "none", "read_only", [
23925
23911
  "read"
23926
23912
  ], [
23927
23913
  slot("task", true, [
@@ -23935,7 +23921,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23935
23921
  ], [
23936
23922
  "video_script"
23937
23923
  ]),
23938
- defineCapability("guide_dropshipping_launch", "0e7a1cb5ad5c6681473df5689336edcd7a63b8d68853359982e44bfd98a65db8", "none", "business", [
23924
+ defineCapability("guide_dropshipping_launch", "1ab3654ed7ef02fbc7b690826a475f27839a3402ca301b8cf26992c11e8f7cf8", "none", "business", [
23939
23925
  "read"
23940
23926
  ], [
23941
23927
  slot("project", false, [
@@ -23957,7 +23943,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23957
23943
  "get_actor_voice_capabilities",
23958
23944
  // Filled by the MCP schema fingerprint test (sha256 of the canonicalized
23959
23945
  // inputSchema) — run apps/mcp server.test.ts to compute.
23960
- "4c31630c2796cbcf250b58f2205c7f5882ac53ad0c9ac7fe929f1b6de78952a5",
23946
+ "862c210dd3c6bf0584ac61deb84617ecb41bf0219098995a1c5b84133af33239",
23961
23947
  "none",
23962
23948
  "read_only",
23963
23949
  [
@@ -23976,7 +23962,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23976
23962
  ],
23977
23963
  MCP_ONLY_CHANNEL_EXPOSURE
23978
23964
  ),
23979
- defineCapability("quote_actor_voice", "5b1deafe387305bc268cd8d58761860b4c02bf10f0c5cd455925f96b40e7b24d", "none", "read_only", [
23965
+ defineCapability("quote_actor_voice", "4d2e9a643abf4cfe5e02789fed36cdfebc9ede6ab4557d0e5be1e4edb46fb836", "none", "read_only", [
23980
23966
  "read"
23981
23967
  ], [
23982
23968
  slot("actor", true, [
@@ -23990,7 +23976,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23990
23976
  ], [
23991
23977
  "actor_voice_quote"
23992
23978
  ], MCP_ONLY_CHANNEL_EXPOSURE),
23993
- defineCapability("generate_actor_voice_preview", "e0c856beacda2344fb0830b5822848c01e82f1b6a7749176e8973c07d5a7c769", "credit_consuming", "creative", [
23979
+ defineCapability("generate_actor_voice_preview", "cb5a0033621df9bc88f4dcea658885eb35a4ebdc6ef88865c3d8afbe3b229548", "credit_consuming", "creative", [
23994
23980
  "credit_consuming",
23995
23981
  "state_change"
23996
23982
  ], [
@@ -24014,7 +24000,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24014
24000
  ], MCP_ONLY_CHANNEL_EXPOSURE),
24015
24001
  defineCapability(
24016
24002
  "get_actor_voice_preview",
24017
- "58cc8667847be5e521534d6a19853782b9d4c65539ede8eaa5dbe7815e10ae3f",
24003
+ "b28f1c7d7e7981ed672509398242b7b7256e2ab44185699e6a0ecd8f39882761",
24018
24004
  "none",
24019
24005
  "creative",
24020
24006
  // Recovery uses the original accepted quote; it must not ask to pay again.
@@ -24039,7 +24025,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24039
24025
  ],
24040
24026
  MCP_ONLY_CHANNEL_EXPOSURE
24041
24027
  ),
24042
- defineCapability("approve_actor_voice", "ae77a93a483b24e9ec79322ac5a7ed39372517c196488b04b3cdfd2ef5205784", "state_change", "creative", [
24028
+ defineCapability("approve_actor_voice", "5b1c61b992dce69b35f9fb1a388bbd73d41c99575fa86b72121b043045254944", "state_change", "creative", [
24043
24029
  "state_change"
24044
24030
  ], [
24045
24031
  slot("actor", true, [
@@ -24073,7 +24059,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24073
24059
  ], [
24074
24060
  "meta_destination"
24075
24061
  ]),
24076
- defineCapability("list_product_research_runs", "3b8fac903cd9e30c5b6a6c584cc70a819af5392bbdbb32b69eab4c65dc52b556", "none", "read_only", [
24062
+ defineCapability("list_product_research_runs", "ee2d750bfd65a34a9c16bb39dac584fe0784956eaf7b0428a88b1e886846f2af", "none", "read_only", [
24077
24063
  "read"
24078
24064
  ], [
24079
24065
  slot("pagination", false, [
@@ -24084,7 +24070,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24084
24070
  ], [
24085
24071
  "product_research_run"
24086
24072
  ]),
24087
- defineCapability("list_shopify_products", "152b137e01066f3b443987ad75f5be00de8696ce984144bd775416192be20667", "none", "read_only", [
24073
+ defineCapability("list_shopify_products", "c3daf527e345f737c8b23eb347b77fbf2290433257753122a8d55fdc65d58e78", "none", "read_only", [
24088
24074
  "read"
24089
24075
  ], [
24090
24076
  slot("shop", true, [
@@ -24108,7 +24094,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24108
24094
  ], [
24109
24095
  "shop"
24110
24096
  ]),
24111
- defineCapability("list_tasks", "cac5e9dda34b90550024cc546976fab1d6de4fc8fca85a3ec6abde65223cb56c", "none", "read_only", [
24097
+ defineCapability("list_tasks", "4a553c287e590c2dcb905c63eb92c8612093a82476093b9f55c0821cad486598", "none", "read_only", [
24112
24098
  "read"
24113
24099
  ], [
24114
24100
  slot("pagination", false, [
@@ -24130,7 +24116,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24130
24116
  ], [
24131
24117
  "tiktok_advertiser"
24132
24118
  ]),
24133
- defineCapability("publish_creatives_to_meta", "dff962c84ed7d0393444dcbe86cb6f4016b5928c1d0005f78ce9a365f1923ac3", "external_mutation", "publishing", [
24119
+ defineCapability("publish_creatives_to_meta", "d9b8961cb26c2357f45b0ed95eae479affc840742b5b09620a67ce325568cbee", "external_mutation", "publishing", [
24134
24120
  "external_mutation",
24135
24121
  "state_change"
24136
24122
  ], [
@@ -24165,7 +24151,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24165
24151
  ], [
24166
24152
  "meta_campaign"
24167
24153
  ]),
24168
- defineCapability("publish_to_meta", "2d2946fbb796cc8198acfed5e15935c690516259a9bfa9e9a75d1fb33548eef2", "external_mutation", "publishing", [
24154
+ defineCapability("publish_to_meta", "663d574b4aa005a5df41f6b8ff458e3f983f874fe6caef94ab0ae8a1477f70bb", "external_mutation", "publishing", [
24169
24155
  "external_mutation",
24170
24156
  "state_change"
24171
24157
  ], [
@@ -24203,7 +24189,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24203
24189
  ], [
24204
24190
  "meta_publication"
24205
24191
  ]),
24206
- defineCapability("publish_to_shopify", "e041e404ad9f6cf49231c9bc38df22e6bd0aa6e4082b4ab8dc655a132b79873f", "external_mutation", "publishing", [
24192
+ defineCapability("publish_to_shopify", "00c4c7af09bb45a72896118ca154a2dc9518f05d74bb9386c825be541fa10fdb", "external_mutation", "publishing", [
24207
24193
  "external_mutation",
24208
24194
  "state_change"
24209
24195
  ], [
@@ -24246,7 +24232,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24246
24232
  // capability set unchanged, so the live agent's parity gate (which forces
24247
24233
  // shadow mode on any canonical gap) is not tripped. Gated server-side by
24248
24234
  // SERVICE_MOTION_GRAPHICS_ENABLED + the `service-motion-graphics` feature.
24249
- defineCapability("create_animated_video", "1d375b3ad4f60d9337009cb86209d66f05da127fdf2748c1cf9d36503e4dce5c", "credit_consuming", "creative", [
24235
+ defineCapability("create_animated_video", "2177ed726e767978eb61fa007f621b389f3b1eb3a2da967fdb44c279bf20fecd", "credit_consuming", "creative", [
24250
24236
  "credit_consuming",
24251
24237
  "state_change"
24252
24238
  ], [
@@ -24297,7 +24283,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24297
24283
  // MCP-only service journey (2026-10-11): brand analysis → service landing →
24298
24284
  // create_animated_video. WhatsApp has no adapter for either, so both are
24299
24285
  // declared unavailable there and its parity gate is unchanged.
24300
- defineCapability("create_brand", "7f5680574f38f1005d162c2a2a3805be82896508793ebcdd5491b8459c803158", "credit_consuming", "creative", [
24286
+ defineCapability("create_brand", "0dba1e46eaaf3ae6ffda459de7eebbdfb2f04da1180b21f84ae4caae434dbbcf", "credit_consuming", "creative", [
24301
24287
  "credit_consuming",
24302
24288
  "state_change"
24303
24289
  ], [
@@ -24320,7 +24306,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24320
24306
  ], [
24321
24307
  "brand"
24322
24308
  ], MCP_ONLY_CHANNEL_EXPOSURE),
24323
- defineCapability("create_service_landing", "ce99d75f4b00bea23b6bf4f56ef3331b266176cb0a9dead55611ee78d21c41b3", "credit_consuming", "creative", [
24309
+ defineCapability("create_service_landing", "9e0f68278d2daa3bcf0326dd8e796d4dc82423f850c765efd48881c99f04a14f", "credit_consuming", "creative", [
24324
24310
  "credit_consuming",
24325
24311
  "state_change"
24326
24312
  ], [
@@ -24345,7 +24331,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24345
24331
  ], [
24346
24332
  "service_landing"
24347
24333
  ], MCP_ONLY_CHANNEL_EXPOSURE),
24348
- defineCapability("create_service_images", "ce729a35f8781dd301514075e2e4408b6660db7523e3705ff2c8cbde571cddf6", "credit_consuming", "creative", [
24334
+ defineCapability("create_service_images", "937e86a1b0e3e0678a029062cddb0a9b632c8bcbb9864225f66488e3e2abdbed", "credit_consuming", "creative", [
24349
24335
  "credit_consuming",
24350
24336
  "state_change"
24351
24337
  ], [
@@ -24382,7 +24368,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24382
24368
  ], MCP_ONLY_CHANNEL_EXPOSURE),
24383
24369
  // MCP-only recovery of an existing code edit. WhatsApp has no code-landing
24384
24370
  // editor or edit receipt input; it hands this recovery to ProductMaker Web.
24385
- defineCapability("verify_landing_commerce", "4b98ea73f291428fa19ec91ec37deb44a776b76cb19b0d47aef20ee905da7d10", "external_mutation", "publishing", [
24371
+ defineCapability("verify_landing_commerce", "f6dcbfbf8e90c39246f0b377745cd2c6c0f76f314c9736a257087c6d00a90f29", "external_mutation", "publishing", [
24386
24372
  "read",
24387
24373
  "state_change",
24388
24374
  "external_mutation"
@@ -24401,7 +24387,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24401
24387
  defineCapability(
24402
24388
  "publish_to_tiktok",
24403
24389
  // MCP 11.7.0: native WhatsApp destination and major-currency budget inputs.
24404
- "50b932193b62929498ae342417427ef84b1982eb7620c6baffb62c8fb986e66e",
24390
+ "ce6e6572583a615203835f6e191a50883ba00f95b8813b3c2bc3d5d92746b24f",
24405
24391
  "external_mutation",
24406
24392
  "publishing",
24407
24393
  [
@@ -24439,7 +24425,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24439
24425
  "tiktok_publication"
24440
24426
  ]
24441
24427
  ),
24442
- defineCapability("prepare_winning_product_image", "6915790d22256a648374412ac4d11126fe3fabc9404f4552205057f9da3ce0db", "none", "business", [
24428
+ defineCapability("prepare_winning_product_image", "51c4795176c13b67901e2aad161124598675c7e5ae476b35a63be5b06906ccca", "none", "business", [
24443
24429
  "state_change"
24444
24430
  ], [
24445
24431
  slot("winner_reference", true, [
@@ -24451,7 +24437,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24451
24437
  ], [
24452
24438
  "product_media"
24453
24439
  ], MCP_ONLY_CHANNEL_EXPOSURE),
24454
- defineCapability("regenerate_video_script", "eb9546e5cda3864de78ff119ae81dd17c893ea9ea5be1bf0fbfeb8b45302e639", "credit_consuming", "creative", [
24440
+ defineCapability("regenerate_video_script", "e68fa5f4f6adb37c4275c60dcb6983d14655a030450c0ed75012044cff0aa29c", "credit_consuming", "creative", [
24455
24441
  "credit_consuming",
24456
24442
  "state_change"
24457
24443
  ], [
@@ -24491,7 +24477,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24491
24477
  ], [
24492
24478
  "meta_upload_session"
24493
24479
  ], WHATSAPP_ONLY_CHANNEL_EXPOSURE),
24494
- defineCapability("request_media_upload", "9a50a4647c61f97fb12bbb9b25f7660f392e3cd9825151735cd66292058882ea", "none", "creative", [
24480
+ defineCapability("request_media_upload", "ab70248efd499351ff119e5563e31185040b57e42ccc0e09efe6b6fbeea794a5", "none", "creative", [
24495
24481
  "state_change"
24496
24482
  ], [
24497
24483
  slot("media_kind", true, [
@@ -24514,7 +24500,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24514
24500
  ], [
24515
24501
  "media_upload_session"
24516
24502
  ], MCP_ONLY_CHANNEL_EXPOSURE),
24517
- defineCapability("resolve_pending_action", "9377ff126ec842cfb8278877846c5f8f6f1b9ba0c263e7200f080db9bbe9ae12", "credit_consuming", "creative", [
24503
+ defineCapability("resolve_pending_action", "a7fef1e3299c2bfb387a16b3e1e243fba8df1db961ebc1f27d2119209124c293", "credit_consuming", "creative", [
24518
24504
  "credit_consuming",
24519
24505
  "state_change"
24520
24506
  ], [
@@ -24550,7 +24536,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24550
24536
  ], [
24551
24537
  "task"
24552
24538
  ]),
24553
- defineCapability("start_dropshipping_project", "2b621702e8da8bb894d392060e5e4f677a8dc26f454e991dbb929053715a4f8b", "state_change", "business", [
24539
+ defineCapability("start_dropshipping_project", "996385df905ed85a933c5726fbebf5a29a98f29364badd8256ff306aff38797c", "state_change", "business", [
24554
24540
  "state_change"
24555
24541
  ], [
24556
24542
  slot("origin", true, [
@@ -24571,7 +24557,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24571
24557
  ], [
24572
24558
  "dropshipping_project"
24573
24559
  ]),
24574
- defineCapability("get_daily_control", "d2ee70df5be00618ad23ef558f91e0066e03a69547a4f2d9310bf9ae51ae9a03", "none", "read_only", [
24560
+ defineCapability("get_daily_control", "f68e63aeda284d8f07040f6ec55c84ba5e55a515667a20bfe3a60268a6827130", "none", "read_only", [
24575
24561
  "read"
24576
24562
  ], [
24577
24563
  slot("window_end", false, [
@@ -24589,7 +24575,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24589
24575
  ], [
24590
24576
  "daily_control_report"
24591
24577
  ]),
24592
- defineCapability("link_campaign_to_project", "42785a9781412e0ad7cf7095b7188f315dea4003002777d5a4b1b9cc79ea05e0", "state_change", "business", [
24578
+ defineCapability("link_campaign_to_project", "1a6d51234a38259e9fa00475c76919742818efb32491a75ffa768ff9fede4013", "state_change", "business", [
24593
24579
  "state_change"
24594
24580
  ], [
24595
24581
  slot("project", true, [
@@ -24609,7 +24595,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24609
24595
  ], [
24610
24596
  "campaign_link"
24611
24597
  ]),
24612
- defineCapability("list_importable_products", "8f3e48f6494c85a3fab82163e11536d9d48aa77b058153efaabf4263548a8f02", "none", "read_only", [
24598
+ defineCapability("list_importable_products", "30404855a9d9c61bd437703f0287041ac77bf997fb7c6e5c7dafdf68712020a9", "none", "read_only", [
24613
24599
  "read"
24614
24600
  ], [
24615
24601
  slot("search", false, [
@@ -24626,7 +24612,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24626
24612
  ], [
24627
24613
  "importable_product_page"
24628
24614
  ]),
24629
- defineCapability("import_product_controls", "b9dae191963ae88ad33060db64eedd1cb63856108f18dbec0e8a039b05117d99", "state_change", "business", [
24615
+ defineCapability("import_product_controls", "f0e1de3062389541317f1351977e77fdcb50ee5d0d5251bbc1f1e7e2ab034515", "state_change", "business", [
24630
24616
  "state_change"
24631
24617
  ], [
24632
24618
  slot("products", true, [
@@ -24643,7 +24629,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24643
24629
  ], [
24644
24630
  "product_control"
24645
24631
  ]),
24646
- defineCapability("set_product_costing", "cce7a31e434c7a1f0af2e3ecaf591eb63c6e3570c466c29e2cab00432ab26bc9", "state_change", "business", [
24632
+ defineCapability("set_product_costing", "de1353c7061d00bf793ecc789c0300c6dd54f758dbff86b10915a51592a99df9", "state_change", "business", [
24647
24633
  "state_change"
24648
24634
  ], [
24649
24635
  /* La identidad sin tienda solo existe en el contrato MCP: el
@@ -24681,7 +24667,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24681
24667
  ], [
24682
24668
  "product_control_costing"
24683
24669
  ]),
24684
- defineCapability("get_product_control", "9d448f8cb2d40fa6547f7265bf908925375c33d891993c1f6e8cae5409729f32", "none", "read_only", [
24670
+ defineCapability("get_product_control", "cc67eec02bc5fba649e705078ecebf4703a3e3e25b9d3189921a7e2bae7f6c0c", "none", "read_only", [
24685
24671
  "read"
24686
24672
  ], [
24687
24673
  slot("day", false, [
@@ -24699,7 +24685,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24699
24685
  ], [
24700
24686
  "product_control_report"
24701
24687
  ]),
24702
- defineCapability("report_product_counts", "0d2eb30d9be73cd818a149af365b165ad5739a36ffb591149f9735bfd9636773", "state_change", "business", [
24688
+ defineCapability("report_product_counts", "8fa2561901b7743506a3639038d7806186c0512470bc6988a54c6bee5dbbb0b0", "state_change", "business", [
24703
24689
  "state_change"
24704
24690
  ], [
24705
24691
  slot("product_control", true, [
@@ -24728,7 +24714,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24728
24714
  ], [
24729
24715
  "product_control_daily_counts"
24730
24716
  ]),
24731
- defineCapability("get_finances", "da5fdd11b49980f85dcee63386e5b443786f65581612ce9333770a631e1ccf45", "none", "read_only", [
24717
+ defineCapability("get_finances", "bb57d3594b204597e9abd2d9beb7df644d07f5683a159d4de1860fa9d03aa5b4", "none", "read_only", [
24732
24718
  "read"
24733
24719
  ], [
24734
24720
  slot("month", false, [
@@ -24742,7 +24728,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24742
24728
  ], [
24743
24729
  "monthly_pl"
24744
24730
  ]),
24745
- defineCapability("sync_shopify_orders", "6a43ef95dc4d4943292416d0f3ef71da9ae19a16593bf76a294ef4b3f8f0eaac", "state_change", "business", [
24731
+ defineCapability("sync_shopify_orders", "0f821de23aa171e89e7e03c1910be57d8dbd878491cbad45a43c4540b4872910", "state_change", "business", [
24746
24732
  "state_change"
24747
24733
  ], [
24748
24734
  slot("shop", false, [
@@ -24762,7 +24748,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24762
24748
  ], [
24763
24749
  "product_order_line"
24764
24750
  ]),
24765
- defineCapability("import_orders_file", "d4691f530dee83c40613d70b2830dc91fb21f5822449601caeaaab409622911c", "state_change", "business", [
24751
+ defineCapability("import_orders_file", "449352851f20e229d488fd10dcfde682774d5c6ef0c66294bedfd6da8d1d93e9", "state_change", "business", [
24766
24752
  "state_change"
24767
24753
  ], [
24768
24754
  slot("orders_file", true, [
@@ -24784,7 +24770,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24784
24770
  ], [
24785
24771
  "product_order_line"
24786
24772
  ]),
24787
- defineCapability("create_operation", "0e610436a98cec2815216d526294da3cfc835830bb960e5dc0381d65b6edf9e5", "state_change", "business", [
24773
+ defineCapability("create_operation", "569501e4e03e6f1782fcf7458e752864804b1ffaa9eb7bd9522e05260939c938", "state_change", "business", [
24788
24774
  "state_change"
24789
24775
  ], [
24790
24776
  slot("country", true, [
@@ -24798,7 +24784,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24798
24784
  ], [
24799
24785
  "finance_operation"
24800
24786
  ]),
24801
- defineCapability("merge_products", "062d0afbedc3309c61cb7eaaf1902a05e2725897f04f5e79ad7e354ac8f05f21", "state_change", "business", [
24787
+ defineCapability("merge_products", "8519963a68603ed7f4a2a82d24e43f317f0a9840e7fd7ba5a90832c4f4a6bcaf", "state_change", "business", [
24802
24788
  "state_change"
24803
24789
  ], [
24804
24790
  slot("source_product", true, [
@@ -24812,7 +24798,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24812
24798
  ], [
24813
24799
  "product_control"
24814
24800
  ]),
24815
- defineCapability("set_monthly_expense", "2ad9958b36fbfc6d665ff1fb33e8fbd446b01d71fc60dcc0b2074fcf8770f2c1", "state_change", "business", [
24801
+ defineCapability("set_monthly_expense", "5ff786a29b44e1961c31fa30decd779d0a18fdf4d7a0bdff7fe130eda59640a4", "state_change", "business", [
24816
24802
  "state_change"
24817
24803
  ], [
24818
24804
  slot("expense_label", true, [
@@ -24832,7 +24818,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24832
24818
  ], [
24833
24819
  "monthly_expense"
24834
24820
  ]),
24835
- defineCapability("set_ad_spend", "edbf19766900aafde76ad5b203fd5c9ecbd3e976705b67ab82867a303a6fa6c9", "state_change", "business", [
24821
+ defineCapability("set_ad_spend", "45f5515a91679304c27f2753ec568bcfe0343644363ec3d185eea3a3f220bbc0", "state_change", "business", [
24836
24822
  "state_change"
24837
24823
  ], [
24838
24824
  slot("amount", true, [
@@ -24853,7 +24839,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24853
24839
  "get_dropi_status",
24854
24840
  // Filled by the MCP schema fingerprint test (sha256 of the canonicalized
24855
24841
  // inputSchema) — run apps/mcp server.test.ts to compute.
24856
- "3465e644ebdcaa404d8bcc1af629012c858bb4aed5bb1b56cfaa2af0d53cfc6e",
24842
+ "dbbf0cae464909761b30d649f08ebf588bc34ab66a0b67abcf9ff3442e1ec457",
24857
24843
  "none",
24858
24844
  "read_only",
24859
24845
  [
@@ -24878,7 +24864,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24878
24864
  defineCapability(
24879
24865
  "sync_dropi_orders",
24880
24866
  // Filled by the MCP schema fingerprint test.
24881
- "46f1172e7afe42991957a2dc262cce235dbf31ededdf37ccf866a583bb19123b",
24867
+ "a2b107f6f36ed6e9ed698e89ff54decf180bfce372adabd3bc0d00739ebd6a02",
24882
24868
  "state_change",
24883
24869
  "business",
24884
24870
  [
@@ -24912,7 +24898,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24912
24898
  defineCapability(
24913
24899
  "create_manual_product",
24914
24900
  // Filled by the MCP schema fingerprint test.
24915
- "4da701236ab1fd460e66f6def729f61a392bad62e8fecdaf8b3b3098fdec53cb",
24901
+ "00b0366e3c23989c10243e8c34ea74d2786c7f521093a006e53cc6e68750e5ad",
24916
24902
  "state_change",
24917
24903
  "business",
24918
24904
  [
@@ -24955,7 +24941,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24955
24941
  defineCapability(
24956
24942
  "list_unmatched_products",
24957
24943
  // Filled by the MCP schema fingerprint test.
24958
- "2c89690b4282a881f29f3bae11268786abf385c2bec0e3d7a1643098f4986e1b",
24944
+ "d72bf2d563daabe2ce719aeee4d3f1899154daba063ebca1ef69499e0ff09034",
24959
24945
  "none",
24960
24946
  "read_only",
24961
24947
  [
@@ -24977,7 +24963,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24977
24963
  defineCapability(
24978
24964
  "resolve_unmatched_product",
24979
24965
  // Filled by the MCP schema fingerprint test.
24980
- "39ccb99a5d138f7f99e25c00b68eec8972e34dbcbd966d2081cdaa7c76ac63ba",
24966
+ "05fb2d978e2e878cbbfeca78b87b0f7e25decedfcfa8490b7cfc055139953574",
24981
24967
  "state_change",
24982
24968
  "business",
24983
24969
  [
@@ -25029,7 +25015,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
25029
25015
  defineCapability(
25030
25016
  "link_product_campaign",
25031
25017
  // Filled by the MCP schema fingerprint test.
25032
- "a9976318693f137dd37f4608d382fe1deb13b44c2f5257580c8b52b015899dde",
25018
+ "a4ea2424df8482eb5f004676aa6d43a24f8ad8790644a41f521cdeb879a306a9",
25033
25019
  "state_change",
25034
25020
  "business",
25035
25021
  [
@@ -25067,7 +25053,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
25067
25053
  defineCapability(
25068
25054
  "delete_monthly_expense",
25069
25055
  // Filled by the MCP schema fingerprint test.
25070
- "fe9c5d5896165b9c65fbfed779db7918dabf87c69e1601430a1509ad2d452de9",
25056
+ "e762a6d49f2ab0ce1f51315d0d0ec11e1456c8b8b8200c66b899808f89f706d5",
25071
25057
  "state_change",
25072
25058
  "business",
25073
25059
  [
@@ -25095,7 +25081,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
25095
25081
  defineCapability(
25096
25082
  "remove_product_control",
25097
25083
  // Filled by the MCP schema fingerprint test.
25098
- "ff0b7411497a0b28eda7294c35b09c45f8beff842bbc6a9a4cc993ba3d766cae",
25084
+ "e29785ec81add0115499e3ae616f47224c2c01dc61c5d7f65d306bc1ac28929f",
25099
25085
  "state_change",
25100
25086
  "business",
25101
25087
  [
@@ -25114,7 +25100,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
25114
25100
  ],
25115
25101
  MCP_ONLY_CHANNEL_EXPOSURE
25116
25102
  ),
25117
- defineCapability("report_daily_returns", "7130d216656cc29a47fc972b4edad5003a6653fca48d95052fbf2b561636e91a", "state_change", "business", [
25103
+ defineCapability("report_daily_returns", "c64af9e1750adf5892caa76c0c170feec91e617ba1769ee5c0af17cbbb4fc6d2", "state_change", "business", [
25118
25104
  "state_change"
25119
25105
  ], [
25120
25106
  slot("project", true, [
@@ -25419,7 +25405,7 @@ var WhatsAppQuoteRecoveryReceiptSchema = z103.discriminatedUnion("state", [
25419
25405
  z103.object({
25420
25406
  ...recoveryBase,
25421
25407
  state: z103.literal("consumed"),
25422
- successorCommandId: z103.string().uuid(),
25408
+ successorCommandId: z103.string().guid(),
25423
25409
  choice: z103.enum([
25424
25410
  "without_winner",
25425
25411
  "retry"
@@ -25429,7 +25415,7 @@ var WhatsAppQuoteRecoveryReceiptSchema = z103.discriminatedUnion("state", [
25429
25415
  ...recoveryBase,
25430
25416
  state: z103.literal("awaiting_media"),
25431
25417
  successorCommandId: z103.null(),
25432
- successorCollectionId: z103.string().uuid(),
25418
+ successorCollectionId: z103.string().guid(),
25433
25419
  choice: z103.enum([
25434
25420
  "without_winner",
25435
25421
  "retry"
@@ -25457,10 +25443,10 @@ var json = z103.lazy(() => z103.union([
25457
25443
  z103.number().finite(),
25458
25444
  z103.string(),
25459
25445
  z103.array(json),
25460
- z103.record(json)
25446
+ z103.record(z103.string(), json)
25461
25447
  ]));
25462
25448
  var commandBase = {
25463
- commandId: z103.string().uuid(),
25449
+ commandId: z103.string().guid(),
25464
25450
  requestHash: z103.string().min(1).max(256),
25465
25451
  expectedUpdatedAt: z103.string().datetime(),
25466
25452
  result: json,
@@ -25468,7 +25454,7 @@ var commandBase = {
25468
25454
  };
25469
25455
  var proposedSnapshot = {
25470
25456
  ...commandBase,
25471
- sourceMessageId: z103.string().uuid(),
25457
+ sourceMessageId: z103.string().guid(),
25472
25458
  expectedStatus: z103.literal("proposed"),
25473
25459
  expectedResult: json
25474
25460
  };
@@ -25529,19 +25515,19 @@ var WhatsAppPresentationFinalizerSchema = z103.object({
25529
25515
  ]).optional(),
25530
25516
  plan: z103.object({
25531
25517
  guardOnly: z103.boolean().optional(),
25532
- planId: z103.string().uuid(),
25518
+ planId: z103.string().guid(),
25533
25519
  expectedPlanRevision: z103.number().int().nonnegative(),
25534
- stepId: z103.string().uuid(),
25520
+ stepId: z103.string().guid(),
25535
25521
  expectedStepRevision: z103.number().int().nonnegative(),
25536
- expectedCommandId: z103.string().uuid().nullable(),
25522
+ expectedCommandId: z103.string().guid().nullable(),
25537
25523
  next: z103.object({
25538
- stepId: z103.string().uuid(),
25524
+ stepId: z103.string().guid(),
25539
25525
  expectedRevision: z103.number().int().nonnegative()
25540
25526
  }).strict().nullable(),
25541
25527
  outputArtifacts: json
25542
25528
  }).strict().optional(),
25543
25529
  collection: z103.object({
25544
- collectionId: z103.string().uuid(),
25530
+ collectionId: z103.string().guid(),
25545
25531
  expectedRevision: z103.number().int().nonnegative(),
25546
25532
  expiresAt: z103.string().datetime()
25547
25533
  }).strict().optional()
@@ -25626,9 +25612,9 @@ var WhatsAppPresentationStepSchema = z104.discriminatedUnion("kind", [
25626
25612
  "research_ready",
25627
25613
  "research_failed"
25628
25614
  ]).optional(),
25629
- commandId: z104.string().uuid().optional(),
25630
- taskId: z104.string().uuid().optional(),
25631
- researchRunId: z104.string().uuid().optional()
25615
+ commandId: z104.string().guid().optional(),
25616
+ taskId: z104.string().guid().optional(),
25617
+ researchRunId: z104.string().guid().optional()
25632
25618
  }).strict().refine((value) => value.resetSourceSequence === void 0 || value.conversationReset === "completed", "Reset source sequence requires a completed reset").optional(),
25633
25619
  intentKey
25634
25620
  }).strict(),
@@ -25660,16 +25646,16 @@ var WhatsAppPresentationStepSchema = z104.discriminatedUnion("kind", [
25660
25646
  "tiktok"
25661
25647
  ])).max(3),
25662
25648
  fullResultUrl: z104.string().url().max(8192),
25663
- commandId: z104.string().uuid(),
25664
- taskId: z104.string().uuid(),
25649
+ commandId: z104.string().guid(),
25650
+ taskId: z104.string().guid(),
25665
25651
  intentKey
25666
25652
  }).strict(),
25667
25653
  z104.object({
25668
25654
  kind: z104.literal("reference_review"),
25669
- commandId: z104.string().uuid(),
25670
- taskId: z104.string().uuid(),
25655
+ commandId: z104.string().guid(),
25656
+ taskId: z104.string().guid(),
25671
25657
  snapshotHash: z104.string().length(64).regex(/^[a-f0-9]+$/),
25672
- pendingAction: z104.record(z104.unknown()),
25658
+ pendingAction: z104.record(z104.string(), z104.unknown()),
25673
25659
  previews: z104.array(preview).max(20),
25674
25660
  expectedPreviewCount: z104.number().int().min(0).max(50),
25675
25661
  intentKey
@@ -26095,7 +26081,7 @@ var ProductTruthBody = z107.object({
26095
26081
  out[key2] = rawIndexes.filter((i) => typeof i === "number" && Number.isInteger(i) && i >= 0 && i < 20);
26096
26082
  }
26097
26083
  return out;
26098
- }, z107.record(z107.array(z107.number().int().min(0).max(19))))
26084
+ }, z107.record(z107.string(), z107.array(z107.number().int().min(0).max(19))))
26099
26085
  })),
26100
26086
  confidence: z107.preprocess((v) => typeof v === "number" && Number.isFinite(v) ? Math.min(1, Math.max(0, v)) : 0, z107.number().min(0).max(1))
26101
26087
  });
@@ -26438,15 +26424,16 @@ var CreativeCompositionExecutorRoleSchema = z109.enum(CREATIVE_COMPOSITION_EXECU
26438
26424
  var CreativeCompositionJobSchema = z109.object({
26439
26425
  kind: z109.literal("creative_composition"),
26440
26426
  protocolVersion: CreativeCompositionProtocolVersionSchema,
26441
- jobId: z109.string().uuid(),
26427
+ jobId: z109.string().guid(),
26442
26428
  owner: CreativeEngineOwnerSchema,
26443
26429
  attempt,
26444
26430
  leaseUntil: z109.string().datetime(),
26445
26431
  deadlineAtMs: z109.number().int().nonnegative(),
26446
26432
  /**
26447
26433
  * Contract digest of the API that wrote the job. The renderer refuses a
26448
- * job whose digest is not its own (`renderer_schema_stale`). Absent only
26449
- * on rows written before digests existed.
26434
+ * job whose digest is neither current nor explicitly verified compatible
26435
+ * (`renderer_schema_stale`). Accepted jobs still meet the current schema.
26436
+ * Absent only on rows written before digests existed.
26450
26437
  */
26451
26438
  contractDigest: hash2.optional(),
26452
26439
  width: z109.number().int().positive().max(4096),
@@ -26524,10 +26511,10 @@ var CreativeCompositionClaimResponseSchema = z109.object({
26524
26511
  job: CreativeCompositionJobSchema.nullable()
26525
26512
  }).strict();
26526
26513
  var CreativeCompositionHeartbeatSchema = MotionGraphicsStageReportSchema.extend({
26527
- jobId: z109.string().uuid()
26514
+ jobId: z109.string().guid()
26528
26515
  });
26529
26516
  var CreativeCompositionUploadRequestSchema = z109.object({
26530
- jobId: z109.string().uuid(),
26517
+ jobId: z109.string().guid(),
26531
26518
  attempt,
26532
26519
  files: z109.array(z109.object({
26533
26520
  kind: z109.enum([
@@ -26551,7 +26538,7 @@ var CreativeCompositionUploadResponseSchema = z109.object({
26551
26538
  }).strict()).min(1).max(3)
26552
26539
  }).strict();
26553
26540
  var CreativeCompositionDoneRequestSchema = z109.object({
26554
- jobId: z109.string().uuid(),
26541
+ jobId: z109.string().guid(),
26555
26542
  attempt,
26556
26543
  width: z109.number().int().positive(),
26557
26544
  height: z109.number().int().positive(),
@@ -26559,14 +26546,14 @@ var CreativeCompositionDoneRequestSchema = z109.object({
26559
26546
  durationSec: z109.number().positive()
26560
26547
  }).strict();
26561
26548
  var CreativeCompositionFailedRequestSchema = z109.object({
26562
- jobId: z109.string().uuid(),
26549
+ jobId: z109.string().guid(),
26563
26550
  attempt,
26564
26551
  reason: z109.string().min(1).max(1e3),
26565
26552
  retryable: z109.literal(false)
26566
26553
  }).strict();
26567
26554
  var CreativeCompositionLocalManifestSchema = z109.object({
26568
26555
  kind: z109.literal("creative_composition"),
26569
- jobId: z109.string().uuid(),
26556
+ jobId: z109.string().guid(),
26570
26557
  owner: CreativeEngineOwnerSchema,
26571
26558
  plan: z109.object({
26572
26559
  revision: z109.number().int().positive(),
@@ -26652,8 +26639,8 @@ var CreativeEngineEditContextSnapshotSchema = z111.object({
26652
26639
  hash: hash3,
26653
26640
  binding: CreativeEngineContextBindingSchema,
26654
26641
  data: z111.object({
26655
- physical: z111.record(z111.unknown()),
26656
- commercial: z111.record(z111.unknown())
26642
+ physical: z111.record(z111.string(), z111.unknown()),
26643
+ commercial: z111.record(z111.string(), z111.unknown())
26657
26644
  }).strict(),
26658
26645
  references: z111.array(z111.object({
26659
26646
  sourceId: id4,
@@ -26723,7 +26710,7 @@ var CreativeEngineEditExecutionSchema = z111.object({
26723
26710
  version: z111.literal(1),
26724
26711
  source: CreativeEngineEditSourceSchema,
26725
26712
  intent: z111.object({
26726
- clientRequestId: z111.string().uuid(),
26713
+ clientRequestId: z111.string().guid(),
26727
26714
  sectionsHash: hash3,
26728
26715
  sourceBindingHash: hash3,
26729
26716
  derivedPlanHash: hash3,
@@ -26835,7 +26822,7 @@ var CreativeEngineEditProposalSchema = z111.object({
26835
26822
  userId: id4,
26836
26823
  taskId: id4,
26837
26824
  angleKey: id4,
26838
- clientRequestId: z111.string().uuid(),
26825
+ clientRequestId: z111.string().guid(),
26839
26826
  createdAtMs: z111.number().int().nonnegative(),
26840
26827
  expiresAtMs: z111.number().int().positive(),
26841
26828
  source: CreativeEngineEditSourceSchema,
@@ -26844,7 +26831,7 @@ var CreativeEngineEditProposalSchema = z111.object({
26844
26831
  context: CreativeEngineEditContextSnapshotSchema,
26845
26832
  recipe: CreativeEngineRecipeSchema,
26846
26833
  // The API validates these with its canonical section schema before persistence/use.
26847
- sections: z111.array(z111.record(z111.unknown())).min(1).max(32)
26834
+ sections: z111.array(z111.record(z111.string(), z111.unknown())).min(1).max(32)
26848
26835
  }).strict();
26849
26836
 
26850
26837
  // ../../packages/types/src/creative-engine-retry.ts
@@ -26906,7 +26893,7 @@ var CreativeEngineFreshRetryProvenanceSchema = z112.object({
26906
26893
  import { z as z113 } from "zod";
26907
26894
  var CreativeEngineEntryRequestSchema = z113.object({
26908
26895
  creativeEngine: z113.literal("unified_v1"),
26909
- taskId: z113.string().uuid(),
26896
+ taskId: z113.string().guid(),
26910
26897
  angleKey: z113.string().min(1).max(200),
26911
26898
  requestId: z113.string().min(1).max(200),
26912
26899
  guide: z113.enum([
@@ -27118,7 +27105,7 @@ import { z as z116 } from "zod";
27118
27105
  // ../../packages/types/src/service-landing-primitives.ts
27119
27106
  import { z as z115 } from "zod";
27120
27107
  var OptionalTextSchema = z115.string().trim().min(1).max(500).optional();
27121
- var AssetIdSchema = z115.string().uuid().transform((value) => value.toLowerCase());
27108
+ var AssetIdSchema = z115.string().guid().transform((value) => value.toLowerCase());
27122
27109
  var ServiceLandingPrimaryCtaSchema = z115.object({
27123
27110
  channelIndex: z115.number().int().nonnegative(),
27124
27111
  label: z115.string().trim().min(1).max(80)
@@ -27254,7 +27241,7 @@ var ServiceLandingContactChannelSchema = z116.discriminatedUnion("kind", [
27254
27241
  BookingUrlChannelSchema
27255
27242
  ]);
27256
27243
  var ServiceLandingServiceSchema = z116.object({
27257
- id: z116.string().uuid(),
27244
+ id: z116.string().guid(),
27258
27245
  name: z116.string().trim().min(1).max(120),
27259
27246
  description: OptionalTextSchema,
27260
27247
  inclusions: z116.array(z116.string().trim().min(1).max(160)).max(12),
@@ -27482,7 +27469,7 @@ var ServiceLandingArtifactSchema = z116.preprocess(applyCodeArtifactDefaults, z1
27482
27469
  // ../../packages/types/src/service-landing-facts-brand.ts
27483
27470
  import { z as z117 } from "zod";
27484
27471
  var ServiceLandingServiceFactsSchema = z117.object({
27485
- id: z117.string().uuid(),
27472
+ id: z117.string().guid(),
27486
27473
  name: z117.string().trim().min(1).max(120).optional(),
27487
27474
  description: OptionalTextSchema,
27488
27475
  inclusions: z117.array(z117.string().trim().min(1).max(160)).max(12).default([]),
@@ -27634,7 +27621,7 @@ var ServicePageParserMetadataSchema = z117.object({
27634
27621
  }).strict()).max(100).optional()
27635
27622
  }).strict();
27636
27623
  var ServicePageSourceSchema = z117.object({
27637
- id: z117.string().uuid(),
27624
+ id: z117.string().guid(),
27638
27625
  kind: ServicePageSourceKindSchema,
27639
27626
  status: ServicePageSourceStatusSchema,
27640
27627
  displayName: z117.string().trim().min(1).max(180).optional(),
@@ -27645,14 +27632,14 @@ var ServicePageSourceSchema = z117.object({
27645
27632
  var ServicePageFactConflictSchema = z117.object({
27646
27633
  fieldPath: z117.string().trim().min(1).max(180),
27647
27634
  candidates: z117.array(z117.object({
27648
- id: z117.string().uuid(),
27635
+ id: z117.string().guid(),
27649
27636
  value: z117.string().trim().min(1).max(500),
27650
- sourceIds: z117.array(z117.string().uuid()).min(1).max(10)
27637
+ sourceIds: z117.array(z117.string().guid()).min(1).max(10)
27651
27638
  }).strict()).min(2).max(8)
27652
27639
  }).strict();
27653
27640
  var ServicePageFactProvenanceSchema = z117.object({
27654
27641
  fieldPath: z117.string().trim().min(1).max(180),
27655
- sourceIds: z117.array(z117.string().uuid()).min(1).max(10),
27642
+ sourceIds: z117.array(z117.string().guid()).min(1).max(10),
27656
27643
  evidence: z117.string().trim().max(1e3).optional()
27657
27644
  }).strict();
27658
27645
  var ServicePageFactsReviewSchema = z117.object({
@@ -27668,26 +27655,26 @@ var ServicePageFactsReviewSchema = z117.object({
27668
27655
  // ../../packages/types/src/service-landing-api.ts
27669
27656
  import { z as z118 } from "zod";
27670
27657
  var ServicePageCreateRequestSchema = z118.object({
27671
- brandId: z118.string().uuid(),
27658
+ brandId: z118.string().guid(),
27672
27659
  includeBrandLogo: z118.boolean().optional(),
27673
- idempotencyKey: z118.string().uuid().optional()
27660
+ idempotencyKey: z118.string().guid().optional()
27674
27661
  }).strict();
27675
27662
  var ServicePageFactsUpdateRequestSchema = z118.object({
27676
27663
  expectedRevision: z118.number().int().nonnegative(),
27677
- idempotencyKey: z118.string().uuid(),
27664
+ idempotencyKey: z118.string().guid(),
27678
27665
  facts: ServicePageFactsSchema
27679
27666
  }).strict();
27680
27667
  var ServicePageFactsConfirmRequestSchema = z118.object({
27681
27668
  expectedRevision: z118.number().int().nonnegative(),
27682
- idempotencyKey: z118.string().uuid(),
27669
+ idempotencyKey: z118.string().guid(),
27683
27670
  resolutions: z118.array(z118.object({
27684
27671
  fieldPath: z118.string().trim().min(1).max(180),
27685
- candidateId: z118.string().uuid()
27672
+ candidateId: z118.string().guid()
27686
27673
  }).strict()).max(30)
27687
27674
  }).strict();
27688
27675
  var ServicePageIntakeRequestSchema = z118.object({
27689
27676
  expectedRevision: z118.number().int().nonnegative(),
27690
- idempotencyKey: z118.string().uuid(),
27677
+ idempotencyKey: z118.string().guid(),
27691
27678
  text: z118.string().trim().max(3e4).optional(),
27692
27679
  profileUrl: z118.string().trim().url().max(2048).refine((value) => {
27693
27680
  try {
@@ -27718,7 +27705,7 @@ var ServicePageAttachmentRefSchema = z118.object({
27718
27705
  "source",
27719
27706
  "asset"
27720
27707
  ]),
27721
- id: z118.string().uuid().transform((id6) => id6.toLowerCase())
27708
+ id: z118.string().guid().transform((id6) => id6.toLowerCase())
27722
27709
  }).strict();
27723
27710
  var ServicePageAttachmentRefsSchema = z118.array(ServicePageAttachmentRefSchema).max(SERVICE_PAGE_CHAT_ATTACHMENT_MAX_SELECTION).superRefine((refs, ctx) => {
27724
27711
  const seen = /* @__PURE__ */ new Set();
@@ -27751,13 +27738,13 @@ var ServicePageChatAttachmentUploadResponseSchema = z118.object({
27751
27738
  }).strict();
27752
27739
  var ServicePageChatAttachmentUploadRequestSchema = z118.object({
27753
27740
  expectedRevision: z118.number().int().nonnegative(),
27754
- idempotencyKey: z118.string().uuid(),
27741
+ idempotencyKey: z118.string().guid(),
27755
27742
  profileUrl: z118.string().url().max(2048).optional()
27756
27743
  }).strict();
27757
27744
  var ServicePageEditInstructionSchema = z118.string().trim().min(3).max(SERVICE_PAGE_EDIT_INSTRUCTION_MAX_CHARS);
27758
27745
  var ServicePageEditEstimateRequestSchema = z118.object({
27759
27746
  expectedRevision: z118.number().int().nonnegative(),
27760
- baseCandidateOperationId: z118.string().uuid().transform((id6) => id6.toLowerCase()).optional(),
27747
+ baseCandidateOperationId: z118.string().guid().transform((id6) => id6.toLowerCase()).optional(),
27761
27748
  instruction: ServicePageEditInstructionSchema.optional(),
27762
27749
  attachmentRefs: ServicePageAttachmentRefsSchema.optional()
27763
27750
  }).strict();
@@ -27769,12 +27756,12 @@ var ServicePageEditEstimateResponseSchema = z118.object({
27769
27756
  }).strict();
27770
27757
  var ServicePageGenerationQuoteRequestSchema = z118.object({
27771
27758
  expectedRevision: z118.number().int().nonnegative(),
27772
- baseCandidateOperationId: z118.string().uuid().transform((id6) => id6.toLowerCase()).optional(),
27759
+ baseCandidateOperationId: z118.string().guid().transform((id6) => id6.toLowerCase()).optional(),
27773
27760
  instruction: ServicePageEditInstructionSchema.optional(),
27774
27761
  attachmentRefs: ServicePageAttachmentRefsSchema.optional()
27775
27762
  }).strict();
27776
27763
  var ServicePageQuoteResponseSchema = z118.object({
27777
- quoteId: z118.string().uuid(),
27764
+ quoteId: z118.string().guid(),
27778
27765
  purpose: ServicePageQuotePurposeSchema,
27779
27766
  expectedRevision: z118.number().int().nonnegative(),
27780
27767
  requestHash: z118.string().regex(/^[a-f0-9]{64}$/),
@@ -27788,16 +27775,16 @@ var ServicePageQuoteResponseSchema = z118.object({
27788
27775
  requiresConfirmation: z118.literal(true)
27789
27776
  }).strict();
27790
27777
  var ServicePageGenerateRequestSchema = z118.object({
27791
- quoteId: z118.string().uuid(),
27792
- idempotencyKey: z118.string().uuid(),
27778
+ quoteId: z118.string().guid(),
27779
+ idempotencyKey: z118.string().guid(),
27793
27780
  expectedRevision: z118.number().int().nonnegative(),
27794
- baseCandidateOperationId: z118.string().uuid().transform((id6) => id6.toLowerCase()).optional(),
27781
+ baseCandidateOperationId: z118.string().guid().transform((id6) => id6.toLowerCase()).optional(),
27795
27782
  instruction: ServicePageEditInstructionSchema.optional(),
27796
27783
  attachmentRefs: ServicePageAttachmentRefsSchema.optional()
27797
27784
  }).strict();
27798
27785
  var SERVICE_PAGE_CREATION_MAX_ATTEMPTS = 3;
27799
27786
  var ServicePageCreationMarkerSchema = z118.object({
27800
- rootOperationId: z118.string().uuid().optional(),
27787
+ rootOperationId: z118.string().guid().optional(),
27801
27788
  attempt: z118.number().int().min(1).max(SERVICE_PAGE_CREATION_MAX_ATTEMPTS)
27802
27789
  }).strict();
27803
27790
  var ServicePageCreationEstimateRequestSchema = z118.object({
@@ -27832,8 +27819,8 @@ var ServicePageOperationStatusSchema = z118.enum([
27832
27819
  "requires_reconciliation"
27833
27820
  ]);
27834
27821
  var ServicePageOperationResponseSchema = z118.object({
27835
- opId: z118.string().uuid(),
27836
- servicePageId: z118.string().uuid(),
27822
+ opId: z118.string().guid(),
27823
+ servicePageId: z118.string().guid(),
27837
27824
  kind: z118.enum([
27838
27825
  "fact_extraction",
27839
27826
  "generation"
@@ -27848,7 +27835,7 @@ var ServicePageOperationResponseSchema = z118.object({
27848
27835
  recoverable: z118.boolean()
27849
27836
  }).strict();
27850
27837
  var ServicePageEditHistoryItemSchema = z118.object({
27851
- opId: z118.string().uuid(),
27838
+ opId: z118.string().guid(),
27852
27839
  instruction: ServicePageEditInstructionSchema,
27853
27840
  status: ServicePageOperationStatusSchema,
27854
27841
  expectedRevision: z118.number().int().nonnegative(),
@@ -27863,8 +27850,8 @@ var ServicePageEditHistoryItemSchema = z118.object({
27863
27850
  }).strict();
27864
27851
  var ServicePageEditHistorySchema = z118.array(ServicePageEditHistoryItemSchema).max(50).default([]);
27865
27852
  var ServicePageOperationJobSchema = z118.object({
27866
- operationId: z118.string().uuid(),
27867
- servicePageId: z118.string().uuid(),
27853
+ operationId: z118.string().guid(),
27854
+ servicePageId: z118.string().guid(),
27868
27855
  userId: z118.string().min(1).max(256),
27869
27856
  kind: z118.enum([
27870
27857
  "fact_extraction",
@@ -27873,22 +27860,22 @@ var ServicePageOperationJobSchema = z118.object({
27873
27860
  }).strict();
27874
27861
  var ServicePageDraftUpdateRequestSchema = z118.object({
27875
27862
  expectedRevision: z118.number().int().nonnegative(),
27876
- idempotencyKey: z118.string().uuid(),
27877
- candidateOperationId: z118.string().uuid().transform((id6) => id6.toLowerCase()).optional(),
27863
+ idempotencyKey: z118.string().guid(),
27864
+ candidateOperationId: z118.string().guid().transform((id6) => id6.toLowerCase()).optional(),
27878
27865
  artifact: ServiceLandingArtifactSchema
27879
27866
  }).strict();
27880
27867
  var ServicePagePublishRequestSchema = z118.object({
27881
27868
  expectedRevision: z118.number().int().nonnegative(),
27882
27869
  slug: z118.string().trim().toLowerCase().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/).max(64),
27883
- idempotencyKey: z118.string().uuid()
27870
+ idempotencyKey: z118.string().guid()
27884
27871
  }).strict();
27885
27872
  var ServicePageUnpublishRequestSchema = z118.object({
27886
27873
  publishedRevision: z118.number().int().positive(),
27887
- idempotencyKey: z118.string().uuid()
27874
+ idempotencyKey: z118.string().guid()
27888
27875
  }).strict();
27889
27876
  var ServicePageSummarySchema = z118.object({
27890
- id: z118.string().uuid(),
27891
- brandId: z118.string().uuid().nullable(),
27877
+ id: z118.string().guid(),
27878
+ brandId: z118.string().guid().nullable(),
27892
27879
  businessName: z118.string().trim().min(1).max(120).nullable(),
27893
27880
  status: ServicePageStatusSchema,
27894
27881
  draftRevision: z118.number().int().nonnegative(),
@@ -27932,7 +27919,7 @@ var ServicePageListResponseSchema = z118.object({
27932
27919
  pages: z118.array(ServicePageSummarySchema)
27933
27920
  }).strict();
27934
27921
  var ServicePageIntakeResponseSchema = z118.object({
27935
- servicePageId: z118.string().uuid(),
27922
+ servicePageId: z118.string().guid(),
27936
27923
  draftRevision: z118.number().int().nonnegative(),
27937
27924
  sources: z118.array(ServicePageSourceSchema).max(50),
27938
27925
  facts: ServicePageFactsSchema,
@@ -27941,13 +27928,13 @@ var ServicePageIntakeResponseSchema = z118.object({
27941
27928
  assetsById: z118.record(AssetIdSchema, ServicePagePublicAssetSchema)
27942
27929
  }).strict();
27943
27930
  var ServicePagePreviewResponseSchema = z118.object({
27944
- servicePageId: z118.string().uuid(),
27931
+ servicePageId: z118.string().guid(),
27945
27932
  revision: z118.number().int().nonnegative(),
27946
27933
  artifact: ServiceLandingArtifactSchema,
27947
27934
  assetsById: z118.record(AssetIdSchema, ServicePagePublicAssetSchema)
27948
27935
  }).strict();
27949
27936
  var ServicePageAdminViewSchema = z118.object({
27950
- id: z118.string().uuid(),
27937
+ id: z118.string().guid(),
27951
27938
  businessName: z118.string().trim().min(1).max(120).nullable(),
27952
27939
  state: z118.enum([
27953
27940
  "created",
@@ -27960,7 +27947,7 @@ var ServicePageAdminViewSchema = z118.object({
27960
27947
  }).strict();
27961
27948
  var ServicePagePreviewRequestSchema = z118.object({
27962
27949
  expectedRevision: z118.number().int().nonnegative(),
27963
- candidateOperationId: z118.string().uuid().optional(),
27950
+ candidateOperationId: z118.string().guid().optional(),
27964
27951
  artifact: ServiceLandingArtifactSchema.optional()
27965
27952
  }).strict().superRefine((request, context) => {
27966
27953
  if (!request.artifact && !request.candidateOperationId) {
@@ -28118,7 +28105,7 @@ var FlightRecorderEntrySchema = z120.object({
28118
28105
  elements: z120.array(FlightRecorderElementSchema).optional(),
28119
28106
  distillation: FlightRecorderDistillationSchema.optional(),
28120
28107
  // Raw payload (sanitized of secrets)
28121
- rawPayload: z120.record(z120.unknown())
28108
+ rawPayload: z120.record(z120.string(), z120.unknown())
28122
28109
  });
28123
28110
  var FlightRecorderQuerySchema = z120.object({
28124
28111
  taskId: z120.string().min(1),
@@ -28173,7 +28160,7 @@ var Url = z122.string().url().refine((value) => {
28173
28160
  var ClassicLandingAssetBlockSchema = z122.discriminatedUnion("kind", [
28174
28161
  z122.object({
28175
28162
  kind: z122.literal("image"),
28176
- ownerTaskId: z122.string().uuid(),
28163
+ ownerTaskId: z122.string().guid(),
28177
28164
  sourceIndex: z122.number().int().positive(),
28178
28165
  variantIndex: z122.number().int().nonnegative(),
28179
28166
  url: Url,
@@ -28183,8 +28170,8 @@ var ClassicLandingAssetBlockSchema = z122.discriminatedUnion("kind", [
28183
28170
  }).strict(),
28184
28171
  z122.object({
28185
28172
  kind: z122.literal("gif"),
28186
- ownerTaskId: z122.string().uuid(),
28187
- gifId: z122.string().uuid(),
28173
+ ownerTaskId: z122.string().guid(),
28174
+ gifId: z122.string().guid(),
28188
28175
  gifRevision: z122.number().int().nonnegative(),
28189
28176
  demo: LandingGifReadableSchema,
28190
28177
  historicalDelivery: z122.literal(true).optional()
@@ -28192,10 +28179,10 @@ var ClassicLandingAssetBlockSchema = z122.discriminatedUnion("kind", [
28192
28179
  ]);
28193
28180
  var PublishedClassicLandingSchema = z122.object({
28194
28181
  version: z122.literal(1),
28195
- ownerTaskId: z122.string().uuid(),
28182
+ ownerTaskId: z122.string().guid(),
28196
28183
  documentRevision: z122.number().int().nonnegative(),
28197
28184
  ownerRevisions: z122.array(z122.object({
28198
- ownerTaskId: z122.string().uuid(),
28185
+ ownerTaskId: z122.string().guid(),
28199
28186
  landingRevision: z122.number().int().nonnegative()
28200
28187
  }).strict()).max(100),
28201
28188
  blocks: z122.array(ClassicLandingAssetBlockSchema).max(100)
@@ -28242,18 +28229,18 @@ import { z as z123 } from "zod";
28242
28229
  var DropiCountrySchema = z123.enum(DROPI_COUNTRY_CODES);
28243
28230
  var DropiCountryQuerySchema = z123.object({
28244
28231
  countryCode: DropiCountrySchema.default("CO"),
28245
- connectionId: z123.string().uuid().optional()
28232
+ connectionId: z123.string().guid().optional()
28246
28233
  }).strict();
28247
28234
  var ConnectDropiFinancialSchema = z123.object({
28248
28235
  countryCode: DropiCountrySchema.default("CO"),
28249
- connectionId: z123.string().uuid().optional(),
28236
+ connectionId: z123.string().guid().optional(),
28250
28237
  label: z123.string().trim().min(1).max(80).optional(),
28251
28238
  integrationKey: z123.string().trim().min(1).max(4096).regex(/^[\x21-\x7e]+$/)
28252
28239
  }).strict();
28253
28240
  var SyncDropiFinancialSchema = z123.object({
28254
28241
  countryCode: DropiCountrySchema.optional(),
28255
- operationId: z123.string().uuid().optional(),
28256
- connectionId: z123.string().uuid().optional(),
28242
+ operationId: z123.string().guid().optional(),
28243
+ connectionId: z123.string().guid().optional(),
28257
28244
  since: z123.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional(),
28258
28245
  until: z123.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional()
28259
28246
  }).strict();
@@ -28261,7 +28248,7 @@ var connectionCountries = z123.array(DropiCountrySchema).max(DROPI_COUNTRY_CODES
28261
28248
  var DropiFinancialConnectionsSchema = z123.object({
28262
28249
  connectedCountries: connectionCountries,
28263
28250
  connections: z123.array(z123.object({
28264
- connectionId: z123.string().uuid(),
28251
+ connectionId: z123.string().guid(),
28265
28252
  countryCode: DropiCountrySchema,
28266
28253
  label: z123.string().min(1).max(80)
28267
28254
  }).strict()).max(21).optional(),
@@ -28271,7 +28258,7 @@ var DropiFinancialConnectionsSchema = z123.object({
28271
28258
  var DropiFinancialStatusSchema = z123.object({
28272
28259
  enabled: z123.boolean(),
28273
28260
  connected: z123.boolean(),
28274
- connectionId: z123.string().uuid().optional(),
28261
+ connectionId: z123.string().guid().optional(),
28275
28262
  connectionCount: z123.number().int().nonnegative().optional(),
28276
28263
  label: z123.string().min(1).max(80).optional(),
28277
28264
  countryCode: DropiCountrySchema,
@@ -28398,7 +28385,7 @@ var ServiceImageContextSchema = z124.object({
28398
28385
  // ../../packages/types/src/brand-creation.ts
28399
28386
  import { z as z125 } from "zod";
28400
28387
  var BrandCreationReceiptSchema = z125.object({
28401
- brandId: z125.string().uuid(),
28388
+ brandId: z125.string().guid(),
28402
28389
  status: z125.enum([
28403
28390
  "extracting",
28404
28391
  "ready",
@@ -28541,7 +28528,7 @@ var WebsiteCaptureRequestSchema = z127.object({
28541
28528
  language: MotionGraphicsLanguageSchema
28542
28529
  }).strict();
28543
28530
  var WebsiteCaptureResponseSchema = z127.object({
28544
- captureId: z127.string().uuid(),
28531
+ captureId: z127.string().guid(),
28545
28532
  status: WebsiteCaptureStatusSchema,
28546
28533
  expiresAt: z127.string().datetime(),
28547
28534
  previewUrl: z127.string().url().optional(),
@@ -28550,7 +28537,7 @@ var WebsiteCaptureResponseSchema = z127.object({
28550
28537
  cause: WebsiteCaptureCauseSchema.optional()
28551
28538
  });
28552
28539
  var WebsiteCaptureJobSchema = WebsiteCaptureRequestSchema.extend({
28553
- captureId: z127.string().uuid(),
28540
+ captureId: z127.string().guid(),
28554
28541
  attempt: z127.number().int().positive(),
28555
28542
  leaseUntil: z127.string().datetime(),
28556
28543
  /** Public profile document prepared by the API; never contains a provider credential. */
@@ -28713,7 +28700,7 @@ var image = z128.object({
28713
28700
  width: z128.number().int().positive(),
28714
28701
  height: z128.number().int().positive(),
28715
28702
  adCopy: nullableText,
28716
- rawResponse: z128.unknown()
28703
+ rawResponse: z128.unknown().optional()
28717
28704
  });
28718
28705
  var ProductDemoSnapshotSchema = z128.object({
28719
28706
  /** Optional only for packs frozen before seller review drafts were captured. */
@@ -28726,12 +28713,12 @@ var ProductDemoSnapshotSchema = z128.object({
28726
28713
  country: nullableText,
28727
28714
  features: z128.array(text3).max(100),
28728
28715
  form: nullableText,
28729
- details: z128.unknown(),
28716
+ details: z128.unknown().optional(),
28730
28717
  isCombo: z128.boolean(),
28731
- comboItems: z128.unknown(),
28718
+ comboItems: z128.unknown().optional(),
28732
28719
  images: z128.array(text3).min(1).max(50),
28733
28720
  cleanImages: z128.array(text3).max(50),
28734
- cleanImagesMeta: z128.unknown()
28721
+ cleanImagesMeta: z128.unknown().optional()
28735
28722
  }),
28736
28723
  angles: z128.array(z128.object({
28737
28724
  content: text3,
@@ -28750,7 +28737,7 @@ var ProductDemoSnapshotSchema = z128.object({
28750
28737
  durationSeconds: z128.number().int().positive().nullable(),
28751
28738
  format: VideoFormat,
28752
28739
  resultUrls: z128.array(text3).min(1).max(10),
28753
- rawResponse: z128.unknown(),
28740
+ rawResponse: z128.unknown().optional(),
28754
28741
  adCopy: nullableText
28755
28742
  })).min(1).max(10),
28756
28743
  landingImages: z128.array(z128.object({
@@ -28761,17 +28748,17 @@ var ProductDemoSnapshotSchema = z128.object({
28761
28748
  height: z128.number().int().positive(),
28762
28749
  notes: nullableText
28763
28750
  })).max(20),
28764
- landingConfig: z128.unknown(),
28751
+ landingConfig: z128.unknown().optional(),
28765
28752
  image,
28766
- productUseSheet: z128.unknown(),
28767
- productTruth: z128.unknown(),
28753
+ productUseSheet: z128.unknown().optional(),
28754
+ productTruth: z128.unknown().optional(),
28768
28755
  productReference: z128.object({
28769
28756
  referenceEvidenceVersion: z128.number().int().nonnegative(),
28770
28757
  planVersion: z128.number().int().positive(),
28771
28758
  baseReferenceSetHash: text3,
28772
- referenceSet: z128.unknown(),
28773
- preparationPlan: z128.unknown(),
28774
- canonicalIdentityAnchors: z128.unknown()
28759
+ referenceSet: z128.unknown().optional(),
28760
+ preparationPlan: z128.unknown().optional(),
28761
+ canonicalIdentityAnchors: z128.unknown().optional()
28775
28762
  })
28776
28763
  });
28777
28764
  var ProductDemoPhaseSchema = z128.enum([
@@ -28800,10 +28787,10 @@ var ProductDemoTaskStateSchema = z128.object({
28800
28787
  // ../../packages/types/src/demo-mode-service-page-assets.ts
28801
28788
  import { z as z129 } from "zod";
28802
28789
  var DemoServicePageAssetSourceSchema = z129.object({
28803
- pageId: z129.string().uuid(),
28790
+ pageId: z129.string().guid(),
28804
28791
  ownerId: z129.string().min(1),
28805
28792
  assets: z129.array(z129.object({
28806
- id: z129.string().uuid(),
28793
+ id: z129.string().guid(),
28807
28794
  storageKey: z129.string().min(1).max(1024),
28808
28795
  mediaType: z129.enum([
28809
28796
  "image/webp",
@@ -28879,14 +28866,14 @@ var DEMO_MODE_OPTIONAL_TEMPLATE_KEYS = [
28879
28866
  ...DEMO_MODE_OPTIONAL_MOTION_TEMPLATE_KEYS,
28880
28867
  ...DEMO_MODE_PRODUCT_ALL_TEMPLATE_KEYS
28881
28868
  ];
28882
- var optionalTemplateId = z130.preprocess((value) => value === "" ? void 0 : value, z130.string().uuid().optional());
28869
+ var optionalTemplateId = z130.preprocess((value) => value === "" ? void 0 : value, z130.string().guid().optional());
28883
28870
  var DemoModeTemplatesSchema = z130.object({
28884
- brandId: z130.string().uuid(),
28885
- servicePageId: z130.string().uuid(),
28886
- motionTaskId: z130.string().uuid(),
28871
+ brandId: z130.string().guid(),
28872
+ servicePageId: z130.string().guid(),
28873
+ motionTaskId: z130.string().guid(),
28887
28874
  motionVariantTaskId: optionalTemplateId,
28888
28875
  motionThirdTaskId: optionalTemplateId,
28889
- imageTaskId: z130.string().uuid(),
28876
+ imageTaskId: z130.string().guid(),
28890
28877
  productLandingTaskId: optionalTemplateId,
28891
28878
  productVideoTaskId: optionalTemplateId,
28892
28879
  productVideoVariantTaskId: optionalTemplateId,
@@ -28927,7 +28914,7 @@ var DemoModeSnapshotSchema = z130.object({
28927
28914
  product: ProductDemoSnapshotSchema.optional(),
28928
28915
  brand: z130.object({
28929
28916
  /** Columnas de identidad de `Brand` listas para un `update` (sin id/userId/slug/estado/fechas). */
28930
- identity: z130.record(z130.unknown()),
28917
+ identity: z130.record(z130.string(), z130.unknown()),
28931
28918
  productSamples: z130.array(z130.object({
28932
28919
  name: z130.string(),
28933
28920
  priceCents: z130.number().int().nullable(),
@@ -28947,9 +28934,9 @@ var DemoModeSnapshotSchema = z130.object({
28947
28934
  }))
28948
28935
  }),
28949
28936
  servicePage: z130.object({
28950
- facts: z130.unknown(),
28951
- review: z130.unknown(),
28952
- artifact: z130.unknown(),
28937
+ facts: z130.unknown().optional(),
28938
+ review: z130.unknown().optional(),
28939
+ artifact: z130.unknown().optional(),
28953
28940
  /** Optional only for snapshots saved before page-owned demo media. */
28954
28941
  assetSource: DemoServicePageAssetSourceSchema.optional()
28955
28942
  }),
@@ -28975,7 +28962,7 @@ var DemoModeSnapshotSchema = z130.object({
28975
28962
  width: z130.number().int(),
28976
28963
  height: z130.number().int(),
28977
28964
  adCopy: nullableString,
28978
- rawResponse: z130.unknown()
28965
+ rawResponse: z130.unknown().optional()
28979
28966
  })
28980
28967
  });
28981
28968
  var DemoModeConfigSchema = DemoModeEditableObjectSchema.extend({
@@ -29040,7 +29027,7 @@ var DemoModeJobSchema = z130.object({
29040
29027
  productPhase: ProductDemoJobPhaseSchema.optional(),
29041
29028
  step: DemoModeStepSchema,
29042
29029
  /** brandId | servicePageOperationId | taskId según el flujo. */
29043
- targetId: z130.string().uuid(),
29030
+ targetId: z130.string().guid(),
29044
29031
  userId: z130.string().min(1),
29045
29032
  /** Solo marca: la generación de extracción que el guion completa. */
29046
29033
  generation: z130.number().int().positive().optional(),
@@ -30962,7 +30949,7 @@ var ApiClient = class {
30962
30949
  };
30963
30950
 
30964
30951
  // src/index.ts
30965
- var MCP_VERSION = "12.3.1";
30952
+ var MCP_VERSION = "12.4.1";
30966
30953
 
30967
30954
  // src/meta-upload-app.ts
30968
30955
  import { readFileSync } from "fs";
@@ -31956,7 +31943,7 @@ __name(resolveMediaRef, "resolveMediaRef");
31956
31943
  import { z as z133 } from "zod";
31957
31944
  var Lang = z133.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);
31958
31945
  var Country = z133.string().min(2).max(3);
31959
- var LandingStrategyEnum = LandingStrategySchema;
31946
+ var LandingStrategyEnum = SelectableLandingStrategySchema;
31960
31947
  var LandingImageFormatEnum = LandingImageFormatSchema;
31961
31948
  var VideoPresetEnum = VideoPreset.extract([
31962
31949
  "auto",
@@ -32120,7 +32107,7 @@ var ImageCreativeAspectRatioEnum = ImageCreativeAspectRatio;
32120
32107
  var ImageRefSchema = z133.object({
32121
32108
  url: z133.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.'),
32122
32109
  path: z133.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`.'),
32123
- assetId: z133.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.")
32110
+ assetId: z133.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.")
32124
32111
  }).refine((v) => [
32125
32112
  v.url,
32126
32113
  v.path,
@@ -33152,8 +33139,8 @@ function serviceVideoResultMedia(result) {
33152
33139
  }
33153
33140
  __name(serviceVideoResultMedia, "serviceVideoResultMedia");
33154
33141
  var CreativeVariantIdentity = z134.object({
33155
- variantTaskId: z134.string().uuid(),
33156
- sourceTaskId: z134.string().uuid(),
33142
+ variantTaskId: z134.string().guid(),
33143
+ sourceTaskId: z134.string().guid(),
33157
33144
  kind: TaskCreativeVariantKind,
33158
33145
  status: TaskStatusSchema,
33159
33146
  error: z134.string().optional()
@@ -34296,9 +34283,9 @@ var CreateAnimatedVideoInput = z136.object({
34296
34283
  "cancel",
34297
34284
  "generate"
34298
34285
  ]).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."),
34299
- brandId: z136.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."),
34300
- websiteCaptureId: z136.string().uuid().optional().describe("ID de la captura preparada. Obligatorio para status/cancel/generate; no inventarlo."),
34301
- generationRequestId: z136.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."),
34286
+ brandId: z136.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."),
34287
+ websiteCaptureId: z136.string().guid().optional().describe("ID de la captura preparada. Obligatorio para status/cancel/generate; no inventarlo."),
34288
+ generationRequestId: z136.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."),
34302
34289
  confirmed: z136.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."),
34303
34290
  // Plain text, not `.url()`: users type «cal.com», and the web accepts it.
34304
34291
  // normalizeWebAddress (shared with the web) adds https:// and refuses
@@ -34388,7 +34375,7 @@ var AnimatedVideoResultSchema = z136.object({
34388
34375
  index: MotionGraphicsHookVariantsSchema,
34389
34376
  count: MotionGraphicsHookVariantsSchema,
34390
34377
  tasks: z136.array(z136.object({
34391
- taskId: z136.string().uuid(),
34378
+ taskId: z136.string().guid(),
34392
34379
  index: MotionGraphicsHookVariantsSchema,
34393
34380
  status: z136.enum([
34394
34381
  "queued",
@@ -34699,7 +34686,7 @@ function registerAnimatedVideoTools(server, api) {
34699
34686
  nowMs: 0
34700
34687
  })
34701
34688
  });
34702
- const parsedTaskIds = z136.array(z136.string().uuid()).min(1).max(MOTION_GRAPHICS_HOOK_VARIANTS_MAX).safeParse(created.taskIds);
34689
+ const parsedTaskIds = z136.array(z136.string().guid()).min(1).max(MOTION_GRAPHICS_HOOK_VARIANTS_MAX).safeParse(created.taskIds);
34703
34690
  const taskIds = parsedTaskIds.success && parsedTaskIds.data[0] === created.taskId ? parsedTaskIds.data : void 0;
34704
34691
  const receipt = {
34705
34692
  taskId: created.taskId,
@@ -34743,7 +34730,7 @@ __name(registerAnimatedVideoTools, "registerAnimatedVideoTools");
34743
34730
  // src/tools/winning-product-image.ts
34744
34731
  import { z as z137 } from "zod";
34745
34732
  var WinnerReferenceInput = z137.object({
34746
- runId: z137.string().uuid(),
34733
+ runId: z137.string().guid(),
34747
34734
  candidateSourceId: z137.string().trim().min(1).max(160)
34748
34735
  }).strict().describe("Referencia opaca de un producto devuelto por find_winning_products/get_product_research_run.");
34749
34736
  async function resolveWinnerImages(api, winnerReference, images) {
@@ -34784,7 +34771,7 @@ var editTaskDraftGuidance = getProductMakerCapabilityModelGuidance("edit_task_dr
34784
34771
  var CreateProductTaskInput = z138.object({
34785
34772
  images: ImagesInput.optional().describe("1\u20135 fotos del mismo producto. Omitir \xFAnicamente cuando projectId apunta a un proyecto propio con imagen guardada."),
34786
34773
  winnerReference: WinnerReferenceInput.optional().describe(WINNER_IMAGE_CHOICE_GUIDANCE),
34787
- projectId: z138.string().uuid().optional().describe("Opcional. Proyecto guiado propio. Permite continuar sin volver a subir la imagen guardada; nunca evita cr\xE9ditos, cuotas ni confirmaciones."),
34774
+ projectId: z138.string().guid().optional().describe("Opcional. Proyecto guiado propio. Permite continuar sin volver a subir la imagen guardada; nunca evita cr\xE9ditos, cuotas ni confirmaciones."),
34788
34775
  productUrl: z138.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."),
34789
34776
  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.'),
34790
34777
  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.'),
@@ -34817,13 +34804,13 @@ var CreateProductTaskInput = z138.object({
34817
34804
  competitorScanEnabled: z138.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."),
34818
34805
  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.'),
34819
34806
  replicateWinnerWhenFound: z138.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."),
34820
- brandId: z138.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."),
34807
+ brandId: z138.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."),
34821
34808
  actorId: z138.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."),
34822
34809
  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.'),
34823
34810
  creativeDirection: z138.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.'),
34824
34811
  headline: z138.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."),
34825
34812
  subheadline: z138.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."),
34826
- 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".'),
34813
+ 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".'),
34827
34814
  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".')
34828
34815
  }).strict();
34829
34816
  var CreateServiceVideoInput = z138.object({
@@ -34831,7 +34818,7 @@ var CreateServiceVideoInput = z138.object({
34831
34818
  additionalContext: z138.string().max(3e3).optional().describe('Instrucci\xF3n natural prioritaria. Ej.: "adapta el ritmo de estos competidores", "enfatiza reservas de demos" o restricciones de claims.'),
34832
34819
  language: Lang.describe("Idioma del video: es, en o pt."),
34833
34820
  voiceId: z138.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.'),
34834
- brandId: z138.string().uuid().optional().describe("Marca guardada del usuario. Aplica voz, mensajes, paleta y persona predeterminada."),
34821
+ brandId: z138.string().guid().optional().describe("Marca guardada del usuario. Aplica voz, mensajes, paleta y persona predeterminada."),
34835
34822
  reviewMode: z138.enum([
34836
34823
  "automatic",
34837
34824
  "guided"
@@ -34877,7 +34864,7 @@ var PendingActionPayload = z138.discriminatedUnion("kind", [
34877
34864
  kind: z138.literal("product_reference_set_approval"),
34878
34865
  scope: ProductReferenceScopeEnum.optional(),
34879
34866
  scopeKey: z138.string().min(1).max(120).optional(),
34880
- scopeSnapshotId: z138.string().uuid().optional(),
34867
+ scopeSnapshotId: z138.string().guid().optional(),
34881
34868
  expectedScopeHash: z138.string().min(1).max(128).optional(),
34882
34869
  decision: ProductReferenceResolutionDecisionEnum,
34883
34870
  reason: ProductReferenceRejectionReasonEnum.optional(),
@@ -34942,7 +34929,7 @@ var PendingActionPayload = z138.discriminatedUnion("kind", [
34942
34929
  }),
34943
34930
  z138.object({
34944
34931
  kind: z138.literal("service_angle_approval"),
34945
- angleId: z138.string().uuid().optional(),
34932
+ angleId: z138.string().guid().optional(),
34946
34933
  angleNumber: z138.number().int().positive().optional(),
34947
34934
  content: z138.string().min(1).max(480).optional(),
34948
34935
  creativeDirection: z138.string().min(1).max(1500).optional(),
@@ -35045,7 +35032,7 @@ var StatusForResolveSchema = z138.object({
35045
35032
  }).optional(),
35046
35033
  scope: ProductReferenceScopeEnum.optional(),
35047
35034
  scopeKey: z138.string().optional(),
35048
- scopeSnapshotId: z138.string().uuid().optional(),
35035
+ scopeSnapshotId: z138.string().guid().optional(),
35049
35036
  scopeHash: z138.string().optional(),
35050
35037
  baseReferenceSetHash: z138.string().optional(),
35051
35038
  phase: z138.enum([
@@ -35074,7 +35061,7 @@ var StatusForResolveSchema = z138.object({
35074
35061
  // dropped here, so the approval handler below could not echo it back on the
35075
35062
  // PATCH — the selection looked accepted and reached no render.
35076
35063
  angles: z138.array(z138.object({
35077
- id: z138.string().uuid(),
35064
+ id: z138.string().guid(),
35078
35065
  content: z138.string(),
35079
35066
  creativeDirection: z138.string(),
35080
35067
  actor: z138.string(),
@@ -35436,8 +35423,8 @@ ANTES de invocar, resume outputs, cantidad de videos y datos comerciales, explic
35436
35423
  server.registerTool("verify_landing_commerce", {
35437
35424
  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.",
35438
35425
  inputSchema: {
35439
- taskId: z138.string().uuid(),
35440
- editId: z138.string().uuid()
35426
+ taskId: z138.string().guid(),
35427
+ editId: z138.string().guid()
35441
35428
  },
35442
35429
  annotations: OVERWRITES_EXTERNAL
35443
35430
  }, async (input) => {
@@ -35716,7 +35703,7 @@ ANTES de invocar, resume outputs, cantidad de videos y datos comerciales, explic
35716
35703
  ...page.data,
35717
35704
  items: page.data.items.map((item) => {
35718
35705
  const servicePage = z138.object({
35719
- taskId: z138.string().uuid(),
35706
+ taskId: z138.string().guid(),
35720
35707
  resourceType: z138.literal("service_page")
35721
35708
  }).passthrough().safeParse(item);
35722
35709
  if (!servicePage.success) return item;
@@ -36228,7 +36215,7 @@ var CreateBrandInput = z139.object({
36228
36215
  "pt"
36229
36216
  ]).optional().describe("Idioma de la conversaci\xF3n. Solo se usa si la p\xE1gina del negocio no deja claro su idioma."),
36230
36217
  confirmed: z139.boolean().optional().describe("Solo true despu\xE9s de mostrar el precio y que el usuario acepte. Sin confirmed, start solo cotiza y no cobra."),
36231
- brandId: z139.string().uuid().optional().describe("ID de la marca. Obligatorio para status; no lo inventes.")
36218
+ brandId: z139.string().guid().optional().describe("ID de la marca. Obligatorio para status; no lo inventes.")
36232
36219
  }).strict();
36233
36220
  function normalizeBrandSourceUrl(raw) {
36234
36221
  const value = raw.trim();
@@ -36523,12 +36510,12 @@ var CreateServiceLandingInput = z140.object({
36523
36510
  "status",
36524
36511
  "publish"
36525
36512
  ]).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."),
36526
- brandId: z140.string().uuid().optional().describe("ID de la marca (de create_brand). Obligatorio para prepare. Nunca un taskId de producto."),
36527
- servicePageId: z140.string().uuid().optional().describe("ID de la landing que devolvi\xF3 prepare. Obligatorio para build, status y publish."),
36513
+ brandId: z140.string().guid().optional().describe("ID de la marca (de create_brand). Obligatorio para prepare. Nunca un taskId de producto."),
36514
+ servicePageId: z140.string().guid().optional().describe("ID de la landing que devolvi\xF3 prepare. Obligatorio para build, status y publish."),
36528
36515
  businessInfo: z140.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."),
36529
36516
  confirmed: z140.boolean().optional().describe("Solo true despu\xE9s de mostrar el precio total y que el usuario acepte. Obligatorio para build."),
36530
36517
  maxCredits: z140.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."),
36531
- operationId: z140.string().uuid().optional().describe("Opcional en status: la operaci\xF3n que devolvi\xF3 build."),
36518
+ operationId: z140.string().guid().optional().describe("Opcional en status: la operaci\xF3n que devolvi\xF3 build."),
36532
36519
  slug: z140.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.")
36533
36520
  }).strict();
36534
36521
  function serviceKey(...parts) {
@@ -36922,7 +36909,7 @@ var LANGUAGE_TAGS = {
36922
36909
  pt: "pt-BR"
36923
36910
  };
36924
36911
  var CreateServiceImagesInput = z141.object({
36925
- brandId: z141.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."),
36912
+ brandId: z141.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."),
36926
36913
  instruction: z141.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."),
36927
36914
  delegateToAi: z141.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."),
36928
36915
  format: z141.enum(SERVICE_IMAGE_FORMATS).optional().describe('Formato: "4:5" (feed, por defecto), "9:16" (historias/reels) o "1:1" (cuadrado).'),
@@ -37081,7 +37068,7 @@ var CreativeRefs = {
37081
37068
  buyerPersona: z142.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.'),
37082
37069
  isCombo: z142.boolean().optional().describe("Opcional. Si true, el creativo presenta el producto como combo/pack. Default false."),
37083
37070
  competitorScanEnabled: z142.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."),
37084
- brandId: z142.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.")
37071
+ brandId: z142.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.")
37085
37072
  };
37086
37073
  var VideoPresenter = z142.discriminatedUnion("mode", [
37087
37074
  z142.object({
@@ -37186,7 +37173,7 @@ var FreeVideoInput = z142.object({
37186
37173
  generateAiMusic: z142.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.'),
37187
37174
  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.'),
37188
37175
  addSubtitles: z142.boolean().default(false).describe("Opcional. Quema subt\xEDtulos usando el rawPrompt exacto. Default false."),
37189
- idempotencyKey: z142.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.")
37176
+ idempotencyKey: z142.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.")
37190
37177
  }).strict();
37191
37178
  var imageStyleList = ImageCreativeStyleEnum.options.join(" | ");
37192
37179
  var ImageCreativeSetup = z142.discriminatedUnion("mode", [
@@ -37288,7 +37275,7 @@ var ImageInput = z142.object({
37288
37275
  brandId: CreativeRefs.brandId
37289
37276
  });
37290
37277
  var EditImageCreativeInput = z142.object({
37291
- taskId: z142.string().uuid().describe("ID de la tarea de imagen ya finalizada."),
37278
+ taskId: z142.string().guid().describe("ID de la tarea de imagen ya finalizada."),
37292
37279
  variantIndex: z142.number().int().min(0).max(10).describe("\xCDndice de la variante a corregir (0 = primera imagen)."),
37293
37280
  clientRequestId: z142.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."),
37294
37281
  instruction: z142.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".')
@@ -37583,8 +37570,8 @@ function registerCreativeTools(server, api, { transport = "http", proxyBaseUrl =
37583
37570
  server.registerTool("get_image_edit_status", {
37584
37571
  description: imageEditStatusGuidance.summary,
37585
37572
  inputSchema: {
37586
- taskId: z142.string().uuid(),
37587
- operationId: z142.string().uuid()
37573
+ taskId: z142.string().guid(),
37574
+ operationId: z142.string().guid()
37588
37575
  },
37589
37576
  annotations: READS_INTERNAL,
37590
37577
  _meta: taskResultsToolMeta()
@@ -37723,7 +37710,7 @@ var CreativeVariantKindEnum = z143.enum([
37723
37710
  "landing"
37724
37711
  ]);
37725
37712
  var EstimateCreativeVariantInputBase = z143.object({
37726
- sourceTaskId: z143.string().uuid().describe("ID de la tarea original completada."),
37713
+ sourceTaskId: z143.string().guid().describe("ID de la tarea original completada."),
37727
37714
  kind: CreativeVariantKindEnum,
37728
37715
  videoPreset: TaskCreativeVariantVideoPresetEnum.optional().describe("Opcional para video. Solo cambia el preset p\xFAblico; el servidor conserva el modelo/tier del task origen."),
37729
37716
  videoResolution: VideoResolutionEnum.optional().describe("Opcional para video. Resoluci\xF3n del nuevo render."),
@@ -37792,10 +37779,10 @@ var EstimateCreativeVariantInput = EstimateCreativeVariantInputBase.superRefine(
37792
37779
  }
37793
37780
  });
37794
37781
  var CreateCreativeVariantInputBase = z143.object({
37795
- sourceTaskId: z143.string().uuid().describe("ID de la tarea original completada."),
37782
+ sourceTaskId: z143.string().guid().describe("ID de la tarea original completada."),
37796
37783
  kind: CreativeVariantKindEnum,
37797
37784
  confirm: z143.literal(true).describe("Confirmaci\xF3n expl\xEDcita del usuario despu\xE9s de mostrarle el estimado de cr\xE9ditos."),
37798
- clientRequestId: z143.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."),
37785
+ clientRequestId: z143.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."),
37799
37786
  angle: z143.string().trim().min(1).max(500).optional().describe("\xC1ngulo nuevo para video o imagen."),
37800
37787
  buyerPersona: z143.string().trim().min(1).max(360).optional().describe("Buyer persona coherente con el \xE1ngulo."),
37801
37788
  scriptNotes: z143.string().trim().min(1).max(2e3).optional().describe("Direcci\xF3n breve del guion para una variante de video."),
@@ -38164,7 +38151,7 @@ function registerConnectionTools(server, api) {
38164
38151
  inputSchema: z145.object({
38165
38152
  shopDomain: z145.string().min(3).max(120),
38166
38153
  query: z145.string().trim().max(120).optional(),
38167
- taskId: z145.string().uuid().optional()
38154
+ taskId: z145.string().guid().optional()
38168
38155
  }).shape,
38169
38156
  annotations: READS_EXTERNAL
38170
38157
  }, async ({ shopDomain, query, taskId }) => {
@@ -38516,8 +38503,8 @@ var GroupedMediaSource = z147.object({
38516
38503
  var GroupedUploadedAssetSource = z147.object({
38517
38504
  type: z147.literal("asset"),
38518
38505
  /** Returned by check_media_upload. ProductMaker resolves ownership server-side. */
38519
- assetId: z147.string().uuid(),
38520
- thumbnailAssetId: z147.string().uuid().optional()
38506
+ assetId: z147.string().guid(),
38507
+ thumbnailAssetId: z147.string().guid().optional()
38521
38508
  });
38522
38509
  var GroupedCreative = z147.object({
38523
38510
  type: z147.enum([
@@ -38664,7 +38651,7 @@ var PresignUploadResponseSchema = z147.object({
38664
38651
  const url2 = new URL(value);
38665
38652
  return !url2.username && !url2.password;
38666
38653
  }, "public media URL must not contain embedded credentials"),
38667
- stagingAssetId: z147.string().uuid()
38654
+ stagingAssetId: z147.string().guid()
38668
38655
  });
38669
38656
  async function uploadResolvedMedia(api, media, assetRole) {
38670
38657
  if (!media.buffer) throw new ResolveMediaError("INVALID_INPUT", "resolved media has no bytes");
@@ -39153,7 +39140,7 @@ var UploadSessionToolInput = z148.object(UploadSessionToolInputShape).superRefin
39153
39140
  }
39154
39141
  });
39155
39142
  var UploadSessionResponse = z148.object({
39156
- sessionId: z148.string().uuid(),
39143
+ sessionId: z148.string().guid(),
39157
39144
  uploadPageUrl: z148.string().url(),
39158
39145
  mediaKind: z148.enum([
39159
39146
  "image",
@@ -39168,7 +39155,7 @@ var UploadSessionResponse = z148.object({
39168
39155
  expiresAt: z148.string().datetime()
39169
39156
  });
39170
39157
  var UploadStatusInput = z148.object({
39171
- sessionId: z148.string().uuid().describe("The sessionId returned by request_media_upload.")
39158
+ sessionId: z148.string().guid().describe("The sessionId returned by request_media_upload.")
39172
39159
  });
39173
39160
  var UniversalUploadStatusResponse = z148.discriminatedUnion("status", [
39174
39161
  z148.object({
@@ -39178,7 +39165,7 @@ var UniversalUploadStatusResponse = z148.discriminatedUnion("status", [
39178
39165
  z148.object({
39179
39166
  status: z148.literal("uploaded"),
39180
39167
  assets: z148.array(z148.object({
39181
- assetId: z148.string().uuid(),
39168
+ assetId: z148.string().guid(),
39182
39169
  mediaKind: z148.enum([
39183
39170
  "image",
39184
39171
  "video"
@@ -39490,7 +39477,7 @@ var ShippingReferenceSchema = z150.object({
39490
39477
  });
39491
39478
  }
39492
39479
  });
39493
- var SHIPPING_REFERENCES = z150.record(ShippingReferenceSchema).parse(product_costing_shipping_references_default);
39480
+ var SHIPPING_REFERENCES = z150.record(z150.string(), ShippingReferenceSchema).parse(product_costing_shipping_references_default);
39494
39481
  var PRODUCT_COSTING_COUNTRY_CODES = Object.freeze(Object.keys(SHIPPING_REFERENCES));
39495
39482
  var SPANISH_LOCALE_COUNTRIES = /* @__PURE__ */ new Set([
39496
39483
  "MX",
@@ -40329,7 +40316,7 @@ var FindInput = z153.object({
40329
40316
  waitSeconds: z153.number().int().min(0).max(MAX_WAIT_SECONDS).optional().describe("Segundos a esperar el reporte antes de devolver el runId. M\xE1ximo 120.")
40330
40317
  });
40331
40318
  var GetInput = z153.object({
40332
- runId: z153.string().uuid().describe("ID del run devuelto por find_winning_products.")
40319
+ runId: z153.string().guid().describe("ID del run devuelto por find_winning_products.")
40333
40320
  });
40334
40321
  var ListInput = z153.object({
40335
40322
  limit: z153.number().int().min(1).max(20).default(10)
@@ -40475,7 +40462,7 @@ import { z as z154 } from "zod";
40475
40462
  var startDropshippingProjectGuidance = getProductMakerCapabilityModelGuidance("start_dropshipping_project");
40476
40463
  var costDropshippingProjectGuidance = getProductMakerCapabilityModelGuidance("cost_dropshipping_project");
40477
40464
  var guideDropshippingLaunchGuidance = getProductMakerCapabilityModelGuidance("guide_dropshipping_launch");
40478
- var ProjectId = z154.string().uuid();
40465
+ var ProjectId = z154.string().guid();
40479
40466
  var DropshippingProjectStatus = z154.enum([
40480
40467
  "active",
40481
40468
  "completed",
@@ -40589,15 +40576,7 @@ var DropshippingProjectNextAction = z154.discriminatedUnion("kind", NEXT_ACTION_
40589
40576
  kind: z154.literal(kind2),
40590
40577
  href: z154.string().min(1)
40591
40578
  })));
40592
- var CostingInputSchema = z154.object({
40593
- country: z154.string().min(2).max(3),
40594
- supplierCost: z154.number().finite().positive(),
40595
- shippingCost: z154.number().finite().nonnegative(),
40596
- returnRate: z154.number().finite().min(0).lt(1),
40597
- cancellationRate: z154.number().finite().min(0).lt(1),
40598
- adsManagerCpa: z154.number().finite().nonnegative(),
40599
- desiredMargin: z154.number().finite().min(0).lt(1)
40600
- }).superRefine(({ returnRate, cancellationRate }, context) => {
40579
+ var CostingInputSchema = z154.object(DropshippingProjectCostingInputSchema.shape).superRefine(({ returnRate, cancellationRate }, context) => {
40601
40580
  if (returnRate + cancellationRate >= 1) context.addIssue({
40602
40581
  code: z154.ZodIssueCode.custom,
40603
40582
  path: [
@@ -40787,10 +40766,10 @@ var DateOnly = z155.string().regex(/^\d{4}-\d{2}-\d{2}$/);
40787
40766
  var DailyControlInput = z155.object({
40788
40767
  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."),
40789
40768
  days: z155.number().int().min(1).max(14).default(3).describe("Tama\xF1o de la ventana, 1 a 14 d\xEDas."),
40790
- projectId: z155.string().uuid().optional().describe("Opcional: limita el reporte a un solo proyecto en vez de todos los productos activos.")
40769
+ projectId: z155.string().guid().optional().describe("Opcional: limita el reporte a un solo proyecto en vez de todos los productos activos.")
40791
40770
  }).strict();
40792
40771
  var LinkCampaignInput = z155.object({
40793
- projectId: z155.string().uuid(),
40772
+ projectId: z155.string().guid(),
40794
40773
  provider: z155.enum([
40795
40774
  "meta",
40796
40775
  "tiktok"
@@ -40799,7 +40778,7 @@ var LinkCampaignInput = z155.object({
40799
40778
  campaignId: ProviderCampaignIdentifier
40800
40779
  }).strict();
40801
40780
  var ReportReturnsInput = z155.object({
40802
- projectId: z155.string().uuid(),
40781
+ projectId: z155.string().guid(),
40803
40782
  date: DateOnly,
40804
40783
  returnedOrders: z155.number().int().min(0).max(1e5),
40805
40784
  note: z155.string().trim().max(280).optional()
@@ -40817,7 +40796,7 @@ var DailyControlDayMirror = z155.object({
40817
40796
  light: DailyControlLightMirror
40818
40797
  }).passthrough();
40819
40798
  var DailyControlProductMirror = z155.object({
40820
- projectId: z155.string().uuid(),
40799
+ projectId: z155.string().guid(),
40821
40800
  productName: z155.string().nullable(),
40822
40801
  status: DailyControlStatusMirror,
40823
40802
  statusMessage: z155.string().nullable(),
@@ -40950,7 +40929,7 @@ var SetProductCostingInput = z156.object({
40950
40929
  tienda + id de Shopify. El esquema canónico también las admite juntas,
40951
40930
  pero pedirlas por separado evita que el modelo emita una mezcla que
40952
40931
  diga dos productos a la vez. */
40953
- productControlId: z156.string().uuid().optional().describe("El id nuestro (lo devuelven get_product_control y create_manual_product). Obligatorio para productos manuales o importados sin tienda."),
40932
+ productControlId: z156.string().guid().optional().describe("El id nuestro (lo devuelven get_product_control y create_manual_product). Obligatorio para productos manuales o importados sin tienda."),
40954
40933
  manualSellingPrice: z156.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."),
40955
40934
  shopDomain: z156.string().min(1).optional(),
40956
40935
  shopifyProductId: z156.string().min(1).max(64).optional(),
@@ -40962,7 +40941,7 @@ var SetProductCostingInput = z156.object({
40962
40941
  }).strict();
40963
40942
  var Count = z156.number().int().min(0).max(1e5).nullable().optional();
40964
40943
  var ReportProductCountsInput = z156.object({
40965
- productControlId: z156.string().uuid().describe("El identificador que devuelve get_product_control."),
40944
+ productControlId: z156.string().guid().describe("El identificador que devuelve get_product_control."),
40966
40945
  date: DateOnly2,
40967
40946
  orders: Count.describe("Pedidos que entraron ese d\xEDa."),
40968
40947
  cancelledOrders: Count,
@@ -40975,7 +40954,7 @@ var SyncShopifyOrdersInput = SyncShopifyOrdersSchema;
40975
40954
  var ImportOrdersFileInput = z156.object({
40976
40955
  /** Ruta ABSOLUTA en la máquina de quien usa el MCP. */
40977
40956
  path: z156.string().min(1),
40978
- operationId: z156.string().uuid().optional(),
40957
+ operationId: z156.string().guid().optional(),
40979
40958
  /** Solo mirar: devuelve el resumen y no escribe nada. */
40980
40959
  dryRun: z156.boolean().optional()
40981
40960
  }).strict();
@@ -40984,35 +40963,35 @@ var CreateOperationInput = z156.object({
40984
40963
  label: z156.string().trim().min(1).max(60).optional()
40985
40964
  }).strict();
40986
40965
  var MergeProductsInput = z156.object({
40987
- sourceId: z156.string().uuid(),
40988
- targetId: z156.string().uuid()
40966
+ sourceId: z156.string().guid(),
40967
+ targetId: z156.string().guid()
40989
40968
  }).strict();
40990
40969
  var SetMonthlyExpenseInput = z156.object({
40991
40970
  month: z156.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/).optional(),
40992
40971
  label: SaveMonthlyExpenseSchema.shape.label,
40993
40972
  amount: z156.number().finite().min(0),
40994
- operationId: z156.string().uuid().optional()
40973
+ operationId: z156.string().guid().optional()
40995
40974
  }).strict();
40996
40975
  var SetAdSpendInput = z156.object({
40997
40976
  month: z156.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/).optional(),
40998
- operationId: z156.string().uuid().optional(),
40977
+ operationId: z156.string().guid().optional(),
40999
40978
  /** null RETIRA la corrección; cero afirma que no pautó. */
41000
40979
  amount: z156.number().finite().min(0).nullable()
41001
40980
  }).strict();
41002
40981
  var GetFinancesInput = z156.object({
41003
40982
  month: z156.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."),
41004
- operationId: z156.string().uuid().optional().describe("El negocio, si tiene mas de uno. Con uno solo no hace falta decirlo.")
40983
+ operationId: z156.string().guid().optional().describe("El negocio, si tiene mas de uno. Con uno solo no hace falta decirlo.")
41005
40984
  }).strict();
41006
40985
  var GetDropiStatusInput = DropiCountryQuerySchema.extend({
41007
40986
  countryCode: DropiCountrySchema.optional().describe("Pa\xEDs de la cuenta (ISO-2). Si se omite, el servidor responde por Colombia (CO)."),
41008
- connectionId: z156.string().uuid().optional().describe("Una cuenta concreta cuando el pa\xEDs tiene varias. Sale de la lista de conexiones; nunca se inventa.")
40987
+ connectionId: z156.string().guid().optional().describe("Una cuenta concreta cuando el pa\xEDs tiene varias. Sale de la lista de conexiones; nunca se inventa.")
41009
40988
  });
41010
40989
  var SyncDropiOrdersInput = SyncDropiFinancialSchema;
41011
- var CreateManualProductInput = CreateManualProductControlSchema.innerType().omit({
40990
+ var CreateManualProductInput = z156.strictObject(CreateManualProductControlSchema.shape).omit({
41012
40991
  requestId: true
41013
40992
  });
41014
40993
  var ListUnmatchedProductsInput = z156.object({
41015
- operationId: z156.string().uuid().optional().describe("El negocio, si tiene mas de uno. Con uno solo no hace falta decirlo.")
40994
+ operationId: z156.string().guid().optional().describe("El negocio, si tiene mas de uno. Con uno solo no hace falta decirlo.")
41016
40995
  }).strict();
41017
40996
  var ResolveUnmatchedProductInput = ResolveUnmatchedProductSchema;
41018
40997
  var ListLinkableCampaignsInput = z156.object({}).strict();
@@ -41023,13 +41002,13 @@ var LinkProductCampaignInput = z156.object({
41023
41002
  ]).describe("La red publicitaria de la campa\xF1a."),
41024
41003
  accountId: z156.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/).describe("La cuenta publicitaria. Sale de list_linkable_campaigns; nunca se inventa."),
41025
41004
  campaignId: z156.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/).describe("La campa\xF1a. Sale de list_linkable_campaigns; nunca se inventa."),
41026
- productControlId: z156.string().uuid().optional().describe("El id del producto en su control financiero."),
41005
+ productControlId: z156.string().guid().optional().describe("El id del producto en su control financiero."),
41027
41006
  shopDomain: z156.string().min(1).optional().describe("La tienda del producto; con shopifyProductId es la otra forma de decir cu\xE1l es."),
41028
41007
  shopifyProductId: z156.string().min(1).optional().describe("El id del producto en su tienda. Va junto a shopDomain.")
41029
41008
  }).strict();
41030
41009
  var DeleteMonthlyExpenseInput = DeleteMonthlyExpenseSchema;
41031
41010
  var RemoveProductControlInput = z156.object({
41032
- productControlId: z156.string().uuid().describe("El id del producto en su control. Sale del listado; nunca se inventa.")
41011
+ productControlId: z156.string().guid().describe("El id del producto en su control. Sale del listado; nunca se inventa.")
41033
41012
  }).strict();
41034
41013
  function manualProductRequestId(input) {
41035
41014
  const digest3 = createHash5("sha256").update(JSON.stringify(input, [
@@ -41523,6 +41502,8 @@ function createServer(opts) {
41523
41502
  },
41524
41503
  logging: {}
41525
41504
  },
41505
+ // Bound structural work before parsing hosted tool arguments; stdio remains local.
41506
+ maxToolInputElements: transport === "http" ? 1e4 : void 0,
41526
41507
  instructions
41527
41508
  });
41528
41509
  const api = new ApiClient(apiBaseUrl, opts.credential, {