feat(ui): add self-improve panel and proposal rendering
This commit is contained in:
parent
47ae5891e1
commit
c5b2776978
|
|
@ -216,6 +216,41 @@ async function sendChat() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function runSelfImprove() {
|
||||||
|
const cfg = getConfig();
|
||||||
|
const objective = document.getElementById("improveObjective").value.trim() || "Improve assistant quality and reliability";
|
||||||
|
const maxRaw = Number(document.getElementById("improveMax").value || 5);
|
||||||
|
const maxProposals = Math.max(1, Math.min(20, Number.isFinite(maxRaw) ? maxRaw : 5));
|
||||||
|
const summary = document.getElementById("improveSummary");
|
||||||
|
const list = document.getElementById("improveProposals");
|
||||||
|
summary.textContent = "Generating proposals...";
|
||||||
|
list.innerHTML = "";
|
||||||
|
try {
|
||||||
|
const data = await apiPost("/assistant/self-improve", {
|
||||||
|
objective,
|
||||||
|
release_name: cfg.releaseName || null,
|
||||||
|
max_proposals: maxProposals,
|
||||||
|
feedback_limit: 50,
|
||||||
|
action_limit: 50,
|
||||||
|
include_edited_feedback: true,
|
||||||
|
include_rejected_feedback: true,
|
||||||
|
include_blocked_actions: true,
|
||||||
|
apply: false,
|
||||||
|
});
|
||||||
|
summary.textContent = `${data.summary || ""}\n\nsignals: feedback=${data.signals?.feedback_rows ?? 0}, blocked_actions=${data.signals?.blocked_action_rows ?? 0}`;
|
||||||
|
renderRows(list, data.proposals || [], (p) => `
|
||||||
|
<div><strong>${p.proposal_id}: ${p.title}</strong></div>
|
||||||
|
<div>${p.problem}</div>
|
||||||
|
<div class="meta">risk=${p.risk} | auto_apply_safe=${p.auto_apply_safe}</div>
|
||||||
|
<div class="meta">files=${(p.files || []).join(", ") || "-"}</div>
|
||||||
|
<div class="meta">tests=${(p.tests || []).join(" | ") || "-"}</div>
|
||||||
|
<div style="margin-top:6px">${p.change || ""}</div>
|
||||||
|
`);
|
||||||
|
} catch (e) {
|
||||||
|
summary.textContent = `Error: ${String(e)}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
document.getElementById("saveConfig").addEventListener("click", saveConfig);
|
document.getElementById("saveConfig").addEventListener("click", saveConfig);
|
||||||
document.getElementById("refreshMeta").addEventListener("click", loadMeta);
|
document.getElementById("refreshMeta").addEventListener("click", loadMeta);
|
||||||
document.getElementById("loadInbox").addEventListener("click", loadInbox);
|
document.getElementById("loadInbox").addEventListener("click", loadInbox);
|
||||||
|
|
@ -223,6 +258,7 @@ document.getElementById("loadTasks").addEventListener("click", loadTasks);
|
||||||
document.getElementById("makeDraft").addEventListener("click", makeDraft);
|
document.getElementById("makeDraft").addEventListener("click", makeDraft);
|
||||||
document.getElementById("saveLearn").addEventListener("click", saveLearn);
|
document.getElementById("saveLearn").addEventListener("click", saveLearn);
|
||||||
document.getElementById("sendChat").addEventListener("click", sendChat);
|
document.getElementById("sendChat").addEventListener("click", sendChat);
|
||||||
|
document.getElementById("runImprove").addEventListener("click", runSelfImprove);
|
||||||
|
|
||||||
loadConfig();
|
loadConfig();
|
||||||
loadMeta();
|
loadMeta();
|
||||||
|
|
|
||||||
|
|
@ -77,6 +77,19 @@
|
||||||
<textarea id="chatMessage" rows="2" placeholder="Ask the assistant..."></textarea>
|
<textarea id="chatMessage" rows="2" placeholder="Ask the assistant..."></textarea>
|
||||||
<div id="chatTranscript" class="list"></div>
|
<div id="chatTranscript" class="list"></div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section class="panel">
|
||||||
|
<div class="panel-header">
|
||||||
|
<h2>Self-Improve</h2>
|
||||||
|
<div class="controls">
|
||||||
|
<input id="improveObjective" type="text" placeholder="Objective" />
|
||||||
|
<input id="improveMax" type="number" min="1" max="20" value="5" style="width:90px" />
|
||||||
|
<button id="runImprove">Generate Proposals</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<pre id="improveSummary" class="output"></pre>
|
||||||
|
<div id="improveProposals" class="list"></div>
|
||||||
|
</section>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
<script src="/ui/assets/app.js"></script>
|
<script src="/ui/assets/app.js"></script>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue