capsule-ai-cli
Version:
The AI Model Orchestrator - Intelligent multi-model workflows with device-locked licensing
91 lines • 4.66 kB
JavaScript
import React, { useState, useEffect } from 'react';
import { Box, Text } from 'ink';
import Spinner from 'ink-spinner';
import { CAPSULE_CORP_COLORS } from './capsule-corp-logo';
export const ModelFusionAnimation = ({ models, onComplete }) => {
const [phase, setPhase] = useState('charging');
const [powerLevel, setPowerLevel] = useState(0);
const [currentFrame, setCurrentFrame] = useState(0);
const fusionFrames = [
{ left: '🕺', right: '💃', center: ' ' },
{ left: ' 🕺', right: '💃 ', center: ' ' },
{ left: ' 🕺', right: '💃 ', center: ' ' },
{ left: ' ', right: ' ', center: '⚡' },
{ left: ' ', right: ' ', center: '💥' },
{ left: ' ', right: ' ', center: '🔮' }
];
useEffect(() => {
if (phase === 'charging') {
const interval = setInterval(() => {
setPowerLevel(prev => {
if (prev >= 9000) {
setPhase('fusion');
return prev;
}
return prev + 500;
});
}, 100);
return () => clearInterval(interval);
}
if (phase === 'fusion') {
const interval = setInterval(() => {
setCurrentFrame(prev => {
if (prev >= fusionFrames.length - 1) {
setPhase('complete');
onComplete?.();
return prev;
}
return prev + 1;
});
}, 300);
return () => clearInterval(interval);
}
}, [phase, onComplete]);
return (React.createElement(Box, { flexDirection: "column", alignItems: "center", paddingY: 1 },
phase === 'charging' && (React.createElement(React.Fragment, null,
React.createElement(Text, { color: CAPSULE_CORP_COLORS.yellow, bold: true }, "\u26A1 CHARGING POWER LEVELS \u26A1"),
React.createElement(Box, { marginY: 1 },
React.createElement(Text, null, "Power Level: "),
React.createElement(Text, { color: powerLevel > 8000 ? 'red' : 'yellow', bold: true }, powerLevel),
powerLevel > 8000 && React.createElement(Text, { color: "red", bold: true }, " (IT'S OVER 8000!)")),
React.createElement(Box, null, models.map((model, i) => (React.createElement(Box, { key: model, marginX: 1 },
React.createElement(Text, { color: "cyan" },
model,
": "),
React.createElement(Spinner, { type: "dots" }))))))),
phase === 'fusion' && (React.createElement(React.Fragment, null,
React.createElement(Text, { color: CAPSULE_CORP_COLORS.purple, bold: true }, "\u2728 MODEL FUSION DANCE \u2728"),
React.createElement(Box, { marginY: 1 },
React.createElement(Text, null, fusionFrames[currentFrame].left),
React.createElement(Text, { color: "yellow", bold: true }, fusionFrames[currentFrame].center),
React.createElement(Text, null, fusionFrames[currentFrame].right)),
React.createElement(Text, { dimColor: true },
"Combining ",
models.join(' + '),
"..."))),
phase === 'complete' && (React.createElement(Box, { flexDirection: "column", alignItems: "center" },
React.createElement(Text, { color: "green", bold: true }, "\uD83D\uDD25 FUSION COMPLETE! \uD83D\uDD25"),
React.createElement(Text, { color: CAPSULE_CORP_COLORS.saiyanBlue }, "Model Fusion\u2122 Power Level: MAXIMUM"),
React.createElement(Box, { marginTop: 1 },
React.createElement(Text, { dimColor: true }, "Ready to unleash combined AI power!"))))));
};
export const ModelScouter = ({ model, analyzing }) => {
const [dots, setDots] = useState('');
useEffect(() => {
if (analyzing) {
const interval = setInterval(() => {
setDots(prev => prev.length >= 3 ? '' : prev + '.');
}, 500);
return () => clearInterval(interval);
}
}, [analyzing]);
return (React.createElement(Box, null,
React.createElement(Text, { color: "green" }, "\uD83D\uDCE1 "),
React.createElement(Text, { color: "cyan" },
model,
": "),
analyzing ? (React.createElement(Text, { color: "yellow" },
"Analyzing",
dots)) : (React.createElement(Text, { color: "green" }, "Ready!"))));
};
//# sourceMappingURL=ModelFusionAnimation.js.map