@officexapp/vidfarm-devcli 0.21.59 → 0.21.61

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/marketplace.md CHANGED
@@ -269,7 +269,7 @@ Read `private_note` on its own and you know where you stand:
269
269
 
270
270
  **Use `not_selected` for a pass on an inbound offer.** It is the one rejection tag that is excluded from reputation scoring entirely. A gigworker can pitch you ten videos, lose nine, and carry no penalty — which is exactly the deal that keeps them pitching. Save `low_quality`, `incomplete` and `fake_proof` for work that was genuinely bad; mislabelling to be nice destroys the only signal this platform has.
271
271
 
272
- **Review promptly. Silence is approval.** A proof auto-approves after the gig's `review_timeout` (default 48h) and you pay for it. If you disappear for a week you will pay for everything that arrived.
272
+ **Review promptly. Silence is NOT approval here.** Both vidfarm vending machines run at `review_timeout: -1`, manual review: no proof auto-approves, and nothing is paid until you approve it. A countdown that pays for you exists on Dollar Platoon generally, but not on these two. The cost of silence is the other one — a gigworker who is never answered is left holding finished work and stops sending it.
273
273
 
274
274
  In the browser the same job is one swipe deck: `https://vidfarm.cc/marketplace/inbound/swipe`. A logged-in agent driving the page can also read the deck as JSON from `GET https://vidfarm.cc/marketplace/buyer/proofs?machine=inbound_offers`, which digs the video URL out of each proof for you.
275
275
 
@@ -374,6 +374,52 @@ vidfarm gigs ring-bell --title "Acme wants 7 short-form ads this week" \
374
374
 
375
375
  Add `--json` to any of them for a machine-readable answer. `--body <file.json>` sends a whole task payload you built elsewhere. `vidfarm gigs help` lists every flag.
376
376
 
377
+ ### Let clippers name the price — the bid auction
378
+
379
+ `add-task` sets your price and the first free gigworker takes it. Sometimes you would rather ask the
380
+ market what a job is worth — especially for a one-off that does not fit the machine's flat rate.
381
+
382
+ A **bid request** is one task published `view_only`, so nobody can claim it. Clippers post their
383
+ price in its comment thread, you award one, and that **same task** flips to `reserved` for them. One
384
+ record carries the whole lifecycle, so the winner reads the entire negotiation on the job they are
385
+ about to do.
386
+
387
+ ```bash
388
+ vidfarm gigs request-bids --task "30s UGC recaption for a plumbing business" \
389
+ --opening '$0.10' --reference "template_019fd6b0…" --bell
390
+ # → posts a view_only task at price TBD and prints a share link:
391
+ # https://dollarplatoon.com/claim/GIG_01N…/TASK_01M…?invite=<token>
392
+
393
+ vidfarm gigs bids TASK_01M… # who bid, and what they asked
394
+ vidfarm gigs award TASK_01M… --bid TCOMMENT_01M… # reserve it for them, privately
395
+ vidfarm gigs approve PRF_01H… --amount 8.00 # pay what you actually agreed
396
+ ```
397
+
398
+ | Flag | |
399
+ |---|---|
400
+ | `--sealed` | Each clipper reads only their own thread. Default is open, so bidders see each other. |
401
+ | `--bell` | Broadcast it to the vidfarm feed. **Off by default** — the task waits quietly in the queue. |
402
+ | `--opening` | Where the auction starts. Default `$0.10`. |
403
+ | `--reference` | A template id the bidders should match. |
404
+
405
+ **The share link carries a gig invite, and that is the point.** DollarPlatoon's plain
406
+ `/task/:gig/:id` page is members-only — a clipper who has never joined sees the gig's join link
407
+ *instead of* your task, with no idea what they were invited to. The `/claim/…?invite=<token>` link
408
+ this command prints turns "you have not joined" into "you are invited", and joining returns them to
409
+ your task. A view-only task simply renders without the Accept button, so the page is the brief plus
410
+ the comment thread: **they join and bid on one page.** Once you award it, that same URL grows the
411
+ Accept button for the winner.
412
+
413
+ ⚠️ **A bid task stays priced `TBD` on purpose.** The deal is plain text in the thread, because real
414
+ arrangements ("$5 now $5 on completion", "$12 for three") do not fit a single number. You name the
415
+ agreed amount once, at approval, with `--amount`. **TBD is not $0** — approve a TBD proof without
416
+ `--amount` and it silently pays the machine's base rate, so an $8 bid pays $0.25 and the price locks
417
+ with no way back.
418
+
419
+ The same flow exists over REST for a logged-in browser session:
420
+ `POST /marketplace/buyer/request-template` (from a template in `/discover`),
421
+ `GET /marketplace/buyer/bids/:gigId/:taskId`, and `POST /marketplace/buyer/award-bid`.
422
+
377
423
  **`add-task` has no flag for `format_harness` or `reference_template_id` — use `--body`.** Those two
