@vfrey/vfrey 0.0.1 → 1.0.0-beta.1

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 (610) hide show
  1. package/LICENSE +33 -0
  2. package/README.md +78 -3
  3. package/accounts.example.json +61 -0
  4. package/accounts.first-run.json +41 -0
  5. package/bin/vfrey.mjs +36 -0
  6. package/integration-tools/README.md +43 -0
  7. package/integration-tools/image/pillow.md +32 -0
  8. package/integration-tools/image/playwright.md +33 -0
  9. package/integration-tools/image/resvg.md +36 -0
  10. package/integration-tools/image/satori.md +36 -0
  11. package/integration-tools/image/sharp.md +38 -0
  12. package/integration-tools/video/blender.md +34 -0
  13. package/integration-tools/video/ffmpeg.md +41 -0
  14. package/integration-tools/video/manim.md +37 -0
  15. package/integration-tools/video/motion-canvas.md +37 -0
  16. package/integration-tools/video/remotion.md +50 -0
  17. package/integration-tools/video/revideo.md +32 -0
  18. package/package.json +74 -6
  19. package/skills/vfrey-orchestrator/SKILL.md +15 -0
  20. package/skills/vfrey-orchestrator/channel-video/SKILL.md +41 -0
  21. package/skills/vfrey-product/SKILL.md +63 -0
  22. package/skills/vfrey-product/examples/concurrency-vs-parallelism/framey/cook-one.svg +14 -0
  23. package/skills/vfrey-product/examples/concurrency-vs-parallelism/framey/cook-two.svg +22 -0
  24. package/skills/vfrey-product/examples/concurrency-vs-parallelism/framey/index.html +70 -0
  25. package/skills/vfrey-product/examples/concurrency-vs-parallelism/remotion/cook-one.svg +14 -0
  26. package/skills/vfrey-product/examples/concurrency-vs-parallelism/remotion/cook-two.svg +22 -0
  27. package/skills/vfrey-product/examples/concurrency-vs-parallelism/remotion/index.tsx +49 -0
  28. package/skills/vfrey-product/examples/concurrency-vs-parallelism/script.json +15 -0
  29. package/skills/vfrey-product/examples/octopus-facts/index.html +60 -0
  30. package/skills/vfrey-product/examples/octopus-facts/octopus.svg +8 -0
  31. package/skills/vfrey-product/examples/octopus-facts/script.json +14 -0
  32. package/skills/vfrey-product/push/SKILL.md +15 -0
  33. package/skills/vfrey-product/scenes/NOTICE +5 -0
  34. package/skills/vfrey-product/scenes/blocks.md +57 -0
  35. package/skills/vfrey-product/scenes/craft.md +118 -0
  36. package/skills/vfrey-product/scenes/motion.md +88 -0
  37. package/src/analytics/dashboard.ts +109 -0
  38. package/src/analytics/index.ts +260 -0
  39. package/src/api/client.ts +361 -0
  40. package/src/api/cloud-files.ts +197 -0
  41. package/src/api/cloud-runs.ts +75 -0
  42. package/src/api/cloud.ts +413 -0
  43. package/src/api/commands.ts +330 -0
  44. package/src/api/config.ts +34 -0
  45. package/src/api/creators.ts +463 -0
  46. package/src/api/credentials.ts +152 -0
  47. package/src/api/mail.ts +333 -0
  48. package/src/api/topics.ts +207 -0
  49. package/src/api/types.ts +273 -0
  50. package/src/cli.ts +468 -0
  51. package/src/cloud/bundle.ts +70 -0
  52. package/src/cloud/cloudrun-executor.ts +237 -0
  53. package/src/cloud/executor.ts +281 -0
  54. package/src/cloud/gcs-sign.ts +76 -0
  55. package/src/cloud/job.ts +106 -0
  56. package/src/cloud/remote-job.ts +67 -0
  57. package/src/cloud/render-job.ts +191 -0
  58. package/src/config.ts +309 -0
  59. package/src/dashboard-link.ts +180 -0
  60. package/src/dashboard-start.ts +103 -0
  61. package/src/desk/channel.ts +64 -0
  62. package/src/desk/cli.ts +216 -0
  63. package/src/desk/creators-route.ts +129 -0
  64. package/src/desk/fonts/JetBrainsMono-OFL.txt +93 -0
  65. package/src/desk/fonts/google-sans-flex-latin.woff2 +0 -0
  66. package/src/desk/fonts/jetbrains-mono-medium.woff2 +0 -0
  67. package/src/desk/http.ts +460 -0
  68. package/src/desk/mail-route.ts +103 -0
  69. package/src/desk/overlay.ts +112 -0
  70. package/src/desk/preview.ts +422 -0
  71. package/src/desk/screens.ts +149 -0
  72. package/src/desk/secrets.ts +143 -0
  73. package/src/desk/series.ts +127 -0
  74. package/src/desk/state.ts +77 -0
  75. package/src/desk/studio-route.ts +119 -0
  76. package/src/desk/tick-runner.ts +66 -0
  77. package/src/desk/tick.ts +56 -0
  78. package/src/desk/topics-route.ts +41 -0
  79. package/src/desk/ui/app.css +505 -0
  80. package/src/desk/ui/app.js +185 -0
  81. package/src/desk/ui/apple-icon.png +0 -0
  82. package/src/desk/ui/components.js +79 -0
  83. package/src/desk/ui/core.js +156 -0
  84. package/src/desk/ui/favicon.ico +0 -0
  85. package/src/desk/ui/icon.svg +1 -0
  86. package/src/desk/ui/icons.js +49 -0
  87. package/src/desk/ui/index.html +41 -0
  88. package/src/desk/ui/metrics-math.d.ts +22 -0
  89. package/src/desk/ui/metrics-math.js +135 -0
  90. package/src/desk/ui/theme.js +5 -0
  91. package/src/desk/ui/views-creators.js +209 -0
  92. package/src/desk/ui/views-keys.js +114 -0
  93. package/src/desk/ui/views-mail.js +188 -0
  94. package/src/desk/ui/views-misc.js +123 -0
  95. package/src/desk/ui/views-review.js +119 -0
  96. package/src/desk/ui/views-runs.js +350 -0
  97. package/src/desk/ui/views-screens.js +163 -0
  98. package/src/desk/ui/views-series.js +318 -0
  99. package/src/desk/ui/views-topics.js +87 -0
  100. package/src/desk/verbs.ts +361 -0
  101. package/src/doctor.ts +212 -0
  102. package/src/drain.ts +14 -0
  103. package/src/engage/index.ts +217 -0
  104. package/src/generate/index.ts +110 -0
  105. package/src/generate/script.ts +152 -0
  106. package/src/generate/title.ts +78 -0
  107. package/src/help.ts +252 -0
  108. package/src/home.ts +45 -0
  109. package/src/llm/client.ts +177 -0
  110. package/src/log.ts +7 -0
  111. package/src/oauth/tokens.ts +189 -0
  112. package/src/oauth/vault.ts +72 -0
  113. package/src/pipeline/review.ts +642 -0
  114. package/src/pipeline/run.ts +443 -0
  115. package/src/pipeline/series-guard.ts +26 -0
  116. package/src/pipeline/source-fetch.ts +69 -0
  117. package/src/pipeline/stages.ts +728 -0
  118. package/src/pipeline/topics-source.ts +90 -0
  119. package/src/product/commands.ts +296 -0
  120. package/src/product/config-file.ts +38 -0
  121. package/src/product/engine-choice.ts +89 -0
  122. package/src/product/engines.ts +103 -0
  123. package/src/product/insights.ts +50 -0
  124. package/src/product/keys.ts +67 -0
  125. package/src/product/paths.ts +18 -0
  126. package/src/product/probes.ts +88 -0
  127. package/src/product/push-flow.ts +90 -0
  128. package/src/product/render-video.ts +21 -0
  129. package/src/product/short.ts +62 -0
  130. package/src/product/update.ts +32 -0
  131. package/src/project/canonical.ts +14 -0
  132. package/src/project/commands.ts +177 -0
  133. package/src/project/dashboard-status.ts +28 -0
  134. package/src/project/discover.ts +19 -0
  135. package/src/project/index-file.ts +73 -0
  136. package/src/project/marker.ts +92 -0
  137. package/src/project/migrate.ts +201 -0
  138. package/src/project/names.ts +27 -0
  139. package/src/project/notice.ts +16 -0
  140. package/src/project/open.ts +88 -0
  141. package/src/project/scaffold.ts +112 -0
  142. package/src/project/templates.ts +42 -0
  143. package/src/project/videos.ts +64 -0
  144. package/src/publish/facebook.ts +91 -0
  145. package/src/publish/index.ts +12 -0
  146. package/src/publish/instagram.ts +97 -0
  147. package/src/publish/rate.ts +62 -0
  148. package/src/publish/session.ts +242 -0
  149. package/src/publish/tiktok.ts +202 -0
  150. package/src/publish/youtube.ts +177 -0
  151. package/src/queue/desk-ops.ts +1170 -0
  152. package/src/queue/seal.ts +3 -0
  153. package/src/queue/store.ts +1006 -0
  154. package/src/remotion/AiLabel.tsx +26 -0
  155. package/src/remotion/Root.tsx +73 -0
  156. package/src/remotion/defaults.ts +26 -0
  157. package/src/remotion/films/claude/ClaudeFilm.tsx +1014 -0
  158. package/src/remotion/films/engine/EngineMark.tsx +17 -0
  159. package/src/remotion/films/rea/ReaShort.tsx +552 -0
  160. package/src/remotion/films/rea/drawings.tsx +907 -0
  161. package/src/remotion/films/rea/timing.ts +144 -0
  162. package/src/remotion/index.ts +4 -0
  163. package/src/remotion/templates/EditorialSplit.tsx +39 -0
  164. package/src/remotion/templates/KineticType.tsx +39 -0
  165. package/src/remotion/templates/SignalBoard.tsx +50 -0
  166. package/src/remotion/timing.ts +22 -0
  167. package/src/render/chrome.ts +78 -0
  168. package/src/render/engine-mark.ts +29 -0
  169. package/src/render/framey-template.ts +130 -0
  170. package/src/render/html-engine.ts +149 -0
  171. package/src/render/node-crypto-stub.ts +11 -0
  172. package/src/render/probe.ts +29 -0
  173. package/src/render/props.ts +17 -0
  174. package/src/render/vertical-short.ts +35 -0
  175. package/src/render/webpack.ts +33 -0
  176. package/src/render/worker.ts +65 -0
  177. package/src/scene/assets/fonts/TitanOne-OFL.txt +94 -0
  178. package/src/scene/assets/fonts/titan-one.woff2 +0 -0
  179. package/src/scene/assets/gsap/LICENSE.txt +8 -0
  180. package/src/scene/assets/gsap/gsap.min.js +11 -0
  181. package/src/scene/audio.ts +54 -0
  182. package/src/scene/blocks/LICENSE +190 -0
  183. package/src/scene/blocks/NOTICE +5 -0
  184. package/src/scene/blocks/bar-chart-race/bar-chart-race.html +585 -0
  185. package/src/scene/blocks/beat-freeze-cut/beat-freeze-cut.html +874 -0
  186. package/src/scene/blocks/camcorder-hud/camcorder-hud.html +164 -0
  187. package/src/scene/blocks/camera-dolly-zoom/camera-dolly-zoom.html +355 -0
  188. package/src/scene/blocks/code-diff/code-diff.html +817 -0
  189. package/src/scene/blocks/code-snippet-apple-terminal-pro/code-snippet-apple-terminal-pro.html +248 -0
  190. package/src/scene/blocks/code-typing/code-typing.html +764 -0
  191. package/src/scene/blocks/data-chart/data-chart.html +452 -0
  192. package/src/scene/blocks/flowchart-vertical/flowchart-vertical.html +454 -0
  193. package/src/scene/blocks/hw-scribble-transition/hw-scribble-transition.html +153 -0
  194. package/src/scene/blocks/index.json +824 -0
  195. package/src/scene/blocks/lt-accent-underline/lt-accent-underline.html +107 -0
  196. package/src/scene/blocks/lt-bold-block/lt-bold-block.html +109 -0
  197. package/src/scene/blocks/lt-clean-bar/lt-clean-bar.html +112 -0
  198. package/src/scene/blocks/lt-dark-card/lt-dark-card.html +111 -0
  199. package/src/scene/blocks/lt-kicker-name/lt-kicker-name.html +114 -0
  200. package/src/scene/blocks/lt-mask-reveal/lt-mask-reveal.html +120 -0
  201. package/src/scene/blocks/lt-neon-border/lt-neon-border.html +391 -0
  202. package/src/scene/blocks/lt-stack-bars/lt-stack-bars.html +109 -0
  203. package/src/scene/blocks/macos-notification/macos-notification.html +194 -0
  204. package/src/scene/blocks/mk-background/mk-background.html +236 -0
  205. package/src/scene/blocks/mk-callout-highlight/mk-callout-highlight.html +183 -0
  206. package/src/scene/blocks/mk-clone-wall-transition/mk-clone-wall-transition.html +226 -0
  207. package/src/scene/blocks/mk-line-graph/mk-line-graph.html +293 -0
  208. package/src/scene/blocks/mk-progress-stat/mk-progress-stat.html +186 -0
  209. package/src/scene/blocks/mk-specs-list/mk-specs-list.html +223 -0
  210. package/src/scene/blocks/news-ticker/news-ticker.html +409 -0
  211. package/src/scene/blocks/organic-light-leak-overlay/organic-light-leak-overlay.html +126 -0
  212. package/src/scene/blocks/oscilloscope-trace/oscilloscope-trace.html +519 -0
  213. package/src/scene/blocks/snow/snow.html +205 -0
  214. package/src/scene/blocks/split-flap-board/split-flap-board.html +347 -0
  215. package/src/scene/blocks/spotify-card/spotify-card.html +294 -0
  216. package/src/scene/blocks/starfield/starfield.html +188 -0
  217. package/src/scene/blocks/thread-message-stack/thread-message-stack.html +239 -0
  218. package/src/scene/blocks/week-in-merges/week-in-merges.html +470 -0
  219. package/src/scene/blocks/x-post/x-post.html +437 -0
  220. package/src/scene/blocks/yt-comment-card/yt-comment-card.html +319 -0
  221. package/src/scene/blocks/yt-lcd-background/yt-lcd-background.html +307 -0
  222. package/src/scene/blocks/yt-prism-title/yt-prism-title.html +205 -0
  223. package/src/scene/blocks.ts +229 -0
  224. package/src/scene/command.ts +272 -0
  225. package/src/scene/figure.ts +181 -0
  226. package/src/scene/glyphs.ts +107 -0
  227. package/src/scene/init.ts +86 -0
  228. package/src/scene/inspect/css-tree.d.ts +6 -0
  229. package/src/scene/inspect/page-scripts.ts +272 -0
  230. package/src/scene/inspect/report.ts +405 -0
  231. package/src/scene/inspect/run.ts +200 -0
  232. package/src/scene/inspect/source.ts +236 -0
  233. package/src/scene/label.ts +131 -0
  234. package/src/scene/net-guard.ts +74 -0
  235. package/src/scene/render.ts +292 -0
  236. package/src/scene/runtime/browser.ts +199 -0
  237. package/src/scene/runtime/core.ts +181 -0
  238. package/src/scene/runtime/react.tsx +115 -0
  239. package/src/scene/runtime/transitions.ts +133 -0
  240. package/src/scene/sanitize.ts +181 -0
  241. package/src/scene/scene.ts +152 -0
  242. package/src/scene/studio-command.ts +48 -0
  243. package/src/scene/studio-skin.ts +59 -0
  244. package/src/scene/studio.ts +337 -0
  245. package/src/scene/supply.ts +111 -0
  246. package/src/scene/timing.ts +288 -0
  247. package/src/scene/transitions/LICENSE +190 -0
  248. package/src/scene/transitions/NOTICE +5 -0
  249. package/src/scene/transitions/SOURCE.json +24 -0
  250. package/src/scene/transitions/transitions.global.js +38 -0
  251. package/src/scene/transitions.ts +26 -0
  252. package/src/service/all-projects.ts +153 -0
  253. package/src/service/commands.ts +256 -0
  254. package/src/service/due.ts +82 -0
  255. package/src/service/lock.ts +101 -0
  256. package/src/service/log-file.ts +56 -0
  257. package/src/service/state.ts +41 -0
  258. package/src/service/units.ts +90 -0
  259. package/src/service/worker.ts +51 -0
  260. package/src/skill-agents.ts +74 -0
  261. package/src/skill-install.ts +334 -0
  262. package/src/sync-write.ts +21 -0
  263. package/src/tick-report.ts +205 -0
  264. package/src/tts.ts +124 -0
  265. package/vendor/@vfrey/contracts/dist/account.d.ts +97 -0
  266. package/vendor/@vfrey/contracts/dist/account.js +27 -0
  267. package/vendor/@vfrey/contracts/dist/checks.d.ts +8 -0
  268. package/vendor/@vfrey/contracts/dist/checks.js +1 -0
  269. package/vendor/@vfrey/contracts/dist/credentials/crypto.d.ts +4 -0
  270. package/vendor/@vfrey/contracts/dist/credentials/crypto.js +38 -0
  271. package/vendor/@vfrey/contracts/dist/domain/advice-persona.d.ts +10 -0
  272. package/vendor/@vfrey/contracts/dist/domain/advice-persona.js +24 -0
  273. package/vendor/@vfrey/contracts/dist/domain/backoff.d.ts +13 -0
  274. package/vendor/@vfrey/contracts/dist/domain/backoff.js +27 -0
  275. package/vendor/@vfrey/contracts/dist/domain/cadence.d.ts +29 -0
  276. package/vendor/@vfrey/contracts/dist/domain/cadence.js +95 -0
  277. package/vendor/@vfrey/contracts/dist/domain/creators.d.ts +146 -0
  278. package/vendor/@vfrey/contracts/dist/domain/creators.js +2 -0
  279. package/vendor/@vfrey/contracts/dist/domain/disclosure.d.ts +127 -0
  280. package/vendor/@vfrey/contracts/dist/domain/disclosure.js +250 -0
  281. package/vendor/@vfrey/contracts/dist/domain/errors.d.ts +34 -0
  282. package/vendor/@vfrey/contracts/dist/domain/errors.js +68 -0
  283. package/vendor/@vfrey/contracts/dist/domain/redact.d.ts +1 -0
  284. package/vendor/@vfrey/contracts/dist/domain/redact.js +21 -0
  285. package/vendor/@vfrey/contracts/dist/domain/revenue.d.ts +13 -0
  286. package/vendor/@vfrey/contracts/dist/domain/revenue.js +16 -0
  287. package/vendor/@vfrey/contracts/dist/domain/safety.d.ts +20 -0
  288. package/vendor/@vfrey/contracts/dist/domain/safety.js +61 -0
  289. package/vendor/@vfrey/contracts/dist/domain/similarity.d.ts +13 -0
  290. package/vendor/@vfrey/contracts/dist/domain/similarity.js +100 -0
  291. package/vendor/@vfrey/contracts/dist/domain/templates.d.ts +18 -0
  292. package/vendor/@vfrey/contracts/dist/domain/templates.js +67 -0
  293. package/vendor/@vfrey/contracts/dist/domain/tiktok-chunks.d.ts +19 -0
  294. package/vendor/@vfrey/contracts/dist/domain/tiktok-chunks.js +52 -0
  295. package/vendor/@vfrey/contracts/dist/domain/topics.d.ts +78 -0
  296. package/vendor/@vfrey/contracts/dist/domain/topics.js +4 -0
  297. package/vendor/@vfrey/contracts/dist/domain/types.d.ts +216 -0
  298. package/vendor/@vfrey/contracts/dist/domain/types.js +1 -0
  299. package/vendor/@vfrey/contracts/dist/domain/variation.d.ts +57 -0
  300. package/vendor/@vfrey/contracts/dist/domain/variation.js +278 -0
  301. package/vendor/@vfrey/contracts/dist/events.d.ts +20 -0
  302. package/vendor/@vfrey/contracts/dist/events.js +1 -0
  303. package/vendor/@vfrey/contracts/dist/http.d.ts +11 -0
  304. package/vendor/@vfrey/contracts/dist/http.js +37 -0
  305. package/vendor/@vfrey/contracts/dist/index.d.ts +22 -0
  306. package/vendor/@vfrey/contracts/dist/index.js +22 -0
  307. package/vendor/@vfrey/contracts/dist/log.d.ts +2 -0
  308. package/vendor/@vfrey/contracts/dist/log.js +10 -0
  309. package/vendor/@vfrey/contracts/dist/mail.d.ts +55 -0
  310. package/vendor/@vfrey/contracts/dist/mail.js +1 -0
  311. package/vendor/@vfrey/contracts/package.json +18 -0
  312. package/vendor/@vfrey/ingest/dist/index.d.ts +41 -0
  313. package/vendor/@vfrey/ingest/dist/index.js +221 -0
  314. package/vendor/@vfrey/ingest/dist/parse.d.ts +5 -0
  315. package/vendor/@vfrey/ingest/dist/parse.js +165 -0
  316. package/vendor/@vfrey/ingest/package.json +21 -0
  317. package/vendor/framey/LICENSE +190 -0
  318. package/vendor/framey/NOTICE +15 -0
  319. package/vendor/framey/SOURCE.json +24 -0
  320. package/vendor/framey/STUDIO-SOURCE.json +9 -0
  321. package/vendor/framey/bin/framey-localize-fonts.mjs +12 -0
  322. package/vendor/framey/bin/framey.mjs +16 -0
  323. package/vendor/framey/dist/add-VMJD5KBS.js +75 -0
  324. package/vendor/framey/dist/animatedGifPrep-QPKGJ6PM.js +43 -0
  325. package/vendor/framey/dist/api.d.ts +211 -0
  326. package/vendor/framey/dist/api.js +76 -0
  327. package/vendor/framey/dist/appHistory-WW56FZTT.js +31 -0
  328. package/vendor/framey/dist/asset-WQKGOELE.js +26 -0
  329. package/vendor/framey/dist/audio-RSJWVWRA.js +1936 -0
  330. package/vendor/framey/dist/batchRender-3HPICDCT.js +366 -0
  331. package/vendor/framey/dist/beats-HL2BDUZI.js +273 -0
  332. package/vendor/framey/dist/benchmark-RWCWHI5Z.js +230 -0
  333. package/vendor/framey/dist/browser-ECYET3Q2.js +206 -0
  334. package/vendor/framey/dist/bundleWithLocalizedFonts-ALYBQEQT.js +52 -0
  335. package/vendor/framey/dist/captureCompositionFrame-4DA6SEH2.js +94 -0
  336. package/vendor/framey/dist/catalog-5JVDEUWK.js +979 -0
  337. package/vendor/framey/dist/catch-up-NEBCL5NO.js +106 -0
  338. package/vendor/framey/dist/check-F5N544ML.js +111 -0
  339. package/vendor/framey/dist/checkBrowser-LZ66CMJG.js +110 -0
  340. package/vendor/framey/dist/chunk-2K7Z2HVP.js +372 -0
  341. package/vendor/framey/dist/chunk-2UZQHDM7.js +323 -0
  342. package/vendor/framey/dist/chunk-2X4PQEYM.js +34 -0
  343. package/vendor/framey/dist/chunk-3422KMTD.js +168 -0
  344. package/vendor/framey/dist/chunk-3FYD4YEK.js +72 -0
  345. package/vendor/framey/dist/chunk-3GXQPCJC.js +682 -0
  346. package/vendor/framey/dist/chunk-3LM6YPBR.js +179 -0
  347. package/vendor/framey/dist/chunk-442JNXRM.js +20 -0
  348. package/vendor/framey/dist/chunk-4BNN5FGX.js +182 -0
  349. package/vendor/framey/dist/chunk-4P7NX5BM.js +11532 -0
  350. package/vendor/framey/dist/chunk-4UMPIPCQ.js +88 -0
  351. package/vendor/framey/dist/chunk-4YYJOFKS.js +28 -0
  352. package/vendor/framey/dist/chunk-54HJ63Q2.js +29 -0
  353. package/vendor/framey/dist/chunk-5ETJX6WM.js +89 -0
  354. package/vendor/framey/dist/chunk-5SG54JRS.js +68 -0
  355. package/vendor/framey/dist/chunk-634HSJ3J.js +58 -0
  356. package/vendor/framey/dist/chunk-66LREXGS.js +48 -0
  357. package/vendor/framey/dist/chunk-6BEFEWFB.js +25 -0
  358. package/vendor/framey/dist/chunk-6BNTGNGD.js +286 -0
  359. package/vendor/framey/dist/chunk-6DDPOHMK.js +140 -0
  360. package/vendor/framey/dist/chunk-6GV5XSOR.js +214 -0
  361. package/vendor/framey/dist/chunk-6JR2XUEE.js +127 -0
  362. package/vendor/framey/dist/chunk-73QVATIM.js +362 -0
  363. package/vendor/framey/dist/chunk-7FMUTGOH.js +279 -0
  364. package/vendor/framey/dist/chunk-7JQFJ6JJ.js +291 -0
  365. package/vendor/framey/dist/chunk-AHPGAESX.js +113 -0
  366. package/vendor/framey/dist/chunk-AHX34EFP.js +15 -0
  367. package/vendor/framey/dist/chunk-AJ5CSAEZ.js +487 -0
  368. package/vendor/framey/dist/chunk-B7RJV74O.js +5047 -0
  369. package/vendor/framey/dist/chunk-BL4U6U52.js +254 -0
  370. package/vendor/framey/dist/chunk-BSQ7XANM.js +210 -0
  371. package/vendor/framey/dist/chunk-BZ56MTDX.js +6 -0
  372. package/vendor/framey/dist/chunk-C5BO7PMT.js +282 -0
  373. package/vendor/framey/dist/chunk-CFUCHO4T.js +358 -0
  374. package/vendor/framey/dist/chunk-CZGHFATT.js +31 -0
  375. package/vendor/framey/dist/chunk-DLA44CMS.js +5649 -0
  376. package/vendor/framey/dist/chunk-DPVXBVLL.js +31292 -0
  377. package/vendor/framey/dist/chunk-DQBY7FRR.js +397 -0
  378. package/vendor/framey/dist/chunk-EAMLBAHA.js +154 -0
  379. package/vendor/framey/dist/chunk-EOVYQ3IG.js +143 -0
  380. package/vendor/framey/dist/chunk-EVMY7IPL.js +612 -0
  381. package/vendor/framey/dist/chunk-FG4BBFZI.js +122 -0
  382. package/vendor/framey/dist/chunk-FI4I7CME.js +56 -0
  383. package/vendor/framey/dist/chunk-FLREUEHW.js +2081 -0
  384. package/vendor/framey/dist/chunk-FUFP7A7S.js +1126 -0
  385. package/vendor/framey/dist/chunk-FV3PIKGH.js +56 -0
  386. package/vendor/framey/dist/chunk-FXMKHHPO.js +123 -0
  387. package/vendor/framey/dist/chunk-GGZAM5VH.js +1187 -0
  388. package/vendor/framey/dist/chunk-GKZEVJIB.js +39 -0
  389. package/vendor/framey/dist/chunk-GMECXFAN.js +57 -0
  390. package/vendor/framey/dist/chunk-GNEFDLFB.js +621 -0
  391. package/vendor/framey/dist/chunk-GPMLSOEG.js +19274 -0
  392. package/vendor/framey/dist/chunk-GPYVT5EE.js +59 -0
  393. package/vendor/framey/dist/chunk-H6IEMZEV.js +40 -0
  394. package/vendor/framey/dist/chunk-HEFQCIXR.js +170 -0
  395. package/vendor/framey/dist/chunk-HFQ4CWHA.js +118 -0
  396. package/vendor/framey/dist/chunk-HPDTCOKE.js +304 -0
  397. package/vendor/framey/dist/chunk-HTUHQKDB.js +548 -0
  398. package/vendor/framey/dist/chunk-HU2SPFNG.js +103 -0
  399. package/vendor/framey/dist/chunk-HVW7ABXD.js +19 -0
  400. package/vendor/framey/dist/chunk-IG7NDKXO.js +26 -0
  401. package/vendor/framey/dist/chunk-II3J3WXK.js +246 -0
  402. package/vendor/framey/dist/chunk-IR35BCLK.js +13 -0
  403. package/vendor/framey/dist/chunk-ISN5GRYI.js +20 -0
  404. package/vendor/framey/dist/chunk-IUONB55J.js +669 -0
  405. package/vendor/framey/dist/chunk-IVSUQR2B.js +161 -0
  406. package/vendor/framey/dist/chunk-IXU6PQSW.js +259 -0
  407. package/vendor/framey/dist/chunk-IZCW2NKT.js +29 -0
  408. package/vendor/framey/dist/chunk-JGXJU5PF.js +68 -0
  409. package/vendor/framey/dist/chunk-JHOCK3DG.js +27 -0
  410. package/vendor/framey/dist/chunk-JVBRJMOP.js +121 -0
  411. package/vendor/framey/dist/chunk-K4MJX7SR.js +17 -0
  412. package/vendor/framey/dist/chunk-K4WKGXRC.js +18 -0
  413. package/vendor/framey/dist/chunk-KGPLIH7B.js +127 -0
  414. package/vendor/framey/dist/chunk-KLIKCX6Q.js +63 -0
  415. package/vendor/framey/dist/chunk-KXTKKBOC.js +61 -0
  416. package/vendor/framey/dist/chunk-KZI44OPA.js +185 -0
  417. package/vendor/framey/dist/chunk-LEKZNRKI.js +45 -0
  418. package/vendor/framey/dist/chunk-LFGJWOVA.js +61 -0
  419. package/vendor/framey/dist/chunk-LLMSX6V6.js +17 -0
  420. package/vendor/framey/dist/chunk-LTGTN2TH.js +195 -0
  421. package/vendor/framey/dist/chunk-M2WBOQ2Q.js +54 -0
  422. package/vendor/framey/dist/chunk-MI5FTLYK.js +399 -0
  423. package/vendor/framey/dist/chunk-MLQP2QUF.js +1809 -0
  424. package/vendor/framey/dist/chunk-MMQ52NIZ.js +956 -0
  425. package/vendor/framey/dist/chunk-ND46XKK3.js +742 -0
  426. package/vendor/framey/dist/chunk-NYEXNSHM.js +504 -0
  427. package/vendor/framey/dist/chunk-O4YRB27L.js +57 -0
  428. package/vendor/framey/dist/chunk-O7BGSQ5F.js +92 -0
  429. package/vendor/framey/dist/chunk-OFQWTKPW.js +117 -0
  430. package/vendor/framey/dist/chunk-P5ZBLXJ6.js +91 -0
  431. package/vendor/framey/dist/chunk-P6LJ4Y32.js +4662 -0
  432. package/vendor/framey/dist/chunk-PKZ7RK5N.js +281 -0
  433. package/vendor/framey/dist/chunk-PURHAXFL.js +15 -0
  434. package/vendor/framey/dist/chunk-Q5X2B5WT.js +29 -0
  435. package/vendor/framey/dist/chunk-QAMKOG67.js +248 -0
  436. package/vendor/framey/dist/chunk-R6YBK4XX.js +514 -0
  437. package/vendor/framey/dist/chunk-RGLQURIX.js +2997 -0
  438. package/vendor/framey/dist/chunk-RNV3DM4S.js +3573 -0
  439. package/vendor/framey/dist/chunk-ROEW726S.js +4638 -0
  440. package/vendor/framey/dist/chunk-RQVDTPGD.js +6 -0
  441. package/vendor/framey/dist/chunk-RVZHGOGR.js +26 -0
  442. package/vendor/framey/dist/chunk-RXATE6FZ.js +385 -0
  443. package/vendor/framey/dist/chunk-S3S4TGEH.js +424 -0
  444. package/vendor/framey/dist/chunk-SDYDNHEE.js +11202 -0
  445. package/vendor/framey/dist/chunk-SSWBU67I.js +173 -0
  446. package/vendor/framey/dist/chunk-ST35C4K6.js +28 -0
  447. package/vendor/framey/dist/chunk-SZNTYTIV.js +990 -0
  448. package/vendor/framey/dist/chunk-T2EUWCJE.js +29 -0
  449. package/vendor/framey/dist/chunk-T6AGUTZJ.js +444 -0
  450. package/vendor/framey/dist/chunk-THJALHFJ.js +11131 -0
  451. package/vendor/framey/dist/chunk-TIQB63MX.js +18128 -0
  452. package/vendor/framey/dist/chunk-U242RTCT.js +134 -0
  453. package/vendor/framey/dist/chunk-UJZREAV6.js +3901 -0
  454. package/vendor/framey/dist/chunk-UMD3V7CU.js +264 -0
  455. package/vendor/framey/dist/chunk-UOFAE5RF.js +42 -0
  456. package/vendor/framey/dist/chunk-UTEIUGAZ.js +29 -0
  457. package/vendor/framey/dist/chunk-VAS6HQX3.js +138 -0
  458. package/vendor/framey/dist/chunk-VC76R6W2.js +27 -0
  459. package/vendor/framey/dist/chunk-VFZ7W5W7.js +226 -0
  460. package/vendor/framey/dist/chunk-VHNLZAE2.js +348 -0
  461. package/vendor/framey/dist/chunk-VMC4WSH5.js +278 -0
  462. package/vendor/framey/dist/chunk-VORQIH64.js +108 -0
  463. package/vendor/framey/dist/chunk-VTXFRIHO.js +186 -0
  464. package/vendor/framey/dist/chunk-W2LGJSEN.js +182 -0
  465. package/vendor/framey/dist/chunk-WKBM7NDG.js +32 -0
  466. package/vendor/framey/dist/chunk-WMQNIQDJ.js +2057 -0
  467. package/vendor/framey/dist/chunk-WN4XZC5F.js +504 -0
  468. package/vendor/framey/dist/chunk-WQ6ZXHFQ.js +133 -0
  469. package/vendor/framey/dist/chunk-X7HBSTCZ.js +53 -0
  470. package/vendor/framey/dist/chunk-X7MTZ4T2.js +6 -0
  471. package/vendor/framey/dist/chunk-XPTOJZJF.js +308 -0
  472. package/vendor/framey/dist/chunk-XT6MXC7A.js +6 -0
  473. package/vendor/framey/dist/chunk-XT7X6QCP.js +6 -0
  474. package/vendor/framey/dist/chunk-XTMDWNEC.js +2820 -0
  475. package/vendor/framey/dist/chunk-XUHOIDKG.js +6 -0
  476. package/vendor/framey/dist/chunk-XX7LTW5Y.js +138 -0
  477. package/vendor/framey/dist/chunk-Y3YGTZEG.js +382 -0
  478. package/vendor/framey/dist/chunk-Y5SBSGN7.js +346 -0
  479. package/vendor/framey/dist/chunk-YCMVI4MZ.js +625 -0
  480. package/vendor/framey/dist/chunk-YOR4CTCE.js +261 -0
  481. package/vendor/framey/dist/chunk-YPRBGITP.js +2748 -0
  482. package/vendor/framey/dist/chunk-ZKDMAOFU.js +32 -0
  483. package/vendor/framey/dist/chunk-ZW6DURPF.js +1318 -0
  484. package/vendor/framey/dist/clean-ZJOGDKDM.js +336 -0
  485. package/vendor/framey/dist/cli.js +439 -0
  486. package/vendor/framey/dist/cloudrun-HGJ3B6ZV.js +767 -0
  487. package/vendor/framey/dist/commands/contrast-audit.browser.js +643 -0
  488. package/vendor/framey/dist/commands/layout-audit.browser.js +2914 -0
  489. package/vendor/framey/dist/commands/motion-sample.browser.js +74 -0
  490. package/vendor/framey/dist/commands/motion-signature.browser.js +475 -0
  491. package/vendor/framey/dist/compare-W7UY3BAZ.js +463 -0
  492. package/vendor/framey/dist/compiler-TM3W6GYF.js +136 -0
  493. package/vendor/framey/dist/component-QF5VGYMU.js +176 -0
  494. package/vendor/framey/dist/compositions-XT3PMNDF.js +238 -0
  495. package/vendor/framey/dist/contactSheet-7W6GYHBQ.js +24 -0
  496. package/vendor/framey/dist/deploy-6FJPWKF2.js +299 -0
  497. package/vendor/framey/dist/destroy-HE2RIPKZ.js +57 -0
  498. package/vendor/framey/dist/deterministicFonts-RADD3BSX.js +50 -0
  499. package/vendor/framey/dist/dist-4S2FGGVY.js +422 -0
  500. package/vendor/framey/dist/dist-BE4B2EZE.js +32 -0
  501. package/vendor/framey/dist/dist-EWXJGN63.js +129 -0
  502. package/vendor/framey/dist/docs-VKIRFEEX.js +131 -0
  503. package/vendor/framey/dist/doctor-2UNJ2G7U.js +74 -0
  504. package/vendor/framey/dist/dom-37K6YOH4.js +14 -0
  505. package/vendor/framey/dist/dotEnv-7PZQTVIM.js +54 -0
  506. package/vendor/framey/dist/events-ACY3P2PA.js +76 -0
  507. package/vendor/framey/dist/events-IHB3B2MK.js +69 -0
  508. package/vendor/framey/dist/ffmpeg-DR5LGGSK.js +63 -0
  509. package/vendor/framey/dist/figma-BODVUPHB.js +63 -0
  510. package/vendor/framey/dist/fontData.generated-NXAOI4GH.js +13 -0
  511. package/vendor/framey/dist/fontLocalizeCli.js +142 -0
  512. package/vendor/framey/dist/gpuPolicy-XLEXORZY.js +49 -0
  513. package/vendor/framey/dist/grade-compare-GAXFQ74C.js +661 -0
  514. package/vendor/framey/dist/gsapParser-IEUSLYDJ.js +2885 -0
  515. package/vendor/framey/dist/gsapParserAcorn-LZJKCFQI.js +30 -0
  516. package/vendor/framey/dist/help-VCB5X2HS.js +184 -0
  517. package/vendor/framey/dist/history-ENGZEVFT.js +471 -0
  518. package/vendor/framey/dist/hyperframe.manifest.json +22 -0
  519. package/vendor/framey/dist/hyperframe.runtime.iife.js +1132 -0
  520. package/vendor/framey/dist/hyperframes-player.global.js +478 -0
  521. package/vendor/framey/dist/hyperframes-slideshow.global.js +148 -0
  522. package/vendor/framey/dist/info-WPCJHBMU.js +182 -0
  523. package/vendor/framey/dist/init-G4WGLYGD.js +1176 -0
  524. package/vendor/framey/dist/inspect-5IQ6CNEQ.js +106 -0
  525. package/vendor/framey/dist/installer-ML4HWUV7.js +40 -0
  526. package/vendor/framey/dist/keyframes-Q6XJO7VW.js +2755 -0
  527. package/vendor/framey/dist/lambda-A7JC74JF.js +468 -0
  528. package/vendor/framey/dist/layout-YET6XNXA.js +95 -0
  529. package/vendor/framey/dist/lint-I7FZN2VJ.js +162 -0
  530. package/vendor/framey/dist/lintProject-PDB3UN72.js +30 -0
  531. package/vendor/framey/dist/manager-CD6LJ7ZN.js +45 -0
  532. package/vendor/framey/dist/manager-WA4F2GST.js +67 -0
  533. package/vendor/framey/dist/media-treatment-BXYS4WVA.js +1030 -0
  534. package/vendor/framey/dist/media-use-LWH3MANK.js +113 -0
  535. package/vendor/framey/dist/models-K363FYM4.js +195 -0
  536. package/vendor/framey/dist/motionShot-GPAVWXLH.js +640 -0
  537. package/vendor/framey/dist/normalize-FASIPBUM.js +24 -0
  538. package/vendor/framey/dist/normalize-audio-VDWYRHN6.js +268 -0
  539. package/vendor/framey/dist/open-E3TB6P6J.js +128 -0
  540. package/vendor/framey/dist/parakeetRunner-UP34UOI2.js +58 -0
  541. package/vendor/framey/dist/pipeline-VXIUYEBU.js +64 -0
  542. package/vendor/framey/dist/play-BUTDQ4DV.js +353 -0
  543. package/vendor/framey/dist/policies-OLDYGFK5.js +309 -0
  544. package/vendor/framey/dist/preflight-2KZ2GWAZ.js +55 -0
  545. package/vendor/framey/dist/present-GXYSM7NX.js +353 -0
  546. package/vendor/framey/dist/preview-EKZ33JOJ.js +1910 -0
  547. package/vendor/framey/dist/producer-SKU5EV3J.js +13 -0
  548. package/vendor/framey/dist/progress-ZWB4Z4ET.js +76 -0
  549. package/vendor/framey/dist/projectConfig-3MZAYVTS.js +60 -0
  550. package/vendor/framey/dist/publication-DTKWNF74.js +33 -0
  551. package/vendor/framey/dist/remove-background-OY5L7XN2.js +265 -0
  552. package/vendor/framey/dist/render-CDV4GDFX.js +187 -0
  553. package/vendor/framey/dist/render-YE5YAMOD.js +2620 -0
  554. package/vendor/framey/dist/render-batch-ZAMFPCLL.js +274 -0
  555. package/vendor/framey/dist/renderSetupWorker.js +120 -0
  556. package/vendor/framey/dist/resolver-D5BIPSEW.js +42 -0
  557. package/vendor/framey/dist/runtimeVersion.js +18 -0
  558. package/vendor/framey/dist/sam-WFZXI4F7.js +23 -0
  559. package/vendor/framey/dist/shaderTransitionWorker.js +44 -0
  560. package/vendor/framey/dist/sherpa-RQWLV7I3.js +79 -0
  561. package/vendor/framey/dist/sherpaWorker.js +84 -0
  562. package/vendor/framey/dist/sites-AMOVABTK.js +54 -0
  563. package/vendor/framey/dist/skill-ZHVLH7KX.js +15 -0
  564. package/vendor/framey/dist/slideshow-SJGK4RQS.js +24 -0
  565. package/vendor/framey/dist/snapshot-TUXL6LBQ.js +1515 -0
  566. package/vendor/framey/dist/src-JHQGB2S6.js +215 -0
  567. package/vendor/framey/dist/src-Z5PGEMXB.js +532 -0
  568. package/vendor/framey/dist/state-B6H3WHCF.js +28 -0
  569. package/vendor/framey/dist/staticProjectServer-DFVZOUGI.js +63 -0
  570. package/vendor/framey/dist/studio/assets/hyperframes-player-DLaKjw0L.js +478 -0
  571. package/vendor/framey/dist/studio/assets/index-BX3KHhGX.js +71 -0
  572. package/vendor/framey/dist/studio/assets/index-CYbvOVp-.css +1 -0
  573. package/vendor/framey/dist/studio/assets/index-Dp3QEUGL.js +402 -0
  574. package/vendor/framey/dist/studio/assets/index-qrTAXbqc.js +531 -0
  575. package/vendor/framey/dist/studio/favicon.svg +14 -0
  576. package/vendor/framey/dist/studio/icons/timeline/audio.svg +7 -0
  577. package/vendor/framey/dist/studio/icons/timeline/captions.svg +5 -0
  578. package/vendor/framey/dist/studio/icons/timeline/composition.svg +12 -0
  579. package/vendor/framey/dist/studio/icons/timeline/image.svg +18 -0
  580. package/vendor/framey/dist/studio/icons/timeline/music.svg +10 -0
  581. package/vendor/framey/dist/studio/icons/timeline/text.svg +3 -0
  582. package/vendor/framey/dist/studio/index.html +23 -0
  583. package/vendor/framey/dist/studio-api-2NECGRMB.js +179 -0
  584. package/vendor/framey/dist/studioSelectionClient-IUUPKUHZ.js +25 -0
  585. package/vendor/framey/dist/studioServer-N2OPUMOQ.js +1569 -0
  586. package/vendor/framey/dist/synthesize-PKTB5ATG.js +183 -0
  587. package/vendor/framey/dist/system-7F3UEHQT.js +27 -0
  588. package/vendor/framey/dist/telemetry-DQGPEKM6.js +145 -0
  589. package/vendor/framey/dist/telemetry-UN55N6U6.js +77 -0
  590. package/vendor/framey/dist/timeline-LHUUMK63.js +1295 -0
  591. package/vendor/framey/dist/tokens-OLECWDFK.js +92 -0
  592. package/vendor/framey/dist/transcribe-O7HQKMIV.js +331 -0
  593. package/vendor/framey/dist/transcribe-UJESPBT5.js +76 -0
  594. package/vendor/framey/dist/tts-YCCQHZD4.js +234 -0
  595. package/vendor/framey/dist/urlDownloader-H2LXLG4U.js +48 -0
  596. package/vendor/framey/dist/usage-HG4WMM7A.js +2167 -0
  597. package/vendor/framey/dist/validate-F2XMN6EV.js +87 -0
  598. package/vendor/framey/dist/vendor/npm/gsap@3.15.0/GSAP-LICENSE.txt +8 -0
  599. package/vendor/framey/dist/vendor/npm/gsap@3.15.0/dist/CustomEase.min.js +11 -0
  600. package/vendor/framey/dist/vendor/npm/gsap@3.15.0/dist/MotionPathPlugin.min.js +11 -0
  601. package/vendor/framey/dist/vendor/npm/gsap@3.15.0/dist/gsap.min.js +11 -0
  602. package/vendor/framey/dist/warmCheck.js +220 -0
  603. package/vendor/framey/dist/warmCheckClient.js +139 -0
  604. package/vendor/framey/dist/workspaceBuildCheck-XYD2YTFW.js +133 -0
  605. package/vendor/framey-player/LICENSE +190 -0
  606. package/vendor/framey-player/NOTICE +16 -0
  607. package/vendor/framey-player/SOURCE.json +6 -0
  608. package/vendor/framey-player/hyperframes-player.global.js +478 -0
  609. package/vendor/framey.pin +1 -0
  610. package/bin/index.js +0 -3
