From 095de78425b777116dce268813d564c48d81c8fb Mon Sep 17 00:00:00 2001 From: Rizel Scarlett Date: Sat, 9 Aug 2025 12:09:37 -0400 Subject: [PATCH 1/2] Adding better deeplink support for streamable-http --- .../settings/extensions/deeplink.ts | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/ui/desktop/src/components/settings/extensions/deeplink.ts b/ui/desktop/src/components/settings/extensions/deeplink.ts index a7f1c039ef63..e6b1a1a4b08f 100644 --- a/ui/desktop/src/components/settings/extensions/deeplink.ts +++ b/ui/desktop/src/components/settings/extensions/deeplink.ts @@ -79,7 +79,8 @@ function getStreamableHttpConfig( remoteUrl: string, name: string, description: string, - timeout: number + timeout: number, + headers?: { [key: string]: string } ) { const config: ExtensionConfig = { name, @@ -87,6 +88,7 @@ function getStreamableHttpConfig( uri: remoteUrl, description, timeout: timeout, + headers: headers, }; return config; @@ -143,11 +145,25 @@ export async function addExtensionFromDeepLink( const cmd = parsedUrl.searchParams.get('cmd'); const remoteUrl = parsedUrl.searchParams.get('url'); - const transportType = parsedUrl.searchParams.get('transport') || 'sse'; // Default to SSE for backward compatibility + // Support both 'transport' and 'type' parameters for consistency + const transportType = + parsedUrl.searchParams.get('transport') || parsedUrl.searchParams.get('type') || 'sse'; // Default to SSE for backward compatibility + + // Extract headers from URL parameters for streamable_http extensions + const headerParams = parsedUrl.searchParams.getAll('header'); + const headers = + headerParams.length > 0 + ? Object.fromEntries( + headerParams.map((header) => { + const [key, value] = header.split('='); + return [key, decodeURIComponent(value || '')]; + }) + ) + : undefined; const config = remoteUrl ? transportType === 'streamable_http' - ? getStreamableHttpConfig(remoteUrl, name, description || '', timeout) + ? getStreamableHttpConfig(remoteUrl, name, description || '', timeout, headers) : getSseConfig(remoteUrl, name, description || '', timeout) : getStdioConfig(cmd!, parsedUrl, name, description || '', timeout); @@ -159,7 +175,6 @@ export async function addExtensionFromDeepLink( return; } - // If no env vars are required, proceed with adding the extension try { console.log('No env vars required, activating extension directly'); await activateExtension({ extensionConfig: config, addToConfig: addExtensionFn }); From 7987655c308aa80dfdfb7b9e8cb06dae15683bf2 Mon Sep 17 00:00:00 2001 From: Rizel Scarlett Date: Sat, 9 Aug 2025 13:10:08 -0400 Subject: [PATCH 2/2] Update ui/desktop/src/components/settings/extensions/deeplink.ts Co-authored-by: Angie Jones --- ui/desktop/src/components/settings/extensions/deeplink.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/ui/desktop/src/components/settings/extensions/deeplink.ts b/ui/desktop/src/components/settings/extensions/deeplink.ts index e6b1a1a4b08f..3852d33d593d 100644 --- a/ui/desktop/src/components/settings/extensions/deeplink.ts +++ b/ui/desktop/src/components/settings/extensions/deeplink.ts @@ -149,7 +149,6 @@ export async function addExtensionFromDeepLink( const transportType = parsedUrl.searchParams.get('transport') || parsedUrl.searchParams.get('type') || 'sse'; // Default to SSE for backward compatibility - // Extract headers from URL parameters for streamable_http extensions const headerParams = parsedUrl.searchParams.getAll('header'); const headers = headerParams.length > 0