Skip to content

chat: Use AgentFinder saved feed for featured customizations - #339166

Draft
Paul (pwang347) wants to merge 4 commits into
mainfrom
feature/agentfinder-saved-resource-feed
Draft

Paul (pwang347) wants to merge 4 commits into
mainfrom
feature/agentfinder-saved-resource-feed

Conversation

@pwang347

@pwang347 Paul (pwang347) commented Oct 1, 2026 •

Copy link
Copy Markdown
Member

Summary

  • read an ordered AgentFinder saved-resource feed when the product supplies an opaque agentFinderFeaturedFeedId
  • authenticate the feed request with the current default GitHub account without starting OAuth during browsing
  • preserve feed order, omit unavailable entries, resolve existing marketplace installation provenance and MCP icons, and keep regular browse results available when the featured request fails
  • retain the current local featured fallback and perform no authentication or feed request when the product does not configure a feed
  • add focused transport, composition, Discover, and component-fixture coverage

Backend contract: Saved Resource Feed API

Related to github/copilot-ecosystem#1498.

Testing

  • Passed: ./scripts/test.sh --run src/vs/platform/agentFinder/test/common/agentFinderRestProvider.test.ts --run src/vs/workbench/contrib/chat/test/browser/aiCustomization/customizationMarketplaceWorkbenchService.test.ts --run src/vs/workbench/contrib/chat/test/browser/aiCustomization/aiCustomizationDiscoveryPage.test.ts (153 passing)
  • Passed: npm run eslint -- src/vs/base/common/product.ts src/vs/platform/customizationMarketplace/common/customizationMarketplaceService.ts src/vs/platform/agentFinder/common/agentFinderRestProvider.ts src/vs/platform/agentFinder/test/common/agentFinderRestProvider.test.ts src/vs/workbench/contrib/chat/browser/aiCustomization/customizationMarketplaceWorkbenchService.ts src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationDiscoveryPage.ts src/vs/workbench/contrib/chat/test/browser/aiCustomization/customizationMarketplaceWorkbenchService.test.ts src/vs/workbench/contrib/chat/test/browser/aiCustomization/aiCustomizationDiscoveryPage.test.ts src/vs/workbench/test/browser/componentFixtures/sessions/aiCustomizationManagementEditor.fixture.ts
  • Passed: npm run transpile-client
  • Passed: git diff --check
  • Rendered and visually inspected: chat/aiCustomizations/aiCustomizationManagementEditor/DiscoverFeaturedFeed/Dark
  • Blocked by pre-existing errors on main: npm run typecheck-client and npm run valid-layers-check (src/vs/platform/localTranscription/node/localTranscriptionService.ts:548,557)
  • Blocked by the current dependency baseline: npm run hygiene (package.json declares Copilot runtime 1.0.90, while @github/copilot-sdk bundles 1.0.89-7)

Screenshot

Dark theme Discover layout showing four ordered GitHub Feed customizations with enriched icons

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings October 1, 2026 19:36
@pwang347

Paul (pwang347) commented Oct 1, 2026 •

Copy link
Copy Markdown
Member Author

Screenshot evidence from the chat/aiCustomizations/aiCustomizationManagementEditor/DiscoverFeaturedFeed/Dark component fixture. The ordered AgentFinder feed supplies Figma, Browser tools, Documentation workflow, and Repository review from the GitHub Feed, including the icon enrichment used by the production provider.

Dark theme Discover layout showing four ordered GitHub Feed customizations with enriched icons

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Enterprise authentication tokens must be prevented from reaching the fixed public AgentFinder endpoint.

Review effort: Balanced
Findings: 1 High severity

Open (1)
What changed in this PR

Adds product-configured AgentFinder featured feeds to the AI Customizations Discover page.

Changes:

  • Fetches authenticated, ordered saved-resource feeds.
  • Integrates featured results while preserving regular browse results and fallback behavior.
  • Adds transport, UI, fixture, and documentation coverage.
File Description
src/​vs/​base/​common/​product.ts Adds the featured-feed product configuration.
src/​vs/​platform/​agentFinder/​common/​agentFinderRestProvider.ts Fetches and validates saved feeds.
src/​vs/​platform/​agentFinder/​test/​common/​agentFinderRestProvider.test.ts Tests feed parsing and authentication failures.
src/​vs/​platform/​customizationMarketplace/​common/​customizationMarketplaceService.ts Defines the featured collection API.
src/​vs/​sessions/​AI_CUSTOMIZATIONS.md Documents featured-feed behavior.
src/​vs/​workbench/​contrib/​chat/​browser/​aiCustomization/​aiCustomizationDiscoveryPage.ts Renders and caches featured results.
src/​vs/​workbench/​contrib/​chat/​browser/​aiCustomization/​customizationMarketplaceWorkbenchService.ts Composes authentication and feed transport.
src/​vs/​workbench/​contrib/​chat/​test/​browser/​aiCustomization/​aiCustomizationDiscoveryPage.test.ts Tests ordering and failure behavior.
src/​vs/​workbench/​contrib/​chat/​test/​browser/​aiCustomization/​customizationMarketplaceWorkbenchService.test.ts Tests authenticated composition.
src/​vs/​workbench/​test/​browser/​componentFixtures/​sessions/​aiCustomizationManagementEditor.fixture.ts Adds featured-feed visual coverage.

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +180 to +189
const account = this.defaultAccountService.currentDefaultAccount ?? await raceCancellationError(this.defaultAccountService.getDefaultAccount(), token);
if (!account) {
throw new Error(localize('customizationMarketplace.agentFinderSignInRequired', "Sign in to view featured customizations."));
}
const sessions = await raceCancellationError(this.authenticationService.getSessions(account.authenticationProvider.id, [], { silent: true }, true), token);
const currentAccount = this.defaultAccountService.currentDefaultAccount;
if (!currentAccount || currentAccount.authenticationProvider.id !== account.authenticationProvider.id ||
currentAccount.sessionId !== account.sessionId || currentAccount.accountName !== account.accountName) {
throw new CancellationError();
}
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions

github-actions Bot commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Screenshot Changes

Base: 4fbe620f Current: cd7bf977

Changed (4)

sessions/connectionDiagnostics/connectionDiagnostics/NarrowDismissedDiscovery/Light
Before After
before after
sessions/accountMenu/WeeklyLimitOnly/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/DiscoverInfiniteScroll/Light
Before After
before after
chat/aiCustomizations/aiCustomizationManagementEditor/DiscoverPluginsLoadingMore/Light
Before After
before after

Added (1)

chat/aiCustomizations/aiCustomizationManagementEditor/DiscoverFeaturedFeed/Light

current

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants