pipecatcloud 0.1.8__tar.gz → 0.2.1__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 (47) hide show
  1. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/CHANGELOG.md +34 -0
  2. {pipecatcloud-0.1.8/src/pipecatcloud.egg-info → pipecatcloud-0.2.1}/PKG-INFO +5 -3
  3. pipecatcloud-0.2.1/dev-requirements.txt +8 -0
  4. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/pyproject.toml +6 -3
  5. pipecatcloud-0.2.1/src/pipecatcloud/agent.py +112 -0
  6. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/cli/commands/deploy.py +16 -18
  7. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/cli/commands/secrets.py +7 -1
  8. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1/src/pipecatcloud.egg-info}/PKG-INFO +5 -3
  9. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud.egg-info/requires.txt +5 -2
  10. pipecatcloud-0.1.8/dev-requirements.txt +0 -8
  11. pipecatcloud-0.1.8/src/pipecatcloud/agent.py +0 -52
  12. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/.github/workflows/publish-pypi.yml +0 -0
  13. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/.github/workflows/publish-test.yml +0 -0
  14. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/.github/workflows/python-publish.yml +0 -0
  15. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/.gitignore +0 -0
  16. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/LICENSE +0 -0
  17. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/README.md +0 -0
  18. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/pipecat-cloud.png +0 -0
  19. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/setup.cfg +0 -0
  20. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/__init__.py +0 -0
  21. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/__main__.py +0 -0
  22. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/__version__.py +0 -0
  23. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/_utils/__init__.py +0 -0
  24. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/_utils/async_utils.py +0 -0
  25. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/_utils/auth_utils.py +0 -0
  26. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/_utils/console_utils.py +0 -0
  27. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/_utils/deploy_utils.py +0 -0
  28. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/_utils/local_runner.py +0 -0
  29. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/api.py +0 -0
  30. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/cli/__init__.py +0 -0
  31. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/cli/api.py +0 -0
  32. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/cli/commands/__init__.py +0 -0
  33. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/cli/commands/agent.py +0 -0
  34. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/cli/commands/auth.py +0 -0
  35. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/cli/commands/init.py +0 -0
  36. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/cli/commands/organizations.py +0 -0
  37. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/cli/commands/run.py +0 -0
  38. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/cli/config.py +0 -0
  39. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/cli/entry_point.py +0 -0
  40. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/config.py +0 -0
  41. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/exception.py +0 -0
  42. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/py.typed +0 -0
  43. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud/session.py +0 -0
  44. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud.egg-info/SOURCES.txt +0 -0
  45. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud.egg-info/dependency_links.txt +0 -0
  46. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud.egg-info/entry_points.txt +0 -0
  47. {pipecatcloud-0.1.8 → pipecatcloud-0.2.1}/src/pipecatcloud.egg-info/top_level.txt +0 -0
@@ -7,6 +7,40 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+
11
+ ## [0.2.1] - 2025-08-02
12
+
13
+ ### Added
14
+
15
+ - Added a `pipecatcloud[pipecat]` extra for installing `pipecat-ai` dependency.
16
+
17
+ ### Changed
18
+
19
+ - Session argument types now inherit from pipecat-ai runner types when available.
20
+ `DailySessionArguments` and `WebSocketSessionArguments` now inherit from
21
+ `pipecat.runner.types` when `pipecat-ai>=0.0.77` is installed to provide
22
+ compatibility with the pipecat-ai development runner.
23
+
24
+ - Add clarifying information to the `pcc secrets image-pull-secret` setup.
25
+
26
+ - Modified the `aiohttp` minimum version to `3.11.12` and expanded `fastapi` to
27
+ `>=0.115.6,<0.117.0` in order to align with `pipecat-ai`.
28
+
29
+ ### Deprecated
30
+
31
+ - When `pipecat-ai` is not installed, session arguments fall back to standalone
32
+ implementations. This fallback behavior is deprecated and will be removed in
33
+ a future version. Install with `pip install pipecatcloud[pipecat]` for the
34
+ preferred implementation.
35
+
36
+ ## [0.2.0] - 2025-07-09
37
+
38
+ ### Changed
39
+
40
+ - `deploy` command now requires valid image pull credentials (`--credentials`). Most repositories and use-cases require authorized image pulls, so this change aims to guide correct usage.
41
+ - Deploying without credentials can be achieved with the `--no-credentials` / `-nc` or `--force` flags.
42
+ - It is always recommend to provide a an image pull secret as part of your deployment.
43
+
10
44
  ## [0.1.8] - 2025-07-09
11
45
 
