Repository navigation
Conversation
The worker logs one `channel status:` line per configured interval with queue counts, the oldest unfinished and unsent ages, and unknown, failed, and blocked reply counts. The read is bounded to five seconds so monitoring cannot stall scheduling or a graceful drain. Every rejected webhook request logs a fixed reason. No line contains message text, sender IDs, tokens, or provider IDs. Adds EXTRA_WHATSAPP_STATUS_LOG_SECONDS (default 60). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The runbook covers preflight, deployment, staged enablement and pausing, health and status logs, restart recovery, rollback, retention, and the real-number smoke-test checklist. The example runs agent-manager on durable storage with a tool-free assistant and an allowlist identity resolver; its port is bound to loopback because the web conversation API is anonymous by default. A fake-provider rehearsal proves that paused intake survives restarts, is answered and sent exactly once, projects a delivered callback, and is not resent after a further restart. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Final planned stage of the WhatsApp integration plan: an administrator runbook, a deployable pilot example, operational monitoring, and a fake-provider restart rehearsal (task 0021).
Commits
feat(manager): log channel status and webhook rejections.channel status:line perEXTRA_WHATSAPP_STATUS_LOG_SECONDS(default 60). It reports queue counts, the oldest unfinished and unsent ages, and unknown, failed, and blocked reply counts.whatsapp webhook rejected: reason=<fixed reason>.feat(examples): add the WhatsApp pilot example, runbook, and rehearsal.docs/WHATSAPP_RUNBOOK.mdcovers preflight, deployment, staged enablement and pause states, health and monitoring, restart recovery, rollback, retention, and the smoke-test checklist.examples/whatsapp-pilot/contains a tool-free assistant, an allowlist identity resolver for a closed pilot,.env.examplewith every stage off, and a compose file that runsagent-manageron a durable volume.deliveredcallback is projected, and that nothing is resent after a further restart.The user chose structured log lines for monitoring, so there is no new HTTP endpoint, CLI, dependency, or migration.
Review corrections included
EXTRA_DB_URLin.envnow overrides the compose default, so a PostgreSQL configuration is no longer silently replaced by SQLite.docker compose run --entrypoint sh, because the image entrypoint passes other commands toagentctl.rolesgiven as a string, denies access instead of granting the wrong roles.Each code correction has a regression test that fails without it.
Validation
make checkpasses: 1441 tests, plus ruff and mypy. The first commit was also checked alone in a worktree: 1438 tests.agentctl validatepasses on the example.docker compose configwas checked with and without a PostgreSQL.env.0006was rehearsed on a temporary database: the channel tables are removed and conversations are kept.Still pending
🤖 Generated with Claude Code