Add ADK, channels, messaging modules and infrastructure#43
Merged
MarkEdmondson1234 merged 5 commits intoMar 3, 2026
Conversation
Consolidate reusable patterns from rockwool (ADK agents), ailang (messaging), and aitana-labs (channels, firestore, auth) into sunholo-py. New modules: - sunholo/adk/ - Google ADK integration (config, session, events, tools) - sunholo/channels/ - Multi-channel messaging base (email/telegram/whatsapp) - sunholo/messaging/ - AILANG CLI bridge for inter-agent messaging - sunholo/database/firestore.py - Firestore client with circuit breaker - sunholo/auth/oauth.py - Google OAuth2 manager - sunholo/utils/http_client.py - httpx retry with backoff/jitter - sunholo/utils/timeout_config.py - Context-aware timeout profiles Also: add [adk], [channels], [firestore] dep groups in pyproject.toml, update langchain to >=0.3.0, keep langfuse pinned at ==2.60.9 (v3+ requires clickhouse), update CLAUDE.md with new module docs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Second pass of consolidation from rockwool and aitana-labs: - adk/runner.py: DynamicRunner with SubAgentRegistry and ModelRegistry for per-request agent configuration - adk/artifacts.py: HttpArtifactService and MimeRoutingArtifactService for HTTP-based artifact persistence - adk/litellm_compat.py: FixedLiteLlm with Azure null tool_call.id fix and text artifact conversion - channels/telegram.py: TelegramChannel with Bot API, MarkdownV2, message splitting at 4096 chars - channels/whatsapp.py: WhatsAppChannel with Twilio, HMAC-SHA1 validation, message splitting at 1600 chars - channels/email.py: EmailChannel with SendGrid, webhook parsing, markdown-to-HTML conversion - tests/test_adk.py: 38 tests for ADK, messaging, and utility modules - tests/test_channels.py: 28 tests for all channel implementations All 93 tests pass (66 new + 27 existing). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…access control Third pass of consolidation from aitana-labs: - tools/permissions.py: Config-driven permission system with email/domain matching, caching, tag-based access - tools/orchestrator.py: Async tool execution coordinator using AsyncTaskRunner - mcp/discovery.py: Dynamic MCP server registry and tool discovery - genai/thinking.py: Extended thinking content extraction and streaming capture - auth/access_control.py: Declarative RBAC with public/private/domain/group/role levels - examples/adk_agent_demo.py: Demo showcasing all new ADK and tool modules - 107 new tests (200 total), all passing Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- CLAUDE.md: Document tools/permissions, tools/orchestrator, mcp/discovery, genai/thinking, auth/access_control modules with usage guidance - Bump version 0.145.3 → 0.146.0 for consolidation milestone Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New documentation sections: - docs/docs/adk/ (8 pages): Config, Runner, Session, Events, Tools, Artifacts, LiteLLM Compat - docs/docs/channels/ (4 pages): Base interface, Email, Telegram, WhatsApp - docs/docs/tools/ (3 pages): Permissions, Orchestrator - docs/docs/auth/ (3 pages): Access Control, OAuth - docs/docs/integrations/thinking.md: Extended thinking capture - docs/docs/integrations/messaging.md: AILANG messaging bridge - docs/docs/databases/firestore.md: Firestore client with circuit breaker Updated existing docs: - integrations/mcp.md: Added MCP Discovery section - integrations/index.md: Added new module links - databases/index.md: Added Firestore link - index.md: Added adk, channels, firestore install groups Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.
Summary
sunholo/adk/module - Google ADK integration (config with PostgreSQL advisory locks, session management with auth injection, event transformer for SSE, @mcp_tool decorator)sunholo/channels/module - Abstract BaseChannel interface for multi-channel messaging (email/Telegram/WhatsApp) with rate limiting, session managementsunholo/messaging/module - Python bridge to AILANG CLI for inter-agent messaging (inbox management, search, GitHub sync)[adk],[channels],[firestore]optional dependency groups; updated langchain to >=0.3.0; kept langfuse pinned at ==2.60.9 (v3+ requires clickhouse)Test plan
uv run pytest tests/)pip install sunholo[adk]installs google-adk and litellmpip install sunholo[channels]installs twilio and aiohttp🤖 Generated with Claude Code