@mevdragon/vidfarm-devcli 0.19.0 → 0.20.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 (44) hide show
  1. package/.agents/skills/editor-capabilities/SKILL.md +3 -3
  2. package/.agents/skills/music/SKILL.md +416 -0
  3. package/.agents/skills/music/references/api_reference.md +519 -0
  4. package/.agents/skills/music/references/installation.md +65 -0
  5. package/.agents/skills/text-to-speech/SKILL.md +226 -0
  6. package/.agents/skills/text-to-speech/references/installation.md +90 -0
  7. package/.agents/skills/text-to-speech/references/streaming.md +307 -0
  8. package/.agents/skills/text-to-speech/references/voice-settings.md +115 -0
  9. package/.agents/skills/vidfarm-media/SKILL.md +25 -11
  10. package/.agents/skills/vidfarm-media/references/tts.md +41 -3
  11. package/SKILL.director.md +31 -13
  12. package/SKILL.platform.md +2 -2
  13. package/demo/dist/app.css +1 -1
  14. package/demo/dist/app.js +76 -74
  15. package/dist/src/account-pages-legacy.js +1 -1
  16. package/dist/src/app.js +308 -111
  17. package/dist/src/cli.js +162 -5
  18. package/dist/src/config.js +13 -0
  19. package/dist/src/devcli/clips.js +7 -2
  20. package/dist/src/devcli/composition-edit.js +5 -2
  21. package/dist/src/domain.js +3 -0
  22. package/dist/src/editor-chat.js +8 -1
  23. package/dist/src/primitive-context.js +45 -2
  24. package/dist/src/primitive-registry.js +140 -18
  25. package/dist/src/reskin/chat-page.js +1 -1
  26. package/dist/src/reskin/inpaint-clipper-page.js +446 -205
  27. package/dist/src/reskin/inpaint-page.js +1 -1
  28. package/dist/src/reskin/inpaint-video-page.js +1 -1
  29. package/dist/src/reskin/library-page.js +7 -1
  30. package/dist/src/reskin/portfolio-page.js +687 -0
  31. package/dist/src/reskin/settings-page.js +4 -4
  32. package/dist/src/reskin/theme.js +1 -0
  33. package/dist/src/services/billing.js +5 -0
  34. package/dist/src/services/clip-curation/ffmpeg.js +48 -0
  35. package/dist/src/services/clip-curation/hunt.js +2 -0
  36. package/dist/src/services/clip-curation/index.js +1 -1
  37. package/dist/src/services/clip-curation/scan.js +29 -16
  38. package/dist/src/services/elevenlabs.js +222 -0
  39. package/dist/src/services/hyperframes.js +252 -83
  40. package/dist/src/services/providers.js +216 -2
  41. package/dist/src/services/serverless-jobs.js +3 -1
  42. package/dist/src/services/swipe-customize.js +5 -2
  43. package/dist/src/template-editor-pages.js +1 -1
  44. package/package.json +1 -1
@@ -1437,7 +1437,7 @@ ${INPAINT_TABS_CSS}
1437
1437
  }
1438
1438
 
1439
1439
  function isPendingJobStatus(status) {
1440
- return ["queued", "running", "waiting_for_provider", "waiting_for_child", "waiting_for_human"].includes(String(status || ""));
1440
+ return ["queued", "running", "waiting_for_provider", "waiting_for_render", "waiting_for_child", "waiting_for_human"].includes(String(status || ""));
1441
1441
  }
1442
1442
 
1443
1443
  function pendingHistoryItemKey(jobId) {
@@ -917,7 +917,7 @@ const INPAINT_VIDEO_SCRIPT = `
917
917
  var candidate = (out.video && out.video.file_url) || out.primary_file_url || (result.video && result.video.file_url) || result.primary_file_url || (Array.isArray(out.files) ? out.files[0] : "") || (Array.isArray(result.files) ? result.files[0] : "");
918
918
  return candidate || "";
919
919
  }
920
- function isPendingStatus(status){ return ["queued","running","waiting_for_provider","waiting_for_child","waiting_for_human"].indexOf(String(status || "")) >= 0; }
920
+ function isPendingStatus(status){ return ["queued","running","waiting_for_provider","waiting_for_render","waiting_for_child","waiting_for_human"].indexOf(String(status || "")) >= 0; }
921
921
  function pendingKey(jobId){ return "job:" + String(jobId || ""); }
922
922
  function makePending(input){
923
923
  var jobId = String((input && (input.jobId || input.job_id)) || ""); if(!jobId) return null;
@@ -350,6 +350,10 @@ const CLIPS_DIALOG = `
350
350
  <option value="openrouter">OpenRouter</option>
351
351
  </select>
352
352
  </div>
353
+ <label class="rk-clips-toggle" for="rkScanAudioOnly">
354
+ <input type="checkbox" id="rkScanAudioOnly" name="audio_only" />
355
+ <span><b>Clip audio only</b> — save each mined moment as an audio-only <code>.m4a</code> (no video), e.g. lifting sounds from a copyright-free audio video.</span>
356
+ </label>
353
357
  </div>
354
358
  <p class="rk-hint rk-clips-dialog-note" id="rkScanNote">We'll pull the whole video into your raws library.</p>
355
359
  <div class="rk-clips-dialog-actions">
@@ -1182,6 +1186,7 @@ const CLIPS_SCRIPT = `
1182
1186
  var scanNote=root.getElementById('rkScanNote');
1183
1187
  var scanSubmit=root.getElementById('rkClipsScanSubmit');
1184
1188
  var scanClip=root.getElementById('rkScanClip');
1189
+ var scanAudioOnly=root.getElementById('rkScanAudioOnly');
1185
1190
  var scanAdvanced=root.getElementById('rkClipsAdvanced');
1186
1191
  var IMPORT_NOTE="We'll open the Clipper so you can preview the video and save an exact subrange (or the whole thing) to your raws.";
1187
1192
  var CLIP_NOTE='AI tagging runs on your own key (BYOK) — vidfarm only bills the clip-scan compute.';
@@ -1239,6 +1244,7 @@ const CLIPS_SCRIPT = `
1239
1244
  var clip=!!(scanClip&&scanClip.checked);
1240
1245
  var prompt=clip?(scanPrompt&&scanPrompt.value||'').trim():'';
1241
1246
  var provider=clip?(scanProvider&&scanProvider.value||'').trim():'';
1247
+ var audioOnly=clip&&!!(scanAudioOnly&&scanAudioOnly.checked);
1242
1248
  if(!url){ setNote('Enter a video URL.','error'); return; }
1243
1249
  // Whole-video (non-AI) path now opens the Clipper so the user can pick an
1244
1250
  // exact subrange (or save the whole thing) with a live video preview.
@@ -1253,7 +1259,7 @@ const CLIPS_SCRIPT = `
1253
1259
  if(scanSubmit){ scanSubmit.disabled=true; scanSubmit.classList.add('is-loading'); }
1254
1260
 
1255
1261
  var payload={source_url:url};
1256
- if(clip){ payload.prompt=prompt; if(provider)payload.provider=provider; } else { payload.import_only=true; }
1262
+ if(clip){ payload.prompt=prompt; if(provider)payload.provider=provider; if(audioOnly)payload.audio_only=true; } else { payload.import_only=true; }
1257
1263
  if(tracer)payload.tracer=tracer;
1258
1264
 
1259
1265
  // Fire the request now; hold it and only wire the result AFTER the modal