Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Alerting: Linear as a destination type, opening one issue per incident

Đang mở
#1,896 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@Makisuo đang làm issue này rồi.

Từ ngày 28/10/2026.

  • #1940 của @Makisuo — đang mở

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
20/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
typescript
Lĩnh vực
backend

Hướng nghiên cứu

Start in packages/backend/src/services/alerts/AlertDestinationDelivery.ts, especially composeLinkUrl, then trace how existing destination types such as Slack are configured and delivered through the alerts services. Read the webhook delivery/signature path and the integration configuration used to connect Slack. Done means a connectable linear destination can create an issue for a trigger, comment on renotify/resolve, link the incident, and composeLinkUrl yields an incident-specific URL.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Written by an AI agent (Claude) on behalf of @jasonkuhrt.

A team that tracks its work in Linear can't send Maple alerts there. Linear isn't a destination type, so getting an incident into Linear means writing and hosting your own webhook endpoint.

Here's what that takes today. It's the Worker we're about to build for Heartbeat:

// Behind a `webhook` destination. Check x-maple-signature first.
// Linear accepts a caller-chosen UUID on create, so ids derived from
// incidentId and x-maple-delivery-key make Maple's retries harmless.
switch (body.eventType) {
	case "trigger":
		// Linear issueCreate in the team's Triage, id = uuid(incidentId).
	case "renotify":
	case "resolve":
		// Linear commentCreate on issue uuid(incidentId),
		// id = uuid(x-maple-delivery-key).
	case "test":
		// nothing
}

It also needs a Linear API key in the Worker's secrets, so every issue shows the key's owner as its creator, not Maple.

What we'd like to write instead, after connecting Linear once in Maple's integrations the way Slack is connected:

yield* Maple.AlertDestination("linear", {
	type: "linear",
	name: "Engineering triage",
	team_id: "…", // the Linear team whose Triage receives the issues
})

Maple would then open one issue per incident in that team, comment on it at renotify and resolve, link it back to the incident, and show itself as the issue's creator.

Linear's own Sentry integration is the precedent (https://linear.app/docs/sentry). Sentry alert rules can create Linear issues, a Sentry issue can link to a Linear issue, and completing the Linear issue resolves the Sentry one. Maple's error issues could work the same way: create or link a Linear issue from an error issue, and move the error issue to resolved when its Linear issue completes.

One related gap: the webhook reference describes linkUrl as "the incident in the Maple dashboard", but composeLinkUrl in packages/backend/src/services/alerts/AlertDestinationDelivery.ts builds /services/<name>, the same URL for every incident of a service. That's why the Worker above keys on incidentId, and its issue can only link to the service page.

Ngôn ngữ chính
TypeScript
Star
1.8k
Fork
120
Merge trung bình
8 giờ 11 phút
Pull request đã merge (30 ngày)
667

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của MapleTechLabs/maple

Tất cả issue của MapleTechLabs/maple

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.