@editframe/create 0.47.1 → 0.48.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.
Files changed (116) hide show
  1. package/LICENSE-FULL.md +148 -0
  2. package/LICENSE.md +58 -0
  3. package/dist/index.d.ts +0 -1
  4. package/dist/index.js +3 -4
  5. package/dist/index.js.map +1 -1
  6. package/dist/templates/{html → templates/html}/package.json +3 -3
  7. package/dist/templates/{react → templates/react}/package.json +3 -3
  8. package/dist/utils.js +1 -2
  9. package/dist/utils.js.map +1 -1
  10. package/package.json +2 -4
  11. package/dist/templates/html/src/assets/.gitkeep +0 -0
  12. package/dist/templates/html/src/index.js +0 -2
  13. package/dist/templates/html/src/styles.css +0 -8
  14. package/dist/templates/react/src/Video.tsx +0 -23
  15. package/dist/templates/react/src/assets/.gitkeep +0 -0
  16. package/dist/templates/react/src/main.tsx +0 -12
  17. package/dist/templates/react/src/styles.css +0 -3
  18. /package/dist/skills/{editframe-brand-video-generator → skills/editframe-brand-video-generator}/README.md +0 -0
  19. /package/dist/skills/{editframe-brand-video-generator → skills/editframe-brand-video-generator}/SKILL.md +0 -0
  20. /package/dist/skills/{editframe-brand-video-generator → skills/editframe-brand-video-generator}/references/brand-examples.md +0 -0
  21. /package/dist/skills/{editframe-brand-video-generator → skills/editframe-brand-video-generator}/references/color-psychology.md +0 -0
  22. /package/dist/skills/{editframe-brand-video-generator → skills/editframe-brand-video-generator}/references/composition-patterns.md +0 -0
  23. /package/dist/skills/{editframe-brand-video-generator → skills/editframe-brand-video-generator}/references/editing.md +0 -0
  24. /package/dist/skills/{editframe-brand-video-generator → skills/editframe-brand-video-generator}/references/emotional-arcs.md +0 -0
  25. /package/dist/skills/{editframe-brand-video-generator → skills/editframe-brand-video-generator}/references/genre-selection.md +0 -0
  26. /package/dist/skills/{editframe-brand-video-generator → skills/editframe-brand-video-generator}/references/transition-styles.md +0 -0
  27. /package/dist/skills/{editframe-brand-video-generator → skills/editframe-brand-video-generator}/references/typography-personalities.md +0 -0
  28. /package/dist/skills/{editframe-brand-video-generator → skills/editframe-brand-video-generator}/references/video-archetypes.md +0 -0
  29. /package/dist/skills/{editframe-brand-video-generator → skills/editframe-brand-video-generator}/references/video-fundamentals.md +0 -0
  30. /package/dist/skills/{editframe-brand-video-generator → skills/editframe-brand-video-generator}/references/visual-metaphors.md +0 -0
  31. /package/dist/skills/{editframe-composition → skills/editframe-composition}/SKILL.md +0 -0
  32. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/audio.md +0 -0
  33. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/captions.md +0 -0
  34. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/composition-model.md +0 -0
  35. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/configuration.md +0 -0
  36. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/css-parts.md +0 -0
  37. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/css-variables.md +0 -0
  38. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/entry-points.md +0 -0
  39. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/events.md +0 -0
  40. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/getting-started.md +0 -0
  41. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/hooks.md +0 -0
  42. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/image.md +0 -0
  43. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/r3f.md +0 -0
  44. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/render-api.md +0 -0
  45. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/render-strategies.md +0 -0
  46. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/render-to-video.md +0 -0
  47. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/scripting.md +0 -0
  48. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/sequencing.md +0 -0
  49. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/server-rendering.md +0 -0
  50. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/surface.md +0 -0
  51. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/text.md +0 -0
  52. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/time-model.md +0 -0
  53. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/timegroup-modes.md +0 -0
  54. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/timegroup.md +0 -0
  55. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/timeline-root.md +0 -0
  56. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/transcription.md +0 -0
  57. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/transitions.md +0 -0
  58. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/use-media-info.md +0 -0
  59. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/video.md +0 -0
  60. /package/dist/skills/{editframe-composition → skills/editframe-composition}/references/waveform.md +0 -0
  61. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/SKILL.md +0 -0
  62. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/active-root-temporal.md +0 -0
  63. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/canvas.md +0 -0
  64. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/controls.md +0 -0
  65. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/dial.md +0 -0
  66. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/editor-toolkit.md +0 -0
  67. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/filmstrip.md +0 -0
  68. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/fit-scale.md +0 -0
  69. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/focus-overlay.md +0 -0
  70. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/hierarchy.md +0 -0
  71. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/overlay-item.md +0 -0
  72. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/overlay-layer.md +0 -0
  73. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/pan-zoom.md +0 -0
  74. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/pause.md +0 -0
  75. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/play.md +0 -0
  76. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/preview.md +0 -0
  77. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/resizable-box.md +0 -0
  78. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/scrubber.md +0 -0
  79. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/thumbnail-strip.md +0 -0
  80. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/time-display.md +0 -0
  81. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/timeline-ruler.md +0 -0
  82. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/timeline.md +0 -0
  83. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/toggle-loop.md +0 -0
  84. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/toggle-play.md +0 -0
  85. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/transform-handles.md +0 -0
  86. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/trim-handles.md +0 -0
  87. /package/dist/skills/{editframe-editor-gui → skills/editframe-editor-gui}/references/workbench.md +0 -0
  88. /package/dist/skills/{editframe-motion-design → skills/editframe-motion-design}/SKILL.md +0 -0
  89. /package/dist/skills/{editframe-motion-design → skills/editframe-motion-design}/references/0-editframe.md +0 -0
  90. /package/dist/skills/{editframe-motion-design → skills/editframe-motion-design}/references/1-intent.md +0 -0
  91. /package/dist/skills/{editframe-motion-design → skills/editframe-motion-design}/references/2-physics-model.md +0 -0
  92. /package/dist/skills/{editframe-motion-design → skills/editframe-motion-design}/references/3-attention.md +0 -0
  93. /package/dist/skills/{editframe-motion-design → skills/editframe-motion-design}/references/4-process.md +0 -0
  94. /package/dist/skills/{editframe-vite-plugin → skills/editframe-vite-plugin}/SKILL.md +0 -0
  95. /package/dist/skills/{editframe-vite-plugin → skills/editframe-vite-plugin}/references/file-api.md +0 -0
  96. /package/dist/skills/{editframe-vite-plugin → skills/editframe-vite-plugin}/references/getting-started.md +0 -0
  97. /package/dist/skills/{editframe-vite-plugin → skills/editframe-vite-plugin}/references/jit-transcoding.md +0 -0
  98. /package/dist/skills/{editframe-vite-plugin → skills/editframe-vite-plugin}/references/local-assets.md +0 -0
  99. /package/dist/skills/{editframe-vite-plugin → skills/editframe-vite-plugin}/references/visual-testing.md +0 -0
  100. /package/dist/skills/{editframe-webhooks → skills/editframe-webhooks}/SKILL.md +0 -0
  101. /package/dist/skills/{editframe-webhooks → skills/editframe-webhooks}/references/events.md +0 -0
  102. /package/dist/skills/{editframe-webhooks → skills/editframe-webhooks}/references/getting-started.md +0 -0
  103. /package/dist/skills/{editframe-webhooks → skills/editframe-webhooks}/references/security.md +0 -0
  104. /package/dist/skills/{editframe-webhooks → skills/editframe-webhooks}/references/testing.md +0 -0
  105. /package/dist/skills/{editframe-webhooks → skills/editframe-webhooks}/references/troubleshooting.md +0 -0
  106. /package/dist/templates/{html → templates/html}/AGENTS.md +0 -0
  107. /package/dist/templates/{html → templates/html}/index.html +0 -0
  108. /package/dist/templates/{html → templates/html}/postcss.config.cjs +0 -0
  109. /package/dist/templates/{html → templates/html}/tailwind.config.cjs +0 -0
  110. /package/dist/templates/{html → templates/html}/vite.config.ts +0 -0
  111. /package/dist/templates/{react → templates/react}/AGENTS.md +0 -0
  112. /package/dist/templates/{react → templates/react}/index.html +0 -0
  113. /package/dist/templates/{react → templates/react}/postcss.config.cjs +0 -0
  114. /package/dist/templates/{react → templates/react}/tailwind.config.cjs +0 -0
  115. /package/dist/templates/{react → templates/react}/tsconfig.json +0 -0
  116. /package/dist/templates/{react → templates/react}/vite.config.ts +0 -0
