Skip to content

Add Sentry Triage canvas extension - #2802

Merged
aaronpowell merged 3 commits into
github:mainfrom
liztom:liztom-add-sentry-triage-canvas
Aug 26, 2026
Merged

Add Sentry Triage canvas extension#2802
aaronpowell merged 3 commits into
github:mainfrom
liztom:liztom-add-sentry-triage-canvas

Conversation

@liztom

@liztom liztom commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Description

Adds the Sentry Triage canvas as a reusable canvas extension plus a matching installable plugin.

The canvas is for on-call error triage: it scans live Sentry issues (via the Sentry CLI in library mode — no MCP server), groups them by urgency, offers plain-English titles, and hands selected issues off to Copilot to either file a tracking issue or spin up a session that drafts a fix PR.

Screenshot 2026-08-25 at 12 19 31 AM

What's included

  • extensions/sentry-triage/extension.mjs + supporting .mjs modules, components/, package.json, copilot-extension.json, README.md, LICENSE, and assets/preview.png.
  • plugins/sentry-triage/plugin.json (Agent Plugins v1.0.0, registers ./extensions/sentry-triage) + README.md.
  • Regenerated .github/plugin/marketplace.json, docs/README.plugins.md, and website data.

Checklist

  • npm run plugin:validate passes (sentry-triage valid)
  • npm run build regenerates marketplace + docs
  • npm run website:data regenerated
  • Line endings normalized (LF)
  • File names are lower-case-with-hyphens
  • Preview image provided (assets/preview.png)

@github-actions github-actions Bot added canvas-extension PR touches canvas extensions new-submission PR adds at least one new contribution plugin PR touches plugins labels Aug 25, 2026
@github-actions

github-actions Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

🔒 PR Risk Scan Results

Scanned 19 changed file(s).

Severity Count
🔴 High 0
🟠 Medium 0
ℹ️ Info 0

✅ No matching risk patterns were detected in changed files.

Skipped non-text or missing files
  • extensions/sentry-triage/assets/icon.png
  • extensions/sentry-triage/assets/preview.png

This is an automated soft-gate report. Findings indicate review targets and do not block merge by themselves.

@liztom
liztom marked this pull request as ready for review August 25, 2026 19:49
@liztom
liztom requested a review from aaronpowell as a code owner August 25, 2026 19:49
Copilot AI balanced review requested due to automatic review settings August 25, 2026 19:49

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.

Pull request overview

Adds a reusable Sentry error-triage canvas and registers it as an installable plugin.

Changes:

  • Implements live Sentry scanning, prioritization, hand-offs, preferences, and UI.
  • Adds plugin metadata, documentation, and preview assets.
  • Regenerates plugin marketplace documentation.
Show a summary per file
File Description
extensions/sentry-triage/extension.mjs Orchestrates scans and Copilot hand-offs.
extensions/sentry-triage/server.mjs Provides the secured loopback API and SSE updates.
extensions/sentry-triage/state.mjs Manages per-canvas state.
extensions/sentry-triage/sentryClient.mjs Wraps the Sentry CLI SDK.
extensions/sentry-triage/sentry.mjs Maps, searches, and categorizes Sentry issues.
extensions/sentry-triage/preflight.mjs Checks Sentry authentication and connectivity.
extensions/sentry-triage/prefs.mjs Persists the default organization.
extensions/sentry-triage/escape.mjs Escapes HTML and prompt data.
extensions/sentry-triage/styles.mjs Defines canvas styling.
extensions/sentry-triage/components/page.mjs Renders and controls the interactive canvas.
extensions/sentry-triage/components/category.mjs Renders urgency categories.
extensions/sentry-triage/components/card.mjs Renders issue cards and statuses.
extensions/sentry-triage/package.json Declares runtime dependencies.
extensions/sentry-triage/copilot-extension.json Defines extension metadata.
extensions/sentry-triage/README.md Documents setup and usage.
extensions/sentry-triage/LICENSE Adds the extension license.
extensions/sentry-triage/assets/preview.png Provides the marketplace preview.
extensions/sentry-triage/assets/icon.png Provides extension iconography.
plugins/sentry-triage/plugin.json Registers the installable extension plugin.
plugins/sentry-triage/README.md Documents plugin installation.
docs/README.plugins.md Lists the new plugin.
.github/plugin/marketplace.json Adds marketplace metadata.

