From 35fb3dd65a452c0290f516778e1cea75a9fcbc9c Mon Sep 17 00:00:00 2001 From: Jason Date: Wed, 15 Apr 2026 23:12:21 +0800 Subject: [PATCH] fix(frontend): resolve /mnt/ links in markdown to artifact API URLs (#2243) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(gateway): forward agent_name and is_bootstrap from context to configurable The frontend sends agent_name and is_bootstrap via the context field in run requests, but services.py only forwards a hardcoded whitelist of keys (_CONTEXT_CONFIGURABLE_KEYS) into the agent's configurable dict. Since agent_name was missing, custom agents never received their name — make_lead_agent always fell back to the default lead agent, skipping SOUL.md, per-agent config and skill filtering. Similarly, is_bootstrap was dropped, so the bootstrap creation flow could never activate the setup_agent tool path. Add both keys to the whitelist so they reach make_lead_agent. Fixes #2222 * fix(frontend): resolve /mnt/ links in markdown to artifact API URLs AI agent messages contain links like /mnt/user-data/outputs/file.pdf which were rendered as-is in the browser, resulting in 404 errors. Images already got the correct treatment via MessageImage and resolveArtifactURL, but anchor tags () were passed through unchanged. Add an 'a' component override in MessageContent_ that rewrites /mnt/-prefixed hrefs to the artifact API endpoint, matching the existing image handling pattern. Fixes #2232 --------- Co-authored-by: JasonOA888 Co-authored-by: Willem Jiang --- .../components/workspace/messages/message-list-item.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/workspace/messages/message-list-item.tsx b/frontend/src/components/workspace/messages/message-list-item.tsx index a5faf4cd1..c66ea9e1a 100644 --- a/frontend/src/components/workspace/messages/message-list-item.tsx +++ b/frontend/src/components/workspace/messages/message-list-item.tsx @@ -1,6 +1,6 @@ import type { Message } from "@langchain/langgraph-sdk"; import { FileIcon, Loader2Icon } from "lucide-react"; -import { memo, useMemo, type ImgHTMLAttributes } from "react"; +import { memo, useMemo, type AnchorHTMLAttributes, type ImgHTMLAttributes } from "react"; import rehypeKatex from "rehype-katex"; import { Loader } from "@/components/ai-elements/loader"; @@ -127,6 +127,13 @@ function MessageContent_({ img: (props: ImgHTMLAttributes) => ( ), + a: ({ href, ...props }: AnchorHTMLAttributes) => { + if (href && href.startsWith("/mnt/")) { + const url = resolveArtifactURL(href, threadId); + return ; + } + return ; + }, }), [threadId], );