Add new Mintlify documentation site (docs_new/) (#23001)

Co-authored-by: AdityaVKochar <adityavardhankochar@gmail.com>
Co-authored-by: mintlify[bot] <109931778+mintlify[bot]@users.noreply.github.com>
Co-authored-by: adhyan-jain <adhyanjain2006@gmail.com>
Co-authored-by: Adhyan Jain <71976554+adhyan-jain@users.noreply.github.com>
Co-authored-by: Maitri-shah29 <maitrirajivshah@gmail.com>
Co-authored-by: Adarsh Shirawalmath <114558126+adarshxs@users.noreply.github.com>
Co-authored-by: Maitri Shah <shah29maitri@gmail.com>
Co-authored-by: Aditya Vardhan Kochar <80113212+AdityaVKochar@users.noreply.github.com>
Co-authored-by: Rishit Shivam <164783543+pokymono@users.noreply.github.com>
Co-authored-by: Rishitshivam <164783543+Rishitshivam@users.noreply.github.com>
Co-authored-by: IshhanKheria <ishhankheria06@gmail.com>
Co-authored-by: Ishita Joshi <ishitata.joshi@gmail.com>
Co-authored-by: Richard Chen <104477092+Richardczl98@users.noreply.github.com>
Co-authored-by: longGGGGGG <553746008@qq.com>
Co-authored-by: Richard <richardchen@radixark.ai>
Co-authored-by: Nakul Sinha <nakul.new4socials@gmail.com>
Co-authored-by: Divyam Agrawal <ludicrouslytrue@gmail.com>
Co-authored-by: Richardczl98 <Zhenlinc@stanford.edu>
Co-authored-by: Krishang Zinzuwadia <krishangzinzuwadia@gmail.com>
Co-authored-by: nimeshas <nimesha.s106@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Jignas Paturu <86356085+JignasP@users.noreply.github.com>
Co-authored-by: zijiexia <37504505+zijiexia@users.noreply.github.com>
This commit is contained in:
Mingyi
2026-04-20 15:10:22 -07:00
committed by GitHub
co-authored by AdityaVKochar mintlify[bot] adhyan-jain Adhyan Jain Maitri-shah29 Adarsh Shirawalmath Maitri Shah Aditya Vardhan Kochar Rishit Shivam Rishitshivam IshhanKheria Ishita Joshi Richard Chen longGGGGGG Richard Nakul Sinha Divyam Agrawal Richardczl98 Krishang Zinzuwadia nimeshas Claude Opus 4.6 github-actions[bot] Jignas Paturu zijiexia
parent 575fdc2c4c
commit a3291b5654
330 changed files with 100371 additions and 0 deletions
@@ -0,0 +1,214 @@
export const SpecBundleDeployment = () => {
// Config options based on SpecBundleConfigGenerator - matching original structure exactly
const baseConfig = {
options: {
mode: {
name: 'mode',
title: 'Launch Mode',
renderType: 'radio',
items: [
{ id: 'with-server', label: 'With Server', subtitle: 'Launch SGLang server & Benchmark concurrently', default: true },
{ id: 'without-server', label: 'Without Server', subtitle: 'Connect to an existing server (--skip-launch-server)', default: false }
]
},
common: {
name: 'common',
title: 'Common Configuration',
renderType: 'inputs',
items: [
{ id: 'modelPath', label: 'Model Path', type: 'text', placeholder: 'e.g., meta-llama/Llama-3.1-8B-Instruct', default: 'meta-llama/Llama-3.1-8B-Instruct', description: 'Path to the target model.' },
{ id: 'port', label: 'Port', type: 'number', default: 30000, description: 'Port to launch/connect the SGLang server.' },
{ id: 'configList', label: 'Config List', type: 'text', default: '1,3,1,4', description: 'Format: <batch-size>,<num-steps>,<topk>,<num-draft-tokens>' },
{ id: 'benchmarkList', label: 'Benchmark List', type: 'textarea', default: 'mtbench:5 ceval:5:accountant', description: 'Format: <benchmark-name>:<num-prompts>:<subset>. Supported: aime, ceval, financeqa, gpqa, gsm8k, humaneval, livecodebench, math500, mmlu, mmstar, mtbench, simpleqa' }
]
},
server: {
name: 'server',
title: 'Server Configuration',
renderType: 'inputs',
requiredMode: 'with-server',
items: [
{ id: 'draftModelPath', label: 'Draft Model Path', type: 'text', placeholder: 'Path to draft model', default: '', description: 'Path to the speculative draft model.' },
{ id: 'tpSize', label: 'TP Size', type: 'number', default: 1, description: 'Number of GPUs for Tensor Parallelism.' },
{ id: 'memFraction', label: 'Memory Fraction Static', type: 'number', step: '0.1', default: 0.9, description: 'The memory fraction for the static memory.' },
{ id: 'attentionBackend', label: 'Attention Backend', type: 'text', default: '', description: 'The attention backend used in sglang' },
{ id: 'trustRemoteCode', label: 'Trust Remote Code', type: 'checkbox', default: true, description: 'Whether to trust remote code.' }
]
}
}
};
// Initialize state - matching original logic
const getInitialState = () => {
const initialState = {};
Object.values(baseConfig.options).forEach(option => {
if (option.renderType === 'radio') {
const defaultItem = option.items.find(item => item.default);
initialState[option.name] = defaultItem ? defaultItem.id : option.items[0].id;
} else if (option.renderType === 'inputs') {
option.items.forEach(item => {
initialState[item.id] = item.default;
});
}
});
return initialState;
};
const [values, setValues] = useState(getInitialState);
const [isDark, setIsDark] = useState(false);
// Detect dark mode
useEffect(() => {
const checkDarkMode = () => {
const html = document.documentElement;
const isDarkMode = html.classList.contains('dark') ||
html.getAttribute('data-theme') === 'dark' ||
html.style.colorScheme === 'dark';
setIsDark(isDarkMode);
};
checkDarkMode();
const observer = new MutationObserver(checkDarkMode);
observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class', 'data-theme', 'style'] });
return () => observer.disconnect();
}, []);
// Get display options based on current mode
const getDisplayOptions = () => {
const options = {};
const currentMode = values.mode;
Object.entries(baseConfig.options).forEach(([key, option]) => {
if (option.requiredMode && option.requiredMode !== currentMode) {
return;
}
options[key] = option;
});
return options;
};
const handleRadioChange = (optionName, itemId) => {
setValues(prev => ({ ...prev, [optionName]: itemId }));
};
const handleInputChange = (itemId, value) => {
setValues(prev => ({ ...prev, [itemId]: value }));
};
const handleCheckboxChange = (itemId, checked) => {
setValues(prev => ({ ...prev, [itemId]: checked }));
};
// Generate command - matching original logic
const generateCommand = () => {
const { mode, modelPath, port, configList, benchmarkList, draftModelPath, tpSize, memFraction, attentionBackend, trustRemoteCode } = values;
let cmd = 'python bench_eagle3.py';
if (modelPath) cmd += ` \\\n --model-path ${modelPath}`;
if (port) cmd += ` \\\n --port ${port}`;
if (configList) cmd += ` \\\n --config-list ${configList}`;
if (benchmarkList) cmd += ` \\\n --benchmark-list ${benchmarkList.replace(/\n/g, ' ')}`;
if (mode === 'without-server') {
cmd += ' \\\n --skip-launch-server';
} else {
if (draftModelPath) cmd += ` \\\n --speculative-draft-model-path ${draftModelPath}`;
if (tpSize) cmd += ` \\\n --tp-size ${tpSize}`;
if (memFraction) cmd += ` \\\n --mem-fraction-static ${memFraction}`;
if (attentionBackend) cmd += ` \\\n --attention-backend ${attentionBackend}`;
if (trustRemoteCode) cmd += ` \\\n --trust-remote-code`;
}
return cmd;
};
// Styles
const containerStyle = { maxWidth: '900px', margin: '0 auto', display: 'flex', flexDirection: 'column', gap: '4px' };
const cardStyle = { padding: '8px 12px', border: `1px solid ${isDark ? '#374151' : '#e5e7eb'}`, borderLeft: `3px solid ${isDark ? '#E85D4D' : '#D45D44'}`, borderRadius: '4px', display: 'flex', alignItems: 'flex-start', gap: '12px', background: isDark ? '#1f2937' : '#fff' };
const titleStyle = { fontSize: '13px', fontWeight: '600', minWidth: '180px', flexShrink: 0, color: isDark ? '#e5e7eb' : 'inherit', paddingTop: '4px' };
const contentStyle = { flex: 1 };
const itemsStyle = { display: 'flex', rowGap: '4px', columnGap: '6px', flexWrap: 'wrap', alignItems: 'center' };
const labelBaseStyle = { padding: '4px 10px', border: `1px solid ${isDark ? '#9ca3af' : '#d1d5db'}`, borderRadius: '3px', cursor: 'pointer', display: 'inline-flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', fontWeight: '500', fontSize: '13px', transition: 'all 0.2s', userSelect: 'none', minWidth: '45px', textAlign: 'center', background: isDark ? '#374151' : '#fff', color: isDark ? '#e5e7eb' : 'inherit' };
const checkedStyle = { background: '#D45D44', color: 'white', borderColor: '#D45D44' };
const subtitleStyle = { display: 'block', fontSize: '9px', marginTop: '1px', lineHeight: '1.1', opacity: 0.7 };
const inputGroupStyle = { display: 'flex', flexDirection: 'column', gap: '8px' };
const inputRowStyle = { display: 'flex', alignItems: 'flex-start', gap: '12px' };
const inputLabelStyle = { fontSize: '13px', fontWeight: '500', minWidth: '180px', flexShrink: 0, color: isDark ? '#e5e7eb' : 'inherit', paddingTop: '8px' };
const inputContentStyle = { flex: 1, display: 'flex', flexDirection: 'column' };
const inputStyle = { padding: '8px 12px', border: `1px solid ${isDark ? '#4b5563' : '#d1d5db'}`, borderRadius: '4px', fontSize: '13px', background: isDark ? '#374151' : '#fff', color: isDark ? '#e5e7eb' : 'inherit', width: '100%', boxSizing: 'border-box' };
const textareaStyle = { ...inputStyle, minHeight: '60px', resize: 'vertical' };
const descStyle = { color: isDark ? '#9ca3af' : '#666', marginTop: '4px', fontSize: '11px' };
const commandDisplayStyle = { flex: 1, padding: '12px 16px', background: isDark ? '#111827' : '#f5f5f5', borderRadius: '6px', fontFamily: "'Menlo', 'Monaco', 'Courier New', monospace", fontSize: '12px', lineHeight: '1.5', color: isDark ? '#e5e7eb' : '#374151', whiteSpace: 'pre-wrap', overflowX: 'auto', margin: 0, border: `1px solid ${isDark ? '#374151' : '#e5e7eb'}` };
const displayOptions = getDisplayOptions();
return (
<div style={containerStyle} className="not-prose">
{Object.entries(displayOptions).map(([key, option]) => (
<div key={key}>
{/* Render Radio Group - title on left */}
{option.renderType === 'radio' && (
<div style={cardStyle}>
<div style={titleStyle}>{option.title}</div>
<div style={{ ...contentStyle, ...itemsStyle }}>
{option.items.map(item => {
const isChecked = values[option.name] === item.id;
return (
<label key={item.id} style={{ ...labelBaseStyle, ...(isChecked ? checkedStyle : {}) }}>
<input type="radio" name={option.name} value={item.id} checked={isChecked} onChange={() => handleRadioChange(option.name, item.id)} style={{ display: 'none' }} />
{item.label}
{item.subtitle && <small style={{ ...subtitleStyle, color: isChecked ? 'rgba(255,255,255,0.85)' : 'inherit' }}>{item.subtitle}</small>}
</label>
);
})}
</div>
</div>
)}
{/* Render Input Group - each input has label on left */}
{option.renderType === 'inputs' && (
<div style={{ display: 'flex', flexDirection: 'column', gap: '4px' }}>
{option.items.map(item => (
<div key={item.id} style={cardStyle}>
<div style={inputLabelStyle}>{item.label}</div>
<div style={inputContentStyle}>
{item.type === 'textarea' ? (
<textarea
value={values[item.id]}
onChange={(e) => handleInputChange(item.id, e.target.value)}
style={textareaStyle}
/>
) : item.type === 'checkbox' ? (
<label style={{ display: 'flex', alignItems: 'center', cursor: 'pointer', gap: '8px', padding: '4px 0' }}>
<input
type="checkbox"
checked={values[item.id]}
onChange={(e) => handleCheckboxChange(item.id, e.target.checked)}
style={{ width: '16px', height: '16px', cursor: 'pointer' }}
/>
<span style={{ fontSize: '13px', color: isDark ? '#e5e7eb' : 'inherit' }}>Enabled</span>
</label>
) : (
<input
type={item.type}
value={values[item.id]}
placeholder={item.placeholder}
step={item.step}
onChange={(e) => handleInputChange(item.id, e.target.value)}
style={inputStyle}
/>
)}
{item.description && <small style={descStyle}>{item.description}</small>}
</div>
</div>
))}
</div>
)}
</div>
))}
<div style={cardStyle}>
<div style={titleStyle}>Generated Command</div>
<pre style={commandDisplayStyle}>{generateCommand()}</pre>
</div>
</div>
);
};