@vosjs/cli 0.68.0 → 0.69.1

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.
@@ -1,16 +1,13 @@
1
1
  # Destination packaging
2
2
 
3
- What to produce, at what size, for each place a product video or still
4
- lands. All assets come from ONE take — pick apex moments with
5
- `vos frames take --at-zooms`, then cut stills with
6
- `vos frames take --frame <t> --size WxH` and videos with render presets +
7
- `--range`.
3
+ What to produce, at what size, for each place a product video lands.
4
+ Every cut comes from ONE take: render presets plus `--range`.
8
5
 
9
- **Producing a full launch kit?** Use the `launch-kit` skill from this
10
- repo — it drives the whole per-channel loop against the machine-readable
11
- spec sheet (`schema/channel-specs.json` in `@vosjs/cli`) and verifies
12
- every asset in a manifest. The tables below are the quick reference for
13
- one-off cuts.
6
+ **Producing a release's full set of cuts?** Use the `launch-kit` skill
7
+ from this repo: it drives the whole per-channel loop against the
8
+ machine-readable spec sheet (`schema/channel-specs.json` in `@vosjs/cli`)
9
+ and verifies every cut in a manifest. The tables below are the quick
10
+ reference for one-off cuts.
14
11
 
15
12
  ## Landing-page embed (your site's hero or feature section)
16
13
 
@@ -38,27 +35,19 @@ one-off cuts.
38
35
  ffmpeg -i in.webm -c:v libx264 -b:v <target>k -pass 1 -an -f mp4 /dev/null
39
36
  ffmpeg -i in.webm -c:v libx264 -b:v <target>k -pass 2 -movflags +faststart out.mp4
