github / github/app

Marketplace-installed canvas plugins are not discovered

未关闭
#2,073 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
Bugs
主要语言
没有语言数据
星标
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

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。