diff --git a/src/beaver_gateway/frontends/admin/frontend.py b/src/beaver_gateway/frontends/admin/frontend.py index 5dd480d..ccfdd0f 100644 --- a/src/beaver_gateway/frontends/admin/frontend.py +++ b/src/beaver_gateway/frontends/admin/frontend.py @@ -629,6 +629,11 @@ def _build_endpoint_catalog( ) markdown_row = { "url": f"{markdown_base}/chat", + # Bare frontend root for the Obsidian companion plugin — its + # settings field asks for the base, then appends ``/chat``, + # ``/chat/stream`` itself. Curl + admin /chat tester want the + # full ``url`` above; the plugin wants this. + "base": markdown_base, "vault_path": str(markdown_fe.vault_path), "default_agent": markdown_fe.default_agent, "log_all_chats": markdown_fe.log_all_chats, diff --git a/src/beaver_gateway/frontends/admin/templates/dashboard.html b/src/beaver_gateway/frontends/admin/templates/dashboard.html index 11ea3d5..dffe096 100644 --- a/src/beaver_gateway/frontends/admin/templates/dashboard.html +++ b/src/beaver_gateway/frontends/admin/templates/dashboard.html @@ -143,6 +143,7 @@ {{ endpoints.markdown.vault_path }} @@ -158,9 +159,15 @@ — (request must set agent or frontmatter) {% endif %} - {{ endpoints.markdown.url }} + + {{ endpoints.markdown.url }} +
+ plugin base: {{ endpoints.markdown.base }} +
+ + @@ -452,6 +459,9 @@ const tok = currentToken() || PLACEHOLDER; if (action === "copy-url") { copyText(btn, url); + } else if (action === "copy-base") { + const base = row.getAttribute("data-base"); + if (base) copyText(btn, base); } else if (action === "copy-url-token") { const sep = url.indexOf("?") >= 0 ? "&" : "?"; copyText(btn, url + sep + "token=" + encodeURIComponent(tok));