@@ -0,0 +1,148 @@
1
+ # Editframe SDK License Agreement
2
+
3
+ **Effective Date:** January 12, 2026 **Version:** 2.0
4
+
5
+ This License Agreement ("License") governs your use of the Editframe SDK. By downloading, accessing, or using the SDK, you agree to these terms.
6
+
7
+ ---
8
+
9
+ ## 1. Definitions
10
+
11
+ **"Total Employees"** — All full-time employees, part-time employees, and contractor equivalents across your Organization and all affiliated entities under common control. Contractors are counted proportionally by time worked.
12
+
13
+ **"Organization"** — You, your company, and all affiliates, subsidiaries, or related entities under common control.
14
+
15
+ **"Client-Side SDK"** — The source-available browser-based video rendering components, including the custom video tag for local file playback.
16
+
17
+ **"Server-Side Rendering"** — Hosted cloud service for parallel rendering at scale, supporting simultaneous rendering of large volumes of videos including longer and more complex ones.
18
+
19
+ **"Premium Player"** — Cloud-based CDN streaming service with API-authenticated streaming capabilities, optimized for editing workflows.
20
+
21
+ **"Cloud Services"** — Server-Side Rendering and Premium Player collectively.
22
+
23
+ **"Commercial Use"** — Any use in connection with business operations, revenue-generating activities, or professional services, including internal tools, production environments, and client deliverables.
24
+
25
+ **"Evaluation Use"** — Good-faith testing and proof-of-concept development, limited to 30 days. Excludes production deployment and ongoing business use.
26
+
27
+ ---
28
+
29
+ ## 2. License Grant
30
+
31
+ ### 2.1 Free Tier (≤3 Employees)
32
+
33
+ A limited, non-exclusive, non-transferable, revocable license to use the Client-Side SDK.
34
+
35
+ **Eligible:**
36
+
37
+ - Organizations with ≤3 total employees (Commercial Use permitted)
38
+ - Evaluation Use (any size, 30 days, non-production)
39
+ - Registered non-profits (any size)
40
+ - Accredited educational institutions
41
+ - Personal non-commercial projects
42
+
43
+ **Permitted:**
44
+
45
+ - Install and use the Client-Side SDK
46
+ - Use the custom video tag for local file playback (no API key required)
47
+ - Create and distribute video outputs for personal or Commercial Use
48
+
49
+ **Not included:** Cloud Services. Cloud Services require a Cloud Tier subscription regardless of company size.
50
+
51
+ ### 2.2 Team Tier (4–10 Employees)
52
+
53
+ Includes all Free Tier rights. Full Client-Side SDK use for any business purpose including production. Does not include Cloud Services. See [editframe.com/pricing](https://editframe.com/pricing) for pricing.
54
+
55
+ ### 2.3 Cloud Tier (11–20 Employees, or Any Size Requiring Cloud)
56
+
57
+ Required for organizations with 11–20 employees, or any organization using Cloud Services.
58
+
59
+ Includes all Team Tier rights, plus Server-Side Rendering and Premium Player via API. Usage-based billing applies in addition to base subscription. See [editframe.com/pricing](https://editframe.com/pricing) for pricing.
60
+
61
+ ### 2.4 Enterprise (21+ Employees)
62
+
63
+ Contact [hello@editframe.com](mailto:hello@editframe.com). Includes all Cloud Tier features plus priority support and custom SLAs.
64
+
65
+ ---
66
+
67
+ ## 3. Restrictions
68
+
69
+ ### 3.1 Prohibited
70
+
71
+ - Do not offer the Client-Side SDK or CLI itself as a managed rendering API or infrastructure product to third parties
72
+ - Do not fork, redistribute, or sublicense the Client-Side SDK or CLI under different terms
73
+ - Do not use the SDK above your tier threshold without upgrading
74
+ - Do not share credentials or API keys across separate organizations
75
+ - Do not implement workarounds to avoid usage-based billing
76
+ - Do not reverse engineer, decompile, or extract proprietary algorithms from Server-Side Rendering or Premium Player
77
+ - Do not access Cloud Service APIs other than through official client libraries
78
+ - Do not disable, circumvent, or tamper with telemetry
79
+ - Do not remove or alter copyright notices or attribution
80
+ - Do not use the SDK for unlawful purposes or in violation of export control regulations
81
+
82
+ ### 3.2 Permitted
83
+
84
+ - Build any product that creates, processes, or delivers video — editors, workflows, motion design tools, content automation, and more
85
+ - Integrate the Client-Side SDK into platforms, coding environments, vibe coding tools, and AI agents (end users are individually responsible for compliance)
86
+ - Use the Client-Side SDK in CI/CD pipelines and development environments, provided you are not using it to render production video at scale
87
+
88
+ ---
89
+
90
+ ## 4. Intellectual Property
91
+
92
+ Editframe, Inc. retains all rights to the SDK. This License does not transfer ownership. You retain all rights to video outputs you create ("Your Content"). Feedback may be used by us without obligation.
93
+
94
+ ---
95
+
96
+ ## 5. Telemetry
97
+
98
+ The SDK includes always-on telemetry collecting render counts, durations, IP addresses, domains, and feature usage. Telemetry cannot be disabled. Required for usage-based billing and license compliance. No video content is collected. See [editframe.com/privacy](https://editframe.com/privacy).
99
+
100
+ High Client-Side rendering volume does not trigger payment requirements — eligibility is determined by company size only.
101
+
102
+ ---
103
+
104
+ ## 6. Support
105
+
106
+ - **Free:** Community support
107
+ - **Team/Cloud:** Email and Slack, 48-hour response
108
+ - **Enterprise:** Dedicated support, custom SLAs
109
+
110
+ ---
111
+
112
+ ## 7. Warranties
113
+
114
+ THE SDK IS PROVIDED "AS IS" WITHOUT WARRANTIES OF ANY KIND. WE DO NOT WARRANT THAT THE SDK WILL BE ERROR-FREE, SECURE, OR UNINTERRUPTED. YOU ASSUME ALL RISKS.
115
+
116
+ ---
117
+
118
+ ## 8. Limitation of Liability
119
+
120
+ WE SHALL NOT BE LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES. TOTAL LIABILITY SHALL NOT EXCEED AMOUNTS PAID IN THE 12 MONTHS PRECEDING THE CLAIM, OR $100 USD, WHICHEVER IS GREATER.
121
+
122
+ ---
123
+
124
+ ## 9. Termination
125
+
126
+ This License is effective upon first use. We may terminate immediately for breach, failure to maintain required subscription tier, or fraudulent conduct (10 days' notice where feasible). Upon termination, all rights cease and you must delete all SDK copies.
127
+
128
+ ---
129
+
130
+ ## 10. Compliance
131
+
132
+ Self-report your employee count accurately. Violations may result in termination, back-payment of owed fees, liquidated damages (3× unpaid fees), and legal action. Voluntary disclosure may result in waived penalties.
133
+
134
+ ---
135
+
136
+ ## 11. General
137
+
138
+ - **Governing Law:** Delaware
139
+ - **Jurisdiction:** New York County, NY
140
+ - **Export Controls:** You must comply with U.S. Export Administration Regulations
141
+ - **Assignment:** You may not assign this License without written consent
142
+ - **Entire Agreement:** This License, Terms of Service, and Privacy Policy constitute the full agreement
143
+
144
+ ---
145
+
146
+ [hello@editframe.com](mailto:hello@editframe.com) · editframe.com
147
+
148
+ **By using the SDK, you agree to these terms.**
package/LICENSE.md ADDED
@@ -0,0 +1,58 @@
1
+ # Editframe SDK License
2
+
3
+ The Editframe SDK is source-available and free for individuals and small teams, including for commercial use. We've kept the bar low intentionally — if you're building something, you should be able to just use it.
4
+
5
+ - [Free Tier](#free-tier)
6
+ - [Paid Tiers](#paid-tiers)
7
+
8
+ ---
9
+
10
+ ## Free Tier
11
+
12
+ Copyright © 2026 [Editframe](https://editframe.com)
13
+
14
+ ### Who Qualifies
15
+
16
+ - Individuals and freelancers
17
+ - Organizations with 3 or fewer total employees
18
+ - Non-profits and not-for-profit organizations (any size)
19
+ - Accredited educational institutions
20
+ - Organizations evaluating Editframe in good faith, prior to commercial deployment (30 days)
21
+
22
+ ### What You Can Build
23
+
24
+ Use and modify the SDK to build any product that creates, processes, or delivers video — editors, workflows, motion design tools, content automation, and more. Platforms, coding environments, vibe coding tools, and AI agents may freely integrate the SDK. End users are each responsible for their own license compliance.
25
+
26
+ ### What Is Not Permitted
27
+
28
+ You may not offer the Client-Side SDK or CLI itself as a managed rendering API or infrastructure product to third parties. You may not sell, sublicense, or redistribute the SDK or modifications to it as a standalone product.
29
+
30
+ ### Warranty
31
+
32
+ The SDK is provided as-is without warranty of any kind. See the [Full License Agreement](./LICENSE-FULL.md) for complete terms.
33
+
34
+ ---
35
+
36
+ ## Paid Tiers
37
+
38
+ Organizations outside the Free Tier must subscribe to a paid plan.
39
+
40
+ | Tier | Employees |
41
+ | :---- | :---- |
42
+ | Team | 4–10 |
43
+ | Cloud | 11–20, or any size needing Cloud Rendering & Player |
44
+ | Enterprise | 21+ |
45
+
46
+ All paid tiers include full SDK rights.
47
+
48
+ Cloud Rendering & Player — parallel rendering and CDN streaming optimized for editing workflows — requires a Cloud Tier subscription regardless of company size.
49
+
50
+ [View pricing →](https://editframe.com/pricing) · Enterprise: [hello@editframe.com](mailto:hello@editframe.com)
51
+
52
+ ---
53
+
54
+ Unsure which tier applies? See the [FAQ](https://editframe.com/faq) or reach out at [hello@editframe.com](mailto:hello@editframe.com).
55
+
56
+ [Full License Agreement](./LICENSE-FULL.md) · [Terms of Service](https://editframe.com/terms)
57
+
58
+ *© 2026 Editframe, Inc.*
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env node
2
1
  import { PackageManager } from "./utils.js";
3
2
 
4
3
  //#region src/index.d.ts
package/dist/index.js CHANGED
@@ -6,7 +6,6 @@ import { fileURLToPath } from "node:url";
6
6
  import { parseArgs } from "node:util";
7
7
  import chalk from "chalk";
8
8
  import prompts from "prompts";
9
-
10
9
  //#region src/index.ts
11
10
  function buildSuccessOutput({ directoryName, pkgManager, depsInstalled, skillsInstalled }) {
12
11
  let output = "";
@@ -56,9 +55,9 @@ ${chalk.bold("Examples:")}
56
55
  `;
57
56
  process.stdout.write(usage);
58
57
  }
59
- async function checkDirectoryExists(path$1) {
58
+ async function checkDirectoryExists(path) {
60
59
  try {
61
- await access(path$1);
60
+ await access(path);
62
61
  return true;
63
62
  } catch (_error) {
64
63
  return false;
@@ -196,7 +195,7 @@ async function main() {
196
195
  }));
197
196
  }
198
197
  main();
199
-
200
198
  //#endregion
201
199
  export { buildSuccessOutput };
200
+
202
201
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["path","promptQuestions: prompts.PromptObject[]","interactiveScope: SkillsInstallScope | undefined","resolvedSkillsScope: SkillsInstallScope","depsError: string | undefined"],"sources":["../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { access, cp, readdir } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { parseArgs } from \"node:util\";\nimport chalk from \"chalk\";\nimport prompts from \"prompts\";\nimport {\n getUserPkgManager,\n installDependencies,\n installAgentSkills,\n getStartCommand,\n type PackageManager,\n type SkillsInstallScope,\n} from \"./utils.js\";\n// SkillsInstallScope is used in the main() function below\n\ninterface SuccessOutputOptions {\n directoryName: string;\n pkgManager: PackageManager;\n depsInstalled: boolean;\n skillsInstalled: boolean;\n}\n\nexport function buildSuccessOutput({\n directoryName,\n pkgManager,\n depsInstalled,\n skillsInstalled,\n}: SuccessOutputOptions): string {\n let output = \"\";\n\n // Headline: the thing that was created\n output += chalk.green.bold(`\\n✓ ${directoryName} created\\n`);\n\n // Next steps\n output += `\\n${chalk.bold(\"Next Steps\")}\\n`;\n output += ` ${chalk.cyan(`cd ${directoryName}`)}\\n`;\n if (!depsInstalled) {\n output += ` ${chalk.cyan(`${pkgManager} install`)}\\n`;\n }\n output += ` ${chalk.cyan(getStartCommand(pkgManager))}\\n`;\n\n // Agent skills\n if (skillsInstalled) {\n output += `\\n${chalk.green(\"✔\")} ${chalk.bold(\"Agent Skills Installed\")}\\n`;\n output += chalk.dim(` Ask your agent to \"Make a video with editframe …\"\\n`);\n }\n\n output += \"\\n\";\n\n return output;\n}\n\nfunction showHelp(templates: string[]) {\n const usage = `\n${chalk.bold(\"Usage:\")}\n npm create @editframe -- [template] [options]\n\n${chalk.bold(\"Options:\")}\n -d, --directory <name> Project directory name\n --skip-install Skip dependency installation\n --skip-skills Skip agent skills installation\n -g, --global Install agent skills globally (~/.claude/skills, ~/.agents/skills)\n -y, --yes Skip all prompts, use defaults\n -h, --help Show this help message\n\n${chalk.bold(\"Available Templates:\")}\n${templates.map((t) => ` - ${t}`).join(\"\\n\")}\n\n${chalk.bold(\"Examples:\")}\n ${chalk.dim(\"# Interactive mode (recommended)\")}\n npm create @editframe\n\n ${chalk.dim(\"# Specify template\")}\n npm create @editframe -- react\n\n ${chalk.dim(\"# Full non-interactive\")}\n npm create @editframe -- react -d my-app -y\n\n ${chalk.dim(\"# Install skills globally\")}\n npm create @editframe -- react --global\n\n ${chalk.dim(\"# Skip auto-installation\")}\n npm create @editframe -- react --skip-install --skip-skills\n`;\n\n process.stdout.write(usage);\n}\n\nasync function checkDirectoryExists(path: string) {\n try {\n await access(path);\n return true;\n } catch (_error) {\n return false;\n }\n}\n\nasync function main() {\n const __dirname = path.dirname(fileURLToPath(import.meta.url));\n\n // List of available starter templates\n const templates = await readdir(path.join(__dirname, \"templates\"));\n\n // Parse command line arguments\n const { values, positionals } = parseArgs({\n args: process.argv.slice(2),\n options: {\n help: {\n type: \"boolean\",\n short: \"h\",\n default: false,\n },\n directory: {\n type: \"string\",\n short: \"d\",\n },\n skipInstall: {\n type: \"boolean\",\n default: false,\n },\n skipSkills: {\n type: \"boolean\",\n default: false,\n },\n global: {\n type: \"boolean\",\n short: \"g\",\n default: false,\n },\n yes: {\n type: \"boolean\",\n short: \"y\",\n default: false,\n },\n },\n allowPositionals: true,\n });\n\n // Show help if requested\n if (values.help) {\n showHelp(templates);\n process.exit(0);\n }\n\n // Extract CLI arguments\n const cliTemplate = positionals[0];\n const cliDirectory = values.directory;\n const skipInstall = values.skipInstall;\n const skipSkills = values.skipSkills;\n const cliGlobal = values.global;\n const nonInteractive = values.yes;\n\n // Validate template if provided\n if (cliTemplate && !templates.includes(cliTemplate)) {\n process.stderr.write(chalk.red(`Error: Template \"${cliTemplate}\" does not exist.\\n\\n`));\n process.stderr.write(chalk.bold(\"Available templates:\\n\"));\n for (const t of templates) {\n process.stderr.write(` - ${t}\\n`);\n }\n process.stderr.write(chalk.dim(\"\\nRun with --help for more information.\\n\"));\n process.exit(1);\n }\n\n // Build prompts array - ask ALL questions upfront before any network calls\n const promptQuestions: prompts.PromptObject[] = [];\n\n if (!cliDirectory && !nonInteractive) {\n promptQuestions.push({\n type: \"text\",\n name: \"directoryName\",\n message: \"Enter the name of the directory to generate into:\",\n initial: \"my-project\",\n });\n }\n\n if (!cliTemplate && !nonInteractive) {\n promptQuestions.push({\n type: \"select\",\n name: \"templateName\",\n message: \"Choose a starter template:\",\n choices: templates.map((template) => ({\n title: template,\n value: template,\n })),\n });\n }\n\n // Ask about agent skills scope upfront (unless skipped via CLI)\n if (!skipSkills && !nonInteractive) {\n promptQuestions.push({\n type: \"select\",\n name: \"skillsScope\",\n message: \"Install AI agent skills?\",\n choices: [\n { title: \"Globally (all projects)\", value: \"global\" },\n { title: \"This project only\", value: \"project\" },\n ],\n initial: 0,\n });\n }\n\n // Prompt for all missing information at once\n const answers = promptQuestions.length > 0 ? await prompts(promptQuestions) : {};\n\n // Handle user cancellation\n if (\n (!cliDirectory && !nonInteractive && !answers.directoryName) ||\n (!cliTemplate && !nonInteractive && !answers.templateName)\n ) {\n process.stderr.write(chalk.red(\"\\nCancelled\\n\"));\n process.exit(1);\n }\n\n // Use CLI args or prompted values (with defaults for non-interactive mode)\n const directoryName = cliDirectory || answers.directoryName || \"my-project\";\n const templateName = cliTemplate || answers.templateName || templates[0];\n\n // Determine skills scope — global by default\n const interactiveScope: SkillsInstallScope | undefined = answers.skillsScope;\n const resolvedSkillsScope: SkillsInstallScope = cliGlobal\n ? \"global\"\n : (interactiveScope ?? \"global\");\n const installSkills = !skipSkills;\n\n const targetDir = path.join(process.cwd(), directoryName);\n const templateDir = path.join(__dirname, \"templates\", templateName);\n\n const exists = await checkDirectoryExists(targetDir);\n\n if (exists) {\n process.stderr.write(chalk.yellow(`Directory ${targetDir} already exists.\\n`));\n const { overwrite } = await prompts({\n type: \"confirm\",\n name: \"overwrite\",\n message: \"Directory already exists. Do you want to overwrite it?\",\n initial: false,\n });\n\n if (!overwrite) {\n process.stderr.write(chalk.red(\"Aborting...\\n\"));\n process.exit(1);\n }\n }\n\n process.stderr.write(`\\nCreating project in directory: ${targetDir}\\n`);\n process.stderr.write(`Using template: ${templateName}\\n\\n`);\n\n // Copy the selected template to the target directory\n await cp(templateDir, targetDir, { recursive: true });\n\n const pkgManager = getUserPkgManager();\n let depsInstalled = false;\n let depsError: string | undefined;\n let skillsInstalled = false;\n\n if (!skipInstall) {\n const result = await installDependencies(targetDir);\n depsInstalled = result.ok;\n depsError = result.errorOutput;\n }\n\n if (installSkills) {\n skillsInstalled = await installAgentSkills(targetDir, resolvedSkillsScope);\n }\n\n if (depsError) {\n process.stderr.write(chalk.yellow(`\\n⚠ ${pkgManager} install failed\\n\\n`));\n process.stderr.write(depsError + \"\\n\");\n }\n\n process.stderr.write(\n buildSuccessOutput({ directoryName, pkgManager, depsInstalled, skillsInstalled }),\n );\n}\n\nmain();\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"mappings":"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"}
@@ -7,9 +7,9 @@
7
7
  "start": "editframe preview"
8
8
  },
9
9
  "dependencies": {
10
- "@editframe/cli": "0.47.1",
11
- "@editframe/elements": "0.47.1",
12
- "@editframe/vite-plugin": "0.47.1",
10
+ "@editframe/cli": "0.48.0",
11
+ "@editframe/elements": "0.48.0",
12
+ "@editframe/vite-plugin": "0.48.0",
13
13
  "tailwindcss": "^3.4.3",
14
14
  "vite": "^6.3.5",
15
15
  "vite-plugin-singlefile": "^2.0.1"
@@ -7,9 +7,9 @@
7
7
  "start": "editframe preview"
8
8
  },
9
9
  "dependencies": {
10
- "@editframe/cli": "0.47.1",
11
- "@editframe/react": "0.47.1",
12
- "@editframe/vite-plugin": "0.47.1",
10
+ "@editframe/cli": "0.48.0",
11
+ "@editframe/react": "0.48.0",
12
+ "@editframe/vite-plugin": "0.48.0",
13
13
  "@vitejs/plugin-react": "^4.3.1",
14
14
  "tailwindcss": "^3.4.3",
15
15
  "vite": "^6.3.5",
package/dist/utils.js CHANGED
@@ -4,7 +4,6 @@ import { fileURLToPath } from "node:url";
4
4
  import os from "node:os";
5
5
  import { execa } from "execa";
6
6
  import ora from "ora";
7
-
8
7
  //#region src/utils.ts
9
8
  /**
10
9
  * Detect which package manager was used to invoke the create script.
@@ -76,7 +75,7 @@ async function installAgentSkills(projectDir, scope = "global") {
76
75
  function getStartCommand(pkgManager) {
77
76
  return pkgManager === "npm" ? "npm start" : `${pkgManager} start`;
78
77
  }
79
-
80
78
  //#endregion
81
79
  export { getStartCommand, getUserPkgManager, installAgentSkills, installDependencies };
80
+
82
81
  //# sourceMappingURL=utils.js.map
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":[],"sources":["../src/utils.ts"],"sourcesContent":["import { cp, mkdir, readdir } from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { execa } from \"execa\";\nimport ora from \"ora\";\n\nexport type SkillsInstallScope = \"project\" | \"global\";\n\nexport type PackageManager = \"npm\" | \"pnpm\" | \"yarn\" | \"bun\";\n\n/**\n * Detect which package manager was used to invoke the create script.\n * Uses the npm_config_user_agent environment variable set by package managers.\n */\nexport function getUserPkgManager(): PackageManager {\n const userAgent = process.env.npm_config_user_agent;\n\n if (userAgent) {\n if (userAgent.startsWith(\"yarn\")) return \"yarn\";\n if (userAgent.startsWith(\"pnpm\")) return \"pnpm\";\n if (userAgent.startsWith(\"bun\")) return \"bun\";\n }\n\n return \"npm\";\n}\n\n/**\n * Install dependencies in the project directory.\n * Suppresses all output unless the install fails, in which case it\n * returns the error output as a string for the caller to surface.\n */\nexport async function installDependencies(\n projectDir: string,\n): Promise<{ ok: boolean; errorOutput?: string }> {\n const pkgManager = getUserPkgManager();\n const spinner = ora(`Installing dependencies with ${pkgManager}…`).start();\n\n try {\n const result = await execa(pkgManager, [\"install\"], {\n cwd: projectDir,\n all: true,\n reject: false,\n });\n\n if (result.exitCode !== 0) {\n spinner.fail(`${pkgManager} install failed`);\n return { ok: false, errorOutput: result.all };\n }\n\n spinner.succeed(`${pkgManager} install`);\n return { ok: true };\n } catch (err) {\n spinner.fail(`${pkgManager} install failed`);\n return { ok: false, errorOutput: String(err) };\n }\n}\n\n/**\n * Install AI agent skills by copying bundled skill files.\n * Writes to both .claude/skills/ and .agents/skills/ for broad agent compatibility.\n * When scope is \"global\", installs to the user's home directory instead of the project.\n */\nexport async function installAgentSkills(\n projectDir: string,\n scope: SkillsInstallScope = \"global\",\n): Promise<boolean> {\n try {\n const __dirname = path.dirname(fileURLToPath(import.meta.url));\n const skillsSource = path.join(__dirname, \"skills\");\n const skills = await readdir(skillsSource);\n\n const destRoot = scope === \"global\" ? os.homedir() : projectDir;\n\n for (const destBase of [\".claude/skills\", \".agents/skills\"]) {\n await mkdir(path.join(destRoot, destBase), { recursive: true });\n for (const skill of skills) {\n await cp(path.join(skillsSource, skill), path.join(destRoot, destBase, skill), {\n recursive: true,\n });\n }\n }\n\n return true;\n } catch (_error) {\n return false;\n }\n}\n\n/**\n * Get the appropriate start command for the package manager.\n */\nexport function getStartCommand(pkgManager: PackageManager): string {\n return pkgManager === \"npm\" ? \"npm start\" : `${pkgManager} start`;\n}\n"],"mappings":";;;;;;;;;;;;AAeA,SAAgB,oBAAoC;CAClD,MAAM,YAAY,QAAQ,IAAI;AAE9B,KAAI,WAAW;AACb,MAAI,UAAU,WAAW,OAAO,CAAE,QAAO;AACzC,MAAI,UAAU,WAAW,OAAO,CAAE,QAAO;AACzC,MAAI,UAAU,WAAW,MAAM,CAAE,QAAO;;AAG1C,QAAO;;;;;;;AAQT,eAAsB,oBACpB,YACgD;CAChD,MAAM,aAAa,mBAAmB;CACtC,MAAM,UAAU,IAAI,gCAAgC,WAAW,GAAG,CAAC,OAAO;AAE1E,KAAI;EACF,MAAM,SAAS,MAAM,MAAM,YAAY,CAAC,UAAU,EAAE;GAClD,KAAK;GACL,KAAK;GACL,QAAQ;GACT,CAAC;AAEF,MAAI,OAAO,aAAa,GAAG;AACzB,WAAQ,KAAK,GAAG,WAAW,iBAAiB;AAC5C,UAAO;IAAE,IAAI;IAAO,aAAa,OAAO;IAAK;;AAG/C,UAAQ,QAAQ,GAAG,WAAW,UAAU;AACxC,SAAO,EAAE,IAAI,MAAM;UACZ,KAAK;AACZ,UAAQ,KAAK,GAAG,WAAW,iBAAiB;AAC5C,SAAO;GAAE,IAAI;GAAO,aAAa,OAAO,IAAI;GAAE;;;;;;;;AASlD,eAAsB,mBACpB,YACA,QAA4B,UACV;AAClB,KAAI;EACF,MAAM,YAAY,KAAK,QAAQ,cAAc,OAAO,KAAK,IAAI,CAAC;EAC9D,MAAM,eAAe,KAAK,KAAK,WAAW,SAAS;EACnD,MAAM,SAAS,MAAM,QAAQ,aAAa;EAE1C,MAAM,WAAW,UAAU,WAAW,GAAG,SAAS,GAAG;AAErD,OAAK,MAAM,YAAY,CAAC,kBAAkB,iBAAiB,EAAE;AAC3D,SAAM,MAAM,KAAK,KAAK,UAAU,SAAS,EAAE,EAAE,WAAW,MAAM,CAAC;AAC/D,QAAK,MAAM,SAAS,OAClB,OAAM,GAAG,KAAK,KAAK,cAAc,MAAM,EAAE,KAAK,KAAK,UAAU,UAAU,MAAM,EAAE,EAC7E,WAAW,MACZ,CAAC;;AAIN,SAAO;UACA,QAAQ;AACf,SAAO;;;;;;AAOX,SAAgB,gBAAgB,YAAoC;AAClE,QAAO,eAAe,QAAQ,cAAc,GAAG,WAAW"}
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../src/utils.ts"],"mappings":";;;;;;;;;;;AAeA,SAAgB,oBAAoC;CAClD,MAAM,YAAY,QAAQ,IAAI;AAE9B,KAAI,WAAW;AACb,MAAI,UAAU,WAAW,OAAO,CAAE,QAAO;AACzC,MAAI,UAAU,WAAW,OAAO,CAAE,QAAO;AACzC,MAAI,UAAU,WAAW,MAAM,CAAE,QAAO;;AAG1C,QAAO;;;;;;;AAQT,eAAsB,oBACpB,YACgD;CAChD,MAAM,aAAa,mBAAmB;CACtC,MAAM,UAAU,IAAI,gCAAgC,WAAW,GAAG,CAAC,OAAO;AAE1E,KAAI;EACF,MAAM,SAAS,MAAM,MAAM,YAAY,CAAC,UAAU,EAAE;GAClD,KAAK;GACL,KAAK;GACL,QAAQ;GACT,CAAC;AAEF,MAAI,OAAO,aAAa,GAAG;AACzB,WAAQ,KAAK,GAAG,WAAW,iBAAiB;AAC5C,UAAO;IAAE,IAAI;IAAO,aAAa,OAAO;IAAK;;AAG/C,UAAQ,QAAQ,GAAG,WAAW,UAAU;AACxC,SAAO,EAAE,IAAI,MAAM;UACZ,KAAK;AACZ,UAAQ,KAAK,GAAG,WAAW,iBAAiB;AAC5C,SAAO;GAAE,IAAI;GAAO,aAAa,OAAO,IAAI;GAAE;;;;;;;;AASlD,eAAsB,mBACpB,YACA,QAA4B,UACV;AAClB,KAAI;EACF,MAAM,YAAY,KAAK,QAAQ,cAAc,OAAO,KAAK,IAAI,CAAC;EAC9D,MAAM,eAAe,KAAK,KAAK,WAAW,SAAS;EACnD,MAAM,SAAS,MAAM,QAAQ,aAAa;EAE1C,MAAM,WAAW,UAAU,WAAW,GAAG,SAAS,GAAG;AAErD,OAAK,MAAM,YAAY,CAAC,kBAAkB,iBAAiB,EAAE;AAC3D,SAAM,MAAM,KAAK,KAAK,UAAU,SAAS,EAAE,EAAE,WAAW,MAAM,CAAC;AAC/D,QAAK,MAAM,SAAS,OAClB,OAAM,GAAG,KAAK,KAAK,cAAc,MAAM,EAAE,KAAK,KAAK,UAAU,UAAU,MAAM,EAAE,EAC7E,WAAW,MACZ,CAAC;;AAIN,SAAO;UACA,QAAQ;AACf,SAAO;;;;;;AAOX,SAAgB,gBAAgB,YAAoC;AAClE,QAAO,eAAe,QAAQ,cAAc,GAAG,WAAW"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@editframe/create",
3
- "version": "0.47.1",
3
+ "version": "0.48.0",
4
4
  "description": "",
5
5
  "bin": {
6
6
  "create-editframe": "dist/index.js"
@@ -45,7 +45,5 @@
45
45
  },
46
46
  "./package.json": "./package.json"
47
47
  }
48
- },
49
- "main": "./dist/index.js",
50
- "module": "./dist/index.js"
48
+ }
51
49
  }
File without changes
@@ -1,2 +0,0 @@
1
- import "@editframe/elements";
2
- import "@editframe/elements/styles.css";
@@ -1,8 +0,0 @@
1
- @tailwind base;
2
- @tailwind components;
3
- @tailwind utilities;
4
-
5
- body > ef-workbench {
6
- width: 100vw !important;
7
- height: 100vh !important;
8
- }
@@ -1,23 +0,0 @@
1
- import React from "react";
2
- import { Timegroup, Text } from "@editframe/react";
3
-
4
- export const Video = () => {
5
- return (
6
- <Timegroup
7
- workbench
8
- className="w-[1920px] h-[1080px] bg-black flex items-center justify-center relative overflow-hidden"
9
- mode="sequence"
10
- >
11
- {/* Add your composition here */}
12
- <Timegroup
13
- mode="fixed"
14
- duration="5s"
15
- className="absolute w-full h-full flex items-center justify-center"
16
- >
17
- <Text duration="5s" className="text-white text-4xl">
18
- Your video starts here
19
- </Text>
20
- </Timegroup>
21
- </Timegroup>
22
- );
23
- };
File without changes
@@ -1,12 +0,0 @@
1
- import React from "react";
2
- import ReactDOM from "react-dom/client";
3
- import { TimelineRoot } from "@editframe/react";
4
- import { Video } from "./Video";
5
- import "@editframe/elements/styles.css";
6
-
7
- const root = document.getElementById("root");
8
- if (!root) {
9
- throw new Error("Root element not found");
10
- }
11
-
12
- ReactDOM.createRoot(root).render(<TimelineRoot id="root" component={Video} />);
@@ -1,3 +0,0 @@
1
- @tailwind base;
2
- @tailwind components;
3
- @tailwind utilities;