roomkit 0.1.1__py3-none-any.whl → 0.2.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: roomkit
3
- Version: 0.1.1
3
+ Version: 0.2.1
4
4
  Summary: Pure async Python library for multi-channel conversations
5
5
  Project-URL: Homepage, https://roomkit.live
6
6
  Project-URL: Repository, https://github.com/sboily/roomkit
@@ -30,6 +30,7 @@ Requires-Dist: anthropic>=0.30; extra == 'anthropic'
30
30
  Provides-Extra: dev
31
31
  Requires-Dist: anthropic>=0.30; extra == 'dev'
32
32
  Requires-Dist: google-genai>=1.0.0; extra == 'dev'
33
+ Requires-Dist: httpx-sse>=0.4; extra == 'dev'
33
34
  Requires-Dist: httpx>=0.27; extra == 'dev'
34
35
  Requires-Dist: mkdocs-material>=9.5; extra == 'dev'
35
36
  Requires-Dist: mkdocs>=1.6; extra == 'dev'
@@ -49,6 +50,9 @@ Provides-Extra: docs
49
50
  Requires-Dist: mkdocs-material>=9.5; extra == 'docs'
50
51
  Requires-Dist: mkdocs>=1.6; extra == 'docs'
51
52
  Requires-Dist: mkdocstrings[python]>=0.27; extra == 'docs'
53
+ Provides-Extra: fastrtc
54
+ Requires-Dist: fastrtc; extra == 'fastrtc'
55
+ Requires-Dist: numpy; extra == 'fastrtc'
52
56
  Provides-Extra: gemini
53
57
  Requires-Dist: google-genai>=1.0.0; extra == 'gemini'
54
58
  Provides-Extra: httpx
@@ -68,7 +72,12 @@ Requires-Dist: pydantic-ai>=0.1; extra == 'pydantic-ai'
68
72
  Provides-Extra: pynacl
69
73
  Requires-Dist: pynacl>=1.5; extra == 'pynacl'
70
74
  Provides-Extra: sources
75
+ Requires-Dist: httpx-sse>=0.4; extra == 'sources'
76
+ Requires-Dist: httpx>=0.27; extra == 'sources'
71
77
  Requires-Dist: websockets>=13.0; extra == 'sources'
78
+ Provides-Extra: sse
79
+ Requires-Dist: httpx-sse>=0.4; extra == 'sse'
80
+ Requires-Dist: httpx>=0.27; extra == 'sse'
72
81
  Provides-Extra: twilio
73
82
  Requires-Dist: twilio>=9.0; extra == 'twilio'
74
83
  Provides-Extra: websocket
@@ -83,14 +92,14 @@ Description-Content-Type: text/markdown
83
92
 
84
93
  Pure async Python 3.12+ library for multi-channel conversations.
85
94
 
86
- RoomKit gives you a single abstraction — the **room** — to orchestrate messages across SMS, RCS, Email, WhatsApp, Messenger, WebSocket, HTTP webhooks, and AI channels. Events flow in through any channel, get validated by hooks, and broadcast to every other channel in the room with automatic content transcoding.
95
+ RoomKit gives you a single abstraction — the **room** — to orchestrate messages across SMS, RCS, Email, WhatsApp, Messenger, Voice, WebSocket, HTTP webhooks, and AI channels. Events flow in through any channel, get validated by hooks, and broadcast to every other channel in the room with automatic content transcoding.
87
96
 
88
97
  ```
89
98
  Inbound ──► Hook pipeline ──► Store ──► Broadcast to all channels
90
99
 
91
- ┌──────────┬──────────┬────────┼────────┬────────┐
92
- ▼ ▼ ▼ ▼ ▼ ▼
93
- SMS/RCS WebSocket Email Messenger AI Webhook
100
+ ┌──────────┬──────────┬────────┼────────┬────────┬────────┐
101
+ ▼ ▼ ▼ ▼ ▼ ▼
102
+ SMS/RCS WebSocket Email Messenger Voice AI Webhook
94
103
  ```
95
104
 
