Changeset 0.17.0 (#75)
This commit is contained in:
@@ -193,6 +193,8 @@ function ensureAdminPresetForm() {
|
||||
prefix: 'adminPreset',
|
||||
showAvatar: true,
|
||||
showProviderConfig: true,
|
||||
showKBPicker: true,
|
||||
kbScope: 'admin',
|
||||
onSubmit: (vals) => createAdminPreset(vals),
|
||||
onCancel: () => {
|
||||
container.style.display = 'none';
|
||||
@@ -263,6 +265,10 @@ function editAdminPreset(id) {
|
||||
document.getElementById('adminAddPresetForm').style.display = '';
|
||||
form.setValues(p);
|
||||
form.setSubmitLabel('Update');
|
||||
// Load KB bindings (v0.17.0)
|
||||
if (form.kbPicker) {
|
||||
loadPersonaKBs(id, form.kbPicker, '/api/v1/admin');
|
||||
}
|
||||
}
|
||||
|
||||
async function createAdminPreset(vals) {
|
||||
@@ -299,6 +305,12 @@ async function createAdminPreset(vals) {
|
||||
catch (e) { console.warn('Preset avatar upload failed:', e.message); }
|
||||
}
|
||||
|
||||
// Save KB bindings (v0.17.0)
|
||||
if (presetId && vals._kbValues && _adminPresetForm?.kbPicker) {
|
||||
try { await API.adminSetPresetKBs(presetId, vals._kbValues); }
|
||||
catch (e) { console.warn('Preset KB binding failed:', e.message); }
|
||||
}
|
||||
|
||||
_editingPresetId = null;
|
||||
document.getElementById('adminAddPresetForm').style.display = 'none';
|
||||
if (_adminPresetForm) {
|
||||
@@ -646,6 +658,20 @@ function _initAdminListeners() {
|
||||
await UI.loadAdminExtensions();
|
||||
} catch (e) { UI.toast(e.message, 'error'); }
|
||||
});
|
||||
|
||||
// Role fallback alerts (v0.17.0) — show admin banner when fallback fires
|
||||
if (typeof Events !== 'undefined') {
|
||||
Events.on('role.fallback', (payload) => {
|
||||
const banner = document.getElementById('roleFallbackBanner');
|
||||
if (!banner) return;
|
||||
const msg = payload?.message || 'A model role is using its fallback provider.';
|
||||
banner.querySelector('.fallback-msg').textContent = msg;
|
||||
banner.style.display = '';
|
||||
// Auto-dismiss after 60s
|
||||
clearTimeout(banner._dismissTimer);
|
||||
banner._dismissTimer = setTimeout(() => { banner.style.display = 'none'; }, 60000);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// ── Extension admin actions (global scope for onclick) ──
|
||||
|
||||
Reference in New Issue
Block a user