frappe.ui.form.on('Desk', { refresh(frm) { frm.add_custom_button('🧠 Report Finder', () => { frappe.prompt( [{label: 'Search Report', fieldname: 'query', fieldtype: 'Data', reqd: 1}], (data) => { frappe.call({ method: 'find', // your server script name args: { query: data.query }, callback: function(r) { if (r.message && r.message.data) { const rows = r.message.data; let html = ``; Object.keys(rows[0]).forEach(key => html += ``); html += ``; rows.forEach(row => { html += ``; Object.values(row).forEach(val => html += ``); html += ``; }); html += `
${key}
${val}
`; frappe.msgprint({ title: `📊 ${r.message.report_name}`, indicator: 'green', message: html }); } else { frappe.msgprint(r.message?.error || 'No matching report found'); } } }); }, 'LLM Report Finder', 'Find' ); }); } });