@productmaker/mcp 12.0.0 → 12.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/dist/http.js +83 -5
- package/dist/stdio.js +83 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -309,6 +309,12 @@ The `base64` field was removed. MCP JSON-RPC transports truncate large tool argu
|
|
|
309
309
|
|
|
310
310
|
## Version history
|
|
311
311
|
|
|
312
|
+
### 12.0.1 — Service output recovery
|
|
313
|
+
|
|
314
|
+
Internal motion output admission isolates artifacts by claim, accepts paired
|
|
315
|
+
upload ordering and preserves historical output URLs. Complete upload targets
|
|
316
|
+
and full-refund-aware settlement protect delivery without MCP contract changes.
|
|
317
|
+
|
|
312
318
|
### 12.0.0 — Ready service required for new service content
|
|
313
319
|
|
|
314
320
|
- New Motion Graphics videos require an owned ready Service (`brandId`) before
|
package/dist/http.js
CHANGED
|
@@ -16373,6 +16373,8 @@ var motionGraphicsStateSchema = z86.object({
|
|
|
16373
16373
|
stage: MotionGraphicsStageSchema,
|
|
16374
16374
|
/** How many times an agent has taken this job. */
|
|
16375
16375
|
claims: z86.number().int().nonnegative(),
|
|
16376
|
+
/** Upload admission binds all outputs to this claim; absent on legacy jobs. */
|
|
16377
|
+
outputAttempt: z86.number().int().positive().optional(),
|
|
16376
16378
|
/** Until when the current claim holds. Null while queued. */
|
|
16377
16379
|
leaseUntil: z86.string().datetime().nullable(),
|
|
16378
16380
|
/** When the job first entered the queue: the age that decides "nobody is coming". */
|
|
@@ -16395,8 +16397,7 @@ var motionGraphicsStateSchema = z86.object({
|
|
|
16395
16397
|
/**
|
|
16396
16398
|
* Where the live preview (a screenshot of the site taken during research)
|
|
16397
16399
|
* was signed for upload. Recorded when the upload is signed, because it
|
|
16398
|
-
* arrives long before `done` writes `outputs`.
|
|
16399
|
-
* (`motionGraphicsOutputKey(taskId, "preview")`).
|
|
16400
|
+
* arrives long before `done` writes `outputs`. New admissions isolate it by claim.
|
|
16400
16401
|
*/
|
|
16401
16402
|
previewKey: z86.string().min(1).optional(),
|
|
16402
16403
|
outputs: MotionGraphicsOutputsSchema.optional(),
|
|
@@ -16515,6 +16516,8 @@ var MotionGraphicsExistingClipSchema = z87.object({
|
|
|
16515
16516
|
}
|
|
16516
16517
|
});
|
|
16517
16518
|
var MotionGraphicsJobSchema = z87.object({
|
|
16519
|
+
/** Protocol 7: delivery settlement follows the accepted hook prefix. */
|
|
16520
|
+
deliveryUsageVersion: z87.literal("v1").optional(),
|
|
16518
16521
|
soundtrackVersion: z87.literal("v1").optional(),
|
|
16519
16522
|
speechRecoveryVersion: z87.literal("v1").optional(),
|
|
16520
16523
|
freeDirectionVersion: z87.literal(MOTION_GRAPHICS_FREE_DIRECTION_VERSION).optional(),
|
|
@@ -16704,6 +16707,12 @@ var MotionGraphicsUploadResponseSchema = z87.object({
|
|
|
16704
16707
|
contentType: z87.string()
|
|
16705
16708
|
}))
|
|
16706
16709
|
});
|
|
16710
|
+
var MotionGraphicsDeliveryUsageSchema = z87.object({
|
|
16711
|
+
variantsDelivered: z87.number().int().min(0).max(MOTION_GRAPHICS_HOOK_VARIANTS_MAX - 1),
|
|
16712
|
+
clipsUsed: z87.number().int().min(0).max(MOTION_GRAPHICS_BROLL_MAX_CLIPS).optional(),
|
|
16713
|
+
lipsyncUsed: z87.number().int().min(0).max(MOTION_GRAPHICS_LIPSYNC_MAX_CLIPS).optional(),
|
|
16714
|
+
voUsed: z87.boolean().optional()
|
|
16715
|
+
}).strict();
|
|
16707
16716
|
var MotionGraphicsDoneRequestSchema = z87.object({
|
|
16708
16717
|
musicUsed: z87.boolean().optional(),
|
|
16709
16718
|
cleanVariants: z87.number().int().min(0).max(MOTION_GRAPHICS_HOOK_VARIANTS_MAX - 1).optional(),
|
|
@@ -16736,8 +16745,77 @@ var MotionGraphicsDoneRequestSchema = z87.object({
|
|
|
16736
16745
|
* EXTRA hook versions uploaded and delivered (0..2; the main video is not
|
|
16737
16746
|
* counted). Each paid version beyond it is refunded. Absent reads as 0.
|
|
16738
16747
|
*/
|
|
16739
|
-
variantsDelivered: z87.number().int().min(0).max(MOTION_GRAPHICS_HOOK_VARIANTS_MAX - 1).optional()
|
|
16740
|
-
|
|
16748
|
+
variantsDelivered: z87.number().int().min(0).max(MOTION_GRAPHICS_HOOK_VARIANTS_MAX - 1).optional(),
|
|
16749
|
+
usageByVariantCount: z87.array(MotionGraphicsDeliveryUsageSchema).min(1).max(MOTION_GRAPHICS_HOOK_VARIANTS_MAX).optional()
|
|
16750
|
+
}).strict().superRefine((request, ctx) => {
|
|
16751
|
+
const usage = request.usageByVariantCount;
|
|
16752
|
+
if (!usage) return;
|
|
16753
|
+
if (usage.length !== (request.variantsDelivered ?? 0) + 1) {
|
|
16754
|
+
ctx.addIssue({
|
|
16755
|
+
code: z87.ZodIssueCode.custom,
|
|
16756
|
+
path: [
|
|
16757
|
+
"usageByVariantCount"
|
|
16758
|
+
],
|
|
16759
|
+
message: "Usage must cover every delivered hook prefix"
|
|
16760
|
+
});
|
|
16761
|
+
}
|
|
16762
|
+
for (const [index, entry] of usage.entries()) {
|
|
16763
|
+
if (entry.variantsDelivered !== index) {
|
|
16764
|
+
ctx.addIssue({
|
|
16765
|
+
code: z87.ZodIssueCode.custom,
|
|
16766
|
+
path: [
|
|
16767
|
+
"usageByVariantCount",
|
|
16768
|
+
index,
|
|
16769
|
+
"variantsDelivered"
|
|
16770
|
+
],
|
|
16771
|
+
message: "Usage prefixes must be contiguous and ordered"
|
|
16772
|
+
});
|
|
16773
|
+
}
|
|
16774
|
+
const previous = usage[index - 1];
|
|
16775
|
+
for (const field of [
|
|
16776
|
+
"clipsUsed",
|
|
16777
|
+
"lipsyncUsed",
|
|
16778
|
+
"voUsed"
|
|
16779
|
+
]) {
|
|
16780
|
+
const value = entry[field];
|
|
16781
|
+
const aggregate = request[field];
|
|
16782
|
+
if (value === void 0 !== (aggregate === void 0) || index === usage.length - 1 && value !== aggregate) {
|
|
16783
|
+
ctx.addIssue({
|
|
16784
|
+
code: z87.ZodIssueCode.custom,
|
|
16785
|
+
path: [
|
|
16786
|
+
"usageByVariantCount",
|
|
16787
|
+
index,
|
|
16788
|
+
field
|
|
16789
|
+
],
|
|
16790
|
+
message: "Usage must preserve aggregate field presence and final totals"
|
|
16791
|
+
});
|
|
16792
|
+
}
|
|
16793
|
+
const before = previous?.[field];
|
|
16794
|
+
if (before !== void 0 && value !== void 0 && Number(value) < Number(before)) {
|
|
16795
|
+
ctx.addIssue({
|
|
16796
|
+
code: z87.ZodIssueCode.custom,
|
|
16797
|
+
path: [
|
|
16798
|
+
"usageByVariantCount",
|
|
16799
|
+
index,
|
|
16800
|
+
field
|
|
16801
|
+
],
|
|
16802
|
+
message: "Usage cannot decrease when a hook is added"
|
|
16803
|
+
});
|
|
16804
|
+
}
|
|
16805
|
+
}
|
|
16806
|
+
if (entry.clipsUsed !== void 0 && entry.lipsyncUsed !== void 0 && entry.lipsyncUsed > entry.clipsUsed) {
|
|
16807
|
+
ctx.addIssue({
|
|
16808
|
+
code: z87.ZodIssueCode.custom,
|
|
16809
|
+
path: [
|
|
16810
|
+
"usageByVariantCount",
|
|
16811
|
+
index,
|
|
16812
|
+
"lipsyncUsed"
|
|
16813
|
+
],
|
|
16814
|
+
message: "Lip sync usage cannot exceed clip usage"
|
|
16815
|
+
});
|
|
16816
|
+
}
|
|
16817
|
+
}
|
|
16818
|
+
});
|
|
16741
16819
|
var MotionGraphicsClipSubmitRequestSchema = z87.object({
|
|
16742
16820
|
attempt: MotionGraphicsAttemptSchema,
|
|
16743
16821
|
clips: MotionGraphicsClipRequestSchema.shape.clips
|
|
@@ -25510,7 +25588,7 @@ var ApiClient = class {
|
|
|
25510
25588
|
};
|
|
25511
25589
|
|
|
25512
25590
|
// src/index.ts
|
|
25513
|
-
var MCP_VERSION = "12.0.
|
|
25591
|
+
var MCP_VERSION = "12.0.1";
|
|
25514
25592
|
|
|
25515
25593
|
// src/meta-upload-app.ts
|
|
25516
25594
|
import { readFileSync } from "fs";
|
package/dist/stdio.js
CHANGED
|
@@ -16148,6 +16148,8 @@ var motionGraphicsStateSchema = z86.object({
|
|
|
16148
16148
|
stage: MotionGraphicsStageSchema,
|
|
16149
16149
|
/** How many times an agent has taken this job. */
|
|
16150
16150
|
claims: z86.number().int().nonnegative(),
|
|
16151
|
+
/** Upload admission binds all outputs to this claim; absent on legacy jobs. */
|
|
16152
|
+
outputAttempt: z86.number().int().positive().optional(),
|
|
16151
16153
|
/** Until when the current claim holds. Null while queued. */
|
|
16152
16154
|
leaseUntil: z86.string().datetime().nullable(),
|
|
16153
16155
|
/** When the job first entered the queue: the age that decides "nobody is coming". */
|
|
@@ -16170,8 +16172,7 @@ var motionGraphicsStateSchema = z86.object({
|
|
|
16170
16172
|
/**
|
|
16171
16173
|
* Where the live preview (a screenshot of the site taken during research)
|
|
16172
16174
|
* was signed for upload. Recorded when the upload is signed, because it
|
|
16173
|
-
* arrives long before `done` writes `outputs`.
|
|
16174
|
-
* (`motionGraphicsOutputKey(taskId, "preview")`).
|
|
16175
|
+
* arrives long before `done` writes `outputs`. New admissions isolate it by claim.
|
|
16175
16176
|
*/
|
|
16176
16177
|
previewKey: z86.string().min(1).optional(),
|
|
16177
16178
|
outputs: MotionGraphicsOutputsSchema.optional(),
|
|
@@ -16290,6 +16291,8 @@ var MotionGraphicsExistingClipSchema = z87.object({
|
|
|
16290
16291
|
}
|
|
16291
16292
|
});
|
|
16292
16293
|
var MotionGraphicsJobSchema = z87.object({
|
|
16294
|
+
/** Protocol 7: delivery settlement follows the accepted hook prefix. */
|
|
16295
|
+
deliveryUsageVersion: z87.literal("v1").optional(),
|
|
16293
16296
|
soundtrackVersion: z87.literal("v1").optional(),
|
|
16294
16297
|
speechRecoveryVersion: z87.literal("v1").optional(),
|
|
16295
16298
|
freeDirectionVersion: z87.literal(MOTION_GRAPHICS_FREE_DIRECTION_VERSION).optional(),
|
|
@@ -16479,6 +16482,12 @@ var MotionGraphicsUploadResponseSchema = z87.object({
|
|
|
16479
16482
|
contentType: z87.string()
|
|
16480
16483
|
}))
|
|
16481
16484
|
});
|
|
16485
|
+
var MotionGraphicsDeliveryUsageSchema = z87.object({
|
|
16486
|
+
variantsDelivered: z87.number().int().min(0).max(MOTION_GRAPHICS_HOOK_VARIANTS_MAX - 1),
|
|
16487
|
+
clipsUsed: z87.number().int().min(0).max(MOTION_GRAPHICS_BROLL_MAX_CLIPS).optional(),
|
|
16488
|
+
lipsyncUsed: z87.number().int().min(0).max(MOTION_GRAPHICS_LIPSYNC_MAX_CLIPS).optional(),
|
|
16489
|
+
voUsed: z87.boolean().optional()
|
|
16490
|
+
}).strict();
|
|
16482
16491
|
var MotionGraphicsDoneRequestSchema = z87.object({
|
|
16483
16492
|
musicUsed: z87.boolean().optional(),
|
|
16484
16493
|
cleanVariants: z87.number().int().min(0).max(MOTION_GRAPHICS_HOOK_VARIANTS_MAX - 1).optional(),
|
|
@@ -16511,8 +16520,77 @@ var MotionGraphicsDoneRequestSchema = z87.object({
|
|
|
16511
16520
|
* EXTRA hook versions uploaded and delivered (0..2; the main video is not
|
|
16512
16521
|
* counted). Each paid version beyond it is refunded. Absent reads as 0.
|
|
16513
16522
|
*/
|
|
16514
|
-
variantsDelivered: z87.number().int().min(0).max(MOTION_GRAPHICS_HOOK_VARIANTS_MAX - 1).optional()
|
|
16515
|
-
|
|
16523
|
+
variantsDelivered: z87.number().int().min(0).max(MOTION_GRAPHICS_HOOK_VARIANTS_MAX - 1).optional(),
|
|
16524
|
+
usageByVariantCount: z87.array(MotionGraphicsDeliveryUsageSchema).min(1).max(MOTION_GRAPHICS_HOOK_VARIANTS_MAX).optional()
|
|
16525
|
+
}).strict().superRefine((request, ctx) => {
|
|
16526
|
+
const usage = request.usageByVariantCount;
|
|
16527
|
+
if (!usage) return;
|
|
16528
|
+
if (usage.length !== (request.variantsDelivered ?? 0) + 1) {
|
|
16529
|
+
ctx.addIssue({
|
|
16530
|
+
code: z87.ZodIssueCode.custom,
|
|
16531
|
+
path: [
|
|
16532
|
+
"usageByVariantCount"
|
|
16533
|
+
],
|
|
16534
|
+
message: "Usage must cover every delivered hook prefix"
|
|
16535
|
+
});
|
|
16536
|
+
}
|
|
16537
|
+
for (const [index, entry] of usage.entries()) {
|
|
16538
|
+
if (entry.variantsDelivered !== index) {
|
|
16539
|
+
ctx.addIssue({
|
|
16540
|
+
code: z87.ZodIssueCode.custom,
|
|
16541
|
+
path: [
|
|
16542
|
+
"usageByVariantCount",
|
|
16543
|
+
index,
|
|
16544
|
+
"variantsDelivered"
|
|
16545
|
+
],
|
|
16546
|
+
message: "Usage prefixes must be contiguous and ordered"
|
|
16547
|
+
});
|
|
16548
|
+
}
|
|
16549
|
+
const previous = usage[index - 1];
|
|
16550
|
+
for (const field of [
|
|
16551
|
+
"clipsUsed",
|
|
16552
|
+
"lipsyncUsed",
|
|
16553
|
+
"voUsed"
|
|
16554
|
+
]) {
|
|
16555
|
+
const value = entry[field];
|
|
16556
|
+
const aggregate = request[field];
|
|
16557
|
+
if (value === void 0 !== (aggregate === void 0) || index === usage.length - 1 && value !== aggregate) {
|
|
16558
|
+
ctx.addIssue({
|
|
16559
|
+
code: z87.ZodIssueCode.custom,
|
|
16560
|
+
path: [
|
|
16561
|
+
"usageByVariantCount",
|
|
16562
|
+
index,
|
|
16563
|
+
field
|
|
16564
|
+
],
|
|
16565
|
+
message: "Usage must preserve aggregate field presence and final totals"
|
|
16566
|
+
});
|
|
16567
|
+
}
|
|
16568
|
+
const before = previous?.[field];
|
|
16569
|
+
if (before !== void 0 && value !== void 0 && Number(value) < Number(before)) {
|
|
16570
|
+
ctx.addIssue({
|
|
16571
|
+
code: z87.ZodIssueCode.custom,
|
|
16572
|
+
path: [
|
|
16573
|
+
"usageByVariantCount",
|
|
16574
|
+
index,
|
|
16575
|
+
field
|
|
16576
|
+
],
|
|
16577
|
+
message: "Usage cannot decrease when a hook is added"
|
|
16578
|
+
});
|
|
16579
|
+
}
|
|
16580
|
+
}
|
|
16581
|
+
if (entry.clipsUsed !== void 0 && entry.lipsyncUsed !== void 0 && entry.lipsyncUsed > entry.clipsUsed) {
|
|
16582
|
+
ctx.addIssue({
|
|
16583
|
+
code: z87.ZodIssueCode.custom,
|
|
16584
|
+
path: [
|
|
16585
|
+
"usageByVariantCount",
|
|
16586
|
+
index,
|
|
16587
|
+
"lipsyncUsed"
|
|
16588
|
+
],
|
|
16589
|
+
message: "Lip sync usage cannot exceed clip usage"
|
|
16590
|
+
});
|
|
16591
|
+
}
|
|
16592
|
+
}
|
|
16593
|
+
});
|
|
16516
16594
|
var MotionGraphicsClipSubmitRequestSchema = z87.object({
|
|
16517
16595
|
attempt: MotionGraphicsAttemptSchema,
|
|
16518
16596
|
clips: MotionGraphicsClipRequestSchema.shape.clips
|
|
@@ -23839,7 +23917,7 @@ var ApiClient = class {
|
|
|
23839
23917
|
};
|
|
23840
23918
|
|
|
23841
23919
|
// src/index.ts
|
|
23842
|
-
var MCP_VERSION = "12.0.
|
|
23920
|
+
var MCP_VERSION = "12.0.1";
|
|
23843
23921
|
|
|
23844
23922
|
// src/meta-upload-app.ts
|
|
23845
23923
|
import { readFileSync } from "fs";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@productmaker/mcp",
|
|
3
|
-
"version": "12.0.
|
|
3
|
+
"version": "12.0.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"private": false,
|
|
6
6
|
"description": "ProductMaker MCP server — cost products, generate landing pages, UGC videos, and ad creatives, and publish to Shopify, Meta Ads, and TikTok Ads.",
|