File size: 5,597 Bytes
ca950c4 25bf9bb ca950c4 973db88 ca950c4 3380f8e 25bf9bb ca950c4 973db88 25bf9bb 3380f8e ca40114 ca950c4 25bf9bb ca950c4 25bf9bb ca950c4 3380f8e ca950c4 065cfda ca950c4 25bf9bb ca950c4 25bf9bb ca950c4 25bf9bb 065cfda ca950c4 25bf9bb ca950c4 973db88 065cfda ca950c4 25bf9bb ca950c4 065cfda ca950c4 25bf9bb ca950c4 25bf9bb ca950c4 3380f8e 25bf9bb ca950c4 25bf9bb ca950c4 3380f8e 065cfda 25bf9bb ca950c4 25bf9bb ca950c4 25bf9bb ca950c4 25bf9bb ca950c4 25bf9bb |
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 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
/* static/index.js βΒ AnyCoderΒ frontβend */
// βββββββββββββββββ 1. MODEL REGISTRY ββββββββββββββββββ
const MODELS = [
{ 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: "Qwen3β235BβA22BβInstructβ2507", id: "Qwen/Qwen3-235B-A22B-Instruct-2507" },
{ name: "Qwen3β235BβA22BβThinking", id: "Qwen/Qwen3-235B-A22B-Thinking" },
{ name: "Qwen3βCoderβ480BβA35B", id: "Qwen/Qwen3-Coder-480B-A35B-Instruct" },
{ name: "Qwen3β32B", id: "Qwen/Qwen3-32B" },
{ 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" }
];
// βββββββββββββββββ 2. LANGUAGES βββββββββββββββββββββββ
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"
];
// βββββββββββββββββ 3. DOM HOOKS βββββββββββββββββββββββ
const $ = sel => document.querySelector(sel);
const els = {
model : $("#model"),
lang : $("#lang"),
prompt : $("#prompt"),
file : $("#file"),
url : $("#url"),
search : $("#search"),
code : $("#code"),
prev : $("#preview"),
hist : $("#hist"),
gen : $("#gen"),
clear : $("#clear")
};
// βββββββββββββββββ 4. INITIAL FILL ββββββββββββββββββββ
MODELS.forEach(m => {
const opt = new Option(m.name, m.id); opt.dataset.provider = m.provider || "";
els.model.append(opt);
});
LANGS.forEach(l => els.lang.append(new Option(l.toUpperCase(), l)));
// βββββββββββββββββ 5. TABS HANDLER ββββββββββββββββββββ
document.querySelectorAll(".tabs[role=tablist]").forEach(tablist => {
tablist.addEventListener("click", e => {
if (e.target.role !== "tab") return;
const tabs = tablist.querySelectorAll("[role=tab]");
const panels = tablist.parentElement.querySelectorAll("[role=tabpanel]");
tabs.forEach(t => t.setAttribute("aria-selected", t === e.target));
panels.forEach(p => p.hidden = (p.id !== e.target.getAttribute("aria-controls")));
});
});
// βββββββββββββββββ 6. HELPERS βββββββββββββββββββββββββ
const addHist = text => {
const li = document.createElement("li");
li.textContent = `${new Date().toLocaleTimeString()} β ${text.slice(0,40)}β¦`;
els.hist.prepend(li);
};
// βββββββββββββββββ 7. CLEAR BUTTON βββββββββββββββββββ
els.clear.addEventListener("click", () => {
els.prompt.value = ""; els.file.value = ""; els.url.value = "";
els.code.textContent = ""; els.prev.srcdoc = ""; els.hist.innerHTML = "";
});
// βββββββββββββββββ 8. GENERATE CODE ββββββββββββββββββ
els.gen.addEventListener("click", async () => {
const prompt = els.prompt.value.trim();
if (!prompt) { alert("Provide a prompt."); return; }
els.gen.disabled = true; els.gen.textContent = "Generatingβ¦";
const payload = {
prompt,
model_id : els.model.value,
language : els.lang.value,
enable_search : els.search.checked,
website_url : els.url.value || null,
file_path : null // will be set after upload
};
if (els.file.files.length) {
const fd = new FormData(); fd.append("file", els.file.files[0]);
const up = await fetch("/upload", { method:"POST", body: fd });
payload.file_path = (await up.json()).file;
}
try {
const res = await fetch("/run/predict", {
method : "POST",
headers : { "Content-Type":"application/json" },
body : JSON.stringify(payload)
});
if (!res.ok) throw new Error(`HTTPΒ ${res.status}`);
const [code] = await res.json(); // Gradio returns [code, history]
els.code.textContent = code;
els.prev.srcdoc = (els.lang.value === "html")
? code
: `<pre style="white-space:pre-wrap">${code.replace(/</g,"<")}</pre>`;
addHist(prompt);
} catch (e) {
console.error(e); alert("Generation failed β see console.");
} finally {
els.gen.disabled = false; els.gen.textContent = "GenerateΒ code";
}
});
|