• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

archetech / archon / 24466785789
89%

Build:
DEFAULT BRANCH: main
Ran 15 Apr 2026 04:49PM UTC
Jobs 1
Files 24
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

15 Apr 2026 04:46PM UTC coverage: 95.166%. Remained the same
24466785789

push

github

web-flow
feat: Add email↔dmail bridge via Herald and SendGrid (#411)

* Add email-dmail bridge design doc

* Add email bridge to Herald with SendGrid integration

- Add EmailBridge module (email-bridge.ts): outbound send via SendGrid,
  inbound parse handling, reply token generation and storage
- Add POST /api/inbound-email endpoint for SendGrid Inbound Parse webhook
  with spam score filtering and reply token correlation
- Add POST /api/send-email endpoint for authenticated outbound email
  (requires Herald name + Bearer token auth)
- Add multer for multipart/form-data parsing on webhook endpoint
- Fix Drawbridge to pass through multipart request bodies to Herald
- Add ARCHON_HERALD_SENDGRID_* env vars to sample.env
- Update design doc with SendGrid decisions

* Fix trailing whitespace in Herald server

* Pass SendGrid env vars through to Herald in docker-compose

* Support unsolicited inbound email to Herald names

Emails to <name>@4tress.org (or parse domain) now resolve the
local part as a Herald name and create a dmail to that user.
Reply-token path still takes priority for threaded replies.

* Prefix dmail subject with [email from sender@example.com]

Inbound emails (both reply-token and unsolicited) now show the
original sender's email address in the subject line so recipients
know who the email is from.

* Move email bridge state to Herald DB, add dmail→email poll loop

- Reply tokens and email mappings now stored in Herald's DB
  (JSON, SQLite, or Redis) instead of separate JSON file
- Inbound emails store reverse mapping (dmail DID → email address)
- Background poll loop calls refreshNotices() every 60s, checks
  for unread dmails referencing email-bridged messages, and
  auto-forwards them as emails to the original sender
- This completes the bidirectional bridge: email↔dmail replies
  now work in both directions without manual intervention

* Publish Herald service name as agent DID property

On startup, sets didDocumentData.name to SERVICE_NAME vi... (continued)

1990 of 2192 branches covered (90.78%)

Branch coverage included in aggregate %.

4231 of 4345 relevant lines covered (97.38%)

1167.44 hits per line

Jobs
ID Job ID Ran Files Coverage
1 24466785789.1 15 Apr 2026 04:49PM UTC 48
96.06
GitHub Action Run
Source Files on build 24466785789
  • Tree
  • List 24
  • Changed 22
  • Source Changed 0
  • Coverage Changed 22
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #24466785789
  • 737a4e9a on github
  • Prev Build on main (#24430085814)
  • Next Build on main (#24467698809)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc