feat(email): scheduled-result email adapter for qbit-email #39

Merged
KofTwentyTwo merged 3 commits from feature/email-qbit into develop 2026-10-14 13:27:26 +00:00
KofTwentyTwo commented 2026-10-14 04:13:08 +00:00 (Migrated from github.com)

Phase (d) of the qbit-email design (QRun-IO/qbit-email docs/DESIGN.md section 11).

The scheduled-task feature is not on develop yet (DESIGN P-g), so this adds the adapter only: AssistantEmail.sendScheduledResult(...) with template assistant_scheduled_result (NOTIFICATION; task name, run time, a 280-character summary, a link; never the full output). Results classified above PUBLIC send only a sign-in link via qbit-email's email_secure_message. Gated by the task's opt-in, qbit-email presence, a new emailExternalApproved config flag (the EXTERNAL approval rule is spec-only today) and a recipient resolver. Idempotency assistant:scheduled:. 6 new tests; module total 216.

qbit-email is an <optional> dependency at 0.1.0-RC.1 (property qbit-email.version); every qbit-email reference is in one adapter class behind a Class.forName + EmailRuntime.config(qInstance) guard. Uses qbit-email 0.1.0-RC.1 from Maven Central; ./mvnw verify is green against it.

🤖 Generated with Claude Code

Phase (d) of the qbit-email design (QRun-IO/qbit-email docs/DESIGN.md section 11). The scheduled-task feature is not on develop yet (DESIGN P-g), so this adds the adapter only: AssistantEmail.sendScheduledResult(...) with template assistant_scheduled_result (NOTIFICATION; task name, run time, a 280-character summary, a link; never the full output). Results classified above PUBLIC send only a sign-in link via qbit-email's email_secure_message. Gated by the task's opt-in, qbit-email presence, a new emailExternalApproved config flag (the EXTERNAL approval rule is spec-only today) and a recipient resolver. Idempotency assistant:scheduled:<run id>. 6 new tests; module total 216. qbit-email is an `<optional>` dependency at `0.1.0-RC.1` (property `qbit-email.version`); every qbit-email reference is in one adapter class behind a `Class.forName` + `EmailRuntime.config(qInstance)` guard. Uses `qbit-email` **0.1.0-RC.1** from Maven Central; `./mvnw verify` is green against it. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.