@vosjs/cli 0.20.0 → 0.21.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/README.md +3 -3
- package/dist/{chunk-ZONOZZZY.js → chunk-4IWHZBIY.js} +64 -12
- package/dist/chunk-4IWHZBIY.js.map +1 -0
- package/dist/cli.js +1 -1
- package/dist/index.d.ts +0 -18
- package/dist/index.js +1 -1
- package/dist/{run-ZIMJOQRN.js → run-7AOC4JUE.js} +2 -2
- package/package.json +5 -5
- package/schema/doc.schema.json +51 -2
- package/dist/chunk-ZONOZZZY.js.map +0 -1
- /package/dist/{run-ZIMJOQRN.js.map → run-7AOC4JUE.js.map} +0 -0
package/dist/cli.js
CHANGED
|
@@ -495,7 +495,7 @@ async function cmdCheck(argv) {
|
|
|
495
495
|
return result.ok ? EXIT_OK : EXIT_ERROR;
|
|
496
496
|
}
|
|
497
497
|
async function delegate(argv, viaAlias = false) {
|
|
498
|
-
const { run } = await import("./run-
|
|
498
|
+
const { run } = await import("./run-7AOC4JUE.js");
|
|
499
499
|
if (viaAlias && argv[0]) {
|
|
500
500
|
process.stderr.write(
|
|
501
501
|
`note: "vos voila ${argv[0]}" is now "vos ${argv[0]}".
|
package/dist/index.d.ts
CHANGED
|
@@ -285,24 +285,6 @@ interface MotionTemplate {
|
|
|
285
285
|
at: MotionAnchor;
|
|
286
286
|
}
|
|
287
287
|
|
|
288
|
-
/**
|
|
289
|
-
* Reuse: re-time a previous cut onto a NEW recording of the same
|
|
290
|
-
* script. The recorder's `meta.steps` say when each actions.json step ran
|
|
291
|
-
* in BOTH takes, so the old timeline maps onto the new one piecewise —
|
|
292
|
-
* matched step edges are the control points, and any source time in
|
|
293
|
-
* between interpolates. Explicit `anchor`s on camera spans resolve
|
|
294
|
-
* directly against the new steps and win over the map.
|
|
295
|
-
*
|
|
296
|
-
* Report, never guess: every span that
|
|
297
|
-
* could not re-anchor cleanly is NAMED in `flagged` with the reason in
|
|
298
|
-
* words — a vanished step, a skipped selector, a span clamped or dropped
|
|
299
|
-
* at the new take's edge. The agent fixes actions.json and re-runs; the
|
|
300
|
-
* verb never silently invents a cut.
|
|
301
|
-
*
|
|
302
|
-
* Pure functions, no I/O — reuse.test.ts drives them with synthetic
|
|
303
|
-
* step timelines; the browser gate is smoke-recut.ts.
|
|
304
|
-
*/
|
|
305
|
-
|
|
306
288
|
interface ReuseReport {
|
|
307
289
|
/** spans re-timed through an explicit anchor. */
|
|
308
290
|
anchored: number;
|
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vosjs/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.0",
|
|
4
4
|
"description": "The vos CLI: record the real product from a scripted browser flow, auto-zoom from the cursor track, cut as data in doc.json, render deterministic video and stills, deliver a release's media per destination spec, and sync with vos.so. One binary, every verb, MIT.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -51,11 +51,11 @@
|
|
|
51
51
|
"@vosjs/core": "^0.23.6",
|
|
52
52
|
"@vosjs/editor": "^1.3.1",
|
|
53
53
|
"@vosjs/render-core": "^0.2.4",
|
|
54
|
-
"@vosjs/shared": "^0.4.1",
|
|
55
54
|
"@vosjs/elements": "^0.8.1",
|
|
56
|
-
"@vosjs/
|
|
57
|
-
"@vosjs/
|
|
58
|
-
"@vosjs/tween": "^0.8.2"
|
|
55
|
+
"@vosjs/shared": "^0.4.1",
|
|
56
|
+
"@vosjs/studio-core": "^0.12.0",
|
|
57
|
+
"@vosjs/tween": "^0.8.2",
|
|
58
|
+
"@vosjs/timeline": "^0.4.1"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"@types/node": "^22",
|
package/schema/doc.schema.json
CHANGED
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
"hold": {
|
|
46
46
|
"type": "number",
|
|
47
47
|
"minimum": 0,
|
|
48
|
-
"maximum":
|
|
49
|
-
"description": "freeze
|
|
48
|
+
"maximum": 30,
|
|
49
|
+
"description": "LEGACY spelling of a freeze at this segment's end, read into `freeze` on every path; write `freeze` instead"
|
|
50
50
|
}
|
|
51
51
|
},
|
|
52
52
|
"additionalProperties": true
|
|
@@ -55,6 +55,9 @@
|
|
|
55
55
|
"speed": {
|
|
56
56
|
"$ref": "#/definitions/speed"
|
|
57
57
|
},
|
|
58
|
+
"freeze": {
|
|
59
|
+
"$ref": "#/definitions/freeze"
|
|
60
|
+
},
|
|
58
61
|
"zoom": {
|
|
59
62
|
"type": "array",
|
|
60
63
|
"description": "Zoom regions (SOURCE time, footage-anchored, non-overlapping). The camera ramps in around `in`, holds until `out`, ramps out — or pans straight to the next span when the gap is short. Planner-made spans have source:'auto' (replaced on re-plan); set source:'manual' on any span you add or edit so it survives.",
|
|
@@ -1283,6 +1286,52 @@
|
|
|
1283
1286
|
},
|
|
1284
1287
|
"additionalProperties": true
|
|
1285
1288
|
},
|
|
1289
|
+
"freeze": {
|
|
1290
|
+
"type": "array",
|
|
1291
|
+
"description": "Freezes (SOURCE moments, footage-anchored): the footage frozen on the frame just before `at` for `seconds` of output, anywhere in the take (a pause on a state while a caption reads, a beat before a cut, the rest a poster ends on). The retime primitive beside `speed`: a speed span is a source range with a rate, a freeze a source point with a length. A freeze whose frame is trimmed away has no effect and comes back when the trim does. The still every still-taking surface takes (the thumbnail, a poster's render, the stills export's first moment) is where the LAST freeze begins. Absent = none. The output ending past the footage needs no freeze: the card holds its last frame under the clips that outlast it.",
|
|
1292
|
+
"items": {
|
|
1293
|
+
"type": "object",
|
|
1294
|
+
"required": ["id", "at", "seconds"],
|
|
1295
|
+
"properties": {
|
|
1296
|
+
"id": {
|
|
1297
|
+
"type": "string",
|
|
1298
|
+
"description": "stable identity (f0, f1, …)"
|
|
1299
|
+
},
|
|
1300
|
+
"at": {
|
|
1301
|
+
"type": "number",
|
|
1302
|
+
"minimum": 0,
|
|
1303
|
+
"description": "SOURCE seconds: the frame just before this moment freezes"
|
|
1304
|
+
},
|
|
1305
|
+
"seconds": {
|
|
1306
|
+
"type": "number",
|
|
1307
|
+
"minimum": 0.25,
|
|
1308
|
+
"maximum": 30,
|
|
1309
|
+
"description": "OUTPUT seconds the frame holds"
|
|
1310
|
+
},
|
|
1311
|
+
"anchor": {
|
|
1312
|
+
"type": "object",
|
|
1313
|
+
"required": ["step"],
|
|
1314
|
+
"additionalProperties": false,
|
|
1315
|
+
"properties": {
|
|
1316
|
+
"step": {
|
|
1317
|
+
"type": ["string", "integer"],
|
|
1318
|
+
"description": "the actions.json step: its `id` when it has one, else its record-time index (meta.steps)"
|
|
1319
|
+
},
|
|
1320
|
+
"at": {
|
|
1321
|
+
"enum": ["start", "end"],
|
|
1322
|
+
"description": "which edge of the step the freeze's `at` is measured from (default start)"
|
|
1323
|
+
},
|
|
1324
|
+
"offset": {
|
|
1325
|
+
"type": "number",
|
|
1326
|
+
"description": "seconds from that edge to the freeze's `at` (negative = before it)"
|
|
1327
|
+
}
|
|
1328
|
+
},
|
|
1329
|
+
"description": "re-record tie to a step (vos plan --reuse resolves it against the new take's steps and it wins over the step map); `at` stays the truth"
|
|
1330
|
+
}
|
|
1331
|
+
},
|
|
1332
|
+
"additionalProperties": false
|
|
1333
|
+
}
|
|
1334
|
+
},
|
|
1286
1335
|
"speed": {
|
|
1287
1336
|
"type": "array",
|
|
1288
1337
|
"description": "Speed-change spans (SOURCE time, footage-anchored, non-overlapping). Absent = all 1×. The planner proposes source:'auto' spans for typing passages, scroll runs and idle gaps (ids s0…); set source:'manual' on spans you add or edit so they survive a re-plan (absent source also counts as manual).",
|