pipecatcloud 0.1.7__tar.gz → 0.2.0__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.
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/CHANGELOG.md +28 -11
- {pipecatcloud-0.1.7/src/pipecatcloud.egg-info → pipecatcloud-0.2.0}/PKG-INFO +1 -1
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/pyproject.toml +4 -1
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/_utils/console_utils.py +33 -2
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/cli/commands/deploy.py +27 -7
- pipecatcloud-0.2.0/src/pipecatcloud/py.typed +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0/src/pipecatcloud.egg-info}/PKG-INFO +1 -1
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud.egg-info/SOURCES.txt +1 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/.github/workflows/publish-pypi.yml +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/.github/workflows/publish-test.yml +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/.github/workflows/python-publish.yml +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/.gitignore +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/LICENSE +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/README.md +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/dev-requirements.txt +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/pipecat-cloud.png +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/setup.cfg +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/__init__.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/__main__.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/__version__.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/_utils/__init__.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/_utils/async_utils.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/_utils/auth_utils.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/_utils/deploy_utils.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/_utils/local_runner.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/agent.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/api.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/cli/__init__.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/cli/api.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/cli/commands/__init__.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/cli/commands/agent.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/cli/commands/auth.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/cli/commands/init.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/cli/commands/organizations.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/cli/commands/run.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/cli/commands/secrets.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/cli/config.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/cli/entry_point.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/config.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/exception.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud/session.py +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud.egg-info/dependency_links.txt +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud.egg-info/entry_points.txt +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud.egg-info/requires.txt +0 -0
- {pipecatcloud-0.1.7 → pipecatcloud-0.2.0}/src/pipecatcloud.egg-info/top_level.txt +0 -0
|
@@ -7,38 +7,55 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.2.0] - 2025-07-09
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- `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.
|
|
15
|
+
- Deploying without credentials can be achieved with the `--no-credentials` / `-nc` or `--force` flags.
|
|
16
|
+
- It is always recommend to provide a an image pull secret as part of your deployment.
|
|
17
|
+
|
|
18
|
+
## [0.1.8] - 2025-07-09
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
|
|
22
|
+
- `deploy` command now shows a warning when image pull credentials are not provided.
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
- Add py.typed marker for static type checking support.
|
|
27
|
+
|
|
10
28
|
## [0.1.7] - 2025-06-12
|
|
11
29
|
|
|
12
|
-
|
|
30
|
+
### Added
|
|
13
31
|
|
|
14
32
|
- `agent sessions` command lists session history and various statistics (avg. start times, cold starts etc.)
|
|
15
33
|
|
|
16
|
-
|
|
34
|
+
### Fixed
|
|
17
35
|
|
|
18
|
-
- `typer`
|
|
36
|
+
- Bumped `typer` dependency to `0.15` to fix errors when using `--help` flag.
|
|
19
37
|
|
|
20
38
|
## [0.1.6] - 2025-04-25
|
|
21
39
|
|
|
22
|
-
|
|
40
|
+
### Changed
|
|
23
41
|
|
|
24
42
|
- `min-instances` and `max-instances` has been changed to reflect API terminology changes.
|
|
25
43
|
|
|
26
44
|
## [0.1.5] - 2025-04-09
|
|
27
45
|
|
|
28
|
-
|
|
46
|
+
### Added
|
|
29
47
|
|
|
30
48
|
- `deploy` command now accepts a `--enable-krisp / -krisp` which enables Krisp integration for your pipeline.
|
|
31
49
|
|
|
32
|
-
|
|
50
|
+
### Changed
|
|
33
51
|
|
|
34
|
-
- `start` command now takes agent name from `pcc-deploy.toml` where applicable
|
|
52
|
+
- `start` command now takes agent name from `pcc-deploy.toml` where applicable
|
|
35
53
|
- API error handling now checks `response.ok` and properly checks for error codes for all non-ok responses
|
|
36
54
|
|
|
37
|
-
|
|
55
|
+
### Fixed
|
|
38
56
|
|
|
39
57
|
- REST and cURL requests now render errors correctly
|
|
40
58
|
|
|
41
|
-
|
|
42
59
|
## [0.1.4] - 2025-03-28
|
|
43
60
|
|
|
44
61
|
### Changed
|
|
@@ -63,8 +80,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
63
80
|
|
|
64
81
|
### Added
|
|
65
82
|
|
|
66
|
-
- `agent logs` now accepts a `--deployment_id` / `-d` argument for filtering
|
|
67
|
-
by specific deployment ID
|
|
83
|
+
- `agent logs` now accepts a `--deployment_id` / `-d` argument for filtering
|
|
84
|
+
by specific deployment ID
|
|
68
85
|
|
|
69
86
|
- `agent start` now accepts `--daily-properties` / `-p` for customizing Daily
|
|
70
87
|
room settings when used with `--use-daily`.
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pipecatcloud"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.2.0"
|
|
8
8
|
requires-python = ">=3.10"
|
|
9
9
|
description = "Cloud hosting for Pipecat AI applications"
|
|
10
10
|
license = { text = "BSD 2-Clause License" }
|
|
@@ -33,6 +33,9 @@ package-dir = {"" = "src"}
|
|
|
33
33
|
where = ["src"]
|
|
34
34
|
include = ["pipecatcloud*"]
|
|
35
35
|
|
|
36
|
+
[tool.setuptools.package-data]
|
|
37
|
+
pipecatcloud = ["py.typed"]
|
|
38
|
+
|
|
36
39
|
[tool.ruff]
|
|
37
40
|
exclude = ["*_pb2.py"]
|
|
38
41
|
line-length = 100
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
# SPDX-License-Identifier: BSD 2-Clause License
|
|
5
5
|
#
|
|
6
6
|
|
|
7
|
-
from typing import Optional, Union
|
|
8
|
-
from datetime import datetime
|
|
9
7
|
import statistics
|
|
8
|
+
from datetime import datetime
|
|
9
|
+
from typing import Optional, Union
|
|
10
10
|
|
|
11
11
|
from rich.console import Console
|
|
12
12
|
from rich.panel import Panel
|
|
@@ -203,3 +203,34 @@ def calculate_percentiles(data: list[float]) -> tuple[float, float, float] | Non
|
|
|
203
203
|
p95 = percentile(sorted_data, 95)
|
|
204
204
|
|
|
205
205
|
return avg, p5, p95
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
async def cli_updates_available() -> str | None:
|
|
209
|
+
"""
|
|
210
|
+
Check if there are updates available for the CLI from PyPI.
|
|
211
|
+
"""
|
|
212
|
+
import aiohttp
|
|
213
|
+
|
|
214
|
+
try:
|
|
215
|
+
from importlib.metadata import version as get_version
|
|
216
|
+
current_version = get_version("pipecatcloud")
|
|
217
|
+
except ImportError:
|
|
218
|
+
return None
|
|
219
|
+
|
|
220
|
+
pypi_url = "https://pypi.org/pypi/pipecatcloud/json"
|
|
221
|
+
|
|
222
|
+
try:
|
|
223
|
+
async with aiohttp.ClientSession() as session:
|
|
224
|
+
response = await session.get(pypi_url)
|
|
225
|
+
if not response.ok:
|
|
226
|
+
return None
|
|
227
|
+
|
|
228
|
+
data = await response.json()
|
|
229
|
+
latest_version = data["info"]["version"]
|
|
230
|
+
|
|
231
|
+
if latest_version > current_version:
|
|
232
|
+
return latest_version
|
|
233
|
+
return None
|
|
234
|
+
|
|
235
|
+
except Exception:
|
|
236
|
+
return None
|
|
@@ -232,6 +232,14 @@ def create_deploy_command(app: typer.Typer):
|
|
|
232
232
|
image: str = typer.Argument(
|
|
233
233
|
None, help="Docker image location e.g. 'my-image:latest'", show_default=False
|
|
234
234
|
),
|
|
235
|
+
credentials: str = typer.Option(
|
|
236
|
+
None,
|
|
237
|
+
"--credentials",
|
|
238
|
+
"-c",
|
|
239
|
+
help="Image pull secret to use for deployment",
|
|
240
|
+
rich_help_panel="Deployment Configuration",
|
|
241
|
+
show_default=False,
|
|
242
|
+
),
|
|
235
243
|
min_agents: int = typer.Option(
|
|
236
244
|
None,
|
|
237
245
|
"--min-agents",
|
|
@@ -263,13 +271,7 @@ def create_deploy_command(app: typer.Typer):
|
|
|
263
271
|
help="Organization to deploy to",
|
|
264
272
|
rich_help_panel="Deployment Configuration",
|
|
265
273
|
),
|
|
266
|
-
|
|
267
|
-
None,
|
|
268
|
-
"--credentials",
|
|
269
|
-
"-c",
|
|
270
|
-
help="Image pull secret to use for deployment",
|
|
271
|
-
rich_help_panel="Deployment Configuration",
|
|
272
|
-
),
|
|
274
|
+
|
|
273
275
|
krisp: bool = typer.Option(
|
|
274
276
|
False,
|
|
275
277
|
"--enable-krisp",
|
|
@@ -282,6 +284,14 @@ def create_deploy_command(app: typer.Typer):
|
|
|
282
284
|
"--force",
|
|
283
285
|
"-f",
|
|
284
286
|
help="Force deployment / skip confirmation",
|
|
287
|
+
rich_help_panel="Additional Options",
|
|
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",
|
|
285
295
|
),
|
|
286
296
|
# @deprecated
|
|
287
297
|
min_instances: int = typer.Option(
|
|
@@ -345,6 +355,16 @@ def create_deploy_command(app: typer.Typer):
|
|
|
345
355
|
console.error("Image / repository URL is required")
|
|
346
356
|
return typer.Exit()
|
|
347
357
|
|
|
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()
|
|
367
|
+
|
|
348
368
|
# Create and display table
|
|
349
369
|
table = Table(show_header=False, border_style="dim", show_edge=True, show_lines=True)
|
|
350
370
|
table.add_column("Property", style="cyan")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|