reframe-video 0.6.19 → 0.6.21

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.
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "reframe",
3
+ "owner": {
4
+ "name": "Kiyeon Jeon",
5
+ "url": "https://github.com/kiyeonjeon21"
6
+ },
7
+ "plugins": [
8
+ {
9
+ "name": "reframe",
10
+ "source": "./",
11
+ "description": "Motion-graphics videos as addressable data — generate, tweak, regenerate without losing human edits."
12
+ }
13
+ ]
14
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "reframe",
3
+ "version": "0.1.0",
4
+ "description": "Create and iterate motion-graphics videos as addressable data: deterministic mp4 renders, human edits that survive AI regeneration, label-anchored audio, data-driven batch rendering.",
5
+ "author": {
6
+ "name": "Kiyeon Jeon",
7
+ "url": "https://github.com/kiyeonjeon21"
8
+ }
9
+ }
package/dist/bin.js CHANGED
@@ -2799,6 +2799,7 @@ var RENDER_CLI = PACKAGED ? join9(ROOT2, "dist", "cli.js") : join9(ROOT2, "packa
2799
2799
  var LABELS = PACKAGED ? join9(ROOT2, "dist", "labels.js") : join9(ROOT2, "packages", "render-cli", "src", "labels.ts");
2800
2800
  var COMPILE = PACKAGED ? join9(ROOT2, "dist", "compile.js") : join9(ROOT2, "packages", "render-cli", "src", "compile.ts");
2801
2801
  var DIFF = PACKAGED ? join9(ROOT2, "dist", "diff.js") : join9(ROOT2, "packages", "render-cli", "src", "diff.ts");
2802
+ var FRAME = PACKAGED ? join9(ROOT2, "dist", "frame.js") : join9(ROOT2, "packages", "render-cli", "src", "frame.ts");
2802
2803
  var PLAYER = PACKAGED ? join9(ROOT2, "dist", "player.js") : join9(ROOT2, "packages", "render-cli", "src", "player.ts");
2803
2804
  var ANALYZE = PACKAGED ? join9(ROOT2, "dist", "analyze.js") : join9(ROOT2, "benchmark", "harness", "motion", "analyze.ts");
2804
2805
  var TRACE = PACKAGED ? join9(ROOT2, "dist", "trace-cli.js") : join9(ROOT2, "benchmark", "harness", "motion", "trace-cli.ts");
@@ -2818,6 +2819,8 @@ usage:
2818
2819
  ${CMD} labels <scene.ts|.json> print the event clock (label \u2192 exact seconds; for sound design / timing)
2819
2820
  ${CMD} compile <scene.ts|.json> [-o out.json] [--stdin] [--code "<src>"] [--json]
2820
2821
  bundle + validate a scene to SceneIR JSON, no render (fast; no ffmpeg/chromium)
2822
+ ${CMD} frame <scene.ts|.json> [--t <sec>] [-o out.png] render ONE frame at time t to a PNG (no mp4; for a render-and-look loop)
2823
+ ${CMD} skill [--path] print the authoring skill (SKILL.md) for an agent; --path prints the plugin dir to load
2821
2824
  ${CMD} motion <mp4|framesDir> motion-profile a rendered clip
2822
2825
  ${CMD} trace <ref.mp4> [--apply scene.ts] extract a video's motion structure \u2192 MotionSketch / timeline
2823
2826
  ${CMD} diff <ref-image> [<scene.ts>] [--t S] [--mode side|blend|diff|grid] compare/measure a render against a reference image
@@ -2982,6 +2985,26 @@ ${USAGE}`);
2982
2985
  await (PACKAGED ? run2(process.execPath, [COMPILE, ...passed]) : run2("npx", ["tsx", COMPILE, ...passed]))
2983
2986
  );
2984
2987
  }
2988
+ case "frame": {
2989
+ const input = rest[0];
2990
+ if (!input || input.startsWith("-")) fail(`frame needs a scene file
2991
+
2992
+ ${USAGE}`);
2993
+ const inputPath = userPath(input);
2994
+ if (!existsSync6(inputPath)) fail(`no such file: ${inputPath}`);
2995
+ const args = rest.slice(1);
2996
+ const outBase = PACKAGED ? join9(USER_CWD, "out") : join9(ROOT2, "out");
2997
+ const stem = `${basename(input).replace(/\.[^.]+$/, "")}.png`;
2998
+ let outArgs = args;
2999
+ if (args.indexOf("-o") === -1) {
3000
+ await mkdir4(outBase, { recursive: true });
3001
+ outArgs = [...args, "-o", join9(outBase, stem)];
3002
+ }
3003
+ outArgs = outArgs.map((a, i) => outArgs[i - 1] === "-o" ? userPath(a) : a);
3004
+ process.exit(
3005
+ await (PACKAGED ? run2(process.execPath, [FRAME, inputPath, ...outArgs]) : run2("npx", ["tsx", FRAME, inputPath, ...outArgs]))
3006
+ );
3007
+ }
2985
3008
  case "player": {
2986
3009
  const input = rest[0];
2987
3010
  if (!input || input.startsWith("-")) fail(`player needs a scene file
@@ -3170,6 +3193,16 @@ ${results.length - failed} rendered (${orphaned} with orphans), ${failed} failed
3170
3193
  process.stdout.write(await readFile7(file, "utf8"));
3171
3194
  return;
3172
3195
  }
3196
+ case "skill": {
3197
+ if (rest.includes("--path")) {
3198
+ process.stdout.write(`${ROOT2}
3199
+ `);
3200
+ return;
3201
+ }
3202
+ const { readFile: readFile7 } = await import("node:fs/promises");
3203
+ process.stdout.write(await readFile7(join9(ROOT2, "skills", "reframe", "SKILL.md"), "utf8"));
3204
+ return;
3205
+ }
3173
3206
  case "demo":
3174
3207
  if (PACKAGED) {
3175
3208
  fail(