+ ${_isLocalEndpoint(ep.base_url) ? '
' : ''}
${hasModels ? '
' : ''}
@@ -476,6 +477,22 @@ async function loadEndpoints() {
queryAll('[data-adm-toggle-ep]').forEach(btn => {
btn.addEventListener('click', async (e) => { e.stopPropagation(); await fetch(`/api/model-endpoints/${btn.dataset.admToggleEp}`, { method: 'PATCH' }); loadEndpoints(); });
});
+ queryAll('[data-adm-tools-select]').forEach(sel => {
+ sel.addEventListener('change', async (e) => {
+ e.stopPropagation();
+ const epId = sel.dataset.admToolsSelect;
+ const val = sel.value;
+ const body = {};
+ if (val === 'auto') body.supports_tools = null;
+ else body.supports_tools = val === 'true';
+ await fetch(`/api/model-endpoints/${epId}`, {
+ method: 'PATCH',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify(body),
+ });
+ loadEndpoints();
+ });
+ });
queryAll('[data-adm-copy-url]').forEach(btn => {
btn.addEventListener('click', (e) => {
e.stopPropagation();
diff --git a/static/style.css b/static/style.css
index 6703685a4..e711876bd 100644
--- a/static/style.css
+++ b/static/style.css
@@ -14154,6 +14154,22 @@ body:has(.doc-version-panel:not(.hidden)) .hamburger-btn {
background: var(--border);
border-color: var(--red);
}
+.admin-tools-select {
+ padding: 3px 6px;
+ border: 1px solid var(--border);
+ border-radius: 6px;
+ background: var(--panel);
+ color: var(--fg);
+ cursor: pointer;
+ font-size: 11px;
+ font-family: inherit;
+ height: 26px;
+ min-width: 90px;
+}
+.admin-tools-select:hover {
+ background: var(--border);
+ border-color: var(--red);
+}
.admin-spinner {
display: inline-block;
width: 12px;
@@ -14269,6 +14285,7 @@ body:has(.doc-version-panel:not(.hidden)) .hamburger-btn {
.admin-ep-actions {
display: flex;
gap: 4px;
+ align-items: center;
flex-shrink: 0;
}