pipecatcloud 0.2.13__tar.gz → 0.2.15__tar.gz

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.
Files changed (56) hide show
  1. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/CHANGELOG.md +13 -0
  2. {pipecatcloud-0.2.13/src/pipecatcloud.egg-info → pipecatcloud-0.2.15}/PKG-INFO +1 -1
  3. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/cli/commands/auth.py +36 -20
  4. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15/src/pipecatcloud.egg-info}/PKG-INFO +1 -1
  5. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/.github/workflows/publish-pypi.yml +0 -0
  6. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/.github/workflows/publish-test.yml +0 -0
  7. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/.github/workflows/tests.yml +0 -0
  8. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/.gitignore +0 -0
  9. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/LICENSE +0 -0
  10. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/README.md +0 -0
  11. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/pipecat-cloud.png +0 -0
  12. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/pyproject.toml +0 -0
  13. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/pytest.ini +0 -0
  14. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/setup.cfg +0 -0
  15. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/__init__.py +0 -0
  16. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/__main__.py +0 -0
  17. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/__version__.py +0 -0
  18. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/_utils/__init__.py +0 -0
  19. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/_utils/async_utils.py +0 -0
  20. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/_utils/auth_utils.py +0 -0
  21. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/_utils/console_utils.py +0 -0
  22. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/_utils/deploy_utils.py +0 -0
  23. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/_utils/regions.py +0 -0
  24. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/agent.py +0 -0
  25. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/api.py +0 -0
  26. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/cli/__init__.py +0 -0
  27. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/cli/api.py +0 -0
  28. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/cli/commands/__init__.py +0 -0
  29. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/cli/commands/agent.py +0 -0
  30. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/cli/commands/deploy.py +0 -0
  31. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/cli/commands/docker.py +0 -0
  32. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/cli/commands/organizations.py +0 -0
  33. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/cli/commands/regions.py +0 -0
  34. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/cli/commands/secrets.py +0 -0
  35. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/cli/config.py +0 -0
  36. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/cli/entry_point.py +0 -0
  37. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/config.py +0 -0
  38. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/constants.py +0 -0
  39. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/exception.py +0 -0
  40. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/py.typed +0 -0
  41. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/session.py +0 -0
  42. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud/smallwebrtc/session_manager.py +0 -0
  43. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud.egg-info/SOURCES.txt +0 -0
  44. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud.egg-info/dependency_links.txt +0 -0
  45. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud.egg-info/entry_points.txt +0 -0
  46. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud.egg-info/requires.txt +0 -0
  47. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/src/pipecatcloud.egg-info/top_level.txt +0 -0
  48. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/tests/__init__.py +0 -0
  49. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/tests/test_agent_sessions.py +0 -0
  50. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/tests/test_agent_stop.py +0 -0
  51. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/tests/test_api_client.py +0 -0
  52. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/tests/test_docker_commands.py +0 -0
  53. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/tests/test_krisp_viva.py +0 -0
  54. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/tests/test_managed_keys.py +0 -0
  55. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/tests/test_regions.py +0 -0
  56. {pipecatcloud-0.2.13 → pipecatcloud-0.2.15}/uv.lock +0 -0
@@ -5,6 +5,19 @@ All notable changes to **Pipecat Cloud** will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.2.15] - 2025-12-09
9
+
10
+ ### Changed
11
+
12
+ - Additional update for `auth login` authentication codes.
13
+
14
+ ## [0.2.14] - 2025-12-09
15
+
16
+ ### Added
17
+
18
+ - Added authentication code display during `auth login` for session
19
+ verification.
20
+
8
21
  ## [0.2.13] - 2025-12-03
9
22
 
10
23
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pipecatcloud
3
- Version: 0.2.13
3
+ Version: 0.2.15
4
4
  Summary: Cloud hosting for Pipecat AI applications
5
5
  License: BSD 2-Clause License
6
6
  Project-URL: Website, https://docs.pipecat.daily.co/
@@ -37,21 +37,24 @@ class _AuthFlow:
37
37
  pass
38
38
 
39
39
  @asynccontextmanager
40
- async def start(self) -> AsyncGenerator[Tuple[Optional[str], Optional[str]], None]:
40
+ async def start(
41
+ self,
42
+ ) -> AsyncGenerator[Tuple[Optional[str], Optional[str], Optional[str]], None]:
41
43
  try:
42
44
  async with aiohttp.ClientSession() as session:
43
45
  url = f"{API.construct_api_url('login_path')}"
44
46
  logger.debug(url)
45
- async with session.post(url) as resp:
47
+ async with session.post(url, params={"use_code": "true"}) as resp:
46
48
  if resp.status != 200:
47
49
  raise Exception(f"Failed to start auth flow: {resp.status}")
48
50
  data = await resp.json()
49
51
  self.token_flow_id = data["token_flow_id"]
50
52
  self.wait_secret = data["wait_secret"]
51
53
  web_url = data["web_url"]
