@officexapp/vidfarm-devcli 0.21.54 → 0.21.56
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/.agents/skills/vidfarm/SKILL.md +65 -0
- package/.agents/skills/vidfarm/harnesses/README.md +26 -0
- package/.agents/skills/vidfarm/recipes/bulk-scripting-with-a-harness.md +2 -1
- package/.agents/skills/vidfarm/references/automation-and-local-dev.md +2 -2
- package/SKILL.director.md +69 -3
- package/SKILL.md +76 -4
- package/clipper.md +40 -6
- package/dist/src/cli.js +104 -11
- package/dist/src/devcli/clipper-run.js +941 -0
- package/dist/src/devcli/doctor.js +23 -1
- package/dist/src/devcli/harness.js +60 -15
- package/dist/src/devcli/marketplace-gigs.js +545 -39
- package/dist/src/devcli/skill-docs.js +2 -1
- package/dist/src/devcli/update-check.js +340 -0
- package/experimental/animated-sticker-story.md +2252 -0
- package/experimental/flash-harness.md +549 -0
- package/experimental/google-news-to-video.md +9 -0
- package/experimental/unique-product-explainers.md +8 -0
- package/marketplace.md +549 -14
- package/package.json +6 -2
- package/public/serve-shells/editor.html +27 -0
- package/public/serve-shells/library-files.html +28 -1
- package/public/serve-shells/library-raws.html +27 -0
- package/public/serve-shells/tools-clipper.html +27 -0
- package/public/serve-shells/tools-image.html +27 -0
- package/public/serve-shells/tools-video.html +27 -0
- package/update.md +12 -2
package/dist/src/cli.js
CHANGED
|
@@ -925,9 +925,18 @@ Local media engines & toolchain (all local, free, no account — no cloud key ne
|
|
|
925
925
|
"create me a harness" / "update the harness for
|
|
926
926
|
this format" / "give me the harness for this
|
|
927
927
|
template_id" all land here
|
|
928
|
-
harness list [--json]
|
|
929
|
-
hooks, ugc-testimonial,
|
|
930
|
-
product-demo,
|
|
928
|
+
harness list [--json] Two shelves. BASES to copy and edit:
|
|
929
|
+
short-form, hooks, ugc-testimonial,
|
|
930
|
+
explainer, product-demo,
|
|
931
|
+
product-explainer. FORMAT harnesses —
|
|
932
|
+
complete contracts, read by name, same
|
|
933
|
+
shelf as vidfarm.cc/experimental:
|
|
934
|
+
meme-recaption, wall-text-pov-ugc,
|
|
935
|
+
ugc-reaction-greenscreen,
|
|
936
|
+
sticker-slideshow-tips,
|
|
937
|
+
animated-sticker-story,
|
|
938
|
+
google-news-to-video,
|
|
939
|
+
unique-product-explainers
|
|
931
940
|
harness show <name|path> Print one [--dna <strand>] to print just
|
|
932
941
|
one strand (viral_dna, visual_dna, …)
|
|
933
942
|
harness init <name> [--out <p>] Copy one next to your work, then EDIT it
|
|
@@ -960,6 +969,20 @@ Local media engines & toolchain (all local, free, no account — no cloud key ne
|
|
|
960
969
|
--kill-orphans Reap orphaned local serve/preview servers
|
|
961
970
|
(running from a deleted package path) so their
|
|
962
971
|
squatted ports are reclaimed
|
|
972
|
+
--version (-v) This devcli's version + the installed skill's (local)
|
|
973
|
+
update-check IS THIS INSTALL CURRENT? The skill and the (npm registry + vidfarm.cc)
|
|
974
|
+
devcli are ONE semver and must move together —
|
|
975
|
+
updating one alone is the usual cause of "that
|
|
976
|
+
command doesn't exist". Agents: run the --if-stale
|
|
977
|
+
form at the top of a session; it is a no-op unless
|
|
978
|
+
the last check is over 24h old, and --quiet prints
|
|
979
|
+
NOTHING when you are already current.
|
|
980
|
+
--if-stale [--hours 24] Only actually check if the last one is older
|
|
981
|
+
--quiet One line, silent when current
|
|
982
|
+
--skip / --unskip Record "not now" for this version / undo it
|
|
983
|
+
--json {devcli, skill, update_available, offline, …}
|
|
984
|
+
Offline is reported as offline, never as outdated.
|
|
985
|
+
Breaking-change notes: https://vidfarm.cc/update.md
|
|
963
986
|
skills <list|add <names…>|update> Install/refresh agent skills into → GET /skill-pack/* (or the
|
|
964
987
|
<root>/.agents/skills/<name> + a relative copies bundled in this repo)
|
|
965
988
|
.claude/skills symlink; skills-lock.json is
|
|
@@ -1159,10 +1182,35 @@ Marketplace (paid, cloud-only — the bazaar never renders locally):
|
|
|
1159
1182
|
(alias: dir · save-url|from-url|import-url — CLI twin of the "Save to Files" picker)
|
|
1160
1183
|
gigs <sub> Your vending machines, BOTH sides (client + gigworker)
|
|
1161
1184
|
machines · tasks · add-task · proofs · approve · reject · ring-bell (client, paid)
|
|
1162
|
-
|
|
1163
|
-
|
|
1185
|
+
earn · feed · check · join · work · claim · submit · proof · earnings (gigworker, free — bring DOLLARPLATOON_API_KEY)
|
|
1186
|
+
upload · mine · join-feed
|
|
1187
|
+
"HELP ME EARN ON VIDFARM" IS ONE COMMAND: vidfarm gigs earn. It joins the
|
|
1188
|
+
feed, reads who is asking for videos right now, checks every one of those
|
|
1189
|
+
machines for MONEY, and ranks them best-payer-first with the join command.
|
|
1190
|
+
'gigs check <gig|join-url>' is the funds check on its own — run it BEFORE you
|
|
1191
|
+
spend an hour, because approval does not create money. 'gigs submit
|
|
1192
|
+
--clean-master <file>' seals the unwatermarked cut in the proof's private
|
|
1193
|
+
note, which the buyer cannot open until a rollup has actually paid you.
|
|
1194
|
+
e.g. vidfarm gigs earn
|
|
1195
|
+
vidfarm gigs add-task --task "60s explainer for acme.com" --price 0.50 --upload-link <share url>
|
|
1164
1196
|
vidfarm gigs proofs --status pending · vidfarm gigs approve PRF_01H…
|
|
1165
|
-
(see: vidfarm gigs help)
|
|
1197
|
+
(see: vidfarm gigs help · the loop: vidfarm.cc/agentic-clipper.md)
|
|
1198
|
+
clipper-run <sub> HOW the clipper loop runs, and WHERE each task is up to
|
|
1199
|
+
mode · init · start · shortlist · pick · plan · raws · cut · gate · submitted
|
|
1200
|
+
approve · changes · drop (the gigworker's answers)
|
|
1201
|
+
next · status · review (where am I / what is waiting on the human)
|
|
1202
|
+
Four run modes, differing only in which stages STOP for the gigworker:
|
|
1203
|
+
full-interactive shortlist · plan · raws · cut (best quality on a weak model)
|
|
1204
|
+
quick-interactive shortlist · cut (approve ONE template, then watch the cut)
|
|
1205
|
+
auto-batch cut (build everything, submit nothing until reviewed)
|
|
1206
|
+
auto-submit nothing (unattended; opt-in, in the gigworker's own words)
|
|
1207
|
+
The stage lives in files under ./CLIPPER, not in the context — that is what
|
|
1208
|
+
lets a weak model run a long task without forgetting where it was. 'gate'
|
|
1209
|
+
exits non-zero while a human gate is open, so a loop written as
|
|
1210
|
+
'clipper-run gate <task> && gigs submit …' cannot send an unreviewed cut.
|
|
1211
|
+
e.g. vidfarm clipper-run mode quick-interactive
|
|
1212
|
+
vidfarm clipper-run next
|
|
1213
|
+
(see: vidfarm clipper-run help)
|
|
1166
1214
|
shared <sub> <link> USE a link someone shared with you — NO account, NO API key
|
|
1167
1215
|
info · ls --tree · search · grab · note · mkdir · put · get
|
|
1168
1216
|
grab is the one to reach for: it finds footage by MEANING and downloads it in one step.
|
|
@@ -1302,6 +1350,19 @@ async function main() {
|
|
|
1302
1350
|
process.stdout.write(HELP);
|
|
1303
1351
|
return;
|
|
1304
1352
|
}
|
|
1353
|
+
// `vidfarm --version` is the first line of the update runbook and of every
|
|
1354
|
+
// "what are you running?" support exchange, and it used to error out with
|
|
1355
|
+
// "Unknown option before command". Handled before dispatch so no subcommand
|
|
1356
|
+
// can shadow it.
|
|
1357
|
+
if (argv[0] === "--version" || argv[0] === "-v" || argv[0] === "version") {
|
|
1358
|
+
const { installedDevcliVersion, installedSkillPath, readSkillVersion } = await import("./devcli/update-check.js");
|
|
1359
|
+
const skillPath = installedSkillPath();
|
|
1360
|
+
const skillVersion = skillPath ? readSkillVersion(readFileSync(skillPath, "utf8")) : null;
|
|
1361
|
+
console.log(installedDevcliVersion() ?? "unknown");
|
|
1362
|
+
console.log(`skill ${skillVersion ?? "not installed"}${skillPath ? ` (${skillPath})` : ""}`);
|
|
1363
|
+
console.log("check for updates: vidfarm update-check");
|
|
1364
|
+
return;
|
|
1365
|
+
}
|
|
1305
1366
|
const command = argv[0];
|
|
1306
1367
|
// Opt-out crash telemetry (also covers the long-lived `serve` runtime, whose
|
|
1307
1368
|
// in-process job/render captures share this client). Guarded + no-op by default.
|
|
@@ -1621,6 +1682,16 @@ async function main() {
|
|
|
1621
1682
|
await runGigsCommand(rest);
|
|
1622
1683
|
return;
|
|
1623
1684
|
}
|
|
1685
|
+
// The RUN MODE of an agentic clipper loop — how much of the gigworker's
|
|
1686
|
+
// attention each task costs — plus the per-task stage that survives a
|
|
1687
|
+
// context reset. Local files only; no key, no network.
|
|
1688
|
+
case "clipper-run":
|
|
1689
|
+
case "clipper-mode":
|
|
1690
|
+
case "run-mode": {
|
|
1691
|
+
const { runClipperRunCommand } = await import("./devcli/clipper-run.js");
|
|
1692
|
+
await runClipperRunCommand(rest);
|
|
1693
|
+
return;
|
|
1694
|
+
}
|
|
1624
1695
|
case "get-file":
|
|
1625
1696
|
await runGetFileCommand(rest);
|
|
1626
1697
|
return;
|
|
@@ -1761,6 +1832,13 @@ async function main() {
|
|
|
1761
1832
|
case "hf":
|
|
1762
1833
|
await runHyperframesPassthroughCommand(rest);
|
|
1763
1834
|
return;
|
|
1835
|
+
case "update-check":
|
|
1836
|
+
case "check-update":
|
|
1837
|
+
case "outdated": {
|
|
1838
|
+
const { runUpdateCheckCommand } = await import("./devcli/update-check.js");
|
|
1839
|
+
await runUpdateCheckCommand(rest);
|
|
1840
|
+
return;
|
|
1841
|
+
}
|
|
1764
1842
|
default:
|
|
1765
1843
|
if (!command.startsWith("-")) {
|
|
1766
1844
|
// Positional template id → default to booting the local editor.
|
|
@@ -12344,13 +12422,28 @@ async function runHarnessCommand(argv) {
|
|
|
12344
12422
|
});
|
|
12345
12423
|
const json = Boolean(parsed.values.json);
|
|
12346
12424
|
if (!sub || sub === "list") {
|
|
12347
|
-
const
|
|
12348
|
-
if (json)
|
|
12349
|
-
return printJson({
|
|
12350
|
-
|
|
12351
|
-
|
|
12425
|
+
const all = listBuiltinHarnesses();
|
|
12426
|
+
if (json) {
|
|
12427
|
+
return printJson({
|
|
12428
|
+
harnesses: all.map(({ name, path: file, video_type, origin, url }) => ({ name, path: file, video_type, origin, url })),
|
|
12429
|
+
index_url: "https://vidfarm.cc/experimental"
|
|
12430
|
+
});
|
|
12431
|
+
}
|
|
12432
|
+
const bases = all.filter((entry) => entry.origin === "builtin");
|
|
12433
|
+
const experimental = all.filter((entry) => entry.origin === "experimental");
|
|
12434
|
+
console.log(`${DIM}Base harnesses — copy one next to your work, then edit it:${RESET}`);
|
|
12435
|
+
for (const entry of bases) {
|
|
12352
12436
|
console.log(` ${GREEN}${entry.name}${RESET} ${DIM}${entry.video_type ?? ""}${RESET}`);
|
|
12353
12437
|
}
|
|
12438
|
+
if (experimental.length) {
|
|
12439
|
+
// The same shelf as https://vidfarm.cc/experimental, shipped in the package
|
|
12440
|
+
// so an agent reads a full format contract by name without a fetch.
|
|
12441
|
+
console.log(`\n${DIM}Format harnesses — complete contracts for ONE format. Read one before you build it:${RESET}`);
|
|
12442
|
+
for (const entry of experimental) {
|
|
12443
|
+
console.log(` ${GREEN}${entry.name}${RESET} ${DIM}${(entry.video_type ?? "").slice(0, 120)}${RESET}`);
|
|
12444
|
+
}
|
|
12445
|
+
console.log(`${DIM}vidfarm harness show <name> (also live at https://vidfarm.cc/experimental)${RESET}`);
|
|
12446
|
+
}
|
|
12354
12447
|
console.log(`\n${DIM}vidfarm harness init <name> --out ./work/${HARNESS_FILENAME}${RESET}`);
|
|
12355
12448
|
console.log(`${DIM}vidfarm harness derive <forkId> (a decomposed template → a harness)${RESET}`);
|
|
12356
12449
|
console.log(`${DIM}vidfarm qa ./work --harness <name|path> (repeatable — harnesses stack)${RESET}`);
|