12
46
  ### Changed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pipecatcloud
3
- Version: 0.1.8
3
+ Version: 0.2.1
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/
@@ -8,8 +8,8 @@ Keywords: pipecat,pipecat-ai,voice,ai,llm
8
8
  Requires-Python: >=3.10
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
- Requires-Dist: aiohttp<4.0.0,~=3.11.13
12
- Requires-Dist: fastapi~=0.115.6
11
+ Requires-Dist: aiohttp<4.0.0,>=3.11.12
12
+ Requires-Dist: fastapi<0.117.0,>=0.115.6
13
13
  Requires-Dist: loguru~=0.7.3
14
14
  Requires-Dist: python-dotenv~=1.0.1
15
15
  Requires-Dist: uvicorn~=0.32.0
@@ -17,6 +17,8 @@ Requires-Dist: typer~=0.15.3
17
17
  Requires-Dist: synchronicity~=0.7.6
18
18
  Requires-Dist: toml~=0.10.2
19
19
  Requires-Dist: questionary~=2.1.0
20
+ Provides-Extra: pipecat
21
+ Requires-Dist: pipecat-ai>=0.0.77; extra == "pipecat"
20
22
  Dynamic: license-file
21
23
 
22
24
  <h1><div align="center">
@@ -0,0 +1,8 @@
1
+ build~=1.2.2
2
+ grpcio-tools~=1.67.1
3
+ pip-tools~=7.4.1
4
+ pyright~=1.1.402
5
+ pytest~=8.4.1
6
+ ruff~=0.12.1
7
+ setuptools~=78.1.1
8
+ setuptools_scm~=8.3.1
@@ -4,15 +4,15 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pipecatcloud"
7
- version = "0.1.8"
7
+ version = "0.2.1"
8
8
  requires-python = ">=3.10"
9
9
  description = "Cloud hosting for Pipecat AI applications"
10
10
  license = { text = "BSD 2-Clause License" }
11
11
  readme = "README.md"
12
12
  keywords = ["pipecat", "pipecat-ai", "voice", "ai", "llm"]
13
13
  dependencies = [
14
- "aiohttp~=3.11.13,<4.0.0",
15
- "fastapi~=0.115.6",
14
+ "aiohttp>=3.11.12,<4.0.0",
15
+ "fastapi>=0.115.6,<0.117.0",
16
16
  "loguru~=0.7.3",
17
17
  "python-dotenv~=1.0.1",
18
18
  "uvicorn~=0.32.0",
@@ -22,6 +22,9 @@ dependencies = [
22
22
  "questionary~=2.1.0"
23
23
  ]
24
24
 
25
+ [project.optional-dependencies]
26
+ pipecat = ["pipecat-ai>=0.0.77"]
27
+
25
28
  [project.scripts]
26
29
  pcc = "pipecatcloud.__main__:main"
27
30
  pipecatcloud = "pipecatcloud.__main__:main"
@@ -0,0 +1,112 @@
1
+ #
2
+ # Copyright (c) 2025, Daily
3
+ #
4
+ # SPDX-License-Identifier: BSD 2-Clause License
5
+ #
6
+
7
+ import warnings
8
+ from dataclasses import dataclass
9
+ from typing import Any, Optional
10
+
11
+ from fastapi import WebSocket
12
+
13
+ # Try to import new types from pipecat-ai
14
+ try:
15
+ from pipecat.runner.types import (
16
+ DailyRunnerArguments,
17
+ WebSocketRunnerArguments,
18
+ )
19
+
20
+ _PIPECAT_RUNNER_TYPES_AVAILABLE = True
21
+ except ImportError:
22
+ _PIPECAT_RUNNER_TYPES_AVAILABLE = False
23
+
24
+ # Fallback definitions
25
+ @dataclass
26
+ class DailyRunnerArguments:
27
+ """Fallback Daily runner arguments when pipecat-ai not available.
28
+
29
+ .. deprecated:: 0.2.1
30
+ Install pipecatcloud[pipecat] for better compatibility.
31
+ """
32
+
33
+ room_url: str
34
+ token: str
35
+ body: Any
36
+
37
+ @dataclass
38
+ class WebSocketRunnerArguments:
39
+ """Fallback WebSocket runner arguments when pipecat-ai not available.
40
+
41
+ .. deprecated:: 0.2.1
42
+ Install pipecatcloud[pipecat] for better compatibility.
43
+ """
44
+
45
+ websocket: WebSocket
46
+
47
+
48
+ def _warn_standalone_usage():
49
+ """Warn users about standalone session arguments usage."""
50
+ if not _PIPECAT_RUNNER_TYPES_AVAILABLE:
51
+ warnings.warn(
52
+ "Using standalone pipecatcloud session arguments without pipecat-ai. "
53
+ "For better compatibility, install: pip install pipecatcloud[pipecat]. "
54
+ "Standalone mode will be removed in a future release.",
55
+ DeprecationWarning,
56
+ stacklevel=3,
57
+ )
58
+
59
+
60
+ @dataclass
61
+ class SessionArguments:
62
+ """Base class for common agent session arguments.
63
+
64
+ The arguments are received by the bot() entry point.
65
+
66
+ Parameters:
67
+ session_id (Optional[str]): The unique identifier for the session.
68
+ This is used to track the session across requests.
69
+ """
70
+
71
+ session_id: Optional[str]
72
+
73
+
74
+ @dataclass
75
+ class PipecatSessionArguments(SessionArguments):
76
+ """Standard Pipecat Cloud agent session arguments.
77
+
78
+ The arguments are received by the bot() entry point.
79
+
80
+ Parameters:
81
+ body (Any): The body of the request.
82
+ """
83
+
84
+ body: Any
85
+
86
+
87
+ @dataclass
88
+ class DailySessionArguments(DailyRunnerArguments, SessionArguments):
89
+ """Daily based agent session arguments.
90
+
91
+ Inherits from DailyRunnerArguments for compatibility with pipecat-ai runner.
92
+ When pipecat-ai is not installed, uses a fallback implementation (deprecated).
93
+
94
+ For best compatibility, install: pip install pipecatcloud[pipecat]
95
+ """
96
+
97
+ def __post_init__(self):
98
+ _warn_standalone_usage()
99
+
100
+
101
+ @dataclass
102
+ class WebSocketSessionArguments(WebSocketRunnerArguments, SessionArguments):
103
+ """WebSocket based agent session arguments.
104
+
105
+ Inherits from WebSocketRunnerArguments for compatibility with pipecat-ai runner.
106
+ When pipecat-ai is not installed, uses a fallback implementation (deprecated).
107
+
108
+ For best compatibility, install: pip install pipecatcloud[pipecat]
109
+ """
110
+
111
+ def __post_init__(self):
112
+ _warn_standalone_usage()
@@ -286,6 +286,13 @@ def create_deploy_command(app: typer.Typer):
286
286
  help="Force deployment / skip confirmation",
287
287
  rich_help_panel="Additional Options",
288
288
  ),
