Extract Marketplace logic from KiloProvider#10850
Conversation
cd97675 to
389f9ae
Compare
marius-kilocode
left a comment
There was a problem hiding this comment.
This looks much better, architecture wise
|
My bot found this regression: Confirmed Regression: Global Skills Look Uninstalled In the new standalone provider: const project = this.project ?? undefined The second argument is the directory used to ask the CLI for installed skills: const skills = dir ? await fetchSkills(ctx, dir) : undefined When Marketplace intentionally enters global-only mode, project is undefined. This happens in an ambiguous multi-root workspace with no active editor, and can also happen without an open workspace. As a result, the CLI skill request is skipped entirely. That matters because global skill installation detection depends on the CLI skill list: ...this.skillEntries(skills, workspace, false), The practical effect: Open a multi-root workspace with no active editor. const data = await fetchMarketplaceData(this.marketplaceCtx, project, this.directory()) Retained-Panel Risk There is also a race around changing directories while reusing the existing panel: if (this.panel) { |
Replace swallowed catch block with console.warn for session status sync failures, and pass `this.directory()` instead of `project` as the second positional argument to `fetchMarketplaceData`.
|
Addressed comments |
Code Review SummaryStatus: 2 Issues Found | Recommendation: Informational (PR already merged) Overview
Issue Details (click to expand)WARNING
SUGGESTION
Positive Observations
Files Reviewed (16 files)
Fix these issues in Kilo Cloud Reviewed by claude-4.6-sonnet-20260217 · 2,252,825 tokens Review guidance: REVIEW.md from base branch |
Part of #8666
Why
KiloProvider is growing in size and responsibilities, this refactor removes Marketplace domain logic into its own view and provider.
There's still marketplace related code on KiloProvider that is required for the Settings view.
Implementation
MarketplacePanelProvider, SolidJS entry point, webview bundle, and lightweight session-status context.SettingsEditorProvider: opening, revealing, restoring after restart, project-directory resolution, and webview serialization are handled independently.MarketplacePanelProviderinstead ofKiloProvider, including data fetching, installation, removal, banner dismissal, external links, telemetry, connection state, and session-status updates.services/marketplace/actions.ts, so the standalone panel and sidebar Settings removal flow reuse the same cache invalidation and legacy MCP cleanup behavior.KiloProviderno longer owns aMarketplaceService, loads Marketplace data, or processes Marketplace webview messages. It only keeps the narrow Settings integration needed to remove configured agents and MCP servers, then refresh the cached agent and config data.Testing
bun run test:unit,bun run typecheck,bun run lint, andbun run knipfrompackages/kilo-vscode/.