fix: JSON truncation recovery + 2min timeout on AI template generation
This commit is contained in:
@@ -286,18 +286,37 @@ async function createTemplate() {
|
||||
async function generateTemplate() {
|
||||
const desc = document.getElementById('tmpl-gen-desc').value;
|
||||
if (!desc) { toast('Description required', 'error'); return; }
|
||||
document.querySelector('.modal button').textContent = 'Generating...';
|
||||
document.querySelector('.modal button').disabled = true;
|
||||
const btn = document.querySelector('.modal button');
|
||||
btn.textContent = 'Generating...';
|
||||
btn.disabled = true;
|
||||
try {
|
||||
await api('/api/templates/generate', 'POST', {
|
||||
name: document.getElementById('tmpl-gen-name').value || 'AI Generated Template',
|
||||
description: desc
|
||||
const controller = new AbortController();
|
||||
const timeout = setTimeout(() => controller.abort(), 120000); // 2 min timeout
|
||||
const resp = await fetch(API + '/api/templates/generate', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
name: document.getElementById('tmpl-gen-name').value || 'AI Generated Template',
|
||||
description: desc
|
||||
}),
|
||||
signal: controller.signal
|
||||
});
|
||||
clearTimeout(timeout);
|
||||
if (!resp.ok) {
|
||||
const err = await resp.text();
|
||||
throw new Error(err);
|
||||
}
|
||||
closeModal();
|
||||
toast('Template generated with AI');
|
||||
loadTemplates();
|
||||
} catch(e) {
|
||||
toast('Generation failed: ' + e.message, 'error');
|
||||
btn.textContent = 'Generate with AI';
|
||||
btn.disabled = false;
|
||||
if (e.name === 'AbortError') {
|
||||
toast('Generation timed out after 2 minutes. Try a shorter description.', 'error');
|
||||
} else {
|
||||
toast('Generation failed: ' + e.message, 'error');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user