Add Chromium Control Canvas extension#1994
Conversation
There was a problem hiding this comment.
main, but PRs should target staged.
The main branch is auto-published from staged and should not receive direct PRs.
Please close this PR and re-open it against the staged branch.
You can change the base branch using the Edit button at the top of this PR,
or run: gh pr edit 1994 --base staged
|
🔴 Contributor Reputation Check: HIGH risk
Maintainers: please review this contributor before merging. |
|
🔴 Contributor Reputation Check: HIGH risk
Maintainers: please review this contributor before merging. |
|
🔴 Contributor Reputation Check: HIGH risk
Maintainers: please review this contributor before merging. |
2e8fad6 to
dbcb140
Compare
|
🔴 Contributor Reputation Check: HIGH risk
Maintainers: please review this contributor before merging. |
dbcb140 to
ba9d245
Compare
|
🔴 Contributor Reputation Check: HIGH risk
Maintainers: please review this contributor before merging. |
|
🔴 Contributor Reputation Check: HIGH risk
Maintainers: please review this contributor before merging. |
There was a problem hiding this comment.
Pull request overview
Adds a new Copilot Canvas extension (chromium-control-canvas) that launches/attaches to a real headful Chromium instance via Playwright, exposing a small control-strip UI in the canvas panel and agent-callable actions for navigation, inspection, and interaction.
Changes:
- Introduces a new extension runtime (
extension.mjs) that manages Chromium lifecycle, a loopback control server, and agent actions (navigate/snapshot/click/type/screenshot). - Adds the panel UI (
index.html) and installation documentation (README.md) for using the extension. - Adds extension/package metadata (
copilot-extension.json,package.json,package-lock.json) including Playwright dependency.
Show a summary per file
| File | Description |
|---|---|
| extensions/chromium-control-canvas/README.md | Documents purpose, install steps, prerequisites, and supported agent actions. |
| extensions/chromium-control-canvas/package.json | Declares extension package metadata and dependencies. |
| extensions/chromium-control-canvas/package-lock.json | Locks dependency graph for the extension. |
| extensions/chromium-control-canvas/index.html | Implements the canvas panel control-strip UI and preview behavior. |
| extensions/chromium-control-canvas/extension.mjs | Implements Chromium/Playwright control plane, loopback HTTP server, and canvas actions. |
| extensions/chromium-control-canvas/copilot-extension.json | Declares extension identity metadata for the host. |
Copilot's findings
Files not reviewed (1)
- extensions/chromium-control-canvas/package-lock.json: Generated file
- Files reviewed: 5/6 changed files
- Comments generated: 6
aaronpowell
left a comment
There was a problem hiding this comment.
There are some high-risk warnings from the code review - can you review them and determine if anything needs addressing
ba9d245 to
55e8dd8
Compare
|
🔴 Contributor Reputation Check: HIGH risk
Maintainers: please review this contributor before merging. |
| Chromium binary from inside that folder: | ||
|
|
||
| ```sh | ||
| cd ~/.copilot/extensions/chromium-control-canvas |
55e8dd8 to
f0b6ecf
Compare
|
🔴 Contributor Reputation Check: HIGH risk
Maintainers: please review this contributor before merging. |
| const entry = { instanceId, context, browser, page, mode }; | ||
| await navigate(page, input?.url || "about:blank").catch(() => {}); | ||
| const { server, url } = await startServer(entry); |
| const bytes = await readFile(join(ARTIFACTS_DIR, name)); | ||
| res.writeHead(200, { "Content-Type": "image/png", "Cache-Control": "no-store" }); | ||
| res.end(bytes); |
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
f0b6ecf to
6fac8df
Compare
|
🔴 Contributor Reputation Check: HIGH risk
Maintainers: please review this contributor before merging. |
Summary
extensions/chromium-control-canvasValidation
node --check extensions/chromium-control-canvas/extension.mjsnpm run buildnpm run skill:validatenpm run website:data