mirror of
https://github.com/coder/coder.git
synced 2026-06-03 13:08:25 +00:00
fdb0267e5d
## Description Send a notification to the workspace owner when an AI task’s app state becomes `Working` or `Idle`. An AI task is identified by a workspace build with `HasAITask = true` and `AITaskSidebarAppID` matching the agent app’s ID. ## Changes * Add `TemplateTaskWorking` notification template. * Add `TemplateTaskIdle` notification template. * Add `GetLatestWorkspaceAppStatusesByAppID` SQL query to get the workspace app statuses ordered by latest first. * Update `PATCH /workspaceagents/me/app-status` to enqueue: * `TemplateTaskWorking` when state transitions to `working` * `TemplateTaskIdle` when state transitions to `idle` * Notification labels include: * `task`: task initial prompt * `workspace`: workspace name * Notification dedupe: include a minute-bucketed timestamp (UTC truncated to the minute) in the enqueue data to allow identical content to resend within the same day (but not more than once per minute). Closes: https://github.com/coder/coder/issues/19776
86 lines
3.4 KiB
Plaintext
86 lines
3.4 KiB
Plaintext
From: system@coder.com
|
|
To: bobby@coder.com
|
|
Subject: Task 'my-workspace' is working
|
|
Message-Id: 02ee4935-73be-4fa1-a290-ff9999026b13@blush-whale-48
|
|
Date: Fri, 11 Oct 2024 09:03:06 +0000
|
|
Content-Type: multipart/alternative; boundary=bbe61b741255b6098bb6b3c1f41b885773df633cb18d2a3002b68e4bc9c4
|
|
MIME-Version: 1.0
|
|
|
|
--bbe61b741255b6098bb6b3c1f41b885773df633cb18d2a3002b68e4bc9c4
|
|
Content-Transfer-Encoding: quoted-printable
|
|
Content-Type: text/plain; charset=UTF-8
|
|
|
|
Hi Bobby,
|
|
|
|
The task 'my-task' transitioned to a working state.
|
|
|
|
|
|
View task: http://test.com/tasks/bobby/my-workspace
|
|
|
|
View workspace: http://test.com/@bobby/my-workspace
|
|
|
|
--bbe61b741255b6098bb6b3c1f41b885773df633cb18d2a3002b68e4bc9c4
|
|
Content-Transfer-Encoding: quoted-printable
|
|
Content-Type: text/html; charset=UTF-8
|
|
|
|
<!doctype html>
|
|
<html lang=3D"en">
|
|
<head>
|
|
<meta charset=3D"UTF-8" />
|
|
<meta name=3D"viewport" content=3D"width=3Ddevice-width, initial-scale=
|
|
=3D1.0" />
|
|
<title>Task 'my-workspace' is working</title>
|
|
</head>
|
|
<body style=3D"margin: 0; padding: 0; font-family: -apple-system, system-=
|
|
ui, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarel=
|
|
l', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; color: #020617=
|
|
; background: #f8fafc;">
|
|
<div style=3D"max-width: 600px; margin: 20px auto; padding: 60px; borde=
|
|
r: 1px solid #e2e8f0; border-radius: 8px; background-color: #fff; text-alig=
|
|
n: left; font-size: 14px; line-height: 1.5;">
|
|
<div style=3D"text-align: center;">
|
|
<img src=3D"https://coder.com/coder-logo-horizontal.png" alt=3D"Cod=
|
|
er Logo" style=3D"height: 40px;" />
|
|
</div>
|
|
<h1 style=3D"text-align: center; font-size: 24px; font-weight: 400; m=
|
|
argin: 8px 0 32px; line-height: 1.5;">
|
|
Task 'my-workspace' is working
|
|
</h1>
|
|
<div style=3D"line-height: 1.5;">
|
|
<p>Hi Bobby,</p>
|
|
<p>The task ‘my-task’ transitioned to a working state.<=
|
|
/p>
|
|
</div>
|
|
<div style=3D"text-align: center; margin-top: 32px;">
|
|
=20
|
|
<a href=3D"http://test.com/tasks/bobby/my-workspace" style=3D"displ=
|
|
ay: inline-block; padding: 13px 24px; background-color: #020617; color: #f8=
|
|
fafc; text-decoration: none; border-radius: 8px; margin: 0 4px;">
|
|
View task
|
|
</a>
|
|
=20
|
|
<a href=3D"http://test.com/@bobby/my-workspace" style=3D"display: i=
|
|
nline-block; padding: 13px 24px; background-color: #020617; color: #f8fafc;=
|
|
text-decoration: none; border-radius: 8px; margin: 0 4px;">
|
|
View workspace
|
|
</a>
|
|
=20
|
|
</div>
|
|
<div style=3D"border-top: 1px solid #e2e8f0; color: #475569; font-siz=
|
|
e: 12px; margin-top: 64px; padding-top: 24px; line-height: 1.6;">
|
|
<p>© 2024 Coder. All rights reserved - <a =
|
|
href=3D"http://test.com" style=3D"color: #2563eb; text-decoration: none;">h=
|
|
ttp://test.com</a></p>
|
|
<p><a href=3D"http://test.com/settings/notifications" style=3D"colo=
|
|
r: #2563eb; text-decoration: none;">Click here to manage your notification =
|
|
settings</a></p>
|
|
<p><a href=3D"http://test.com/settings/notifications?disabled=3Dbd4=
|
|
b7168-d05e-4e19-ad0f-3593b77aa90f" style=3D"color: #2563eb; text-decoration=
|
|
: none;">Stop receiving emails like this</a></p>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
|
|
--bbe61b741255b6098bb6b3c1f41b885773df633cb18d2a3002b68e4bc9c4--
|