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.
Files changed (94) hide show
  1. package/LICENSE +201 -171
  2. package/README.md +5 -13
  3. package/package.json +2 -2
  4. package/skills/agentvfx/LICENSE +201 -171
  5. package/skills/agentvfx/NOTICE +8 -2
  6. package/skills/agentvfx/SKILL.md +3 -3
  7. package/skills/agentvfx/engine/core/constants.mjs +1 -1
  8. package/skills/agentvfx/engine/core/mark.mjs +6 -9
  9. package/skills/agentvfx/engine/core/palettes.mjs +1 -1
  10. package/skills/agentvfx/engine/core/schedule.mjs +1 -1
  11. package/skills/agentvfx/engine/core/templates.mjs +1 -1
  12. package/skills/agentvfx/engine/core/validate.mjs +3 -3
  13. package/skills/agentvfx/engine/node/board.mjs +1 -1
  14. package/skills/agentvfx/engine/node/encode.mjs +1 -1
  15. package/skills/agentvfx/engine/node/eye.mjs +1 -1
  16. package/skills/agentvfx/engine/node/footage.mjs +1 -1
  17. package/skills/agentvfx/engine/node/frame-worker.mjs +1 -1
  18. package/skills/agentvfx/engine/node/job.mjs +1 -1
  19. package/skills/agentvfx/engine/node/render.mjs +1 -1
  20. package/skills/agentvfx/engine/node/stage-capture.mjs +1 -1
  21. package/skills/agentvfx/engine/node/stage-serve.mjs +1 -1
  22. package/skills/agentvfx/engine/web/init.js +1 -1
  23. package/skills/agentvfx/engine/web/prelude.mjs +1 -1
  24. package/skills/agentvfx/engine/web/render.mjs +2 -2
  25. package/skills/agentvfx/engine/web/text.mjs +1 -1
  26. package/skills/agentvfx/references/template-format.md +2 -2
  27. package/skills/agentvfx/runtime/agentvfx.js +1 -1
  28. package/skills/agentvfx/scripts/export-web.mjs +7 -5
  29. package/skills/agentvfx/scripts/make-beat.mjs +1 -1
  30. package/skills/agentvfx/scripts/vfx.mjs +1 -1
  31. package/skills/agentvfx/templates/_test/feedback-counter/fx.json +1 -1
  32. package/skills/agentvfx/templates/_test/gradient/fx.json +1 -1
  33. package/skills/agentvfx/templates/_test/identity/fx.json +1 -1
  34. package/skills/agentvfx/templates/_test/strobe/fx.json +1 -1
  35. package/skills/agentvfx/templates/_test/text-probe/fx.json +1 -1
  36. package/skills/agentvfx/templates/brutal/_src/boot-log/def.mjs +1 -1
  37. package/skills/agentvfx/templates/brutal/_src/halftone-field/def.mjs +1 -1
  38. package/skills/agentvfx/templates/brutal/_src/hud-deck/def.mjs +1 -1
  39. package/skills/agentvfx/templates/brutal/boot-log/fx.json +1 -1
  40. package/skills/agentvfx/templates/brutal/collage/fx.json +1 -1
  41. package/skills/agentvfx/templates/brutal/collage/layout.mjs +1 -1
  42. package/skills/agentvfx/templates/brutal/halftone-field/fx.json +1 -1
  43. package/skills/agentvfx/templates/brutal/hud-deck/fx.json +1 -1
  44. package/skills/agentvfx/templates/brutal/lattice/fx.json +1 -1
  45. package/skills/agentvfx/templates/glitch/block-glitch/fx.json +1 -1
  46. package/skills/agentvfx/templates/glitch/pixel-sort/fx.json +1 -1
  47. package/skills/agentvfx/templates/glitch/rgb-split/fx.json +1 -1
  48. package/skills/agentvfx/templates/glitch/vhs/fx.json +1 -1
  49. package/skills/agentvfx/templates/impact/impact-1bit/fx.json +1 -1
  50. package/skills/agentvfx/templates/impact/impact-invert/fx.json +1 -1
  51. package/skills/agentvfx/templates/impact/punch-shake/fx.json +1 -1
  52. package/skills/agentvfx/templates/impact/rgb-hit/fx.json +1 -1
  53. package/skills/agentvfx/templates/impact/signal-cut/fx.json +1 -1
  54. package/skills/agentvfx/templates/impact/speedline-burst/fx.json +1 -1
  55. package/skills/agentvfx/templates/impact/strobe-burst/fx.json +1 -1
  56. package/skills/agentvfx/templates/light/anamorphic-streak/fx.json +1 -1
  57. package/skills/agentvfx/templates/light/bloom-glow/fx.json +1 -1
  58. package/skills/agentvfx/templates/light/god-rays/fx.json +1 -1
  59. package/skills/agentvfx/templates/light/lens-flare/fx.json +1 -1
  60. package/skills/agentvfx/templates/light/light-leak/fx.json +1 -1
  61. package/skills/agentvfx/templates/light/light-stage/fx.json +1 -1
  62. package/skills/agentvfx/templates/light/light-sweep/fx.json +1 -1
  63. package/skills/agentvfx/templates/light/neon-saber/fx.json +1 -1
  64. package/skills/agentvfx/templates/psychedelic/echo-flow/fx.json +1 -1
  65. package/skills/agentvfx/templates/psychedelic/hologram-scan/fx.json +1 -1
  66. package/skills/agentvfx/templates/psychedelic/kaleido-fold/fx.json +1 -1
  67. package/skills/agentvfx/templates/psychedelic/mosh-melt/fx.json +1 -1
  68. package/skills/agentvfx/templates/psychedelic/sacred/fx.json +1 -1
  69. package/skills/agentvfx/templates/psychedelic/tidal-bands/fx.json +1 -1
  70. package/skills/agentvfx/templates/scope/goniometer/fx.json +1 -1
  71. package/skills/agentvfx/templates/scope/scope-polar/fx.json +1 -1
  72. package/skills/agentvfx/templates/scope/scope-triggered/fx.json +1 -1
  73. package/skills/agentvfx/templates/scope/spectrogram-scroll/fx.json +1 -1
  74. package/skills/agentvfx/templates/scope/xy-phosphor/fx.json +1 -1
  75. package/skills/agentvfx/templates/spectrum/_src/bars-linear/fx.src.json +1 -1
  76. package/skills/agentvfx/templates/spectrum/_src/bars-mirror/fx.src.json +1 -1
  77. package/skills/agentvfx/templates/spectrum/_src/bass-circle/fx.src.json +1 -1
  78. package/skills/agentvfx/templates/spectrum/_src/label-bars/fx.src.json +1 -1
  79. package/skills/agentvfx/templates/spectrum/_src/spectrum-particles/fx.src.json +1 -1
  80. package/skills/agentvfx/templates/spectrum/_src/spectrum-radial/fx.src.json +1 -1
  81. package/skills/agentvfx/templates/spectrum/_src/waveform-line/fx.src.json +1 -1
  82. package/skills/agentvfx/templates/spectrum/bars-linear/fx.json +1 -1
  83. package/skills/agentvfx/templates/spectrum/bars-mirror/fx.json +1 -1
  84. package/skills/agentvfx/templates/spectrum/bass-circle/fx.json +1 -1
  85. package/skills/agentvfx/templates/spectrum/label-bars/fx.json +1 -1
  86. package/skills/agentvfx/templates/spectrum/spectrum-particles/fx.json +1 -1
  87. package/skills/agentvfx/templates/spectrum/spectrum-radial/fx.json +1 -1
  88. package/skills/agentvfx/templates/spectrum/waveform-line/fx.json +1 -1
  89. package/skills/agentvfx/test/concept-collage.test.mjs +1 -1
  90. package/skills/agentvfx/test/concept-lattice.test.mjs +1 -1
  91. package/skills/agentvfx/test/concept-signal-cut.test.mjs +1 -1
  92. package/skills/agentvfx/test/credit.test.mjs +13 -1
  93. package/skills/agentvfx/test/scope.test.mjs +1 -1
  94. package/skills/agentvfx/test/web.test.mjs +8 -5