378
424
  fields are the ones that decide what a weak-model clipper hands back, so do not drop them just
379
425
  because there is no flag:
@@ -586,6 +632,26 @@ vidfarm clipper-run mode quick-interactive # save the answer into CLIPPER/run
586
632
  **Quick interactive and full auto + batch review are the two that get used.** Full interactive is the
587
633
  rescue mode for a weak model on an unfamiliar buyer; auto-submit is the narrow opt-in.
588
634
 
635
+ ### Then ask the second question: the clipper dashboard (recommended)
636
+
637
+ **Three of the four modes stop to make a human WATCH A VIDEO, and a terminal cannot play one.** So
638
+ offer the clipper dashboard in the same breath as the run mode, and expect a yes:
639
+
640
+ ```bash
641
+ vidfarm dashboard # a localhost page over the same CLIPPER/ folder — no key, no network
642
+ ```
643
+
644
+ It is the review queue as one page: the cut **playing** and seekable, the buyer's brief rendered
645
+ beside it, the checks as tickable boxes whose unticked items pre-fill the rejection note, the
646
+ shortlist candidates playing side by side (`1`/`2`/`3` to pick), `A`/`C`/`D` to answer, and what is
647
+ submitted and still owed. Every button calls the same `clipper-run` verb, so the page and the
648
+ terminal can never disagree — use both in one session if you like.
649
+
650
+ Record the answer in `MISSION.md` as `dashboard: yes | no`, and never make it a dependency: a
651
+ gigworker who says no, closes the tab or works over SSH loses nothing. `REVIEW_QUEUE.md`,
652
+ `vidfarm clipper-run review` and the `gate` rail are unchanged. Full section:
653
+ `https://vidfarm.cc/agentic-clipper.md` § 3⅘.
654
+
589
655
  **The template pick is the highest-leverage human moment in the whole loop, which is why three of the
590
656
  four modes put a stop there.** A weak model told to author a format from prose hands back something a
591
657
  buyer rejects; the same model handed a *decomposed template to adapt* hands back something they keep
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@officexapp/vidfarm-devcli",
3
- "version": "0.21.59",
3
+ "version": "0.21.61",
4
4
  "description": "Local bridge for the Vidfarm Trackpad Editor. `vidfarm serve <template_id>` boots the FULL editor on localhost (disk-backed records/storage, free in-process render); edit composition.html on disk (Claude Code, Codex, etc.) and the browser live-morphs it.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -16,6 +16,7 @@
16
16
  "dist/src/devcli/captions.js",
17
17
  "dist/src/devcli/clip-store.js",
18
18
  "dist/src/devcli/clips.js",
19
+ "dist/src/devcli/clipper-panel.js",
19
20
  "dist/src/devcli/clipper-run.js",
20
21
  "dist/src/devcli/composition-edit.js",
21
22
  "dist/src/devcli/consult.js",
@@ -116,6 +117,7 @@
116
117
  "test:qa": "node --import tsx --test test/qa-check.test.ts",
117
118
  "test:engine-globals": "node --import tsx --test test/engine-globals.test.ts",
118
119
  "test:clipper-run": "node --import tsx --test test/clipper-run.test.ts",
120
+ "test:clipper-panel": "node --import tsx --test test/clipper-panel.test.ts",
119
121
  "test:proof-verify": "node --import tsx --test test/proof-verify.test.ts",
120
122
  "test:gigs-lifecycle": "node --import tsx --test test/gigs-proof-lifecycle.test.ts",
121
123
  "test:update-check": "node --import tsx --test test/update-check.test.ts",