@@ -0,0 +1,323 @@
1
+ import { createRequire as __hf_createRequire } from "node:module";
2
+ import { fileURLToPath as __hf_fileURLToPath } from "node:url";
3
+ import { dirname as __hf_dirname } from "node:path";
4
+ var require = __hf_createRequire(import.meta.url);
5
+ var __filename = __hf_fileURLToPath(import.meta.url);
6
+ var __dirname = __hf_dirname(__filename);
7
+ import {
8
+ getIdentityPersistence,
9
+ getIdentityWriteOutcome,
10
+ posthogApiKey,
11
+ posthogHost,
12
+ readConfig,
13
+ telemetryRuntimeOverride,
14
+ writeConfig
15
+ } from "./chunk-NYEXNSHM.js";
16
+ import {
17
+ getInvocationId
18
+ } from "./chunk-54HJ63Q2.js";
19
+ import {
20
+ c
21
+ } from "./chunk-VORQIH64.js";
22
+ import {
23
+ CANARIES,
24
+ canaryEnvVar,
25
+ canaryFeatureProperties,
26
+ evaluateCanary,
27
+ findCanary,
28
+ parseCanaryOverride
29
+ } from "./chunk-FXMKHHPO.js";
30
+ import {
31
+ VERSION
32
+ } from "./chunk-AHX34EFP.js";
33
+ import {
34
+ getSystemMeta
35
+ } from "./chunk-T6AGUTZJ.js";
36
+
37
+ // src/telemetry/transport.ts
38
+ import { spawn } from "child_process";
39
+ import { randomUUID } from "crypto";
40
+
41
+ // src/utils/hostAnswers.ts
42
+ import { promises as dns } from "dns";
43
+ var PROBE_TIMEOUT_MS = 1e3;
44
+ function fetchGoesThroughEnvProxy() {
45
+ if (!(process.env["HTTPS_PROXY"] ?? process.env["https_proxy"])?.trim()) return false;
46
+ const flags = [...process.execArgv, ...process.env["NODE_OPTIONS"]?.split(/\s+/u) ?? []];
47
+ return process.env["NODE_USE_ENV_PROXY"] === "1" || flags.includes("--use-env-proxy");
48
+ }
49
+ async function hostAnswers(host) {
50
+ if (fetchGoesThroughEnvProxy()) return true;
51
+ try {
52
+ const resolver = new dns.Resolver({ timeout: PROBE_TIMEOUT_MS, tries: 1 });
53
+ const results = await Promise.allSettled([resolver.resolve4(host), resolver.resolve6(host)]);
54
+ const anyFamilyTimedOut = results.some(
55
+ (r) => r.status === "rejected" && r.reason.code === "ETIMEOUT"
56
+ );
57
+ return !anyFamilyTimedOut && results.some((r) => r.status === "fulfilled");
58
+ } catch {
59
+ return false;
60
+ }
61
+ }
62
+
63
+ // src/telemetry/transport.ts
64
+ var FLUSH_TIMEOUT_MS = 5e3;
65
+ var eventQueue = [];
66
+ function enqueue(event, properties, distinctId) {
67
+ eventQueue.push({
68
+ uuid: randomUUID(),
69
+ event,
70
+ distinctId,
71
+ properties,
72
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
73
+ });
74
+ }
75
+ function buildPayload(events) {
76
+ if (events.length === 0) return null;
77
+ const config = readConfig();
78
+ const batch = events.map((e) => ({
79
+ uuid: e.uuid,
80
+ event: e.event,
81
+ properties: { ...e.properties, $ip: null },
82
+ distinct_id: e.distinctId ?? config.anonymousId,
83
+ timestamp: e.timestamp
84
+ }));
85
+ return JSON.stringify({ api_key: posthogApiKey(), batch });
86
+ }
87
+ var inFlight;
88
+ async function flush() {
89
+ const run = inFlight ? inFlight.then((sent) => sent ? sendQueued() : false, sendQueued) : sendQueued();
90
+ const current = run.finally(() => {
91
+ if (inFlight === current) inFlight = void 0;
92
+ });
93
+ inFlight = current;
94
+ await current;
95
+ }
96
+ async function sendQueued() {
97
+ const snapshot = eventQueue.slice();
98
+ const payload = buildPayload(snapshot);
99
+ if (payload == null) return true;
100
+ if (!await hostAnswers(new URL(posthogHost()).hostname)) return false;
101
+ const controller = new AbortController();
102
+ const timeout = setTimeout(() => controller.abort(), FLUSH_TIMEOUT_MS);
103
+ try {
104
+ const res = await fetch(`${posthogHost()}/batch/`, {
105
+ method: "POST",
106
+ headers: { "Content-Type": "application/json", Connection: "close" },
107
+ body: payload,
108
+ signal: controller.signal
109
+ });
110
+ await res.body?.cancel();
111
+ const sent = new Set(snapshot);
112
+ eventQueue = eventQueue.filter((e) => !sent.has(e));
113
+ return true;
114
+ } catch {
115
+ return false;
116
+ } finally {
117
+ clearTimeout(timeout);
118
+ }
119
+ }
120
+ function flushSync() {
121
+ const payload = buildPayload(eventQueue);
122
+ if (payload == null) return;
123
+ eventQueue = [];
124
+ try {
125
+ const child = spawn(
126
+ process.execPath,
127
+ [
128
+ "-e",
129
+ `fetch(${JSON.stringify(`${posthogHost()}/batch/`)},{method:"POST",headers:{"Content-Type":"application/json"},body:${JSON.stringify(payload)},signal:AbortSignal.timeout(${FLUSH_TIMEOUT_MS})}).catch(()=>{})`
130
+ ],
131
+ { detached: true, stdio: "ignore", windowsHide: true }
132
+ );
133
+ child.unref();
134
+ } catch {
135
+ }
136
+ }
137
+
138
+ // src/ui/diagnostics.ts
139
+ var diag = {
140
+ /** A user-facing notice or progress line (e.g. "Installing … skills…"). */
141
+ notice(...args) {
142
+ console.error(...args);
143
+ },
144
+ /** A warning the user should see but that isn't fatal. */
145
+ warn(...args) {
146
+ console.warn(...args);
147
+ }
148
+ };
149
+
150
+ // src/telemetry/canary.ts
151
+ function telemetryActive() {
152
+ if (telemetryRuntimeOverride() !== null) return false;
153
+ return readConfig().telemetryEnabled;
154
+ }
155
+ var decisions = /* @__PURE__ */ new Map();
156
+ var decisionsTelemetryPosture;
157
+ function decideCanary(name) {
158
+ const definition = findCanary(name);
159
+ if (!definition) return { enabled: false, reason: "out_of_cohort" };
160
+ const override = parseCanaryOverride(process.env[canaryEnvVar(definition.name)]);
161
+ if (override === void 0 && !telemetryActive()) {
162
+ return { enabled: false, reason: "telemetry_opt_out" };
163
+ }
164
+ const config = readConfig();
165
+ return evaluateCanary({
166
+ feature: definition.name,
167
+ // The bucket seed, NOT the anonymousId: the seed is inherited across
168
+ // config.json re-mints via the install-state file, so cohorts hold when
169
+ // the telemetry id re-rolls. Both files live in ~/.hyperframes, so
170
+ // deleting that directory clears the cohort too — intentional. Fallback
171
+ // covers only a failed backfill write on a legacy config.
172
+ unitId: config.bucketSeed ?? config.anonymousId,
173
+ percentage: definition.percentage,
174
+ override,
175
+ // CI installs regenerate their config per run, so their ids are
176
+ // ephemeral — they would hop cohorts between runs, adding noise to the
177
+ // rollout signal while saying nothing about real users. An explicit
178
+ // override still gets through, which is how you test a canary in CI.
179
+ exclude: getSystemMeta().is_ci
180
+ });
181
+ }
182
+ function resolveCanary(name) {
183
+ const posture = telemetryActive();
184
+ if (decisionsTelemetryPosture !== posture) {
185
+ decisions.clear();
186
+ decisionsTelemetryPosture = posture;
187
+ }
188
+ const cached = decisions.get(name);
189
+ if (cached) return cached;
190
+ const decision = decideCanary(name);
191
+ decisions.set(name, decision);
192
+ return decision;
193
+ }
194
+ function canaryDecisionsForStudio() {
195
+ const out = {};
196
+ for (const canary of CANARIES) {
197
+ const { enabled, reason } = resolveCanary(canary.name);
198
+ out[canary.name] = {
199
+ enabled,
200
+ // Provenance, not decoration. Studio has its own telemetry opt-out that
201
+ // the CLI cannot see, and it must be able to refuse ordinary cohort
202
+ // enrolment while still honouring a deliberate `HF_CANARY_*` override.
203
+ // A bare boolean cannot express that difference, so Studio would have
204
+ // had to either ignore its own opt-out or drop the override.
205
+ forced: reason === "forced_on" || reason === "forced_off"
206
+ };
207
+ }
208
+ return out;
209
+ }
210
+ function canaryEventProperties() {
211
+ return canaryFeatureProperties(
212
+ CANARIES.map((c2) => {
213
+ const { enabled, reason } = resolveCanary(c2.name);
214
+ return { name: c2.name, enabled, reason };
215
+ })
216
+ );
217
+ }
218
+
219
+ // src/telemetry/client.ts
220
+ var telemetryEnabled = null;
221
+ function shouldTrack() {
222
+ if (telemetryEnabled !== null) return telemetryEnabled;
223
+ if (telemetryRuntimeOverride() !== null) {
224
+ telemetryEnabled = false;
225
+ return false;
226
+ }
227
+ const config = readConfig();
228
+ telemetryEnabled = config.telemetryEnabled;
229
+ return telemetryEnabled;
230
+ }
231
+ function resetTelemetryPostureCache() {
232
+ telemetryEnabled = null;
233
+ }
234
+ function trackEvent(event, properties = {}, distinctId) {
235
+ if (!shouldTrack()) return;
236
+ const sys = getSystemMeta();
237
+ enqueue(
238
+ event,
239
+ {
240
+ ...properties,
241
+ cli_version: VERSION,
242
+ os: process.platform,
243
+ arch: process.arch,
244
+ node_version: process.version,
245
+ os_release: sys.os_release,
246
+ cpu_count: sys.cpu_count,
247
+ cpu_model: sys.cpu_model ?? void 0,
248
+ cpu_speed: sys.cpu_speed ?? void 0,
249
+ memory_total_mb: sys.memory_total_mb,
250
+ is_docker: sys.is_docker,
251
+ is_ci: sys.is_ci,
252
+ ci_name: sys.ci_name ?? void 0,
253
+ is_wsl: sys.is_wsl,
254
+ is_tty: sys.is_tty,
255
+ sandbox_runtime: sys.sandbox_runtime ?? void 0,
256
+ agent_runtime: sys.agent_runtime ?? void 0,
257
+ execution_harness_hint: sys.execution_harness_hint ?? void 0,
258
+ // New-agent discovery signals — populated only when agent_runtime is null.
259
+ agent_hint: sys.agent_hint ?? void 0,
260
+ term_program: sys.term_program ?? void 0,
261
+ // Did this install's mint find a previous install's state marker?
262
+ // The fleet-wide rate of `true` IS the recoverable-churn fraction —
263
+ // the share of "new" ids that are really a config re-mint on a machine
264
+ // we already knew. Absent (not false) when the config predates the
265
+ // marker. Resolved after the shouldTrack guard.
266
+ install_predecessor_found: readConfig().predecessorFound,
267
+ // Splits the `true` share above: a machine we knew but whose record we
268
+ // could not read. Without it a partial disk write is indistinguishable
269
+ // from a genuinely fresh install. Absent in the normal case.
270
+ install_state_file_corrupt: readConfig().stateFileCorrupt,
271
+ // Whether this process's anonymousId can be trusted to survive to the
272
+ // next run: `durable` (loaded from a preexisting config), `unknown`
273
+ // (minted+persisted this run — an ephemeral HOME is indistinguishable
274
+ // from a genuine first run), `process_only` (not persisted). Install-
275
+ // grain metrics must also consider environment and repeated-day use:
276
+ // a short-lived container can persist its id between two CLI processes.
277
+ identity_persistence: getIdentityPersistence(),
278
+ // Outcome of the identity-establishing config write; absent when that
279
+ // path did not write (including a durable id loaded from disk).
280
+ config_write_outcome: getIdentityWriteOutcome(),
281
+ // Groups one invocation's events even when the install identity is
282
+ // untrustworthy. Always present, unlike the orchestrator-set run_id.
283
+ invocation_id: getInvocationId(),
284
+ // Canary assignments as `$feature/canary-<name>` — PostHog's native flag
285
+ // property shape, so breakdowns and experiment analysis work on a canary
286
+ // with nothing configured server-side. On EVERY event, not just renders:
287
+ // a staged rollout is only as good as the ability to split any metric by
288
+ // cohort. Resolved after the shouldTrack guard, so opted-out installs
289
+ // never pay for it. See telemetry/canary.ts.
290
+ ...canaryEventProperties(),
291
+ agent_env_hints: sys.agent_env_hints ?? void 0,
292
+ client: sys.client ?? void 0
293
+ },
294
+ distinctId
295
+ );
296
+ }
297
+ function showTelemetryNotice() {
298
+ if (!shouldTrack()) return false;
299
+ const config = readConfig();
300
+ if (config.telemetryNoticeShown) return false;
301
+ config.telemetryNoticeShown = true;
302
+ writeConfig(config);
303
+ diag.notice();
304
+ diag.notice(` ${c.dim("Framey collects anonymous usage data to improve the tool.")}`);
305
+ diag.notice(` ${c.dim("File paths and composition content are never collected.")}`);
306
+ diag.notice(
307
+ ` ${c.dim("If you sign in to HeyGen, your account (email, or username) is linked to your usage.")}`
308
+ );
309
+ diag.notice();
310
+ diag.notice(` ${c.dim("Disable anytime:")} ${c.accent("framey telemetry disable")}`);
311
+ diag.notice();
312
+ return true;
313
+ }
314
+
315
+ export {
316
+ canaryDecisionsForStudio,
317
+ flush,
318
+ flushSync,
319
+ shouldTrack,
320
+ resetTelemetryPostureCache,
321
+ trackEvent,
322
+ showTelemetryNotice
323
+ };
@@ -0,0 +1,34 @@
1
+ import { createRequire as __hf_createRequire } from "node:module";
2
+ import { fileURLToPath as __hf_fileURLToPath } from "node:url";
3
+ import { dirname as __hf_dirname } from "node:path";
4
+ var require = __hf_createRequire(import.meta.url);
5
+ var __filename = __hf_fileURLToPath(import.meta.url);
6
+ var __dirname = __hf_dirname(__filename);
7
+
8
+ // src/commands/lambda/repoRoot.ts
9
+ import { existsSync } from "fs";
10
+ import { dirname, resolve } from "path";
11
+ import { fileURLToPath } from "url";
12
+ function repoRoot() {
13
+ const override = process.env.HYPERFRAMES_REPO_ROOT;
14
+ if (override) {
15
+ if (existsSync(resolve(override, "packages", "aws-lambda", "package.json"))) return override;
16
+ throw new Error(
17
+ "[hyperframes lambda] HYPERFRAMES_REPO_ROOT is not a hyperframes checkout (no packages/aws-lambda/package.json there). Point it at the repo root, or unset it."
18
+ );
19
+ }
20
+ let dir = dirname(fileURLToPath(import.meta.url));
21
+ for (let depth = 0; depth < 12; depth++) {
22
+ if (existsSync(resolve(dir, "packages", "aws-lambda", "package.json"))) {
23
+ return dir;
24
+ }
25
+ const parent = dirname(dir);
26
+ if (parent === dir) break;
27
+ dir = parent;
28
+ }
29
+ return void 0;
30
+ }
31
+
32
+ export {
33
+ repoRoot
34
+ };
@@ -0,0 +1,168 @@
1
+ import { createRequire as __hf_createRequire } from "node:module";
2
+ import { fileURLToPath as __hf_fileURLToPath } from "node:url";
3
+ import { dirname as __hf_dirname } from "node:path";
4
+ var require = __hf_createRequire(import.meta.url);
5
+ var __filename = __hf_fileURLToPath(import.meta.url);
6
+ var __dirname = __hf_dirname(__filename);
7
+
8
+ // ../parsers/dist/slideshow.js
9
+ var SLIDESHOW_MANIFEST_VERSION = 1;
10
+ var SLIDESHOW_ISLAND_TYPE = "application/hyperframes-slideshow+json";
11
+ function slideshowIslandRegex(flags = "i") {
12
+ const escaped = SLIDESHOW_ISLAND_TYPE.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
13
+ const htmlWhitespace = "[\\t\\n\\f\\r ]*";
14
+ return new RegExp(
15
+ `<script[^>]*type${htmlWhitespace}=${htmlWhitespace}["']${escaped}["'][^>]*>([\\s\\S]*?)<\\/script>`,
16
+ flags
17
+ );
18
+ }
19
+ function parseSlideshowManifest(html) {
20
+ const re = slideshowIslandRegex("i");
21
+ const match = re.exec(html);
22
+ if (!match || match[1] === void 0) return null;
23
+ const raw = match[1].trim();
24
+ if (raw.length === 0) return null;
25
+ const parsed = JSON.parse(raw);
26
+ if (!isManifest(parsed)) {
27
+ throw new Error("slideshow island is not a valid SlideshowManifest");
28
+ }
29
+ return parsed;
30
+ }
31
+ function isOptionalNumberArray(v) {
32
+ return v === void 0 || Array.isArray(v) && v.every((n) => typeof n === "number");
33
+ }
34
+ function isOptionalBoolean(v) {
35
+ return v === void 0 || typeof v === "boolean";
36
+ }
37
+ function isRecord(v) {
38
+ return typeof v === "object" && v !== null && !Array.isArray(v);
39
+ }
40
+ function isHotspotRegion(v) {
41
+ return isRecord(v) && [v["x"], v["y"], v["w"], v["h"]].every(
42
+ (coordinate) => typeof coordinate === "number" && Number.isFinite(coordinate)
43
+ );
44
+ }
45
+ function isSlideHotspot(v) {
46
+ return isRecord(v) && typeof v["id"] === "string" && typeof v["label"] === "string" && typeof v["target"] === "string" && (v["region"] === void 0 || isHotspotRegion(v["region"]));
47
+ }
48
+ function isSlideRef(v) {
49
+ if (!isRecord(v)) return false;
50
+ const r = v;
51
+ if (typeof r["sceneId"] !== "string") return false;
52
+ if (!isOptionalNumberArray(r["fragments"])) return false;
53
+ if (r["hotspots"] !== void 0 && (!Array.isArray(r["hotspots"]) || !r["hotspots"].every(isSlideHotspot)))
54
+ return false;
55
+ if (!isOptionalBoolean(r["autoplay"])) return false;
56
+ return true;
57
+ }
58
+ function isSlideSequence(v) {
59
+ if (typeof v !== "object" || v === null) return false;
60
+ const s = v;
61
+ return typeof s["id"] === "string" && typeof s["label"] === "string" && Array.isArray(s["slides"]) && s["slides"].every(isSlideRef);
62
+ }
63
+ function isManifest(v) {
64
+ if (typeof v !== "object" || v === null || Array.isArray(v)) return false;
65
+ const o = v;
66
+ if (!Array.isArray(o["slides"]) || !o["slides"].every(isSlideRef)) return false;
67
+ if (o["slideSequences"] !== void 0) {
68
+ if (!Array.isArray(o["slideSequences"]) || !o["slideSequences"].every(isSlideSequence))
69
+ return false;
70
+ }
71
+ return true;
72
+ }
73
+ function missingBoundError(sceneId, missing) {
74
+ const present = missing === "startTime" ? "endTime" : "startTime";
75
+ return `slide "${sceneId}" sets ${present} but ${missing} cannot be resolved (no scene "${sceneId}")`;
76
+ }
77
+ function resolveTimeRange(ref, scene, errors) {
78
+ const { startTime, endTime, sceneId } = ref;
79
+ if (startTime !== void 0 && endTime !== void 0) {
80
+ return { start: startTime, end: endTime };
81
+ }
82
+ if (startTime === void 0 && endTime === void 0) {
83
+ if (!scene) {
84
+ errors.push(`slide references unresolved sceneId "${sceneId}"`);
85
+ return { start: 0, end: 0 };
86
+ }
87
+ return { start: scene.start, end: scene.start + scene.duration };
88
+ }
89
+ if (!scene) {
90
+ const missing = startTime === void 0 ? "startTime" : "endTime";
91
+ errors.push(missingBoundError(sceneId, missing));
92
+ const bound = startTime ?? endTime ?? 0;
93
+ return { start: bound, end: bound };
94
+ }
95
+ return {
96
+ start: startTime ?? scene.start,
97
+ end: endTime ?? scene.start + scene.duration
98
+ };
99
+ }
100
+ function validateFragments(sceneId, fragments, start, end, errors) {
101
+ for (const f of fragments) {
102
+ if (f < start || f > end) {
103
+ errors.push(`slide "${sceneId}" fragment ${f} is outside range [${start}, ${end}]`);
104
+ }
105
+ }
106
+ }
107
+ function resolveSlide(ref, sceneById, errors) {
108
+ const scene = sceneById.get(ref.sceneId);
109
+ const { start, end } = resolveTimeRange(ref, scene, errors);
110
+ if (ref.startTime !== void 0 && ref.endTime !== void 0 && end <= start) {
111
+ errors.push(`slide "${ref.sceneId}" has endTime (${end}) <= startTime (${start})`);
112
+ }
113
+ const fragments = [...new Set(ref.fragments ?? [])].sort((a, b) => a - b);
114
+ validateFragments(ref.sceneId, fragments, start, end, errors);
115
+ return { ...ref, start, end, fragments, hotspots: ref.hotspots ?? [] };
116
+ }
117
+ function resolveSlideshow(manifest, scenes) {
118
+ const errors = [];
119
+ const sceneById = new Map(scenes.map((s) => [s.id, s]));
120
+ const sequences = {};
121
+ for (const seq of manifest.slideSequences ?? []) {
122
+ if (Object.prototype.hasOwnProperty.call(sequences, seq.id)) {
123
+ errors.push(`duplicate slideSequence id "${seq.id}": only the last definition is kept`);
124
+ }
125
+ sequences[seq.id] = {
126
+ id: seq.id,
127
+ label: seq.label,
128
+ slides: seq.slides.map((s) => resolveSlide(s, sceneById, errors))
129
+ };
130
+ }
131
+ const slides = manifest.slides.map((s) => resolveSlide(s, sceneById, errors));
132
+ const allSlides = [...slides, ...Object.values(sequences).flatMap((s) => s.slides)];
133
+ for (const slide of allSlides) {
134
+ for (const h of slide.hotspots) {
135
+ const seq = sequences[h.target];
136
+ if (!seq) {
137
+ errors.push(`hotspot "${h.id}" targets unknown sequence "${h.target}"`);
138
+ } else if (seq.slides.length === 0) {
139
+ errors.push(`hotspot "${h.id}" targets empty sequence "${h.target}"`);
140
+ }
141
+ }
142
+ }
143
+ const ordered = [...slides].sort((a, b) => a.start - b.start);
144
+ for (let i = 1; i < ordered.length; i++) {
145
+ const prev = ordered[i - 1];
146
+ const curr = ordered[i];
147
+ if (prev !== void 0 && curr !== void 0 && curr.start < prev.end) {
148
+ errors.push(`main-line slides "${prev.sceneId}" and "${curr.sceneId}" overlap`);
149
+ }
150
+ }
151
+ return { resolved: { slides, sequences }, errors };
152
+ }
153
+ function isSceneLikeCompositionId(compositionId) {
154
+ const normalized = compositionId.trim().toLowerCase();
155
+ if (!normalized || normalized === "main") return false;
156
+ if (normalized.includes("caption")) return false;
157
+ if (normalized.includes("ambient")) return false;
158
+ return true;
159
+ }
160
+
161
+ export {
162
+ SLIDESHOW_MANIFEST_VERSION,
163
+ SLIDESHOW_ISLAND_TYPE,
164
+ slideshowIslandRegex,
165
+ parseSlideshowManifest,
166
+ resolveSlideshow,
167
+ isSceneLikeCompositionId
168
+ };
@@ -0,0 +1,72 @@
1
+ import { createRequire as __hf_createRequire } from "node:module";
2
+ import { fileURLToPath as __hf_fileURLToPath } from "node:url";
3
+ import { dirname as __hf_dirname } from "node:path";
4
+ var require = __hf_createRequire(import.meta.url);
5
+ var __filename = __hf_fileURLToPath(import.meta.url);
6
+ var __dirname = __hf_dirname(__filename);
7
+ import {
8
+ failCommand
9
+ } from "./chunk-JVBRJMOP.js";
10
+
11
+ // src/commands/lambda/state.ts
12
+ import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync } from "fs";
13
+ import { dirname, join } from "path";
14
+ function videoArchitecture(stack) {
15
+ return stack.videoFunctionName ? "arm64" : void 0;
16
+ }
17
+ var STATE_DIR_NAME = ".hyperframes";
18
+ var STATE_FILE_PREFIX = "lambda-stack-";
19
+ var DEFAULT_STACK_NAME = "hyperframes-default";
20
+ function stateFilePath(stackName = DEFAULT_STACK_NAME, cwd = process.cwd()) {
21
+ return join(cwd, STATE_DIR_NAME, `${STATE_FILE_PREFIX}${stackName}.json`);
22
+ }
23
+ function writeStackOutputs(outputs, cwd = process.cwd()) {
24
+ const path = stateFilePath(outputs.stackName, cwd);
25
+ mkdirSync(dirname(path), { recursive: true });
26
+ writeFileSync(path, JSON.stringify(outputs, null, 2) + "\n");
27
+ return path;
28
+ }
29
+ function readStackOutputs(stackName = DEFAULT_STACK_NAME, cwd = process.cwd()) {
30
+ const path = stateFilePath(stackName, cwd);
31
+ if (!existsSync(path)) return null;
32
+ try {
33
+ return JSON.parse(readFileSync(path, "utf-8"));
34
+ } catch {
35
+ return null;
36
+ }
37
+ }
38
+ function deleteStackOutputs(stackName = DEFAULT_STACK_NAME, cwd = process.cwd()) {
39
+ const path = stateFilePath(stackName, cwd);
40
+ if (existsSync(path)) rmSync(path);
41
+ }
42
+ function listStackNames(cwd = process.cwd()) {
43
+ const dir = join(cwd, STATE_DIR_NAME);
44
+ if (!existsSync(dir)) return [];
45
+ return readdirSync(dir).filter((f) => f.startsWith(STATE_FILE_PREFIX) && f.endsWith(".json")).map((f) => f.slice(STATE_FILE_PREFIX.length, -".json".length));
46
+ }
47
+ function requireStack(stackName, cwd = process.cwd()) {
48
+ const stack = readStackOutputs(stackName, cwd);
49
+ if (!stack) {
50
+ const known = listStackNames(cwd);
51
+ let hint = `Run \`framey lambda deploy${stackName === DEFAULT_STACK_NAME ? "" : ` --stack-name=${stackName}`}\` first.`;
52
+ if (known.length) {
53
+ hint += ` Known stacks here: ${known.join(", ")}.`;
54
+ }
55
+ console.error(
56
+ `[framey lambda] no stack state for "${stackName}" at ${stateFilePath(stackName, cwd)}. ${hint}`
57
+ );
58
+ failCommand();
59
+ }
60
+ return stack;
61
+ }
62
+
63
+ export {
64
+ videoArchitecture,
65
+ DEFAULT_STACK_NAME,
66
+ stateFilePath,
67
+ writeStackOutputs,
68
+ readStackOutputs,
69
+ deleteStackOutputs,
70
+ listStackNames,
71
+ requireStack
72
+ };