You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: ✨ Add Linear integration and notification services (#23)
* Introduced `LinearClient` for managing Linear issues, including fetching, updating, and labeling.
* Implemented email notification functionality via `sendTaskOutcomeEmail` and `buildTaskOutcomeEmailPayload`.
* Created utility functions for generating prompts and comments related to planning, implementation, and review processes.
* Added logging and shell command utilities for better error handling and command execution.
* Enhanced tests to cover new features and ensure reliability across the application.
Copy file name to clipboardExpand all lines: README.md
+21Lines changed: 21 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -53,6 +53,7 @@ flowchart LR
53
53
Configuration is loaded from `adhd-ai.config.ts` and resolved into project-specific runtime settings. Existing `piv-loop.config.ts` files are still accepted as a legacy fallback.
54
54
55
55
- Root defaults can define shared repo, linear, codex, skills, and dry-run behavior.
56
+
- Optional root `notifications.email` settings can enable terminal outcome emails through Resend.
56
57
- Polling is a single global config at the root `polling` key (`intervalMs`, `maxCycles`, `exitWhenIdle`, `staleRunTimeoutMs`) and applies to all selected projects in a run.
57
58
- Optional `linear.projectId` can scope each ADHD.ai project to a specific Linear project when selecting assigned work.
58
59
- For targeted runs with `--all-projects --issue <KEY>`, ADHD.ai routes the issue to exactly one project by matching `linear.projectId` to the Linear issue's `projectId`.
Email notifications are optional and global. ADHD.ai sends a notification when an issue reaches a terminal outcome (`done` or `blocked`).
139
+
140
+
Configuration options:
141
+
142
+
-`notifications.email.enabled` (optional boolean; defaults to auto-enabled when a Resend API key exists)
143
+
-`notifications.email.resendApiKey`
144
+
-`notifications.email.from`
145
+
-`notifications.email.to` (array of recipients)
146
+
147
+
Environment fallbacks:
148
+
149
+
-`RESEND_API_KEY`
150
+
-`RESEND_FROM`
151
+
-`RESEND_TO` (comma-separated recipients)
152
+
135
153
## Required Environment
136
154
137
155
Set these variables before running:
@@ -174,6 +192,9 @@ The `PIV_*` environment variable namespace remains supported for compatibility w
174
192
-`CODEX_HOME` to override Codex runtime state directory
175
193
-`PIV_LOG_LEVEL` (optional; default `info`)
176
194
-`PIV_LOG_PRETTY` (optional; default `1` in TTY, `0` otherwise)
195
+
-`RESEND_API_KEY` (optional; enables email notifications when configured with sender/recipients)
196
+
-`RESEND_FROM` (optional; required when email notifications are enabled)
197
+
-`RESEND_TO` (optional; comma-separated recipients, required when email notifications are enabled)
177
198
178
199
`LINEAR_STATUS_*` values may be either Linear workflow state IDs or exact state names (for example `Todo`, `In Progress`, `Done`). Names are resolved to IDs at runtime.
0 commit comments