@makeitvisible/cli 0.1.0 → 0.2.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/video/remotion/theme.ts","../../../src/video/remotion/components.tsx","../../../src/video/remotion/Root.tsx","../../../src/video/remotion/index.tsx"],"names":["jsx","jsxs"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Design Tokens for Remotion\n *\n * Shared design tokens that mirror common UI frameworks.\n * These enable video components to have a professional look.\n */\n\n/**\n * Color palette - Dark mode (modern SaaS style)\n */\nexport const colors = {\n // Backgrounds\n background: \"#0A0A0B\",\n card: \"#141415\",\n popover: \"#1C1C1E\",\n\n // Text\n foreground: \"#FAFAFA\",\n mutedForeground: \"#A1A1A6\",\n\n // Accent colors\n primary: \"#10B981\", // Green\n primaryForeground: \"#FAFAFA\",\n\n // Secondary\n secondary: \"#27272A\",\n secondaryForeground: \"#FAFAFA\",\n\n // Destructive\n destructive: \"#EF4444\",\n destructiveForeground: \"#FAFAFA\",\n\n // Border\n border: \"#27272A\",\n\n // Chart colors\n chart: {\n 1: \"#10B981\",\n 2: \"#14B8A6\",\n 3: \"#0EA5E9\",\n 4: \"#F59E0B\",\n 5: \"#F97316\",\n },\n} as const;\n\n/**\n * Typography scale\n */\nexport const typography = {\n fontFamily: {\n sans: 'Inter, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n mono: 'JetBrains Mono, \"Fira Code\", Monaco, Consolas, monospace',\n },\n fontSize: {\n xs: 12,\n sm: 14,\n base: 16,\n lg: 18,\n xl: 20,\n \"2xl\": 24,\n \"3xl\": 30,\n \"4xl\": 36,\n \"5xl\": 48,\n \"6xl\": 60,\n },\n fontWeight: {\n normal: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n },\n lineHeight: {\n tight: 1.1,\n snug: 1.25,\n normal: 1.5,\n relaxed: 1.625,\n },\n} as const;\n\n/**\n * Spacing scale (in pixels)\n */\nexport const spacing = {\n 0: 0,\n 1: 4,\n 2: 8,\n 3: 12,\n 4: 16,\n 5: 20,\n 6: 24,\n 8: 32,\n 10: 40,\n 12: 48,\n 16: 64,\n 20: 80,\n 24: 96,\n} as const;\n\n/**\n * Border radius\n */\nexport const borderRadius = {\n none: 0,\n sm: 4,\n md: 6,\n lg: 8,\n xl: 12,\n \"2xl\": 16,\n full: 9999,\n} as const;\n\n/**\n * Animation timing\n */\nexport const animation = {\n fps: 30,\n duration: {\n fast: 8,\n normal: 15,\n slow: 30,\n slower: 45,\n },\n} as const;\n\n/**\n * Video dimensions\n */\nexport const dimensions = {\n \"1080p\": { width: 1920, height: 1080 },\n \"720p\": { width: 1280, height: 720 },\n \"480p\": { width: 854, height: 480 },\n square: { width: 1080, height: 1080 },\n vertical: { width: 1080, height: 1920 },\n} as const;\n\nexport const theme = {\n colors,\n typography,\n spacing,\n borderRadius,\n animation,\n dimensions,\n} as const;\n","/**\n * Remotion Components\n *\n * React components for video rendering with Remotion.\n * All components use inline styles for portability.\n */\n\nimport React from \"react\";\nimport {\n AbsoluteFill,\n Sequence,\n interpolate,\n useCurrentFrame,\n useVideoConfig,\n spring,\n} from \"remotion\";\nimport { colors, typography, spacing, borderRadius, animation } from \"./theme\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface VideoScene {\n id: string;\n type: string;\n title: string;\n content: string;\n durationInFrames: number;\n props?: Record<string, unknown>;\n}\n\nexport interface VideoStoryboard {\n title: string;\n totalDurationInFrames: number;\n scenes: VideoScene[];\n artifact: {\n title: string;\n description: string;\n source: { type: string; reference: string; url?: string };\n context: {\n summary: string;\n technicalDetails: string[];\n affectedComponents: string[];\n breakingChanges: boolean;\n keywords: string[];\n };\n guidelines: string[];\n };\n theme: {\n primaryColor: string;\n backgroundColor: string;\n foregroundColor: string;\n accentColor: string;\n mutedColor: string;\n cardColor: string;\n borderColor: string;\n fontFamily: string;\n };\n}\n\n// ============================================================================\n// Main Composition\n// ============================================================================\n\nexport const Main: React.FC<{ storyboard: VideoStoryboard }> = ({ storyboard }) => {\n const { width, height } = useVideoConfig();\n\n let currentFrame = 0;\n\n return (\n <div style={{ width, height, position: \"relative\", overflow: \"hidden\" }}>\n {storyboard.scenes.map((scene, index) => {\n const startFrame = currentFrame;\n currentFrame += scene.durationInFrames;\n\n return (\n <Sequence\n key={scene.id}\n from={startFrame}\n durationInFrames={scene.durationInFrames}\n name={`${scene.type}-${index}`}\n >\n <SceneRenderer scene={scene} storyboard={storyboard} />\n </Sequence>\n );\n })}\n </div>\n );\n};\n\n// ============================================================================\n// Scene Router\n// ============================================================================\n\nconst SceneRenderer: React.FC<{ scene: VideoScene; storyboard: VideoStoryboard }> = ({\n scene,\n storyboard,\n}) => {\n const { artifact } = storyboard;\n\n switch (scene.type) {\n case \"title\":\n return (\n <TitleScene\n title={scene.title}\n description={scene.content}\n keywords={scene.props?.keywords as string[] | undefined}\n sourceType={artifact.source.type}\n />\n );\n case \"overview\":\n return (\n <OverviewScene\n title={scene.title}\n summary={scene.content}\n componentCount={(scene.props?.componentCount as number) || 0}\n breakingChanges={(scene.props?.breakingChanges as boolean) || false}\n />\n );\n case \"walkthrough\":\n return (\n <WalkthroughScene\n title={scene.title}\n steps={(scene.props?.steps as string[]) || [scene.content]}\n stepIndex={(scene.props?.stepIndex as number) || 0}\n />\n );\n case \"code\":\n return (\n <CodeScene\n title={scene.title}\n files={(scene.props?.files as string[]) || []}\n totalFiles={(scene.props?.totalFiles as number) || 0}\n />\n );\n case \"code-highlight\":\n return (\n <CodeHighlightScene\n title={scene.title}\n snippets={(scene.props?.snippets as CodeSnippet[]) || []}\n />\n );\n case \"ui\":\n return (\n <UIScene\n title={scene.title}\n componentName={(scene.props?.componentName as string) || \"Component\"}\n description={scene.content}\n jsx={scene.props?.jsx as string | undefined}\n pattern={scene.props?.pattern as string | undefined}\n />\n );\n case \"outro\":\n return (\n <OutroScene\n title={scene.title}\n content={scene.content}\n guidelines={(scene.props?.guidelines as string[]) || []}\n />\n );\n default:\n return <DefaultScene title={scene.title} content={scene.content} />;\n }\n};\n\n// ============================================================================\n// Title Scene\n// ============================================================================\n\nconst TitleScene: React.FC<{\n title: string;\n description: string;\n keywords?: string[];\n sourceType?: string;\n}> = ({ title, description, keywords = [], sourceType }) => {\n const frame = useCurrentFrame();\n const { fps, durationInFrames } = useVideoConfig();\n\n const logoScale = spring({ frame, fps, config: { damping: 12, stiffness: 100 } });\n const titleOpacity = interpolate(frame, [15, 30], [0, 1], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" });\n const titleY = interpolate(frame, [15, 30], [30, 0], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" });\n const fadeOut = interpolate(frame, [durationInFrames - 15, durationInFrames], [1, 0], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" });\n\n return (\n <AbsoluteFill\n style={{\n backgroundColor: colors.background,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: spacing[16],\n opacity: fadeOut,\n fontFamily: typography.fontFamily.sans,\n }}\n >\n <div style={{ marginBottom: spacing[12], transform: `scale(${logoScale})` }}>\n <Logo />\n </div>\n\n {sourceType && (\n <div style={{ marginBottom: spacing[4], opacity: titleOpacity }}>\n <Badge>{formatSourceType(sourceType)}</Badge>\n </div>\n )}\n\n <div style={{ opacity: titleOpacity, transform: `translateY(${titleY}px)`, textAlign: \"center\", maxWidth: 1200 }}>\n <h1 style={{ color: colors.foreground, fontSize: typography.fontSize[\"5xl\"], fontWeight: typography.fontWeight.bold, margin: 0 }}>\n {title}\n </h1>\n </div>\n\n <div style={{ marginTop: spacing[6], opacity: titleOpacity, textAlign: \"center\", maxWidth: 900 }}>\n <p style={{ color: colors.mutedForeground, fontSize: typography.fontSize.lg, margin: 0, lineHeight: typography.lineHeight.relaxed }}>\n {description}\n </p>\n </div>\n\n {keywords.length > 0 && (\n <div style={{ marginTop: spacing[8], display: \"flex\", gap: spacing[2], opacity: interpolate(frame, [45, 60], [0, 1], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" }) }}>\n {keywords.slice(0, 5).map((kw, i) => <Badge key={i} variant=\"secondary\">{kw}</Badge>)}\n </div>\n )}\n </AbsoluteFill>\n );\n};\n\n// ============================================================================\n// Overview Scene\n// ============================================================================\n\nconst OverviewScene: React.FC<{\n title: string;\n summary: string;\n componentCount: number;\n breakingChanges: boolean;\n}> = ({ title, summary, componentCount, breakingChanges }) => {\n const frame = useCurrentFrame();\n const { fps, durationInFrames } = useVideoConfig();\n\n const fadeIn = interpolate(frame, [0, 15], [0, 1], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" });\n const fadeOut = interpolate(frame, [durationInFrames - 15, durationInFrames], [1, 0], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" });\n const cardScale = spring({ frame: frame - 15, fps, config: { damping: 12, stiffness: 100 } });\n\n return (\n <AbsoluteFill\n style={{\n backgroundColor: colors.background,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: spacing[16],\n opacity: fadeIn * fadeOut,\n fontFamily: typography.fontFamily.sans,\n }}\n >\n <h2 style={{ color: colors.primary, fontSize: typography.fontSize[\"4xl\"], fontWeight: typography.fontWeight.bold, marginBottom: spacing[8] }}>\n {title}\n </h2>\n\n <div style={{ transform: `scale(${Math.max(0, cardScale)})`, width: \"100%\", maxWidth: 900 }}>\n <Card>\n <p style={{ color: colors.foreground, fontSize: typography.fontSize.lg, lineHeight: typography.lineHeight.relaxed, margin: 0 }}>\n {summary}\n </p>\n </Card>\n </div>\n\n <div style={{ marginTop: spacing[10], display: \"flex\", gap: spacing[8], opacity: interpolate(frame, [30, 45], [0, 1], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" }) }}>\n <MetricCard label=\"Files Changed\" value={String(componentCount)} />\n <MetricCard label=\"Breaking Changes\" value={breakingChanges ? \"Yes\" : \"No\"} variant={breakingChanges ? \"destructive\" : \"default\"} />\n </div>\n </AbsoluteFill>\n );\n};\n\n// ============================================================================\n// Walkthrough Scene\n// ============================================================================\n\nconst WalkthroughScene: React.FC<{\n title: string;\n steps: string[];\n stepIndex: number;\n}> = ({ title, steps, stepIndex }) => {\n const frame = useCurrentFrame();\n const { durationInFrames } = useVideoConfig();\n\n const fadeIn = interpolate(frame, [0, 15], [0, 1], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" });\n const fadeOut = interpolate(frame, [durationInFrames - 15, durationInFrames], [1, 0], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" });\n\n return (\n <AbsoluteFill\n style={{\n backgroundColor: colors.background,\n display: \"flex\",\n flexDirection: \"column\",\n padding: spacing[16],\n opacity: fadeIn * fadeOut,\n fontFamily: typography.fontFamily.sans,\n }}\n >\n <h2 style={{ color: colors.primary, fontSize: typography.fontSize[\"3xl\"], fontWeight: typography.fontWeight.bold, marginBottom: spacing[10] }}>\n {title}\n </h2>\n\n <div style={{ flex: 1, display: \"flex\", flexDirection: \"column\", gap: spacing[4] }}>\n {steps.map((step, i) => (\n <StepItem key={i} step={step} number={stepIndex * 3 + i + 1} delay={20 + i * 15} frame={frame} />\n ))}\n </div>\n </AbsoluteFill>\n );\n};\n\nconst StepItem: React.FC<{ step: string; number: number; delay: number; frame: number }> = ({ step, number, delay, frame }) => {\n const opacity = interpolate(frame, [delay, delay + animation.duration.normal], [0, 1], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" });\n const translateX = interpolate(frame, [delay, delay + animation.duration.normal], [-30, 0], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" });\n\n return (\n <div\n style={{\n display: \"flex\",\n gap: spacing[4],\n alignItems: \"flex-start\",\n opacity,\n transform: `translateX(${translateX}px)`,\n padding: spacing[4],\n backgroundColor: colors.card,\n borderRadius: borderRadius.lg,\n border: `1px solid ${colors.border}`,\n }}\n >\n <div\n style={{\n width: 40,\n height: 40,\n borderRadius: borderRadius.full,\n backgroundColor: colors.primary,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n color: colors.primaryForeground,\n fontWeight: typography.fontWeight.bold,\n }}\n >\n {number}\n </div>\n <p style={{ color: colors.foreground, fontSize: typography.fontSize.base, lineHeight: typography.lineHeight.relaxed, margin: 0, paddingTop: spacing[2] }}>\n {step}\n </p>\n </div>\n );\n};\n\n// ============================================================================\n// Code Scene (File List)\n// ============================================================================\n\nconst CodeScene: React.FC<{\n title: string;\n files: string[];\n totalFiles: number;\n}> = ({ title, files, totalFiles }) => {\n const frame = useCurrentFrame();\n const { durationInFrames } = useVideoConfig();\n\n const fadeIn = interpolate(frame, [0, 15], [0, 1], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" });\n const fadeOut = interpolate(frame, [durationInFrames - 15, durationInFrames], [1, 0], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" });\n\n return (\n <AbsoluteFill\n style={{\n backgroundColor: colors.background,\n display: \"flex\",\n flexDirection: \"column\",\n padding: spacing[16],\n opacity: fadeIn * fadeOut,\n fontFamily: typography.fontFamily.sans,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: spacing[4], marginBottom: spacing[8] }}>\n <FolderIcon />\n <h2 style={{ color: colors.primary, fontSize: typography.fontSize[\"3xl\"], fontWeight: typography.fontWeight.bold, margin: 0 }}>\n {title}\n </h2>\n <span style={{ marginLeft: \"auto\", color: colors.mutedForeground, fontSize: typography.fontSize.xl }}>\n {totalFiles} file{totalFiles !== 1 ? \"s\" : \"\"}\n </span>\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: spacing[2] }}>\n {files.map((file, i) => (\n <FileItem key={file} file={file} index={i} frame={frame} />\n ))}\n {totalFiles > files.length && (\n <div style={{ color: colors.mutedForeground, fontSize: typography.fontSize.sm, padding: spacing[2] }}>\n +{totalFiles - files.length} more files\n </div>\n )}\n </div>\n </AbsoluteFill>\n );\n};\n\nconst FileItem: React.FC<{ file: string; index: number; frame: number }> = ({ file, index, frame }) => {\n const delay = index * 5;\n const opacity = interpolate(frame, [delay, delay + animation.duration.fast], [0, 1], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" });\n const translateX = interpolate(frame, [delay, delay + animation.duration.fast], [-20, 0], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" });\n\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: spacing[3],\n padding: `${spacing[2]}px ${spacing[3]}px`,\n backgroundColor: colors.popover,\n borderRadius: borderRadius.md,\n border: `1px solid ${colors.border}`,\n opacity,\n transform: `translateX(${translateX}px)`,\n }}\n >\n <FileIcon />\n <span style={{ fontFamily: typography.fontFamily.mono, fontSize: typography.fontSize.sm, color: colors.foreground }}>\n {file}\n </span>\n </div>\n );\n};\n\n// ============================================================================\n// Code Highlight Scene\n// ============================================================================\n\ninterface CodeSnippet {\n file: string;\n code: string;\n language?: string;\n description?: string;\n changeType?: \"added\" | \"deleted\" | \"modified\" | \"context\";\n}\n\nconst CodeHighlightScene: React.FC<{\n title: string;\n snippets: CodeSnippet[];\n}> = ({ title, snippets }) => {\n const frame = useCurrentFrame();\n const { durationInFrames } = useVideoConfig();\n\n const fadeIn = interpolate(frame, [0, 15], [0, 1], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" });\n const fadeOut = interpolate(frame, [durationInFrames - 15, durationInFrames], [1, 0], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" });\n\n return (\n <AbsoluteFill\n style={{\n backgroundColor: colors.background,\n display: \"flex\",\n flexDirection: \"column\",\n padding: spacing[12],\n opacity: fadeIn * fadeOut,\n fontFamily: typography.fontFamily.sans,\n }}\n >\n <h3 style={{ color: colors.primary, fontSize: typography.fontSize[\"2xl\"], fontWeight: typography.fontWeight.semibold, marginBottom: spacing[6] }}>\n {title}\n </h3>\n\n <div style={{ flex: 1, display: \"flex\", gap: spacing[4] }}>\n {snippets.map((snippet, i) => (\n <CodeSnippetCard key={i} snippet={snippet} index={i} frame={frame} />\n ))}\n </div>\n </AbsoluteFill>\n );\n};\n\nconst CodeSnippetCard: React.FC<{ snippet: CodeSnippet; index: number; frame: number }> = ({ snippet, index, frame }) => {\n const delay = 15 + index * 10;\n const opacity = interpolate(frame, [delay, delay + animation.duration.normal], [0, 1], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" });\n\n const accentColor = snippet.changeType === \"added\" ? colors.primary : snippet.changeType === \"deleted\" ? colors.destructive : colors.chart[3];\n\n return (\n <div\n style={{\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n backgroundColor: colors.card,\n borderRadius: borderRadius.lg,\n border: `1px solid ${colors.border}`,\n overflow: \"hidden\",\n opacity,\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", gap: spacing[2], padding: `${spacing[2]}px ${spacing[4]}px`, backgroundColor: colors.popover, borderBottom: `1px solid ${colors.border}` }}>\n <div style={{ width: 8, height: 8, borderRadius: borderRadius.full, backgroundColor: accentColor }} />\n <span style={{ fontSize: typography.fontSize.sm, fontFamily: typography.fontFamily.mono, color: colors.foreground }}>{snippet.file}</span>\n </div>\n {snippet.description && (\n <div style={{ padding: `${spacing[2]}px ${spacing[4]}px`, borderBottom: `1px solid ${colors.border}` }}>\n <span style={{ fontSize: typography.fontSize.sm, color: colors.mutedForeground }}>{snippet.description}</span>\n </div>\n )}\n <pre style={{ flex: 1, padding: spacing[4], margin: 0, fontFamily: typography.fontFamily.mono, fontSize: typography.fontSize.sm, color: colors.foreground, overflow: \"hidden\", whiteSpace: \"pre-wrap\" }}>\n {snippet.code}\n </pre>\n </div>\n );\n};\n\n// ============================================================================\n// UI Scene\n// ============================================================================\n\nconst UIScene: React.FC<{\n title: string;\n componentName: string;\n description: string;\n jsx?: string;\n pattern?: string;\n}> = ({ title, componentName, description, jsx, pattern }) => {\n const frame = useCurrentFrame();\n const { fps, durationInFrames } = useVideoConfig();\n\n const fadeIn = interpolate(frame, [0, 15], [0, 1], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" });\n const fadeOut = interpolate(frame, [durationInFrames - 15, durationInFrames], [1, 0], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" });\n const uiScale = spring({ frame: frame - 10, fps, config: { damping: 15, stiffness: 100 } });\n\n return (\n <AbsoluteFill\n style={{\n backgroundColor: colors.background,\n display: \"flex\",\n flexDirection: \"column\",\n padding: spacing[10],\n opacity: fadeIn * fadeOut,\n fontFamily: typography.fontFamily.sans,\n }}\n >\n <div style={{ marginBottom: spacing[6] }}>\n <h3 style={{ color: colors.primary, fontSize: typography.fontSize[\"2xl\"], fontWeight: typography.fontWeight.semibold, margin: 0 }}>{title}</h3>\n <p style={{ color: colors.mutedForeground, fontSize: typography.fontSize.sm, marginTop: spacing[1] }}>{description}</p>\n </div>\n\n <div style={{ flex: 1, display: \"flex\", alignItems: \"center\", justifyContent: \"center\", transform: `scale(${Math.max(0, uiScale)})` }}>\n <BrowserFrame title={componentName}>\n {jsx ? <div dangerouslySetInnerHTML={{ __html: convertJsxToHtml(jsx) }} /> : <PlaceholderUI pattern={pattern} name={componentName} />}\n </BrowserFrame>\n </div>\n\n <div style={{ position: \"absolute\", bottom: spacing[6], right: spacing[6] }}>\n <code style={{ backgroundColor: colors.card, border: `1px solid ${colors.border}`, borderRadius: borderRadius.md, padding: `${spacing[1]}px ${spacing[3]}px`, fontSize: typography.fontSize.xs, color: colors.mutedForeground, fontFamily: typography.fontFamily.mono }}>\n &lt;{componentName} /&gt;\n </code>\n </div>\n </AbsoluteFill>\n );\n};\n\nconst BrowserFrame: React.FC<{ title: string; children: React.ReactNode }> = ({ title, children }) => (\n <div style={{ backgroundColor: colors.card, borderRadius: borderRadius.lg, border: `1px solid ${colors.border}`, boxShadow: \"0 25px 50px -12px rgba(0, 0, 0, 0.5)\", overflow: \"hidden\", maxWidth: \"90%\", maxHeight: \"80%\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: spacing[2], padding: `${spacing[2]}px ${spacing[4]}px`, backgroundColor: colors.popover, borderBottom: `1px solid ${colors.border}` }}>\n <div style={{ display: \"flex\", gap: 6 }}>\n <div style={{ width: 10, height: 10, borderRadius: \"50%\", backgroundColor: \"#FF5F56\" }} />\n <div style={{ width: 10, height: 10, borderRadius: \"50%\", backgroundColor: \"#FFBD2E\" }} />\n <div style={{ width: 10, height: 10, borderRadius: \"50%\", backgroundColor: \"#27CA40\" }} />\n </div>\n <div style={{ flex: 1, marginLeft: spacing[4], backgroundColor: colors.background, borderRadius: borderRadius.sm, padding: `${spacing[1]}px ${spacing[3]}px`, fontSize: typography.fontSize.xs, color: colors.mutedForeground }}>\n localhost:3000/{title.toLowerCase()}\n </div>\n </div>\n <div style={{ padding: spacing[8], backgroundColor: colors.background, minWidth: 600, minHeight: 300 }}>\n {children}\n </div>\n </div>\n);\n\nconst PlaceholderUI: React.FC<{ pattern?: string; name: string }> = ({ pattern, name }) => (\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"center\", height: \"100%\", color: colors.mutedForeground }}>\n <span>{pattern ? `${pattern}: ` : \"\"}{name}</span>\n </div>\n);\n\n// ============================================================================\n// Outro Scene\n// ============================================================================\n\nconst OutroScene: React.FC<{\n title: string;\n content: string;\n guidelines: string[];\n}> = ({ title, content, guidelines }) => {\n const frame = useCurrentFrame();\n const { fps } = useVideoConfig();\n\n const logoScale = spring({ frame, fps, config: { damping: 12, stiffness: 100 } });\n const fadeIn = interpolate(frame, [0, 15], [0, 1], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" });\n\n return (\n <AbsoluteFill\n style={{\n backgroundColor: colors.background,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: spacing[16],\n opacity: fadeIn,\n fontFamily: typography.fontFamily.sans,\n }}\n >\n <div style={{ marginBottom: spacing[8], transform: `scale(${logoScale})` }}>\n <Logo size={60} />\n </div>\n\n <h2 style={{ color: colors.primary, fontSize: typography.fontSize[\"3xl\"], fontWeight: typography.fontWeight.bold, marginBottom: spacing[4] }}>{title}</h2>\n <p style={{ color: colors.mutedForeground, fontSize: typography.fontSize.lg, textAlign: \"center\", maxWidth: 800 }}>{content}</p>\n\n {guidelines.length > 0 && (\n <Card style={{ marginTop: spacing[10], maxWidth: 700 }}>\n <span style={{ fontSize: typography.fontSize.xs, color: colors.mutedForeground, textTransform: \"uppercase\", letterSpacing: \"0.05em\" }}>Key Takeaways</span>\n <div style={{ marginTop: spacing[3], display: \"flex\", flexDirection: \"column\", gap: spacing[2] }}>\n {guidelines.slice(0, 3).map((g, i) => (\n <div key={i} style={{ display: \"flex\", alignItems: \"flex-start\", gap: spacing[2] }}>\n <CheckIcon />\n <span style={{ color: colors.foreground, fontSize: typography.fontSize.sm }}>{g}</span>\n </div>\n ))}\n </div>\n </Card>\n )}\n\n <div style={{ position: \"absolute\", bottom: spacing[8], display: \"flex\", alignItems: \"center\", gap: spacing[2] }}>\n <span style={{ color: colors.mutedForeground, fontSize: typography.fontSize.sm }}>Generated with</span>\n <span style={{ color: colors.primary, fontSize: typography.fontSize.sm, fontWeight: typography.fontWeight.semibold }}>Visible</span>\n </div>\n </AbsoluteFill>\n );\n};\n\n// ============================================================================\n// Default Scene\n// ============================================================================\n\nconst DefaultScene: React.FC<{ title: string; content: string }> = ({ title, content }) => {\n const frame = useCurrentFrame();\n const { durationInFrames } = useVideoConfig();\n\n const fadeIn = interpolate(frame, [0, 15], [0, 1], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" });\n const fadeOut = interpolate(frame, [durationInFrames - 15, durationInFrames], [1, 0], { extrapolateLeft: \"clamp\", extrapolateRight: \"clamp\" });\n\n return (\n <AbsoluteFill\n style={{\n backgroundColor: colors.background,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: spacing[16],\n opacity: fadeIn * fadeOut,\n fontFamily: typography.fontFamily.sans,\n }}\n >\n <h2 style={{ color: colors.foreground, fontSize: typography.fontSize[\"4xl\"], fontWeight: typography.fontWeight.bold }}>{title}</h2>\n <p style={{ color: colors.mutedForeground, fontSize: typography.fontSize.lg, textAlign: \"center\", maxWidth: 800 }}>{content}</p>\n </AbsoluteFill>\n );\n};\n\n// ============================================================================\n// UI Components\n// ============================================================================\n\nconst Card: React.FC<{ children: React.ReactNode; style?: React.CSSProperties }> = ({ children, style }) => (\n <div style={{ backgroundColor: colors.card, border: `1px solid ${colors.border}`, borderRadius: borderRadius.lg, padding: spacing[6], ...style }}>\n {children}\n </div>\n);\n\nconst Badge: React.FC<{ children: React.ReactNode; variant?: \"default\" | \"secondary\" }> = ({ children, variant = \"default\" }) => (\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n fontSize: typography.fontSize.xs,\n fontWeight: typography.fontWeight.medium,\n padding: `${spacing[1]}px ${spacing[2]}px`,\n borderRadius: borderRadius.full,\n backgroundColor: variant === \"secondary\" ? colors.secondary : `${colors.primary}22`,\n color: variant === \"secondary\" ? colors.secondaryForeground : colors.primary,\n border: variant === \"default\" ? \"none\" : `1px solid ${colors.border}`,\n }}\n >\n {children}\n </span>\n);\n\nconst MetricCard: React.FC<{ label: string; value: string; variant?: \"default\" | \"destructive\" }> = ({ label, value, variant = \"default\" }) => {\n const accentColor = variant === \"destructive\" ? colors.destructive : colors.primary;\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", padding: spacing[6], backgroundColor: colors.card, borderRadius: borderRadius.lg, border: `1px solid ${colors.border}`, minWidth: 200 }}>\n <span style={{ color: accentColor, fontSize: typography.fontSize[\"2xl\"], fontWeight: typography.fontWeight.bold }}>{value}</span>\n <span style={{ color: colors.mutedForeground, fontSize: typography.fontSize.sm, marginTop: spacing[1] }}>{label}</span>\n </div>\n );\n};\n\n// ============================================================================\n// Icons\n// ============================================================================\n\nconst Logo: React.FC<{ size?: number }> = ({ size = 80 }) => (\n <svg width={size} height={size} viewBox=\"0 0 100 100\">\n <circle cx={50} cy={50} r={45} fill={colors.primary} opacity={0.1} />\n <circle cx={50} cy={50} r={35} fill={colors.primary} opacity={0.2} />\n <ellipse cx={50} cy={50} rx={25} ry={15} fill=\"none\" stroke={colors.primary} strokeWidth={3} />\n <circle cx={50} cy={50} r={8} fill={colors.primary} />\n <circle cx={53} cy={47} r={3} fill={colors.foreground} />\n </svg>\n);\n\nconst FolderIcon: React.FC = () => (\n <svg width={40} height={40} viewBox=\"0 0 24 24\" fill=\"none\" stroke={colors.primary} strokeWidth={2}>\n <path d=\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\" />\n </svg>\n);\n\nconst FileIcon: React.FC = () => (\n <svg width={16} height={16} viewBox=\"0 0 24 24\" fill=\"none\" stroke={colors.mutedForeground} strokeWidth={2}>\n <path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\" />\n <polyline points=\"14,2 14,8 20,8\" />\n </svg>\n);\n\nconst CheckIcon: React.FC = () => (\n <svg width={16} height={16} viewBox=\"0 0 24 24\" fill=\"none\" stroke={colors.primary} strokeWidth={2} style={{ flexShrink: 0, marginTop: 2 }}>\n <polyline points=\"20,6 9,17 4,12\" />\n </svg>\n);\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nfunction formatSourceType(type: string): string {\n const map: Record<string, string> = { pr: \"Pull Request\", commit: \"Commit\", \"code-section\": \"Feature\", repository: \"Repository\" };\n return map[type] || type;\n}\n\nfunction convertJsxToHtml(jsx: string): string {\n return jsx.replace(/style=\\{\\{([^}]+)\\}\\}/g, (_, styles) => {\n const cssString = styles\n .split(\",\")\n .map((s: string) => {\n const [key, value] = s.split(\":\").map((x: string) => x.trim());\n if (!key || !value) return \"\";\n const cssKey = key.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n const cssValue = value.replace(/[\"']/g, \"\");\n return `${cssKey}: ${cssValue}`;\n })\n .filter(Boolean)\n .join(\"; \");\n return `style=\"${cssString}\"`;\n });\n}\n","/**\n * Remotion Root\n *\n * Registers all video compositions.\n */\n\nimport React from \"react\";\nimport { Composition } from \"remotion\";\nimport { Main, VideoStoryboard } from \"./components\";\nimport { dimensions } from \"./theme\";\n\n/**\n * Default storyboard for preview\n */\nconst defaultStoryboard: VideoStoryboard = {\n title: \"Sample Feature\",\n totalDurationInFrames: 900,\n scenes: [\n {\n id: \"title\",\n type: \"title\",\n title: \"New Feature\",\n content: \"A sample video composition\",\n durationInFrames: 120,\n props: { keywords: [\"sample\", \"demo\"] },\n },\n {\n id: \"overview\",\n type: \"overview\",\n title: \"What Changed\",\n content: \"This is a sample overview scene.\",\n durationInFrames: 180,\n props: { componentCount: 5, breakingChanges: false },\n },\n {\n id: \"walkthrough\",\n type: \"walkthrough\",\n title: \"How It Works\",\n content: \"Step by step explanation\",\n durationInFrames: 240,\n props: { steps: [\"Step 1: Initialize\", \"Step 2: Process\", \"Step 3: Complete\"], stepIndex: 0 },\n },\n {\n id: \"code\",\n type: \"code\",\n title: \"Files Changed\",\n content: \"5 files affected\",\n durationInFrames: 180,\n props: { files: [\"src/index.ts\", \"src/utils.ts\", \"src/components/App.tsx\"], totalFiles: 5 },\n },\n {\n id: \"outro\",\n type: \"outro\",\n title: \"Summary\",\n content: \"Learn more about this feature\",\n durationInFrames: 180,\n props: { guidelines: [\"Test thoroughly\", \"Update documentation\"] },\n },\n ],\n artifact: {\n title: \"Sample Feature\",\n description: \"A sample feature for testing\",\n source: { type: \"code-section\", reference: \"sample\" },\n context: {\n summary: \"This is a sample feature.\",\n technicalDetails: [\"Detail 1\", \"Detail 2\"],\n affectedComponents: [\"src/index.ts\"],\n breakingChanges: false,\n keywords: [\"sample\"],\n },\n guidelines: [\"Test thoroughly\"],\n },\n theme: {\n primaryColor: \"#10B981\",\n backgroundColor: \"#0A0A0B\",\n foregroundColor: \"#FAFAFA\",\n accentColor: \"#10B981\",\n mutedColor: \"#A1A1A6\",\n cardColor: \"#141415\",\n borderColor: \"#27272A\",\n fontFamily: \"Inter, system-ui, sans-serif\",\n },\n};\n\nexport const RemotionRoot: React.FC = () => {\n return (\n <>\n <Composition\n id=\"Main\"\n component={Main}\n durationInFrames={900}\n fps={30}\n width={dimensions[\"1080p\"].width}\n height={dimensions[\"1080p\"].height}\n defaultProps={{ storyboard: defaultStoryboard }}\n calculateMetadata={async ({ props }) => ({\n durationInFrames: props.storyboard?.totalDurationInFrames || 900,\n })}\n />\n\n <Composition\n id=\"Main720p\"\n component={Main}\n durationInFrames={900}\n fps={30}\n width={dimensions[\"720p\"].width}\n height={dimensions[\"720p\"].height}\n defaultProps={{ storyboard: defaultStoryboard }}\n calculateMetadata={async ({ props }) => ({\n durationInFrames: props.storyboard?.totalDurationInFrames || 900,\n })}\n />\n\n <Composition\n id=\"MainSquare\"\n component={Main}\n durationInFrames={900}\n fps={30}\n width={dimensions.square.width}\n height={dimensions.square.height}\n defaultProps={{ storyboard: defaultStoryboard }}\n calculateMetadata={async ({ props }) => ({\n durationInFrames: props.storyboard?.totalDurationInFrames || 900,\n })}\n />\n\n <Composition\n id=\"MainVertical\"\n component={Main}\n durationInFrames={900}\n fps={30}\n width={dimensions.vertical.width}\n height={dimensions.vertical.height}\n defaultProps={{ storyboard: defaultStoryboard }}\n calculateMetadata={async ({ props }) => ({\n durationInFrames: props.storyboard?.totalDurationInFrames || 900,\n })}\n />\n </>\n );\n};\n","/**\n * Remotion Entry Point\n *\n * This file registers the Remotion compositions.\n */\n\nimport { registerRoot } from \"remotion\";\nimport { RemotionRoot } from \"./Root\";\n\nregisterRoot(RemotionRoot);\n"]}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Remotion Components
3
+ *
4
+ * React components for video rendering with Remotion.
5
+ * All components use inline styles for portability.
6
+ */
7
+
8
+ interface VideoScene {
9
+ id: string;
10
+ type: string;
11
+ title: string;
12
+ content: string;
13
+ durationInFrames: number;
14
+ props?: Record<string, unknown>;
15
+ }
16
+ interface VideoStoryboard {
17
+ title: string;
18
+ totalDurationInFrames: number;
19
+ scenes: VideoScene[];
20
+ artifact: {
21
+ title: string;
22
+ description: string;
23
+ source: {
24
+ type: string;
25
+ reference: string;
26
+ url?: string;
27
+ };
28
+ context: {
29
+ summary: string;
30
+ technicalDetails: string[];
31
+ affectedComponents: string[];
32
+ breakingChanges: boolean;
33
+ keywords: string[];
34
+ };
35
+ guidelines: string[];
36
+ };
37
+ theme: {
38
+ primaryColor: string;
39
+ backgroundColor: string;
40
+ foregroundColor: string;
41
+ accentColor: string;
42
+ mutedColor: string;
43
+ cardColor: string;
44
+ borderColor: string;
45
+ fontFamily: string;
46
+ };
47
+ }
48
+
49
+ /**
50
+ * Video dimensions
51
+ */
52
+ declare const dimensions: {
53
+ readonly "1080p": {
54
+ readonly width: 1920;
55
+ readonly height: 1080;
56
+ };
57
+ readonly "720p": {
58
+ readonly width: 1280;
59
+ readonly height: 720;
60
+ };
61
+ readonly "480p": {
62
+ readonly width: 854;
63
+ readonly height: 480;
64
+ };
65
+ readonly square: {
66
+ readonly width: 1080;
67
+ readonly height: 1080;
68
+ };
69
+ readonly vertical: {
70
+ readonly width: 1080;
71
+ readonly height: 1920;
72
+ };
73
+ };
74
+
75
+ /**
76
+ * Video Render Module
77
+ *
78
+ * Renders videos using Remotion's Node.js API.
79
+ * Everything is self-contained within the CLI.
80
+ */
81
+
82
+ interface RenderOptions {
83
+ /** The storyboard to render */
84
+ storyboard: VideoStoryboard;
85
+ /** Output path for the video */
86
+ outputPath: string;
87
+ /** Resolution preset */
88
+ resolution?: keyof typeof dimensions;
89
+ /** Video codec */
90
+ codec?: "h264" | "h265" | "vp8" | "vp9";
91
+ /** Enable verbose logging */
92
+ verbose?: boolean;
93
+ /** Callback for progress updates */
94
+ onProgress?: (progress: number) => void;
95
+ }
96
+ interface RenderResult {
97
+ success: boolean;
98
+ outputPath?: string;
99
+ error?: string;
100
+ durationMs?: number;
101
+ }
102
+ /**
103
+ * Render a video from a storyboard
104
+ */
105
+ declare function renderVideo(options: RenderOptions): Promise<RenderResult>;
106
+ /**
107
+ * Check if Remotion dependencies are available
108
+ */
109
+ declare function isRemotionAvailable(): boolean;
110
+
111
+ export { type RenderOptions, type RenderResult, isRemotionAvailable, renderVideo };
@@ -0,0 +1,110 @@
1
+ import { bundle } from '@remotion/bundler';
2
+ import { selectComposition, renderMedia } from '@remotion/renderer';
3
+ import { existsSync, mkdirSync, writeFileSync } from 'fs';
4
+ import { dirname, join } from 'path';
5
+ import { fileURLToPath } from 'url';
6
+
7
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
8
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
9
+ }) : x)(function(x) {
10
+ if (typeof require !== "undefined") return require.apply(this, arguments);
11
+ throw Error('Dynamic require of "' + x + '" is not supported');
12
+ });
13
+ var __dirname$1 = dirname(fileURLToPath(import.meta.url));
14
+ async function renderVideo(options) {
15
+ const startTime = Date.now();
16
+ try {
17
+ const {
18
+ storyboard,
19
+ outputPath,
20
+ resolution = "1080p",
21
+ codec = "h264",
22
+ verbose = false,
23
+ onProgress
24
+ } = options;
25
+ const outputDir = dirname(outputPath);
26
+ if (!existsSync(outputDir)) {
27
+ mkdirSync(outputDir, { recursive: true });
28
+ }
29
+ const propsPath = join(outputDir, ".video-props.json");
30
+ writeFileSync(propsPath, JSON.stringify({ storyboard }, null, 2));
31
+ if (verbose) {
32
+ console.log("Bundling Remotion project...");
33
+ }
34
+ const entryPoint = join(__dirname$1, "index.tsx");
35
+ const bundleLocation = await bundle({
36
+ entryPoint,
37
+ onProgress: (progress) => {
38
+ if (verbose) {
39
+ console.log(`Bundling: ${Math.round(progress * 100)}%`);
40
+ }
41
+ }
42
+ });
43
+ if (verbose) {
44
+ console.log("Bundle complete. Selecting composition...");
45
+ }
46
+ const compositionId = getCompositionId(resolution);
47
+ const composition = await selectComposition({
48
+ serveUrl: bundleLocation,
49
+ id: compositionId,
50
+ inputProps: { storyboard }
51
+ });
52
+ if (verbose) {
53
+ console.log(`Rendering ${composition.durationInFrames} frames at ${composition.width}x${composition.height}...`);
54
+ }
55
+ await renderMedia({
56
+ composition,
57
+ serveUrl: bundleLocation,
58
+ codec,
59
+ outputLocation: outputPath,
60
+ inputProps: { storyboard },
61
+ onProgress: ({ progress }) => {
62
+ if (onProgress) {
63
+ onProgress(progress);
64
+ }
65
+ if (verbose) {
66
+ console.log(`Rendering: ${Math.round(progress * 100)}%`);
67
+ }
68
+ }
69
+ });
70
+ const durationMs = Date.now() - startTime;
71
+ if (verbose) {
72
+ console.log(`Render complete in ${durationMs}ms`);
73
+ }
74
+ return {
75
+ success: true,
76
+ outputPath,
77
+ durationMs
78
+ };
79
+ } catch (error) {
80
+ return {
81
+ success: false,
82
+ error: error instanceof Error ? error.message : String(error),
83
+ durationMs: Date.now() - startTime
84
+ };
85
+ }
86
+ }
87
+ function getCompositionId(resolution) {
88
+ const map = {
89
+ "1080p": "Main",
90
+ "720p": "Main720p",
91
+ "480p": "Main720p",
92
+ // Use 720p for 480p
93
+ square: "MainSquare",
94
+ vertical: "MainVertical"
95
+ };
96
+ return map[resolution] || "Main";
97
+ }
98
+ function isRemotionAvailable() {
99
+ try {
100
+ __require.resolve("@remotion/bundler");
101
+ __require.resolve("@remotion/renderer");
102
+ return true;
103
+ } catch {
104
+ return false;
105
+ }
106
+ }
107
+
108
+ export { isRemotionAvailable, renderVideo };
109
+ //# sourceMappingURL=render.js.map
110
+ //# sourceMappingURL=render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/video/remotion/render.ts"],"names":["__dirname"],"mappings":"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","file":"render.js","sourcesContent":["/**\n * Video Render Module\n *\n * Renders videos using Remotion's Node.js API.\n * Everything is self-contained within the CLI.\n */\n\nimport { bundle } from \"@remotion/bundler\";\nimport { renderMedia, selectComposition } from \"@remotion/renderer\";\nimport { existsSync, mkdirSync, writeFileSync } from \"fs\";\nimport { dirname, join } from \"path\";\nimport { fileURLToPath } from \"url\";\nimport type { VideoStoryboard } from \"./components\";\nimport { dimensions } from \"./theme\";\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nexport interface RenderOptions {\n /** The storyboard to render */\n storyboard: VideoStoryboard;\n /** Output path for the video */\n outputPath: string;\n /** Resolution preset */\n resolution?: keyof typeof dimensions;\n /** Video codec */\n codec?: \"h264\" | \"h265\" | \"vp8\" | \"vp9\";\n /** Enable verbose logging */\n verbose?: boolean;\n /** Callback for progress updates */\n onProgress?: (progress: number) => void;\n}\n\nexport interface RenderResult {\n success: boolean;\n outputPath?: string;\n error?: string;\n durationMs?: number;\n}\n\n/**\n * Render a video from a storyboard\n */\nexport async function renderVideo(options: RenderOptions): Promise<RenderResult> {\n const startTime = Date.now();\n\n try {\n const {\n storyboard,\n outputPath,\n resolution = \"1080p\",\n codec = \"h264\",\n verbose = false,\n onProgress,\n } = options;\n\n // Ensure output directory exists\n const outputDir = dirname(outputPath);\n if (!existsSync(outputDir)) {\n mkdirSync(outputDir, { recursive: true });\n }\n\n // Write storyboard to temp file for props\n const propsPath = join(outputDir, \".video-props.json\");\n writeFileSync(propsPath, JSON.stringify({ storyboard }, null, 2));\n\n if (verbose) {\n console.log(\"Bundling Remotion project...\");\n }\n\n // Get the entry point path\n const entryPoint = join(__dirname, \"index.tsx\");\n\n // Bundle the project\n const bundleLocation = await bundle({\n entryPoint,\n onProgress: (progress) => {\n if (verbose) {\n console.log(`Bundling: ${Math.round(progress * 100)}%`);\n }\n },\n });\n\n if (verbose) {\n console.log(\"Bundle complete. Selecting composition...\");\n }\n\n // Select composition based on resolution\n const compositionId = getCompositionId(resolution);\n\n const composition = await selectComposition({\n serveUrl: bundleLocation,\n id: compositionId,\n inputProps: { storyboard },\n });\n\n if (verbose) {\n console.log(`Rendering ${composition.durationInFrames} frames at ${composition.width}x${composition.height}...`);\n }\n\n // Render the video\n await renderMedia({\n composition,\n serveUrl: bundleLocation,\n codec,\n outputLocation: outputPath,\n inputProps: { storyboard },\n onProgress: ({ progress }) => {\n if (onProgress) {\n onProgress(progress);\n }\n if (verbose) {\n console.log(`Rendering: ${Math.round(progress * 100)}%`);\n }\n },\n });\n\n const durationMs = Date.now() - startTime;\n\n if (verbose) {\n console.log(`Render complete in ${durationMs}ms`);\n }\n\n return {\n success: true,\n outputPath,\n durationMs,\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n durationMs: Date.now() - startTime,\n };\n }\n}\n\n/**\n * Get composition ID for a resolution\n */\nfunction getCompositionId(resolution: keyof typeof dimensions): string {\n const map: Record<string, string> = {\n \"1080p\": \"Main\",\n \"720p\": \"Main720p\",\n \"480p\": \"Main720p\", // Use 720p for 480p\n square: \"MainSquare\",\n vertical: \"MainVertical\",\n };\n return map[resolution] || \"Main\";\n}\n\n/**\n * Check if Remotion dependencies are available\n */\nexport function isRemotionAvailable(): boolean {\n try {\n require.resolve(\"@remotion/bundler\");\n require.resolve(\"@remotion/renderer\");\n return true;\n } catch {\n return false;\n }\n}\n"]}
@@ -0,0 +1,154 @@
1
+ import { A as ArtifactSource, a as ArtifactContext } from '../types-BmNeVNFe.js';
2
+
3
+ /**
4
+ * Visible API Client
5
+ *
6
+ * HTTP client for generating artifacts via the Visible API.
7
+ */
8
+
9
+ interface ArtifactPayload {
10
+ title: string;
11
+ description: string;
12
+ source: ArtifactSource;
13
+ context: ArtifactContext;
14
+ guidelines: string[];
15
+ }
16
+
17
+ /**
18
+ * Video Generation Types
19
+ *
20
+ * Types for video generation from artifacts.
21
+ */
22
+
23
+ /**
24
+ * Code snippet with metadata for display in videos
25
+ */
26
+ interface CodeSnippet {
27
+ /** File path */
28
+ file: string;
29
+ /** Code content */
30
+ code: string;
31
+ /** Starting line number (optional) */
32
+ startLine?: number;
33
+ /** Language for syntax highlighting */
34
+ language?: string;
35
+ /** Description of what this code shows */
36
+ description?: string;
37
+ /** Whether this is an addition (green), deletion (red), or neutral */
38
+ changeType?: "added" | "deleted" | "modified" | "context";
39
+ }
40
+ /**
41
+ * Enhanced artifact payload with code content for video generation
42
+ */
43
+ interface VideoArtifactPayload extends ArtifactPayload {
44
+ /** Relevant code snippets extracted from the analysis */
45
+ codeSnippets?: CodeSnippet[];
46
+ /** Full diff content (for diff-based analysis) */
47
+ diffContent?: string;
48
+ /** UI components identified (for potential screenshot/mock generation) */
49
+ uiComponents?: Array<{
50
+ name: string;
51
+ file: string;
52
+ props?: Record<string, unknown>;
53
+ }>;
54
+ }
55
+ /**
56
+ * Configuration for video generation
57
+ */
58
+ interface VideoConfig {
59
+ /** Output directory for the video */
60
+ outputDir: string;
61
+ /** Output filename (without extension) */
62
+ filename?: string;
63
+ /** Video format */
64
+ format?: "mp4" | "webm";
65
+ /** Video resolution */
66
+ resolution?: VideoResolution;
67
+ /** Frames per second */
68
+ fps?: number;
69
+ /** Whether to generate a poster image */
70
+ generatePoster?: boolean;
71
+ }
72
+ /**
73
+ * Video resolution preset
74
+ */
75
+ interface VideoResolution {
76
+ width: number;
77
+ height: number;
78
+ }
79
+ /**
80
+ * Theme/design tokens for video styling
81
+ */
82
+ interface VideoTheme {
83
+ /** Primary brand color */
84
+ primaryColor: string;
85
+ /** Background color */
86
+ backgroundColor: string;
87
+ /** Foreground/text color */
88
+ foregroundColor: string;
89
+ /** Accent color */
90
+ accentColor: string;
91
+ /** Muted text color */
92
+ mutedColor: string;
93
+ /** Card background color */
94
+ cardColor: string;
95
+ /** Border color */
96
+ borderColor: string;
97
+ /** Font family */
98
+ fontFamily: string;
99
+ }
100
+ /**
101
+ * Result of video generation
102
+ */
103
+ interface VideoGenerationResult {
104
+ /** Whether generation succeeded */
105
+ success: boolean;
106
+ /** Path to the generated video */
107
+ videoPath?: string;
108
+ /** Path to the poster image (if generated) */
109
+ posterPath?: string;
110
+ /** Error message if failed */
111
+ error?: string;
112
+ /** Generation duration in ms */
113
+ durationMs?: number;
114
+ }
115
+ /**
116
+ * Input for generating a video from an artifact
117
+ */
118
+ interface GenerateVideoInput {
119
+ /** The artifact payload (can be enhanced with code content) */
120
+ artifact: ArtifactPayload | VideoArtifactPayload;
121
+ /** List of affected files (from analysis) */
122
+ files?: string[];
123
+ /** Code snippets to display in the video */
124
+ codeSnippets?: CodeSnippet[];
125
+ /** Video configuration */
126
+ config: VideoConfig;
127
+ /** Optional custom theme */
128
+ theme?: Partial<VideoTheme>;
129
+ /** Verbose logging */
130
+ verbose?: boolean;
131
+ }
132
+
133
+ /**
134
+ * Video Renderer
135
+ *
136
+ * Renders video using Remotion. Everything is self-contained in the CLI.
137
+ */
138
+
139
+ /**
140
+ * Generate a video from an artifact
141
+ *
142
+ * This function:
143
+ * 1. Creates a storyboard from the artifact
144
+ * 2. Writes the storyboard to a JSON file
145
+ * 3. Attempts to render with Remotion if available
146
+ * 4. Falls back to outputting props for manual rendering
147
+ */
148
+ declare function generateVideo(input: GenerateVideoInput): Promise<VideoGenerationResult>;
149
+ /**
150
+ * Check if Remotion is available for rendering
151
+ */
152
+ declare function isRemotionAvailable(): Promise<boolean>;
153
+
154
+ export { generateVideo, isRemotionAvailable };