@productmaker/mcp 12.4.0 → 12.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/http.js +534 -533
  2. package/dist/stdio.js +534 -533
  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
@@ -6108,7 +6108,8 @@ var LANDING_STRATEGIES = [
6108
6108
  var LandingStrategySchema = z14.enum(LANDING_STRATEGIES);
6109
6109
  var SELECTABLE_LANDING_STRATEGIES = [
6110
6110
  "classic",
6111
- "social_proof"
6111
+ "social_proof",
6112
+ "pain_solution"
6112
6113
  ];
6113
6114
  var SelectableLandingStrategySchema = z14.enum(SELECTABLE_LANDING_STRATEGIES);
6114
6115
  var EffectiveLandingStrategySchema = LandingStrategySchema.exclude([
@@ -6256,7 +6257,7 @@ var LandingImageReadable = z15.object({
6256
6257
  */
6257
6258
  index: z15.number().int().min(1).max(20),
6258
6259
  /** Child task that owns this image when variants are rendered alongside the root task. */
6259
- variantTaskId: z15.string().uuid().optional(),
6260
+ variantTaskId: z15.string().guid().optional(),
6260
6261
  /**
6261
6262
  * The image's own `indexNum` within its OWN task (root or variant) — set
6262
6263
  * once at render time and never recomputed. Unlike `index`, this is stable
@@ -6389,6 +6390,13 @@ var CODE_LANDING_USAGE_VARIANTS = [
6389
6390
  "steps"
6390
6391
  ];
6391
6392
  var CodeLandingUsageVariantSchema = z16.enum(CODE_LANDING_USAGE_VARIANTS);
6393
+ var CODE_LANDING_BUY_BOX_FORMATS = [
6394
+ "classic",
6395
+ "benefits",
6396
+ "impact",
6397
+ "pop"
6398
+ ];
6399
+ var CodeLandingBuyBoxFormatSchema = z16.enum(CODE_LANDING_BUY_BOX_FORMATS);
6392
6400
  var CodeLandingRecipeVariantsSchema = z16.object({
6393
6401
  hero: CodeLandingHeroVariantSchema,
6394
6402
  "benefits-grid": CodeLandingBenefitsVariantSchema,
@@ -6429,7 +6437,8 @@ var CodeLandingRecipePlanFields = {
6429
6437
  var CodeLandingRecipeProposalSchema = z16.object(CodeLandingRecipePlanFields).strict();
6430
6438
  var CodeLandingRecipePlanObjectSchema = z16.object({
6431
6439
  version: z16.literal(1),
6432
- ...CodeLandingRecipePlanFields
6440
+ ...CodeLandingRecipePlanFields,
6441
+ buyBoxFormat: CodeLandingBuyBoxFormatSchema.optional()
6433
6442
  }).strict();
6434
6443
  function hasDuplicateIds(ids) {
6435
6444
  return new Set(ids).size !== ids.length;
@@ -6459,7 +6468,7 @@ var JsonValueSchema = z16.lazy(() => z16.union([
6459
6468
  z16.boolean(),
6460
6469
  z16.null(),
6461
6470
  z16.array(JsonValueSchema),
6462
- z16.custom(isPlainJsonRecord, "content objects must be plain JSON records").pipe(z16.record(JsonValueSchema))
6471
+ z16.custom(isPlainJsonRecord, "content objects must be plain JSON records").pipe(z16.record(z16.string(), JsonValueSchema))
6463
6472
  ]));
6464
6473
  var CodeLandingRecipeSelectionSchema = z16.object({
6465
6474
  blockId: z16.string().trim().min(1),
@@ -6918,7 +6927,7 @@ var PresignUploadResponse = z19.object({
6918
6927
  /** Present only for purpose=service. */
6919
6928
  assetToken: z19.string().min(1).optional(),
6920
6929
  /** Present only for purpose=meta_staging. */
6921
- stagingAssetId: z19.string().uuid().optional()
6930
+ stagingAssetId: z19.string().guid().optional()
6922
6931
  });
6923
6932
  var MetaUploadMediaKind = z19.enum([
6924
6933
  "image",
@@ -6928,7 +6937,7 @@ var MetaUploadMediaKind = z19.enum([
6928
6937
  var META_UPLOAD_MAX_FILES = CAMPAIGN_LIMITS.MAX_CREATIVES;
6929
6938
  var META_UPLOAD_IMAGE_MAX_FILES = 5;
6930
6939
  var MetaUploadAssetSummary = z19.object({
6931
- stagingAssetId: z19.string().uuid(),
6940
+ stagingAssetId: z19.string().guid(),
6932
6941
  mediaKind: MediaKind
6933
6942
  }).strict();
6934
6943
  var MetaCampaignType = z19.enum([
@@ -6936,7 +6945,7 @@ var MetaCampaignType = z19.enum([
6936
6945
  "traffic",
6937
6946
  "engagement"
6938
6947
  ]);
6939
- var MetaPublishAttemptId = z19.string().uuid();
6948
+ var MetaPublishAttemptId = z19.string().guid();
6940
6949
  var MetaOptimizationMode = z19.enum([
6941
6950
  "advantage_plus",
6942
6951
  "manual"
@@ -7009,14 +7018,14 @@ var ResolveMetaUploadSessionRequest = z19.object({
7009
7018
  /** Opaque signed token embedded in the one-click upload page URL. */
7010
7019
  token: z19.string().min(1).max(4096),
7011
7020
  /** Stable browser-generated id so failed PUT retries reuse the same slot. */
7012
- uploadId: z19.string().uuid().optional(),
7021
+ uploadId: z19.string().guid().optional(),
7013
7022
  /** Browser-selected metadata; the API checks it against the session kind/role. */
7014
7023
  contentType: z19.enum(META_STAGING_CONTENT_TYPES),
7015
7024
  fileName: z19.string().min(1).max(255),
7016
7025
  fileSize: z19.number().int().positive().max(CAMPAIGN_LIMITS.MAX_FILE_SIZE_BYTES)
7017
7026
  }).strict();
7018
7027
  var MetaUploadSessionResponse = z19.object({
7019
- sessionId: z19.string().uuid(),
7028
+ sessionId: z19.string().guid(),
7020
7029
  uploadPageUrl: HttpUrl,
7021
7030
  mediaKind: MetaUploadMediaKind,
7022
7031
  assetRole: z19.enum([
@@ -7028,18 +7037,18 @@ var MetaUploadSessionResponse = z19.object({
7028
7037
  }).strict();
7029
7038
  var ResolveMetaUploadSessionResponse = z19.object({
7030
7039
  uploadUrl: z19.string().url(),
7031
- stagingAssetId: z19.string().uuid(),
7040
+ stagingAssetId: z19.string().guid(),
7032
7041
  expiresAt: z19.string().datetime()
7033
7042
  }).strict();
7034
7043
  var MetaUploadSessionStatusResponse = z19.object({
7035
- sessionId: z19.string().uuid(),
7044
+ sessionId: z19.string().guid(),
7036
7045
  status: z19.enum([
7037
7046
  "pending",
7038
7047
  "uploaded"
7039
7048
  ]),
7040
7049
  assets: z19.array(MetaUploadAssetSummary).max(META_UPLOAD_MAX_FILES),
7041
7050
  /** Legacy single-file response field retained for older callers. */
7042
- stagingAssetId: z19.string().uuid().optional()
7051
+ stagingAssetId: z19.string().guid().optional()
7043
7052
  }).strict();
7044
7053
  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), {
7045
7054
  message: 'adAccountId must look like "act_1234567890" (a bare numeric id is also accepted)'
@@ -7119,6 +7128,33 @@ var MetaCampaignDefaults = MetaCampaignConfigBase.omit({
7119
7128
  */
7120
7129
  currency: z19.string().length(3).regex(/^[A-Z]{3}$/).nullable().optional()
7121
7130
  });
7131
+ function refineMetaCreativeSources(value, ctx) {
7132
+ value.creatives.forEach((creative, index) => {
7133
+ if (Boolean(creative.mediaUrl) === Boolean(creative.mediaAssetId)) {
7134
+ ctx.addIssue({
7135
+ code: z19.ZodIssueCode.custom,
7136
+ path: [
7137
+ "creatives",
7138
+ index,
7139
+ "mediaUrl"
7140
+ ],
7141
+ message: "Provide exactly one of mediaUrl or mediaAssetId"
7142
+ });
7143
+ }
7144
+ if (creative.thumbnailUrl && creative.thumbnailAssetId) {
7145
+ ctx.addIssue({
7146
+ code: z19.ZodIssueCode.custom,
7147
+ path: [
7148
+ "creatives",
7149
+ index,
7150
+ "thumbnailUrl"
7151
+ ],
7152
+ message: "Provide at most one of thumbnailUrl or thumbnailAssetId"
7153
+ });
7154
+ }
7155
+ });
7156
+ }
7157
+ __name(refineMetaCreativeSources, "refineMetaCreativeSources");
7122
7158
  var UploadToMetaRequest = z19.object({
7123
7159
  /** Caller-owned retry fence. Required before any provider operation. */
7124
7160
  publishAttemptId: MetaPublishAttemptId,
@@ -7132,7 +7168,7 @@ var UploadToMetaRequest = z19.object({
7132
7168
  /** Legacy public URL; new Meta flows should use mediaAssetId. */
7133
7169
  mediaUrl: HttpUrl.optional(),
7134
7170
  /** Owner-scoped temporary asset created by the Meta staging upload flow. */
7135
- mediaAssetId: z19.string().uuid().optional(),
7171
+ mediaAssetId: z19.string().guid().optional(),
7136
7172
  /**
7137
7173
  * Public URL of an extracted thumbnail. Required for video ads — Meta
7138
7174
  * rejects video ad creatives without `image_hash`/`image_url` in
@@ -7141,7 +7177,7 @@ var UploadToMetaRequest = z19.object({
7141
7177
  */
7142
7178
  thumbnailUrl: HttpUrl.optional(),
7143
7179
  /** Owner-scoped temporary thumbnail created by the Meta staging upload flow. */
7144
- thumbnailAssetId: z19.string().uuid().optional()
7180
+ thumbnailAssetId: z19.string().guid().optional()
7145
7181
  })).min(1).max(CAMPAIGN_LIMITS.MAX_CREATIVES),
7146
7182
  /** Meta Ad Account ID */
7147
7183
  adAccountId: MetaAdAccountId,
@@ -7168,30 +7204,7 @@ var UploadToMetaRequest = z19.object({
7168
7204
  message: "landingUrl is required for landing destinations"
7169
7205
  });
7170
7206
  }
7171
- value.creatives.forEach((creative, index) => {
7172
- if (Boolean(creative.mediaUrl) === Boolean(creative.mediaAssetId)) {
7173
- ctx.addIssue({
7174
- code: z19.ZodIssueCode.custom,
7175
- path: [
7176
- "creatives",
7177
- index,
7178
- "mediaUrl"
7179
- ],
7180
- message: "Provide exactly one of mediaUrl or mediaAssetId"
7181
- });
7182
- }
7183
- if (creative.thumbnailUrl && creative.thumbnailAssetId) {
7184
- ctx.addIssue({
7185
- code: z19.ZodIssueCode.custom,
7186
- path: [
7187
- "creatives",
7188
- index,
7189
- "thumbnailUrl"
7190
- ],
7191
- message: "Provide at most one of thumbnailUrl or thumbnailAssetId"
7192
- });
7193
- }
7194
- });
7207
+ refineMetaCreativeSources(value, ctx);
7195
7208
  });
7196
7209
  var CampaignLifetimeMetricsSchema = z19.object({
7197
7210
  spend: z19.number().nonnegative(),
@@ -7229,13 +7242,13 @@ var Revision = z20.number().finite().int().nonnegative();
7229
7242
  var ClassicLandingBlockSchema = z20.discriminatedUnion("kind", [
7230
7243
  z20.object({
7231
7244
  kind: z20.literal("image"),
7232
- ownerTaskId: z20.string().uuid(),
7245
+ ownerTaskId: z20.string().guid(),
7233
7246
  sourceIndex: z20.number().int().positive()
7234
7247
  }).strict(),
7235
7248
  z20.object({
7236
7249
  kind: z20.literal("gif"),
7237
- ownerTaskId: z20.string().uuid(),
7238
- gifId: z20.string().uuid()
7250
+ ownerTaskId: z20.string().guid(),
7251
+ gifId: z20.string().guid()
7239
7252
  }).strict()
7240
7253
  ]);
7241
7254
  function classicLandingBlockId(block) {
@@ -7258,17 +7271,17 @@ var Blocks = z20.array(ClassicLandingBlockSchema).max(100).superRefine((blocks,
7258
7271
  });
7259
7272
  var ClassicLandingDocumentSchema = z20.object({
7260
7273
  version: z20.literal(1),
7261
- ownerTaskId: z20.string().uuid(),
7274
+ ownerTaskId: z20.string().guid(),
7262
7275
  revision: Revision,
7263
7276
  blocks: Blocks
7264
7277
  }).strict();
7265
7278
  var LandingGifBlockSelectionSchema = z20.object({
7266
- ownerTaskId: z20.string().uuid(),
7267
- gifId: z20.string().uuid(),
7279
+ ownerTaskId: z20.string().guid(),
7280
+ gifId: z20.string().guid(),
7268
7281
  gifRevision: Revision
7269
7282
  }).strict();
7270
7283
  var ClassicLandingImageSelectionSchema = z20.object({
7271
- ownerTaskId: z20.string().uuid(),
7284
+ ownerTaskId: z20.string().guid(),
7272
7285
  sourceIndex: z20.number().int().positive(),
7273
7286
  variantIndex: z20.number().int().nonnegative()
7274
7287
  }).strict();
@@ -7319,7 +7332,7 @@ var ClassicLandingBlockMutationSchema = z20.object({
7319
7332
  blocks: Blocks
7320
7333
  }).strict();
7321
7334
  var LandingGifVisibilityMutationSchema = z20.object({
7322
- gifId: z20.string().uuid(),
7335
+ gifId: z20.string().guid(),
7323
7336
  expectedGifRevision: Revision,
7324
7337
  expectedDocumentRevision: Revision,
7325
7338
  action: z20.enum([
@@ -8105,7 +8118,7 @@ var CodeLandingProvenanceSchema = z23.object({
8105
8118
  editorGifOwnership: z23.object({
8106
8119
  version: z23.literal(1),
8107
8120
  source: z23.object({
8108
- ownerTaskId: z23.string().uuid(),
8121
+ ownerTaskId: z23.string().guid(),
8109
8122
  gifRevision: z23.number().int().nonnegative(),
8110
8123
  contentHash: z23.string().regex(/^[a-f0-9]{64}$/),
8111
8124
  posterHash: z23.string().regex(/^[a-f0-9]{64}$/)
@@ -8113,7 +8126,7 @@ var CodeLandingProvenanceSchema = z23.object({
8113
8126
  }).strict().optional(),
8114
8127
  mode: LandingDocumentModeSchema,
8115
8128
  strategyVersion: z23.string().min(1).max(60),
8116
- sourceTaskId: z23.string().uuid().optional(),
8129
+ sourceTaskId: z23.string().guid().optional(),
8117
8130
  winnerSourceUrl: CodeLandingUrlSchema.optional(),
8118
8131
  notes: z23.array(z23.string().max(240)).max(16),
8119
8132
  /**
@@ -8545,8 +8558,8 @@ var QuotedLandingEditRequest = z23.object({
8545
8558
  "full"
8546
8559
  ]),
8547
8560
  attachmentIds: z23.array(CodeLandingIdSchema).max(4).default([]),
8548
- quoteId: z23.string().uuid(),
8549
- idempotencyKey: z23.string().uuid()
8561
+ quoteId: z23.string().guid(),
8562
+ idempotencyKey: z23.string().guid()
8550
8563
  });
8551
8564
  var CreateLandingEditRequest = z23.union([
8552
8565
  QuotedLandingEditRequest,
@@ -8626,7 +8639,7 @@ var LandingEditDto = z23.object({
8626
8639
  costCents: z23.number(),
8627
8640
  error: z23.string().nullable(),
8628
8641
  createdAt: z23.string(),
8629
- operationId: z23.string().uuid().nullable().optional(),
8642
+ operationId: z23.string().guid().nullable().optional(),
8630
8643
  expectedRevision: z23.number().int().nonnegative().optional(),
8631
8644
  appliedRevision: z23.number().int().positive().nullable().optional(),
8632
8645
  refundStatus: z23.enum([
@@ -8641,14 +8654,24 @@ var LandingEditDto = z23.object({
8641
8654
  commerceReconciliation: CommerceReconciliationSchema.nullable().optional(),
8642
8655
  delivery: z23.lazy(() => LandingEditDeliverySchema).optional(),
8643
8656
  /** Photos the seller attached to this message (see LandingEditAttachmentDto). */
8644
- attachmentIds: z23.array(z23.string().uuid()).max(4).optional()
8657
+ attachmentIds: z23.array(z23.string().guid()).max(4).optional()
8645
8658
  });
8646
8659
  var LandingEditAttachmentDto = z23.object({
8647
- id: z23.string().uuid(),
8660
+ id: z23.string().guid(),
8648
8661
  url: z23.string().url(),
8649
8662
  width: z23.number().int().positive().nullable(),
8650
8663
  height: z23.number().int().positive().nullable()
8651
8664
  });
8665
+ var ApplyLandingCarouselGifRequest = z23.object({
8666
+ attachmentId: z23.string().uuid(),
8667
+ expectedRevision: z23.number().int().nonnegative(),
8668
+ idempotencyKey: z23.string().uuid()
8669
+ }).strict();
8670
+ var ApplyLandingCarouselGifResponse = z23.object({
8671
+ artifact: CodeLandingArtifactSchema,
8672
+ appliedRevision: z23.number().int().positive(),
8673
+ replayed: z23.boolean()
8674
+ });
8652
8675
  var UploadLandingEditAttachmentResponse = z23.object({
8653
8676
  attachment: LandingEditAttachmentDto
8654
8677
  });
@@ -8670,12 +8693,12 @@ var LandingEditQuoteRequest = z23.object({
8670
8693
  attachmentIds: z23.array(CodeLandingIdSchema).max(4).default([])
8671
8694
  });
8672
8695
  var LandingEditSubmitRequest = LandingEditQuoteRequest.extend({
8673
- quoteId: z23.string().uuid(),
8674
- idempotencyKey: z23.string().uuid()
8696
+ quoteId: z23.string().guid(),
8697
+ idempotencyKey: z23.string().guid()
8675
8698
  });
8676
8699
  var LandingOperationQuoteDto = z23.object({
8677
8700
  editPlanSummary: z23.lazy(() => LandingEditPlanSummarySchema).optional(),
8678
- id: z23.string().uuid(),
8701
+ id: z23.string().guid(),
8679
8702
  kind: z23.enum([
8680
8703
  "edit_patch",
8681
8704
  "edit_full",
@@ -8697,7 +8720,7 @@ var LandingRevisionHistoryItemDto = z23.object({
8697
8720
  parentRevision: z23.number().int().positive().nullable(),
8698
8721
  source: z23.string().min(1),
8699
8722
  summary: z23.string().nullable(),
8700
- editId: z23.string().uuid().nullable(),
8723
+ editId: z23.string().guid().nullable(),
8701
8724
  createdAt: z23.string().datetime(),
8702
8725
  isActive: z23.boolean(),
8703
8726
  isRedoTarget: z23.boolean(),
@@ -8743,7 +8766,7 @@ var LandingGifSourceSchema = z24.discriminatedUnion("kind", [
8743
8766
  z24.object({
8744
8767
  kind: z24.literal("generated"),
8745
8768
  referenceSelectionRevision: Revision2,
8746
- referenceImageAssetId: z24.string().uuid().optional(),
8769
+ referenceImageAssetId: z24.string().guid().optional(),
8747
8770
  motionBrief: z24.string().trim().min(1).max(1500)
8748
8771
  }).strict()
8749
8772
  ]);
@@ -8768,7 +8791,7 @@ var ReuseIdentity = z24.object({
8768
8791
  byteSize: z24.number().finite().int().positive().max(50 * 1024 * 1024),
8769
8792
  contentHash: Hash,
8770
8793
  provenance: z24.object({
8771
- taskId: z24.string().uuid(),
8794
+ taskId: z24.string().guid(),
8772
8795
  scanId: z24.string().min(1).max(200).optional(),
8773
8796
  sourceUrl: z24.string().url().max(4096).optional(),
8774
8797
  externalAdId: z24.string().min(1).max(200).optional()
@@ -8798,7 +8821,7 @@ var LandingGifReuseCandidateSchema = z24.discriminatedUnion("kind", [
8798
8821
  var GeneratedResolvedSourceSchema = z24.object({
8799
8822
  kind: z24.literal("generated"),
8800
8823
  referenceSelectionRevision: Revision2,
8801
- referenceImageAssetId: z24.string().uuid().optional(),
8824
+ referenceImageAssetId: z24.string().guid().optional(),
8802
8825
  referenceKeys: z24.array(StorageKey).min(1).max(4),
8803
8826
  identityReferenceKeys: z24.array(StorageKey).min(1).max(4).optional(),
8804
8827
  identityReferenceFingerprint: Hash.optional(),
@@ -8820,7 +8843,7 @@ var AutomaticResolvedSourceSchema = GeneratedResolvedSourceSchema.omit({
8820
8843
  referenceImageAssetId: true
8821
8844
  }).extend({
8822
8845
  kind: z24.literal("automatic"),
8823
- ownerTaskId: z24.string().uuid(),
8846
+ ownerTaskId: z24.string().guid(),
8824
8847
  productName: z24.string().min(1).max(500),
8825
8848
  productTruth: JsonValueSchema.optional(),
8826
8849
  useSheet: JsonValueSchema.optional(),
@@ -8884,7 +8907,7 @@ var LandingGifPlacementSchema = z24.discriminatedUnion("kind", [
8884
8907
  }).strict(),
8885
8908
  z24.object({
8886
8909
  kind: z24.literal("classic"),
8887
- ownerTaskId: z24.string().uuid(),
8910
+ ownerTaskId: z24.string().guid(),
8888
8911
  afterSourceIndex: z24.number().finite().int().min(1)
8889
8912
  }).strict(),
8890
8913
  z24.object({
@@ -8899,7 +8922,7 @@ var LandingGifCreateRequestSchema = z24.object({
8899
8922
  placement: LandingGifPlacementSchema,
8900
8923
  expectedLandingRevision: Revision2,
8901
8924
  expectedGifRevision: Revision2,
8902
- gifId: z24.string().uuid().optional(),
8925
+ gifId: z24.string().guid().optional(),
8903
8926
  expectedDocumentRevision: Revision2.optional()
8904
8927
  }).strict().superRefine((request, ctx) => {
8905
8928
  if (request.gifId === void 0 !== (request.expectedDocumentRevision === void 0)) {
@@ -8939,7 +8962,7 @@ var LandingGifCreateRequestSchema = z24.object({
8939
8962
  });
8940
8963
  var LandingGifSubmitRequestSchema = z24.object({
8941
8964
  request: LandingGifCreateRequestSchema,
8942
- quoteId: z24.string().uuid(),
8965
+ quoteId: z24.string().guid(),
8943
8966
  idempotencyKey: z24.string().trim().min(1).max(200)
8944
8967
  }).strict();
8945
8968
  var LandingGifRemoveRequestSchema = z24.object({
@@ -8975,17 +8998,17 @@ var LandingGifStoredDescriptorSchema = GifTechnicalMetadataSchema.extend({
8975
8998
  quality: LandingGifQualitySchema
8976
8999
  }).strict();
8977
9000
  var LandingGifReadableSchema = LandingGifStoredDescriptorSchema.extend({
8978
- ownerTaskId: z24.string().uuid(),
9001
+ ownerTaskId: z24.string().guid(),
8979
9002
  gifRevision: Revision2,
8980
9003
  gifUrl: z24.string().url(),
8981
9004
  posterUrl: z24.string().url()
8982
9005
  }).strict();
8983
9006
  var LandingGifSelectionSchema = z24.object({
8984
- ownerTaskId: z24.string().uuid(),
9007
+ ownerTaskId: z24.string().guid(),
8985
9008
  gifRevision: Revision2
8986
9009
  }).strict();
8987
9010
  var LandingGifOperationStatusSchema = z24.object({
8988
- operationId: z24.string().uuid(),
9011
+ operationId: z24.string().guid(),
8989
9012
  status: z24.enum([
8990
9013
  "reserved",
8991
9014
  "queued",
@@ -9007,13 +9030,13 @@ var LandingGifOperationStatusSchema = z24.object({
9007
9030
  reservedUserCents: z24.number().finite().int().nonnegative()
9008
9031
  }).strict();
9009
9032
  var LandingGifUseProposalSchema = z24.object({
9010
- id: z24.string().uuid(),
9011
- gifId: z24.string().uuid(),
9033
+ id: z24.string().guid(),
9034
+ gifId: z24.string().guid(),
9012
9035
  idea: z24.string().trim().min(1).max(300),
9013
9036
  motionBrief: z24.string().trim().min(1).max(1500),
9014
9037
  productFingerprint: Hash,
9015
9038
  referenceFingerprint: Hash.nullable(),
9016
- referenceImageAssetId: z24.string().uuid().optional(),
9039
+ referenceImageAssetId: z24.string().guid().optional(),
9017
9040
  referenceImageAssetKey: StorageKey.optional(),
9018
9041
  referenceImageUrl: z24.string().url().optional(),
9019
9042
  identityReferenceKeys: z24.array(StorageKey).min(1).max(4).optional(),
@@ -9034,8 +9057,8 @@ var LandingGifStateSchema = z24.enum([
9034
9057
  "removed"
9035
9058
  ]);
9036
9059
  var LandingGifItemSchema = z24.object({
9037
- gifId: z24.string().uuid(),
9038
- ownerTaskId: z24.string().uuid(),
9060
+ gifId: z24.string().guid(),
9061
+ ownerTaskId: z24.string().guid(),
9039
9062
  gifRevision: Revision2,
9040
9063
  state: LandingGifStateSchema,
9041
9064
  /** Server-derived compatibility for an already delivered singular primary. */
@@ -9075,8 +9098,8 @@ function isDeliverableLandingGif(item) {
9075
9098
  }
9076
9099
  __name(isDeliverableLandingGif, "isDeliverableLandingGif");
9077
9100
  var InitialLandingGifStatusSchema = z24.object({
9078
- intentId: z24.string().uuid(),
9079
- gifId: z24.string().uuid(),
9101
+ intentId: z24.string().guid(),
9102
+ gifId: z24.string().guid(),
9080
9103
  status: z24.enum([
9081
9104
  "funded",
9082
9105
  "awaiting_usage",
@@ -9092,7 +9115,7 @@ var InitialLandingGifStatusSchema = z24.object({
9092
9115
  refundStatus: LandingGifOperationStatusSchema.shape.refundStatus
9093
9116
  }).strict();
9094
9117
  var LandingGifCollectionResponseSchema = z24.object({
9095
- ownerTaskId: z24.string().uuid(),
9118
+ ownerTaskId: z24.string().guid(),
9096
9119
  landingRevision: Revision2,
9097
9120
  document: ClassicLandingDocumentSchema,
9098
9121
  gifs: z24.array(LandingGifItemSchema).max(100),
@@ -9106,15 +9129,15 @@ var LandingGifCollectionResponseSchema = z24.object({
9106
9129
  }
9107
9130
  });
9108
9131
  var LandingGifTargetSchema = z24.object({
9109
- gifId: z24.string().uuid(),
9132
+ gifId: z24.string().guid(),
9110
9133
  expectedGifRevision: Revision2
9111
9134
  }).strict();
9112
9135
  var LandingGifProposalRequestSchema = z24.object({
9113
- gifId: z24.string().uuid().optional(),
9136
+ gifId: z24.string().guid().optional(),
9114
9137
  expectedDocumentRevision: Revision2,
9115
9138
  afterBlockId: z24.string().min(1).max(300).optional(),
9116
9139
  merchantIdea: z24.string().trim().min(8).max(300).optional(),
9117
- referenceImageAssetId: z24.string().uuid().nullable().optional()
9140
+ referenceImageAssetId: z24.string().guid().nullable().optional()
9118
9141
  }).strict();
9119
9142
  var LandingGifQuoteResponseSchema = z24.object({
9120
9143
  quote: LandingOperationQuoteDto.extend({
@@ -9125,7 +9148,7 @@ var LandingGifCreateResponseSchema = z24.object({
9125
9148
  operation: LandingGifOperationStatusSchema
9126
9149
  }).strict();
9127
9150
  var LandingGifStatusResponseSchema = z24.object({
9128
- ownerTaskId: z24.string().uuid(),
9151
+ ownerTaskId: z24.string().guid(),
9129
9152
  landingRevision: Revision2,
9130
9153
  gifRevision: Revision2,
9131
9154
  demoGif: LandingGifReadableSchema.nullable(),
@@ -9163,9 +9186,9 @@ var LandingGifPresentationResponseSchema = z24.object({
9163
9186
  }).strict();
9164
9187
  var LandingGifCompletionReceiptBase = z24.object({
9165
9188
  version: z24.literal(1),
9166
- operationId: z24.string().uuid(),
9167
- taskId: z24.string().uuid(),
9168
- stepId: z24.string().uuid(),
9189
+ operationId: z24.string().guid(),
9190
+ taskId: z24.string().guid(),
9191
+ stepId: z24.string().guid(),
9169
9192
  stepEpoch: Revision2,
9170
9193
  acceptedGifRevision: z24.number().finite().int().positive(),
9171
9194
  gifAssetKey: z24.string().min(1),
@@ -9177,7 +9200,7 @@ var LandingGifCompletionReceiptSchema = z24.discriminatedUnion("version", [
9177
9200
  LandingGifCompletionReceiptBase,
9178
9201
  LandingGifCompletionReceiptBase.extend({
9179
9202
  version: z24.literal(2),
9180
- gifId: z24.string().uuid(),
9203
+ gifId: z24.string().guid(),
9181
9204
  disposition: z24.enum([
9182
9205
  "activated",
9183
9206
  "retained"
@@ -9478,7 +9501,7 @@ var VideoCreativeContext = z27.object({
9478
9501
  productTitle: z27.string(),
9479
9502
  primaryAngle: z27.string(),
9480
9503
  buyerPersona: z27.string().optional(),
9481
- brandId: z27.string().uuid().optional(),
9504
+ brandId: z27.string().guid().optional(),
9482
9505
  features: z27.array(z27.string()).default([]),
9483
9506
  scriptNotes: z27.string().optional(),
9484
9507
  cta: z27.string().optional(),
@@ -9637,19 +9660,19 @@ var ImageCreativeJobStatusEnum = z27.enum([
9637
9660
  "error"
9638
9661
  ]);
9639
9662
  var ImageCreativeJobStatus = z27.object({
9640
- jobId: z27.string().uuid(),
9663
+ jobId: z27.string().guid(),
9641
9664
  status: ImageCreativeJobStatusEnum,
9642
9665
  error: z27.string().optional(),
9643
9666
  result: ImageCreativeResult.nullable().optional(),
9644
9667
  request: ImageCreativeEditableRequest.optional()
9645
9668
  });
9646
9669
  var ImageCreativeJobPayload = z27.object({
9647
- jobId: z27.string().uuid(),
9670
+ jobId: z27.string().guid(),
9648
9671
  status: ImageCreativeJobStatusEnum,
9649
9672
  replayed: z27.boolean().optional()
9650
9673
  });
9651
9674
  var ImageCreativeHistoryEntry = z27.object({
9652
- id: z27.string().uuid(),
9675
+ id: z27.string().guid(),
9653
9676
  createdAt: z27.string().datetime(),
9654
9677
  status: ImageCreativeJobStatusEnum,
9655
9678
  result: ImageCreativeResult.nullable(),
@@ -9669,27 +9692,27 @@ var LandingCreativeResult = z27.object({
9669
9692
  createdAt: z27.string().datetime().optional()
9670
9693
  });
9671
9694
  var LandingCreativeJobStatus = z27.object({
9672
- jobId: z27.string().uuid(),
9695
+ jobId: z27.string().guid(),
9673
9696
  status: LandingCreativeJobStatusEnum,
9674
9697
  error: z27.string().optional(),
9675
9698
  result: LandingCreativeResult.nullable().optional()
9676
9699
  });
9677
9700
  var LandingCreativeJobPayload = z27.object({
9678
- jobId: z27.string().uuid(),
9701
+ jobId: z27.string().guid(),
9679
9702
  status: LandingCreativeJobStatusEnum,
9680
9703
  replayed: z27.boolean().optional()
9681
9704
  });
9682
9705
  var LandingCreativeHistoryEntry = z27.object({
9683
- id: z27.string().uuid(),
9706
+ id: z27.string().guid(),
9684
9707
  createdAt: z27.string().datetime(),
9685
9708
  status: LandingCreativeJobStatusEnum,
9686
9709
  result: LandingCreativeResult.nullable(),
9687
9710
  error: z27.string().optional()
9688
9711
  });
9689
9712
  var CreativeGeneratorJob = z27.object({
9690
- taskId: z27.string().uuid(),
9713
+ taskId: z27.string().guid(),
9691
9714
  /** Immutable approved product-reference snapshot consumed by the worker. */
9692
- referenceVersionId: z27.string().uuid().optional(),
9715
+ referenceVersionId: z27.string().guid().optional(),
9693
9716
  cleanImagesWaitAttempt: z27.number().int().nonnegative().optional()
9694
9717
  });
9695
9718
  var ImageCreativeEditStatus = z27.enum([
@@ -9705,8 +9728,8 @@ var ImageCreativeRegenerateRequest = z27.object({
9705
9728
  });
9706
9729
  var ImageCreativeEditStatusResponse = z27.object({
9707
9730
  ok: z27.literal(true),
9708
- operationId: z27.string().uuid(),
9709
- taskId: z27.string().uuid(),
9731
+ operationId: z27.string().guid(),
9732
+ taskId: z27.string().guid(),
9710
9733
  variantIndex: z27.number().int().nonnegative(),
9711
9734
  status: ImageCreativeEditStatus,
9712
9735
  assetKey: z27.string().optional(),
@@ -9847,20 +9870,20 @@ var CreativeGenderPin = z33.enum([
9847
9870
  var CreativeDirectionSchema = z33.string().transform((value) => value.trim()).pipe(z33.string().max(CREATIVE_DIRECTION_MAX_CHARS));
9848
9871
  var IngestOptions = z33.object({
9849
9872
  /** Optional owner-scoped guided journey context. Never bypasses ingest gates. */
9850
- dropshippingProjectId: z33.string().uuid().optional(),
9851
- languageCode: LanguageCodeSchema.default("es-CO"),
9852
- ugcFormat: VideoFormat.default("single_15s"),
9873
+ dropshippingProjectId: z33.string().guid().optional(),
9874
+ languageCode: LanguageCodeSchema.default("es-CO").nonoptional(),
9875
+ ugcFormat: VideoFormat.default("single_15s").nonoptional(),
9853
9876
  country: CountrySchema,
9854
9877
  price: PriceSchema,
9855
9878
  offer: OfferSchema,
9856
9879
  compareAtPrice: CompareAtPriceSchema,
9857
9880
  pricingInput: SellerPricingInputSchema.optional(),
9858
9881
  paymentMethods: PaymentMethodsSchema,
9859
- videoStyle: VideoStyle.default("ugc"),
9882
+ videoStyle: VideoStyle.default("ugc").nonoptional(),
9860
9883
  /** Canonical public route axes; legacy provider fields remain compatibility aliases. */
9861
9884
  videoStructure: VideoStructure.optional(),
9862
9885
  videoQuality: VideoQuality.optional(),
9863
- videoModel: VideoModel.default("veo"),
9886
+ videoModel: VideoModel.default("veo").nonoptional(),
9864
9887
  /**
9865
9888
  * An explicit registry model id for Free mode (Defect 1, follow-up to the
9866
9889
  * model-agnostic video plan). Validated against `activeVideoModels()` in
@@ -9875,15 +9898,15 @@ var IngestOptions = z33.object({
9875
9898
  ]).optional(),
9876
9899
  rawPrompt: FreeVideoOptionsSchema.shape.rawPrompt.optional(),
9877
9900
  durationSeconds: FreeVideoOptionsSchema.shape.durationSeconds.optional(),
9878
- addSubtitles: FreeVideoOptionsSchema.shape.addSubtitles.optional(),
9901
+ addSubtitles: FreeVideoOptionsSchema.shape.addSubtitles.nonoptional().optional(),
9879
9902
  subtitleText: z33.string().transform((value) => value.trim()).pipe(z33.string().max(FREE_VIDEO_SUBTITLE_MAX_CHARS)).optional(),
9880
- videoTier: WritableVideoTier.default(DEFAULT_VIDEO_TIER),
9881
- narrativeStyle: NarrativeStyle.default("review"),
9903
+ videoTier: WritableVideoTier.default(WritableVideoTier.parse(DEFAULT_VIDEO_TIER)).nonoptional(),
9904
+ narrativeStyle: NarrativeStyle.default("review").nonoptional(),
9882
9905
  videoPreset: VideoPreset.optional(),
9883
9906
  /** Orthogonal visual style for animated narratives only. The API rejects it
9884
9907
  * on non-animated presets; absent → the pipeline resolves 'pixar_3d'. */
9885
9908
  animationStyle: AnimationStyleSchema.optional(),
9886
- multiAngleVideos: z33.boolean().default(false),
9909
+ multiAngleVideos: z33.boolean().default(false).nonoptional(),
9887
9910
  videoAngleCount: z33.number().int().min(1).max(3).optional(),
9888
9911
  /** Per-angle narrative override (positional). angleNarratives[i] forces the
9889
9912
  * narrative of angle position i, overriding the batch auto-selector; a list
@@ -9895,7 +9918,7 @@ var IngestOptions = z33.object({
9895
9918
  // quality levels; an explicit 720p pick wins. Callers that omit the field
9896
9919
  // use the same 480p compatibility fallback in resolveSingleCallAwareResolution.
9897
9920
  videoResolution: VideoResolution.optional(),
9898
- generateAdCopy: z33.boolean().default(true),
9921
+ generateAdCopy: z33.boolean().default(true).nonoptional(),
9899
9922
  generateAiMusic: z33.boolean().optional(),
9900
9923
  /** «Edición con IA» opt-in; a music request aliases to it. */
9901
9924
  generateAiEdit: AiEditRequestSchema.optional(),
@@ -9906,7 +9929,7 @@ var IngestOptions = z33.object({
9906
9929
  * the multipart path on 2026-09-01, so an unbounded opaque string was newly persistable
9907
9930
  * per task. Length only, never `.uuid()` — Actor.id is a CUID. */
9908
9931
  actorId: z33.string().min(1).max(120).optional(),
9909
- isCombo: z33.boolean().default(false),
9932
+ isCombo: z33.boolean().default(false).nonoptional(),
9910
9933
  productContext: z33.string().transform(canonicalizeProductContext).pipe(z33.string().max(PRODUCT_CONTEXT_MAX_CHARS)).optional(),
9911
9934
  creativeDirection: CreativeDirectionSchema.optional(),
9912
9935
  /** Exact copy the user pinned. Rendered VERBATIM on the image creatives this task
@@ -9979,8 +10002,8 @@ var IngestOptions = z33.object({
9979
10002
  * chosen videoPreset. Default true preserves the 2026-08-04 decision;
9980
10003
  * only a deliberate `false` suspends replication. See
9981
10004
  * `shouldAskReplicationConsent` for when this is even asked. */
9982
- replicateWinnerWhenFound: z33.boolean().default(true),
9983
- brandId: z33.string().uuid().optional()
10005
+ replicateWinnerWhenFound: z33.boolean().default(true).nonoptional(),
10006
+ brandId: z33.string().guid().optional()
9984
10007
  }).partial().transform(normalizeSellerPricingFields).superRefine((data, ctx) => {
9985
10008
  const message = validatePriceInversion(data.price, data.compareAtPrice);
9986
10009
  if (message) {
@@ -10727,7 +10750,7 @@ var CreativeEngineWinnerContextSchema = z38.object({
10727
10750
  version: z38.literal(1),
10728
10751
  winnerAdId: z38.string().min(1).max(200),
10729
10752
  /** Owned parsed gap blueprint of the selected winner (opaque evidence). */
10730
- gapBlueprint: z38.unknown(),
10753
+ gapBlueprint: z38.unknown().optional(),
10731
10754
  observed: z38.object({
10732
10755
  scenes: z38.array(CreativeEngineWinnerObservedSceneSchema).max(40),
10733
10756
  /**
@@ -11487,6 +11510,13 @@ var CreativeEngineRepairAuthorContractRetrySchema = z38.object({
11487
11510
  requestedAtMs: z38.number().int().nonnegative(),
11488
11511
  token: id2
11489
11512
  }).strict();
11513
+ var CreativeEngineReplanAuthorContractRetrySchema = z38.object({
11514
+ failedOperationId: id2,
11515
+ planHash: hash,
11516
+ context: CreativeEngineContextBindingSchema,
11517
+ requestedAtMs: z38.number().int().nonnegative(),
11518
+ token: id2
11519
+ }).strict();
11490
11520
  var CreativeEngineCompositionRepairSchema = z38.object({
11491
11521
  reviewId: id2,
11492
11522
  outputHash: hash,
@@ -11620,6 +11650,7 @@ var CreativeEngineStateSchema = z38.object({
11620
11650
  token: id2
11621
11651
  }).strict().optional(),
11622
11652
  repairAuthorContractRetry: CreativeEngineRepairAuthorContractRetrySchema.optional(),
11653
+ replanAuthorContractRetry: CreativeEngineReplanAuthorContractRetrySchema.optional(),
11623
11654
  final: CreativeEngineFinalSchema.optional()
11624
11655
  }).strict().superRefine((state, ctx) => {
11625
11656
  const repairAuthorContractRetry = state.repairAuthorContractRetry;
@@ -11778,6 +11809,13 @@ var CreativeEngineEventSchema = z38.discriminatedUnion("type", [
11778
11809
  context: CreativeEngineContextBindingSchema,
11779
11810
  token: id2
11780
11811
  }).strict(),
11812
+ z38.object({
11813
+ type: z38.literal("replan_author_contract_retry_requested"),
11814
+ failedOperationId: id2,
11815
+ planHash: hash,
11816
+ context: CreativeEngineContextBindingSchema,
11817
+ token: id2
11818
+ }).strict(),
11781
11819
  z38.object({
11782
11820
  type: z38.literal("repair_author_contract_retry_requested"),
11783
11821
  failedOperationId: id2,
@@ -11898,7 +11936,7 @@ var VideoGenerator = z39.object({
11898
11936
  ctx.addIssue({
11899
11937
  code: z39.ZodIssueCode.too_small,
11900
11938
  minimum: 1,
11901
- type: "string",
11939
+ origin: "string",
11902
11940
  inclusive: true,
11903
11941
  path: [
11904
11942
  "prompt"
@@ -12006,7 +12044,7 @@ var RegenerateVideoScriptNarrativeResponse = z39.object({
12006
12044
  var RegenerateVideoRequest = z39.object({
12007
12045
  angleKey: z39.string().min(1),
12008
12046
  /** Stable new-intent identity for regeneration of an already delivered engine video. */
12009
- clientRequestId: z39.string().uuid().optional()
12047
+ clientRequestId: z39.string().guid().optional()
12010
12048
  }).strict();
12011
12049
  var RegenerateVideoResponse = z39.object({
12012
12050
  ok: z39.literal(true),
@@ -12017,7 +12055,7 @@ var RegenerateVideoResponse = z39.object({
12017
12055
  "single_call"
12018
12056
  ]),
12019
12057
  /** New immutable child, when this command bought a new delivered-video intent. */
12020
- taskId: z39.string().uuid().optional()
12058
+ taskId: z39.string().guid().optional()
12021
12059
  });
12022
12060
 
12023
12061
  // ../../packages/types/src/billing.ts
@@ -12025,10 +12063,10 @@ import { z as z40 } from "zod";
12025
12063
  var MAX_BILLING_DECIMAL_PLACES = 10;
12026
12064
  function countDecimalPlaces(value) {
12027
12065
  if (!Number.isFinite(value)) return MAX_BILLING_DECIMAL_PLACES + 1;
12028
- const normalized = value.toString();
12066
+ let normalized = value.toString();
12029
12067
  if (/e/i.test(normalized)) {
12030
- const fixed = value.toFixed(MAX_BILLING_DECIMAL_PLACES);
12031
- return countDecimalPlaces(Number(fixed));
12068
+ if (Math.abs(value) >= 1e21) return 0;
12069
+ normalized = value.toFixed(MAX_BILLING_DECIMAL_PLACES);
12032
12070
  }
12033
12071
  const parts = normalized.split(".");
12034
12072
  if (parts.length < 2) return 0;
@@ -12059,16 +12097,16 @@ var BillingProvider = z40.enum([
12059
12097
  ]);
12060
12098
  var BillingRecordInput = z40.object({
12061
12099
  userId: z40.string().min(1),
12062
- taskId: z40.string().uuid().optional(),
12063
- mixTaskId: z40.string().uuid().optional(),
12064
- productResearchRunId: z40.string().uuid().optional(),
12065
- servicePageId: z40.string().uuid().optional(),
12100
+ taskId: z40.string().guid().optional(),
12101
+ mixTaskId: z40.string().guid().optional(),
12102
+ productResearchRunId: z40.string().guid().optional(),
12103
+ servicePageId: z40.string().guid().optional(),
12066
12104
  provider: BillingProvider,
12067
12105
  label: z40.string().optional(),
12068
12106
  units: z40.number().int().nonnegative().optional(),
12069
12107
  ourCostCents: BillingNonNegativeAmount,
12070
12108
  userPriceCents: BillingNonNegativeAmount,
12071
- metadata: z40.record(z40.unknown()).optional()
12109
+ metadata: z40.record(z40.string(), z40.unknown()).optional()
12072
12110
  }).superRefine((value, ctx) => {
12073
12111
  const scopedIds = [
12074
12112
  value.taskId,
@@ -12090,7 +12128,7 @@ var BillingSummary = z40.object({
12090
12128
  // ../../packages/types/src/shopify.ts
12091
12129
  import { z as z41 } from "zod";
12092
12130
  var ShopifyShopSummary = z41.object({
12093
- id: z41.string().uuid(),
12131
+ id: z41.string().guid(),
12094
12132
  shopDomain: z41.string(),
12095
12133
  primaryDomain: z41.string().nullable(),
12096
12134
  scopes: z41.array(z41.string()),
@@ -12137,7 +12175,7 @@ var ShopifyPublicationMode = z41.enum([
12137
12175
  var SHOPIFY_ANNOUNCEMENT_BAR_MAX_LENGTH = 160;
12138
12176
  var ShopifyPublishRequest = z41.object({
12139
12177
  /** Correlates a mutation with read-only recovery after a lost response. */
12140
- publishAttemptId: z41.string().uuid().optional(),
12178
+ publishAttemptId: z41.string().guid().optional(),
12141
12179
  /** Omitted keeps legacy publication behavior; null explicitly excludes the GIF. */
12142
12180
  selectedLandingGif: LandingGifSelectionSchema.nullable().optional(),
12143
12181
  classicSelection: ClassicLandingSelectionSnapshotSchema.optional(),
@@ -12196,7 +12234,7 @@ var ShopifyPublishRequest = z41.object({
12196
12234
  });
12197
12235
  }
12198
12236
  });
12199
- var CodeLandingThemeSetupRequest = ShopifyPublishRequest.innerType().omit({
12237
+ var CodeLandingThemeSetupRequest = z41.object(ShopifyPublishRequest.shape).omit({
12200
12238
  publishAttemptId: true,
12201
12239
  commerceCorrection: true
12202
12240
  });
@@ -12266,8 +12304,8 @@ var ShopifyBundleMappingResult = z41.discriminatedUnion("status", [
12266
12304
  ]);
12267
12305
  var ShopifyPublishResponse = z41.object({
12268
12306
  pricingNotices: z41.array(SellerPricingNoticeSchema).max(32).optional(),
12269
- publicationId: z41.string().uuid(),
12270
- taskId: z41.string().uuid(),
12307
+ publicationId: z41.string().guid(),
12308
+ taskId: z41.string().guid(),
12271
12309
  status: ShopifyPublicationStatus,
12272
12310
  shopDomain: z41.string(),
12273
12311
  productId: z41.string().optional(),
@@ -12338,8 +12376,8 @@ var ShopifyImportOutcomeResponse = z41.discriminatedUnion("status", [
12338
12376
  ]);
12339
12377
  var ShopifyPublishAttemptStatus = z41.discriminatedUnion("status", [
12340
12378
  z41.object({
12341
- publicationId: z41.string().uuid(),
12342
- taskId: z41.string().uuid(),
12379
+ publicationId: z41.string().guid(),
12380
+ taskId: z41.string().guid(),
12343
12381
  status: z41.enum([
12344
12382
  "pending",
12345
12383
  "processing"
@@ -12347,8 +12385,8 @@ var ShopifyPublishAttemptStatus = z41.discriminatedUnion("status", [
12347
12385
  productId: z41.string().optional()
12348
12386
  }),
12349
12387
  z41.object({
12350
- publicationId: z41.string().uuid(),
12351
- taskId: z41.string().uuid(),
12388
+ publicationId: z41.string().guid(),
12389
+ taskId: z41.string().guid(),
12352
12390
  status: z41.literal("error"),
12353
12391
  productId: z41.string().optional(),
12354
12392
  failure: z41.discriminatedUnion("kind", [
@@ -12502,7 +12540,7 @@ var CreateShopifyBillingChargeRequest = z41.object({
12502
12540
  });
12503
12541
  var ShopifyBillingCallbackQuery = z41.object({
12504
12542
  charge_id: z41.string().regex(/^\d+$/),
12505
- transactionId: z41.string().uuid()
12543
+ transactionId: z41.string().guid()
12506
12544
  });
12507
12545
  var CancelShopifySubscriptionRequest = z41.object({
12508
12546
  subscriptionId: z41.string().min(1)
@@ -12568,12 +12606,12 @@ var ApproveAnglesRefusalReason = z42.enum([
12568
12606
  ]);
12569
12607
  var ApproveAnglesResponse = z42.object({
12570
12608
  success: z42.boolean(),
12571
- taskId: z42.string().uuid(),
12609
+ taskId: z42.string().guid(),
12572
12610
  reason: ApproveAnglesRefusalReason.optional()
12573
12611
  });
12574
12612
  var IngestResumeRefusalResponse = z42.object({
12575
12613
  success: z42.literal(false),
12576
- taskId: z42.string().uuid(),
12614
+ taskId: z42.string().guid(),
12577
12615
  reason: ApproveAnglesRefusalReason.optional()
12578
12616
  });
12579
12617
  var GenerateSuggestionsResponse = z42.object({
@@ -12588,7 +12626,7 @@ var SaveDraftRequest = z42.object({
12588
12626
  });
12589
12627
  var SaveDraftResponse = z42.object({
12590
12628
  success: z42.boolean(),
12591
- taskId: z42.string().uuid()
12629
+ taskId: z42.string().guid()
12592
12630
  });
12593
12631
  var ProductReferenceRecoveryImageMimeType = z42.enum([
12594
12632
  "image/jpeg",
@@ -12633,7 +12671,7 @@ var ConfirmProductReferencesRequest = z42.object({
12633
12671
  "keep_selection"
12634
12672
  ]),
12635
12673
  affectedRefKeys: z42.array(z42.string().min(1).max(200)).min(1).max(5).optional(),
12636
- expectedReferenceVersionId: z42.string().uuid().optional(),
12674
+ expectedReferenceVersionId: z42.string().guid().optional(),
12637
12675
  expectedEvidenceHash: z42.string().min(1).max(128).optional(),
12638
12676
  uploadedImages: z42.array(ProductReferenceRecoveryUpload).max(INGEST_MAX_REFERENCE_IMAGES).optional()
12639
12677
  }).optional()
@@ -12670,7 +12708,7 @@ var ConfirmProductReferencesRequest = z42.object({
12670
12708
  });
12671
12709
  var ConfirmProductReferencesResponse = z42.object({
12672
12710
  success: z42.boolean(),
12673
- taskId: z42.string().uuid(),
12711
+ taskId: z42.string().guid(),
12674
12712
  anglesQueued: z42.boolean()
12675
12713
  });
12676
12714
  var UpdateProductFeaturesRequest = z42.object({
@@ -12737,7 +12775,7 @@ var ApproveVideoAnglesRequest = z42.object({
12737
12775
  "meta",
12738
12776
  "upload"
12739
12777
  ]).optional(),
12740
- sourceUploadIds: z42.array(z42.string().uuid()).min(2).max(5).optional(),
12778
+ sourceUploadIds: z42.array(z42.string().guid()).min(2).max(5).optional(),
12741
12779
  /** Whether to pause for video script review before final generation */
12742
12780
  pauseForVideoScriptReview: z42.boolean().optional(),
12743
12781
  /** Whether to produce an additional AI-music video variant */
@@ -12751,7 +12789,7 @@ var ApproveVideoAnglesRequest = z42.object({
12751
12789
  }).superRefine((value, ctx) => validateFrankensteinDraftSources(value, ctx, true));
12752
12790
  var ApproveVideoAnglesResponse = z42.object({
12753
12791
  success: z42.boolean(),
12754
- taskId: z42.string().uuid(),
12792
+ taskId: z42.string().guid(),
12755
12793
  /** Persisted keys scheduled by this approval; visible candidate indices are not worker keys. */
12756
12794
  approvedAngleKeys: z42.array(z42.string().regex(/^angle_\d+$/)).min(1).max(3).optional(),
12757
12795
  reason: ApproveAnglesRefusalReason.optional()
@@ -12771,11 +12809,11 @@ var SaveVideoDraftRequest = z42.object({
12771
12809
  "meta",
12772
12810
  "upload"
12773
12811
  ]).optional(),
12774
- sourceUploadIds: z42.array(z42.string().uuid()).min(2).max(5).optional()
12812
+ sourceUploadIds: z42.array(z42.string().guid()).min(2).max(5).optional()
12775
12813
  }).superRefine((value, ctx) => validateFrankensteinDraftSources(value, ctx, false));
12776
12814
  var SaveVideoDraftResponse = z42.object({
12777
12815
  success: z42.boolean(),
12778
- taskId: z42.string().uuid()
12816
+ taskId: z42.string().guid()
12779
12817
  });
12780
12818
  var ApproveImageAnglesRequest = z42.object({
12781
12819
  /** Zero-based index of the generated angle explicitly selected for production. */
@@ -12799,7 +12837,7 @@ var ApproveImageAnglesRequest = z42.object({
12799
12837
  });
12800
12838
  var ApproveImageAnglesResponse = z42.object({
12801
12839
  success: z42.boolean(),
12802
- taskId: z42.string().uuid(),
12840
+ taskId: z42.string().guid(),
12803
12841
  reason: ApproveAnglesRefusalReason.optional()
12804
12842
  });
12805
12843
  var SaveImageDraftRequest = z42.object({
@@ -12810,7 +12848,7 @@ var SaveImageDraftRequest = z42.object({
12810
12848
  });
12811
12849
  var SaveImageDraftResponse = z42.object({
12812
12850
  success: z42.boolean(),
12813
- taskId: z42.string().uuid()
12851
+ taskId: z42.string().guid()
12814
12852
  });
12815
12853
  var ImageSuggestionsResponse = z42.object({
12816
12854
  painPoints: z42.array(z42.string()),
@@ -12856,8 +12894,8 @@ var QualityReportReason = z43.enum([
12856
12894
  "other"
12857
12895
  ]);
12858
12896
  var QualityReportRequest = z43.object({
12859
- taskId: z43.string().uuid().optional(),
12860
- mixTaskId: z43.string().uuid().optional(),
12897
+ taskId: z43.string().guid().optional(),
12898
+ mixTaskId: z43.string().guid().optional(),
12861
12899
  kind: QualityReportKind,
12862
12900
  /**
12863
12901
  * URL or internal proxy path (e.g. `/api/assets/...`).
@@ -12883,9 +12921,9 @@ var QualityReportRequest = z43.object({
12883
12921
  ]
12884
12922
  });
12885
12923
  var QualityReportResponse = z43.object({
12886
- reportId: z43.string().uuid(),
12887
- taskId: z43.string().uuid().optional(),
12888
- mixTaskId: z43.string().uuid().optional(),
12924
+ reportId: z43.string().guid(),
12925
+ taskId: z43.string().guid().optional(),
12926
+ mixTaskId: z43.string().guid().optional(),
12889
12927
  kind: QualityReportKind,
12890
12928
  resourceUrl: z43.string().min(1),
12891
12929
  reason: QualityReportReason,
@@ -13314,7 +13352,7 @@ var TaskCreativeVariantVideoPreset = VideoPreset.exclude([
13314
13352
  ...BLOCKED_VIDEO_PRESETS
13315
13353
  ]);
13316
13354
  var CreateTaskCreativeVariantBase = z47.object({
13317
- clientRequestId: z47.string().uuid(),
13355
+ clientRequestId: z47.string().guid(),
13318
13356
  angle: z47.string().trim().min(1).max(TASK_CREATIVE_VARIANT_TEXT_LIMITS.angle),
13319
13357
  buyerPersona: z47.string().trim().min(1).max(TASK_CREATIVE_VARIANT_TEXT_LIMITS.buyerPersona).optional()
13320
13358
  });
@@ -13337,7 +13375,7 @@ var CreateTaskImageVariantRequest = CreateTaskCreativeVariantBase.extend({
13337
13375
  styleMix: z47.boolean().optional()
13338
13376
  }).strict();
13339
13377
  var CreateTaskLandingSectionVariantRequest = z47.object({
13340
- clientRequestId: z47.string().uuid(),
13378
+ clientRequestId: z47.string().guid(),
13341
13379
  kind: z47.literal("landing"),
13342
13380
  sectionKey: LandingSectionKeySchema,
13343
13381
  instructions: z47.string().trim().min(1).max(TASK_CREATIVE_VARIANT_TEXT_LIMITS.landingInstructions).optional()
@@ -13365,8 +13403,8 @@ var EstimateTaskCreativeVariantRequest = z47.discriminatedUnion("kind", [
13365
13403
  ]);
13366
13404
  var CreateTaskCreativeVariantResponse = z47.object({
13367
13405
  ok: z47.literal(true),
13368
- sourceTaskId: z47.string().uuid(),
13369
- variantTaskId: z47.string().uuid(),
13406
+ sourceTaskId: z47.string().guid(),
13407
+ variantTaskId: z47.string().guid(),
13370
13408
  kind: TaskCreativeVariantKind,
13371
13409
  status: TaskCreativeVariantStatus
13372
13410
  }).strict();
@@ -13389,15 +13427,15 @@ var TaskCreativeVariantRecommendationRequest = z47.object({
13389
13427
  }).strict();
13390
13428
  var TaskCreativeVariantRecommendationResponse = z47.object({
13391
13429
  ok: z47.literal(true),
13392
- sourceTaskId: z47.string().uuid(),
13430
+ sourceTaskId: z47.string().guid(),
13393
13431
  kind: TaskCreativeVariantKind,
13394
13432
  field: TaskCreativeVariantRecommendationField,
13395
13433
  value: z47.string().trim().min(1).max(TASK_CREATIVE_VARIANT_TEXT_LIMITS.scriptNotes),
13396
13434
  rationale: z47.string().trim().min(1).max(TASK_CREATIVE_VARIANT_TEXT_LIMITS.recommendationRationale).optional()
13397
13435
  }).strict();
13398
13436
  var TaskCreativeVariantBaseResult = z47.object({
13399
- variantTaskId: z47.string().uuid(),
13400
- sourceTaskId: z47.string().uuid(),
13437
+ variantTaskId: z47.string().guid(),
13438
+ sourceTaskId: z47.string().guid(),
13401
13439
  kind: TaskCreativeVariantKind,
13402
13440
  status: TaskCreativeVariantStatus,
13403
13441
  angle: z47.string().min(1),
@@ -13571,7 +13609,7 @@ var ResultAngle = Angle.extend({
13571
13609
  aiEdit: AiEditTierSchema.nullable().optional()
13572
13610
  });
13573
13611
  var MVPResult = z49.object({
13574
- taskId: z49.string().uuid(),
13612
+ taskId: z49.string().guid(),
13575
13613
  /** Read-only identity derived from validated persisted request context.
13576
13614
  * Optional for older APIs and content-only tasks; absence never implies a service. */
13577
13615
  subjectKind: z49.enum([
@@ -13749,7 +13787,7 @@ var PendingUserActionSchema = z49.discriminatedUnion("kind", [
13749
13787
  z49.object({
13750
13788
  kind: z49.literal("service_angle_approval"),
13751
13789
  angles: z49.array(z49.object({
13752
- id: z49.string().uuid(),
13790
+ id: z49.string().guid(),
13753
13791
  content: z49.string(),
13754
13792
  creativeDirection: z49.string(),
13755
13793
  actor: z49.string(),
@@ -13828,7 +13866,7 @@ var CommercialStudySummarySchema = z49.union([
13828
13866
  })
13829
13867
  ]);
13830
13868
  var StatusResponse = z49.object({
13831
- taskId: z49.string().uuid(),
13869
+ taskId: z49.string().guid(),
13832
13870
  status: TaskStatusSchema,
13833
13871
  /** ENGINEERING string (`Task.error`). Never render this to a seller. */
13834
13872
  error: z49.string().optional(),
@@ -14036,7 +14074,7 @@ var StatusResponse = z49.object({
14036
14074
  frankensteinRun: FrankensteinRunProgressSchema.optional()
14037
14075
  });
14038
14076
  var TaskSummary = z49.object({
14039
- taskId: z49.string().uuid(),
14077
+ taskId: z49.string().guid(),
14040
14078
  /** A projected ServicePage, opened through its own editor and lifecycle. */
14041
14079
  resourceType: z49.literal("service_page").optional(),
14042
14080
  status: TaskStatusSchema,
@@ -14465,7 +14503,7 @@ var RegenerateLandingRoleBody = z50.object({
14465
14503
  comment: z50.string().max(2e3).optional(),
14466
14504
  sourceKey: z50.string().max(200).optional(),
14467
14505
  /** Client-generated key makes a lost response safe to retry without another charge. */
14468
- clientRequestId: z50.string().uuid().optional()
14506
+ clientRequestId: z50.string().guid().optional()
14469
14507
  }).strict();
14470
14508
  var LandingRegenerateEstimationOptions = z50.object({
14471
14509
  /** KIE image endpoint has non-linear pricing by nVariants; for landing we default to 2. */
@@ -14571,6 +14609,8 @@ var CostEstimationRequest = z50.discriminatedUnion("type", [
14571
14609
  var CostEstimationResponse = z50.object({
14572
14610
  /** Server confirms the range includes the first generated classic-landing GIF. */
14573
14611
  includesInitialLandingGif: z50.boolean().optional(),
14612
+ /** The initial-GIF choice is offerable for this config (code landings only quote it after explicit consent). */
14613
+ initialLandingGifOffered: z50.boolean().optional(),
14574
14614
  estimatedCostCents: z50.number().nonnegative(),
14575
14615
  estimatedCostCredits: z50.number().int().nonnegative(),
14576
14616
  /** Scan-only midpoint; excludes generating a winner replica. Not an admission limit. */
@@ -15452,7 +15492,7 @@ var UpdateUserCreditsRequest = z53.object({
15452
15492
  /** Free-text detail. Required when the enum alone does not explain the grant. */
15453
15493
  notes: z53.string().trim().min(1).max(500).optional(),
15454
15494
  /** The task the grant compensates, when there is one. */
15455
- taskId: z53.string().uuid().optional()
15495
+ taskId: z53.string().guid().optional()
15456
15496
  });
15457
15497
  var QualityReportStatus = z53.enum([
15458
15498
  "open",
@@ -15512,7 +15552,7 @@ var AdminSupportDeliveryStatus = z53.enum([
15512
15552
  "blocked"
15513
15553
  ]);
15514
15554
  var AdminSupportMessage = z53.object({
15515
- id: z53.string().uuid(),
15555
+ id: z53.string().guid(),
15516
15556
  direction: z53.enum([
15517
15557
  "inbound",
15518
15558
  "outbound"
@@ -15536,7 +15576,7 @@ var AdminSupportMessage = z53.object({
15536
15576
  createdAt: z53.string().datetime()
15537
15577
  });
15538
15578
  var AdminSupportTicket = z53.object({
15539
- id: z53.string().uuid(),
15579
+ id: z53.string().guid(),
15540
15580
  category: z53.enum([
15541
15581
  "how_to",
15542
15582
  "credits",
@@ -15565,7 +15605,7 @@ var AdminSupportTicket = z53.object({
15565
15605
  updatedAt: z53.string().datetime()
15566
15606
  });
15567
15607
  var AdminSupportConversation = z53.object({
15568
- id: z53.string().uuid(),
15608
+ id: z53.string().guid(),
15569
15609
  status: AdminSupportConversationStatus,
15570
15610
  priority: z53.enum([
15571
15611
  "low",
@@ -15580,7 +15620,7 @@ var AdminSupportConversation = z53.object({
15580
15620
  createdAt: z53.string().datetime(),
15581
15621
  updatedAt: z53.string().datetime(),
15582
15622
  contact: z53.object({
15583
- id: z53.string().uuid(),
15623
+ id: z53.string().guid(),
15584
15624
  userId: z53.string().nullable(),
15585
15625
  verifiedAt: z53.string().datetime().nullable(),
15586
15626
  botMode: z53.enum([
@@ -15596,11 +15636,11 @@ var AdminSupportConversation = z53.object({
15596
15636
  var AdminSupportListQuery = z53.object({
15597
15637
  status: AdminSupportConversationStatus.optional(),
15598
15638
  take: z53.coerce.number().int().min(1).max(100).default(50),
15599
- cursorId: z53.string().uuid().optional()
15639
+ cursorId: z53.string().guid().optional()
15600
15640
  }).strict();
15601
15641
  var AdminSupportListResponse = z53.object({
15602
15642
  conversations: z53.array(AdminSupportConversation),
15603
- nextCursor: z53.string().uuid().nullable()
15643
+ nextCursor: z53.string().guid().nullable()
15604
15644
  });
15605
15645
  var AdminSupportReplyRequest = z53.object({
15606
15646
  body: z53.string().trim().min(1).max(4096),
@@ -15611,7 +15651,7 @@ var AdminSupportActionResponse = z53.object({
15611
15651
  conversation: AdminSupportConversation
15612
15652
  });
15613
15653
  var AdminSupportReplyResponse = z53.object({
15614
- messageId: z53.string().uuid(),
15654
+ messageId: z53.string().guid(),
15615
15655
  deliveryStatus: AdminSupportDeliveryStatus,
15616
15656
  duplicate: z53.boolean()
15617
15657
  });
@@ -15741,7 +15781,7 @@ var VideoVoiceJobSchema = z57.object({
15741
15781
  wakeRevision: z57.number().int().nonnegative()
15742
15782
  }).strict();
15743
15783
  var ExtractJobSchema = z57.object({
15744
- taskId: z57.string().uuid(),
15784
+ taskId: z57.string().guid(),
15745
15785
  imageKey: z57.string().min(1).optional(),
15746
15786
  imageKeys: z57.array(z57.string().min(1)).min(1).max(INGEST_MAX_REFERENCE_IMAGES).optional(),
15747
15787
  /** Existing clean references carried through a recovery extract. They are
@@ -15860,20 +15900,20 @@ var BrandExtractDocumentSchema = z57.object({
15860
15900
  ])
15861
15901
  });
15862
15902
  var VideoMixSubmitJobSchema = z57.object({
15863
- mixTaskId: z57.string().uuid()
15903
+ mixTaskId: z57.string().guid()
15864
15904
  });
15865
15905
  var VideoMixAssembleJobSchema = z57.object({
15866
- mixTaskId: z57.string().uuid()
15906
+ mixTaskId: z57.string().guid()
15867
15907
  });
15868
15908
  var VideoMixQaJobSchema = z57.object({
15869
- mixSceneTaskId: z57.string().uuid(),
15909
+ mixSceneTaskId: z57.string().guid(),
15870
15910
  // externalId is included in the BullMQ payload by the producer (used in the
15871
15911
  // jobId for retry uniqueness) but the worker only reads mixSceneTaskId.
15872
15912
  externalId: z57.string().min(1).optional()
15873
15913
  });
15874
15914
  var BrandExtractLocaleSchema = z57.string().regex(/^[A-Za-z]{2,3}(?:[-_][A-Za-z0-9]{2,8})?$/, "invalid locale");
15875
15915
  var BrandExtractJobSchema = z57.object({
15876
- brandId: z57.string().uuid(),
15916
+ brandId: z57.string().guid(),
15877
15917
  // Generation is part of the durable paid-spend identity. Default 1 keeps
15878
15918
  // pre-migration BullMQ payloads parseable; their DB state fails safe.
15879
15919
  generation: z57.number().int().positive().default(1),
@@ -15905,23 +15945,23 @@ import { z as z58 } from "zod";
15905
15945
  var WhatsAppDeliveryConsumerSchema = z58.discriminatedUnion("kind", [
15906
15946
  z58.object({
15907
15947
  kind: z58.literal("presentation"),
15908
- presentationId: z58.string().uuid(),
15948
+ presentationId: z58.string().guid(),
15909
15949
  pollAt: z58.number().int().nonnegative()
15910
15950
  }).strict(),
15911
15951
  z58.object({
15912
15952
  kind: z58.literal("message"),
15913
- messageId: z58.string().uuid(),
15953
+ messageId: z58.string().guid(),
15914
15954
  providerMessageId: z58.string().min(1).max(256)
15915
15955
  }).strict(),
15916
15956
  z58.object({
15917
15957
  kind: z58.literal("task_watch"),
15918
- commandId: z58.string().uuid(),
15958
+ commandId: z58.string().guid(),
15919
15959
  pollAt: z58.number().int().nonnegative()
15920
15960
  }).strict(),
15921
15961
  z58.object({
15922
15962
  kind: z58.literal("research_watch"),
15923
- commandId: z58.string().uuid(),
15924
- runId: z58.string().uuid(),
15963
+ commandId: z58.string().guid(),
15964
+ runId: z58.string().guid(),
15925
15965
  pollAt: z58.number().int().nonnegative()
15926
15966
  }).strict()
15927
15967
  ]);
@@ -15970,9 +16010,9 @@ var ComboItemSchema = z60.object({
15970
16010
  /** Physical details for this specific product */
15971
16011
  details: z60.object({
15972
16012
  packagingType: z60.string().optional(),
15973
- geometry: z60.record(z60.unknown()).optional(),
15974
- morphology: z60.record(z60.unknown()).optional(),
15975
- estimatedDimensions: z60.record(z60.unknown()).optional()
16013
+ geometry: z60.record(z60.string(), z60.unknown()).optional(),
16014
+ morphology: z60.record(z60.string(), z60.unknown()).optional(),
16015
+ estimatedDimensions: z60.record(z60.string(), z60.unknown()).optional()
15976
16016
  }).optional(),
15977
16017
  /** Per-item usage spec extracted individually (fallback: global combo usageSpec) */
15978
16018
  usageSpec: ProductUsageSpec.optional()
@@ -16011,7 +16051,7 @@ var FacebookConnectionStatusSchema = z61.object({
16011
16051
  message: z61.string().optional()
16012
16052
  });
16013
16053
  var FacebookCreateCampaignRequestSchema = z61.object({
16014
- taskId: z61.string().uuid(),
16054
+ taskId: z61.string().guid(),
16015
16055
  pixelId: z61.string().optional(),
16016
16056
  landingUrl: HttpUrl2.optional()
16017
16057
  });
@@ -16136,29 +16176,14 @@ var FacebookCreateCampaignResponseSchema = z61.object({
16136
16176
  appliedBudget: z61.number().int().positive()
16137
16177
  });
16138
16178
  var FacebookCreateCampaignFromCreativesBodySchema = z61.object({
16139
- /** Caller-owned retry fence. Required before any provider operation. */
16140
- publishAttemptId: MetaPublishAttemptId,
16141
- creatives: z61.array(z61.object({
16142
- type: MediaKind,
16143
- title: z61.string().max(120),
16144
- description: z61.string().max(500),
16145
- cta: MetaCtaType,
16179
+ ...UploadToMetaRequest.shape,
16180
+ creatives: z61.array(UploadToMetaRequest.shape.creatives.element.extend({
16181
+ // Retain this endpoint's HTTP URL policy; the upload owner additionally
16182
+ // forbids credentials. Sharing its field shape must not tighten ours.
16146
16183
  mediaUrl: HttpUrl2.optional(),
16147
- mediaAssetId: z61.string().uuid().optional(),
16148
- thumbnailUrl: HttpUrl2.optional(),
16149
- thumbnailAssetId: z61.string().uuid().optional(),
16150
- creativeId: z61.string().min(1).optional()
16184
+ thumbnailUrl: HttpUrl2.optional()
16151
16185
  })).min(1).max(CAMPAIGN_LIMITS.MAX_CREATIVES),
16152
- adAccountId: MetaAdAccountId,
16153
- portfolioId: z61.string().min(1).optional(),
16154
- pageId: z61.string().min(1).optional(),
16155
- pixelId: z61.string().optional(),
16156
- /** Required unless campaignConfig.destination is 'whatsapp' (see superRefine below). */
16157
16186
  landingUrl: HttpUrl2.optional(),
16158
- /** Target country for ad targeting (ISO 3166-1 alpha-2 code or resolvable name) */
16159
- targetCountry: CountryIso2Schema.default("US"),
16160
- /** Custom campaign name */
16161
- campaignName: z61.string().min(1).max(100).optional(),
16162
16187
  campaignConfig: MetaCampaignConfig.optional()
16163
16188
  }).superRefine((value, ctx) => {
16164
16189
  const isWhatsapp = value.campaignConfig?.destination?.type === "whatsapp";
@@ -16171,30 +16196,7 @@ var FacebookCreateCampaignFromCreativesBodySchema = z61.object({
16171
16196
  message: "landingUrl is required unless destination is whatsapp"
16172
16197
  });
16173
16198
  }
16174
- value.creatives.forEach((creative, index) => {
16175
- if (Boolean(creative.mediaUrl) === Boolean(creative.mediaAssetId)) {
16176
- ctx.addIssue({
16177
- code: z61.ZodIssueCode.custom,
16178
- path: [
16179
- "creatives",
16180
- index,
16181
- "mediaUrl"
16182
- ],
16183
- message: "Provide exactly one of mediaUrl or mediaAssetId"
16184
- });
16185
- }
16186
- if (creative.thumbnailUrl && creative.thumbnailAssetId) {
16187
- ctx.addIssue({
16188
- code: z61.ZodIssueCode.custom,
16189
- path: [
16190
- "creatives",
16191
- index,
16192
- "thumbnailUrl"
16193
- ],
16194
- message: "Provide at most one of thumbnailUrl or thumbnailAssetId"
16195
- });
16196
- }
16197
- });
16199
+ refineMetaCreativeSources(value, ctx);
16198
16200
  if (value.campaignConfig?.destination?.type === "landing" && value.landingUrl && value.campaignConfig.destination.landingUrl !== value.landingUrl) {
16199
16201
  ctx.addIssue({
16200
16202
  code: z61.ZodIssueCode.custom,
@@ -16273,9 +16275,9 @@ var FacebookTaskCreativeSourceSchema = z61.object({
16273
16275
  var FacebookMediaCreativeSourceSchema = z61.object({
16274
16276
  type: z61.literal("media"),
16275
16277
  mediaUrl: HttpUrl2.optional(),
16276
- mediaAssetId: z61.string().uuid().optional(),
16278
+ mediaAssetId: z61.string().guid().optional(),
16277
16279
  thumbnailUrl: HttpUrl2.optional(),
16278
- thumbnailAssetId: z61.string().uuid().optional()
16280
+ thumbnailAssetId: z61.string().guid().optional()
16279
16281
  });
16280
16282
  var FacebookCreativeSourceSchema = z61.discriminatedUnion("type", [
16281
16283
  FacebookTaskCreativeSourceSchema,
@@ -16298,15 +16300,15 @@ var FacebookCreateCampaignFromTasksBodySchema = z61.object({
16298
16300
  pageId: z61.string().min(1),
16299
16301
  pixelId: z61.string().optional(),
16300
16302
  /**
16301
- * Omitted: a campaign with task creatives lands on the published service
16302
- * landing of its service tasks (resolved server side, META_NO_LANDING_URL
16303
- * when there is none); a media-only campaign must name it.
16304
- */
16303
+ * Omitted: a campaign with task creatives lands on the published service
16304
+ * landing of its service tasks (resolved server side, META_NO_LANDING_URL
16305
+ * when there is none); a media-only campaign must name it.
16306
+ */
16305
16307
  landingUrl: HttpUrl2.optional(),
16306
16308
  /**
16307
- * Omitted: the brand country of its service tasks; a product-only campaign
16308
- * keeps "US". Never a hardcoded country for a service (META_NO_TARGET_COUNTRY).
16309
- */
16309
+ * Omitted: the brand country of its service tasks; a product-only campaign
16310
+ * keeps "US". Never a hardcoded country for a service (META_NO_TARGET_COUNTRY).
16311
+ */
16310
16312
  targetCountry: CountryIso2Schema.optional(),
16311
16313
  campaignName: z61.string().min(1).max(100),
16312
16314
  campaignConfig: MetaCampaignConfig.optional()
@@ -16867,7 +16869,7 @@ var VideoSpeechAssetSchema = z64.object({
16867
16869
  var VoiceProgressSchema = z64.discriminatedUnion("status", [
16868
16870
  z64.object({
16869
16871
  status: z64.literal("ready"),
16870
- value: z64.unknown()
16872
+ value: z64.unknown().optional()
16871
16873
  }).strict(),
16872
16874
  z64.object({
16873
16875
  status: z64.literal("waiting"),
@@ -17417,7 +17419,7 @@ var MixSceneResult = z67.object({
17417
17419
  degradedReason: MixDegradationReasonSchema.optional()
17418
17420
  });
17419
17421
  var MixResult = z67.object({
17420
- mixTaskId: z67.string().uuid(),
17422
+ mixTaskId: z67.string().guid(),
17421
17423
  status: z67.enum([
17422
17424
  "queued",
17423
17425
  "processing",
@@ -17460,7 +17462,7 @@ var PreparedImagePreviewUrlSchema = z68.string().url().max(2048).refine((value)
17460
17462
  return protocol === "https:" || protocol === "http:";
17461
17463
  }, "Prepared image preview URLs must use HTTP(S)");
17462
17464
  var WinningProductPreparedImageSchema = z68.object({
17463
- assetId: z68.string().uuid(),
17465
+ assetId: z68.string().guid(),
17464
17466
  previewUrl: PreparedImagePreviewUrlSchema,
17465
17467
  productName: z68.string().trim().min(1).max(240),
17466
17468
  presentation: MediaPresentationImageSchema
@@ -17759,14 +17761,16 @@ var LandingOperationStepSelectionSchema = CodeLandingStepSelectionSchema.extend(
17759
17761
  var LandingOperationReceiptStepSchema = LandingOperationStepSelectionSchema.extend({
17760
17762
  receipt: CodeLandingEffectiveReceiptSchema.optional()
17761
17763
  });
17762
- var LandingOperationEnvelopeNodeSchema = CodeLandingEnvelopeNodeSchema.innerType().extend({
17764
+ var LandingOperationEnvelopeNodeSchema = z73.object(CodeLandingEnvelopeNodeSchema.shape).strict().extend({
17763
17765
  phase: LandingOperationStepPhaseSchema
17764
17766
  }).superRefine((node, ctx) => {
17765
17767
  const legacy = CodeLandingEnvelopeNodeSchema.safeParse({
17766
17768
  ...node,
17767
17769
  phase: "asset"
17768
17770
  });
17769
- if (!legacy.success) for (const issue of legacy.error.issues) ctx.addIssue(issue);
17771
+ if (!legacy.success) for (const issue of legacy.error.issues) ctx.addIssue({
17772
+ ...issue
17773
+ });
17770
17774
  });
17771
17775
  var LandingGifGenerationPolicySchema = z73.discriminatedUnion("model", [
17772
17776
  z73.object({
@@ -18153,7 +18157,7 @@ var LandingRegenerationStatusResponse = z75.object({
18153
18157
  });
18154
18158
 
18155
18159
  // ../../packages/types/src/shopify-meta-tracking.ts
18156
- import { z as z76 } from "zod";
18160
+ import * as z76 from "zod";
18157
18161
  var MetaTrackingOwnerSchema = z76.enum([
18158
18162
  "auto",
18159
18163
  "external",
@@ -18361,7 +18365,7 @@ var UploadedAssetRole = z78.enum([
18361
18365
  ]);
18362
18366
  var UPLOADED_ASSET_MAX_FILES = 10;
18363
18367
  var UPLOADED_ASSET_IMAGE_MAX_FILES = 5;
18364
- var UploadedAssetId = z78.string().uuid();
18368
+ var UploadedAssetId = z78.string().guid();
18365
18369
  var HttpsUrl = z78.string().url().refine((value) => {
18366
18370
  try {
18367
18371
  const url2 = new URL(value);
@@ -18502,7 +18506,7 @@ var DropshippingProjectRewardMilestoneStateSchema = z79.object({
18502
18506
  credits: z79.number().int().positive(),
18503
18507
  available: z79.boolean().optional(),
18504
18508
  earned: z79.boolean(),
18505
- grantId: z79.string().uuid().nullable(),
18509
+ grantId: z79.string().guid().nullable(),
18506
18510
  grantedAt: z79.string().datetime().nullable()
18507
18511
  });
18508
18512
  var DropshippingProjectRewardProgressSchema = z79.object({
@@ -18568,16 +18572,16 @@ var HttpUrlSchema = z79.string().url().max(2e3).refine((value) => {
18568
18572
  }, "Product URL must use HTTP(S)");
18569
18573
  var ResearchCandidateOriginSchema = z79.object({
18570
18574
  type: z79.literal("research_candidate"),
18571
- runId: z79.string().uuid(),
18575
+ runId: z79.string().guid(),
18572
18576
  candidateSourceId: z79.string().min(1).max(160)
18573
18577
  });
18574
18578
  var TaskOriginSchema = z79.object({
18575
18579
  type: z79.literal("task"),
18576
- taskId: z79.string().uuid()
18580
+ taskId: z79.string().guid()
18577
18581
  });
18578
18582
  var ManualOriginSchema = z79.object({
18579
18583
  type: z79.literal("manual"),
18580
- clientRequestId: z79.string().uuid(),
18584
+ clientRequestId: z79.string().guid(),
18581
18585
  country: z79.string().min(2).max(3).optional()
18582
18586
  });
18583
18587
  var CreateDropshippingProjectRequestSchema = z79.object({
@@ -18650,11 +18654,11 @@ var DropshippingProjectNextActionSchema = z79.discriminatedUnion("kind", [
18650
18654
  })
18651
18655
  ]);
18652
18656
  var DropshippingProjectResponseSchema = z79.object({
18653
- id: z79.string().uuid(),
18654
- taskId: z79.string().uuid().nullable(),
18657
+ id: z79.string().guid(),
18658
+ taskId: z79.string().guid().nullable(),
18655
18659
  status: DropshippingProjectStatusSchema,
18656
18660
  originKey: z79.string().min(1),
18657
- researchRunId: z79.string().uuid().nullable(),
18661
+ researchRunId: z79.string().guid().nullable(),
18658
18662
  candidateSourceId: z79.string().nullable(),
18659
18663
  productName: z79.string().nullable(),
18660
18664
  productUrl: HttpUrlSchema.nullable(),
@@ -19009,7 +19013,7 @@ var mediaVideoFields = {
19009
19013
  var mediaImageFields = {
19010
19014
  kind: z81.literal("image"),
19011
19015
  durationSec: z81.never({
19012
- invalid_type_error: "a photo has no duration"
19016
+ error: "a photo has no duration"
19013
19017
  }).optional()
19014
19018
  };
19015
19019
  var mediaOriginFields = {
@@ -19254,7 +19258,7 @@ var LegacyMotionGraphicsClipSpecSchema = z84.discriminatedUnion("kind", [
19254
19258
  ...clipSpecFields,
19255
19259
  kind: z84.literal("broll"),
19256
19260
  speech: z84.never({
19257
- invalid_type_error: "only a speaking clip carries speech"
19261
+ error: "only a speaking clip carries speech"
19258
19262
  }).optional()
19259
19263
  }).strict(),
19260
19264
  z84.object({
@@ -19827,8 +19831,8 @@ var MotionGraphicsCreativeBatchSchema = z89.object({
19827
19831
  version: z89.literal("v1"),
19828
19832
  count: MotionGraphicsHookVariantsSchema,
19829
19833
  index: MotionGraphicsHookVariantsSchema,
19830
- rootTaskId: z89.string().uuid().optional(),
19831
- taskIds: z89.array(z89.string().uuid()).min(1).max(3).optional(),
19834
+ rootTaskId: z89.string().guid().optional(),
19835
+ taskIds: z89.array(z89.string().guid()).min(1).max(3).optional(),
19832
19836
  plans: MotionGraphicsCreativePlansSchema.optional()
19833
19837
  }).strict().superRefine((batch, ctx) => {
19834
19838
  if (batch.index > batch.count) ctx.addIssue({
@@ -19924,7 +19928,7 @@ var MotionGraphicsMusicStatusResponseSchema = z90.discriminatedUnion("status", [
19924
19928
  // ../../packages/types/src/website-capture-artifact.ts
19925
19929
  import { z as z91 } from "zod";
19926
19930
  var WebsiteCaptureBindingSchema = z91.object({
19927
- captureId: z91.string().uuid(),
19931
+ captureId: z91.string().guid(),
19928
19932
  bundleKey: z91.string().min(1),
19929
19933
  sha256: z91.string().regex(/^[a-f0-9]{64}$/)
19930
19934
  });
@@ -20068,7 +20072,7 @@ var motionGraphicsStateSchema = z93.object({
20068
20072
  /** Durable, unpaid Generate intent. Removed only after capture admission and payment. */
20069
20073
  captureAdmission: z93.object({
20070
20074
  version: z93.literal("v1"),
20071
- captureId: z93.string().uuid().optional(),
20075
+ captureId: z93.string().guid().optional(),
20072
20076
  maxSocialAcquisitionPriceCents: z93.number().finite().nonnegative(),
20073
20077
  maxTotalPriceCents: z93.number().finite().nonnegative(),
20074
20078
  deadlineAt: z93.string().datetime(),
@@ -22032,7 +22036,7 @@ var DailyControlProductFactsSchema = z96.object({
22032
22036
  currency: z96.string()
22033
22037
  });
22034
22038
  var DailyControlProductSchema = z96.object({
22035
- projectId: z96.string().uuid(),
22039
+ projectId: z96.string().guid(),
22036
22040
  productName: z96.string().nullable(),
22037
22041
  status: DailyControlStatusSchema,
22038
22042
  /** Motivo legible cuando status !== 'ok'. Nunca se rellenan métricas en ese caso. */
@@ -22077,7 +22081,7 @@ var DailyControlQuerySchema = z96.object({
22077
22081
  * necesita ese producto; sin este filtro cada carga de página lee el gasto
22078
22082
  * de TODOS los proyectos activos del usuario contra Meta/TikTok/Shopify.
22079
22083
  */
22080
- projectId: z96.string().uuid().optional()
22084
+ projectId: z96.string().guid().optional()
22081
22085
  });
22082
22086
  var LinkableCampaignSchema = z96.object({
22083
22087
  provider: z96.enum([
@@ -22286,7 +22290,7 @@ var CreateFinanceOperationSchema = z97.object({
22286
22290
  label: z97.string().trim().min(1).max(60).optional()
22287
22291
  }).strict();
22288
22292
  var FinanceOperationSchema = z97.object({
22289
- id: z97.string().uuid(),
22293
+ id: z97.string().guid(),
22290
22294
  countryCode: z97.string().length(2),
22291
22295
  currency: z97.string().min(3).max(3),
22292
22296
  label: z97.string().min(1)
@@ -22295,7 +22299,7 @@ var MonthlyPLQuerySchema = z97.object({
22295
22299
  /** Opcional a propósito: con UNA sola operación —el caso de casi todo el
22296
22300
  * mundo— el servidor la resuelve solo. Con varias devuelve cuáles son,
22297
22301
  * para poder preguntar por país en vez de fallar. */
22298
- operationId: z97.string().uuid().optional(),
22302
+ operationId: z97.string().guid().optional(),
22299
22303
  /** YYYY-MM. Solo mes calendario: es el periodo con el que se piensa un
22300
22304
  * negocio, y prorratear gastos fijos sobre un rango libre confunde más de
22301
22305
  * lo que ayuda. */
@@ -22304,7 +22308,7 @@ var MonthlyPLQuerySchema = z97.object({
22304
22308
  var RESERVED_EXPENSE_LABEL_PREFIX = "__ad_spend__";
22305
22309
  var isReservedExpenseLabel = /* @__PURE__ */ __name((label) => label.trim().startsWith(RESERVED_EXPENSE_LABEL_PREFIX), "isReservedExpenseLabel");
22306
22310
  var SaveMonthlyExpenseSchema = z97.object({
22307
- operationId: z97.string().uuid().optional(),
22311
+ operationId: z97.string().guid().optional(),
22308
22312
  month: z97.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/).optional(),
22309
22313
  label: z97.string().trim().min(1).max(80).refine((label) => !isReservedExpenseLabel(label), {
22310
22314
  message: "reserved_expense_label"
@@ -22312,7 +22316,7 @@ var SaveMonthlyExpenseSchema = z97.object({
22312
22316
  /** Unidades mayores de la moneda; conserva decimales donde aplique. */
22313
22317
  amount: z97.number().finite().min(0),
22314
22318
  allocations: z97.array(z97.object({
22315
- operationId: z97.string().uuid(),
22319
+ operationId: z97.string().guid(),
22316
22320
  sharePct: z97.number().int().min(1).max(100)
22317
22321
  })).min(1).refine((allocations) => allocations.reduce((sum, one) => sum + one.sharePct, 0) <= 100, {
22318
22322
  message: "allocations_must_sum_to_100"
@@ -22321,7 +22325,7 @@ var SaveMonthlyExpenseSchema = z97.object({
22321
22325
  }).optional()
22322
22326
  }).strict();
22323
22327
  var DeleteMonthlyExpenseSchema = z97.object({
22324
- operationId: z97.string().uuid().optional(),
22328
+ operationId: z97.string().guid().optional(),
22325
22329
  month: z97.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/),
22326
22330
  label: z97.string().trim().min(1).max(80).refine((label) => !isReservedExpenseLabel(label), {
22327
22331
  message: "reserved_expense_label"
@@ -22329,11 +22333,11 @@ var DeleteMonthlyExpenseSchema = z97.object({
22329
22333
  }).strict();
22330
22334
  var SetAdSpendSchema = z97.object({
22331
22335
  month: z97.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/).optional(),
22332
- operationId: z97.string().uuid().optional(),
22336
+ operationId: z97.string().guid().optional(),
22333
22337
  amount: z97.number().finite().min(0).nullable()
22334
22338
  }).strict();
22335
22339
  var MonthlyExpensesQuerySchema = z97.object({
22336
- operationId: z97.string().uuid().optional(),
22340
+ operationId: z97.string().guid().optional(),
22337
22341
  month: z97.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/).optional()
22338
22342
  }).strict();
22339
22343
 
@@ -22362,13 +22366,13 @@ var ResolveUnmatchedProductSchema = z98.object({
22362
22366
  provider: z98.enum(PRODUCT_ALIAS_PROVIDERS),
22363
22367
  externalId: z98.string().trim().min(1).max(64),
22364
22368
  label: z98.string().trim().min(1).max(PRODUCT_ALIAS_LABEL_MAX_LENGTH),
22365
- operationId: z98.string().uuid(),
22369
+ operationId: z98.string().guid(),
22366
22370
  /** Presente ⇒ es el producto al que pertenece. Ausente ⇒ es uno nuevo. */
22367
- productControlId: z98.string().uuid().optional()
22371
+ productControlId: z98.string().guid().optional()
22368
22372
  }).strict();
22369
22373
  var MergeProductsSchema = z98.object({
22370
- sourceId: z98.string().uuid(),
22371
- targetId: z98.string().uuid()
22374
+ sourceId: z98.string().guid(),
22375
+ targetId: z98.string().guid()
22372
22376
  }).strict().refine((value) => value.sourceId !== value.targetId, {
22373
22377
  message: "merge_same_product",
22374
22378
  path: [
@@ -22376,8 +22380,8 @@ var MergeProductsSchema = z98.object({
22376
22380
  ]
22377
22381
  });
22378
22382
  var CreateProductControlFromTaskSchema = z98.object({
22379
- taskId: z98.string().uuid(),
22380
- operationId: z98.string().uuid().optional()
22383
+ taskId: z98.string().guid(),
22384
+ operationId: z98.string().guid().optional()
22381
22385
  }).strict();
22382
22386
 
22383
22387
  // ../../packages/types/src/product-order-line.ts
@@ -22425,7 +22429,7 @@ var ProductOrderLineSchema = z99.object({
22425
22429
  }).strict();
22426
22430
  var ORDER_LINES_BATCH_MAX = 5e3;
22427
22431
  var ImportOrderLinesSchema = z99.object({
22428
- operationId: z99.string().uuid(),
22432
+ operationId: z99.string().guid(),
22429
22433
  provider: z99.string().min(1).max(32),
22430
22434
  source: z99.string().min(1).max(32),
22431
22435
  reportedAt: z99.string().datetime(),
@@ -22451,7 +22455,7 @@ var ImportOrderLinesFileSchema = z99.object({
22451
22455
  /** El archivo en base64. `.xlsx` del proveedor. */
22452
22456
  fileBase64: z99.string().min(1).max(Math.ceil(8 * 1024 * 1024 / 3) * 4),
22453
22457
  filename: z99.string().min(1).max(200),
22454
- operationId: z99.string().uuid().optional(),
22458
+ operationId: z99.string().guid().optional(),
22455
22459
  provider: z99.string().min(1).max(32).default("dropi"),
22456
22460
  /**
22457
22461
  * Solo mirar: devuelve el resumen y NO escribe nada.
@@ -22485,7 +22489,7 @@ var OrderLinesFileSummarySchema = z99.object({
22485
22489
  });
22486
22490
  var SyncShopifyOrdersSchema = z99.object({
22487
22491
  shopDomain: z99.string().min(3).max(120).optional(),
22488
- operationId: z99.string().uuid().optional(),
22492
+ operationId: z99.string().guid().optional(),
22489
22493
  /** YYYY-MM-DD. Sin rango, el mes en curso. */
22490
22494
  since: z99.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional(),
22491
22495
  until: z99.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional()
@@ -22686,7 +22690,7 @@ var SaveProductControlCostingSchema = z100.object({
22686
22690
  /** El de Shopify, cuando el producto vive en la tienda. */
22687
22691
  shopifyProductId: z100.string().min(1).optional(),
22688
22692
  /** El NUESTRO, para el producto que nació del archivo del proveedor. */
22689
- productControlId: z100.string().uuid().optional(),
22693
+ productControlId: z100.string().guid().optional(),
22690
22694
  /** Su precio de venta, solo si el producto no vive en Shopify. */
22691
22695
  manualSellingPrice: z100.number().positive().nullable().optional(),
22692
22696
  targetCountry: z100.string().min(2).max(2),
@@ -22726,7 +22730,7 @@ var SaveProductControlCostingSchema = z100.object({
22726
22730
  });
22727
22731
  var SaveProductCatalogSchema = z100.object({
22728
22732
  shopDomain: z100.string().min(1).optional(),
22729
- productControlId: z100.string().uuid(),
22733
+ productControlId: z100.string().guid(),
22730
22734
  /** Nulo BORRA la meta. Cero sería una meta de no ganar nada. */
22731
22735
  targetMonthlyProfit: z100.number().finite().positive().nullable().optional(),
22732
22736
  lifecycleStatus: z100.enum([
@@ -22749,7 +22753,7 @@ var ProductControlCampaignFieldsSchema = z100.object({
22749
22753
  }).strict();
22750
22754
  var LinkProductControlCampaignSchema = z100.union([
22751
22755
  ProductControlCampaignFieldsSchema.extend({
22752
- productControlId: z100.string().uuid()
22756
+ productControlId: z100.string().guid()
22753
22757
  }).strict(),
22754
22758
  ProductControlCampaignFieldsSchema.extend({
22755
22759
  shopDomain: z100.string().min(1),
@@ -22896,7 +22900,7 @@ var ImportFulfillmentCountsResponseSchema = z100.object({
22896
22900
  });
22897
22901
  var CreateManualProductControlSchema = z100.object({
22898
22902
  /** UUID que el diálogo fija por apertura; es además el id del producto. */
22899
- requestId: z100.string().uuid(),
22903
+ requestId: z100.string().guid(),
22900
22904
  title: z100.string().trim().min(1).max(200),
22901
22905
  /** País donde vende este producto; la moneda sale de él en el servidor. */
22902
22906
  targetCountry: z100.string().regex(/^[A-Z]{2}$/).refine((code) => {
@@ -22908,7 +22912,7 @@ var CreateManualProductControlSchema = z100.object({
22908
22912
  }
22909
22913
  }, "unsupported_finance_country"),
22910
22914
  /** Solo cuando coincide con el país elegido; si no, se omite. */
22911
- operationId: z100.string().uuid().optional(),
22915
+ operationId: z100.string().guid().optional(),
22912
22916
  manualSellingPrice: z100.number().finite().positive().max(Number.MAX_SAFE_INTEGER),
22913
22917
  supplierCost: z100.number().finite().positive().max(Number.MAX_SAFE_INTEGER),
22914
22918
  shippingCost: z100.number().finite().nonnegative().max(Number.MAX_SAFE_INTEGER),
@@ -22926,7 +22930,7 @@ var CreateManualProductControlSchema = z100.object({
22926
22930
  }
22927
22931
  });
22928
22932
  var CreateManualProductControlResponseSchema = z100.object({
22929
- productControlId: z100.string().uuid(),
22933
+ productControlId: z100.string().guid(),
22930
22934
  created: z100.boolean()
22931
22935
  });
22932
22936
 
@@ -23017,7 +23021,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23017
23021
  "approve_video_script",
23018
23022
  // 2026-10-14: optional exact plan binding shared by legacy/unified review.
23019
23023
  // Hash captured from the real registered schema in apps/mcp/src/server.test.ts.
23020
- "242c9ce8db5e19c065d67d2e3f3cf9fca20e119b9485bcf854a2233832523b0b",
23024
+ "5f7722993798d952d4a920a9bc7929a8c6a54f8ca13bff1b824d555dd680a6d2",
23021
23025
  "credit_consuming",
23022
23026
  "creative",
23023
23027
  [
@@ -23059,7 +23063,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23059
23063
  ], [
23060
23064
  "staging_asset"
23061
23065
  ], WHATSAPP_ONLY_CHANNEL_EXPOSURE),
23062
- defineCapability("check_media_upload", "daf202e0ff3a7a14425d164a7be6a81922b12233e85dbb898894e7c3ba6c5876", "none", "read_only", [
23066
+ defineCapability("check_media_upload", "58acbc7574d140389efbddfd45e660a353429681891b3d85a08b74351bb5acab", "none", "read_only", [
23063
23067
  "read"
23064
23068
  ], [
23065
23069
  slot("upload_session", true, [
@@ -23070,7 +23074,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23070
23074
  ], [
23071
23075
  "uploaded_asset"
23072
23076
  ], MCP_ONLY_CHANNEL_EXPOSURE),
23073
- defineCapability("cost_dropshipping_project", "411c0e362f132e564d5f948f8d87e3ae55f03dad7d02d8224b949b899a187359", "state_change", "business", [
23077
+ defineCapability("cost_dropshipping_project", "fead3bca76b7531c52020cd64135072593783fe12c0c605865a08f1d7d028001", "state_change", "business", [
23074
23078
  "state_change"
23075
23079
  ], [
23076
23080
  slot("project_revision", true, [
@@ -23107,7 +23111,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23107
23111
  ], [
23108
23112
  "project_costing"
23109
23113
  ]),
23110
- defineCapability("cost_product", "6d1f85a999dbdabae4eda406ff4689cdff2016df375b5b6741b91f4308d819af", "none", "read_only", [
23114
+ defineCapability("cost_product", "2272a6a3375401ced9deba82e41796b037aef20d712bc7996221e7fee0d7a4d7", "none", "read_only", [
23111
23115
  "read"
23112
23116
  ], [
23113
23117
  slot("product_reference", false, [], [
@@ -23151,7 +23155,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23151
23155
  // MCP 8.6.0: + storyteller narrative family and animationStyle axis.
23152
23156
  // MCP 8.10.0: storyteller family blocked (BLOCKED_NARRATIVE_STYLES).
23153
23157
  // MCP 9.1.0: combine current animated-video controls and initial GIF choice.
23154
- "3e02399a7785df328f1c4d63cfbb6d7481abaac9f91d4a5cf51d410e657d63aa",
23158
+ "5991b2e897aad7b10c4e38a93e8c58234741498393439cf0228ed9ffd966efef",
23155
23159
  "credit_consuming",
23156
23160
  "creative",
23157
23161
  [
@@ -23209,7 +23213,8 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23209
23213
  // MCP 8.10.0: storyteller family blocked (BLOCKED_NARRATIVE_STYLES).
23210
23214
  // MCP 9.1.0: combine current animated-video controls and initial GIF choice.
23211
23215
  // MCP 12.4.0: landingStrategy narrowed to classic + social_proof.
23212
- "c35f8c65762db3ea077b09f5f165e5571abea0f40250e4c096d1ef7cad7e5f7a",
23216
+ // MCP 12.5.0: pain_solution restored to landingStrategy.
23217
+ "68a740d97238e720000c16db56ae5748ceb560e342f8fbfe605c954e6284fda7",
23213
23218
  "credit_consuming",
23214
23219
  "creative",
23215
23220
  [
@@ -23369,7 +23374,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23369
23374
  // SHARED_CHANNEL_EXPOSURE to restore it.
23370
23375
  WHATSAPP_ONLY_CHANNEL_EXPOSURE
23371
23376
  ),
23372
- defineCapability("edit_image_creative", "50eca473829328dfb63b9cbae03a9835b79c510e29528563e09b7eb3e5e9bca4", "credit_consuming", "creative", [
23377
+ defineCapability("edit_image_creative", "eb487773c4a9ffd5d4472c5a1d77e0fef7b625dbf9ca15b5da700a903ba30945", "credit_consuming", "creative", [
23373
23378
  "credit_consuming",
23374
23379
  "state_change"
23375
23380
  ], [
@@ -23388,7 +23393,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23388
23393
  ], [
23389
23394
  "creative"
23390
23395
  ]),
23391
- defineCapability("get_image_edit_status", "fe59aefd433afe7e5a2d8b4a81084583750c1447c877b6bce698340326665141", "none", "read_only", [
23396
+ defineCapability("get_image_edit_status", "3feb680140ab8459c10c22fb3aba3a7d41e147fddfcdd7e4cdac050c0f7ea34e", "none", "read_only", [
23392
23397
  "read"
23393
23398
  ], [
23394
23399
  slot("creative_operation", true, [
@@ -23400,7 +23405,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23400
23405
  ], [
23401
23406
  "creative_edit_status"
23402
23407
  ], MCP_ONLY_CHANNEL_EXPOSURE),
23403
- defineCapability("edit_task_draft", "1c9343bdce51aac36ec6254557c8a904037746523168527f012b4c5b6361e98e", "state_change", "creative", [
23408
+ defineCapability("edit_task_draft", "6df71b63f0c00ba9eac12f31fb0b71610225ece74df85032025bb77197bb7c22", "state_change", "creative", [
23404
23409
  "state_change"
23405
23410
  ], [
23406
23411
  slot("task_angle", true, [
@@ -23415,7 +23420,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23415
23420
  ], [
23416
23421
  "task_draft"
23417
23422
  ]),
23418
- defineCapability("estimate_creative_variant", "d4453364c0706bf88f480cebc977916f06d222d7eebebc9cfa91165929a1a998", "none", "read_only", [
23423
+ defineCapability("estimate_creative_variant", "468079ba24e5e0d3c5c707cd54fec64571be429e66cadc12019af4d6e9d10c4e", "none", "read_only", [
23419
23424
  "read"
23420
23425
  ], [
23421
23426
  slot("source_task", true, [
@@ -23437,7 +23442,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23437
23442
  ], [
23438
23443
  "cost_estimate"
23439
23444
  ]),
23440
- defineCapability("estimate_market_study_cost", "d89b2ddfd5020446d7d2b58001b75eedb8f737bc17d908bdbdde1a1c9120f387", "none", "read_only", [
23445
+ defineCapability("estimate_market_study_cost", "d1fbe8ead642d481258c419a1eed059f9c8188d1cd9f2d4eed12e202fc8800a4", "none", "read_only", [
23441
23446
  "read"
23442
23447
  ], [
23443
23448
  slot("creative_kind", true, [
@@ -23462,7 +23467,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23462
23467
  ], [
23463
23468
  "cost_estimate"
23464
23469
  ], MCP_ONLY_CHANNEL_EXPOSURE),
23465
- defineCapability("find_winning_products", "7c4c4fd675f8c1ae9795bd6c7a379207a08cbf9ac5794593b76122294c31e818", "credit_consuming", "business", [
23470
+ defineCapability("find_winning_products", "b73a18bb9618b96067b17791bf2f8e7450e17e34881c4f997e117be89abe058d", "credit_consuming", "business", [
23466
23471
  "credit_consuming",
23467
23472
  "state_change"
23468
23473
  ], [
@@ -23490,7 +23495,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23490
23495
  // from `pnpm --filter @productmaker/mcp test` printing the real digest.
23491
23496
  // Re-baselined 2026-09-26: `idempotencyKey` field description corrected —
23492
23497
  // paid tools ignore caller-provided keys and derive their own semantic key.
23493
- "0e21a9ae925347de20cad321161cb3af0f6a4f9e342c5c7139baf8de70056734",
23498
+ "e9ae8370da117bae121714da12b78f234e07a0805093bce354d7fb9fcec2291e",
23494
23499
  "credit_consuming",
23495
23500
  "creative",
23496
23501
  [
@@ -23549,7 +23554,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23549
23554
  "video"
23550
23555
  ]
23551
23556
  ),
23552
- defineCapability("generate_image_creatives", "2f1698b623d98645b7c618a17988f3aac30f403a9c3f3dc26eb5bdbd9c6ef23e", "credit_consuming", "creative", [
23557
+ defineCapability("generate_image_creatives", "f0d1f771d83c50070ebdef6554072e984997336cb9b7f7f06acd818b021a0187", "credit_consuming", "creative", [
23553
23558
  "credit_consuming",
23554
23559
  "state_change"
23555
23560
  ], [
@@ -23655,7 +23660,8 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23655
23660
  defineCapability(
23656
23661
  "generate_landing",
23657
23662
  // MCP 12.4.0: guided landingStrategy narrowed to classic + social_proof.
23658
- "d3ef2376273a5a1b987c79182e63ff00a03de322e1a13e0dc69f7ffa8330536e",
23663
+ // MCP 12.5.0: pain_solution restored to guided landingStrategy.
23664
+ "16c4e1ea0cd12ee3367e06b4f73a177c94e16ab7d5323d971d577301ba2c7b70",
23659
23665
  "credit_consuming",
23660
23666
  "creative",
23661
23667
  [
@@ -23768,7 +23774,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23768
23774
  // MCP 8.6.0: + storyteller narrative family and animationStyle axis.
23769
23775
  // MCP 8.10.0: storyteller family blocked (BLOCKED_NARRATIVE_STYLES).
23770
23776
  // MCP 9.1.0: combine current animated-video controls and initial GIF choice.
23771
- "f6cb1097e049216da08e1fb130e53e53761c13198cbb76d56e78fbf2e35441c1",
23777
+ "66dee35d59da0e88e72e24c503f3f1dc46c17c1162d98d48705e2bfe552f3f02",
23772
23778
  "credit_consuming",
23773
23779
  "creative",
23774
23780
  [
@@ -23889,7 +23895,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23889
23895
  }
23890
23896
  ]
23891
23897
  ),
23892
- defineCapability("get_meta_campaign_status", "92077241cf4e9d14edefca410e85715cc383b1433081c3461c925f8fc3d6e8ab", "none", "read_only", [
23898
+ defineCapability("get_meta_campaign_status", "a89fa144b69309bffd3d402c63ab6697757c447022d4af2a20d321f084efb274", "none", "read_only", [
23893
23899
  "read"
23894
23900
  ], [
23895
23901
  slot("campaign", true, [
@@ -23900,7 +23906,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23900
23906
  ], [
23901
23907
  "campaign_status"
23902
23908
  ]),
23903
- defineCapability("get_product_research_run", "3d0bfa4409daa4a8126d18787c3dc619dbdf2fbb679a2cffe9ffcd1c0d96402f", "none", "read_only", [
23909
+ defineCapability("get_product_research_run", "fd6d6260b4c9cf9cac5c0d210ceec54f99825d6214f7e3625622e82305e69550", "none", "read_only", [
23904
23910
  "read"
23905
23911
  ], [
23906
23912
  slot("research_run", true, [
@@ -23911,7 +23917,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23911
23917
  ], [
23912
23918
  "product_research_run"
23913
23919
  ]),
23914
- defineCapability("get_task_status", "6876d865685dd371ae6c2da2d5a69b657731e5a032aff46ac95b6077e9a6d93e", "none", "read_only", [
23920
+ defineCapability("get_task_status", "308241071b3ec785b1f0eba0fc17383e9fe8f2452c6a5a5ef27fd792a99b9d4c", "none", "read_only", [
23915
23921
  "read"
23916
23922
  ], [
23917
23923
  slot("task", true, [
@@ -23925,7 +23931,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23925
23931
  ], [
23926
23932
  "task_status"
23927
23933
  ]),
23928
- defineCapability("get_tiktok_campaign_status", "7a2f90a9a9ba91506fbb57a0a881d5a7b9ca1bb1074b0a754520f02fd81b2801", "none", "read_only", [
23934
+ defineCapability("get_tiktok_campaign_status", "e19b1536d8e317185fb9662a244cc1e94986004b5a4bf84beaf473b5de28562f", "none", "read_only", [
23929
23935
  "read"
23930
23936
  ], [
23931
23937
  slot("campaign", true, [
@@ -23939,7 +23945,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23939
23945
  ], [
23940
23946
  "campaign_status"
23941
23947
  ]),
23942
- defineCapability("get_video_script", "e987ff48555dfdab439f9910fb1fa25af373c78c8a9a5ef26458c82add90f2a2", "none", "read_only", [
23948
+ defineCapability("get_video_script", "1de9980596c34b71ce8843c090549cf310ed52933f53c2b9c3fca13204441d64", "none", "read_only", [
23943
23949
  "read"
23944
23950
  ], [
23945
23951
  slot("task", true, [
@@ -23953,7 +23959,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23953
23959
  ], [
23954
23960
  "video_script"
23955
23961
  ]),
23956
- defineCapability("guide_dropshipping_launch", "0e7a1cb5ad5c6681473df5689336edcd7a63b8d68853359982e44bfd98a65db8", "none", "business", [
23962
+ defineCapability("guide_dropshipping_launch", "1ab3654ed7ef02fbc7b690826a475f27839a3402ca301b8cf26992c11e8f7cf8", "none", "business", [
23957
23963
  "read"
23958
23964
  ], [
23959
23965
  slot("project", false, [
@@ -23975,7 +23981,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23975
23981
  "get_actor_voice_capabilities",
23976
23982
  // Filled by the MCP schema fingerprint test (sha256 of the canonicalized
23977
23983
  // inputSchema) — run apps/mcp server.test.ts to compute.
23978
- "4c31630c2796cbcf250b58f2205c7f5882ac53ad0c9ac7fe929f1b6de78952a5",
23984
+ "862c210dd3c6bf0584ac61deb84617ecb41bf0219098995a1c5b84133af33239",
23979
23985
  "none",
23980
23986
  "read_only",
23981
23987
  [
@@ -23994,7 +24000,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
23994
24000
  ],
23995
24001
  MCP_ONLY_CHANNEL_EXPOSURE
23996
24002
  ),
23997
- defineCapability("quote_actor_voice", "5b1deafe387305bc268cd8d58761860b4c02bf10f0c5cd455925f96b40e7b24d", "none", "read_only", [
24003
+ defineCapability("quote_actor_voice", "4d2e9a643abf4cfe5e02789fed36cdfebc9ede6ab4557d0e5be1e4edb46fb836", "none", "read_only", [
23998
24004
  "read"
23999
24005
  ], [
24000
24006
  slot("actor", true, [
@@ -24008,7 +24014,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24008
24014
  ], [
24009
24015
  "actor_voice_quote"
24010
24016
  ], MCP_ONLY_CHANNEL_EXPOSURE),
24011
- defineCapability("generate_actor_voice_preview", "e0c856beacda2344fb0830b5822848c01e82f1b6a7749176e8973c07d5a7c769", "credit_consuming", "creative", [
24017
+ defineCapability("generate_actor_voice_preview", "cb5a0033621df9bc88f4dcea658885eb35a4ebdc6ef88865c3d8afbe3b229548", "credit_consuming", "creative", [
24012
24018
  "credit_consuming",
24013
24019
  "state_change"
24014
24020
  ], [
@@ -24032,7 +24038,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24032
24038
  ], MCP_ONLY_CHANNEL_EXPOSURE),
24033
24039
  defineCapability(
24034
24040
  "get_actor_voice_preview",
24035
- "58cc8667847be5e521534d6a19853782b9d4c65539ede8eaa5dbe7815e10ae3f",
24041
+ "b28f1c7d7e7981ed672509398242b7b7256e2ab44185699e6a0ecd8f39882761",
24036
24042
  "none",
24037
24043
  "creative",
24038
24044
  // Recovery uses the original accepted quote; it must not ask to pay again.
@@ -24057,7 +24063,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24057
24063
  ],
24058
24064
  MCP_ONLY_CHANNEL_EXPOSURE
24059
24065
  ),
24060
- defineCapability("approve_actor_voice", "ae77a93a483b24e9ec79322ac5a7ed39372517c196488b04b3cdfd2ef5205784", "state_change", "creative", [
24066
+ defineCapability("approve_actor_voice", "5b1c61b992dce69b35f9fb1a388bbd73d41c99575fa86b72121b043045254944", "state_change", "creative", [
24061
24067
  "state_change"
24062
24068
  ], [
24063
24069
  slot("actor", true, [
@@ -24091,7 +24097,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24091
24097
  ], [
24092
24098
  "meta_destination"
24093
24099
  ]),
24094
- defineCapability("list_product_research_runs", "3b8fac903cd9e30c5b6a6c584cc70a819af5392bbdbb32b69eab4c65dc52b556", "none", "read_only", [
24100
+ defineCapability("list_product_research_runs", "ee2d750bfd65a34a9c16bb39dac584fe0784956eaf7b0428a88b1e886846f2af", "none", "read_only", [
24095
24101
  "read"
24096
24102
  ], [
24097
24103
  slot("pagination", false, [
@@ -24102,7 +24108,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24102
24108
  ], [
24103
24109
  "product_research_run"
24104
24110
  ]),
24105
- defineCapability("list_shopify_products", "152b137e01066f3b443987ad75f5be00de8696ce984144bd775416192be20667", "none", "read_only", [
24111
+ defineCapability("list_shopify_products", "c3daf527e345f737c8b23eb347b77fbf2290433257753122a8d55fdc65d58e78", "none", "read_only", [
24106
24112
  "read"
24107
24113
  ], [
24108
24114
  slot("shop", true, [
@@ -24126,7 +24132,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24126
24132
  ], [
24127
24133
  "shop"
24128
24134
  ]),
24129
- defineCapability("list_tasks", "cac5e9dda34b90550024cc546976fab1d6de4fc8fca85a3ec6abde65223cb56c", "none", "read_only", [
24135
+ defineCapability("list_tasks", "4a553c287e590c2dcb905c63eb92c8612093a82476093b9f55c0821cad486598", "none", "read_only", [
24130
24136
  "read"
24131
24137
  ], [
24132
24138
  slot("pagination", false, [
@@ -24148,7 +24154,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24148
24154
  ], [
24149
24155
  "tiktok_advertiser"
24150
24156
  ]),
24151
- defineCapability("publish_creatives_to_meta", "dff962c84ed7d0393444dcbe86cb6f4016b5928c1d0005f78ce9a365f1923ac3", "external_mutation", "publishing", [
24157
+ defineCapability("publish_creatives_to_meta", "d9b8961cb26c2357f45b0ed95eae479affc840742b5b09620a67ce325568cbee", "external_mutation", "publishing", [
24152
24158
  "external_mutation",
24153
24159
  "state_change"
24154
24160
  ], [
@@ -24183,7 +24189,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24183
24189
  ], [
24184
24190
  "meta_campaign"
24185
24191
  ]),
24186
- defineCapability("publish_to_meta", "2d2946fbb796cc8198acfed5e15935c690516259a9bfa9e9a75d1fb33548eef2", "external_mutation", "publishing", [
24192
+ defineCapability("publish_to_meta", "663d574b4aa005a5df41f6b8ff458e3f983f874fe6caef94ab0ae8a1477f70bb", "external_mutation", "publishing", [
24187
24193
  "external_mutation",
24188
24194
  "state_change"
24189
24195
  ], [
@@ -24221,7 +24227,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24221
24227
  ], [
24222
24228
  "meta_publication"
24223
24229
  ]),
24224
- defineCapability("publish_to_shopify", "e041e404ad9f6cf49231c9bc38df22e6bd0aa6e4082b4ab8dc655a132b79873f", "external_mutation", "publishing", [
24230
+ defineCapability("publish_to_shopify", "00c4c7af09bb45a72896118ca154a2dc9518f05d74bb9386c825be541fa10fdb", "external_mutation", "publishing", [
24225
24231
  "external_mutation",
24226
24232
  "state_change"
24227
24233
  ], [
@@ -24264,7 +24270,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24264
24270
  // capability set unchanged, so the live agent's parity gate (which forces
24265
24271
  // shadow mode on any canonical gap) is not tripped. Gated server-side by
24266
24272
  // SERVICE_MOTION_GRAPHICS_ENABLED + the `service-motion-graphics` feature.
24267
- defineCapability("create_animated_video", "1d375b3ad4f60d9337009cb86209d66f05da127fdf2748c1cf9d36503e4dce5c", "credit_consuming", "creative", [
24273
+ defineCapability("create_animated_video", "2177ed726e767978eb61fa007f621b389f3b1eb3a2da967fdb44c279bf20fecd", "credit_consuming", "creative", [
24268
24274
  "credit_consuming",
24269
24275
  "state_change"
24270
24276
  ], [
@@ -24315,7 +24321,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24315
24321
  // MCP-only service journey (2026-10-11): brand analysis → service landing →
24316
24322
  // create_animated_video. WhatsApp has no adapter for either, so both are
24317
24323
  // declared unavailable there and its parity gate is unchanged.
24318
- defineCapability("create_brand", "7f5680574f38f1005d162c2a2a3805be82896508793ebcdd5491b8459c803158", "credit_consuming", "creative", [
24324
+ defineCapability("create_brand", "0dba1e46eaaf3ae6ffda459de7eebbdfb2f04da1180b21f84ae4caae434dbbcf", "credit_consuming", "creative", [
24319
24325
  "credit_consuming",
24320
24326
  "state_change"
24321
24327
  ], [
@@ -24338,7 +24344,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24338
24344
  ], [
24339
24345
  "brand"
24340
24346
  ], MCP_ONLY_CHANNEL_EXPOSURE),
24341
- defineCapability("create_service_landing", "ce99d75f4b00bea23b6bf4f56ef3331b266176cb0a9dead55611ee78d21c41b3", "credit_consuming", "creative", [
24347
+ defineCapability("create_service_landing", "9e0f68278d2daa3bcf0326dd8e796d4dc82423f850c765efd48881c99f04a14f", "credit_consuming", "creative", [
24342
24348
  "credit_consuming",
24343
24349
  "state_change"
24344
24350
  ], [
@@ -24363,7 +24369,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24363
24369
  ], [
24364
24370
  "service_landing"
24365
24371
  ], MCP_ONLY_CHANNEL_EXPOSURE),
24366
- defineCapability("create_service_images", "ce729a35f8781dd301514075e2e4408b6660db7523e3705ff2c8cbde571cddf6", "credit_consuming", "creative", [
24372
+ defineCapability("create_service_images", "937e86a1b0e3e0678a029062cddb0a9b632c8bcbb9864225f66488e3e2abdbed", "credit_consuming", "creative", [
24367
24373
  "credit_consuming",
24368
24374
  "state_change"
24369
24375
  ], [
@@ -24400,7 +24406,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24400
24406
  ], MCP_ONLY_CHANNEL_EXPOSURE),
24401
24407
  // MCP-only recovery of an existing code edit. WhatsApp has no code-landing
24402
24408
  // editor or edit receipt input; it hands this recovery to ProductMaker Web.
24403
- defineCapability("verify_landing_commerce", "4b98ea73f291428fa19ec91ec37deb44a776b76cb19b0d47aef20ee905da7d10", "external_mutation", "publishing", [
24409
+ defineCapability("verify_landing_commerce", "f6dcbfbf8e90c39246f0b377745cd2c6c0f76f314c9736a257087c6d00a90f29", "external_mutation", "publishing", [
24404
24410
  "read",
24405
24411
  "state_change",
24406
24412
  "external_mutation"
@@ -24419,7 +24425,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24419
24425
  defineCapability(
24420
24426
  "publish_to_tiktok",
24421
24427
  // MCP 11.7.0: native WhatsApp destination and major-currency budget inputs.
24422
- "50b932193b62929498ae342417427ef84b1982eb7620c6baffb62c8fb986e66e",
24428
+ "ce6e6572583a615203835f6e191a50883ba00f95b8813b3c2bc3d5d92746b24f",
24423
24429
  "external_mutation",
24424
24430
  "publishing",
24425
24431
  [
@@ -24457,7 +24463,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24457
24463
  "tiktok_publication"
24458
24464
  ]
24459
24465
  ),
24460
- defineCapability("prepare_winning_product_image", "6915790d22256a648374412ac4d11126fe3fabc9404f4552205057f9da3ce0db", "none", "business", [
24466
+ defineCapability("prepare_winning_product_image", "51c4795176c13b67901e2aad161124598675c7e5ae476b35a63be5b06906ccca", "none", "business", [
24461
24467
  "state_change"
24462
24468
  ], [
24463
24469
  slot("winner_reference", true, [
@@ -24469,7 +24475,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24469
24475
  ], [
24470
24476
  "product_media"
24471
24477
  ], MCP_ONLY_CHANNEL_EXPOSURE),
24472
- defineCapability("regenerate_video_script", "eb9546e5cda3864de78ff119ae81dd17c893ea9ea5be1bf0fbfeb8b45302e639", "credit_consuming", "creative", [
24478
+ defineCapability("regenerate_video_script", "e68fa5f4f6adb37c4275c60dcb6983d14655a030450c0ed75012044cff0aa29c", "credit_consuming", "creative", [
24473
24479
  "credit_consuming",
24474
24480
  "state_change"
24475
24481
  ], [
@@ -24509,7 +24515,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24509
24515
  ], [
24510
24516
  "meta_upload_session"
24511
24517
  ], WHATSAPP_ONLY_CHANNEL_EXPOSURE),
24512
- defineCapability("request_media_upload", "9a50a4647c61f97fb12bbb9b25f7660f392e3cd9825151735cd66292058882ea", "none", "creative", [
24518
+ defineCapability("request_media_upload", "ab70248efd499351ff119e5563e31185040b57e42ccc0e09efe6b6fbeea794a5", "none", "creative", [
24513
24519
  "state_change"
24514
24520
  ], [
24515
24521
  slot("media_kind", true, [
@@ -24532,7 +24538,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24532
24538
  ], [
24533
24539
  "media_upload_session"
24534
24540
  ], MCP_ONLY_CHANNEL_EXPOSURE),
24535
- defineCapability("resolve_pending_action", "9377ff126ec842cfb8278877846c5f8f6f1b9ba0c263e7200f080db9bbe9ae12", "credit_consuming", "creative", [
24541
+ defineCapability("resolve_pending_action", "a7fef1e3299c2bfb387a16b3e1e243fba8df1db961ebc1f27d2119209124c293", "credit_consuming", "creative", [
24536
24542
  "credit_consuming",
24537
24543
  "state_change"
24538
24544
  ], [
@@ -24568,7 +24574,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24568
24574
  ], [
24569
24575
  "task"
24570
24576
  ]),
24571
- defineCapability("start_dropshipping_project", "2b621702e8da8bb894d392060e5e4f677a8dc26f454e991dbb929053715a4f8b", "state_change", "business", [
24577
+ defineCapability("start_dropshipping_project", "996385df905ed85a933c5726fbebf5a29a98f29364badd8256ff306aff38797c", "state_change", "business", [
24572
24578
  "state_change"
24573
24579
  ], [
24574
24580
  slot("origin", true, [
@@ -24589,7 +24595,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24589
24595
  ], [
24590
24596
  "dropshipping_project"
24591
24597
  ]),
24592
- defineCapability("get_daily_control", "d2ee70df5be00618ad23ef558f91e0066e03a69547a4f2d9310bf9ae51ae9a03", "none", "read_only", [
24598
+ defineCapability("get_daily_control", "f68e63aeda284d8f07040f6ec55c84ba5e55a515667a20bfe3a60268a6827130", "none", "read_only", [
24593
24599
  "read"
24594
24600
  ], [
24595
24601
  slot("window_end", false, [
@@ -24607,7 +24613,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24607
24613
  ], [
24608
24614
  "daily_control_report"
24609
24615
  ]),
24610
- defineCapability("link_campaign_to_project", "42785a9781412e0ad7cf7095b7188f315dea4003002777d5a4b1b9cc79ea05e0", "state_change", "business", [
24616
+ defineCapability("link_campaign_to_project", "1a6d51234a38259e9fa00475c76919742818efb32491a75ffa768ff9fede4013", "state_change", "business", [
24611
24617
  "state_change"
24612
24618
  ], [
24613
24619
  slot("project", true, [
@@ -24627,7 +24633,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24627
24633
  ], [
24628
24634
  "campaign_link"
24629
24635
  ]),
24630
- defineCapability("list_importable_products", "8f3e48f6494c85a3fab82163e11536d9d48aa77b058153efaabf4263548a8f02", "none", "read_only", [
24636
+ defineCapability("list_importable_products", "30404855a9d9c61bd437703f0287041ac77bf997fb7c6e5c7dafdf68712020a9", "none", "read_only", [
24631
24637
  "read"
24632
24638
  ], [
24633
24639
  slot("search", false, [
@@ -24644,7 +24650,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24644
24650
  ], [
24645
24651
  "importable_product_page"
24646
24652
  ]),
24647
- defineCapability("import_product_controls", "b9dae191963ae88ad33060db64eedd1cb63856108f18dbec0e8a039b05117d99", "state_change", "business", [
24653
+ defineCapability("import_product_controls", "f0e1de3062389541317f1351977e77fdcb50ee5d0d5251bbc1f1e7e2ab034515", "state_change", "business", [
24648
24654
  "state_change"
24649
24655
  ], [
24650
24656
  slot("products", true, [
@@ -24661,7 +24667,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24661
24667
  ], [
24662
24668
  "product_control"
24663
24669
  ]),
24664
- defineCapability("set_product_costing", "cce7a31e434c7a1f0af2e3ecaf591eb63c6e3570c466c29e2cab00432ab26bc9", "state_change", "business", [
24670
+ defineCapability("set_product_costing", "de1353c7061d00bf793ecc789c0300c6dd54f758dbff86b10915a51592a99df9", "state_change", "business", [
24665
24671
  "state_change"
24666
24672
  ], [
24667
24673
  /* La identidad sin tienda solo existe en el contrato MCP: el
@@ -24699,7 +24705,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24699
24705
  ], [
24700
24706
  "product_control_costing"
24701
24707
  ]),
24702
- defineCapability("get_product_control", "9d448f8cb2d40fa6547f7265bf908925375c33d891993c1f6e8cae5409729f32", "none", "read_only", [
24708
+ defineCapability("get_product_control", "cc67eec02bc5fba649e705078ecebf4703a3e3e25b9d3189921a7e2bae7f6c0c", "none", "read_only", [
24703
24709
  "read"
24704
24710
  ], [
24705
24711
  slot("day", false, [
@@ -24717,7 +24723,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24717
24723
  ], [
24718
24724
  "product_control_report"
24719
24725
  ]),
24720
- defineCapability("report_product_counts", "0d2eb30d9be73cd818a149af365b165ad5739a36ffb591149f9735bfd9636773", "state_change", "business", [
24726
+ defineCapability("report_product_counts", "8fa2561901b7743506a3639038d7806186c0512470bc6988a54c6bee5dbbb0b0", "state_change", "business", [
24721
24727
  "state_change"
24722
24728
  ], [
24723
24729
  slot("product_control", true, [
@@ -24746,7 +24752,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24746
24752
  ], [
24747
24753
  "product_control_daily_counts"
24748
24754
  ]),
24749
- defineCapability("get_finances", "da5fdd11b49980f85dcee63386e5b443786f65581612ce9333770a631e1ccf45", "none", "read_only", [
24755
+ defineCapability("get_finances", "bb57d3594b204597e9abd2d9beb7df644d07f5683a159d4de1860fa9d03aa5b4", "none", "read_only", [
24750
24756
  "read"
24751
24757
  ], [
24752
24758
  slot("month", false, [
@@ -24760,7 +24766,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24760
24766
  ], [
24761
24767
  "monthly_pl"
24762
24768
  ]),
24763
- defineCapability("sync_shopify_orders", "6a43ef95dc4d4943292416d0f3ef71da9ae19a16593bf76a294ef4b3f8f0eaac", "state_change", "business", [
24769
+ defineCapability("sync_shopify_orders", "0f821de23aa171e89e7e03c1910be57d8dbd878491cbad45a43c4540b4872910", "state_change", "business", [
24764
24770
  "state_change"
24765
24771
  ], [
24766
24772
  slot("shop", false, [
@@ -24780,7 +24786,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24780
24786
  ], [
24781
24787
  "product_order_line"
24782
24788
  ]),
24783
- defineCapability("import_orders_file", "d4691f530dee83c40613d70b2830dc91fb21f5822449601caeaaab409622911c", "state_change", "business", [
24789
+ defineCapability("import_orders_file", "449352851f20e229d488fd10dcfde682774d5c6ef0c66294bedfd6da8d1d93e9", "state_change", "business", [
24784
24790
  "state_change"
24785
24791
  ], [
24786
24792
  slot("orders_file", true, [
@@ -24802,7 +24808,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24802
24808
  ], [
24803
24809
  "product_order_line"
24804
24810
  ]),
24805
- defineCapability("create_operation", "0e610436a98cec2815216d526294da3cfc835830bb960e5dc0381d65b6edf9e5", "state_change", "business", [
24811
+ defineCapability("create_operation", "569501e4e03e6f1782fcf7458e752864804b1ffaa9eb7bd9522e05260939c938", "state_change", "business", [
24806
24812
  "state_change"
24807
24813
  ], [
24808
24814
  slot("country", true, [
@@ -24816,7 +24822,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24816
24822
  ], [
24817
24823
  "finance_operation"
24818
24824
  ]),
24819
- defineCapability("merge_products", "062d0afbedc3309c61cb7eaaf1902a05e2725897f04f5e79ad7e354ac8f05f21", "state_change", "business", [
24825
+ defineCapability("merge_products", "8519963a68603ed7f4a2a82d24e43f317f0a9840e7fd7ba5a90832c4f4a6bcaf", "state_change", "business", [
24820
24826
  "state_change"
24821
24827
  ], [
24822
24828
  slot("source_product", true, [
@@ -24830,7 +24836,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24830
24836
  ], [
24831
24837
  "product_control"
24832
24838
  ]),
24833
- defineCapability("set_monthly_expense", "2ad9958b36fbfc6d665ff1fb33e8fbd446b01d71fc60dcc0b2074fcf8770f2c1", "state_change", "business", [
24839
+ defineCapability("set_monthly_expense", "5ff786a29b44e1961c31fa30decd779d0a18fdf4d7a0bdff7fe130eda59640a4", "state_change", "business", [
24834
24840
  "state_change"
24835
24841
  ], [
24836
24842
  slot("expense_label", true, [
@@ -24850,7 +24856,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24850
24856
  ], [
24851
24857
  "monthly_expense"
24852
24858
  ]),
24853
- defineCapability("set_ad_spend", "edbf19766900aafde76ad5b203fd5c9ecbd3e976705b67ab82867a303a6fa6c9", "state_change", "business", [
24859
+ defineCapability("set_ad_spend", "45f5515a91679304c27f2753ec568bcfe0343644363ec3d185eea3a3f220bbc0", "state_change", "business", [
24854
24860
  "state_change"
24855
24861
  ], [
24856
24862
  slot("amount", true, [
@@ -24871,7 +24877,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24871
24877
  "get_dropi_status",
24872
24878
  // Filled by the MCP schema fingerprint test (sha256 of the canonicalized
24873
24879
  // inputSchema) — run apps/mcp server.test.ts to compute.
24874
- "3465e644ebdcaa404d8bcc1af629012c858bb4aed5bb1b56cfaa2af0d53cfc6e",
24880
+ "dbbf0cae464909761b30d649f08ebf588bc34ab66a0b67abcf9ff3442e1ec457",
24875
24881
  "none",
24876
24882
  "read_only",
24877
24883
  [
@@ -24896,7 +24902,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24896
24902
  defineCapability(
24897
24903
  "sync_dropi_orders",
24898
24904
  // Filled by the MCP schema fingerprint test.
24899
- "46f1172e7afe42991957a2dc262cce235dbf31ededdf37ccf866a583bb19123b",
24905
+ "a2b107f6f36ed6e9ed698e89ff54decf180bfce372adabd3bc0d00739ebd6a02",
24900
24906
  "state_change",
24901
24907
  "business",
24902
24908
  [
@@ -24930,7 +24936,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24930
24936
  defineCapability(
24931
24937
  "create_manual_product",
24932
24938
  // Filled by the MCP schema fingerprint test.
24933
- "4da701236ab1fd460e66f6def729f61a392bad62e8fecdaf8b3b3098fdec53cb",
24939
+ "00b0366e3c23989c10243e8c34ea74d2786c7f521093a006e53cc6e68750e5ad",
24934
24940
  "state_change",
24935
24941
  "business",
24936
24942
  [
@@ -24973,7 +24979,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24973
24979
  defineCapability(
24974
24980
  "list_unmatched_products",
24975
24981
  // Filled by the MCP schema fingerprint test.
24976
- "2c89690b4282a881f29f3bae11268786abf385c2bec0e3d7a1643098f4986e1b",
24982
+ "d72bf2d563daabe2ce719aeee4d3f1899154daba063ebca1ef69499e0ff09034",
24977
24983
  "none",
24978
24984
  "read_only",
24979
24985
  [
@@ -24995,7 +25001,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
24995
25001
  defineCapability(
24996
25002
  "resolve_unmatched_product",
24997
25003
  // Filled by the MCP schema fingerprint test.
24998
- "39ccb99a5d138f7f99e25c00b68eec8972e34dbcbd966d2081cdaa7c76ac63ba",
25004
+ "05fb2d978e2e878cbbfeca78b87b0f7e25decedfcfa8490b7cfc055139953574",
24999
25005
  "state_change",
25000
25006
  "business",
25001
25007
  [
@@ -25047,7 +25053,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
25047
25053
  defineCapability(
25048
25054
  "link_product_campaign",
25049
25055
  // Filled by the MCP schema fingerprint test.
25050
- "a9976318693f137dd37f4608d382fe1deb13b44c2f5257580c8b52b015899dde",
25056
+ "a4ea2424df8482eb5f004676aa6d43a24f8ad8790644a41f521cdeb879a306a9",
25051
25057
  "state_change",
25052
25058
  "business",
25053
25059
  [
@@ -25085,7 +25091,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
25085
25091
  defineCapability(
25086
25092
  "delete_monthly_expense",
25087
25093
  // Filled by the MCP schema fingerprint test.
25088
- "fe9c5d5896165b9c65fbfed779db7918dabf87c69e1601430a1509ad2d452de9",
25094
+ "e762a6d49f2ab0ce1f51315d0d0ec11e1456c8b8b8200c66b899808f89f706d5",
25089
25095
  "state_change",
25090
25096
  "business",
25091
25097
  [
@@ -25113,7 +25119,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
25113
25119
  defineCapability(
25114
25120
  "remove_product_control",
25115
25121
  // Filled by the MCP schema fingerprint test.
25116
- "ff0b7411497a0b28eda7294c35b09c45f8beff842bbc6a9a4cc993ba3d766cae",
25122
+ "e29785ec81add0115499e3ae616f47224c2c01dc61c5d7f65d306bc1ac28929f",
25117
25123
  "state_change",
25118
25124
  "business",
25119
25125
  [
@@ -25132,7 +25138,7 @@ var PRODUCTMAKER_CAPABILITY_REGISTRY = deepFreeze([
25132
25138
  ],
25133
25139
  MCP_ONLY_CHANNEL_EXPOSURE
25134
25140
  ),
25135
- defineCapability("report_daily_returns", "7130d216656cc29a47fc972b4edad5003a6653fca48d95052fbf2b561636e91a", "state_change", "business", [
25141
+ defineCapability("report_daily_returns", "c64af9e1750adf5892caa76c0c170feec91e617ba1769ee5c0af17cbbb4fc6d2", "state_change", "business", [
25136
25142
  "state_change"
25137
25143
  ], [
25138
25144
  slot("project", true, [
@@ -25437,7 +25443,7 @@ var WhatsAppQuoteRecoveryReceiptSchema = z103.discriminatedUnion("state", [
25437
25443
  z103.object({
25438
25444
  ...recoveryBase,
25439
25445
  state: z103.literal("consumed"),
25440
- successorCommandId: z103.string().uuid(),
25446
+ successorCommandId: z103.string().guid(),
25441
25447
  choice: z103.enum([
25442
25448
  "without_winner",
25443
25449
  "retry"
@@ -25447,7 +25453,7 @@ var WhatsAppQuoteRecoveryReceiptSchema = z103.discriminatedUnion("state", [
25447
25453
  ...recoveryBase,
25448
25454
  state: z103.literal("awaiting_media"),
25449
25455
  successorCommandId: z103.null(),
25450
- successorCollectionId: z103.string().uuid(),
25456
+ successorCollectionId: z103.string().guid(),
25451
25457
  choice: z103.enum([
25452
25458
  "without_winner",
25453
25459
  "retry"
@@ -25475,10 +25481,10 @@ var json = z103.lazy(() => z103.union([
25475
25481
  z103.number().finite(),
25476
25482
  z103.string(),
25477
25483
  z103.array(json),
25478
- z103.record(json)
25484
+ z103.record(z103.string(), json)
25479
25485
  ]));
25480
25486
  var commandBase = {
25481
- commandId: z103.string().uuid(),
25487
+ commandId: z103.string().guid(),
25482
25488
  requestHash: z103.string().min(1).max(256),
25483
25489
  expectedUpdatedAt: z103.string().datetime(),
25484
25490
  result: json,
@@ -25486,7 +25492,7 @@ var commandBase = {
25486
25492
  };
25487
25493
  var proposedSnapshot = {
25488
25494
  ...commandBase,
25489
- sourceMessageId: z103.string().uuid(),
25495
+ sourceMessageId: z103.string().guid(),
25490
25496
  expectedStatus: z103.literal("proposed"),
25491
25497
  expectedResult: json
25492
25498
  };
@@ -25547,19 +25553,19 @@ var WhatsAppPresentationFinalizerSchema = z103.object({
25547
25553
  ]).optional(),
25548
25554
  plan: z103.object({
25549
25555
  guardOnly: z103.boolean().optional(),
25550
- planId: z103.string().uuid(),
25556
+ planId: z103.string().guid(),
25551
25557
  expectedPlanRevision: z103.number().int().nonnegative(),
25552
- stepId: z103.string().uuid(),
25558
+ stepId: z103.string().guid(),
25553
25559
  expectedStepRevision: z103.number().int().nonnegative(),
25554
- expectedCommandId: z103.string().uuid().nullable(),
25560
+ expectedCommandId: z103.string().guid().nullable(),
25555
25561
  next: z103.object({
25556
- stepId: z103.string().uuid(),
25562
+ stepId: z103.string().guid(),
25557
25563
  expectedRevision: z103.number().int().nonnegative()
25558
25564
  }).strict().nullable(),
25559
25565
  outputArtifacts: json
25560
25566
  }).strict().optional(),
25561
25567
  collection: z103.object({
25562
- collectionId: z103.string().uuid(),
25568
+ collectionId: z103.string().guid(),
25563
25569
  expectedRevision: z103.number().int().nonnegative(),
25564
25570
  expiresAt: z103.string().datetime()
25565
25571
  }).strict().optional()
@@ -25644,9 +25650,9 @@ var WhatsAppPresentationStepSchema = z104.discriminatedUnion("kind", [
25644
25650
  "research_ready",
25645
25651
  "research_failed"
25646
25652
  ]).optional(),
25647
- commandId: z104.string().uuid().optional(),
25648
- taskId: z104.string().uuid().optional(),
25649
- researchRunId: z104.string().uuid().optional()
25653
+ commandId: z104.string().guid().optional(),
25654
+ taskId: z104.string().guid().optional(),
25655
+ researchRunId: z104.string().guid().optional()
25650
25656
  }).strict().refine((value) => value.resetSourceSequence === void 0 || value.conversationReset === "completed", "Reset source sequence requires a completed reset").optional(),
25651
25657
  intentKey
25652
25658
  }).strict(),
@@ -25678,16 +25684,16 @@ var WhatsAppPresentationStepSchema = z104.discriminatedUnion("kind", [
25678
25684
  "tiktok"
25679
25685
  ])).max(3),
25680
25686
  fullResultUrl: z104.string().url().max(8192),
25681
- commandId: z104.string().uuid(),
25682
- taskId: z104.string().uuid(),
25687
+ commandId: z104.string().guid(),
25688
+ taskId: z104.string().guid(),
25683
25689
  intentKey
25684
25690
  }).strict(),
25685
25691
  z104.object({
25686
25692
  kind: z104.literal("reference_review"),
25687
- commandId: z104.string().uuid(),
25688
- taskId: z104.string().uuid(),
25693
+ commandId: z104.string().guid(),
25694
+ taskId: z104.string().guid(),
25689
25695
  snapshotHash: z104.string().length(64).regex(/^[a-f0-9]+$/),
25690
- pendingAction: z104.record(z104.unknown()),
25696
+ pendingAction: z104.record(z104.string(), z104.unknown()),
25691
25697
  previews: z104.array(preview).max(20),
25692
25698
  expectedPreviewCount: z104.number().int().min(0).max(50),
25693
25699
  intentKey
@@ -26113,7 +26119,7 @@ var ProductTruthBody = z107.object({
26113
26119
  out[key2] = rawIndexes.filter((i) => typeof i === "number" && Number.isInteger(i) && i >= 0 && i < 20);
26114
26120
  }
26115
26121
  return out;
26116
- }, z107.record(z107.array(z107.number().int().min(0).max(19))))
26122
+ }, z107.record(z107.string(), z107.array(z107.number().int().min(0).max(19))))
26117
26123
  })),
26118
26124
  confidence: z107.preprocess((v) => typeof v === "number" && Number.isFinite(v) ? Math.min(1, Math.max(0, v)) : 0, z107.number().min(0).max(1))
26119
26125
  });
@@ -26456,15 +26462,16 @@ var CreativeCompositionExecutorRoleSchema = z109.enum(CREATIVE_COMPOSITION_EXECU
26456
26462
  var CreativeCompositionJobSchema = z109.object({
26457
26463
  kind: z109.literal("creative_composition"),
26458
26464
  protocolVersion: CreativeCompositionProtocolVersionSchema,
26459
- jobId: z109.string().uuid(),
26465
+ jobId: z109.string().guid(),
26460
26466
  owner: CreativeEngineOwnerSchema,
26461
26467
  attempt,
26462
26468
  leaseUntil: z109.string().datetime(),
26463
26469
  deadlineAtMs: z109.number().int().nonnegative(),
26464
26470
  /**
26465
26471
  * Contract digest of the API that wrote the job. The renderer refuses a
26466
- * job whose digest is not its own (`renderer_schema_stale`). Absent only
26467
- * on rows written before digests existed.
26472
+ * job whose digest is neither current nor explicitly verified compatible
26473
+ * (`renderer_schema_stale`). Accepted jobs still meet the current schema.
26474
+ * Absent only on rows written before digests existed.
26468
26475
  */
26469
26476
  contractDigest: hash2.optional(),
26470
26477
  width: z109.number().int().positive().max(4096),
@@ -26542,10 +26549,10 @@ var CreativeCompositionClaimResponseSchema = z109.object({
26542
26549
  job: CreativeCompositionJobSchema.nullable()
26543
26550
  }).strict();
26544
26551
  var CreativeCompositionHeartbeatSchema = MotionGraphicsStageReportSchema.extend({
26545
- jobId: z109.string().uuid()
26552
+ jobId: z109.string().guid()
26546
26553
  });
26547
26554
  var CreativeCompositionUploadRequestSchema = z109.object({
26548
- jobId: z109.string().uuid(),
26555
+ jobId: z109.string().guid(),
26549
26556
  attempt,
26550
26557
  files: z109.array(z109.object({
26551
26558
  kind: z109.enum([
@@ -26569,7 +26576,7 @@ var CreativeCompositionUploadResponseSchema = z109.object({
26569
26576
  }).strict()).min(1).max(3)
26570
26577
  }).strict();
26571
26578
  var CreativeCompositionDoneRequestSchema = z109.object({
26572
- jobId: z109.string().uuid(),
26579
+ jobId: z109.string().guid(),
26573
26580
  attempt,
26574
26581
  width: z109.number().int().positive(),
26575
26582
  height: z109.number().int().positive(),
@@ -26577,14 +26584,14 @@ var CreativeCompositionDoneRequestSchema = z109.object({
26577
26584
  durationSec: z109.number().positive()
26578
26585
  }).strict();
26579
26586
  var CreativeCompositionFailedRequestSchema = z109.object({
26580
- jobId: z109.string().uuid(),
26587
+ jobId: z109.string().guid(),
26581
26588
  attempt,
26582
26589
  reason: z109.string().min(1).max(1e3),
26583
26590
  retryable: z109.literal(false)
26584
26591
  }).strict();
26585
26592
  var CreativeCompositionLocalManifestSchema = z109.object({
26586
26593
  kind: z109.literal("creative_composition"),
26587
- jobId: z109.string().uuid(),
26594
+ jobId: z109.string().guid(),
26588
26595
  owner: CreativeEngineOwnerSchema,
26589
26596
  plan: z109.object({
26590
26597
  revision: z109.number().int().positive(),
@@ -26670,8 +26677,8 @@ var CreativeEngineEditContextSnapshotSchema = z111.object({
26670
26677
  hash: hash3,
26671
26678
  binding: CreativeEngineContextBindingSchema,
26672
26679
  data: z111.object({
26673
- physical: z111.record(z111.unknown()),
26674
- commercial: z111.record(z111.unknown())
26680
+ physical: z111.record(z111.string(), z111.unknown()),
26681
+ commercial: z111.record(z111.string(), z111.unknown())
26675
26682
  }).strict(),
26676
26683
  references: z111.array(z111.object({
26677
26684
  sourceId: id4,
@@ -26741,7 +26748,7 @@ var CreativeEngineEditExecutionSchema = z111.object({
26741
26748
  version: z111.literal(1),
26742
26749
  source: CreativeEngineEditSourceSchema,
26743
26750
  intent: z111.object({
26744
- clientRequestId: z111.string().uuid(),
26751
+ clientRequestId: z111.string().guid(),
26745
26752
  sectionsHash: hash3,
26746
26753
  sourceBindingHash: hash3,
26747
26754
  derivedPlanHash: hash3,
@@ -26853,7 +26860,7 @@ var CreativeEngineEditProposalSchema = z111.object({
26853
26860
  userId: id4,
26854
26861
  taskId: id4,
26855
26862
  angleKey: id4,
26856
- clientRequestId: z111.string().uuid(),
26863
+ clientRequestId: z111.string().guid(),
26857
26864
  createdAtMs: z111.number().int().nonnegative(),
26858
26865
  expiresAtMs: z111.number().int().positive(),
26859
26866
  source: CreativeEngineEditSourceSchema,
@@ -26862,7 +26869,7 @@ var CreativeEngineEditProposalSchema = z111.object({
26862
26869
  context: CreativeEngineEditContextSnapshotSchema,
26863
26870
  recipe: CreativeEngineRecipeSchema,
26864
26871
  // The API validates these with its canonical section schema before persistence/use.
26865
- sections: z111.array(z111.record(z111.unknown())).min(1).max(32)
26872
+ sections: z111.array(z111.record(z111.string(), z111.unknown())).min(1).max(32)
26866
26873
  }).strict();
26867
26874
 
26868
26875
  // ../../packages/types/src/creative-engine-retry.ts
@@ -26924,7 +26931,7 @@ var CreativeEngineFreshRetryProvenanceSchema = z112.object({
26924
26931
  import { z as z113 } from "zod";
26925
26932
  var CreativeEngineEntryRequestSchema = z113.object({
26926
26933
  creativeEngine: z113.literal("unified_v1"),
26927
- taskId: z113.string().uuid(),
26934
+ taskId: z113.string().guid(),
26928
26935
  angleKey: z113.string().min(1).max(200),
26929
26936
  requestId: z113.string().min(1).max(200),
26930
26937
  guide: z113.enum([
@@ -27136,7 +27143,7 @@ import { z as z116 } from "zod";
27136
27143
  // ../../packages/types/src/service-landing-primitives.ts
27137
27144
  import { z as z115 } from "zod";
27138
27145
  var OptionalTextSchema = z115.string().trim().min(1).max(500).optional();
27139
- var AssetIdSchema = z115.string().uuid().transform((value) => value.toLowerCase());
27146
+ var AssetIdSchema = z115.string().guid().transform((value) => value.toLowerCase());
27140
27147
  var ServiceLandingPrimaryCtaSchema = z115.object({
27141
27148
  channelIndex: z115.number().int().nonnegative(),
27142
27149
  label: z115.string().trim().min(1).max(80)
@@ -27272,7 +27279,7 @@ var ServiceLandingContactChannelSchema = z116.discriminatedUnion("kind", [
27272
27279
  BookingUrlChannelSchema
27273
27280
  ]);
27274
27281
  var ServiceLandingServiceSchema = z116.object({
27275
- id: z116.string().uuid(),
27282
+ id: z116.string().guid(),
27276
27283
  name: z116.string().trim().min(1).max(120),
27277
27284
  description: OptionalTextSchema,
27278
27285
  inclusions: z116.array(z116.string().trim().min(1).max(160)).max(12),
@@ -27500,7 +27507,7 @@ var ServiceLandingArtifactSchema = z116.preprocess(applyCodeArtifactDefaults, z1
27500
27507
  // ../../packages/types/src/service-landing-facts-brand.ts
27501
27508
  import { z as z117 } from "zod";
27502
27509
  var ServiceLandingServiceFactsSchema = z117.object({
27503
- id: z117.string().uuid(),
27510
+ id: z117.string().guid(),
27504
27511
  name: z117.string().trim().min(1).max(120).optional(),
27505
27512
  description: OptionalTextSchema,
27506
27513
  inclusions: z117.array(z117.string().trim().min(1).max(160)).max(12).default([]),
@@ -27652,7 +27659,7 @@ var ServicePageParserMetadataSchema = z117.object({
27652
27659
  }).strict()).max(100).optional()
27653
27660
  }).strict();
27654
27661
  var ServicePageSourceSchema = z117.object({
27655
- id: z117.string().uuid(),
27662
+ id: z117.string().guid(),
27656
27663
  kind: ServicePageSourceKindSchema,
27657
27664
  status: ServicePageSourceStatusSchema,
27658
27665
  displayName: z117.string().trim().min(1).max(180).optional(),
@@ -27663,14 +27670,14 @@ var ServicePageSourceSchema = z117.object({
27663
27670
  var ServicePageFactConflictSchema = z117.object({
27664
27671
  fieldPath: z117.string().trim().min(1).max(180),
27665
27672
  candidates: z117.array(z117.object({
27666
- id: z117.string().uuid(),
27673
+ id: z117.string().guid(),
27667
27674
  value: z117.string().trim().min(1).max(500),
27668
- sourceIds: z117.array(z117.string().uuid()).min(1).max(10)
27675
+ sourceIds: z117.array(z117.string().guid()).min(1).max(10)
27669
27676
  }).strict()).min(2).max(8)
27670
27677
  }).strict();
27671
27678
  var ServicePageFactProvenanceSchema = z117.object({
27672
27679
  fieldPath: z117.string().trim().min(1).max(180),
27673
- sourceIds: z117.array(z117.string().uuid()).min(1).max(10),
27680
+ sourceIds: z117.array(z117.string().guid()).min(1).max(10),
27674
27681
  evidence: z117.string().trim().max(1e3).optional()
27675
27682
  }).strict();
27676
27683
  var ServicePageFactsReviewSchema = z117.object({
@@ -27686,26 +27693,26 @@ var ServicePageFactsReviewSchema = z117.object({
27686
27693
  // ../../packages/types/src/service-landing-api.ts
27687
27694
  import { z as z118 } from "zod";
27688
27695
  var ServicePageCreateRequestSchema = z118.object({
27689
- brandId: z118.string().uuid(),
27696
+ brandId: z118.string().guid(),
27690
27697
  includeBrandLogo: z118.boolean().optional(),
27691
- idempotencyKey: z118.string().uuid().optional()
27698
+ idempotencyKey: z118.string().guid().optional()
27692
27699
  }).strict();
27693
27700
  var ServicePageFactsUpdateRequestSchema = z118.object({
27694
27701
  expectedRevision: z118.number().int().nonnegative(),
27695
- idempotencyKey: z118.string().uuid(),
27702
+ idempotencyKey: z118.string().guid(),
27696
27703
  facts: ServicePageFactsSchema
27697
27704
  }).strict();
27698
27705
  var ServicePageFactsConfirmRequestSchema = z118.object({
27699
27706
  expectedRevision: z118.number().int().nonnegative(),
27700
- idempotencyKey: z118.string().uuid(),
27707
+ idempotencyKey: z118.string().guid(),
27701
27708
  resolutions: z118.array(z118.object({
27702
27709
  fieldPath: z118.string().trim().min(1).max(180),
27703
- candidateId: z118.string().uuid()
27710
+ candidateId: z118.string().guid()
27704
27711
  }).strict()).max(30)
27705
27712
  }).strict();
27706
27713
  var ServicePageIntakeRequestSchema = z118.object({
27707
27714
  expectedRevision: z118.number().int().nonnegative(),
27708
- idempotencyKey: z118.string().uuid(),
27715
+ idempotencyKey: z118.string().guid(),
27709
27716
  text: z118.string().trim().max(3e4).optional(),
27710
27717
  profileUrl: z118.string().trim().url().max(2048).refine((value) => {
27711
27718
  try {
@@ -27736,7 +27743,7 @@ var ServicePageAttachmentRefSchema = z118.object({
27736
27743
  "source",
27737
27744
  "asset"
27738
27745
  ]),
27739
- id: z118.string().uuid().transform((id6) => id6.toLowerCase())
27746
+ id: z118.string().guid().transform((id6) => id6.toLowerCase())
27740
27747
  }).strict();
27741
27748
  var ServicePageAttachmentRefsSchema = z118.array(ServicePageAttachmentRefSchema).max(SERVICE_PAGE_CHAT_ATTACHMENT_MAX_SELECTION).superRefine((refs, ctx) => {
27742
27749
  const seen = /* @__PURE__ */ new Set();
@@ -27769,13 +27776,13 @@ var ServicePageChatAttachmentUploadResponseSchema = z118.object({
27769
27776
  }).strict();
27770
27777
  var ServicePageChatAttachmentUploadRequestSchema = z118.object({
27771
27778
  expectedRevision: z118.number().int().nonnegative(),
27772
- idempotencyKey: z118.string().uuid(),
27779
+ idempotencyKey: z118.string().guid(),
27773
27780
  profileUrl: z118.string().url().max(2048).optional()
27774
27781
  }).strict();
27775
27782
  var ServicePageEditInstructionSchema = z118.string().trim().min(3).max(SERVICE_PAGE_EDIT_INSTRUCTION_MAX_CHARS);
27776
27783
  var ServicePageEditEstimateRequestSchema = z118.object({
27777
27784
  expectedRevision: z118.number().int().nonnegative(),
27778
- baseCandidateOperationId: z118.string().uuid().transform((id6) => id6.toLowerCase()).optional(),
27785
+ baseCandidateOperationId: z118.string().guid().transform((id6) => id6.toLowerCase()).optional(),
27779
27786
  instruction: ServicePageEditInstructionSchema.optional(),
27780
27787
  attachmentRefs: ServicePageAttachmentRefsSchema.optional()
27781
27788
  }).strict();
@@ -27787,12 +27794,12 @@ var ServicePageEditEstimateResponseSchema = z118.object({
27787
27794
  }).strict();
27788
27795
  var ServicePageGenerationQuoteRequestSchema = z118.object({
27789
27796
  expectedRevision: z118.number().int().nonnegative(),
27790
- baseCandidateOperationId: z118.string().uuid().transform((id6) => id6.toLowerCase()).optional(),
27797
+ baseCandidateOperationId: z118.string().guid().transform((id6) => id6.toLowerCase()).optional(),
27791
27798
  instruction: ServicePageEditInstructionSchema.optional(),
27792
27799
  attachmentRefs: ServicePageAttachmentRefsSchema.optional()
27793
27800
  }).strict();
27794
27801
  var ServicePageQuoteResponseSchema = z118.object({
27795
- quoteId: z118.string().uuid(),
27802
+ quoteId: z118.string().guid(),
27796
27803
  purpose: ServicePageQuotePurposeSchema,
27797
27804
  expectedRevision: z118.number().int().nonnegative(),
27798
27805
  requestHash: z118.string().regex(/^[a-f0-9]{64}$/),
@@ -27806,16 +27813,16 @@ var ServicePageQuoteResponseSchema = z118.object({
27806
27813
  requiresConfirmation: z118.literal(true)
27807
27814
  }).strict();
27808
27815
  var ServicePageGenerateRequestSchema = z118.object({
27809
- quoteId: z118.string().uuid(),
27810
- idempotencyKey: z118.string().uuid(),
27816
+ quoteId: z118.string().guid(),
27817
+ idempotencyKey: z118.string().guid(),
27811
27818
  expectedRevision: z118.number().int().nonnegative(),
27812
- baseCandidateOperationId: z118.string().uuid().transform((id6) => id6.toLowerCase()).optional(),
27819
+ baseCandidateOperationId: z118.string().guid().transform((id6) => id6.toLowerCase()).optional(),
27813
27820
  instruction: ServicePageEditInstructionSchema.optional(),
27814
27821
  attachmentRefs: ServicePageAttachmentRefsSchema.optional()
27815
27822
  }).strict();
27816
27823
  var SERVICE_PAGE_CREATION_MAX_ATTEMPTS = 3;
27817
27824
  var ServicePageCreationMarkerSchema = z118.object({
27818
- rootOperationId: z118.string().uuid().optional(),
27825
+ rootOperationId: z118.string().guid().optional(),
27819
27826
  attempt: z118.number().int().min(1).max(SERVICE_PAGE_CREATION_MAX_ATTEMPTS)
27820
27827
  }).strict();
27821
27828
  var ServicePageCreationEstimateRequestSchema = z118.object({
@@ -27850,8 +27857,8 @@ var ServicePageOperationStatusSchema = z118.enum([
27850
27857
  "requires_reconciliation"
27851
27858
  ]);
27852
27859
  var ServicePageOperationResponseSchema = z118.object({
27853
- opId: z118.string().uuid(),
27854
- servicePageId: z118.string().uuid(),
27860
+ opId: z118.string().guid(),
27861
+ servicePageId: z118.string().guid(),
27855
27862
  kind: z118.enum([
27856
27863
  "fact_extraction",
27857
27864
  "generation"
@@ -27866,7 +27873,7 @@ var ServicePageOperationResponseSchema = z118.object({
27866
27873
  recoverable: z118.boolean()
27867
27874
  }).strict();
27868
27875
  var ServicePageEditHistoryItemSchema = z118.object({
27869
- opId: z118.string().uuid(),
27876
+ opId: z118.string().guid(),
27870
27877
  instruction: ServicePageEditInstructionSchema,
27871
27878
  status: ServicePageOperationStatusSchema,
27872
27879
  expectedRevision: z118.number().int().nonnegative(),
@@ -27881,8 +27888,8 @@ var ServicePageEditHistoryItemSchema = z118.object({
27881
27888
  }).strict();
27882
27889
  var ServicePageEditHistorySchema = z118.array(ServicePageEditHistoryItemSchema).max(50).default([]);
27883
27890
  var ServicePageOperationJobSchema = z118.object({
27884
- operationId: z118.string().uuid(),
27885
- servicePageId: z118.string().uuid(),
27891
+ operationId: z118.string().guid(),
27892
+ servicePageId: z118.string().guid(),
27886
27893
  userId: z118.string().min(1).max(256),
27887
27894
  kind: z118.enum([
27888
27895
  "fact_extraction",
@@ -27891,22 +27898,22 @@ var ServicePageOperationJobSchema = z118.object({
27891
27898
  }).strict();
27892
27899
  var ServicePageDraftUpdateRequestSchema = z118.object({
27893
27900
  expectedRevision: z118.number().int().nonnegative(),
27894
- idempotencyKey: z118.string().uuid(),
27895
- candidateOperationId: z118.string().uuid().transform((id6) => id6.toLowerCase()).optional(),
27901
+ idempotencyKey: z118.string().guid(),
27902
+ candidateOperationId: z118.string().guid().transform((id6) => id6.toLowerCase()).optional(),
27896
27903
  artifact: ServiceLandingArtifactSchema
27897
27904
  }).strict();
27898
27905
  var ServicePagePublishRequestSchema = z118.object({
27899
27906
  expectedRevision: z118.number().int().nonnegative(),
27900
27907
  slug: z118.string().trim().toLowerCase().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/).max(64),
27901
- idempotencyKey: z118.string().uuid()
27908
+ idempotencyKey: z118.string().guid()
27902
27909
  }).strict();
27903
27910
  var ServicePageUnpublishRequestSchema = z118.object({
27904
27911
  publishedRevision: z118.number().int().positive(),
27905
- idempotencyKey: z118.string().uuid()
27912
+ idempotencyKey: z118.string().guid()
27906
27913
  }).strict();
27907
27914
  var ServicePageSummarySchema = z118.object({
27908
- id: z118.string().uuid(),
27909
- brandId: z118.string().uuid().nullable(),
27915
+ id: z118.string().guid(),
27916
+ brandId: z118.string().guid().nullable(),
27910
27917
  businessName: z118.string().trim().min(1).max(120).nullable(),
27911
27918
  status: ServicePageStatusSchema,
27912
27919
  draftRevision: z118.number().int().nonnegative(),
@@ -27950,7 +27957,7 @@ var ServicePageListResponseSchema = z118.object({
27950
27957
  pages: z118.array(ServicePageSummarySchema)
27951
27958
  }).strict();
27952
27959
  var ServicePageIntakeResponseSchema = z118.object({
27953
- servicePageId: z118.string().uuid(),
27960
+ servicePageId: z118.string().guid(),
27954
27961
  draftRevision: z118.number().int().nonnegative(),
27955
27962
  sources: z118.array(ServicePageSourceSchema).max(50),
27956
27963
  facts: ServicePageFactsSchema,
@@ -27959,13 +27966,13 @@ var ServicePageIntakeResponseSchema = z118.object({
27959
27966
  assetsById: z118.record(AssetIdSchema, ServicePagePublicAssetSchema)
27960
27967
  }).strict();
27961
27968
  var ServicePagePreviewResponseSchema = z118.object({
27962
- servicePageId: z118.string().uuid(),
27969
+ servicePageId: z118.string().guid(),
27963
27970
  revision: z118.number().int().nonnegative(),
27964
27971
  artifact: ServiceLandingArtifactSchema,
27965
27972
  assetsById: z118.record(AssetIdSchema, ServicePagePublicAssetSchema)
27966
27973
  }).strict();
27967
27974
  var ServicePageAdminViewSchema = z118.object({
27968
- id: z118.string().uuid(),
27975
+ id: z118.string().guid(),
27969
27976
  businessName: z118.string().trim().min(1).max(120).nullable(),
27970
27977
  state: z118.enum([
27971
27978
  "created",
@@ -27978,7 +27985,7 @@ var ServicePageAdminViewSchema = z118.object({
27978
27985
  }).strict();
27979
27986
  var ServicePagePreviewRequestSchema = z118.object({
27980
27987
  expectedRevision: z118.number().int().nonnegative(),
27981
- candidateOperationId: z118.string().uuid().optional(),
27988
+ candidateOperationId: z118.string().guid().optional(),
27982
27989
  artifact: ServiceLandingArtifactSchema.optional()
27983
27990
  }).strict().superRefine((request, context) => {
27984
27991
  if (!request.artifact && !request.candidateOperationId) {
@@ -28136,7 +28143,7 @@ var FlightRecorderEntrySchema = z120.object({
28136
28143
  elements: z120.array(FlightRecorderElementSchema).optional(),
28137
28144
  distillation: FlightRecorderDistillationSchema.optional(),
28138
28145
  // Raw payload (sanitized of secrets)
28139
- rawPayload: z120.record(z120.unknown())
28146
+ rawPayload: z120.record(z120.string(), z120.unknown())
28140
28147
  });
28141
28148
  var FlightRecorderQuerySchema = z120.object({
28142
28149
  taskId: z120.string().min(1),
@@ -28191,7 +28198,7 @@ var Url = z122.string().url().refine((value) => {
28191
28198
  var ClassicLandingAssetBlockSchema = z122.discriminatedUnion("kind", [
28192
28199
  z122.object({
28193
28200
  kind: z122.literal("image"),
28194
- ownerTaskId: z122.string().uuid(),
28201
+ ownerTaskId: z122.string().guid(),
28195
28202
  sourceIndex: z122.number().int().positive(),
28196
28203
  variantIndex: z122.number().int().nonnegative(),
28197
28204
  url: Url,
@@ -28201,8 +28208,8 @@ var ClassicLandingAssetBlockSchema = z122.discriminatedUnion("kind", [
28201
28208
  }).strict(),
28202
28209
  z122.object({
28203
28210
  kind: z122.literal("gif"),
28204
- ownerTaskId: z122.string().uuid(),
28205
- gifId: z122.string().uuid(),
28211
+ ownerTaskId: z122.string().guid(),
28212
+ gifId: z122.string().guid(),
28206
28213
  gifRevision: z122.number().int().nonnegative(),
28207
28214
  demo: LandingGifReadableSchema,
28208
28215
  historicalDelivery: z122.literal(true).optional()
@@ -28210,10 +28217,10 @@ var ClassicLandingAssetBlockSchema = z122.discriminatedUnion("kind", [
28210
28217
  ]);
28211
28218
  var PublishedClassicLandingSchema = z122.object({
28212
28219
  version: z122.literal(1),
28213
- ownerTaskId: z122.string().uuid(),
28220
+ ownerTaskId: z122.string().guid(),
28214
28221
  documentRevision: z122.number().int().nonnegative(),
28215
28222
  ownerRevisions: z122.array(z122.object({
28216
- ownerTaskId: z122.string().uuid(),
28223
+ ownerTaskId: z122.string().guid(),
28217
28224
  landingRevision: z122.number().int().nonnegative()
28218
28225
  }).strict()).max(100),
28219
28226
  blocks: z122.array(ClassicLandingAssetBlockSchema).max(100)
@@ -28260,18 +28267,18 @@ import { z as z123 } from "zod";
28260
28267
  var DropiCountrySchema = z123.enum(DROPI_COUNTRY_CODES);
28261
28268
  var DropiCountryQuerySchema = z123.object({
28262
28269
  countryCode: DropiCountrySchema.default("CO"),
28263
- connectionId: z123.string().uuid().optional()
28270
+ connectionId: z123.string().guid().optional()
28264
28271
  }).strict();
28265
28272
  var ConnectDropiFinancialSchema = z123.object({
28266
28273
  countryCode: DropiCountrySchema.default("CO"),
28267
- connectionId: z123.string().uuid().optional(),
28274
+ connectionId: z123.string().guid().optional(),
28268
28275
  label: z123.string().trim().min(1).max(80).optional(),
28269
28276
  integrationKey: z123.string().trim().min(1).max(4096).regex(/^[\x21-\x7e]+$/)
28270
28277
  }).strict();
28271
28278
  var SyncDropiFinancialSchema = z123.object({
28272
28279
  countryCode: DropiCountrySchema.optional(),
28273
- operationId: z123.string().uuid().optional(),
28274
- connectionId: z123.string().uuid().optional(),
28280
+ operationId: z123.string().guid().optional(),
28281
+ connectionId: z123.string().guid().optional(),
28275
28282
  since: z123.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional(),
28276
28283
  until: z123.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional()
28277
28284
  }).strict();
@@ -28279,7 +28286,7 @@ var connectionCountries = z123.array(DropiCountrySchema).max(DROPI_COUNTRY_CODES
28279
28286
  var DropiFinancialConnectionsSchema = z123.object({
28280
28287
  connectedCountries: connectionCountries,
28281
28288
  connections: z123.array(z123.object({
28282
- connectionId: z123.string().uuid(),
28289
+ connectionId: z123.string().guid(),
28283
28290
  countryCode: DropiCountrySchema,
28284
28291
  label: z123.string().min(1).max(80)
28285
28292
  }).strict()).max(21).optional(),
@@ -28289,7 +28296,7 @@ var DropiFinancialConnectionsSchema = z123.object({
28289
28296
  var DropiFinancialStatusSchema = z123.object({
28290
28297
  enabled: z123.boolean(),
28291
28298
  connected: z123.boolean(),
28292
- connectionId: z123.string().uuid().optional(),
28299
+ connectionId: z123.string().guid().optional(),
28293
28300
  connectionCount: z123.number().int().nonnegative().optional(),
28294
28301
  label: z123.string().min(1).max(80).optional(),
28295
28302
  countryCode: DropiCountrySchema,
@@ -28416,7 +28423,7 @@ var ServiceImageContextSchema = z124.object({
28416
28423
  // ../../packages/types/src/brand-creation.ts
28417
28424
  import { z as z125 } from "zod";
28418
28425
  var BrandCreationReceiptSchema = z125.object({
28419
- brandId: z125.string().uuid(),
28426
+ brandId: z125.string().guid(),
28420
28427
  status: z125.enum([
28421
28428
  "extracting",
28422
28429
  "ready",
@@ -28559,7 +28566,7 @@ var WebsiteCaptureRequestSchema = z127.object({
28559
28566
  language: MotionGraphicsLanguageSchema
28560
28567
  }).strict();
28561
28568
  var WebsiteCaptureResponseSchema = z127.object({
28562
- captureId: z127.string().uuid(),
28569
+ captureId: z127.string().guid(),
28563
28570
  status: WebsiteCaptureStatusSchema,
28564
28571
  expiresAt: z127.string().datetime(),
28565
28572
  previewUrl: z127.string().url().optional(),
@@ -28568,7 +28575,7 @@ var WebsiteCaptureResponseSchema = z127.object({
28568
28575
  cause: WebsiteCaptureCauseSchema.optional()
28569
28576
  });
28570
28577
  var WebsiteCaptureJobSchema = WebsiteCaptureRequestSchema.extend({
28571
- captureId: z127.string().uuid(),
28578
+ captureId: z127.string().guid(),
28572
28579
  attempt: z127.number().int().positive(),
28573
28580
  leaseUntil: z127.string().datetime(),
28574
28581
  /** Public profile document prepared by the API; never contains a provider credential. */
@@ -28731,7 +28738,7 @@ var image = z128.object({
28731
28738
  width: z128.number().int().positive(),
28732
28739
  height: z128.number().int().positive(),
28733
28740
  adCopy: nullableText,
28734
- rawResponse: z128.unknown()
28741
+ rawResponse: z128.unknown().optional()
28735
28742
  });
28736
28743
  var ProductDemoSnapshotSchema = z128.object({
28737
28744
  /** Optional only for packs frozen before seller review drafts were captured. */
@@ -28744,12 +28751,12 @@ var ProductDemoSnapshotSchema = z128.object({
28744
28751
  country: nullableText,
28745
28752
  features: z128.array(text3).max(100),
28746
28753
  form: nullableText,
28747
- details: z128.unknown(),
28754
+ details: z128.unknown().optional(),
28748
28755
  isCombo: z128.boolean(),
28749
- comboItems: z128.unknown(),
28756
+ comboItems: z128.unknown().optional(),
28750
28757
  images: z128.array(text3).min(1).max(50),
28751
28758
  cleanImages: z128.array(text3).max(50),
28752
- cleanImagesMeta: z128.unknown()
28759
+ cleanImagesMeta: z128.unknown().optional()
28753
28760
  }),
28754
28761
  angles: z128.array(z128.object({
28755
28762
  content: text3,
@@ -28768,7 +28775,7 @@ var ProductDemoSnapshotSchema = z128.object({
28768
28775
  durationSeconds: z128.number().int().positive().nullable(),
28769
28776
  format: VideoFormat,
28770
28777
  resultUrls: z128.array(text3).min(1).max(10),
28771
- rawResponse: z128.unknown(),
28778
+ rawResponse: z128.unknown().optional(),
28772
28779
  adCopy: nullableText
28773
28780
  })).min(1).max(10),
28774
28781
  landingImages: z128.array(z128.object({
@@ -28779,17 +28786,17 @@ var ProductDemoSnapshotSchema = z128.object({
28779
28786
  height: z128.number().int().positive(),
28780
28787
  notes: nullableText
28781
28788
  })).max(20),
28782
- landingConfig: z128.unknown(),
28789
+ landingConfig: z128.unknown().optional(),
28783
28790
  image,
28784
- productUseSheet: z128.unknown(),
28785
- productTruth: z128.unknown(),
28791
+ productUseSheet: z128.unknown().optional(),
28792
+ productTruth: z128.unknown().optional(),
28786
28793
  productReference: z128.object({
28787
28794
  referenceEvidenceVersion: z128.number().int().nonnegative(),
28788
28795
  planVersion: z128.number().int().positive(),
28789
28796
  baseReferenceSetHash: text3,
28790
- referenceSet: z128.unknown(),
28791
- preparationPlan: z128.unknown(),
28792
- canonicalIdentityAnchors: z128.unknown()
28797
+ referenceSet: z128.unknown().optional(),
28798
+ preparationPlan: z128.unknown().optional(),
28799
+ canonicalIdentityAnchors: z128.unknown().optional()
28793
28800
  })
28794
28801
  });
28795
28802
  var ProductDemoPhaseSchema = z128.enum([
@@ -28818,10 +28825,10 @@ var ProductDemoTaskStateSchema = z128.object({
28818
28825
  // ../../packages/types/src/demo-mode-service-page-assets.ts
28819
28826
  import { z as z129 } from "zod";
28820
28827
  var DemoServicePageAssetSourceSchema = z129.object({
28821
- pageId: z129.string().uuid(),
28828
+ pageId: z129.string().guid(),
28822
28829
  ownerId: z129.string().min(1),
28823
28830
  assets: z129.array(z129.object({
28824
- id: z129.string().uuid(),
28831
+ id: z129.string().guid(),
28825
28832
  storageKey: z129.string().min(1).max(1024),
28826
28833
  mediaType: z129.enum([
28827
28834
  "image/webp",
@@ -28897,14 +28904,14 @@ var DEMO_MODE_OPTIONAL_TEMPLATE_KEYS = [
28897
28904
  ...DEMO_MODE_OPTIONAL_MOTION_TEMPLATE_KEYS,
28898
28905
  ...DEMO_MODE_PRODUCT_ALL_TEMPLATE_KEYS
28899
28906
  ];
28900
- var optionalTemplateId = z130.preprocess((value) => value === "" ? void 0 : value, z130.string().uuid().optional());
28907
+ var optionalTemplateId = z130.preprocess((value) => value === "" ? void 0 : value, z130.string().guid().optional());
28901
28908
  var DemoModeTemplatesSchema = z130.object({
28902
- brandId: z130.string().uuid(),
28903
- servicePageId: z130.string().uuid(),
28904
- motionTaskId: z130.string().uuid(),
28909
+ brandId: z130.string().guid(),
28910
+ servicePageId: z130.string().guid(),
28911
+ motionTaskId: z130.string().guid(),
28905
28912
  motionVariantTaskId: optionalTemplateId,
28906
28913
  motionThirdTaskId: optionalTemplateId,
28907
- imageTaskId: z130.string().uuid(),
28914
+ imageTaskId: z130.string().guid(),
28908
28915
  productLandingTaskId: optionalTemplateId,
28909
28916
  productVideoTaskId: optionalTemplateId,
28910
28917
  productVideoVariantTaskId: optionalTemplateId,
@@ -28945,7 +28952,7 @@ var DemoModeSnapshotSchema = z130.object({
28945
28952
  product: ProductDemoSnapshotSchema.optional(),
28946
28953
  brand: z130.object({
28947
28954
  /** Columnas de identidad de `Brand` listas para un `update` (sin id/userId/slug/estado/fechas). */
28948
- identity: z130.record(z130.unknown()),
28955
+ identity: z130.record(z130.string(), z130.unknown()),
28949
28956
  productSamples: z130.array(z130.object({
28950
28957
  name: z130.string(),
28951
28958
  priceCents: z130.number().int().nullable(),
@@ -28965,9 +28972,9 @@ var DemoModeSnapshotSchema = z130.object({
28965
28972
  }))
28966
28973
  }),
28967
28974
  servicePage: z130.object({
28968
- facts: z130.unknown(),
28969
- review: z130.unknown(),
28970
- artifact: z130.unknown(),
28975
+ facts: z130.unknown().optional(),
28976
+ review: z130.unknown().optional(),
28977
+ artifact: z130.unknown().optional(),
28971
28978
  /** Optional only for snapshots saved before page-owned demo media. */
28972
28979
  assetSource: DemoServicePageAssetSourceSchema.optional()
28973
28980
  }),
@@ -28993,7 +29000,7 @@ var DemoModeSnapshotSchema = z130.object({
28993
29000
  width: z130.number().int(),
28994
29001
  height: z130.number().int(),
28995
29002
  adCopy: nullableString,
28996
- rawResponse: z130.unknown()
29003
+ rawResponse: z130.unknown().optional()
28997
29004
  })
28998
29005
  });
28999
29006
  var DemoModeConfigSchema = DemoModeEditableObjectSchema.extend({
@@ -29058,7 +29065,7 @@ var DemoModeJobSchema = z130.object({
29058
29065
  productPhase: ProductDemoJobPhaseSchema.optional(),
29059
29066
  step: DemoModeStepSchema,
29060
29067
  /** brandId | servicePageOperationId | taskId según el flujo. */
29061
- targetId: z130.string().uuid(),
29068
+ targetId: z130.string().guid(),
29062
29069
  userId: z130.string().min(1),
29063
29070
  /** Solo marca: la generación de extracción que el guion completa. */
29064
29071
  generation: z130.number().int().positive().optional(),
@@ -30980,7 +30987,7 @@ var ApiClient = class {
30980
30987
  };
30981
30988
 
30982
30989
  // src/index.ts
30983
- var MCP_VERSION = "12.4.0";
30990
+ var MCP_VERSION = "12.5.0";
30984
30991
 
30985
30992
  // src/meta-upload-app.ts
30986
30993
  import { readFileSync } from "fs";
@@ -32138,7 +32145,7 @@ var ImageCreativeAspectRatioEnum = ImageCreativeAspectRatio;
32138
32145
  var ImageRefSchema = z133.object({
32139
32146
  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.'),
32140
32147
  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`.'),
32141
- 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.")
32148
+ 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.")
32142
32149
  }).refine((v) => [
32143
32150
  v.url,
32144
32151
  v.path,
@@ -33170,8 +33177,8 @@ function serviceVideoResultMedia(result) {
33170
33177
  }
33171
33178
  __name(serviceVideoResultMedia, "serviceVideoResultMedia");
33172
33179
  var CreativeVariantIdentity = z134.object({
33173
- variantTaskId: z134.string().uuid(),
33174
- sourceTaskId: z134.string().uuid(),
33180
+ variantTaskId: z134.string().guid(),
33181
+ sourceTaskId: z134.string().guid(),
33175
33182
  kind: TaskCreativeVariantKind,
33176
33183
  status: TaskStatusSchema,
33177
33184
  error: z134.string().optional()
@@ -34314,9 +34321,9 @@ var CreateAnimatedVideoInput = z136.object({
34314
34321
  "cancel",
34315
34322
  "generate"
34316
34323
  ]).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."),
34317
- 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."),
34318
- websiteCaptureId: z136.string().uuid().optional().describe("ID de la captura preparada. Obligatorio para status/cancel/generate; no inventarlo."),
34319
- 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."),
34324
+ 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."),
34325
+ websiteCaptureId: z136.string().guid().optional().describe("ID de la captura preparada. Obligatorio para status/cancel/generate; no inventarlo."),
34326
+ 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."),
34320
34327
  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."),
34321
34328
  // Plain text, not `.url()`: users type «cal.com», and the web accepts it.
34322
34329
  // normalizeWebAddress (shared with the web) adds https:// and refuses
@@ -34406,7 +34413,7 @@ var AnimatedVideoResultSchema = z136.object({
34406
34413
  index: MotionGraphicsHookVariantsSchema,
34407
34414
  count: MotionGraphicsHookVariantsSchema,
34408
34415
  tasks: z136.array(z136.object({
34409
- taskId: z136.string().uuid(),
34416
+ taskId: z136.string().guid(),
34410
34417
  index: MotionGraphicsHookVariantsSchema,
34411
34418
  status: z136.enum([
34412
34419
  "queued",
@@ -34717,7 +34724,7 @@ function registerAnimatedVideoTools(server, api) {
34717
34724
  nowMs: 0
34718
34725
  })
34719
34726
  });
34720
- const parsedTaskIds = z136.array(z136.string().uuid()).min(1).max(MOTION_GRAPHICS_HOOK_VARIANTS_MAX).safeParse(created.taskIds);
34727
+ const parsedTaskIds = z136.array(z136.string().guid()).min(1).max(MOTION_GRAPHICS_HOOK_VARIANTS_MAX).safeParse(created.taskIds);
34721
34728
  const taskIds = parsedTaskIds.success && parsedTaskIds.data[0] === created.taskId ? parsedTaskIds.data : void 0;
34722
34729
  const receipt = {
34723
34730
  taskId: created.taskId,
@@ -34761,7 +34768,7 @@ __name(registerAnimatedVideoTools, "registerAnimatedVideoTools");
34761
34768
  // src/tools/winning-product-image.ts
34762
34769
  import { z as z137 } from "zod";
34763
34770
  var WinnerReferenceInput = z137.object({
34764
- runId: z137.string().uuid(),
34771
+ runId: z137.string().guid(),
34765
34772
  candidateSourceId: z137.string().trim().min(1).max(160)
34766
34773
  }).strict().describe("Referencia opaca de un producto devuelto por find_winning_products/get_product_research_run.");
34767
34774
  async function resolveWinnerImages(api, winnerReference, images) {
@@ -34802,7 +34809,7 @@ var editTaskDraftGuidance = getProductMakerCapabilityModelGuidance("edit_task_dr
34802
34809
  var CreateProductTaskInput = z138.object({
34803
34810
  images: ImagesInput.optional().describe("1\u20135 fotos del mismo producto. Omitir \xFAnicamente cuando projectId apunta a un proyecto propio con imagen guardada."),
34804
34811
  winnerReference: WinnerReferenceInput.optional().describe(WINNER_IMAGE_CHOICE_GUIDANCE),
34805
- 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."),
34812
+ 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."),
34806
34813
  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."),
34807
34814
  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.'),
34808
34815
  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.'),
@@ -34835,13 +34842,13 @@ var CreateProductTaskInput = z138.object({
34835
34842
  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."),
34836
34843
  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.'),
34837
34844
  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."),
34838
- 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."),
34845
+ 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."),
34839
34846
  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."),
34840
34847
  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.'),
34841
34848
  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.'),
34842
34849
  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."),
34843
34850
  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."),
34844
- 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".'),
34851
+ 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) , "social_proof" (Landing Viral: UGC, WhatsApp, Instagram y evidencia social) o "pain_solution" (Problema y soluci\xF3n: dolor reconocible, demostraci\xF3n y transformaci\xF3n). Default "classic".'),
34845
34852
  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".')
34846
34853
  }).strict();
34847
34854
  var CreateServiceVideoInput = z138.object({
@@ -34849,7 +34856,7 @@ var CreateServiceVideoInput = z138.object({
34849
34856
  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.'),
34850
34857
  language: Lang.describe("Idioma del video: es, en o pt."),
34851
34858
  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.'),
34852
- brandId: z138.string().uuid().optional().describe("Marca guardada del usuario. Aplica voz, mensajes, paleta y persona predeterminada."),
34859
+ brandId: z138.string().guid().optional().describe("Marca guardada del usuario. Aplica voz, mensajes, paleta y persona predeterminada."),
34853
34860
  reviewMode: z138.enum([
34854
34861
  "automatic",
34855
34862
  "guided"
@@ -34895,7 +34902,7 @@ var PendingActionPayload = z138.discriminatedUnion("kind", [
34895
34902
  kind: z138.literal("product_reference_set_approval"),
34896
34903
  scope: ProductReferenceScopeEnum.optional(),
34897
34904
  scopeKey: z138.string().min(1).max(120).optional(),
34898
- scopeSnapshotId: z138.string().uuid().optional(),
34905
+ scopeSnapshotId: z138.string().guid().optional(),
34899
34906
  expectedScopeHash: z138.string().min(1).max(128).optional(),
34900
34907
  decision: ProductReferenceResolutionDecisionEnum,
34901
34908
  reason: ProductReferenceRejectionReasonEnum.optional(),
@@ -34960,7 +34967,7 @@ var PendingActionPayload = z138.discriminatedUnion("kind", [
34960
34967
  }),
34961
34968
  z138.object({
34962
34969
  kind: z138.literal("service_angle_approval"),
34963
- angleId: z138.string().uuid().optional(),
34970
+ angleId: z138.string().guid().optional(),
34964
34971
  angleNumber: z138.number().int().positive().optional(),
34965
34972
  content: z138.string().min(1).max(480).optional(),
34966
34973
  creativeDirection: z138.string().min(1).max(1500).optional(),
@@ -35063,7 +35070,7 @@ var StatusForResolveSchema = z138.object({
35063
35070
  }).optional(),
35064
35071
  scope: ProductReferenceScopeEnum.optional(),
35065
35072
  scopeKey: z138.string().optional(),
35066
- scopeSnapshotId: z138.string().uuid().optional(),
35073
+ scopeSnapshotId: z138.string().guid().optional(),
35067
35074
  scopeHash: z138.string().optional(),
35068
35075
  baseReferenceSetHash: z138.string().optional(),
35069
35076
  phase: z138.enum([
@@ -35092,7 +35099,7 @@ var StatusForResolveSchema = z138.object({
35092
35099
  // dropped here, so the approval handler below could not echo it back on the
35093
35100
  // PATCH — the selection looked accepted and reached no render.
35094
35101
  angles: z138.array(z138.object({
35095
- id: z138.string().uuid(),
35102
+ id: z138.string().guid(),
35096
35103
  content: z138.string(),
35097
35104
  creativeDirection: z138.string(),
35098
35105
  actor: z138.string(),
@@ -35454,8 +35461,8 @@ ANTES de invocar, resume outputs, cantidad de videos y datos comerciales, explic
35454
35461
  server.registerTool("verify_landing_commerce", {
35455
35462
  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.",
35456
35463
  inputSchema: {
35457
- taskId: z138.string().uuid(),
35458
- editId: z138.string().uuid()
35464
+ taskId: z138.string().guid(),
35465
+ editId: z138.string().guid()
35459
35466
  },
35460
35467
  annotations: OVERWRITES_EXTERNAL
35461
35468
  }, async (input) => {
@@ -35734,7 +35741,7 @@ ANTES de invocar, resume outputs, cantidad de videos y datos comerciales, explic
35734
35741
  ...page.data,
35735
35742
  items: page.data.items.map((item) => {
35736
35743
  const servicePage = z138.object({
35737
- taskId: z138.string().uuid(),
35744
+ taskId: z138.string().guid(),
35738
35745
  resourceType: z138.literal("service_page")
35739
35746
  }).passthrough().safeParse(item);
35740
35747
  if (!servicePage.success) return item;
@@ -36246,7 +36253,7 @@ var CreateBrandInput = z139.object({
36246
36253
  "pt"
36247
36254
  ]).optional().describe("Idioma de la conversaci\xF3n. Solo se usa si la p\xE1gina del negocio no deja claro su idioma."),
36248
36255
  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."),
36249
- brandId: z139.string().uuid().optional().describe("ID de la marca. Obligatorio para status; no lo inventes.")
36256
+ brandId: z139.string().guid().optional().describe("ID de la marca. Obligatorio para status; no lo inventes.")
36250
36257
  }).strict();
36251
36258
  function normalizeBrandSourceUrl(raw) {
36252
36259
  const value = raw.trim();
@@ -36541,12 +36548,12 @@ var CreateServiceLandingInput = z140.object({
36541
36548
  "status",
36542
36549
  "publish"
36543
36550
  ]).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."),
36544
- brandId: z140.string().uuid().optional().describe("ID de la marca (de create_brand). Obligatorio para prepare. Nunca un taskId de producto."),
36545
- servicePageId: z140.string().uuid().optional().describe("ID de la landing que devolvi\xF3 prepare. Obligatorio para build, status y publish."),
36551
+ brandId: z140.string().guid().optional().describe("ID de la marca (de create_brand). Obligatorio para prepare. Nunca un taskId de producto."),
36552
+ servicePageId: z140.string().guid().optional().describe("ID de la landing que devolvi\xF3 prepare. Obligatorio para build, status y publish."),
36546
36553
  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."),
36547
36554
  confirmed: z140.boolean().optional().describe("Solo true despu\xE9s de mostrar el precio total y que el usuario acepte. Obligatorio para build."),
36548
36555
  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."),
36549
- operationId: z140.string().uuid().optional().describe("Opcional en status: la operaci\xF3n que devolvi\xF3 build."),
36556
+ operationId: z140.string().guid().optional().describe("Opcional en status: la operaci\xF3n que devolvi\xF3 build."),
36550
36557
  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.")
36551
36558
  }).strict();
36552
36559
  function serviceKey(...parts) {
@@ -36940,7 +36947,7 @@ var LANGUAGE_TAGS = {
36940
36947
  pt: "pt-BR"
36941
36948
  };
36942
36949
  var CreateServiceImagesInput = z141.object({
36943
- 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."),
36950
+ 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."),
36944
36951
  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."),
36945
36952
  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."),
36946
36953
  format: z141.enum(SERVICE_IMAGE_FORMATS).optional().describe('Formato: "4:5" (feed, por defecto), "9:16" (historias/reels) o "1:1" (cuadrado).'),
@@ -37099,7 +37106,7 @@ var CreativeRefs = {
37099
37106
  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.'),
37100
37107
  isCombo: z142.boolean().optional().describe("Opcional. Si true, el creativo presenta el producto como combo/pack. Default false."),
37101
37108
  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."),
37102
- 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.")
37109
+ 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.")
37103
37110
  };
37104
37111
  var VideoPresenter = z142.discriminatedUnion("mode", [
37105
37112
  z142.object({
@@ -37204,7 +37211,7 @@ var FreeVideoInput = z142.object({
37204
37211
  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.'),
37205
37212
  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.'),
37206
37213
  addSubtitles: z142.boolean().default(false).describe("Opcional. Quema subt\xEDtulos usando el rawPrompt exacto. Default false."),
37207
- 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.")
37214
+ 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.")
37208
37215
  }).strict();
37209
37216
  var imageStyleList = ImageCreativeStyleEnum.options.join(" | ");
37210
37217
  var ImageCreativeSetup = z142.discriminatedUnion("mode", [
@@ -37306,7 +37313,7 @@ var ImageInput = z142.object({
37306
37313
  brandId: CreativeRefs.brandId
37307
37314
  });
37308
37315
  var EditImageCreativeInput = z142.object({
37309
- taskId: z142.string().uuid().describe("ID de la tarea de imagen ya finalizada."),
37316
+ taskId: z142.string().guid().describe("ID de la tarea de imagen ya finalizada."),
37310
37317
  variantIndex: z142.number().int().min(0).max(10).describe("\xCDndice de la variante a corregir (0 = primera imagen)."),
37311
37318
  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."),
37312
37319
  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".')
@@ -37601,8 +37608,8 @@ function registerCreativeTools(server, api, { transport = "http", proxyBaseUrl =
37601
37608
  server.registerTool("get_image_edit_status", {
37602
37609
  description: imageEditStatusGuidance.summary,
37603
37610
  inputSchema: {
37604
- taskId: z142.string().uuid(),
37605
- operationId: z142.string().uuid()
37611
+ taskId: z142.string().guid(),
37612
+ operationId: z142.string().guid()
37606
37613
  },
37607
37614
  annotations: READS_INTERNAL,
37608
37615
  _meta: taskResultsToolMeta()
@@ -37741,7 +37748,7 @@ var CreativeVariantKindEnum = z143.enum([
37741
37748
  "landing"
37742
37749
  ]);
37743
37750
  var EstimateCreativeVariantInputBase = z143.object({
37744
- sourceTaskId: z143.string().uuid().describe("ID de la tarea original completada."),
37751
+ sourceTaskId: z143.string().guid().describe("ID de la tarea original completada."),
37745
37752
  kind: CreativeVariantKindEnum,
37746
37753
  videoPreset: TaskCreativeVariantVideoPresetEnum.optional().describe("Opcional para video. Solo cambia el preset p\xFAblico; el servidor conserva el modelo/tier del task origen."),
37747
37754
  videoResolution: VideoResolutionEnum.optional().describe("Opcional para video. Resoluci\xF3n del nuevo render."),
@@ -37810,10 +37817,10 @@ var EstimateCreativeVariantInput = EstimateCreativeVariantInputBase.superRefine(
37810
37817
  }
37811
37818
  });
37812
37819
  var CreateCreativeVariantInputBase = z143.object({
37813
- sourceTaskId: z143.string().uuid().describe("ID de la tarea original completada."),
37820
+ sourceTaskId: z143.string().guid().describe("ID de la tarea original completada."),
37814
37821
  kind: CreativeVariantKindEnum,
37815
37822
  confirm: z143.literal(true).describe("Confirmaci\xF3n expl\xEDcita del usuario despu\xE9s de mostrarle el estimado de cr\xE9ditos."),
37816
- 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."),
37823
+ 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."),
37817
37824
  angle: z143.string().trim().min(1).max(500).optional().describe("\xC1ngulo nuevo para video o imagen."),
37818
37825
  buyerPersona: z143.string().trim().min(1).max(360).optional().describe("Buyer persona coherente con el \xE1ngulo."),
37819
37826
  scriptNotes: z143.string().trim().min(1).max(2e3).optional().describe("Direcci\xF3n breve del guion para una variante de video."),
@@ -38182,7 +38189,7 @@ function registerConnectionTools(server, api) {
38182
38189
  inputSchema: z145.object({
38183
38190
  shopDomain: z145.string().min(3).max(120),
38184
38191
  query: z145.string().trim().max(120).optional(),
38185
- taskId: z145.string().uuid().optional()
38192
+ taskId: z145.string().guid().optional()
38186
38193
  }).shape,
38187
38194
  annotations: READS_EXTERNAL
38188
38195
  }, async ({ shopDomain, query, taskId }) => {
@@ -38534,8 +38541,8 @@ var GroupedMediaSource = z147.object({
38534
38541
  var GroupedUploadedAssetSource = z147.object({
38535
38542
  type: z147.literal("asset"),
38536
38543
  /** Returned by check_media_upload. ProductMaker resolves ownership server-side. */
38537
- assetId: z147.string().uuid(),
38538
- thumbnailAssetId: z147.string().uuid().optional()
38544
+ assetId: z147.string().guid(),
38545
+ thumbnailAssetId: z147.string().guid().optional()
38539
38546
  });
38540
38547
  var GroupedCreative = z147.object({
38541
38548
  type: z147.enum([
@@ -38682,7 +38689,7 @@ var PresignUploadResponseSchema = z147.object({
38682
38689
  const url2 = new URL(value);
38683
38690
  return !url2.username && !url2.password;
38684
38691
  }, "public media URL must not contain embedded credentials"),
38685
- stagingAssetId: z147.string().uuid()
38692
+ stagingAssetId: z147.string().guid()
38686
38693
  });
38687
38694
  async function uploadResolvedMedia(api, media, assetRole) {
38688
38695
  if (!media.buffer) throw new ResolveMediaError("INVALID_INPUT", "resolved media has no bytes");
@@ -39171,7 +39178,7 @@ var UploadSessionToolInput = z148.object(UploadSessionToolInputShape).superRefin
39171
39178
  }
39172
39179
  });
39173
39180
  var UploadSessionResponse = z148.object({
39174
- sessionId: z148.string().uuid(),
39181
+ sessionId: z148.string().guid(),
39175
39182
  uploadPageUrl: z148.string().url(),
39176
39183
  mediaKind: z148.enum([
39177
39184
  "image",
@@ -39186,7 +39193,7 @@ var UploadSessionResponse = z148.object({
39186
39193
  expiresAt: z148.string().datetime()
39187
39194
  });
39188
39195
  var UploadStatusInput = z148.object({
39189
- sessionId: z148.string().uuid().describe("The sessionId returned by request_media_upload.")
39196
+ sessionId: z148.string().guid().describe("The sessionId returned by request_media_upload.")
39190
39197
  });
39191
39198
  var UniversalUploadStatusResponse = z148.discriminatedUnion("status", [
39192
39199
  z148.object({
@@ -39196,7 +39203,7 @@ var UniversalUploadStatusResponse = z148.discriminatedUnion("status", [
39196
39203
  z148.object({
39197
39204
  status: z148.literal("uploaded"),
39198
39205
  assets: z148.array(z148.object({
39199
- assetId: z148.string().uuid(),
39206
+ assetId: z148.string().guid(),
39200
39207
  mediaKind: z148.enum([
39201
39208
  "image",
39202
39209
  "video"
@@ -39508,7 +39515,7 @@ var ShippingReferenceSchema = z150.object({
39508
39515
  });
39509
39516
  }
39510
39517
  });
39511
- var SHIPPING_REFERENCES = z150.record(ShippingReferenceSchema).parse(product_costing_shipping_references_default);
39518
+ var SHIPPING_REFERENCES = z150.record(z150.string(), ShippingReferenceSchema).parse(product_costing_shipping_references_default);
39512
39519
  var PRODUCT_COSTING_COUNTRY_CODES = Object.freeze(Object.keys(SHIPPING_REFERENCES));
39513
39520
  var SPANISH_LOCALE_COUNTRIES = /* @__PURE__ */ new Set([
39514
39521
  "MX",
@@ -40347,7 +40354,7 @@ var FindInput = z153.object({
40347
40354
  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.")
40348
40355
  });
40349
40356
  var GetInput = z153.object({
40350
- runId: z153.string().uuid().describe("ID del run devuelto por find_winning_products.")
40357
+ runId: z153.string().guid().describe("ID del run devuelto por find_winning_products.")
40351
40358
  });
40352
40359
  var ListInput = z153.object({
40353
40360
  limit: z153.number().int().min(1).max(20).default(10)
@@ -40493,7 +40500,7 @@ import { z as z154 } from "zod";
40493
40500
  var startDropshippingProjectGuidance = getProductMakerCapabilityModelGuidance("start_dropshipping_project");
40494
40501
  var costDropshippingProjectGuidance = getProductMakerCapabilityModelGuidance("cost_dropshipping_project");
40495
40502
  var guideDropshippingLaunchGuidance = getProductMakerCapabilityModelGuidance("guide_dropshipping_launch");
40496
- var ProjectId = z154.string().uuid();
40503
+ var ProjectId = z154.string().guid();
40497
40504
  var DropshippingProjectStatus = z154.enum([
40498
40505
  "active",
40499
40506
  "completed",
@@ -40607,15 +40614,7 @@ var DropshippingProjectNextAction = z154.discriminatedUnion("kind", NEXT_ACTION_
40607
40614
  kind: z154.literal(kind2),
40608
40615
  href: z154.string().min(1)
40609
40616
  })));
40610
- var CostingInputSchema = z154.object({
40611
- country: z154.string().min(2).max(3),
40612
- supplierCost: z154.number().finite().positive(),
40613
- shippingCost: z154.number().finite().nonnegative(),
40614
- returnRate: z154.number().finite().min(0).lt(1),
40615
- cancellationRate: z154.number().finite().min(0).lt(1),
40616
- adsManagerCpa: z154.number().finite().nonnegative(),
40617
- desiredMargin: z154.number().finite().min(0).lt(1)
40618
- }).superRefine(({ returnRate, cancellationRate }, context) => {
40617
+ var CostingInputSchema = z154.object(DropshippingProjectCostingInputSchema.shape).superRefine(({ returnRate, cancellationRate }, context) => {
40619
40618
  if (returnRate + cancellationRate >= 1) context.addIssue({
40620
40619
  code: z154.ZodIssueCode.custom,
40621
40620
  path: [
@@ -40805,10 +40804,10 @@ var DateOnly = z155.string().regex(/^\d{4}-\d{2}-\d{2}$/);
40805
40804
  var DailyControlInput = z155.object({
40806
40805
  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."),
40807
40806
  days: z155.number().int().min(1).max(14).default(3).describe("Tama\xF1o de la ventana, 1 a 14 d\xEDas."),
40808
- projectId: z155.string().uuid().optional().describe("Opcional: limita el reporte a un solo proyecto en vez de todos los productos activos.")
40807
+ projectId: z155.string().guid().optional().describe("Opcional: limita el reporte a un solo proyecto en vez de todos los productos activos.")
40809
40808
  }).strict();
40810
40809
  var LinkCampaignInput = z155.object({
40811
- projectId: z155.string().uuid(),
40810
+ projectId: z155.string().guid(),
40812
40811
  provider: z155.enum([
40813
40812
  "meta",
40814
40813
  "tiktok"
@@ -40817,7 +40816,7 @@ var LinkCampaignInput = z155.object({
40817
40816
  campaignId: ProviderCampaignIdentifier
40818
40817
  }).strict();
40819
40818
  var ReportReturnsInput = z155.object({
40820
- projectId: z155.string().uuid(),
40819
+ projectId: z155.string().guid(),
40821
40820
  date: DateOnly,
40822
40821
  returnedOrders: z155.number().int().min(0).max(1e5),
40823
40822
  note: z155.string().trim().max(280).optional()
@@ -40835,7 +40834,7 @@ var DailyControlDayMirror = z155.object({
40835
40834
  light: DailyControlLightMirror
40836
40835
  }).passthrough();
40837
40836
  var DailyControlProductMirror = z155.object({
40838
- projectId: z155.string().uuid(),
40837
+ projectId: z155.string().guid(),
40839
40838
  productName: z155.string().nullable(),
40840
40839
  status: DailyControlStatusMirror,
40841
40840
  statusMessage: z155.string().nullable(),
@@ -40968,7 +40967,7 @@ var SetProductCostingInput = z156.object({
40968
40967
  tienda + id de Shopify. El esquema canónico también las admite juntas,
40969
40968
  pero pedirlas por separado evita que el modelo emita una mezcla que
40970
40969
  diga dos productos a la vez. */
40971
- 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."),
40970
+ 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."),
40972
40971
  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."),
40973
40972
  shopDomain: z156.string().min(1).optional(),
40974
40973
  shopifyProductId: z156.string().min(1).max(64).optional(),
@@ -40980,7 +40979,7 @@ var SetProductCostingInput = z156.object({
40980
40979
  }).strict();
40981
40980
  var Count = z156.number().int().min(0).max(1e5).nullable().optional();
40982
40981
  var ReportProductCountsInput = z156.object({
40983
- productControlId: z156.string().uuid().describe("El identificador que devuelve get_product_control."),
40982
+ productControlId: z156.string().guid().describe("El identificador que devuelve get_product_control."),
40984
40983
  date: DateOnly2,
40985
40984
  orders: Count.describe("Pedidos que entraron ese d\xEDa."),
40986
40985
  cancelledOrders: Count,
@@ -40993,7 +40992,7 @@ var SyncShopifyOrdersInput = SyncShopifyOrdersSchema;
40993
40992
  var ImportOrdersFileInput = z156.object({
40994
40993
  /** Ruta ABSOLUTA en la máquina de quien usa el MCP. */
40995
40994
  path: z156.string().min(1),
40996
- operationId: z156.string().uuid().optional(),
40995
+ operationId: z156.string().guid().optional(),
40997
40996
  /** Solo mirar: devuelve el resumen y no escribe nada. */
40998
40997
  dryRun: z156.boolean().optional()
40999
40998
  }).strict();
@@ -41002,35 +41001,35 @@ var CreateOperationInput = z156.object({
41002
41001
  label: z156.string().trim().min(1).max(60).optional()
41003
41002
  }).strict();
41004
41003
  var MergeProductsInput = z156.object({
41005
- sourceId: z156.string().uuid(),
41006
- targetId: z156.string().uuid()
41004
+ sourceId: z156.string().guid(),
41005
+ targetId: z156.string().guid()
41007
41006
  }).strict();
41008
41007
  var SetMonthlyExpenseInput = z156.object({
41009
41008
  month: z156.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/).optional(),
41010
41009
  label: SaveMonthlyExpenseSchema.shape.label,
41011
41010
  amount: z156.number().finite().min(0),
41012
- operationId: z156.string().uuid().optional()
41011
+ operationId: z156.string().guid().optional()
41013
41012
  }).strict();
41014
41013
  var SetAdSpendInput = z156.object({
41015
41014
  month: z156.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/).optional(),
41016
- operationId: z156.string().uuid().optional(),
41015
+ operationId: z156.string().guid().optional(),
41017
41016
  /** null RETIRA la corrección; cero afirma que no pautó. */
41018
41017
  amount: z156.number().finite().min(0).nullable()
41019
41018
  }).strict();
41020
41019
  var GetFinancesInput = z156.object({
41021
41020
  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."),
41022
- operationId: z156.string().uuid().optional().describe("El negocio, si tiene mas de uno. Con uno solo no hace falta decirlo.")
41021
+ operationId: z156.string().guid().optional().describe("El negocio, si tiene mas de uno. Con uno solo no hace falta decirlo.")
41023
41022
  }).strict();
41024
41023
  var GetDropiStatusInput = DropiCountryQuerySchema.extend({
41025
41024
  countryCode: DropiCountrySchema.optional().describe("Pa\xEDs de la cuenta (ISO-2). Si se omite, el servidor responde por Colombia (CO)."),
41026
- connectionId: z156.string().uuid().optional().describe("Una cuenta concreta cuando el pa\xEDs tiene varias. Sale de la lista de conexiones; nunca se inventa.")
41025
+ connectionId: z156.string().guid().optional().describe("Una cuenta concreta cuando el pa\xEDs tiene varias. Sale de la lista de conexiones; nunca se inventa.")
41027
41026
  });
41028
41027
  var SyncDropiOrdersInput = SyncDropiFinancialSchema;
41029
- var CreateManualProductInput = CreateManualProductControlSchema.innerType().omit({
41028
+ var CreateManualProductInput = z156.strictObject(CreateManualProductControlSchema.shape).omit({
41030
41029
  requestId: true
41031
41030
  });
41032
41031
  var ListUnmatchedProductsInput = z156.object({
41033
- operationId: z156.string().uuid().optional().describe("El negocio, si tiene mas de uno. Con uno solo no hace falta decirlo.")
41032
+ operationId: z156.string().guid().optional().describe("El negocio, si tiene mas de uno. Con uno solo no hace falta decirlo.")
41034
41033
  }).strict();
41035
41034
  var ResolveUnmatchedProductInput = ResolveUnmatchedProductSchema;
41036
41035
  var ListLinkableCampaignsInput = z156.object({}).strict();
@@ -41041,13 +41040,13 @@ var LinkProductCampaignInput = z156.object({
41041
41040
  ]).describe("La red publicitaria de la campa\xF1a."),
41042
41041
  accountId: z156.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/).describe("La cuenta publicitaria. Sale de list_linkable_campaigns; nunca se inventa."),
41043
41042
  campaignId: z156.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/).describe("La campa\xF1a. Sale de list_linkable_campaigns; nunca se inventa."),
41044
- productControlId: z156.string().uuid().optional().describe("El id del producto en su control financiero."),
41043
+ productControlId: z156.string().guid().optional().describe("El id del producto en su control financiero."),
41045
41044
  shopDomain: z156.string().min(1).optional().describe("La tienda del producto; con shopifyProductId es la otra forma de decir cu\xE1l es."),
41046
41045
  shopifyProductId: z156.string().min(1).optional().describe("El id del producto en su tienda. Va junto a shopDomain.")
41047
41046
  }).strict();
41048
41047
  var DeleteMonthlyExpenseInput = DeleteMonthlyExpenseSchema;
41049
41048
  var RemoveProductControlInput = z156.object({
41050
- productControlId: z156.string().uuid().describe("El id del producto en su control. Sale del listado; nunca se inventa.")
41049
+ productControlId: z156.string().guid().describe("El id del producto en su control. Sale del listado; nunca se inventa.")
41051
41050
  }).strict();
41052
41051
  function manualProductRequestId(input) {
41053
41052
  const digest3 = createHash5("sha256").update(JSON.stringify(input, [
@@ -41541,6 +41540,8 @@ function createServer(opts) {
41541
41540
  },
41542
41541
  logging: {}
41543
41542
  },
41543
+ // Bound structural work before parsing hosted tool arguments; stdio remains local.
41544
+ maxToolInputElements: transport === "http" ? 1e4 : void 0,
41544
41545
  instructions
41545
41546
  });
41546
41547
  const api = new ApiClient(apiBaseUrl, opts.credential, {