Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
621ec3b
docs(wayfinder): design for external project dispatch + Twilio SMS op…
Aug 13, 2026
f9163ec
feat(acp): resolve per-channel cwd for external project dispatch
Aug 13, 2026
d01318a
docs(wayfinder): correct design doc after verifying against real code…
Aug 13, 2026
8e11153
feat(db): add sms_identities allow-list + project-routing table
Aug 13, 2026
aa1efdc
feat(relay): Twilio inbound SMS webhook with signature validation + a…
Aug 13, 2026
57a7e2e
feat(relay): synthesize a real relay event from an allowed inbound SMS
Aug 13, 2026
d5e5b31
docs(wayfinder): record event synthesis landing + re-scope task 8
Aug 13, 2026
403b98b
docs(wayfinder): record two blocking findings that invalidate the sli…
Aug 13, 2026
7b53d45
feat(acp): load persona packs at startup, route project per message
Aug 13, 2026
f4a4b53
docs(wayfinder): mark both blocking findings resolved by 2e745cf
Aug 13, 2026
b13d186
chore(acp): ignore recurring stray test-artifact files
Aug 14, 2026
823e8f8
fix(acp): stop 4 pool.rs tests from writing garbage capture files on …
Aug 14, 2026
dc97438
docs(wayfinder): correct the doc's undisclosed test-failure state
Aug 14, 2026
d272ac6
feat(persona): add the sms-operator persona pack (slice 8)
Aug 14, 2026
97cc4ee
docs(wayfinder): mark slice 8 done and slice 9 partially done
Aug 14, 2026
4c7c03b
feat(acp): warn when dispatching into a stale project checkout (slice…
Aug 14, 2026
cb50820
docs(wayfinder): mark slice 12 done
Aug 14, 2026
96f7d99
feat(relay): outbound Twilio SMS sink (slice 10)
Aug 14, 2026
a6bb5fa
docs(wayfinder): mark slice 10 code-complete
Aug 14, 2026
cfd6994
style(acp): fmt fix-up from rebase conflict resolution
Aug 14, 2026
0e7792a
fix(db): renumber sms_identities migration to 0032 after rebase colli…
Aug 14, 2026
e879d70
docs(env): document the Twilio SMS bridge variables
Aug 14, 2026
cb74208
docs(wayfinder): record first live deployment and what it does/doesn'…
Aug 14, 2026
4ca6072
docs(wayfinder): inbound SMS path verified end-to-end on a live relay
Aug 15, 2026
60c0815
fix(relay): fan out synthesized inbound SMS events
Aug 15, 2026
c10925c
docs(wayfinder): full SMS loop verified against a live agent
Aug 15, 2026
31ac7a9
docs(wayfinder): record staging-infra durability fix and registration…
Aug 16, 2026
0ef925f
docs(wayfinder): A2P rejection was a 2026-06-30 rule change, not bad …
Aug 16, 2026
bd4d971
docs(wayfinder): A2P campaign approved, outbound now blocked only on …
Aug 16, 2026
70a5477
fix(sms): stop texting agent reactions, and let a reply set the route
Aug 16, 2026
a825983
docs(wayfinder): record the three SMS fixes and the migration reconci…
Aug 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -250,3 +250,36 @@ RUST_LOG=buzz_relay=debug,buzz_datastore=info,buzz_db=debug,buzz_auth=debug,buzz
# BUZZ_TERMS_OF_SERVICE_MARKDOWN="# Terms of Service\n\nFull terms here."
# BUZZ_PRIVACY_POLICY_MARKDOWN="# Privacy Policy\n\nFull policy here."
# BUZZ_AGE_ATTESTATION_REQUIRED=true

# ── Twilio SMS bridge (optional) ─────────────────────────────────────────────
# Inbound SMS arrives at POST /hooks/sms/inbound; replies posted into the
# inbox channel that thread back to an inbound message are sent out as SMS.
# Every value below is optional — leaving any unset simply disables the
# corresponding half of the bridge, and inbound requests are rejected rather
# than processed without signature validation.
#
# Auth token from the Twilio console. Validates X-Twilio-Signature on inbound
# requests — the sole trust boundary, since Twilio cannot hold a Nostr key.
# Also used as the Basic Auth password for outbound sends. Inbound rejects
# every request when unset; there is no permissive fallback.
# TWILIO_AUTH_TOKEN=your_twilio_auth_token
#
# The exact, full URL configured in the Twilio console for the inbound
# webhook. Twilio signs against this literal string, so it comes from config
# rather than being reconstructed from request headers — behind a proxy or
# load balancer those can disagree with what Twilio actually signed.
# TWILIO_WEBHOOK_URL=https://relay.example.com/hooks/sms/inbound
#
# UUID of the channel inbound SMS is posted into. Inbound SMS is rejected
# (rather than silently dropped) when unset.
# TWILIO_SMS_INBOX_CHANNEL=00000000-0000-0000-0000-000000000000
#
# Account SID — outbound Messages API path component and Basic Auth username.
# TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
#
# E.164 number outbound replies are sent from. Outbound is skipped when unset.
# TWILIO_FROM_NUMBER=+15551234567
#
# Twilio REST API base URL. Defaults to https://api.twilio.com; override only
# to point outbound sends at a mock server in tests.
# TWILIO_API_BASE_URL=https://api.twilio.com
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -72,3 +72,13 @@ identity.key

# Helm dependency tarballs — regenerable from Chart.lock via `helm dependency build`
deploy/charts/*/charts/*.tgz

# Claude Code context
.claude_context_tree

# Stray artifacts from a Windows-path-into-POSIX-shell-script test bug
# (fixed in pool.rs, kept as a safety net against recurrence)
crates/buzz-acp/*Temp*
crates/buzz-acp/*tmp-build*
/st.txt
*.concat
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ chrono = { version = "0.4", features = ["serde"] }
reqwest = { version = "0.13", features = ["json", "rustls"], default-features = false }

# Cryptography
sha1 = "0.11"
sha2 = "0.11"
hex = "0.4"
hmac = "0.13"
Expand Down
Loading