File size: 3,712 Bytes
973db88 3380f8e 973db88 3380f8e 973db88 ca40114 973db88 3380f8e 973db88 3380f8e 065cfda 973db88 3380f8e 973db88 3380f8e 065cfda 973db88 065cfda 973db88 065cfda 973db88 065cfda 973db88 3380f8e 973db88 3380f8e 065cfda 973db88 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
/* static/index.js – FULL FILE */
const MODELS = [
{name:"Qwen/Qwen3‑32B",id:"Qwen/Qwen3-32B"},
{name:"Moonshot Kimi‑K2",id:"moonshotai/Kimi-K2-Instruct",provider:"groq"},
{name:"DeepSeek V3",id:"deepseek-ai/DeepSeek-V3-0324"},
{name:"DeepSeek R1",id:"deepseek-ai/DeepSeek-R1-0528"},
{name:"ERNIE‑4.5‑VL",id:"baidu/ERNIE-4.5-VL-424B-A47B-Base-PT"},
{name:"MiniMax M1",id:"MiniMaxAI/MiniMax-M1-80k"},
{name:"Qwen3‑235B‑A22B",id:"Qwen/Qwen3-235B-A22B"},
{name:"SmolLM3‑3B",id:"HuggingFaceTB/SmolLM3-3B"},
{name:"GLM‑4.1V‑9B‑Thinking",id:"THUDM/GLM-4.1V-9B-Thinking"},
{name:"OpenAI GPT‑4",id:"openai/gpt-4",provider:"openai"},
{name:"Gemini Pro",id:"gemini/pro",provider:"gemini"},
{name:"Fireworks V1",id:"fireworks-ai/fireworks-v1",provider:"fireworks"}
];
const LANGS = [
"python","c","cpp","markdown","latex","json","html","css","javascript",
"jinja2","typescript","yaml","dockerfile","shell","r","sql","sql-msSQL",
"sql-mySQL","sql-mariaDB","sql-sqlite","sql-cassandra","sql-plSQL",
"sql-hive","sql-pgSQL","sql-gql","sql-gpSQL","sql-sparkSQL","sql-esper"
];
/* ---------- dom ---------- */
const $ = q => document.querySelector(q);
const modelSel = $('#model');
const promptIn = $('#prompt');
const fileIn = $('#reference-file');
const urlIn = $('#website-url');
const langSel = $('#language');
const wsCheck = $('#web-search');
const codeOut = $('#code-output');
const preview = $('#preview');
const histList = $('#history-list');
const genBtn = $('#generate');
const clrBtn = $('#clear');
/* ---------- populate ---------- */
MODELS.forEach(m=>{
const o=document.createElement('option');
o.value=m.id;o.textContent=m.name;o.dataset.provider=m.provider||'';modelSel.appendChild(o);
});
LANGS.forEach(l=>{
const o=document.createElement('option');
o.value=o.textContent=l;langSel.appendChild(o);
});
/* ---------- tabs ---------- */
document.querySelectorAll('.tabs[role="tablist"] button')
.forEach(btn=>btn.addEventListener('click',()=>{
const list=btn.parentElement;
list.querySelectorAll('[role="tab"]').forEach(t=>{
const sel=t===btn;t.setAttribute('aria-selected',sel);
list.parentElement.querySelector(`#${t.getAttribute('aria-controls')}`).hidden=!sel;
});
}));
/* ---------- clear ---------- */
clrBtn.onclick=()=>{
promptIn.value='';fileIn.value='';urlIn.value='';
codeOut.textContent='';preview.srcdoc='';histList.innerHTML='';
};
/* ---------- helper ---------- */
const addHist=p=>{
const li=document.createElement('li');
li.textContent=`${new Date().toLocaleTimeString()} – ${p.slice(0,40)}…`;
histList.prepend(li);
};
/* ---------- generate ---------- */
genBtn.onclick=async()=>{
const prompt=promptIn.value.trim();
if(!prompt){alert('Please provide a prompt');return;}
genBtn.disabled=true;genBtn.textContent='Generating…';
const body={
prompt, model_id:modelSel.value, language:langSel.value,
web_search:wsCheck.checked, website_url:urlIn.value||null
};
if(fileIn.files.length){
body.file_name=fileIn.files[0].name;
body.file_data=Array.from(new Uint8Array(await fileIn.files[0].arrayBuffer())); // binary to int[]
}
try{
const res=await fetch('/run/predict',{
method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(body)});
if(!res.ok) throw new Error(await res.text());
const {code}=await res.json();
codeOut.textContent=code;
preview.srcdoc=(langSel.value==='html')?code:`<pre>${code.replace(/</g,'<')}</pre>`;
addHist(prompt);
}catch(e){console.error(e);alert('Error – see console');}
genBtn.disabled=false;genBtn.textContent='Generate Code';
};
|