96
105
  **Website:** [www.roomkit.live](https://www.roomkit.live) | **Docs:** [www.roomkit.live/docs](https://www.roomkit.live/docs/)
@@ -157,6 +166,7 @@ pip install roomkit[websocket] # WebSocket event source
157
166
  pip install roomkit[anthropic] # Anthropic Claude AI
158
167
  pip install roomkit[openai] # OpenAI GPT
159
168
  pip install roomkit[gemini] # Google Gemini AI
169
+ pip install roomkit[fastrtc] # FastRTC voice backend
160
170
  pip install roomkit[providers] # all transport providers
161
171
  pip install roomkit[all] # everything
162
172
  ```
@@ -184,10 +194,11 @@ Each channel is a thin adapter between the room and an external transport. All c
184
194
  | **WebSocket** | `websocket` | text, rich, media | Real-time with typing, reactions |
185
195
  | **Messenger** | `messenger` | text, rich, media, template | Buttons, quick replies |
186
196
  | **WhatsApp** | `whatsapp` | text, rich, media, location, template | Buttons, templates |
197
+ | **Voice** | `voice` | audio, text | STT/TTS, barge-in, FastRTC streaming |
187
198
  | **HTTP** | `webhook` | text, rich | Generic webhook for any system |
188
199
  | **AI** | `ai` | text, rich | Intelligence layer (not transport) |
189
200
 
190
- Channels have two categories: **transport** (delivers to external systems) and **intelligence** (generates content, like AI).
201
+ Channels have two categories: **transport** (delivers to external systems) and **intelligence** (generates content, like AI). The Voice channel bridges real-time audio with the room-based conversation model.
191
202
 
192
203
  ## Providers
193
204
 
@@ -217,6 +228,14 @@ Providers handle the actual API calls. Every provider has a mock counterpart for
217
228
  | `OpenAIAIProvider` | GPT-4, vision, tools | `roomkit[openai]` |
218
229
  | `GeminiAIProvider` | Gemini, vision, tools | `roomkit[gemini]` |
219
230
 
231
+ ### Voice Providers
232
+
233
+ | Provider | Role | Dependency |
234
+ |----------|------|------------|
235
+ | `DeepgramSTTProvider` | Speech-to-text | `roomkit[httpx]` |
236
+ | `ElevenLabsTTSProvider` | Text-to-speech | `roomkit[httpx]` |
237
+ | `FastRTCVoiceBackend` | WebRTC audio transport | `roomkit[fastrtc]` |
238
+
220
239
  ### Other Providers
221
240
 
222
241
  | Provider | Channel | Dependency |
@@ -542,6 +561,7 @@ src/roomkit/
542
561
  realtime/ Ephemeral events (typing, presence, read receipts)
543
562
  sources/ Event-driven sources (WebSocket, custom)
544
563
  store/ Storage abstraction and in-memory implementation
564
+ voice/ Voice subsystem (stt/, tts/, backends/)
545
565
  ```
546
566
 
547
567
  ## Documentation
@@ -1,21 +1,22 @@
1
- roomkit/__init__.py,sha256=PYIvFXG8e6MEwEPXKltIaGxnLvft5mlqTcaJd1Vi2jA,10093
2
- roomkit/_version.py,sha256=rnObPjuBcEStqSO0S6gsdS_ot8ITOQjVj_-P1LUUYpg,22
1
+ roomkit/__init__.py,sha256=B66rQGsO7QhuLoO56fCWy0x0mmO-s8AkCDiv4QbqEzc,11236
2
+ roomkit/_version.py,sha256=HfjVOrpTnmZ-xVFCYSVmX50EXaBQeJteUHG-PD6iQs8,22
3
3
  roomkit/ai_docs.py,sha256=mnKnwraTD5J38vm7Rm_q-2BYPBh2vXQ7OgT8i-B_niY,2336
4
4
  roomkit/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  roomkit/channels/__init__.py,sha256=FQYB5c_y8dxyB7Os0l7o157-LVlneQrGltxF18HMugk,5023
6
6
  roomkit/channels/ai.py,sha256=7RK-PXsPwHw4ADhJL2Z1MGlCXseKpdg8-J1bls-AoMM,8330
7
7
  roomkit/channels/base.py,sha256=rS7vUOzLFZwjd8ulB3iihlbLQ1FhgTjj8OmYAYWhETM,2137
8
8
  roomkit/channels/transport.py,sha256=2bnAxv1-J6h-CZcoizKd5gZghmQZms5Pyspo4pB1RuY,4744
9
+ roomkit/channels/voice.py,sha256=p5LxoQAbFEsMv_-9JTBQWuuRmC4FWq0DjnG7jNonLvw,26179
9
10
  roomkit/channels/websocket.py,sha256=CfidIKW_DK7Q6yljjlN5mR79OTHOIgX67IUU5Bj7CPE,2954
10
11
  roomkit/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- roomkit/core/_channel_ops.py,sha256=SSDddZTxqcsSDCQ6PhQfQRhJs-KGGAO3moQqFQcJ-GI,10271
12
+ roomkit/core/_channel_ops.py,sha256=empqLlx8JBPf8-TdSUFcQ4nCrfR3slOi5QhQGKjZmTw,10563
12
13
  roomkit/core/_helpers.py,sha256=-PxREqVe-cV3mZhPaCsechuQs5bUfVqNHSKdu2EM8j8,11270
13
- roomkit/core/_inbound.py,sha256=5PkRo6VOZKi6nJ4Kb9CJJvxPyEND6jwt8U-xDh7PrLY,18078
14
+ roomkit/core/_inbound.py,sha256=-5voeN1sAQEXLcEl32o1shvgbNg8vcdh8QAMfWYkTJ8,18316
14
15
  roomkit/core/_room_lifecycle.py,sha256=xo2UwDZLuZA1xXXGeg85qdj1j3_-fJNM2B_J3E5DRJU,10661
15
16
  roomkit/core/circuit_breaker.py,sha256=kEXEI8EEkD5LZyegAaFZb5U4mrX2IDnAjI0avv46exs,2873
16
17
  roomkit/core/event_router.py,sha256=TNweMDuzG0OPk3qvJ-CiQgtcANCMJD5FdNAtTtIRPSo,16634
17
- roomkit/core/framework.py,sha256=NzWe39s-S0MH7EyuEQhAN9xteEW6ck9P_43imbSU8-A,29509
18
- roomkit/core/hooks.py,sha256=OWgKOHU53Pxdfg0GH8vhvBbWGdf6xete9m4kkC-I2TE,8479
18
+ roomkit/core/framework.py,sha256=PCtCjdwTaYo4uIvslWsfOu1mT68FqfPGvONxGYPE-3s,35482
19
+ roomkit/core/hooks.py,sha256=dsUU_RLdVWOxSwJeF2Q94CpaXL0pBMRH-QOM4qaeEOs,9615
19
20
  roomkit/core/inbound_router.py,sha256=QvuFAjWedeV02tJC6xU8JQGWk-qlhKnQl58JOL6crw4,1773
20
21
  roomkit/core/locks.py,sha256=_2hqKbCjtWVyeKiiXD_StAHYdghW_Daw0VIPeiNfoJA,2060
21
22
  roomkit/core/rate_limiter.py,sha256=u6AEyB4LVy85fWSOPk5FbBvV9KyRUYV87D-X7FFwaCE,2624
@@ -29,7 +30,7 @@ roomkit/models/__init__.py,sha256=1xjIztFpQnOsWa6CteMIz5NaEuAr_0leq00nFdk7NDc,22
29
30
  roomkit/models/channel.py,sha256=70Jxynrsi-LSMtrWgtbpzysEUIFS9H_MXzjRfmyECa8,3525
30
31
  roomkit/models/context.py,sha256=1AoTwUBhff_eSCD6tGv66Gj7qoIeGeuvjH3ZFaxsgwA,1335
31
32
  roomkit/models/delivery.py,sha256=0HEGvkymYjocfWY52DX1kYO7pFNIEQ7rdHwhlx6WQTQ,2242
32
- roomkit/models/enums.py,sha256=x_nZ-Ng13-FR-f6XNVEVsYgHdYRXpI2eJVO1vlFOC7I,3768
33
+ roomkit/models/enums.py,sha256=y5PDvxmifhIOB9SGhoOzOykk83UwKNZGxizqJ1E8PJ0,4217
33
34
  roomkit/models/event.py,sha256=n6fgTR-KWDMA2E9YE8tsAiWlltT8jCgbd5aoI0vJW_A,5887
34
35
  roomkit/models/framework_event.py,sha256=ZVJPXymC8VjiG4pKaKw2zHq9XimJE0jOYVUw1yLY500,509
35
36
  roomkit/models/hook.py,sha256=MnVmh5gjVBeiBZhWzpz9pmOPslQZ_N4xpzHAc7h5TPY,2192
@@ -100,15 +101,31 @@ roomkit/providers/whatsapp/mock.py,sha256=i4wtsVMsBpx6LXjQpgvK7aoOEH2dMxu5W9SWaG
100
101
  roomkit/realtime/__init__.py,sha256=unS1HPdMmfYSMf1WVo9mvMDuw3ceP4bkyB60cCTcT8w,360
101
102
  roomkit/realtime/base.py,sha256=8savEf_efHVLkmuPDwwX1IVbXru_GMhVtlfVbP1qMTg,3476
102
103
  roomkit/realtime/memory.py,sha256=aIh2dy2g9V6n_VhEtSuzcYpB7UtDMQR6dpXK-B91Ne8,5128
103
- roomkit/sources/__init__.py,sha256=Qh2QGw2k0kX5cPBbgG4zzVoDV7-SJx3XzSkrtDtPiT8,854
104
+ roomkit/sources/__init__.py,sha256=qAVf85Sv1FDYf47bSBvc2IoDS-d18U-xcyI5wBYWngY,808
104
105
  roomkit/sources/base.py,sha256=8oHjw0vdcOMYxwtenN-dwuBwCx42bmMdfC_KZwriAaE,6637
106
+ roomkit/sources/sse.py,sha256=RzoEqLZIdC3PjbSd6O8aisG6DTyl7OQUMqzVhJEpsHM,7342
105
107
  roomkit/sources/websocket.py,sha256=j60gsILNutqJNPdVqyOBbQ5sUV3XOes2LwhLMKZIOE0,8521
106
108
  roomkit/store/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
109
  roomkit/store/base.py,sha256=Q5p-lOQmWJqiBd7jD-1inee6qoYBhlb-C06Z2bzJ8mI,6781
108
110
  roomkit/store/memory.py,sha256=_cAUBuC7BUwOKEa6aomr4aG7t-J0CuiK7izagQ-Daig,11932
109
- roomkit/AGENTS.md,sha256=lETRMzpOTJ7ilhbm3_ufZYu5Y7Q0nTlIEU2-oT2XN8Q,10490
110
- roomkit/llms.txt,sha256=QWeLJaSnt2nKUmmQxChnEFPO675ikMFm0TDHMdEKn8s,4039
111
- roomkit-0.1.1.dist-info/METADATA,sha256=psJE1VgRw6bPxb8MJ6aVkNkUUxVm_hNqC6ihjMDI-bw,19378
112
- roomkit-0.1.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
113
- roomkit-0.1.1.dist-info/licenses/LICENSE,sha256=GIXnbN1bOyI_7Ydnf7EXBxrFi344wlsdVV4acemzRcE,1070
114
- roomkit-0.1.1.dist-info/RECORD,,
111
+ roomkit/voice/__init__.py,sha256=nBA7vF9E4Sm0wwiVjZ2fQnGNN0VzX2tkdzo7F8zhOb4,2502
112
+ roomkit/voice/base.py,sha256=HzE2U2LSt4-u56Rob8GPvLfXpreukbFq0SQetEkGTQs,3202
113
+ roomkit/voice/events.py,sha256=zPP9GPG0_2owGwFnoytL_x-PdBYdZaxPSjuxbMccTF8,3931
114
+ roomkit/voice/backends/__init__.py,sha256=PVZmFgTRFue2MYOpiYz9j_SbsJ-Dv5mwD3JsN3Bn-uI,32
115
+ roomkit/voice/backends/base.py,sha256=mq8CXGU10e6phJplNtAbItt-Au3mEE1k6suCsqGxAMY,8143
116
+ roomkit/voice/backends/fastrtc.py,sha256=pEahq2VqwaoxDCyDMJ25rTi_48QfXRSTLQBXSyR4V5Q,17070
117
+ roomkit/voice/backends/mock.py,sha256=9ODvnS014li6aPwr__iEuo5kPVK3hvPDZgZ1QdTiCWE,10648
118
+ roomkit/voice/stt/__init__.py,sha256=QQqVP_D8S-VsxItmObtj5s9H5S-un_yfL1csLJyeHmg,32
119
+ roomkit/voice/stt/base.py,sha256=d-PG1wRR6XmT5WKd3Bto3QpTAA6CFfyobTA8nfib5zE,1720
120
+ roomkit/voice/stt/deepgram.py,sha256=j0d1Rd2sodkMdNpPGM9GbNhPBMjIKORc9xJTf44zRdQ,7658
121
+ roomkit/voice/stt/mock.py,sha256=dCX8W6giVTpbAo1J0WZmfzE74-OOimm5QwK0QBAvIco,1290
122
+ roomkit/voice/tts/__init__.py,sha256=rv-e3wk_w7XU-mtHx3c2QeM4u6NWmDlXhIhiLltEe0A,32
123
+ roomkit/voice/tts/base.py,sha256=kvY5YgjxZzz_G0V1wNregR_ZpjMjCnjpy3cYQg-6S2M,1696
124
+ roomkit/voice/tts/elevenlabs.py,sha256=Y9iS7hZw1xEMZWLX_iIdmQUJOU8Xl7SB9eviFd0zrXc,10870
125
+ roomkit/voice/tts/mock.py,sha256=NUxqmwOepIZAtDV3YYg15G7t8GaMOJdwsQ0ORJmbWBY,1654
126
+ roomkit/AGENTS.md,sha256=tT_A7GSFhX03s665mUoDhpH-41g6ZLHe5hwQHfjq1Mw,11467
127
+ roomkit/llms.txt,sha256=w2ktaQsxhTtuoGF17_x_xJj_VrRQrxA_BBJNXxowGVU,4390
128
+ roomkit-0.2.1.dist-info/METADATA,sha256=7NzG2a9e6sAmlqmAXlOAupmHdaAA2u0h28JrvAdAP38,20359
129
+ roomkit-0.2.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
130
+ roomkit-0.2.1.dist-info/licenses/LICENSE,sha256=GIXnbN1bOyI_7Ydnf7EXBxrFi344wlsdVV4acemzRcE,1070
131
+ roomkit-0.2.1.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.27.0
2
+ Generator: hatchling 1.28.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any