agentvfx 0.3.4 → 0.3.5
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/LICENSE +201 -171
- package/README.md +5 -13
- package/package.json +2 -2
- package/skills/agentvfx/LICENSE +201 -171
- package/skills/agentvfx/NOTICE +8 -2
- package/skills/agentvfx/SKILL.md +3 -3
- package/skills/agentvfx/engine/core/constants.mjs +1 -1
- package/skills/agentvfx/engine/core/mark.mjs +6 -9
- package/skills/agentvfx/engine/core/palettes.mjs +1 -1
- package/skills/agentvfx/engine/core/schedule.mjs +1 -1
- package/skills/agentvfx/engine/core/templates.mjs +1 -1
- package/skills/agentvfx/engine/core/validate.mjs +3 -3
- package/skills/agentvfx/engine/node/board.mjs +1 -1
- package/skills/agentvfx/engine/node/encode.mjs +1 -1
- package/skills/agentvfx/engine/node/eye.mjs +1 -1
- package/skills/agentvfx/engine/node/footage.mjs +1 -1
- package/skills/agentvfx/engine/node/frame-worker.mjs +1 -1
- package/skills/agentvfx/engine/node/job.mjs +1 -1
- package/skills/agentvfx/engine/node/render.mjs +1 -1
- package/skills/agentvfx/engine/node/stage-capture.mjs +1 -1
- package/skills/agentvfx/engine/node/stage-serve.mjs +1 -1
- package/skills/agentvfx/engine/web/init.js +1 -1
- package/skills/agentvfx/engine/web/prelude.mjs +1 -1
- package/skills/agentvfx/engine/web/render.mjs +2 -2
- package/skills/agentvfx/engine/web/text.mjs +1 -1
- package/skills/agentvfx/references/template-format.md +2 -2
- package/skills/agentvfx/runtime/agentvfx.js +1 -1
- package/skills/agentvfx/scripts/export-web.mjs +7 -5
- package/skills/agentvfx/scripts/make-beat.mjs +1 -1
- package/skills/agentvfx/scripts/vfx.mjs +1 -1
- package/skills/agentvfx/templates/_test/feedback-counter/fx.json +1 -1
- package/skills/agentvfx/templates/_test/gradient/fx.json +1 -1
- package/skills/agentvfx/templates/_test/identity/fx.json +1 -1
- package/skills/agentvfx/templates/_test/strobe/fx.json +1 -1
- package/skills/agentvfx/templates/_test/text-probe/fx.json +1 -1
- package/skills/agentvfx/templates/brutal/_src/boot-log/def.mjs +1 -1
- package/skills/agentvfx/templates/brutal/_src/halftone-field/def.mjs +1 -1
- package/skills/agentvfx/templates/brutal/_src/hud-deck/def.mjs +1 -1
- package/skills/agentvfx/templates/brutal/boot-log/fx.json +1 -1
- package/skills/agentvfx/templates/brutal/collage/fx.json +1 -1
- package/skills/agentvfx/templates/brutal/collage/layout.mjs +1 -1
- package/skills/agentvfx/templates/brutal/halftone-field/fx.json +1 -1
- package/skills/agentvfx/templates/brutal/hud-deck/fx.json +1 -1
- package/skills/agentvfx/templates/brutal/lattice/fx.json +1 -1
- package/skills/agentvfx/templates/glitch/block-glitch/fx.json +1 -1
- package/skills/agentvfx/templates/glitch/pixel-sort/fx.json +1 -1
- package/skills/agentvfx/templates/glitch/rgb-split/fx.json +1 -1
- package/skills/agentvfx/templates/glitch/vhs/fx.json +1 -1
- package/skills/agentvfx/templates/impact/impact-1bit/fx.json +1 -1
- package/skills/agentvfx/templates/impact/impact-invert/fx.json +1 -1
- package/skills/agentvfx/templates/impact/punch-shake/fx.json +1 -1
- package/skills/agentvfx/templates/impact/rgb-hit/fx.json +1 -1
- package/skills/agentvfx/templates/impact/signal-cut/fx.json +1 -1
- package/skills/agentvfx/templates/impact/speedline-burst/fx.json +1 -1
- package/skills/agentvfx/templates/impact/strobe-burst/fx.json +1 -1
- package/skills/agentvfx/templates/light/anamorphic-streak/fx.json +1 -1
- package/skills/agentvfx/templates/light/bloom-glow/fx.json +1 -1
- package/skills/agentvfx/templates/light/god-rays/fx.json +1 -1
- package/skills/agentvfx/templates/light/lens-flare/fx.json +1 -1
- package/skills/agentvfx/templates/light/light-leak/fx.json +1 -1
- package/skills/agentvfx/templates/light/light-stage/fx.json +1 -1
- package/skills/agentvfx/templates/light/light-sweep/fx.json +1 -1
- package/skills/agentvfx/templates/light/neon-saber/fx.json +1 -1
- package/skills/agentvfx/templates/psychedelic/echo-flow/fx.json +1 -1
- package/skills/agentvfx/templates/psychedelic/hologram-scan/fx.json +1 -1
- package/skills/agentvfx/templates/psychedelic/kaleido-fold/fx.json +1 -1
- package/skills/agentvfx/templates/psychedelic/mosh-melt/fx.json +1 -1
- package/skills/agentvfx/templates/psychedelic/sacred/fx.json +1 -1
- package/skills/agentvfx/templates/psychedelic/tidal-bands/fx.json +1 -1
- package/skills/agentvfx/templates/scope/goniometer/fx.json +1 -1
- package/skills/agentvfx/templates/scope/scope-polar/fx.json +1 -1
- package/skills/agentvfx/templates/scope/scope-triggered/fx.json +1 -1
- package/skills/agentvfx/templates/scope/spectrogram-scroll/fx.json +1 -1
- package/skills/agentvfx/templates/scope/xy-phosphor/fx.json +1 -1
- package/skills/agentvfx/templates/spectrum/_src/bars-linear/fx.src.json +1 -1
- package/skills/agentvfx/templates/spectrum/_src/bars-mirror/fx.src.json +1 -1
- package/skills/agentvfx/templates/spectrum/_src/bass-circle/fx.src.json +1 -1
- package/skills/agentvfx/templates/spectrum/_src/label-bars/fx.src.json +1 -1
- package/skills/agentvfx/templates/spectrum/_src/spectrum-particles/fx.src.json +1 -1
- package/skills/agentvfx/templates/spectrum/_src/spectrum-radial/fx.src.json +1 -1
- package/skills/agentvfx/templates/spectrum/_src/waveform-line/fx.src.json +1 -1
- package/skills/agentvfx/templates/spectrum/bars-linear/fx.json +1 -1
- package/skills/agentvfx/templates/spectrum/bars-mirror/fx.json +1 -1
- package/skills/agentvfx/templates/spectrum/bass-circle/fx.json +1 -1
- package/skills/agentvfx/templates/spectrum/label-bars/fx.json +1 -1
- package/skills/agentvfx/templates/spectrum/spectrum-particles/fx.json +1 -1
- package/skills/agentvfx/templates/spectrum/spectrum-radial/fx.json +1 -1
- package/skills/agentvfx/templates/spectrum/waveform-line/fx.json +1 -1
- package/skills/agentvfx/test/concept-collage.test.mjs +1 -1
- package/skills/agentvfx/test/concept-lattice.test.mjs +1 -1
- package/skills/agentvfx/test/concept-signal-cut.test.mjs +1 -1
- package/skills/agentvfx/test/credit.test.mjs +13 -1
- package/skills/agentvfx/test/scope.test.mjs +1 -1
- package/skills/agentvfx/test/web.test.mjs +8 -5
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// agentvfx (
|
|
1
|
+
// agentvfx (Apache-2.0, see LICENSE). Live WebGL2 runtime. The exported copy inlines engine/web/prelude.mjs
|
|
2
2
|
// at export time so a page does not import the engine. Semantics match engine/web/render.mjs.
|
|
3
3
|
import { OUTPUT_FRAG, VERT, buildFragment, seedToUnit } from "../engine/web/prelude.mjs";
|
|
4
4
|
import { PALETTES, hexToRgb } from "../engine/core/palettes.mjs";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// agentvfx (
|
|
1
|
+
// agentvfx (Apache-2.0, see LICENSE). Bundle selected templates and the live runtime into a folder a page
|
|
2
2
|
// can open with no network and no build. The GLSL prelude is imported here and inlined verbatim.
|
|
3
3
|
import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
@@ -12,11 +12,12 @@ const here = path.dirname(fileURLToPath(import.meta.url));
|
|
|
12
12
|
const runtimePath = path.join(here, "../runtime/agentvfx.js");
|
|
13
13
|
const preludePath = path.join(here, "../engine/web/prelude.mjs");
|
|
14
14
|
const licensePath = path.join(here, "../LICENSE");
|
|
15
|
+
const noticePath = path.join(here, "../NOTICE");
|
|
15
16
|
// The licence notice is added after stripUrls runs, so it survives; it names the repository without a scheme because the
|
|
16
|
-
// bundle must hold no fetchable URL.
|
|
17
|
+
// bundle must hold no fetchable URL. LICENSE and NOTICE, with their URLs, are written beside it.
|
|
17
18
|
const LICENSE_NOTICE = [
|
|
18
|
-
"agentvfx
|
|
19
|
-
"
|
|
19
|
+
"agentvfx is licensed under the Apache License 2.0; see LICENSE and NOTICE in this folder. Keep them with these files.",
|
|
20
|
+
"Copyright 2026 Woojin Go (github.com/wjgoarxiv/agentvfx)",
|
|
20
21
|
];
|
|
21
22
|
const flashPaths = ["../engine/core/flash-constants.mjs", "../engine/core/flash.mjs"].map((p) => path.join(here, p));
|
|
22
23
|
|
|
@@ -151,5 +152,6 @@ for (const [name, body] of Object.entries(files)) {
|
|
|
151
152
|
}
|
|
152
153
|
writeFileSync(path.join(out, name), body);
|
|
153
154
|
}
|
|
154
|
-
// The licence
|
|
155
|
+
// The licence and notice carry URLs by design, so they are copied verbatim after the no-URL check above.
|
|
155
156
|
writeFileSync(path.join(out, "LICENSE"), readFileSync(licensePath));
|
|
157
|
+
writeFileSync(path.join(out, "NOTICE"), readFileSync(noticePath));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// agentvfx (
|
|
2
|
+
// agentvfx (Apache-2.0, see LICENSE). Generates the original 10 s, 132 BPM demo drum loop (test-media/beat-132.mp3).
|
|
3
3
|
// Everything is synthesised here from sines and seeded noise: a kick on every beat, a snare on
|
|
4
4
|
// beats 2 and 4, closed hats on the 8ths, starting a quarter beat in, over a faint noise bed so the
|
|
5
5
|
// waveform never goes flat between hits. Nothing is sampled or downloaded.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// agentvfx (
|
|
2
|
+
// agentvfx (Apache-2.0, see LICENSE). Command-line entry: `vfx.mjs <subcommand> ...`.
|
|
3
3
|
import { spawnSync } from "node:child_process";
|
|
4
4
|
import { existsSync, mkdtempSync, readFileSync } from "node:fs";
|
|
5
5
|
import { tmpdir } from "node:os";
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"INPUTS": [{ "NAME": "inc", "TYPE": "float", "MIN": 0, "MAX": 1, "DEFAULT": 0.00392156862745098 }],
|
|
6
6
|
"PASSES": [{ "TARGET": "acc", "PERSISTENT": true, "FLOAT": true }, {}],
|
|
7
7
|
"X_AGENTVFX": {
|
|
8
|
-
"id": "test-feedback-counter", "family": "_test", "input": "generative", "spdx": "
|
|
8
|
+
"id": "test-feedback-counter", "family": "_test", "input": "generative", "spdx": "Apache-2.0", "flash": "none",
|
|
9
9
|
"presets": { "one": { "inc": 0.00392156862745098 }, "two": { "inc": 0.00784313725490196 }, "zero": { "inc": 0 } }
|
|
10
10
|
}
|
|
11
11
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"CATEGORIES": ["test"],
|
|
5
5
|
"INPUTS": [{ "NAME": "gain", "TYPE": "float", "MIN": 0, "MAX": 2, "DEFAULT": 1 }],
|
|
6
6
|
"X_AGENTVFX": {
|
|
7
|
-
"id": "test-identity", "family": "_test", "input": "either", "spdx": "
|
|
7
|
+
"id": "test-identity", "family": "_test", "input": "either", "spdx": "Apache-2.0", "flash": "none",
|
|
8
8
|
"presets": { "unity": { "gain": 1 }, "half": { "gain": 0.5 }, "double": { "gain": 2 } }
|
|
9
9
|
}
|
|
10
10
|
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
{ "NAME": "red", "TYPE": "bool", "DEFAULT": false }
|
|
8
8
|
],
|
|
9
9
|
"X_AGENTVFX": {
|
|
10
|
-
"id": "test-strobe", "family": "_test", "input": "generative", "spdx": "
|
|
10
|
+
"id": "test-strobe", "family": "_test", "input": "generative", "spdx": "Apache-2.0", "flash": "strobe",
|
|
11
11
|
"presets": { "hold": { "rate": 0 }, "slow": { "rate": 2 }, "fast": { "rate": 12 } },
|
|
12
12
|
"safeSubstitute": { "template": "test-identity", "params": { "rate": 1 } }
|
|
13
13
|
}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"CATEGORIES": ["test"],
|
|
5
5
|
"INPUTS": [{ "NAME": "gain", "TYPE": "float", "MIN": 0, "MAX": 1, "DEFAULT": 1 }],
|
|
6
6
|
"X_AGENTVFX": {
|
|
7
|
-
"id": "test-text-probe", "family": "_test", "input": "generative", "spdx": "
|
|
7
|
+
"id": "test-text-probe", "family": "_test", "input": "generative", "spdx": "Apache-2.0", "flash": "none",
|
|
8
8
|
"presets": { "a": { "gain": 1 }, "b": { "gain": 0.5 }, "c": { "gain": 0.8 } },
|
|
9
9
|
"text": [
|
|
10
10
|
{ "key": "title", "default": "TRACK TITLE", "x": 0.06, "y": 0.1, "size": 0.16, "font": "display", "style": "outline", "box": "tab" },
|
|
@@ -35,7 +35,7 @@ const fx = {
|
|
|
35
35
|
CATEGORIES: ["brutal", "terminal", "audio"],
|
|
36
36
|
INPUTS,
|
|
37
37
|
X_AGENTVFX: {
|
|
38
|
-
id: "boot-log", family: "brutal", input: "generative", spdx: "
|
|
38
|
+
id: "boot-log", family: "brutal", input: "generative", spdx: "Apache-2.0", flash: "possible", fps: 30, palette: false,
|
|
39
39
|
presets: { phosphor: PHOSPHOR, acid: ACID, ultramarine: ULTRA, amber: AMBER },
|
|
40
40
|
audioBind: { tearAmount: "beat" },
|
|
41
41
|
safeSubstitute: { params: { tearAmount: 0, flickerAmount: 0 } },
|
|
@@ -47,7 +47,7 @@ const fx = {
|
|
|
47
47
|
CATEGORIES: ["brutal", "halftone", "audio"],
|
|
48
48
|
INPUTS,
|
|
49
49
|
X_AGENTVFX: {
|
|
50
|
-
id: "halftone-field", family: "brutal", input: "either", spdx: "
|
|
50
|
+
id: "halftone-field", family: "brutal", input: "either", spdx: "Apache-2.0", flash: "possible", fps: 30, palette: false,
|
|
51
51
|
presets: { ultramarine: ULTRA, "ink-blue": INK_BLUE, acid: ACID, orange: ORANGE, phosphor: PHOSPHOR, dither: DITHER, ascii: ASCII },
|
|
52
52
|
audioBind: { dotGain: "bass", barAmount: "bands" },
|
|
53
53
|
safeSubstitute: { params: { tearAmount: 0, kickGain: 0 } },
|
|
@@ -58,7 +58,7 @@ const fx = {
|
|
|
58
58
|
INPUTS,
|
|
59
59
|
PASSES: [{ TARGET: "specState", PERSISTENT: true, FLOAT: true }, {}],
|
|
60
60
|
X_AGENTVFX: {
|
|
61
|
-
id: "hud-deck", family: "brutal", input: "either", spdx: "
|
|
61
|
+
id: "hud-deck", family: "brutal", input: "either", spdx: "Apache-2.0", flash: "possible", fps: 30, palette: false,
|
|
62
62
|
presets: { night: NIGHT, ultramarine: ULTRA, acid: ACID, octagon: OCTAGON, "orange-mono": ORANGE },
|
|
63
63
|
audioBind: { spectrumGain: "bands", flare: "beat" },
|
|
64
64
|
safeSubstitute: { params: { flare: 0, tearAmount: 0 } },
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// agentvfx (
|
|
1
|
+
// agentvfx (Apache-2.0, see LICENSE). Collage layout as data: up to 16 cells on a 32 x 18 grid, validated here and packed
|
|
2
2
|
// into the template's integer inputs. Three ints per cell:
|
|
3
3
|
// cellN = role * 1e8 + x * 1e6 + y * 1e4 + w * 100 + h (RRXXYYWWHH, plain decimal)
|
|
4
4
|
// styleN = variant * 1e4 + tone * 1e3 + fill * 100 + frame * 10 + rot
|