@pixeldojo/mcp 0.23.0 → 0.25.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/cli.js CHANGED
@@ -1309,9 +1309,12 @@ var init_caption = __esm({
1309
1309
  }
1310
1310
  });
1311
1311
  async function run7(input, ctx) {
1312
- const { hook, callout, review, offer, end_card: card } = input;
1313
- if (!hook && !callout && !review && !input.progress_bar && !offer && !card) {
1314
- return { kind: "text", text: "pixeldojo_overlay needs at least one of hook, callout, review, progress_bar, offer or end_card." };
1312
+ const { hook, callout, review, countdown, price_tag: price, offer, end_card: card } = input;
1313
+ if (!hook && !callout && !review && !input.progress_bar && !countdown && !price && !offer && !card) {
1314
+ return {
1315
+ kind: "text",
1316
+ text: "pixeldojo_overlay needs at least one of hook, callout, review, progress_bar, countdown, price_tag, offer or end_card."
1317
+ };
1315
1318
  }
1316
1319
  const submitted = await ctx.client.run(MODEL2, {
1317
1320
  prompt: "",
@@ -1321,6 +1324,7 @@ async function run7(input, ctx) {
1321
1324
  ...callout ? {
1322
1325
  callout_title: callout.title,
1323
1326
  callout_subtitle: callout.subtitle,
1327
+ callout_style: callout.style,
1324
1328
  callout_start: callout.start_sec,
1325
1329
  callout_duration: callout.duration_sec
1326
1330
  } : {},
@@ -1332,6 +1336,19 @@ async function run7(input, ctx) {
1332
1336
  review_duration: review.duration_sec
1333
1337
  } : {},
1334
1338
  ...input.progress_bar ? { progress_bar: true } : {},
1339
+ ...countdown ? {
1340
+ countdown_from: countdown.from,
1341
+ countdown_label: countdown.label,
1342
+ countdown_start: countdown.start_sec,
1343
+ countdown_duration: countdown.duration_sec
1344
+ } : {},
1345
+ ...price ? {
1346
+ price_now: price.now,
1347
+ price_was: price.was,
1348
+ price_label: price.label,
1349
+ price_start: price.start_sec,
1350
+ price_duration: price.duration_sec
1351
+ } : {},
1335
1352
  ...offer ? {
1336
1353
  offer_text: offer.text,
1337
1354
  offer_subtext: offer.subtext,
@@ -1371,6 +1388,7 @@ var init_overlay = __esm({
1371
1388
  callout: z.object({
1372
1389
  title: z.string().max(32),
1373
1390
  subtitle: z.string().max(40).optional(),
1391
+ style: z.enum(["label", "classic"]).optional(),
1374
1392
  start_sec: z.number().min(0).optional(),
1375
1393
  duration_sec: z.number().min(1).max(10).optional()
1376
1394
  }).optional(),
@@ -1382,6 +1400,19 @@ var init_overlay = __esm({
1382
1400
  duration_sec: z.number().min(1).max(10).optional()
1383
1401
  }).optional(),
1384
1402
  progress_bar: z.boolean().optional(),
1403
+ countdown: z.object({
1404
+ from: z.string(),
1405
+ label: z.string().max(16).optional(),
1406
+ start_sec: z.number().min(0).optional(),
1407
+ duration_sec: z.number().min(1).max(10).optional()
1408
+ }).optional(),
1409
+ price_tag: z.object({
1410
+ now: z.string().max(12),
1411
+ was: z.string().max(12).optional(),
1412
+ label: z.string().max(16).optional(),
1413
+ start_sec: z.number().min(0).optional(),
1414
+ duration_sec: z.number().min(1).max(10).optional()
1415
+ }).optional(),
1385
1416
  offer: z.object({
1386
1417
  text: z.string().max(24),
1387
1418
  subtext: z.string().max(40).optional(),
@@ -1414,11 +1445,12 @@ var init_overlay = __esm({
1414
1445
  },
1415
1446
  callout: {
1416
1447
  type: "object",
1417
- description: 'Lower-third label that slides in from the left: a benefit ("Ships in 24h") or a name and title.',
1448
+ description: 'Lower third: a benefit ("Ships in 24h") or a name and title. style label (default) is a brand-colored box sliding in; classic is the broadcast strap, an accent bar beside a bold name and a lighter title (bottom band on 16:9).',
1418
1449
  required: ["title"],
1419
1450
  properties: {
1420
1451
  title: { type: "string", maxLength: 32, description: "The label." },
1421
- subtitle: { type: "string", maxLength: 40, description: "Optional second line." },
1452
+ subtitle: { type: "string", maxLength: 40, description: "Optional second line (the title, for classic)." },
1453
+ style: { type: "string", enum: ["label", "classic"], description: "Default label." },
1422
1454
  start_sec: { type: "number", description: "Default 3." },
1423
1455
  duration_sec: { type: "number", minimum: 1, maximum: 10, description: "Default 4." }
1424
1456
  }
@@ -1436,6 +1468,29 @@ var init_overlay = __esm({
1436
1468
  }
1437
1469
  },
1438
1470
  progress_bar: { type: "boolean", description: "A thin bar in the brand color across the top that fills as the video plays." },
1471
+ countdown: {
1472
+ type: "object",
1473
+ description: "Urgency timer under the offer badge; the digits tick down each second.",
1474
+ required: ["from"],
1475
+ properties: {
1476
+ from: { type: "string", description: 'Start time, "23:59:59" or "04:59".' },
1477
+ label: { type: "string", maxLength: 16, description: 'Words above the timer. Default "Ends in".' },
1478
+ start_sec: { type: "number", description: "Default just after the hook." },
1479
+ duration_sec: { type: "number", minimum: 1, maximum: 10, description: "Default 4." }
1480
+ }
1481
+ },
1482
+ price_tag: {
1483
+ type: "object",
1484
+ description: "Tilted sticker on the left: new price big, old price struck through.",
1485
+ required: ["now"],
1486
+ properties: {
1487
+ now: { type: "string", maxLength: 12, description: 'e.g. "$49".' },
1488
+ was: { type: "string", maxLength: 12, description: 'Old price, struck through, e.g. "$79".' },
1489
+ label: { type: "string", maxLength: 16, description: 'e.g. "Today only".' },
1490
+ start_sec: { type: "number", description: "Default just after the hook." },
1491
+ duration_sec: { type: "number", minimum: 1, maximum: 10, description: "Default 4." }
1492
+ }
1493
+ },
1439
1494
  offer: {
1440
1495
  type: "object",
1441
1496
  description: "Offer callout: a badge that pops in on cue (after the hook when there is one).",
@@ -1464,7 +1519,7 @@ var init_overlay = __esm({
1464
1519
  };
1465
1520
  overlaySkill = {
1466
1521
  name: "pixeldojo_overlay",
1467
- description: 'Add short-form ad text layouts to a finished video, exact text in the brand color, clear of the TikTok/Reels/Shorts UI: hook (title over the first seconds), callout (lower-third label), review (stars, quote, name), progress_bar, offer ("50% OFF" badge) and end_card (logo, headline, button, web address over the held last frame). Pass video_url plus any of them; one call does all. 2 credits.',
1522
+ description: 'Add short-form ad text layouts to a finished video, exact text in the brand color, clear of the TikTok/Reels/Shorts UI: hook (title over the first seconds), callout (lower-third label), review (stars, quote, name), progress_bar, countdown (ticking timer), price_tag (new price, old one struck through), offer ("50% OFF" badge) and end_card (logo, headline, button, web address over the held last frame). Pass video_url plus any of them; one call does all. 2 credits.',
1468
1523
  inputZod: InputSchema7,
1469
1524
  inputJsonSchema: InputJsonSchema7,
1470
1525
  allowedModels: [MODEL2],
@@ -3953,7 +4008,7 @@ function makeRedactedLogger(target = console) {
3953
4008
  }
3954
4009
 
3955
4010
  // src/server.ts
3956
- var PACKAGE_VERSION = "0.23.0" ;
4011
+ var PACKAGE_VERSION = "0.25.0" ;
3957
4012
  var SERVER_INSTRUCTIONS = "Pixel Dojo generates images, video, audio and short films from one catalog of AI models, billed in credits from the connected Pixel Dojo account. A job that runs past the 30-second wait returns a jobId to check later; check it rather than submitting again, since every new submission is charged. Generated asset URLs are deleted one hour after they are created: pixeldojo_save keeps one in the user's My Media permanently (after a safety check), and finished films stay in the account library. In any prompt, @Name uses a character, product, outfit, location, prop or style the user saved in Character Studio: its photos are attached automatically. pixeldojo_library source=characters lists them, and pixeldojo_save_character saves a new one from 3 to 5 photos.";
3958
4013
  function buildServer(options) {
3959
4014
  if (!options.apiKey) {