-
Notifications
You must be signed in to change notification settings - Fork 67
Ensure user agent is initialized before joining the call #113
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughAgent user creation is made idempotent via a new Changes
Sequence Diagram(s)sequenceDiagram
actor Runner
participant Example
participant Agent
participant Edge
rect rgb(200,220,240)
Note over Example,Agent: Previous flow (explicit create_user)
Runner->>Example: run example
Example->>Agent: instantiate Agent(agent_user?, edge)
Example->>Agent: await agent.create_user()
Agent->>Edge: create user request
Edge-->>Agent: user created
Example->>Agent: await agent.join(call)
Agent-->>Example: joined
end
rect rgb(220,240,200)
Note over Example,Agent: New flow (implicit, idempotent)
Runner->>Example: run example
Example->>Agent: instantiate Agent(agent_user?, edge)
Example->>Agent: await agent.join(call)
Agent->>Agent: create_user() [guarded by _agent_user_initialized]
Agent->>Edge: create user request (if needed)
Edge-->>Agent: user created
Agent-->>Example: joined
end
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Disabled knowledge base sources:
📒 Files selected for processing (4)
💤 Files with no reviewable changes (2)
🚧 Files skipped from review as they are similar to previous changes (1)
🧰 Additional context used📓 Path-based instructions (1)**/*.py📄 CodeRabbit inference engine (.cursor/rules/python.mdc)
Files:
🧬 Code graph analysis (1)examples/other_examples/09_github_mcp_demo/gemini_realtime_github_mcp_demo.py (1)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
🔇 Additional comments (1)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (3)
agents-core/vision_agents/core/agents/agents.py (3)
244-246: Duplicate coordinator wildcard subscriptions cause double event delivery._on_wildcard("*", ...) is registered twice on _coordinator_ws_client. Remove the second block.
- connection._connection._coordinator_ws_client.on_wildcard( - "*", - lambda event_name, event: self.events.send(event), - )Also applies to: 258-261
47-52: Treat CancelledError as normal in background task logging.Cancelled tasks during shutdown shouldn’t log as errors.
def _log_task_exception(task: asyncio.Task): try: task.result() + except asyncio.CancelledError: + return except Exception: logger.exception("Error in background task")
686-723: _process_track loop lacks cancellation handling; cleanup log is unreachable.Add CancelledError handling and move summary to finally to guarantee execution.
- while True: - try: - # Use the raw forwarder instead of competing for track.recv() - video_frame = await raw_forwarder.next_frame(timeout=2.0) + try: + while True: + # Use the raw forwarder instead of competing for track.recv() + video_frame = await raw_forwarder.next_frame(timeout=2.0) ... - except asyncio.TimeoutError: + except asyncio.TimeoutError: ... - # Cleanup and logging - self.logger.info( - f"🎥VDP: Video processing loop ended for track {track_id} - timeouts: {timeout_errors}, consecutive_errors: {consecutive_errors}" - ) + except asyncio.CancelledError: + pass + finally: + # Cleanup and logging + self.logger.info( + f"🎥VDP: Video processing loop ended for track {track_id} - timeouts: {timeout_errors}, consecutive_errors: {consecutive_errors}" + )
🧹 Nitpick comments (7)
examples/other_examples/09_github_mcp_demo/gemini_realtime_github_mcp_demo.py (1)
72-75: Remove redundant agent.create_user(); join() now does it.join() calls create_user internally. Keeping this explicit call risks double-creation until idempotency is fixed in core. Drop it.
- # Create the agent user - await agent.create_user()examples/other_examples/gemini_live_realtime/gemini_live_example.py (1)
21-36: Use agent.edge.client for the Call to avoid config drift.You construct a separate AsyncStream client; prefer agent.edge.client for region/auth consistency.
- client = AsyncStream() - call = client.video.call("default", str(uuid4())) + call = getstream.Edge().client.video.call("default", str(uuid4()))examples/02_golf_coach_example/golf_coach_example.py (1)
27-33: Open demo timing is fine; keep consistent across examples.This opens inside the join context; other examples do it before join. Consider standardizing for docs clarity.
examples/01_simple_agent_example/simple_agent_example.py (1)
33-38: Demo UI open-before-join differs from other examples.Both orders work; consider using one pattern repo-wide to reduce confusion.
agents-core/vision_agents/core/agents/agents.py (3)
661-676: Variable naming typo: hasImageProcessers → has_image_processors.Minor readability fix; update all references.
- hasImageProcessers = len(self.image_processors) > 0 + has_image_processors = len(self.image_processors) > 0 ... - if not hasImageProcessers: + if not has_image_processors: ... - if hasImageProcessers: + if has_image_processors:Also applies to: 696-706
162-166: Initialize _video_forwarders in init to avoid hasattr checks.Define once; then drop hasattr conditionals.
@@ - self._track_tasks: Dict[str, asyncio.Task] = {} + self._track_tasks: Dict[str, asyncio.Task] = {} + self._video_forwarders: list = [] @@ - # Stop all video forwarders - if hasattr(self, "_video_forwarders"): + # Stop all video forwarders for forwarder in self._video_forwarders: try: await forwarder.stop() except Exception as e: self.logger.error(f"Error stopping video forwarder: {e}") self._video_forwarders.clear() @@ - if not hasattr(self, "_video_forwarders"): - self._video_forwarders = [] self._video_forwarders.append(raw_forwarder)Also applies to: 322-329, 627-630
112-113: Optional: refresh logger name after assigning auto id.Logger includes agent_user.id set post-init; consider updating logger to include the final id for clearer logs.
@@ async def create_user(self) -> None: - if not self.agent_user.id: - self.agent_user.id = f"agent-{uuid4()}" + if not self.agent_user.id: + self.agent_user.id = f"agent-{uuid4()}" + # Recreate logger with stable id + self.logger = logging.getLogger(f"Agent[{self.agent_user.id}]")Also applies to: 399-401
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (6)
agents-core/vision_agents/core/agents/agents.py(21 hunks)agents-core/vision_agents/core/events/manager.py(15 hunks)examples/01_simple_agent_example/simple_agent_example.py(2 hunks)examples/02_golf_coach_example/golf_coach_example.py(1 hunks)examples/other_examples/09_github_mcp_demo/gemini_realtime_github_mcp_demo.py(1 hunks)examples/other_examples/gemini_live_realtime/gemini_live_example.py(1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**/*.py
📄 CodeRabbit inference engine (.cursor/rules/python.mdc)
**/*.py: Never adjust sys.path (e.g., sys.path.append/insert/assignment)
Docstrings must follow the Google style guide
Files:
examples/other_examples/gemini_live_realtime/gemini_live_example.pyexamples/other_examples/09_github_mcp_demo/gemini_realtime_github_mcp_demo.pyexamples/01_simple_agent_example/simple_agent_example.pyexamples/02_golf_coach_example/golf_coach_example.pyagents-core/vision_agents/core/agents/agents.pyagents-core/vision_agents/core/events/manager.py
🧬 Code graph analysis (6)
examples/other_examples/gemini_live_realtime/gemini_live_example.py (1)
agents-core/vision_agents/core/edge/types.py (1)
User(15-18)
examples/other_examples/09_github_mcp_demo/gemini_realtime_github_mcp_demo.py (1)
agents-core/vision_agents/core/edge/types.py (1)
User(15-18)
examples/01_simple_agent_example/simple_agent_example.py (1)
agents-core/vision_agents/core/agents/agents.py (1)
Agent(54-1045)
examples/02_golf_coach_example/golf_coach_example.py (1)
agents-core/vision_agents/core/agents/agents.py (1)
join(203-276)
agents-core/vision_agents/core/agents/agents.py (8)
agents-core/vision_agents/core/mcp/mcp_manager.py (1)
MCPManager(9-147)agents-core/vision_agents/core/agents/conversation.py (1)
StreamHandle(37-57)plugins/getstream/vision_agents/plugins/getstream/stream_edge_transport.py (1)
create_user(238-240)agents-core/vision_agents/core/events/manager.py (1)
send(426-468)agents-core/vision_agents/core/agents/events.py (1)
AgentSayEvent(7-16)agents-core/vision_agents/core/utils/video_forwarder.py (1)
VideoForwarder(13-188)plugins/gemini/vision_agents/plugins/gemini/gemini_realtime.py (2)
_watch_video_track(281-320)simple_response(88-99)agents-core/vision_agents/core/turn_detection/events.py (2)
TurnStartedEvent(10-25)TurnEndedEvent(29-44)
agents-core/vision_agents/core/events/manager.py (1)
agents-core/vision_agents/core/edge/sfu_events.py (17)
name(1935-1939)from_proto(36-43)from_proto(53-61)from_proto(72-81)from_proto(92-101)from_proto(113-123)from_proto(132-139)from_proto(153-161)from_proto(175-183)from_proto(193-201)from_proto(226-244)from_proto(253-260)from_proto(269-276)from_proto(296-310)from_proto(325-334)from_proto(347-354)from_proto(375-390)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
- GitHub Check: unit / Test "not integration"
- GitHub Check: unit / Ruff & mypy
- GitHub Check: unit / Ruff & mypy
🔇 Additional comments (4)
examples/02_golf_coach_example/golf_coach_example.py (1)
14-22: Good alignment with auto user initialization.Passing User to Agent and relying on join() for creation is correct. No issues spotted.
examples/01_simple_agent_example/simple_agent_example.py (1)
16-19: Inline agent_user + removed create_user — LGTM.Matches the new lifecycle. No functional concerns.
examples/other_examples/gemini_live_realtime/gemini_live_example.py (1)
14-17: The logging setup is safe. The custom factory is auto-installed whenAgentis imported.When
gemini_live_example.pyimportsAgentfromvision_agents.core.agents, it triggers the import oflogging_utils, which runs module-level code that installs the custom log record factory vialogging.setLogRecordFactory(_contextual_record_factory).This factory always adds a
call_idattribute to every log record—defaulting to"-"if no call context is set. Therefore, the%(call_id)sformat string will never raise aKeyError.agents-core/vision_agents/core/events/manager.py (1)
1-547: LGTM! Formatting and style updates look good.The changes in this file are purely cosmetic—standardizing quote usage (single to double) and adjusting spacing for consistency. No behavioral changes or logic modifications are introduced. These updates improve code uniformity without affecting functionality.
commit ec32383 Author: Neevash Ramdial (Nash) <mail@neevash.dev> Date: Mon Oct 27 15:51:53 2025 -0600 mypy clean up (GetStream#130) commit c52fe4c Author: Neevash Ramdial (Nash) <mail@neevash.dev> Date: Mon Oct 27 15:28:00 2025 -0600 remove turn keeping from example (GetStream#129) commit e1072e8 Merge: 5bcffa3 fea101a Author: Yarik <43354956+yarikdevcom@users.noreply.github.com> Date: Mon Oct 27 14:28:05 2025 +0100 Merge pull request GetStream#106 from tjirab/feat/20251017_gh-labeler feat: Github pull request labeler commit 5bcffa3 Merge: 406673c bfe888f Author: Thierry Schellenbach <thierry@getstream.io> Date: Sat Oct 25 10:56:27 2025 -0600 Merge pull request GetStream#119 from GetStream/fix-screensharing Fix screensharing commit bfe888f Merge: 8019c14 406673c Author: Thierry Schellenbach <thierry@getstream.io> Date: Sat Oct 25 10:56:15 2025 -0600 Merge branch 'main' into fix-screensharing commit 406673c Author: Stefan Blos <stefan.blos@gmail.com> Date: Sat Oct 25 03:03:10 2025 +0200 Update README (GetStream#118) * Changed README to LaRaes version * Remove arrows from table * Add table with people & projects to follow * Update images and links in README.md commit 3316908 Author: Tommaso Barbugli <tbarbugli@gmail.com> Date: Fri Oct 24 23:48:06 2025 +0200 Simplify TTS plugin and audio utils (GetStream#123) - Simplified TTS plugin - AWS Polly TTS plugin - OpenAI TTS plugin - Improved audio utils commit 8019c14 Author: Max Kahan <max.kahan@getstream.io> Date: Fri Oct 24 17:32:26 2025 +0100 remove video forwarder lazy init commit ca62d37 Author: Max Kahan <max.kahan@getstream.io> Date: Thu Oct 23 16:44:03 2025 +0100 use correct codec commit 8cf8788 Author: Max Kahan <max.kahan@getstream.io> Date: Thu Oct 23 14:27:18 2025 +0100 rename variable to fix convention commit 33fd70d Author: Max Kahan <max.kahan@getstream.io> Date: Thu Oct 23 14:24:42 2025 +0100 unsubscribe from events commit 3692131 Author: Max Kahan <max.kahan@getstream.io> Date: Thu Oct 23 14:19:53 2025 +0100 remove nonexistent type commit c5f68fe Author: Max Kahan <max.kahan@getstream.io> Date: Thu Oct 23 14:10:07 2025 +0100 cleanup tests to fit style commit 8b3c61a Author: Max Kahan <max.kahan@getstream.io> Date: Thu Oct 23 13:55:08 2025 +0100 clean up resources when track cancelled commit d8e08cb Author: Max Kahan <max.kahan@getstream.io> Date: Thu Oct 23 13:24:55 2025 +0100 fix track republishing in agent commit 0f8e116 Author: Max Kahan <max.kahan@getstream.io> Date: Wed Oct 22 15:37:11 2025 +0100 add tests commit 08e6133 Author: Max Kahan <max.kahan@getstream.io> Date: Wed Oct 22 15:25:37 2025 +0100 ensure video track dimensions are an even number commit 6a725b0 Merge: 5f001e0 5088709 Author: Thierry Schellenbach <thierry@getstream.io> Date: Thu Oct 23 15:23:58 2025 -0600 Merge pull request GetStream#122 from GetStream/cleanup_stt Cleanup STT commit 5088709 Author: Thierry Schellenbach <thierry@getstream.io> Date: Thu Oct 23 15:23:34 2025 -0600 cleanup of stt commit f185120 Author: Thierry Schellenbach <thierry@getstream.io> Date: Thu Oct 23 15:08:42 2025 -0600 more cleanup commit 05ccbfd Author: Thierry Schellenbach <thierry@getstream.io> Date: Thu Oct 23 14:51:48 2025 -0600 cleanup commit bb834ca Author: Thierry Schellenbach <thierry@getstream.io> Date: Thu Oct 23 14:28:53 2025 -0600 more cleanup for stt commit 7a3f2d2 Author: Thierry Schellenbach <thierry@getstream.io> Date: Thu Oct 23 14:11:35 2025 -0600 more test cleanup commit ad7f4fe Author: Thierry Schellenbach <thierry@getstream.io> Date: Thu Oct 23 14:10:57 2025 -0600 cleanup test commit 9e50cdd Author: Thierry Schellenbach <thierry@getstream.io> Date: Thu Oct 23 14:03:45 2025 -0600 large cleanup commit 5f001e0 Merge: 95a03e4 5d204f3 Author: Thierry Schellenbach <thierry@getstream.io> Date: Thu Oct 23 12:01:52 2025 -0600 Merge pull request GetStream#121 from GetStream/fish_stt [AI-201] Fish speech to text (partial) commit 5d204f3 Author: Thierry Schellenbach <thierry@getstream.io> Date: Thu Oct 23 11:48:16 2025 -0600 remove ugly tests commit ee9a241 Author: Thierry Schellenbach <thierry@getstream.io> Date: Thu Oct 23 11:46:19 2025 -0600 cleanup commit 6eb8270 Author: Thierry Schellenbach <thierry@getstream.io> Date: Thu Oct 23 11:23:00 2025 -0600 fix 48khz support commit 3b90548 Author: Thierry Schellenbach <thierry@getstream.io> Date: Thu Oct 23 10:59:08 2025 -0600 first attempt at fish stt, doesnt entirely work just yet commit 95a03e4 Merge: b90c9e3 b4c0da8 Author: Tommaso Barbugli <tbarbugli@gmail.com> Date: Thu Oct 23 10:11:39 2025 +0200 Merge branch 'main' of github.com:GetStream/Vision-Agents commit b90c9e3 Author: Tommaso Barbugli <tbarbugli@gmail.com> Date: Wed Oct 22 23:28:28 2025 +0200 remove print and double event handling commit b4c0da8 Merge: 3d06446 a426bc2 Author: Thierry Schellenbach <thierry@getstream.io> Date: Wed Oct 22 15:08:51 2025 -0600 Merge pull request GetStream#117 from GetStream/openrouter [AI-194] Openrouter commit a426bc2 Author: Thierry Schellenbach <thierry@getstream.io> Date: Wed Oct 22 15:03:10 2025 -0600 skip broken test commit ba6c027 Author: Thierry Schellenbach <thierry@getstream.io> Date: Wed Oct 22 14:50:23 2025 -0600 almost working openrouter commit 0b1c873 Author: Thierry Schellenbach <thierry@getstream.io> Date: Wed Oct 22 14:47:12 2025 -0600 almost working, just no instruction following commit ce63233 Author: Thierry Schellenbach <thierry@getstream.io> Date: Wed Oct 22 14:35:53 2025 -0600 working memory for openai commit 149e886 Author: Thierry Schellenbach <thierry@getstream.io> Date: Wed Oct 22 13:32:43 2025 -0600 todo commit e0df1f6 Author: Thierry Schellenbach <thierry@getstream.io> Date: Wed Oct 22 13:20:38 2025 -0600 first pass at adding openrouter commit 3d06446 Merge: 4eb8ef4 ef55d66 Author: Thierry Schellenbach <thierry@getstream.io> Date: Wed Oct 22 13:20:11 2025 -0600 Merge branch 'main' of github.com:GetStream/Vision-Agents commit 4eb8ef4 Author: Thierry Schellenbach <thierry@getstream.io> Date: Wed Oct 22 13:20:01 2025 -0600 cleanup ai plugin instructions commit ef55d66 Author: Thierry Schellenbach <thierry@getstream.io> Date: Wed Oct 22 12:54:33 2025 -0600 Add link to stash_pomichter for spatial memory commit 9c9737f Merge: c954409 390c45b Author: Thierry Schellenbach <thierry@getstream.io> Date: Tue Oct 21 19:45:09 2025 -0600 Merge pull request GetStream#115 from GetStream/fish [AI-195] Fish support commit 390c45b Author: Thierry Schellenbach <thierry@getstream.io> Date: Tue Oct 21 19:44:37 2025 -0600 cleannup commit 1cc1cf1 Author: Thierry Schellenbach <thierry@getstream.io> Date: Tue Oct 21 19:42:03 2025 -0600 happy tests commit 8163d32 Author: Thierry Schellenbach <thierry@getstream.io> Date: Tue Oct 21 19:39:21 2025 -0600 fix gemini rule following commit ada3ac9 Author: Thierry Schellenbach <thierry@getstream.io> Date: Tue Oct 21 19:20:18 2025 -0600 fish tts commit 61a26cf Author: Thierry Schellenbach <thierry@getstream.io> Date: Tue Oct 21 16:44:03 2025 -0600 attempt at fish commit c954409 Merge: ab27e48 c71da10 Author: Thierry Schellenbach <thierry@getstream.io> Date: Tue Oct 21 14:18:15 2025 -0600 Merge pull request GetStream#104 from GetStream/bedrock [AI-192] - Bedrock, AWS & Nova commit c71da10 Author: Tommaso Barbugli <tbarbugli@gmail.com> Date: Tue Oct 21 22:00:25 2025 +0200 maybe commit b5482da Author: Tommaso Barbugli <tbarbugli@gmail.com> Date: Tue Oct 21 21:46:15 2025 +0200 debugging commit 9a36e45 Author: Thierry Schellenbach <thierry@getstream.io> Date: Tue Oct 21 13:14:58 2025 -0600 echo environment name commit 6893968 Author: Thierry Schellenbach <thierry@getstream.io> Date: Tue Oct 21 12:53:58 2025 -0600 more debugging commit c35fc47 Author: Thierry Schellenbach <thierry@getstream.io> Date: Tue Oct 21 12:45:44 2025 -0600 add some debug info commit 0d6d3fd Author: Thierry Schellenbach <thierry@getstream.io> Date: Tue Oct 21 12:03:13 2025 -0600 run test fix commit c3a31bd Author: Thierry Schellenbach <thierry@getstream.io> Date: Tue Oct 21 11:52:25 2025 -0600 log cache hit commit 04554ae Author: Thierry Schellenbach <thierry@getstream.io> Date: Tue Oct 21 11:48:03 2025 -0600 fix glob commit 7da96db Author: Thierry Schellenbach <thierry@getstream.io> Date: Tue Oct 21 11:33:56 2025 -0600 mypy commit 186053f Merge: 4b540c9 ab27e48 Author: Thierry Schellenbach <thierry@getstream.io> Date: Tue Oct 21 11:17:17 2025 -0600 happy tests commit 4b540c9 Author: Thierry Schellenbach <thierry@getstream.io> Date: Tue Oct 21 10:20:04 2025 -0600 happy tests commit b05a60a Author: Thierry Schellenbach <thierry@getstream.io> Date: Tue Oct 21 09:17:45 2025 -0600 add readme commit 71affcc Author: Thierry Schellenbach <thierry@getstream.io> Date: Tue Oct 21 09:13:01 2025 -0600 rename to aws commit d2eeba7 Author: Thierry Schellenbach <thierry@getstream.io> Date: Mon Oct 20 21:32:01 2025 -0600 ai tts instructions commit 98a4f9d Author: Thierry Schellenbach <thierry@getstream.io> Date: Mon Oct 20 16:49:00 2025 -0600 small edits commit ab27e48 Author: Tommaso Barbugli <tbarbugli@gmail.com> Date: Mon Oct 20 21:42:04 2025 +0200 Ensure user agent is initialized before joining the call (GetStream#113) * ensure user agent is initialized before joining the call * wip commit 3cb339b Author: Tommaso Barbugli <tbarbugli@gmail.com> Date: Mon Oct 20 21:22:57 2025 +0200 New conversation API (GetStream#102) * trying to resurrect * test transcription events for openai * more tests for openai and gemini llm * more tests for openai and gemini llm * update py-client * wip * ruff * wip * ruff * snap * another way * another way, a better way * ruff * ruff * rev * ruffit * mypy everything * brief * tests * openai dep bump * snap - broken * nothingfuckingworks * message id * fix test * ruffit commit cb6f00a Author: Thierry Schellenbach <thierry@getstream.io> Date: Mon Oct 20 13:18:03 2025 -0600 use qwen commit f84b2ad Author: Thierry Schellenbach <thierry@getstream.io> Date: Mon Oct 20 13:02:24 2025 -0600 fix tests commit e61acca Author: Thierry Schellenbach <thierry@getstream.io> Date: Mon Oct 20 12:50:40 2025 -0600 testing and linting commit 5f4d353 Author: Thierry Schellenbach <thierry@getstream.io> Date: Mon Oct 20 12:34:14 2025 -0600 working commit c2a15a9 Merge: a310771 1025a42 Author: Thierry Schellenbach <thierry@getstream.io> Date: Mon Oct 20 11:40:00 2025 -0600 Merge branch 'main' of github.com:GetStream/Vision-Agents into bedrock commit a310771 Author: Thierry Schellenbach <thierry@getstream.io> Date: Mon Oct 20 11:39:48 2025 -0600 wip commit b4370f4 Author: Thierry Schellenbach <thierry@getstream.io> Date: Mon Oct 20 11:22:43 2025 -0600 something isn't quite working commit 2dac975 Author: Thierry Schellenbach <thierry@getstream.io> Date: Mon Oct 20 10:30:04 2025 -0600 add the examples commit 6885289 Author: Thierry Schellenbach <thierry@getstream.io> Date: Sun Oct 19 20:19:42 2025 -0600 ai realtime docs commit a0fa3cc Author: Thierry Schellenbach <thierry@getstream.io> Date: Sun Oct 19 18:48:06 2025 -0600 wip commit b914fc3 Author: Thierry Schellenbach <thierry@getstream.io> Date: Sun Oct 19 18:40:22 2025 -0600 fix ai llm commit b5b00a7 Author: Thierry Schellenbach <thierry@getstream.io> Date: Sun Oct 19 17:11:26 2025 -0600 work audio input commit ac72260 Author: Thierry Schellenbach <thierry@getstream.io> Date: Sun Oct 19 16:47:19 2025 -0600 fix model id commit 2b5863c Author: Thierry Schellenbach <thierry@getstream.io> Date: Sun Oct 19 16:32:54 2025 -0600 wip on bedrock commit 8bb4162 Author: Thierry Schellenbach <thierry@getstream.io> Date: Fri Oct 17 15:22:03 2025 -0600 next up the connect method commit 7a21e4e Author: Thierry Schellenbach <thierry@getstream.io> Date: Fri Oct 17 14:12:00 2025 -0600 nova progress commit 16e8ba0 Author: Thierry Schellenbach <thierry@getstream.io> Date: Fri Oct 17 13:16:00 2025 -0600 docs for bedrock nova commit 1025a42 Author: Bart Schuijt <schuijt.bart@gmail.com> Date: Fri Oct 17 21:05:45 2025 +0200 fix: Update .env.example for Gemini Live (GetStream#108) commit e12112d Author: Thierry Schellenbach <thierry@getstream.io> Date: Fri Oct 17 11:49:07 2025 -0600 wip commit fea101a Author: Bart Schuijt <schuijt.bart@gmail.com> Date: Fri Oct 17 09:25:55 2025 +0200 workflow file update commit bb2d74c Author: Bart Schuijt <schuijt.bart@gmail.com> Date: Fri Oct 17 09:22:33 2025 +0200 initial commit commit d2853cd Author: Thierry Schellenbach <thierry@getstream.io> Date: Thu Oct 16 19:44:59 2025 -0600 always remember pep 420 commit 30a8eca Author: Thierry Schellenbach <thierry@getstream.io> Date: Thu Oct 16 19:36:58 2025 -0600 start of bedrock branch commit fc032bf Author: Tommaso Barbugli <tbarbugli@gmail.com> Date: Thu Oct 16 09:17:42 2025 +0200 Remove cli handler from examples (GetStream#101) commit 39a821d Author: Dan Gusev <dangusev92@gmail.com> Date: Tue Oct 14 12:20:41 2025 +0200 Update Deepgram plugin to use SDK v5.0.0 (GetStream#98) * Update Deepgram plugin to use SDK v5.0.0 * Merge test_realtime and test_stt and update the remaining tests * Make deepgram.STT.start() idempotent * Clean up unused import * Use uv as the default package manager > pip --------- Co-authored-by: Neevash Ramdial (Nash) <mail@neevash.dev> commit 2013be5 Author: Tommaso Barbugli <tbarbugli@gmail.com> Date: Mon Oct 13 16:57:37 2025 +0200 ensure chat works with default types (GetStream#99)
Make sure the user agent is created when joining the call (one can still do agent.create_user() before that but it is no longer necessary).
When the user agent is not populated, you can get weird warnings from audio track subscriptions like this one:
Summary by CodeRabbit
Refactor
Style