@productmaker/mcp 1.17.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/http.js +174 -12
- package/dist/stdio.js +174 -12
- package/package.json +2 -2
package/dist/http.js
CHANGED
|
@@ -142,7 +142,7 @@ var ApiClient = class {
|
|
|
142
142
|
};
|
|
143
143
|
|
|
144
144
|
// src/index.ts
|
|
145
|
-
var MCP_VERSION = "
|
|
145
|
+
var MCP_VERSION = "2.0.0";
|
|
146
146
|
|
|
147
147
|
// src/tools/tasks.ts
|
|
148
148
|
import { z as z39 } from "zod";
|
|
@@ -450,9 +450,11 @@ var VideoModel = z.enum([
|
|
|
450
450
|
]);
|
|
451
451
|
var NarrativeStyle = z.enum([
|
|
452
452
|
"review",
|
|
453
|
+
"ugc_how_to",
|
|
453
454
|
"problem_product_cta",
|
|
454
455
|
"product_showcase",
|
|
455
456
|
"cinematic",
|
|
457
|
+
"wild_card",
|
|
456
458
|
"metaphor_product_cta",
|
|
457
459
|
"wearable_showcase",
|
|
458
460
|
"animated_problem_pixar",
|
|
@@ -471,9 +473,11 @@ var VideoResolution = z.enum([
|
|
|
471
473
|
var VideoPreset = z.enum([
|
|
472
474
|
"auto",
|
|
473
475
|
"ugc_dynamic",
|
|
476
|
+
"ugc_how_to",
|
|
474
477
|
"problem_solution",
|
|
475
478
|
"product_showcase",
|
|
476
479
|
"cinematic",
|
|
480
|
+
"wild_card",
|
|
477
481
|
"wearable_showcase",
|
|
478
482
|
"pixar_problem",
|
|
479
483
|
"pixar_sassy",
|
|
@@ -2461,6 +2465,7 @@ var TASK_CREATIVE_VARIANT_TEXT_LIMITS = {
|
|
|
2461
2465
|
recommendationRationale: 600
|
|
2462
2466
|
};
|
|
2463
2467
|
var TaskCreativeVariantVideoPreset = VideoPreset.exclude([
|
|
2468
|
+
"problem_solution",
|
|
2464
2469
|
"ugc_unboxing_chaos",
|
|
2465
2470
|
"ugc_curiosity_reveal",
|
|
2466
2471
|
"ugc_listicle_3",
|
|
@@ -2573,6 +2578,7 @@ var TaskVariantSummary = z21.object({
|
|
|
2573
2578
|
var MAX_LANDING_IMAGES = 20;
|
|
2574
2579
|
var AutoResolvedPresetSchema = z22.enum([
|
|
2575
2580
|
"ugc_dynamic",
|
|
2581
|
+
"ugc_how_to",
|
|
2576
2582
|
"ugc_demo_review",
|
|
2577
2583
|
"ugc_unboxing_chaos",
|
|
2578
2584
|
"ugc_curiosity_reveal",
|
|
@@ -2581,6 +2587,7 @@ var AutoResolvedPresetSchema = z22.enum([
|
|
|
2581
2587
|
"problem_solution",
|
|
2582
2588
|
"product_showcase",
|
|
2583
2589
|
"cinematic",
|
|
2590
|
+
"wild_card",
|
|
2584
2591
|
"wearable_showcase",
|
|
2585
2592
|
"pixar_problem",
|
|
2586
2593
|
"pixar_sassy",
|
|
@@ -6576,6 +6583,151 @@ var SceneSubjectContractSchema = z37.object({
|
|
|
6576
6583
|
}
|
|
6577
6584
|
});
|
|
6578
6585
|
|
|
6586
|
+
// ../../packages/types/src/productmaker-chat-capabilities.ts
|
|
6587
|
+
var PRODUCTMAKER_MCP_CAPABILITIES = [
|
|
6588
|
+
{
|
|
6589
|
+
name: "approve_video_script",
|
|
6590
|
+
confirmation: "credit_consuming",
|
|
6591
|
+
schemaHash: "bab794a9700a8d3f42b97f444a776e7ed4dcd833038c52588f951b50970ff3fa"
|
|
6592
|
+
},
|
|
6593
|
+
{
|
|
6594
|
+
name: "cost_product",
|
|
6595
|
+
confirmation: "none",
|
|
6596
|
+
schemaHash: "6d1f85a999dbdabae4eda406ff4689cdff2016df375b5b6741b91f4308d819af"
|
|
6597
|
+
},
|
|
6598
|
+
{
|
|
6599
|
+
name: "create_creative_variant",
|
|
6600
|
+
confirmation: "credit_consuming",
|
|
6601
|
+
schemaHash: "8feeed1e6e6a14bdcb0a1d9d8b03350ce7d8117d926db49f19ca5c5a8f1e7033"
|
|
6602
|
+
},
|
|
6603
|
+
{
|
|
6604
|
+
name: "create_product_task",
|
|
6605
|
+
confirmation: "credit_consuming",
|
|
6606
|
+
schemaHash: "5346684b007a40f6e8d53cc0b56ebb20aeb7e5ba48cdde43bc9f4e6163ed2d3f"
|
|
6607
|
+
},
|
|
6608
|
+
{
|
|
6609
|
+
name: "edit_task_draft",
|
|
6610
|
+
confirmation: "state_change",
|
|
6611
|
+
schemaHash: "f1763564083dcaac2d1f4d5e6c4625a2d4ec0ea3eea273aadc0fb9d4ab6c7d47"
|
|
6612
|
+
},
|
|
6613
|
+
{
|
|
6614
|
+
name: "estimate_creative_variant",
|
|
6615
|
+
confirmation: "none",
|
|
6616
|
+
schemaHash: "a5601adcb9578319528ca0a96f37a35b613370646a75932d1b3978d593f7e302"
|
|
6617
|
+
},
|
|
6618
|
+
{
|
|
6619
|
+
name: "find_winning_products",
|
|
6620
|
+
confirmation: "credit_consuming",
|
|
6621
|
+
schemaHash: "40f581e270ca668fb5fd1505a1f7cced6f629936e7d8394426aa0c655b9cef4f"
|
|
6622
|
+
},
|
|
6623
|
+
{
|
|
6624
|
+
name: "generate_free_video",
|
|
6625
|
+
confirmation: "credit_consuming",
|
|
6626
|
+
schemaHash: "a6f984d175c1ae5bc5f36ade27ee12c57763192000453c0387cd4cd6a9f1751d"
|
|
6627
|
+
},
|
|
6628
|
+
{
|
|
6629
|
+
name: "generate_image_creatives",
|
|
6630
|
+
confirmation: "credit_consuming",
|
|
6631
|
+
schemaHash: "fb6afcf8571887906340fa0b8dd17196d2814e480b734ad5d374e8810958152e"
|
|
6632
|
+
},
|
|
6633
|
+
{
|
|
6634
|
+
name: "generate_landing",
|
|
6635
|
+
confirmation: "credit_consuming",
|
|
6636
|
+
schemaHash: "539922b8fe611c73a7349b1c3f92632fe21f161d7874a0ef2172abfec5834759"
|
|
6637
|
+
},
|
|
6638
|
+
{
|
|
6639
|
+
name: "generate_video_creative",
|
|
6640
|
+
confirmation: "credit_consuming",
|
|
6641
|
+
schemaHash: "94e90d60ad5d68538c31d880a635c5be69d6d204fd2119139735af83ebf0b94a"
|
|
6642
|
+
},
|
|
6643
|
+
{
|
|
6644
|
+
name: "get_meta_campaign_status",
|
|
6645
|
+
confirmation: "none",
|
|
6646
|
+
schemaHash: "92077241cf4e9d14edefca410e85715cc383b1433081c3461c925f8fc3d6e8ab"
|
|
6647
|
+
},
|
|
6648
|
+
{
|
|
6649
|
+
name: "get_product_research_run",
|
|
6650
|
+
confirmation: "none",
|
|
6651
|
+
schemaHash: "3d0bfa4409daa4a8126d18787c3dc619dbdf2fbb679a2cffe9ffcd1c0d96402f"
|
|
6652
|
+
},
|
|
6653
|
+
{
|
|
6654
|
+
name: "get_task_status",
|
|
6655
|
+
confirmation: "none",
|
|
6656
|
+
schemaHash: "6876d865685dd371ae6c2da2d5a69b657731e5a032aff46ac95b6077e9a6d93e"
|
|
6657
|
+
},
|
|
6658
|
+
{
|
|
6659
|
+
name: "get_tiktok_campaign_status",
|
|
6660
|
+
confirmation: "none",
|
|
6661
|
+
schemaHash: "7a2f90a9a9ba91506fbb57a0a881d5a7b9ca1bb1074b0a754520f02fd81b2801"
|
|
6662
|
+
},
|
|
6663
|
+
{
|
|
6664
|
+
name: "get_video_script",
|
|
6665
|
+
confirmation: "none",
|
|
6666
|
+
schemaHash: "c96e7042368ba6f241773d26d4a443894b092801d1c81054f3798865138edfba"
|
|
6667
|
+
},
|
|
6668
|
+
{
|
|
6669
|
+
name: "list_meta_ad_accounts",
|
|
6670
|
+
confirmation: "none",
|
|
6671
|
+
schemaHash: "7a014b717a77aac971ea0ab5c0ff47bb13e6cae7ef9442d9dedb15ce36381b15"
|
|
6672
|
+
},
|
|
6673
|
+
{
|
|
6674
|
+
name: "list_product_research_runs",
|
|
6675
|
+
confirmation: "none",
|
|
6676
|
+
schemaHash: "3b8fac903cd9e30c5b6a6c584cc70a819af5392bbdbb32b69eab4c65dc52b556"
|
|
6677
|
+
},
|
|
6678
|
+
{
|
|
6679
|
+
name: "list_shopify_products",
|
|
6680
|
+
confirmation: "none",
|
|
6681
|
+
schemaHash: "152b137e01066f3b443987ad75f5be00de8696ce984144bd775416192be20667"
|
|
6682
|
+
},
|
|
6683
|
+
{
|
|
6684
|
+
name: "list_shopify_shops",
|
|
6685
|
+
confirmation: "none",
|
|
6686
|
+
schemaHash: "7a014b717a77aac971ea0ab5c0ff47bb13e6cae7ef9442d9dedb15ce36381b15"
|
|
6687
|
+
},
|
|
6688
|
+
{
|
|
6689
|
+
name: "list_tasks",
|
|
6690
|
+
confirmation: "none",
|
|
6691
|
+
schemaHash: "cac5e9dda34b90550024cc546976fab1d6de4fc8fca85a3ec6abde65223cb56c"
|
|
6692
|
+
},
|
|
6693
|
+
{
|
|
6694
|
+
name: "list_tiktok_advertisers",
|
|
6695
|
+
confirmation: "none",
|
|
6696
|
+
schemaHash: "7a014b717a77aac971ea0ab5c0ff47bb13e6cae7ef9442d9dedb15ce36381b15"
|
|
6697
|
+
},
|
|
6698
|
+
{
|
|
6699
|
+
name: "publish_creatives_to_meta",
|
|
6700
|
+
confirmation: "external_mutation",
|
|
6701
|
+
schemaHash: "ddb45071d61746b443124346e7a82095315a2a80bd393c73a45f12b895939cf5"
|
|
6702
|
+
},
|
|
6703
|
+
{
|
|
6704
|
+
name: "publish_to_meta",
|
|
6705
|
+
confirmation: "external_mutation",
|
|
6706
|
+
schemaHash: "4b6daa1a25e739ccf208a6acede067ec1c22b1ea5509f332361a17dd46f6bb0b"
|
|
6707
|
+
},
|
|
6708
|
+
{
|
|
6709
|
+
name: "publish_to_shopify",
|
|
6710
|
+
confirmation: "external_mutation",
|
|
6711
|
+
schemaHash: "ec37111aac872e6be22f34c8b547c1e4b58875f798c48e24ca9ca067a0a22d8b"
|
|
6712
|
+
},
|
|
6713
|
+
{
|
|
6714
|
+
name: "publish_to_tiktok",
|
|
6715
|
+
confirmation: "external_mutation",
|
|
6716
|
+
schemaHash: "4f8dccba51b99687f04e1a58e3fde003b6f52ec6c891afe74b1d81d4b6992908"
|
|
6717
|
+
},
|
|
6718
|
+
{
|
|
6719
|
+
name: "regenerate_video_script",
|
|
6720
|
+
confirmation: "credit_consuming",
|
|
6721
|
+
schemaHash: "745687cb41f904e293105f93bbe6bc0471f63fe097ab8f85d3df8d9833084844"
|
|
6722
|
+
},
|
|
6723
|
+
{
|
|
6724
|
+
name: "resolve_pending_action",
|
|
6725
|
+
confirmation: "credit_consuming",
|
|
6726
|
+
schemaHash: "3a9f33a26fce63b20bece3a528f8eb16e917dabc8a9ec5f04e746bad84757aa3"
|
|
6727
|
+
}
|
|
6728
|
+
];
|
|
6729
|
+
var PRODUCTMAKER_MCP_CAPABILITY_NAMES = PRODUCTMAKER_MCP_CAPABILITIES.map((capability) => capability.name);
|
|
6730
|
+
|
|
6579
6731
|
// src/resolve-media.ts
|
|
6580
6732
|
var MAX_MEDIA_BYTES = CAMPAIGN_LIMITS.MAX_FILE_SIZE_BYTES;
|
|
6581
6733
|
var MEDIA_FORMATS = [
|
|
@@ -6835,20 +6987,22 @@ var LandingImageFormatEnum = z38.enum([
|
|
|
6835
6987
|
var VideoPresetEnum = z38.enum([
|
|
6836
6988
|
"auto",
|
|
6837
6989
|
"ugc_dynamic",
|
|
6990
|
+
"ugc_how_to",
|
|
6838
6991
|
"ugc_unboxing_chaos",
|
|
6839
|
-
"problem_solution",
|
|
6840
6992
|
"product_showcase",
|
|
6841
6993
|
"wearable_showcase",
|
|
6842
6994
|
"cinematic",
|
|
6995
|
+
"wild_card",
|
|
6843
6996
|
"pixar_problem",
|
|
6844
6997
|
"pixar_sassy"
|
|
6845
6998
|
]);
|
|
6846
6999
|
var TaskCreativeVariantVideoPresetEnum = z38.enum([
|
|
6847
7000
|
"auto",
|
|
6848
7001
|
"ugc_dynamic",
|
|
6849
|
-
"
|
|
7002
|
+
"ugc_how_to",
|
|
6850
7003
|
"product_showcase",
|
|
6851
7004
|
"cinematic",
|
|
7005
|
+
"wild_card",
|
|
6852
7006
|
"wearable_showcase",
|
|
6853
7007
|
"pixar_problem",
|
|
6854
7008
|
"pixar_sassy",
|
|
@@ -6861,15 +7015,15 @@ var VIDEO_PRESET_RESOLUTION = {
|
|
|
6861
7015
|
narrativeStyle: "review",
|
|
6862
7016
|
videoModel: "veo"
|
|
6863
7017
|
},
|
|
6864
|
-
|
|
7018
|
+
ugc_how_to: {
|
|
6865
7019
|
videoStyle: "ai_dynamic",
|
|
6866
|
-
narrativeStyle: "
|
|
7020
|
+
narrativeStyle: "ugc_how_to",
|
|
6867
7021
|
videoModel: "veo"
|
|
6868
7022
|
},
|
|
6869
|
-
|
|
7023
|
+
ugc_unboxing_chaos: {
|
|
6870
7024
|
videoStyle: "ai_dynamic",
|
|
6871
|
-
narrativeStyle: "
|
|
6872
|
-
videoModel: "
|
|
7025
|
+
narrativeStyle: "ugc_unboxing_chaos",
|
|
7026
|
+
videoModel: "veo"
|
|
6873
7027
|
},
|
|
6874
7028
|
pixar_problem: {
|
|
6875
7029
|
videoStyle: "ai_dynamic",
|
|
@@ -6895,6 +7049,11 @@ var VIDEO_PRESET_RESOLUTION = {
|
|
|
6895
7049
|
videoStyle: "product_only",
|
|
6896
7050
|
narrativeStyle: "cinematic",
|
|
6897
7051
|
videoModel: "grok"
|
|
7052
|
+
},
|
|
7053
|
+
wild_card: {
|
|
7054
|
+
videoStyle: "product_only",
|
|
7055
|
+
narrativeStyle: "wild_card",
|
|
7056
|
+
videoModel: "grok"
|
|
6898
7057
|
}
|
|
6899
7058
|
};
|
|
6900
7059
|
function resolveVideoPreset(preset) {
|
|
@@ -6929,9 +7088,11 @@ var VideoStyleEnum = z38.enum([
|
|
|
6929
7088
|
]);
|
|
6930
7089
|
var NarrativeStyleEnum = z38.enum([
|
|
6931
7090
|
"review",
|
|
7091
|
+
"ugc_how_to",
|
|
6932
7092
|
"problem_product_cta",
|
|
6933
7093
|
"product_showcase",
|
|
6934
7094
|
"cinematic",
|
|
7095
|
+
"wild_card",
|
|
6935
7096
|
"metaphor_product_cta",
|
|
6936
7097
|
"wearable_showcase",
|
|
6937
7098
|
"animated_problem_pixar",
|
|
@@ -6944,11 +7105,12 @@ var NarrativeStyleEnum = z38.enum([
|
|
|
6944
7105
|
]);
|
|
6945
7106
|
var PublicNarrativeStyleEnum = z38.enum([
|
|
6946
7107
|
"review",
|
|
7108
|
+
"ugc_how_to",
|
|
6947
7109
|
"ugc_unboxing_chaos",
|
|
6948
|
-
"problem_product_cta",
|
|
6949
7110
|
"product_showcase",
|
|
6950
7111
|
"wearable_showcase",
|
|
6951
7112
|
"cinematic",
|
|
7113
|
+
"wild_card",
|
|
6952
7114
|
"animated_problem_pixar",
|
|
6953
7115
|
"sassy_product_pixar"
|
|
6954
7116
|
]);
|
|
@@ -7707,7 +7869,7 @@ var CreateProductTaskInput = z39.object({
|
|
|
7707
7869
|
paymentMethods: z39.string().min(1).max(240).optional().describe('Opcional. M\xE9todos de pago que puede mostrar la landing. Ej. "Tarjeta, PSE, Nequi, Contraentrega". Si se omite, la landing no muestra m\xE9todos de pago.'),
|
|
7708
7870
|
productContext: z39.string().max(3e3).optional().describe("Opcional. Informacion adicional del producto que la IA debe usar como contexto prioritario: uso real, comprador, restricciones, diferenciadores o direccion creativa. No reemplaza la investigacion de competencia; si hay competencia, guia el primer angulo y los outputs no deben contradecirlo."),
|
|
7709
7871
|
productLabel: z39.string().trim().max(80).optional().describe('Opcional. Qu\xE9 es el producto, en pocas palabras (ej. "quita pelusas para ropa"). Es AUTORITATIVO: si lo env\xEDas, la IA usa esta identidad y no la reemplaza por otra categor\xEDa. Si lo omites, la IA detecta el producto desde la imagen.'),
|
|
7710
|
-
videoPreset: VideoPresetEnum.default("auto").describe('Opcional. Tipo/narrativa del video \u2014 \xFAnico campo de "estilo" que el usuario controla
|
|
7872
|
+
videoPreset: VideoPresetEnum.default("auto").describe('Opcional. Tipo/narrativa del video \u2014 \xFAnico campo de "estilo" que el usuario controla. Default "auto" (la IA escoge tras analizar el producto). Los presets funcionan a 15s y 30s. Opciones: "auto", "ugc_dynamic" (review con experiencia y prueba), "ugc_how_to" (tutorial con pasos y resultado visible), "ugc_unboxing_chaos" (apertura y primera prueba), "product_showcase" (producto ejecutando una funci\xF3n real), "wearable_showcase" (prenda o accesorio modelado), "cinematic" (TV spot con receta cinematogr\xE1fica), "wild_card" (una regla visual experimental original), "pixar_problem" (problema animado 3D), "pixar_sassy" (producto que habla). Si el usuario pide algo fuera de esta lista, p\xEDdele una opci\xF3n v\xE1lida.'),
|
|
7711
7873
|
durationSeconds: z39.union([
|
|
7712
7874
|
z39.literal(15),
|
|
7713
7875
|
z39.literal(30)
|
|
@@ -7716,7 +7878,7 @@ var CreateProductTaskInput = z39.object({
|
|
|
7716
7878
|
videoTier: VideoTierEnum.optional().describe('Opcional. Estilo del video. "basic" = "Realista" para 15s; al pedir durationSeconds=30 el sistema selecciona internamente Multiescena. No se expone el tier interno directamente.'),
|
|
7717
7879
|
videoResolution: VideoResolutionEnum.optional().describe('Opcional. Resoluci\xF3n del render. En la web se pregunta "\xBFResoluci\xF3n del video?". "480p" = excelente calidad y m\xE1s econ\xF3mico (RECOMENDADO, default si se omite); "720p" = m\xE1xima nitidez (~el doble de precio). Si el usuario no menciona resoluci\xF3n, OMITE este campo (el backend usa 480p).'),
|
|
7718
7880
|
multiAngleVideos: z39.boolean().optional().describe("Opcional. Si true, genera m\xFAltiples \xE1ngulos de venta en paralelo (3-5 videos). Si false/omitido, genera 1 video del \xE1ngulo principal. Default false."),
|
|
7719
|
-
angleNarratives: PublicNarrativeStyleEnum.array().max(3).optional().describe('Opcional. Narrativa POR \xC1NGULO (posicional). Valores actuales: "review", "
|
|
7881
|
+
angleNarratives: PublicNarrativeStyleEnum.array().max(3).optional().describe('Opcional. Narrativa POR \xC1NGULO (posicional). Valores actuales: "review", "ugc_how_to", "ugc_unboxing_chaos", "product_showcase", "wearable_showcase", "cinematic", "wild_card", "animated_problem_pixar", "sassy_product_pixar". angleNarratives[i] fuerza la narrativa del \xE1ngulo i; las posiciones restantes las elige la IA. Requiere multiAngleVideos:true para varios \xE1ngulos.'),
|
|
7720
7882
|
outputs: z39.array(z39.enum([
|
|
7721
7883
|
"landing",
|
|
7722
7884
|
"video",
|
|
@@ -8202,7 +8364,7 @@ var VideoInput = z40.object({
|
|
|
8202
8364
|
z40.literal(15),
|
|
8203
8365
|
z40.literal(30)
|
|
8204
8366
|
]).default(15).describe("Opcional. Duraci\xF3n objetivo: 15s (single_call, default) o 30s (Multiescena, aproximadamente 30s y facturado por escena)."),
|
|
8205
|
-
videoPreset: VideoPresetEnum.default("auto").describe('Opcional. Tipo/narrativa del video \u2014 \xFAnico campo de "estilo" que el usuario controla
|
|
8367
|
+
videoPreset: VideoPresetEnum.default("auto").describe('Opcional. Tipo/narrativa del video \u2014 \xFAnico campo de "estilo" que el usuario controla. Default "auto" (la IA escoge tras analizar el producto). Los presets funcionan a 15s y 30s. Opciones: "auto", "ugc_dynamic" (review con experiencia y prueba), "ugc_how_to" (tutorial con pasos y resultado visible), "ugc_unboxing_chaos" (apertura y primera prueba), "product_showcase" (producto ejecutando una funci\xF3n real), "wearable_showcase" (prenda o accesorio modelado), "cinematic" (TV spot con receta cinematogr\xE1fica), "wild_card" (una regla visual experimental original), "pixar_problem" (problema animado 3D), "pixar_sassy" (producto que habla).'),
|
|
8206
8368
|
videoTier: VideoTierEnum.optional().describe('Opcional. Estilo del video. "basic" = "Realista"; para durationSeconds=30 el sistema selecciona internamente Multiescena. No se expone el tier interno directamente.'),
|
|
8207
8369
|
videoResolution: VideoResolutionEnum.optional().describe('Opcional. Resoluci\xF3n del render. En la web se pregunta "\xBFResoluci\xF3n del video?". "720p" = m\xE1xima nitidez (RECOMENDADO, default si se omite); "480p" = render m\xE1s econ\xF3mico. Si el usuario no menciona resoluci\xF3n, OMITE este campo (el backend usa 720p).'),
|
|
8208
8370
|
features: z40.array(z40.string()).optional().describe('Opcional. Lista de features/beneficios clave a mencionar. Ej. ["resistente al agua", "bater\xEDa 24h", "carga inal\xE1mbrica"].'),
|
package/dist/stdio.js
CHANGED
|
@@ -139,7 +139,7 @@ var ApiClient = class {
|
|
|
139
139
|
};
|
|
140
140
|
|
|
141
141
|
// src/index.ts
|
|
142
|
-
var MCP_VERSION = "
|
|
142
|
+
var MCP_VERSION = "2.0.0";
|
|
143
143
|
|
|
144
144
|
// src/tools/tasks.ts
|
|
145
145
|
import { z as z39 } from "zod";
|
|
@@ -447,9 +447,11 @@ var VideoModel = z.enum([
|
|
|
447
447
|
]);
|
|
448
448
|
var NarrativeStyle = z.enum([
|
|
449
449
|
"review",
|
|
450
|
+
"ugc_how_to",
|
|
450
451
|
"problem_product_cta",
|
|
451
452
|
"product_showcase",
|
|
452
453
|
"cinematic",
|
|
454
|
+
"wild_card",
|
|
453
455
|
"metaphor_product_cta",
|
|
454
456
|
"wearable_showcase",
|
|
455
457
|
"animated_problem_pixar",
|
|
@@ -468,9 +470,11 @@ var VideoResolution = z.enum([
|
|
|
468
470
|
var VideoPreset = z.enum([
|
|
469
471
|
"auto",
|
|
470
472
|
"ugc_dynamic",
|
|
473
|
+
"ugc_how_to",
|
|
471
474
|
"problem_solution",
|
|
472
475
|
"product_showcase",
|
|
473
476
|
"cinematic",
|
|
477
|
+
"wild_card",
|
|
474
478
|
"wearable_showcase",
|
|
475
479
|
"pixar_problem",
|
|
476
480
|
"pixar_sassy",
|
|
@@ -2458,6 +2462,7 @@ var TASK_CREATIVE_VARIANT_TEXT_LIMITS = {
|
|
|
2458
2462
|
recommendationRationale: 600
|
|
2459
2463
|
};
|
|
2460
2464
|
var TaskCreativeVariantVideoPreset = VideoPreset.exclude([
|
|
2465
|
+
"problem_solution",
|
|
2461
2466
|
"ugc_unboxing_chaos",
|
|
2462
2467
|
"ugc_curiosity_reveal",
|
|
2463
2468
|
"ugc_listicle_3",
|
|
@@ -2570,6 +2575,7 @@ var TaskVariantSummary = z21.object({
|
|
|
2570
2575
|
var MAX_LANDING_IMAGES = 20;
|
|
2571
2576
|
var AutoResolvedPresetSchema = z22.enum([
|
|
2572
2577
|
"ugc_dynamic",
|
|
2578
|
+
"ugc_how_to",
|
|
2573
2579
|
"ugc_demo_review",
|
|
2574
2580
|
"ugc_unboxing_chaos",
|
|
2575
2581
|
"ugc_curiosity_reveal",
|
|
@@ -2578,6 +2584,7 @@ var AutoResolvedPresetSchema = z22.enum([
|
|
|
2578
2584
|
"problem_solution",
|
|
2579
2585
|
"product_showcase",
|
|
2580
2586
|
"cinematic",
|
|
2587
|
+
"wild_card",
|
|
2581
2588
|
"wearable_showcase",
|
|
2582
2589
|
"pixar_problem",
|
|
2583
2590
|
"pixar_sassy",
|
|
@@ -6573,6 +6580,151 @@ var SceneSubjectContractSchema = z37.object({
|
|
|
6573
6580
|
}
|
|
6574
6581
|
});
|
|
6575
6582
|
|
|
6583
|
+
// ../../packages/types/src/productmaker-chat-capabilities.ts
|
|
6584
|
+
var PRODUCTMAKER_MCP_CAPABILITIES = [
|
|
6585
|
+
{
|
|
6586
|
+
name: "approve_video_script",
|
|
6587
|
+
confirmation: "credit_consuming",
|
|
6588
|
+
schemaHash: "bab794a9700a8d3f42b97f444a776e7ed4dcd833038c52588f951b50970ff3fa"
|
|
6589
|
+
},
|
|
6590
|
+
{
|
|
6591
|
+
name: "cost_product",
|
|
6592
|
+
confirmation: "none",
|
|
6593
|
+
schemaHash: "6d1f85a999dbdabae4eda406ff4689cdff2016df375b5b6741b91f4308d819af"
|
|
6594
|
+
},
|
|
6595
|
+
{
|
|
6596
|
+
name: "create_creative_variant",
|
|
6597
|
+
confirmation: "credit_consuming",
|
|
6598
|
+
schemaHash: "8feeed1e6e6a14bdcb0a1d9d8b03350ce7d8117d926db49f19ca5c5a8f1e7033"
|
|
6599
|
+
},
|
|
6600
|
+
{
|
|
6601
|
+
name: "create_product_task",
|
|
6602
|
+
confirmation: "credit_consuming",
|
|
6603
|
+
schemaHash: "5346684b007a40f6e8d53cc0b56ebb20aeb7e5ba48cdde43bc9f4e6163ed2d3f"
|
|
6604
|
+
},
|
|
6605
|
+
{
|
|
6606
|
+
name: "edit_task_draft",
|
|
6607
|
+
confirmation: "state_change",
|
|
6608
|
+
schemaHash: "f1763564083dcaac2d1f4d5e6c4625a2d4ec0ea3eea273aadc0fb9d4ab6c7d47"
|
|
6609
|
+
},
|
|
6610
|
+
{
|
|
6611
|
+
name: "estimate_creative_variant",
|
|
6612
|
+
confirmation: "none",
|
|
6613
|
+
schemaHash: "a5601adcb9578319528ca0a96f37a35b613370646a75932d1b3978d593f7e302"
|
|
6614
|
+
},
|
|
6615
|
+
{
|
|
6616
|
+
name: "find_winning_products",
|
|
6617
|
+
confirmation: "credit_consuming",
|
|
6618
|
+
schemaHash: "40f581e270ca668fb5fd1505a1f7cced6f629936e7d8394426aa0c655b9cef4f"
|
|
6619
|
+
},
|
|
6620
|
+
{
|
|
6621
|
+
name: "generate_free_video",
|
|
6622
|
+
confirmation: "credit_consuming",
|
|
6623
|
+
schemaHash: "a6f984d175c1ae5bc5f36ade27ee12c57763192000453c0387cd4cd6a9f1751d"
|
|
6624
|
+
},
|
|
6625
|
+
{
|
|
6626
|
+
name: "generate_image_creatives",
|
|
6627
|
+
confirmation: "credit_consuming",
|
|
6628
|
+
schemaHash: "fb6afcf8571887906340fa0b8dd17196d2814e480b734ad5d374e8810958152e"
|
|
6629
|
+
},
|
|
6630
|
+
{
|
|
6631
|
+
name: "generate_landing",
|
|
6632
|
+
confirmation: "credit_consuming",
|
|
6633
|
+
schemaHash: "539922b8fe611c73a7349b1c3f92632fe21f161d7874a0ef2172abfec5834759"
|
|
6634
|
+
},
|
|
6635
|
+
{
|
|
6636
|
+
name: "generate_video_creative",
|
|
6637
|
+
confirmation: "credit_consuming",
|
|
6638
|
+
schemaHash: "94e90d60ad5d68538c31d880a635c5be69d6d204fd2119139735af83ebf0b94a"
|
|
6639
|
+
},
|
|
6640
|
+
{
|
|
6641
|
+
name: "get_meta_campaign_status",
|
|
6642
|
+
confirmation: "none",
|
|
6643
|
+
schemaHash: "92077241cf4e9d14edefca410e85715cc383b1433081c3461c925f8fc3d6e8ab"
|
|
6644
|
+
},
|
|
6645
|
+
{
|
|
6646
|
+
name: "get_product_research_run",
|
|
6647
|
+
confirmation: "none",
|
|
6648
|
+
schemaHash: "3d0bfa4409daa4a8126d18787c3dc619dbdf2fbb679a2cffe9ffcd1c0d96402f"
|
|
6649
|
+
},
|
|
6650
|
+
{
|
|
6651
|
+
name: "get_task_status",
|
|
6652
|
+
confirmation: "none",
|
|
6653
|
+
schemaHash: "6876d865685dd371ae6c2da2d5a69b657731e5a032aff46ac95b6077e9a6d93e"
|
|
6654
|
+
},
|
|
6655
|
+
{
|
|
6656
|
+
name: "get_tiktok_campaign_status",
|
|
6657
|
+
confirmation: "none",
|
|
6658
|
+
schemaHash: "7a2f90a9a9ba91506fbb57a0a881d5a7b9ca1bb1074b0a754520f02fd81b2801"
|
|
6659
|
+
},
|
|
6660
|
+
{
|
|
6661
|
+
name: "get_video_script",
|
|
6662
|
+
confirmation: "none",
|
|
6663
|
+
schemaHash: "c96e7042368ba6f241773d26d4a443894b092801d1c81054f3798865138edfba"
|
|
6664
|
+
},
|
|
6665
|
+
{
|
|
6666
|
+
name: "list_meta_ad_accounts",
|
|
6667
|
+
confirmation: "none",
|
|
6668
|
+
schemaHash: "7a014b717a77aac971ea0ab5c0ff47bb13e6cae7ef9442d9dedb15ce36381b15"
|
|
6669
|
+
},
|
|
6670
|
+
{
|
|
6671
|
+
name: "list_product_research_runs",
|
|
6672
|
+
confirmation: "none",
|
|
6673
|
+
schemaHash: "3b8fac903cd9e30c5b6a6c584cc70a819af5392bbdbb32b69eab4c65dc52b556"
|
|
6674
|
+
},
|
|
6675
|
+
{
|
|
6676
|
+
name: "list_shopify_products",
|
|
6677
|
+
confirmation: "none",
|
|
6678
|
+
schemaHash: "152b137e01066f3b443987ad75f5be00de8696ce984144bd775416192be20667"
|
|
6679
|
+
},
|
|
6680
|
+
{
|
|
6681
|
+
name: "list_shopify_shops",
|
|
6682
|
+
confirmation: "none",
|
|
6683
|
+
schemaHash: "7a014b717a77aac971ea0ab5c0ff47bb13e6cae7ef9442d9dedb15ce36381b15"
|
|
6684
|
+
},
|
|
6685
|
+
{
|
|
6686
|
+
name: "list_tasks",
|
|
6687
|
+
confirmation: "none",
|
|
6688
|
+
schemaHash: "cac5e9dda34b90550024cc546976fab1d6de4fc8fca85a3ec6abde65223cb56c"
|
|
6689
|
+
},
|
|
6690
|
+
{
|
|
6691
|
+
name: "list_tiktok_advertisers",
|
|
6692
|
+
confirmation: "none",
|
|
6693
|
+
schemaHash: "7a014b717a77aac971ea0ab5c0ff47bb13e6cae7ef9442d9dedb15ce36381b15"
|
|
6694
|
+
},
|
|
6695
|
+
{
|
|
6696
|
+
name: "publish_creatives_to_meta",
|
|
6697
|
+
confirmation: "external_mutation",
|
|
6698
|
+
schemaHash: "ddb45071d61746b443124346e7a82095315a2a80bd393c73a45f12b895939cf5"
|
|
6699
|
+
},
|
|
6700
|
+
{
|
|
6701
|
+
name: "publish_to_meta",
|
|
6702
|
+
confirmation: "external_mutation",
|
|
6703
|
+
schemaHash: "4b6daa1a25e739ccf208a6acede067ec1c22b1ea5509f332361a17dd46f6bb0b"
|
|
6704
|
+
},
|
|
6705
|
+
{
|
|
6706
|
+
name: "publish_to_shopify",
|
|
6707
|
+
confirmation: "external_mutation",
|
|
6708
|
+
schemaHash: "ec37111aac872e6be22f34c8b547c1e4b58875f798c48e24ca9ca067a0a22d8b"
|
|
6709
|
+
},
|
|
6710
|
+
{
|
|
6711
|
+
name: "publish_to_tiktok",
|
|
6712
|
+
confirmation: "external_mutation",
|
|
6713
|
+
schemaHash: "4f8dccba51b99687f04e1a58e3fde003b6f52ec6c891afe74b1d81d4b6992908"
|
|
6714
|
+
},
|
|
6715
|
+
{
|
|
6716
|
+
name: "regenerate_video_script",
|
|
6717
|
+
confirmation: "credit_consuming",
|
|
6718
|
+
schemaHash: "745687cb41f904e293105f93bbe6bc0471f63fe097ab8f85d3df8d9833084844"
|
|
6719
|
+
},
|
|
6720
|
+
{
|
|
6721
|
+
name: "resolve_pending_action",
|
|
6722
|
+
confirmation: "credit_consuming",
|
|
6723
|
+
schemaHash: "3a9f33a26fce63b20bece3a528f8eb16e917dabc8a9ec5f04e746bad84757aa3"
|
|
6724
|
+
}
|
|
6725
|
+
];
|
|
6726
|
+
var PRODUCTMAKER_MCP_CAPABILITY_NAMES = PRODUCTMAKER_MCP_CAPABILITIES.map((capability) => capability.name);
|
|
6727
|
+
|
|
6576
6728
|
// src/resolve-media.ts
|
|
6577
6729
|
var MAX_MEDIA_BYTES = CAMPAIGN_LIMITS.MAX_FILE_SIZE_BYTES;
|
|
6578
6730
|
var MEDIA_FORMATS = [
|
|
@@ -6832,20 +6984,22 @@ var LandingImageFormatEnum = z38.enum([
|
|
|
6832
6984
|
var VideoPresetEnum = z38.enum([
|
|
6833
6985
|
"auto",
|
|
6834
6986
|
"ugc_dynamic",
|
|
6987
|
+
"ugc_how_to",
|
|
6835
6988
|
"ugc_unboxing_chaos",
|
|
6836
|
-
"problem_solution",
|
|
6837
6989
|
"product_showcase",
|
|
6838
6990
|
"wearable_showcase",
|
|
6839
6991
|
"cinematic",
|
|
6992
|
+
"wild_card",
|
|
6840
6993
|
"pixar_problem",
|
|
6841
6994
|
"pixar_sassy"
|
|
6842
6995
|
]);
|
|
6843
6996
|
var TaskCreativeVariantVideoPresetEnum = z38.enum([
|
|
6844
6997
|
"auto",
|
|
6845
6998
|
"ugc_dynamic",
|
|
6846
|
-
"
|
|
6999
|
+
"ugc_how_to",
|
|
6847
7000
|
"product_showcase",
|
|
6848
7001
|
"cinematic",
|
|
7002
|
+
"wild_card",
|
|
6849
7003
|
"wearable_showcase",
|
|
6850
7004
|
"pixar_problem",
|
|
6851
7005
|
"pixar_sassy",
|
|
@@ -6858,15 +7012,15 @@ var VIDEO_PRESET_RESOLUTION = {
|
|
|
6858
7012
|
narrativeStyle: "review",
|
|
6859
7013
|
videoModel: "veo"
|
|
6860
7014
|
},
|
|
6861
|
-
|
|
7015
|
+
ugc_how_to: {
|
|
6862
7016
|
videoStyle: "ai_dynamic",
|
|
6863
|
-
narrativeStyle: "
|
|
7017
|
+
narrativeStyle: "ugc_how_to",
|
|
6864
7018
|
videoModel: "veo"
|
|
6865
7019
|
},
|
|
6866
|
-
|
|
7020
|
+
ugc_unboxing_chaos: {
|
|
6867
7021
|
videoStyle: "ai_dynamic",
|
|
6868
|
-
narrativeStyle: "
|
|
6869
|
-
videoModel: "
|
|
7022
|
+
narrativeStyle: "ugc_unboxing_chaos",
|
|
7023
|
+
videoModel: "veo"
|
|
6870
7024
|
},
|
|
6871
7025
|
pixar_problem: {
|
|
6872
7026
|
videoStyle: "ai_dynamic",
|
|
@@ -6892,6 +7046,11 @@ var VIDEO_PRESET_RESOLUTION = {
|
|
|
6892
7046
|
videoStyle: "product_only",
|
|
6893
7047
|
narrativeStyle: "cinematic",
|
|
6894
7048
|
videoModel: "grok"
|
|
7049
|
+
},
|
|
7050
|
+
wild_card: {
|
|
7051
|
+
videoStyle: "product_only",
|
|
7052
|
+
narrativeStyle: "wild_card",
|
|
7053
|
+
videoModel: "grok"
|
|
6895
7054
|
}
|
|
6896
7055
|
};
|
|
6897
7056
|
function resolveVideoPreset(preset) {
|
|
@@ -6926,9 +7085,11 @@ var VideoStyleEnum = z38.enum([
|
|
|
6926
7085
|
]);
|
|
6927
7086
|
var NarrativeStyleEnum = z38.enum([
|
|
6928
7087
|
"review",
|
|
7088
|
+
"ugc_how_to",
|
|
6929
7089
|
"problem_product_cta",
|
|
6930
7090
|
"product_showcase",
|
|
6931
7091
|
"cinematic",
|
|
7092
|
+
"wild_card",
|
|
6932
7093
|
"metaphor_product_cta",
|
|
6933
7094
|
"wearable_showcase",
|
|
6934
7095
|
"animated_problem_pixar",
|
|
@@ -6941,11 +7102,12 @@ var NarrativeStyleEnum = z38.enum([
|
|
|
6941
7102
|
]);
|
|
6942
7103
|
var PublicNarrativeStyleEnum = z38.enum([
|
|
6943
7104
|
"review",
|
|
7105
|
+
"ugc_how_to",
|
|
6944
7106
|
"ugc_unboxing_chaos",
|
|
6945
|
-
"problem_product_cta",
|
|
6946
7107
|
"product_showcase",
|
|
6947
7108
|
"wearable_showcase",
|
|
6948
7109
|
"cinematic",
|
|
7110
|
+
"wild_card",
|
|
6949
7111
|
"animated_problem_pixar",
|
|
6950
7112
|
"sassy_product_pixar"
|
|
6951
7113
|
]);
|
|
@@ -7663,7 +7825,7 @@ var CreateProductTaskInput = z39.object({
|
|
|
7663
7825
|
paymentMethods: z39.string().min(1).max(240).optional().describe('Opcional. M\xE9todos de pago que puede mostrar la landing. Ej. "Tarjeta, PSE, Nequi, Contraentrega". Si se omite, la landing no muestra m\xE9todos de pago.'),
|
|
7664
7826
|
productContext: z39.string().max(3e3).optional().describe("Opcional. Informacion adicional del producto que la IA debe usar como contexto prioritario: uso real, comprador, restricciones, diferenciadores o direccion creativa. No reemplaza la investigacion de competencia; si hay competencia, guia el primer angulo y los outputs no deben contradecirlo."),
|
|
7665
7827
|
productLabel: z39.string().trim().max(80).optional().describe('Opcional. Qu\xE9 es el producto, en pocas palabras (ej. "quita pelusas para ropa"). Es AUTORITATIVO: si lo env\xEDas, la IA usa esta identidad y no la reemplaza por otra categor\xEDa. Si lo omites, la IA detecta el producto desde la imagen.'),
|
|
7666
|
-
videoPreset: VideoPresetEnum.default("auto").describe('Opcional. Tipo/narrativa del video \u2014 \xFAnico campo de "estilo" que el usuario controla
|
|
7828
|
+
videoPreset: VideoPresetEnum.default("auto").describe('Opcional. Tipo/narrativa del video \u2014 \xFAnico campo de "estilo" que el usuario controla. Default "auto" (la IA escoge tras analizar el producto). Los presets funcionan a 15s y 30s. Opciones: "auto", "ugc_dynamic" (review con experiencia y prueba), "ugc_how_to" (tutorial con pasos y resultado visible), "ugc_unboxing_chaos" (apertura y primera prueba), "product_showcase" (producto ejecutando una funci\xF3n real), "wearable_showcase" (prenda o accesorio modelado), "cinematic" (TV spot con receta cinematogr\xE1fica), "wild_card" (una regla visual experimental original), "pixar_problem" (problema animado 3D), "pixar_sassy" (producto que habla). Si el usuario pide algo fuera de esta lista, p\xEDdele una opci\xF3n v\xE1lida.'),
|
|
7667
7829
|
durationSeconds: z39.union([
|
|
7668
7830
|
z39.literal(15),
|
|
7669
7831
|
z39.literal(30)
|
|
@@ -7672,7 +7834,7 @@ var CreateProductTaskInput = z39.object({
|
|
|
7672
7834
|
videoTier: VideoTierEnum.optional().describe('Opcional. Estilo del video. "basic" = "Realista" para 15s; al pedir durationSeconds=30 el sistema selecciona internamente Multiescena. No se expone el tier interno directamente.'),
|
|
7673
7835
|
videoResolution: VideoResolutionEnum.optional().describe('Opcional. Resoluci\xF3n del render. En la web se pregunta "\xBFResoluci\xF3n del video?". "480p" = excelente calidad y m\xE1s econ\xF3mico (RECOMENDADO, default si se omite); "720p" = m\xE1xima nitidez (~el doble de precio). Si el usuario no menciona resoluci\xF3n, OMITE este campo (el backend usa 480p).'),
|
|
7674
7836
|
multiAngleVideos: z39.boolean().optional().describe("Opcional. Si true, genera m\xFAltiples \xE1ngulos de venta en paralelo (3-5 videos). Si false/omitido, genera 1 video del \xE1ngulo principal. Default false."),
|
|
7675
|
-
angleNarratives: PublicNarrativeStyleEnum.array().max(3).optional().describe('Opcional. Narrativa POR \xC1NGULO (posicional). Valores actuales: "review", "
|
|
7837
|
+
angleNarratives: PublicNarrativeStyleEnum.array().max(3).optional().describe('Opcional. Narrativa POR \xC1NGULO (posicional). Valores actuales: "review", "ugc_how_to", "ugc_unboxing_chaos", "product_showcase", "wearable_showcase", "cinematic", "wild_card", "animated_problem_pixar", "sassy_product_pixar". angleNarratives[i] fuerza la narrativa del \xE1ngulo i; las posiciones restantes las elige la IA. Requiere multiAngleVideos:true para varios \xE1ngulos.'),
|
|
7676
7838
|
outputs: z39.array(z39.enum([
|
|
7677
7839
|
"landing",
|
|
7678
7840
|
"video",
|
|
@@ -8158,7 +8320,7 @@ var VideoInput = z40.object({
|
|
|
8158
8320
|
z40.literal(15),
|
|
8159
8321
|
z40.literal(30)
|
|
8160
8322
|
]).default(15).describe("Opcional. Duraci\xF3n objetivo: 15s (single_call, default) o 30s (Multiescena, aproximadamente 30s y facturado por escena)."),
|
|
8161
|
-
videoPreset: VideoPresetEnum.default("auto").describe('Opcional. Tipo/narrativa del video \u2014 \xFAnico campo de "estilo" que el usuario controla
|
|
8323
|
+
videoPreset: VideoPresetEnum.default("auto").describe('Opcional. Tipo/narrativa del video \u2014 \xFAnico campo de "estilo" que el usuario controla. Default "auto" (la IA escoge tras analizar el producto). Los presets funcionan a 15s y 30s. Opciones: "auto", "ugc_dynamic" (review con experiencia y prueba), "ugc_how_to" (tutorial con pasos y resultado visible), "ugc_unboxing_chaos" (apertura y primera prueba), "product_showcase" (producto ejecutando una funci\xF3n real), "wearable_showcase" (prenda o accesorio modelado), "cinematic" (TV spot con receta cinematogr\xE1fica), "wild_card" (una regla visual experimental original), "pixar_problem" (problema animado 3D), "pixar_sassy" (producto que habla).'),
|
|
8162
8324
|
videoTier: VideoTierEnum.optional().describe('Opcional. Estilo del video. "basic" = "Realista"; para durationSeconds=30 el sistema selecciona internamente Multiescena. No se expone el tier interno directamente.'),
|
|
8163
8325
|
videoResolution: VideoResolutionEnum.optional().describe('Opcional. Resoluci\xF3n del render. En la web se pregunta "\xBFResoluci\xF3n del video?". "720p" = m\xE1xima nitidez (RECOMENDADO, default si se omite); "480p" = render m\xE1s econ\xF3mico. Si el usuario no menciona resoluci\xF3n, OMITE este campo (el backend usa 720p).'),
|
|
8164
8326
|
features: z40.array(z40.string()).optional().describe('Opcional. Lista de features/beneficios clave a mencionar. Ej. ["resistente al agua", "bater\xEDa 24h", "carga inal\xE1mbrica"].'),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@productmaker/mcp",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"private": false,
|
|
6
6
|
"description": "Product Maker MCP server — cost products, generate dropshipping landing pages, UGC videos, and ad creatives, and publish to Shopify and Meta Ads from Claude, ChatGPT, or Gemini.",
|
|
@@ -63,8 +63,8 @@
|
|
|
63
63
|
"tsx": "^4.16.0",
|
|
64
64
|
"typescript": "^7.0.2",
|
|
65
65
|
"vitest": "^2.1.9",
|
|
66
|
-
"@packages/product-economics": "0.1.0",
|
|
67
66
|
"@packages/product-research": "0.1.0",
|
|
67
|
+
"@packages/product-economics": "0.1.0",
|
|
68
68
|
"@packages/types": "0.1.0"
|
|
69
69
|
},
|
|
70
70
|
"publishConfig": {
|