* feat: extract McpScopeSelector into reusable component
Extract scope selection UI from CreateToken.svelte and mcp_authorize page
into a shared McpScopeSelector.svelte component to reduce duplication.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add MCP gateway endpoint for workspace-agnostic access
Add /api/mcp/gateway endpoint that allows MCP clients to connect without
knowing the workspace ID upfront. During OAuth, the user picks their
workspace on the consent page. The token is then scoped to that workspace.
This enables a single URL for the Anthropic connectors directory.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: address PR review nits
- Use onClick prop instead of legacy on:click directive in McpScopeSelector
- Remove unused catch variable in workspace loading
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: deduplicate gateway OAuth handlers into shared inner functions
Extract build_oauth_metadata, build_protected_resource_metadata,
oauth_authorize_inner, and oauth_approve_inner so gateway handlers
are thin wrappers. Also revert formatting-only changes in auth.rs.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: gate run_inline test helpers behind cfg(feature = "run_inline")
Imports and helper functions were not gated, causing unused-import and
dead-code errors when compiling without the run_inline feature.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update SQLx metadata
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>