40
37
  ```
41
- - Repo social-preview image: 1280×640.
42
38
 
43
39
  ## Store and directory listings
44
40
 
45
- | Channel | Asset | Size | Notes |
46
- |---|---|---|---|
47
- | Chrome Web Store | screenshots (≤5) | 1280×800 | content only, no device chrome |
48
- | Chrome Web Store | small promo tile | 440×280 | subject centered |
49
- | Chrome Web Store | marquee promo | 1400×560 | |
50
- | Chrome Web Store | icon | 128×128 | |
51
- | Product Hunt | thumbnail | 240×240 | GIF loops autoplay in the feed |
52
- | Product Hunt | gallery images | 1270×760 | first image is the header |
41
+ The Chrome Web Store promo video and the Product Hunt video both take a
42
+ YouTube URL only: upload the main demo (16:9, 1920×1080, 60 to 120 s) to
43
+ YouTube and paste its link.
53
44
 
54
45
  ## Social cuts
55
46
 
56
47
  | Channel | Asset | Size | Notes |
57
48
  |---|---|---|---|
58
- | YouTube | thumbnail | 1280×720 | |
59
- | X | feed video | 1200×675 (16:9) | ≤140s, H.264 — upload natively, never a link card |
60
- | LinkedIn | feed video/image | 1200×627 | native upload; mute-legible |
61
- | OG card (any link) | image | 1200×630 | |
49
+ | X | feed video | 1920×1080 (16:9) or 1:1 | ≤140s, H.264 — upload natively, never a link card |
50
+ | LinkedIn | feed video | 1080×1920, the vertical cut | native upload; mute-legible |
62
51
  | Vertical (Shorts/Reels/TikTok) | video | 1080×1920 (9:16) | keep the subject inside the ~900×1160 center safe zone — platform chrome covers the rest |
63
52
 
64
53
  ## Performance rules (every channel)
@@ -12,7 +12,7 @@ backdrop, no titles (the composition owns those) — but it is never an
12
12
  orphan file: the take it came from lives on the maker's shelf, editable,
13
13
  and the handoff says so. That one line is the whole contract.
14
14
 
15
- If the ask is actually a RELEASE (a launch video, a store listing, the
15
+ If the ask is actually a RELEASE (a launch video, the social cuts, the
16
16
  whole kit), stop — that is the `launch-kit` skill, and the document that
17
17
  survives should be the vosso one.
18
18
 
@@ -99,6 +99,6 @@ next one with `vos record` and the camera plans itself.**
99
99
  - Old edits, camera bubbles and captions are baked pixels.
100
100
  - The migration re-encodes once (VP9); a badly compressed source stays
101
101
  badly compressed — migrating does not restore quality.
102
- - A spec-size deliverable ladder (store stills, posters) works from the
103
- migrated take exactly as from a native one — the `launch-kit` skill
104
- takes over when the ask is a release.
102
+ - A release's set of cuts (the demo, the social cuts, the README loop)
103
+ works from the migrated take exactly as from a native one: the
104
+ `launch-kit` skill takes over when the ask is a release.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/plugin/manifest.ts"],"sourcesContent":["/**\n * The verb manifest of the take pipeline and the vos.so verbs — what\n * `vos help` lists under the engine verbs. It kept the shape a separately\n * installed plugin once handed the host (name + host range), so a script\n * reading it keeps working.\n */\nexport interface PluginVerb {\n name: string\n summary: string\n}\n\nexport interface PluginManifest {\n name: string\n /** Host versions this plugin speaks the run(argv) contract with. */\n hostRange: string\n verbs: PluginVerb[]\n}\n\nexport const manifest: PluginManifest = {\n name: '@vosjs/cli',\n hostRange: '>=0.9.0',\n verbs: [\n {\n name: 'create',\n summary: 'record + auto-plan + render, one command (--strict)',\n },\n {\n name: 'record',\n summary: 'drive actions.json into a take (screencast + cursor track)',\n },\n {\n name: 'plan',\n summary:\n 'plan zoom/cursor effects into doc.json (wand contract); --reuse re-times a previous cut onto a re-recording',\n },\n {\n name: 'render',\n summary: 'render a take directory (engine configs render in the host)',\n },\n {\n name: 'frames',\n summary:\n 'PNG stills at output times / zoom apexes / moments / exact sizes',\n },\n {\n name: 'deliver',\n summary:\n 'render a take to release destinations (CWS, Product Hunt, X, LinkedIn, OG…) + verified kit.json',\n },\n {\n name: 'digest',\n summary:\n 'see a recording before cutting it: moments (clicks, typing, scrolls, idle, scenes) + footage frames + crops, in doc units',\n },\n { name: 'open', summary: 'serve the take into the vos.so studio' },\n {\n name: 'validate',\n summary:\n 'lint actions.json, a take dir (doc.json semantics), or re-measure a kit.json against the channel specs',\n },\n {\n name: 'actions',\n summary:\n 'from-agent-browser: turn an agent-browser walk (steps.jsonl) into actions.json; what cannot follow is named',\n },\n {\n name: 'ingest',\n summary:\n 'a take from a recording someone else made, with its cursor track from a trace beside it (Playwright trace.zip, stamped records, CSV); without one nothing is planned',\n },\n {\n name: 'port',\n summary:\n 'bring a page, a HyperFrames or a Remotion piece: inventory (its words, colours, faces, media, scenes) then scaffold (a data-first program.mjs to translate the motion into)',\n },\n {\n name: 'build',\n summary:\n 'program.mjs (real functions) → config.json, refusing what cannot run on its own (module-scope reads, syntax the page cannot parse, non-JSON data)',\n },\n {\n name: 'compare',\n summary:\n \"a program against the source's own render: per-frame SSIM and source | vos | difference sheets; exits 1 when any frame is under the threshold\",\n },\n {\n name: 'brand',\n summary:\n \"write a product's BRAND.md, witnessed: /design.md, /llms.txt, then the page (palette, faces, marks, the avoid list)\",\n },\n {\n name: 'fetch',\n summary: 'download a hosted program: config.json + vos.json tracking',\n },\n {\n name: 'push',\n summary: 'push a config.json or take to vos.so (private; versioned)',\n },\n {\n name: 'duplicate',\n summary:\n 'a private sibling of your OWN vos (someone else\\u2019s is remixed: fetch + push --remix-of)',\n },\n {\n name: 'pull',\n summary:\n 'sync what changed on vos.so since your base (--media brings a take’s footage home)',\n },\n {\n name: 'folder',\n summary:\n 'list/create/pull folders, move voses and assets into them (pull = the context package on disk)',\n },\n {\n name: 'asset',\n summary:\n 'your files: push or import one, list them (assets ls), see storage (assets usage) and what uses a file (assets why)',\n },\n {\n name: 'recipe',\n summary:\n 'push a recipe .md into a folder, or replace one in place (prior body kept)',\n },\n {\n name: 'login',\n summary: 'sign in via the browser (or --key); stores a content key',\n },\n {\n name: 'setup',\n summary:\n 'ready this machine: the vos skills into your agent, a browser, one rules block, then doctor',\n },\n {\n name: 'doctor',\n summary:\n 'what is ready, in words: node, browser, ffmpeg, skills, a credential (never printed), the dev server',\n },\n {\n name: 'whoami',\n summary: 'the key’s name and the account it belongs to, never the key',\n },\n { name: 'logout', summary: 'remove ~/.config/vos/credentials' },\n ],\n}\n"],"mappings":";;;AAkBO,IAAM,WAA2B;AAAA,EACtC,MAAM;AAAA,EACN,WAAW;AAAA,EACX,OAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA,EAAE,MAAM,QAAQ,SAAS,wCAAwC;AAAA,IACjE;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,EAAE,MAAM,UAAU,SAAS,mCAAmC;AAAA,EAChE;AACF;","names":[]}