52
- yield (self.token_flow_id, web_url)
54
+ code = data.get("code")
55
+ yield (self.token_flow_id, web_url, code)
53
56
  except Exception:
54
- yield (None, None)
57
+ yield (None, None, None)
55
58
 
56
59
  async def finish(self, timeout: float = 40.0, network_timeout: float = 5.0) -> Optional[str]:
57
60
  start_time = asyncio.get_event_loop().time()
@@ -84,15 +87,18 @@ AuthFlow = synchronize_api(_AuthFlow)
84
87
 
85
88
  def _open_url(url: str) -> bool:
86
89
  try:
87
- is_wsl = 'WSL_DISTRO_NAME' in os.environ or 'WSL_INTEROP' in os.environ
88
- has_display = bool(os.environ.get('DISPLAY') or os.environ.get('WAYLAND_DISPLAY'))
90
+ is_wsl = "WSL_DISTRO_NAME" in os.environ or "WSL_INTEROP" in os.environ
91
+ has_display = bool(os.environ.get("DISPLAY") or os.environ.get("WAYLAND_DISPLAY"))
89
92
 
90
93
  if is_wsl and not has_display:
91
94
  return False
92
95
 
93
96
  browser = webbrowser.get()
94
- if (isinstance(browser, webbrowser.GenericBrowser) and
95
- browser.name not in ['open', 'x-www-browser', 'xdg-open']):
97
+ if isinstance(browser, webbrowser.GenericBrowser) and browser.name not in [
98
+ "open",
99
+ "x-www-browser",
100
+ "xdg-open",
101
+ ]:
96
102
  return False
97
103
 
98
104
  return browser.open_new_tab(url)
@@ -147,13 +153,17 @@ async def login(
147
153
  logger.debug(f"Current active org: {active_org}")
148
154
 
149
155
  try:
150
- async with auth_flow.start() as (token_flow_id, web_url):
156
+ async with auth_flow.start() as (token_flow_id, web_url, code):
151
157
  if web_url is None:
152
158
  console.error(
153
159
  "Unable to connect to Pipecat Cloud API. Please check your network connection and try again."
154
160
  )
155
161
  return
156
162
 
163
+ # Display the code if it was provided
164
+ if code:
165
+ console.print(f"[bold]Authentication code:[/bold] [cyan]{code}[/cyan]\n")
166
+
157
167
  with Live(
158
168
  console.status(
159
169
  "[dim]Waiting for authentication to complete...[/dim]", spinner="dots"
@@ -167,7 +177,10 @@ async def login(
167
177
  Panel(
168
178
  "The web browser should have opened for you to authenticate with Pipecat Cloud.\n"
169
179
  "If it didn't, please copy this URL into your web browser manually:\n\n"
170
- f"[blue][link={web_url}]{web_url}[/link][/blue]\n", )))
180
+ f"[blue][link={web_url}]{web_url}[/link][/blue]\n",
181
+ )
182
+ )
183
+ )
171
184
  else:
172
185
  # For headless use-cases, just print the URL
173
186
  live.stop()
@@ -235,8 +248,9 @@ async def logout():
235
248
  )
236
249
 
237
250
 
238
- @auth_cli.command(name="whoami",
239
- help="Display data about the current user. Also show Daily API key.")
251
+ @auth_cli.command(
252
+ name="whoami", help="Display data about the current user. Also show Daily API key."
253
+ )
240
254
  @synchronizer.create_blocking
241
255
  @requires_login
242
256
  async def whomai():
@@ -277,14 +291,16 @@ async def whomai():
277
291
  pass
278
292
 
279
293
  live.stop()
280
- message = Columns([
281
- "[bold]User ID[/bold]\n"
282
- "[bold]Active Organization[/bold]\n"
283
- "[bold]Daily API Key[/bold]",
284
- f"{user_data['user']['userId']}\n"
285
- f"{account['verbose_name']} [dim]({account['name']})[/dim]\n"
286
- f"{daily_api_key.get('apiKey', '[dim]N/A[/dim]') if daily_api_key else '[dim]N/A[/dim]'}",
287
- ])
294
+ message = Columns(
295
+ [
296
+ "[bold]User ID[/bold]\n"
297
+ "[bold]Active Organization[/bold]\n"
298
+ "[bold]Daily API Key[/bold]",
299
+ f"{user_data['user']['userId']}\n"
300
+ f"{account['verbose_name']} [dim]({account['name']})[/dim]\n"
301
+ f"{daily_api_key.get('apiKey', '[dim]N/A[/dim]') if daily_api_key else '[dim]N/A[/dim]'}",
302
+ ]
303
+ )
288
304
  console.success(message)
289
305
  except Exception:
290
306
  console.error("Unable to obtain user data. Please contact support")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pipecatcloud
3
- Version: 0.2.13
3
+ Version: 0.2.15
4
4
  Summary: Cloud hosting for Pipecat AI applications
5
5
  License: BSD 2-Clause License
6
6
  Project-URL: Website, https://docs.pipecat.daily.co/
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes