Marketplace-installed canvas plugins are not discovered
- 主要语言
- 没有语言数据
- 星标
- 2.1k
- 派生
- 153
- PR 合并指标
- 30 天内没有已合并 PR
描述
### Short summary
Marketplace-installed canvas plugins are enabled but their root-level `extension.mjs` is not discovered.
### Affected version or release
GitHub Copilot app 1.0.23
Bundled Copilot CLI 1.0.71-2
Windows
### Installation context
Installed `color-orb@awesome-copilot` through the GitHub Copilot app plugin marketplace for the current user.
### What happened?
The plugin installs successfully to:
`~\.copilot\installed-plugins\awesome-copilot\color-orb`
It is enabled in `settings.json`, and `copilot plugin list` reports:
`color-orb@awesome-copilot (v1.0.0)`
The corresponding `extension.mjs` is located directly in the resolved directory. However, the extension provider is not launched and the Color Orb canvas does not appear in the canvas catalog.
Copying the same plugin directory to:
`~\.copilot\extensions\color-orb`
causes it to be discovered and work as expected.
### Steps to reproduce
1. Open the GitHub Copilot app.
2. Install `color-orb@awesome-copilot` from the plugin marketplace.
3. Confirm that it appears in `copilot plugin list`.
4. Confirm that `extension.mjs` exists at `~\.copilot\installed-plugins\awesome-copilot\color-orb\extension.mjs`.
5. Open or reload a Copilot session.
6. Observe that the Color Orb canvas is not available.
7. Copy the plugin directory to `~\.copilot\extensions\color-orb`.
8. Reload extensions or open another session.
9. Observe that the canvas is now available.
### Expected behavior
A plugin manifest with `"extensions": "."` should cause the resolved plugin directory itself to be checked for `extension.mjs`, and the canvas should become available after installation.
### Additional context
The app does perform its plugin live-session refresh after installation, so this does not appear to be a missing restart or refresh.
Investigation points to a path-semantics mismatch:
- Plugin resolution returns the expected directory: `~\.copilot\installed-plugins\awesome-copilot\color-orb`
- Passing that directory to `extensionDiscoverAll` produces no plugin extension.
- Passing its parent directory causes discovery to find `~\.copilot\installed-plugins\awesome-copilot\color-orb\extension.mjs`.
This suggests plugin extension discovery treats each resolved path as a container whose immediate children are extension directories, while `"extensions": "."` resolves directly to the extension directory containing `extension.mjs`.
The runtime should check the resolved directory itself for `extension.mjs`, while optionally continuing to scan its immediate children.
This likely affects every marketplace canvas plugin using the same `"extensions": "."` convention, not only Color Orb.
Current workaround: copy or symlink the plugin directory into `~\.copilot\extensions`.
贡献指南
调研方向
Start at the extensionDiscoverAll entry point and reproduce the issue with the marketplace-installed color-orb plugin, checking its root-level extension.mjs under the resolved installed-plugins directory. Done means a plugin manifest using "extensions": "." is discovered after installation and the Color Orb canvas appears, while immediate child extensions continue to work.
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- javascript
- 领域
- desktop, tooling
- Issue 类型
- 缺陷
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 活跃度
- 冷清
- 描述清晰度
- 基本清楚
- 新手友好度
- 65/100