@@ -1,172 +1,202 @@
1
- # agentvfx licence
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright [yyyy] [name of copyright owner]
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
2
202
 
3
- Copyright (c) 2026 Woojin Go (wjgoarxiv)
4
-
5
- Required Notice: Copyright (c) 2026 Woojin Go (https://github.com/wjgoarxiv/agentvfx)
6
-
7
- The agentvfx licence has two parts that apply together: the Additional Terms in Part 1, and the licence text in Part 2,
8
- which is the PolyForm Noncommercial License 1.0.0 reproduced unchanged. Part 1 adds a permission, a credit condition
9
- and a restriction to Part 2; it does not change any wording of Part 2. "These terms" in Part 2 means Parts 1 and 2
10
- together, so everything granted in Part 1 is one of "your licenses" and is subject to Acceptance, Patent Defense and
11
- Violations. To meet "Notices" in Part 2, give each recipient of the software this whole file, or its URL
12
- (https://github.com/wjgoarxiv/agentvfx/blob/main/LICENSE); the polyformproject.org URL alone is not enough.
13
-
14
- ## Part 1. Additional Terms
15
-
16
- ### 1. Creator permission
17
-
18
- If you are an individual (a natural person), you may run the software to render video, images and audio ("output"),
19
- and use that output in your own creative work for any purpose, including commercial purposes. For example, you may
20
- release your own music video, earn advertising, subscription, sponsorship or tip income on your own channel, or play
21
- the output in your own live or VJ performance.
22
-
23
- For this permission:
24
-
25
- - you count as an individual if you are a sole proprietor (for example a registered 개인사업자) or self-employed,
26
- as long as the work is your own;
27
- - several individuals making a work together under their own names, such as a band, count as individuals together,
28
- as long as none of them acts for a company or other organisation in doing so;
29
- - sponsored content on your own channel or in your own work is covered.
30
-
31
- This permission does not cover:
32
-
33
- - work for an employer, or on behalf of a company or other organisation (a noncommercial organisation keeps only the
34
- permissions it already has in Part 2);
35
- - output made for someone else to publish or use as theirs, such as a client's advertisement or a deliverable for a
36
- label or a brand;
37
- - selling, licensing or offering the software, its templates or presets, or rendering as a service, or offering output
38
- on its own as a product (stock footage, loops, packs, NFTs); output may be sold only as part of a larger work of
39
- your own.
40
-
41
- Any other commercial use needs a commercial licence from the licensor. Ask at
42
- https://github.com/wjgoarxiv/agentvfx/issues.
43
-
44
- ### 2. No AI training
45
-
46
- Under any permission, you may not use the software, its source, shaders, templates or presets to train, fine-tune or
47
- evaluate a machine-learning model, or to build a dataset for that purpose. Using an AI agent to operate the software
48
- for your own use is not training and is allowed.
49
-
50
- ### 3. Output
51
-
52
- As far as the law allows, you own the output you make. The licensor claims no rights in your output except in any part
53
- of the software or templates that the output contains. People who only watch, host, stream or receive output need no
54
- licence from the licensor, and they are not bound by these terms. You are, and you remain responsible for what you
55
- publish or hand over.
56
-
57
- ### 4. Credit
58
-
59
- If you publish, stream, publicly show or give anyone output made with agentvfx, under any permission, including
60
- Part 2, you must credit agentvfx.
61
-
62
- By default every render burns a small "agentvfx" credit into a corner of the frame. While that credit is visible in
63
- what you publish, you need nothing more; do not crop, cover or edit it out.
64
-
65
- If you switch it off in the score (`"credit": { "overlay": false }`), or the output carries no on-screen credit (for
66
- example a web export), you must instead credit agentvfx in text where viewers can reasonably find it (the description,
67
- caption, credits, or a page the output links to):
68
-
69
- Made with agentvfx by Woojin Go - https://github.com/wjgoarxiv/agentvfx
70
-
71
- Where space is short, `VFX: agentvfx (github.com/wjgoarxiv/agentvfx)` is enough. Every render writes the text credit
72
- to CREDIT.txt next to the film and into the MP4 metadata; leave both in place.
73
-
74
- When you give output to someone who will publish it, pass the credit on with it: leave the on-screen credit in the
75
- frame, or give them the text line and CREDIT.txt. The credit is a condition of every licence under these terms. A
76
- missing credit can be added within the period that "Violations" in Part 2 allows.
77
-
78
- ### 5. Web export
79
-
80
- If you use scripts/export-web.mjs, keep the LICENSE file it writes with the exported folder.
81
-
82
- ### 6. Names
83
-
84
- These terms give no right to use the name "agentvfx", the name "Woojin Go" or the agentvfx logo, except to give the
85
- credit in section 4 and to say truthfully where a work comes from. If you share a changed copy of the software (a fork),
86
- you must give it a name that does not contain "agentvfx", you must not present it as agentvfx or as made or endorsed by
87
- the licensor, and you must say that it is changed from agentvfx, with a link to https://github.com/wjgoarxiv/agentvfx.
88
-
89
- ### 7. Earlier copies and third-party portions
90
-
91
- Copies obtained under the MIT License before 5 November 2026 keep that licence for those copies only. Every version
92
- this repository publishes is under these terms. Portions adapted from mexicat/pdoom-video remain under their own
93
- MIT License, and the capture engine copied from lit-typographic-motion is MIT in its own repository; see
94
- skills/agentvfx/NOTICE for the files and the notice.
95
-
96
- ---
97
-
98
- Part 2 follows, unchanged.
99
-
100
- # PolyForm Noncommercial License 1.0.0
101
-
102
- <https://polyformproject.org/licenses/noncommercial/1.0.0>
103
-
104
- ## Acceptance
105
-
106
- In order to get any license under these terms, you must agree to them as both strict obligations and conditions to all your licenses.
107
-
108
- ## Copyright License
109
-
110
- The licensor grants you a copyright license for the software to do everything you might do with the software that would otherwise infringe the licensor's copyright in it for any permitted purpose. However, you may only distribute the software according to [Distribution License](#distribution-license) and make changes or new works based on the software according to [Changes and New Works License](#changes-and-new-works-license).
111
-
112
- ## Distribution License
113
-
114
- The licensor grants you an additional copyright license to distribute copies of the software. Your license to distribute covers distributing the software with changes and new works permitted by [Changes and New Works License](#changes-and-new-works-license).
115
-
116
- ## Notices
117
-
118
- You must ensure that anyone who gets a copy of any part of the software from you also gets a copy of these terms or the URL for them above, as well as copies of any plain-text lines beginning with `Required Notice:` that the licensor provided with the software. For example:
119
-
120
- > Required Notice: Copyright Yoyodyne, Inc. (http://example.com)
121
-
122
- ## Changes and New Works License
123
-
124
- The licensor grants you an additional copyright license to make changes and new works based on the software for any permitted purpose.
125
-
126
- ## Patent License
127
-
128
- The licensor grants you a patent license for the software that covers patent claims the licensor can license, or becomes able to license, that you would infringe by using the software.
129
-
130
- ## Noncommercial Purposes
131
-
132
- Any noncommercial purpose is a permitted purpose.
133
-
134
- ## Personal Uses
135
-
136
- Personal use for research, experiment, and testing for the benefit of public knowledge, personal study, private entertainment, hobby projects, amateur pursuits, or religious observance, without any anticipated commercial application, is use for a permitted purpose.
137
-
138
- ## Noncommercial Organizations
139
-
140
- Use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization, or government institution is use for a permitted purpose regardless of the source of funding or obligations resulting from the funding.
141
-
142
- ## Fair Use
143
-
144
- You may have "fair use" rights for the software under the law. These terms do not limit them.
145
-
146
- ## No Other Rights
147
-
148
- These terms do not allow you to sublicense or transfer any of your licenses to anyone else, or prevent the licensor from granting licenses to anyone else. These terms do not imply any other licenses.
149
-
150
- ## Patent Defense
151
-
152
- If you make any written claim that the software infringes or contributes to infringement of any patent, your patent license for the software granted under these terms ends immediately. If your company makes such a claim, your patent license ends immediately for work on behalf of your company.
153
-
154
- ## Violations
155
-
156
- The first time you are notified in writing that you have violated any of these terms, or done anything with the software not covered by your licenses, your licenses can nonetheless continue if you come into full compliance with these terms, and take practical steps to correct past violations, within 32 days of receiving notice. Otherwise, all your licenses end immediately.
157
-
158
- ## No Liability
159
-
160
- ***As far as the law allows, the software comes as is, without any warranty or condition, and the licensor will not be liable to you for any damages arising out of these terms or the use or nature of the software, under any kind of legal claim.***
161
-
162
- ## Definitions
163
-
164
- The **licensor** is the individual or entity offering these terms, and the **software** is the software the licensor makes available under these terms.
165
-
166
- **You** refers to the individual or entity agreeing to these terms.
167
-
168
- **Your company** is any legal entity, sole proprietorship, or other kind of organization that you work for, plus all organizations that have control over, are under the control of, or are under common control with that organization. **Control** means ownership of substantially all the assets of an entity, or the power to direct its management and policies by vote, contract, or otherwise. Control can be direct or indirect.
169
-
170
- **Your licenses** are all the licenses granted to you for the software under these terms.
171
-
172
- **Use** means anything you do with the software requiring one of your licenses.
@@ -1,4 +1,10 @@
1
- agentvfx is licensed under the agentvfx licence (see LICENSE), except for the portions adapted from mexicat/pdoom-video. Those stay under the MIT License printed below, and any of them may be taken out and reused under that licence, including for commercial use.
1
+ agentvfx
2
+ Copyright 2026 Woojin Go (https://github.com/wjgoarxiv/agentvfx)
3
+
4
+ Licensed under the Apache License, Version 2.0 (see LICENSE). Version 0.3.5 is the first release under it; earlier
5
+ releases carry their own LICENSE file.
6
+
7
+ The portions adapted from mexicat/pdoom-video stay under the MIT License printed below.
2
8
 
3
9
  Adapted from mexicat/pdoom-video (MIT, Giacomo Magnanini), listed from the source-file header comments:
4
10
  engine/core/util.mjs
@@ -7,7 +13,7 @@ Adapted from mexicat/pdoom-video (MIT, Giacomo Magnanini), listed from the sourc
7
13
  engine/web/scale.mjs
8
14
  engine/node/chrome.mjs
9
15
 
10
- Copied and adapted from LitClaude lit-typographic-motion 1.0.45 (MIT, (c) 2026 wjgoarxiv, the same author). It stays MIT in its own repository, its pdoom-video portions keep the notice below, and the copies here are offered under the agentvfx licence:
16
+ Copied and adapted from LitClaude lit-typographic-motion 1.0.45 (MIT, (c) 2026 wjgoarxiv, the same author). It stays MIT in its own repository, its pdoom-video portions keep the notice below, and the copies here are offered under the Apache License 2.0:
11
17
  engine/core/constants.mjs
12
18
  engine/core/flash.mjs
13
19
  engine/node/board.mjs
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: agentvfx
3
3
  description: Agent-directed, music-reactive VFX clips from an FX score. WebGL2 shader templates (psychedelic, spectrum, scope, impact, light, glitch, neo-brutalist collage and lattice), optional Blender background plates, a flash audit on every render, silent ping-pong loops, and a web export for live use in apps and sites. Use when someone asks for a VFX clip, a visualizer, a festival or stage loop, a music-reactive background, or a live shader effect for a web page.
4
- license: LicenseRef-agentvfx. Noncommercial use; see LICENSE for the complete terms.
4
+ license: Apache-2.0. See LICENSE and NOTICE.
5
5
  ---
6
6
 
7
7
  # agentvfx
@@ -49,11 +49,11 @@ Check it without rendering:
49
49
 
50
50
  Preview small first (640x360), then raise the size for the final. The command prints JSON with the film path, the flash result and the stills. Open `stills/sheet.png` and every strip before you describe the clip to anyone. A render you have not looked at is not done.
51
51
 
52
- Every render burns a small `agentvfx` credit into a corner of the frame (switch it off with `"credit": { "overlay": false }` in the score), writes `CREDIT.txt` and puts the credit line in the MP4 metadata. Crediting agentvfx is a condition of its licence for anything published: while the on-screen credit stays in the frame nothing more is needed; if the overlay is off, or the user hands the clip on without it, the text credit must go in the post, description or credits. When you report a finished clip, give the user the line to paste:
52
+ Every render burns a small `agentvfx` credit into a corner of the frame (switch it off with `"credit": { "overlay": false }` in the score), writes `CREDIT.txt` and puts the credit line in the MP4 metadata. A credit is appreciated but not required. When you report a finished clip, give the user the line in case they want to paste it:
53
53
 
54
54
  Made with agentvfx by Woojin Go - https://github.com/wjgoarxiv/agentvfx
55
55
 
56
- The licence is the agentvfx licence: Additional Terms plus the PolyForm Noncommercial License 1.0.0 (see LICENSE). An individual (sole proprietors and a band of individuals included) may use the clips they render in their own work, also commercially: their own channel, sponsored content on it, music videos, their own VJ or live set. Employers, companies, client work, output made for someone else to publish, paid rendering services, selling clips or templates on their own, and AI training on the code or templates are not covered and need a commercial licence (or are not allowed). A changed copy shared with others (a fork) must carry a name without "agentvfx" and say it is changed from agentvfx. If the user's request is clearly one of those, say so before rendering. When you hand a clip over to be published, tell the user to keep the on-screen credit or pass the credit line along.
56
+ agentvfx is licensed under the Apache License 2.0 (see LICENSE and NOTICE): any use, including commercial use, is allowed under its terms.
57
57
 
58
58
  ## 5. Flash safety
59
59
 
@@ -1,4 +1,4 @@
1
- // agentvfx (agentvfx licence, see LICENSE). Adapted from lit-typographic-motion 1.0.45 engine/core/constants.mjs.
1
+ // agentvfx (Apache-2.0, see LICENSE). Adapted from lit-typographic-motion 1.0.45 engine/core/constants.mjs.
2
2
  // Every number the agentvfx engine and its gate use, in one place.
3
3
 
4
4
  export const ENGINE_COMMIT = "ca251e3dddda422b364385eb484b5a3593a0990d";
@@ -1,6 +1,6 @@
1
- // agentvfx (agentvfx licence, see LICENSE). Local replacement for the plugin's lib/mark.mjs: the generator
1
+ // agentvfx (Apache-2.0, see LICENSE). Local replacement for the plugin's lib/mark.mjs: the generator
2
2
  // tag and the credit line that ffmpeg writes into every MP4, plus an optional comment (the stage-mode flashing notice).
3
- // Attribution is a licence condition for published output, so the credit also goes to CREDIT.txt next to the film.
3
+ // The credit also goes to CREDIT.txt next to the film, so it is easy to paste when the film is published.
4
4
  export const GENERATOR = "agentvfx";
5
5
  export const CREDIT_TEXT = "Made with agentvfx by Woojin Go - https://github.com/wjgoarxiv/agentvfx";
6
6
  export const CREDIT_SHORT = "VFX: agentvfx (github.com/wjgoarxiv/agentvfx)";
@@ -8,13 +8,10 @@ export const CREDIT_SHORT = "VFX: agentvfx (github.com/wjgoarxiv/agentvfx)";
8
8
  export function creditText() {
9
9
  return `${CREDIT_TEXT}
10
10
 
11
- Publishing this film? The agentvfx licence requires a credit. The film carries a small on-screen credit; keep it
12
- in the frame. If you switched it off ("credit": { "overlay": false }), put the line above where viewers can find
13
- it: the description, caption or credits. Where space is short: ${CREDIT_SHORT}
14
- When you hand the film to someone who will publish it, pass the credit on with it.
15
- Licence: the agentvfx licence (Additional Terms plus the PolyForm Noncommercial License 1.0.0). Individuals may use
16
- their own output commercially; companies, client work, paid services and AI training are not covered.
17
- See LICENSE in https://github.com/wjgoarxiv/agentvfx.
11
+ Publishing this film? A credit is appreciated, not required. The film carries a small on-screen credit; you can
12
+ keep it in the frame, or switch it off ("credit": { "overlay": false }) and put the line above in the description,
13
+ caption or credits. Where space is short: ${CREDIT_SHORT}
14
+ Licence: Apache-2.0. See LICENSE and NOTICE in https://github.com/wjgoarxiv/agentvfx.
18
15
  `;
19
16
  }
20
17
 
@@ -1,4 +1,4 @@
1
- // agentvfx (agentvfx licence, see LICENSE). Shared palettes, usable by any template that declares a `palette` input.
1
+ // agentvfx (Apache-2.0, see LICENSE). Shared palettes, usable by any template that declares a `palette` input.
2
2
  // Each palette is a list of sRGB hex stops; templates sample it as a ramp (index 0..1) or as a cyclic
3
3
  // ramp. Brutal palettes are black, white and one acid accent, in the spirit of festival HUD
4
4
  // colour grammar; the names are neutral and no existing colour system is copied.
@@ -1,4 +1,4 @@
1
- // agentvfx (agentvfx licence, see LICENSE). The score compositor's timeline: for each frame, which layers are active
1
+ // agentvfx (Apache-2.0, see LICENSE). The score compositor's timeline: for each frame, which layers are active
2
2
  // (base stack, cuts, hits), their parameter values (preset, params, audio bindings) and their local
3
3
  // time. Pure and deterministic; the page only draws what this returns.
4
4
  import { resolveParams } from "./templates.mjs";
@@ -1,4 +1,4 @@
1
- // agentvfx (agentvfx licence, see LICENSE). The template library: every templates/<family>/<id>/fx.json, keyed by
1
+ // agentvfx (Apache-2.0, see LICENSE). The template library: every templates/<family>/<id>/fx.json, keyed by
2
2
  // X_AGENTVFX.id. Test templates live under templates/_test/ and are loaded only on request.
3
3
  import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
4
4
  import path from "node:path";
@@ -1,9 +1,9 @@
1
- // agentvfx (agentvfx licence, see LICENSE). Hand-rolled validators for templates (fx.json) and FX scores. Every error
1
+ // agentvfx (Apache-2.0, see LICENSE). Hand-rolled validators for templates (fx.json) and FX scores. Every error
2
2
  // names the JSON path that failed, so the model can fix the exact field.
3
3
  import { PALETTE_NAMES } from "./palettes.mjs";
4
4
  import { FAMILY_PATTERN } from "../web/text.mjs";
5
5
 
6
- export const SPDX_ALLOWED = Object.freeze(["LicenseRef-agentvfx", "MIT", "BSD-2-Clause", "BSD-3-Clause", "Apache-2.0", "CC0-1.0"]);
6
+ export const SPDX_ALLOWED = Object.freeze(["MIT", "BSD-2-Clause", "BSD-3-Clause", "Apache-2.0", "CC0-1.0"]);
7
7
  export const INPUT_TYPES = Object.freeze(["float", "long", "bool", "color", "point2D", "image", "audio", "audioFFT", "event"]);
8
8
  export const TEMPLATE_INPUT_KINDS = Object.freeze(["generative", "footage", "either"]);
9
9
  export const FLASH_KINDS = Object.freeze(["none", "possible", "strobe"]);
@@ -286,7 +286,7 @@ export function validateScore(score, lib) {
286
286
  }
287
287
  }
288
288
  }
289
- // On-screen credit (licence attribution): a small corner mark on by default; the score may opt out.
289
+ // On-screen credit: a small corner mark on by default; the score may opt out.
290
290
  const credit = { overlay: true };
291
291
  if (score.credit !== undefined) {
292
292
  if (!isObj(score.credit)) err("credit", "must be { overlay? }");
@@ -1,4 +1,4 @@
1
- // agentvfx (agentvfx licence, see LICENSE). Adapted from lit-typographic-motion 1.0.45 engine/node/board.mjs: only the
1
+ // agentvfx (Apache-2.0, see LICENSE). Adapted from lit-typographic-motion 1.0.45 engine/node/board.mjs: only the
2
2
  // tile geometry is kept. Look-gate boards (references beside rendered frames) are composed in Node
3
3
  // from RGBA buffers by stills.mjs, so no browser or font is involved.
4
4
 
@@ -1,4 +1,4 @@
1
- // agentvfx (agentvfx licence, see LICENSE). Adapted from lit-typographic-motion 1.0.45 engine/node/encode.mjs.
1
+ // agentvfx (Apache-2.0, see LICENSE). Adapted from lit-typographic-motion 1.0.45 engine/node/encode.mjs.
2
2
  // ffmpeg is always the last stage and always a separately installed host binary: the master is one
3
3
  // pinned encode (BT.709 matrix and tags, tv range, CRF 16, tune grain). The preview walks the encoder
4
4
  // ladder (ffmpeg libwebp_anim, then img2webp, then GIF) over PNG frames the renderer wrote.
@@ -1,4 +1,4 @@
1
- // agentvfx (agentvfx licence, see LICENSE). The eye: every render leaves stills the model must open before reporting.
1
+ // agentvfx (Apache-2.0, see LICENSE). The eye: every render leaves stills the model must open before reporting.
2
2
  // stills/sheet.png (12 evenly spaced frames, 4x3), stills/strip-<k>.png (7 consecutive frames centred
3
3
  // on each hit, cut or onset, or on 25/50/75 % when there are none; at most 6 strips) and
4
4
  // stills/poster.png (full size, 40 % in). Frames are downscaled as they arrive, so memory stays small.
@@ -1,4 +1,4 @@
1
- // agentvfx (agentvfx licence, see LICENSE). Footage ingest: probe a clip, decode the requested window with ffmpeg at a
1
+ // agentvfx (Apache-2.0, see LICENSE). Footage ingest: probe a clip, decode the requested window with ffmpeg at a
2
2
  // constant frame rate, scale so the long edge is 1920 (even sizes), convert to RGBA with the clip's
3
3
  // colour matrix (BT.709 when untagged), and hand frames to the renderer strictly in order. A request
4
4
  // for frame 0 after later frames restarts the decoder (the determinism replay). The window's audio is
@@ -1,4 +1,4 @@
1
- // agentvfx (agentvfx licence, see LICENSE). Adapted from lit-typographic-motion 1.0.45 engine/node/frame-worker.mjs.
1
+ // agentvfx (Apache-2.0, see LICENSE). Adapted from lit-typographic-motion 1.0.45 engine/node/frame-worker.mjs.
2
2
  // One frame-analysis worker: decode a captured PNG to RGBA and analyse it off the capture thread
3
3
  // (the SHA-256 of the decoded RGBA, the flash-audit cells on the frame's own grid, the 0.5th and
4
4
  // 99.5th percentile luminance, the busy-cell share). The capture loop steps the next frame while a
@@ -1,4 +1,4 @@
1
- // agentvfx (agentvfx licence, see LICENSE). One render job, end to end: resolve the score's footage and audio, analyse
1
+ // agentvfx (Apache-2.0, see LICENSE). One render job, end to end: resolve the score's footage and audio, analyse
2
2
  // the audio, render the master (stage mode: full intensity, never tamed), keep the eye's stills, run
3
3
  // the flash audit as a report, write SAFETY.txt and the MP4 comment when limits are exceeded, and, only
4
4
  // when asked (safety.mode "broadcast-safe" or safeVariant), render a substituted broadcast-safe file.
@@ -1,4 +1,4 @@
1
- // agentvfx (agentvfx licence, see LICENSE). The host side of a render: open the render page in headless Chrome (GPU
1
+ // agentvfx (Apache-2.0, see LICENSE). The host side of a render: open the render page in headless Chrome (GPU
2
2
  // rung), prepare the templates, step every frame in order, capture, analyse in a worker pool, pipe
3
3
  // RGBA to ffmpeg, then replay sampled frames in a fresh browser from frame 0 and compare bytes
4
4
  // (determinism; exit 18 semantics after lit-typographic-motion's stage replay).
@@ -1,4 +1,4 @@
1
- // agentvfx (agentvfx licence, see LICENSE). Adapted from lit-typographic-motion 1.0.45 engine/node/stage-capture.mjs.
1
+ // agentvfx (Apache-2.0, see LICENSE). Adapted from lit-typographic-motion 1.0.45 engine/node/stage-capture.mjs.
2
2
  // One stage browser: headless Chrome on the GPU rung, the render page served by Fetch interception on
3
3
  // http://lit.stage, the frozen-clock init script injected before any page script, and a step/capture
4
4
  // pair the renderer calls frame by frame. The master and the determinism replay each open their own
@@ -1,4 +1,4 @@
1
- // agentvfx (agentvfx licence, see LICENSE). Adapted from lit-typographic-motion 1.0.45 engine/node/stage-serve.mjs.
1
+ // agentvfx (Apache-2.0, see LICENSE). Adapted from lit-typographic-motion 1.0.45 engine/node/stage-serve.mjs.
2
2
  // Serving without a listening socket: every request the render page makes is paused by CDP Fetch
3
3
  // interception and either fulfilled from disk on the synthetic origin http://lit.stage, or failed
4
4
  // with BlockedByClient and recorded. Routes: /lit/engine/* (engine/web), /lit/templates/* (the
@@ -1,4 +1,4 @@
1
- // agentvfx (agentvfx licence, see LICENSE). Injected before any page script: the page has no wall clock and no
1
+ // agentvfx (Apache-2.0, see LICENSE). Injected before any page script: the page has no wall clock and no
2
2
  // unseeded randomness. Math.random is a seeded mulberry32; Date and performance.now are frozen at 0
3
3
  // (time comes only from the frame index the host passes to window.__litStep).
4
4
  (() => {
@@ -1,4 +1,4 @@
1
- // agentvfx (agentvfx licence, see LICENSE). The GLSL prelude prepended to every template pass, and the program source
1
+ // agentvfx (Apache-2.0, see LICENSE). The GLSL prelude prepended to every template pass, and the program source
2
2
  // builder. Contract: references/template-format.md. Importable in Node (tests) and in the page.
3
3
  // Helper credits: value noise and fbm after The Book of Shaders ch.11/13 (https://thebookofshaders.com),
4
4
  // cosine palette after Inigo Quilez (https://iquilezles.org/articles/palettes/), hsv conversions after
@@ -1,4 +1,4 @@
1
- // agentvfx (agentvfx licence, see LICENSE). The render page: WebGL2 multipass renderer for template layers with
1
+ // agentvfx (Apache-2.0, see LICENSE). The render page: WebGL2 multipass renderer for template layers with
2
2
  // persistent RGBA16F buffers. The host (engine/node/render.mjs) calls window.__litPrepare once, then
3
3
  // window.__litStep(f, plan) for every frame in order, and captures the canvas after each step.
4
4
  // No requestAnimationFrame, no wall clock: time comes only from the plan.
@@ -329,7 +329,7 @@ out vec4 fragColor;
329
329
  uniform sampler2D credit;
330
330
  void main() { fragColor = texture(credit, vUv); }`;
331
331
 
332
- /** The licence credit as a frame-sized RGBA texture: small text in the bottom-right corner, white with a dark edge. */
332
+ /** The credit as a frame-sized RGBA texture: small text in the bottom-right corner, white with a dark edge. */
333
333
  function creditTexture(text) {
334
334
  const c = document.createElement("canvas");
335
335
  c.width = W;
@@ -1,4 +1,4 @@
1
- // agentvfx (agentvfx licence, see LICENSE). Engine text layer, drawn in the render page with Canvas 2D and system fonts
1
+ // agentvfx (Apache-2.0, see LICENSE). Engine text layer, drawn in the render page with Canvas 2D and system fonts
2
2
  // (nothing bundled). Output is a mask: R = glyph and line ink, G = solid box/bar fill. Templates colour
3
3
  // it. Reveal modes are frame-deterministic: "type" prints characters over time with a block cursor,
4
4
  // "decode" settles each character out of seeded random glyphs.
@@ -33,7 +33,7 @@ A template is a folder `templates/<family>/<id>/` with:
33
33
  "id": "sacred",
34
34
  "family": "psychedelic",
35
35
  "input": "footage",
36
- "spdx": "LicenseRef-agentvfx",
36
+ "spdx": "Apache-2.0",
37
37
  "flash": "none",
38
38
  "fps": 30,
39
39
  "palette": true,
@@ -48,7 +48,7 @@ A template is a folder `templates/<family>/<id>/` with:
48
48
  - INPUT types: `float`, `long` (int; optional `VALUES` / `LABELS`), `bool`, `color` (`[r,g,b,a]` 0..1, sRGB),
49
49
  `point2D`, `image`, `audio`, `audioFFT`.
50
50
  - `X_AGENTVFX.input`: `generative` (no clip), `footage` (needs `input.video`), `either`.
51
- - `spdx`: LicenseRef-agentvfx (the agentvfx licence, the library's own), MIT, BSD-2-Clause, BSD-3-Clause, Apache-2.0 or CC0-1.0 only. Shaders are written fresh;
51
+ - `spdx`: Apache-2.0 (the library's own), MIT, BSD-2-Clause, BSD-3-Clause or CC0-1.0 only. Shaders are written fresh;
52
52
  algorithms are credited by name and URL in `credits` and in comments. No Shadertoy ports, no Lygia, no
53
53
  hydra-synth, no MilkDrop presets.
54
54
  - `flash`: `none`, `possible` (can flash at some settings) or `strobe` (flashes by design).