289
+ no_credentials: bool = typer.Option(
290
+ False,
291
+ "--no-credentials",
292
+ "-nc",
293
+ help="Deployment will not require an image pull secret",
294
+ rich_help_panel="Additional Options",
295
+ ),
289
296
  # @deprecated
290
297
  min_instances: int = typer.Option(
291
298
  None,
@@ -348,24 +355,15 @@ def create_deploy_command(app: typer.Typer):
348
355
  console.error("Image / repository URL is required")
349
356
  return typer.Exit()
350
357
 
351
- # Show a warning if no credentials are provided
352
- if not partial_config.image_credentials and not skip_confirm:
353
- console.print(
354
- Panel(
355
- "[yellow]You are attempting to deploy an agent image without an image pull secret."
356
- "\n\nUse [bold][--credentials][/bold] to provide a image pull secret."
357
- "\n\nPlease be aware that future versions of the Pipecat Cloud CLI will require credentials for all deployments (unless forced manually).",
358
- title="[bold yellow]Warning: Deploying without credentials[/bold yellow]",
359
- title_align="left",
360
- subtitle_align="left",
361
- subtitle="[dim]Learn more: https://docs.pipecat.daily.co/agents/secrets#image-pull-secrets[/dim]",
362
- border_style="yellow",
363
- ))
364
- if not typer.confirm(
365
- "Are you sure you want to deploy without an image pull secret?",
366
- default=False,
367
- ):
368
- return typer.Exit()
358
+ # Assert credentials are provided if not using --no-credentials / force flag
359
+ if not no_credentials and not partial_config.image_credentials and not skip_confirm:
360
+ console.error(
361
+ "Deployments require an image pull secret [bold](--credentials)[/bold] to securely pull images from private repositories."
362
+ "\nPlease provide an image pull secret name or use [bold][--no-credentials][/bold] to deploy without one.",
363
+ subtitle="Learn more:https://docs.pipecat.daily.co/agents/secrets#image-pull-secrets",
364
+ title_extra="Attempt to deploy without repository credentials",
365
+ )
366
+ return typer.Exit()
369
367
 
370
368
  # Create and display table
371
369
  table = Table(show_header=False, border_style="dim", show_edge=True, show_lines=True)
@@ -471,8 +471,14 @@ async def image_pull_secret(
471
471
  return typer.Exit(1)
472
472
 
473
473
  if not credentials:
474
+ console.print(
475
+ "[cyan]For more information about image pull secrets, see: "
476
+ "https://docs.pipecat.daily.co/agents/secrets#image-pull-secrets[/cyan]\n"
477
+ )
474
478
  username = await questionary.text(f"Username for image repository '{host}'").ask_async()
475
- password = await questionary.password(f"Password for image repository '{host}'").ask_async()
479
+ password = await questionary.password(
480
+ f"Access token for image repository '{host}'"
481
+ ).ask_async()
476
482
  if not username or not password:
477
483
  console.print("[bold red]Image pull secret creation cancelled[/bold red]")
478
484
  return typer.Exit(1)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pipecatcloud
3
- Version: 0.1.8
3
+ Version: 0.2.1
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/
@@ -8,8 +8,8 @@ Keywords: pipecat,pipecat-ai,voice,ai,llm
8
8
  Requires-Python: >=3.10
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
- Requires-Dist: aiohttp<4.0.0,~=3.11.13
12
- Requires-Dist: fastapi~=0.115.6
11
+ Requires-Dist: aiohttp<4.0.0,>=3.11.12
12
+ Requires-Dist: fastapi<0.117.0,>=0.115.6
13
13
  Requires-Dist: loguru~=0.7.3
14
14
  Requires-Dist: python-dotenv~=1.0.1
15
15
  Requires-Dist: uvicorn~=0.32.0
@@ -17,6 +17,8 @@ Requires-Dist: typer~=0.15.3
17
17
  Requires-Dist: synchronicity~=0.7.6
18
18
  Requires-Dist: toml~=0.10.2
19
19
  Requires-Dist: questionary~=2.1.0
20
+ Provides-Extra: pipecat
21
+ Requires-Dist: pipecat-ai>=0.0.77; extra == "pipecat"
20
22
  Dynamic: license-file
21
23
 
22
24
  <h1><div align="center">
@@ -1,5 +1,5 @@
1
- aiohttp<4.0.0,~=3.11.13
2
- fastapi~=0.115.6
1
+ aiohttp<4.0.0,>=3.11.12
2
+ fastapi<0.117.0,>=0.115.6
3
3
  loguru~=0.7.3
4
4
  python-dotenv~=1.0.1
5
5
  uvicorn~=0.32.0
@@ -7,3 +7,6 @@ typer~=0.15.3
7
7
  synchronicity~=0.7.6
8
8
  toml~=0.10.2
9
9
  questionary~=2.1.0
10
+
11
+ [pipecat]
12
+ pipecat-ai>=0.0.77
@@ -1,8 +0,0 @@
1
- build~=1.2.1
2
- grpcio-tools~=1.62.2
3
- pip-tools~=7.4.1
4
- pyright~=1.1.376
5
- pytest~=8.3.2
6
- ruff~=0.6.7
7
- setuptools~=72.2.0
8
- setuptools_scm~=8.1.0
@@ -1,52 +0,0 @@
1
- #
2
- # Copyright (c) 2025, Daily
3
- #
4
- # SPDX-License-Identifier: BSD 2-Clause License
5
- #
6
-
7
- from dataclasses import dataclass
8
- from typing import Any, Optional
9
-
10
- from fastapi import WebSocket
11
-
12
-
13
- @dataclass
14
- class SessionArguments:
15
- """Base class for common agent session arguments. The arguments are received
16
- by the bot() entry point.
17
-
18
- """
19
-
20
- session_id: Optional[str]
21
-
22
-
23
- @dataclass
24
- class PipecatSessionArguments(SessionArguments):
25
- """Standard Pipecat Cloud agent session arguments. The arguments are
26
- received by the bot() entry point.
27
-
28
- """
29
-
30
- body: Any
31
-
32
-
33
- @dataclass
34
- class DailySessionArguments(SessionArguments):
35
- """Daily based agent session arguments. The arguments are received by the
36
- bot() entry point.
37
-
38
- """
39
-
40
- room_url: str
41
- token: str
42
- body: Any
43
-
44
-
45
- @dataclass
46
- class WebSocketSessionArguments(SessionArguments):
47
- """Websocket based agent session arguments. The arguments are received by
48
- the bot() entry point.
49
-
50
- """
51
-
52
- websocket: WebSocket
File without changes
File without changes
File without changes
File without changes