Review details

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

  • Files reviewed: 19/22 changed files
  • Comments generated: 7
  • Review effort level: Balanced

Comment thread extensions/sentry-triage/extension.mjs Outdated
Comment thread extensions/sentry-triage/extension.mjs Outdated
Comment thread extensions/sentry-triage/extension.mjs
Comment thread extensions/sentry-triage/extension.mjs Outdated
Comment thread extensions/sentry-triage/components/page.mjs
Comment thread extensions/sentry-triage/sentry.mjs Outdated
Comment thread extensions/sentry-triage/extension.mjs Outdated
@liztom
liztom marked this pull request as draft August 25, 2026 19:57
@liztom
liztom force-pushed the liztom-add-sentry-triage-canvas branch 8 times, most recently from 18d21cb to 3f26c16 Compare August 25, 2026 23:00
@liztom
liztom requested a balanced review from Copilot August 25, 2026 23:03

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.

Review details

  • Files reviewed: 18/22 changed files
  • Comments generated: 4
  • Review effort level: Balanced

Comment thread extensions/sentry-triage/extension.mjs
Comment thread extensions/sentry-triage/extension.mjs
Comment thread extensions/sentry-triage/state.mjs Outdated
Comment thread extensions/sentry-triage/extension.mjs
An on-call error-triage canvas for GitHub Copilot: scans live Sentry
issues, groups them by urgency, and hands issues off for tracking or a
fix PR. Registers a reusable canvas extension under extensions/ with a
matching plugins/sentry-triage manifest.

The extension runs a loopback HTTP/SSE server per canvas instance
(host-allow-listed, per-instance capability token never broadcast over
SSE), renders the triage board server- and client-side, and drives
model turns over a single shared Copilot session serialized so scan and
work turns can't interleave. Work state is prototype-pollution-guarded
against agent-controlled tracking keys, and sendAndWait timeouts are
handled without duplicating external side effects.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@liztom
liztom force-pushed the liztom-add-sentry-triage-canvas branch from 3f26c16 to 9cefcc7 Compare August 25, 2026 23:41
@liztom
liztom requested a balanced review from Copilot August 25, 2026 23:42

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.

Review details

  • Files reviewed: 18/22 changed files
  • Comments generated: 2
  • Review effort level: Balanced

Comment on lines +1642 to +1649
document.addEventListener("click", (e) => {
const btn = e.target.closest("#refresh, #rescan");
if (!btn) return;
fetch("/api/refresh", { method: "POST" });
const subtitle = document.querySelector(".page-subtitle");
if (subtitle) subtitle.textContent = "Scanning Sentry...";
showScanOverlay(currentProject ? "Scanning " + currentProject + "…" : "Scanning all projects…");
});
Comment on lines +1745 to +1747
if (localProjectId) {
const match = (Array.isArray(currentProjectOptions) ? currentProjectOptions : []).find((p) => p.id === localProjectId);
localProjectName = match ? match.name : "";
@liztom
liztom marked this pull request as ready for review August 25, 2026 23:50
Copilot AI review requested due to automatic review settings August 25, 2026 23:59
@aaronpowell
aaronpowell merged commit b6da04c into github:main Aug 26, 2026
18 checks passed

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.

Review details

  • Files reviewed: 18/22 changed files
  • Comments generated: 2
  • Review effort level: Balanced

// sent and no artifact created, so just release the token and stop the batch
// — the remaining items belong to the same stale scope.
if (err && err.stale) { workRegistry.delete(workToken); return }
if (!scopeCurrent()) return
Comment on lines +1727 to +1729
const match = (Array.isArray(currentProjectOptions) ? currentProjectOptions : []).find((p) => p.id === id);
const localPath = document.getElementById("local-path");
if (localPath) localPath.value = match && match.path ? match.path : "";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

canvas-extension PR touches canvas extensions new-submission PR adds at least one new contribution plugin PR touches plugins

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants